From e91c0e6bed1d83f7f89a10dc763b5d712182126b Mon Sep 17 00:00:00 2001 From: guicrocetti Date: Sat, 25 May 2024 21:42:51 +0200 Subject: [PATCH] update readme --- README.md | 68 +- venv/bin/Activate.ps1 | 247 - venv/bin/activate | 69 - venv/bin/activate.csh | 26 - venv/bin/activate.fish | 66 - venv/bin/normalizer | 8 - venv/bin/pip | 8 - venv/bin/pip3 | 8 - venv/bin/pip3.10 | 8 - venv/bin/pyrsa-decrypt | 8 - venv/bin/pyrsa-encrypt | 8 - venv/bin/pyrsa-keygen | 8 - venv/bin/pyrsa-priv2pub | 8 - venv/bin/pyrsa-sign | 8 - venv/bin/pyrsa-verify | 8 - venv/bin/python | 1 - venv/bin/python3 | 1 - venv/bin/python3.10 | 1 - venv/bin/wsdump | 8 - .../PyYAML-6.0.1.dist-info/INSTALLER | 1 - .../PyYAML-6.0.1.dist-info/LICENSE | 20 - .../PyYAML-6.0.1.dist-info/METADATA | 46 - .../PyYAML-6.0.1.dist-info/RECORD | 43 - .../PyYAML-6.0.1.dist-info/WHEEL | 6 - .../PyYAML-6.0.1.dist-info/top_level.txt | 2 - .../__pycache__/six.cpython-310.pyc | Bin 27576 -> 0 bytes .../site-packages/_distutils_hack/__init__.py | 220 - .../__pycache__/__init__.cpython-310.pyc | Bin 7560 -> 0 bytes .../__pycache__/override.cpython-310.pyc | Bin 241 -> 0 bytes .../site-packages/_distutils_hack/override.py | 1 - .../site-packages/_yaml/__init__.py | 33 - .../__pycache__/__init__.cpython-310.pyc | Bin 742 -> 0 bytes .../cachetools-5.3.3.dist-info/INSTALLER | 1 - .../cachetools-5.3.3.dist-info/LICENSE | 20 - .../cachetools-5.3.3.dist-info/METADATA | 150 - .../cachetools-5.3.3.dist-info/RECORD | 12 - .../cachetools-5.3.3.dist-info/WHEEL | 5 - .../cachetools-5.3.3.dist-info/top_level.txt | 1 - .../site-packages/cachetools/__init__.py | 844 - .../__pycache__/__init__.cpython-310.pyc | Bin 25267 -> 0 bytes .../__pycache__/func.cpython-310.pyc | Bin 3706 -> 0 bytes .../__pycache__/keys.cpython-310.pyc | Bin 2282 -> 0 bytes .../site-packages/cachetools/func.py | 117 - .../site-packages/cachetools/keys.py | 57 - .../certifi-2024.2.2.dist-info/INSTALLER | 1 - .../certifi-2024.2.2.dist-info/LICENSE | 20 - .../certifi-2024.2.2.dist-info/METADATA | 66 - .../certifi-2024.2.2.dist-info/RECORD | 14 - .../certifi-2024.2.2.dist-info/WHEEL | 5 - .../certifi-2024.2.2.dist-info/top_level.txt | 1 - .../site-packages/certifi/__init__.py | 4 - .../site-packages/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-310.pyc | Bin 295 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 433 -> 0 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 2126 -> 0 bytes .../site-packages/certifi/cacert.pem | 4814 --- .../python3.10/site-packages/certifi/core.py | 114 - .../python3.10/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 - .../LICENSE | 21 - .../METADATA | 683 - .../charset_normalizer-3.3.2.dist-info/RECORD | 35 - .../charset_normalizer-3.3.2.dist-info/WHEEL | 6 - .../entry_points.txt | 2 - .../top_level.txt | 1 - .../charset_normalizer/__init__.py | 46 - .../charset_normalizer/__main__.py | 4 - .../__pycache__/__init__.cpython-310.pyc | Bin 1591 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 275 -> 0 bytes .../__pycache__/api.cpython-310.pyc | Bin 11422 -> 0 bytes .../__pycache__/cd.cpython-310.pyc | Bin 9687 -> 0 bytes .../__pycache__/constant.cpython-310.pyc | Bin 30457 -> 0 bytes .../__pycache__/legacy.cpython-310.pyc | Bin 1857 -> 0 bytes .../__pycache__/md.cpython-310.pyc | Bin 15850 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 11552 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 8935 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 277 -> 0 bytes .../site-packages/charset_normalizer/api.py | 626 - .../site-packages/charset_normalizer/cd.py | 395 - .../charset_normalizer/cli/__init__.py | 6 - .../charset_normalizer/cli/__main__.py | 296 - .../cli/__pycache__/__init__.cpython-310.pyc | Bin 278 -> 0 bytes .../cli/__pycache__/__main__.cpython-310.pyc | Bin 6477 -> 0 bytes .../charset_normalizer/constant.py | 1995 -- .../charset_normalizer/legacy.py | 54 - .../md.cpython-310-x86_64-linux-gnu.so | Bin 16064 -> 0 bytes .../site-packages/charset_normalizer/md.py | 615 - .../md__mypyc.cpython-310-x86_64-linux-gnu.so | Bin 268472 -> 0 bytes .../charset_normalizer/models.py | 340 - .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 421 - .../charset_normalizer/version.py | 6 - .../site-packages/dateutil/__init__.py | 24 - .../__pycache__/__init__.cpython-310.pyc | Bin 950 -> 0 bytes .../__pycache__/_common.cpython-310.pyc | Bin 1430 -> 0 bytes .../__pycache__/_version.cpython-310.pyc | Bin 284 -> 0 bytes .../__pycache__/easter.cpython-310.pyc | Bin 2214 -> 0 bytes .../__pycache__/relativedelta.cpython-310.pyc | Bin 15756 -> 0 bytes .../__pycache__/rrule.cpython-310.pyc | Bin 43348 -> 0 bytes .../__pycache__/tzwin.cpython-310.pyc | Bin 203 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 2267 -> 0 bytes .../site-packages/dateutil/_common.py | 43 - .../site-packages/dateutil/_version.py | 4 - .../site-packages/dateutil/easter.py | 89 - .../site-packages/dateutil/parser/__init__.py | 61 - .../__pycache__/__init__.cpython-310.pyc | Bin 2078 -> 0 bytes .../__pycache__/_parser.cpython-310.pyc | Bin 40549 -> 0 bytes .../__pycache__/isoparser.cpython-310.pyc | Bin 11310 -> 0 bytes .../site-packages/dateutil/parser/_parser.py | 1613 - .../dateutil/parser/isoparser.py | 416 - .../site-packages/dateutil/relativedelta.py | 599 - .../site-packages/dateutil/rrule.py | 1737 - .../site-packages/dateutil/tz/__init__.py | 12 - .../tz/__pycache__/__init__.cpython-310.pyc | Bin 676 -> 0 bytes .../tz/__pycache__/_common.cpython-310.pyc | Bin 10762 -> 0 bytes .../tz/__pycache__/_factories.cpython-310.pyc | Bin 2945 -> 0 bytes .../tz/__pycache__/tz.cpython-310.pyc | Bin 44931 -> 0 bytes .../tz/__pycache__/win.cpython-310.pyc | Bin 11440 -> 0 bytes .../site-packages/dateutil/tz/_common.py | 419 - .../site-packages/dateutil/tz/_factories.py | 80 - .../site-packages/dateutil/tz/tz.py | 1849 - .../site-packages/dateutil/tz/win.py | 370 - .../site-packages/dateutil/tzwin.py | 2 - .../site-packages/dateutil/utils.py | 71 - .../dateutil/zoneinfo/__init__.py | 167 - .../__pycache__/__init__.cpython-310.pyc | Bin 5769 -> 0 bytes .../__pycache__/rebuild.cpython-310.pyc | Bin 2698 -> 0 bytes .../zoneinfo/dateutil-zoneinfo.tar.gz | Bin 156400 -> 0 bytes .../dateutil/zoneinfo/rebuild.py | 75 - .../site-packages/distutils-precedence.pth | 1 - .../site-packages/google/auth/__init__.py | 53 - .../auth/__pycache__/__init__.cpython-310.pyc | Bin 1131 -> 0 bytes .../__pycache__/_cloud_sdk.cpython-310.pyc | Bin 3450 -> 0 bytes .../_credentials_async.cpython-310.pyc | Bin 6683 -> 0 bytes .../auth/__pycache__/_default.cpython-310.pyc | Bin 21005 -> 0 bytes .../_default_async.cpython-310.pyc | Bin 8614 -> 0 bytes .../_exponential_backoff.cpython-310.pyc | Bin 2989 -> 0 bytes .../auth/__pycache__/_helpers.cpython-310.pyc | Bin 7678 -> 0 bytes .../__pycache__/_jwt_async.cpython-310.pyc | Bin 5753 -> 0 bytes .../__pycache__/_oauth2client.cpython-310.pyc | Bin 4975 -> 0 bytes .../_refresh_worker.cpython-310.pyc | Bin 3529 -> 0 bytes .../_service_account_info.cpython-310.pyc | Bin 2380 -> 0 bytes .../auth/__pycache__/api_key.cpython-310.pyc | Bin 2716 -> 0 bytes .../__pycache__/app_engine.cpython-310.pyc | Bin 5389 -> 0 bytes .../auth/__pycache__/aws.cpython-310.pyc | Bin 24843 -> 0 bytes .../__pycache__/credentials.cpython-310.pyc | Bin 17953 -> 0 bytes .../__pycache__/downscoped.cpython-310.pyc | Bin 19651 -> 0 bytes .../environment_vars.cpython-310.pyc | Bin 838 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 4037 -> 0 bytes .../external_account.cpython-310.pyc | Bin 17845 -> 0 bytes ...al_account_authorized_user.cpython-310.pyc | Bin 12719 -> 0 bytes .../auth/__pycache__/iam.cpython-310.pyc | Bin 3382 -> 0 bytes .../__pycache__/identity_pool.cpython-310.pyc | Bin 12602 -> 0 bytes .../impersonated_credentials.cpython-310.pyc | Bin 13759 -> 0 bytes .../auth/__pycache__/jwt.cpython-310.pyc | Bin 26095 -> 0 bytes .../auth/__pycache__/metrics.cpython-310.pyc | Bin 3441 -> 0 bytes .../__pycache__/pluggable.cpython-310.pyc | Bin 11953 -> 0 bytes .../auth/__pycache__/version.cpython-310.pyc | Bin 207 -> 0 bytes .../site-packages/google/auth/_cloud_sdk.py | 153 - .../google/auth/_credentials_async.py | 171 - .../site-packages/google/auth/_default.py | 691 - .../google/auth/_default_async.py | 282 - .../google/auth/_exponential_backoff.py | 109 - .../site-packages/google/auth/_helpers.py | 273 - .../site-packages/google/auth/_jwt_async.py | 164 - .../google/auth/_oauth2client.py | 167 - .../google/auth/_refresh_worker.py | 109 - .../google/auth/_service_account_info.py | 80 - .../site-packages/google/auth/api_key.py | 76 - .../site-packages/google/auth/app_engine.py | 180 - .../site-packages/google/auth/aws.py | 861 - .../google/auth/compute_engine/__init__.py | 22 - .../__pycache__/__init__.cpython-310.pyc | Bin 493 -> 0 bytes .../__pycache__/_metadata.cpython-310.pyc | Bin 9134 -> 0 bytes .../__pycache__/credentials.cpython-310.pyc | Bin 14412 -> 0 bytes .../google/auth/compute_engine/_metadata.py | 355 - .../google/auth/compute_engine/credentials.py | 488 - .../site-packages/google/auth/credentials.py | 513 - .../google/auth/crypt/__init__.py | 98 - .../__pycache__/__init__.cpython-310.pyc | Bin 2506 -> 0 bytes .../_cryptography_rsa.cpython-310.pyc | Bin 5191 -> 0 bytes .../__pycache__/_helpers.cpython-310.pyc | Bin 192 -> 0 bytes .../__pycache__/_python_rsa.cpython-310.pyc | Bin 5799 -> 0 bytes .../crypt/__pycache__/base.cpython-310.pyc | Bin 4154 -> 0 bytes .../crypt/__pycache__/es256.cpython-310.pyc | Bin 5706 -> 0 bytes .../crypt/__pycache__/rsa.cpython-310.pyc | Bin 433 -> 0 bytes .../google/auth/crypt/_cryptography_rsa.py | 151 - .../google/auth/crypt/_helpers.py | 0 .../google/auth/crypt/_python_rsa.py | 175 - .../site-packages/google/auth/crypt/base.py | 127 - .../site-packages/google/auth/crypt/es256.py | 175 - .../site-packages/google/auth/crypt/rsa.py | 30 - .../site-packages/google/auth/downscoped.py | 512 - .../google/auth/environment_vars.py | 84 - .../site-packages/google/auth/exceptions.py | 100 - .../google/auth/external_account.py | 575 - .../auth/external_account_authorized_user.py | 364 - .../site-packages/google/auth/iam.py | 99 - .../google/auth/identity_pool.py | 374 - .../google/auth/impersonated_credentials.py | 465 - .../site-packages/google/auth/jwt.py | 878 - .../site-packages/google/auth/metrics.py | 154 - .../site-packages/google/auth/pluggable.py | 429 - .../google/auth/transport/__init__.py | 103 - .../__pycache__/__init__.cpython-310.pyc | Bin 3240 -> 0 bytes .../_aiohttp_requests.cpython-310.pyc | Bin 11833 -> 0 bytes .../_custom_tls_signer.cpython-310.pyc | Bin 5767 -> 0 bytes .../__pycache__/_http_client.cpython-310.pyc | Bin 3418 -> 0 bytes .../__pycache__/_mtls_helper.cpython-310.pyc | Bin 7364 -> 0 bytes .../__pycache__/grpc.cpython-310.pyc | Bin 12214 -> 0 bytes .../__pycache__/mtls.cpython-310.pyc | Bin 3316 -> 0 bytes .../__pycache__/requests.cpython-310.pyc | Bin 18195 -> 0 bytes .../__pycache__/urllib3.cpython-310.pyc | Bin 13167 -> 0 bytes .../auth/transport/_aiohttp_requests.py | 390 - .../auth/transport/_custom_tls_signer.py | 271 - .../google/auth/transport/_http_client.py | 113 - .../google/auth/transport/_mtls_helper.py | 252 - .../google/auth/transport/grpc.py | 343 - .../google/auth/transport/mtls.py | 103 - .../google/auth/transport/requests.py | 603 - .../google/auth/transport/urllib3.py | 444 - .../site-packages/google/auth/version.py | 15 - .../site-packages/google/oauth2/__init__.py | 36 - .../__pycache__/__init__.cpython-310.pyc | Bin 819 -> 0 bytes .../__pycache__/_client.cpython-310.pyc | Bin 14173 -> 0 bytes .../__pycache__/_client_async.cpython-310.pyc | Bin 8639 -> 0 bytes .../_credentials_async.cpython-310.pyc | Bin 3610 -> 0 bytes .../_id_token_async.cpython-310.pyc | Bin 8586 -> 0 bytes .../__pycache__/_reauth_async.cpython-310.pyc | Bin 9074 -> 0 bytes .../_service_account_async.cpython-310.pyc | Bin 4655 -> 0 bytes .../__pycache__/challenges.cpython-310.pyc | Bin 6297 -> 0 bytes .../__pycache__/credentials.cpython-310.pyc | Bin 20040 -> 0 bytes .../gdch_credentials.cpython-310.pyc | Bin 7884 -> 0 bytes .../__pycache__/id_token.cpython-310.pyc | Bin 10326 -> 0 bytes .../oauth2/__pycache__/reauth.cpython-310.pyc | Bin 9813 -> 0 bytes .../service_account.cpython-310.pyc | Bin 26003 -> 0 bytes .../oauth2/__pycache__/sts.cpython-310.pyc | Bin 5344 -> 0 bytes .../oauth2/__pycache__/utils.cpython-310.pyc | Bin 5544 -> 0 bytes .../site-packages/google/oauth2/_client.py | 507 - .../google/oauth2/_client_async.py | 292 - .../google/oauth2/_credentials_async.py | 118 - .../google/oauth2/_id_token_async.py | 285 - .../google/oauth2/_reauth_async.py | 328 - .../google/oauth2/_service_account_async.py | 132 - .../site-packages/google/oauth2/challenges.py | 203 - .../google/oauth2/credentials.py | 636 - .../google/oauth2/gdch_credentials.py | 251 - .../site-packages/google/oauth2/id_token.py | 340 - .../site-packages/google/oauth2/reauth.py | 368 - .../google/oauth2/service_account.py | 829 - .../site-packages/google/oauth2/sts.py | 176 - .../site-packages/google/oauth2/utils.py | 168 - .../google_auth-2.29.0.dist-info/INSTALLER | 1 - .../google_auth-2.29.0.dist-info/LICENSE | 201 - .../google_auth-2.29.0.dist-info/METADATA | 135 - .../google_auth-2.29.0.dist-info/RECORD | 128 - .../google_auth-2.29.0.dist-info/WHEEL | 6 - .../top_level.txt | 3 - .../idna-3.7.dist-info/INSTALLER | 1 - .../idna-3.7.dist-info/LICENSE.md | 31 - .../site-packages/idna-3.7.dist-info/METADATA | 243 - .../site-packages/idna-3.7.dist-info/RECORD | 22 - .../site-packages/idna-3.7.dist-info/WHEEL | 4 - .../python3.10/site-packages/idna/__init__.py | 44 - .../idna/__pycache__/__init__.cpython-310.pyc | Bin 838 -> 0 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 3264 -> 0 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 738 -> 0 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 9497 -> 0 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 194439 -> 0 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 1975 -> 0 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 202 -> 0 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 152367 -> 0 bytes .../python3.10/site-packages/idna/codec.py | 118 - .../python3.10/site-packages/idna/compat.py | 13 - .../lib/python3.10/site-packages/idna/core.py | 395 - .../python3.10/site-packages/idna/idnadata.py | 4245 --- .../site-packages/idna/intranges.py | 54 - .../site-packages/idna/package_data.py | 2 - .../python3.10/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8598 ----- .../kubernetes-29.0.0.dist-info/INSTALLER | 1 - .../kubernetes-29.0.0.dist-info/LICENSE | 202 - .../kubernetes-29.0.0.dist-info/METADATA | 40 - .../kubernetes-29.0.0.dist-info/RECORD | 1341 - .../kubernetes-29.0.0.dist-info/REQUESTED | 0 .../kubernetes-29.0.0.dist-info/WHEEL | 6 - .../kubernetes-29.0.0.dist-info/top_level.txt | 1 - .../site-packages/kubernetes/__init__.py | 25 - .../__pycache__/__init__.cpython-310.pyc | Bin 455 -> 0 bytes .../kubernetes/client/__init__.py | 653 - .../__pycache__/__init__.cpython-310.pyc | Bin 63105 -> 0 bytes .../__pycache__/api_client.cpython-310.pyc | Bin 18452 -> 0 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 9913 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 4020 -> 0 bytes .../client/__pycache__/rest.cpython-310.pyc | Bin 6869 -> 0 bytes .../kubernetes/client/api/__init__.py | 64 - .../api/__pycache__/__init__.cpython-310.pyc | Bin 5008 -> 0 bytes .../admissionregistration_api.cpython-310.pyc | Bin 4712 -> 0 bytes ...missionregistration_v1_api.cpython-310.pyc | Bin 136345 -> 0 bytes ...nregistration_v1alpha1_api.cpython-310.pyc | Bin 155094 -> 0 bytes ...onregistration_v1beta1_api.cpython-310.pyc | Bin 155009 -> 0 bytes .../apiextensions_api.cpython-310.pyc | Bin 4664 -> 0 bytes .../apiextensions_v1_api.cpython-310.pyc | Bin 90884 -> 0 bytes .../apiregistration_api.cpython-310.pyc | Bin 4676 -> 0 bytes .../apiregistration_v1_api.cpython-310.pyc | Bin 88562 -> 0 bytes .../api/__pycache__/apis_api.cpython-310.pyc | Bin 4637 -> 0 bytes .../api/__pycache__/apps_api.cpython-310.pyc | Bin 4603 -> 0 bytes .../__pycache__/apps_v1_api.cpython-310.pyc | Bin 533802 -> 0 bytes .../authentication_api.cpython-310.pyc | Bin 4670 -> 0 bytes .../authentication_v1_api.cpython-310.pyc | Bin 18399 -> 0 bytes ...uthentication_v1alpha1_api.cpython-310.pyc | Bin 12106 -> 0 bytes ...authentication_v1beta1_api.cpython-310.pyc | Bin 12092 -> 0 bytes .../authorization_api.cpython-310.pyc | Bin 4664 -> 0 bytes .../authorization_v1_api.cpython-310.pyc | Bin 33093 -> 0 bytes .../autoscaling_api.cpython-310.pyc | Bin 4645 -> 0 bytes .../autoscaling_v1_api.cpython-310.pyc | Bin 111480 -> 0 bytes .../autoscaling_v2_api.cpython-310.pyc | Bin 111480 -> 0 bytes .../api/__pycache__/batch_api.cpython-310.pyc | Bin 4609 -> 0 bytes .../__pycache__/batch_v1_api.cpython-310.pyc | Bin 203559 -> 0 bytes .../certificates_api.cpython-310.pyc | Bin 4658 -> 0 bytes .../certificates_v1_api.cpython-310.pyc | Bin 109309 -> 0 bytes .../certificates_v1alpha1_api.cpython-310.pyc | Bin 72263 -> 0 bytes .../coordination_api.cpython-310.pyc | Bin 4658 -> 0 bytes .../coordination_v1_api.cpython-310.pyc | Bin 89519 -> 0 bytes .../api/__pycache__/core_api.cpython-310.pyc | Bin 4633 -> 0 bytes .../__pycache__/core_v1_api.cpython-310.pyc | Bin 1555002 -> 0 bytes .../custom_objects_api.cpython-310.pyc | Bin 209196 -> 0 bytes .../__pycache__/discovery_api.cpython-310.pyc | Bin 4640 -> 0 bytes .../discovery_v1_api.cpython-310.pyc | Bin 90582 -> 0 bytes .../__pycache__/events_api.cpython-310.pyc | Bin 4622 -> 0 bytes .../__pycache__/events_v1_api.cpython-310.pyc | Bin 89481 -> 0 bytes .../flowcontrol_apiserver_api.cpython-310.pyc | Bin 4708 -> 0 bytes ...owcontrol_apiserver_v1_api.cpython-310.pyc | Bin 169589 -> 0 bytes ...trol_apiserver_v1beta3_api.cpython-310.pyc | Bin 170089 -> 0 bytes .../internal_apiserver_api.cpython-310.pyc | Bin 4690 -> 0 bytes ...nal_apiserver_v1alpha1_api.cpython-310.pyc | Bin 89591 -> 0 bytes .../api/__pycache__/logs_api.cpython-310.pyc | Bin 7580 -> 0 bytes .../networking_api.cpython-310.pyc | Bin 4646 -> 0 bytes .../networking_v1_api.cpython-310.pyc | Bin 251882 -> 0 bytes .../networking_v1alpha1_api.cpython-310.pyc | Bin 149548 -> 0 bytes .../api/__pycache__/node_api.cpython-310.pyc | Bin 4610 -> 0 bytes .../__pycache__/node_v1_api.cpython-310.pyc | Bin 71131 -> 0 bytes .../__pycache__/openid_api.cpython-310.pyc | Bin 4929 -> 0 bytes .../__pycache__/policy_api.cpython-310.pyc | Bin 4615 -> 0 bytes .../__pycache__/policy_v1_api.cpython-310.pyc | Bin 110572 -> 0 bytes .../rbac_authorization_api.cpython-310.pyc | Bin 4690 -> 0 bytes .../rbac_authorization_v1_api.cpython-310.pyc | Bin 294642 -> 0 bytes .../__pycache__/resource_api.cpython-310.pyc | Bin 4634 -> 0 bytes .../resource_v1alpha2_api.cpython-310.pyc | Bin 354339 -> 0 bytes .../scheduling_api.cpython-310.pyc | Bin 4646 -> 0 bytes .../scheduling_v1_api.cpython-310.pyc | Bin 71373 -> 0 bytes .../__pycache__/storage_api.cpython-310.pyc | Bin 4628 -> 0 bytes .../storage_v1_api.cpython-310.pyc | Bin 355681 -> 0 bytes .../storage_v1alpha1_api.cpython-310.pyc | Bin 72527 -> 0 bytes .../__pycache__/version_api.cpython-310.pyc | Bin 4503 -> 0 bytes .../well_known_api.cpython-310.pyc | Bin 5008 -> 0 bytes .../client/api/admissionregistration_api.py | 142 - .../api/admissionregistration_v1_api.py | 2196 -- .../api/admissionregistration_v1alpha1_api.py | 2610 -- .../api/admissionregistration_v1beta1_api.py | 2610 -- .../client/api/apiextensions_api.py | 142 - .../client/api/apiextensions_v1_api.py | 1583 - .../client/api/apiregistration_api.py | 142 - .../client/api/apiregistration_v1_api.py | 1583 - .../kubernetes/client/api/apis_api.py | 142 - .../kubernetes/client/api/apps_api.py | 142 - .../kubernetes/client/api/apps_v1_api.py | 9479 ----- .../client/api/authentication_api.py | 142 - .../client/api/authentication_v1_api.py | 410 - .../client/api/authentication_v1alpha1_api.py | 276 - .../client/api/authentication_v1beta1_api.py | 276 - .../client/api/authorization_api.py | 142 - .../client/api/authorization_v1_api.py | 687 - .../kubernetes/client/api/autoscaling_api.py | 142 - .../client/api/autoscaling_v1_api.py | 1833 - .../client/api/autoscaling_v2_api.py | 1833 - .../kubernetes/client/api/batch_api.py | 142 - .../kubernetes/client/api/batch_v1_api.py | 3524 -- .../kubernetes/client/api/certificates_api.py | 142 - .../client/api/certificates_v1_api.py | 1997 -- .../client/api/certificates_v1alpha1_api.py | 1169 - .../kubernetes/client/api/coordination_api.py | 142 - .../client/api/coordination_v1_api.py | 1392 - .../kubernetes/client/api/core_api.py | 142 - .../kubernetes/client/api/core_v1_api.py | 29863 ---------------- .../client/api/custom_objects_api.py | 4509 --- .../kubernetes/client/api/discovery_api.py | 142 - .../kubernetes/client/api/discovery_v1_api.py | 1392 - .../kubernetes/client/api/events_api.py | 142 - .../kubernetes/client/api/events_v1_api.py | 1392 - .../client/api/flowcontrol_apiserver_api.py | 142 - .../api/flowcontrol_apiserver_v1_api.py | 3024 -- .../api/flowcontrol_apiserver_v1beta3_api.py | 3024 -- .../client/api/internal_apiserver_api.py | 142 - .../api/internal_apiserver_v1alpha1_api.py | 1583 - .../kubernetes/client/api/logs_api.py | 244 - .../kubernetes/client/api/networking_api.py | 142 - .../client/api/networking_v1_api.py | 4110 --- .../client/api/networking_v1alpha1_api.py | 2610 -- .../kubernetes/client/api/node_api.py | 142 - .../kubernetes/client/api/node_v1_api.py | 1169 - .../kubernetes/client/api/openid_api.py | 142 - .../kubernetes/client/api/policy_api.py | 142 - .../kubernetes/client/api/policy_v1_api.py | 1833 - .../client/api/rbac_authorization_api.py | 142 - .../client/api/rbac_authorization_v1_api.py | 4696 --- .../kubernetes/client/api/resource_api.py | 142 - .../client/api/resource_v1alpha2_api.py | 5801 --- .../kubernetes/client/api/scheduling_api.py | 142 - .../client/api/scheduling_v1_api.py | 1169 - .../kubernetes/client/api/storage_api.py | 142 - .../kubernetes/client/api/storage_v1_api.py | 5914 --- .../client/api/storage_v1alpha1_api.py | 1169 - .../kubernetes/client/api/version_api.py | 142 - .../kubernetes/client/api/well_known_api.py | 142 - .../kubernetes/client/api_client.py | 647 - .../kubernetes/client/apis/__init__.py | 13 - .../apis/__pycache__/__init__.cpython-310.pyc | Bin 570 -> 0 bytes .../kubernetes/client/configuration.py | 405 - .../kubernetes/client/exceptions.py | 120 - .../kubernetes/client/models/__init__.py | 580 - .../__pycache__/__init__.cpython-310.pyc | Bin 57463 -> 0 bytes ...ation_v1_service_reference.cpython-310.pyc | Bin 6833 -> 0 bytes ...n_v1_webhook_client_config.cpython-310.pyc | Bin 8293 -> 0 bytes ...sions_v1_service_reference.cpython-310.pyc | Bin 6584 -> 0 bytes ...s_v1_webhook_client_config.cpython-310.pyc | Bin 8061 -> 0 bytes ...ation_v1_service_reference.cpython-310.pyc | Bin 5553 -> 0 bytes ...ntication_v1_token_request.cpython-310.pyc | Bin 7664 -> 0 bytes .../core_v1_endpoint_port.cpython-310.pyc | Bin 7785 -> 0 bytes .../__pycache__/core_v1_event.cpython-310.pyc | Bin 16511 -> 0 bytes .../core_v1_event_list.cpython-310.pyc | Bin 6644 -> 0 bytes .../core_v1_event_series.cpython-310.pyc | Bin 4369 -> 0 bytes ...discovery_v1_endpoint_port.cpython-310.pyc | Bin 8723 -> 0 bytes .../events_v1_event.cpython-310.pyc | Bin 18252 -> 0 bytes .../events_v1_event_list.cpython-310.pyc | Bin 6750 -> 0 bytes .../events_v1_event_series.cpython-310.pyc | Bin 4727 -> 0 bytes .../flowcontrol_v1_subject.cpython-310.pyc | Bin 5709 -> 0 bytes .../rbac_v1_subject.cpython-310.pyc | Bin 6552 -> 0 bytes .../storage_v1_token_request.cpython-310.pyc | Bin 4946 -> 0 bytes .../__pycache__/v1_affinity.cpython-310.pyc | Bin 4702 -> 0 bytes .../v1_aggregation_rule.cpython-310.pyc | Bin 3985 -> 0 bytes .../__pycache__/v1_api_group.cpython-310.pyc | Bin 9625 -> 0 bytes .../v1_api_group_list.cpython-310.pyc | Bin 6030 -> 0 bytes .../v1_api_resource.cpython-310.pyc | Bin 12688 -> 0 bytes .../v1_api_resource_list.cpython-310.pyc | Bin 7129 -> 0 bytes .../v1_api_service.cpython-310.pyc | Bin 6972 -> 0 bytes .../v1_api_service_condition.cpython-310.pyc | Bin 7011 -> 0 bytes .../v1_api_service_list.cpython-310.pyc | Bin 6711 -> 0 bytes .../v1_api_service_spec.cpython-310.pyc | Bin 12274 -> 0 bytes .../v1_api_service_status.cpython-310.pyc | Bin 3591 -> 0 bytes .../v1_api_versions.cpython-310.pyc | Bin 8290 -> 0 bytes .../v1_attached_volume.cpython-310.pyc | Bin 4423 -> 0 bytes ..._block_store_volume_source.cpython-310.pyc | Bin 7885 -> 0 bytes ...1_azure_disk_volume_source.cpython-310.pyc | Bin 8503 -> 0 bytes ...e_persistent_volume_source.cpython-310.pyc | Bin 6897 -> 0 bytes ...1_azure_file_volume_source.cpython-310.pyc | Bin 5581 -> 0 bytes .../__pycache__/v1_binding.cpython-310.pyc | Bin 6399 -> 0 bytes .../v1_bound_object_reference.cpython-310.pyc | Bin 5711 -> 0 bytes .../v1_capabilities.cpython-310.pyc | Bin 4048 -> 0 bytes ...s_persistent_volume_source.cpython-310.pyc | Bin 8855 -> 0 bytes .../v1_ceph_fs_volume_source.cpython-310.pyc | Bin 8469 -> 0 bytes ...ertificate_signing_request.cpython-310.pyc | Bin 7707 -> 0 bytes ..._signing_request_condition.cpython-310.pyc | Bin 10173 -> 0 bytes ...icate_signing_request_list.cpython-310.pyc | Bin 7267 -> 0 bytes ...icate_signing_request_spec.cpython-310.pyc | Bin 17933 -> 0 bytes ...ate_signing_request_status.cpython-310.pyc | Bin 7769 -> 0 bytes ...r_persistent_volume_source.cpython-310.pyc | Bin 7017 -> 0 bytes .../v1_cinder_volume_source.cpython-310.pyc | Bin 6719 -> 0 bytes .../v1_claim_source.cpython-310.pyc | Bin 5651 -> 0 bytes .../v1_client_ip_config.cpython-310.pyc | Bin 3855 -> 0 bytes .../v1_cluster_role.cpython-310.pyc | Bin 7260 -> 0 bytes .../v1_cluster_role_binding.cpython-310.pyc | Bin 7584 -> 0 bytes ..._cluster_role_binding_list.cpython-310.pyc | Bin 6990 -> 0 bytes .../v1_cluster_role_list.cpython-310.pyc | Bin 6744 -> 0 bytes ...er_trust_bundle_projection.cpython-310.pyc | Bin 7901 -> 0 bytes .../v1_component_condition.cpython-310.pyc | Bin 6222 -> 0 bytes .../v1_component_status.cpython-310.pyc | Bin 6704 -> 0 bytes .../v1_component_status_list.cpython-310.pyc | Bin 6878 -> 0 bytes .../__pycache__/v1_condition.cpython-310.pyc | Bin 9089 -> 0 bytes .../__pycache__/v1_config_map.cpython-310.pyc | Bin 9411 -> 0 bytes .../v1_config_map_env_source.cpython-310.pyc | Bin 4431 -> 0 bytes ...v1_config_map_key_selector.cpython-310.pyc | Bin 5285 -> 0 bytes .../v1_config_map_list.cpython-310.pyc | Bin 6680 -> 0 bytes ...fig_map_node_config_source.cpython-310.pyc | Bin 7974 -> 0 bytes .../v1_config_map_projection.cpython-310.pyc | Bin 6171 -> 0 bytes ...1_config_map_volume_source.cpython-310.pyc | Bin 7890 -> 0 bytes .../__pycache__/v1_container.cpython-310.pyc | Bin 30841 -> 0 bytes .../v1_container_image.cpython-310.pyc | Bin 4430 -> 0 bytes .../v1_container_port.cpython-310.pyc | Bin 7296 -> 0 bytes ...v1_container_resize_policy.cpython-310.pyc | Bin 4892 -> 0 bytes .../v1_container_state.cpython-310.pyc | Bin 4764 -> 0 bytes ...v1_container_state_running.cpython-310.pyc | Bin 3646 -> 0 bytes ...container_state_terminated.cpython-310.pyc | Bin 8724 -> 0 bytes ...v1_container_state_waiting.cpython-310.pyc | Bin 4378 -> 0 bytes .../v1_container_status.cpython-310.pyc | Bin 14709 -> 0 bytes .../v1_controller_revision.cpython-310.pyc | Bin 7631 -> 0 bytes ...1_controller_revision_list.cpython-310.pyc | Bin 6993 -> 0 bytes .../__pycache__/v1_cron_job.cpython-310.pyc | Bin 6849 -> 0 bytes .../v1_cron_job_list.cpython-310.pyc | Bin 6610 -> 0 bytes .../v1_cron_job_spec.cpython-310.pyc | Bin 12035 -> 0 bytes .../v1_cron_job_status.cpython-310.pyc | Bin 5331 -> 0 bytes ...s_version_object_reference.cpython-310.pyc | Bin 5794 -> 0 bytes .../__pycache__/v1_csi_driver.cpython-310.pyc | Bin 6436 -> 0 bytes .../v1_csi_driver_list.cpython-310.pyc | Bin 6676 -> 0 bytes .../v1_csi_driver_spec.cpython-310.pyc | Bin 20622 -> 0 bytes .../__pycache__/v1_csi_node.cpython-310.pyc | Bin 6370 -> 0 bytes .../v1_csi_node_driver.cpython-310.pyc | Bin 8307 -> 0 bytes .../v1_csi_node_list.cpython-310.pyc | Bin 6606 -> 0 bytes .../v1_csi_node_spec.cpython-310.pyc | Bin 3788 -> 0 bytes ...i_persistent_volume_source.cpython-310.pyc | Bin 11876 -> 0 bytes .../v1_csi_storage_capacity.cpython-310.pyc | Bin 11361 -> 0 bytes ..._csi_storage_capacity_list.cpython-310.pyc | Bin 7013 -> 0 bytes .../v1_csi_volume_source.cpython-310.pyc | Bin 7542 -> 0 bytes ...resource_column_definition.cpython-310.pyc | Bin 9345 -> 0 bytes ...custom_resource_conversion.cpython-310.pyc | Bin 5246 -> 0 bytes ...custom_resource_definition.cpython-310.pyc | Bin 7666 -> 0 bytes ...ource_definition_condition.cpython-310.pyc | Bin 7727 -> 0 bytes ...m_resource_definition_list.cpython-310.pyc | Bin 7226 -> 0 bytes ..._resource_definition_names.cpython-310.pyc | Bin 9472 -> 0 bytes ...m_resource_definition_spec.cpython-310.pyc | Bin 10926 -> 0 bytes ...resource_definition_status.cpython-310.pyc | Bin 6454 -> 0 bytes ...esource_definition_version.cpython-310.pyc | Bin 11749 -> 0 bytes ...resource_subresource_scale.cpython-310.pyc | Bin 8361 -> 0 bytes ...stom_resource_subresources.cpython-310.pyc | Bin 4964 -> 0 bytes ...custom_resource_validation.cpython-310.pyc | Bin 3636 -> 0 bytes .../v1_daemon_endpoint.cpython-310.pyc | Bin 3543 -> 0 bytes .../__pycache__/v1_daemon_set.cpython-310.pyc | Bin 6931 -> 0 bytes .../v1_daemon_set_condition.cpython-310.pyc | Bin 6887 -> 0 bytes .../v1_daemon_set_list.cpython-310.pyc | Bin 6660 -> 0 bytes .../v1_daemon_set_spec.cpython-310.pyc | Bin 7214 -> 0 bytes .../v1_daemon_set_status.cpython-310.pyc | Bin 13503 -> 0 bytes ...daemon_set_update_strategy.cpython-310.pyc | Bin 4475 -> 0 bytes .../v1_delete_options.cpython-310.pyc | Bin 11427 -> 0 bytes .../__pycache__/v1_deployment.cpython-310.pyc | Bin 6971 -> 0 bytes .../v1_deployment_condition.cpython-310.pyc | Bin 7763 -> 0 bytes .../v1_deployment_list.cpython-310.pyc | Bin 6714 -> 0 bytes .../v1_deployment_spec.cpython-310.pyc | Bin 10278 -> 0 bytes .../v1_deployment_status.cpython-310.pyc | Bin 10628 -> 0 bytes .../v1_deployment_strategy.cpython-310.pyc | Bin 4359 -> 0 bytes ...v1_downward_api_projection.cpython-310.pyc | Bin 3643 -> 0 bytes ...1_downward_api_volume_file.cpython-310.pyc | Bin 6999 -> 0 bytes ...downward_api_volume_source.cpython-310.pyc | Bin 5465 -> 0 bytes ...v1_empty_dir_volume_source.cpython-310.pyc | Bin 5565 -> 0 bytes .../__pycache__/v1_endpoint.cpython-310.pyc | Bin 10547 -> 0 bytes .../v1_endpoint_address.cpython-310.pyc | Bin 6070 -> 0 bytes .../v1_endpoint_conditions.cpython-310.pyc | Bin 6608 -> 0 bytes .../v1_endpoint_hints.cpython-310.pyc | Bin 3645 -> 0 bytes .../v1_endpoint_slice.cpython-310.pyc | Bin 9612 -> 0 bytes .../v1_endpoint_slice_list.cpython-310.pyc | Bin 6820 -> 0 bytes .../v1_endpoint_subset.cpython-310.pyc | Bin 5791 -> 0 bytes .../__pycache__/v1_endpoints.cpython-310.pyc | Bin 7377 -> 0 bytes .../v1_endpoints_list.cpython-310.pyc | Bin 6651 -> 0 bytes .../v1_env_from_source.cpython-310.pyc | Bin 4934 -> 0 bytes .../__pycache__/v1_env_var.cpython-310.pyc | Bin 5704 -> 0 bytes .../v1_env_var_source.cpython-310.pyc | Bin 5597 -> 0 bytes .../v1_ephemeral_container.cpython-310.pyc | Bin 31059 -> 0 bytes ...v1_ephemeral_volume_source.cpython-310.pyc | Bin 3669 -> 0 bytes .../v1_event_source.cpython-310.pyc | Bin 4143 -> 0 bytes .../__pycache__/v1_eviction.cpython-310.pyc | Bin 6382 -> 0 bytes .../v1_exec_action.cpython-310.pyc | Bin 4146 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 6876 -> 0 bytes .../v1_external_documentation.cpython-310.pyc | Bin 4087 -> 0 bytes .../v1_fc_volume_source.cpython-310.pyc | Bin 7125 -> 0 bytes ...x_persistent_volume_source.cpython-310.pyc | Bin 7468 -> 0 bytes .../v1_flex_volume_source.cpython-310.pyc | Bin 7126 -> 0 bytes .../v1_flocker_volume_source.cpython-310.pyc | Bin 4666 -> 0 bytes ..._flow_distinguisher_method.cpython-310.pyc | Bin 3829 -> 0 bytes .../v1_flow_schema.cpython-310.pyc | Bin 6972 -> 0 bytes .../v1_flow_schema_condition.cpython-310.pyc | Bin 7020 -> 0 bytes .../v1_flow_schema_list.cpython-310.pyc | Bin 6715 -> 0 bytes .../v1_flow_schema_spec.cpython-310.pyc | Bin 7240 -> 0 bytes .../v1_flow_schema_status.cpython-310.pyc | Bin 3643 -> 0 bytes .../__pycache__/v1_for_zone.cpython-310.pyc | Bin 3438 -> 0 bytes ...sistent_disk_volume_source.cpython-310.pyc | Bin 7944 -> 0 bytes .../v1_git_repo_volume_source.cpython-310.pyc | Bin 5649 -> 0 bytes ...s_persistent_volume_source.cpython-310.pyc | Bin 7506 -> 0 bytes ...v1_glusterfs_volume_source.cpython-310.pyc | Bin 5933 -> 0 bytes .../v1_group_subject.cpython-310.pyc | Bin 3845 -> 0 bytes ...roup_version_for_discovery.cpython-310.pyc | Bin 4880 -> 0 bytes .../v1_grpc_action.cpython-310.pyc | Bin 4635 -> 0 bytes ..._horizontal_pod_autoscaler.cpython-310.pyc | Bin 7506 -> 0 bytes ...zontal_pod_autoscaler_list.cpython-310.pyc | Bin 7195 -> 0 bytes ...zontal_pod_autoscaler_spec.cpython-310.pyc | Bin 7684 -> 0 bytes ...ntal_pod_autoscaler_status.cpython-310.pyc | Bin 8553 -> 0 bytes .../__pycache__/v1_host_alias.cpython-310.pyc | Bin 4076 -> 0 bytes .../__pycache__/v1_host_ip.cpython-310.pyc | Bin 3314 -> 0 bytes ...v1_host_path_volume_source.cpython-310.pyc | Bin 4814 -> 0 bytes .../v1_http_get_action.cpython-310.pyc | Bin 6869 -> 0 bytes .../v1_http_header.cpython-310.pyc | Bin 4368 -> 0 bytes .../v1_http_ingress_path.cpython-310.pyc | Bin 7208 -> 0 bytes ...v1_http_ingress_rule_value.cpython-310.pyc | Bin 3758 -> 0 bytes .../__pycache__/v1_ingress.cpython-310.pyc | Bin 6848 -> 0 bytes .../v1_ingress_backend.cpython-310.pyc | Bin 4092 -> 0 bytes .../v1_ingress_class.cpython-310.pyc | Bin 6422 -> 0 bytes .../v1_ingress_class_list.cpython-310.pyc | Bin 6787 -> 0 bytes ...class_parameters_reference.cpython-310.pyc | Bin 7875 -> 0 bytes .../v1_ingress_class_spec.cpython-310.pyc | Bin 4973 -> 0 bytes .../v1_ingress_list.cpython-310.pyc | Bin 6607 -> 0 bytes ...ress_load_balancer_ingress.cpython-310.pyc | Bin 5418 -> 0 bytes ...gress_load_balancer_status.cpython-310.pyc | Bin 3790 -> 0 bytes .../v1_ingress_port_status.cpython-310.pyc | Bin 5824 -> 0 bytes .../v1_ingress_rule.cpython-310.pyc | Bin 6667 -> 0 bytes ...v1_ingress_service_backend.cpython-310.pyc | Bin 4467 -> 0 bytes .../v1_ingress_spec.cpython-310.pyc | Bin 7838 -> 0 bytes .../v1_ingress_status.cpython-310.pyc | Bin 3465 -> 0 bytes .../v1_ingress_tls.cpython-310.pyc | Bin 5169 -> 0 bytes .../__pycache__/v1_ip_block.cpython-310.pyc | Bin 4614 -> 0 bytes ...i_persistent_volume_source.cpython-310.pyc | Bin 13741 -> 0 bytes .../v1_iscsi_volume_source.cpython-310.pyc | Bin 13129 -> 0 bytes .../models/__pycache__/v1_job.cpython-310.pyc | Bin 6684 -> 0 bytes .../v1_job_condition.cpython-310.pyc | Bin 7486 -> 0 bytes .../__pycache__/v1_job_list.cpython-310.pyc | Bin 6469 -> 0 bytes .../__pycache__/v1_job_spec.cpython-310.pyc | Bin 23668 -> 0 bytes .../__pycache__/v1_job_status.cpython-310.pyc | Bin 15096 -> 0 bytes .../v1_job_template_spec.cpython-310.pyc | Bin 4002 -> 0 bytes .../v1_json_schema_props.cpython-310.pyc | Bin 45122 -> 0 bytes .../v1_key_to_path.cpython-310.pyc | Bin 5869 -> 0 bytes .../v1_label_selector.cpython-310.pyc | Bin 4979 -> 0 bytes ...label_selector_requirement.cpython-310.pyc | Bin 5908 -> 0 bytes .../__pycache__/v1_lease.cpython-310.pyc | Bin 6190 -> 0 bytes .../__pycache__/v1_lease_list.cpython-310.pyc | Bin 6551 -> 0 bytes .../__pycache__/v1_lease_spec.cpython-310.pyc | Bin 7092 -> 0 bytes .../__pycache__/v1_lifecycle.cpython-310.pyc | Bin 3963 -> 0 bytes .../v1_lifecycle_handler.cpython-310.pyc | Bin 5375 -> 0 bytes .../v1_limit_range.cpython-310.pyc | Bin 6356 -> 0 bytes .../v1_limit_range_item.cpython-310.pyc | Bin 8161 -> 0 bytes .../v1_limit_range_list.cpython-310.pyc | Bin 6911 -> 0 bytes .../v1_limit_range_spec.cpython-310.pyc | Bin 3674 -> 0 bytes .../v1_limit_response.cpython-310.pyc | Bin 4662 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 10505 -> 0 bytes .../__pycache__/v1_list_meta.cpython-310.pyc | Bin 8930 -> 0 bytes .../v1_load_balancer_ingress.cpython-310.pyc | Bin 7081 -> 0 bytes .../v1_load_balancer_status.cpython-310.pyc | Bin 3809 -> 0 bytes .../v1_local_object_reference.cpython-310.pyc | Bin 3687 -> 0 bytes ...ocal_subject_access_review.cpython-310.pyc | Bin 7637 -> 0 bytes .../v1_local_volume_source.cpython-310.pyc | Bin 4930 -> 0 bytes .../v1_managed_fields_entry.cpython-310.pyc | Bin 10490 -> 0 bytes .../v1_match_condition.cpython-310.pyc | Bin 7087 -> 0 bytes .../v1_modify_volume_status.cpython-310.pyc | Bin 5985 -> 0 bytes .../v1_mutating_webhook.cpython-310.pyc | Bin 21386 -> 0 bytes ...ting_webhook_configuration.cpython-310.pyc | Bin 7148 -> 0 bytes ...webhook_configuration_list.cpython-310.pyc | Bin 7324 -> 0 bytes .../__pycache__/v1_namespace.cpython-310.pyc | Bin 6930 -> 0 bytes .../v1_namespace_condition.cpython-310.pyc | Bin 6810 -> 0 bytes .../v1_namespace_list.cpython-310.pyc | Bin 6901 -> 0 bytes .../v1_namespace_spec.cpython-310.pyc | Bin 3775 -> 0 bytes .../v1_namespace_status.cpython-310.pyc | Bin 4563 -> 0 bytes .../v1_network_policy.cpython-310.pyc | Bin 6455 -> 0 bytes ...network_policy_egress_rule.cpython-310.pyc | Bin 5822 -> 0 bytes ...etwork_policy_ingress_rule.cpython-310.pyc | Bin 5962 -> 0 bytes .../v1_network_policy_list.cpython-310.pyc | Bin 6816 -> 0 bytes .../v1_network_policy_peer.cpython-310.pyc | Bin 4862 -> 0 bytes .../v1_network_policy_port.cpython-310.pyc | Bin 6099 -> 0 bytes .../v1_network_policy_spec.cpython-310.pyc | Bin 9487 -> 0 bytes .../v1_nfs_volume_source.cpython-310.pyc | Bin 5680 -> 0 bytes .../__pycache__/v1_node.cpython-310.pyc | Bin 6725 -> 0 bytes .../v1_node_address.cpython-310.pyc | Bin 4268 -> 0 bytes .../v1_node_affinity.cpython-310.pyc | Bin 6099 -> 0 bytes .../v1_node_condition.cpython-310.pyc | Bin 7551 -> 0 bytes .../v1_node_config_source.cpython-310.pyc | Bin 3484 -> 0 bytes .../v1_node_config_status.cpython-310.pyc | Bin 7484 -> 0 bytes .../v1_node_daemon_endpoints.cpython-310.pyc | Bin 3550 -> 0 bytes .../__pycache__/v1_node_list.cpython-310.pyc | Bin 6476 -> 0 bytes .../v1_node_selector.cpython-310.pyc | Bin 3782 -> 0 bytes ..._node_selector_requirement.cpython-310.pyc | Bin 6079 -> 0 bytes .../v1_node_selector_term.cpython-310.pyc | Bin 4589 -> 0 bytes .../__pycache__/v1_node_spec.cpython-310.pyc | Bin 8659 -> 0 bytes .../v1_node_status.cpython-310.pyc | Bin 12873 -> 0 bytes .../v1_node_system_info.cpython-310.pyc | Bin 12214 -> 0 bytes ...v1_non_resource_attributes.cpython-310.pyc | Bin 4262 -> 0 bytes ...1_non_resource_policy_rule.cpython-310.pyc | Bin 5506 -> 0 bytes .../v1_non_resource_rule.cpython-310.pyc | Bin 4848 -> 0 bytes .../v1_object_field_selector.cpython-310.pyc | Bin 4602 -> 0 bytes .../v1_object_meta.cpython-310.pyc | Bin 26592 -> 0 bytes .../v1_object_reference.cpython-310.pyc | Bin 9919 -> 0 bytes .../__pycache__/v1_overhead.cpython-310.pyc | Bin 3519 -> 0 bytes .../v1_owner_reference.cpython-310.pyc | Bin 8843 -> 0 bytes .../v1_persistent_volume.cpython-310.pyc | Bin 7218 -> 0 bytes ...v1_persistent_volume_claim.cpython-310.pyc | Bin 7424 -> 0 bytes ...ent_volume_claim_condition.cpython-310.pyc | Bin 8394 -> 0 bytes ...rsistent_volume_claim_list.cpython-310.pyc | Bin 7301 -> 0 bytes ...rsistent_volume_claim_spec.cpython-310.pyc | Bin 12899 -> 0 bytes ...istent_volume_claim_status.cpython-310.pyc | Bin 17860 -> 0 bytes ...tent_volume_claim_template.cpython-310.pyc | Bin 4450 -> 0 bytes ...volume_claim_volume_source.cpython-310.pyc | Bin 5156 -> 0 bytes .../v1_persistent_volume_list.cpython-310.pyc | Bin 7077 -> 0 bytes .../v1_persistent_volume_spec.cpython-310.pyc | Bin 29486 -> 0 bytes ...1_persistent_volume_status.cpython-310.pyc | Bin 7012 -> 0 bytes ...sistent_disk_volume_source.cpython-310.pyc | Bin 5006 -> 0 bytes .../models/__pycache__/v1_pod.cpython-310.pyc | Bin 6684 -> 0 bytes .../v1_pod_affinity.cpython-310.pyc | Bin 7143 -> 0 bytes .../v1_pod_affinity_term.cpython-310.pyc | Bin 11254 -> 0 bytes .../v1_pod_anti_affinity.cpython-310.pyc | Bin 7264 -> 0 bytes .../v1_pod_condition.cpython-310.pyc | Bin 7920 -> 0 bytes .../v1_pod_disruption_budget.cpython-310.pyc | Bin 7342 -> 0 bytes ...pod_disruption_budget_list.cpython-310.pyc | Bin 7028 -> 0 bytes ...pod_disruption_budget_spec.cpython-310.pyc | Bin 9712 -> 0 bytes ...d_disruption_budget_status.cpython-310.pyc | Bin 12819 -> 0 bytes .../v1_pod_dns_config.cpython-310.pyc | Bin 5874 -> 0 bytes .../v1_pod_dns_config_option.cpython-310.pyc | Bin 4055 -> 0 bytes .../v1_pod_failure_policy.cpython-310.pyc | Bin 4256 -> 0 bytes ..._on_exit_codes_requirement.cpython-310.pyc | Bin 8263 -> 0 bytes ..._on_pod_conditions_pattern.cpython-310.pyc | Bin 5248 -> 0 bytes ...v1_pod_failure_policy_rule.cpython-310.pyc | Bin 7348 -> 0 bytes .../__pycache__/v1_pod_ip.cpython-310.pyc | Bin 3297 -> 0 bytes .../__pycache__/v1_pod_list.cpython-310.pyc | Bin 6639 -> 0 bytes .../__pycache__/v1_pod_os.cpython-310.pyc | Bin 4066 -> 0 bytes .../v1_pod_readiness_gate.cpython-310.pyc | Bin 3777 -> 0 bytes .../v1_pod_resource_claim.cpython-310.pyc | Bin 4333 -> 0 bytes ..._pod_resource_claim_status.cpython-310.pyc | Bin 5254 -> 0 bytes .../v1_pod_scheduling_gate.cpython-310.pyc | Bin 3678 -> 0 bytes .../v1_pod_security_context.cpython-310.pyc | Bin 15707 -> 0 bytes .../__pycache__/v1_pod_spec.cpython-310.pyc | Bin 49762 -> 0 bytes .../__pycache__/v1_pod_status.cpython-310.pyc | Bin 22116 -> 0 bytes .../v1_pod_template.cpython-310.pyc | Bin 6421 -> 0 bytes .../v1_pod_template_list.cpython-310.pyc | Bin 6724 -> 0 bytes .../v1_pod_template_spec.cpython-310.pyc | Bin 4002 -> 0 bytes .../v1_policy_rule.cpython-310.pyc | Bin 8183 -> 0 bytes ...policy_rules_with_subjects.cpython-310.pyc | Bin 6664 -> 0 bytes .../v1_port_status.cpython-310.pyc | Bin 5776 -> 0 bytes .../v1_portworx_volume_source.cpython-310.pyc | Bin 5671 -> 0 bytes .../v1_preconditions.cpython-310.pyc | Bin 4192 -> 0 bytes ..._preferred_scheduling_term.cpython-310.pyc | Bin 4590 -> 0 bytes .../v1_priority_class.cpython-310.pyc | Bin 10323 -> 0 bytes .../v1_priority_class_list.cpython-310.pyc | Bin 6820 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 7629 -> 0 bytes ...el_configuration_condition.cpython-310.pyc | Bin 7584 -> 0 bytes ...y_level_configuration_list.cpython-310.pyc | Bin 7264 -> 0 bytes ...el_configuration_reference.cpython-310.pyc | Bin 3954 -> 0 bytes ...y_level_configuration_spec.cpython-310.pyc | Bin 6267 -> 0 bytes ...level_configuration_status.cpython-310.pyc | Bin 3926 -> 0 bytes .../__pycache__/v1_probe.cpython-310.pyc | Bin 12344 -> 0 bytes ...v1_projected_volume_source.cpython-310.pyc | Bin 5272 -> 0 bytes .../v1_queuing_configuration.cpython-310.pyc | Bin 7319 -> 0 bytes .../v1_quobyte_volume_source.cpython-310.pyc | Bin 8212 -> 0 bytes ...d_persistent_volume_source.cpython-310.pyc | Bin 10762 -> 0 bytes .../v1_rbd_volume_source.cpython-310.pyc | Bin 10276 -> 0 bytes .../v1_replica_set.cpython-310.pyc | Bin 6972 -> 0 bytes .../v1_replica_set_condition.cpython-310.pyc | Bin 6934 -> 0 bytes .../v1_replica_set_list.cpython-310.pyc | Bin 6877 -> 0 bytes .../v1_replica_set_spec.cpython-310.pyc | Bin 6513 -> 0 bytes .../v1_replica_set_status.cpython-310.pyc | Bin 8590 -> 0 bytes .../v1_replication_controller.cpython-310.pyc | Bin 7423 -> 0 bytes ...ation_controller_condition.cpython-310.pyc | Bin 7353 -> 0 bytes ...eplication_controller_list.cpython-310.pyc | Bin 7264 -> 0 bytes ...eplication_controller_spec.cpython-310.pyc | Bin 7561 -> 0 bytes ...lication_controller_status.cpython-310.pyc | Bin 9101 -> 0 bytes .../v1_resource_attributes.cpython-310.pyc | Bin 9047 -> 0 bytes .../v1_resource_claim.cpython-310.pyc | Bin 3768 -> 0 bytes ...v1_resource_field_selector.cpython-310.pyc | Bin 5367 -> 0 bytes .../v1_resource_policy_rule.cpython-310.pyc | Bin 8992 -> 0 bytes .../v1_resource_quota.cpython-310.pyc | Bin 7095 -> 0 bytes .../v1_resource_quota_list.cpython-310.pyc | Bin 6978 -> 0 bytes .../v1_resource_quota_spec.cpython-310.pyc | Bin 5364 -> 0 bytes .../v1_resource_quota_status.cpython-310.pyc | Bin 4577 -> 0 bytes .../v1_resource_requirements.cpython-310.pyc | Bin 6427 -> 0 bytes .../v1_resource_rule.cpython-310.pyc | Bin 6863 -> 0 bytes .../__pycache__/v1_role.cpython-310.pyc | Bin 6325 -> 0 bytes .../v1_role_binding.cpython-310.pyc | Bin 7332 -> 0 bytes .../v1_role_binding_list.cpython-310.pyc | Bin 6744 -> 0 bytes .../__pycache__/v1_role_list.cpython-310.pyc | Bin 6498 -> 0 bytes .../__pycache__/v1_role_ref.cpython-310.pyc | Bin 4979 -> 0 bytes ..._rolling_update_daemon_set.cpython-310.pyc | Bin 8429 -> 0 bytes ..._rolling_update_deployment.cpython-310.pyc | Bin 6928 -> 0 bytes ...date_stateful_set_strategy.cpython-310.pyc | Bin 6218 -> 0 bytes .../v1_rule_with_operations.cpython-310.pyc | Bin 9111 -> 0 bytes .../v1_runtime_class.cpython-310.pyc | Bin 8960 -> 0 bytes .../v1_runtime_class_list.cpython-310.pyc | Bin 6783 -> 0 bytes .../__pycache__/v1_scale.cpython-310.pyc | Bin 6766 -> 0 bytes ...o_persistent_volume_source.cpython-310.pyc | Bin 12426 -> 0 bytes .../v1_scale_io_volume_source.cpython-310.pyc | Bin 11810 -> 0 bytes .../__pycache__/v1_scale_spec.cpython-310.pyc | Bin 3457 -> 0 bytes .../v1_scale_status.cpython-310.pyc | Bin 4959 -> 0 bytes .../__pycache__/v1_scheduling.cpython-310.pyc | Bin 5136 -> 0 bytes .../v1_scope_selector.cpython-310.pyc | Bin 3723 -> 0 bytes ...ource_selector_requirement.cpython-310.pyc | Bin 6171 -> 0 bytes .../v1_se_linux_options.cpython-310.pyc | Bin 5704 -> 0 bytes .../v1_seccomp_profile.cpython-310.pyc | Bin 5357 -> 0 bytes .../__pycache__/v1_secret.cpython-310.pyc | Bin 9984 -> 0 bytes .../v1_secret_env_source.cpython-310.pyc | Bin 4364 -> 0 bytes .../v1_secret_key_selector.cpython-310.pyc | Bin 5299 -> 0 bytes .../v1_secret_list.cpython-310.pyc | Bin 6726 -> 0 bytes .../v1_secret_projection.cpython-310.pyc | Bin 6084 -> 0 bytes .../v1_secret_reference.cpython-310.pyc | Bin 4328 -> 0 bytes .../v1_secret_volume_source.cpython-310.pyc | Bin 7908 -> 0 bytes .../v1_security_context.cpython-310.pyc | Bin 14885 -> 0 bytes ...self_subject_access_review.cpython-310.pyc | Bin 7614 -> 0 bytes ...subject_access_review_spec.cpython-310.pyc | Bin 4583 -> 0 bytes .../v1_self_subject_review.cpython-310.pyc | Bin 6610 -> 0 bytes ...self_subject_review_status.cpython-310.pyc | Bin 3530 -> 0 bytes ..._self_subject_rules_review.cpython-310.pyc | Bin 7573 -> 0 bytes ..._subject_rules_review_spec.cpython-310.pyc | Bin 3675 -> 0 bytes ...ver_address_by_client_cidr.cpython-310.pyc | Bin 5008 -> 0 bytes .../__pycache__/v1_service.cpython-310.pyc | Bin 6848 -> 0 bytes .../v1_service_account.cpython-310.pyc | Bin 10497 -> 0 bytes .../v1_service_account_list.cpython-310.pyc | Bin 7025 -> 0 bytes ...v1_service_account_subject.cpython-310.pyc | Bin 4691 -> 0 bytes ...e_account_token_projection.cpython-310.pyc | Bin 6732 -> 0 bytes .../v1_service_backend_port.cpython-310.pyc | Bin 4519 -> 0 bytes .../v1_service_list.cpython-310.pyc | Bin 6581 -> 0 bytes .../v1_service_port.cpython-310.pyc | Bin 11551 -> 0 bytes .../v1_service_spec.cpython-310.pyc | Bin 39843 -> 0 bytes .../v1_service_status.cpython-310.pyc | Bin 4198 -> 0 bytes ...v1_session_affinity_config.cpython-310.pyc | Bin 3517 -> 0 bytes .../v1_sleep_action.cpython-310.pyc | Bin 3535 -> 0 bytes .../v1_stateful_set.cpython-310.pyc | Bin 7013 -> 0 bytes .../v1_stateful_set_condition.cpython-310.pyc | Bin 6964 -> 0 bytes .../v1_stateful_set_list.cpython-310.pyc | Bin 6752 -> 0 bytes .../v1_stateful_set_ordinals.cpython-310.pyc | Bin 4354 -> 0 bytes ...ume_claim_retention_policy.cpython-310.pyc | Bin 5941 -> 0 bytes .../v1_stateful_set_spec.cpython-310.pyc | Bin 15323 -> 0 bytes .../v1_stateful_set_status.cpython-310.pyc | Bin 12840 -> 0 bytes ...ateful_set_update_strategy.cpython-310.pyc | Bin 4531 -> 0 bytes .../__pycache__/v1_status.cpython-310.pyc | Bin 9603 -> 0 bytes .../v1_status_cause.cpython-310.pyc | Bin 5862 -> 0 bytes .../v1_status_details.cpython-310.pyc | Bin 8617 -> 0 bytes .../v1_storage_class.cpython-310.pyc | Bin 13219 -> 0 bytes .../v1_storage_class_list.cpython-310.pyc | Bin 6785 -> 0 bytes ...s_persistent_volume_source.cpython-310.pyc | Bin 8423 -> 0 bytes ...1_storage_os_volume_source.cpython-310.pyc | Bin 8087 -> 0 bytes .../v1_subject_access_review.cpython-310.pyc | Bin 7461 -> 0 bytes ...subject_access_review_spec.cpython-310.pyc | Bin 8008 -> 0 bytes ...bject_access_review_status.cpython-310.pyc | Bin 7259 -> 0 bytes ...ubject_rules_review_status.cpython-310.pyc | Bin 7854 -> 0 bytes .../__pycache__/v1_sysctl.cpython-310.pyc | Bin 4093 -> 0 bytes .../__pycache__/v1_taint.cpython-310.pyc | Bin 5885 -> 0 bytes .../v1_tcp_socket_action.cpython-310.pyc | Bin 4508 -> 0 bytes .../v1_token_request_spec.cpython-310.pyc | Bin 6246 -> 0 bytes .../v1_token_request_status.cpython-310.pyc | Bin 4623 -> 0 bytes .../v1_token_review.cpython-310.pyc | Bin 7132 -> 0 bytes .../v1_token_review_spec.cpython-310.pyc | Bin 4811 -> 0 bytes .../v1_token_review_status.cpython-310.pyc | Bin 6935 -> 0 bytes .../__pycache__/v1_toleration.cpython-310.pyc | Bin 7945 -> 0 bytes ...selector_label_requirement.cpython-310.pyc | Bin 4837 -> 0 bytes .../v1_topology_selector_term.cpython-310.pyc | Bin 3853 -> 0 bytes ...topology_spread_constraint.cpython-310.pyc | Bin 20286 -> 0 bytes ...ped_local_object_reference.cpython-310.pyc | Bin 5663 -> 0 bytes .../v1_typed_object_reference.cpython-310.pyc | Bin 6999 -> 0 bytes ..._uncounted_terminated_pods.cpython-310.pyc | Bin 4402 -> 0 bytes .../__pycache__/v1_user_info.cpython-310.pyc | Bin 5814 -> 0 bytes .../v1_user_subject.cpython-310.pyc | Bin 3578 -> 0 bytes .../v1_validating_webhook.cpython-310.pyc | Bin 18748 -> 0 bytes ...ting_webhook_configuration.cpython-310.pyc | Bin 7214 -> 0 bytes ...webhook_configuration_list.cpython-310.pyc | Bin 7394 -> 0 bytes .../v1_validation_rule.cpython-310.pyc | Bin 22272 -> 0 bytes .../__pycache__/v1_volume.cpython-310.pyc | Bin 22648 -> 0 bytes .../v1_volume_attachment.cpython-310.pyc | Bin 7337 -> 0 bytes .../v1_volume_attachment_list.cpython-310.pyc | Bin 6923 -> 0 bytes ...1_volume_attachment_source.cpython-310.pyc | Bin 4616 -> 0 bytes .../v1_volume_attachment_spec.cpython-310.pyc | Bin 5495 -> 0 bytes ...1_volume_attachment_status.cpython-310.pyc | Bin 6792 -> 0 bytes .../v1_volume_device.cpython-310.pyc | Bin 4467 -> 0 bytes .../v1_volume_error.cpython-310.pyc | Bin 4383 -> 0 bytes .../v1_volume_mount.cpython-310.pyc | Bin 8459 -> 0 bytes .../v1_volume_node_affinity.cpython-310.pyc | Bin 3448 -> 0 bytes .../v1_volume_node_resources.cpython-310.pyc | Bin 4242 -> 0 bytes .../v1_volume_projection.cpython-310.pyc | Bin 6460 -> 0 bytes ...lume_resource_requirements.cpython-310.pyc | Bin 5317 -> 0 bytes ...virtual_disk_volume_source.cpython-310.pyc | Bin 7036 -> 0 bytes .../v1_watch_event.cpython-310.pyc | Bin 4544 -> 0 bytes .../v1_webhook_conversion.cpython-310.pyc | Bin 5452 -> 0 bytes ...weighted_pod_affinity_term.cpython-310.pyc | Bin 4661 -> 0 bytes ...s_security_context_options.cpython-310.pyc | Bin 7973 -> 0 bytes .../v1alpha1_audit_annotation.cpython-310.pyc | Bin 7318 -> 0 bytes ...lpha1_cluster_trust_bundle.cpython-310.pyc | Bin 6932 -> 0 bytes ..._cluster_trust_bundle_list.cpython-310.pyc | Bin 7220 -> 0 bytes ..._cluster_trust_bundle_spec.cpython-310.pyc | Bin 7325 -> 0 bytes ...1alpha1_expression_warning.cpython-310.pyc | Bin 5142 -> 0 bytes .../v1alpha1_ip_address.cpython-310.pyc | Bin 6521 -> 0 bytes .../v1alpha1_ip_address_list.cpython-310.pyc | Bin 6880 -> 0 bytes .../v1alpha1_ip_address_spec.cpython-310.pyc | Bin 3517 -> 0 bytes .../v1alpha1_match_condition.cpython-310.pyc | Bin 7207 -> 0 bytes .../v1alpha1_match_resources.cpython-310.pyc | Bin 9443 -> 0 bytes ...named_rule_with_operations.cpython-310.pyc | Bin 10540 -> 0 bytes .../v1alpha1_param_kind.cpython-310.pyc | Bin 4390 -> 0 bytes .../v1alpha1_param_ref.cpython-310.pyc | Bin 8038 -> 0 bytes .../v1alpha1_parent_reference.cpython-310.pyc | Bin 5937 -> 0 bytes ...alpha1_self_subject_review.cpython-310.pyc | Bin 6808 -> 0 bytes ...self_subject_review_status.cpython-310.pyc | Bin 3620 -> 0 bytes ...ha1_server_storage_version.cpython-310.pyc | Bin 6742 -> 0 bytes .../v1alpha1_service_cidr.cpython-310.pyc | Bin 7259 -> 0 bytes ...v1alpha1_service_cidr_list.cpython-310.pyc | Bin 6948 -> 0 bytes ...v1alpha1_service_cidr_spec.cpython-310.pyc | Bin 3918 -> 0 bytes ...alpha1_service_cidr_status.cpython-310.pyc | Bin 3822 -> 0 bytes .../v1alpha1_storage_version.cpython-310.pyc | Bin 7682 -> 0 bytes ..._storage_version_condition.cpython-310.pyc | Bin 8335 -> 0 bytes ...lpha1_storage_version_list.cpython-310.pyc | Bin 7054 -> 0 bytes ...ha1_storage_version_status.cpython-310.pyc | Bin 6275 -> 0 bytes .../v1alpha1_type_checking.cpython-310.pyc | Bin 3752 -> 0 bytes ...alidating_admission_policy.cpython-310.pyc | Bin 7834 -> 0 bytes ...g_admission_policy_binding.cpython-310.pyc | Bin 7282 -> 0 bytes ...ission_policy_binding_list.cpython-310.pyc | Bin 7505 -> 0 bytes ...ission_policy_binding_spec.cpython-310.pyc | Bin 11122 -> 0 bytes ...ting_admission_policy_list.cpython-310.pyc | Bin 7297 -> 0 bytes ...ting_admission_policy_spec.cpython-310.pyc | Bin 13690 -> 0 bytes ...ng_admission_policy_status.cpython-310.pyc | Bin 5779 -> 0 bytes .../v1alpha1_validation.cpython-310.pyc | Bin 15421 -> 0 bytes .../v1alpha1_variable.cpython-310.pyc | Bin 5068 -> 0 bytes ...a1_volume_attributes_class.cpython-310.pyc | Bin 9525 -> 0 bytes ...lume_attributes_class_list.cpython-310.pyc | Bin 7319 -> 0 bytes ...v1alpha2_allocation_result.cpython-310.pyc | Bin 6833 -> 0 bytes ...ha2_pod_scheduling_context.cpython-310.pyc | Bin 7748 -> 0 bytes ...od_scheduling_context_list.cpython-310.pyc | Bin 7284 -> 0 bytes ...od_scheduling_context_spec.cpython-310.pyc | Bin 5426 -> 0 bytes ..._scheduling_context_status.cpython-310.pyc | Bin 4204 -> 0 bytes .../v1alpha2_resource_claim.cpython-310.pyc | Bin 7460 -> 0 bytes ...e_claim_consumer_reference.cpython-310.pyc | Bin 6877 -> 0 bytes ...alpha2_resource_claim_list.cpython-310.pyc | Bin 7020 -> 0 bytes ...claim_parameters_reference.cpython-310.pyc | Bin 6134 -> 0 bytes ...ce_claim_scheduling_status.cpython-310.pyc | Bin 5112 -> 0 bytes ...alpha2_resource_claim_spec.cpython-310.pyc | Bin 5890 -> 0 bytes ...pha2_resource_claim_status.cpython-310.pyc | Bin 7349 -> 0 bytes ...a2_resource_claim_template.cpython-310.pyc | Bin 7031 -> 0 bytes ...source_claim_template_list.cpython-310.pyc | Bin 7309 -> 0 bytes ...source_claim_template_spec.cpython-310.pyc | Bin 4484 -> 0 bytes .../v1alpha2_resource_class.cpython-310.pyc | Bin 8763 -> 0 bytes ...alpha2_resource_class_list.cpython-310.pyc | Bin 7022 -> 0 bytes ...class_parameters_reference.cpython-310.pyc | Bin 7134 -> 0 bytes .../v1alpha2_resource_handle.cpython-310.pyc | Bin 5630 -> 0 bytes .../v1beta1_audit_annotation.cpython-310.pyc | Bin 7298 -> 0 bytes ...v1beta1_expression_warning.cpython-310.pyc | Bin 5122 -> 0 bytes .../v1beta1_match_condition.cpython-310.pyc | Bin 7187 -> 0 bytes .../v1beta1_match_resources.cpython-310.pyc | Bin 9403 -> 0 bytes ...named_rule_with_operations.cpython-310.pyc | Bin 10500 -> 0 bytes .../v1beta1_param_kind.cpython-310.pyc | Bin 4370 -> 0 bytes .../v1beta1_param_ref.cpython-310.pyc | Bin 8444 -> 0 bytes ...1beta1_self_subject_review.cpython-310.pyc | Bin 6775 -> 0 bytes ...self_subject_review_status.cpython-310.pyc | Bin 3605 -> 0 bytes .../v1beta1_type_checking.cpython-310.pyc | Bin 3734 -> 0 bytes ...alidating_admission_policy.cpython-310.pyc | Bin 7793 -> 0 bytes ...g_admission_policy_binding.cpython-310.pyc | Bin 7249 -> 0 bytes ...ission_policy_binding_list.cpython-310.pyc | Bin 7472 -> 0 bytes ...ission_policy_binding_spec.cpython-310.pyc | Bin 11086 -> 0 bytes ...ting_admission_policy_list.cpython-310.pyc | Bin 7264 -> 0 bytes ...ting_admission_policy_spec.cpython-310.pyc | Bin 13627 -> 0 bytes ...ng_admission_policy_status.cpython-310.pyc | Bin 5751 -> 0 bytes .../v1beta1_validation.cpython-310.pyc | Bin 15391 -> 0 bytes .../v1beta1_variable.cpython-310.pyc | Bin 5048 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 6976 -> 0 bytes ..._flow_distinguisher_method.cpython-310.pyc | Bin 3904 -> 0 bytes .../v1beta3_flow_schema.cpython-310.pyc | Bin 7177 -> 0 bytes ...eta3_flow_schema_condition.cpython-310.pyc | Bin 7195 -> 0 bytes .../v1beta3_flow_schema_list.cpython-310.pyc | Bin 6880 -> 0 bytes .../v1beta3_flow_schema_spec.cpython-310.pyc | Bin 7438 -> 0 bytes ...v1beta3_flow_schema_status.cpython-310.pyc | Bin 3733 -> 0 bytes .../v1beta3_group_subject.cpython-310.pyc | Bin 3920 -> 0 bytes .../v1beta3_limit_response.cpython-310.pyc | Bin 4777 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 10378 -> 0 bytes ...3_non_resource_policy_rule.cpython-310.pyc | Bin 5606 -> 0 bytes ...policy_rules_with_subjects.cpython-310.pyc | Bin 6801 -> 0 bytes ...iority_level_configuration.cpython-310.pyc | Bin 7834 -> 0 bytes ...el_configuration_condition.cpython-310.pyc | Bin 7762 -> 0 bytes ...y_level_configuration_list.cpython-310.pyc | Bin 7429 -> 0 bytes ...el_configuration_reference.cpython-310.pyc | Bin 4029 -> 0 bytes ...y_level_configuration_spec.cpython-310.pyc | Bin 6422 -> 0 bytes ...level_configuration_status.cpython-310.pyc | Bin 4016 -> 0 bytes ...eta3_queuing_configuration.cpython-310.pyc | Bin 7444 -> 0 bytes ...beta3_resource_policy_rule.cpython-310.pyc | Bin 9167 -> 0 bytes ...a3_service_account_subject.cpython-310.pyc | Bin 4791 -> 0 bytes .../v1beta3_subject.cpython-310.pyc | Bin 5573 -> 0 bytes .../v1beta3_user_subject.cpython-310.pyc | Bin 3653 -> 0 bytes ...ner_resource_metric_source.cpython-310.pyc | Bin 5494 -> 0 bytes ...ner_resource_metric_status.cpython-310.pyc | Bin 5518 -> 0 bytes ...s_version_object_reference.cpython-310.pyc | Bin 5794 -> 0 bytes .../v2_external_metric_source.cpython-310.pyc | Bin 4293 -> 0 bytes .../v2_external_metric_status.cpython-310.pyc | Bin 4317 -> 0 bytes ..._horizontal_pod_autoscaler.cpython-310.pyc | Bin 7506 -> 0 bytes ...al_pod_autoscaler_behavior.cpython-310.pyc | Bin 4401 -> 0 bytes ...l_pod_autoscaler_condition.cpython-310.pyc | Bin 7524 -> 0 bytes ...zontal_pod_autoscaler_list.cpython-310.pyc | Bin 7195 -> 0 bytes ...zontal_pod_autoscaler_spec.cpython-310.pyc | Bin 8987 -> 0 bytes ...ntal_pod_autoscaler_status.cpython-310.pyc | Bin 9392 -> 0 bytes .../v2_hpa_scaling_policy.cpython-310.pyc | Bin 5595 -> 0 bytes .../v2_hpa_scaling_rules.cpython-310.pyc | Bin 6430 -> 0 bytes .../v2_metric_identifier.cpython-310.pyc | Bin 4251 -> 0 bytes .../v2_metric_spec.cpython-310.pyc | Bin 7244 -> 0 bytes .../v2_metric_status.cpython-310.pyc | Bin 7328 -> 0 bytes .../v2_metric_target.cpython-310.pyc | Bin 6465 -> 0 bytes .../v2_metric_value_status.cpython-310.pyc | Bin 5624 -> 0 bytes .../v2_object_metric_source.cpython-310.pyc | Bin 5099 -> 0 bytes .../v2_object_metric_status.cpython-310.pyc | Bin 5123 -> 0 bytes .../v2_pods_metric_source.cpython-310.pyc | Bin 4213 -> 0 bytes .../v2_pods_metric_status.cpython-310.pyc | Bin 4237 -> 0 bytes .../v2_resource_metric_source.cpython-310.pyc | Bin 4374 -> 0 bytes .../v2_resource_metric_status.cpython-310.pyc | Bin 4398 -> 0 bytes .../__pycache__/version_info.cpython-310.pyc | Bin 8577 -> 0 bytes ...issionregistration_v1_service_reference.py | 208 - ...onregistration_v1_webhook_client_config.py | 179 - .../apiextensions_v1_service_reference.py | 208 - .../apiextensions_v1_webhook_client_config.py | 179 - .../apiregistration_v1_service_reference.py | 178 - .../models/authentication_v1_token_request.py | 229 - .../client/models/core_v1_endpoint_port.py | 207 - .../kubernetes/client/models/core_v1_event.py | 562 - .../client/models/core_v1_event_list.py | 205 - .../client/models/core_v1_event_series.py | 150 - .../models/discovery_v1_endpoint_port.py | 206 - .../client/models/events_v1_event.py | 561 - .../client/models/events_v1_event_list.py | 205 - .../client/models/events_v1_event_series.py | 152 - .../client/models/flowcontrol_v1_subject.py | 201 - .../client/models/rbac_v1_subject.py | 208 - .../client/models/storage_v1_token_request.py | 151 - .../kubernetes/client/models/v1_affinity.py | 172 - .../client/models/v1_aggregation_rule.py | 122 - .../kubernetes/client/models/v1_api_group.py | 262 - .../client/models/v1_api_group_list.py | 179 - .../client/models/v1_api_resource.py | 379 - .../client/models/v1_api_resource_list.py | 208 - .../client/models/v1_api_service.py | 228 - .../client/models/v1_api_service_condition.py | 236 - .../client/models/v1_api_service_list.py | 205 - .../client/models/v1_api_service_spec.py | 293 - .../client/models/v1_api_service_status.py | 122 - .../client/models/v1_api_versions.py | 208 - .../client/models/v1_attached_volume.py | 152 - ...1_aws_elastic_block_store_volume_source.py | 207 - .../models/v1_azure_disk_volume_source.py | 264 - .../v1_azure_file_persistent_volume_source.py | 208 - .../models/v1_azure_file_volume_source.py | 180 - .../kubernetes/client/models/v1_binding.py | 203 - .../models/v1_bound_object_reference.py | 206 - .../client/models/v1_capabilities.py | 150 - .../v1_ceph_fs_persistent_volume_source.py | 261 - .../client/models/v1_ceph_fs_volume_source.py | 261 - .../models/v1_certificate_signing_request.py | 229 - ...1_certificate_signing_request_condition.py | 264 - .../v1_certificate_signing_request_list.py | 205 - .../v1_certificate_signing_request_spec.py | 323 - .../v1_certificate_signing_request_status.py | 153 - .../v1_cinder_persistent_volume_source.py | 205 - .../client/models/v1_cinder_volume_source.py | 205 - .../client/models/v1_claim_source.py | 150 - .../client/models/v1_client_ip_config.py | 122 - .../client/models/v1_cluster_role.py | 230 - .../client/models/v1_cluster_role_binding.py | 231 - .../models/v1_cluster_role_binding_list.py | 205 - .../client/models/v1_cluster_role_list.py | 205 - .../v1_cluster_trust_bundle_projection.py | 233 - .../client/models/v1_component_condition.py | 208 - .../client/models/v1_component_status.py | 204 - .../client/models/v1_component_status_list.py | 205 - .../kubernetes/client/models/v1_condition.py | 267 - .../kubernetes/client/models/v1_config_map.py | 260 - .../client/models/v1_config_map_env_source.py | 150 - .../models/v1_config_map_key_selector.py | 179 - .../client/models/v1_config_map_list.py | 205 - .../v1_config_map_node_config_source.py | 237 - .../client/models/v1_config_map_projection.py | 178 - .../models/v1_config_map_volume_source.py | 206 - .../kubernetes/client/models/v1_container.py | 755 - .../client/models/v1_container_image.py | 150 - .../client/models/v1_container_port.py | 235 - .../models/v1_container_resize_policy.py | 152 - .../client/models/v1_container_state.py | 172 - .../models/v1_container_state_running.py | 122 - .../models/v1_container_state_terminated.py | 291 - .../models/v1_container_state_waiting.py | 150 - .../client/models/v1_container_status.py | 401 - .../client/models/v1_controller_revision.py | 233 - .../models/v1_controller_revision_list.py | 205 - .../kubernetes/client/models/v1_cron_job.py | 228 - .../client/models/v1_cron_job_list.py | 205 - .../client/models/v1_cron_job_spec.py | 318 - .../client/models/v1_cron_job_status.py | 178 - .../v1_cross_version_object_reference.py | 180 - .../kubernetes/client/models/v1_csi_driver.py | 203 - .../client/models/v1_csi_driver_list.py | 205 - .../client/models/v1_csi_driver_spec.py | 318 - .../kubernetes/client/models/v1_csi_node.py | 203 - .../client/models/v1_csi_node_driver.py | 206 - .../client/models/v1_csi_node_list.py | 205 - .../client/models/v1_csi_node_spec.py | 123 - .../models/v1_csi_persistent_volume_source.py | 366 - .../client/models/v1_csi_storage_capacity.py | 287 - .../models/v1_csi_storage_capacity_list.py | 205 - .../client/models/v1_csi_volume_source.py | 233 - .../v1_custom_resource_column_definition.py | 265 - .../models/v1_custom_resource_conversion.py | 149 - .../models/v1_custom_resource_definition.py | 229 - ...v1_custom_resource_definition_condition.py | 236 - .../v1_custom_resource_definition_list.py | 205 - .../v1_custom_resource_definition_names.py | 264 - .../v1_custom_resource_definition_spec.py | 262 - .../v1_custom_resource_definition_status.py | 176 - .../v1_custom_resource_definition_version.py | 317 - .../v1_custom_resource_subresource_scale.py | 180 - .../models/v1_custom_resource_subresources.py | 148 - .../models/v1_custom_resource_validation.py | 120 - .../client/models/v1_daemon_endpoint.py | 123 - .../kubernetes/client/models/v1_daemon_set.py | 228 - .../client/models/v1_daemon_set_condition.py | 236 - .../client/models/v1_daemon_set_list.py | 205 - .../client/models/v1_daemon_set_spec.py | 230 - .../client/models/v1_daemon_set_status.py | 378 - .../models/v1_daemon_set_update_strategy.py | 148 - .../client/models/v1_delete_options.py | 288 - .../kubernetes/client/models/v1_deployment.py | 228 - .../client/models/v1_deployment_condition.py | 264 - .../client/models/v1_deployment_list.py | 205 - .../client/models/v1_deployment_spec.py | 314 - .../client/models/v1_deployment_status.py | 318 - .../client/models/v1_deployment_strategy.py | 148 - .../models/v1_downward_api_projection.py | 122 - .../models/v1_downward_api_volume_file.py | 203 - .../models/v1_downward_api_volume_source.py | 150 - .../models/v1_empty_dir_volume_source.py | 150 - .../kubernetes/client/models/v1_endpoint.py | 313 - .../client/models/v1_endpoint_address.py | 205 - .../client/models/v1_endpoint_conditions.py | 178 - .../client/models/v1_endpoint_hints.py | 122 - .../client/models/v1_endpoint_slice.py | 262 - .../client/models/v1_endpoint_slice_list.py | 205 - .../client/models/v1_endpoint_subset.py | 178 - .../kubernetes/client/models/v1_endpoints.py | 204 - .../client/models/v1_endpoints_list.py | 205 - .../client/models/v1_env_from_source.py | 174 - .../kubernetes/client/models/v1_env_var.py | 177 - .../client/models/v1_env_var_source.py | 198 - .../client/models/v1_ephemeral_container.py | 783 - .../models/v1_ephemeral_volume_source.py | 120 - .../client/models/v1_event_source.py | 150 - .../kubernetes/client/models/v1_eviction.py | 202 - .../client/models/v1_exec_action.py | 122 - .../v1_exempt_priority_level_configuration.py | 150 - .../models/v1_external_documentation.py | 146 - .../client/models/v1_fc_volume_source.py | 234 - .../v1_flex_persistent_volume_source.py | 233 - .../client/models/v1_flex_volume_source.py | 233 - .../client/models/v1_flocker_volume_source.py | 150 - .../models/v1_flow_distinguisher_method.py | 123 - .../client/models/v1_flow_schema.py | 228 - .../client/models/v1_flow_schema_condition.py | 234 - .../client/models/v1_flow_schema_list.py | 205 - .../client/models/v1_flow_schema_spec.py | 203 - .../client/models/v1_flow_schema_status.py | 122 - .../kubernetes/client/models/v1_for_zone.py | 123 - .../v1_gce_persistent_disk_volume_source.py | 207 - .../models/v1_git_repo_volume_source.py | 179 - .../v1_glusterfs_persistent_volume_source.py | 208 - .../models/v1_glusterfs_volume_source.py | 180 - .../client/models/v1_group_subject.py | 123 - .../models/v1_group_version_for_discovery.py | 152 - .../client/models/v1_grpc_action.py | 151 - .../models/v1_horizontal_pod_autoscaler.py | 228 - .../v1_horizontal_pod_autoscaler_list.py | 205 - .../v1_horizontal_pod_autoscaler_spec.py | 206 - .../v1_horizontal_pod_autoscaler_status.py | 236 - .../kubernetes/client/models/v1_host_alias.py | 150 - .../kubernetes/client/models/v1_host_ip.py | 122 - .../models/v1_host_path_volume_source.py | 151 - .../client/models/v1_http_get_action.py | 235 - .../client/models/v1_http_header.py | 152 - .../client/models/v1_http_ingress_path.py | 178 - .../models/v1_http_ingress_rule_value.py | 123 - .../kubernetes/client/models/v1_ingress.py | 228 - .../client/models/v1_ingress_backend.py | 146 - .../client/models/v1_ingress_class.py | 202 - .../client/models/v1_ingress_class_list.py | 205 - .../v1_ingress_class_parameters_reference.py | 236 - .../client/models/v1_ingress_class_spec.py | 148 - .../client/models/v1_ingress_list.py | 205 - .../v1_ingress_load_balancer_ingress.py | 178 - .../models/v1_ingress_load_balancer_status.py | 122 - .../client/models/v1_ingress_port_status.py | 180 - .../client/models/v1_ingress_rule.py | 148 - .../models/v1_ingress_service_backend.py | 149 - .../client/models/v1_ingress_spec.py | 204 - .../client/models/v1_ingress_status.py | 120 - .../client/models/v1_ingress_tls.py | 150 - .../kubernetes/client/models/v1_ip_block.py | 151 - .../v1_iscsi_persistent_volume_source.py | 403 - .../client/models/v1_iscsi_volume_source.py | 403 - .../kubernetes/client/models/v1_job.py | 228 - .../client/models/v1_job_condition.py | 264 - .../kubernetes/client/models/v1_job_list.py | 205 - .../kubernetes/client/models/v1_job_spec.py | 481 - .../kubernetes/client/models/v1_job_status.py | 400 - .../client/models/v1_job_template_spec.py | 146 - .../client/models/v1_json_schema_props.py | 1264 - .../client/models/v1_key_to_path.py | 180 - .../client/models/v1_label_selector.py | 150 - .../models/v1_label_selector_requirement.py | 180 - .../kubernetes/client/models/v1_lease.py | 202 - .../kubernetes/client/models/v1_lease_list.py | 205 - .../kubernetes/client/models/v1_lease_spec.py | 234 - .../kubernetes/client/models/v1_lifecycle.py | 146 - .../client/models/v1_lifecycle_handler.py | 198 - .../client/models/v1_limit_range.py | 202 - .../client/models/v1_limit_range_item.py | 263 - .../client/models/v1_limit_range_list.py | 205 - .../client/models/v1_limit_range_spec.py | 123 - .../client/models/v1_limit_response.py | 149 - ...v1_limited_priority_level_configuration.py | 204 - .../kubernetes/client/models/v1_list_meta.py | 206 - .../client/models/v1_load_balancer_ingress.py | 206 - .../client/models/v1_load_balancer_status.py | 122 - .../models/v1_local_object_reference.py | 122 - .../models/v1_local_subject_access_review.py | 229 - .../client/models/v1_local_volume_source.py | 151 - .../client/models/v1_managed_fields_entry.py | 290 - .../client/models/v1_match_condition.py | 152 - .../client/models/v1_modify_volume_status.py | 151 - .../client/models/v1_mutating_webhook.py | 428 - .../v1_mutating_webhook_configuration.py | 204 - .../v1_mutating_webhook_configuration_list.py | 205 - .../kubernetes/client/models/v1_namespace.py | 228 - .../client/models/v1_namespace_condition.py | 232 - .../client/models/v1_namespace_list.py | 205 - .../client/models/v1_namespace_spec.py | 122 - .../client/models/v1_namespace_status.py | 150 - .../client/models/v1_network_policy.py | 202 - .../models/v1_network_policy_egress_rule.py | 150 - .../models/v1_network_policy_ingress_rule.py | 150 - .../client/models/v1_network_policy_list.py | 205 - .../client/models/v1_network_policy_peer.py | 172 - .../client/models/v1_network_policy_port.py | 178 - .../client/models/v1_network_policy_spec.py | 205 - .../client/models/v1_nfs_volume_source.py | 180 - .../kubernetes/client/models/v1_node.py | 228 - .../client/models/v1_node_address.py | 152 - .../client/models/v1_node_affinity.py | 148 - .../client/models/v1_node_condition.py | 264 - .../client/models/v1_node_config_source.py | 120 - .../client/models/v1_node_config_status.py | 200 - .../client/models/v1_node_daemon_endpoints.py | 120 - .../kubernetes/client/models/v1_node_list.py | 205 - .../client/models/v1_node_selector.py | 123 - .../models/v1_node_selector_requirement.py | 180 - .../client/models/v1_node_selector_term.py | 150 - .../kubernetes/client/models/v1_node_spec.py | 288 - .../client/models/v1_node_status.py | 396 - .../client/models/v1_node_system_info.py | 384 - .../models/v1_non_resource_attributes.py | 150 - .../models/v1_non_resource_policy_rule.py | 152 - .../client/models/v1_non_resource_rule.py | 151 - .../client/models/v1_object_field_selector.py | 151 - .../client/models/v1_object_meta.py | 514 - .../client/models/v1_object_reference.py | 290 - .../kubernetes/client/models/v1_overhead.py | 122 - .../client/models/v1_owner_reference.py | 266 - .../client/models/v1_persistent_volume.py | 228 - .../models/v1_persistent_volume_claim.py | 228 - .../v1_persistent_volume_claim_condition.py | 260 - .../models/v1_persistent_volume_claim_list.py | 205 - .../models/v1_persistent_volume_claim_spec.py | 338 - .../v1_persistent_volume_claim_status.py | 316 - .../v1_persistent_volume_claim_template.py | 147 - ...1_persistent_volume_claim_volume_source.py | 151 - .../models/v1_persistent_volume_list.py | 205 - .../models/v1_persistent_volume_spec.py | 914 - .../models/v1_persistent_volume_status.py | 206 - ...v1_photon_persistent_disk_volume_source.py | 151 - .../kubernetes/client/models/v1_pod.py | 228 - .../client/models/v1_pod_affinity.py | 150 - .../client/models/v1_pod_affinity_term.py | 259 - .../client/models/v1_pod_anti_affinity.py | 150 - .../client/models/v1_pod_condition.py | 264 - .../client/models/v1_pod_disruption_budget.py | 228 - .../models/v1_pod_disruption_budget_list.py | 205 - .../models/v1_pod_disruption_budget_spec.py | 204 - .../models/v1_pod_disruption_budget_status.py | 294 - .../client/models/v1_pod_dns_config.py | 178 - .../client/models/v1_pod_dns_config_option.py | 148 - .../client/models/v1_pod_failure_policy.py | 123 - ...ailure_policy_on_exit_codes_requirement.py | 180 - ...ailure_policy_on_pod_conditions_pattern.py | 152 - .../models/v1_pod_failure_policy_rule.py | 177 - .../kubernetes/client/models/v1_pod_ip.py | 122 - .../kubernetes/client/models/v1_pod_list.py | 205 - .../kubernetes/client/models/v1_pod_os.py | 123 - .../client/models/v1_pod_readiness_gate.py | 123 - .../client/models/v1_pod_resource_claim.py | 149 - .../models/v1_pod_resource_claim_status.py | 151 - .../client/models/v1_pod_scheduling_gate.py | 123 - .../client/models/v1_pod_security_context.py | 368 - .../kubernetes/client/models/v1_pod_spec.py | 1179 - .../kubernetes/client/models/v1_pod_status.py | 542 - .../client/models/v1_pod_template.py | 202 - .../client/models/v1_pod_template_list.py | 205 - .../client/models/v1_pod_template_spec.py | 146 - .../client/models/v1_policy_rule.py | 235 - .../models/v1_policy_rules_with_subjects.py | 179 - .../client/models/v1_port_status.py | 180 - .../models/v1_portworx_volume_source.py | 179 - .../client/models/v1_preconditions.py | 150 - .../models/v1_preferred_scheduling_term.py | 150 - .../client/models/v1_priority_class.py | 289 - .../client/models/v1_priority_class_list.py | 205 - .../models/v1_priority_level_configuration.py | 228 - ..._priority_level_configuration_condition.py | 234 - .../v1_priority_level_configuration_list.py | 205 - ..._priority_level_configuration_reference.py | 123 - .../v1_priority_level_configuration_spec.py | 175 - .../v1_priority_level_configuration_status.py | 122 - .../kubernetes/client/models/v1_probe.py | 366 - .../models/v1_projected_volume_source.py | 150 - .../client/models/v1_queuing_configuration.py | 178 - .../client/models/v1_quobyte_volume_source.py | 264 - .../models/v1_rbd_persistent_volume_source.py | 318 - .../client/models/v1_rbd_volume_source.py | 318 - .../client/models/v1_replica_set.py | 228 - .../client/models/v1_replica_set_condition.py | 236 - .../client/models/v1_replica_set_list.py | 205 - .../client/models/v1_replica_set_spec.py | 203 - .../client/models/v1_replica_set_status.py | 263 - .../models/v1_replication_controller.py | 228 - .../v1_replication_controller_condition.py | 236 - .../models/v1_replication_controller_list.py | 205 - .../models/v1_replication_controller_spec.py | 204 - .../v1_replication_controller_status.py | 263 - .../client/models/v1_resource_attributes.py | 290 - .../client/models/v1_resource_claim.py | 123 - .../models/v1_resource_field_selector.py | 179 - .../client/models/v1_resource_policy_rule.py | 237 - .../client/models/v1_resource_quota.py | 228 - .../client/models/v1_resource_quota_list.py | 205 - .../client/models/v1_resource_quota_spec.py | 176 - .../client/models/v1_resource_quota_status.py | 150 - .../client/models/v1_resource_requirements.py | 178 - .../client/models/v1_resource_rule.py | 207 - .../kubernetes/client/models/v1_role.py | 204 - .../client/models/v1_role_binding.py | 231 - .../client/models/v1_role_binding_list.py | 205 - .../kubernetes/client/models/v1_role_list.py | 205 - .../kubernetes/client/models/v1_role_ref.py | 181 - .../models/v1_rolling_update_daemon_set.py | 150 - .../models/v1_rolling_update_deployment.py | 150 - ...v1_rolling_update_stateful_set_strategy.py | 150 - .../client/models/v1_rule_with_operations.py | 234 - .../client/models/v1_runtime_class.py | 257 - .../client/models/v1_runtime_class_list.py | 205 - .../kubernetes/client/models/v1_scale.py | 228 - .../v1_scale_io_persistent_volume_source.py | 375 - .../models/v1_scale_io_volume_source.py | 375 - .../kubernetes/client/models/v1_scale_spec.py | 122 - .../client/models/v1_scale_status.py | 151 - .../kubernetes/client/models/v1_scheduling.py | 150 - .../client/models/v1_scope_selector.py | 122 - ...v1_scoped_resource_selector_requirement.py | 180 - .../client/models/v1_se_linux_options.py | 206 - .../client/models/v1_seccomp_profile.py | 151 - .../kubernetes/client/models/v1_secret.py | 288 - .../client/models/v1_secret_env_source.py | 150 - .../client/models/v1_secret_key_selector.py | 179 - .../client/models/v1_secret_list.py | 205 - .../client/models/v1_secret_projection.py | 178 - .../client/models/v1_secret_reference.py | 150 - .../client/models/v1_secret_volume_source.py | 206 - .../client/models/v1_security_context.py | 394 - .../models/v1_self_subject_access_review.py | 229 - .../v1_self_subject_access_review_spec.py | 146 - .../client/models/v1_self_subject_review.py | 202 - .../models/v1_self_subject_review_status.py | 120 - .../models/v1_self_subject_rules_review.py | 229 - .../v1_self_subject_rules_review_spec.py | 122 - .../v1_server_address_by_client_cidr.py | 152 - .../kubernetes/client/models/v1_service.py | 228 - .../client/models/v1_service_account.py | 260 - .../client/models/v1_service_account_list.py | 205 - .../models/v1_service_account_subject.py | 152 - .../v1_service_account_token_projection.py | 179 - .../client/models/v1_service_backend_port.py | 150 - .../client/models/v1_service_list.py | 205 - .../client/models/v1_service_port.py | 263 - .../client/models/v1_service_spec.py | 624 - .../client/models/v1_service_status.py | 148 - .../models/v1_session_affinity_config.py | 120 - .../client/models/v1_sleep_action.py | 123 - .../client/models/v1_stateful_set.py | 228 - .../models/v1_stateful_set_condition.py | 236 - .../client/models/v1_stateful_set_list.py | 205 - .../client/models/v1_stateful_set_ordinals.py | 122 - ...ersistent_volume_claim_retention_policy.py | 150 - .../client/models/v1_stateful_set_spec.py | 395 - .../client/models/v1_stateful_set_status.py | 375 - .../models/v1_stateful_set_update_strategy.py | 148 - .../kubernetes/client/models/v1_status.py | 314 - .../client/models/v1_status_cause.py | 178 - .../client/models/v1_status_details.py | 262 - .../client/models/v1_storage_class.py | 373 - .../client/models/v1_storage_class_list.py | 205 - .../v1_storage_os_persistent_volume_source.py | 232 - .../models/v1_storage_os_volume_source.py | 232 - .../client/models/v1_subject_access_review.py | 229 - .../models/v1_subject_access_review_spec.py | 258 - .../models/v1_subject_access_review_status.py | 207 - .../models/v1_subject_rules_review_status.py | 209 - .../kubernetes/client/models/v1_sysctl.py | 152 - .../kubernetes/client/models/v1_taint.py | 208 - .../client/models/v1_tcp_socket_action.py | 151 - .../client/models/v1_token_request_spec.py | 177 - .../client/models/v1_token_request_status.py | 152 - .../client/models/v1_token_review.py | 229 - .../client/models/v1_token_review_spec.py | 150 - .../client/models/v1_token_review_status.py | 204 - .../kubernetes/client/models/v1_toleration.py | 234 - .../v1_topology_selector_label_requirement.py | 152 - .../models/v1_topology_selector_term.py | 122 - .../models/v1_topology_spread_constraint.py | 319 - .../models/v1_typed_local_object_reference.py | 180 - .../models/v1_typed_object_reference.py | 208 - .../models/v1_uncounted_terminated_pods.py | 150 - .../kubernetes/client/models/v1_user_info.py | 206 - .../client/models/v1_user_subject.py | 123 - .../client/models/v1_validating_webhook.py | 400 - .../v1_validating_webhook_configuration.py | 204 - ...1_validating_webhook_configuration_list.py | 205 - .../client/models/v1_validation_rule.py | 263 - .../kubernetes/client/models/v1_volume.py | 877 - .../client/models/v1_volume_attachment.py | 229 - .../models/v1_volume_attachment_list.py | 205 - .../models/v1_volume_attachment_source.py | 148 - .../models/v1_volume_attachment_spec.py | 179 - .../models/v1_volume_attachment_status.py | 203 - .../client/models/v1_volume_device.py | 152 - .../client/models/v1_volume_error.py | 150 - .../client/models/v1_volume_mount.py | 264 - .../client/models/v1_volume_node_affinity.py | 120 - .../client/models/v1_volume_node_resources.py | 122 - .../client/models/v1_volume_projection.py | 224 - .../models/v1_volume_resource_requirements.py | 150 - .../v1_vsphere_virtual_disk_volume_source.py | 207 - .../client/models/v1_watch_event.py | 150 - .../client/models/v1_webhook_conversion.py | 149 - .../models/v1_weighted_pod_affinity_term.py | 150 - .../v1_windows_security_context_options.py | 206 - .../models/v1alpha1_audit_annotation.py | 152 - .../models/v1alpha1_cluster_trust_bundle.py | 203 - .../v1alpha1_cluster_trust_bundle_list.py | 205 - .../v1alpha1_cluster_trust_bundle_spec.py | 151 - .../models/v1alpha1_expression_warning.py | 152 - .../client/models/v1alpha1_ip_address.py | 202 - .../client/models/v1alpha1_ip_address_list.py | 205 - .../client/models/v1alpha1_ip_address_spec.py | 120 - .../client/models/v1alpha1_match_condition.py | 152 - .../client/models/v1alpha1_match_resources.py | 230 - .../v1alpha1_named_rule_with_operations.py | 262 - .../client/models/v1alpha1_param_kind.py | 150 - .../client/models/v1alpha1_param_ref.py | 204 - .../models/v1alpha1_parent_reference.py | 206 - .../models/v1alpha1_self_subject_review.py | 202 - .../v1alpha1_self_subject_review_status.py | 120 - .../models/v1alpha1_server_storage_version.py | 206 - .../client/models/v1alpha1_service_cidr.py | 228 - .../models/v1alpha1_service_cidr_list.py | 205 - .../models/v1alpha1_service_cidr_spec.py | 122 - .../models/v1alpha1_service_cidr_status.py | 122 - .../client/models/v1alpha1_storage_version.py | 232 - .../v1alpha1_storage_version_condition.py | 265 - .../models/v1alpha1_storage_version_list.py | 205 - .../models/v1alpha1_storage_version_status.py | 178 - .../client/models/v1alpha1_type_checking.py | 122 - .../v1alpha1_validating_admission_policy.py | 228 - ...ha1_validating_admission_policy_binding.py | 202 - ...alidating_admission_policy_binding_list.py | 204 - ...alidating_admission_policy_binding_spec.py | 202 - ...alpha1_validating_admission_policy_list.py | 204 - ...alpha1_validating_admission_policy_spec.py | 286 - ...pha1_validating_admission_policy_status.py | 176 - .../client/models/v1alpha1_validation.py | 207 - .../client/models/v1alpha1_variable.py | 152 - .../v1alpha1_volume_attributes_class.py | 233 - .../v1alpha1_volume_attributes_class_list.py | 205 - .../models/v1alpha2_allocation_result.py | 176 - .../models/v1alpha2_pod_scheduling_context.py | 229 - .../v1alpha2_pod_scheduling_context_list.py | 205 - .../v1alpha2_pod_scheduling_context_spec.py | 150 - .../v1alpha2_pod_scheduling_context_status.py | 122 - .../client/models/v1alpha2_resource_claim.py | 229 - ...lpha2_resource_claim_consumer_reference.py | 209 - .../models/v1alpha2_resource_claim_list.py | 205 - ...ha2_resource_claim_parameters_reference.py | 180 - ...alpha2_resource_claim_scheduling_status.py | 150 - .../models/v1alpha2_resource_claim_spec.py | 177 - .../models/v1alpha2_resource_claim_status.py | 204 - .../v1alpha2_resource_claim_template.py | 203 - .../v1alpha2_resource_claim_template_list.py | 205 - .../v1alpha2_resource_claim_template_spec.py | 147 - .../client/models/v1alpha2_resource_class.py | 257 - .../models/v1alpha2_resource_class_list.py | 205 - ...ha2_resource_class_parameters_reference.py | 208 - .../client/models/v1alpha2_resource_handle.py | 150 - .../client/models/v1beta1_audit_annotation.py | 152 - .../models/v1beta1_expression_warning.py | 152 - .../client/models/v1beta1_match_condition.py | 152 - .../client/models/v1beta1_match_resources.py | 230 - .../v1beta1_named_rule_with_operations.py | 262 - .../client/models/v1beta1_param_kind.py | 150 - .../client/models/v1beta1_param_ref.py | 204 - .../models/v1beta1_self_subject_review.py | 202 - .../v1beta1_self_subject_review_status.py | 120 - .../client/models/v1beta1_type_checking.py | 122 - .../v1beta1_validating_admission_policy.py | 228 - ...ta1_validating_admission_policy_binding.py | 202 - ...alidating_admission_policy_binding_list.py | 204 - ...alidating_admission_policy_binding_spec.py | 202 - ...1beta1_validating_admission_policy_list.py | 204 - ...1beta1_validating_admission_policy_spec.py | 286 - ...eta1_validating_admission_policy_status.py | 176 - .../client/models/v1beta1_validation.py | 207 - .../client/models/v1beta1_variable.py | 152 - ...ta3_exempt_priority_level_configuration.py | 150 - .../v1beta3_flow_distinguisher_method.py | 123 - .../client/models/v1beta3_flow_schema.py | 228 - .../models/v1beta3_flow_schema_condition.py | 234 - .../client/models/v1beta3_flow_schema_list.py | 205 - .../client/models/v1beta3_flow_schema_spec.py | 203 - .../models/v1beta3_flow_schema_status.py | 122 - .../client/models/v1beta3_group_subject.py | 123 - .../client/models/v1beta3_limit_response.py | 149 - ...a3_limited_priority_level_configuration.py | 204 - .../v1beta3_non_resource_policy_rule.py | 152 - .../v1beta3_policy_rules_with_subjects.py | 179 - .../v1beta3_priority_level_configuration.py | 228 - ..._priority_level_configuration_condition.py | 234 - ...beta3_priority_level_configuration_list.py | 205 - ..._priority_level_configuration_reference.py | 123 - ...beta3_priority_level_configuration_spec.py | 175 - ...ta3_priority_level_configuration_status.py | 122 - .../models/v1beta3_queuing_configuration.py | 178 - .../models/v1beta3_resource_policy_rule.py | 237 - .../models/v1beta3_service_account_subject.py | 152 - .../client/models/v1beta3_subject.py | 201 - .../client/models/v1beta3_user_subject.py | 123 - .../v2_container_resource_metric_source.py | 179 - .../v2_container_resource_metric_status.py | 179 - .../v2_cross_version_object_reference.py | 180 - .../models/v2_external_metric_source.py | 148 - .../models/v2_external_metric_status.py | 148 - .../models/v2_horizontal_pod_autoscaler.py | 228 - .../v2_horizontal_pod_autoscaler_behavior.py | 146 - .../v2_horizontal_pod_autoscaler_condition.py | 236 - .../v2_horizontal_pod_autoscaler_list.py | 205 - .../v2_horizontal_pod_autoscaler_spec.py | 232 - .../v2_horizontal_pod_autoscaler_status.py | 263 - .../client/models/v2_hpa_scaling_policy.py | 181 - .../client/models/v2_hpa_scaling_rules.py | 178 - .../client/models/v2_metric_identifier.py | 149 - .../client/models/v2_metric_spec.py | 253 - .../client/models/v2_metric_status.py | 253 - .../client/models/v2_metric_target.py | 207 - .../client/models/v2_metric_value_status.py | 178 - .../client/models/v2_object_metric_source.py | 175 - .../client/models/v2_object_metric_status.py | 175 - .../client/models/v2_pods_metric_source.py | 148 - .../client/models/v2_pods_metric_status.py | 148 - .../models/v2_resource_metric_source.py | 150 - .../models/v2_resource_metric_status.py | 150 - .../kubernetes/client/models/version_info.py | 337 - .../site-packages/kubernetes/client/rest.py | 305 - .../kubernetes/config/__init__.py | 49 - .../__pycache__/__init__.cpython-310.pyc | Bin 1509 -> 0 bytes .../config_exception.cpython-310.pyc | Bin 372 -> 0 bytes .../__pycache__/dateutil.cpython-310.pyc | Bin 2281 -> 0 bytes .../__pycache__/dateutil_test.cpython-310.pyc | Bin 2118 -> 0 bytes .../__pycache__/exec_provider.cpython-310.pyc | Bin 2662 -> 0 bytes .../exec_provider_test.cpython-310.pyc | Bin 5146 -> 0 bytes .../incluster_config.cpython-310.pyc | Bin 3760 -> 0 bytes .../incluster_config_test.cpython-310.pyc | Bin 5176 -> 0 bytes .../__pycache__/kube_config.cpython-310.pyc | Bin 25526 -> 0 bytes .../kube_config_test.cpython-310.pyc | Bin 41717 -> 0 bytes .../kubernetes/config/config_exception.py | 17 - .../kubernetes/config/dateutil.py | 84 - .../kubernetes/config/dateutil_test.py | 68 - .../kubernetes/config/exec_provider.py | 100 - .../kubernetes/config/exec_provider_test.py | 167 - .../kubernetes/config/incluster_config.py | 121 - .../config/incluster_config_test.py | 163 - .../kubernetes/config/kube_config.py | 893 - .../kubernetes/config/kube_config_test.py | 1879 - .../kubernetes/dynamic/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 216 -> 0 bytes .../__pycache__/client.cpython-310.pyc | Bin 10833 -> 0 bytes .../__pycache__/discovery.cpython-310.pyc | Bin 14775 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 4400 -> 0 bytes .../__pycache__/resource.cpython-310.pyc | Bin 14628 -> 0 bytes .../__pycache__/test_client.cpython-310.pyc | Bin 10927 -> 0 bytes .../test_discovery.cpython-310.pyc | Bin 1635 -> 0 bytes .../kubernetes/dynamic/client.py | 320 - .../kubernetes/dynamic/discovery.py | 433 - .../kubernetes/dynamic/exceptions.py | 110 - .../kubernetes/dynamic/resource.py | 405 - .../kubernetes/dynamic/test_client.py | 566 - .../kubernetes/dynamic/test_discovery.py | 61 - .../kubernetes/leaderelection/__init__.py | 13 - .../__pycache__/__init__.cpython-310.pyc | Bin 200 -> 0 bytes .../electionconfig.cpython-310.pyc | Bin 1476 -> 0 bytes .../__pycache__/example.cpython-310.pyc | Bin 962 -> 0 bytes .../leaderelection.cpython-310.pyc | Bin 3887 -> 0 bytes .../leaderelection_test.cpython-310.pyc | Bin 8351 -> 0 bytes .../leaderelectionrecord.cpython-310.pyc | Bin 612 -> 0 bytes .../leaderelection/electionconfig.py | 59 - .../kubernetes/leaderelection/example.py | 54 - .../leaderelection/leaderelection.py | 191 - .../leaderelection/leaderelection_test.py | 270 - .../leaderelection/leaderelectionrecord.py | 22 - .../leaderelection/resourcelock/__init__.py | 13 - .../__pycache__/__init__.cpython-310.pyc | Bin 213 -> 0 bytes .../__pycache__/configmaplock.cpython-310.pyc | Bin 4013 -> 0 bytes .../resourcelock/configmaplock.py | 129 - .../kubernetes/stream/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 236 -> 0 bytes .../stream/__pycache__/stream.cpython-310.pyc | Bin 961 -> 0 bytes .../__pycache__/ws_client.cpython-310.pyc | Bin 15695 -> 0 bytes .../ws_client_test.cpython-310.pyc | Bin 2435 -> 0 bytes .../site-packages/kubernetes/stream/stream.py | 41 - .../kubernetes/stream/ws_client.py | 562 - .../kubernetes/stream/ws_client_test.py | 76 - .../kubernetes/utils/__init__.py | 19 - .../__pycache__/__init__.cpython-310.pyc | Bin 419 -> 0 bytes .../create_from_yaml.cpython-310.pyc | Bin 8550 -> 0 bytes .../__pycache__/quantity.cpython-310.pyc | Bin 1505 -> 0 bytes .../kubernetes/utils/create_from_yaml.py | 287 - .../kubernetes/utils/quantity.py | 75 - .../kubernetes/watch/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 226 -> 0 bytes .../watch/__pycache__/watch.cpython-310.pyc | Bin 5614 -> 0 bytes .../__pycache__/watch_test.cpython-310.pyc | Bin 10845 -> 0 bytes .../site-packages/kubernetes/watch/watch.py | 213 - .../kubernetes/watch/watch_test.py | 494 - .../oauthlib-3.2.2.dist-info/INSTALLER | 1 - .../oauthlib-3.2.2.dist-info/LICENSE | 27 - .../oauthlib-3.2.2.dist-info/METADATA | 179 - .../oauthlib-3.2.2.dist-info/RECORD | 142 - .../oauthlib-3.2.2.dist-info/WHEEL | 5 - .../oauthlib-3.2.2.dist-info/top_level.txt | 1 - .../site-packages/oauthlib/__init__.py | 34 - .../__pycache__/__init__.cpython-310.pyc | Bin 1000 -> 0 bytes .../__pycache__/common.cpython-310.pyc | Bin 13455 -> 0 bytes .../__pycache__/signals.cpython-310.pyc | Bin 1935 -> 0 bytes .../__pycache__/uri_validate.cpython-310.pyc | Bin 3781 -> 0 bytes .../site-packages/oauthlib/common.py | 432 - .../site-packages/oauthlib/oauth1/__init__.py | 23 - .../__pycache__/__init__.cpython-310.pyc | Bin 1200 -> 0 bytes .../oauthlib/oauth1/rfc5849/__init__.py | 365 - .../__pycache__/__init__.cpython-310.pyc | Bin 10491 -> 0 bytes .../__pycache__/errors.cpython-310.pyc | Bin 3249 -> 0 bytes .../__pycache__/parameters.cpython-310.pyc | Bin 3323 -> 0 bytes .../request_validator.cpython-310.pyc | Bin 32785 -> 0 bytes .../__pycache__/signature.cpython-310.pyc | Bin 17813 -> 0 bytes .../rfc5849/__pycache__/utils.cpython-310.pyc | Bin 2835 -> 0 bytes .../oauth1/rfc5849/endpoints/__init__.py | 8 - .../__pycache__/__init__.cpython-310.pyc | Bin 590 -> 0 bytes .../__pycache__/access_token.cpython-310.pyc | Bin 6345 -> 0 bytes .../__pycache__/authorization.cpython-310.pyc | Bin 6183 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 6148 -> 0 bytes .../pre_configured.cpython-310.pyc | Bin 754 -> 0 bytes .../__pycache__/request_token.cpython-310.pyc | Bin 6172 -> 0 bytes .../__pycache__/resource.cpython-310.pyc | Bin 4077 -> 0 bytes .../signature_only.cpython-310.pyc | Bin 2327 -> 0 bytes .../oauth1/rfc5849/endpoints/access_token.py | 215 - .../oauth1/rfc5849/endpoints/authorization.py | 158 - .../oauthlib/oauth1/rfc5849/endpoints/base.py | 244 - .../rfc5849/endpoints/pre_configured.py | 14 - .../oauth1/rfc5849/endpoints/request_token.py | 209 - .../oauth1/rfc5849/endpoints/resource.py | 163 - .../rfc5849/endpoints/signature_only.py | 82 - .../oauthlib/oauth1/rfc5849/errors.py | 76 - .../oauthlib/oauth1/rfc5849/parameters.py | 133 - .../oauth1/rfc5849/request_validator.py | 849 - .../oauthlib/oauth1/rfc5849/signature.py | 852 - .../oauthlib/oauth1/rfc5849/utils.py | 83 - .../site-packages/oauthlib/oauth2/__init__.py | 36 - .../__pycache__/__init__.cpython-310.pyc | Bin 2194 -> 0 bytes .../oauthlib/oauth2/rfc6749/__init__.py | 16 - .../__pycache__/__init__.cpython-310.pyc | Bin 674 -> 0 bytes .../__pycache__/errors.cpython-310.pyc | Bin 14673 -> 0 bytes .../__pycache__/parameters.cpython-310.pyc | Bin 16850 -> 0 bytes .../request_validator.cpython-310.pyc | Bin 29734 -> 0 bytes .../__pycache__/tokens.cpython-310.pyc | Bin 9930 -> 0 bytes .../rfc6749/__pycache__/utils.cpython-310.pyc | Bin 2851 -> 0 bytes .../oauth2/rfc6749/clients/__init__.py | 14 - .../__pycache__/__init__.cpython-310.pyc | Bin 783 -> 0 bytes .../backend_application.cpython-310.pyc | Bin 3509 -> 0 bytes .../clients/__pycache__/base.cpython-310.pyc | Bin 23635 -> 0 bytes .../legacy_application.cpython-310.pyc | Bin 4398 -> 0 bytes .../mobile_application.cpython-310.pyc | Bin 9201 -> 0 bytes .../service_application.cpython-310.pyc | Bin 7271 -> 0 bytes .../web_application.cpython-310.pyc | Bin 12126 -> 0 bytes .../rfc6749/clients/backend_application.py | 74 - .../oauthlib/oauth2/rfc6749/clients/base.py | 604 - .../rfc6749/clients/legacy_application.py | 84 - .../rfc6749/clients/mobile_application.py | 174 - .../rfc6749/clients/service_application.py | 189 - .../oauth2/rfc6749/clients/web_application.py | 222 - .../oauth2/rfc6749/endpoints/__init__.py | 17 - .../__pycache__/__init__.cpython-310.pyc | Bin 864 -> 0 bytes .../__pycache__/authorization.cpython-310.pyc | Bin 4641 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 4451 -> 0 bytes .../__pycache__/introspect.cpython-310.pyc | Bin 5095 -> 0 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 8849 -> 0 bytes .../pre_configured.cpython-310.pyc | Bin 8022 -> 0 bytes .../__pycache__/resource.cpython-310.pyc | Bin 3905 -> 0 bytes .../__pycache__/revocation.cpython-310.pyc | Bin 5191 -> 0 bytes .../__pycache__/token.cpython-310.pyc | Bin 4340 -> 0 bytes .../oauth2/rfc6749/endpoints/authorization.py | 114 - .../oauthlib/oauth2/rfc6749/endpoints/base.py | 113 - .../oauth2/rfc6749/endpoints/introspect.py | 120 - .../oauth2/rfc6749/endpoints/metadata.py | 238 - .../rfc6749/endpoints/pre_configured.py | 216 - .../oauth2/rfc6749/endpoints/resource.py | 84 - .../oauth2/rfc6749/endpoints/revocation.py | 126 - .../oauth2/rfc6749/endpoints/token.py | 119 - .../oauthlib/oauth2/rfc6749/errors.py | 400 - .../oauth2/rfc6749/grant_types/__init__.py | 11 - .../__pycache__/__init__.cpython-310.pyc | Bin 629 -> 0 bytes .../authorization_code.cpython-310.pyc | Bin 18303 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 9280 -> 0 bytes .../client_credentials.cpython-310.pyc | Bin 4794 -> 0 bytes .../__pycache__/implicit.cpython-310.pyc | Bin 12867 -> 0 bytes .../__pycache__/refresh_token.cpython-310.pyc | Bin 4649 -> 0 bytes ...owner_password_credentials.cpython-310.pyc | Bin 7770 -> 0 bytes .../rfc6749/grant_types/authorization_code.py | 548 - .../oauth2/rfc6749/grant_types/base.py | 268 - .../rfc6749/grant_types/client_credentials.py | 123 - .../oauth2/rfc6749/grant_types/implicit.py | 376 - .../rfc6749/grant_types/refresh_token.py | 136 - .../resource_owner_password_credentials.py | 199 - .../oauthlib/oauth2/rfc6749/parameters.py | 471 - .../oauth2/rfc6749/request_validator.py | 680 - .../oauthlib/oauth2/rfc6749/tokens.py | 356 - .../oauthlib/oauth2/rfc6749/utils.py | 83 - .../oauthlib/oauth2/rfc8628/__init__.py | 10 - .../__pycache__/__init__.cpython-310.pyc | Bin 447 -> 0 bytes .../oauth2/rfc8628/clients/__init__.py | 8 - .../__pycache__/__init__.cpython-310.pyc | Bin 427 -> 0 bytes .../__pycache__/device.cpython-310.pyc | Bin 4239 -> 0 bytes .../oauthlib/oauth2/rfc8628/clients/device.py | 95 - .../site-packages/oauthlib/openid/__init__.py | 7 - .../__pycache__/__init__.cpython-310.pyc | Bin 391 -> 0 bytes .../oauthlib/openid/connect/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 198 -> 0 bytes .../oauthlib/openid/connect/core/__init__.py | 0 .../core/__pycache__/__init__.cpython-310.pyc | Bin 203 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 5768 -> 0 bytes .../request_validator.cpython-310.pyc | Bin 14501 -> 0 bytes .../core/__pycache__/tokens.cpython-310.pyc | Bin 1708 -> 0 bytes .../openid/connect/core/endpoints/__init__.py | 9 - .../__pycache__/__init__.cpython-310.pyc | Bin 472 -> 0 bytes .../pre_configured.cpython-310.pyc | Bin 3597 -> 0 bytes .../__pycache__/userinfo.cpython-310.pyc | Bin 4144 -> 0 bytes .../connect/core/endpoints/pre_configured.py | 97 - .../openid/connect/core/endpoints/userinfo.py | 106 - .../openid/connect/core/exceptions.py | 149 - .../connect/core/grant_types/__init__.py | 13 - .../__pycache__/__init__.cpython-310.pyc | Bin 716 -> 0 bytes .../authorization_code.cpython-310.pyc | Bin 1686 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 13007 -> 0 bytes .../__pycache__/dispatchers.cpython-310.pyc | Bin 4133 -> 0 bytes .../__pycache__/hybrid.cpython-310.pyc | Bin 2056 -> 0 bytes .../__pycache__/implicit.cpython-310.pyc | Bin 1801 -> 0 bytes .../__pycache__/refresh_token.cpython-310.pyc | Bin 1447 -> 0 bytes .../core/grant_types/authorization_code.py | 43 - .../openid/connect/core/grant_types/base.py | 326 - .../connect/core/grant_types/dispatchers.py | 101 - .../openid/connect/core/grant_types/hybrid.py | 63 - .../connect/core/grant_types/implicit.py | 51 - .../connect/core/grant_types/refresh_token.py | 34 - .../openid/connect/core/request_validator.py | 320 - .../oauthlib/openid/connect/core/tokens.py | 48 - .../site-packages/oauthlib/signals.py | 40 - .../site-packages/oauthlib/uri_validate.py | 190 - .../pick-2.3.2.dist-info/INSTALLER | 1 - .../pick-2.3.2.dist-info/LICENSE | 21 - .../pick-2.3.2.dist-info/METADATA | 87 - .../site-packages/pick-2.3.2.dist-info/RECORD | 9 - .../pick-2.3.2.dist-info/REQUESTED | 0 .../site-packages/pick-2.3.2.dist-info/WHEEL | 4 - .../python3.10/site-packages/pick/__init__.py | 247 - .../pick/__pycache__/__init__.cpython-310.pyc | Bin 6667 -> 0 bytes .../python3.10/site-packages/pick/py.typed | 0 .../pip-24.0.dist-info/AUTHORS.txt | 760 - .../pip-24.0.dist-info/INSTALLER | 1 - .../pip-24.0.dist-info/LICENSE.txt | 20 - .../site-packages/pip-24.0.dist-info/METADATA | 88 - .../site-packages/pip-24.0.dist-info/RECORD | 1025 - .../pip-24.0.dist-info/REQUESTED | 0 .../site-packages/pip-24.0.dist-info/WHEEL | 5 - .../pip-24.0.dist-info/entry_points.txt | 4 - .../pip-24.0.dist-info/top_level.txt | 1 - .../python3.10/site-packages/pip/__init__.py | 13 - .../python3.10/site-packages/pip/__main__.py | 24 - .../site-packages/pip/__pip-runner__.py | 50 - .../pip/__pycache__/__init__.cpython-310.pyc | Bin 632 -> 0 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 468 -> 0 bytes .../__pip-runner__.cpython-310.pyc | Bin 1632 -> 0 bytes .../site-packages/pip/_internal/__init__.py | 18 - .../__pycache__/__init__.cpython-310.pyc | Bin 696 -> 0 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 9713 -> 0 bytes .../__pycache__/cache.cpython-310.pyc | Bin 9047 -> 0 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 11650 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 25470 -> 0 bytes .../__pycache__/main.cpython-310.pyc | Bin 620 -> 0 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 3642 -> 0 bytes .../self_outdated_check.cpython-310.pyc | Bin 6946 -> 0 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 8647 -> 0 bytes .../site-packages/pip/_internal/build_env.py | 311 - .../site-packages/pip/_internal/cache.py | 290 - .../pip/_internal/cli/__init__.py | 4 - .../cli/__pycache__/__init__.cpython-310.pyc | Bin 275 -> 0 bytes .../autocompletion.cpython-310.pyc | Bin 5411 -> 0 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 6492 -> 0 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 23512 -> 0 bytes .../command_context.cpython-310.pyc | Bin 1315 -> 0 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 1509 -> 0 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 2998 -> 0 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 9924 -> 0 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 1899 -> 0 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 13170 -> 0 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 4965 -> 0 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 354 -> 0 bytes .../pip/_internal/cli/autocompletion.py | 172 - .../pip/_internal/cli/base_command.py | 236 - .../pip/_internal/cli/cmdoptions.py | 1074 - .../pip/_internal/cli/command_context.py | 27 - .../site-packages/pip/_internal/cli/main.py | 79 - .../pip/_internal/cli/main_parser.py | 134 - .../site-packages/pip/_internal/cli/parser.py | 294 - .../pip/_internal/cli/progress_bars.py | 68 - .../pip/_internal/cli/req_command.py | 505 - .../pip/_internal/cli/spinners.py | 159 - .../pip/_internal/cli/status_codes.py | 6 - .../pip/_internal/commands/__init__.py | 132 - .../__pycache__/__init__.cpython-310.pyc | Bin 3254 -> 0 bytes .../__pycache__/cache.cpython-310.pyc | Bin 6425 -> 0 bytes .../__pycache__/check.cpython-310.pyc | Bin 1633 -> 0 bytes .../__pycache__/completion.cpython-310.pyc | Bin 4321 -> 0 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 8938 -> 0 bytes .../__pycache__/debug.cpython-310.pyc | Bin 6900 -> 0 bytes .../__pycache__/download.cpython-310.pyc | Bin 4248 -> 0 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 2974 -> 0 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 2151 -> 0 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 1312 -> 0 bytes .../__pycache__/index.cpython-310.pyc | Bin 4589 -> 0 bytes .../__pycache__/inspect.cpython-310.pyc | Bin 2972 -> 0 bytes .../__pycache__/install.cpython-310.pyc | Bin 17726 -> 0 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 10372 -> 0 bytes .../__pycache__/search.cpython-310.pyc | Bin 5365 -> 0 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 6526 -> 0 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 3333 -> 0 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 4979 -> 0 bytes .../pip/_internal/commands/cache.py | 225 - .../pip/_internal/commands/check.py | 54 - .../pip/_internal/commands/completion.py | 130 - .../pip/_internal/commands/configuration.py | 280 - .../pip/_internal/commands/debug.py | 201 - .../pip/_internal/commands/download.py | 147 - .../pip/_internal/commands/freeze.py | 108 - .../pip/_internal/commands/hash.py | 59 - .../pip/_internal/commands/help.py | 41 - .../pip/_internal/commands/index.py | 139 - .../pip/_internal/commands/inspect.py | 92 - .../pip/_internal/commands/install.py | 774 - .../pip/_internal/commands/list.py | 368 - .../pip/_internal/commands/search.py | 174 - .../pip/_internal/commands/show.py | 189 - .../pip/_internal/commands/uninstall.py | 113 - .../pip/_internal/commands/wheel.py | 183 - .../pip/_internal/configuration.py | 383 - .../pip/_internal/distributions/__init__.py | 21 - .../__pycache__/__init__.cpython-310.pyc | Bin 802 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 2484 -> 0 bytes .../__pycache__/installed.cpython-310.pyc | Bin 1486 -> 0 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 5289 -> 0 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 1851 -> 0 bytes .../pip/_internal/distributions/base.py | 51 - .../pip/_internal/distributions/installed.py | 29 - .../pip/_internal/distributions/sdist.py | 156 - .../pip/_internal/distributions/wheel.py | 40 - .../site-packages/pip/_internal/exceptions.py | 728 - .../pip/_internal/index/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 229 -> 0 bytes .../__pycache__/collector.cpython-310.pyc | Bin 15320 -> 0 bytes .../package_finder.cpython-310.pyc | Bin 29459 -> 0 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 8919 -> 0 bytes .../pip/_internal/index/collector.py | 507 - .../pip/_internal/index/package_finder.py | 1027 - .../pip/_internal/index/sources.py | 285 - .../pip/_internal/locations/__init__.py | 467 - .../__pycache__/__init__.cpython-310.pyc | Bin 11031 -> 0 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 4596 -> 0 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 5995 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 2399 -> 0 bytes .../pip/_internal/locations/_distutils.py | 172 - .../pip/_internal/locations/_sysconfig.py | 213 - .../pip/_internal/locations/base.py | 81 - .../site-packages/pip/_internal/main.py | 12 - .../pip/_internal/metadata/__init__.py | 128 - .../__pycache__/__init__.cpython-310.pyc | Bin 4806 -> 0 bytes .../__pycache__/_json.cpython-310.pyc | Bin 2189 -> 0 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 27334 -> 0 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 10616 -> 0 bytes .../pip/_internal/metadata/_json.py | 84 - .../pip/_internal/metadata/base.py | 702 - .../_internal/metadata/importlib/__init__.py | 6 - .../__pycache__/__init__.cpython-310.pyc | Bin 350 -> 0 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 2752 -> 0 bytes .../__pycache__/_dists.cpython-310.pyc | Bin 9058 -> 0 bytes .../__pycache__/_envs.cpython-310.pyc | Bin 7750 -> 0 bytes .../_internal/metadata/importlib/_compat.py | 55 - .../_internal/metadata/importlib/_dists.py | 227 - .../pip/_internal/metadata/importlib/_envs.py | 189 - .../pip/_internal/metadata/pkg_resources.py | 278 - .../pip/_internal/models/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 263 -> 0 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 1441 -> 0 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 7712 -> 0 bytes .../format_control.cpython-310.pyc | Bin 2734 -> 0 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 1232 -> 0 bytes .../installation_report.cpython-310.pyc | Bin 1753 -> 0 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 18087 -> 0 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 1031 -> 0 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 3550 -> 0 bytes .../selection_prefs.cpython-310.pyc | Bin 1693 -> 0 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 3814 -> 0 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 4467 -> 0 bytes .../pip/_internal/models/candidate.py | 30 - .../pip/_internal/models/direct_url.py | 235 - .../pip/_internal/models/format_control.py | 78 - .../pip/_internal/models/index.py | 28 - .../_internal/models/installation_report.py | 56 - .../pip/_internal/models/link.py | 579 - .../pip/_internal/models/scheme.py | 31 - .../pip/_internal/models/search_scope.py | 132 - .../pip/_internal/models/selection_prefs.py | 51 - .../pip/_internal/models/target_python.py | 122 - .../pip/_internal/models/wheel.py | 92 - .../pip/_internal/network/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 251 -> 0 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 14434 -> 0 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 4589 -> 0 bytes .../__pycache__/download.cpython-310.pyc | Bin 5527 -> 0 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 8419 -> 0 bytes .../__pycache__/session.cpython-310.pyc | Bin 12530 -> 0 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 1454 -> 0 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 2107 -> 0 bytes .../pip/_internal/network/auth.py | 561 - .../pip/_internal/network/cache.py | 106 - .../pip/_internal/network/download.py | 186 - .../pip/_internal/network/lazy_wheel.py | 210 - .../pip/_internal/network/session.py | 520 - .../pip/_internal/network/utils.py | 96 - .../pip/_internal/network/xmlrpc.py | 62 - .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 199 -> 0 bytes .../__pycache__/check.cpython-310.pyc | Bin 5203 -> 0 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 6220 -> 0 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 15657 -> 0 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 205 -> 0 bytes .../__pycache__/build_tracker.cpython-310.pyc | Bin 5055 -> 0 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 1438 -> 0 bytes .../metadata_editable.cpython-310.pyc | Bin 1472 -> 0 bytes .../metadata_legacy.cpython-310.pyc | Bin 2377 -> 0 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 1228 -> 0 bytes .../wheel_editable.cpython-310.pyc | Bin 1452 -> 0 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 2762 -> 0 bytes .../operations/build/build_tracker.py | 139 - .../_internal/operations/build/metadata.py | 39 - .../operations/build/metadata_editable.py | 41 - .../operations/build/metadata_legacy.py | 74 - .../pip/_internal/operations/build/wheel.py | 37 - .../operations/build/wheel_editable.py | 46 - .../operations/build/wheel_legacy.py | 102 - .../pip/_internal/operations/check.py | 187 - .../pip/_internal/operations/freeze.py | 255 - .../_internal/operations/install/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 263 -> 0 bytes .../editable_legacy.cpython-310.pyc | Bin 1492 -> 0 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 21313 -> 0 bytes .../operations/install/editable_legacy.py | 46 - .../pip/_internal/operations/install/wheel.py | 734 - .../pip/_internal/operations/prepare.py | 730 - .../site-packages/pip/_internal/pyproject.py | 179 - .../pip/_internal/req/__init__.py | 92 - .../req/__pycache__/__init__.cpython-310.pyc | Bin 2568 -> 0 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 14162 -> 0 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 14000 -> 0 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 24519 -> 0 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 5221 -> 0 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 19237 -> 0 bytes .../pip/_internal/req/constructors.py | 576 - .../pip/_internal/req/req_file.py | 554 - .../pip/_internal/req/req_install.py | 923 - .../pip/_internal/req/req_set.py | 119 - .../pip/_internal/req/req_uninstall.py | 649 - .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 199 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 1051 -> 0 bytes .../pip/_internal/resolution/base.py | 20 - .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 206 -> 0 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 14910 -> 0 bytes .../_internal/resolution/legacy/resolver.py | 598 - .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 210 -> 0 bytes .../__pycache__/base.cpython-310.pyc | Bin 6263 -> 0 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 20466 -> 0 bytes .../__pycache__/factory.cpython-310.pyc | Bin 21368 -> 0 bytes .../found_candidates.cpython-310.pyc | Bin 4870 -> 0 bytes .../__pycache__/provider.cpython-310.pyc | Bin 7938 -> 0 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 3707 -> 0 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 8222 -> 0 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 8755 -> 0 bytes .../_internal/resolution/resolvelib/base.py | 141 - .../resolution/resolvelib/candidates.py | 597 - .../resolution/resolvelib/factory.py | 812 - .../resolution/resolvelib/found_candidates.py | 155 - .../resolution/resolvelib/provider.py | 255 - .../resolution/resolvelib/reporter.py | 80 - .../resolution/resolvelib/requirements.py | 166 - .../resolution/resolvelib/resolver.py | 317 - .../pip/_internal/self_outdated_check.py | 248 - .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 194 -> 0 bytes .../__pycache__/_jaraco_text.cpython-310.pyc | Bin 3850 -> 0 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 1522 -> 0 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 1620 -> 0 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 1510 -> 0 bytes .../compatibility_tags.cpython-310.pyc | Bin 4079 -> 0 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 517 -> 0 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 3319 -> 0 bytes .../direct_url_helpers.cpython-310.pyc | Bin 2085 -> 0 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 2415 -> 0 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 1307 -> 0 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 2700 -> 0 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 4483 -> 0 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 944 -> 0 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 1715 -> 0 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 5483 -> 0 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 9679 -> 0 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 23280 -> 0 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 1990 -> 0 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 2082 -> 0 bytes .../setuptools_build.cpython-310.pyc | Bin 3818 -> 0 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 5772 -> 0 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 8325 -> 0 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 6668 -> 0 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 1595 -> 0 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 3290 -> 0 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 4402 -> 0 bytes .../pip/_internal/utils/_jaraco_text.py | 109 - .../site-packages/pip/_internal/utils/_log.py | 38 - .../pip/_internal/utils/appdirs.py | 52 - .../pip/_internal/utils/compat.py | 63 - .../pip/_internal/utils/compatibility_tags.py | 165 - .../pip/_internal/utils/datetime.py | 11 - .../pip/_internal/utils/deprecation.py | 120 - .../pip/_internal/utils/direct_url_helpers.py | 87 - .../pip/_internal/utils/egg_link.py | 80 - .../pip/_internal/utils/encoding.py | 36 - .../pip/_internal/utils/entrypoints.py | 84 - .../pip/_internal/utils/filesystem.py | 153 - .../pip/_internal/utils/filetypes.py | 27 - .../pip/_internal/utils/glibc.py | 88 - .../pip/_internal/utils/hashes.py | 151 - .../pip/_internal/utils/logging.py | 348 - .../site-packages/pip/_internal/utils/misc.py | 783 - .../pip/_internal/utils/models.py | 39 - .../pip/_internal/utils/packaging.py | 57 - .../pip/_internal/utils/setuptools_build.py | 146 - .../pip/_internal/utils/subprocess.py | 260 - .../pip/_internal/utils/temp_dir.py | 296 - .../pip/_internal/utils/unpacking.py | 257 - .../site-packages/pip/_internal/utils/urls.py | 62 - .../pip/_internal/utils/virtualenv.py | 104 - .../pip/_internal/utils/wheel.py | 134 - .../pip/_internal/vcs/__init__.py | 15 - .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 517 -> 0 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 3483 -> 0 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 12406 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 5077 -> 0 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 8455 -> 0 bytes .../versioncontrol.cpython-310.pyc | Bin 21127 -> 0 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 - .../site-packages/pip/_internal/vcs/git.py | 526 - .../pip/_internal/vcs/mercurial.py | 163 - .../pip/_internal/vcs/subversion.py | 324 - .../pip/_internal/vcs/versioncontrol.py | 705 - .../pip/_internal/wheel_builder.py | 354 - .../site-packages/pip/_vendor/__init__.py | 121 - .../__pycache__/__init__.cpython-310.pyc | Bin 3152 -> 0 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 27588 -> 0 bytes .../typing_extensions.cpython-310.pyc | Bin 89132 -> 0 bytes .../pip/_vendor/cachecontrol/__init__.py | 28 - .../__pycache__/__init__.cpython-310.pyc | Bin 765 -> 0 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 1834 -> 0 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 4417 -> 0 bytes .../__pycache__/cache.cpython-310.pyc | Bin 3278 -> 0 bytes .../__pycache__/controller.cpython-310.pyc | Bin 10136 -> 0 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 3218 -> 0 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 5393 -> 0 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 4107 -> 0 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 1469 -> 0 bytes .../pip/_vendor/cachecontrol/_cmd.py | 70 - .../pip/_vendor/cachecontrol/adapter.py | 161 - .../pip/_vendor/cachecontrol/cache.py | 74 - .../_vendor/cachecontrol/caches/__init__.py | 8 - .../__pycache__/__init__.cpython-310.pyc | Bin 428 -> 0 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 5584 -> 0 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 2043 -> 0 bytes .../_vendor/cachecontrol/caches/file_cache.py | 181 - .../cachecontrol/caches/redis_cache.py | 48 - .../pip/_vendor/cachecontrol/controller.py | 494 - .../pip/_vendor/cachecontrol/filewrapper.py | 119 - .../pip/_vendor/cachecontrol/heuristics.py | 154 - .../pip/_vendor/cachecontrol/py.typed | 0 .../pip/_vendor/cachecontrol/serialize.py | 206 - .../pip/_vendor/cachecontrol/wrapper.py | 43 - .../pip/_vendor/certifi/__init__.py | 4 - .../pip/_vendor/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-310.pyc | Bin 307 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 457 -> 0 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 1927 -> 0 bytes .../pip/_vendor/certifi/cacert.pem | 4635 --- .../site-packages/pip/_vendor/certifi/core.py | 108 - .../pip/_vendor/certifi/py.typed | 0 .../pip/_vendor/chardet/__init__.py | 115 - .../__pycache__/__init__.cpython-310.pyc | Bin 3175 -> 0 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 27181 -> 0 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 1159 -> 0 bytes .../chardistribution.cpython-310.pyc | Bin 6576 -> 0 bytes .../charsetgroupprober.cpython-310.pyc | Bin 2426 -> 0 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 3832 -> 0 bytes .../codingstatemachine.cpython-310.pyc | Bin 3069 -> 0 bytes .../codingstatemachinedict.cpython-310.pyc | Bin 698 -> 0 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 1166 -> 0 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 2659 -> 0 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 2817 -> 0 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 8520 -> 0 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 2605 -> 0 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 12065 -> 0 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 1167 -> 0 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 27185 -> 0 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 1167 -> 0 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 19109 -> 0 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 1175 -> 0 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 3422 -> 0 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 22137 -> 0 bytes .../__pycache__/johabfreq.cpython-310.pyc | Bin 138761 -> 0 bytes .../__pycache__/johabprober.cpython-310.pyc | Bin 1166 -> 0 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 37987 -> 0 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 47929 -> 0 bytes .../langgreekmodel.cpython-310.pyc | Bin 46119 -> 0 bytes .../langhebrewmodel.cpython-310.pyc | Bin 44566 -> 0 bytes .../langhungarianmodel.cpython-310.pyc | Bin 47889 -> 0 bytes .../langrussianmodel.cpython-310.pyc | Bin 61030 -> 0 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 44742 -> 0 bytes .../langturkishmodel.cpython-310.pyc | Bin 44583 -> 0 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 4565 -> 0 bytes .../macromanprober.cpython-310.pyc | Bin 4706 -> 0 bytes .../mbcharsetprober.cpython-310.pyc | Bin 2317 -> 0 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 1263 -> 0 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 20938 -> 0 bytes .../__pycache__/resultdict.cpython-310.pyc | Bin 578 -> 0 bytes .../sbcharsetprober.cpython-310.pyc | Bin 3684 -> 0 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 1742 -> 0 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 2643 -> 0 bytes .../universaldetector.cpython-310.pyc | Bin 7131 -> 0 bytes .../__pycache__/utf1632prober.cpython-310.pyc | Bin 6137 -> 0 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 2111 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 443 -> 0 bytes .../pip/_vendor/chardet/big5freq.py | 386 - .../pip/_vendor/chardet/big5prober.py | 47 - .../pip/_vendor/chardet/chardistribution.py | 261 - .../pip/_vendor/chardet/charsetgroupprober.py | 106 - .../pip/_vendor/chardet/charsetprober.py | 147 - .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-310.pyc | Bin 198 -> 0 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 3040 -> 0 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 - .../pip/_vendor/chardet/codingstatemachine.py | 90 - .../_vendor/chardet/codingstatemachinedict.py | 19 - .../pip/_vendor/chardet/cp949prober.py | 49 - .../pip/_vendor/chardet/enums.py | 85 - .../pip/_vendor/chardet/escprober.py | 102 - .../pip/_vendor/chardet/escsm.py | 261 - .../pip/_vendor/chardet/eucjpprober.py | 102 - .../pip/_vendor/chardet/euckrfreq.py | 196 - .../pip/_vendor/chardet/euckrprober.py | 47 - .../pip/_vendor/chardet/euctwfreq.py | 388 - .../pip/_vendor/chardet/euctwprober.py | 47 - .../pip/_vendor/chardet/gb2312freq.py | 284 - .../pip/_vendor/chardet/gb2312prober.py | 47 - .../pip/_vendor/chardet/hebrewprober.py | 316 - .../pip/_vendor/chardet/jisfreq.py | 325 - .../pip/_vendor/chardet/johabfreq.py | 2382 -- .../pip/_vendor/chardet/johabprober.py | 47 - .../pip/_vendor/chardet/jpcntx.py | 238 - .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 --- .../pip/_vendor/chardet/langgreekmodel.py | 4397 --- .../pip/_vendor/chardet/langhebrewmodel.py | 4380 --- .../pip/_vendor/chardet/langhungarianmodel.py | 4649 --- .../pip/_vendor/chardet/langrussianmodel.py | 5725 --- .../pip/_vendor/chardet/langthaimodel.py | 4380 --- .../pip/_vendor/chardet/langturkishmodel.py | 4380 --- .../pip/_vendor/chardet/latin1prober.py | 147 - .../pip/_vendor/chardet/macromanprober.py | 162 - .../pip/_vendor/chardet/mbcharsetprober.py | 95 - .../pip/_vendor/chardet/mbcsgroupprober.py | 57 - .../pip/_vendor/chardet/mbcssm.py | 661 - .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 0 bytes .../__pycache__/languages.cpython-310.pyc | Bin 8186 -> 0 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 - .../pip/_vendor/chardet/py.typed | 0 .../pip/_vendor/chardet/resultdict.py | 16 - .../pip/_vendor/chardet/sbcharsetprober.py | 162 - .../pip/_vendor/chardet/sbcsgroupprober.py | 88 - .../pip/_vendor/chardet/sjisprober.py | 105 - .../pip/_vendor/chardet/universaldetector.py | 362 - .../pip/_vendor/chardet/utf1632prober.py | 225 - .../pip/_vendor/chardet/utf8prober.py | 82 - .../pip/_vendor/chardet/version.py | 9 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-310.pyc | Bin 481 -> 0 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 3007 -> 0 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 8519 -> 0 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 2264 -> 0 bytes .../__pycache__/win32.cpython-310.pyc | Bin 4474 -> 0 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 5170 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 277 - .../pip/_vendor/colorama/initialise.py | 121 - .../pip/_vendor/colorama/tests/__init__.py | 1 - .../__pycache__/__init__.cpython-310.pyc | Bin 201 -> 0 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 2293 -> 0 bytes .../ansitowin32_test.cpython-310.pyc | Bin 11604 -> 0 bytes .../initialise_test.cpython-310.pyc | Bin 6901 -> 0 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 2692 -> 0 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 1601 -> 0 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 3194 -> 0 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 - .../colorama/tests/ansitowin32_test.py | 294 - .../_vendor/colorama/tests/initialise_test.py | 189 - .../pip/_vendor/colorama/tests/isatty_test.py | 57 - .../pip/_vendor/colorama/tests/utils.py | 49 - .../_vendor/colorama/tests/winterm_test.py | 131 - .../pip/_vendor/colorama/win32.py | 180 - .../pip/_vendor/colorama/winterm.py | 195 - .../pip/_vendor/distlib/__init__.py | 33 - .../__pycache__/__init__.cpython-310.pyc | Bin 1065 -> 0 bytes .../__pycache__/compat.cpython-310.pyc | Bin 31442 -> 0 bytes .../__pycache__/database.cpython-310.pyc | Bin 43179 -> 0 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 17302 -> 0 bytes .../__pycache__/locators.cpython-310.pyc | Bin 38329 -> 0 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 10230 -> 0 bytes .../__pycache__/markers.cpython-310.pyc | Bin 5320 -> 0 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 27033 -> 0 bytes .../__pycache__/resources.cpython-310.pyc | Bin 11039 -> 0 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 11529 -> 0 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 52147 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 20288 -> 0 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 27681 -> 0 bytes .../pip/_vendor/distlib/compat.py | 1138 - .../pip/_vendor/distlib/database.py | 1359 - .../pip/_vendor/distlib/index.py | 508 - .../pip/_vendor/distlib/locators.py | 1303 - .../pip/_vendor/distlib/manifest.py | 384 - .../pip/_vendor/distlib/markers.py | 167 - .../pip/_vendor/distlib/metadata.py | 1068 - .../pip/_vendor/distlib/resources.py | 358 - .../pip/_vendor/distlib/scripts.py | 452 - .../site-packages/pip/_vendor/distlib/t32.exe | Bin 97792 -> 0 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 182784 -> 0 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 108032 -> 0 bytes .../site-packages/pip/_vendor/distlib/util.py | 2025 -- .../pip/_vendor/distlib/version.py | 751 - .../site-packages/pip/_vendor/distlib/w32.exe | Bin 91648 -> 0 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 168448 -> 0 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 101888 -> 0 bytes .../pip/_vendor/distlib/wheel.py | 1099 - .../pip/_vendor/distro/__init__.py | 54 - .../pip/_vendor/distro/__main__.py | 4 - .../__pycache__/__init__.cpython-310.pyc | Bin 918 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 272 -> 0 bytes .../distro/__pycache__/distro.cpython-310.pyc | Bin 42068 -> 0 bytes .../pip/_vendor/distro/distro.py | 1399 - .../site-packages/pip/_vendor/distro/py.typed | 0 .../pip/_vendor/idna/__init__.py | 44 - .../idna/__pycache__/__init__.cpython-310.pyc | Bin 850 -> 0 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 2821 -> 0 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 750 -> 0 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 9707 -> 0 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 38386 -> 0 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 1987 -> 0 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 214 -> 0 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 152401 -> 0 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 - .../site-packages/pip/_vendor/idna/compat.py | 13 - .../site-packages/pip/_vendor/idna/core.py | 400 - .../pip/_vendor/idna/idnadata.py | 2151 -- .../pip/_vendor/idna/intranges.py | 54 - .../pip/_vendor/idna/package_data.py | 2 - .../site-packages/pip/_vendor/idna/py.typed | 0 .../pip/_vendor/idna/uts46data.py | 8600 ----- .../pip/_vendor/msgpack/__init__.py | 57 - .../__pycache__/__init__.cpython-310.pyc | Bin 1448 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 1811 -> 0 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 6318 -> 0 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 25481 -> 0 bytes .../pip/_vendor/msgpack/exceptions.py | 48 - .../site-packages/pip/_vendor/msgpack/ext.py | 193 - .../pip/_vendor/msgpack/fallback.py | 1010 - .../pip/_vendor/packaging/__about__.py | 26 - .../pip/_vendor/packaging/__init__.py | 25 - .../__pycache__/__about__.cpython-310.pyc | Bin 593 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 449 -> 0 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 7303 -> 0 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 4615 -> 0 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 2708 -> 0 bytes .../__pycache__/markers.cpython-310.pyc | Bin 9292 -> 0 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 3978 -> 0 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 21530 -> 0 bytes .../__pycache__/tags.cpython-310.pyc | Bin 12199 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 3578 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 12928 -> 0 bytes .../pip/_vendor/packaging/_manylinux.py | 301 - .../pip/_vendor/packaging/_musllinux.py | 136 - .../pip/_vendor/packaging/_structures.py | 61 - .../pip/_vendor/packaging/markers.py | 304 - .../pip/_vendor/packaging/py.typed | 0 .../pip/_vendor/packaging/requirements.py | 146 - .../pip/_vendor/packaging/specifiers.py | 802 - .../pip/_vendor/packaging/tags.py | 487 - .../pip/_vendor/packaging/utils.py | 136 - .../pip/_vendor/packaging/version.py | 504 - .../pip/_vendor/pkg_resources/__init__.py | 3361 -- .../__pycache__/__init__.cpython-310.pyc | Bin 101082 -> 0 bytes .../pip/_vendor/platformdirs/__init__.py | 566 - .../pip/_vendor/platformdirs/__main__.py | 53 - .../__pycache__/__init__.cpython-310.pyc | Bin 14372 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 1384 -> 0 bytes .../__pycache__/android.cpython-310.pyc | Bin 6622 -> 0 bytes .../__pycache__/api.cpython-310.pyc | Bin 7620 -> 0 bytes .../__pycache__/macos.cpython-310.pyc | Bin 4261 -> 0 bytes .../__pycache__/unix.cpython-310.pyc | Bin 8852 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 293 -> 0 bytes .../__pycache__/windows.cpython-310.pyc | Bin 8626 -> 0 bytes .../pip/_vendor/platformdirs/android.py | 210 - .../pip/_vendor/platformdirs/api.py | 223 - .../pip/_vendor/platformdirs/macos.py | 91 - .../pip/_vendor/platformdirs/py.typed | 0 .../pip/_vendor/platformdirs/unix.py | 223 - .../pip/_vendor/platformdirs/version.py | 4 - .../pip/_vendor/platformdirs/windows.py | 255 - .../pip/_vendor/pygments/__init__.py | 82 - .../pip/_vendor/pygments/__main__.py | 17 - .../__pycache__/__init__.cpython-310.pyc | Bin 2938 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 591 -> 0 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 15608 -> 0 bytes .../__pycache__/console.cpython-310.pyc | Bin 1886 -> 0 bytes .../__pycache__/filter.cpython-310.pyc | Bin 2657 -> 0 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 3959 -> 0 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 26236 -> 0 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 1195 -> 0 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 2523 -> 0 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 2959 -> 0 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 3561 -> 0 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 7124 -> 0 bytes .../__pycache__/style.cpython-310.pyc | Bin 4582 -> 0 bytes .../__pycache__/token.cpython-310.pyc | Bin 4674 -> 0 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 31235 -> 0 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 10207 -> 0 bytes .../pip/_vendor/pygments/cmdline.py | 668 - .../pip/_vendor/pygments/console.py | 70 - .../pip/_vendor/pygments/filter.py | 71 - .../pip/_vendor/pygments/filters/__init__.py | 940 - .../__pycache__/__init__.cpython-310.pyc | Bin 29615 -> 0 bytes .../pip/_vendor/pygments/formatter.py | 124 - .../_vendor/pygments/formatters/__init__.py | 158 - .../__pycache__/__init__.cpython-310.pyc | Bin 5011 -> 0 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 4003 -> 0 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 3088 -> 0 bytes .../__pycache__/groff.cpython-310.pyc | Bin 4413 -> 0 bytes .../__pycache__/html.cpython-310.pyc | Bin 29168 -> 0 bytes .../__pycache__/img.cpython-310.pyc | Bin 17565 -> 0 bytes .../__pycache__/irc.cpython-310.pyc | Bin 4101 -> 0 bytes .../__pycache__/latex.cpython-310.pyc | Bin 13801 -> 0 bytes .../__pycache__/other.cpython-310.pyc | Bin 4807 -> 0 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 2107 -> 0 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 4137 -> 0 bytes .../__pycache__/svg.cpython-310.pyc | Bin 6335 -> 0 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 4002 -> 0 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 9252 -> 0 bytes .../_vendor/pygments/formatters/_mapping.py | 23 - .../pip/_vendor/pygments/formatters/bbcode.py | 108 - .../pip/_vendor/pygments/formatters/groff.py | 170 - .../pip/_vendor/pygments/formatters/html.py | 989 - .../pip/_vendor/pygments/formatters/img.py | 645 - .../pip/_vendor/pygments/formatters/irc.py | 154 - .../pip/_vendor/pygments/formatters/latex.py | 521 - .../pip/_vendor/pygments/formatters/other.py | 161 - .../pygments/formatters/pangomarkup.py | 83 - .../pip/_vendor/pygments/formatters/rtf.py | 146 - .../pip/_vendor/pygments/formatters/svg.py | 188 - .../_vendor/pygments/formatters/terminal.py | 127 - .../pygments/formatters/terminal256.py | 338 - .../pip/_vendor/pygments/lexer.py | 943 - .../pip/_vendor/pygments/lexers/__init__.py | 362 - .../__pycache__/__init__.cpython-310.pyc | Bin 10005 -> 0 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 60950 -> 0 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 30007 -> 0 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 - .../pip/_vendor/pygments/lexers/python.py | 1198 - .../pip/_vendor/pygments/modeline.py | 43 - .../pip/_vendor/pygments/plugin.py | 88 - .../pip/_vendor/pygments/regexopt.py | 91 - .../pip/_vendor/pygments/scanner.py | 104 - .../pip/_vendor/pygments/sphinxext.py | 217 - .../pip/_vendor/pygments/style.py | 197 - .../pip/_vendor/pygments/styles/__init__.py | 103 - .../__pycache__/__init__.cpython-310.pyc | Bin 3596 -> 0 bytes .../pip/_vendor/pygments/token.py | 213 - .../pip/_vendor/pygments/unistring.py | 153 - .../pip/_vendor/pygments/util.py | 330 - .../pip/_vendor/pyparsing/__init__.py | 322 - .../__pycache__/__init__.cpython-310.pyc | Bin 7108 -> 0 bytes .../__pycache__/actions.cpython-310.pyc | Bin 7654 -> 0 bytes .../__pycache__/common.cpython-310.pyc | Bin 10182 -> 0 bytes .../__pycache__/core.cpython-310.pyc | Bin 188309 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 9614 -> 0 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 35672 -> 0 bytes .../__pycache__/results.cpython-310.pyc | Bin 25654 -> 0 bytes .../__pycache__/testing.cpython-310.pyc | Bin 12150 -> 0 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 10261 -> 0 bytes .../__pycache__/util.cpython-310.pyc | Bin 10055 -> 0 bytes .../pip/_vendor/pyparsing/actions.py | 217 - .../pip/_vendor/pyparsing/common.py | 432 - .../pip/_vendor/pyparsing/core.py | 6115 ---- .../pip/_vendor/pyparsing/diagram/__init__.py | 656 - .../__pycache__/__init__.cpython-310.pyc | Bin 16913 -> 0 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 - .../pip/_vendor/pyparsing/helpers.py | 1100 - .../pip/_vendor/pyparsing/py.typed | 0 .../pip/_vendor/pyparsing/results.py | 796 - .../pip/_vendor/pyparsing/testing.py | 331 - .../pip/_vendor/pyparsing/unicode.py | 361 - .../pip/_vendor/pyparsing/util.py | 284 - .../pip/_vendor/pyproject_hooks/__init__.py | 23 - .../__pycache__/__init__.cpython-310.pyc | Bin 589 -> 0 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 340 -> 0 bytes .../__pycache__/_impl.cpython-310.pyc | Bin 11392 -> 0 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 - .../pip/_vendor/pyproject_hooks/_impl.py | 330 - .../pyproject_hooks/_in_process/__init__.py | 18 - .../__pycache__/__init__.cpython-310.pyc | Bin 827 -> 0 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 9709 -> 0 bytes .../_in_process/_in_process.py | 353 - .../pip/_vendor/requests/__init__.py | 182 - .../__pycache__/__init__.cpython-310.pyc | Bin 4010 -> 0 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 553 -> 0 bytes .../_internal_utils.cpython-310.pyc | Bin 1629 -> 0 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 16215 -> 0 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 6729 -> 0 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 8125 -> 0 bytes .../__pycache__/certs.cpython-310.pyc | Bin 812 -> 0 bytes .../__pycache__/compat.cpython-310.pyc | Bin 1374 -> 0 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 18700 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 5744 -> 0 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 2870 -> 0 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 997 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 24271 -> 0 bytes .../__pycache__/packages.cpython-310.pyc | Bin 511 -> 0 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 19609 -> 0 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 4676 -> 0 bytes .../__pycache__/structures.cpython-310.pyc | Bin 4441 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 24450 -> 0 bytes .../pip/_vendor/requests/__version__.py | 14 - .../pip/_vendor/requests/_internal_utils.py | 50 - .../pip/_vendor/requests/adapters.py | 538 - .../site-packages/pip/_vendor/requests/api.py | 157 - .../pip/_vendor/requests/auth.py | 315 - .../pip/_vendor/requests/certs.py | 24 - .../pip/_vendor/requests/compat.py | 67 - .../pip/_vendor/requests/cookies.py | 561 - .../pip/_vendor/requests/exceptions.py | 141 - .../pip/_vendor/requests/help.py | 131 - .../pip/_vendor/requests/hooks.py | 33 - .../pip/_vendor/requests/models.py | 1034 - .../pip/_vendor/requests/packages.py | 16 - .../pip/_vendor/requests/sessions.py | 833 - .../pip/_vendor/requests/status_codes.py | 128 - .../pip/_vendor/requests/structures.py | 99 - .../pip/_vendor/requests/utils.py | 1094 - .../pip/_vendor/resolvelib/__init__.py | 26 - .../__pycache__/__init__.cpython-310.pyc | Bin 609 -> 0 bytes .../__pycache__/providers.cpython-310.pyc | Bin 6659 -> 0 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 2612 -> 0 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 17446 -> 0 bytes .../__pycache__/structs.cpython-310.pyc | Bin 7268 -> 0 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 204 -> 0 bytes .../collections_abc.cpython-310.pyc | Bin 380 -> 0 bytes .../resolvelib/compat/collections_abc.py | 6 - .../pip/_vendor/resolvelib/providers.py | 133 - .../pip/_vendor/resolvelib/py.typed | 0 .../pip/_vendor/resolvelib/reporters.py | 43 - .../pip/_vendor/resolvelib/resolvers.py | 547 - .../pip/_vendor/resolvelib/structs.py | 170 - .../pip/_vendor/rich/__init__.py | 177 - .../pip/_vendor/rich/__main__.py | 274 - .../rich/__pycache__/__init__.cpython-310.pyc | Bin 6116 -> 0 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 7186 -> 0 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 7817 -> 0 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 360057 -> 0 bytes .../_emoji_replace.cpython-310.pyc | Bin 1197 -> 0 bytes .../_export_format.cpython-310.pyc | Bin 2300 -> 0 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 498 -> 0 bytes .../rich/__pycache__/_fileno.cpython-310.pyc | Bin 791 -> 0 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 8675 -> 0 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 2643 -> 0 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 1295 -> 0 bytes .../__pycache__/_null_file.cpython-310.pyc | Bin 3242 -> 0 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 5100 -> 0 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 643 -> 0 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 5162 -> 0 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 12274 -> 0 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 841 -> 0 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 690 -> 0 bytes .../_win32_console.cpython-310.pyc | Bin 19010 -> 0 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 1792 -> 0 bytes .../_windows_renderer.cpython-310.pyc | Bin 2046 -> 0 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 1554 -> 0 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 1317 -> 0 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 7945 -> 0 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 5985 -> 0 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 2986 -> 0 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 8406 -> 0 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 4156 -> 0 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 17723 -> 0 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 1440 -> 0 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 6200 -> 0 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 82815 -> 0 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 1757 -> 0 bytes .../__pycache__/containers.cpython-310.pyc | Bin 6489 -> 0 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 8162 -> 0 bytes .../default_styles.cpython-310.pyc | Bin 6246 -> 0 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 1224 -> 0 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 3270 -> 0 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 1530 -> 0 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 2403 -> 0 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 2620 -> 0 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 8062 -> 0 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 4734 -> 0 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 4002 -> 0 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 14650 -> 0 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 11680 -> 0 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 3405 -> 0 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 9913 -> 0 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 5944 -> 0 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 5079 -> 0 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 4485 -> 0 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 1479 -> 0 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 3711 -> 0 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 7431 -> 0 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 27524 -> 0 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 54021 -> 0 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 6914 -> 0 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 11304 -> 0 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 1355 -> 0 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 530 -> 0 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 4099 -> 0 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 3946 -> 0 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 2992 -> 0 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 1882 -> 0 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 20786 -> 0 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 4403 -> 0 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 4596 -> 0 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 21333 -> 0 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 1766 -> 0 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 25755 -> 0 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 29953 -> 0 bytes .../terminal_theme.cpython-310.pyc | Bin 3019 -> 0 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 40119 -> 0 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 4841 -> 0 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 296 -> 0 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 21714 -> 0 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 7337 -> 0 bytes .../pip/_vendor/rich/_cell_widths.py | 451 - .../pip/_vendor/rich/_emoji_codes.py | 3610 -- .../pip/_vendor/rich/_emoji_replace.py | 32 - .../pip/_vendor/rich/_export_format.py | 76 - .../pip/_vendor/rich/_extension.py | 10 - .../site-packages/pip/_vendor/rich/_fileno.py | 24 - .../pip/_vendor/rich/_inspect.py | 270 - .../pip/_vendor/rich/_log_render.py | 94 - .../site-packages/pip/_vendor/rich/_loop.py | 43 - .../pip/_vendor/rich/_null_file.py | 69 - .../pip/_vendor/rich/_palettes.py | 309 - .../site-packages/pip/_vendor/rich/_pick.py | 17 - .../site-packages/pip/_vendor/rich/_ratio.py | 160 - .../pip/_vendor/rich/_spinners.py | 482 - .../site-packages/pip/_vendor/rich/_stack.py | 16 - .../site-packages/pip/_vendor/rich/_timer.py | 19 - .../pip/_vendor/rich/_win32_console.py | 662 - .../pip/_vendor/rich/_windows.py | 72 - .../pip/_vendor/rich/_windows_renderer.py | 56 - .../site-packages/pip/_vendor/rich/_wrap.py | 56 - .../site-packages/pip/_vendor/rich/abc.py | 33 - .../site-packages/pip/_vendor/rich/align.py | 311 - .../site-packages/pip/_vendor/rich/ansi.py | 240 - .../site-packages/pip/_vendor/rich/bar.py | 94 - .../site-packages/pip/_vendor/rich/box.py | 517 - .../site-packages/pip/_vendor/rich/cells.py | 154 - .../site-packages/pip/_vendor/rich/color.py | 622 - .../pip/_vendor/rich/color_triplet.py | 38 - .../site-packages/pip/_vendor/rich/columns.py | 187 - .../site-packages/pip/_vendor/rich/console.py | 2633 -- .../pip/_vendor/rich/constrain.py | 37 - .../pip/_vendor/rich/containers.py | 167 - .../site-packages/pip/_vendor/rich/control.py | 225 - .../pip/_vendor/rich/default_styles.py | 190 - .../pip/_vendor/rich/diagnose.py | 37 - .../site-packages/pip/_vendor/rich/emoji.py | 96 - .../site-packages/pip/_vendor/rich/errors.py | 34 - .../pip/_vendor/rich/file_proxy.py | 57 - .../pip/_vendor/rich/filesize.py | 89 - .../pip/_vendor/rich/highlighter.py | 232 - .../site-packages/pip/_vendor/rich/json.py | 140 - .../site-packages/pip/_vendor/rich/jupyter.py | 101 - .../site-packages/pip/_vendor/rich/layout.py | 443 - .../site-packages/pip/_vendor/rich/live.py | 375 - .../pip/_vendor/rich/live_render.py | 113 - .../site-packages/pip/_vendor/rich/logging.py | 289 - .../site-packages/pip/_vendor/rich/markup.py | 246 - .../site-packages/pip/_vendor/rich/measure.py | 151 - .../site-packages/pip/_vendor/rich/padding.py | 141 - .../site-packages/pip/_vendor/rich/pager.py | 34 - .../site-packages/pip/_vendor/rich/palette.py | 100 - .../site-packages/pip/_vendor/rich/panel.py | 308 - .../site-packages/pip/_vendor/rich/pretty.py | 994 - .../pip/_vendor/rich/progress.py | 1702 - .../pip/_vendor/rich/progress_bar.py | 224 - .../site-packages/pip/_vendor/rich/prompt.py | 376 - .../pip/_vendor/rich/protocol.py | 42 - .../site-packages/pip/_vendor/rich/py.typed | 0 .../site-packages/pip/_vendor/rich/region.py | 10 - .../site-packages/pip/_vendor/rich/repr.py | 149 - .../site-packages/pip/_vendor/rich/rule.py | 130 - .../site-packages/pip/_vendor/rich/scope.py | 86 - .../site-packages/pip/_vendor/rich/screen.py | 54 - .../site-packages/pip/_vendor/rich/segment.py | 739 - .../site-packages/pip/_vendor/rich/spinner.py | 137 - .../site-packages/pip/_vendor/rich/status.py | 132 - .../site-packages/pip/_vendor/rich/style.py | 796 - .../site-packages/pip/_vendor/rich/styled.py | 42 - .../site-packages/pip/_vendor/rich/syntax.py | 948 - .../site-packages/pip/_vendor/rich/table.py | 1002 - .../pip/_vendor/rich/terminal_theme.py | 153 - .../site-packages/pip/_vendor/rich/text.py | 1307 - .../site-packages/pip/_vendor/rich/theme.py | 115 - .../site-packages/pip/_vendor/rich/themes.py | 5 - .../pip/_vendor/rich/traceback.py | 756 - .../site-packages/pip/_vendor/rich/tree.py | 251 - .../site-packages/pip/_vendor/six.py | 998 - .../pip/_vendor/tenacity/__init__.py | 608 - .../__pycache__/__init__.cpython-310.pyc | Bin 17261 -> 0 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 2875 -> 0 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 1508 -> 0 bytes .../__pycache__/after.cpython-310.pyc | Bin 1282 -> 0 bytes .../__pycache__/before.cpython-310.pyc | Bin 1160 -> 0 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 1590 -> 0 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 1202 -> 0 bytes .../__pycache__/retry.cpython-310.pyc | Bin 9774 -> 0 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 4328 -> 0 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 1767 -> 0 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 9289 -> 0 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 - .../pip/_vendor/tenacity/_utils.py | 76 - .../pip/_vendor/tenacity/after.py | 51 - .../pip/_vendor/tenacity/before.py | 46 - .../pip/_vendor/tenacity/before_sleep.py | 71 - .../site-packages/pip/_vendor/tenacity/nap.py | 43 - .../pip/_vendor/tenacity/py.typed | 0 .../pip/_vendor/tenacity/retry.py | 272 - .../pip/_vendor/tenacity/stop.py | 103 - .../pip/_vendor/tenacity/tornadoweb.py | 59 - .../pip/_vendor/tenacity/wait.py | 228 - .../pip/_vendor/tomli/__init__.py | 11 - .../__pycache__/__init__.cpython-310.pyc | Bin 358 -> 0 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 17072 -> 0 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 2904 -> 0 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 328 -> 0 bytes .../pip/_vendor/tomli/_parser.py | 691 - .../site-packages/pip/_vendor/tomli/_re.py | 107 - .../site-packages/pip/_vendor/tomli/_types.py | 10 - .../site-packages/pip/_vendor/tomli/py.typed | 1 - .../pip/_vendor/truststore/__init__.py | 13 - .../__pycache__/__init__.cpython-310.pyc | Bin 555 -> 0 bytes .../__pycache__/_api.cpython-310.pyc | Bin 9744 -> 0 bytes .../__pycache__/_macos.cpython-310.pyc | Bin 8658 -> 0 bytes .../__pycache__/_openssl.cpython-310.pyc | Bin 1485 -> 0 bytes .../_ssl_constants.cpython-310.pyc | Bin 799 -> 0 bytes .../__pycache__/_windows.cpython-310.pyc | Bin 10424 -> 0 bytes .../pip/_vendor/truststore/_api.py | 302 - .../pip/_vendor/truststore/_macos.py | 501 - .../pip/_vendor/truststore/_openssl.py | 66 - .../pip/_vendor/truststore/_ssl_constants.py | 31 - .../pip/_vendor/truststore/_windows.py | 554 - .../pip/_vendor/truststore/py.typed | 0 .../pip/_vendor/typing_extensions.py | 3072 -- .../pip/_vendor/urllib3/__init__.py | 102 - .../__pycache__/__init__.cpython-310.pyc | Bin 2512 -> 0 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 10866 -> 0 bytes .../__pycache__/_version.cpython-310.pyc | Bin 217 -> 0 bytes .../__pycache__/connection.cpython-310.pyc | Bin 13712 -> 0 bytes .../connectionpool.cpython-310.pyc | Bin 25788 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 10997 -> 0 bytes .../__pycache__/fields.cpython-310.pyc | Bin 8188 -> 0 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 2753 -> 0 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 15067 -> 0 bytes .../__pycache__/request.cpython-310.pyc | Bin 6385 -> 0 bytes .../__pycache__/response.cpython-310.pyc | Bin 22519 -> 0 bytes .../pip/_vendor/urllib3/_collections.py | 337 - .../pip/_vendor/urllib3/_version.py | 2 - .../pip/_vendor/urllib3/connection.py | 572 - .../pip/_vendor/urllib3/connectionpool.py | 1132 - .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 202 -> 0 bytes .../_appengine_environ.cpython-310.pyc | Bin 1382 -> 0 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 8199 -> 0 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 3626 -> 0 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 15814 -> 0 bytes .../securetransport.cpython-310.pyc | Bin 21944 -> 0 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 5604 -> 0 bytes .../urllib3/contrib/_appengine_environ.py | 36 - .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 219 -> 0 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 10715 -> 0 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 9102 -> 0 bytes .../contrib/_securetransport/bindings.py | 519 - .../contrib/_securetransport/low_level.py | 397 - .../pip/_vendor/urllib3/contrib/appengine.py | 314 - .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 - .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 - .../urllib3/contrib/securetransport.py | 921 - .../pip/_vendor/urllib3/contrib/socks.py | 216 - .../pip/_vendor/urllib3/exceptions.py | 323 - .../pip/_vendor/urllib3/fields.py | 274 - .../pip/_vendor/urllib3/filepost.py | 98 - .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 0 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 27663 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 213 -> 0 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 1313 -> 0 bytes .../weakref_finalize.cpython-310.pyc | Bin 4911 -> 0 bytes .../urllib3/packages/backports/makefile.py | 51 - .../packages/backports/weakref_finalize.py | 155 - .../pip/_vendor/urllib3/packages/six.py | 1076 - .../pip/_vendor/urllib3/poolmanager.py | 537 - .../pip/_vendor/urllib3/request.py | 191 - .../pip/_vendor/urllib3/response.py | 879 - .../pip/_vendor/urllib3/util/__init__.py | 49 - .../util/__pycache__/__init__.cpython-310.pyc | Bin 1112 -> 0 bytes .../__pycache__/connection.cpython-310.pyc | Bin 3440 -> 0 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 1347 -> 0 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 1067 -> 0 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 3374 -> 0 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 2360 -> 0 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 16160 -> 0 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 11314 -> 0 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 3264 -> 0 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 7402 -> 0 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 9147 -> 0 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 10722 -> 0 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 3096 -> 0 bytes .../pip/_vendor/urllib3/util/connection.py | 149 - .../pip/_vendor/urllib3/util/proxy.py | 57 - .../pip/_vendor/urllib3/util/queue.py | 22 - .../pip/_vendor/urllib3/util/request.py | 137 - .../pip/_vendor/urllib3/util/response.py | 107 - .../pip/_vendor/urllib3/util/retry.py | 620 - .../pip/_vendor/urllib3/util/ssl_.py | 495 - .../urllib3/util/ssl_match_hostname.py | 159 - .../pip/_vendor/urllib3/util/ssltransport.py | 221 - .../pip/_vendor/urllib3/util/timeout.py | 271 - .../pip/_vendor/urllib3/util/url.py | 435 - .../pip/_vendor/urllib3/util/wait.py | 152 - .../site-packages/pip/_vendor/vendor.txt | 24 - .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-310.pyc | Bin 9749 -> 0 bytes .../__pycache__/labels.cpython-310.pyc | Bin 5239 -> 0 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 1944 -> 0 bytes .../__pycache__/tests.cpython-310.pyc | Bin 5046 -> 0 bytes .../x_user_defined.cpython-310.pyc | Bin 2595 -> 0 bytes .../pip/_vendor/webencodings/labels.py | 231 - .../pip/_vendor/webencodings/mklabels.py | 59 - .../pip/_vendor/webencodings/tests.py | 153 - .../_vendor/webencodings/x_user_defined.py | 325 - .../lib/python3.10/site-packages/pip/py.typed | 4 - .../site-packages/pkg_resources/__init__.py | 3367 -- .../__pycache__/__init__.cpython-310.pyc | Bin 102379 -> 0 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 196 -> 0 bytes .../_vendor/__pycache__/zipp.cpython-310.pyc | Bin 10239 -> 0 bytes .../_vendor/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 206 -> 0 bytes .../__pycache__/tarfile.cpython-310.pyc | Bin 70865 -> 0 bytes .../_vendor/backports/tarfile.py | 2900 -- .../_vendor/importlib_resources/__init__.py | 36 - .../__pycache__/__init__.cpython-310.pyc | Bin 651 -> 0 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 7359 -> 0 bytes .../__pycache__/_common.cpython-310.pyc | Bin 5660 -> 0 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 3655 -> 0 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 896 -> 0 bytes .../__pycache__/_legacy.cpython-310.pyc | Bin 4242 -> 0 bytes .../__pycache__/abc.cpython-310.pyc | Bin 6841 -> 0 bytes .../__pycache__/readers.cpython-310.pyc | Bin 5490 -> 0 bytes .../__pycache__/simple.cpython-310.pyc | Bin 4500 -> 0 bytes .../_vendor/importlib_resources/_adapters.py | 170 - .../_vendor/importlib_resources/_common.py | 207 - .../_vendor/importlib_resources/_compat.py | 108 - .../_vendor/importlib_resources/_itertools.py | 35 - .../_vendor/importlib_resources/_legacy.py | 120 - .../_vendor/importlib_resources/abc.py | 170 - .../_vendor/importlib_resources/py.typed | 0 .../_vendor/importlib_resources/readers.py | 120 - .../_vendor/importlib_resources/simple.py | 106 - .../pkg_resources/_vendor/jaraco/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 0 bytes .../__pycache__/context.cpython-310.pyc | Bin 11133 -> 0 bytes .../pkg_resources/_vendor/jaraco/context.py | 361 - .../_vendor/jaraco/functools/__init__.py | 633 - .../_vendor/jaraco/functools/__init__.pyi | 128 - .../__pycache__/__init__.cpython-310.pyc | Bin 19358 -> 0 bytes .../_vendor/jaraco/functools/py.typed | 0 .../_vendor/jaraco/text/__init__.py | 599 - .../text/__pycache__/__init__.cpython-310.pyc | Bin 19672 -> 0 bytes .../_vendor/more_itertools/__init__.py | 6 - .../_vendor/more_itertools/__init__.pyi | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 353 -> 0 bytes .../__pycache__/more.cpython-310.pyc | Bin 133367 -> 0 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 28382 -> 0 bytes .../_vendor/more_itertools/more.py | 4655 --- .../_vendor/more_itertools/more.pyi | 695 - .../_vendor/more_itertools/py.typed | 0 .../_vendor/more_itertools/recipes.py | 1012 - .../_vendor/more_itertools/recipes.pyi | 128 - .../_vendor/packaging/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 536 -> 0 bytes .../__pycache__/_elffile.cpython-310.pyc | Bin 3328 -> 0 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 6439 -> 0 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 3358 -> 0 bytes .../__pycache__/_parser.cpython-310.pyc | Bin 8980 -> 0 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 2718 -> 0 bytes .../__pycache__/_tokenizer.cpython-310.pyc | Bin 5840 -> 0 bytes .../__pycache__/markers.cpython-310.pyc | Bin 6914 -> 0 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 17837 -> 0 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 2851 -> 0 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 31010 -> 0 bytes .../__pycache__/tags.cpython-310.pyc | Bin 13824 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 4536 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 14181 -> 0 bytes .../_vendor/packaging/_elffile.py | 108 - .../_vendor/packaging/_manylinux.py | 260 - .../_vendor/packaging/_musllinux.py | 83 - .../_vendor/packaging/_parser.py | 356 - .../_vendor/packaging/_structures.py | 61 - .../_vendor/packaging/_tokenizer.py | 192 - .../_vendor/packaging/markers.py | 252 - .../_vendor/packaging/metadata.py | 825 - .../pkg_resources/_vendor/packaging/py.typed | 0 .../_vendor/packaging/requirements.py | 90 - .../_vendor/packaging/specifiers.py | 1017 - .../pkg_resources/_vendor/packaging/tags.py | 571 - .../pkg_resources/_vendor/packaging/utils.py | 172 - .../_vendor/packaging/version.py | 563 - .../_vendor/platformdirs/__init__.py | 342 - .../_vendor/platformdirs/__main__.py | 46 - .../__pycache__/__init__.cpython-310.pyc | Bin 10491 -> 0 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 1237 -> 0 bytes .../__pycache__/android.cpython-310.pyc | Bin 4339 -> 0 bytes .../__pycache__/api.cpython-310.pyc | Bin 5215 -> 0 bytes .../__pycache__/macos.cpython-310.pyc | Bin 3203 -> 0 bytes .../__pycache__/unix.cpython-310.pyc | Bin 6905 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 303 -> 0 bytes .../__pycache__/windows.cpython-310.pyc | Bin 6523 -> 0 bytes .../_vendor/platformdirs/android.py | 120 - .../pkg_resources/_vendor/platformdirs/api.py | 156 - .../_vendor/platformdirs/macos.py | 64 - .../_vendor/platformdirs/py.typed | 0 .../_vendor/platformdirs/unix.py | 181 - .../_vendor/platformdirs/version.py | 4 - .../_vendor/platformdirs/windows.py | 184 - .../pkg_resources/_vendor/zipp.py | 329 - .../pkg_resources/extern/__init__.py | 89 - .../__pycache__/__init__.cpython-310.pyc | Bin 2960 -> 0 bytes .../pyasn1-0.6.0.dist-info/INSTALLER | 1 - .../pyasn1-0.6.0.dist-info/LICENSE.rst | 24 - .../pyasn1-0.6.0.dist-info/METADATA | 227 - .../pyasn1-0.6.0.dist-info/RECORD | 73 - .../pyasn1-0.6.0.dist-info/WHEEL | 6 - .../pyasn1-0.6.0.dist-info/top_level.txt | 1 - .../pyasn1-0.6.0.dist-info/zip-safe | 1 - .../site-packages/pyasn1/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 202 -> 0 bytes .../pyasn1/__pycache__/debug.cpython-310.pyc | Bin 4209 -> 0 bytes .../pyasn1/__pycache__/error.cpython-310.pyc | Bin 4115 -> 0 bytes .../site-packages/pyasn1/codec/__init__.py | 1 - .../__pycache__/__init__.cpython-310.pyc | Bin 187 -> 0 bytes .../__pycache__/streaming.cpython-310.pyc | Bin 5959 -> 0 bytes .../pyasn1/codec/ber/__init__.py | 1 - .../ber/__pycache__/__init__.cpython-310.pyc | Bin 191 -> 0 bytes .../ber/__pycache__/decoder.cpython-310.pyc | Bin 42089 -> 0 bytes .../ber/__pycache__/encoder.cpython-310.pyc | Bin 16910 -> 0 bytes .../codec/ber/__pycache__/eoo.cpython-310.pyc | Bin 802 -> 0 bytes .../site-packages/pyasn1/codec/ber/decoder.py | 2192 -- .../site-packages/pyasn1/codec/ber/encoder.py | 952 - .../site-packages/pyasn1/codec/ber/eoo.py | 28 - .../pyasn1/codec/cer/__init__.py | 1 - .../cer/__pycache__/__init__.cpython-310.pyc | Bin 191 -> 0 bytes .../cer/__pycache__/decoder.cpython-310.pyc | Bin 2267 -> 0 bytes .../cer/__pycache__/encoder.cpython-310.pyc | Bin 6455 -> 0 bytes .../site-packages/pyasn1/codec/cer/decoder.py | 146 - .../site-packages/pyasn1/codec/cer/encoder.py | 327 - .../pyasn1/codec/der/__init__.py | 1 - .../der/__pycache__/__init__.cpython-310.pyc | Bin 191 -> 0 bytes .../der/__pycache__/decoder.cpython-310.pyc | Bin 1573 -> 0 bytes .../der/__pycache__/encoder.cpython-310.pyc | Bin 1870 -> 0 bytes .../site-packages/pyasn1/codec/der/decoder.py | 116 - .../site-packages/pyasn1/codec/der/encoder.py | 122 - .../pyasn1/codec/native/__init__.py | 1 - .../__pycache__/__init__.cpython-310.pyc | Bin 194 -> 0 bytes .../__pycache__/decoder.cpython-310.pyc | Bin 5367 -> 0 bytes .../__pycache__/encoder.cpython-310.pyc | Bin 7444 -> 0 bytes .../pyasn1/codec/native/decoder.py | 241 - .../pyasn1/codec/native/encoder.py | 280 - .../site-packages/pyasn1/codec/streaming.py | 244 - .../site-packages/pyasn1/compat/__init__.py | 4 - .../__pycache__/__init__.cpython-310.pyc | Bin 209 -> 0 bytes .../__pycache__/integer.cpython-310.pyc | Bin 2178 -> 0 bytes .../compat/__pycache__/octets.cpython-310.pyc | Bin 1898 -> 0 bytes .../site-packages/pyasn1/compat/integer.py | 103 - .../site-packages/pyasn1/compat/octets.py | 46 - .../python3.10/site-packages/pyasn1/debug.py | 147 - .../python3.10/site-packages/pyasn1/error.py | 116 - .../site-packages/pyasn1/type/__init__.py | 1 - .../type/__pycache__/__init__.cpython-310.pyc | Bin 186 -> 0 bytes .../type/__pycache__/base.cpython-310.pyc | Bin 22199 -> 0 bytes .../type/__pycache__/char.cpython-310.pyc | Bin 7033 -> 0 bytes .../__pycache__/constraint.cpython-310.pyc | Bin 23993 -> 0 bytes .../type/__pycache__/error.cpython-310.pyc | Bin 402 -> 0 bytes .../__pycache__/namedtype.cpython-310.pyc | Bin 18696 -> 0 bytes .../type/__pycache__/namedval.cpython-310.pyc | Bin 5494 -> 0 bytes .../type/__pycache__/opentype.cpython-310.pyc | Bin 3458 -> 0 bytes .../type/__pycache__/tag.cpython-310.pyc | Bin 10217 -> 0 bytes .../type/__pycache__/tagmap.cpython-310.pyc | Bin 3319 -> 0 bytes .../type/__pycache__/univ.cpython-310.pyc | Bin 97114 -> 0 bytes .../type/__pycache__/useful.cpython-310.pyc | Bin 4418 -> 0 bytes .../site-packages/pyasn1/type/base.py | 706 - .../site-packages/pyasn1/type/char.py | 335 - .../site-packages/pyasn1/type/constraint.py | 756 - .../site-packages/pyasn1/type/error.py | 11 - .../site-packages/pyasn1/type/namedtype.py | 561 - .../site-packages/pyasn1/type/namedval.py | 192 - .../site-packages/pyasn1/type/opentype.py | 104 - .../site-packages/pyasn1/type/tag.py | 335 - .../site-packages/pyasn1/type/tagmap.py | 96 - .../site-packages/pyasn1/type/univ.py | 3433 -- .../site-packages/pyasn1/type/useful.py | 189 - .../pyasn1_modules-0.4.0.dist-info/INSTALLER | 1 - .../LICENSE.txt | 24 - .../pyasn1_modules-0.4.0.dist-info/METADATA | 71 - .../pyasn1_modules-0.4.0.dist-info/RECORD | 271 - .../pyasn1_modules-0.4.0.dist-info/WHEEL | 5 - .../top_level.txt | 1 - .../pyasn1_modules-0.4.0.dist-info/zip-safe | 1 - .../site-packages/pyasn1_modules/__init__.py | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 210 -> 0 bytes .../__pycache__/pem.cpython-310.pyc | Bin 1894 -> 0 bytes .../__pycache__/rfc1155.cpython-310.pyc | Bin 2685 -> 0 bytes .../__pycache__/rfc1157.cpython-310.pyc | Bin 3861 -> 0 bytes .../__pycache__/rfc1901.cpython-310.pyc | Bin 682 -> 0 bytes .../__pycache__/rfc1902.cpython-310.pyc | Bin 3379 -> 0 bytes .../__pycache__/rfc1905.cpython-310.pyc | Bin 4238 -> 0 bytes .../__pycache__/rfc2251.cpython-310.pyc | Bin 15622 -> 0 bytes .../__pycache__/rfc2314.cpython-310.pyc | Bin 1619 -> 0 bytes .../__pycache__/rfc2315.cpython-310.pyc | Bin 9345 -> 0 bytes .../__pycache__/rfc2437.cpython-310.pyc | Bin 2234 -> 0 bytes .../__pycache__/rfc2459.cpython-310.pyc | Bin 38842 -> 0 bytes .../__pycache__/rfc2511.cpython-310.pyc | Bin 8879 -> 0 bytes .../__pycache__/rfc2560.cpython-310.pyc | Bin 7609 -> 0 bytes .../__pycache__/rfc2631.cpython-310.pyc | Bin 1124 -> 0 bytes .../__pycache__/rfc2634.cpython-310.pyc | Bin 6835 -> 0 bytes .../__pycache__/rfc2876.cpython-310.pyc | Bin 1097 -> 0 bytes .../__pycache__/rfc2985.cpython-310.pyc | Bin 8022 -> 0 bytes .../__pycache__/rfc2986.cpython-310.pyc | Bin 1410 -> 0 bytes .../__pycache__/rfc3058.cpython-310.pyc | Bin 815 -> 0 bytes .../__pycache__/rfc3114.cpython-310.pyc | Bin 1723 -> 0 bytes .../__pycache__/rfc3125.cpython-310.pyc | Bin 13805 -> 0 bytes .../__pycache__/rfc3161.cpython-310.pyc | Bin 3452 -> 0 bytes .../__pycache__/rfc3274.cpython-310.pyc | Bin 1123 -> 0 bytes .../__pycache__/rfc3279.cpython-310.pyc | Bin 6182 -> 0 bytes .../__pycache__/rfc3280.cpython-310.pyc | Bin 32599 -> 0 bytes .../__pycache__/rfc3281.cpython-310.pyc | Bin 7040 -> 0 bytes .../__pycache__/rfc3370.cpython-310.pyc | Bin 1940 -> 0 bytes .../__pycache__/rfc3412.cpython-310.pyc | Bin 1769 -> 0 bytes .../__pycache__/rfc3414.cpython-310.pyc | Bin 947 -> 0 bytes .../__pycache__/rfc3447.cpython-310.pyc | Bin 1446 -> 0 bytes .../__pycache__/rfc3537.cpython-310.pyc | Bin 569 -> 0 bytes .../__pycache__/rfc3560.cpython-310.pyc | Bin 1109 -> 0 bytes .../__pycache__/rfc3565.cpython-310.pyc | Bin 1131 -> 0 bytes .../__pycache__/rfc3657.cpython-310.pyc | Bin 1328 -> 0 bytes .../__pycache__/rfc3709.cpython-310.pyc | Bin 4375 -> 0 bytes .../__pycache__/rfc3739.cpython-310.pyc | Bin 4382 -> 0 bytes .../__pycache__/rfc3770.cpython-310.pyc | Bin 1120 -> 0 bytes .../__pycache__/rfc3779.cpython-310.pyc | Bin 2764 -> 0 bytes .../__pycache__/rfc3820.cpython-310.pyc | Bin 1427 -> 0 bytes .../__pycache__/rfc3852.cpython-310.pyc | Bin 15078 -> 0 bytes .../__pycache__/rfc4010.cpython-310.pyc | Bin 1152 -> 0 bytes .../__pycache__/rfc4043.cpython-310.pyc | Bin 881 -> 0 bytes .../__pycache__/rfc4055.cpython-310.pyc | Bin 4958 -> 0 bytes .../__pycache__/rfc4073.cpython-310.pyc | Bin 1166 -> 0 bytes .../__pycache__/rfc4108.cpython-310.pyc | Bin 7321 -> 0 bytes .../__pycache__/rfc4210.cpython-310.pyc | Bin 23409 -> 0 bytes .../__pycache__/rfc4211.cpython-310.pyc | Bin 8461 -> 0 bytes .../__pycache__/rfc4334.cpython-310.pyc | Bin 1211 -> 0 bytes .../__pycache__/rfc4357.cpython-310.pyc | Bin 9498 -> 0 bytes .../__pycache__/rfc4387.cpython-310.pyc | Bin 376 -> 0 bytes .../__pycache__/rfc4476.cpython-310.pyc | Bin 1864 -> 0 bytes .../__pycache__/rfc4490.cpython-310.pyc | Bin 2611 -> 0 bytes .../__pycache__/rfc4491.cpython-310.pyc | Bin 526 -> 0 bytes .../__pycache__/rfc4683.cpython-310.pyc | Bin 1469 -> 0 bytes .../__pycache__/rfc4985.cpython-310.pyc | Bin 810 -> 0 bytes .../__pycache__/rfc5035.cpython-310.pyc | Bin 2609 -> 0 bytes .../__pycache__/rfc5083.cpython-310.pyc | Bin 1284 -> 0 bytes .../__pycache__/rfc5084.cpython-310.pyc | Bin 1910 -> 0 bytes .../__pycache__/rfc5126.cpython-310.pyc | Bin 13388 -> 0 bytes .../__pycache__/rfc5208.cpython-310.pyc | Bin 1963 -> 0 bytes .../__pycache__/rfc5275.cpython-310.pyc | Bin 8304 -> 0 bytes .../__pycache__/rfc5280.cpython-310.pyc | Bin 34359 -> 0 bytes .../__pycache__/rfc5480.cpython-310.pyc | Bin 2805 -> 0 bytes .../__pycache__/rfc5636.cpython-310.pyc | Bin 2341 -> 0 bytes .../__pycache__/rfc5639.cpython-310.pyc | Bin 844 -> 0 bytes .../__pycache__/rfc5649.cpython-310.pyc | Bin 792 -> 0 bytes .../__pycache__/rfc5652.cpython-310.pyc | Bin 15579 -> 0 bytes .../__pycache__/rfc5697.cpython-310.pyc | Bin 1439 -> 0 bytes .../__pycache__/rfc5751.cpython-310.pyc | Bin 2218 -> 0 bytes .../__pycache__/rfc5752.cpython-310.pyc | Bin 1190 -> 0 bytes .../__pycache__/rfc5753.cpython-310.pyc | Bin 3175 -> 0 bytes .../__pycache__/rfc5755.cpython-310.pyc | Bin 9520 -> 0 bytes .../__pycache__/rfc5913.cpython-310.pyc | Bin 876 -> 0 bytes .../__pycache__/rfc5914.cpython-310.pyc | Bin 2850 -> 0 bytes .../__pycache__/rfc5915.cpython-310.pyc | Bin 948 -> 0 bytes .../__pycache__/rfc5916.cpython-310.pyc | Bin 543 -> 0 bytes .../__pycache__/rfc5917.cpython-310.pyc | Bin 1043 -> 0 bytes .../__pycache__/rfc5924.cpython-310.pyc | Bin 316 -> 0 bytes .../__pycache__/rfc5934.cpython-310.pyc | Bin 14541 -> 0 bytes .../__pycache__/rfc5940.cpython-310.pyc | Bin 997 -> 0 bytes .../__pycache__/rfc5958.cpython-310.pyc | Bin 2768 -> 0 bytes .../__pycache__/rfc5990.cpython-310.pyc | Bin 3923 -> 0 bytes .../__pycache__/rfc6010.cpython-310.pyc | Bin 1862 -> 0 bytes .../__pycache__/rfc6019.cpython-310.pyc | Bin 838 -> 0 bytes .../__pycache__/rfc6031.cpython-310.pyc | Bin 10455 -> 0 bytes .../__pycache__/rfc6032.cpython-310.pyc | Bin 1392 -> 0 bytes .../__pycache__/rfc6120.cpython-310.pyc | Bin 650 -> 0 bytes .../__pycache__/rfc6170.cpython-310.pyc | Bin 297 -> 0 bytes .../__pycache__/rfc6187.cpython-310.pyc | Bin 390 -> 0 bytes .../__pycache__/rfc6210.cpython-310.pyc | Bin 822 -> 0 bytes .../__pycache__/rfc6211.cpython-310.pyc | Bin 1413 -> 0 bytes .../__pycache__/rfc6402.cpython-310.pyc | Bin 11948 -> 0 bytes .../__pycache__/rfc6482.cpython-310.pyc | Bin 2026 -> 0 bytes .../__pycache__/rfc6486.cpython-310.pyc | Bin 1639 -> 0 bytes .../__pycache__/rfc6487.cpython-310.pyc | Bin 380 -> 0 bytes .../__pycache__/rfc6664.cpython-310.pyc | Bin 2818 -> 0 bytes .../__pycache__/rfc6955.cpython-310.pyc | Bin 1886 -> 0 bytes .../__pycache__/rfc6960.cpython-310.pyc | Bin 5965 -> 0 bytes .../__pycache__/rfc7030.cpython-310.pyc | Bin 1224 -> 0 bytes .../__pycache__/rfc7191.cpython-310.pyc | Bin 5909 -> 0 bytes .../__pycache__/rfc7229.cpython-310.pyc | Bin 636 -> 0 bytes .../__pycache__/rfc7292.cpython-310.pyc | Bin 5792 -> 0 bytes .../__pycache__/rfc7296.cpython-310.pyc | Bin 889 -> 0 bytes .../__pycache__/rfc7508.cpython-310.pyc | Bin 2411 -> 0 bytes .../__pycache__/rfc7585.cpython-310.pyc | Bin 864 -> 0 bytes .../__pycache__/rfc7633.cpython-310.pyc | Bin 668 -> 0 bytes .../__pycache__/rfc7773.cpython-310.pyc | Bin 1186 -> 0 bytes .../__pycache__/rfc7894.cpython-310.pyc | Bin 1688 -> 0 bytes .../__pycache__/rfc7906.cpython-310.pyc | Bin 12288 -> 0 bytes .../__pycache__/rfc7914.cpython-310.pyc | Bin 1091 -> 0 bytes .../__pycache__/rfc8017.cpython-310.pyc | Bin 3460 -> 0 bytes .../__pycache__/rfc8018.cpython-310.pyc | Bin 4121 -> 0 bytes .../__pycache__/rfc8103.cpython-310.pyc | Bin 863 -> 0 bytes .../__pycache__/rfc8209.cpython-310.pyc | Bin 320 -> 0 bytes .../__pycache__/rfc8226.cpython-310.pyc | Bin 3362 -> 0 bytes .../__pycache__/rfc8358.cpython-310.pyc | Bin 734 -> 0 bytes .../__pycache__/rfc8360.cpython-310.pyc | Bin 584 -> 0 bytes .../__pycache__/rfc8398.cpython-310.pyc | Bin 833 -> 0 bytes .../__pycache__/rfc8410.cpython-310.pyc | Bin 1031 -> 0 bytes .../__pycache__/rfc8418.cpython-310.pyc | Bin 1090 -> 0 bytes .../__pycache__/rfc8419.cpython-310.pyc | Bin 1010 -> 0 bytes .../__pycache__/rfc8479.cpython-310.pyc | Bin 857 -> 0 bytes .../__pycache__/rfc8494.cpython-310.pyc | Bin 1872 -> 0 bytes .../__pycache__/rfc8520.cpython-310.pyc | Bin 994 -> 0 bytes .../__pycache__/rfc8619.cpython-310.pyc | Bin 645 -> 0 bytes .../__pycache__/rfc8649.cpython-310.pyc | Bin 789 -> 0 bytes .../__pycache__/rfc8692.cpython-310.pyc | Bin 1060 -> 0 bytes .../__pycache__/rfc8696.cpython-310.pyc | Bin 2822 -> 0 bytes .../__pycache__/rfc8702.cpython-310.pyc | Bin 1721 -> 0 bytes .../__pycache__/rfc8708.cpython-310.pyc | Bin 707 -> 0 bytes .../__pycache__/rfc8769.cpython-310.pyc | Bin 358 -> 0 bytes .../site-packages/pyasn1_modules/pem.py | 58 - .../site-packages/pyasn1_modules/rfc1155.py | 96 - .../site-packages/pyasn1_modules/rfc1157.py | 126 - .../site-packages/pyasn1_modules/rfc1901.py | 22 - .../site-packages/pyasn1_modules/rfc1902.py | 129 - .../site-packages/pyasn1_modules/rfc1905.py | 135 - .../site-packages/pyasn1_modules/rfc2251.py | 563 - .../site-packages/pyasn1_modules/rfc2314.py | 48 - .../site-packages/pyasn1_modules/rfc2315.py | 294 - .../site-packages/pyasn1_modules/rfc2437.py | 69 - .../site-packages/pyasn1_modules/rfc2459.py | 1339 - .../site-packages/pyasn1_modules/rfc2511.py | 258 - .../site-packages/pyasn1_modules/rfc2560.py | 225 - .../site-packages/pyasn1_modules/rfc2631.py | 37 - .../site-packages/pyasn1_modules/rfc2634.py | 336 - .../site-packages/pyasn1_modules/rfc2876.py | 56 - .../site-packages/pyasn1_modules/rfc2985.py | 588 - .../site-packages/pyasn1_modules/rfc2986.py | 75 - .../site-packages/pyasn1_modules/rfc3058.py | 42 - .../site-packages/pyasn1_modules/rfc3114.py | 77 - .../site-packages/pyasn1_modules/rfc3125.py | 469 - .../site-packages/pyasn1_modules/rfc3161.py | 142 - .../site-packages/pyasn1_modules/rfc3274.py | 59 - .../site-packages/pyasn1_modules/rfc3279.py | 260 - .../site-packages/pyasn1_modules/rfc3280.py | 1543 - .../site-packages/pyasn1_modules/rfc3281.py | 331 - .../site-packages/pyasn1_modules/rfc3370.py | 146 - .../site-packages/pyasn1_modules/rfc3412.py | 53 - .../site-packages/pyasn1_modules/rfc3414.py | 28 - .../site-packages/pyasn1_modules/rfc3447.py | 45 - .../site-packages/pyasn1_modules/rfc3537.py | 34 - .../site-packages/pyasn1_modules/rfc3560.py | 74 - .../site-packages/pyasn1_modules/rfc3565.py | 57 - .../site-packages/pyasn1_modules/rfc3657.py | 66 - .../site-packages/pyasn1_modules/rfc3709.py | 207 - .../site-packages/pyasn1_modules/rfc3739.py | 203 - .../site-packages/pyasn1_modules/rfc3770.py | 75 - .../site-packages/pyasn1_modules/rfc3779.py | 137 - .../site-packages/pyasn1_modules/rfc3820.py | 65 - .../site-packages/pyasn1_modules/rfc3852.py | 706 - .../site-packages/pyasn1_modules/rfc4010.py | 58 - .../site-packages/pyasn1_modules/rfc4043.py | 43 - .../site-packages/pyasn1_modules/rfc4055.py | 258 - .../site-packages/pyasn1_modules/rfc4073.py | 59 - .../site-packages/pyasn1_modules/rfc4108.py | 350 - .../site-packages/pyasn1_modules/rfc4210.py | 803 - .../site-packages/pyasn1_modules/rfc4211.py | 396 - .../site-packages/pyasn1_modules/rfc4334.py | 75 - .../site-packages/pyasn1_modules/rfc4357.py | 477 - .../site-packages/pyasn1_modules/rfc4387.py | 23 - .../site-packages/pyasn1_modules/rfc4476.py | 93 - .../site-packages/pyasn1_modules/rfc4490.py | 113 - .../site-packages/pyasn1_modules/rfc4491.py | 44 - .../site-packages/pyasn1_modules/rfc4683.py | 72 - .../site-packages/pyasn1_modules/rfc4985.py | 49 - .../site-packages/pyasn1_modules/rfc5035.py | 199 - .../site-packages/pyasn1_modules/rfc5083.py | 52 - .../site-packages/pyasn1_modules/rfc5084.py | 97 - .../site-packages/pyasn1_modules/rfc5126.py | 577 - .../site-packages/pyasn1_modules/rfc5208.py | 56 - .../site-packages/pyasn1_modules/rfc5275.py | 404 - .../site-packages/pyasn1_modules/rfc5280.py | 1658 - .../site-packages/pyasn1_modules/rfc5480.py | 190 - .../site-packages/pyasn1_modules/rfc5636.py | 113 - .../site-packages/pyasn1_modules/rfc5639.py | 49 - .../site-packages/pyasn1_modules/rfc5649.py | 33 - .../site-packages/pyasn1_modules/rfc5652.py | 761 - .../site-packages/pyasn1_modules/rfc5697.py | 70 - .../site-packages/pyasn1_modules/rfc5751.py | 124 - .../site-packages/pyasn1_modules/rfc5752.py | 49 - .../site-packages/pyasn1_modules/rfc5753.py | 157 - .../site-packages/pyasn1_modules/rfc5755.py | 398 - .../site-packages/pyasn1_modules/rfc5913.py | 44 - .../site-packages/pyasn1_modules/rfc5914.py | 119 - .../site-packages/pyasn1_modules/rfc5915.py | 32 - .../site-packages/pyasn1_modules/rfc5916.py | 35 - .../site-packages/pyasn1_modules/rfc5917.py | 55 - .../site-packages/pyasn1_modules/rfc5924.py | 19 - .../site-packages/pyasn1_modules/rfc5934.py | 786 - .../site-packages/pyasn1_modules/rfc5940.py | 59 - .../site-packages/pyasn1_modules/rfc5958.py | 98 - .../site-packages/pyasn1_modules/rfc5990.py | 237 - .../site-packages/pyasn1_modules/rfc6010.py | 88 - .../site-packages/pyasn1_modules/rfc6019.py | 45 - .../site-packages/pyasn1_modules/rfc6031.py | 469 - .../site-packages/pyasn1_modules/rfc6032.py | 68 - .../site-packages/pyasn1_modules/rfc6120.py | 43 - .../site-packages/pyasn1_modules/rfc6170.py | 17 - .../site-packages/pyasn1_modules/rfc6187.py | 22 - .../site-packages/pyasn1_modules/rfc6210.py | 42 - .../site-packages/pyasn1_modules/rfc6211.py | 72 - .../site-packages/pyasn1_modules/rfc6402.py | 628 - .../site-packages/pyasn1_modules/rfc6482.py | 74 - .../site-packages/pyasn1_modules/rfc6486.py | 68 - .../site-packages/pyasn1_modules/rfc6487.py | 22 - .../site-packages/pyasn1_modules/rfc6664.py | 147 - .../site-packages/pyasn1_modules/rfc6955.py | 108 - .../site-packages/pyasn1_modules/rfc6960.py | 223 - .../site-packages/pyasn1_modules/rfc7030.py | 66 - .../site-packages/pyasn1_modules/rfc7191.py | 261 - .../site-packages/pyasn1_modules/rfc7229.py | 29 - .../site-packages/pyasn1_modules/rfc7292.py | 357 - .../site-packages/pyasn1_modules/rfc7296.py | 32 - .../site-packages/pyasn1_modules/rfc7508.py | 90 - .../site-packages/pyasn1_modules/rfc7585.py | 50 - .../site-packages/pyasn1_modules/rfc7633.py | 38 - .../site-packages/pyasn1_modules/rfc7773.py | 52 - .../site-packages/pyasn1_modules/rfc7894.py | 92 - .../site-packages/pyasn1_modules/rfc7906.py | 736 - .../site-packages/pyasn1_modules/rfc7914.py | 49 - .../site-packages/pyasn1_modules/rfc8017.py | 153 - .../site-packages/pyasn1_modules/rfc8018.py | 260 - .../site-packages/pyasn1_modules/rfc8103.py | 36 - .../site-packages/pyasn1_modules/rfc8209.py | 20 - .../site-packages/pyasn1_modules/rfc8226.py | 149 - .../site-packages/pyasn1_modules/rfc8358.py | 50 - .../site-packages/pyasn1_modules/rfc8360.py | 44 - .../site-packages/pyasn1_modules/rfc8398.py | 52 - .../site-packages/pyasn1_modules/rfc8410.py | 43 - .../site-packages/pyasn1_modules/rfc8418.py | 36 - .../site-packages/pyasn1_modules/rfc8419.py | 68 - .../site-packages/pyasn1_modules/rfc8479.py | 45 - .../site-packages/pyasn1_modules/rfc8494.py | 80 - .../site-packages/pyasn1_modules/rfc8520.py | 63 - .../site-packages/pyasn1_modules/rfc8619.py | 45 - .../site-packages/pyasn1_modules/rfc8649.py | 40 - .../site-packages/pyasn1_modules/rfc8692.py | 79 - .../site-packages/pyasn1_modules/rfc8696.py | 104 - .../site-packages/pyasn1_modules/rfc8702.py | 105 - .../site-packages/pyasn1_modules/rfc8708.py | 41 - .../site-packages/pyasn1_modules/rfc8769.py | 21 - .../INSTALLER | 1 - .../LICENSE | 54 - .../METADATA | 204 - .../RECORD | 44 - .../WHEEL | 6 - .../top_level.txt | 1 - .../zip-safe | 1 - .../requests-2.32.2.dist-info/INSTALLER | 1 - .../requests-2.32.2.dist-info/LICENSE | 175 - .../requests-2.32.2.dist-info/METADATA | 119 - .../requests-2.32.2.dist-info/RECORD | 42 - .../requests-2.32.2.dist-info/WHEEL | 5 - .../requests-2.32.2.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 184 - .../__pycache__/__init__.cpython-310.pyc | Bin 3927 -> 0 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 541 -> 0 bytes .../_internal_utils.cpython-310.pyc | Bin 1617 -> 0 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 18979 -> 0 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 6717 -> 0 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 8113 -> 0 bytes .../__pycache__/certs.cpython-310.pyc | Bin 618 -> 0 bytes .../__pycache__/compat.cpython-310.pyc | Bin 1769 -> 0 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 18718 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 6220 -> 0 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 2840 -> 0 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 985 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 24209 -> 0 bytes .../__pycache__/packages.cpython-310.pyc | Bin 622 -> 0 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 19727 -> 0 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 4735 -> 0 bytes .../__pycache__/structures.cpython-310.pyc | Bin 4429 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 24617 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 50 - .../site-packages/requests/adapters.py | 641 - .../python3.10/site-packages/requests/api.py | 157 - .../python3.10/site-packages/requests/auth.py | 314 - .../site-packages/requests/certs.py | 17 - .../site-packages/requests/compat.py | 94 - .../site-packages/requests/cookies.py | 561 - .../site-packages/requests/exceptions.py | 151 - .../python3.10/site-packages/requests/help.py | 134 - .../site-packages/requests/hooks.py | 33 - .../site-packages/requests/models.py | 1037 - .../site-packages/requests/packages.py | 23 - .../site-packages/requests/sessions.py | 831 - .../site-packages/requests/status_codes.py | 128 - .../site-packages/requests/structures.py | 99 - .../site-packages/requests/utils.py | 1096 - .../INSTALLER | 1 - .../requests_oauthlib-2.0.0.dist-info/LICENSE | 15 - .../METADATA | 270 - .../requests_oauthlib-2.0.0.dist-info/RECORD | 36 - .../requests_oauthlib-2.0.0.dist-info/WHEEL | 6 - .../top_level.txt | 1 - .../requests_oauthlib/__init__.py | 20 - .../__pycache__/__init__.cpython-310.pyc | Bin 717 -> 0 bytes .../__pycache__/oauth1_auth.cpython-310.pyc | Bin 2456 -> 0 bytes .../oauth1_session.cpython-310.pyc | Bin 16325 -> 0 bytes .../__pycache__/oauth2_auth.cpython-310.pyc | Bin 1846 -> 0 bytes .../oauth2_session.cpython-310.pyc | Bin 17411 -> 0 bytes .../compliance_fixes/__init__.py | 9 - .../__pycache__/__init__.cpython-310.pyc | Bin 647 -> 0 bytes .../__pycache__/douban.cpython-310.pyc | Bin 748 -> 0 bytes .../__pycache__/ebay.cpython-310.pyc | Bin 793 -> 0 bytes .../__pycache__/facebook.cpython-310.pyc | Bin 958 -> 0 bytes .../__pycache__/fitbit.cpython-310.pyc | Bin 1109 -> 0 bytes .../__pycache__/instagram.cpython-310.pyc | Bin 860 -> 0 bytes .../__pycache__/mailchimp.cpython-310.pyc | Bin 977 -> 0 bytes .../__pycache__/plentymarkets.cpython-310.pyc | Bin 1079 -> 0 bytes .../__pycache__/slack.cpython-310.pyc | Bin 934 -> 0 bytes .../__pycache__/weibo.cpython-310.pyc | Bin 744 -> 0 bytes .../compliance_fixes/douban.py | 15 - .../compliance_fixes/ebay.py | 22 - .../compliance_fixes/facebook.py | 27 - .../compliance_fixes/fitbit.py | 23 - .../compliance_fixes/instagram.py | 23 - .../compliance_fixes/mailchimp.py | 21 - .../compliance_fixes/plentymarkets.py | 27 - .../compliance_fixes/slack.py | 34 - .../compliance_fixes/weibo.py | 13 - .../requests_oauthlib/oauth1_auth.py | 112 - .../requests_oauthlib/oauth1_session.py | 395 - .../requests_oauthlib/oauth2_auth.py | 36 - .../requests_oauthlib/oauth2_session.py | 587 - .../site-packages/rsa-4.9.dist-info/INSTALLER | 1 - .../site-packages/rsa-4.9.dist-info/LICENSE | 13 - .../site-packages/rsa-4.9.dist-info/METADATA | 106 - .../site-packages/rsa-4.9.dist-info/RECORD | 41 - .../site-packages/rsa-4.9.dist-info/WHEEL | 4 - .../rsa-4.9.dist-info/entry_points.txt | 8 - .../python3.10/site-packages/rsa/__init__.py | 60 - .../rsa/__pycache__/__init__.cpython-310.pyc | Bin 1077 -> 0 bytes .../rsa/__pycache__/asn1.cpython-310.pyc | Bin 1440 -> 0 bytes .../rsa/__pycache__/cli.cpython-310.pyc | Bin 9124 -> 0 bytes .../rsa/__pycache__/common.cpython-310.pyc | Bin 4292 -> 0 bytes .../rsa/__pycache__/core.cpython-310.pyc | Bin 1314 -> 0 bytes .../rsa/__pycache__/key.cpython-310.pyc | Bin 25210 -> 0 bytes .../rsa/__pycache__/parallel.cpython-310.pyc | Bin 1924 -> 0 bytes .../rsa/__pycache__/pem.cpython-310.pyc | Bin 2880 -> 0 bytes .../rsa/__pycache__/pkcs1.cpython-310.pyc | Bin 12530 -> 0 bytes .../rsa/__pycache__/pkcs1_v2.cpython-310.pyc | Bin 2662 -> 0 bytes .../rsa/__pycache__/prime.cpython-310.pyc | Bin 3892 -> 0 bytes .../rsa/__pycache__/randnum.cpython-310.pyc | Bin 1782 -> 0 bytes .../rsa/__pycache__/transform.cpython-310.pyc | Bin 1869 -> 0 bytes .../rsa/__pycache__/util.cpython-310.pyc | Bin 2013 -> 0 bytes venv/lib/python3.10/site-packages/rsa/asn1.py | 52 - venv/lib/python3.10/site-packages/rsa/cli.py | 321 - .../python3.10/site-packages/rsa/common.py | 184 - venv/lib/python3.10/site-packages/rsa/core.py | 53 - venv/lib/python3.10/site-packages/rsa/key.py | 858 - .../python3.10/site-packages/rsa/parallel.py | 96 - venv/lib/python3.10/site-packages/rsa/pem.py | 134 - .../lib/python3.10/site-packages/rsa/pkcs1.py | 485 - .../python3.10/site-packages/rsa/pkcs1_v2.py | 100 - .../lib/python3.10/site-packages/rsa/prime.py | 198 - .../lib/python3.10/site-packages/rsa/py.typed | 1 - .../python3.10/site-packages/rsa/randnum.py | 95 - .../python3.10/site-packages/rsa/transform.py | 72 - venv/lib/python3.10/site-packages/rsa/util.py | 97 - .../setuptools-70.0.0.dist-info/INSTALLER | 1 - .../setuptools-70.0.0.dist-info/LICENSE | 17 - .../setuptools-70.0.0.dist-info/METADATA | 123 - .../setuptools-70.0.0.dist-info/RECORD | 495 - .../setuptools-70.0.0.dist-info/REQUESTED | 0 .../setuptools-70.0.0.dist-info/WHEEL | 5 - .../entry_points.txt | 56 - .../setuptools-70.0.0.dist-info/top_level.txt | 3 - .../site-packages/setuptools/__init__.py | 254 - .../__pycache__/__init__.cpython-310.pyc | Bin 9759 -> 0 bytes .../_core_metadata.cpython-310.pyc | Bin 7691 -> 0 bytes .../__pycache__/_entry_points.cpython-310.pyc | Bin 3291 -> 0 bytes .../__pycache__/_imp.cpython-310.pyc | Bin 2106 -> 0 bytes .../__pycache__/_importlib.cpython-310.pyc | Bin 1533 -> 0 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 921 -> 0 bytes .../_normalization.cpython-310.pyc | Bin 4704 -> 0 bytes .../__pycache__/_path.cpython-310.pyc | Bin 1448 -> 0 bytes .../__pycache__/_reqs.cpython-310.pyc | Bin 1431 -> 0 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 6184 -> 0 bytes .../__pycache__/build_meta.cpython-310.pyc | Bin 16921 -> 0 bytes .../__pycache__/depends.cpython-310.pyc | Bin 5320 -> 0 bytes .../__pycache__/discovery.cpython-310.pyc | Bin 20908 -> 0 bytes .../__pycache__/dist.cpython-310.pyc | Bin 32108 -> 0 bytes .../__pycache__/errors.cpython-310.pyc | Bin 2836 -> 0 bytes .../__pycache__/extension.cpython-310.pyc | Bin 5966 -> 0 bytes .../__pycache__/glob.cpython-310.pyc | Bin 3718 -> 0 bytes .../__pycache__/installer.cpython-310.pyc | Bin 4008 -> 0 bytes .../__pycache__/launch.cpython-310.pyc | Bin 914 -> 0 bytes .../__pycache__/logging.cpython-310.pyc | Bin 1273 -> 0 bytes .../__pycache__/modified.cpython-310.pyc | Bin 332 -> 0 bytes .../__pycache__/monkey.cpython-310.pyc | Bin 4210 -> 0 bytes .../__pycache__/msvc.cpython-310.pyc | Bin 40134 -> 0 bytes .../__pycache__/namespaces.cpython-310.pyc | Bin 3747 -> 0 bytes .../__pycache__/package_index.cpython-310.pyc | Bin 33100 -> 0 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 15940 -> 0 bytes .../__pycache__/unicode_utils.cpython-310.pyc | Bin 3183 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 340 -> 0 bytes .../__pycache__/warnings.cpython-310.pyc | Bin 3806 -> 0 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 7853 -> 0 bytes .../windows_support.cpython-310.pyc | Bin 1038 -> 0 bytes .../setuptools/_core_metadata.py | 268 - .../setuptools/_distutils/__init__.py | 14 - .../__pycache__/__init__.cpython-310.pyc | Bin 386 -> 0 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 6398 -> 0 bytes .../__pycache__/_functools.cpython-310.pyc | Bin 2195 -> 0 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 1612 -> 0 bytes .../__pycache__/_log.cpython-310.pyc | Bin 237 -> 0 bytes .../__pycache__/_macos_compat.cpython-310.pyc | Bin 460 -> 0 bytes .../__pycache__/_modified.cpython-310.pyc | Bin 2966 -> 0 bytes .../__pycache__/_msvccompiler.cpython-310.pyc | Bin 13619 -> 0 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 6527 -> 0 bytes .../__pycache__/bcppcompiler.cpython-310.pyc | Bin 6766 -> 0 bytes .../__pycache__/ccompiler.cpython-310.pyc | Bin 34921 -> 0 bytes .../__pycache__/cmd.cpython-310.pyc | Bin 13914 -> 0 bytes .../__pycache__/config.cpython-310.pyc | Bin 3913 -> 0 bytes .../__pycache__/core.cpython-310.pyc | Bin 7132 -> 0 bytes .../cygwinccompiler.cpython-310.pyc | Bin 8429 -> 0 bytes .../__pycache__/debug.cpython-310.pyc | Bin 259 -> 0 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 595 -> 0 bytes .../__pycache__/dir_util.cpython-310.pyc | Bin 6219 -> 0 bytes .../__pycache__/dist.cpython-310.pyc | Bin 34689 -> 0 bytes .../__pycache__/errors.cpython-310.pyc | Bin 5001 -> 0 bytes .../__pycache__/extension.cpython-310.pyc | Bin 7026 -> 0 bytes .../__pycache__/fancy_getopt.cpython-310.pyc | Bin 10732 -> 0 bytes .../__pycache__/file_util.cpython-310.pyc | Bin 6075 -> 0 bytes .../__pycache__/filelist.cpython-310.pyc | Bin 10788 -> 0 bytes .../__pycache__/log.cpython-310.pyc | Bin 1706 -> 0 bytes .../__pycache__/msvc9compiler.cpython-310.pyc | Bin 17732 -> 0 bytes .../__pycache__/msvccompiler.cpython-310.pyc | Bin 14975 -> 0 bytes .../__pycache__/py38compat.cpython-310.pyc | Bin 434 -> 0 bytes .../__pycache__/py39compat.cpython-310.pyc | Bin 1940 -> 0 bytes .../__pycache__/spawn.cpython-310.pyc | Bin 2826 -> 0 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 13938 -> 0 bytes .../__pycache__/text_file.cpython-310.pyc | Bin 8261 -> 0 bytes .../__pycache__/unixccompiler.cpython-310.pyc | Bin 10969 -> 0 bytes .../__pycache__/util.cpython-310.pyc | Bin 13513 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 8141 -> 0 bytes .../versionpredicate.cpython-310.pyc | Bin 5308 -> 0 bytes .../__pycache__/zosccompiler.cpython-310.pyc | Bin 4308 -> 0 bytes .../setuptools/_distutils/_collections.py | 203 - .../setuptools/_distutils/_functools.py | 73 - .../setuptools/_distutils/_itertools.py | 52 - .../setuptools/_distutils/_log.py | 3 - .../setuptools/_distutils/_macos_compat.py | 12 - .../setuptools/_distutils/_modified.py | 72 - .../setuptools/_distutils/_msvccompiler.py | 568 - .../setuptools/_distutils/archive_util.py | 280 - .../setuptools/_distutils/bcppcompiler.py | 397 - .../setuptools/_distutils/ccompiler.py | 1252 - .../setuptools/_distutils/cmd.py | 433 - .../setuptools/_distutils/command/__init__.py | 25 - .../__pycache__/__init__.cpython-310.pyc | Bin 523 -> 0 bytes .../_framework_compat.cpython-310.pyc | Bin 1926 -> 0 bytes .../command/__pycache__/bdist.cpython-310.pyc | Bin 3951 -> 0 bytes .../__pycache__/bdist_dumb.cpython-310.pyc | Bin 3626 -> 0 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 12301 -> 0 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 3873 -> 0 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 4858 -> 0 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 16678 -> 0 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 9830 -> 0 bytes .../__pycache__/build_scripts.cpython-310.pyc | Bin 4584 -> 0 bytes .../command/__pycache__/check.cpython-310.pyc | Bin 4652 -> 0 bytes .../command/__pycache__/clean.cpython-310.pyc | Bin 2132 -> 0 bytes .../__pycache__/config.cpython-310.pyc | Bin 10619 -> 0 bytes .../__pycache__/install.cpython-310.pyc | Bin 17118 -> 0 bytes .../__pycache__/install_data.cpython-310.pyc | Bin 2355 -> 0 bytes .../install_egg_info.cpython-310.pyc | Bin 3329 -> 0 bytes .../install_headers.cpython-310.pyc | Bin 1765 -> 0 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 5182 -> 0 bytes .../install_scripts.cpython-310.pyc | Bin 2208 -> 0 bytes .../__pycache__/register.cpython-310.pyc | Bin 8746 -> 0 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 14680 -> 0 bytes .../__pycache__/upload.cpython-310.pyc | Bin 5516 -> 0 bytes .../_distutils/command/_framework_compat.py | 54 - .../setuptools/_distutils/command/bdist.py | 154 - .../_distutils/command/bdist_dumb.py | 141 - .../_distutils/command/bdist_rpm.py | 599 - .../setuptools/_distutils/command/build.py | 153 - .../_distutils/command/build_clib.py | 208 - .../_distutils/command/build_ext.py | 800 - .../setuptools/_distutils/command/build_py.py | 406 - .../_distutils/command/build_scripts.py | 170 - .../setuptools/_distutils/command/check.py | 155 - .../setuptools/_distutils/command/clean.py | 76 - .../setuptools/_distutils/command/config.py | 369 - .../setuptools/_distutils/command/install.py | 813 - .../_distutils/command/install_data.py | 84 - .../_distutils/command/install_egg_info.py | 92 - .../_distutils/command/install_headers.py | 44 - .../_distutils/command/install_lib.py | 236 - .../_distutils/command/install_scripts.py | 61 - .../setuptools/_distutils/command/register.py | 323 - .../setuptools/_distutils/command/sdist.py | 528 - .../setuptools/_distutils/command/upload.py | 208 - .../setuptools/_distutils/compat/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 940 -> 0 bytes .../compat/__pycache__/py38.cpython-310.pyc | Bin 785 -> 0 bytes .../setuptools/_distutils/compat/py38.py | 23 - .../setuptools/_distutils/config.py | 151 - .../setuptools/_distutils/core.py | 290 - .../setuptools/_distutils/cygwinccompiler.py | 355 - .../setuptools/_distutils/debug.py | 5 - .../setuptools/_distutils/dep_util.py | 14 - .../setuptools/_distutils/dir_util.py | 238 - .../setuptools/_distutils/dist.py | 1287 - .../setuptools/_distutils/errors.py | 127 - .../setuptools/_distutils/extension.py | 242 - .../setuptools/_distutils/fancy_getopt.py | 469 - .../setuptools/_distutils/file_util.py | 235 - .../setuptools/_distutils/filelist.py | 369 - .../setuptools/_distutils/log.py | 56 - .../setuptools/_distutils/msvc9compiler.py | 824 - .../setuptools/_distutils/msvccompiler.py | 689 - .../setuptools/_distutils/py38compat.py | 8 - .../setuptools/_distutils/py39compat.py | 66 - .../setuptools/_distutils/spawn.py | 105 - .../setuptools/_distutils/sysconfig.py | 555 - .../setuptools/_distutils/text_file.py | 286 - .../setuptools/_distutils/unixccompiler.py | 400 - .../setuptools/_distutils/util.py | 510 - .../setuptools/_distutils/version.py | 349 - .../setuptools/_distutils/versionpredicate.py | 175 - .../setuptools/_distutils/zosccompiler.py | 229 - .../site-packages/setuptools/_entry_points.py | 89 - .../site-packages/setuptools/_imp.py | 89 - .../site-packages/setuptools/_importlib.py | 51 - .../site-packages/setuptools/_itertools.py | 23 - .../setuptools/_normalization.py | 144 - .../site-packages/setuptools/_path.py | 40 - .../site-packages/setuptools/_reqs.py | 38 - .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 193 -> 0 bytes .../__pycache__/ordered_set.cpython-310.pyc | Bin 16329 -> 0 bytes .../_vendor/__pycache__/zipp.cpython-310.pyc | Bin 10236 -> 0 bytes .../setuptools/_vendor/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 0 bytes .../__pycache__/tarfile.cpython-310.pyc | Bin 70862 -> 0 bytes .../setuptools/_vendor/backports/tarfile.py | 2900 -- .../_vendor/importlib_metadata/__init__.py | 904 - .../__pycache__/__init__.cpython-310.pyc | Bin 32741 -> 0 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 2990 -> 0 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 1588 -> 0 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 2077 -> 0 bytes .../__pycache__/_functools.cpython-310.pyc | Bin 3178 -> 0 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 2059 -> 0 bytes .../__pycache__/_meta.cpython-310.pyc | Bin 2420 -> 0 bytes .../__pycache__/_py39compat.cpython-310.pyc | Bin 1214 -> 0 bytes .../__pycache__/_text.cpython-310.pyc | Bin 3111 -> 0 bytes .../_vendor/importlib_metadata/_adapters.py | 90 - .../importlib_metadata/_collections.py | 30 - .../_vendor/importlib_metadata/_compat.py | 72 - .../_vendor/importlib_metadata/_functools.py | 104 - .../_vendor/importlib_metadata/_itertools.py | 73 - .../_vendor/importlib_metadata/_meta.py | 49 - .../_vendor/importlib_metadata/_py39compat.py | 35 - .../_vendor/importlib_metadata/_text.py | 99 - .../_vendor/importlib_metadata/py.typed | 0 .../_vendor/importlib_resources/__init__.py | 36 - .../__pycache__/__init__.cpython-310.pyc | Bin 648 -> 0 bytes .../__pycache__/_adapters.cpython-310.pyc | Bin 7356 -> 0 bytes .../__pycache__/_common.cpython-310.pyc | Bin 5657 -> 0 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 3652 -> 0 bytes .../__pycache__/_itertools.cpython-310.pyc | Bin 893 -> 0 bytes .../__pycache__/_legacy.cpython-310.pyc | Bin 4239 -> 0 bytes .../__pycache__/abc.cpython-310.pyc | Bin 6838 -> 0 bytes .../__pycache__/readers.cpython-310.pyc | Bin 5487 -> 0 bytes .../__pycache__/simple.cpython-310.pyc | Bin 4497 -> 0 bytes .../_vendor/importlib_resources/_adapters.py | 170 - .../_vendor/importlib_resources/_common.py | 207 - .../_vendor/importlib_resources/_compat.py | 108 - .../_vendor/importlib_resources/_itertools.py | 35 - .../_vendor/importlib_resources/_legacy.py | 120 - .../_vendor/importlib_resources/abc.py | 170 - .../_vendor/importlib_resources/py.typed | 0 .../_vendor/importlib_resources/readers.py | 120 - .../_vendor/importlib_resources/simple.py | 106 - .../setuptools/_vendor/jaraco/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 200 -> 0 bytes .../__pycache__/context.cpython-310.pyc | Bin 11127 -> 0 bytes .../setuptools/_vendor/jaraco/context.py | 361 - .../_vendor/jaraco/functools/__init__.py | 633 - .../_vendor/jaraco/functools/__init__.pyi | 128 - .../__pycache__/__init__.cpython-310.pyc | Bin 19343 -> 0 bytes .../_vendor/jaraco/functools/py.typed | 0 .../_vendor/jaraco/text/__init__.py | 599 - .../text/__pycache__/__init__.cpython-310.pyc | Bin 19660 -> 0 bytes .../_vendor/more_itertools/__init__.py | 4 - .../_vendor/more_itertools/__init__.pyi | 2 - .../__pycache__/__init__.cpython-310.pyc | Bin 274 -> 0 bytes .../__pycache__/more.cpython-310.pyc | Bin 110007 -> 0 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 17974 -> 0 bytes .../setuptools/_vendor/more_itertools/more.py | 3824 -- .../_vendor/more_itertools/more.pyi | 480 - .../_vendor/more_itertools/py.typed | 0 .../_vendor/more_itertools/recipes.py | 620 - .../_vendor/more_itertools/recipes.pyi | 103 - .../setuptools/_vendor/ordered_set.py | 488 - .../setuptools/_vendor/packaging/__init__.py | 15 - .../__pycache__/__init__.cpython-310.pyc | Bin 533 -> 0 bytes .../__pycache__/_elffile.cpython-310.pyc | Bin 3325 -> 0 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 6436 -> 0 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 3355 -> 0 bytes .../__pycache__/_parser.cpython-310.pyc | Bin 8977 -> 0 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 2715 -> 0 bytes .../__pycache__/_tokenizer.cpython-310.pyc | Bin 5837 -> 0 bytes .../__pycache__/markers.cpython-310.pyc | Bin 6911 -> 0 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 17834 -> 0 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 2848 -> 0 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 31007 -> 0 bytes .../__pycache__/tags.cpython-310.pyc | Bin 13821 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 4533 -> 0 bytes .../__pycache__/version.cpython-310.pyc | Bin 14178 -> 0 bytes .../setuptools/_vendor/packaging/_elffile.py | 108 - .../_vendor/packaging/_manylinux.py | 260 - .../_vendor/packaging/_musllinux.py | 83 - .../setuptools/_vendor/packaging/_parser.py | 356 - .../_vendor/packaging/_structures.py | 61 - .../_vendor/packaging/_tokenizer.py | 192 - .../setuptools/_vendor/packaging/markers.py | 252 - .../setuptools/_vendor/packaging/metadata.py | 825 - .../setuptools/_vendor/packaging/py.typed | 0 .../_vendor/packaging/requirements.py | 90 - .../_vendor/packaging/specifiers.py | 1017 - .../setuptools/_vendor/packaging/tags.py | 571 - .../setuptools/_vendor/packaging/utils.py | 172 - .../setuptools/_vendor/packaging/version.py | 563 - .../setuptools/_vendor/tomli/__init__.py | 11 - .../__pycache__/__init__.cpython-310.pyc | Bin 365 -> 0 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 17079 -> 0 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 2911 -> 0 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 335 -> 0 bytes .../setuptools/_vendor/tomli/_parser.py | 691 - .../setuptools/_vendor/tomli/_re.py | 107 - .../setuptools/_vendor/tomli/_types.py | 10 - .../setuptools/_vendor/tomli/py.typed | 1 - .../site-packages/setuptools/_vendor/zipp.py | 329 - .../site-packages/setuptools/archive_util.py | 216 - .../site-packages/setuptools/build_meta.py | 514 - .../site-packages/setuptools/cli-32.exe | Bin 11776 -> 0 bytes .../site-packages/setuptools/cli-64.exe | Bin 14336 -> 0 bytes .../site-packages/setuptools/cli-arm64.exe | Bin 13824 -> 0 bytes .../site-packages/setuptools/cli.exe | Bin 11776 -> 0 bytes .../setuptools/command/__init__.py | 12 - .../__pycache__/__init__.cpython-310.pyc | Bin 451 -> 0 bytes .../__pycache__/_requirestxt.cpython-310.pyc | Bin 4588 -> 0 bytes .../command/__pycache__/alias.cpython-310.pyc | Bin 2384 -> 0 bytes .../__pycache__/bdist_egg.cpython-310.pyc | Bin 13096 -> 0 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 1717 -> 0 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 5183 -> 0 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 2557 -> 0 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 13598 -> 0 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 14895 -> 0 bytes .../__pycache__/develop.cpython-310.pyc | Bin 6114 -> 0 bytes .../__pycache__/dist_info.cpython-310.pyc | Bin 3414 -> 0 bytes .../__pycache__/easy_install.cpython-310.pyc | Bin 64664 -> 0 bytes .../editable_wheel.cpython-310.pyc | Bin 34671 -> 0 bytes .../__pycache__/egg_info.cpython-310.pyc | Bin 22646 -> 0 bytes .../__pycache__/install.cpython-310.pyc | Bin 4678 -> 0 bytes .../install_egg_info.cpython-310.pyc | Bin 2389 -> 0 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 4183 -> 0 bytes .../install_scripts.cpython-310.pyc | Bin 2443 -> 0 bytes .../__pycache__/register.cpython-310.pyc | Bin 848 -> 0 bytes .../__pycache__/rotate.cpython-310.pyc | Bin 2588 -> 0 bytes .../__pycache__/saveopts.cpython-310.pyc | Bin 934 -> 0 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 7488 -> 0 bytes .../__pycache__/setopt.cpython-310.pyc | Bin 4762 -> 0 bytes .../command/__pycache__/test.cpython-310.pyc | Bin 8207 -> 0 bytes .../__pycache__/upload.cpython-310.pyc | Bin 821 -> 0 bytes .../__pycache__/upload_docs.cpython-310.pyc | Bin 6586 -> 0 bytes .../setuptools/command/_requirestxt.py | 129 - .../site-packages/setuptools/command/alias.py | 78 - .../setuptools/command/bdist_egg.py | 459 - .../setuptools/command/bdist_rpm.py | 39 - .../site-packages/setuptools/command/build.py | 122 - .../setuptools/command/build_clib.py | 104 - .../setuptools/command/build_ext.py | 457 - .../setuptools/command/build_py.py | 393 - .../setuptools/command/develop.py | 196 - .../setuptools/command/dist_info.py | 106 - .../setuptools/command/easy_install.py | 2361 -- .../setuptools/command/editable_wheel.py | 922 - .../setuptools/command/egg_info.py | 737 - .../setuptools/command/install.py | 155 - .../setuptools/command/install_egg_info.py | 57 - .../setuptools/command/install_lib.py | 125 - .../setuptools/command/install_scripts.py | 66 - .../setuptools/command/launcher manifest.xml | 15 - .../setuptools/command/register.py | 18 - .../setuptools/command/rotate.py | 63 - .../setuptools/command/saveopts.py | 21 - .../site-packages/setuptools/command/sdist.py | 204 - .../setuptools/command/setopt.py | 140 - .../site-packages/setuptools/command/test.py | 250 - .../setuptools/command/upload.py | 17 - .../setuptools/command/upload_docs.py | 221 - .../setuptools/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 192 -> 0 bytes .../compat/__pycache__/py310.cpython-310.pyc | Bin 334 -> 0 bytes .../compat/__pycache__/py311.cpython-310.pyc | Bin 630 -> 0 bytes .../compat/__pycache__/py39.cpython-310.pyc | Bin 278 -> 0 bytes .../site-packages/setuptools/compat/py310.py | 10 - .../site-packages/setuptools/compat/py311.py | 12 - .../site-packages/setuptools/compat/py39.py | 9 - .../setuptools/config/__init__.py | 43 - .../__pycache__/__init__.cpython-310.pyc | Bin 1651 -> 0 bytes .../_apply_pyprojecttoml.cpython-310.pyc | Bin 14290 -> 0 bytes .../config/__pycache__/expand.cpython-310.pyc | Bin 17592 -> 0 bytes .../__pycache__/pyprojecttoml.cpython-310.pyc | Bin 15492 -> 0 bytes .../__pycache__/setupcfg.cpython-310.pyc | Bin 23290 -> 0 bytes .../setuptools/config/_apply_pyprojecttoml.py | 439 - .../config/_validate_pyproject/__init__.py | 34 - .../__pycache__/__init__.cpython-310.pyc | Bin 1531 -> 0 bytes .../error_reporting.cpython-310.pyc | Bin 12094 -> 0 bytes .../extra_validations.cpython-310.pyc | Bin 1625 -> 0 bytes .../fastjsonschema_exceptions.cpython-310.pyc | Bin 2457 -> 0 bytes ...fastjsonschema_validations.cpython-310.pyc | Bin 72157 -> 0 bytes .../__pycache__/formats.cpython-310.pyc | Bin 11881 -> 0 bytes .../_validate_pyproject/error_reporting.py | 338 - .../_validate_pyproject/extra_validations.py | 52 - .../fastjsonschema_exceptions.py | 51 - .../fastjsonschema_validations.py | 1104 - .../config/_validate_pyproject/formats.py | 354 - .../site-packages/setuptools/config/expand.py | 462 - .../setuptools/config/pyprojecttoml.py | 451 - .../setuptools/config/setupcfg.py | 776 - .../site-packages/setuptools/depends.py | 180 - .../site-packages/setuptools/discovery.py | 613 - .../site-packages/setuptools/dist.py | 973 - .../site-packages/setuptools/errors.py | 66 - .../site-packages/setuptools/extension.py | 152 - .../setuptools/extern/__init__.py | 91 - .../__pycache__/__init__.cpython-310.pyc | Bin 3005 -> 0 bytes .../site-packages/setuptools/glob.py | 165 - .../site-packages/setuptools/gui-32.exe | Bin 11776 -> 0 bytes .../site-packages/setuptools/gui-64.exe | Bin 14336 -> 0 bytes .../site-packages/setuptools/gui-arm64.exe | Bin 13824 -> 0 bytes .../site-packages/setuptools/gui.exe | Bin 11776 -> 0 bytes .../site-packages/setuptools/installer.py | 144 - .../site-packages/setuptools/launch.py | 36 - .../site-packages/setuptools/logging.py | 38 - .../site-packages/setuptools/modified.py | 8 - .../site-packages/setuptools/monkey.py | 155 - .../site-packages/setuptools/msvc.py | 1742 - .../site-packages/setuptools/namespaces.py | 105 - .../site-packages/setuptools/package_index.py | 1149 - .../site-packages/setuptools/sandbox.py | 529 - .../setuptools/script (dev).tmpl | 6 - .../site-packages/setuptools/script.tmpl | 3 - .../site-packages/setuptools/unicode_utils.py | 102 - .../site-packages/setuptools/version.py | 6 - .../site-packages/setuptools/warnings.py | 105 - .../site-packages/setuptools/wheel.py | 236 - .../setuptools/windows_support.py | 30 - .../six-1.16.0.dist-info/INSTALLER | 1 - .../six-1.16.0.dist-info/LICENSE | 18 - .../six-1.16.0.dist-info/METADATA | 49 - .../site-packages/six-1.16.0.dist-info/RECORD | 8 - .../site-packages/six-1.16.0.dist-info/WHEEL | 6 - .../six-1.16.0.dist-info/top_level.txt | 1 - venv/lib/python3.10/site-packages/six.py | 998 - .../urllib3-2.2.1.dist-info/INSTALLER | 1 - .../urllib3-2.2.1.dist-info/METADATA | 154 - .../urllib3-2.2.1.dist-info/RECORD | 75 - .../urllib3-2.2.1.dist-info/WHEEL | 4 - .../licenses/LICENSE.txt | 21 - .../site-packages/urllib3/__init__.py | 211 - .../__pycache__/__init__.cpython-310.pyc | Bin 6117 -> 0 bytes .../_base_connection.cpython-310.pyc | Bin 5703 -> 0 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 16248 -> 0 bytes .../_request_methods.cpython-310.pyc | Bin 9147 -> 0 bytes .../__pycache__/_version.cpython-310.pyc | Bin 254 -> 0 bytes .../__pycache__/connection.cpython-310.pyc | Bin 22286 -> 0 bytes .../connectionpool.cpython-310.pyc | Bin 29285 -> 0 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 13245 -> 0 bytes .../__pycache__/fields.cpython-310.pyc | Bin 9727 -> 0 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 2357 -> 0 bytes .../urllib3/__pycache__/http2.cpython-310.pyc | Bin 7251 -> 0 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 18232 -> 0 bytes .../__pycache__/response.cpython-310.pyc | Bin 32954 -> 0 bytes .../site-packages/urllib3/_base_connection.py | 172 - .../site-packages/urllib3/_collections.py | 483 - .../site-packages/urllib3/_request_methods.py | 279 - .../site-packages/urllib3/_version.py | 4 - .../site-packages/urllib3/connection.py | 930 - .../site-packages/urllib3/connectionpool.py | 1186 - .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 190 -> 0 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 17122 -> 0 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 6170 -> 0 bytes .../urllib3/contrib/emscripten/__init__.py | 16 - .../__pycache__/__init__.cpython-310.pyc | Bin 729 -> 0 bytes .../__pycache__/connection.cpython-310.pyc | Bin 7579 -> 0 bytes .../__pycache__/fetch.cpython-310.pyc | Bin 11902 -> 0 bytes .../__pycache__/request.cpython-310.pyc | Bin 1245 -> 0 bytes .../__pycache__/response.cpython-310.pyc | Bin 7774 -> 0 bytes .../urllib3/contrib/emscripten/connection.py | 254 - .../emscripten/emscripten_fetch_worker.js | 110 - .../urllib3/contrib/emscripten/fetch.py | 418 - .../urllib3/contrib/emscripten/request.py | 22 - .../urllib3/contrib/emscripten/response.py | 276 - .../urllib3/contrib/pyopenssl.py | 548 - .../site-packages/urllib3/contrib/socks.py | 230 - .../site-packages/urllib3/exceptions.py | 321 - .../site-packages/urllib3/fields.py | 341 - .../site-packages/urllib3/filepost.py | 89 - .../python3.10/site-packages/urllib3/http2.py | 229 - .../site-packages/urllib3/poolmanager.py | 638 - .../python3.10/site-packages/urllib3/py.typed | 2 - .../site-packages/urllib3/response.py | 1243 - .../site-packages/urllib3/util/__init__.py | 42 - .../util/__pycache__/__init__.cpython-310.pyc | Bin 970 -> 0 bytes .../__pycache__/connection.cpython-310.pyc | Bin 3493 -> 0 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 1102 -> 0 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 6229 -> 0 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 2356 -> 0 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 15691 -> 0 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 12312 -> 0 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 3725 -> 0 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 9616 -> 0 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 9629 -> 0 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 11265 -> 0 bytes .../util/__pycache__/util.cpython-310.pyc | Bin 1230 -> 0 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 2409 -> 0 bytes .../site-packages/urllib3/util/connection.py | 137 - .../site-packages/urllib3/util/proxy.py | 43 - .../site-packages/urllib3/util/request.py | 256 - .../site-packages/urllib3/util/response.py | 101 - .../site-packages/urllib3/util/retry.py | 529 - .../site-packages/urllib3/util/ssl_.py | 509 - .../urllib3/util/ssl_match_hostname.py | 159 - .../urllib3/util/ssltransport.py | 280 - .../site-packages/urllib3/util/timeout.py | 275 - .../site-packages/urllib3/util/url.py | 471 - .../site-packages/urllib3/util/util.py | 42 - .../site-packages/urllib3/util/wait.py | 124 - .../site-packages/websocket/__init__.py | 26 - .../__pycache__/__init__.cpython-310.pyc | Bin 1005 -> 0 bytes .../__pycache__/_abnf.cpython-310.pyc | Bin 11176 -> 0 bytes .../__pycache__/_app.cpython-310.pyc | Bin 19462 -> 0 bytes .../__pycache__/_cookiejar.cpython-310.pyc | Bin 1857 -> 0 bytes .../__pycache__/_core.cpython-310.pyc | Bin 18774 -> 0 bytes .../__pycache__/_exceptions.cpython-310.pyc | Bin 2963 -> 0 bytes .../__pycache__/_handshake.cpython-310.pyc | Bin 5716 -> 0 bytes .../__pycache__/_http.cpython-310.pyc | Bin 8127 -> 0 bytes .../__pycache__/_logging.cpython-310.pyc | Bin 2452 -> 0 bytes .../__pycache__/_socket.cpython-310.pyc | Bin 4074 -> 0 bytes .../__pycache__/_ssl_compat.cpython-310.pyc | Bin 1527 -> 0 bytes .../__pycache__/_url.cpython-310.pyc | Bin 4390 -> 0 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 4108 -> 0 bytes .../__pycache__/_wsdump.cpython-310.pyc | Bin 6672 -> 0 bytes .../site-packages/websocket/_abnf.py | 453 - .../site-packages/websocket/_app.py | 677 - .../site-packages/websocket/_cookiejar.py | 75 - .../site-packages/websocket/_core.py | 647 - .../site-packages/websocket/_exceptions.py | 94 - .../site-packages/websocket/_handshake.py | 202 - .../site-packages/websocket/_http.py | 373 - .../site-packages/websocket/_logging.py | 106 - .../site-packages/websocket/_socket.py | 188 - .../site-packages/websocket/_ssl_compat.py | 48 - .../site-packages/websocket/_url.py | 190 - .../site-packages/websocket/_utils.py | 459 - .../site-packages/websocket/_wsdump.py | 244 - .../site-packages/websocket/py.typed | 0 .../site-packages/websocket/tests/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 190 -> 0 bytes .../__pycache__/echo-server.cpython-310.pyc | Bin 734 -> 0 bytes .../__pycache__/test_abnf.cpython-310.pyc | Bin 3060 -> 0 bytes .../__pycache__/test_app.cpython-310.pyc | Bin 11056 -> 0 bytes .../test_cookiejar.cpython-310.pyc | Bin 2379 -> 0 bytes .../__pycache__/test_http.cpython-310.pyc | Bin 7175 -> 0 bytes .../__pycache__/test_url.cpython-310.pyc | Bin 8704 -> 0 bytes .../test_websocket.cpython-310.pyc | Bin 14980 -> 0 bytes .../websocket/tests/data/header01.txt | 6 - .../websocket/tests/data/header02.txt | 6 - .../websocket/tests/data/header03.txt | 8 - .../websocket/tests/echo-server.py | 23 - .../websocket/tests/test_abnf.py | 125 - .../site-packages/websocket/tests/test_app.py | 352 - .../websocket/tests/test_cookiejar.py | 123 - .../websocket/tests/test_http.py | 370 - .../site-packages/websocket/tests/test_url.py | 464 - .../websocket/tests/test_websocket.py | 497 - .../INSTALLER | 1 - .../websocket_client-1.8.0.dist-info/LICENSE | 203 - .../websocket_client-1.8.0.dist-info/METADATA | 184 - .../websocket_client-1.8.0.dist-info/RECORD | 56 - .../websocket_client-1.8.0.dist-info/WHEEL | 5 - .../entry_points.txt | 2 - .../top_level.txt | 1 - .../python3.10/site-packages/yaml/__init__.py | 390 - .../yaml/__pycache__/__init__.cpython-310.pyc | Bin 10716 -> 0 bytes .../yaml/__pycache__/composer.cpython-310.pyc | Bin 3622 -> 0 bytes .../__pycache__/constructor.cpython-310.pyc | Bin 20229 -> 0 bytes .../yaml/__pycache__/cyaml.cpython-310.pyc | Bin 2884 -> 0 bytes .../yaml/__pycache__/dumper.cpython-310.pyc | Bin 1525 -> 0 bytes .../yaml/__pycache__/emitter.cpython-310.pyc | Bin 25222 -> 0 bytes .../yaml/__pycache__/error.cpython-310.pyc | Bin 2420 -> 0 bytes .../yaml/__pycache__/events.cpython-310.pyc | Bin 3816 -> 0 bytes .../yaml/__pycache__/loader.cpython-310.pyc | Bin 1832 -> 0 bytes .../yaml/__pycache__/nodes.cpython-310.pyc | Bin 1712 -> 0 bytes .../yaml/__pycache__/parser.cpython-310.pyc | Bin 11699 -> 0 bytes .../yaml/__pycache__/reader.cpython-310.pyc | Bin 4611 -> 0 bytes .../__pycache__/representer.cpython-310.pyc | Bin 10060 -> 0 bytes .../yaml/__pycache__/resolver.cpython-310.pyc | Bin 5543 -> 0 bytes .../yaml/__pycache__/scanner.cpython-310.pyc | Bin 25613 -> 0 bytes .../__pycache__/serializer.cpython-310.pyc | Bin 3377 -> 0 bytes .../yaml/__pycache__/tokens.cpython-310.pyc | Bin 4602 -> 0 bytes .../_yaml.cpython-310-x86_64-linux-gnu.so | Bin 2226000 -> 0 bytes .../python3.10/site-packages/yaml/composer.py | 139 - .../site-packages/yaml/constructor.py | 748 - .../python3.10/site-packages/yaml/cyaml.py | 101 - .../python3.10/site-packages/yaml/dumper.py | 62 - .../python3.10/site-packages/yaml/emitter.py | 1137 - .../python3.10/site-packages/yaml/error.py | 75 - .../python3.10/site-packages/yaml/events.py | 86 - .../python3.10/site-packages/yaml/loader.py | 63 - .../python3.10/site-packages/yaml/nodes.py | 49 - .../python3.10/site-packages/yaml/parser.py | 589 - .../python3.10/site-packages/yaml/reader.py | 185 - .../site-packages/yaml/representer.py | 389 - .../python3.10/site-packages/yaml/resolver.py | 227 - .../python3.10/site-packages/yaml/scanner.py | 1435 - .../site-packages/yaml/serializer.py | 111 - .../python3.10/site-packages/yaml/tokens.py | 104 - venv/lib64 | 1 - venv/pyvenv.cfg | 3 - 3921 files changed, 67 insertions(+), 645583 deletions(-) delete mode 100644 venv/bin/Activate.ps1 delete mode 100644 venv/bin/activate delete mode 100644 venv/bin/activate.csh delete mode 100644 venv/bin/activate.fish delete mode 100755 venv/bin/normalizer delete mode 100755 venv/bin/pip delete mode 100755 venv/bin/pip3 delete mode 100755 venv/bin/pip3.10 delete mode 100755 venv/bin/pyrsa-decrypt delete mode 100755 venv/bin/pyrsa-encrypt delete mode 100755 venv/bin/pyrsa-keygen delete mode 100755 venv/bin/pyrsa-priv2pub delete mode 100755 venv/bin/pyrsa-sign delete mode 100755 venv/bin/pyrsa-verify delete mode 120000 venv/bin/python delete mode 120000 venv/bin/python3 delete mode 120000 venv/bin/python3.10 delete mode 100755 venv/bin/wsdump delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/_distutils_hack/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/_distutils_hack/override.py delete mode 100644 venv/lib/python3.10/site-packages/_yaml/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/_yaml/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/cachetools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/cachetools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/cachetools/__pycache__/func.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/cachetools/__pycache__/keys.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/cachetools/func.py delete mode 100644 venv/lib/python3.10/site-packages/cachetools/keys.py delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/certifi/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/certifi/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/certifi/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/certifi/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/certifi/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/certifi/cacert.pem delete mode 100644 venv/lib/python3.10/site-packages/certifi/core.py delete mode 100644 venv/lib/python3.10/site-packages/certifi/py.typed delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/constant.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/models.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/api.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/cd.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/constant.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/legacy.py delete mode 100755 venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/md.py delete mode 100755 venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/models.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/py.typed delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/utils.py delete mode 100644 venv/lib/python3.10/site-packages/charset_normalizer/version.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/_common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/easter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/relativedelta.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/rrule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/tzwin.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/_common.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/_version.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/easter.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/isoparser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/_parser.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/parser/isoparser.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/relativedelta.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/rrule.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/_common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/_factories.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/tz.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/win.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/_common.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/_factories.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/tz.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tz/win.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/tzwin.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/utils.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/zoneinfo/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz delete mode 100644 venv/lib/python3.10/site-packages/dateutil/zoneinfo/rebuild.py delete mode 100644 venv/lib/python3.10/site-packages/distutils-precedence.pth delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_cloud_sdk.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_credentials_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_default.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_default_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_exponential_backoff.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_helpers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_jwt_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_oauth2client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_refresh_worker.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/_service_account_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/api_key.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/app_engine.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/aws.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/downscoped.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/environment_vars.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/external_account.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/external_account_authorized_user.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/iam.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/identity_pool.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/impersonated_credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/jwt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/metrics.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/pluggable.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_cloud_sdk.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_credentials_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_default.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_default_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_exponential_backoff.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_helpers.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_jwt_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_oauth2client.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_refresh_worker.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/_service_account_info.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/api_key.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/app_engine.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/aws.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/_metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/credentials.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_cryptography_rsa.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_helpers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_python_rsa.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/es256.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/rsa.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/_cryptography_rsa.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/_helpers.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/_python_rsa.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/base.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/es256.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/crypt/rsa.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/downscoped.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/environment_vars.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/external_account.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/external_account_authorized_user.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/iam.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/identity_pool.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/impersonated_credentials.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/jwt.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/metrics.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/pluggable.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_aiohttp_requests.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_custom_tls_signer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_http_client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_mtls_helper.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/grpc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/mtls.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/requests.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/urllib3.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/_aiohttp_requests.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/_custom_tls_signer.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/_http_client.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/_mtls_helper.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/grpc.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/mtls.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/requests.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/transport/urllib3.py delete mode 100644 venv/lib/python3.10/site-packages/google/auth/version.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_client_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_credentials_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_id_token_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_reauth_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_service_account_async.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/challenges.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/gdch_credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/id_token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/reauth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/service_account.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/sts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_client.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_client_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_credentials_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_id_token_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_reauth_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/_service_account_async.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/challenges.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/credentials.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/gdch_credentials.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/id_token.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/reauth.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/service_account.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/sts.py delete mode 100644 venv/lib/python3.10/site-packages/google/oauth2/utils.py delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/idna-3.7.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/idna-3.7.dist-info/LICENSE.md delete mode 100644 venv/lib/python3.10/site-packages/idna-3.7.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/idna-3.7.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/idna-3.7.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/idna/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/codec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/idnadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/intranges.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/package_data.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/__pycache__/uts46data.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/idna/codec.py delete mode 100644 venv/lib/python3.10/site-packages/idna/compat.py delete mode 100644 venv/lib/python3.10/site-packages/idna/core.py delete mode 100644 venv/lib/python3.10/site-packages/idna/idnadata.py delete mode 100644 venv/lib/python3.10/site-packages/idna/intranges.py delete mode 100644 venv/lib/python3.10/site-packages/idna/package_data.py delete mode 100644 venv/lib/python3.10/site-packages/idna/py.typed delete mode 100644 venv/lib/python3.10/site-packages/idna/uts46data.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/api_client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/rest.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1beta1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiextensions_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiextensions_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apis_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apps_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apps_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1beta1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authorization_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authorization_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_v2_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/batch_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/batch_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/coordination_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/coordination_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/core_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/core_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/custom_objects_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/discovery_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/discovery_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/flowcontrol_apiserver_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/flowcontrol_apiserver_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/flowcontrol_apiserver_v1beta3_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/internal_apiserver_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/internal_apiserver_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/logs_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/networking_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/networking_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/networking_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/openid_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_v1alpha2_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/scheduling_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/scheduling_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1alpha1_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/version_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/well_known_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1beta1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apis_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apps_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/apps_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1beta1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v2_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/batch_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/batch_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/core_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/core_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/custom_objects_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/events_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/events_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1beta3_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/logs_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/networking_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/node_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/node_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/openid_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/policy_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/policy_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/resource_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/resource_v1alpha2_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/storage_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1alpha1_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/version_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api/well_known_api.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/api_client.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/apis/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/apis/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/admissionregistration_v1_service_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/admissionregistration_v1_webhook_client_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_service_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_webhook_client_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiregistration_v1_service_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/authentication_v1_token_request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_endpoint_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_series.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/discovery_v1_endpoint_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/events_v1_event.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/events_v1_event_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/events_v1_event_series.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/flowcontrol_v1_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/rbac_v1_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/storage_v1_token_request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_affinity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aggregation_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_group.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_group_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_resource.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_resource_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_versions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_attached_volume.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aws_elastic_block_store_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_azure_disk_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_azure_file_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_azure_file_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_binding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_bound_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_capabilities.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ceph_fs_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ceph_fs_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_claim_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_client_ip_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cluster_role.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cluster_role_binding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cluster_role_binding_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cluster_role_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cluster_trust_bundle_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_status_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_env_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_key_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_node_config_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_image.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_resize_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_running.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_terminated.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_waiting.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_controller_revision.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_controller_revision_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cross_version_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_driver.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_column_definition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_conversion.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_names.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_subresource_scale.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_subresources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_validation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_endpoint.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_update_strategy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_delete_options.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_strategy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_file.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_empty_dir_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_address.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_conditions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_hints.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_slice.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_slice_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_subset.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_env_from_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_env_var.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_env_var_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ephemeral_container.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ephemeral_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_event_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_eviction.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exec_action.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exempt_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_external_documentation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_fc_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flex_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flex_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flocker_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_distinguisher_method.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_for_zone.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_gce_persistent_disk_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_git_repo_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_group_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_group_version_for_discovery.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_grpc_action.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_alias.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_ip.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_path_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_get_action.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_header.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_path.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_rule_value.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_backend.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_class_parameters_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_class_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_ingress.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_port_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_service_backend.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_tls.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ip_block.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_template_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_json_schema_props.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_key_to_path.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector_requirement.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle_handler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_item.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limited_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_list_meta.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_load_balancer_ingress.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_load_balancer_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_subject_access_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_managed_fields_entry.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_match_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_modify_volume_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_mutating_webhook.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_mutating_webhook_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_mutating_webhook_configuration_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_egress_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_ingress_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_peer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_nfs_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_address.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_affinity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_daemon_endpoints.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_requirement.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_term.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_system_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_non_resource_attributes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_non_resource_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_non_resource_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_field_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_meta.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_overhead.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_owner_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_template.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_photon_persistent_disk_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_affinity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_affinity_term.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_anti_affinity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config_option.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_exit_codes_requirement.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_pod_conditions_pattern.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_ip.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_os.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_readiness_gate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_scheduling_gate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_security_context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_policy_rules_with_subjects.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_port_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_portworx_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_preconditions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_preferred_scheduling_term.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_probe.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_projected_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_queuing_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_quobyte_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_attributes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_claim.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_field_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_ref.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_daemon_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_deployment.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_stateful_set_strategy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rule_with_operations.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_runtime_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_runtime_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_io_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_io_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scheduling.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scope_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scoped_resource_selector_requirement.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_se_linux_options.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_seccomp_profile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_env_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_key_selector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_security_context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_server_address_by_client_cidr.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account_token_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_backend_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_port.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_session_affinity_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sleep_action.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_ordinals.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_persistent_volume_claim_retention_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_update_strategy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status_cause.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status_details.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_persistent_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_rules_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sysctl.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_taint.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_tcp_socket_action.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_toleration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_label_requirement.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_term.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_spread_constraint.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_local_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_uncounted_terminated_pods.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_user_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_user_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validating_webhook.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validating_webhook_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validating_webhook_configuration_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validation_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_device.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_error.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_mount.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_affinity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_resources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_projection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_resource_requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_vsphere_virtual_disk_volume_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_watch_event.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_webhook_conversion.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_weighted_pod_affinity_term.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_windows_security_context_options.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_audit_annotation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_expression_warning.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_match_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_match_resources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_named_rule_with_operations.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_param_kind.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_param_ref.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_parent_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_self_subject_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_self_subject_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_server_storage_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_type_checking.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_variable.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_allocation_result.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_consumer_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_parameters_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_scheduling_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class_parameters_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_handle.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_audit_annotation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_expression_warning.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_match_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_match_resources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_named_rule_with_operations.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_kind.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_ref.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_type_checking.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_variable.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_exempt_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_distinguisher_method.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_group_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_limit_response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_limited_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_non_resource_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_policy_rules_with_subjects.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_queuing_configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_resource_policy_rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_service_account_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_user_subject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_cross_version_object_reference.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_behavior.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_condition.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_policy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_rules.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_identifier.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_spec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_target.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_value_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_object_metric_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_object_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_pods_metric_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_pods_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_resource_metric_source.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_resource_metric_status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/version_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_service_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_webhook_client_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_service_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_webhook_client_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/apiregistration_v1_service_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/authentication_v1_token_request.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_endpoint_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_series.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/discovery_v1_endpoint_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_series.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/flowcontrol_v1_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/rbac_v1_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/storage_v1_token_request.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_affinity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aggregation_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_versions.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_attached_volume.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aws_elastic_block_store_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_disk_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_binding.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_bound_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_capabilities.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_claim_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_client_ip_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_trust_bundle_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_env_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_key_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_node_config_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_image.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_resize_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_running.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_terminated.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_waiting.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cross_version_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_driver.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_column_definition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_conversion.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_names.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_version.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresource_scale.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresources.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_validation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_endpoint.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_update_strategy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_delete_options.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_strategy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_file.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_empty_dir_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_address.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_conditions.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_hints.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_subset.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_from_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_container.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_event_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_eviction.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exec_action.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exempt_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_external_documentation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_fc_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flocker_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_distinguisher_method.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_for_zone.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_gce_persistent_disk_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_git_repo_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_version_for_discovery.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_grpc_action.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_alias.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_ip.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_path_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_get_action.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_header.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_path.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_rule_value.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_backend.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_parameters_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_ingress.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_port_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_service_backend.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_tls.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ip_block.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_template_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_json_schema_props.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_key_to_path.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector_requirement.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle_handler.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_item.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_response.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limited_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_list_meta.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_ingress.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_subject_access_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_managed_fields_entry.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_match_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_modify_volume_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_egress_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_ingress_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_peer.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_nfs_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_address.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_affinity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_daemon_endpoints.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_requirement.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_term.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_system_info.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_attributes.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_field_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_meta.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_overhead.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_owner_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_template.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_photon_persistent_disk_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity_term.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_anti_affinity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config_option.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_exit_codes_requirement.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_pod_conditions_pattern.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_ip.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_os.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_readiness_gate.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_scheduling_gate.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_security_context.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rules_with_subjects.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_port_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_portworx_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preconditions.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preferred_scheduling_term.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_probe.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_projected_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_queuing_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_quobyte_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_attributes.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_claim.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_field_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_requirements.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_ref.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_daemon_set.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_deployment.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_stateful_set_strategy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rule_with_operations.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scheduling.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scope_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scoped_resource_selector_requirement.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_se_linux_options.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_seccomp_profile.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_env_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_key_selector.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_security_context.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_server_address_by_client_cidr.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_token_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_backend_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_port.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_session_affinity_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sleep_action.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_ordinals.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_persistent_volume_claim_retention_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_update_strategy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_cause.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_details.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_persistent_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_rules_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sysctl.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_taint.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_tcp_socket_action.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_toleration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_label_requirement.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_term.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_spread_constraint.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_local_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_uncounted_terminated_pods.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_info.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validation_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_device.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_error.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_mount.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_affinity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_resources.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_projection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_resource_requirements.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_vsphere_virtual_disk_volume_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_watch_event.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_webhook_conversion.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_weighted_pod_affinity_term.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1_windows_security_context_options.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_audit_annotation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_expression_warning.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_resources.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_named_rule_with_operations.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_kind.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_ref.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_parent_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_server_storage_version.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_type_checking.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_variable.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_allocation_result.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_consumer_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_parameters_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_scheduling_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_parameters_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_handle.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_audit_annotation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_expression_warning.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_resources.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_named_rule_with_operations.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_kind.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_ref.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_type_checking.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validation.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_variable.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_exempt_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_distinguisher_method.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_group_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limit_response.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limited_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_non_resource_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_policy_rules_with_subjects.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_queuing_configuration.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_resource_policy_rule.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_service_account_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_user_subject.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_cross_version_object_reference.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_behavior.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_condition.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_list.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_policy.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_rules.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_identifier.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_spec.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_target.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_value_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_source.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_status.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/models/version_info.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/client/rest.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/config_exception.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/dateutil.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/dateutil_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/exec_provider.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/exec_provider_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/incluster_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/incluster_config_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/kube_config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/kube_config_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/config_exception.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/dateutil.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/dateutil_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/exec_provider.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/exec_provider_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/incluster_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/incluster_config_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/kube_config.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/config/kube_config_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/discovery.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/resource.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_discovery.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/client.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/discovery.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/resource.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/test_client.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/dynamic/test_discovery.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/electionconfig.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/example.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelection_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelectionrecord.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/electionconfig.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/example.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelectionrecord.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__pycache__/configmaplock.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/configmaplock.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/stream.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/ws_client.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/ws_client_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/stream.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/ws_client.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/stream/ws_client_test.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/create_from_yaml.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/quantity.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/create_from_yaml.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/utils/quantity.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/watch.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/watch_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/watch.py delete mode 100644 venv/lib/python3.10/site-packages/kubernetes/watch/watch_test.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/__pycache__/common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/__pycache__/signals.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/__pycache__/uri_validate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/common.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/errors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/parameters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/request_validator.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/signature.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/access_token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/authorization.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/pre_configured.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/request_token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/resource.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/signature_only.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/access_token.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/authorization.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/pre_configured.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/request_token.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/resource.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/signature_only.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/errors.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/parameters.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/request_validator.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/signature.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/utils.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/errors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/parameters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/request_validator.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/tokens.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/backend_application.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/legacy_application.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/mobile_application.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/service_application.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/web_application.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/backend_application.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/base.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/legacy_application.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/mobile_application.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/service_application.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/web_application.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/authorization.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/introspect.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/pre_configured.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/resource.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/revocation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/authorization.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/base.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/introspect.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/metadata.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/pre_configured.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/resource.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/revocation.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/token.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/errors.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/authorization_code.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/client_credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/implicit.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/refresh_token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/resource_owner_password_credentials.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/base.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/client_credentials.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/implicit.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/refresh_token.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/parameters.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/request_validator.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/tokens.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/utils.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/device.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/device.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/request_validator.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/tokens.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__pycache__/pre_configured.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__pycache__/userinfo.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/pre_configured.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/userinfo.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/authorization_code.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/dispatchers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/hybrid.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/implicit.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/refresh_token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/authorization_code.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/base.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/dispatchers.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/hybrid.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/implicit.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/refresh_token.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/request_validator.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/tokens.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/signals.py delete mode 100644 venv/lib/python3.10/site-packages/oauthlib/uri_validate.py delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/REQUESTED delete mode 100644 venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/pick/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pick/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pick/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/AUTHORS.txt delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.10/site-packages/pip-24.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/pip/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/__pip-runner__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/__pycache__/__pip-runner__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/build_env.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/main.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/build_env.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/main.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/check.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/download.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/help.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/index.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/install.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/list.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/search.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/show.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/configuration.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/base.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/collector.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/index/sources.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/locations/base.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/main.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/index.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/link.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/auth.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/download.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/session.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/check.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/pyproject.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/urls.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/models.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/certifi/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansi_test.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/initialise_test.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/isatty_test.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/winterm_test.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64-arm.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/distro.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/distro/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/console.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/status.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/json.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/live.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/region.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/status.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/style.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/table.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/text.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/six.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/_types.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/tomli/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/_api.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/_macos.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/_openssl.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/_ssl_constants.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/_windows.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/truststore/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/vendor.txt delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 venv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py delete mode 100644 venv/lib/python3.10/site-packages/pip/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/zipp.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/__pycache__/tarfile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/tarfile.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_adapters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_itertools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/_legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/abc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/readers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__pycache__/simple.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_common.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/abc.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/readers.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/simple.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__pycache__/context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/context.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.pyi delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/text/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__init__.pyi delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/more.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/more.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/more.pyi delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/recipes.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/recipes.pyi delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_elffile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_elffile.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/metadata.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__main__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/android.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/android.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/api.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/macos.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/py.typed delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/unix.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/version.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/windows.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/_vendor/zipp.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/pyasn1-0.6.0.dist-info/zip-safe delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/__pycache__/debug.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/__pycache__/error.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/__pycache__/streaming.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/__pycache__/decoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/__pycache__/encoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/__pycache__/eoo.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/decoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/encoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/ber/eoo.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/__pycache__/decoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/__pycache__/encoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/decoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/cer/encoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/__pycache__/decoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/__pycache__/encoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/decoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/der/encoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/__pycache__/decoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/__pycache__/encoder.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/decoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/native/encoder.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/codec/streaming.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/__pycache__/integer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/__pycache__/octets.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/integer.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/compat/octets.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/debug.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/error.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/base.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/char.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/constraint.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/error.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/namedtype.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/namedval.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/opentype.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/tag.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/tagmap.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/univ.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/__pycache__/useful.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/base.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/char.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/constraint.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/error.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/namedtype.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/namedval.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/opentype.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/tag.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/tagmap.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/univ.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1/type/useful.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules-0.4.0.dist-info/zip-safe delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/pem.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc1155.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc1157.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc1901.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc1902.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc1905.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2251.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2314.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2315.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2437.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2459.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2511.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2560.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2631.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2634.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2876.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2985.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc2986.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3058.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3114.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3125.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3161.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3274.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3279.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3280.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3281.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3370.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3412.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3414.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3447.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3537.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3560.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3565.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3657.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3709.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3739.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3770.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3779.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3820.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc3852.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4010.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4043.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4055.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4073.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4108.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4210.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4211.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4334.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4357.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4387.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4476.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4490.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4491.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4683.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc4985.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5035.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5083.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5084.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5126.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5208.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5275.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5280.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5480.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5636.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5639.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5649.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5652.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5697.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5751.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5752.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5753.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5755.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5913.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5914.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5915.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5916.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5917.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5924.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5934.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5940.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5958.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc5990.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6010.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6019.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6031.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6032.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6120.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6170.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6187.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6210.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6211.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6402.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6482.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6486.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6487.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6664.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6955.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc6960.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7030.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7191.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7229.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7292.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7296.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7508.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7585.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7633.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7773.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7894.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7906.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc7914.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8017.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8018.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8103.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8209.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8226.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8358.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8360.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8398.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8410.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8418.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8419.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8479.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8494.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8520.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8619.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8649.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8692.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8696.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8702.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8708.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/__pycache__/rfc8769.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/pem.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc1155.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc1157.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc1901.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc1902.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc1905.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2251.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2314.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2315.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2437.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2459.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2511.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2560.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2631.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2634.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2876.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2985.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc2986.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3058.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3114.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3125.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3161.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3274.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3279.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3280.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3281.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3370.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3412.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3414.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3447.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3537.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3560.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3565.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3657.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3709.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3739.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3770.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3779.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3820.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc3852.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4010.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4043.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4055.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4073.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4108.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4210.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4211.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4334.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4357.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4387.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4476.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4490.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4491.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4683.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc4985.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5035.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5083.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5084.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5126.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5208.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5275.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5280.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5480.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5636.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5639.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5649.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5652.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5697.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5751.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5752.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5753.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5755.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5913.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5914.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5915.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5916.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5917.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5924.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5934.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5940.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5958.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc5990.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6010.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6019.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6031.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6032.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6120.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6170.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6187.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6210.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6211.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6402.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6482.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6486.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6487.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6664.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6955.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc6960.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7030.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7191.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7229.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7292.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7296.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7508.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7585.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7633.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7773.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7894.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7906.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc7914.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8017.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8018.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8103.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8209.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8226.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8358.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8360.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8398.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8410.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8418.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8419.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8479.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8494.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8520.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8619.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8649.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8692.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8696.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8702.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8708.py delete mode 100644 venv/lib/python3.10/site-packages/pyasn1_modules/rfc8769.py delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/python_dateutil-2.9.0.post0.dist-info/zip-safe delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/requests-2.32.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/requests/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/__version__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/_internal_utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/adapters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/api.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/auth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/certs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/cookies.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/help.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/hooks.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/models.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/packages.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/sessions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/status_codes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/structures.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests/__version__.py delete mode 100644 venv/lib/python3.10/site-packages/requests/_internal_utils.py delete mode 100644 venv/lib/python3.10/site-packages/requests/adapters.py delete mode 100644 venv/lib/python3.10/site-packages/requests/api.py delete mode 100644 venv/lib/python3.10/site-packages/requests/auth.py delete mode 100644 venv/lib/python3.10/site-packages/requests/certs.py delete mode 100644 venv/lib/python3.10/site-packages/requests/compat.py delete mode 100644 venv/lib/python3.10/site-packages/requests/cookies.py delete mode 100644 venv/lib/python3.10/site-packages/requests/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/requests/help.py delete mode 100644 venv/lib/python3.10/site-packages/requests/hooks.py delete mode 100644 venv/lib/python3.10/site-packages/requests/models.py delete mode 100644 venv/lib/python3.10/site-packages/requests/packages.py delete mode 100644 venv/lib/python3.10/site-packages/requests/sessions.py delete mode 100644 venv/lib/python3.10/site-packages/requests/status_codes.py delete mode 100644 venv/lib/python3.10/site-packages/requests/structures.py delete mode 100644 venv/lib/python3.10/site-packages/requests/utils.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib-2.0.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__pycache__/oauth1_auth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__pycache__/oauth1_session.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__pycache__/oauth2_auth.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/__pycache__/oauth2_session.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/douban.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/ebay.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/facebook.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/fitbit.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/instagram.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/mailchimp.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/plentymarkets.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/slack.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/__pycache__/weibo.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/douban.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/ebay.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/facebook.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/fitbit.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/instagram.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/mailchimp.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/plentymarkets.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/slack.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/compliance_fixes/weibo.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/oauth1_auth.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/oauth1_session.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/oauth2_auth.py delete mode 100644 venv/lib/python3.10/site-packages/requests_oauthlib/oauth2_session.py delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/rsa-4.9.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.10/site-packages/rsa/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/asn1.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/cli.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/key.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/parallel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/pem.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/pkcs1.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/pkcs1_v2.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/prime.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/randnum.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/transform.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/rsa/asn1.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/cli.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/common.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/core.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/key.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/parallel.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/pem.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/pkcs1.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/pkcs1_v2.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/prime.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/py.typed delete mode 100644 venv/lib/python3.10/site-packages/rsa/randnum.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/transform.py delete mode 100644 venv/lib/python3.10/site-packages/rsa/util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.10/site-packages/setuptools-70.0.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_core_metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_entry_points.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_imp.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_importlib.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_itertools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_normalization.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_path.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/_reqs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/archive_util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/build_meta.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/depends.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/discovery.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/dist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/errors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/extension.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/glob.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/installer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/launch.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/logging.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/modified.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/monkey.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/msvc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/namespaces.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/package_index.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/sandbox.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/unicode_utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/warnings.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/__pycache__/windows_support.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_core_metadata.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_collections.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_functools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_itertools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_log.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_macos_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_modified.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/debug.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/errors.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/extension.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/log.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py39compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/zosccompiler.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_collections.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_functools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_itertools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_log.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_macos_compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_modified.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/_framework_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/_framework_compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/compat/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/compat/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/compat/__pycache__/py38.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/compat/py38.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/config.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/core.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/log.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/py39compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/version.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_distutils/zosccompiler.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_entry_points.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_imp.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_importlib.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_itertools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_normalization.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_path.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_reqs.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/zipp.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/backports/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/backports/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/backports/__pycache__/tarfile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_adapters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_collections.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_functools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_itertools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_meta.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_py39compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_text.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_collections.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_functools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_meta.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_py39compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_text.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_adapters.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_common.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_itertools.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/_legacy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/abc.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/readers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__pycache__/simple.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_adapters.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_common.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_compat.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_itertools.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_legacy.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/abc.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/readers.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/simple.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__pycache__/context.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/context.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.pyi delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.pyi delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.pyi delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_elffile.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_tokenizer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/metadata.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_elffile.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_parser.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_tokenizer.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/metadata.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_re.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__pycache__/_types.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_parser.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_re.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_types.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/py.typed delete mode 100644 venv/lib/python3.10/site-packages/setuptools/_vendor/zipp.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/archive_util.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/build_meta.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/cli-32.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/cli-64.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/cli.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/_requirestxt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/alias.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_clib.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_ext.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_py.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/develop.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/dist_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/easy_install.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/editable_wheel.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/egg_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_lib.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_scripts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/register.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/rotate.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/saveopts.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/sdist.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/setopt.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/test.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload_docs.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/_requirestxt.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/alias.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/build.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/build_clib.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/build_ext.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/build_py.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/develop.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/dist_info.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/easy_install.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/editable_wheel.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/egg_info.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/install.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/install_lib.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/register.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/rotate.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/saveopts.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/sdist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/setopt.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/test.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/upload.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/__pycache__/py310.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/__pycache__/py311.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/__pycache__/py39.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/py310.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/py311.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/compat/py39.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__pycache__/_apply_pyprojecttoml.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__pycache__/expand.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__pycache__/pyprojecttoml.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/__pycache__/setupcfg.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/error_reporting.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/extra_validations.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_validations.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__pycache__/formats.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/error_reporting.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/extra_validations.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/formats.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/expand.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/config/setupcfg.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/depends.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/discovery.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/dist.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/errors.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/extension.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/extern/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/extern/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/setuptools/glob.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/gui-32.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/gui-64.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/gui.exe delete mode 100644 venv/lib/python3.10/site-packages/setuptools/installer.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/launch.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/logging.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/modified.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/monkey.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/msvc.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/namespaces.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/package_index.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/sandbox.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl delete mode 100644 venv/lib/python3.10/site-packages/setuptools/script.tmpl delete mode 100644 venv/lib/python3.10/site-packages/setuptools/unicode_utils.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/version.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/warnings.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/wheel.py delete mode 100644 venv/lib/python3.10/site-packages/setuptools/windows_support.py delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/six-1.16.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/six.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3-2.2.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/urllib3-2.2.1.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/urllib3-2.2.1.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/urllib3-2.2.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/urllib3-2.2.1.dist-info/licenses/LICENSE.txt delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/_base_connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/_collections.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/_request_methods.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/_version.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/connectionpool.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/fields.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/filepost.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/http2.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/poolmanager.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/__pycache__/response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/_base_connection.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/_collections.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/_request_methods.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/_version.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/connection.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/connectionpool.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/__pycache__/socks.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/connection.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/fetch.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/request.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/response.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/contrib/socks.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/fields.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/filepost.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/http2.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/poolmanager.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/py.typed delete mode 100644 venv/lib/python3.10/site-packages/urllib3/response.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/connection.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/proxy.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/request.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/response.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/retry.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/ssl_.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/ssltransport.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/timeout.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/url.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/util.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/__pycache__/wait.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/connection.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/proxy.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/request.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/response.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/retry.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/ssl_.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/ssl_match_hostname.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/ssltransport.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/timeout.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/url.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/util.py delete mode 100644 venv/lib/python3.10/site-packages/urllib3/util/wait.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_abnf.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_app.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_cookiejar.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_core.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_exceptions.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_handshake.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_http.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_logging.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_socket.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_ssl_compat.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_url.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_utils.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/__pycache__/_wsdump.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/_abnf.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_app.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_cookiejar.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_core.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_exceptions.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_handshake.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_http.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_logging.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_socket.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_ssl_compat.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_url.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_utils.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/_wsdump.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/py.typed delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/echo-server.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_abnf.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_app.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_cookiejar.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_http.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_url.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/__pycache__/test_websocket.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/data/header01.txt delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/data/header02.txt delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/data/header03.txt delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/echo-server.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_abnf.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_app.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_cookiejar.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_http.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_url.py delete mode 100644 venv/lib/python3.10/site-packages/websocket/tests/test_websocket.py delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/METADATA delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/RECORD delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.10/site-packages/websocket_client-1.8.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.10/site-packages/yaml/__init__.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/__init__.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/composer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/constructor.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/cyaml.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/dumper.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/emitter.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/error.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/events.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/loader.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/nodes.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/parser.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/reader.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/representer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/resolver.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/scanner.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/serializer.cpython-310.pyc delete mode 100644 venv/lib/python3.10/site-packages/yaml/__pycache__/tokens.cpython-310.pyc delete mode 100755 venv/lib/python3.10/site-packages/yaml/_yaml.cpython-310-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.10/site-packages/yaml/composer.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/constructor.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/cyaml.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/dumper.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/emitter.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/error.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/events.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/loader.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/nodes.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/parser.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/reader.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/representer.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/resolver.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/scanner.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/serializer.py delete mode 100644 venv/lib/python3.10/site-packages/yaml/tokens.py delete mode 120000 venv/lib64 delete mode 100644 venv/pyvenv.cfg diff --git a/README.md b/README.md index 0a66d41..b84923e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,68 @@ # k8s-resource-summarizer -A interactive tool for selecting Kubernetes contexts and namespaces, listing pods, and summarizing their CPU and memory resources. Ideal for administrators and developers who need a quick and consolidated view of resource usage in their Kubernetes clusters. + +**k8s-resource-summarizer** is an interactive tool that allows selecting Kubernetes contexts and namespaces, listing pods, and summarizing their CPU and memory resources. This tool is useful for administrators and developers who need a quick and consolidated view of resource usage in their Kubernetes clusters. + +## Features + +- Selection of Kubernetes contexts from the `kube-config` file. +- Selection of namespaces, with default option for `astarte` if available. +- Listing of pods with details of their CPU and memory resources. +- Summarization of CPU and memory resources of all listed pods. + +## Requirements + +- Python 3.x +- Kubernetes client (`kubernetes` package) +- `pick` library for interactive menus + +## Installation + +Clone the repository and install the dependencies: + +```sh +git clone https://github.com/your-user/k8s-resource-summarizer.git +cd k8s-resource-summarizer +pip install -r requirements.txt +``` + + +### Sample Output + +``` +Active host is http://localhost +Listing pods with their IPs in namespace: astarte: +Pod: astarte-appengine-api-7d5496f55b-zwfl5 + Namespace: astarte + Pod IP: 10.244.0.22 + Limits: CPU: 540m, Memory: 1105M + Requests: CPU: 216m, Memory: 552M +---------------------------------------- +Pod: astarte-cfssl-579786b8c5-zsvrd + Namespace: astarte + Pod IP: 10.244.0.15 + Limits: CPU: 200m, Memory: 256M + Requests: CPU: 100m, Memory: 128M +---------------------------------------- +... +Total Resources: + CPU Limits: 2270m + Memory Limits: 3271Mi + CPU Requests: 1368m + Memory Requests: 1790Mi +``` + + + +## Development + +If you wish to contribute to the development of this tool, follow the steps below: + +1. Fork the repository. +2. Create a new branch for your feature or bug fix (`git checkout -b feature/new-feature`). +3. Commit your changes (`git commit -am 'Add new feature'`). +4. Push to the remote repository (`git push origin feature/new-feature`). +5. Create a Pull Request. + +## License + +This project is licensed under the MIT License - see the [LICENSE]() file for details. diff --git a/venv/bin/Activate.ps1 b/venv/bin/Activate.ps1 deleted file mode 100644 index b49d77b..0000000 --- a/venv/bin/Activate.ps1 +++ /dev/null @@ -1,247 +0,0 @@ -<# -.Synopsis -Activate a Python virtual environment for the current PowerShell session. - -.Description -Pushes the python executable for a virtual environment to the front of the -$Env:PATH environment variable and sets the prompt to signify that you are -in a Python virtual environment. Makes use of the command line switches as -well as the `pyvenv.cfg` file values present in the virtual environment. - -.Parameter VenvDir -Path to the directory that contains the virtual environment to activate. The -default value for this is the parent of the directory that the Activate.ps1 -script is located within. - -.Parameter Prompt -The prompt prefix to display when this virtual environment is activated. By -default, this prompt is the name of the virtual environment folder (VenvDir) -surrounded by parentheses and followed by a single space (ie. '(.venv) '). - -.Example -Activate.ps1 -Activates the Python virtual environment that contains the Activate.ps1 script. - -.Example -Activate.ps1 -Verbose -Activates the Python virtual environment that contains the Activate.ps1 script, -and shows extra information about the activation as it executes. - -.Example -Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv -Activates the Python virtual environment located in the specified location. - -.Example -Activate.ps1 -Prompt "MyPython" -Activates the Python virtual environment that contains the Activate.ps1 script, -and prefixes the current prompt with the specified string (surrounded in -parentheses) while the virtual environment is active. - -.Notes -On Windows, it may be required to enable this Activate.ps1 script by setting the -execution policy for the user. You can do this by issuing the following PowerShell -command: - -PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - -For more information on Execution Policies: -https://go.microsoft.com/fwlink/?LinkID=135170 - -#> -Param( - [Parameter(Mandatory = $false)] - [String] - $VenvDir, - [Parameter(Mandatory = $false)] - [String] - $Prompt -) - -<# Function declarations --------------------------------------------------- #> - -<# -.Synopsis -Remove all shell session elements added by the Activate script, including the -addition of the virtual environment's Python executable from the beginning of -the PATH variable. - -.Parameter NonDestructive -If present, do not remove this function from the global namespace for the -session. - -#> -function global:deactivate ([switch]$NonDestructive) { - # Revert to original values - - # The prior prompt: - if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { - Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt - Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT - } - - # The prior PYTHONHOME: - if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { - Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME - Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME - } - - # The prior PATH: - if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { - Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH - Remove-Item -Path Env:_OLD_VIRTUAL_PATH - } - - # Just remove the VIRTUAL_ENV altogether: - if (Test-Path -Path Env:VIRTUAL_ENV) { - Remove-Item -Path env:VIRTUAL_ENV - } - - # Just remove VIRTUAL_ENV_PROMPT altogether. - if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { - Remove-Item -Path env:VIRTUAL_ENV_PROMPT - } - - # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: - if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { - Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force - } - - # Leave deactivate function in the global namespace if requested: - if (-not $NonDestructive) { - Remove-Item -Path function:deactivate - } -} - -<# -.Description -Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the -given folder, and returns them in a map. - -For each line in the pyvenv.cfg file, if that line can be parsed into exactly -two strings separated by `=` (with any amount of whitespace surrounding the =) -then it is considered a `key = value` line. The left hand string is the key, -the right hand is the value. - -If the value starts with a `'` or a `"` then the first and last character is -stripped from the value before being captured. - -.Parameter ConfigDir -Path to the directory that contains the `pyvenv.cfg` file. -#> -function Get-PyVenvConfig( - [String] - $ConfigDir -) { - Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" - - # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). - $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue - - # An empty map will be returned if no config file is found. - $pyvenvConfig = @{ } - - if ($pyvenvConfigPath) { - - Write-Verbose "File exists, parse `key = value` lines" - $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath - - $pyvenvConfigContent | ForEach-Object { - $keyval = $PSItem -split "\s*=\s*", 2 - if ($keyval[0] -and $keyval[1]) { - $val = $keyval[1] - - # Remove extraneous quotations around a string value. - if ("'""".Contains($val.Substring(0, 1))) { - $val = $val.Substring(1, $val.Length - 2) - } - - $pyvenvConfig[$keyval[0]] = $val - Write-Verbose "Adding Key: '$($keyval[0])'='$val'" - } - } - } - return $pyvenvConfig -} - - -<# Begin Activate script --------------------------------------------------- #> - -# Determine the containing directory of this script -$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition -$VenvExecDir = Get-Item -Path $VenvExecPath - -Write-Verbose "Activation script is located in path: '$VenvExecPath'" -Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" -Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" - -# Set values required in priority: CmdLine, ConfigFile, Default -# First, get the location of the virtual environment, it might not be -# VenvExecDir if specified on the command line. -if ($VenvDir) { - Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" -} -else { - Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." - $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") - Write-Verbose "VenvDir=$VenvDir" -} - -# Next, read the `pyvenv.cfg` file to determine any required value such -# as `prompt`. -$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir - -# Next, set the prompt from the command line, or the config file, or -# just use the name of the virtual environment folder. -if ($Prompt) { - Write-Verbose "Prompt specified as argument, using '$Prompt'" -} -else { - Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" - if ($pyvenvCfg -and $pyvenvCfg['prompt']) { - Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" - $Prompt = $pyvenvCfg['prompt']; - } - else { - Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" - Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" - $Prompt = Split-Path -Path $venvDir -Leaf - } -} - -Write-Verbose "Prompt = '$Prompt'" -Write-Verbose "VenvDir='$VenvDir'" - -# Deactivate any currently active virtual environment, but leave the -# deactivate function in place. -deactivate -nondestructive - -# Now set the environment variable VIRTUAL_ENV, used by many tools to determine -# that there is an activated venv. -$env:VIRTUAL_ENV = $VenvDir - -if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { - - Write-Verbose "Setting prompt to '$Prompt'" - - # Set the prompt to include the env name - # Make sure _OLD_VIRTUAL_PROMPT is global - function global:_OLD_VIRTUAL_PROMPT { "" } - Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT - New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt - - function global:prompt { - Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " - _OLD_VIRTUAL_PROMPT - } - $env:VIRTUAL_ENV_PROMPT = $Prompt -} - -# Clear PYTHONHOME -if (Test-Path -Path Env:PYTHONHOME) { - Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME - Remove-Item -Path Env:PYTHONHOME -} - -# Add the venv to the PATH -Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH -$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate deleted file mode 100644 index 78832a8..0000000 --- a/venv/bin/activate +++ /dev/null @@ -1,69 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then - PATH="${_OLD_VIRTUAL_PATH:-}" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then - PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then - hash -r 2> /dev/null - fi - - if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then - PS1="${_OLD_VIRTUAL_PS1:-}" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - unset VIRTUAL_ENV_PROMPT - if [ ! "${1:-}" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -VIRTUAL_ENV="/home/guicrocetti/k8s/scraping-pods/venv" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "${PYTHONHOME:-}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1:-}" - PS1="(venv) ${PS1:-}" - export PS1 - VIRTUAL_ENV_PROMPT="(venv) " - export VIRTUAL_ENV_PROMPT -fi - -# This should detect bash and zsh, which have a hash command that must -# be called to get it to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then - hash -r 2> /dev/null -fi diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh deleted file mode 100644 index 71f9603..0000000 --- a/venv/bin/activate.csh +++ /dev/null @@ -1,26 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/home/guicrocetti/k8s/scraping-pods/venv" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - set prompt = "(venv) $prompt" - setenv VIRTUAL_ENV_PROMPT "(venv) " -endif - -alias pydoc python -m pydoc - -rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish deleted file mode 100644 index 7d6445e..0000000 --- a/venv/bin/activate.fish +++ /dev/null @@ -1,66 +0,0 @@ -# This file must be used with "source /bin/activate.fish" *from fish* -# (https://fishshell.com/); you cannot run it directly. - -function deactivate -d "Exit virtual environment and return to normal shell environment" - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - functions -e fish_prompt - set -e _OLD_FISH_PROMPT_OVERRIDE - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - end - - set -e VIRTUAL_ENV - set -e VIRTUAL_ENV_PROMPT - if test "$argv[1]" != "nondestructive" - # Self-destruct! - functions -e deactivate - end -end - -# Unset irrelevant variables. -deactivate nondestructive - -set -gx VIRTUAL_ENV "/home/guicrocetti/k8s/scraping-pods/venv" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# Unset PYTHONHOME if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # Save the current fish_prompt function as the function _old_fish_prompt. - functions -c fish_prompt _old_fish_prompt - - # With the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command. - set -l old_status $status - - # Output the venv prompt; color taken from the blue of the Python logo. - printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) - - # Restore the return status of the previous command. - echo "exit $old_status" | . - # Output the original/"old" prompt. - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" - set -gx VIRTUAL_ENV_PROMPT "(venv) " -end diff --git a/venv/bin/normalizer b/venv/bin/normalizer deleted file mode 100755 index 31c3611..0000000 --- a/venv/bin/normalizer +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from charset_normalizer.cli import cli_detect -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(cli_detect()) diff --git a/venv/bin/pip b/venv/bin/pip deleted file mode 100755 index 62c180d..0000000 --- a/venv/bin/pip +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 deleted file mode 100755 index 62c180d..0000000 --- a/venv/bin/pip3 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3.10 b/venv/bin/pip3.10 deleted file mode 100755 index 62c180d..0000000 --- a/venv/bin/pip3.10 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pyrsa-decrypt b/venv/bin/pyrsa-decrypt deleted file mode 100755 index 3405505..0000000 --- a/venv/bin/pyrsa-decrypt +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.cli import decrypt -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(decrypt()) diff --git a/venv/bin/pyrsa-encrypt b/venv/bin/pyrsa-encrypt deleted file mode 100755 index 4652c47..0000000 --- a/venv/bin/pyrsa-encrypt +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.cli import encrypt -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(encrypt()) diff --git a/venv/bin/pyrsa-keygen b/venv/bin/pyrsa-keygen deleted file mode 100755 index 40dc1f1..0000000 --- a/venv/bin/pyrsa-keygen +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.cli import keygen -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(keygen()) diff --git a/venv/bin/pyrsa-priv2pub b/venv/bin/pyrsa-priv2pub deleted file mode 100755 index 77b5590..0000000 --- a/venv/bin/pyrsa-priv2pub +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.util import private_to_public -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(private_to_public()) diff --git a/venv/bin/pyrsa-sign b/venv/bin/pyrsa-sign deleted file mode 100755 index c4c9db2..0000000 --- a/venv/bin/pyrsa-sign +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.cli import sign -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(sign()) diff --git a/venv/bin/pyrsa-verify b/venv/bin/pyrsa-verify deleted file mode 100755 index c1a5f72..0000000 --- a/venv/bin/pyrsa-verify +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from rsa.cli import verify -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(verify()) diff --git a/venv/bin/python b/venv/bin/python deleted file mode 120000 index 03ab5ee..0000000 --- a/venv/bin/python +++ /dev/null @@ -1 +0,0 @@ -/home/guicrocetti/.asdf/installs/python/3.10.4/bin/python \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 deleted file mode 120000 index d8654aa..0000000 --- a/venv/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -python \ No newline at end of file diff --git a/venv/bin/python3.10 b/venv/bin/python3.10 deleted file mode 120000 index d8654aa..0000000 --- a/venv/bin/python3.10 +++ /dev/null @@ -1 +0,0 @@ -python \ No newline at end of file diff --git a/venv/bin/wsdump b/venv/bin/wsdump deleted file mode 100755 index 940aa4e..0000000 --- a/venv/bin/wsdump +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/guicrocetti/k8s/scraping-pods/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from websocket._wsdump import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/LICENSE b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/LICENSE deleted file mode 100644 index 2f1b8e1..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2017-2021 Ingy döt Net -Copyright (c) 2006-2016 Kirill Simonov - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/METADATA b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/METADATA deleted file mode 100644 index c890598..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/METADATA +++ /dev/null @@ -1,46 +0,0 @@ -Metadata-Version: 2.1 -Name: PyYAML -Version: 6.0.1 -Summary: YAML parser and emitter for Python -Home-page: https://pyyaml.org/ -Download-URL: https://pypi.org/project/PyYAML/ -Author: Kirill Simonov -Author-email: xi@resolvent.net -License: MIT -Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues -Project-URL: CI, https://github.com/yaml/pyyaml/actions -Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation -Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core -Project-URL: Source Code, https://github.com/yaml/pyyaml -Platform: Any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Cython -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Markup -Requires-Python: >=3.6 -License-File: LICENSE - -YAML is a data serialization format designed for human readability -and interaction with scripting languages. PyYAML is a YAML parser -and emitter for Python. - -PyYAML features a complete YAML 1.1 parser, Unicode support, pickle -support, capable extension API, and sensible error messages. PyYAML -supports standard YAML tags and provides Python-specific tags that -allow to represent an arbitrary Python object. - -PyYAML is applicable for a broad range of tasks from complex -configuration files to object serialization and persistence. diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/RECORD b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/RECORD deleted file mode 100644 index 90aeed8..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/RECORD +++ /dev/null @@ -1,43 +0,0 @@ -PyYAML-6.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -PyYAML-6.0.1.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101 -PyYAML-6.0.1.dist-info/METADATA,sha256=UNNF8-SzzwOKXVo-kV5lXUGH2_wDWMBmGxqISpp5HQk,2058 -PyYAML-6.0.1.dist-info/RECORD,, -PyYAML-6.0.1.dist-info/WHEEL,sha256=iZaXX0Td62Nww8bojl0E84uJHjT41csHPKZmbUBbJPs,152 -PyYAML-6.0.1.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11 -_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402 -_yaml/__pycache__/__init__.cpython-310.pyc,, -yaml/__init__.py,sha256=bhl05qSeO-1ZxlSRjGrvl2m9nrXb1n9-GQatTN0Mrqc,12311 -yaml/__pycache__/__init__.cpython-310.pyc,, -yaml/__pycache__/composer.cpython-310.pyc,, -yaml/__pycache__/constructor.cpython-310.pyc,, -yaml/__pycache__/cyaml.cpython-310.pyc,, -yaml/__pycache__/dumper.cpython-310.pyc,, -yaml/__pycache__/emitter.cpython-310.pyc,, -yaml/__pycache__/error.cpython-310.pyc,, -yaml/__pycache__/events.cpython-310.pyc,, -yaml/__pycache__/loader.cpython-310.pyc,, -yaml/__pycache__/nodes.cpython-310.pyc,, -yaml/__pycache__/parser.cpython-310.pyc,, -yaml/__pycache__/reader.cpython-310.pyc,, -yaml/__pycache__/representer.cpython-310.pyc,, -yaml/__pycache__/resolver.cpython-310.pyc,, -yaml/__pycache__/scanner.cpython-310.pyc,, -yaml/__pycache__/serializer.cpython-310.pyc,, -yaml/__pycache__/tokens.cpython-310.pyc,, -yaml/_yaml.cpython-310-x86_64-linux-gnu.so,sha256=_9iVrASatQgQSFXlKeCe2uK2TyKwk9nd61Cs_-fqAHM,2226000 -yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883 -yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639 -yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851 -yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837 -yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006 -yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533 -yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445 -yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061 -yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440 -yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495 -yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794 -yaml/representer.py,sha256=IuWP-cAW9sHKEnS0gCqSa894k1Bg4cgTxaDwIcbRQ-Y,14190 -yaml/resolver.py,sha256=9L-VYfm4mWHxUD1Vg4X7rjDRK_7VZd6b92wzq7Y2IKY,9004 -yaml/scanner.py,sha256=YEM3iLZSaQwXcQRg2l2R4MdT0zGP2F9eHkKGKnHyWQY,51279 -yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165 -yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573 diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/WHEEL b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/WHEEL deleted file mode 100644 index 2d1b4b8..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.40.0) -Root-Is-Purelib: false -Tag: cp310-cp310-manylinux_2_17_x86_64 -Tag: cp310-cp310-manylinux2014_x86_64 - diff --git a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/top_level.txt deleted file mode 100644 index e6475e9..0000000 --- a/venv/lib/python3.10/site-packages/PyYAML-6.0.1.dist-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -_yaml -yaml diff --git a/venv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc b/venv/lib/python3.10/site-packages/__pycache__/six.cpython-310.pyc deleted file mode 100644 index c1da9b669c79b8fc272c6413bd658cc9cb7d12f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27576 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 (3, 12) or self.pip_imported_during_build(): - return - clear_distutils() - self.spec_for_distutils = lambda: None - - @classmethod - def pip_imported_during_build(cls): - """ - Detect if pip is being imported in a build script. Ref #2355. - """ - import traceback - - return any( - cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None) - ) - - @staticmethod - def frame_file_is_setup(frame): - """ - Return True if the indicated frame suggests a setup.py file. - """ - # some frames may not have __file__ (#2940) - return frame.f_globals.get('__file__', '').endswith('setup.py') - - def spec_for_sensitive_tests(self): - """ - Ensure stdlib distutils when running select tests under CPython. - - python/cpython#91169 - """ - clear_distutils() - self.spec_for_distutils = lambda: None - - sensitive_tests = ( - [ - 'test.test_distutils', - 'test.test_peg_generator', - 'test.test_importlib', - ] - if sys.version_info < (3, 10) - else [ - 'test.test_distutils', - ] - ) - - -for name in DistutilsMetaFinder.sensitive_tests: - setattr( - DistutilsMetaFinder, - f'spec_for_{name}', - DistutilsMetaFinder.spec_for_sensitive_tests, - ) - - -DISTUTILS_FINDER = DistutilsMetaFinder() - - -def add_shim(): - DISTUTILS_FINDER in sys.meta_path or insert_shim() - - -class shim: - def __enter__(self): - insert_shim() - - def __exit__(self, exc, value, tb): - _remove_shim() - - -def insert_shim(): - sys.meta_path.insert(0, DISTUTILS_FINDER) - - -def _remove_shim(): - try: - sys.meta_path.remove(DISTUTILS_FINDER) - except ValueError: - pass - - -if sys.version_info < (3, 12): - # DistutilsMetaFinder can only be disabled in Python < 3.12 (PEP 632) - remove_shim = _remove_shim diff --git a/venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 630517e3f07950d5bf6550c6754a2fb7abc27130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7560 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 diff --git a/venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc b/venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc deleted file mode 100644 index ee2fc1cb27c1a09dba05a9e691e2a39a2702a754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmZ9HJqiLb5QUSiL=nA)ppIf=A>s)vw6h88X51b2XF`%)u=XNadL>(LVP#ej#0T>p z4~F>|?)SSQ=puKgamZ&|eienX3FC&rQ0TCEl{X=UmU}UZ4g;mh`Px(AR2C=sb`(9j zN>ORpdZi9M&59eemNedlZO?t|6+^})LRwQ|IYI9U@}&cp*w|2&P7G@Y4OR^lbOdwu m8CQ$xdDLVMW!= (3, 6) else ImportError - raise exc("No module named '_yaml'") -else: - from yaml._yaml import * - import warnings - warnings.warn( - 'The _yaml extension module is now located at yaml._yaml' - ' and its location is subject to change. To use the' - ' LibYAML-based parser and emitter, import from `yaml`:' - ' `from yaml import CLoader as Loader, CDumper as Dumper`.', - DeprecationWarning - ) - del warnings - # Don't `del yaml` here because yaml is actually an existing - # namespace member of _yaml. - -__name__ = '_yaml' -# If the module is top-level (i.e. not a part of any specific package) -# then the attribute should be set to ''. -# https://docs.python.org/3.8/library/types.html -__package__ = '' diff --git a/venv/lib/python3.10/site-packages/_yaml/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/_yaml/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 399d92cc8885ad1a14613c9ec3d16cfd8b8a5f6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmYjO!EO^V5VdzV$u>!)sz`9@!M7@?&4Rcfgb=8u5>lE2M5WfCjxg-v^D;JxbTYE@&=h8&>3$o(-_;uRt52Bo*>f4T8JSQ}5c| zY#)skDHLDkKqM=GlS5j`4!sCJ-u{>@fYbp3Hx^`7orq;=?3&Fz_>T0xZ(5sQ7s)~ukj$4N(<%dNMRNVzBqr0W^wp0` z#Z9sTxk~(=lX7DhN{i(fX|euaH6bKp(f>PLON U7sNRBH^Ko9qUd+fiK00A1K=y=3.7 -License-File: LICENSE - -cachetools -======================================================================== - -.. image:: https://img.shields.io/pypi/v/cachetools - :target: https://pypi.org/project/cachetools/ - :alt: Latest PyPI version - -.. image:: https://img.shields.io/github/actions/workflow/status/tkem/cachetools/ci.yml - :target: https://github.com/tkem/cachetools/actions/workflows/ci.yml - :alt: CI build status - -.. image:: https://img.shields.io/readthedocs/cachetools - :target: https://cachetools.readthedocs.io/ - :alt: Documentation build status - -.. image:: https://img.shields.io/codecov/c/github/tkem/cachetools/master.svg - :target: https://codecov.io/gh/tkem/cachetools - :alt: Test coverage - -.. image:: https://img.shields.io/librariesio/sourcerank/pypi/cachetools - :target: https://libraries.io/pypi/cachetools - :alt: Libraries.io SourceRank - -.. image:: https://img.shields.io/github/license/tkem/cachetools - :target: https://raw.github.com/tkem/cachetools/master/LICENSE - :alt: License - -.. image:: https://img.shields.io/badge/code%20style-black-000000.svg - :target: https://github.com/psf/black - :alt: Code style: black - - -This module provides various memoizing collections and decorators, -including variants of the Python Standard Library's `@lru_cache`_ -function decorator. - -.. code-block:: python - - from cachetools import cached, LRUCache, TTLCache - - # speed up calculating Fibonacci numbers with dynamic programming - @cached(cache={}) - def fib(n): - return n if n < 2 else fib(n - 1) + fib(n - 2) - - # cache least recently used Python Enhancement Proposals - @cached(cache=LRUCache(maxsize=32)) - def get_pep(num): - url = 'http://www.python.org/dev/peps/pep-%04d/' % num - with urllib.request.urlopen(url) as s: - return s.read() - - # cache weather data for no longer than ten minutes - @cached(cache=TTLCache(maxsize=1024, ttl=600)) - def get_weather(place): - return owm.weather_at_place(place).get_weather() - -For the purpose of this module, a *cache* is a mutable_ mapping_ of a -fixed maximum size. When the cache is full, i.e. by adding another -item the cache would exceed its maximum size, the cache must choose -which item(s) to discard based on a suitable `cache algorithm`_. - -This module provides multiple cache classes based on different cache -algorithms, as well as decorators for easily memoizing function and -method calls. - - -Installation ------------------------------------------------------------------------- - -cachetools is available from PyPI_ and can be installed by running:: - - pip install cachetools - -Typing stubs for this package are provided by typeshed_ and can be -installed by running:: - - pip install types-cachetools - - -Project Resources ------------------------------------------------------------------------- - -- `Documentation`_ -- `Issue tracker`_ -- `Source code`_ -- `Change log`_ - - -Related Projects ------------------------------------------------------------------------- - -- asyncache_: Helpers to use cachetools with async functions -- cacheing_: Pure Python Cacheing Library -- CacheToolsUtils_: Cachetools Utilities -- kids.cache_: Kids caching library -- shelved-cache_: Persistent cache for Python cachetools - - -License ------------------------------------------------------------------------- - -Copyright (c) 2014-2024 Thomas Kemmer. - -Licensed under the `MIT License`_. - - -.. _@lru_cache: https://docs.python.org/3/library/functools.html#functools.lru_cache -.. _mutable: https://docs.python.org/dev/glossary.html#term-mutable -.. _mapping: https://docs.python.org/dev/glossary.html#term-mapping -.. _cache algorithm: https://en.wikipedia.org/wiki/Cache_algorithms - -.. _PyPI: https://pypi.org/project/cachetools/ -.. _typeshed: https://github.com/python/typeshed/ -.. _Documentation: https://cachetools.readthedocs.io/ -.. _Issue tracker: https://github.com/tkem/cachetools/issues/ -.. _Source code: https://github.com/tkem/cachetools/ -.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst -.. _MIT License: https://raw.github.com/tkem/cachetools/master/LICENSE - -.. _asyncache: https://pypi.org/project/asyncache/ -.. _cacheing: https://github.com/breid48/cacheing -.. _CacheToolsUtils: https://pypi.org/project/CacheToolsUtils/ -.. _kids.cache: https://pypi.org/project/kids.cache/ -.. _shelved-cache: https://pypi.org/project/shelved-cache/ diff --git a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/RECORD b/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/RECORD deleted file mode 100644 index 9d9f222..0000000 --- a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/RECORD +++ /dev/null @@ -1,12 +0,0 @@ -cachetools-5.3.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -cachetools-5.3.3.dist-info/LICENSE,sha256=L00v8F8Fxdo4efQCkrdgAzLXddx-0yDUPdQvPNfZLJs,1085 -cachetools-5.3.3.dist-info/METADATA,sha256=8rVPp2Ex0NAh8seyqBKCGnqjIxXQRPG73v0AT8USKjY,5328 -cachetools-5.3.3.dist-info/RECORD,, -cachetools-5.3.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 -cachetools-5.3.3.dist-info/top_level.txt,sha256=ai2FH78TGwoBcCgVfoqbzk5IQCtnDukdSs4zKuVPvDs,11 -cachetools/__init__.py,sha256=DXPKkJUBff3WW8ufHS8TU53eOzlZ6wGX-GXNAH0Hvdk,24981 -cachetools/__pycache__/__init__.cpython-310.pyc,, -cachetools/__pycache__/func.cpython-310.pyc,, -cachetools/__pycache__/keys.cpython-310.pyc,, -cachetools/func.py,sha256=KxCw7akhw-WkltvsfgzkL4XFGxd54srqroKzV3ZP2OM,3616 -cachetools/keys.py,sha256=d-cpW252E_uV50ySlw13IevdNQnSc0MfiMViImQktRI,1613 diff --git a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/WHEEL b/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/WHEEL deleted file mode 100644 index 98c0d20..0000000 --- a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.42.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/top_level.txt deleted file mode 100644 index 50d1408..0000000 --- a/venv/lib/python3.10/site-packages/cachetools-5.3.3.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -cachetools diff --git a/venv/lib/python3.10/site-packages/cachetools/__init__.py b/venv/lib/python3.10/site-packages/cachetools/__init__.py deleted file mode 100644 index 341c1c7..0000000 --- a/venv/lib/python3.10/site-packages/cachetools/__init__.py +++ /dev/null @@ -1,844 +0,0 @@ -"""Extensible memoizing collections and decorators.""" - -__all__ = ( - "Cache", - "FIFOCache", - "LFUCache", - "LRUCache", - "MRUCache", - "RRCache", - "TLRUCache", - "TTLCache", - "cached", - "cachedmethod", -) - -__version__ = "5.3.3" - -import collections -import collections.abc -import functools -import heapq -import random -import time - -from . import keys - - -class _DefaultSize: - - __slots__ = () - - def __getitem__(self, _): - return 1 - - def __setitem__(self, _, value): - assert value == 1 - - def pop(self, _): - return 1 - - -class Cache(collections.abc.MutableMapping): - """Mutable mapping to serve as a simple cache or cache base class.""" - - __marker = object() - - __size = _DefaultSize() - - def __init__(self, maxsize, getsizeof=None): - if getsizeof: - self.getsizeof = getsizeof - if self.getsizeof is not Cache.getsizeof: - self.__size = dict() - self.__data = dict() - self.__currsize = 0 - self.__maxsize = maxsize - - def __repr__(self): - return "%s(%s, maxsize=%r, currsize=%r)" % ( - self.__class__.__name__, - repr(self.__data), - self.__maxsize, - self.__currsize, - ) - - def __getitem__(self, key): - try: - return self.__data[key] - except KeyError: - return self.__missing__(key) - - def __setitem__(self, key, value): - maxsize = self.__maxsize - size = self.getsizeof(value) - if size > maxsize: - raise ValueError("value too large") - if key not in self.__data or self.__size[key] < size: - while self.__currsize + size > maxsize: - self.popitem() - if key in self.__data: - diffsize = size - self.__size[key] - else: - diffsize = size - self.__data[key] = value - self.__size[key] = size - self.__currsize += diffsize - - def __delitem__(self, key): - size = self.__size.pop(key) - del self.__data[key] - self.__currsize -= size - - def __contains__(self, key): - return key in self.__data - - def __missing__(self, key): - raise KeyError(key) - - def __iter__(self): - return iter(self.__data) - - def __len__(self): - return len(self.__data) - - def get(self, key, default=None): - if key in self: - return self[key] - else: - return default - - def pop(self, key, default=__marker): - if key in self: - value = self[key] - del self[key] - elif default is self.__marker: - raise KeyError(key) - else: - value = default - return value - - def setdefault(self, key, default=None): - if key in self: - value = self[key] - else: - self[key] = value = default - return value - - @property - def maxsize(self): - """The maximum size of the cache.""" - return self.__maxsize - - @property - def currsize(self): - """The current size of the cache.""" - return self.__currsize - - @staticmethod - def getsizeof(value): - """Return the size of a cache element's value.""" - return 1 - - -class FIFOCache(Cache): - """First In First Out (FIFO) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__order = collections.OrderedDict() - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - try: - self.__order.move_to_end(key) - except KeyError: - self.__order[key] = None - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__order[key] - - def popitem(self): - """Remove and return the `(key, value)` pair first inserted.""" - try: - key = next(iter(self.__order)) - except StopIteration: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - -class LFUCache(Cache): - """Least Frequently Used (LFU) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__counter = collections.Counter() - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - value = cache_getitem(self, key) - if key in self: # __missing__ may not store item - self.__counter[key] -= 1 - return value - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - self.__counter[key] -= 1 - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__counter[key] - - def popitem(self): - """Remove and return the `(key, value)` pair least frequently used.""" - try: - ((key, _),) = self.__counter.most_common(1) - except ValueError: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - -class LRUCache(Cache): - """Least Recently Used (LRU) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__order = collections.OrderedDict() - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - value = cache_getitem(self, key) - if key in self: # __missing__ may not store item - self.__update(key) - return value - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - self.__update(key) - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__order[key] - - def popitem(self): - """Remove and return the `(key, value)` pair least recently used.""" - try: - key = next(iter(self.__order)) - except StopIteration: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - def __update(self, key): - try: - self.__order.move_to_end(key) - except KeyError: - self.__order[key] = None - - -class MRUCache(Cache): - """Most Recently Used (MRU) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__order = collections.OrderedDict() - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - value = cache_getitem(self, key) - if key in self: # __missing__ may not store item - self.__update(key) - return value - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - self.__update(key) - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__order[key] - - def popitem(self): - """Remove and return the `(key, value)` pair most recently used.""" - try: - key = next(iter(self.__order)) - except StopIteration: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - def __update(self, key): - try: - self.__order.move_to_end(key, last=False) - except KeyError: - self.__order[key] = None - - -class RRCache(Cache): - """Random Replacement (RR) cache implementation.""" - - def __init__(self, maxsize, choice=random.choice, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__choice = choice - - @property - def choice(self): - """The `choice` function used by the cache.""" - return self.__choice - - def popitem(self): - """Remove and return a random `(key, value)` pair.""" - try: - key = self.__choice(list(self)) - except IndexError: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - -class _TimedCache(Cache): - """Base class for time aware cache implementations.""" - - class _Timer: - def __init__(self, timer): - self.__timer = timer - self.__nesting = 0 - - def __call__(self): - if self.__nesting == 0: - return self.__timer() - else: - return self.__time - - def __enter__(self): - if self.__nesting == 0: - self.__time = time = self.__timer() - else: - time = self.__time - self.__nesting += 1 - return time - - def __exit__(self, *exc): - self.__nesting -= 1 - - def __reduce__(self): - return _TimedCache._Timer, (self.__timer,) - - def __getattr__(self, name): - return getattr(self.__timer, name) - - def __init__(self, maxsize, timer=time.monotonic, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__timer = _TimedCache._Timer(timer) - - def __repr__(self, cache_repr=Cache.__repr__): - with self.__timer as time: - self.expire(time) - return cache_repr(self) - - def __len__(self, cache_len=Cache.__len__): - with self.__timer as time: - self.expire(time) - return cache_len(self) - - @property - def currsize(self): - with self.__timer as time: - self.expire(time) - return super().currsize - - @property - def timer(self): - """The timer function used by the cache.""" - return self.__timer - - def clear(self): - with self.__timer as time: - self.expire(time) - Cache.clear(self) - - def get(self, *args, **kwargs): - with self.__timer: - return Cache.get(self, *args, **kwargs) - - def pop(self, *args, **kwargs): - with self.__timer: - return Cache.pop(self, *args, **kwargs) - - def setdefault(self, *args, **kwargs): - with self.__timer: - return Cache.setdefault(self, *args, **kwargs) - - -class TTLCache(_TimedCache): - """LRU Cache implementation with per-item time-to-live (TTL) value.""" - - class _Link: - - __slots__ = ("key", "expires", "next", "prev") - - def __init__(self, key=None, expires=None): - self.key = key - self.expires = expires - - def __reduce__(self): - return TTLCache._Link, (self.key, self.expires) - - def unlink(self): - next = self.next - prev = self.prev - prev.next = next - next.prev = prev - - def __init__(self, maxsize, ttl, timer=time.monotonic, getsizeof=None): - _TimedCache.__init__(self, maxsize, timer, getsizeof) - self.__root = root = TTLCache._Link() - root.prev = root.next = root - self.__links = collections.OrderedDict() - self.__ttl = ttl - - def __contains__(self, key): - try: - link = self.__links[key] # no reordering - except KeyError: - return False - else: - return self.timer() < link.expires - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - try: - link = self.__getlink(key) - except KeyError: - expired = False - else: - expired = not (self.timer() < link.expires) - if expired: - return self.__missing__(key) - else: - return cache_getitem(self, key) - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - with self.timer as time: - self.expire(time) - cache_setitem(self, key, value) - try: - link = self.__getlink(key) - except KeyError: - self.__links[key] = link = TTLCache._Link(key) - else: - link.unlink() - link.expires = time + self.__ttl - link.next = root = self.__root - link.prev = prev = root.prev - prev.next = root.prev = link - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - link = self.__links.pop(key) - link.unlink() - if not (self.timer() < link.expires): - raise KeyError(key) - - def __iter__(self): - root = self.__root - curr = root.next - while curr is not root: - # "freeze" time for iterator access - with self.timer as time: - if time < curr.expires: - yield curr.key - curr = curr.next - - def __setstate__(self, state): - self.__dict__.update(state) - root = self.__root - root.prev = root.next = root - for link in sorted(self.__links.values(), key=lambda obj: obj.expires): - link.next = root - link.prev = prev = root.prev - prev.next = root.prev = link - self.expire(self.timer()) - - @property - def ttl(self): - """The time-to-live value of the cache's items.""" - return self.__ttl - - def expire(self, time=None): - """Remove expired items from the cache.""" - if time is None: - time = self.timer() - root = self.__root - curr = root.next - links = self.__links - cache_delitem = Cache.__delitem__ - while curr is not root and not (time < curr.expires): - cache_delitem(self, curr.key) - del links[curr.key] - next = curr.next - curr.unlink() - curr = next - - def popitem(self): - """Remove and return the `(key, value)` pair least recently used that - has not already expired. - - """ - with self.timer as time: - self.expire(time) - try: - key = next(iter(self.__links)) - except StopIteration: - raise KeyError("%s is empty" % type(self).__name__) from None - else: - return (key, self.pop(key)) - - def __getlink(self, key): - value = self.__links[key] - self.__links.move_to_end(key) - return value - - -class TLRUCache(_TimedCache): - """Time aware Least Recently Used (TLRU) cache implementation.""" - - @functools.total_ordering - class _Item: - - __slots__ = ("key", "expires", "removed") - - def __init__(self, key=None, expires=None): - self.key = key - self.expires = expires - self.removed = False - - def __lt__(self, other): - return self.expires < other.expires - - def __init__(self, maxsize, ttu, timer=time.monotonic, getsizeof=None): - _TimedCache.__init__(self, maxsize, timer, getsizeof) - self.__items = collections.OrderedDict() - self.__order = [] - self.__ttu = ttu - - def __contains__(self, key): - try: - item = self.__items[key] # no reordering - except KeyError: - return False - else: - return self.timer() < item.expires - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - try: - item = self.__getitem(key) - except KeyError: - expired = False - else: - expired = not (self.timer() < item.expires) - if expired: - return self.__missing__(key) - else: - return cache_getitem(self, key) - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - with self.timer as time: - expires = self.__ttu(key, value, time) - if not (time < expires): - return # skip expired items - self.expire(time) - cache_setitem(self, key, value) - # removing an existing item would break the heap structure, so - # only mark it as removed for now - try: - self.__getitem(key).removed = True - except KeyError: - pass - self.__items[key] = item = TLRUCache._Item(key, expires) - heapq.heappush(self.__order, item) - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - with self.timer as time: - # no self.expire() for performance reasons, e.g. self.clear() [#67] - cache_delitem(self, key) - item = self.__items.pop(key) - item.removed = True - if not (time < item.expires): - raise KeyError(key) - - def __iter__(self): - for curr in self.__order: - # "freeze" time for iterator access - with self.timer as time: - if time < curr.expires and not curr.removed: - yield curr.key - - @property - def ttu(self): - """The local time-to-use function used by the cache.""" - return self.__ttu - - def expire(self, time=None): - """Remove expired items from the cache.""" - if time is None: - time = self.timer() - items = self.__items - order = self.__order - # clean up the heap if too many items are marked as removed - if len(order) > len(items) * 2: - self.__order = order = [item for item in order if not item.removed] - heapq.heapify(order) - cache_delitem = Cache.__delitem__ - while order and (order[0].removed or not (time < order[0].expires)): - item = heapq.heappop(order) - if not item.removed: - cache_delitem(self, item.key) - del items[item.key] - - def popitem(self): - """Remove and return the `(key, value)` pair least recently used that - has not already expired. - - """ - with self.timer as time: - self.expire(time) - try: - key = next(iter(self.__items)) - except StopIteration: - raise KeyError("%s is empty" % self.__class__.__name__) from None - else: - return (key, self.pop(key)) - - def __getitem(self, key): - value = self.__items[key] - self.__items.move_to_end(key) - return value - - -_CacheInfo = collections.namedtuple( - "CacheInfo", ["hits", "misses", "maxsize", "currsize"] -) - - -def cached(cache, key=keys.hashkey, lock=None, info=False): - """Decorator to wrap a function with a memoizing callable that saves - results in a cache. - - """ - - def decorator(func): - if info: - hits = misses = 0 - - if isinstance(cache, Cache): - - def getinfo(): - nonlocal hits, misses - return _CacheInfo(hits, misses, cache.maxsize, cache.currsize) - - elif isinstance(cache, collections.abc.Mapping): - - def getinfo(): - nonlocal hits, misses - return _CacheInfo(hits, misses, None, len(cache)) - - else: - - def getinfo(): - nonlocal hits, misses - return _CacheInfo(hits, misses, 0, 0) - - if cache is None: - - def wrapper(*args, **kwargs): - nonlocal misses - misses += 1 - return func(*args, **kwargs) - - def cache_clear(): - nonlocal hits, misses - hits = misses = 0 - - cache_info = getinfo - - elif lock is None: - - def wrapper(*args, **kwargs): - nonlocal hits, misses - k = key(*args, **kwargs) - try: - result = cache[k] - hits += 1 - return result - except KeyError: - misses += 1 - v = func(*args, **kwargs) - try: - cache[k] = v - except ValueError: - pass # value too large - return v - - def cache_clear(): - nonlocal hits, misses - cache.clear() - hits = misses = 0 - - cache_info = getinfo - - else: - - def wrapper(*args, **kwargs): - nonlocal hits, misses - k = key(*args, **kwargs) - try: - with lock: - result = cache[k] - hits += 1 - return result - except KeyError: - with lock: - misses += 1 - v = func(*args, **kwargs) - # in case of a race, prefer the item already in the cache - try: - with lock: - return cache.setdefault(k, v) - except ValueError: - return v # value too large - - def cache_clear(): - nonlocal hits, misses - with lock: - cache.clear() - hits = misses = 0 - - def cache_info(): - with lock: - return getinfo() - - else: - if cache is None: - - def wrapper(*args, **kwargs): - return func(*args, **kwargs) - - def cache_clear(): - pass - - elif lock is None: - - def wrapper(*args, **kwargs): - k = key(*args, **kwargs) - try: - return cache[k] - except KeyError: - pass # key not found - v = func(*args, **kwargs) - try: - cache[k] = v - except ValueError: - pass # value too large - return v - - def cache_clear(): - cache.clear() - - else: - - def wrapper(*args, **kwargs): - k = key(*args, **kwargs) - try: - with lock: - return cache[k] - except KeyError: - pass # key not found - v = func(*args, **kwargs) - # in case of a race, prefer the item already in the cache - try: - with lock: - return cache.setdefault(k, v) - except ValueError: - return v # value too large - - def cache_clear(): - with lock: - cache.clear() - - cache_info = None - - wrapper.cache = cache - wrapper.cache_key = key - wrapper.cache_lock = lock - wrapper.cache_clear = cache_clear - wrapper.cache_info = cache_info - - return functools.update_wrapper(wrapper, func) - - return decorator - - -def cachedmethod(cache, key=keys.methodkey, lock=None): - """Decorator to wrap a class or instance method with a memoizing - callable that saves results in a cache. - - """ - - def decorator(method): - if lock is None: - - def wrapper(self, *args, **kwargs): - c = cache(self) - if c is None: - return method(self, *args, **kwargs) - k = key(self, *args, **kwargs) - try: - return c[k] - except KeyError: - pass # key not found - v = method(self, *args, **kwargs) - try: - c[k] = v - except ValueError: - pass # value too large - return v - - def clear(self): - c = cache(self) - if c is not None: - c.clear() - - else: - - def wrapper(self, *args, **kwargs): - c = cache(self) - if c is None: - return method(self, *args, **kwargs) - k = key(self, *args, **kwargs) - try: - with lock(self): - return c[k] - except KeyError: - pass # key not found - v = method(self, *args, **kwargs) - # in case of a race, prefer the item already in the cache - try: - with lock(self): - return c.setdefault(k, v) - except ValueError: - return v # value too large - - def clear(self): - c = cache(self) - if c is not None: - with lock(self): - c.clear() - - wrapper.cache = cache - wrapper.cache_key = key - wrapper.cache_lock = lock - wrapper.cache_clear = clear - - return functools.update_wrapper(wrapper, method) - - return decorator diff --git a/venv/lib/python3.10/site-packages/cachetools/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/cachetools/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index cc36754bdb9dac31751073740eeaf7cf402c984f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25267 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 Uo;^#*cBdPS#vJ`EG?(Z81qicmT>t<8 diff --git a/venv/lib/python3.10/site-packages/cachetools/__pycache__/keys.cpython-310.pyc b/venv/lib/python3.10/site-packages/cachetools/__pycache__/keys.cpython-310.pyc deleted file mode 100644 index 96606d4a6072bc6bf08012be8c0676346fec82c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2282 zcma)7TWcgm6t3#-xo$G9x@O&rYvFysomtt34HCkNvI^n~8xa|lrqflE=}liIRn>_Z zCZHtGzWb)&Oa4;7`UeExeDXUrlgVU6*n&D$=hW#_-?`N3Vtu{MFn;CFhF{eg`;(aE z5rBD&X+8##Y``QR@Xwj_q<_Ywue?)#;46Q~2Z0P^?Tig-vMw7~>#`|ZSR1mv!@Acd z?|-R|#jwm{n-sYb!$ONpWkoVc@;xC{TuP54rSZaK;C9a1C&P2(B^b8nOuvU}YO{Thb%A z)mr!kKq&c5IZoB&uTO-fjj*H03YD8uD>GvV>jzzNl%%QHRU(ekR7sH+A}h4h&qa~P zsx2_aN(+^$Oy%}NVG@X;ACJ_M|1(2m6y}wH!y+qFo8WS1!X_DRE^-mgKg|+jdP3|d zC8E?6Vvc)99f%}%HjIsO8ENUhPm^68>3JrKA~hn(V4EOCl$l=JsXdK7MDt=$h-rR` zX#~iWJ!dE0)RU}ax-;cdcFF@tLnqx~=lp4xS2veq7>4B3VU(5%DGrQEhgCqLsc}cn!yOe>*Pukq|TeX!vj8fZ5eIvLN6x2F9z-DMYuS0 zu(53FP1%&6dZ&Dc=^8}mT$9SVuNzpZT7fj`%8#UUzRk!rI%JB|>3$*`eK%X0cV{ugi$RD<`D;w`9>|pI zmymU4x%H;}H~)83z70;jn^#C2Gtak}AVGsP< zyy9(5UfPF1hs1ApHyhKjn{H!Ox;Q66(!hsf;zQvn4K#N>7hAN;tkvp&V zpyG!sQK?#6dn#8yj`j8t`)Pws?p*x(dRu9M|BKn~Ei|v-AuJ0#^xzzx*7x2C zVg^iT5G$CpfELpA7M6;K`faQ$u=G2SZDP&=-9{8$mbGgkcjybc3sx5Su6zV^)ea$h zNOq{}cKi)~4_#N2^l7)LDSWOYrYYXFGfe@|ZxEr=3.6 -License-File: LICENSE - -Certifi: Python SSL Certificates -================================ - -Certifi provides Mozilla's carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' - -Or from the command line:: - - $ python -m certifi - /usr/local/lib/python3.7/site-packages/certifi/cacert.pem - -Enjoy! - -.. _`Requests`: https://requests.readthedocs.io/en/master/ - -Addition/Removal of Certificates --------------------------------- - -Certifi does not support any addition/removal or other modification of the -CA trust store content. This project is intended to provide a reliable and -highly portable root of trust to python deployments. Look to upstream projects -for methods to use alternate trust. diff --git a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/RECORD b/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/RECORD deleted file mode 100644 index 3f70d91..0000000 --- a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/RECORD +++ /dev/null @@ -1,14 +0,0 @@ -certifi-2024.2.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -certifi-2024.2.2.dist-info/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 -certifi-2024.2.2.dist-info/METADATA,sha256=1noreLRChpOgeSj0uJT1mehiBl8ngh33Guc7KdvzYYM,2170 -certifi-2024.2.2.dist-info/RECORD,, -certifi-2024.2.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 -certifi-2024.2.2.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 -certifi/__init__.py,sha256=ljtEx-EmmPpTe2SOd5Kzsujm_lUD0fKJVnE9gzce320,94 -certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 -certifi/__pycache__/__init__.cpython-310.pyc,, -certifi/__pycache__/__main__.cpython-310.pyc,, -certifi/__pycache__/core.cpython-310.pyc,, -certifi/cacert.pem,sha256=ejR8qP724p-CtuR4U1WmY1wX-nVeCUD2XxWqj8e9f5I,292541 -certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426 -certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/WHEEL b/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/WHEEL deleted file mode 100644 index 98c0d20..0000000 --- a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.42.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/top_level.txt deleted file mode 100644 index 963eac5..0000000 --- a/venv/lib/python3.10/site-packages/certifi-2024.2.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -certifi diff --git a/venv/lib/python3.10/site-packages/certifi/__init__.py b/venv/lib/python3.10/site-packages/certifi/__init__.py deleted file mode 100644 index 1c91f3e..0000000 --- a/venv/lib/python3.10/site-packages/certifi/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .core import contents, where - -__all__ = ["contents", "where"] -__version__ = "2024.02.02" diff --git a/venv/lib/python3.10/site-packages/certifi/__main__.py b/venv/lib/python3.10/site-packages/certifi/__main__.py deleted file mode 100644 index 8945b5d..0000000 --- a/venv/lib/python3.10/site-packages/certifi/__main__.py +++ /dev/null @@ -1,12 +0,0 @@ -import argparse - -from certifi import contents, where - -parser = argparse.ArgumentParser() -parser.add_argument("-c", "--contents", action="store_true") -args = parser.parse_args() - -if args.contents: - print(contents()) -else: - print(where()) diff --git a/venv/lib/python3.10/site-packages/certifi/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/certifi/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 79a03749c91e13385f77517569832563fe62081a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmYk1F;2uV5Jhb#*^L&h#1UvyY#agw1wx#F0xD843ifPbZDL2ZH)y#DN8n0sskj0a zPPbn(Z}c^zFOAu5HzewdKJVY+{8`MoSTv8Z-BpAnk`82~4INp-D3MGi9cvPqHmS^B zNU{2*@vLAW7e;&3-i7R=M~imJu}Q?|rmpJSvZ`Y}6y*&| z-^8w$fCYcAyf-8A?x=({0=-xKaOb!aww;vjc9W5g&!}fUsCPb{d~ftkd0la*Jnp7e l9NG>Y7ihiOD-NKv@&M&@3i)gF7( zPiPknliD3}A#%Ss+_`v2dvDxm(6H6Av2RFEdsHu9_iU+ZU}Yx@tqQPKvh|r^rqH~V zO_{bz7`B0C!z%f}+O1ux=5&5?%#5^3A8`xM(evNLjJ_b z#VuAqM9m|NjJ;4m%0U4%>$7iG~3xP&F-PzDe}*kA3kWROpB#%lI|tjLN$koG}A%~ zfW=JMqXzNCseX>^Qw&6n$`T9>cIv=zio63yONokGSz8znrMeca3$NK|zW_x;g!@F! zYpNNi$F%2g)`u~1wWr;l-zT6GUFrq8+@}=Y-y|o_nkfyPJPR*yZ-k~g0%`rx)? zAgEQUG^8$*xOOdAJkAC?2MPp>Awo6w=`Q0AcVANo$6J$Quq($w7%x$2mYq-&h&(Mg zq^;rD7~~{wm!(K}4BqM+y$jAc2QS+k%~5$9^ahgw45x#98P{U52rK{Z@n^6*OwWwA zcgHbHn07Slxx=)0JztkbX^~YtCy)~`m|$Dz_#AKv*A$V+ZaIx&1_iouQxF!&71$gC z999PaU-NWSHg6C(#Fh^*bvB7axKF6W2yZ+CG1-9r26;SA8`OADb13N-l|n7A15v)u z_QaXDuUkti#s|7&sWzoyi6Bo@u`hvx3-Gz|fiQ(sDKdN1&^bihCjU!NG|}{!90AK; zv)`*P-6OZh`s7E#paNWYj-lE&$wQ*%o&nGC`5C&cf3_y)!9v3^ZqXIF1<1I_goYZdF(aEK_k+~L&1Qdm{N#CdU-`TY*xWXR;d>Oip=xMS`dyw@$eL2wG zBS5+jH-7`%LgX8sVTF=+K{X|w$vo)@yr8i9p|)HsJ;0Z?{_7AHOdGnw1FLkLUGW6g z$SA||J($>>$~tPeeo5HyFr&ZX`uiY&?wDA(H|2-8b|2SnnNl3{A_b=$b*KhZL>8Lr zfshKaA7^>1Fwf$c3H;5(qfYlgM;nH1b#q67P^znWiFssTL_(V keKBwYikMa@D>Lf8Wt6>RjQztL_BVX+mU-b{ None: - _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] - - -if sys.version_info >= (3, 11): - - from importlib.resources import as_file, files - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the file - # in cases where we're inside of a zipimport situation until someone - # actually calls where(), but we don't want to re-extract the file - # on every call of where(), so we'll do it once then store it in a - # global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you to - # manage the cleanup of this file, so it doesn't actually return a - # path, it returns a context manager that will give you the path - # when you enter it and will do any cleanup when you leave it. In - # the common case of not needing a temporary file, it will just - # return the file system location and the __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") - -elif sys.version_info >= (3, 7): - - from importlib.resources import path as get_path, read_text - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the - # file in cases where we're inside of a zipimport situation until - # someone actually calls where(), but we don't want to re-extract - # the file on every call of where(), so we'll do it once then store - # it in a global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you - # to manage the cleanup of this file, so it doesn't actually - # return a path, it returns a context manager that will give - # you the path when you enter it and will do any cleanup when - # you leave it. In the common case of not needing a temporary - # file, it will just return the file system location and the - # __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = get_path("certifi", "cacert.pem") - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return read_text("certifi", "cacert.pem", encoding="ascii") - -else: - import os - import types - from typing import Union - - Package = Union[types.ModuleType, str] - Resource = Union[str, "os.PathLike"] - - # This fallback will work for Python versions prior to 3.7 that lack the - # importlib.resources module but relies on the existing `where` function - # so won't address issues with environments like PyOxidizer that don't set - # __file__ on modules. - def read_text( - package: Package, - resource: Resource, - encoding: str = 'utf-8', - errors: str = 'strict' - ) -> str: - with open(where(), encoding=encoding) as data: - return data.read() - - # If we don't have importlib.resources, then we will just do the old logic - # of assuming we're on the filesystem and munge the path directly. - def where() -> str: - f = os.path.dirname(__file__) - - return os.path.join(f, "cacert.pem") - - def contents() -> str: - return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/lib/python3.10/site-packages/certifi/py.typed b/venv/lib/python3.10/site-packages/certifi/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE deleted file mode 100644 index ad82355..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 TAHRI Ahmed R. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/METADATA b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/METADATA deleted file mode 100644 index 822550e..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/METADATA +++ /dev/null @@ -1,683 +0,0 @@ -Metadata-Version: 2.1 -Name: charset-normalizer -Version: 3.3.2 -Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. -Home-page: https://github.com/Ousret/charset_normalizer -Author: Ahmed TAHRI -Author-email: ahmed.tahri@cloudnursery.dev -License: MIT -Project-URL: Bug Reports, https://github.com/Ousret/charset_normalizer/issues -Project-URL: Documentation, https://charset-normalizer.readthedocs.io/en/latest -Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect -Classifier: Development Status :: 5 - Production/Stable -Classifier: License :: OSI Approved :: MIT License -Classifier: Intended Audience :: Developers -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Text Processing :: Linguistic -Classifier: Topic :: Utilities -Classifier: Typing :: Typed -Requires-Python: >=3.7.0 -Description-Content-Type: text/markdown -License-File: LICENSE -Provides-Extra: unicode_backport - -

Charset Detection, for Everyone 👋

- -
-

- Featured Packages
- - Static Badge - - - Static Badge - -

-

- In other language (unofficial port - by the community)
- - Static Badge - -

- -> A library that helps you read text from an unknown charset encoding.
Motivated by `chardet`, -> I'm trying to resolve the issue by taking a new approach. -> All IANA character set names for which the Python core library provides codecs are supported. - -

- >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< -

- -This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. - -| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | -|--------------------------------------------------|:---------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------:| -| `Fast` | ❌ | ✅ | ✅ | -| `Universal**` | ❌ | ✅ | ❌ | -| `Reliable` **without** distinguishable standards | ❌ | ✅ | ✅ | -| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | -| `License` | LGPL-2.1
_restrictive_ | MIT | MPL-1.1
_restrictive_ | -| `Native Python` | ✅ | ✅ | ❌ | -| `Detect spoken language` | ❌ | ✅ | N/A | -| `UnicodeDecodeError Safety` | ❌ | ✅ | ❌ | -| `Whl Size (min)` | 193.6 kB | 42 kB | ~200 kB | -| `Supported Encoding` | 33 | 🎉 [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | - -

-Reading Normalized TextCat Reading Text -

- -*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
-Did you got there because of the logs? See [https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html](https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html) - -## ⚡ Performance - -This package offer better performance than its counterpart Chardet. Here are some numbers. - -| Package | Accuracy | Mean per file (ms) | File per sec (est) | -|-----------------------------------------------|:--------:|:------------------:|:------------------:| -| [chardet](https://github.com/chardet/chardet) | 86 % | 200 ms | 5 file/sec | -| charset-normalizer | **98 %** | **10 ms** | 100 file/sec | - -| Package | 99th percentile | 95th percentile | 50th percentile | -|-----------------------------------------------|:---------------:|:---------------:|:---------------:| -| [chardet](https://github.com/chardet/chardet) | 1200 ms | 287 ms | 23 ms | -| charset-normalizer | 100 ms | 50 ms | 5 ms | - -Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. - -> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. -> And yes, these results might change at any time. The dataset can be updated to include more files. -> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. -> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability -> (eg. Supported Encoding) Challenge-them if you want. - -## ✨ Installation - -Using pip: - -```sh -pip install charset-normalizer -U -``` - -## 🚀 Basic Usage - -### CLI -This package comes with a CLI. - -``` -usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] - file [file ...] - -The Real First Universal Charset Detector. Discover originating encoding used -on text file. Normalize text to unicode. - -positional arguments: - files File(s) to be analysed - -optional arguments: - -h, --help show this help message and exit - -v, --verbose Display complementary information about file if any. - Stdout will contain logs about the detection process. - -a, --with-alternative - Output complementary possibilities if any. Top-level - JSON WILL be a list. - -n, --normalize Permit to normalize input file. If not set, program - does not write anything. - -m, --minimal Only output the charset detected to STDOUT. Disabling - JSON output. - -r, --replace Replace file when trying to normalize it instead of - creating a new one. - -f, --force Replace file without asking if you are sure, use this - flag with caution. - -t THRESHOLD, --threshold THRESHOLD - Define a custom maximum amount of chaos allowed in - decoded content. 0. <= chaos <= 1. - --version Show version information and exit. -``` - -```bash -normalizer ./data/sample.1.fr.srt -``` - -or - -```bash -python -m charset_normalizer ./data/sample.1.fr.srt -``` - -🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. - -```json -{ - "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", - "encoding": "cp1252", - "encoding_aliases": [ - "1252", - "windows_1252" - ], - "alternative_encodings": [ - "cp1254", - "cp1256", - "cp1258", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - "mbcs" - ], - "language": "French", - "alphabets": [ - "Basic Latin", - "Latin-1 Supplement" - ], - "has_sig_or_bom": false, - "chaos": 0.149, - "coherence": 97.152, - "unicode_path": null, - "is_preferred": true -} -``` - -### Python -*Just print out normalized text* -```python -from charset_normalizer import from_path - -results = from_path('./my_subtitle.srt') - -print(str(results.best())) -``` - -*Upgrade your code without effort* -```python -from charset_normalizer import detect -``` - -The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. - -See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) - -## 😇 Why - -When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a -reliable alternative using a completely different method. Also! I never back down on a good challenge! - -I **don't care** about the **originating charset** encoding, because **two different tables** can -produce **two identical rendered string.** -What I want is to get readable text, the best I can. - -In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 - -Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. - -## 🍰 How - - - Discard all charset encoding table that could not fit the binary content. - - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. - - Extract matches with the lowest mess detected. - - Additionally, we measure coherence / probe for a language. - -**Wait a minute**, what is noise/mess and coherence according to **YOU ?** - -*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then -**I established** some ground rules about **what is obvious** when **it seems like** a mess. - I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to - improve or rewrite it. - -*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought -that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. - -## ⚡ Known limitations - - - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) - - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. - -## ⚠️ About Python EOLs - -**If you are running:** - -- Python >=2.7,<3.5: Unsupported -- Python 3.5: charset-normalizer < 2.1 -- Python 3.6: charset-normalizer < 3.1 -- Python 3.7: charset-normalizer < 4.0 - -Upgrade your Python interpreter as soon as possible. - -## 👤 Contributing - -Contributions, issues and feature requests are very much welcome.
-Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. - -## 📝 License - -Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
-This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. - -Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) - -## 💼 For Enterprise - -Professional support for charset-normalizer is available as part of the [Tidelift -Subscription][1]. Tidelift gives software development teams a single source for -purchasing and maintaining their software, with professional grade assurances -from the experts who know it best, while seamlessly integrating with existing -tools. - -[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme - -# Changelog -All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - -## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) - -### Fixed -- Unintentional memory usage regression when using large payload that match several encoding (#376) -- Regression on some detection case showcased in the documentation (#371) - -### Added -- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) - -## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) - -### Changed -- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 -- Improved the general detection reliability based on reports from the community - -## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) - -### Added -- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` -- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) - -### Removed -- (internal) Redundant utils.is_ascii function and unused function is_private_use_only -- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant - -### Changed -- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection -- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 - -### Fixed -- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) - -## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) - -### Changed -- Typehint for function `from_path` no longer enforce `PathLike` as its first argument -- Minor improvement over the global detection reliability - -### Added -- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries -- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) -- Explicit support for Python 3.12 - -### Fixed -- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) - -## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) - -### Added -- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) - -### Removed -- Support for Python 3.6 (PR #260) - -### Changed -- Optional speedup provided by mypy/c 1.0.1 - -## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) - -### Fixed -- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) - -### Changed -- Speedup provided by mypy/c 0.990 on Python >= 3.7 - -## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) - -### Added -- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results -- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES -- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio -- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) - -### Changed -- Build with static metadata using 'build' frontend -- Make the language detection stricter -- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 - -### Fixed -- CLI with opt --normalize fail when using full path for files -- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it -- Sphinx warnings when generating the documentation - -### Removed -- Coherence detector no longer return 'Simple English' instead return 'English' -- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' -- Breaking: Method `first()` and `best()` from CharsetMatch -- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) -- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches -- Breaking: Top-level function `normalize` -- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch -- Support for the backport `unicodedata2` - -## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) - -### Added -- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results -- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES -- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio - -### Changed -- Build with static metadata using 'build' frontend -- Make the language detection stricter - -### Fixed -- CLI with opt --normalize fail when using full path for files -- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it - -### Removed -- Coherence detector no longer return 'Simple English' instead return 'English' -- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' - -## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) - -### Added -- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) - -### Removed -- Breaking: Method `first()` and `best()` from CharsetMatch -- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) - -### Fixed -- Sphinx warnings when generating the documentation - -## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) - -### Changed -- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 - -### Removed -- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches -- Breaking: Top-level function `normalize` -- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch -- Support for the backport `unicodedata2` - -## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) - -### Deprecated -- Function `normalize` scheduled for removal in 3.0 - -### Changed -- Removed useless call to decode in fn is_unprintable (#206) - -### Fixed -- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) - -## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) - -### Added -- Output the Unicode table version when running the CLI with `--version` (PR #194) - -### Changed -- Re-use decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) -- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) - -### Fixed -- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) -- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) - -### Removed -- Support for Python 3.5 (PR #192) - -### Deprecated -- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) - -## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) - -### Fixed -- ASCII miss-detection on rare cases (PR #170) - -## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) - -### Added -- Explicit support for Python 3.11 (PR #164) - -### Changed -- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) - -## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) - -### Fixed -- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) - -### Changed -- Skipping the language-detection (CD) on ASCII (PR #155) - -## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) - -### Changed -- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) - -### Fixed -- Wrong logging level applied when setting kwarg `explain` to True (PR #146) - -## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) -### Changed -- Improvement over Vietnamese detection (PR #126) -- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) -- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) -- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) -- Code style as refactored by Sourcery-AI (PR #131) -- Minor adjustment on the MD around european words (PR #133) -- Remove and replace SRTs from assets / tests (PR #139) -- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) -- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) - -### Fixed -- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) -- Avoid using too insignificant chunk (PR #137) - -### Added -- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) -- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) - -## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) -### Added -- Add support for Kazakh (Cyrillic) language detection (PR #109) - -### Changed -- Further, improve inferring the language from a given single-byte code page (PR #112) -- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) -- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) -- Various detection improvement (MD+CD) (PR #117) - -### Removed -- Remove redundant logging entry about detected language(s) (PR #115) - -### Fixed -- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) - -## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) -### Fixed -- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) -- Fix CLI crash when using --minimal output in certain cases (PR #103) - -### Changed -- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) - -## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) -### Changed -- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) -- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) -- The Unicode detection is slightly improved (PR #93) -- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) - -### Removed -- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) - -### Fixed -- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) -- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) -- The MANIFEST.in was not exhaustive (PR #78) - -## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) -### Fixed -- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) -- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) -- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) -- Submatch factoring could be wrong in rare edge cases (PR #72) -- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) -- Fix line endings from CRLF to LF for certain project files (PR #67) - -### Changed -- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) -- Allow fallback on specified encoding if any (PR #71) - -## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) -### Changed -- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) -- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) - -## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) -### Fixed -- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) - -### Changed -- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) - -## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) -### Fixed -- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) -- Using explain=False permanently disable the verbose output in the current runtime (PR #47) -- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) -- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) - -### Changed -- Public function normalize default args values were not aligned with from_bytes (PR #53) - -### Added -- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) - -## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) -### Changed -- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. -- Accent has been made on UTF-8 detection, should perform rather instantaneous. -- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. -- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) -- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ -- utf_7 detection has been reinstated. - -### Removed -- This package no longer require anything when used with Python 3.5 (Dropped cached_property) -- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. -- The exception hook on UnicodeDecodeError has been removed. - -### Deprecated -- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 - -### Fixed -- The CLI output used the relative path of the file(s). Should be absolute. - -## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) -### Fixed -- Logger configuration/usage no longer conflict with others (PR #44) - -## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) -### Removed -- Using standard logging instead of using the package loguru. -- Dropping nose test framework in favor of the maintained pytest. -- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. -- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. -- Stop support for UTF-7 that does not contain a SIG. -- Dropping PrettyTable, replaced with pure JSON output in CLI. - -### Fixed -- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. -- Not searching properly for the BOM when trying utf32/16 parent codec. - -### Changed -- Improving the package final size by compressing frequencies.json. -- Huge improvement over the larges payload. - -### Added -- CLI now produces JSON consumable output. -- Return ASCII if given sequences fit. Given reasonable confidence. - -## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) - -### Fixed -- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) - -## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) - -### Fixed -- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) - -## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) - -### Fixed -- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) - -## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) - -### Changed -- Amend the previous release to allow prettytable 2.0 (PR #35) - -## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) - -### Fixed -- Fix error while using the package with a python pre-release interpreter (PR #33) - -### Changed -- Dependencies refactoring, constraints revised. - -### Added -- Add python 3.9 and 3.10 to the supported interpreters - -MIT License - -Copyright (c) 2019 TAHRI Ahmed R. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/RECORD b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/RECORD deleted file mode 100644 index 1bed096..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/RECORD +++ /dev/null @@ -1,35 +0,0 @@ -../../../bin/normalizer,sha256=T7VjNldSSCVOjVr0MbGMWc19vVqX4y5vZa-0IMUGfuI,268 -charset_normalizer-3.3.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -charset_normalizer-3.3.2.dist-info/LICENSE,sha256=6zGgxaT7Cbik4yBV0lweX5w1iidS_vPNcgIT0cz-4kE,1070 -charset_normalizer-3.3.2.dist-info/METADATA,sha256=cfLhl5A6SI-F0oclm8w8ux9wshL1nipdeCdVnYb4AaA,33550 -charset_normalizer-3.3.2.dist-info/RECORD,, -charset_normalizer-3.3.2.dist-info/WHEEL,sha256=cD39NF6a3hkhaWoPQJng7gnGZRIfQsUCtwcedITCPtg,152 -charset_normalizer-3.3.2.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 -charset_normalizer-3.3.2.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 -charset_normalizer/__init__.py,sha256=UzI3xC8PhmcLRMzSgPb6minTmRq0kWznnCBJ8ZCc2XI,1577 -charset_normalizer/__main__.py,sha256=JxY8bleaENOFlLRb9HfoeZCzAMnn2A1oGR5Xm2eyqg0,73 -charset_normalizer/__pycache__/__init__.cpython-310.pyc,, -charset_normalizer/__pycache__/__main__.cpython-310.pyc,, -charset_normalizer/__pycache__/api.cpython-310.pyc,, -charset_normalizer/__pycache__/cd.cpython-310.pyc,, -charset_normalizer/__pycache__/constant.cpython-310.pyc,, -charset_normalizer/__pycache__/legacy.cpython-310.pyc,, -charset_normalizer/__pycache__/md.cpython-310.pyc,, -charset_normalizer/__pycache__/models.cpython-310.pyc,, -charset_normalizer/__pycache__/utils.cpython-310.pyc,, -charset_normalizer/__pycache__/version.cpython-310.pyc,, -charset_normalizer/api.py,sha256=WOlWjy6wT8SeMYFpaGbXZFN1TMXa-s8vZYfkL4G29iQ,21097 -charset_normalizer/cd.py,sha256=xwZliZcTQFA3jU0c00PRiu9MNxXTFxQkFLWmMW24ZzI,12560 -charset_normalizer/cli/__init__.py,sha256=D5ERp8P62llm2FuoMzydZ7d9rs8cvvLXqE-1_6oViPc,100 -charset_normalizer/cli/__main__.py,sha256=2F-xURZJzo063Ye-2RLJ2wcmURpbKeAzKwpiws65dAs,9744 -charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc,, -charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc,, -charset_normalizer/constant.py,sha256=p0IsOVcEbPWYPOdWhnhRbjK1YVBy6fs05C5vKC-zoxU,40481 -charset_normalizer/legacy.py,sha256=T-QuVMsMeDiQEk8WSszMrzVJg_14AMeSkmHdRYhdl1k,2071 -charset_normalizer/md.cpython-310-x86_64-linux-gnu.so,sha256=Y7QSLD5QLoSFAWys0-tL7R6QB7oi5864zM6zr7RWek4,16064 -charset_normalizer/md.py,sha256=NkSuVLK13_a8c7BxZ4cGIQ5vOtGIWOdh22WZEvjp-7U,19624 -charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so,sha256=y2N-LgwRp7TCdgRqsmIM8UvKeavC0t8kx_hdRvaSfcY,268472 -charset_normalizer/models.py,sha256=I5i0s4aKCCgLPY2tUY3pwkgFA-BUbbNxQ7hVkVTt62s,11624 -charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -charset_normalizer/utils.py,sha256=teiosMqzKjXyAHXnGdjSBOgnBZwx-SkBbCLrx0UXy8M,11894 -charset_normalizer/version.py,sha256=iHKUfHD3kDRSyrh_BN2ojh43TA5-UZQjvbVIEFfpHDs,79 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL deleted file mode 100644 index 7b52c3f..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.41.2) -Root-Is-Purelib: false -Tag: cp310-cp310-manylinux_2_17_x86_64 -Tag: cp310-cp310-manylinux2014_x86_64 - diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt deleted file mode 100644 index 65619e7..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[console_scripts] -normalizer = charset_normalizer.cli:cli_detect diff --git a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt deleted file mode 100644 index 66958f0..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -charset_normalizer diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py b/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py deleted file mode 100644 index 55991fc..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Charset-Normalizer -~~~~~~~~~~~~~~ -The Real First Universal Charset Detector. -A library that helps you read text from an unknown charset encoding. -Motivated by chardet, This package is trying to resolve the issue by taking a new approach. -All IANA character set names for which the Python core library provides codecs are supported. - -Basic usage: - >>> from charset_normalizer import from_bytes - >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) - >>> best_guess = results.best() - >>> str(best_guess) - 'Bсеки човек има право на образование. Oбразованието!' - -Others methods and usages are available - see the full documentation -at . -:copyright: (c) 2021 by Ahmed TAHRI -:license: MIT, see LICENSE for more details. -""" -import logging - -from .api import from_bytes, from_fp, from_path, is_binary -from .legacy import detect -from .models import CharsetMatch, CharsetMatches -from .utils import set_logging_handler -from .version import VERSION, __version__ - -__all__ = ( - "from_fp", - "from_path", - "from_bytes", - "is_binary", - "detect", - "CharsetMatch", - "CharsetMatches", - "__version__", - "VERSION", - "set_logging_handler", -) - -# Attach a NullHandler to the top level logger by default -# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library - -logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__main__.py b/venv/lib/python3.10/site-packages/charset_normalizer/__main__.py deleted file mode 100644 index beae2ef..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .cli import cli_detect - -if __name__ == "__main__": - cli_detect() diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 636b661825e5e11cf8489a6b239c7d223ea6333d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1591 zcmcIky>8q_5GGHj`{7BpB0GS}NhKX%k+#zq2V1c0D6jzQ6i7-6HpCveM=rGF61&Tj zFGY~J$up$0%5+KqBSMfUuRyhIQ~4EAWtMlA6xeMDaIiBwJM+!2SYCE4{C=_z#{HIM z{cV_=UlW<9_^Ve)BFncTJ8E#-x1)uq$s6f{zmPWlX1eGvrY*l^TPR=T?X=@}>T`>C zQ^$AGp5LqaHeX7Y{pI@H;kVM;{_S+dUqQa>e?sjytC4eRzqx~_yQkKvjq=8!)$bLr z7c9$po)D?1-W&><63)J*()sQ`pL3K@IG}{XmrN=RUuSGWr9yuG6uzLEhFVD1*#^!= zlE^9OglI@8&lOBX0g{pkG<~IEEJX?=gCaZ5#7PF>%s%Wb_0`o=ZW(1OajmyW7L< z+Aaw-m4LxRMpCL^EF_#HEKF)sUrlu)5TB6rDk?NHVG*h#RvIcGc&Cay7ZTyRj`NHt z7DAyA?+H^QuD074n|W=)%yn+Pr3I{6+aoE%~k1JVW7m`PPN~kBKi|mlvO{yLJBQ z#(JU0!K3wl|2>)!RXT_ZstlkxG}j0>u2htk8`o;J`2U9MIQv*`sUW3Tr3fpLMYFum zib5uYaWdi*HnG67-WV5H{78gFN;6F~6PbfO`Z&=#R|C(BnNEt48;aE1FO;O(`><$R zt}_TlK9wv^^Z+)(K0Lht@PTQ#?IgvHJ=%V8u86;u!iq!r2S^)nE9CXL)EU&M|9KScW6kx2qN!!O814 zs-^iX?hzd()vcQxRj7FfyFB0`j&Uf01e3+7#Aoeqb`B1A_lH$42+UApPJ*ECNVB2j zq9M2CGNfmSS$6*Fhso-HTD5}!6CMOrd+xhhAUT^Ez4l?uS1nFs z5>9J3RV&5$;_BL6wODA(R_&{5&!NuT8z9CJ;T#=xW2#?boK#j0iJ}*?P^;b$i$7<6 zw&a?@ZOA{7mxz>lalt|T diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index 0d3282ae4301b3823fb1726d79fb03a250fa0c75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmYjLyG{c!5cK*YbUG#CALy<~7L_m ze32qC(#&dRSE~uDRl^EC;PLgo%&*z}2QTKXFkKYUOoL?(o&gwf%?BRO3EmknT|FJy zF2120wlFoy8lfqZ%2O?blg112&{k7b7IA(%$6h)T;*-U*5*+16V;>x0w=*gRML8QB zt`jB|JpR5v>v4zWJd{AFJq!Ce27k3^F|R*EjHs} Ws&8D-J4?57-BcG@vYI!r`27Qv%t>Sb diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc deleted file mode 100644 index 231b09134f94d2dc75f2f0c2c45ec8b6400af256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11422 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 UF%Ju0XZ_5R>j%E_`hnm4A0XD8C;$Ke diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc deleted file mode 100644 index 639bc962ffa1176b9b0c65ff1d3d52a61e46b32e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9687 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 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc deleted file mode 100644 index f7763cdbb380bb5f2f372f3470337e9ffdba9ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1857 zcmZ`)&2QT_6c;5*mKDe8*RmGq00Q068ffee8?dez))k4fFCZP#^x}&li?q!~B2|(~ z>dd(;`zMBNKyuu_#OqGoY3BlK_b5AU4jTbIQSXuO;DMH;Q-=*YhxM7Rew%UNfR? z+F&a*W-Z!eh$hTut1Ms`WP9x2@NRfcj$^t)TR(?`HM;u5>#V(mxLya_;E|YFyu~wP z*2d5KlBgIUmMCQ9pmZJf0_k0hJ{tJZh z=Kcv%R}G?w`lr4L=Kd)@^G?ti`V~O=Jvc$gGvVAbk!g(m6JOslF~z4%lg#T?C+H`% zu%Gzqu4y>!v1eA?`?PiD9S8G(h80qu&x2>H0@3goFEw9-rcI;$K-Dv_HIBojZI{Mi zUAykpJEEmFn`7GC_f-bAOCT{#KJ&mIqAQiB8I~Dhri?I=Ny^29$Z`EW;Rj3*2R;Gt!O$h&8nU2( zj2J1THu;Q<(##P+H!@k2so|rXb!*rCbAOI3a>((F(m{}m7sYT*hfRgPE66u|zx;*dKOt{>Juj_$ZN z(#&iKS8>jdpnS@;f@7!vWi_c`(&Y9lboc0k+W^gZ!@VU2nh;>V(>eOI|DuE$;3P*i z@~-J-hPqsUO zjn7NBF;Fq7(h0K(5IW}6;oG@l1E@+xu-oEik_(G-u8qa}Y^H6(H5b~Xu+lc)=3qlN z)wa0@Irf#3%0>&`Ep}-uxRb%#hykxxVXCfy7=!?r)HWE&LN!6rX()G#s}(0&AS_bv zmaF$b^M|Ky!RytiHynZU!ygM z-5~>@O^uDZ=@#RWl(`MuWgm`nnVLFE4ao)ZVeR(|Xw)iaU%J1EcDt{8Ey%Woe2m{f Lj&GlJzy11O`oSIQ diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc deleted file mode 100644 index 41e03db3e0d3d03a10f92c0f0e7a4ed302c22c7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15850 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 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/models.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 98d7e45d170230a777a9e1cdc0b00e17f0ac40e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11552 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 j!1Gqyrl?g9HZC16q~;LL9~&+AH9X CharsetMatches: - """ - Given a raw bytes sequence, return the best possibles charset usable to render str objects. - If there is no results, it is a strong indicator that the source is binary/not text. - By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. - And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. - - The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page - but never take it for granted. Can improve the performance. - - You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that - purpose. - - This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. - By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' - toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. - Custom logging format and handler can be set manually. - """ - - if not isinstance(sequences, (bytearray, bytes)): - raise TypeError( - "Expected object of type bytes or bytearray, got: {0}".format( - type(sequences) - ) - ) - - if explain: - previous_logger_level: int = logger.level - logger.addHandler(explain_handler) - logger.setLevel(TRACE) - - length: int = len(sequences) - - if length == 0: - logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) - return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) - - if cp_isolation is not None: - logger.log( - TRACE, - "cp_isolation is set. use this flag for debugging purpose. " - "limited list of encoding allowed : %s.", - ", ".join(cp_isolation), - ) - cp_isolation = [iana_name(cp, False) for cp in cp_isolation] - else: - cp_isolation = [] - - if cp_exclusion is not None: - logger.log( - TRACE, - "cp_exclusion is set. use this flag for debugging purpose. " - "limited list of encoding excluded : %s.", - ", ".join(cp_exclusion), - ) - cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] - else: - cp_exclusion = [] - - if length <= (chunk_size * steps): - logger.log( - TRACE, - "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", - steps, - chunk_size, - length, - ) - steps = 1 - chunk_size = length - - if steps > 1 and length / steps < chunk_size: - chunk_size = int(length / steps) - - is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE - is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE - - if is_too_small_sequence: - logger.log( - TRACE, - "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( - length - ), - ) - elif is_too_large_sequence: - logger.log( - TRACE, - "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( - length - ), - ) - - prioritized_encodings: List[str] = [] - - specified_encoding: Optional[str] = ( - any_specified_encoding(sequences) if preemptive_behaviour else None - ) - - if specified_encoding is not None: - prioritized_encodings.append(specified_encoding) - logger.log( - TRACE, - "Detected declarative mark in sequence. Priority +1 given for %s.", - specified_encoding, - ) - - tested: Set[str] = set() - tested_but_hard_failure: List[str] = [] - tested_but_soft_failure: List[str] = [] - - fallback_ascii: Optional[CharsetMatch] = None - fallback_u8: Optional[CharsetMatch] = None - fallback_specified: Optional[CharsetMatch] = None - - results: CharsetMatches = CharsetMatches() - - sig_encoding, sig_payload = identify_sig_or_bom(sequences) - - if sig_encoding is not None: - prioritized_encodings.append(sig_encoding) - logger.log( - TRACE, - "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", - len(sig_payload), - sig_encoding, - ) - - prioritized_encodings.append("ascii") - - if "utf_8" not in prioritized_encodings: - prioritized_encodings.append("utf_8") - - for encoding_iana in prioritized_encodings + IANA_SUPPORTED: - if cp_isolation and encoding_iana not in cp_isolation: - continue - - if cp_exclusion and encoding_iana in cp_exclusion: - continue - - if encoding_iana in tested: - continue - - tested.add(encoding_iana) - - decoded_payload: Optional[str] = None - bom_or_sig_available: bool = sig_encoding == encoding_iana - strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( - encoding_iana - ) - - if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: - logger.log( - TRACE, - "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", - encoding_iana, - ) - continue - if encoding_iana in {"utf_7"} and not bom_or_sig_available: - logger.log( - TRACE, - "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", - encoding_iana, - ) - continue - - try: - is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) - except (ModuleNotFoundError, ImportError): - logger.log( - TRACE, - "Encoding %s does not provide an IncrementalDecoder", - encoding_iana, - ) - continue - - try: - if is_too_large_sequence and is_multi_byte_decoder is False: - str( - sequences[: int(50e4)] - if strip_sig_or_bom is False - else sequences[len(sig_payload) : int(50e4)], - encoding=encoding_iana, - ) - else: - decoded_payload = str( - sequences - if strip_sig_or_bom is False - else sequences[len(sig_payload) :], - encoding=encoding_iana, - ) - except (UnicodeDecodeError, LookupError) as e: - if not isinstance(e, LookupError): - logger.log( - TRACE, - "Code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - similar_soft_failure_test: bool = False - - for encoding_soft_failed in tested_but_soft_failure: - if is_cp_similar(encoding_iana, encoding_soft_failed): - similar_soft_failure_test = True - break - - if similar_soft_failure_test: - logger.log( - TRACE, - "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", - encoding_iana, - encoding_soft_failed, - ) - continue - - r_ = range( - 0 if not bom_or_sig_available else len(sig_payload), - length, - int(length / steps), - ) - - multi_byte_bonus: bool = ( - is_multi_byte_decoder - and decoded_payload is not None - and len(decoded_payload) < length - ) - - if multi_byte_bonus: - logger.log( - TRACE, - "Code page %s is a multi byte encoding table and it appear that at least one character " - "was encoded using n-bytes.", - encoding_iana, - ) - - max_chunk_gave_up: int = int(len(r_) / 4) - - max_chunk_gave_up = max(max_chunk_gave_up, 2) - early_stop_count: int = 0 - lazy_str_hard_failure = False - - md_chunks: List[str] = [] - md_ratios = [] - - try: - for chunk in cut_sequence_chunks( - sequences, - encoding_iana, - r_, - chunk_size, - bom_or_sig_available, - strip_sig_or_bom, - sig_payload, - is_multi_byte_decoder, - decoded_payload, - ): - md_chunks.append(chunk) - - md_ratios.append( - mess_ratio( - chunk, - threshold, - explain is True and 1 <= len(cp_isolation) <= 2, - ) - ) - - if md_ratios[-1] >= threshold: - early_stop_count += 1 - - if (early_stop_count >= max_chunk_gave_up) or ( - bom_or_sig_available and strip_sig_or_bom is False - ): - break - except ( - UnicodeDecodeError - ) as e: # Lazy str loading may have missed something there - logger.log( - TRACE, - "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - early_stop_count = max_chunk_gave_up - lazy_str_hard_failure = True - - # We might want to check the sequence again with the whole content - # Only if initial MD tests passes - if ( - not lazy_str_hard_failure - and is_too_large_sequence - and not is_multi_byte_decoder - ): - try: - sequences[int(50e3) :].decode(encoding_iana, errors="strict") - except UnicodeDecodeError as e: - logger.log( - TRACE, - "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 - if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: - tested_but_soft_failure.append(encoding_iana) - logger.log( - TRACE, - "%s was excluded because of initial chaos probing. Gave up %i time(s). " - "Computed mean chaos is %f %%.", - encoding_iana, - early_stop_count, - round(mean_mess_ratio * 100, ndigits=3), - ) - # Preparing those fallbacks in case we got nothing. - if ( - enable_fallback - and encoding_iana in ["ascii", "utf_8", specified_encoding] - and not lazy_str_hard_failure - ): - fallback_entry = CharsetMatch( - sequences, encoding_iana, threshold, False, [], decoded_payload - ) - if encoding_iana == specified_encoding: - fallback_specified = fallback_entry - elif encoding_iana == "ascii": - fallback_ascii = fallback_entry - else: - fallback_u8 = fallback_entry - continue - - logger.log( - TRACE, - "%s passed initial chaos probing. Mean measured chaos is %f %%", - encoding_iana, - round(mean_mess_ratio * 100, ndigits=3), - ) - - if not is_multi_byte_decoder: - target_languages: List[str] = encoding_languages(encoding_iana) - else: - target_languages = mb_encoding_languages(encoding_iana) - - if target_languages: - logger.log( - TRACE, - "{} should target any language(s) of {}".format( - encoding_iana, str(target_languages) - ), - ) - - cd_ratios = [] - - # We shall skip the CD when its about ASCII - # Most of the time its not relevant to run "language-detection" on it. - if encoding_iana != "ascii": - for chunk in md_chunks: - chunk_languages = coherence_ratio( - chunk, - language_threshold, - ",".join(target_languages) if target_languages else None, - ) - - cd_ratios.append(chunk_languages) - - cd_ratios_merged = merge_coherence_ratios(cd_ratios) - - if cd_ratios_merged: - logger.log( - TRACE, - "We detected language {} using {}".format( - cd_ratios_merged, encoding_iana - ), - ) - - results.append( - CharsetMatch( - sequences, - encoding_iana, - mean_mess_ratio, - bom_or_sig_available, - cd_ratios_merged, - decoded_payload, - ) - ) - - if ( - encoding_iana in [specified_encoding, "ascii", "utf_8"] - and mean_mess_ratio < 0.1 - ): - logger.debug( - "Encoding detection: %s is most likely the one.", encoding_iana - ) - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([results[encoding_iana]]) - - if encoding_iana == sig_encoding: - logger.debug( - "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " - "the beginning of the sequence.", - encoding_iana, - ) - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([results[encoding_iana]]) - - if len(results) == 0: - if fallback_u8 or fallback_ascii or fallback_specified: - logger.log( - TRACE, - "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", - ) - - if fallback_specified: - logger.debug( - "Encoding detection: %s will be used as a fallback match", - fallback_specified.encoding, - ) - results.append(fallback_specified) - elif ( - (fallback_u8 and fallback_ascii is None) - or ( - fallback_u8 - and fallback_ascii - and fallback_u8.fingerprint != fallback_ascii.fingerprint - ) - or (fallback_u8 is not None) - ): - logger.debug("Encoding detection: utf_8 will be used as a fallback match") - results.append(fallback_u8) - elif fallback_ascii: - logger.debug("Encoding detection: ascii will be used as a fallback match") - results.append(fallback_ascii) - - if results: - logger.debug( - "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", - results.best().encoding, # type: ignore - len(results) - 1, - ) - else: - logger.debug("Encoding detection: Unable to determine any suitable charset.") - - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - - return results - - -def from_fp( - fp: BinaryIO, - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = True, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but using a file pointer that is already ready. - Will not close the file pointer. - """ - return from_bytes( - fp.read(), - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - language_threshold, - enable_fallback, - ) - - -def from_path( - path: Union[str, bytes, PathLike], # type: ignore[type-arg] - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = True, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. - Can raise IOError. - """ - with open(path, "rb") as fp: - return from_fp( - fp, - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - language_threshold, - enable_fallback, - ) - - -def is_binary( - fp_or_path_or_payload: Union[PathLike, str, BinaryIO, bytes], # type: ignore[type-arg] - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = False, -) -> bool: - """ - Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. - Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match - are disabled to be stricter around ASCII-compatible but unlikely to be a string. - """ - if isinstance(fp_or_path_or_payload, (str, PathLike)): - guesses = from_path( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - elif isinstance( - fp_or_path_or_payload, - ( - bytes, - bytearray, - ), - ): - guesses = from_bytes( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - else: - guesses = from_fp( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - - return not guesses diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/cd.py b/venv/lib/python3.10/site-packages/charset_normalizer/cd.py deleted file mode 100644 index 4ea6760..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/cd.py +++ /dev/null @@ -1,395 +0,0 @@ -import importlib -from codecs import IncrementalDecoder -from collections import Counter -from functools import lru_cache -from typing import Counter as TypeCounter, Dict, List, Optional, Tuple - -from .constant import ( - FREQUENCIES, - KO_NAMES, - LANGUAGE_SUPPORTED_COUNT, - TOO_SMALL_SEQUENCE, - ZH_NAMES, -) -from .md import is_suspiciously_successive_range -from .models import CoherenceMatches -from .utils import ( - is_accentuated, - is_latin, - is_multi_byte_encoding, - is_unicode_range_secondary, - unicode_range, -) - - -def encoding_unicode_range(iana_name: str) -> List[str]: - """ - Return associated unicode ranges in a single byte code page. - """ - if is_multi_byte_encoding(iana_name): - raise IOError("Function not supported on multi-byte code page") - - decoder = importlib.import_module( - "encodings.{}".format(iana_name) - ).IncrementalDecoder - - p: IncrementalDecoder = decoder(errors="ignore") - seen_ranges: Dict[str, int] = {} - character_count: int = 0 - - for i in range(0x40, 0xFF): - chunk: str = p.decode(bytes([i])) - - if chunk: - character_range: Optional[str] = unicode_range(chunk) - - if character_range is None: - continue - - if is_unicode_range_secondary(character_range) is False: - if character_range not in seen_ranges: - seen_ranges[character_range] = 0 - seen_ranges[character_range] += 1 - character_count += 1 - - return sorted( - [ - character_range - for character_range in seen_ranges - if seen_ranges[character_range] / character_count >= 0.15 - ] - ) - - -def unicode_range_languages(primary_range: str) -> List[str]: - """ - Return inferred languages used with a unicode range. - """ - languages: List[str] = [] - - for language, characters in FREQUENCIES.items(): - for character in characters: - if unicode_range(character) == primary_range: - languages.append(language) - break - - return languages - - -@lru_cache() -def encoding_languages(iana_name: str) -> List[str]: - """ - Single-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - unicode_ranges: List[str] = encoding_unicode_range(iana_name) - primary_range: Optional[str] = None - - for specified_range in unicode_ranges: - if "Latin" not in specified_range: - primary_range = specified_range - break - - if primary_range is None: - return ["Latin Based"] - - return unicode_range_languages(primary_range) - - -@lru_cache() -def mb_encoding_languages(iana_name: str) -> List[str]: - """ - Multi-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - if ( - iana_name.startswith("shift_") - or iana_name.startswith("iso2022_jp") - or iana_name.startswith("euc_j") - or iana_name == "cp932" - ): - return ["Japanese"] - if iana_name.startswith("gb") or iana_name in ZH_NAMES: - return ["Chinese"] - if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: - return ["Korean"] - - return [] - - -@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) -def get_target_features(language: str) -> Tuple[bool, bool]: - """ - Determine main aspects from a supported language if it contains accents and if is pure Latin. - """ - target_have_accents: bool = False - target_pure_latin: bool = True - - for character in FREQUENCIES[language]: - if not target_have_accents and is_accentuated(character): - target_have_accents = True - if target_pure_latin and is_latin(character) is False: - target_pure_latin = False - - return target_have_accents, target_pure_latin - - -def alphabet_languages( - characters: List[str], ignore_non_latin: bool = False -) -> List[str]: - """ - Return associated languages associated to given characters. - """ - languages: List[Tuple[str, float]] = [] - - source_have_accents = any(is_accentuated(character) for character in characters) - - for language, language_characters in FREQUENCIES.items(): - target_have_accents, target_pure_latin = get_target_features(language) - - if ignore_non_latin and target_pure_latin is False: - continue - - if target_have_accents is False and source_have_accents: - continue - - character_count: int = len(language_characters) - - character_match_count: int = len( - [c for c in language_characters if c in characters] - ) - - ratio: float = character_match_count / character_count - - if ratio >= 0.2: - languages.append((language, ratio)) - - languages = sorted(languages, key=lambda x: x[1], reverse=True) - - return [compatible_language[0] for compatible_language in languages] - - -def characters_popularity_compare( - language: str, ordered_characters: List[str] -) -> float: - """ - Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. - The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). - Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) - """ - if language not in FREQUENCIES: - raise ValueError("{} not available".format(language)) - - character_approved_count: int = 0 - FREQUENCIES_language_set = set(FREQUENCIES[language]) - - ordered_characters_count: int = len(ordered_characters) - target_language_characters_count: int = len(FREQUENCIES[language]) - - large_alphabet: bool = target_language_characters_count > 26 - - for character, character_rank in zip( - ordered_characters, range(0, ordered_characters_count) - ): - if character not in FREQUENCIES_language_set: - continue - - character_rank_in_language: int = FREQUENCIES[language].index(character) - expected_projection_ratio: float = ( - target_language_characters_count / ordered_characters_count - ) - character_rank_projection: int = int(character_rank * expected_projection_ratio) - - if ( - large_alphabet is False - and abs(character_rank_projection - character_rank_in_language) > 4 - ): - continue - - if ( - large_alphabet is True - and abs(character_rank_projection - character_rank_in_language) - < target_language_characters_count / 3 - ): - character_approved_count += 1 - continue - - characters_before_source: List[str] = FREQUENCIES[language][ - 0:character_rank_in_language - ] - characters_after_source: List[str] = FREQUENCIES[language][ - character_rank_in_language: - ] - characters_before: List[str] = ordered_characters[0:character_rank] - characters_after: List[str] = ordered_characters[character_rank:] - - before_match_count: int = len( - set(characters_before) & set(characters_before_source) - ) - - after_match_count: int = len( - set(characters_after) & set(characters_after_source) - ) - - if len(characters_before_source) == 0 and before_match_count <= 4: - character_approved_count += 1 - continue - - if len(characters_after_source) == 0 and after_match_count <= 4: - character_approved_count += 1 - continue - - if ( - before_match_count / len(characters_before_source) >= 0.4 - or after_match_count / len(characters_after_source) >= 0.4 - ): - character_approved_count += 1 - continue - - return character_approved_count / len(ordered_characters) - - -def alpha_unicode_split(decoded_sequence: str) -> List[str]: - """ - Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. - Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; - One containing the latin letters and the other hebrew. - """ - layers: Dict[str, str] = {} - - for character in decoded_sequence: - if character.isalpha() is False: - continue - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - continue - - layer_target_range: Optional[str] = None - - for discovered_range in layers: - if ( - is_suspiciously_successive_range(discovered_range, character_range) - is False - ): - layer_target_range = discovered_range - break - - if layer_target_range is None: - layer_target_range = character_range - - if layer_target_range not in layers: - layers[layer_target_range] = character.lower() - continue - - layers[layer_target_range] += character.lower() - - return list(layers.values()) - - -def merge_coherence_ratios(results: List[CoherenceMatches]) -> CoherenceMatches: - """ - This function merge results previously given by the function coherence_ratio. - The return type is the same as coherence_ratio. - """ - per_language_ratios: Dict[str, List[float]] = {} - for result in results: - for sub_result in result: - language, ratio = sub_result - if language not in per_language_ratios: - per_language_ratios[language] = [ratio] - continue - per_language_ratios[language].append(ratio) - - merge = [ - ( - language, - round( - sum(per_language_ratios[language]) / len(per_language_ratios[language]), - 4, - ), - ) - for language in per_language_ratios - ] - - return sorted(merge, key=lambda x: x[1], reverse=True) - - -def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: - """ - We shall NOT return "English—" in CoherenceMatches because it is an alternative - of "English". This function only keeps the best match and remove the em-dash in it. - """ - index_results: Dict[str, List[float]] = dict() - - for result in results: - language, ratio = result - no_em_name: str = language.replace("—", "") - - if no_em_name not in index_results: - index_results[no_em_name] = [] - - index_results[no_em_name].append(ratio) - - if any(len(index_results[e]) > 1 for e in index_results): - filtered_results: CoherenceMatches = [] - - for language in index_results: - filtered_results.append((language, max(index_results[language]))) - - return filtered_results - - return results - - -@lru_cache(maxsize=2048) -def coherence_ratio( - decoded_sequence: str, threshold: float = 0.1, lg_inclusion: Optional[str] = None -) -> CoherenceMatches: - """ - Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. - A layer = Character extraction by alphabets/ranges. - """ - - results: List[Tuple[str, float]] = [] - ignore_non_latin: bool = False - - sufficient_match_count: int = 0 - - lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] - if "Latin Based" in lg_inclusion_list: - ignore_non_latin = True - lg_inclusion_list.remove("Latin Based") - - for layer in alpha_unicode_split(decoded_sequence): - sequence_frequencies: TypeCounter[str] = Counter(layer) - most_common = sequence_frequencies.most_common() - - character_count: int = sum(o for c, o in most_common) - - if character_count <= TOO_SMALL_SEQUENCE: - continue - - popular_character_ordered: List[str] = [c for c, o in most_common] - - for language in lg_inclusion_list or alphabet_languages( - popular_character_ordered, ignore_non_latin - ): - ratio: float = characters_popularity_compare( - language, popular_character_ordered - ) - - if ratio < threshold: - continue - elif ratio >= 0.8: - sufficient_match_count += 1 - - results.append((language, round(ratio, 4))) - - if sufficient_match_count >= 3: - break - - return sorted( - filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True - ) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py b/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py deleted file mode 100644 index d95fedf..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .__main__ import cli_detect, query_yes_no - -__all__ = ( - "cli_detect", - "query_yes_no", -) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py b/venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py deleted file mode 100644 index f4bcbaa..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py +++ /dev/null @@ -1,296 +0,0 @@ -import argparse -import sys -from json import dumps -from os.path import abspath, basename, dirname, join, realpath -from platform import python_version -from typing import List, Optional -from unicodedata import unidata_version - -import charset_normalizer.md as md_module -from charset_normalizer import from_fp -from charset_normalizer.models import CliDetectionResult -from charset_normalizer.version import __version__ - - -def query_yes_no(question: str, default: str = "yes") -> bool: - """Ask a yes/no question via input() and return their answer. - - "question" is a string that is presented to the user. - "default" is the presumed answer if the user just hits . - It must be "yes" (the default), "no" or None (meaning - an answer is required of the user). - - The "answer" return value is True for "yes" or False for "no". - - Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input - """ - valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} - if default is None: - prompt = " [y/n] " - elif default == "yes": - prompt = " [Y/n] " - elif default == "no": - prompt = " [y/N] " - else: - raise ValueError("invalid default answer: '%s'" % default) - - while True: - sys.stdout.write(question + prompt) - choice = input().lower() - if default is not None and choice == "": - return valid[default] - elif choice in valid: - return valid[choice] - else: - sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n") - - -def cli_detect(argv: Optional[List[str]] = None) -> int: - """ - CLI assistant using ARGV and ArgumentParser - :param argv: - :return: 0 if everything is fine, anything else equal trouble - """ - parser = argparse.ArgumentParser( - description="The Real First Universal Charset Detector. " - "Discover originating encoding used on text file. " - "Normalize text to unicode." - ) - - parser.add_argument( - "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed" - ) - parser.add_argument( - "-v", - "--verbose", - action="store_true", - default=False, - dest="verbose", - help="Display complementary information about file if any. " - "Stdout will contain logs about the detection process.", - ) - parser.add_argument( - "-a", - "--with-alternative", - action="store_true", - default=False, - dest="alternatives", - help="Output complementary possibilities if any. Top-level JSON WILL be a list.", - ) - parser.add_argument( - "-n", - "--normalize", - action="store_true", - default=False, - dest="normalize", - help="Permit to normalize input file. If not set, program does not write anything.", - ) - parser.add_argument( - "-m", - "--minimal", - action="store_true", - default=False, - dest="minimal", - help="Only output the charset detected to STDOUT. Disabling JSON output.", - ) - parser.add_argument( - "-r", - "--replace", - action="store_true", - default=False, - dest="replace", - help="Replace file when trying to normalize it instead of creating a new one.", - ) - parser.add_argument( - "-f", - "--force", - action="store_true", - default=False, - dest="force", - help="Replace file without asking if you are sure, use this flag with caution.", - ) - parser.add_argument( - "-t", - "--threshold", - action="store", - default=0.2, - type=float, - dest="threshold", - help="Define a custom maximum amount of chaos allowed in decoded content. 0. <= chaos <= 1.", - ) - parser.add_argument( - "--version", - action="version", - version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( - __version__, - python_version(), - unidata_version, - "OFF" if md_module.__file__.lower().endswith(".py") else "ON", - ), - help="Show version information and exit.", - ) - - args = parser.parse_args(argv) - - if args.replace is True and args.normalize is False: - print("Use --replace in addition of --normalize only.", file=sys.stderr) - return 1 - - if args.force is True and args.replace is False: - print("Use --force in addition of --replace only.", file=sys.stderr) - return 1 - - if args.threshold < 0.0 or args.threshold > 1.0: - print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) - return 1 - - x_ = [] - - for my_file in args.files: - matches = from_fp(my_file, threshold=args.threshold, explain=args.verbose) - - best_guess = matches.best() - - if best_guess is None: - print( - 'Unable to identify originating encoding for "{}". {}'.format( - my_file.name, - "Maybe try increasing maximum amount of chaos." - if args.threshold < 1.0 - else "", - ), - file=sys.stderr, - ) - x_.append( - CliDetectionResult( - abspath(my_file.name), - None, - [], - [], - "Unknown", - [], - False, - 1.0, - 0.0, - None, - True, - ) - ) - else: - x_.append( - CliDetectionResult( - abspath(my_file.name), - best_guess.encoding, - best_guess.encoding_aliases, - [ - cp - for cp in best_guess.could_be_from_charset - if cp != best_guess.encoding - ], - best_guess.language, - best_guess.alphabets, - best_guess.bom, - best_guess.percent_chaos, - best_guess.percent_coherence, - None, - True, - ) - ) - - if len(matches) > 1 and args.alternatives: - for el in matches: - if el != best_guess: - x_.append( - CliDetectionResult( - abspath(my_file.name), - el.encoding, - el.encoding_aliases, - [ - cp - for cp in el.could_be_from_charset - if cp != el.encoding - ], - el.language, - el.alphabets, - el.bom, - el.percent_chaos, - el.percent_coherence, - None, - False, - ) - ) - - if args.normalize is True: - if best_guess.encoding.startswith("utf") is True: - print( - '"{}" file does not need to be normalized, as it already came from unicode.'.format( - my_file.name - ), - file=sys.stderr, - ) - if my_file.closed is False: - my_file.close() - continue - - dir_path = dirname(realpath(my_file.name)) - file_name = basename(realpath(my_file.name)) - - o_: List[str] = file_name.split(".") - - if args.replace is False: - o_.insert(-1, best_guess.encoding) - if my_file.closed is False: - my_file.close() - elif ( - args.force is False - and query_yes_no( - 'Are you sure to normalize "{}" by replacing it ?'.format( - my_file.name - ), - "no", - ) - is False - ): - if my_file.closed is False: - my_file.close() - continue - - try: - x_[0].unicode_path = join(dir_path, ".".join(o_)) - - with open(x_[0].unicode_path, "w", encoding="utf-8") as fp: - fp.write(str(best_guess)) - except IOError as e: - print(str(e), file=sys.stderr) - if my_file.closed is False: - my_file.close() - return 2 - - if my_file.closed is False: - my_file.close() - - if args.minimal is False: - print( - dumps( - [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, - ensure_ascii=True, - indent=4, - ) - ) - else: - for my_file in args.files: - print( - ", ".join( - [ - el.encoding or "undefined" - for el in x_ - if el.path == abspath(my_file.name) - ] - ) - ) - - return 0 - - -if __name__ == "__main__": - cli_detect() diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 1693f8953848965775b3672c4752a427e64820fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmYk0Jx;_h5QS}L1<{I?D7iw4-2u^1AjAnMpi46{_K;ZXKWt~Ea1)NemC{mi1uC45 zC(So{Gt$fpyWN&mee&lwUHkWH{!3KzSSw#uXr{Skj`!S&UhwMrMvE8LH9x$rJF#q) zHK?hOD$B+DL}|vEGWzh;ZI%|%N#haIdNnl_%Q>R77V(Rvvvs)QcZ4xGf?+Z$1x2M8 zINoK*D#>X4u#Z7!IFUbrHLnooG6sKpxVeUG3hkp*M>$XiHOiE!)bGhjYd$DJjR%Ov Yn}T?V^U~hCpeIWYYyP~cxMZ#P1FJJk4gdfE diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index 4c9c50ac0e58fa1e102c68de8fa7b37f95b9be2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6477 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 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/constant.py b/venv/lib/python3.10/site-packages/charset_normalizer/constant.py deleted file mode 100644 index 8634904..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/constant.py +++ /dev/null @@ -1,1995 +0,0 @@ -# -*- coding: utf-8 -*- -from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE -from encodings.aliases import aliases -from re import IGNORECASE, compile as re_compile -from typing import Dict, List, Set, Union - -# Contain for each eligible encoding a list of/item bytes SIG/BOM -ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = { - "utf_8": BOM_UTF8, - "utf_7": [ - b"\x2b\x2f\x76\x38", - b"\x2b\x2f\x76\x39", - b"\x2b\x2f\x76\x2b", - b"\x2b\x2f\x76\x2f", - b"\x2b\x2f\x76\x38\x2d", - ], - "gb18030": b"\x84\x31\x95\x33", - "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], - "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], -} - -TOO_SMALL_SEQUENCE: int = 32 -TOO_BIG_SEQUENCE: int = int(10e6) - -UTF8_MAXIMAL_ALLOCATION: int = 1_112_064 - -# Up-to-date Unicode ucd/15.0.0 -UNICODE_RANGES_COMBINED: Dict[str, range] = { - "Control character": range(32), - "Basic Latin": range(32, 128), - "Latin-1 Supplement": range(128, 256), - "Latin Extended-A": range(256, 384), - "Latin Extended-B": range(384, 592), - "IPA Extensions": range(592, 688), - "Spacing Modifier Letters": range(688, 768), - "Combining Diacritical Marks": range(768, 880), - "Greek and Coptic": range(880, 1024), - "Cyrillic": range(1024, 1280), - "Cyrillic Supplement": range(1280, 1328), - "Armenian": range(1328, 1424), - "Hebrew": range(1424, 1536), - "Arabic": range(1536, 1792), - "Syriac": range(1792, 1872), - "Arabic Supplement": range(1872, 1920), - "Thaana": range(1920, 1984), - "NKo": range(1984, 2048), - "Samaritan": range(2048, 2112), - "Mandaic": range(2112, 2144), - "Syriac Supplement": range(2144, 2160), - "Arabic Extended-B": range(2160, 2208), - "Arabic Extended-A": range(2208, 2304), - "Devanagari": range(2304, 2432), - "Bengali": range(2432, 2560), - "Gurmukhi": range(2560, 2688), - "Gujarati": range(2688, 2816), - "Oriya": range(2816, 2944), - "Tamil": range(2944, 3072), - "Telugu": range(3072, 3200), - "Kannada": range(3200, 3328), - "Malayalam": range(3328, 3456), - "Sinhala": range(3456, 3584), - "Thai": range(3584, 3712), - "Lao": range(3712, 3840), - "Tibetan": range(3840, 4096), - "Myanmar": range(4096, 4256), - "Georgian": range(4256, 4352), - "Hangul Jamo": range(4352, 4608), - "Ethiopic": range(4608, 4992), - "Ethiopic Supplement": range(4992, 5024), - "Cherokee": range(5024, 5120), - "Unified Canadian Aboriginal Syllabics": range(5120, 5760), - "Ogham": range(5760, 5792), - "Runic": range(5792, 5888), - "Tagalog": range(5888, 5920), - "Hanunoo": range(5920, 5952), - "Buhid": range(5952, 5984), - "Tagbanwa": range(5984, 6016), - "Khmer": range(6016, 6144), - "Mongolian": range(6144, 6320), - "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400), - "Limbu": range(6400, 6480), - "Tai Le": range(6480, 6528), - "New Tai Lue": range(6528, 6624), - "Khmer Symbols": range(6624, 6656), - "Buginese": range(6656, 6688), - "Tai Tham": range(6688, 6832), - "Combining Diacritical Marks Extended": range(6832, 6912), - "Balinese": range(6912, 7040), - "Sundanese": range(7040, 7104), - "Batak": range(7104, 7168), - "Lepcha": range(7168, 7248), - "Ol Chiki": range(7248, 7296), - "Cyrillic Extended-C": range(7296, 7312), - "Georgian Extended": range(7312, 7360), - "Sundanese Supplement": range(7360, 7376), - "Vedic Extensions": range(7376, 7424), - "Phonetic Extensions": range(7424, 7552), - "Phonetic Extensions Supplement": range(7552, 7616), - "Combining Diacritical Marks Supplement": range(7616, 7680), - "Latin Extended Additional": range(7680, 7936), - "Greek Extended": range(7936, 8192), - "General Punctuation": range(8192, 8304), - "Superscripts and Subscripts": range(8304, 8352), - "Currency Symbols": range(8352, 8400), - "Combining Diacritical Marks for Symbols": range(8400, 8448), - "Letterlike Symbols": range(8448, 8528), - "Number Forms": range(8528, 8592), - "Arrows": range(8592, 8704), - "Mathematical Operators": range(8704, 8960), - "Miscellaneous Technical": range(8960, 9216), - "Control Pictures": range(9216, 9280), - "Optical Character Recognition": range(9280, 9312), - "Enclosed Alphanumerics": range(9312, 9472), - "Box Drawing": range(9472, 9600), - "Block Elements": range(9600, 9632), - "Geometric Shapes": range(9632, 9728), - "Miscellaneous Symbols": range(9728, 9984), - "Dingbats": range(9984, 10176), - "Miscellaneous Mathematical Symbols-A": range(10176, 10224), - "Supplemental Arrows-A": range(10224, 10240), - "Braille Patterns": range(10240, 10496), - "Supplemental Arrows-B": range(10496, 10624), - "Miscellaneous Mathematical Symbols-B": range(10624, 10752), - "Supplemental Mathematical Operators": range(10752, 11008), - "Miscellaneous Symbols and Arrows": range(11008, 11264), - "Glagolitic": range(11264, 11360), - "Latin Extended-C": range(11360, 11392), - "Coptic": range(11392, 11520), - "Georgian Supplement": range(11520, 11568), - "Tifinagh": range(11568, 11648), - "Ethiopic Extended": range(11648, 11744), - "Cyrillic Extended-A": range(11744, 11776), - "Supplemental Punctuation": range(11776, 11904), - "CJK Radicals Supplement": range(11904, 12032), - "Kangxi Radicals": range(12032, 12256), - "Ideographic Description Characters": range(12272, 12288), - "CJK Symbols and Punctuation": range(12288, 12352), - "Hiragana": range(12352, 12448), - "Katakana": range(12448, 12544), - "Bopomofo": range(12544, 12592), - "Hangul Compatibility Jamo": range(12592, 12688), - "Kanbun": range(12688, 12704), - "Bopomofo Extended": range(12704, 12736), - "CJK Strokes": range(12736, 12784), - "Katakana Phonetic Extensions": range(12784, 12800), - "Enclosed CJK Letters and Months": range(12800, 13056), - "CJK Compatibility": range(13056, 13312), - "CJK Unified Ideographs Extension A": range(13312, 19904), - "Yijing Hexagram Symbols": range(19904, 19968), - "CJK Unified Ideographs": range(19968, 40960), - "Yi Syllables": range(40960, 42128), - "Yi Radicals": range(42128, 42192), - "Lisu": range(42192, 42240), - "Vai": range(42240, 42560), - "Cyrillic Extended-B": range(42560, 42656), - "Bamum": range(42656, 42752), - "Modifier Tone Letters": range(42752, 42784), - "Latin Extended-D": range(42784, 43008), - "Syloti Nagri": range(43008, 43056), - "Common Indic Number Forms": range(43056, 43072), - "Phags-pa": range(43072, 43136), - "Saurashtra": range(43136, 43232), - "Devanagari Extended": range(43232, 43264), - "Kayah Li": range(43264, 43312), - "Rejang": range(43312, 43360), - "Hangul Jamo Extended-A": range(43360, 43392), - "Javanese": range(43392, 43488), - "Myanmar Extended-B": range(43488, 43520), - "Cham": range(43520, 43616), - "Myanmar Extended-A": range(43616, 43648), - "Tai Viet": range(43648, 43744), - "Meetei Mayek Extensions": range(43744, 43776), - "Ethiopic Extended-A": range(43776, 43824), - "Latin Extended-E": range(43824, 43888), - "Cherokee Supplement": range(43888, 43968), - "Meetei Mayek": range(43968, 44032), - "Hangul Syllables": range(44032, 55216), - "Hangul Jamo Extended-B": range(55216, 55296), - "High Surrogates": range(55296, 56192), - "High Private Use Surrogates": range(56192, 56320), - "Low Surrogates": range(56320, 57344), - "Private Use Area": range(57344, 63744), - "CJK Compatibility Ideographs": range(63744, 64256), - "Alphabetic Presentation Forms": range(64256, 64336), - "Arabic Presentation Forms-A": range(64336, 65024), - "Variation Selectors": range(65024, 65040), - "Vertical Forms": range(65040, 65056), - "Combining Half Marks": range(65056, 65072), - "CJK Compatibility Forms": range(65072, 65104), - "Small Form Variants": range(65104, 65136), - "Arabic Presentation Forms-B": range(65136, 65280), - "Halfwidth and Fullwidth Forms": range(65280, 65520), - "Specials": range(65520, 65536), - "Linear B Syllabary": range(65536, 65664), - "Linear B Ideograms": range(65664, 65792), - "Aegean Numbers": range(65792, 65856), - "Ancient Greek Numbers": range(65856, 65936), - "Ancient Symbols": range(65936, 66000), - "Phaistos Disc": range(66000, 66048), - "Lycian": range(66176, 66208), - "Carian": range(66208, 66272), - "Coptic Epact Numbers": range(66272, 66304), - "Old Italic": range(66304, 66352), - "Gothic": range(66352, 66384), - "Old Permic": range(66384, 66432), - "Ugaritic": range(66432, 66464), - "Old Persian": range(66464, 66528), - "Deseret": range(66560, 66640), - "Shavian": range(66640, 66688), - "Osmanya": range(66688, 66736), - "Osage": range(66736, 66816), - "Elbasan": range(66816, 66864), - "Caucasian Albanian": range(66864, 66928), - "Vithkuqi": range(66928, 67008), - "Linear A": range(67072, 67456), - "Latin Extended-F": range(67456, 67520), - "Cypriot Syllabary": range(67584, 67648), - "Imperial Aramaic": range(67648, 67680), - "Palmyrene": range(67680, 67712), - "Nabataean": range(67712, 67760), - "Hatran": range(67808, 67840), - "Phoenician": range(67840, 67872), - "Lydian": range(67872, 67904), - "Meroitic Hieroglyphs": range(67968, 68000), - "Meroitic Cursive": range(68000, 68096), - "Kharoshthi": range(68096, 68192), - "Old South Arabian": range(68192, 68224), - "Old North Arabian": range(68224, 68256), - "Manichaean": range(68288, 68352), - "Avestan": range(68352, 68416), - "Inscriptional Parthian": range(68416, 68448), - "Inscriptional Pahlavi": range(68448, 68480), - "Psalter Pahlavi": range(68480, 68528), - "Old Turkic": range(68608, 68688), - "Old Hungarian": range(68736, 68864), - "Hanifi Rohingya": range(68864, 68928), - "Rumi Numeral Symbols": range(69216, 69248), - "Yezidi": range(69248, 69312), - "Arabic Extended-C": range(69312, 69376), - "Old Sogdian": range(69376, 69424), - "Sogdian": range(69424, 69488), - "Old Uyghur": range(69488, 69552), - "Chorasmian": range(69552, 69600), - "Elymaic": range(69600, 69632), - "Brahmi": range(69632, 69760), - "Kaithi": range(69760, 69840), - "Sora Sompeng": range(69840, 69888), - "Chakma": range(69888, 69968), - "Mahajani": range(69968, 70016), - "Sharada": range(70016, 70112), - "Sinhala Archaic Numbers": range(70112, 70144), - "Khojki": range(70144, 70224), - "Multani": range(70272, 70320), - "Khudawadi": range(70320, 70400), - "Grantha": range(70400, 70528), - "Newa": range(70656, 70784), - "Tirhuta": range(70784, 70880), - "Siddham": range(71040, 71168), - "Modi": range(71168, 71264), - "Mongolian Supplement": range(71264, 71296), - "Takri": range(71296, 71376), - "Ahom": range(71424, 71504), - "Dogra": range(71680, 71760), - "Warang Citi": range(71840, 71936), - "Dives Akuru": range(71936, 72032), - "Nandinagari": range(72096, 72192), - "Zanabazar Square": range(72192, 72272), - "Soyombo": range(72272, 72368), - "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384), - "Pau Cin Hau": range(72384, 72448), - "Devanagari Extended-A": range(72448, 72544), - "Bhaiksuki": range(72704, 72816), - "Marchen": range(72816, 72896), - "Masaram Gondi": range(72960, 73056), - "Gunjala Gondi": range(73056, 73136), - "Makasar": range(73440, 73472), - "Kawi": range(73472, 73568), - "Lisu Supplement": range(73648, 73664), - "Tamil Supplement": range(73664, 73728), - "Cuneiform": range(73728, 74752), - "Cuneiform Numbers and Punctuation": range(74752, 74880), - "Early Dynastic Cuneiform": range(74880, 75088), - "Cypro-Minoan": range(77712, 77824), - "Egyptian Hieroglyphs": range(77824, 78896), - "Egyptian Hieroglyph Format Controls": range(78896, 78944), - "Anatolian Hieroglyphs": range(82944, 83584), - "Bamum Supplement": range(92160, 92736), - "Mro": range(92736, 92784), - "Tangsa": range(92784, 92880), - "Bassa Vah": range(92880, 92928), - "Pahawh Hmong": range(92928, 93072), - "Medefaidrin": range(93760, 93856), - "Miao": range(93952, 94112), - "Ideographic Symbols and Punctuation": range(94176, 94208), - "Tangut": range(94208, 100352), - "Tangut Components": range(100352, 101120), - "Khitan Small Script": range(101120, 101632), - "Tangut Supplement": range(101632, 101760), - "Kana Extended-B": range(110576, 110592), - "Kana Supplement": range(110592, 110848), - "Kana Extended-A": range(110848, 110896), - "Small Kana Extension": range(110896, 110960), - "Nushu": range(110960, 111360), - "Duployan": range(113664, 113824), - "Shorthand Format Controls": range(113824, 113840), - "Znamenny Musical Notation": range(118528, 118736), - "Byzantine Musical Symbols": range(118784, 119040), - "Musical Symbols": range(119040, 119296), - "Ancient Greek Musical Notation": range(119296, 119376), - "Kaktovik Numerals": range(119488, 119520), - "Mayan Numerals": range(119520, 119552), - "Tai Xuan Jing Symbols": range(119552, 119648), - "Counting Rod Numerals": range(119648, 119680), - "Mathematical Alphanumeric Symbols": range(119808, 120832), - "Sutton SignWriting": range(120832, 121520), - "Latin Extended-G": range(122624, 122880), - "Glagolitic Supplement": range(122880, 122928), - "Cyrillic Extended-D": range(122928, 123024), - "Nyiakeng Puachue Hmong": range(123136, 123216), - "Toto": range(123536, 123584), - "Wancho": range(123584, 123648), - "Nag Mundari": range(124112, 124160), - "Ethiopic Extended-B": range(124896, 124928), - "Mende Kikakui": range(124928, 125152), - "Adlam": range(125184, 125280), - "Indic Siyaq Numbers": range(126064, 126144), - "Ottoman Siyaq Numbers": range(126208, 126288), - "Arabic Mathematical Alphabetic Symbols": range(126464, 126720), - "Mahjong Tiles": range(126976, 127024), - "Domino Tiles": range(127024, 127136), - "Playing Cards": range(127136, 127232), - "Enclosed Alphanumeric Supplement": range(127232, 127488), - "Enclosed Ideographic Supplement": range(127488, 127744), - "Miscellaneous Symbols and Pictographs": range(127744, 128512), - "Emoticons range(Emoji)": range(128512, 128592), - "Ornamental Dingbats": range(128592, 128640), - "Transport and Map Symbols": range(128640, 128768), - "Alchemical Symbols": range(128768, 128896), - "Geometric Shapes Extended": range(128896, 129024), - "Supplemental Arrows-C": range(129024, 129280), - "Supplemental Symbols and Pictographs": range(129280, 129536), - "Chess Symbols": range(129536, 129648), - "Symbols and Pictographs Extended-A": range(129648, 129792), - "Symbols for Legacy Computing": range(129792, 130048), - "CJK Unified Ideographs Extension B": range(131072, 173792), - "CJK Unified Ideographs Extension C": range(173824, 177984), - "CJK Unified Ideographs Extension D": range(177984, 178208), - "CJK Unified Ideographs Extension E": range(178208, 183984), - "CJK Unified Ideographs Extension F": range(183984, 191472), - "CJK Compatibility Ideographs Supplement": range(194560, 195104), - "CJK Unified Ideographs Extension G": range(196608, 201552), - "CJK Unified Ideographs Extension H": range(201552, 205744), - "Tags": range(917504, 917632), - "Variation Selectors Supplement": range(917760, 918000), - "Supplementary Private Use Area-A": range(983040, 1048576), - "Supplementary Private Use Area-B": range(1048576, 1114112), -} - - -UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [ - "Supplement", - "Extended", - "Extensions", - "Modifier", - "Marks", - "Punctuation", - "Symbols", - "Forms", - "Operators", - "Miscellaneous", - "Drawing", - "Block", - "Shapes", - "Supplemental", - "Tags", -] - -RE_POSSIBLE_ENCODING_INDICATION = re_compile( - r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", - IGNORECASE, -) - -IANA_NO_ALIASES = [ - "cp720", - "cp737", - "cp856", - "cp874", - "cp875", - "cp1006", - "koi8_r", - "koi8_t", - "koi8_u", -] - -IANA_SUPPORTED: List[str] = sorted( - filter( - lambda x: x.endswith("_codec") is False - and x not in {"rot_13", "tactis", "mbcs"}, - list(set(aliases.values())) + IANA_NO_ALIASES, - ) -) - -IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) - -# pre-computed code page that are similar using the function cp_similarity. -IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = { - "cp037": ["cp1026", "cp1140", "cp273", "cp500"], - "cp1026": ["cp037", "cp1140", "cp273", "cp500"], - "cp1125": ["cp866"], - "cp1140": ["cp037", "cp1026", "cp273", "cp500"], - "cp1250": ["iso8859_2"], - "cp1251": ["kz1048", "ptcp154"], - "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], - "cp1253": ["iso8859_7"], - "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], - "cp1257": ["iso8859_13"], - "cp273": ["cp037", "cp1026", "cp1140", "cp500"], - "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], - "cp500": ["cp037", "cp1026", "cp1140", "cp273"], - "cp850": ["cp437", "cp857", "cp858", "cp865"], - "cp857": ["cp850", "cp858", "cp865"], - "cp858": ["cp437", "cp850", "cp857", "cp865"], - "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], - "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], - "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], - "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], - "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], - "cp866": ["cp1125"], - "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], - "iso8859_11": ["tis_620"], - "iso8859_13": ["cp1257"], - "iso8859_14": [ - "iso8859_10", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_15": [ - "cp1252", - "cp1254", - "iso8859_10", - "iso8859_14", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_16": [ - "iso8859_14", - "iso8859_15", - "iso8859_2", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], - "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], - "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], - "iso8859_7": ["cp1253"], - "iso8859_9": [ - "cp1252", - "cp1254", - "cp1258", - "iso8859_10", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_4", - "latin_1", - ], - "kz1048": ["cp1251", "ptcp154"], - "latin_1": [ - "cp1252", - "cp1254", - "cp1258", - "iso8859_10", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_4", - "iso8859_9", - ], - "mac_iceland": ["mac_roman", "mac_turkish"], - "mac_roman": ["mac_iceland", "mac_turkish"], - "mac_turkish": ["mac_iceland", "mac_roman"], - "ptcp154": ["cp1251", "kz1048"], - "tis_620": ["iso8859_11"], -} - - -CHARDET_CORRESPONDENCE: Dict[str, str] = { - "iso2022_kr": "ISO-2022-KR", - "iso2022_jp": "ISO-2022-JP", - "euc_kr": "EUC-KR", - "tis_620": "TIS-620", - "utf_32": "UTF-32", - "euc_jp": "EUC-JP", - "koi8_r": "KOI8-R", - "iso8859_1": "ISO-8859-1", - "iso8859_2": "ISO-8859-2", - "iso8859_5": "ISO-8859-5", - "iso8859_6": "ISO-8859-6", - "iso8859_7": "ISO-8859-7", - "iso8859_8": "ISO-8859-8", - "utf_16": "UTF-16", - "cp855": "IBM855", - "mac_cyrillic": "MacCyrillic", - "gb2312": "GB2312", - "gb18030": "GB18030", - "cp932": "CP932", - "cp866": "IBM866", - "utf_8": "utf-8", - "utf_8_sig": "UTF-8-SIG", - "shift_jis": "SHIFT_JIS", - "big5": "Big5", - "cp1250": "windows-1250", - "cp1251": "windows-1251", - "cp1252": "Windows-1252", - "cp1253": "windows-1253", - "cp1255": "windows-1255", - "cp1256": "windows-1256", - "cp1254": "Windows-1254", - "cp949": "CP949", -} - - -COMMON_SAFE_ASCII_CHARACTERS: Set[str] = { - "<", - ">", - "=", - ":", - "/", - "&", - ";", - "{", - "}", - "[", - "]", - ",", - "|", - '"', - "-", -} - - -KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"} -ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"} - -# Logging LEVEL below DEBUG -TRACE: int = 5 - - -# Language label that contain the em dash "—" -# character are to be considered alternative seq to origin -FREQUENCIES: Dict[str, List[str]] = { - "English": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "u", - "m", - "f", - "p", - "g", - "w", - "y", - "b", - "v", - "k", - "x", - "j", - "z", - "q", - ], - "English—": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "m", - "u", - "f", - "p", - "g", - "w", - "b", - "y", - "v", - "k", - "j", - "x", - "z", - "q", - ], - "German": [ - "e", - "n", - "i", - "r", - "s", - "t", - "a", - "d", - "h", - "u", - "l", - "g", - "o", - "c", - "m", - "b", - "f", - "k", - "w", - "z", - "p", - "v", - "ü", - "ä", - "ö", - "j", - ], - "French": [ - "e", - "a", - "s", - "n", - "i", - "t", - "r", - "l", - "u", - "o", - "d", - "c", - "p", - "m", - "é", - "v", - "g", - "f", - "b", - "h", - "q", - "à", - "x", - "è", - "y", - "j", - ], - "Dutch": [ - "e", - "n", - "a", - "i", - "r", - "t", - "o", - "d", - "s", - "l", - "g", - "h", - "v", - "m", - "u", - "k", - "c", - "p", - "b", - "w", - "j", - "z", - "f", - "y", - "x", - "ë", - ], - "Italian": [ - "e", - "i", - "a", - "o", - "n", - "l", - "t", - "r", - "s", - "c", - "d", - "u", - "p", - "m", - "g", - "v", - "f", - "b", - "z", - "h", - "q", - "è", - "à", - "k", - "y", - "ò", - ], - "Polish": [ - "a", - "i", - "o", - "e", - "n", - "r", - "z", - "w", - "s", - "c", - "t", - "k", - "y", - "d", - "p", - "m", - "u", - "l", - "j", - "ł", - "g", - "b", - "h", - "ą", - "ę", - "ó", - ], - "Spanish": [ - "e", - "a", - "o", - "n", - "s", - "r", - "i", - "l", - "d", - "t", - "c", - "u", - "m", - "p", - "b", - "g", - "v", - "f", - "y", - "ó", - "h", - "q", - "í", - "j", - "z", - "á", - ], - "Russian": [ - "о", - "а", - "е", - "и", - "н", - "с", - "т", - "р", - "в", - "л", - "к", - "м", - "д", - "п", - "у", - "г", - "я", - "ы", - "з", - "б", - "й", - "ь", - "ч", - "х", - "ж", - "ц", - ], - # Jap-Kanji - "Japanese": [ - "人", - "一", - "大", - "亅", - "丁", - "丨", - "竹", - "笑", - "口", - "日", - "今", - "二", - "彳", - "行", - "十", - "土", - "丶", - "寸", - "寺", - "時", - "乙", - "丿", - "乂", - "气", - "気", - "冂", - "巾", - "亠", - "市", - "目", - "儿", - "見", - "八", - "小", - "凵", - "県", - "月", - "彐", - "門", - "間", - "木", - "東", - "山", - "出", - "本", - "中", - "刀", - "分", - "耳", - "又", - "取", - "最", - "言", - "田", - "心", - "思", - "刂", - "前", - "京", - "尹", - "事", - "生", - "厶", - "云", - "会", - "未", - "来", - "白", - "冫", - "楽", - "灬", - "馬", - "尸", - "尺", - "駅", - "明", - "耂", - "者", - "了", - "阝", - "都", - "高", - "卜", - "占", - "厂", - "广", - "店", - "子", - "申", - "奄", - "亻", - "俺", - "上", - "方", - "冖", - "学", - "衣", - "艮", - "食", - "自", - ], - # Jap-Katakana - "Japanese—": [ - "ー", - "ン", - "ス", - "・", - "ル", - "ト", - "リ", - "イ", - "ア", - "ラ", - "ッ", - "ク", - "ド", - "シ", - "レ", - "ジ", - "タ", - "フ", - "ロ", - "カ", - "テ", - "マ", - "ィ", - "グ", - "バ", - "ム", - "プ", - "オ", - "コ", - "デ", - "ニ", - "ウ", - "メ", - "サ", - "ビ", - "ナ", - "ブ", - "ャ", - "エ", - "ュ", - "チ", - "キ", - "ズ", - "ダ", - "パ", - "ミ", - "ェ", - "ョ", - "ハ", - "セ", - "ベ", - "ガ", - "モ", - "ツ", - "ネ", - "ボ", - "ソ", - "ノ", - "ァ", - "ヴ", - "ワ", - "ポ", - "ペ", - "ピ", - "ケ", - "ゴ", - "ギ", - "ザ", - "ホ", - "ゲ", - "ォ", - "ヤ", - "ヒ", - "ユ", - "ヨ", - "ヘ", - "ゼ", - "ヌ", - "ゥ", - "ゾ", - "ヶ", - "ヂ", - "ヲ", - "ヅ", - "ヵ", - "ヱ", - "ヰ", - "ヮ", - "ヽ", - "゠", - "ヾ", - "ヷ", - "ヿ", - "ヸ", - "ヹ", - "ヺ", - ], - # Jap-Hiragana - "Japanese——": [ - "の", - "に", - "る", - "た", - "と", - "は", - "し", - "い", - "を", - "で", - "て", - "が", - "な", - "れ", - "か", - "ら", - "さ", - "っ", - "り", - "す", - "あ", - "も", - "こ", - "ま", - "う", - "く", - "よ", - "き", - "ん", - "め", - "お", - "け", - "そ", - "つ", - "だ", - "や", - "え", - "ど", - "わ", - "ち", - "み", - "せ", - "じ", - "ば", - "へ", - "び", - "ず", - "ろ", - "ほ", - "げ", - "む", - "べ", - "ひ", - "ょ", - "ゆ", - "ぶ", - "ご", - "ゃ", - "ね", - "ふ", - "ぐ", - "ぎ", - "ぼ", - "ゅ", - "づ", - "ざ", - "ぞ", - "ぬ", - "ぜ", - "ぱ", - "ぽ", - "ぷ", - "ぴ", - "ぃ", - "ぁ", - "ぇ", - "ぺ", - "ゞ", - "ぢ", - "ぉ", - "ぅ", - "ゐ", - "ゝ", - "ゑ", - "゛", - "゜", - "ゎ", - "ゔ", - "゚", - "ゟ", - "゙", - "ゕ", - "ゖ", - ], - "Portuguese": [ - "a", - "e", - "o", - "s", - "i", - "r", - "d", - "n", - "t", - "m", - "u", - "c", - "l", - "p", - "g", - "v", - "b", - "f", - "h", - "ã", - "q", - "é", - "ç", - "á", - "z", - "í", - ], - "Swedish": [ - "e", - "a", - "n", - "r", - "t", - "s", - "i", - "l", - "d", - "o", - "m", - "k", - "g", - "v", - "h", - "f", - "u", - "p", - "ä", - "c", - "b", - "ö", - "å", - "y", - "j", - "x", - ], - "Chinese": [ - "的", - "一", - "是", - "不", - "了", - "在", - "人", - "有", - "我", - "他", - "这", - "个", - "们", - "中", - "来", - "上", - "大", - "为", - "和", - "国", - "地", - "到", - "以", - "说", - "时", - "要", - "就", - "出", - "会", - "可", - "也", - "你", - "对", - "生", - "能", - "而", - "子", - "那", - "得", - "于", - "着", - "下", - "自", - "之", - "年", - "过", - "发", - "后", - "作", - "里", - "用", - "道", - "行", - "所", - "然", - "家", - "种", - "事", - "成", - "方", - "多", - "经", - "么", - "去", - "法", - "学", - "如", - "都", - "同", - "现", - "当", - "没", - "动", - "面", - "起", - "看", - "定", - "天", - "分", - "还", - "进", - "好", - "小", - "部", - "其", - "些", - "主", - "样", - "理", - "心", - "她", - "本", - "前", - "开", - "但", - "因", - "只", - "从", - "想", - "实", - ], - "Ukrainian": [ - "о", - "а", - "н", - "і", - "и", - "р", - "в", - "т", - "е", - "с", - "к", - "л", - "у", - "д", - "м", - "п", - "з", - "я", - "ь", - "б", - "г", - "й", - "ч", - "х", - "ц", - "ї", - ], - "Norwegian": [ - "e", - "r", - "n", - "t", - "a", - "s", - "i", - "o", - "l", - "d", - "g", - "k", - "m", - "v", - "f", - "p", - "u", - "b", - "h", - "å", - "y", - "j", - "ø", - "c", - "æ", - "w", - ], - "Finnish": [ - "a", - "i", - "n", - "t", - "e", - "s", - "l", - "o", - "u", - "k", - "ä", - "m", - "r", - "v", - "j", - "h", - "p", - "y", - "d", - "ö", - "g", - "c", - "b", - "f", - "w", - "z", - ], - "Vietnamese": [ - "n", - "h", - "t", - "i", - "c", - "g", - "a", - "o", - "u", - "m", - "l", - "r", - "à", - "đ", - "s", - "e", - "v", - "p", - "b", - "y", - "ư", - "d", - "á", - "k", - "ộ", - "ế", - ], - "Czech": [ - "o", - "e", - "a", - "n", - "t", - "s", - "i", - "l", - "v", - "r", - "k", - "d", - "u", - "m", - "p", - "í", - "c", - "h", - "z", - "á", - "y", - "j", - "b", - "ě", - "é", - "ř", - ], - "Hungarian": [ - "e", - "a", - "t", - "l", - "s", - "n", - "k", - "r", - "i", - "o", - "z", - "á", - "é", - "g", - "m", - "b", - "y", - "v", - "d", - "h", - "u", - "p", - "j", - "ö", - "f", - "c", - ], - "Korean": [ - "이", - "다", - "에", - "의", - "는", - "로", - "하", - "을", - "가", - "고", - "지", - "서", - "한", - "은", - "기", - "으", - "년", - "대", - "사", - "시", - "를", - "리", - "도", - "인", - "스", - "일", - ], - "Indonesian": [ - "a", - "n", - "e", - "i", - "r", - "t", - "u", - "s", - "d", - "k", - "m", - "l", - "g", - "p", - "b", - "o", - "h", - "y", - "j", - "c", - "w", - "f", - "v", - "z", - "x", - "q", - ], - "Turkish": [ - "a", - "e", - "i", - "n", - "r", - "l", - "ı", - "k", - "d", - "t", - "s", - "m", - "y", - "u", - "o", - "b", - "ü", - "ş", - "v", - "g", - "z", - "h", - "c", - "p", - "ç", - "ğ", - ], - "Romanian": [ - "e", - "i", - "a", - "r", - "n", - "t", - "u", - "l", - "o", - "c", - "s", - "d", - "p", - "m", - "ă", - "f", - "v", - "î", - "g", - "b", - "ș", - "ț", - "z", - "h", - "â", - "j", - ], - "Farsi": [ - "ا", - "ی", - "ر", - "د", - "ن", - "ه", - "و", - "م", - "ت", - "ب", - "س", - "ل", - "ک", - "ش", - "ز", - "ف", - "گ", - "ع", - "خ", - "ق", - "ج", - "آ", - "پ", - "ح", - "ط", - "ص", - ], - "Arabic": [ - "ا", - "ل", - "ي", - "م", - "و", - "ن", - "ر", - "ت", - "ب", - "ة", - "ع", - "د", - "س", - "ف", - "ه", - "ك", - "ق", - "أ", - "ح", - "ج", - "ش", - "ط", - "ص", - "ى", - "خ", - "إ", - ], - "Danish": [ - "e", - "r", - "n", - "t", - "a", - "i", - "s", - "d", - "l", - "o", - "g", - "m", - "k", - "f", - "v", - "u", - "b", - "h", - "p", - "å", - "y", - "ø", - "æ", - "c", - "j", - "w", - ], - "Serbian": [ - "а", - "и", - "о", - "е", - "н", - "р", - "с", - "у", - "т", - "к", - "ј", - "в", - "д", - "м", - "п", - "л", - "г", - "з", - "б", - "a", - "i", - "e", - "o", - "n", - "ц", - "ш", - ], - "Lithuanian": [ - "i", - "a", - "s", - "o", - "r", - "e", - "t", - "n", - "u", - "k", - "m", - "l", - "p", - "v", - "d", - "j", - "g", - "ė", - "b", - "y", - "ų", - "š", - "ž", - "c", - "ą", - "į", - ], - "Slovene": [ - "e", - "a", - "i", - "o", - "n", - "r", - "s", - "l", - "t", - "j", - "v", - "k", - "d", - "p", - "m", - "u", - "z", - "b", - "g", - "h", - "č", - "c", - "š", - "ž", - "f", - "y", - ], - "Slovak": [ - "o", - "a", - "e", - "n", - "i", - "r", - "v", - "t", - "s", - "l", - "k", - "d", - "m", - "p", - "u", - "c", - "h", - "j", - "b", - "z", - "á", - "y", - "ý", - "í", - "č", - "é", - ], - "Hebrew": [ - "י", - "ו", - "ה", - "ל", - "ר", - "ב", - "ת", - "מ", - "א", - "ש", - "נ", - "ע", - "ם", - "ד", - "ק", - "ח", - "פ", - "ס", - "כ", - "ג", - "ט", - "צ", - "ן", - "ז", - "ך", - ], - "Bulgarian": [ - "а", - "и", - "о", - "е", - "н", - "т", - "р", - "с", - "в", - "л", - "к", - "д", - "п", - "м", - "з", - "г", - "я", - "ъ", - "у", - "б", - "ч", - "ц", - "й", - "ж", - "щ", - "х", - ], - "Croatian": [ - "a", - "i", - "o", - "e", - "n", - "r", - "j", - "s", - "t", - "u", - "k", - "l", - "v", - "d", - "m", - "p", - "g", - "z", - "b", - "c", - "č", - "h", - "š", - "ž", - "ć", - "f", - ], - "Hindi": [ - "क", - "र", - "स", - "न", - "त", - "म", - "ह", - "प", - "य", - "ल", - "व", - "ज", - "द", - "ग", - "ब", - "श", - "ट", - "अ", - "ए", - "थ", - "भ", - "ड", - "च", - "ध", - "ष", - "इ", - ], - "Estonian": [ - "a", - "i", - "e", - "s", - "t", - "l", - "u", - "n", - "o", - "k", - "r", - "d", - "m", - "v", - "g", - "p", - "j", - "h", - "ä", - "b", - "õ", - "ü", - "f", - "c", - "ö", - "y", - ], - "Thai": [ - "า", - "น", - "ร", - "อ", - "ก", - "เ", - "ง", - "ม", - "ย", - "ล", - "ว", - "ด", - "ท", - "ส", - "ต", - "ะ", - "ป", - "บ", - "ค", - "ห", - "แ", - "จ", - "พ", - "ช", - "ข", - "ใ", - ], - "Greek": [ - "α", - "τ", - "ο", - "ι", - "ε", - "ν", - "ρ", - "σ", - "κ", - "η", - "π", - "ς", - "υ", - "μ", - "λ", - "ί", - "ό", - "ά", - "γ", - "έ", - "δ", - "ή", - "ω", - "χ", - "θ", - "ύ", - ], - "Tamil": [ - "க", - "த", - "ப", - "ட", - "ர", - "ம", - "ல", - "ன", - "வ", - "ற", - "ய", - "ள", - "ச", - "ந", - "இ", - "ண", - "அ", - "ஆ", - "ழ", - "ங", - "எ", - "உ", - "ஒ", - "ஸ", - ], - "Kazakh": [ - "а", - "ы", - "е", - "н", - "т", - "р", - "л", - "і", - "д", - "с", - "м", - "қ", - "к", - "о", - "б", - "и", - "у", - "ғ", - "ж", - "ң", - "з", - "ш", - "й", - "п", - "г", - "ө", - ], -} - -LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py b/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py deleted file mode 100644 index 43aad21..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py +++ /dev/null @@ -1,54 +0,0 @@ -from typing import Any, Dict, Optional, Union -from warnings import warn - -from .api import from_bytes -from .constant import CHARDET_CORRESPONDENCE - - -def detect( - byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any -) -> Dict[str, Optional[Union[str, float]]]: - """ - chardet legacy method - Detect the encoding of the given byte string. It should be mostly backward-compatible. - Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) - This function is deprecated and should be used to migrate your project easily, consult the documentation for - further information. Not planned for removal. - - :param byte_str: The byte sequence to examine. - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - """ - if len(kwargs): - warn( - f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" - ) - - if not isinstance(byte_str, (bytearray, bytes)): - raise TypeError( # pragma: nocover - "Expected object of type bytes or bytearray, got: " - "{0}".format(type(byte_str)) - ) - - if isinstance(byte_str, bytearray): - byte_str = bytes(byte_str) - - r = from_bytes(byte_str).best() - - encoding = r.encoding if r is not None else None - language = r.language if r is not None and r.language != "Unknown" else "" - confidence = 1.0 - r.chaos if r is not None else None - - # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process - # but chardet does return 'utf-8-sig' and it is a valid codec name. - if r is not None and encoding == "utf_8" and r.bom: - encoding += "_sig" - - if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE: - encoding = CHARDET_CORRESPONDENCE[encoding] - - return { - "encoding": encoding, - "language": language, - "confidence": confidence, - } diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so b/venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so deleted file mode 100755 index 3824a428ffd621958e1f1f22dfd105c58417ffd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16064 zcmeHOZ)_Y_5r3D9n`<3x6Ph-Sk-Uu(DM937yCkFpH|O}@8tl{?%Bt)gEUl64ds70bGAW+gqCE^P$Ab~1XvVc@}i%3F4Wxn{Bd2fE} z-Ss&jA@QaAEbq+xX6C)w*?oI+x9@$uZ>WD$BB9Wd>ORHNLW@B%P#gxMR7M?Ex6-jy z?bNoL*Hr7dTLc1?etC=rR*4*?7bPT6=o!}IS?o;B(np`JhzJ_=;}BN%8-tauFdf-s z;Rw->O~~ zdofqfXuMIqAh@10taO}{#d681dTzyY9OX=vraa|L5K+$H*szn!SMn#Ps$RY_Hr!Jv zm-1uocp-0e^)*g**5wY|!ql0(8krlU9-U&2x#D!0Mloc#oSUJJM&^3l=_+voD`#ZR z>CL-^LOBa(M@L1`6{g0gy~#@6&84g5bUVvg<_@WWp}}K4PG`C^eGsQCbQ9e(=8pm9 zenk}5W@hIUC2^CwEY_IMn131MQRXXfC3q@=LtZ>;I^=tm?-8`60FF7wx@!SEIR91x z_!e|RbVtSrjLFo}fEB=b&Y@0O~{Z&>D%cKHP@zrr$?vdhnE`R6Qi3A?;N zvVFemMFQ;e4bL;Vcg5RI;T>Y0!n?J$*xWWxw(3=(WdE49KX``8zE%6&HT&YDC^6hh1ysgyjJ0DkS>0t_K zX_5}FHQYsZiH9*R=<-)dIgxH|dz_^PW>GSBm<@UnO14IZknIdM?X8H`Ay2oujkf z!Xf`0`6gPEM=YZJ<^R&vTJ6(BZ(OU@ST}aPR^xBD{0^C0;>@T@%(f(2w{A%-(60%* z3FCLY^W-81Z~Qos5gYj0D_qqjAsKHK;} z6TkoB_k}#(Wzq-VlMxiRI0JD8;ta$Yh%*ppAkILXfj9$k2I35SATr>ukBqE`#G1z+ zOBNvW+DmR*4e=LZen@1jTfIwUtjBB>8EX-D!e7>3^7l7x(EoF_R%ZDTeuGR6-`QT~ zFOk%+#`3$O=k>$f{$L2LxHWBuP;sLLkOmMpwIF(Y|HPWeI|ZMXfq`G%Y!ry|IkBTf zsJdZ1dONG*e@^V_6|k0(NBSD7<)=jdFOmH?rN93d!Fu-Sc!y-6ZNJb5giZ)OE%X~g z2YPxwW$mSv;QOqOc3REbVRg25cC>fg({Ak@&F3uJ^+d71qhnumw6L6{mA6oApUr?QTiF!uE~+ zev2@^em%J9hi07>v^0EDHTnAng4(2NR`Yf3TNLJL*q$B=GC#xkHidQ4Vf-Vi-hGs$ zUw5#cI&8n)pO0bu4rOP8h~bk8vvN(x^J%lX&PyRejh|1O=qZ5xD^Sv!3yoih&Z(ny^-Vz+oRT6c3kB*jML&s)1u}JE* zzLoH8^r?c+4>;Yufqf_87K{S4djtCi39q*g!xcQbui{a{>-GO6;kyFkf&GE*r_OxO zR=lb=Gcl3Qs)%f;zJ-pl7`lSEw$ zy~D$CD;0On$(Ov!oSLY(#k`Z7DHi9*B_Ns27eUivj-qj#{?YE?KBw<^FYg<1a@Ddk z>6UW5Ii&Xs$Ge9IdkCc`xzlHhsogtD5bYy@)4Lb)&=z#ZS zam@#R)B&It%};JTF0=4Qy_O-2`-VU21yIzLWTKmN2T|F?ag7Im)D@r@2l2xW^aS~H z%?KIw2dE_@MdKG(zuRCP{86WX^5+0Ij2}J!66x6g7#mSTJp;O6VC}!1_^AIZVVo1x z<^Drn9`=5{Fa7XX!B!<9=x>Q1=ycGScv1WGYY~5Z?t|`$Trl{f+s7mR_#6U7eGmI+ z{NED)P8e9i2>l{(p~xS?;(d$ECuL!Cy|p$KfBOxc7V`VrHeoMM)fgujj9AhzHL#o*#&vSie1V(6B$kK%$9= Uy6mp!-@pYpwHt=`$Eg3m0k}Z)kN^Mx diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/md.py b/venv/lib/python3.10/site-packages/charset_normalizer/md.py deleted file mode 100644 index 77897aa..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/md.py +++ /dev/null @@ -1,615 +0,0 @@ -from functools import lru_cache -from logging import getLogger -from typing import List, Optional - -from .constant import ( - COMMON_SAFE_ASCII_CHARACTERS, - TRACE, - UNICODE_SECONDARY_RANGE_KEYWORD, -) -from .utils import ( - is_accentuated, - is_arabic, - is_arabic_isolated_form, - is_case_variable, - is_cjk, - is_emoticon, - is_hangul, - is_hiragana, - is_katakana, - is_latin, - is_punctuation, - is_separator, - is_symbol, - is_thai, - is_unprintable, - remove_accent, - unicode_range, -) - - -class MessDetectorPlugin: - """ - Base abstract class used for mess detection plugins. - All detectors MUST extend and implement given methods. - """ - - def eligible(self, character: str) -> bool: - """ - Determine if given character should be fed in. - """ - raise NotImplementedError # pragma: nocover - - def feed(self, character: str) -> None: - """ - The main routine to be executed upon character. - Insert the logic in witch the text would be considered chaotic. - """ - raise NotImplementedError # pragma: nocover - - def reset(self) -> None: # pragma: no cover - """ - Permit to reset the plugin to the initial state. - """ - raise NotImplementedError - - @property - def ratio(self) -> float: - """ - Compute the chaos ratio based on what your feed() has seen. - Must NOT be lower than 0.; No restriction gt 0. - """ - raise NotImplementedError # pragma: nocover - - -class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._punctuation_count: int = 0 - self._symbol_count: int = 0 - self._character_count: int = 0 - - self._last_printable_char: Optional[str] = None - self._frenzy_symbol_in_word: bool = False - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character != self._last_printable_char - and character not in COMMON_SAFE_ASCII_CHARACTERS - ): - if is_punctuation(character): - self._punctuation_count += 1 - elif ( - character.isdigit() is False - and is_symbol(character) - and is_emoticon(character) is False - ): - self._symbol_count += 2 - - self._last_printable_char = character - - def reset(self) -> None: # pragma: no cover - self._punctuation_count = 0 - self._character_count = 0 - self._symbol_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - ratio_of_punctuation: float = ( - self._punctuation_count + self._symbol_count - ) / self._character_count - - return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 - - -class TooManyAccentuatedPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._character_count: int = 0 - self._accentuated_count: int = 0 - - def eligible(self, character: str) -> bool: - return character.isalpha() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_accentuated(character): - self._accentuated_count += 1 - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._accentuated_count = 0 - - @property - def ratio(self) -> float: - if self._character_count < 8: - return 0.0 - - ratio_of_accentuation: float = self._accentuated_count / self._character_count - return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 - - -class UnprintablePlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._unprintable_count: int = 0 - self._character_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if is_unprintable(character): - self._unprintable_count += 1 - self._character_count += 1 - - def reset(self) -> None: # pragma: no cover - self._unprintable_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._unprintable_count * 8) / self._character_count - - -class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._successive_count: int = 0 - self._character_count: int = 0 - - self._last_latin_character: Optional[str] = None - - def eligible(self, character: str) -> bool: - return character.isalpha() and is_latin(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - if ( - self._last_latin_character is not None - and is_accentuated(character) - and is_accentuated(self._last_latin_character) - ): - if character.isupper() and self._last_latin_character.isupper(): - self._successive_count += 1 - # Worse if its the same char duplicated with different accent. - if remove_accent(character) == remove_accent(self._last_latin_character): - self._successive_count += 1 - self._last_latin_character = character - - def reset(self) -> None: # pragma: no cover - self._successive_count = 0 - self._character_count = 0 - self._last_latin_character = None - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._successive_count * 2) / self._character_count - - -class SuspiciousRange(MessDetectorPlugin): - def __init__(self) -> None: - self._suspicious_successive_range_count: int = 0 - self._character_count: int = 0 - self._last_printable_seen: Optional[str] = None - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character.isspace() - or is_punctuation(character) - or character in COMMON_SAFE_ASCII_CHARACTERS - ): - self._last_printable_seen = None - return - - if self._last_printable_seen is None: - self._last_printable_seen = character - return - - unicode_range_a: Optional[str] = unicode_range(self._last_printable_seen) - unicode_range_b: Optional[str] = unicode_range(character) - - if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): - self._suspicious_successive_range_count += 1 - - self._last_printable_seen = character - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._suspicious_successive_range_count = 0 - self._last_printable_seen = None - - @property - def ratio(self) -> float: - if self._character_count <= 24: - return 0.0 - - ratio_of_suspicious_range_usage: float = ( - self._suspicious_successive_range_count * 2 - ) / self._character_count - - return ratio_of_suspicious_range_usage - - -class SuperWeirdWordPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._word_count: int = 0 - self._bad_word_count: int = 0 - self._foreign_long_count: int = 0 - - self._is_current_word_bad: bool = False - self._foreign_long_watch: bool = False - - self._character_count: int = 0 - self._bad_character_count: int = 0 - - self._buffer: str = "" - self._buffer_accent_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if character.isalpha(): - self._buffer += character - if is_accentuated(character): - self._buffer_accent_count += 1 - if ( - self._foreign_long_watch is False - and (is_latin(character) is False or is_accentuated(character)) - and is_cjk(character) is False - and is_hangul(character) is False - and is_katakana(character) is False - and is_hiragana(character) is False - and is_thai(character) is False - ): - self._foreign_long_watch = True - return - if not self._buffer: - return - if ( - character.isspace() or is_punctuation(character) or is_separator(character) - ) and self._buffer: - self._word_count += 1 - buffer_length: int = len(self._buffer) - - self._character_count += buffer_length - - if buffer_length >= 4: - if self._buffer_accent_count / buffer_length > 0.34: - self._is_current_word_bad = True - # Word/Buffer ending with an upper case accentuated letter are so rare, - # that we will consider them all as suspicious. Same weight as foreign_long suspicious. - if ( - is_accentuated(self._buffer[-1]) - and self._buffer[-1].isupper() - and all(_.isupper() for _ in self._buffer) is False - ): - self._foreign_long_count += 1 - self._is_current_word_bad = True - if buffer_length >= 24 and self._foreign_long_watch: - camel_case_dst = [ - i - for c, i in zip(self._buffer, range(0, buffer_length)) - if c.isupper() - ] - probable_camel_cased: bool = False - - if camel_case_dst and (len(camel_case_dst) / buffer_length <= 0.3): - probable_camel_cased = True - - if not probable_camel_cased: - self._foreign_long_count += 1 - self._is_current_word_bad = True - - if self._is_current_word_bad: - self._bad_word_count += 1 - self._bad_character_count += len(self._buffer) - self._is_current_word_bad = False - - self._foreign_long_watch = False - self._buffer = "" - self._buffer_accent_count = 0 - elif ( - character not in {"<", ">", "-", "=", "~", "|", "_"} - and character.isdigit() is False - and is_symbol(character) - ): - self._is_current_word_bad = True - self._buffer += character - - def reset(self) -> None: # pragma: no cover - self._buffer = "" - self._is_current_word_bad = False - self._foreign_long_watch = False - self._bad_word_count = 0 - self._word_count = 0 - self._character_count = 0 - self._bad_character_count = 0 - self._foreign_long_count = 0 - - @property - def ratio(self) -> float: - if self._word_count <= 10 and self._foreign_long_count == 0: - return 0.0 - - return self._bad_character_count / self._character_count - - -class CjkInvalidStopPlugin(MessDetectorPlugin): - """ - GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and - can be easily detected. Searching for the overuse of '丅' and '丄'. - """ - - def __init__(self) -> None: - self._wrong_stop_count: int = 0 - self._cjk_character_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if character in {"丅", "丄"}: - self._wrong_stop_count += 1 - return - if is_cjk(character): - self._cjk_character_count += 1 - - def reset(self) -> None: # pragma: no cover - self._wrong_stop_count = 0 - self._cjk_character_count = 0 - - @property - def ratio(self) -> float: - if self._cjk_character_count < 16: - return 0.0 - return self._wrong_stop_count / self._cjk_character_count - - -class ArchaicUpperLowerPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._buf: bool = False - - self._character_count_since_last_sep: int = 0 - - self._successive_upper_lower_count: int = 0 - self._successive_upper_lower_count_final: int = 0 - - self._character_count: int = 0 - - self._last_alpha_seen: Optional[str] = None - self._current_ascii_only: bool = True - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - is_concerned = character.isalpha() and is_case_variable(character) - chunk_sep = is_concerned is False - - if chunk_sep and self._character_count_since_last_sep > 0: - if ( - self._character_count_since_last_sep <= 64 - and character.isdigit() is False - and self._current_ascii_only is False - ): - self._successive_upper_lower_count_final += ( - self._successive_upper_lower_count - ) - - self._successive_upper_lower_count = 0 - self._character_count_since_last_sep = 0 - self._last_alpha_seen = None - self._buf = False - self._character_count += 1 - self._current_ascii_only = True - - return - - if self._current_ascii_only is True and character.isascii() is False: - self._current_ascii_only = False - - if self._last_alpha_seen is not None: - if (character.isupper() and self._last_alpha_seen.islower()) or ( - character.islower() and self._last_alpha_seen.isupper() - ): - if self._buf is True: - self._successive_upper_lower_count += 2 - self._buf = False - else: - self._buf = True - else: - self._buf = False - - self._character_count += 1 - self._character_count_since_last_sep += 1 - self._last_alpha_seen = character - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._character_count_since_last_sep = 0 - self._successive_upper_lower_count = 0 - self._successive_upper_lower_count_final = 0 - self._last_alpha_seen = None - self._buf = False - self._current_ascii_only = True - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return self._successive_upper_lower_count_final / self._character_count - - -class ArabicIsolatedFormPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._character_count: int = 0 - self._isolated_form_count: int = 0 - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._isolated_form_count = 0 - - def eligible(self, character: str) -> bool: - return is_arabic(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_arabic_isolated_form(character): - self._isolated_form_count += 1 - - @property - def ratio(self) -> float: - if self._character_count < 8: - return 0.0 - - isolated_form_usage: float = self._isolated_form_count / self._character_count - - return isolated_form_usage - - -@lru_cache(maxsize=1024) -def is_suspiciously_successive_range( - unicode_range_a: Optional[str], unicode_range_b: Optional[str] -) -> bool: - """ - Determine if two Unicode range seen next to each other can be considered as suspicious. - """ - if unicode_range_a is None or unicode_range_b is None: - return True - - if unicode_range_a == unicode_range_b: - return False - - if "Latin" in unicode_range_a and "Latin" in unicode_range_b: - return False - - if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: - return False - - # Latin characters can be accompanied with a combining diacritical mark - # eg. Vietnamese. - if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( - "Combining" in unicode_range_a or "Combining" in unicode_range_b - ): - return False - - keywords_range_a, keywords_range_b = unicode_range_a.split( - " " - ), unicode_range_b.split(" ") - - for el in keywords_range_a: - if el in UNICODE_SECONDARY_RANGE_KEYWORD: - continue - if el in keywords_range_b: - return False - - # Japanese Exception - range_a_jp_chars, range_b_jp_chars = ( - unicode_range_a - in ( - "Hiragana", - "Katakana", - ), - unicode_range_b in ("Hiragana", "Katakana"), - ) - if (range_a_jp_chars or range_b_jp_chars) and ( - "CJK" in unicode_range_a or "CJK" in unicode_range_b - ): - return False - if range_a_jp_chars and range_b_jp_chars: - return False - - if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: - if "CJK" in unicode_range_a or "CJK" in unicode_range_b: - return False - if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": - return False - - # Chinese/Japanese use dedicated range for punctuation and/or separators. - if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( - unicode_range_a in ["Katakana", "Hiragana"] - and unicode_range_b in ["Katakana", "Hiragana"] - ): - if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: - return False - if "Forms" in unicode_range_a or "Forms" in unicode_range_b: - return False - if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": - return False - - return True - - -@lru_cache(maxsize=2048) -def mess_ratio( - decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False -) -> float: - """ - Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. - """ - - detectors: List[MessDetectorPlugin] = [ - md_class() for md_class in MessDetectorPlugin.__subclasses__() - ] - - length: int = len(decoded_sequence) + 1 - - mean_mess_ratio: float = 0.0 - - if length < 512: - intermediary_mean_mess_ratio_calc: int = 32 - elif length <= 1024: - intermediary_mean_mess_ratio_calc = 64 - else: - intermediary_mean_mess_ratio_calc = 128 - - for character, index in zip(decoded_sequence + "\n", range(length)): - for detector in detectors: - if detector.eligible(character): - detector.feed(character) - - if ( - index > 0 and index % intermediary_mean_mess_ratio_calc == 0 - ) or index == length - 1: - mean_mess_ratio = sum(dt.ratio for dt in detectors) - - if mean_mess_ratio >= maximum_threshold: - break - - if debug: - logger = getLogger("charset_normalizer") - - logger.log( - TRACE, - "Mess-detector extended-analysis start. " - f"intermediary_mean_mess_ratio_calc={intermediary_mean_mess_ratio_calc} mean_mess_ratio={mean_mess_ratio} " - f"maximum_threshold={maximum_threshold}", - ) - - if len(decoded_sequence) > 16: - logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") - logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") - - for dt in detectors: # pragma: nocover - logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") - - return round(mean_mess_ratio, 3) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so b/venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so deleted file mode 100755 index 7ebead5dcde902718372fb8aa618afd1d973956b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268472 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 z%0DpGJ>9QTe((yd-~*KZJ^1r+o|T~AF!gob+bkIr^Q>oN6ymWMqr1~27G zR%!VkXt1sz-?u~)6Pcfz$oH@v-b}v1@F6X~l6(hvH#={pd|-i=FQWV-SL;q`(@BOvbKTCsk>6KF6+~-=wpe8K2hrWM>r{u|``|$_gXBX` zYkAWi&Y$L9FK-1e?ZIL@yp#HiJmeR8@OOCdcX{yZJ@{?lB|k%a&x*~?`lR7+(B)di zd_Lu&=U*uwp#L#;JLVz(7bAb0w&!0oSQlO8ZnrBu_<7(Z|G{_Ze6};6W#j{^HE;U+ zt>lL;)%>3+-{qmdhw}aGrWqxIiU{U0Vjbfe~j0HmWBl+>!ApH@aMV|d@)pPU z2~2m|HSYPp3Hu8_88M?kgWjgOjSXBeIz=Tknw@pl>d2>GFDS`W5Q)e{46+At{vcN;ydcjLF; zPd>tax{i?^B5wt>e&cUHMn1;&k8O7K{3Cd`bYHD-=f7&wb~YxhPewkb3{F5f`B)^n=g7(KWPd)DhFZro< zaHga48T{|tEP*MZ+;=l_o$@+Uob|4gl?r&8;=PJ{JU@NW6M+Jg^MPtq|S zttB6MAbXs8lzcA}TsB_Y?K9*P>~}#;Tl);}7>~Y9KE`=V2j!m!@0R~pJ@~WU;VwT3 zyx4ibF-}b*Z+$@<%*=)o@mFLoH5q}#2re<%6m3|+2^na>Bv_urv; zn$Ow+Ui`pxhacES`7r%0rX}k6H}C;|&V-*(KJcn$jUE1z{J>J3ZXY8R%w|2(K4zXX zoqW(S|5-*p$@>EjQqKnR1Mkvym`MI%@NW4mtaj%=Nj?2sfIdY%`^g8GPe1uzlTUKq z8_~tH{!D)8CQbBG{)C6!^5$qe1TNF^U!eRY;H6&r9raR5`A}4s_W&nwwcy>#+vLHo z_uw~q@Q--#p9Qb{&uX0?3|s2?C-QyQ>T=yd{-B4Rmpu4Cd+=6~PB)U!`ae(o7aIP} zn*R#<5O_EHgef26{@zWLUr9dvCry}s+D$&l4H9-I>qFp!jGGA`r@ZwC&6@V}4EY|~ z$Mn;q;N9~1Goy#&zUg1THF_NV&bm(9C&vAvz0A~k;NA3JO8I1;wwoC*NPOkrp$Ghzutpi0AAX2 zf_`r+v$leK&pWhzV&vBt`H*h^Cv>p&Uh?6qHDUVogW%or|8WogA3gX3)ITs)r)%b! zza}4hRHtj&$@uGaxvb@yzmNH!Og?$G)?>zz>&Ops-hypy_0$@9uFH&l8jOCPYm`ua zJ$SeBK0x_^!_V*WkpHR&f5?M>4!pF(q-lo*IzumkSM?j!cBo}O|I0(q*~MB<$mpT` zH1KZanh##|$G)WX|CsXcCO`1snlOIjZt|i3)bhsupCWH@Ki2fe?~o7wla_y$`j3;3 z?AE+#|7W4%BtLzew_Hy7H+h^>%<|w%J@{oFd^>nacaRw|?eo3hrC$0R_I%hw&(lWF zM|8PNd;T%`5c^{}%QZ+od|b;LyPb7|&QI`u-Og7~{&Mm|KhyHYo>k-rOEquSxvLe= z$Qh8JyfszJ|2M<7lON#ulu7qXa zen38XUv@pdKz`t;&cEqL)_koe@R;V!yzv_FZu!5_gI`EJ!QW{;1$S2fXmme#Y4{E*{(`ODzl^7CWL$7tubF#oTS z5Aj_1L*xr?W;_3-PPc~nnNGfEw$4A7N!DEQ1Kfw1Nj(e6M?S3;aCoyi!Arl`>F5_* zz`Nyt2lezi#^2o@^55{_zfC# zJI4AS^1)i2@fR%p6qeA=TzA)yztr$tA6-cP8t`uAoeN&>jRbjbq=)il9`Z{)_&V^) zUok&yZq~J^N8x+fuQ5GPPaEZjcer6fT!_wBtz8yCfYx?MC(DfRnH9aLDowf`T68~8npaV zje3s6*@nc zP`@7&Q8ztr1~2V!Xiy89c}SUu{B0h5y$8R+gTEKNq?>%V&S#wV+~y(wln4J+>an;U zr2DrHlMlRGmy6dgte<=6x$i1>`}`8}(#}^o+PPJs^B{s-Szik5W(g3a!ViH@^m6&TV^nZp-PF^*zO3 zV(oU=;T7uXxmoKu!hD`2Z*l(rMe^ri!J_;j_kYHde=B%5`&>);;6G~p<8^bfq8{=M zlppw`R&45}$MD?e{~*)-H2E0)vsnjyfqdU)o#2y{e-^x3K40|UhdlUkRoV`LOLe(S zJDCdpe0krK?`xQ}iYcFT>?c<%`3tN**4N9-=W_5SE-3|fQP0p6oo=HB>ml+3JQw~A zBmINnH)_Fl@?Z4OpY-6Lqn^Z4t><0T^JfqFv#RMIR%-buHSAus-cdiG&(1Tx1{R5>sKSpN< z`G8}d@ILYpF4XFo|Bra+|1{-$xZcF_M?L$=_p$++dGA3FJugx|@fDrVWtV9^3*O5;6lw~x}u&z4?TbI z;8Py_JP-doak0C7rg-on@Y1frj&@Z|eyfAO1H9OIfcwLfS*{Mlb04)s7u)(I`Cj^M z9BZoQN$_s<_%+HWxZh&tA>Z?mf6;?K;lbxE(fPL=>#QL7^O?6yD589V`vYd3UIE@M z|0_KBff?@dRy5jH*VVi(9&K%yS#K?lcXpP?yW;g-?H!Sp?zPQr(XNiVb@7hQxLa6# zOT4bbEnr<&-I|uTRomXaxUOyE@{O%)+FO=(M7rDRySkBFdmEKEw>5W-EM;e5M15=H zUD0S`N4)KxjnPh(Y7|9S-`>$+QYopgkGDxC;tkFMu4qeiG`FdoJA;;YcP5(ao7=lP z%exaT&Gm?`6?qFTt7}^uPg`$!cOu?#TfDiW;Wp$ZH=0YRDok@{w7$CoCF)Yeh_0z? zuv~TNqPKU%o7c8QTiV;!M%UMM)i+sXcivUgwyv(FxnX%%d%~G;Nk@HCU32}41kzvB zzCNB)>s|sXxi#I5)+q%{*6TX!o13HUZ7mxiU$>^YzNWLiMe3lky`wcZPaYDwxw#fd z2j$kF=Gks?>pm;kyP0M;=Ug=m&rO~IBQ>8KG2M7byB3&XUe>pRJxpm-M>a;ws6`i(|d+{AYy1|ol@!%@Nwfm|N zm+EheuXnFacGz{WBAR~ZUGa@Fs&zI>OK5IQw9G_j=$aXtS>N8)*_G&MPvC~3r`t<6 zG7tA)1YGlO0&{I>LLwV$8lrc$H@D54HEWJ^&(e)u@y=*zcXJD78SO0%!Yyh>)-xy- zsWaZy5O1vOZs|hQ*_PtE6Afq!_&!U2N7*~^EtL5!G%xF0vHpf(uR9Le(DnLzb631o zzRt}OzRn?Blr20*e^s6caha+5_QXbfW0s6!=85Ufo98{+sov1cQ83yF?-i|Y?{4cF zA%@-GY-#uLTd6-S;m&T%j5<4ID%dTv0n8yV9ni@{8=KqeT0EVqO6*kePaV^d&1h$H zTYWsLd|YQd;XZ-U<-7B)v;(3+TwAP?Uf&^;qE1YLDC#<?{UsK%q8N~qHwPof$1-l3+v zCId#dyC)qXty4tGNKhx0>xW#Gdx&+XXZw9$L-^5=Fa#c^p>RwZ+8Sw9gUur15+`a1@oHcXko5=vX&3f;Id#*^3HkD zsg*k#`YDAo8r|u7N0qZv#rO1%ZU%FD$5ZB7)@QB`QEMKp`&81SbDv6d)b2Aw+T9Oo zfzkR`CGBirt}ataX8BjWSoRhk^*TIPwQ-0p6GXdwSzg&oFiXg|SM9o$BGvrUlWQ&w zTm*A%^`gVT72@`WRhaPj5_8SKL_hsw;k0C{c~p9`t7XGE_RQWqkndh z=X4+=iP?7Z#|3z=DL{_yS=V__=Q5PfDl+-U3Y`4`t8LHimUKF%^VkaTS_ZiyyCu%H z&Cg|ceM@_1eC9l^(Yu;D+SkvV$1qGWvFV3J#+rIKuFhywFUF(M){gclHpM%dv9A!7 z?F8BSi@NNnV9B45t>(1Qho!#wi=dr=%% zu)$?M&9y%jn@_Vt_NUqQCtL4qTk&jL^Bi0AoFWrrj;(o)t+~k7Tx92<$ktqBYc8@i zUuWmwI$QH~w&v?>&2#M>%(XSowKdPRHD7P%;Cfs0^|ofbu|~UGZ|9)c)?93BF19rn z+c}tLYo2Foo>#quqdx&~&(&7QNTqh<4MG2F-VTn+AWX^pwQ&gjSuNyno9&2^?GvZp|f4(}POLzlN; zTBpn4VYIjerQ_AZcXVOL5a;I&@s9XfOgFK4*o6&U9K*&tam3!x9$nkgzNW4v+JJ-g z&S+it2CKdu;}RNS100a6glxJt7xINFLfbhox{M3jtgdXUT%jYcb% zl`O7^RxByU@Cf~#?a`*Xwgx!AX!-3+N*33YfyKWs8LgK8Or)wsOG`@@ zMVD4qF0ZJK)|Qkms*vG#MO$-ydqX^0+0ovrPu*nrEpNv8O&K=DA+e;pbqy@AB)%3i z@O5!8Jl|O!@2bJDAo4h}bL|``S3KT;DC&4%31;Lnw%4s)8*hkKwzRi*lsB(yZiovT zt%`S*K%Y86GPzn7uWOJzRBWh^F5ifnXszhzXzvhtM6c_LM%velcG(Lq=@gK^lD3AW zxaH7@J#Ue$X_WyXszGir2#EwooH<0f=s@}%9g;s}qo%E~UE(joJf=)l`UaIoTi2Y~ z(acm?%0-<`&5d1hDpuQ3*V%+!xi)oPQq$How+9k**GH=6FIbbVQ*O z`K^zysjI)ss#^p5g~L^gYD&wZv+?hjUMCus$M5cr%ijL7#W>(;PT)3xDnw&6Jt5N5 z8)HX1ICpN78`a%gK~)^iUc?ux(O>P=gNe4uk+IASI$)dbuI3hW)tcJH(R3$9XOJ#j zt1h#ok0}?mx8K#BDCz3zsA<4?bVGZ0Zdqw9G%Q$2w>+7lN;c9BDc1$s&A%4+OyW@! zMRf)=C+R(^9hA1CRZBybcD5{zQ;iPkXY6@wLL;VSS1-F;NvBFyGO1FGwBz`NeH-;# zu21G}Ywl`V0<)-~xKv(l?MQPo?F|~V0m|adEy$$md*VIH+q>DeRBAPCIOJCq1q*pN z2fHrQM)Y>=8F@e!l=Eb(M@df6Q}o6`qPwdzrwL2M+{UV07K+JAujyRWB~G`wv#qWz zSA}@W73xe=j8Fpaf?Aip8PAcmdrVnV9No&)#X_8bu58vFSXr~AQ?&{afMHs3jz>qN ziFA&=`bb7gU>hoFNT1TO<=Ksn?p*vYI>B`FNbfh%LyJ9Y2N9K140E16wZhjS98 z5Cw;0ZpT;$z64iOB64G8c^7;k(nWQt!}_Idu*X{Q?6`EJ@1a0kjhrZ!8W|CmHXBy1 zUAV`l%?nAy%bizc_%~^s9{q-cs(6bf?TeAs4&{4wzpO#)X+)_d6dBRADz znyCVnR}qj!_ei56H7_yl7Gt6wGZ4VWmN_0|reU{gWh6F3$(b}2kE?5D>_}G}Mk+)x zcFyo(6=LA>I$SlOYZeQ7&OTj-!&Q22aSGGhelR_CD!~D}9@JGEgWa_jY3&tl4V~-Z zVPPD0vt`ZoO)_z)gNs*=f(FQK`*u<&?x_YlbxEWyJ!$ap;2BPVGa}T0)+@%8Y{;Yr zm6XnGRasOzu<})GKD=NCY2DoLe-u|w(U#%LLvw3fTflCCIyFPGBuKlmxh39)IWSu& zI*Xb1Rop7MiAo1;Uen!0g_1!%(L)|*%@q+baZP7!M>lK<2i@G(nC*0-lidKl*5p8# zD$Hct?54X|JO}3XwlwsL6GUgNZ|cZaX;-B5Gu&&!3`lZfn)FI_Nd-MhwNj3R4elGMdwK#+t2T<$Yj4NgM~o#Nmc49w z6Q*$V_?`NU++iw2U=53xRduVBh{fr5S<5Q>+L)|@bPtdUSr*3@owf>E6P$fobxG&) zPPpx;G%=aei^s7w89QXnNMv}`_7XKLCOWuO4+zf6m4tlvaH^SINjKZtx;BxQp6)ec zmhe&-Gm1jVXXPH#-PCpPMY+ew12n!^i;Z9j#=>5?;!$Uxa}QH_@H+91wi?`am)1>Zq`HRPrs)!4|MYAa79H7C z9MM%1(~DlQ6dI??UWH?hkSmdyH}RNuOW?d@MO$ZGBlb<>t@W*mZ109vq}oiyhAxh2 zx`(*$o0*)@7U|y2%%7qa+f#qhpSF*h_o-HrMZ5O3%)Y<`M=^QH9fqZkXPV5chjlyg zo|u?*f*Oso*8ZxAFNtrk_eWH{dT5f;sun7a(QZl7Kg-k$8QDe4S!CK>N-si;?cAo8 z_6&e3Ju(ElW=f*{dQ3wzy(*`E>>b#a!2rm%lpY<}&Gk4WJ%>a82t{;Ow2TS1JJFX> zjhBF?j8QDDo&$#*dUrZE3tAhnww11pOOeb;#+oZVE2*t(Zo#c|yoI3$uZ$@LOAr5r z1w-e?w)zZDD~&;Xoju;O1y*A_NYYFD44rdXQ5cs~3BN7daAoFplQ=iCq{EyOqVS5? zR$7Bqj~dWe`sLkgy5KIA`}17EsI^OFU5l)3I=Z!RhV{%)O`CYMmW(1~Z0JR!Yg@66 zg!vJ6-qc~;sYY5y1+PGlDo%GOOzYB#V6|r|DW{1`fbw2ky}>wY-zB{{c8b-2c1VcQ z)PYS$3>P?LM5|(5o1Hy-vckzg?p}$>UD~I)IxppY6C2as7w5Dl`)tgx0#5gB-zuKm zv9p=&J6+R(Y4tEHO-0ssWpyp}-ExGADQ2BIhD|rAtnEm7l>}22$(3%R6&v*a5ms3G z_;z^)9at~^c<(=OivOOBf_7R)-|9lcDLfB7Yw@r#w3~NOET~@IOFTI zZ=<$gxtzYo+#&Z-jdgPeJ-eV#r2Ma*HJXi;tWntPE*KA$q8C816``1Dpa`$$PA z{fo@`x}xRHo%MBiHBHjT;N{^nZO^Jrvb0{kR3$3|wQMufGy1DCw8gIYY|$w#vbkQr z9>Xm{%-_^@blP8JOucnwyIgKSQrSD=`V^JfPB&X)Bs<5Dh&0#Vg^f%!P}M!zE&Wc4v=NxXo@DBMsI)1~J{6lO zx=o9jZ-PQQR#l-|np(J}>xidA*nduItGK(nuBEoUWO-Rl4V*1kFH#KGmYi8u-T9W^ zZEvQIW>%HmqNTnvw%JB%nyBcUwWHP8*wWqEl=fFV1<)=i*9~S?r^!rI?R%o$Fo!Qw zuSXyy)>KWKdT))bFdCJM{Vnlz@fJDoLVHkAO$DI+fI5W>$ylS6)@1vMRgj98mQ{;f{DmyLgXItWNX*f;$S5ysVDh4=`HO z%Qr{mdF<|Fbg)wla`ueP`1F!aE>!Fu!tE3q$E%~F@jLwm>>X7cOE@UDy$Er1W9}F)MX3S92wUl;~YCJ}V zMvCauI9sqcAv!H=rpe$WodR?6XzRwr#(K$}omXsiWDL6LtrMv^Z8=Pk)VYAncGSd} ztJqVHJDJ^E3O$-hi1x~h+STG(B6$yMra4GUDr@g(S589qERki-x>fc(cU_DENS&s$ z!v3?F!y&TkP-B!!?n-3MDi+V`oMK&bY_5+7OnT?##v@IitToG}Xvtr6oEzY)hdqyPT6&ThqCuZV8&1 zk~S&I#qCjm_*_)Os zD^eCYJ+!l)o~r20U?~DB(Zm1Sy)h$8qdH5i*Jf6JF{eJ6W)6?;Z+Dusn=R>FQCo?t zv38G5*RWI%I!StV>9trf%`scr%tbS2h_0>KHiOhCOnOhe4RdqJk}@(rL$SP&YDK|G zn>Ul_bgrdqrrVpnzmPeD8bvp>vpUKO(K)AQ)HiXYNtD%f>r+X46|dSU{2W@kI){|P z$*Qhp8HP{nZY)i(y=W(^+8yiB+eg{M2{Mq~b+C~f*(h$yEKSUyD!J26*J{yj5Z}b2 z+E8glk~f{Dng-}rQ|HW7{-4gS-$k+_2tN?y@E4~b9GXlZ2y*wF=oB#+)I%>gSv-Zy zyzypqMt5h&nUmW~&-(l6MiKJupNVDj^7UY5ILi_ZmDo=pQB!z1R>p7{;D zK3+okpTO30n_mR@7RoZf@hfynw9%XKY+7 z!UxS%T36+5`7>#k?Z;|{FF7F?EXGFl;jPuY!&il4e2Vg)ywHr0eIE zJ~O(vwWjx)Z<*XfTb^Yo%qOPrN_^!(%XYE_7?Y%D8BcQ!rS#`=;x)L1hBuw`0Ih3s zCXGE)CL~9e)K|uzOy6BnUW1rxNHKOf4xWXtMK_j2B@Mv@>@9qX;-b+}Im? zdZ>#C{moF+0?Lf5 zdO8ay`q>1ydU6bRymt(xiNz{VfHh~lGrxf*z-559+G_KXKUl9T1iIO=gNtT7zyF(l z7KjK*8UMY!sv>NEg3lENM|jKhwnpmjUhtm^87L9(8$kA7`1cMyCAj@~8=MaeTq^h`-ysG=6&b9THFAC;r&HS1Cvj4)r zANcnJ|3HL69$o{x=iARnlJ|ta|B9#fUvRi#;kZOMwOf2}gm2CIuf6Jc*UmdUaA0Nd zCVatP3;b#n2t$XXf`No5_^hvOqQDyj z6!;4X_J61s0fql!@jl3DIQ+!tVu%dm+|uiR`5k+#C)a-Lu+#>(JkR bjJUDQOZDsBlSp*o|9I9%{2yfuSmOT&zVwTm diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/models.py b/venv/lib/python3.10/site-packages/charset_normalizer/models.py deleted file mode 100644 index a760b9c..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/models.py +++ /dev/null @@ -1,340 +0,0 @@ -from encodings.aliases import aliases -from hashlib import sha256 -from json import dumps -from typing import Any, Dict, Iterator, List, Optional, Tuple, Union - -from .constant import TOO_BIG_SEQUENCE -from .utils import iana_name, is_multi_byte_encoding, unicode_range - - -class CharsetMatch: - def __init__( - self, - payload: bytes, - guessed_encoding: str, - mean_mess_ratio: float, - has_sig_or_bom: bool, - languages: "CoherenceMatches", - decoded_payload: Optional[str] = None, - ): - self._payload: bytes = payload - - self._encoding: str = guessed_encoding - self._mean_mess_ratio: float = mean_mess_ratio - self._languages: CoherenceMatches = languages - self._has_sig_or_bom: bool = has_sig_or_bom - self._unicode_ranges: Optional[List[str]] = None - - self._leaves: List[CharsetMatch] = [] - self._mean_coherence_ratio: float = 0.0 - - self._output_payload: Optional[bytes] = None - self._output_encoding: Optional[str] = None - - self._string: Optional[str] = decoded_payload - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CharsetMatch): - raise TypeError( - "__eq__ cannot be invoked on {} and {}.".format( - str(other.__class__), str(self.__class__) - ) - ) - return self.encoding == other.encoding and self.fingerprint == other.fingerprint - - def __lt__(self, other: object) -> bool: - """ - Implemented to make sorted available upon CharsetMatches items. - """ - if not isinstance(other, CharsetMatch): - raise ValueError - - chaos_difference: float = abs(self.chaos - other.chaos) - coherence_difference: float = abs(self.coherence - other.coherence) - - # Below 1% difference --> Use Coherence - if chaos_difference < 0.01 and coherence_difference > 0.02: - return self.coherence > other.coherence - elif chaos_difference < 0.01 and coherence_difference <= 0.02: - # When having a difficult decision, use the result that decoded as many multi-byte as possible. - # preserve RAM usage! - if len(self._payload) >= TOO_BIG_SEQUENCE: - return self.chaos < other.chaos - return self.multi_byte_usage > other.multi_byte_usage - - return self.chaos < other.chaos - - @property - def multi_byte_usage(self) -> float: - return 1.0 - (len(str(self)) / len(self.raw)) - - def __str__(self) -> str: - # Lazy Str Loading - if self._string is None: - self._string = str(self._payload, self._encoding, "strict") - return self._string - - def __repr__(self) -> str: - return "".format(self.encoding, self.fingerprint) - - def add_submatch(self, other: "CharsetMatch") -> None: - if not isinstance(other, CharsetMatch) or other == self: - raise ValueError( - "Unable to add instance <{}> as a submatch of a CharsetMatch".format( - other.__class__ - ) - ) - - other._string = None # Unload RAM usage; dirty trick. - self._leaves.append(other) - - @property - def encoding(self) -> str: - return self._encoding - - @property - def encoding_aliases(self) -> List[str]: - """ - Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. - """ - also_known_as: List[str] = [] - for u, p in aliases.items(): - if self.encoding == u: - also_known_as.append(p) - elif self.encoding == p: - also_known_as.append(u) - return also_known_as - - @property - def bom(self) -> bool: - return self._has_sig_or_bom - - @property - def byte_order_mark(self) -> bool: - return self._has_sig_or_bom - - @property - def languages(self) -> List[str]: - """ - Return the complete list of possible languages found in decoded sequence. - Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. - """ - return [e[0] for e in self._languages] - - @property - def language(self) -> str: - """ - Most probable language found in decoded sequence. If none were detected or inferred, the property will return - "Unknown". - """ - if not self._languages: - # Trying to infer the language based on the given encoding - # Its either English or we should not pronounce ourselves in certain cases. - if "ascii" in self.could_be_from_charset: - return "English" - - # doing it there to avoid circular import - from charset_normalizer.cd import encoding_languages, mb_encoding_languages - - languages = ( - mb_encoding_languages(self.encoding) - if is_multi_byte_encoding(self.encoding) - else encoding_languages(self.encoding) - ) - - if len(languages) == 0 or "Latin Based" in languages: - return "Unknown" - - return languages[0] - - return self._languages[0][0] - - @property - def chaos(self) -> float: - return self._mean_mess_ratio - - @property - def coherence(self) -> float: - if not self._languages: - return 0.0 - return self._languages[0][1] - - @property - def percent_chaos(self) -> float: - return round(self.chaos * 100, ndigits=3) - - @property - def percent_coherence(self) -> float: - return round(self.coherence * 100, ndigits=3) - - @property - def raw(self) -> bytes: - """ - Original untouched bytes. - """ - return self._payload - - @property - def submatch(self) -> List["CharsetMatch"]: - return self._leaves - - @property - def has_submatch(self) -> bool: - return len(self._leaves) > 0 - - @property - def alphabets(self) -> List[str]: - if self._unicode_ranges is not None: - return self._unicode_ranges - # list detected ranges - detected_ranges: List[Optional[str]] = [ - unicode_range(char) for char in str(self) - ] - # filter and sort - self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) - return self._unicode_ranges - - @property - def could_be_from_charset(self) -> List[str]: - """ - The complete list of encoding that output the exact SAME str result and therefore could be the originating - encoding. - This list does include the encoding available in property 'encoding'. - """ - return [self._encoding] + [m.encoding for m in self._leaves] - - def output(self, encoding: str = "utf_8") -> bytes: - """ - Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. - Any errors will be simply ignored by the encoder NOT replaced. - """ - if self._output_encoding is None or self._output_encoding != encoding: - self._output_encoding = encoding - self._output_payload = str(self).encode(encoding, "replace") - - return self._output_payload # type: ignore - - @property - def fingerprint(self) -> str: - """ - Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. - """ - return sha256(self.output()).hexdigest() - - -class CharsetMatches: - """ - Container with every CharsetMatch items ordered by default from most probable to the less one. - Act like a list(iterable) but does not implements all related methods. - """ - - def __init__(self, results: Optional[List[CharsetMatch]] = None): - self._results: List[CharsetMatch] = sorted(results) if results else [] - - def __iter__(self) -> Iterator[CharsetMatch]: - yield from self._results - - def __getitem__(self, item: Union[int, str]) -> CharsetMatch: - """ - Retrieve a single item either by its position or encoding name (alias may be used here). - Raise KeyError upon invalid index or encoding not present in results. - """ - if isinstance(item, int): - return self._results[item] - if isinstance(item, str): - item = iana_name(item, False) - for result in self._results: - if item in result.could_be_from_charset: - return result - raise KeyError - - def __len__(self) -> int: - return len(self._results) - - def __bool__(self) -> bool: - return len(self._results) > 0 - - def append(self, item: CharsetMatch) -> None: - """ - Insert a single match. Will be inserted accordingly to preserve sort. - Can be inserted as a submatch. - """ - if not isinstance(item, CharsetMatch): - raise ValueError( - "Cannot append instance '{}' to CharsetMatches".format( - str(item.__class__) - ) - ) - # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) - if len(item.raw) <= TOO_BIG_SEQUENCE: - for match in self._results: - if match.fingerprint == item.fingerprint and match.chaos == item.chaos: - match.add_submatch(item) - return - self._results.append(item) - self._results = sorted(self._results) - - def best(self) -> Optional["CharsetMatch"]: - """ - Simply return the first match. Strict equivalent to matches[0]. - """ - if not self._results: - return None - return self._results[0] - - def first(self) -> Optional["CharsetMatch"]: - """ - Redundant method, call the method best(). Kept for BC reasons. - """ - return self.best() - - -CoherenceMatch = Tuple[str, float] -CoherenceMatches = List[CoherenceMatch] - - -class CliDetectionResult: - def __init__( - self, - path: str, - encoding: Optional[str], - encoding_aliases: List[str], - alternative_encodings: List[str], - language: str, - alphabets: List[str], - has_sig_or_bom: bool, - chaos: float, - coherence: float, - unicode_path: Optional[str], - is_preferred: bool, - ): - self.path: str = path - self.unicode_path: Optional[str] = unicode_path - self.encoding: Optional[str] = encoding - self.encoding_aliases: List[str] = encoding_aliases - self.alternative_encodings: List[str] = alternative_encodings - self.language: str = language - self.alphabets: List[str] = alphabets - self.has_sig_or_bom: bool = has_sig_or_bom - self.chaos: float = chaos - self.coherence: float = coherence - self.is_preferred: bool = is_preferred - - @property - def __dict__(self) -> Dict[str, Any]: # type: ignore - return { - "path": self.path, - "encoding": self.encoding, - "encoding_aliases": self.encoding_aliases, - "alternative_encodings": self.alternative_encodings, - "language": self.language, - "alphabets": self.alphabets, - "has_sig_or_bom": self.has_sig_or_bom, - "chaos": self.chaos, - "coherence": self.coherence, - "unicode_path": self.unicode_path, - "is_preferred": self.is_preferred, - } - - def to_json(self) -> str: - return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/py.typed b/venv/lib/python3.10/site-packages/charset_normalizer/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/utils.py b/venv/lib/python3.10/site-packages/charset_normalizer/utils.py deleted file mode 100644 index e5cbbf4..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/utils.py +++ /dev/null @@ -1,421 +0,0 @@ -import importlib -import logging -import unicodedata -from codecs import IncrementalDecoder -from encodings.aliases import aliases -from functools import lru_cache -from re import findall -from typing import Generator, List, Optional, Set, Tuple, Union - -from _multibytecodec import MultibyteIncrementalDecoder - -from .constant import ( - ENCODING_MARKS, - IANA_SUPPORTED_SIMILAR, - RE_POSSIBLE_ENCODING_INDICATION, - UNICODE_RANGES_COMBINED, - UNICODE_SECONDARY_RANGE_KEYWORD, - UTF8_MAXIMAL_ALLOCATION, -) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_accentuated(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: - return False - return ( - "WITH GRAVE" in description - or "WITH ACUTE" in description - or "WITH CEDILLA" in description - or "WITH DIAERESIS" in description - or "WITH CIRCUMFLEX" in description - or "WITH TILDE" in description - or "WITH MACRON" in description - or "WITH RING ABOVE" in description - ) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def remove_accent(character: str) -> str: - decomposed: str = unicodedata.decomposition(character) - if not decomposed: - return character - - codes: List[str] = decomposed.split(" ") - - return chr(int(codes[0], 16)) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def unicode_range(character: str) -> Optional[str]: - """ - Retrieve the Unicode range official name from a single character. - """ - character_ord: int = ord(character) - - for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): - if character_ord in ord_range: - return range_name - - return None - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_latin(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: - return False - return "LATIN" in description - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_punctuation(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "P" in character_category: - return True - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Punctuation" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_symbol(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "S" in character_category or "N" in character_category: - return True - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Forms" in character_range and character_category != "Lo" - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_emoticon(character: str) -> bool: - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Emoticons" in character_range or "Pictographs" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_separator(character: str) -> bool: - if character.isspace() or character in {"|", "+", "<", ">"}: - return True - - character_category: str = unicodedata.category(character) - - return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_case_variable(character: str) -> bool: - return character.islower() != character.isupper() - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_cjk(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "CJK" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hiragana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "HIRAGANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_katakana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "KATAKANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hangul(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "HANGUL" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_thai(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "THAI" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_arabic(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "ARABIC" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_arabic_isolated_form(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "ARABIC" in character_name and "ISOLATED FORM" in character_name - - -@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) -def is_unicode_range_secondary(range_name: str) -> bool: - return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_unprintable(character: str) -> bool: - return ( - character.isspace() is False # includes \n \t \r \v - and character.isprintable() is False - and character != "\x1A" # Why? Its the ASCII substitute character. - and character != "\ufeff" # bug discovered in Python, - # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. - ) - - -def any_specified_encoding(sequence: bytes, search_zone: int = 8192) -> Optional[str]: - """ - Extract using ASCII-only decoder any specified encoding in the first n-bytes. - """ - if not isinstance(sequence, bytes): - raise TypeError - - seq_len: int = len(sequence) - - results: List[str] = findall( - RE_POSSIBLE_ENCODING_INDICATION, - sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), - ) - - if len(results) == 0: - return None - - for specified_encoding in results: - specified_encoding = specified_encoding.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if encoding_alias == specified_encoding: - return encoding_iana - if encoding_iana == specified_encoding: - return encoding_iana - - return None - - -@lru_cache(maxsize=128) -def is_multi_byte_encoding(name: str) -> bool: - """ - Verify is a specific encoding is a multi byte one based on it IANA name - """ - return name in { - "utf_8", - "utf_8_sig", - "utf_16", - "utf_16_be", - "utf_16_le", - "utf_32", - "utf_32_le", - "utf_32_be", - "utf_7", - } or issubclass( - importlib.import_module("encodings.{}".format(name)).IncrementalDecoder, - MultibyteIncrementalDecoder, - ) - - -def identify_sig_or_bom(sequence: bytes) -> Tuple[Optional[str], bytes]: - """ - Identify and extract SIG/BOM in given sequence. - """ - - for iana_encoding in ENCODING_MARKS: - marks: Union[bytes, List[bytes]] = ENCODING_MARKS[iana_encoding] - - if isinstance(marks, bytes): - marks = [marks] - - for mark in marks: - if sequence.startswith(mark): - return iana_encoding, mark - - return None, b"" - - -def should_strip_sig_or_bom(iana_encoding: str) -> bool: - return iana_encoding not in {"utf_16", "utf_32"} - - -def iana_name(cp_name: str, strict: bool = True) -> str: - cp_name = cp_name.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if cp_name in [encoding_alias, encoding_iana]: - return encoding_iana - - if strict: - raise ValueError("Unable to retrieve IANA for '{}'".format(cp_name)) - - return cp_name - - -def range_scan(decoded_sequence: str) -> List[str]: - ranges: Set[str] = set() - - for character in decoded_sequence: - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - continue - - ranges.add(character_range) - - return list(ranges) - - -def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: - if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): - return 0.0 - - decoder_a = importlib.import_module( - "encodings.{}".format(iana_name_a) - ).IncrementalDecoder - decoder_b = importlib.import_module( - "encodings.{}".format(iana_name_b) - ).IncrementalDecoder - - id_a: IncrementalDecoder = decoder_a(errors="ignore") - id_b: IncrementalDecoder = decoder_b(errors="ignore") - - character_match_count: int = 0 - - for i in range(255): - to_be_decoded: bytes = bytes([i]) - if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): - character_match_count += 1 - - return character_match_count / 254 - - -def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: - """ - Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using - the function cp_similarity. - """ - return ( - iana_name_a in IANA_SUPPORTED_SIMILAR - and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] - ) - - -def set_logging_handler( - name: str = "charset_normalizer", - level: int = logging.INFO, - format_string: str = "%(asctime)s | %(levelname)s | %(message)s", -) -> None: - logger = logging.getLogger(name) - logger.setLevel(level) - - handler = logging.StreamHandler() - handler.setFormatter(logging.Formatter(format_string)) - logger.addHandler(handler) - - -def cut_sequence_chunks( - sequences: bytes, - encoding_iana: str, - offsets: range, - chunk_size: int, - bom_or_sig_available: bool, - strip_sig_or_bom: bool, - sig_payload: bytes, - is_multi_byte_decoder: bool, - decoded_payload: Optional[str] = None, -) -> Generator[str, None, None]: - if decoded_payload and is_multi_byte_decoder is False: - for i in offsets: - chunk = decoded_payload[i : i + chunk_size] - if not chunk: - break - yield chunk - else: - for i in offsets: - chunk_end = i + chunk_size - if chunk_end > len(sequences) + 8: - continue - - cut_sequence = sequences[i : i + chunk_size] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode( - encoding_iana, - errors="ignore" if is_multi_byte_decoder else "strict", - ) - - # multi-byte bad cutting detector and adjustment - # not the cleanest way to perform that fix but clever enough for now. - if is_multi_byte_decoder and i > 0: - chunk_partial_size_chk: int = min(chunk_size, 16) - - if ( - decoded_payload - and chunk[:chunk_partial_size_chk] not in decoded_payload - ): - for j in range(i, i - 4, -1): - cut_sequence = sequences[j:chunk_end] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode(encoding_iana, errors="ignore") - - if chunk[:chunk_partial_size_chk] in decoded_payload: - break - - yield chunk diff --git a/venv/lib/python3.10/site-packages/charset_normalizer/version.py b/venv/lib/python3.10/site-packages/charset_normalizer/version.py deleted file mode 100644 index 5a4da4f..0000000 --- a/venv/lib/python3.10/site-packages/charset_normalizer/version.py +++ /dev/null @@ -1,6 +0,0 @@ -""" -Expose version -""" - -__version__ = "3.3.2" -VERSION = __version__.split(".") diff --git a/venv/lib/python3.10/site-packages/dateutil/__init__.py b/venv/lib/python3.10/site-packages/dateutil/__init__.py deleted file mode 100644 index a2c19c0..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -import sys - -try: - from ._version import version as __version__ -except ImportError: - __version__ = 'unknown' - -__all__ = ['easter', 'parser', 'relativedelta', 'rrule', 'tz', - 'utils', 'zoneinfo'] - -def __getattr__(name): - import importlib - - if name in __all__: - return importlib.import_module("." + name, __name__) - raise AttributeError( - "module {!r} has not attribute {!r}".format(__name__, name) - ) - - -def __dir__(): - # __dir__ should include all the lazy-importable modules as well. - return [x for x in globals() if x not in sys.modules] + __all__ diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4ad21a3ce5fdccc25e28e7c96f263fd79a0fcbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 950 zcmZuwzi$&U6n^$ya+kD01u6<<32YgfD`H`&DiAOrp$>FFoP@0F*-fu?&WG)!B%}-N zKfub=vhgo@W$M4cQl2l3R0KY~XFvb=p5OQRRHxGhY~RVdeMtd+`QT=YF?fz<-lF5c ziG&oUF{eC`WJuG1zfBKqw=U!$7L@{n<6t-XxFSVZG=ucTFA^6W5I>AS=!KgB!#1P z>KY?kNR!4>Rf?kASGh-BG^`66XfM&sCOS?yNH`%guw)E+Wk${^r!!as8(h#`uptl5 z8#b811wAESNiW>d9?+5g^zl$}%-a3(NS|~MGSe-U?Pk{MVsB*U)4ir^6~jttD~mlB zF_uZmnCr~v*c`ycjFs6?;KHpJi{r1gR#@)7(!uX_b8Iu|BViMC8LP?v1SNaZ4*N2;6>rU}-1ZO7 T_`NZqsK7G8{wfaQV7dJV9sB4W diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/_common.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/_common.cpython-310.pyc deleted file mode 100644 index 915196c8bebe931d0a76fbdc67711a35ef0dbff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcmZWpL2uhO7$qrLRy5nox}oT>9=u`2W(@o~P(V}R!%QB#8QB)T~5t&%EEV-oI zB8GZuenn3$&`bW3uKO1|bbB9_I8I7KX<#@g<>U>e?@w`&Y zLff4v!)q=L6zvM^BG4@1C?XV!9ErqJpDR!KCp__0PX#9|>8ZX7u?A{OMOgdlGc~{( zs-YTT-BJQ@w%h(It!FAdZh5(vQHk?GvB2{HkKM-9@PswtMUYwjV6X4?CXYsU}>-cDyXQs+@UFY%aR~y^Rq>H>fy1l5BjbG~WWnAP3@#46i zR^=}{cYcm-UhCV7G@GSI+Qura^|H>3SY}SZoyBn*N|~2=E#(#pS!zMRBfi=`BeipW zoe{$GK{2H|W;YQKv*&CkOuqrIhP|V`X!v_bWJrgJ=P0&YQf5VJt(1=CM3^3K-JPS_ zO?{jZvMenMDTmlu(jnqLABjzDUBV~WLL@tEzady%BWw)^KFD)@lDR?_spHY0_eTn$3VXBP&>L`*Csz$*7~6_l|lCie%q_+sWw*$1XAi3QhtdH z*M7lo@PLc|e1Gtf*45}jWJ=7a&iSC2gmW~=JT+tmbjW%r-T?NQtgSyy?eqfTgm;RP zUYEtBJSo4yxg~uB#PoUaaZ}DNCy99a5bK|b z*nO0U{rh;Htopa?kGFnO6GLu2Gh55;)lR``MlXz%-y_Yb6QNUA&DN!Kx<_QsGM$4( z8%f#y=O7+P`C^$CXE$)WEvlN_PLdna&x~lIj+!rMB71D$S?lLoN;~JBkcB)Fp&tfe t7zTsRlY98b=u4@p43&fG;JMD~&IuRYU%#&nfA3JS`Uw zj6BmR{S|#``_{jt*FO0#^rbyVvYjwY<3B zm^^_u-T>fM)8d5NK53GU#S4Furp=vZfft(&FExvz*e1NpE5DLviQD_u`rO-->Ooh= zG*G_+8~X>_dxtyUfAe+Y zReEkR-Q7F*YWLahn{;VHc)g8muf_!A$2J1Sz{An>S%5(q-ly=!5ioL+5XUN5J)#%6 z-6QdN1L1i`ej&t~juLBRClId7)(8SNauNt+&(bfrlN2smytHERGOQI7)R)h&q8LD9@71O6!{_$p#g_7U5(gi6{oxjqozfQ~3}MG~ zUq~)+1?oX?3Cil#)1aI>B!h|m7_@64D3@4?XfUt9ObBdweV-W#8_Mf2evqr%tV6lU zjtrSk&vL;=CZz{d5ppckW9CcTVx|(#hchFfN?X zIqxfkL!<-Y`_l-ESWLr2nHE%wNCPdz6NVJRlz?r-hJ|Jt$Ioc1^CKY`)*zrTa&bSslZQmr23F(?`3SjhV)24 z+wF&(GBY{$)}&k>O#5_W)?n$wt})RA*BuN7^-cg~5Z9INxDqPnq#kvnFFNYcoz1(C zTZg%SEads1g`Pg0#GQWG_->{>QyEWmnrZFTdC&E*99=jpH*e->V5V7@pbhH^z}qDm z=INL3dwc;`vPOOmM&nNqpl?`X?A{t-jMtxh0xHHFr^^VaYrKeX1>qXP#|W1Y<`J$U zpyBaNgijIH0N}!@{=odc*w$L82z~2~SDzm!)rk-hbY>T@?to)0duBo-jtby?e16dzwYiX>LV|$1Yr!$F47r z+-L}wW4Kk{+;C%Q#I1;VJ=PJii(bG@dm6~0#+wbd9oGTQ->4A#-wJUS;3XBZY+nR) z>Uw<_w_C awDK_jfAAQODqaEr)5VJI*bX?cT=)+GCsAqu diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/relativedelta.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/relativedelta.cpython-310.pyc deleted file mode 100644 index e7f1f1ffba49d79862a20004a42e6ef8c24ce0bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15756 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 B&hr2O diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/rrule.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/rrule.cpython-310.pyc deleted file mode 100644 index 766ede3d1aaa8d5f80a8884078768acc687a0593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43348 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 POCLbUnRJEk$*2D>d9f<^ diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/tzwin.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/tzwin.cpython-310.pyc deleted file mode 100644 index 4395182d5f16f8476242508af98a72e46e916db0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmYjL!3x4K6l)!b$o3%!~yD^0m`0*aLdODkf8$`YfQg@&sJq_~1#}h+nK{9TE5yxvM YB)HBmq^9jBn^Ln{^6hZJ4j)7O1;(>8a{vGU diff --git a/venv/lib/python3.10/site-packages/dateutil/__pycache__/utils.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index 929e8f485ae25c089bc4f14e63a0889f4027a8f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2267 zcmbVOKW`g16hGccmU^}uqg{dkDF}CnueGJK)1raU8Yzsf9%2Utv`EyEk{F*zmE_rx zAy3VkFVHClx@71Vy0ufkLZ`k*{j&l$C`#xklH$F;zxR96+uLyf<2Ul6|3@td{>07Q z5y9p;JoXqS9<&2ac$kw>*bWJ16Sd2#>2PaZ3r$#>AC@-W@ulGp4F>r=DK}=`BvpeTD{$R|q3pNn8i7F6eO`L3FJSnSAL-@Brheg%#)X>f)+GKC^}OFSNahpXQ0GvTaHK({+{yxXNdtC$_C6;(`L3P}GP(r}bdX8G|& z19bxl?H9Q(1M!-T#!y37L!szI7nB)6$3|aDz&>S5F`y9>0GJxGOW_R>P&uHHDJnsP z%%r1GSK{@2y~NW#wFO{_*_jfs)go5e3UOYXbq0>-NP;5dI&;FhR%>QE;_LYMnD&hx zd8;tk4R?*owQ&GxpaCnKmv#ST)C>mCU+}w+-1f;_T;`(BirjT(5np?Y_x(BjVQIqN z?oVguyZiLu@L8Is$=dBPIO+D*#qD`h_MRN2hu<8ehw!0?N3EwReR+QJB-y8P4arK< zhc{bk`gNMZ{J(YmXFUh$x2VS}nzIRatBOY^SwIiLcr}!edmsP4T|iaOvmuqrI)-eI#AU4r=|*}yday}+-=xnfAkFGxo0+Q!CCp~IvO6snMJ0GA6Lj$ zXdb{agW_KfWE9+=z+=CH$pzE!S8@|hgDH6!+(grGGnhsdxO74EXVdTk7$gh`a7se1 zl@H9z6$1cM0{(pWxB`w}(#BfBL$xX~$mKxxfGoJgj*AV}3xlxtpzlCu1=27;8{(IO z<+E@=!;DzZCY5%?-62j#WtEHEu`*tX`7k6~*p;Q~_>0fcPYg)CS|^W)`5cxBIZf(i ztMmcSjL+0OJ!-|9#Ulv(#!eVV J^_{IR{{f!Fb9Mj# diff --git a/venv/lib/python3.10/site-packages/dateutil/_common.py b/venv/lib/python3.10/site-packages/dateutil/_common.py deleted file mode 100644 index 4eb2659..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/_common.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -Common code used in multiple modules. -""" - - -class weekday(object): - __slots__ = ["weekday", "n"] - - def __init__(self, weekday, n=None): - self.weekday = weekday - self.n = n - - def __call__(self, n): - if n == self.n: - return self - else: - return self.__class__(self.weekday, n) - - def __eq__(self, other): - try: - if self.weekday != other.weekday or self.n != other.n: - return False - except AttributeError: - return False - return True - - def __hash__(self): - return hash(( - self.weekday, - self.n, - )) - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday] - if not self.n: - return s - else: - return "%s(%+d)" % (s, self.n) - -# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.10/site-packages/dateutil/_version.py b/venv/lib/python3.10/site-packages/dateutil/_version.py deleted file mode 100644 index ddda980..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/_version.py +++ /dev/null @@ -1,4 +0,0 @@ -# file generated by setuptools_scm -# don't change, don't track in version control -__version__ = version = '2.9.0.post0' -__version_tuple__ = version_tuple = (2, 9, 0) diff --git a/venv/lib/python3.10/site-packages/dateutil/easter.py b/venv/lib/python3.10/site-packages/dateutil/easter.py deleted file mode 100644 index f74d1f7..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/easter.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers a generic Easter computing method for any given year, using -Western, Orthodox or Julian algorithms. -""" - -import datetime - -__all__ = ["easter", "EASTER_JULIAN", "EASTER_ORTHODOX", "EASTER_WESTERN"] - -EASTER_JULIAN = 1 -EASTER_ORTHODOX = 2 -EASTER_WESTERN = 3 - - -def easter(year, method=EASTER_WESTERN): - """ - This method was ported from the work done by GM Arts, - on top of the algorithm by Claus Tondering, which was - based in part on the algorithm of Ouding (1940), as - quoted in "Explanatory Supplement to the Astronomical - Almanac", P. Kenneth Seidelmann, editor. - - This algorithm implements three different Easter - calculation methods: - - 1. Original calculation in Julian calendar, valid in - dates after 326 AD - 2. Original method, with date converted to Gregorian - calendar, valid in years 1583 to 4099 - 3. Revised method, in Gregorian calendar, valid in - years 1583 to 4099 as well - - These methods are represented by the constants: - - * ``EASTER_JULIAN = 1`` - * ``EASTER_ORTHODOX = 2`` - * ``EASTER_WESTERN = 3`` - - The default method is method 3. - - More about the algorithm may be found at: - - `GM Arts: Easter Algorithms `_ - - and - - `The Calendar FAQ: Easter `_ - - """ - - if not (1 <= method <= 3): - raise ValueError("invalid method") - - # g - Golden year - 1 - # c - Century - # h - (23 - Epact) mod 30 - # i - Number of days from March 21 to Paschal Full Moon - # j - Weekday for PFM (0=Sunday, etc) - # p - Number of days from March 21 to Sunday on or before PFM - # (-6 to 28 methods 1 & 3, to 56 for method 2) - # e - Extra days to add for method 2 (converting Julian - # date to Gregorian date) - - y = year - g = y % 19 - e = 0 - if method < 3: - # Old method - i = (19*g + 15) % 30 - j = (y + y//4 + i) % 7 - if method == 2: - # Extra dates to convert Julian to Gregorian date - e = 10 - if y > 1600: - e = e + y//100 - 16 - (y//100 - 16)//4 - else: - # New method - c = y//100 - h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30 - i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11)) - j = (y + y//4 + i + 2 - c + c//4) % 7 - - # p can be from -6 to 56 corresponding to dates 22 March to 23 May - # (later dates apply to method 2, although 23 May never actually occurs) - p = i - j + e - d = 1 + (p + 27 + (p + 6)//40) % 31 - m = 3 + (p + 26)//30 - return datetime.date(int(y), int(m), int(d)) diff --git a/venv/lib/python3.10/site-packages/dateutil/parser/__init__.py b/venv/lib/python3.10/site-packages/dateutil/parser/__init__.py deleted file mode 100644 index d174b0e..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/parser/__init__.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -from ._parser import parse, parser, parserinfo, ParserError -from ._parser import DEFAULTPARSER, DEFAULTTZPARSER -from ._parser import UnknownTimezoneWarning - -from ._parser import __doc__ - -from .isoparser import isoparser, isoparse - -__all__ = ['parse', 'parser', 'parserinfo', - 'isoparse', 'isoparser', - 'ParserError', - 'UnknownTimezoneWarning'] - - -### -# Deprecate portions of the private interface so that downstream code that -# is improperly relying on it is given *some* notice. - - -def __deprecated_private_func(f): - from functools import wraps - import warnings - - msg = ('{name} is a private function and may break without warning, ' - 'it will be moved and or renamed in future versions.') - msg = msg.format(name=f.__name__) - - @wraps(f) - def deprecated_func(*args, **kwargs): - warnings.warn(msg, DeprecationWarning) - return f(*args, **kwargs) - - return deprecated_func - -def __deprecate_private_class(c): - import warnings - - msg = ('{name} is a private class and may break without warning, ' - 'it will be moved and or renamed in future versions.') - msg = msg.format(name=c.__name__) - - class private_class(c): - __doc__ = c.__doc__ - - def __init__(self, *args, **kwargs): - warnings.warn(msg, DeprecationWarning) - super(private_class, self).__init__(*args, **kwargs) - - private_class.__name__ = c.__name__ - - return private_class - - -from ._parser import _timelex, _resultbase -from ._parser import _tzparser, _parsetz - -_timelex = __deprecate_private_class(_timelex) -_tzparser = __deprecate_private_class(_tzparser) -_resultbase = __deprecate_private_class(_resultbase) -_parsetz = __deprecated_private_func(_parsetz) diff --git a/venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4d6bd9f4050fa604aecf6e7fca5bbea131b39599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2078 zcmb_dOK%)S5bo}o-JP}fWd}lHUV}i0g?Kl>1*9lSPz)DjMYbcPxwOX9y_>P;v2@Sc zc(G5mwCe+$IB^2R#S*`$uSiJw3!JFx*^TW02P8)7s_O2VntFUSl{cG91fC!1*5HpS zA;071>ce330G9p@h#-O{B&7jOS-?^!a8fsLDV{SpuLPB}8dUAxfqgBgS=j~I3p^`V zl6qPX>giIjM9Gkd>Mt}{7B%6Wk)R>!VhMN?>@CAPt)P{*gSLII0sBtSNmqguN@P>E zPHE5r-T~eL-Ui;54Y>k*MKrfbxAlyI%U#!0MxoNuR4r3xspN4s$j$O&yiyxV<*Lg} z^U=oV51)Lw^Z4P`_QsZJ&$l~4dC;Zi=96qc%MY`iIF*w;lV61@i?boz)HoM;#5tI$ z$2y;X%v*@vn!;2n2Z@Vh83`s|RgicHd9I9}nC;7Kon937B z)_&-ZRD2K?(jSbosEG5-4>RGX;gP?qWVr7i#>LZoT=<7&%y;}4wmH7;I8=*Hr~#9*Xv!qRI%X6z?2qXqq$Q8FXPBqqo7 zSNc8OCKq%Q66~T2X7!OADH(<6>Y@&C7pkE))qPMI>I=uvfpJnjG~V28eL?;V`%m*! z_J`v*Qh6kcBJS^hqWe06oIo|#N4e1b1DPH4lX$m3I)b>fk9!~9?d!OZ>!UE*4~J6s z1te=+#7Vy_cAxV&iwn+sqa)K6bLXVsn9tWSHVm@CT6FRefaUUjo_DL)yO-oqnCSbx zD+*|!TQPN8m^@FkYJw$o3y7%>a+QXK@i@oC0stL#6K}1`t0>(@@-h-kuDSiMA4eVC z0@9!!byO~fgp)?)Jk2o{gz+!4&;5iqz1*hD;jK}sx6odFBWR!#&0Q$e9QDLmtpa^>lMdbQDAd&>oY61HJnk;Z2 z6gG9HE`$Qjc;*G}6x4$X1mH~WUdbz8)YQ6uS=4LC*HVh9eBK1_!e-`NHbDVNIwq%V z&pD>h3=EqAe~a5hbwIW2suf^r6^Nk7aI7~|Xs`}!S zraAXAl1T!dB91RyLnG_6dI$Be2f9?fjk5I>Pd|XAVVV(-ROuSCn$Q-gtFRHR2k=%G zW!oKC>c4l#^(vxejUX+1V~u$=m#O#R0DegxFJL4j@*A_vmDJ;;*bTMBVZe*YVi<5M z6qC*FD$I-W^u@7YhXMMoYDjP_lo_$30*3~Un$RW$`_ej~Fk*EF$vP4&RvDO$&Jx@E k-n}yE_pyWZYd~(%4sFl|>oAXb%U-*4qeDT0A3%ft1+LKw2mk;8 diff --git a/venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/_parser.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/parser/__pycache__/_parser.cpython-310.pyc deleted file mode 100644 index b5bd4618eceae265f419b0a15ec96abe5606efc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40549 zcmc(I33wdWec#Tp2NsJZ2!bF;QPK!H$dyQdq)yV3BASOS$%JSUwyc$z#bRdxEV$T( z-V8`#vxpT_uAH>?rzB2dyRAbe{+g(9^CeAlAI)LsKHR2ll1-DQ&e1Swb9}0E(6-p$ z@Be0IcNU}$OJ53d-^{#u_xr#1{`WM8hO!C#ebP8J|Cv8cB>tEWy?-_y9>LFhyOBt^ ziDJSvT(fR0n?=*$y;Zl0mR#+kE!Si*Dc4jnCD(K@jjLVHEDsb1Bu}!QT^=kB2KjTv z9Nwqux#gka&~m<*m-uvj)ADd}Snf0R^z!E7X50_B+4{)xmf{w*bXV(Dr#U}gRi0CJ7OIV^s#P4f z>{qA!+H%$Ld{t{KI4fo4Rh4sou~u1hkg+_6Y<^S6XP29v@0@Kk&o`X;rdlrh9^a|z zimH0mhL3_-pi^$RQ%&Wt+{tXL0cGE>F0bfpb5$0yP&>zZ&)57#6tqxQu9UgjsMpR` z>uXM}v9juiwe88Os=ull%%SU&wm0XNsukaN47!ZQ?052Ib`y_PV)TLqpv?j=#u8*6YpltWseNF(fQ;Wu;!Lx`(pay)5$Z z2?zZ>d4hTC)p_4pZFnoyN^Kr#_MnOb_v~G4t}3TeZ&uFAuzKF=GT$vW&!gE2i5j?H zRawVrHjrcgf!-XuXJ_|04?ZL*c-?IQr;=ltI%ga?C^~}z?)%o&j-JhM6Df9u; z00j>*9w0;}am{J0F3+)1&sM5cm-EF!&XwymH++TpcFSv?vw~#H&4#}yjm;v>D(1Od zuY1m188Z|#pxSV;WTY5LjqV?I-I`x(Hp+DjiiZiS5F+N9fYA+WDO@5I%&h?XD$1Ly z0+ePw%JbG%14cx0Ud3z7++kf}uzJvP@Ox0_1@@gt7d2(er=+k56b7kjrZF!|GRq9c3 zju2*h>vfwI4|SF+_3C7$xjeOmY^e3VDZZF0uhb-F%CA1_PxY4;b?`C|zJk#iUTxGW z7_CyhhN&;ty=g>Zn+0g9a$}*2r_5>DnICGPzFUEQ>v*dY+&!7 zg@;G*^BM@MiK2lM+N@d^aS~rLa1NWUg_9}e+HMlpw3~9%xMtjpJAf-rQ+E*8Y<1Ah zxkJwzx5)h_cN8bt)=s8GFs@ghZKZZUJ-O#hp~BvU zf4nF5a0EYZ34xzz8@}P2^X3Ip4YrMo)}_R{A+a`Mw))Aoalu$O8Y6zHZ2%`oT(I24 zYC`Su)2_LcX&XxeOIg?Y2vU8}XdCTBX>cKdFel-VYvVreCeXIzbjMcJvfFwm#`OY*PwtKvHg&Q!?4exwm1-wBx8`$} zc_}MZUhAaXDxpQC&_~4{chU=32EMO412ZT~rmmCH%c(O^D#?ypDq;Le4eX`7WASW5 zXMn9jRh6@ytlz{=t?#XBa~_~(d)4~9+JQP=N~oK0xiUMo*j%noEv(ims#&S}er@XP z1KyNZQ2_eJ!d|RFZwg27Iay^ZYyM)harfl@eN!G_d+!SBDKAvLDefezeyu*GA#bXr zuahflY-O!c^Gl_NQJ*)CAa7)hteG{24I6ivt0^mGq>QZ5+8hGJWSFM{tTFma<1T`T ze+KwyCzcXwfZ;{V_a)A2oNtsC53nR7(fAO` z$RN#kMzviCQ#X8_-}`1S&>?KeLXKno~ZQLBBNi5|q4z*3pbg~V) zVmn40SKGBdWNuF!O`OTCr`jo$wg+`3E)KL)9Pby6XKvAbz?;KS4aQkBc+O+L%U&{3 zmWkbBr2LNnMjR*lPjK`3)kcL!zB7kqc^23&uomui;r@X=zX`1J*;)li2hIziJiGOJ zE$q=qZd6`?X~>EKs<9TLQ9$V@op;5GAQtOZfqhi49wjZd1DrU-r=s%Ml%Bn->hE#9 zCQy+zr-CD@)*wzDHWN5Z9h(B_3t)_R@71tVRo$pCVw`L~aoy__pfR|<0)P^ISe-POs3NoV48b!GCvKK$QzaH2pYA3HElS!bn*c?pt5W9++P zI2~j1idmk#V(d`^d}r>PynGdZ1yk+Dv$_*O%beU(*rayiwqva{SJaJsa{~h&Q)-wm zQZ?^yuX(x6Fj@>Dx1P;5ZwJ665g=p-x6)rQ~6mps6ZUkawQla$9!8uV-( zc?xND6N)Sjdev$p0PRjv#tTVt>Q+0M2Ih@tCs_W8yvIvOECsCTE&F6cMwt=h?PK zkYcPSW&|m^3E9!GgsS=%s6G3@7dm~2UFBsxl?#>UQ4P8NTHUGY$D1Mhjsn3it7 zWXK@(_nRj8BCzWe{*cG2mtlo6u=uEo1MamNBDl zS=bUoJ%Tv(5QDxtZI<>~ypS=-7_FgbumyBjYWT-{3qR?94mZG8fyZ9Jzo@2;U9WjQ z&@-!2_d15xSD(5E*?tK>sV-->@=P2@G3bLVR`2h23! z@!W zz!;{%l^_Wf>>VAO5B(6rf&2sfJd$2nBaf}LHQLjnE*Zk+gnw)nNfBAnkKty4NTqJx z*t#Xnvo4rIS|nBtbpsGc(>2kE$ZK>1#5U1W#$rV5=~nV~@1fhh zE2-PP-M4#%E9M@jkW?p8joQj!9|97mE2?8J0bRjMP8LAmdVq{X7V13>0 zB+~qEnVhW{U%@Z-$9_G6pZEO;x~sluEr1AzFvZ5z!ZnGjjcW?mB(B0lS}=X_xFry! zjA}tjajSc~h)|5;7=$nrC~=#6DHd@eN@cs>>3zY zQvd8M2_fvb9F4FDa^Vr{0<{4-vs&{OF{*P_|2z$AuJNVMN^lNLITT6cAi7-gd>&38-> zSH^;>GX2Funw#K>W}}!w07&5D%xblmM&Jd{PgdRH0D?voGqbo_%pg!)@(D|kXs ztMlnZc}=y^X(=B83a)RaN>&@1UkY(S;k_=rg*QDWat$vwTRYqQp@0>fR0S-E8~w!JWw1A zE>RO+J=AKJm(^{$2j&VUXQg0wtoO_u=~(YL0Xn+aF=kEx9-bWFH z$I2!0w8^35A!ErCc-r!mlqc{qyJ%Hm496CF3Q4Hnu^)TSiIc!QmR6TnI+-Vr z9ee!f;ipamW5afE7U1A@QYW66o_Xi#P8x_XBqd(QdgqDL9lNx+>~-wJCr+L~Zb))L z{$qfOPfQ;}>8pN)!p%c@@BDX`1u9&=K|B47w+#!$%&fci@2c#&DAd?%4eY761tPQKPj*SSBKe zxjrgM+*4+fWJ(RFBqbUbfJU9U;r-^iwQd8Uw0+7vZfM(r0o!ehd{W9k9!xy5`I%Jg zIYpkNrl#%AKo!Ii$>^%ujN-xRSOrt3lZ3buU>~54Rvo*6}PYZ*D*KMSC zCmV@%*lnb1Z0j}@nku~weaW0w6UYHj{RG=3BlyF-yH+!kvZ@~KHgdGv$l;zwO0w%V zQT+#&FRU6%{ma*`)xzpMi8@~h90jJVc7rh^^k{j5cxuy>Awmv5k=@4RkB!R}VNW<|lv4Ha2I zk36zZxos~c&LtF7s7}k0y9k<-v_}EJgK`NxY(OV7Q+(q1@zcjF+te5)r)cxFy^QC-n(y) zbI-vuQBIN3lL1Cy>7<+s&hE;pQdEYLqeCP)g>D88r1};Fmk%HS%i((&@jblP$4JMP z(`9pTxPV0+=n?gACWFBa%H)e2<`EQ$=w8*I8P*>w1q!aplx zWmCCP$z4Il*dGCbf8IQTkX-LFZi-eFGEuVXpu>^Gy|C+WpTfPc>~No^{v?R#j5{JZ zsq+DyOs(%x%xYba;@}H7R*N|-$1T9#)|TBEON84K+d{6RcMk&c!4^9xtRJuUW-*t2rk!1%#qb+NDIzeHQq4c(bN&qQzKN z3&1zeLZN2CgRDbXFWu2+QU9Dk#WQOhVwFHUVThgS;&Dh3{qa6LO5~{Hw#%g!Vq%8+ z4J5fXYiF_S$tLqHC`DL1SrZZk))l^qjbLwG>OZkmIkpV->({GcfaS=!{_V)DejDk) z4i78P2R=&;|E^oZuOY=X`;cZ0K)62{m7j~sM|5mk;_UNx1V53TajX<%^ZJ1DM#&bn zLExMDzF^Y* zxuE@XTo9|vgo)bc!Ry6dB~1MPf(Z4W8OUH0m}O!Mwx$-|#|T;ZvbA;Bwu2X)93+%= zw=`GfP<;wR<&7emYdK{Q&a&o&=*3Ks3Cro}O+UTiMCBl|1>RpFAkpB0iK=eY_^sOM zV;G?ZVxG0tP8Z4(B@hj+ea=uj&}}G)e9&-{P(Rs>d?}=vjHTJrn+A$ii6xMZ7tD)k zA8J$=fI%2osG`<#0`CUYQA|LFWujJWA@0C97jBk|73rwnQbxK#^**E<+>kC8q@yCv zD$)(9I@0Afq!Z;V*#L&7mGCktSDpbb(=nb>zl(c0g*(QH*60Zmkz^&6>(u00BYR3_ zwPPG@jT{BDEB>yvc$^BFfKF&2Oi0EN)HpjWP`rU)F~0U~%tLeM;DFme3>9C(G^)rTPxc`&G3*NPnP zWZD-JsKb=gCi7ukE3|hYL?Lg2*IaM~cVeDe@%h##B5Z6X)WqT@Pw&Yh88cRVq41#RO-@9w#_OsNe#vU44>3_ha6vHkzvoi!2d!fUig8 zn+UP%a_=t7EX;Oe6IgHLeNO>|vh7bQ1A&6D&OtgT?^8BKPGX|zag_@G?j@Kg< ziL!2JE%zH~Eg@Z63t=2vyP>5TjK6?n>Q5MSq59A8`1!C+<5&kBV@-3-3|CgC5G5O` zCd5kB#Pfh7B+d-zssTgL>Dr$7*6uLru?j}WI$K=}7z*l7V@<&*xwVQOrQZo#wBz-T zQj}HwFP2KapZaqISlHYmI!PfS)PH1DN}mm^o;*R(r&pKpr2ddm7Szo32>k`)9L8?%JUIqj_cqxCGR7!aO*@U&j_Xfv?C2m?6P>>w18fij!@36g|9)_r)|2Zg zoRPrEumVNr4p(pym#len-day<%&?u7m7msm5vHS+zXvPd_6|0%?)6*IT*SV@H0}WR z7!V3}8$3vTrmtt9YnQ)<{6@?N<| zjkrJAEgzba;NOCbMjPcGx|ATnb-&TO;3=qGp4h8fgBIx&c#<};?1|tW(9?jnEoTB6 zsMN?j)Mm~{VrAnAIdu;(i!v%0iMHKNwo`gXpN9N+db)3U#Wn`+s|4iJ_=!MSHikh= z3Jxh8Go*B}gSO3Jb0C_mHwR0$&+Z!3%dfjj{UuU0#gO0;g1r4??R+(o-mo|47l01cATI(AC&2+cc-dV%DA+k&eJ>He?zLvWEf(H5WGT21VI@DTli}h_22nE zt9Ov^X2f?PD5fdPMmsbGO@tHtTS!A>i(?6$q}cNGb*wYk(}xZ_`1ME&y)y%{UhF3J zD|!1SJegPJXQrqN0@RdY-pZJyu7R$aKtW8hByvDk!45W|w}zBC@Pep`wv*Q+Q{bP4 zd>~m((|#oz{6=l2oWPIyTEqQ=tLd4cKB`=Z>`rDyHOXRI(^$A5S%P2v4mu*b5lV*b zWsbp6pekRf*6X0=Wqu_PRLfzGUqSFq90;CinFQFj=|JVh!k}3Bd}inHh@`3@LF|v9 z_XvL8Pap^>YPaBG*Mtb$8ZZV7_fFX@Aq;;9Rs_!Xghqo1;Ig-DagpM5prfDa{72Bi4@@<&nW&L$Its+1X#`nv;~KK(25tqzFz{R z7yPq6B3k)NRvXwVwtyu02eLD#+pr)-uG@q<1aSoN1pA8+MZi!ION$Z2QZN9$d`M29 z)17%T(YP6cf%F>q$m_5;ZEf*07YBSBdi4Xyo7x6a>w?)HxC9HnWm?H#SGSw1d)AK;;+8K=gK>0~@G{QPh(l$zPR9I4XpR# z#m-QZAdus;c+q*+hJb=Ji%tNEEUCQbt)SOXN{ohrjhvmGhInswc25^ek1%YiJIu}o zeVd(y<(??`c2nX#5c61hVas%bHg>7D(7>kcx8i+*btH8gdZhnU=b47boIDN z2Iz8J=~Fq@0&Rx*nv+O6w8uV^W5K_0LR(yJUc8k(MvOA7Vhl=Fs^?6B2(CfHE;OHA z2H68mgV4bD8UsbTpaE6+8LDuAO$H$%nBU9g74Xl)&O5sB-K2|}E84yhw!KJ}U{GpH-p zEIozLbSXn$Kd{$;7Kda%FXqv@DX<6tqzPXdfQJ6YO5rQrY3j{zH1y1|m~yurJjq#FfkIELeqFaVkbr2M>mtxFpb}4a$M6MeLbKey z=1fk)ECI%BP&$f(6`FcT&#rgKxoi4~Qzs6;>(Sz|(v$CebmrLUlZTHS>l$!`6aMhS z59{V|2cTKlq&{IB*kNK*q1uxdUzp6fF_+&8b3i8Lw_?2xbLd`q&O^@EO}zco>6wW` z&ffcB*|Eo&I3iDyb@#+!h{0h}GIaz-@a2W(L}C4!#Yxk4Pr$hJz}|iP_wGOF?7ttj zABXnsbEI@=HR;9oP;l*vfx_O0+ume&vzw*uarWc?LHzFD;~c=f&W~dB{Ow-d#R_)q z(akSxESKZ+D$QeW!&1FB+qw;76Lzk9joLpC#pK<)rdB;Q<-uyAI>lwh4Qi@y%y*$v zv4UlHL6?FBkF6%$IKf_-oeg(mtU0{G7Tg1~!A|)8JKuk&=Hthq77}|=UJth}Y+_Vw z4-L_0XSIRi?gDJjyKOq87jC?$Q{tR}C)R84+D#~Wq3Qj{&g|^`YOA$Y;*O;aM?CaN zuPSz}d$Q;Turg89pblMpp=hPEz|{dZalOgBX3M0YU|WbyK~Rwx13_&@wmxh@(q8P( zG$4%)P+5$zPI3Wjo8rE~;(Ngvunmc%jeF2)L%WyIr%HfPgd>GxsCf-M8W!B<0Vk61Jf493fvp@3og4@AJ3ER&I7LkPB2wCduLpCD6+G?Zg(2Z z#@?X)sIkX>PV8<`IXqfiqu?i?{WK448(|b*vv3VBdSwT00kpFNoC=tUIzSk^a?ok+ z?pmd@*;O^cHWLsF})Dm;(;7q_G)xHg5p%0%=}Z zt~9q=gIq*VBO!R9k6nAVlU1A>;Zq_4*3kJNq2DS)bXV2fHBB3L(mYF`K<#Z0(; z;GN#G)o-!RUt}xt-q{+D)?hVuAYq2~Q?;LJA$9&Bsg~Wi$vgrB0V8#F43uz|)GMsG zhM@>`hmm>Cgr%3Z`hsviC%d%Lhh7CaV}B&99>MQra`HmD5z5d8l%XM=0!?6r>M_Es zg&|%c*Cq7T-y)k9F~?_B{R3Zoj=|3|pxC*y8TN*y)duY%gRV}$WcO3nCz-rU9Y=f+ z2*SZHK>go_Hor`ImlU!Z1if4#M>hPUx;a@MNAU9&LC3X|3Tgu2=YU#+eJv<8P+|FY zYKe>)^bt>6@dWKQP)W4nPy4XPreexE)WX*X{M3cSde%?3AyQf&ge`aOMYC0I=h}m3 z6EB*|2L+V_r*Ej0f;egjY4V`i20^n8tR2%jQm_NhKb2^Z7R#ePLxB%=G0S|Q$g*u( zY^PXiW2~JLIt}H)hL|bO_QtH|+xd37G>DW2;&ZxYof2Fv^r;(%v{~31=V4b4%CMbt zlb{sYVnazjK7%Wkf;!I6u^j!pzDaWNInDPXTFbc^omc&&q{P$qM0*qXd_Nhb9_UG( zh6+rMCGh&9(fB^x(s|zrPvzM%wvHkP@vAOB;tFt-&}ni~)|tK+v+UMY=7_8;&?lACvezR94cZtuixP(B^yE;4^~5IDpZIWJvmPCsJ<dr&7+ zepuh5jB(Vw9dE}WPfC}zqn+J3dqH}r=PW1Igj;=<-m{ z3lcZp_!G8+um#wCpRU_wiFk5ltc6#K($+@^^STw=$&=sG-a_s!%KC+1#C3ZhdZqn3 zQjEsp;pZZV-`aQxNH0FhHjfKacoY@v()cy zK^wyuKHc@j8Oo4XcyD<%r-`yV<_)0*-1OOuL)f7l ze_$RxTl;vV%ej?Gr)a?~l!&0-OD7#5nkhq-*PkXq z*sr^wuo*PZ2UH-TM79WtefQk&z@F{_ z%}P0ZVq)VW-#|gc8;1eylF0!Hf@8=khUJ+sKWzsd;ijIP&m&_~1T{_(+&^gc@xr^^75L_`1T^c)oja(L*k5|~yUew25AzyP|Cfzq^4c!OdTRT9>R(D`s5P6W_uwBci zf$eMgw2VL}Df6!Wkp+rKkd(I=r+0E8`3*f?7>5?ImtG5X8{f#`h0XgX9 z>@-Ip1<#p>@N8clv4>5XhM6qmIi?&z`81+RvFzt|LeQKyob*me*7HWnGN0RF4b#X9 zrSC8tXtXnJ))<%8jG1}7wXf1uK_2q-5zGEc4)S#HAHJMV)2$k~6UYl`{_`UrU@z!# zW&~IBYR+QMr1elR)@yxI17HPMWc0TgcND&M$$98dfH+CF;E?MgkWZ57KxcOVoi)~O z4}_$7-@Ir+qzVF{M>GmzUPPmErDzlaSf~MkxTok9#67O?i9kyOrP^@L2jW<@lS@$Z z29rR6bzlq0ko4Y5O%6VR6iA-6@XmtcwI~iGxz3^6nge41TBUAElSA!f31q)0YV;h6E1!NUk4d-@XFn|yXbG{$$%SuD|<%3pdg*4r++r!oct&uV` z2_D2j{M^@`jGK#MvQ&2hS-4Hw0M-6ze8^-Gi~J~N0Hc)eNe#W+=pCG`VKfs;kgySn{83451`x*5J}RTn zG6H5u@94WJ5RcR|3a;pN2(2XTclET5&gfz>VES;Lu#!ZN8Z8W1TekqJxAe9e1mP{+ z=ZmAle)(<5-P1R)S;mobYd59zHxrEGpG$g}Z3sgKtMmfxuE3Uy>V?+0e%5RzwD!iR zyrAzGKV6=whGXTyNg?{uGfKKo!RXlWYtJZw#PuGC`YS72*Z|8M)2L;0NCBH99Vbj9 z!iK5l^h|@t5|_sj6t=@zkKc^^stp{2M`n@wt5=x%Dg$b(XJ11Hn7vC2x-|9frPNGp{~XEwD&I2d?y>=MzsG1k^{Bbg@zb|=YtnK z-+@kRn=8SOevI{rxz!G|TTv&huvu^un3ahv3%dF4vl<(5m_$&Ln|L?DfXIeQ^Nyz7 z>J|n^+4OYKD&3`9881ET!z9M>;;aQs;kFn1y)u?0JS z&;R8U?lQS6z)O;;uTaykbwdnKh$E^ol`UcrN&EzB_y^oT;TJ{$P|}6z09JDn)|xk9 zygMV15P28x1m^DNT_0@iN8Dc#wpe5a^P92l?at*9 z;N$^5imRosSPjH;4H&gK7(ObAB8E!z7mO7LiqBAKTmtrsQ^1~9u=L+(Ey8*{{%8d8 z4VWl8LxW3fsBxc5^gGTnwOvSKp|h#%Rcf^o^!ciA3k$LR7m&RlxSmGb?Hmijg8AHd zqIG8oI(_70kLq*ic?;HW`;iTPX6khf$)CbwI1@5mpF@NeOWw!3zL~fI-E~+yMWR$O zrunYW+3(03CVK8H_C;X4%b^)giQ zj#lBQR_ngOMOD-QvaY(4|C#CIt=p%Y`r8s+l}X7Keb++D)60#RLaXp-pg}=0x@*cL z?7rBiD<_F@!rmG&kDRL zV9CK@gXU{gIIH0w?@j!U;3vj$+|qGWfFP2+2fk`t14tj126i02Gcns(aJ*t3C7z3n zebzfQ+NK*E*yZW7T{_g)4dN9?*$rw24D-0OhF@VfLMI4lc9;1QQ>cz@6?>2!TLMX7 zY!r}#qn%@76{ki3jo4|qv(j3w4Z9n_niU)>+!8VR+z7+bm%UB)LvDq|A>c${ozNdJ zTs8O41Gmh_!w%rwz(xlj4(Ld0Yq-SZS_-hM*lx!&9(nc9vsxSiq`EGbI3%fR$`W+4bi zoFQ(otxX{i!^b7m^1UJ7BnRk&#*>(L@vmd8O@c!N>bV0Bd-WR-@5aN_TvGOR_LTV7$@pp1FeA}VVM?}#pP*kGZDX1n< z7!c%yoed$lGXVaf&Z!9&G%(R6V!~zhhe%o+3bJw^TCECc(6N@ih5o@LcCs468eKU9 z-Nz|rr}AIU7&nmsh+F|p_E1r=Tzaihl;#}{#C@hA#97Qm*_GmfBdE#cD_ z-u7S}-iQ?jLs=YXe3yhZc)?HU&lB{-XAplM;=%U3RcMLkQrPN^&C3>|w=DO7*vVvsROzXd6h zB2;PIfD1J=m$W%4p9^0VksH#1vU-Hk@l6?oqgEi(6}-S{Ac{l}+*xy!Crc*#kDzH% z*)PF!Cr+6zUfi2;!(^~wG8sEjDJBEf&E6oefm_=qJXVlZ2@5zl)WI%|XP|Ge^uWfq z1kBepK0?xm4pEYP8xAw?)hUKPw4qSKDW><+7c-Zzw_Ga^mle~4<$01h27`Qb$bvS=891v;?SH4932N)M7|T^^)wvDt>sSUt`CfvQXsCbT=az5K92yI}B0D_@n*@O?cVI{7{1Pb3y!24OG z&}xkNkRk|#Dxc;XLUj?^hT?980vArp=Q`SgsBD&2IvOjt369XHmSQ1Yf7xS z4kkaKnrOy-giVR1MO6kaDpC+8;FN{W4_iIn`wX(ne30uQ=_X+lX3-`LmcfPy77XRG zOwVl(VEwRseBtOLL_!AIbW06rPWLNZeu#4rAz512QUpp9cmde?5x(b?fK=Ve`=4j< zV+XaP7(5zFY7YC$v>s;4vj)`3rlNIVB6jK%PR#3DnwDEig0kLoLzk<|1 z$H{ka1H=aV9_=}4r#S{<7T^GG5F|)z;k)Um26WZ!y zl8COl=0~W&X$5ca0j4%wF%anvkyWfE8{gS;fuP6|lI4-A;t)Wb_L$N!U0+@nQ^ex% z(ATr0GA`&DM~om%-^;x~8ZZX+GK}?t=V=l@*}{pfK(!R;8Q2-%ONoQU+kmq1#Kd+D z0J(+2CU` z__Rx)=uAm#m)Mjh;j?(sl(}+my*>OFioP*`i^;Zek@L^L%| zt8Wr-M3OHMJV`a#X}T*I12|$Dw}<%mM#(bwF+kGsY0zrZ@YJ=fUv2poR>u;>LA4gR zf0>Wu!YZ=M6j?lq+yzDYQwdjCm`0=xG}B1=pJa4E;)SrcL*K; z1uDcR9Ogr`YZ}?B!%vw>UK1b4oWjq}Ok{>Lnaoc5?aGYdZUp~!XSU}uQbLS2AsCL(|U^Two7;uq9Q|*N_80^qAnB~k1|1M`WfODLKyJHH8iWDWsEv8kgM5QE2Hp35;sT+RCR(84O-V73KkzWIaG@YKB)Ny z?P$AtXMs8sOsPWmgCL>Mi9j(EeRwS!+OS12``Mrip}9r34}rd7S8a<|YJFZT8V^&|79At5?@sVjla}n8vvfp9zP?sP8%uYld+#(c3Om}b&b)Pov}SZpQPEfLk1mZBuW#BK9tRr~ z-rq`P_qRyV{mm-5Qztf>gs)n`eS@}icurgcg}APAJ7%O$Q#zOk(qDbb?EeHa!CGIh z5og(@Mj{>LOoHv2D$dkZZ=|$i=prM7~F%JTV#Gu>LAAs-o9&qaQdk%nD z42P(|U%%^s5ajjg{f6BJKqe1e`3NYnpT=DVggv;9Re#WjuyG_wzdDQl4c7eN!jSDC z?2gXR(PPICzvo>uCl8-Gee4uoffcWvhHDG=KJE)yB!5Tl3mIZ|iOfJLr-H}WA2|?@ z;OE_jAhb+}=Q6PRo`+1jYQb|^;3XU%@`J>nkirLC{FYv&*DsEO$*{Q4&>h8saf@Q% zcpSy@lgvrDBufRKn1`-1iXY%NJcHsRTlf?{pyRvcxjB3u9XA^77q8zs4lY`QxFk$( z@aY)~pNQSiIPh&+iAOg^Am-`SA|n-NKhY*sz`C5-*y$`)L$5 zt+Ll)81cI`C}|G7NR?xnClOTei~e{|7SIv=gwYAX5r#eZPD6+M<)`rKTCTU{Yi{!> z`epVA-%#IijgE*V1)Sksx6TRV_4!Qzt*s8B7P!6i7#-e0&L4VwOKNu8Eo=~bqE0b5 z&EO%%^+6xg)zH4+gAp`#xON-$N8+c!Ki|$`9%Dd$nEo!`6TFk^$jMbKwWp>ob8Zmr zIK%45FXlJwhOLa9v$WF!4pI0=wOFR%xO<<0T$p1HR|F7<5!`));(NFxFsY;UjS1g^ zO9JaftMv)rrnBUAI2@CgCYv72ETH@DD z0fjkePMo!%bAB_07Tyd#E{`>EF@;j#vQBI1x6M+r0psOszM*GsxVD1`CJo_;1?jHn z89(E;;bt>x=XRC{okj={y$=TW(9UoNwG~14t@@;!3!cQ#oo-c8CO#ttu^&DTfZik< zCO-ZS$9Os&#v}{706Ho796v!1gXO`XgoHb+?E`2I9>oraRs-$`jl|mnPKo9?VKHYPikIfb+8MRSdNQGv z7yJ8=#j1B#+M2G7uN0(r>@bkhwr>uwVR_=0Gy{*pT$KweUhEujxO z=J>YC5^Noo^7Cv<6IM6D%s>NUu(WC87zHibE{*~&>C}1_FuwUwI-A%C4XJLaeeY%5 z+i*;wex9cD_=H$gzndCQxI4yR|4`c8h#*GVH4>{s%IM}p`YjvZV>JC>{2`ADdU1nT zUzqOB;Q7_yITeF*b7{1vM!+Ya(kyND$6VM;j3wNgwk6z~@pJII1;2@H34hzt_ywHD za7%&prDqG!X1-{t?_>RXUJ!pPG?EF0h{ty?^?uPiYnJzYy|ebBapv@TxSnnoR|re7 z{>zH&Y3*QXdqV|1zC+Ug_G_e%!-13+bgPX2iyKpJ+`BLzH-~k^_k$?5f8PQm zHWs^k7D`xQz1>}lF=6gk*|Dw((Xn!y8_I3Q`lQ#{pq*IS(yi})XiK7na7_`w+lBC5 zynkF#4QLrWdA;3^`y1fc`&2Nh+^_J|yI;L%KJ!GdX90fs26lpZ*a_a?@APk+$N9PT z6OrQ!U=*+iya~G`G{G(y7jK3(n6W-2pOz`OcRml-KHR@9I&gctWfAJ)Ij+82s8?3F zYvZ?td61vxVLpmL+|#G1>)Gc-Un31)K$0Hx!QtbdAy^3!snJC1)-EC?2yTz!bL1nx zHNN}lJ%=XGw4W~TZ5`fQJabq3>3w?-p1G?aQq&m2MdX7RwzP2^H(eL{EYThCwKgQk@ksHSM<)FK7 z95YY2$ZH zzsG59nJGHw%Bm(`AJ!=*#l-9N&mPouUUl|BAqim2VW2z4W7=$N7e`%&elua{X$CTR zXQI0<&dzE438#mXpo6I&Gw@a=*_f_ z3v>obWJ*4R_#P&w{-Sm`kUtC;n8LFYyM7wh`<<*?o1cgIK%-LaWbl28)j7l}c)rGm zRkUUQVHWUIAc8ZTkRDcFPu7Id<7MVDzX@Ioh9W$w#N z<*;MqP&5btY%*kGByA*YmL2 zF|R`Z_UcYJucxU!pP+|(6|UxyDg`6C)YTO3MLmjdt;}y`@1>a@borlyc^s^OY-0l7 z+p(_>+cfUyw@ztnr(OQhI)z_r%A;+3gIN6X@>Nu}0*3nHBmgDDf(4o(UqLsZTW5aB zPG-KeJH>KGSS}Q_pqVFET?>r+q{JM`=be5YH)z5KC;U<$oeqwnkD05Ed56R}k`}#w zE{opNT>(cShpz>~*?^e+k5~>ytF@^QjHjW*(?@6vjZFetCPXibz8&`j-agHl!twxl zJ#6MSE5^mP6FkS+86j&SWFeTHO#usQrl^@%QX|+L0%-9%`AuK$*?wz3*W^=d-x8}t zEwMi|ZKK_j z3VYN=B#eI`4i`2gBti8W6kr1-R&fC{JIk7RFwM?tj-|6$#;1;g{Ik7vgzjy@bq|Ut zyEsh_9dZs#J}|jo>ew)OJl;8)-Xk0u*y!V9cGyYfYHA8*40xjG_v4FS^X3|q!1&LH zZMl3WEO`lb6Hg(9Xz>d&BnStF`!`Xh8e<^a(y#K4Q^3zILazcJY7jQk=NaEUBhF&R zAHw|0QE$RFc32j7Ym1!cnwgA`2}l94{+K9-r^6Ba#B|a%z*`gEBl-iZriXP z6Vyxb5doMr0xn>PID;%3%93$mSw!K!fhSEGxpC5rg*JH9fHYh7uG_s`)6xSRUqvK_ zeVp20I6%X@qwE*kXg)WVXzhykh)z&Sr5@xnw7OG7B%wwrXNwFfTO?~572d>qiH)x& z;TIkWD})xF(Hgy0g*eswc86bPiJS&0LVb~s-Lhr69L8}j?_~vIR|0L+TzXh9vI^eB z{!m!r5&Y!)61^){yFpdQk)X90aMj_QNgVp?ZG)Smi9j++d4lfsnAS$|0#rcTe}%kMH&Sz8QaFqNL#S*XrGkU%jO$|4x@x2;EZ+hrEB zLubwk-Hv0~o~()rD0b{Hu)3fgww%&{de>>V8*al6UEiyeN|nkZECpqoVUndK>wM)> zWwEq}BU8#oT%ZYvVqByvbK0RD8=}FWTPtNX*23sJHO_5uyBov>H}J)-;$m9j4V9=R z9}U0686Dr?Brc)ywenc~Q)NRX{yZr>R(I6Cic`~98q_)cm?#j#U&c513Kts4GN|@Wepej3HdNj>)JGoGMYKHlK z?y=f8b~P2fK7y$17=L7VIr+P#ZYf`@eazL=`r0qmyNavy^}kiWr6rmxvB4diHL#qK z5AFCUz5#9ZYh_jWPF?v<;S;FgtW5B@=6a&~+x3N(-*Fb2J-5OAh7*SF!sa`{LeRi@ zLJ;P=J_{BeIo_j%w!6O2-40v6_g3ZH;zHnt&V1KyY}!pHSRiinLbtsjWojWi{YrN` zE?jQgopokkIYn!dEQsc6p}pw@H9KgyZsl^@Z`keNN@b(xH3qeGV4M@(qKgAbl5%PV zEx*@hR>Su~+x0BpYj0c2t5(NRW8K&rW4v>$m5b5xLy$2Uc-s?!2Jx8 z<$M;_!tJgTn~vA;nG?_4^IR%i7uD;W`xwVI9o+ zM_{Wa*$g|1-zhfBj^THj9cL%-dxV{2FW`3uR8FxUVb-IJ1pFmVDmSW#BtE3QSMd$5 z;nIiZ_Ei32h|*)|@TMNjhR|V@_03!`i~GhSg`W&H21WY{cb@9Z+!cD>S89fsDIa}b zvXajdWZ3Rlfzw^e+UVA@1<`53fM${f<7S7{5d%Ue5cW`5LSY5TSi-ag73un#Ht1?3325dH&>P9#)-8O4E93l*p+_i(is@LCG zd!t?-3|!eG!?5=yE^%q`-1)aITzvb|JMTu9R^<*rv(pPgYaQl1nSajmd~e?CbsWsK zU$OWMD3x=u-gdlL_c`OF;GASTHflH)$mx%$qN6P3R0yk((?Sh4$PH_?v*-~Jp9^_Q zEvO~Eq(w6W`;m4VvBo5_B-TO*{tAV@@)YdfRX@>ov>jctzprl^e4(#A)F2>A@M2%> z>wTSRCzL}zXPtNE-vxB+m*BcerD8`pF;;0F>nJoVSfYUXtb3G-J_#RLMcQOSS&=W)sXiK6fKA*F;T5h970Ha=CtJkql6wk|T% z%;pR#1Y6wcwjFFktR#gPXM!FG*+l3geCBW8uGh;}$KJNy^!)Hm$Z|#u1lC;-SZ2!& zF=S*TLx;L5VGjC@OoWXt4Nm^5-|6_?P{Vw(fO}F zbKIjXA3n?c{jIIxp|UzpQe|y9&Zc#S;RKkoVfWe)0Z7zh`QQpLYJOw|XrTHK9SQ5U z2a8&R#mZ($?pm-9>o5>rGm$LJh;D%mT-f%TFdTM}&AvqLZ=YOOpzd)0K$t_TQzZ}|^gVO0ONaS3u<-hP z;6TS9C2rFVgYw{rZoABLn=OH#VMht_+HI?0L-DZ#ixxXa5-ZLq5%3gT2iCeDwz5?$ zE-o!D3XgLBf+!Je=P;&D-~jLl6m1bp7$)gpmQ2MkpEoT04rCr^9G1WjN#txmrcTF( z+-H+jDi{P12e}>+Z1Q{wAH?!E2viAUK@_@hWF8qAK^^YU!xHFN5IO+=+Xxq6e{eIK zh3E~TIH})r)_PBz7j)KY^f=sD2wUWm#&=MLG71wRX(DJjR9}UVL|74pIDr$=dPN*^ zKwzrG%C)N_I`PlHx_NU6<|A7vJ|X&O?}55!CXYzo{r9B0NHEEzl=HsgekD`A9x zxjd-;`a`D?26Nez!ZP8sEax)<0yt(mKCCpgn1@f3jX!+4Uf8HttThVLhE6B2oKJf$ z0y&&72{mT1gf-2mkySk_L=Yxb;*)mZ|IWJ<(+;^c{p06@cRrv5b}pz*y{kSLwYCxK^5_oc9k_%)i?Qn$9z(#D? zZreKJRGJm|f%A*!F3m5V!~dF)TPeM;oCFF8s^Gvz=rntP?yxU7EwC?JHW9^c$mr}_ zpXCa3wr$B+afFyXlolD~`=MD5;ud{Y_-jD0(d(;H2NKB-te&^&`C9_wVP&bQ-P6%| zk5U($&^)3`q(ZiXaz37{iQ}!onG$m0Z&05yF2i?7?j=m8K#CKwvLR8rDOEEr4JM2A zt{?0}?!1UGzlU!?@PG2Bv3gDKYT~ZurJTjfmMx-W*g17xP zX)QAXDQ-SM2}T)S)raSTrlld&|IHeuJ|SCTbozN>5ls(xwPbz%3g3}2naLM%u2KRh zCW}q!3S$#M0htY+Lu11CYMzb@`{zhwD*OUnM3^>+)h0#+>o3qF7{_IDY#dpON!9!T zTtAWWnpZ}8kFcJ^jlP2QucMH%eh1ktrXsGQm~4t6-eM}^D*S$nXsWD7|C*i1fX%|+ z|L$z2?uWAZxpe-YnM`vXV6xC;K9BQ2#C#4voC4gkF7+~>EL`&EnXI8+e}`c~0hbb3 zQ^4P$Y@wcO4dO%kp)yS=_(G{FM8}Ayi3{IoIDgHagt^$qg4EnmI6x#NxWEa+at@il zRmZUs&_587v{VSuD_gfCk33Avz2otgxfe-^cM@UC(gec7?;FF*h^61jWTh`L^u*ono z8IVn3B1H|d3>4!HqHH34_{eNQ^?DUy3&m+?;JE7bp{=6b9fV~>D?>NsY`Oywae#=* zYCJYX4%P9*0SN}B(wh@CPIi93Ss9atLUi~w?u*p$p}7xpf<(N!J*z78hjxt;N2c--?rbTX z3|m=`kBvIh8tg1Wap5`R6Z`HVpcQwMbQeDl68rWl?D4;#U1Yj6bsT?_s`f*4afL8mMg({_x$ z(bqO}{5534j16cubR2Cgm*vFtO>HOF&+&`YiYyrV_l=VZGeP|iKs}#Q7voGhPRx+I ztYC~O#>iP7fX+whOc;xYD@ecQI6q`ooqOm}6g>{k+{eArGiNq2Gxo!<8roBNYz4wc zm}+p@BkT6tSu$19KtZSRM5~1qtu(&WeUIcOn!S~PPsvm~HS@w&G?TUx32B<5m(#Y) z`4eCq%rO|0kOEMH(-pW(cx4^QzPMPsw!C(|wtD?e*%Ss}$WNR{Tt<=7z$?f37K{|; z+Amx0VcEaIH+UNtvib!;v02>^9^kk}zvFsAC4g2CHC(mh;;v|iEJiOsOAZss9}!2& z)@JF~ZYGXQg^-lMDkMvR(MSY!nNY=3HL5`*lhiAT8SeG<6C`3ILI_dQxR;6_Q4yk+ zPel#lX|Ozr86KgTQW5%;n%x+s0~dx_kObEGS|)r(U#F27)kN^IJ~N#W7J-C5*Ee_d zoxFD?odHTv#QvfKqFBsURsfBnP=Epw#7gj&{Q?^cb5D^bCgh4W{tb<0<4^Pb0@{#p z7AJ)=%i-yS9u_eohnXfQjl7fZ=O32v9m99LsqYl~MX9#s$rb*GU;-zDAOv`i%!813 zVIlAHYp6#*rnITZ15=RSLk0?HnAt&VfLHk(bv&AiGP3wC62a)S?RLP~Xv+G0NBFjF z$L1*W3i_8P22#wg)66$;iI3Kh#cTB1z>_sfLlUrz3u$IAHr=4@*j;{+28i|QG|C{# zaZc!2tdowE2716(sPj#_5HhWrMA!52xZK{xPjMY-wHnP+9ZQyu+V){ki7#XPf8iUv zgA2iA%RL#0ztnG!JWDSaBX=#^(GO6mq0WNXq7 z1v*q0miy09AZ%*@1e22n%S9hBg;q)!fg5C&!H zg@=MO%Xz8C zq{6X5MEM;QtGS1^SGyopxpuBPMt5ow;O=*AKc$%0Xxyd(i79D#VsxJ%ee2R;FH?{kbVz`5NS9VZd;f*Ffd5iaRQsmAzr3j;%o4z%=RW2Bj4#)IZ=O z9o|e9jAr=m2ERoENsa@u#PesX(OUHCVV<$!w;%$)A5|oy8KE+xFCv)eh*Lm$;#84 zGkAb;{(^;f8pPu!+fIx zIh?s2Hd=A6$^Bk8*6}_Ah|sG5oO~~TpDtOpDK==M!pFx3JzlDsJ>XnG-_cx$$c+4i zHvAKeC!A~GkFc(xk!zmS2D7}*DnAw??h-N#Tf$6|ZrBfvTdc67 zds7&fwieNP7M4cGI|q6a=|GF|vdtKc0z4Iv6?DhY^F4ZZ%sVRd94%~|`j9r`-fcGS zQJc_ci~|DTb!a%G%s83Yktx)>s83TpRGyklMpj3l>wwC$3PWj^ zVyu}JfitV(8eJhF7wRIF?LMl};#!szN>U=}+a>UsZ^3QS>2iZEVvibk;ymf9+jjT^Y8F}M_o%c? z7xLCJe@WXJ+M-Zoa^d2It~XH#UdN@NlvHgR-=8PHQ%ES!65Pff%|f{_S9oReVtFRc z*J{jf)M}gzs(5H2GNdwy_!-*p(ivg^N}WkQ6$Rw<{dT|!+VC!2j^RS2@SY1uy-GDx zK7tj?svfy^{l@aWpRLv4MD8r#UA=x+9>~B9W&6N8jq)(BfM-f@8W%%7S%6U?#z_Y0 O)3eGK$`|HVN&O#!B7BYj diff --git a/venv/lib/python3.10/site-packages/dateutil/parser/_parser.py b/venv/lib/python3.10/site-packages/dateutil/parser/_parser.py deleted file mode 100644 index 37d1663..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/parser/_parser.py +++ /dev/null @@ -1,1613 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers a generic date/time string parser which is able to parse -most known formats to represent a date and/or time. - -This module attempts to be forgiving with regards to unlikely input formats, -returning a datetime object even for dates which are ambiguous. If an element -of a date/time stamp is omitted, the following rules are applied: - -- If AM or PM is left unspecified, a 24-hour clock is assumed, however, an hour - on a 12-hour clock (``0 <= hour <= 12``) *must* be specified if AM or PM is - specified. -- If a time zone is omitted, a timezone-naive datetime is returned. - -If any other elements are missing, they are taken from the -:class:`datetime.datetime` object passed to the parameter ``default``. If this -results in a day number exceeding the valid number of days per month, the -value falls back to the end of the month. - -Additional resources about date/time string formats can be found below: - -- `A summary of the international standard date and time notation - `_ -- `W3C Date and Time Formats `_ -- `Time Formats (Planetary Rings Node) `_ -- `CPAN ParseDate module - `_ -- `Java SimpleDateFormat Class - `_ -""" -from __future__ import unicode_literals - -import datetime -import re -import string -import time -import warnings - -from calendar import monthrange -from io import StringIO - -import six -from six import integer_types, text_type - -from decimal import Decimal - -from warnings import warn - -from .. import relativedelta -from .. import tz - -__all__ = ["parse", "parserinfo", "ParserError"] - - -# TODO: pandas.core.tools.datetimes imports this explicitly. Might be worth -# making public and/or figuring out if there is something we can -# take off their plate. -class _timelex(object): - # Fractional seconds are sometimes split by a comma - _split_decimal = re.compile("([.,])") - - def __init__(self, instream): - if isinstance(instream, (bytes, bytearray)): - instream = instream.decode() - - if isinstance(instream, text_type): - instream = StringIO(instream) - elif getattr(instream, 'read', None) is None: - raise TypeError('Parser must be a string or character stream, not ' - '{itype}'.format(itype=instream.__class__.__name__)) - - self.instream = instream - self.charstack = [] - self.tokenstack = [] - self.eof = False - - def get_token(self): - """ - This function breaks the time string into lexical units (tokens), which - can be parsed by the parser. Lexical units are demarcated by changes in - the character set, so any continuous string of letters is considered - one unit, any continuous string of numbers is considered one unit. - - The main complication arises from the fact that dots ('.') can be used - both as separators (e.g. "Sep.20.2009") or decimal points (e.g. - "4:30:21.447"). As such, it is necessary to read the full context of - any dot-separated strings before breaking it into tokens; as such, this - function maintains a "token stack", for when the ambiguous context - demands that multiple tokens be parsed at once. - """ - if self.tokenstack: - return self.tokenstack.pop(0) - - seenletters = False - token = None - state = None - - while not self.eof: - # We only realize that we've reached the end of a token when we - # find a character that's not part of the current token - since - # that character may be part of the next token, it's stored in the - # charstack. - if self.charstack: - nextchar = self.charstack.pop(0) - else: - nextchar = self.instream.read(1) - while nextchar == '\x00': - nextchar = self.instream.read(1) - - if not nextchar: - self.eof = True - break - elif not state: - # First character of the token - determines if we're starting - # to parse a word, a number or something else. - token = nextchar - if self.isword(nextchar): - state = 'a' - elif self.isnum(nextchar): - state = '0' - elif self.isspace(nextchar): - token = ' ' - break # emit token - else: - break # emit token - elif state == 'a': - # If we've already started reading a word, we keep reading - # letters until we find something that's not part of a word. - seenletters = True - if self.isword(nextchar): - token += nextchar - elif nextchar == '.': - token += nextchar - state = 'a.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == '0': - # If we've already started reading a number, we keep reading - # numbers until we find something that doesn't fit. - if self.isnum(nextchar): - token += nextchar - elif nextchar == '.' or (nextchar == ',' and len(token) >= 2): - token += nextchar - state = '0.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == 'a.': - # If we've seen some letters and a dot separator, continue - # parsing, and the tokens will be broken up later. - seenletters = True - if nextchar == '.' or self.isword(nextchar): - token += nextchar - elif self.isnum(nextchar) and token[-1] == '.': - token += nextchar - state = '0.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == '0.': - # If we've seen at least one dot separator, keep going, we'll - # break up the tokens later. - if nextchar == '.' or self.isnum(nextchar): - token += nextchar - elif self.isword(nextchar) and token[-1] == '.': - token += nextchar - state = 'a.' - else: - self.charstack.append(nextchar) - break # emit token - - if (state in ('a.', '0.') and (seenletters or token.count('.') > 1 or - token[-1] in '.,')): - l = self._split_decimal.split(token) - token = l[0] - for tok in l[1:]: - if tok: - self.tokenstack.append(tok) - - if state == '0.' and token.count('.') == 0: - token = token.replace(',', '.') - - return token - - def __iter__(self): - return self - - def __next__(self): - token = self.get_token() - if token is None: - raise StopIteration - - return token - - def next(self): - return self.__next__() # Python 2.x support - - @classmethod - def split(cls, s): - return list(cls(s)) - - @classmethod - def isword(cls, nextchar): - """ Whether or not the next character is part of a word """ - return nextchar.isalpha() - - @classmethod - def isnum(cls, nextchar): - """ Whether the next character is part of a number """ - return nextchar.isdigit() - - @classmethod - def isspace(cls, nextchar): - """ Whether the next character is whitespace """ - return nextchar.isspace() - - -class _resultbase(object): - - def __init__(self): - for attr in self.__slots__: - setattr(self, attr, None) - - def _repr(self, classname): - l = [] - for attr in self.__slots__: - value = getattr(self, attr) - if value is not None: - l.append("%s=%s" % (attr, repr(value))) - return "%s(%s)" % (classname, ", ".join(l)) - - def __len__(self): - return (sum(getattr(self, attr) is not None - for attr in self.__slots__)) - - def __repr__(self): - return self._repr(self.__class__.__name__) - - -class parserinfo(object): - """ - Class which handles what inputs are accepted. Subclass this to customize - the language and acceptable values for each parameter. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM - and YMD. Default is ``False``. - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken - to be the year, otherwise the last number is taken to be the year. - Default is ``False``. - """ - - # m from a.m/p.m, t from ISO T separator - JUMP = [" ", ".", ",", ";", "-", "/", "'", - "at", "on", "and", "ad", "m", "t", "of", - "st", "nd", "rd", "th"] - - WEEKDAYS = [("Mon", "Monday"), - ("Tue", "Tuesday"), # TODO: "Tues" - ("Wed", "Wednesday"), - ("Thu", "Thursday"), # TODO: "Thurs" - ("Fri", "Friday"), - ("Sat", "Saturday"), - ("Sun", "Sunday")] - MONTHS = [("Jan", "January"), - ("Feb", "February"), # TODO: "Febr" - ("Mar", "March"), - ("Apr", "April"), - ("May", "May"), - ("Jun", "June"), - ("Jul", "July"), - ("Aug", "August"), - ("Sep", "Sept", "September"), - ("Oct", "October"), - ("Nov", "November"), - ("Dec", "December")] - HMS = [("h", "hour", "hours"), - ("m", "minute", "minutes"), - ("s", "second", "seconds")] - AMPM = [("am", "a"), - ("pm", "p")] - UTCZONE = ["UTC", "GMT", "Z", "z"] - PERTAIN = ["of"] - TZOFFSET = {} - # TODO: ERA = ["AD", "BC", "CE", "BCE", "Stardate", - # "Anno Domini", "Year of Our Lord"] - - def __init__(self, dayfirst=False, yearfirst=False): - self._jump = self._convert(self.JUMP) - self._weekdays = self._convert(self.WEEKDAYS) - self._months = self._convert(self.MONTHS) - self._hms = self._convert(self.HMS) - self._ampm = self._convert(self.AMPM) - self._utczone = self._convert(self.UTCZONE) - self._pertain = self._convert(self.PERTAIN) - - self.dayfirst = dayfirst - self.yearfirst = yearfirst - - self._year = time.localtime().tm_year - self._century = self._year // 100 * 100 - - def _convert(self, lst): - dct = {} - for i, v in enumerate(lst): - if isinstance(v, tuple): - for v in v: - dct[v.lower()] = i - else: - dct[v.lower()] = i - return dct - - def jump(self, name): - return name.lower() in self._jump - - def weekday(self, name): - try: - return self._weekdays[name.lower()] - except KeyError: - pass - return None - - def month(self, name): - try: - return self._months[name.lower()] + 1 - except KeyError: - pass - return None - - def hms(self, name): - try: - return self._hms[name.lower()] - except KeyError: - return None - - def ampm(self, name): - try: - return self._ampm[name.lower()] - except KeyError: - return None - - def pertain(self, name): - return name.lower() in self._pertain - - def utczone(self, name): - return name.lower() in self._utczone - - def tzoffset(self, name): - if name in self._utczone: - return 0 - - return self.TZOFFSET.get(name) - - def convertyear(self, year, century_specified=False): - """ - Converts two-digit years to year within [-50, 49] - range of self._year (current local time) - """ - - # Function contract is that the year is always positive - assert year >= 0 - - if year < 100 and not century_specified: - # assume current century to start - year += self._century - - if year >= self._year + 50: # if too far in future - year -= 100 - elif year < self._year - 50: # if too far in past - year += 100 - - return year - - def validate(self, res): - # move to info - if res.year is not None: - res.year = self.convertyear(res.year, res.century_specified) - - if ((res.tzoffset == 0 and not res.tzname) or - (res.tzname == 'Z' or res.tzname == 'z')): - res.tzname = "UTC" - res.tzoffset = 0 - elif res.tzoffset != 0 and res.tzname and self.utczone(res.tzname): - res.tzoffset = 0 - return True - - -class _ymd(list): - def __init__(self, *args, **kwargs): - super(self.__class__, self).__init__(*args, **kwargs) - self.century_specified = False - self.dstridx = None - self.mstridx = None - self.ystridx = None - - @property - def has_year(self): - return self.ystridx is not None - - @property - def has_month(self): - return self.mstridx is not None - - @property - def has_day(self): - return self.dstridx is not None - - def could_be_day(self, value): - if self.has_day: - return False - elif not self.has_month: - return 1 <= value <= 31 - elif not self.has_year: - # Be permissive, assume leap year - month = self[self.mstridx] - return 1 <= value <= monthrange(2000, month)[1] - else: - month = self[self.mstridx] - year = self[self.ystridx] - return 1 <= value <= monthrange(year, month)[1] - - def append(self, val, label=None): - if hasattr(val, '__len__'): - if val.isdigit() and len(val) > 2: - self.century_specified = True - if label not in [None, 'Y']: # pragma: no cover - raise ValueError(label) - label = 'Y' - elif val > 100: - self.century_specified = True - if label not in [None, 'Y']: # pragma: no cover - raise ValueError(label) - label = 'Y' - - super(self.__class__, self).append(int(val)) - - if label == 'M': - if self.has_month: - raise ValueError('Month is already set') - self.mstridx = len(self) - 1 - elif label == 'D': - if self.has_day: - raise ValueError('Day is already set') - self.dstridx = len(self) - 1 - elif label == 'Y': - if self.has_year: - raise ValueError('Year is already set') - self.ystridx = len(self) - 1 - - def _resolve_from_stridxs(self, strids): - """ - Try to resolve the identities of year/month/day elements using - ystridx, mstridx, and dstridx, if enough of these are specified. - """ - if len(self) == 3 and len(strids) == 2: - # we can back out the remaining stridx value - missing = [x for x in range(3) if x not in strids.values()] - key = [x for x in ['y', 'm', 'd'] if x not in strids] - assert len(missing) == len(key) == 1 - key = key[0] - val = missing[0] - strids[key] = val - - assert len(self) == len(strids) # otherwise this should not be called - out = {key: self[strids[key]] for key in strids} - return (out.get('y'), out.get('m'), out.get('d')) - - def resolve_ymd(self, yearfirst, dayfirst): - len_ymd = len(self) - year, month, day = (None, None, None) - - strids = (('y', self.ystridx), - ('m', self.mstridx), - ('d', self.dstridx)) - - strids = {key: val for key, val in strids if val is not None} - if (len(self) == len(strids) > 0 or - (len(self) == 3 and len(strids) == 2)): - return self._resolve_from_stridxs(strids) - - mstridx = self.mstridx - - if len_ymd > 3: - raise ValueError("More than three YMD values") - elif len_ymd == 1 or (mstridx is not None and len_ymd == 2): - # One member, or two members with a month string - if mstridx is not None: - month = self[mstridx] - # since mstridx is 0 or 1, self[mstridx-1] always - # looks up the other element - other = self[mstridx - 1] - else: - other = self[0] - - if len_ymd > 1 or mstridx is None: - if other > 31: - year = other - else: - day = other - - elif len_ymd == 2: - # Two members with numbers - if self[0] > 31: - # 99-01 - year, month = self - elif self[1] > 31: - # 01-99 - month, year = self - elif dayfirst and self[1] <= 12: - # 13-01 - day, month = self - else: - # 01-13 - month, day = self - - elif len_ymd == 3: - # Three members - if mstridx == 0: - if self[1] > 31: - # Apr-2003-25 - month, year, day = self - else: - month, day, year = self - elif mstridx == 1: - if self[0] > 31 or (yearfirst and self[2] <= 31): - # 99-Jan-01 - year, month, day = self - else: - # 01-Jan-01 - # Give precedence to day-first, since - # two-digit years is usually hand-written. - day, month, year = self - - elif mstridx == 2: - # WTF!? - if self[1] > 31: - # 01-99-Jan - day, year, month = self - else: - # 99-01-Jan - year, day, month = self - - else: - if (self[0] > 31 or - self.ystridx == 0 or - (yearfirst and self[1] <= 12 and self[2] <= 31)): - # 99-01-01 - if dayfirst and self[2] <= 12: - year, day, month = self - else: - year, month, day = self - elif self[0] > 12 or (dayfirst and self[1] <= 12): - # 13-01-01 - day, month, year = self - else: - # 01-13-01 - month, day, year = self - - return year, month, day - - -class parser(object): - def __init__(self, info=None): - self.info = info or parserinfo() - - def parse(self, timestr, default=None, - ignoretz=False, tzinfos=None, **kwargs): - """ - Parse the date/time string into a :class:`datetime.datetime` object. - - :param timestr: - Any date/time string using the supported formats. - - :param default: - The default datetime object, if this is a datetime object and not - ``None``, elements specified in ``timestr`` replace elements in the - default object. - - :param ignoretz: - If set ``True``, time zones in parsed strings are ignored and a - naive :class:`datetime.datetime` object is returned. - - :param tzinfos: - Additional time zone names / aliases which may be present in the - string. This argument maps time zone names (and optionally offsets - from those time zones) to time zones. This parameter can be a - dictionary with timezone aliases mapping time zone names to time - zones or a function taking two parameters (``tzname`` and - ``tzoffset``) and returning a time zone. - - The timezones to which the names are mapped can be an integer - offset from UTC in seconds or a :class:`tzinfo` object. - - .. doctest:: - :options: +NORMALIZE_WHITESPACE - - >>> from dateutil.parser import parse - >>> from dateutil.tz import gettz - >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} - >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) - >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, - tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) - - This parameter is ignored if ``ignoretz`` is set. - - :param \\*\\*kwargs: - Keyword arguments as passed to ``_parse()``. - - :return: - Returns a :class:`datetime.datetime` object or, if the - ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the - first element being a :class:`datetime.datetime` object, the second - a tuple containing the fuzzy tokens. - - :raises ParserError: - Raised for invalid or unknown string format, if the provided - :class:`tzinfo` is not in a valid format, or if an invalid date - would be created. - - :raises TypeError: - Raised for non-string or character stream input. - - :raises OverflowError: - Raised if the parsed date exceeds the largest valid C integer on - your system. - """ - - if default is None: - default = datetime.datetime.now().replace(hour=0, minute=0, - second=0, microsecond=0) - - res, skipped_tokens = self._parse(timestr, **kwargs) - - if res is None: - raise ParserError("Unknown string format: %s", timestr) - - if len(res) == 0: - raise ParserError("String does not contain a date: %s", timestr) - - try: - ret = self._build_naive(res, default) - except ValueError as e: - six.raise_from(ParserError(str(e) + ": %s", timestr), e) - - if not ignoretz: - ret = self._build_tzaware(ret, res, tzinfos) - - if kwargs.get('fuzzy_with_tokens', False): - return ret, skipped_tokens - else: - return ret - - class _result(_resultbase): - __slots__ = ["year", "month", "day", "weekday", - "hour", "minute", "second", "microsecond", - "tzname", "tzoffset", "ampm","any_unused_tokens"] - - def _parse(self, timestr, dayfirst=None, yearfirst=None, fuzzy=False, - fuzzy_with_tokens=False): - """ - Private method which performs the heavy lifting of parsing, called from - ``parse()``, which passes on its ``kwargs`` to this function. - - :param timestr: - The string to parse. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM - and YMD. If set to ``None``, this value is retrieved from the - current :class:`parserinfo` object (which itself defaults to - ``False``). - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken - to be the year, otherwise the last number is taken to be the year. - If this is set to ``None``, the value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param fuzzy: - Whether to allow fuzzy parsing, allowing for string like "Today is - January 1, 2047 at 8:21:00AM". - - :param fuzzy_with_tokens: - If ``True``, ``fuzzy`` is automatically set to True, and the parser - will return a tuple where the first element is the parsed - :class:`datetime.datetime` datetimestamp and the second element is - a tuple containing the portions of the string which were ignored: - - .. doctest:: - - >>> from dateutil.parser import parse - >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) - (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) - - """ - if fuzzy_with_tokens: - fuzzy = True - - info = self.info - - if dayfirst is None: - dayfirst = info.dayfirst - - if yearfirst is None: - yearfirst = info.yearfirst - - res = self._result() - l = _timelex.split(timestr) # Splits the timestr into tokens - - skipped_idxs = [] - - # year/month/day list - ymd = _ymd() - - len_l = len(l) - i = 0 - try: - while i < len_l: - - # Check if it's a number - value_repr = l[i] - try: - value = float(value_repr) - except ValueError: - value = None - - if value is not None: - # Numeric token - i = self._parse_numeric_token(l, i, info, ymd, res, fuzzy) - - # Check weekday - elif info.weekday(l[i]) is not None: - value = info.weekday(l[i]) - res.weekday = value - - # Check month name - elif info.month(l[i]) is not None: - value = info.month(l[i]) - ymd.append(value, 'M') - - if i + 1 < len_l: - if l[i + 1] in ('-', '/'): - # Jan-01[-99] - sep = l[i + 1] - ymd.append(l[i + 2]) - - if i + 3 < len_l and l[i + 3] == sep: - # Jan-01-99 - ymd.append(l[i + 4]) - i += 2 - - i += 2 - - elif (i + 4 < len_l and l[i + 1] == l[i + 3] == ' ' and - info.pertain(l[i + 2])): - # Jan of 01 - # In this case, 01 is clearly year - if l[i + 4].isdigit(): - # Convert it here to become unambiguous - value = int(l[i + 4]) - year = str(info.convertyear(value)) - ymd.append(year, 'Y') - else: - # Wrong guess - pass - # TODO: not hit in tests - i += 4 - - # Check am/pm - elif info.ampm(l[i]) is not None: - value = info.ampm(l[i]) - val_is_ampm = self._ampm_valid(res.hour, res.ampm, fuzzy) - - if val_is_ampm: - res.hour = self._adjust_ampm(res.hour, value) - res.ampm = value - - elif fuzzy: - skipped_idxs.append(i) - - # Check for a timezone name - elif self._could_be_tzname(res.hour, res.tzname, res.tzoffset, l[i]): - res.tzname = l[i] - res.tzoffset = info.tzoffset(res.tzname) - - # Check for something like GMT+3, or BRST+3. Notice - # that it doesn't mean "I am 3 hours after GMT", but - # "my time +3 is GMT". If found, we reverse the - # logic so that timezone parsing code will get it - # right. - if i + 1 < len_l and l[i + 1] in ('+', '-'): - l[i + 1] = ('+', '-')[l[i + 1] == '+'] - res.tzoffset = None - if info.utczone(res.tzname): - # With something like GMT+3, the timezone - # is *not* GMT. - res.tzname = None - - # Check for a numbered timezone - elif res.hour is not None and l[i] in ('+', '-'): - signal = (-1, 1)[l[i] == '+'] - len_li = len(l[i + 1]) - - # TODO: check that l[i + 1] is integer? - if len_li == 4: - # -0300 - hour_offset = int(l[i + 1][:2]) - min_offset = int(l[i + 1][2:]) - elif i + 2 < len_l and l[i + 2] == ':': - # -03:00 - hour_offset = int(l[i + 1]) - min_offset = int(l[i + 3]) # TODO: Check that l[i+3] is minute-like? - i += 2 - elif len_li <= 2: - # -[0]3 - hour_offset = int(l[i + 1][:2]) - min_offset = 0 - else: - raise ValueError(timestr) - - res.tzoffset = signal * (hour_offset * 3600 + min_offset * 60) - - # Look for a timezone name between parenthesis - if (i + 5 < len_l and - info.jump(l[i + 2]) and l[i + 3] == '(' and - l[i + 5] == ')' and - 3 <= len(l[i + 4]) and - self._could_be_tzname(res.hour, res.tzname, - None, l[i + 4])): - # -0300 (BRST) - res.tzname = l[i + 4] - i += 4 - - i += 1 - - # Check jumps - elif not (info.jump(l[i]) or fuzzy): - raise ValueError(timestr) - - else: - skipped_idxs.append(i) - i += 1 - - # Process year/month/day - year, month, day = ymd.resolve_ymd(yearfirst, dayfirst) - - res.century_specified = ymd.century_specified - res.year = year - res.month = month - res.day = day - - except (IndexError, ValueError): - return None, None - - if not info.validate(res): - return None, None - - if fuzzy_with_tokens: - skipped_tokens = self._recombine_skipped(l, skipped_idxs) - return res, tuple(skipped_tokens) - else: - return res, None - - def _parse_numeric_token(self, tokens, idx, info, ymd, res, fuzzy): - # Token is a number - value_repr = tokens[idx] - try: - value = self._to_decimal(value_repr) - except Exception as e: - six.raise_from(ValueError('Unknown numeric token'), e) - - len_li = len(value_repr) - - len_l = len(tokens) - - if (len(ymd) == 3 and len_li in (2, 4) and - res.hour is None and - (idx + 1 >= len_l or - (tokens[idx + 1] != ':' and - info.hms(tokens[idx + 1]) is None))): - # 19990101T23[59] - s = tokens[idx] - res.hour = int(s[:2]) - - if len_li == 4: - res.minute = int(s[2:]) - - elif len_li == 6 or (len_li > 6 and tokens[idx].find('.') == 6): - # YYMMDD or HHMMSS[.ss] - s = tokens[idx] - - if not ymd and '.' not in tokens[idx]: - ymd.append(s[:2]) - ymd.append(s[2:4]) - ymd.append(s[4:]) - else: - # 19990101T235959[.59] - - # TODO: Check if res attributes already set. - res.hour = int(s[:2]) - res.minute = int(s[2:4]) - res.second, res.microsecond = self._parsems(s[4:]) - - elif len_li in (8, 12, 14): - # YYYYMMDD - s = tokens[idx] - ymd.append(s[:4], 'Y') - ymd.append(s[4:6]) - ymd.append(s[6:8]) - - if len_li > 8: - res.hour = int(s[8:10]) - res.minute = int(s[10:12]) - - if len_li > 12: - res.second = int(s[12:]) - - elif self._find_hms_idx(idx, tokens, info, allow_jump=True) is not None: - # HH[ ]h or MM[ ]m or SS[.ss][ ]s - hms_idx = self._find_hms_idx(idx, tokens, info, allow_jump=True) - (idx, hms) = self._parse_hms(idx, tokens, info, hms_idx) - if hms is not None: - # TODO: checking that hour/minute/second are not - # already set? - self._assign_hms(res, value_repr, hms) - - elif idx + 2 < len_l and tokens[idx + 1] == ':': - # HH:MM[:SS[.ss]] - res.hour = int(value) - value = self._to_decimal(tokens[idx + 2]) # TODO: try/except for this? - (res.minute, res.second) = self._parse_min_sec(value) - - if idx + 4 < len_l and tokens[idx + 3] == ':': - res.second, res.microsecond = self._parsems(tokens[idx + 4]) - - idx += 2 - - idx += 2 - - elif idx + 1 < len_l and tokens[idx + 1] in ('-', '/', '.'): - sep = tokens[idx + 1] - ymd.append(value_repr) - - if idx + 2 < len_l and not info.jump(tokens[idx + 2]): - if tokens[idx + 2].isdigit(): - # 01-01[-01] - ymd.append(tokens[idx + 2]) - else: - # 01-Jan[-01] - value = info.month(tokens[idx + 2]) - - if value is not None: - ymd.append(value, 'M') - else: - raise ValueError() - - if idx + 3 < len_l and tokens[idx + 3] == sep: - # We have three members - value = info.month(tokens[idx + 4]) - - if value is not None: - ymd.append(value, 'M') - else: - ymd.append(tokens[idx + 4]) - idx += 2 - - idx += 1 - idx += 1 - - elif idx + 1 >= len_l or info.jump(tokens[idx + 1]): - if idx + 2 < len_l and info.ampm(tokens[idx + 2]) is not None: - # 12 am - hour = int(value) - res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 2])) - idx += 1 - else: - # Year, month or day - ymd.append(value) - idx += 1 - - elif info.ampm(tokens[idx + 1]) is not None and (0 <= value < 24): - # 12am - hour = int(value) - res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 1])) - idx += 1 - - elif ymd.could_be_day(value): - ymd.append(value) - - elif not fuzzy: - raise ValueError() - - return idx - - def _find_hms_idx(self, idx, tokens, info, allow_jump): - len_l = len(tokens) - - if idx+1 < len_l and info.hms(tokens[idx+1]) is not None: - # There is an "h", "m", or "s" label following this token. We take - # assign the upcoming label to the current token. - # e.g. the "12" in 12h" - hms_idx = idx + 1 - - elif (allow_jump and idx+2 < len_l and tokens[idx+1] == ' ' and - info.hms(tokens[idx+2]) is not None): - # There is a space and then an "h", "m", or "s" label. - # e.g. the "12" in "12 h" - hms_idx = idx + 2 - - elif idx > 0 and info.hms(tokens[idx-1]) is not None: - # There is a "h", "m", or "s" preceding this token. Since neither - # of the previous cases was hit, there is no label following this - # token, so we use the previous label. - # e.g. the "04" in "12h04" - hms_idx = idx-1 - - elif (1 < idx == len_l-1 and tokens[idx-1] == ' ' and - info.hms(tokens[idx-2]) is not None): - # If we are looking at the final token, we allow for a - # backward-looking check to skip over a space. - # TODO: Are we sure this is the right condition here? - hms_idx = idx - 2 - - else: - hms_idx = None - - return hms_idx - - def _assign_hms(self, res, value_repr, hms): - # See GH issue #427, fixing float rounding - value = self._to_decimal(value_repr) - - if hms == 0: - # Hour - res.hour = int(value) - if value % 1: - res.minute = int(60*(value % 1)) - - elif hms == 1: - (res.minute, res.second) = self._parse_min_sec(value) - - elif hms == 2: - (res.second, res.microsecond) = self._parsems(value_repr) - - def _could_be_tzname(self, hour, tzname, tzoffset, token): - return (hour is not None and - tzname is None and - tzoffset is None and - len(token) <= 5 and - (all(x in string.ascii_uppercase for x in token) - or token in self.info.UTCZONE)) - - def _ampm_valid(self, hour, ampm, fuzzy): - """ - For fuzzy parsing, 'a' or 'am' (both valid English words) - may erroneously trigger the AM/PM flag. Deal with that - here. - """ - val_is_ampm = True - - # If there's already an AM/PM flag, this one isn't one. - if fuzzy and ampm is not None: - val_is_ampm = False - - # If AM/PM is found and hour is not, raise a ValueError - if hour is None: - if fuzzy: - val_is_ampm = False - else: - raise ValueError('No hour specified with AM or PM flag.') - elif not 0 <= hour <= 12: - # If AM/PM is found, it's a 12 hour clock, so raise - # an error for invalid range - if fuzzy: - val_is_ampm = False - else: - raise ValueError('Invalid hour specified for 12-hour clock.') - - return val_is_ampm - - def _adjust_ampm(self, hour, ampm): - if hour < 12 and ampm == 1: - hour += 12 - elif hour == 12 and ampm == 0: - hour = 0 - return hour - - def _parse_min_sec(self, value): - # TODO: Every usage of this function sets res.second to the return - # value. Are there any cases where second will be returned as None and - # we *don't* want to set res.second = None? - minute = int(value) - second = None - - sec_remainder = value % 1 - if sec_remainder: - second = int(60 * sec_remainder) - return (minute, second) - - def _parse_hms(self, idx, tokens, info, hms_idx): - # TODO: Is this going to admit a lot of false-positives for when we - # just happen to have digits and "h", "m" or "s" characters in non-date - # text? I guess hex hashes won't have that problem, but there's plenty - # of random junk out there. - if hms_idx is None: - hms = None - new_idx = idx - elif hms_idx > idx: - hms = info.hms(tokens[hms_idx]) - new_idx = hms_idx - else: - # Looking backwards, increment one. - hms = info.hms(tokens[hms_idx]) + 1 - new_idx = idx - - return (new_idx, hms) - - # ------------------------------------------------------------------ - # Handling for individual tokens. These are kept as methods instead - # of functions for the sake of customizability via subclassing. - - def _parsems(self, value): - """Parse a I[.F] seconds value into (seconds, microseconds).""" - if "." not in value: - return int(value), 0 - else: - i, f = value.split(".") - return int(i), int(f.ljust(6, "0")[:6]) - - def _to_decimal(self, val): - try: - decimal_value = Decimal(val) - # See GH 662, edge case, infinite value should not be converted - # via `_to_decimal` - if not decimal_value.is_finite(): - raise ValueError("Converted decimal value is infinite or NaN") - except Exception as e: - msg = "Could not convert %s to decimal" % val - six.raise_from(ValueError(msg), e) - else: - return decimal_value - - # ------------------------------------------------------------------ - # Post-Parsing construction of datetime output. These are kept as - # methods instead of functions for the sake of customizability via - # subclassing. - - def _build_tzinfo(self, tzinfos, tzname, tzoffset): - if callable(tzinfos): - tzdata = tzinfos(tzname, tzoffset) - else: - tzdata = tzinfos.get(tzname) - # handle case where tzinfo is paased an options that returns None - # eg tzinfos = {'BRST' : None} - if isinstance(tzdata, datetime.tzinfo) or tzdata is None: - tzinfo = tzdata - elif isinstance(tzdata, text_type): - tzinfo = tz.tzstr(tzdata) - elif isinstance(tzdata, integer_types): - tzinfo = tz.tzoffset(tzname, tzdata) - else: - raise TypeError("Offset must be tzinfo subclass, tz string, " - "or int offset.") - return tzinfo - - def _build_tzaware(self, naive, res, tzinfos): - if (callable(tzinfos) or (tzinfos and res.tzname in tzinfos)): - tzinfo = self._build_tzinfo(tzinfos, res.tzname, res.tzoffset) - aware = naive.replace(tzinfo=tzinfo) - aware = self._assign_tzname(aware, res.tzname) - - elif res.tzname and res.tzname in time.tzname: - aware = naive.replace(tzinfo=tz.tzlocal()) - - # Handle ambiguous local datetime - aware = self._assign_tzname(aware, res.tzname) - - # This is mostly relevant for winter GMT zones parsed in the UK - if (aware.tzname() != res.tzname and - res.tzname in self.info.UTCZONE): - aware = aware.replace(tzinfo=tz.UTC) - - elif res.tzoffset == 0: - aware = naive.replace(tzinfo=tz.UTC) - - elif res.tzoffset: - aware = naive.replace(tzinfo=tz.tzoffset(res.tzname, res.tzoffset)) - - elif not res.tzname and not res.tzoffset: - # i.e. no timezone information was found. - aware = naive - - elif res.tzname: - # tz-like string was parsed but we don't know what to do - # with it - warnings.warn("tzname {tzname} identified but not understood. " - "Pass `tzinfos` argument in order to correctly " - "return a timezone-aware datetime. In a future " - "version, this will raise an " - "exception.".format(tzname=res.tzname), - category=UnknownTimezoneWarning) - aware = naive - - return aware - - def _build_naive(self, res, default): - repl = {} - for attr in ("year", "month", "day", "hour", - "minute", "second", "microsecond"): - value = getattr(res, attr) - if value is not None: - repl[attr] = value - - if 'day' not in repl: - # If the default day exceeds the last day of the month, fall back - # to the end of the month. - cyear = default.year if res.year is None else res.year - cmonth = default.month if res.month is None else res.month - cday = default.day if res.day is None else res.day - - if cday > monthrange(cyear, cmonth)[1]: - repl['day'] = monthrange(cyear, cmonth)[1] - - naive = default.replace(**repl) - - if res.weekday is not None and not res.day: - naive = naive + relativedelta.relativedelta(weekday=res.weekday) - - return naive - - def _assign_tzname(self, dt, tzname): - if dt.tzname() != tzname: - new_dt = tz.enfold(dt, fold=1) - if new_dt.tzname() == tzname: - return new_dt - - return dt - - def _recombine_skipped(self, tokens, skipped_idxs): - """ - >>> tokens = ["foo", " ", "bar", " ", "19June2000", "baz"] - >>> skipped_idxs = [0, 1, 2, 5] - >>> _recombine_skipped(tokens, skipped_idxs) - ["foo bar", "baz"] - """ - skipped_tokens = [] - for i, idx in enumerate(sorted(skipped_idxs)): - if i > 0 and idx - 1 == skipped_idxs[i - 1]: - skipped_tokens[-1] = skipped_tokens[-1] + tokens[idx] - else: - skipped_tokens.append(tokens[idx]) - - return skipped_tokens - - -DEFAULTPARSER = parser() - - -def parse(timestr, parserinfo=None, **kwargs): - """ - - Parse a string in one of the supported formats, using the - ``parserinfo`` parameters. - - :param timestr: - A string containing a date/time stamp. - - :param parserinfo: - A :class:`parserinfo` object containing parameters for the parser. - If ``None``, the default arguments to the :class:`parserinfo` - constructor are used. - - The ``**kwargs`` parameter takes the following keyword arguments: - - :param default: - The default datetime object, if this is a datetime object and not - ``None``, elements specified in ``timestr`` replace elements in the - default object. - - :param ignoretz: - If set ``True``, time zones in parsed strings are ignored and a naive - :class:`datetime` object is returned. - - :param tzinfos: - Additional time zone names / aliases which may be present in the - string. This argument maps time zone names (and optionally offsets - from those time zones) to time zones. This parameter can be a - dictionary with timezone aliases mapping time zone names to time - zones or a function taking two parameters (``tzname`` and - ``tzoffset``) and returning a time zone. - - The timezones to which the names are mapped can be an integer - offset from UTC in seconds or a :class:`tzinfo` object. - - .. doctest:: - :options: +NORMALIZE_WHITESPACE - - >>> from dateutil.parser import parse - >>> from dateutil.tz import gettz - >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} - >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) - >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, - tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) - - This parameter is ignored if ``ignoretz`` is set. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM and - YMD. If set to ``None``, this value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken to - be the year, otherwise the last number is taken to be the year. If - this is set to ``None``, the value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param fuzzy: - Whether to allow fuzzy parsing, allowing for string like "Today is - January 1, 2047 at 8:21:00AM". - - :param fuzzy_with_tokens: - If ``True``, ``fuzzy`` is automatically set to True, and the parser - will return a tuple where the first element is the parsed - :class:`datetime.datetime` datetimestamp and the second element is - a tuple containing the portions of the string which were ignored: - - .. doctest:: - - >>> from dateutil.parser import parse - >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) - (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) - - :return: - Returns a :class:`datetime.datetime` object or, if the - ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the - first element being a :class:`datetime.datetime` object, the second - a tuple containing the fuzzy tokens. - - :raises ParserError: - Raised for invalid or unknown string formats, if the provided - :class:`tzinfo` is not in a valid format, or if an invalid date would - be created. - - :raises OverflowError: - Raised if the parsed date exceeds the largest valid C integer on - your system. - """ - if parserinfo: - return parser(parserinfo).parse(timestr, **kwargs) - else: - return DEFAULTPARSER.parse(timestr, **kwargs) - - -class _tzparser(object): - - class _result(_resultbase): - - __slots__ = ["stdabbr", "stdoffset", "dstabbr", "dstoffset", - "start", "end"] - - class _attr(_resultbase): - __slots__ = ["month", "week", "weekday", - "yday", "jyday", "day", "time"] - - def __repr__(self): - return self._repr("") - - def __init__(self): - _resultbase.__init__(self) - self.start = self._attr() - self.end = self._attr() - - def parse(self, tzstr): - res = self._result() - l = [x for x in re.split(r'([,:.]|[a-zA-Z]+|[0-9]+)',tzstr) if x] - used_idxs = list() - try: - - len_l = len(l) - - i = 0 - while i < len_l: - # BRST+3[BRDT[+2]] - j = i - while j < len_l and not [x for x in l[j] - if x in "0123456789:,-+"]: - j += 1 - if j != i: - if not res.stdabbr: - offattr = "stdoffset" - res.stdabbr = "".join(l[i:j]) - else: - offattr = "dstoffset" - res.dstabbr = "".join(l[i:j]) - - for ii in range(j): - used_idxs.append(ii) - i = j - if (i < len_l and (l[i] in ('+', '-') or l[i][0] in - "0123456789")): - if l[i] in ('+', '-'): - # Yes, that's right. See the TZ variable - # documentation. - signal = (1, -1)[l[i] == '+'] - used_idxs.append(i) - i += 1 - else: - signal = -1 - len_li = len(l[i]) - if len_li == 4: - # -0300 - setattr(res, offattr, (int(l[i][:2]) * 3600 + - int(l[i][2:]) * 60) * signal) - elif i + 1 < len_l and l[i + 1] == ':': - # -03:00 - setattr(res, offattr, - (int(l[i]) * 3600 + - int(l[i + 2]) * 60) * signal) - used_idxs.append(i) - i += 2 - elif len_li <= 2: - # -[0]3 - setattr(res, offattr, - int(l[i][:2]) * 3600 * signal) - else: - return None - used_idxs.append(i) - i += 1 - if res.dstabbr: - break - else: - break - - - if i < len_l: - for j in range(i, len_l): - if l[j] == ';': - l[j] = ',' - - assert l[i] == ',' - - i += 1 - - if i >= len_l: - pass - elif (8 <= l.count(',') <= 9 and - not [y for x in l[i:] if x != ',' - for y in x if y not in "0123456789+-"]): - # GMT0BST,3,0,30,3600,10,0,26,7200[,3600] - for x in (res.start, res.end): - x.month = int(l[i]) - used_idxs.append(i) - i += 2 - if l[i] == '-': - value = int(l[i + 1]) * -1 - used_idxs.append(i) - i += 1 - else: - value = int(l[i]) - used_idxs.append(i) - i += 2 - if value: - x.week = value - x.weekday = (int(l[i]) - 1) % 7 - else: - x.day = int(l[i]) - used_idxs.append(i) - i += 2 - x.time = int(l[i]) - used_idxs.append(i) - i += 2 - if i < len_l: - if l[i] in ('-', '+'): - signal = (-1, 1)[l[i] == "+"] - used_idxs.append(i) - i += 1 - else: - signal = 1 - used_idxs.append(i) - res.dstoffset = (res.stdoffset + int(l[i]) * signal) - - # This was a made-up format that is not in normal use - warn(('Parsed time zone "%s"' % tzstr) + - 'is in a non-standard dateutil-specific format, which ' + - 'is now deprecated; support for parsing this format ' + - 'will be removed in future versions. It is recommended ' + - 'that you switch to a standard format like the GNU ' + - 'TZ variable format.', tz.DeprecatedTzFormatWarning) - elif (l.count(',') == 2 and l[i:].count('/') <= 2 and - not [y for x in l[i:] if x not in (',', '/', 'J', 'M', - '.', '-', ':') - for y in x if y not in "0123456789"]): - for x in (res.start, res.end): - if l[i] == 'J': - # non-leap year day (1 based) - used_idxs.append(i) - i += 1 - x.jyday = int(l[i]) - elif l[i] == 'M': - # month[-.]week[-.]weekday - used_idxs.append(i) - i += 1 - x.month = int(l[i]) - used_idxs.append(i) - i += 1 - assert l[i] in ('-', '.') - used_idxs.append(i) - i += 1 - x.week = int(l[i]) - if x.week == 5: - x.week = -1 - used_idxs.append(i) - i += 1 - assert l[i] in ('-', '.') - used_idxs.append(i) - i += 1 - x.weekday = (int(l[i]) - 1) % 7 - else: - # year day (zero based) - x.yday = int(l[i]) + 1 - - used_idxs.append(i) - i += 1 - - if i < len_l and l[i] == '/': - used_idxs.append(i) - i += 1 - # start time - len_li = len(l[i]) - if len_li == 4: - # -0300 - x.time = (int(l[i][:2]) * 3600 + - int(l[i][2:]) * 60) - elif i + 1 < len_l and l[i + 1] == ':': - # -03:00 - x.time = int(l[i]) * 3600 + int(l[i + 2]) * 60 - used_idxs.append(i) - i += 2 - if i + 1 < len_l and l[i + 1] == ':': - used_idxs.append(i) - i += 2 - x.time += int(l[i]) - elif len_li <= 2: - # -[0]3 - x.time = (int(l[i][:2]) * 3600) - else: - return None - used_idxs.append(i) - i += 1 - - assert i == len_l or l[i] == ',' - - i += 1 - - assert i >= len_l - - except (IndexError, ValueError, AssertionError): - return None - - unused_idxs = set(range(len_l)).difference(used_idxs) - res.any_unused_tokens = not {l[n] for n in unused_idxs}.issubset({",",":"}) - return res - - -DEFAULTTZPARSER = _tzparser() - - -def _parsetz(tzstr): - return DEFAULTTZPARSER.parse(tzstr) - - -class ParserError(ValueError): - """Exception subclass used for any failure to parse a datetime string. - - This is a subclass of :py:exc:`ValueError`, and should be raised any time - earlier versions of ``dateutil`` would have raised ``ValueError``. - - .. versionadded:: 2.8.1 - """ - def __str__(self): - try: - return self.args[0] % self.args[1:] - except (TypeError, IndexError): - return super(ParserError, self).__str__() - - def __repr__(self): - args = ", ".join("'%s'" % arg for arg in self.args) - return "%s(%s)" % (self.__class__.__name__, args) - - -class UnknownTimezoneWarning(RuntimeWarning): - """Raised when the parser finds a timezone it cannot parse into a tzinfo. - - .. versionadded:: 2.7.0 - """ -# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.10/site-packages/dateutil/parser/isoparser.py b/venv/lib/python3.10/site-packages/dateutil/parser/isoparser.py deleted file mode 100644 index 7060087..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/parser/isoparser.py +++ /dev/null @@ -1,416 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers a parser for ISO-8601 strings - -It is intended to support all valid date, time and datetime formats per the -ISO-8601 specification. - -..versionadded:: 2.7.0 -""" -from datetime import datetime, timedelta, time, date -import calendar -from dateutil import tz - -from functools import wraps - -import re -import six - -__all__ = ["isoparse", "isoparser"] - - -def _takes_ascii(f): - @wraps(f) - def func(self, str_in, *args, **kwargs): - # If it's a stream, read the whole thing - str_in = getattr(str_in, 'read', lambda: str_in)() - - # If it's unicode, turn it into bytes, since ISO-8601 only covers ASCII - if isinstance(str_in, six.text_type): - # ASCII is the same in UTF-8 - try: - str_in = str_in.encode('ascii') - except UnicodeEncodeError as e: - msg = 'ISO-8601 strings should contain only ASCII characters' - six.raise_from(ValueError(msg), e) - - return f(self, str_in, *args, **kwargs) - - return func - - -class isoparser(object): - def __init__(self, sep=None): - """ - :param sep: - A single character that separates date and time portions. If - ``None``, the parser will accept any single character. - For strict ISO-8601 adherence, pass ``'T'``. - """ - if sep is not None: - if (len(sep) != 1 or ord(sep) >= 128 or sep in '0123456789'): - raise ValueError('Separator must be a single, non-numeric ' + - 'ASCII character') - - sep = sep.encode('ascii') - - self._sep = sep - - @_takes_ascii - def isoparse(self, dt_str): - """ - Parse an ISO-8601 datetime string into a :class:`datetime.datetime`. - - An ISO-8601 datetime string consists of a date portion, followed - optionally by a time portion - the date and time portions are separated - by a single character separator, which is ``T`` in the official - standard. Incomplete date formats (such as ``YYYY-MM``) may *not* be - combined with a time portion. - - Supported date formats are: - - Common: - - - ``YYYY`` - - ``YYYY-MM`` - - ``YYYY-MM-DD`` or ``YYYYMMDD`` - - Uncommon: - - - ``YYYY-Www`` or ``YYYYWww`` - ISO week (day defaults to 0) - - ``YYYY-Www-D`` or ``YYYYWwwD`` - ISO week and day - - The ISO week and day numbering follows the same logic as - :func:`datetime.date.isocalendar`. - - Supported time formats are: - - - ``hh`` - - ``hh:mm`` or ``hhmm`` - - ``hh:mm:ss`` or ``hhmmss`` - - ``hh:mm:ss.ssssss`` (Up to 6 sub-second digits) - - Midnight is a special case for `hh`, as the standard supports both - 00:00 and 24:00 as a representation. The decimal separator can be - either a dot or a comma. - - - .. caution:: - - Support for fractional components other than seconds is part of the - ISO-8601 standard, but is not currently implemented in this parser. - - Supported time zone offset formats are: - - - `Z` (UTC) - - `±HH:MM` - - `±HHMM` - - `±HH` - - Offsets will be represented as :class:`dateutil.tz.tzoffset` objects, - with the exception of UTC, which will be represented as - :class:`dateutil.tz.tzutc`. Time zone offsets equivalent to UTC (such - as `+00:00`) will also be represented as :class:`dateutil.tz.tzutc`. - - :param dt_str: - A string or stream containing only an ISO-8601 datetime string - - :return: - Returns a :class:`datetime.datetime` representing the string. - Unspecified components default to their lowest value. - - .. warning:: - - As of version 2.7.0, the strictness of the parser should not be - considered a stable part of the contract. Any valid ISO-8601 string - that parses correctly with the default settings will continue to - parse correctly in future versions, but invalid strings that - currently fail (e.g. ``2017-01-01T00:00+00:00:00``) are not - guaranteed to continue failing in future versions if they encode - a valid date. - - .. versionadded:: 2.7.0 - """ - components, pos = self._parse_isodate(dt_str) - - if len(dt_str) > pos: - if self._sep is None or dt_str[pos:pos + 1] == self._sep: - components += self._parse_isotime(dt_str[pos + 1:]) - else: - raise ValueError('String contains unknown ISO components') - - if len(components) > 3 and components[3] == 24: - components[3] = 0 - return datetime(*components) + timedelta(days=1) - - return datetime(*components) - - @_takes_ascii - def parse_isodate(self, datestr): - """ - Parse the date portion of an ISO string. - - :param datestr: - The string portion of an ISO string, without a separator - - :return: - Returns a :class:`datetime.date` object - """ - components, pos = self._parse_isodate(datestr) - if pos < len(datestr): - raise ValueError('String contains unknown ISO ' + - 'components: {!r}'.format(datestr.decode('ascii'))) - return date(*components) - - @_takes_ascii - def parse_isotime(self, timestr): - """ - Parse the time portion of an ISO string. - - :param timestr: - The time portion of an ISO string, without a separator - - :return: - Returns a :class:`datetime.time` object - """ - components = self._parse_isotime(timestr) - if components[0] == 24: - components[0] = 0 - return time(*components) - - @_takes_ascii - def parse_tzstr(self, tzstr, zero_as_utc=True): - """ - Parse a valid ISO time zone string. - - See :func:`isoparser.isoparse` for details on supported formats. - - :param tzstr: - A string representing an ISO time zone offset - - :param zero_as_utc: - Whether to return :class:`dateutil.tz.tzutc` for zero-offset zones - - :return: - Returns :class:`dateutil.tz.tzoffset` for offsets and - :class:`dateutil.tz.tzutc` for ``Z`` and (if ``zero_as_utc`` is - specified) offsets equivalent to UTC. - """ - return self._parse_tzstr(tzstr, zero_as_utc=zero_as_utc) - - # Constants - _DATE_SEP = b'-' - _TIME_SEP = b':' - _FRACTION_REGEX = re.compile(b'[\\.,]([0-9]+)') - - def _parse_isodate(self, dt_str): - try: - return self._parse_isodate_common(dt_str) - except ValueError: - return self._parse_isodate_uncommon(dt_str) - - def _parse_isodate_common(self, dt_str): - len_str = len(dt_str) - components = [1, 1, 1] - - if len_str < 4: - raise ValueError('ISO string too short') - - # Year - components[0] = int(dt_str[0:4]) - pos = 4 - if pos >= len_str: - return components, pos - - has_sep = dt_str[pos:pos + 1] == self._DATE_SEP - if has_sep: - pos += 1 - - # Month - if len_str - pos < 2: - raise ValueError('Invalid common month') - - components[1] = int(dt_str[pos:pos + 2]) - pos += 2 - - if pos >= len_str: - if has_sep: - return components, pos - else: - raise ValueError('Invalid ISO format') - - if has_sep: - if dt_str[pos:pos + 1] != self._DATE_SEP: - raise ValueError('Invalid separator in ISO string') - pos += 1 - - # Day - if len_str - pos < 2: - raise ValueError('Invalid common day') - components[2] = int(dt_str[pos:pos + 2]) - return components, pos + 2 - - def _parse_isodate_uncommon(self, dt_str): - if len(dt_str) < 4: - raise ValueError('ISO string too short') - - # All ISO formats start with the year - year = int(dt_str[0:4]) - - has_sep = dt_str[4:5] == self._DATE_SEP - - pos = 4 + has_sep # Skip '-' if it's there - if dt_str[pos:pos + 1] == b'W': - # YYYY-?Www-?D? - pos += 1 - weekno = int(dt_str[pos:pos + 2]) - pos += 2 - - dayno = 1 - if len(dt_str) > pos: - if (dt_str[pos:pos + 1] == self._DATE_SEP) != has_sep: - raise ValueError('Inconsistent use of dash separator') - - pos += has_sep - - dayno = int(dt_str[pos:pos + 1]) - pos += 1 - - base_date = self._calculate_weekdate(year, weekno, dayno) - else: - # YYYYDDD or YYYY-DDD - if len(dt_str) - pos < 3: - raise ValueError('Invalid ordinal day') - - ordinal_day = int(dt_str[pos:pos + 3]) - pos += 3 - - if ordinal_day < 1 or ordinal_day > (365 + calendar.isleap(year)): - raise ValueError('Invalid ordinal day' + - ' {} for year {}'.format(ordinal_day, year)) - - base_date = date(year, 1, 1) + timedelta(days=ordinal_day - 1) - - components = [base_date.year, base_date.month, base_date.day] - return components, pos - - def _calculate_weekdate(self, year, week, day): - """ - Calculate the day of corresponding to the ISO year-week-day calendar. - - This function is effectively the inverse of - :func:`datetime.date.isocalendar`. - - :param year: - The year in the ISO calendar - - :param week: - The week in the ISO calendar - range is [1, 53] - - :param day: - The day in the ISO calendar - range is [1 (MON), 7 (SUN)] - - :return: - Returns a :class:`datetime.date` - """ - if not 0 < week < 54: - raise ValueError('Invalid week: {}'.format(week)) - - if not 0 < day < 8: # Range is 1-7 - raise ValueError('Invalid weekday: {}'.format(day)) - - # Get week 1 for the specific year: - jan_4 = date(year, 1, 4) # Week 1 always has January 4th in it - week_1 = jan_4 - timedelta(days=jan_4.isocalendar()[2] - 1) - - # Now add the specific number of weeks and days to get what we want - week_offset = (week - 1) * 7 + (day - 1) - return week_1 + timedelta(days=week_offset) - - def _parse_isotime(self, timestr): - len_str = len(timestr) - components = [0, 0, 0, 0, None] - pos = 0 - comp = -1 - - if len_str < 2: - raise ValueError('ISO time too short') - - has_sep = False - - while pos < len_str and comp < 5: - comp += 1 - - if timestr[pos:pos + 1] in b'-+Zz': - # Detect time zone boundary - components[-1] = self._parse_tzstr(timestr[pos:]) - pos = len_str - break - - if comp == 1 and timestr[pos:pos+1] == self._TIME_SEP: - has_sep = True - pos += 1 - elif comp == 2 and has_sep: - if timestr[pos:pos+1] != self._TIME_SEP: - raise ValueError('Inconsistent use of colon separator') - pos += 1 - - if comp < 3: - # Hour, minute, second - components[comp] = int(timestr[pos:pos + 2]) - pos += 2 - - if comp == 3: - # Fraction of a second - frac = self._FRACTION_REGEX.match(timestr[pos:]) - if not frac: - continue - - us_str = frac.group(1)[:6] # Truncate to microseconds - components[comp] = int(us_str) * 10**(6 - len(us_str)) - pos += len(frac.group()) - - if pos < len_str: - raise ValueError('Unused components in ISO string') - - if components[0] == 24: - # Standard supports 00:00 and 24:00 as representations of midnight - if any(component != 0 for component in components[1:4]): - raise ValueError('Hour may only be 24 at 24:00:00.000') - - return components - - def _parse_tzstr(self, tzstr, zero_as_utc=True): - if tzstr == b'Z' or tzstr == b'z': - return tz.UTC - - if len(tzstr) not in {3, 5, 6}: - raise ValueError('Time zone offset must be 1, 3, 5 or 6 characters') - - if tzstr[0:1] == b'-': - mult = -1 - elif tzstr[0:1] == b'+': - mult = 1 - else: - raise ValueError('Time zone offset requires sign') - - hours = int(tzstr[1:3]) - if len(tzstr) == 3: - minutes = 0 - else: - minutes = int(tzstr[(4 if tzstr[3:4] == self._TIME_SEP else 3):]) - - if zero_as_utc and hours == 0 and minutes == 0: - return tz.UTC - else: - if minutes > 59: - raise ValueError('Invalid minutes in time zone offset') - - if hours > 23: - raise ValueError('Invalid hours in time zone offset') - - return tz.tzoffset(None, mult * (hours * 60 + minutes) * 60) - - -DEFAULT_ISOPARSER = isoparser() -isoparse = DEFAULT_ISOPARSER.isoparse diff --git a/venv/lib/python3.10/site-packages/dateutil/relativedelta.py b/venv/lib/python3.10/site-packages/dateutil/relativedelta.py deleted file mode 100644 index cd323a5..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/relativedelta.py +++ /dev/null @@ -1,599 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -import calendar - -import operator -from math import copysign - -from six import integer_types -from warnings import warn - -from ._common import weekday - -MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) - -__all__ = ["relativedelta", "MO", "TU", "WE", "TH", "FR", "SA", "SU"] - - -class relativedelta(object): - """ - The relativedelta type is designed to be applied to an existing datetime and - can replace specific components of that datetime, or represents an interval - of time. - - It is based on the specification of the excellent work done by M.-A. Lemburg - in his - `mx.DateTime `_ extension. - However, notice that this type does *NOT* implement the same algorithm as - his work. Do *NOT* expect it to behave like mx.DateTime's counterpart. - - There are two different ways to build a relativedelta instance. The - first one is passing it two date/datetime classes:: - - relativedelta(datetime1, datetime2) - - The second one is passing it any number of the following keyword arguments:: - - relativedelta(arg1=x,arg2=y,arg3=z...) - - year, month, day, hour, minute, second, microsecond: - Absolute information (argument is singular); adding or subtracting a - relativedelta with absolute information does not perform an arithmetic - operation, but rather REPLACES the corresponding value in the - original datetime with the value(s) in relativedelta. - - years, months, weeks, days, hours, minutes, seconds, microseconds: - Relative information, may be negative (argument is plural); adding - or subtracting a relativedelta with relative information performs - the corresponding arithmetic operation on the original datetime value - with the information in the relativedelta. - - weekday: - One of the weekday instances (MO, TU, etc) available in the - relativedelta module. These instances may receive a parameter N, - specifying the Nth weekday, which could be positive or negative - (like MO(+1) or MO(-2)). Not specifying it is the same as specifying - +1. You can also use an integer, where 0=MO. This argument is always - relative e.g. if the calculated date is already Monday, using MO(1) - or MO(-1) won't change the day. To effectively make it absolute, use - it in combination with the day argument (e.g. day=1, MO(1) for first - Monday of the month). - - leapdays: - Will add given days to the date found, if year is a leap - year, and the date found is post 28 of february. - - yearday, nlyearday: - Set the yearday or the non-leap year day (jump leap days). - These are converted to day/month/leapdays information. - - There are relative and absolute forms of the keyword - arguments. The plural is relative, and the singular is - absolute. For each argument in the order below, the absolute form - is applied first (by setting each attribute to that value) and - then the relative form (by adding the value to the attribute). - - The order of attributes considered when this relativedelta is - added to a datetime is: - - 1. Year - 2. Month - 3. Day - 4. Hours - 5. Minutes - 6. Seconds - 7. Microseconds - - Finally, weekday is applied, using the rule described above. - - For example - - >>> from datetime import datetime - >>> from dateutil.relativedelta import relativedelta, MO - >>> dt = datetime(2018, 4, 9, 13, 37, 0) - >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) - >>> dt + delta - datetime.datetime(2018, 4, 2, 14, 37) - - First, the day is set to 1 (the first of the month), then 25 hours - are added, to get to the 2nd day and 14th hour, finally the - weekday is applied, but since the 2nd is already a Monday there is - no effect. - - """ - - def __init__(self, dt1=None, dt2=None, - years=0, months=0, days=0, leapdays=0, weeks=0, - hours=0, minutes=0, seconds=0, microseconds=0, - year=None, month=None, day=None, weekday=None, - yearday=None, nlyearday=None, - hour=None, minute=None, second=None, microsecond=None): - - if dt1 and dt2: - # datetime is a subclass of date. So both must be date - if not (isinstance(dt1, datetime.date) and - isinstance(dt2, datetime.date)): - raise TypeError("relativedelta only diffs datetime/date") - - # We allow two dates, or two datetimes, so we coerce them to be - # of the same type - if (isinstance(dt1, datetime.datetime) != - isinstance(dt2, datetime.datetime)): - if not isinstance(dt1, datetime.datetime): - dt1 = datetime.datetime.fromordinal(dt1.toordinal()) - elif not isinstance(dt2, datetime.datetime): - dt2 = datetime.datetime.fromordinal(dt2.toordinal()) - - self.years = 0 - self.months = 0 - self.days = 0 - self.leapdays = 0 - self.hours = 0 - self.minutes = 0 - self.seconds = 0 - self.microseconds = 0 - self.year = None - self.month = None - self.day = None - self.weekday = None - self.hour = None - self.minute = None - self.second = None - self.microsecond = None - self._has_time = 0 - - # Get year / month delta between the two - months = (dt1.year - dt2.year) * 12 + (dt1.month - dt2.month) - self._set_months(months) - - # Remove the year/month delta so the timedelta is just well-defined - # time units (seconds, days and microseconds) - dtm = self.__radd__(dt2) - - # If we've overshot our target, make an adjustment - if dt1 < dt2: - compare = operator.gt - increment = 1 - else: - compare = operator.lt - increment = -1 - - while compare(dt1, dtm): - months += increment - self._set_months(months) - dtm = self.__radd__(dt2) - - # Get the timedelta between the "months-adjusted" date and dt1 - delta = dt1 - dtm - self.seconds = delta.seconds + delta.days * 86400 - self.microseconds = delta.microseconds - else: - # Check for non-integer values in integer-only quantities - if any(x is not None and x != int(x) for x in (years, months)): - raise ValueError("Non-integer years and months are " - "ambiguous and not currently supported.") - - # Relative information - self.years = int(years) - self.months = int(months) - self.days = days + weeks * 7 - self.leapdays = leapdays - self.hours = hours - self.minutes = minutes - self.seconds = seconds - self.microseconds = microseconds - - # Absolute information - self.year = year - self.month = month - self.day = day - self.hour = hour - self.minute = minute - self.second = second - self.microsecond = microsecond - - if any(x is not None and int(x) != x - for x in (year, month, day, hour, - minute, second, microsecond)): - # For now we'll deprecate floats - later it'll be an error. - warn("Non-integer value passed as absolute information. " + - "This is not a well-defined condition and will raise " + - "errors in future versions.", DeprecationWarning) - - if isinstance(weekday, integer_types): - self.weekday = weekdays[weekday] - else: - self.weekday = weekday - - yday = 0 - if nlyearday: - yday = nlyearday - elif yearday: - yday = yearday - if yearday > 59: - self.leapdays = -1 - if yday: - ydayidx = [31, 59, 90, 120, 151, 181, 212, - 243, 273, 304, 334, 366] - for idx, ydays in enumerate(ydayidx): - if yday <= ydays: - self.month = idx+1 - if idx == 0: - self.day = yday - else: - self.day = yday-ydayidx[idx-1] - break - else: - raise ValueError("invalid year day (%d)" % yday) - - self._fix() - - def _fix(self): - if abs(self.microseconds) > 999999: - s = _sign(self.microseconds) - div, mod = divmod(self.microseconds * s, 1000000) - self.microseconds = mod * s - self.seconds += div * s - if abs(self.seconds) > 59: - s = _sign(self.seconds) - div, mod = divmod(self.seconds * s, 60) - self.seconds = mod * s - self.minutes += div * s - if abs(self.minutes) > 59: - s = _sign(self.minutes) - div, mod = divmod(self.minutes * s, 60) - self.minutes = mod * s - self.hours += div * s - if abs(self.hours) > 23: - s = _sign(self.hours) - div, mod = divmod(self.hours * s, 24) - self.hours = mod * s - self.days += div * s - if abs(self.months) > 11: - s = _sign(self.months) - div, mod = divmod(self.months * s, 12) - self.months = mod * s - self.years += div * s - if (self.hours or self.minutes or self.seconds or self.microseconds - or self.hour is not None or self.minute is not None or - self.second is not None or self.microsecond is not None): - self._has_time = 1 - else: - self._has_time = 0 - - @property - def weeks(self): - return int(self.days / 7.0) - - @weeks.setter - def weeks(self, value): - self.days = self.days - (self.weeks * 7) + value * 7 - - def _set_months(self, months): - self.months = months - if abs(self.months) > 11: - s = _sign(self.months) - div, mod = divmod(self.months * s, 12) - self.months = mod * s - self.years = div * s - else: - self.years = 0 - - def normalized(self): - """ - Return a version of this object represented entirely using integer - values for the relative attributes. - - >>> relativedelta(days=1.5, hours=2).normalized() - relativedelta(days=+1, hours=+14) - - :return: - Returns a :class:`dateutil.relativedelta.relativedelta` object. - """ - # Cascade remainders down (rounding each to roughly nearest microsecond) - days = int(self.days) - - hours_f = round(self.hours + 24 * (self.days - days), 11) - hours = int(hours_f) - - minutes_f = round(self.minutes + 60 * (hours_f - hours), 10) - minutes = int(minutes_f) - - seconds_f = round(self.seconds + 60 * (minutes_f - minutes), 8) - seconds = int(seconds_f) - - microseconds = round(self.microseconds + 1e6 * (seconds_f - seconds)) - - # Constructor carries overflow back up with call to _fix() - return self.__class__(years=self.years, months=self.months, - days=days, hours=hours, minutes=minutes, - seconds=seconds, microseconds=microseconds, - leapdays=self.leapdays, year=self.year, - month=self.month, day=self.day, - weekday=self.weekday, hour=self.hour, - minute=self.minute, second=self.second, - microsecond=self.microsecond) - - def __add__(self, other): - if isinstance(other, relativedelta): - return self.__class__(years=other.years + self.years, - months=other.months + self.months, - days=other.days + self.days, - hours=other.hours + self.hours, - minutes=other.minutes + self.minutes, - seconds=other.seconds + self.seconds, - microseconds=(other.microseconds + - self.microseconds), - leapdays=other.leapdays or self.leapdays, - year=(other.year if other.year is not None - else self.year), - month=(other.month if other.month is not None - else self.month), - day=(other.day if other.day is not None - else self.day), - weekday=(other.weekday if other.weekday is not None - else self.weekday), - hour=(other.hour if other.hour is not None - else self.hour), - minute=(other.minute if other.minute is not None - else self.minute), - second=(other.second if other.second is not None - else self.second), - microsecond=(other.microsecond if other.microsecond - is not None else - self.microsecond)) - if isinstance(other, datetime.timedelta): - return self.__class__(years=self.years, - months=self.months, - days=self.days + other.days, - hours=self.hours, - minutes=self.minutes, - seconds=self.seconds + other.seconds, - microseconds=self.microseconds + other.microseconds, - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - if not isinstance(other, datetime.date): - return NotImplemented - elif self._has_time and not isinstance(other, datetime.datetime): - other = datetime.datetime.fromordinal(other.toordinal()) - year = (self.year or other.year)+self.years - month = self.month or other.month - if self.months: - assert 1 <= abs(self.months) <= 12 - month += self.months - if month > 12: - year += 1 - month -= 12 - elif month < 1: - year -= 1 - month += 12 - day = min(calendar.monthrange(year, month)[1], - self.day or other.day) - repl = {"year": year, "month": month, "day": day} - for attr in ["hour", "minute", "second", "microsecond"]: - value = getattr(self, attr) - if value is not None: - repl[attr] = value - days = self.days - if self.leapdays and month > 2 and calendar.isleap(year): - days += self.leapdays - ret = (other.replace(**repl) - + datetime.timedelta(days=days, - hours=self.hours, - minutes=self.minutes, - seconds=self.seconds, - microseconds=self.microseconds)) - if self.weekday: - weekday, nth = self.weekday.weekday, self.weekday.n or 1 - jumpdays = (abs(nth) - 1) * 7 - if nth > 0: - jumpdays += (7 - ret.weekday() + weekday) % 7 - else: - jumpdays += (ret.weekday() - weekday) % 7 - jumpdays *= -1 - ret += datetime.timedelta(days=jumpdays) - return ret - - def __radd__(self, other): - return self.__add__(other) - - def __rsub__(self, other): - return self.__neg__().__radd__(other) - - def __sub__(self, other): - if not isinstance(other, relativedelta): - return NotImplemented # In case the other object defines __rsub__ - return self.__class__(years=self.years - other.years, - months=self.months - other.months, - days=self.days - other.days, - hours=self.hours - other.hours, - minutes=self.minutes - other.minutes, - seconds=self.seconds - other.seconds, - microseconds=self.microseconds - other.microseconds, - leapdays=self.leapdays or other.leapdays, - year=(self.year if self.year is not None - else other.year), - month=(self.month if self.month is not None else - other.month), - day=(self.day if self.day is not None else - other.day), - weekday=(self.weekday if self.weekday is not None else - other.weekday), - hour=(self.hour if self.hour is not None else - other.hour), - minute=(self.minute if self.minute is not None else - other.minute), - second=(self.second if self.second is not None else - other.second), - microsecond=(self.microsecond if self.microsecond - is not None else - other.microsecond)) - - def __abs__(self): - return self.__class__(years=abs(self.years), - months=abs(self.months), - days=abs(self.days), - hours=abs(self.hours), - minutes=abs(self.minutes), - seconds=abs(self.seconds), - microseconds=abs(self.microseconds), - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - - def __neg__(self): - return self.__class__(years=-self.years, - months=-self.months, - days=-self.days, - hours=-self.hours, - minutes=-self.minutes, - seconds=-self.seconds, - microseconds=-self.microseconds, - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - - def __bool__(self): - return not (not self.years and - not self.months and - not self.days and - not self.hours and - not self.minutes and - not self.seconds and - not self.microseconds and - not self.leapdays and - self.year is None and - self.month is None and - self.day is None and - self.weekday is None and - self.hour is None and - self.minute is None and - self.second is None and - self.microsecond is None) - # Compatibility with Python 2.x - __nonzero__ = __bool__ - - def __mul__(self, other): - try: - f = float(other) - except TypeError: - return NotImplemented - - return self.__class__(years=int(self.years * f), - months=int(self.months * f), - days=int(self.days * f), - hours=int(self.hours * f), - minutes=int(self.minutes * f), - seconds=int(self.seconds * f), - microseconds=int(self.microseconds * f), - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - - __rmul__ = __mul__ - - def __eq__(self, other): - if not isinstance(other, relativedelta): - return NotImplemented - if self.weekday or other.weekday: - if not self.weekday or not other.weekday: - return False - if self.weekday.weekday != other.weekday.weekday: - return False - n1, n2 = self.weekday.n, other.weekday.n - if n1 != n2 and not ((not n1 or n1 == 1) and (not n2 or n2 == 1)): - return False - return (self.years == other.years and - self.months == other.months and - self.days == other.days and - self.hours == other.hours and - self.minutes == other.minutes and - self.seconds == other.seconds and - self.microseconds == other.microseconds and - self.leapdays == other.leapdays and - self.year == other.year and - self.month == other.month and - self.day == other.day and - self.hour == other.hour and - self.minute == other.minute and - self.second == other.second and - self.microsecond == other.microsecond) - - def __hash__(self): - return hash(( - self.weekday, - self.years, - self.months, - self.days, - self.hours, - self.minutes, - self.seconds, - self.microseconds, - self.leapdays, - self.year, - self.month, - self.day, - self.hour, - self.minute, - self.second, - self.microsecond, - )) - - def __ne__(self, other): - return not self.__eq__(other) - - def __div__(self, other): - try: - reciprocal = 1 / float(other) - except TypeError: - return NotImplemented - - return self.__mul__(reciprocal) - - __truediv__ = __div__ - - def __repr__(self): - l = [] - for attr in ["years", "months", "days", "leapdays", - "hours", "minutes", "seconds", "microseconds"]: - value = getattr(self, attr) - if value: - l.append("{attr}={value:+g}".format(attr=attr, value=value)) - for attr in ["year", "month", "day", "weekday", - "hour", "minute", "second", "microsecond"]: - value = getattr(self, attr) - if value is not None: - l.append("{attr}={value}".format(attr=attr, value=repr(value))) - return "{classname}({attrs})".format(classname=self.__class__.__name__, - attrs=", ".join(l)) - - -def _sign(x): - return int(copysign(1, x)) - -# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.10/site-packages/dateutil/rrule.py b/venv/lib/python3.10/site-packages/dateutil/rrule.py deleted file mode 100644 index 571a0d2..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/rrule.py +++ /dev/null @@ -1,1737 +0,0 @@ -# -*- coding: utf-8 -*- -""" -The rrule module offers a small, complete, and very fast, implementation of -the recurrence rules documented in the -`iCalendar RFC `_, -including support for caching of results. -""" -import calendar -import datetime -import heapq -import itertools -import re -import sys -from functools import wraps -# For warning about deprecation of until and count -from warnings import warn - -from six import advance_iterator, integer_types - -from six.moves import _thread, range - -from ._common import weekday as weekdaybase - -try: - from math import gcd -except ImportError: - from fractions import gcd - -__all__ = ["rrule", "rruleset", "rrulestr", - "YEARLY", "MONTHLY", "WEEKLY", "DAILY", - "HOURLY", "MINUTELY", "SECONDLY", - "MO", "TU", "WE", "TH", "FR", "SA", "SU"] - -# Every mask is 7 days longer to handle cross-year weekly periods. -M366MASK = tuple([1]*31+[2]*29+[3]*31+[4]*30+[5]*31+[6]*30 + - [7]*31+[8]*31+[9]*30+[10]*31+[11]*30+[12]*31+[1]*7) -M365MASK = list(M366MASK) -M29, M30, M31 = list(range(1, 30)), list(range(1, 31)), list(range(1, 32)) -MDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) -MDAY365MASK = list(MDAY366MASK) -M29, M30, M31 = list(range(-29, 0)), list(range(-30, 0)), list(range(-31, 0)) -NMDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) -NMDAY365MASK = list(NMDAY366MASK) -M366RANGE = (0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366) -M365RANGE = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) -WDAYMASK = [0, 1, 2, 3, 4, 5, 6]*55 -del M29, M30, M31, M365MASK[59], MDAY365MASK[59], NMDAY365MASK[31] -MDAY365MASK = tuple(MDAY365MASK) -M365MASK = tuple(M365MASK) - -FREQNAMES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY'] - -(YEARLY, - MONTHLY, - WEEKLY, - DAILY, - HOURLY, - MINUTELY, - SECONDLY) = list(range(7)) - -# Imported on demand. -easter = None -parser = None - - -class weekday(weekdaybase): - """ - This version of weekday does not allow n = 0. - """ - def __init__(self, wkday, n=None): - if n == 0: - raise ValueError("Can't create weekday with n==0") - - super(weekday, self).__init__(wkday, n) - - -MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) - - -def _invalidates_cache(f): - """ - Decorator for rruleset methods which may invalidate the - cached length. - """ - @wraps(f) - def inner_func(self, *args, **kwargs): - rv = f(self, *args, **kwargs) - self._invalidate_cache() - return rv - - return inner_func - - -class rrulebase(object): - def __init__(self, cache=False): - if cache: - self._cache = [] - self._cache_lock = _thread.allocate_lock() - self._invalidate_cache() - else: - self._cache = None - self._cache_complete = False - self._len = None - - def __iter__(self): - if self._cache_complete: - return iter(self._cache) - elif self._cache is None: - return self._iter() - else: - return self._iter_cached() - - def _invalidate_cache(self): - if self._cache is not None: - self._cache = [] - self._cache_complete = False - self._cache_gen = self._iter() - - if self._cache_lock.locked(): - self._cache_lock.release() - - self._len = None - - def _iter_cached(self): - i = 0 - gen = self._cache_gen - cache = self._cache - acquire = self._cache_lock.acquire - release = self._cache_lock.release - while gen: - if i == len(cache): - acquire() - if self._cache_complete: - break - try: - for j in range(10): - cache.append(advance_iterator(gen)) - except StopIteration: - self._cache_gen = gen = None - self._cache_complete = True - break - release() - yield cache[i] - i += 1 - while i < self._len: - yield cache[i] - i += 1 - - def __getitem__(self, item): - if self._cache_complete: - return self._cache[item] - elif isinstance(item, slice): - if item.step and item.step < 0: - return list(iter(self))[item] - else: - return list(itertools.islice(self, - item.start or 0, - item.stop or sys.maxsize, - item.step or 1)) - elif item >= 0: - gen = iter(self) - try: - for i in range(item+1): - res = advance_iterator(gen) - except StopIteration: - raise IndexError - return res - else: - return list(iter(self))[item] - - def __contains__(self, item): - if self._cache_complete: - return item in self._cache - else: - for i in self: - if i == item: - return True - elif i > item: - return False - return False - - # __len__() introduces a large performance penalty. - def count(self): - """ Returns the number of recurrences in this set. It will have go - through the whole recurrence, if this hasn't been done before. """ - if self._len is None: - for x in self: - pass - return self._len - - def before(self, dt, inc=False): - """ Returns the last recurrence before the given datetime instance. The - inc keyword defines what happens if dt is an occurrence. With - inc=True, if dt itself is an occurrence, it will be returned. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - last = None - if inc: - for i in gen: - if i > dt: - break - last = i - else: - for i in gen: - if i >= dt: - break - last = i - return last - - def after(self, dt, inc=False): - """ Returns the first recurrence after the given datetime instance. The - inc keyword defines what happens if dt is an occurrence. With - inc=True, if dt itself is an occurrence, it will be returned. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - if inc: - for i in gen: - if i >= dt: - return i - else: - for i in gen: - if i > dt: - return i - return None - - def xafter(self, dt, count=None, inc=False): - """ - Generator which yields up to `count` recurrences after the given - datetime instance, equivalent to `after`. - - :param dt: - The datetime at which to start generating recurrences. - - :param count: - The maximum number of recurrences to generate. If `None` (default), - dates are generated until the recurrence rule is exhausted. - - :param inc: - If `dt` is an instance of the rule and `inc` is `True`, it is - included in the output. - - :yields: Yields a sequence of `datetime` objects. - """ - - if self._cache_complete: - gen = self._cache - else: - gen = self - - # Select the comparison function - if inc: - comp = lambda dc, dtc: dc >= dtc - else: - comp = lambda dc, dtc: dc > dtc - - # Generate dates - n = 0 - for d in gen: - if comp(d, dt): - if count is not None: - n += 1 - if n > count: - break - - yield d - - def between(self, after, before, inc=False, count=1): - """ Returns all the occurrences of the rrule between after and before. - The inc keyword defines what happens if after and/or before are - themselves occurrences. With inc=True, they will be included in the - list, if they are found in the recurrence set. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - started = False - l = [] - if inc: - for i in gen: - if i > before: - break - elif not started: - if i >= after: - started = True - l.append(i) - else: - l.append(i) - else: - for i in gen: - if i >= before: - break - elif not started: - if i > after: - started = True - l.append(i) - else: - l.append(i) - return l - - -class rrule(rrulebase): - """ - That's the base of the rrule operation. It accepts all the keywords - defined in the RFC as its constructor parameters (except byday, - which was renamed to byweekday) and more. The constructor prototype is:: - - rrule(freq) - - Where freq must be one of YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, - or SECONDLY. - - .. note:: - Per RFC section 3.3.10, recurrence instances falling on invalid dates - and times are ignored rather than coerced: - - Recurrence rules may generate recurrence instances with an invalid - date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM - on a day where the local time is moved forward by an hour at 1:00 - AM). Such recurrence instances MUST be ignored and MUST NOT be - counted as part of the recurrence set. - - This can lead to possibly surprising behavior when, for example, the - start date occurs at the end of the month: - - >>> from dateutil.rrule import rrule, MONTHLY - >>> from datetime import datetime - >>> start_date = datetime(2014, 12, 31) - >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) - ... # doctest: +NORMALIZE_WHITESPACE - [datetime.datetime(2014, 12, 31, 0, 0), - datetime.datetime(2015, 1, 31, 0, 0), - datetime.datetime(2015, 3, 31, 0, 0), - datetime.datetime(2015, 5, 31, 0, 0)] - - Additionally, it supports the following keyword arguments: - - :param dtstart: - The recurrence start. Besides being the base for the recurrence, - missing parameters in the final recurrence instances will also be - extracted from this date. If not given, datetime.now() will be used - instead. - :param interval: - The interval between each freq iteration. For example, when using - YEARLY, an interval of 2 means once every two years, but with HOURLY, - it means once every two hours. The default interval is 1. - :param wkst: - The week start day. Must be one of the MO, TU, WE constants, or an - integer, specifying the first day of the week. This will affect - recurrences based on weekly periods. The default week start is got - from calendar.firstweekday(), and may be modified by - calendar.setfirstweekday(). - :param count: - If given, this determines how many occurrences will be generated. - - .. note:: - As of version 2.5.0, the use of the keyword ``until`` in conjunction - with ``count`` is deprecated, to make sure ``dateutil`` is fully - compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` - **must not** occur in the same call to ``rrule``. - :param until: - If given, this must be a datetime instance specifying the upper-bound - limit of the recurrence. The last recurrence in the rule is the greatest - datetime that is less than or equal to the value specified in the - ``until`` parameter. - - .. note:: - As of version 2.5.0, the use of the keyword ``until`` in conjunction - with ``count`` is deprecated, to make sure ``dateutil`` is fully - compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` - **must not** occur in the same call to ``rrule``. - :param bysetpos: - If given, it must be either an integer, or a sequence of integers, - positive or negative. Each given integer will specify an occurrence - number, corresponding to the nth occurrence of the rule inside the - frequency period. For example, a bysetpos of -1 if combined with a - MONTHLY frequency, and a byweekday of (MO, TU, WE, TH, FR), will - result in the last work day of every month. - :param bymonth: - If given, it must be either an integer, or a sequence of integers, - meaning the months to apply the recurrence to. - :param bymonthday: - If given, it must be either an integer, or a sequence of integers, - meaning the month days to apply the recurrence to. - :param byyearday: - If given, it must be either an integer, or a sequence of integers, - meaning the year days to apply the recurrence to. - :param byeaster: - If given, it must be either an integer, or a sequence of integers, - positive or negative. Each integer will define an offset from the - Easter Sunday. Passing the offset 0 to byeaster will yield the Easter - Sunday itself. This is an extension to the RFC specification. - :param byweekno: - If given, it must be either an integer, or a sequence of integers, - meaning the week numbers to apply the recurrence to. Week numbers - have the meaning described in ISO8601, that is, the first week of - the year is that containing at least four days of the new year. - :param byweekday: - If given, it must be either an integer (0 == MO), a sequence of - integers, one of the weekday constants (MO, TU, etc), or a sequence - of these constants. When given, these variables will define the - weekdays where the recurrence will be applied. It's also possible to - use an argument n for the weekday instances, which will mean the nth - occurrence of this weekday in the period. For example, with MONTHLY, - or with YEARLY and BYMONTH, using FR(+1) in byweekday will specify the - first friday of the month where the recurrence happens. Notice that in - the RFC documentation, this is specified as BYDAY, but was renamed to - avoid the ambiguity of that keyword. - :param byhour: - If given, it must be either an integer, or a sequence of integers, - meaning the hours to apply the recurrence to. - :param byminute: - If given, it must be either an integer, or a sequence of integers, - meaning the minutes to apply the recurrence to. - :param bysecond: - If given, it must be either an integer, or a sequence of integers, - meaning the seconds to apply the recurrence to. - :param cache: - If given, it must be a boolean value specifying to enable or disable - caching of results. If you will use the same rrule instance multiple - times, enabling caching will improve the performance considerably. - """ - def __init__(self, freq, dtstart=None, - interval=1, wkst=None, count=None, until=None, bysetpos=None, - bymonth=None, bymonthday=None, byyearday=None, byeaster=None, - byweekno=None, byweekday=None, - byhour=None, byminute=None, bysecond=None, - cache=False): - super(rrule, self).__init__(cache) - global easter - if not dtstart: - if until and until.tzinfo: - dtstart = datetime.datetime.now(tz=until.tzinfo).replace(microsecond=0) - else: - dtstart = datetime.datetime.now().replace(microsecond=0) - elif not isinstance(dtstart, datetime.datetime): - dtstart = datetime.datetime.fromordinal(dtstart.toordinal()) - else: - dtstart = dtstart.replace(microsecond=0) - self._dtstart = dtstart - self._tzinfo = dtstart.tzinfo - self._freq = freq - self._interval = interval - self._count = count - - # Cache the original byxxx rules, if they are provided, as the _byxxx - # attributes do not necessarily map to the inputs, and this can be - # a problem in generating the strings. Only store things if they've - # been supplied (the string retrieval will just use .get()) - self._original_rule = {} - - if until and not isinstance(until, datetime.datetime): - until = datetime.datetime.fromordinal(until.toordinal()) - self._until = until - - if self._dtstart and self._until: - if (self._dtstart.tzinfo is not None) != (self._until.tzinfo is not None): - # According to RFC5545 Section 3.3.10: - # https://tools.ietf.org/html/rfc5545#section-3.3.10 - # - # > If the "DTSTART" property is specified as a date with UTC - # > time or a date with local time and time zone reference, - # > then the UNTIL rule part MUST be specified as a date with - # > UTC time. - raise ValueError( - 'RRULE UNTIL values must be specified in UTC when DTSTART ' - 'is timezone-aware' - ) - - if count is not None and until: - warn("Using both 'count' and 'until' is inconsistent with RFC 5545" - " and has been deprecated in dateutil. Future versions will " - "raise an error.", DeprecationWarning) - - if wkst is None: - self._wkst = calendar.firstweekday() - elif isinstance(wkst, integer_types): - self._wkst = wkst - else: - self._wkst = wkst.weekday - - if bysetpos is None: - self._bysetpos = None - elif isinstance(bysetpos, integer_types): - if bysetpos == 0 or not (-366 <= bysetpos <= 366): - raise ValueError("bysetpos must be between 1 and 366, " - "or between -366 and -1") - self._bysetpos = (bysetpos,) - else: - self._bysetpos = tuple(bysetpos) - for pos in self._bysetpos: - if pos == 0 or not (-366 <= pos <= 366): - raise ValueError("bysetpos must be between 1 and 366, " - "or between -366 and -1") - - if self._bysetpos: - self._original_rule['bysetpos'] = self._bysetpos - - if (byweekno is None and byyearday is None and bymonthday is None and - byweekday is None and byeaster is None): - if freq == YEARLY: - if bymonth is None: - bymonth = dtstart.month - self._original_rule['bymonth'] = None - bymonthday = dtstart.day - self._original_rule['bymonthday'] = None - elif freq == MONTHLY: - bymonthday = dtstart.day - self._original_rule['bymonthday'] = None - elif freq == WEEKLY: - byweekday = dtstart.weekday() - self._original_rule['byweekday'] = None - - # bymonth - if bymonth is None: - self._bymonth = None - else: - if isinstance(bymonth, integer_types): - bymonth = (bymonth,) - - self._bymonth = tuple(sorted(set(bymonth))) - - if 'bymonth' not in self._original_rule: - self._original_rule['bymonth'] = self._bymonth - - # byyearday - if byyearday is None: - self._byyearday = None - else: - if isinstance(byyearday, integer_types): - byyearday = (byyearday,) - - self._byyearday = tuple(sorted(set(byyearday))) - self._original_rule['byyearday'] = self._byyearday - - # byeaster - if byeaster is not None: - if not easter: - from dateutil import easter - if isinstance(byeaster, integer_types): - self._byeaster = (byeaster,) - else: - self._byeaster = tuple(sorted(byeaster)) - - self._original_rule['byeaster'] = self._byeaster - else: - self._byeaster = None - - # bymonthday - if bymonthday is None: - self._bymonthday = () - self._bynmonthday = () - else: - if isinstance(bymonthday, integer_types): - bymonthday = (bymonthday,) - - bymonthday = set(bymonthday) # Ensure it's unique - - self._bymonthday = tuple(sorted(x for x in bymonthday if x > 0)) - self._bynmonthday = tuple(sorted(x for x in bymonthday if x < 0)) - - # Storing positive numbers first, then negative numbers - if 'bymonthday' not in self._original_rule: - self._original_rule['bymonthday'] = tuple( - itertools.chain(self._bymonthday, self._bynmonthday)) - - # byweekno - if byweekno is None: - self._byweekno = None - else: - if isinstance(byweekno, integer_types): - byweekno = (byweekno,) - - self._byweekno = tuple(sorted(set(byweekno))) - - self._original_rule['byweekno'] = self._byweekno - - # byweekday / bynweekday - if byweekday is None: - self._byweekday = None - self._bynweekday = None - else: - # If it's one of the valid non-sequence types, convert to a - # single-element sequence before the iterator that builds the - # byweekday set. - if isinstance(byweekday, integer_types) or hasattr(byweekday, "n"): - byweekday = (byweekday,) - - self._byweekday = set() - self._bynweekday = set() - for wday in byweekday: - if isinstance(wday, integer_types): - self._byweekday.add(wday) - elif not wday.n or freq > MONTHLY: - self._byweekday.add(wday.weekday) - else: - self._bynweekday.add((wday.weekday, wday.n)) - - if not self._byweekday: - self._byweekday = None - elif not self._bynweekday: - self._bynweekday = None - - if self._byweekday is not None: - self._byweekday = tuple(sorted(self._byweekday)) - orig_byweekday = [weekday(x) for x in self._byweekday] - else: - orig_byweekday = () - - if self._bynweekday is not None: - self._bynweekday = tuple(sorted(self._bynweekday)) - orig_bynweekday = [weekday(*x) for x in self._bynweekday] - else: - orig_bynweekday = () - - if 'byweekday' not in self._original_rule: - self._original_rule['byweekday'] = tuple(itertools.chain( - orig_byweekday, orig_bynweekday)) - - # byhour - if byhour is None: - if freq < HOURLY: - self._byhour = {dtstart.hour} - else: - self._byhour = None - else: - if isinstance(byhour, integer_types): - byhour = (byhour,) - - if freq == HOURLY: - self._byhour = self.__construct_byset(start=dtstart.hour, - byxxx=byhour, - base=24) - else: - self._byhour = set(byhour) - - self._byhour = tuple(sorted(self._byhour)) - self._original_rule['byhour'] = self._byhour - - # byminute - if byminute is None: - if freq < MINUTELY: - self._byminute = {dtstart.minute} - else: - self._byminute = None - else: - if isinstance(byminute, integer_types): - byminute = (byminute,) - - if freq == MINUTELY: - self._byminute = self.__construct_byset(start=dtstart.minute, - byxxx=byminute, - base=60) - else: - self._byminute = set(byminute) - - self._byminute = tuple(sorted(self._byminute)) - self._original_rule['byminute'] = self._byminute - - # bysecond - if bysecond is None: - if freq < SECONDLY: - self._bysecond = ((dtstart.second,)) - else: - self._bysecond = None - else: - if isinstance(bysecond, integer_types): - bysecond = (bysecond,) - - self._bysecond = set(bysecond) - - if freq == SECONDLY: - self._bysecond = self.__construct_byset(start=dtstart.second, - byxxx=bysecond, - base=60) - else: - self._bysecond = set(bysecond) - - self._bysecond = tuple(sorted(self._bysecond)) - self._original_rule['bysecond'] = self._bysecond - - if self._freq >= HOURLY: - self._timeset = None - else: - self._timeset = [] - for hour in self._byhour: - for minute in self._byminute: - for second in self._bysecond: - self._timeset.append( - datetime.time(hour, minute, second, - tzinfo=self._tzinfo)) - self._timeset.sort() - self._timeset = tuple(self._timeset) - - def __str__(self): - """ - Output a string that would generate this RRULE if passed to rrulestr. - This is mostly compatible with RFC5545, except for the - dateutil-specific extension BYEASTER. - """ - - output = [] - h, m, s = [None] * 3 - if self._dtstart: - output.append(self._dtstart.strftime('DTSTART:%Y%m%dT%H%M%S')) - h, m, s = self._dtstart.timetuple()[3:6] - - parts = ['FREQ=' + FREQNAMES[self._freq]] - if self._interval != 1: - parts.append('INTERVAL=' + str(self._interval)) - - if self._wkst: - parts.append('WKST=' + repr(weekday(self._wkst))[0:2]) - - if self._count is not None: - parts.append('COUNT=' + str(self._count)) - - if self._until: - parts.append(self._until.strftime('UNTIL=%Y%m%dT%H%M%S')) - - if self._original_rule.get('byweekday') is not None: - # The str() method on weekday objects doesn't generate - # RFC5545-compliant strings, so we should modify that. - original_rule = dict(self._original_rule) - wday_strings = [] - for wday in original_rule['byweekday']: - if wday.n: - wday_strings.append('{n:+d}{wday}'.format( - n=wday.n, - wday=repr(wday)[0:2])) - else: - wday_strings.append(repr(wday)) - - original_rule['byweekday'] = wday_strings - else: - original_rule = self._original_rule - - partfmt = '{name}={vals}' - for name, key in [('BYSETPOS', 'bysetpos'), - ('BYMONTH', 'bymonth'), - ('BYMONTHDAY', 'bymonthday'), - ('BYYEARDAY', 'byyearday'), - ('BYWEEKNO', 'byweekno'), - ('BYDAY', 'byweekday'), - ('BYHOUR', 'byhour'), - ('BYMINUTE', 'byminute'), - ('BYSECOND', 'bysecond'), - ('BYEASTER', 'byeaster')]: - value = original_rule.get(key) - if value: - parts.append(partfmt.format(name=name, vals=(','.join(str(v) - for v in value)))) - - output.append('RRULE:' + ';'.join(parts)) - return '\n'.join(output) - - def replace(self, **kwargs): - """Return new rrule with same attributes except for those attributes given new - values by whichever keyword arguments are specified.""" - new_kwargs = {"interval": self._interval, - "count": self._count, - "dtstart": self._dtstart, - "freq": self._freq, - "until": self._until, - "wkst": self._wkst, - "cache": False if self._cache is None else True } - new_kwargs.update(self._original_rule) - new_kwargs.update(kwargs) - return rrule(**new_kwargs) - - def _iter(self): - year, month, day, hour, minute, second, weekday, yearday, _ = \ - self._dtstart.timetuple() - - # Some local variables to speed things up a bit - freq = self._freq - interval = self._interval - wkst = self._wkst - until = self._until - bymonth = self._bymonth - byweekno = self._byweekno - byyearday = self._byyearday - byweekday = self._byweekday - byeaster = self._byeaster - bymonthday = self._bymonthday - bynmonthday = self._bynmonthday - bysetpos = self._bysetpos - byhour = self._byhour - byminute = self._byminute - bysecond = self._bysecond - - ii = _iterinfo(self) - ii.rebuild(year, month) - - getdayset = {YEARLY: ii.ydayset, - MONTHLY: ii.mdayset, - WEEKLY: ii.wdayset, - DAILY: ii.ddayset, - HOURLY: ii.ddayset, - MINUTELY: ii.ddayset, - SECONDLY: ii.ddayset}[freq] - - if freq < HOURLY: - timeset = self._timeset - else: - gettimeset = {HOURLY: ii.htimeset, - MINUTELY: ii.mtimeset, - SECONDLY: ii.stimeset}[freq] - if ((freq >= HOURLY and - self._byhour and hour not in self._byhour) or - (freq >= MINUTELY and - self._byminute and minute not in self._byminute) or - (freq >= SECONDLY and - self._bysecond and second not in self._bysecond)): - timeset = () - else: - timeset = gettimeset(hour, minute, second) - - total = 0 - count = self._count - while True: - # Get dayset with the right frequency - dayset, start, end = getdayset(year, month, day) - - # Do the "hard" work ;-) - filtered = False - for i in dayset[start:end]: - if ((bymonth and ii.mmask[i] not in bymonth) or - (byweekno and not ii.wnomask[i]) or - (byweekday and ii.wdaymask[i] not in byweekday) or - (ii.nwdaymask and not ii.nwdaymask[i]) or - (byeaster and not ii.eastermask[i]) or - ((bymonthday or bynmonthday) and - ii.mdaymask[i] not in bymonthday and - ii.nmdaymask[i] not in bynmonthday) or - (byyearday and - ((i < ii.yearlen and i+1 not in byyearday and - -ii.yearlen+i not in byyearday) or - (i >= ii.yearlen and i+1-ii.yearlen not in byyearday and - -ii.nextyearlen+i-ii.yearlen not in byyearday)))): - dayset[i] = None - filtered = True - - # Output results - if bysetpos and timeset: - poslist = [] - for pos in bysetpos: - if pos < 0: - daypos, timepos = divmod(pos, len(timeset)) - else: - daypos, timepos = divmod(pos-1, len(timeset)) - try: - i = [x for x in dayset[start:end] - if x is not None][daypos] - time = timeset[timepos] - except IndexError: - pass - else: - date = datetime.date.fromordinal(ii.yearordinal+i) - res = datetime.datetime.combine(date, time) - if res not in poslist: - poslist.append(res) - poslist.sort() - for res in poslist: - if until and res > until: - self._len = total - return - elif res >= self._dtstart: - if count is not None: - count -= 1 - if count < 0: - self._len = total - return - total += 1 - yield res - else: - for i in dayset[start:end]: - if i is not None: - date = datetime.date.fromordinal(ii.yearordinal + i) - for time in timeset: - res = datetime.datetime.combine(date, time) - if until and res > until: - self._len = total - return - elif res >= self._dtstart: - if count is not None: - count -= 1 - if count < 0: - self._len = total - return - - total += 1 - yield res - - # Handle frequency and interval - fixday = False - if freq == YEARLY: - year += interval - if year > datetime.MAXYEAR: - self._len = total - return - ii.rebuild(year, month) - elif freq == MONTHLY: - month += interval - if month > 12: - div, mod = divmod(month, 12) - month = mod - year += div - if month == 0: - month = 12 - year -= 1 - if year > datetime.MAXYEAR: - self._len = total - return - ii.rebuild(year, month) - elif freq == WEEKLY: - if wkst > weekday: - day += -(weekday+1+(6-wkst))+self._interval*7 - else: - day += -(weekday-wkst)+self._interval*7 - weekday = wkst - fixday = True - elif freq == DAILY: - day += interval - fixday = True - elif freq == HOURLY: - if filtered: - # Jump to one iteration before next day - hour += ((23-hour)//interval)*interval - - if byhour: - ndays, hour = self.__mod_distance(value=hour, - byxxx=self._byhour, - base=24) - else: - ndays, hour = divmod(hour+interval, 24) - - if ndays: - day += ndays - fixday = True - - timeset = gettimeset(hour, minute, second) - elif freq == MINUTELY: - if filtered: - # Jump to one iteration before next day - minute += ((1439-(hour*60+minute))//interval)*interval - - valid = False - rep_rate = (24*60) - for j in range(rep_rate // gcd(interval, rep_rate)): - if byminute: - nhours, minute = \ - self.__mod_distance(value=minute, - byxxx=self._byminute, - base=60) - else: - nhours, minute = divmod(minute+interval, 60) - - div, hour = divmod(hour+nhours, 24) - if div: - day += div - fixday = True - filtered = False - - if not byhour or hour in byhour: - valid = True - break - - if not valid: - raise ValueError('Invalid combination of interval and ' + - 'byhour resulting in empty rule.') - - timeset = gettimeset(hour, minute, second) - elif freq == SECONDLY: - if filtered: - # Jump to one iteration before next day - second += (((86399 - (hour * 3600 + minute * 60 + second)) - // interval) * interval) - - rep_rate = (24 * 3600) - valid = False - for j in range(0, rep_rate // gcd(interval, rep_rate)): - if bysecond: - nminutes, second = \ - self.__mod_distance(value=second, - byxxx=self._bysecond, - base=60) - else: - nminutes, second = divmod(second+interval, 60) - - div, minute = divmod(minute+nminutes, 60) - if div: - hour += div - div, hour = divmod(hour, 24) - if div: - day += div - fixday = True - - if ((not byhour or hour in byhour) and - (not byminute or minute in byminute) and - (not bysecond or second in bysecond)): - valid = True - break - - if not valid: - raise ValueError('Invalid combination of interval, ' + - 'byhour and byminute resulting in empty' + - ' rule.') - - timeset = gettimeset(hour, minute, second) - - if fixday and day > 28: - daysinmonth = calendar.monthrange(year, month)[1] - if day > daysinmonth: - while day > daysinmonth: - day -= daysinmonth - month += 1 - if month == 13: - month = 1 - year += 1 - if year > datetime.MAXYEAR: - self._len = total - return - daysinmonth = calendar.monthrange(year, month)[1] - ii.rebuild(year, month) - - def __construct_byset(self, start, byxxx, base): - """ - If a `BYXXX` sequence is passed to the constructor at the same level as - `FREQ` (e.g. `FREQ=HOURLY,BYHOUR={2,4,7},INTERVAL=3`), there are some - specifications which cannot be reached given some starting conditions. - - This occurs whenever the interval is not coprime with the base of a - given unit and the difference between the starting position and the - ending position is not coprime with the greatest common denominator - between the interval and the base. For example, with a FREQ of hourly - starting at 17:00 and an interval of 4, the only valid values for - BYHOUR would be {21, 1, 5, 9, 13, 17}, because 4 and 24 are not - coprime. - - :param start: - Specifies the starting position. - :param byxxx: - An iterable containing the list of allowed values. - :param base: - The largest allowable value for the specified frequency (e.g. - 24 hours, 60 minutes). - - This does not preserve the type of the iterable, returning a set, since - the values should be unique and the order is irrelevant, this will - speed up later lookups. - - In the event of an empty set, raises a :exception:`ValueError`, as this - results in an empty rrule. - """ - - cset = set() - - # Support a single byxxx value. - if isinstance(byxxx, integer_types): - byxxx = (byxxx, ) - - for num in byxxx: - i_gcd = gcd(self._interval, base) - # Use divmod rather than % because we need to wrap negative nums. - if i_gcd == 1 or divmod(num - start, i_gcd)[1] == 0: - cset.add(num) - - if len(cset) == 0: - raise ValueError("Invalid rrule byxxx generates an empty set.") - - return cset - - def __mod_distance(self, value, byxxx, base): - """ - Calculates the next value in a sequence where the `FREQ` parameter is - specified along with a `BYXXX` parameter at the same "level" - (e.g. `HOURLY` specified with `BYHOUR`). - - :param value: - The old value of the component. - :param byxxx: - The `BYXXX` set, which should have been generated by - `rrule._construct_byset`, or something else which checks that a - valid rule is present. - :param base: - The largest allowable value for the specified frequency (e.g. - 24 hours, 60 minutes). - - If a valid value is not found after `base` iterations (the maximum - number before the sequence would start to repeat), this raises a - :exception:`ValueError`, as no valid values were found. - - This returns a tuple of `divmod(n*interval, base)`, where `n` is the - smallest number of `interval` repetitions until the next specified - value in `byxxx` is found. - """ - accumulator = 0 - for ii in range(1, base + 1): - # Using divmod() over % to account for negative intervals - div, value = divmod(value + self._interval, base) - accumulator += div - if value in byxxx: - return (accumulator, value) - - -class _iterinfo(object): - __slots__ = ["rrule", "lastyear", "lastmonth", - "yearlen", "nextyearlen", "yearordinal", "yearweekday", - "mmask", "mrange", "mdaymask", "nmdaymask", - "wdaymask", "wnomask", "nwdaymask", "eastermask"] - - def __init__(self, rrule): - for attr in self.__slots__: - setattr(self, attr, None) - self.rrule = rrule - - def rebuild(self, year, month): - # Every mask is 7 days longer to handle cross-year weekly periods. - rr = self.rrule - if year != self.lastyear: - self.yearlen = 365 + calendar.isleap(year) - self.nextyearlen = 365 + calendar.isleap(year + 1) - firstyday = datetime.date(year, 1, 1) - self.yearordinal = firstyday.toordinal() - self.yearweekday = firstyday.weekday() - - wday = datetime.date(year, 1, 1).weekday() - if self.yearlen == 365: - self.mmask = M365MASK - self.mdaymask = MDAY365MASK - self.nmdaymask = NMDAY365MASK - self.wdaymask = WDAYMASK[wday:] - self.mrange = M365RANGE - else: - self.mmask = M366MASK - self.mdaymask = MDAY366MASK - self.nmdaymask = NMDAY366MASK - self.wdaymask = WDAYMASK[wday:] - self.mrange = M366RANGE - - if not rr._byweekno: - self.wnomask = None - else: - self.wnomask = [0]*(self.yearlen+7) - # no1wkst = firstwkst = self.wdaymask.index(rr._wkst) - no1wkst = firstwkst = (7-self.yearweekday+rr._wkst) % 7 - if no1wkst >= 4: - no1wkst = 0 - # Number of days in the year, plus the days we got - # from last year. - wyearlen = self.yearlen+(self.yearweekday-rr._wkst) % 7 - else: - # Number of days in the year, minus the days we - # left in last year. - wyearlen = self.yearlen-no1wkst - div, mod = divmod(wyearlen, 7) - numweeks = div+mod//4 - for n in rr._byweekno: - if n < 0: - n += numweeks+1 - if not (0 < n <= numweeks): - continue - if n > 1: - i = no1wkst+(n-1)*7 - if no1wkst != firstwkst: - i -= 7-firstwkst - else: - i = no1wkst - for j in range(7): - self.wnomask[i] = 1 - i += 1 - if self.wdaymask[i] == rr._wkst: - break - if 1 in rr._byweekno: - # Check week number 1 of next year as well - # TODO: Check -numweeks for next year. - i = no1wkst+numweeks*7 - if no1wkst != firstwkst: - i -= 7-firstwkst - if i < self.yearlen: - # If week starts in next year, we - # don't care about it. - for j in range(7): - self.wnomask[i] = 1 - i += 1 - if self.wdaymask[i] == rr._wkst: - break - if no1wkst: - # Check last week number of last year as - # well. If no1wkst is 0, either the year - # started on week start, or week number 1 - # got days from last year, so there are no - # days from last year's last week number in - # this year. - if -1 not in rr._byweekno: - lyearweekday = datetime.date(year-1, 1, 1).weekday() - lno1wkst = (7-lyearweekday+rr._wkst) % 7 - lyearlen = 365+calendar.isleap(year-1) - if lno1wkst >= 4: - lno1wkst = 0 - lnumweeks = 52+(lyearlen + - (lyearweekday-rr._wkst) % 7) % 7//4 - else: - lnumweeks = 52+(self.yearlen-no1wkst) % 7//4 - else: - lnumweeks = -1 - if lnumweeks in rr._byweekno: - for i in range(no1wkst): - self.wnomask[i] = 1 - - if (rr._bynweekday and (month != self.lastmonth or - year != self.lastyear)): - ranges = [] - if rr._freq == YEARLY: - if rr._bymonth: - for month in rr._bymonth: - ranges.append(self.mrange[month-1:month+1]) - else: - ranges = [(0, self.yearlen)] - elif rr._freq == MONTHLY: - ranges = [self.mrange[month-1:month+1]] - if ranges: - # Weekly frequency won't get here, so we may not - # care about cross-year weekly periods. - self.nwdaymask = [0]*self.yearlen - for first, last in ranges: - last -= 1 - for wday, n in rr._bynweekday: - if n < 0: - i = last+(n+1)*7 - i -= (self.wdaymask[i]-wday) % 7 - else: - i = first+(n-1)*7 - i += (7-self.wdaymask[i]+wday) % 7 - if first <= i <= last: - self.nwdaymask[i] = 1 - - if rr._byeaster: - self.eastermask = [0]*(self.yearlen+7) - eyday = easter.easter(year).toordinal()-self.yearordinal - for offset in rr._byeaster: - self.eastermask[eyday+offset] = 1 - - self.lastyear = year - self.lastmonth = month - - def ydayset(self, year, month, day): - return list(range(self.yearlen)), 0, self.yearlen - - def mdayset(self, year, month, day): - dset = [None]*self.yearlen - start, end = self.mrange[month-1:month+1] - for i in range(start, end): - dset[i] = i - return dset, start, end - - def wdayset(self, year, month, day): - # We need to handle cross-year weeks here. - dset = [None]*(self.yearlen+7) - i = datetime.date(year, month, day).toordinal()-self.yearordinal - start = i - for j in range(7): - dset[i] = i - i += 1 - # if (not (0 <= i < self.yearlen) or - # self.wdaymask[i] == self.rrule._wkst): - # This will cross the year boundary, if necessary. - if self.wdaymask[i] == self.rrule._wkst: - break - return dset, start, i - - def ddayset(self, year, month, day): - dset = [None] * self.yearlen - i = datetime.date(year, month, day).toordinal() - self.yearordinal - dset[i] = i - return dset, i, i + 1 - - def htimeset(self, hour, minute, second): - tset = [] - rr = self.rrule - for minute in rr._byminute: - for second in rr._bysecond: - tset.append(datetime.time(hour, minute, second, - tzinfo=rr._tzinfo)) - tset.sort() - return tset - - def mtimeset(self, hour, minute, second): - tset = [] - rr = self.rrule - for second in rr._bysecond: - tset.append(datetime.time(hour, minute, second, tzinfo=rr._tzinfo)) - tset.sort() - return tset - - def stimeset(self, hour, minute, second): - return (datetime.time(hour, minute, second, - tzinfo=self.rrule._tzinfo),) - - -class rruleset(rrulebase): - """ The rruleset type allows more complex recurrence setups, mixing - multiple rules, dates, exclusion rules, and exclusion dates. The type - constructor takes the following keyword arguments: - - :param cache: If True, caching of results will be enabled, improving - performance of multiple queries considerably. """ - - class _genitem(object): - def __init__(self, genlist, gen): - try: - self.dt = advance_iterator(gen) - genlist.append(self) - except StopIteration: - pass - self.genlist = genlist - self.gen = gen - - def __next__(self): - try: - self.dt = advance_iterator(self.gen) - except StopIteration: - if self.genlist[0] is self: - heapq.heappop(self.genlist) - else: - self.genlist.remove(self) - heapq.heapify(self.genlist) - - next = __next__ - - def __lt__(self, other): - return self.dt < other.dt - - def __gt__(self, other): - return self.dt > other.dt - - def __eq__(self, other): - return self.dt == other.dt - - def __ne__(self, other): - return self.dt != other.dt - - def __init__(self, cache=False): - super(rruleset, self).__init__(cache) - self._rrule = [] - self._rdate = [] - self._exrule = [] - self._exdate = [] - - @_invalidates_cache - def rrule(self, rrule): - """ Include the given :py:class:`rrule` instance in the recurrence set - generation. """ - self._rrule.append(rrule) - - @_invalidates_cache - def rdate(self, rdate): - """ Include the given :py:class:`datetime` instance in the recurrence - set generation. """ - self._rdate.append(rdate) - - @_invalidates_cache - def exrule(self, exrule): - """ Include the given rrule instance in the recurrence set exclusion - list. Dates which are part of the given recurrence rules will not - be generated, even if some inclusive rrule or rdate matches them. - """ - self._exrule.append(exrule) - - @_invalidates_cache - def exdate(self, exdate): - """ Include the given datetime instance in the recurrence set - exclusion list. Dates included that way will not be generated, - even if some inclusive rrule or rdate matches them. """ - self._exdate.append(exdate) - - def _iter(self): - rlist = [] - self._rdate.sort() - self._genitem(rlist, iter(self._rdate)) - for gen in [iter(x) for x in self._rrule]: - self._genitem(rlist, gen) - exlist = [] - self._exdate.sort() - self._genitem(exlist, iter(self._exdate)) - for gen in [iter(x) for x in self._exrule]: - self._genitem(exlist, gen) - lastdt = None - total = 0 - heapq.heapify(rlist) - heapq.heapify(exlist) - while rlist: - ritem = rlist[0] - if not lastdt or lastdt != ritem.dt: - while exlist and exlist[0] < ritem: - exitem = exlist[0] - advance_iterator(exitem) - if exlist and exlist[0] is exitem: - heapq.heapreplace(exlist, exitem) - if not exlist or ritem != exlist[0]: - total += 1 - yield ritem.dt - lastdt = ritem.dt - advance_iterator(ritem) - if rlist and rlist[0] is ritem: - heapq.heapreplace(rlist, ritem) - self._len = total - - - - -class _rrulestr(object): - """ Parses a string representation of a recurrence rule or set of - recurrence rules. - - :param s: - Required, a string defining one or more recurrence rules. - - :param dtstart: - If given, used as the default recurrence start if not specified in the - rule string. - - :param cache: - If set ``True`` caching of results will be enabled, improving - performance of multiple queries considerably. - - :param unfold: - If set ``True`` indicates that a rule string is split over more - than one line and should be joined before processing. - - :param forceset: - If set ``True`` forces a :class:`dateutil.rrule.rruleset` to - be returned. - - :param compatible: - If set ``True`` forces ``unfold`` and ``forceset`` to be ``True``. - - :param ignoretz: - If set ``True``, time zones in parsed strings are ignored and a naive - :class:`datetime.datetime` object is returned. - - :param tzids: - If given, a callable or mapping used to retrieve a - :class:`datetime.tzinfo` from a string representation. - Defaults to :func:`dateutil.tz.gettz`. - - :param tzinfos: - Additional time zone names / aliases which may be present in a string - representation. See :func:`dateutil.parser.parse` for more - information. - - :return: - Returns a :class:`dateutil.rrule.rruleset` or - :class:`dateutil.rrule.rrule` - """ - - _freq_map = {"YEARLY": YEARLY, - "MONTHLY": MONTHLY, - "WEEKLY": WEEKLY, - "DAILY": DAILY, - "HOURLY": HOURLY, - "MINUTELY": MINUTELY, - "SECONDLY": SECONDLY} - - _weekday_map = {"MO": 0, "TU": 1, "WE": 2, "TH": 3, - "FR": 4, "SA": 5, "SU": 6} - - def _handle_int(self, rrkwargs, name, value, **kwargs): - rrkwargs[name.lower()] = int(value) - - def _handle_int_list(self, rrkwargs, name, value, **kwargs): - rrkwargs[name.lower()] = [int(x) for x in value.split(',')] - - _handle_INTERVAL = _handle_int - _handle_COUNT = _handle_int - _handle_BYSETPOS = _handle_int_list - _handle_BYMONTH = _handle_int_list - _handle_BYMONTHDAY = _handle_int_list - _handle_BYYEARDAY = _handle_int_list - _handle_BYEASTER = _handle_int_list - _handle_BYWEEKNO = _handle_int_list - _handle_BYHOUR = _handle_int_list - _handle_BYMINUTE = _handle_int_list - _handle_BYSECOND = _handle_int_list - - def _handle_FREQ(self, rrkwargs, name, value, **kwargs): - rrkwargs["freq"] = self._freq_map[value] - - def _handle_UNTIL(self, rrkwargs, name, value, **kwargs): - global parser - if not parser: - from dateutil import parser - try: - rrkwargs["until"] = parser.parse(value, - ignoretz=kwargs.get("ignoretz"), - tzinfos=kwargs.get("tzinfos")) - except ValueError: - raise ValueError("invalid until date") - - def _handle_WKST(self, rrkwargs, name, value, **kwargs): - rrkwargs["wkst"] = self._weekday_map[value] - - def _handle_BYWEEKDAY(self, rrkwargs, name, value, **kwargs): - """ - Two ways to specify this: +1MO or MO(+1) - """ - l = [] - for wday in value.split(','): - if '(' in wday: - # If it's of the form TH(+1), etc. - splt = wday.split('(') - w = splt[0] - n = int(splt[1][:-1]) - elif len(wday): - # If it's of the form +1MO - for i in range(len(wday)): - if wday[i] not in '+-0123456789': - break - n = wday[:i] or None - w = wday[i:] - if n: - n = int(n) - else: - raise ValueError("Invalid (empty) BYDAY specification.") - - l.append(weekdays[self._weekday_map[w]](n)) - rrkwargs["byweekday"] = l - - _handle_BYDAY = _handle_BYWEEKDAY - - def _parse_rfc_rrule(self, line, - dtstart=None, - cache=False, - ignoretz=False, - tzinfos=None): - if line.find(':') != -1: - name, value = line.split(':') - if name != "RRULE": - raise ValueError("unknown parameter name") - else: - value = line - rrkwargs = {} - for pair in value.split(';'): - name, value = pair.split('=') - name = name.upper() - value = value.upper() - try: - getattr(self, "_handle_"+name)(rrkwargs, name, value, - ignoretz=ignoretz, - tzinfos=tzinfos) - except AttributeError: - raise ValueError("unknown parameter '%s'" % name) - except (KeyError, ValueError): - raise ValueError("invalid '%s': %s" % (name, value)) - return rrule(dtstart=dtstart, cache=cache, **rrkwargs) - - def _parse_date_value(self, date_value, parms, rule_tzids, - ignoretz, tzids, tzinfos): - global parser - if not parser: - from dateutil import parser - - datevals = [] - value_found = False - TZID = None - - for parm in parms: - if parm.startswith("TZID="): - try: - tzkey = rule_tzids[parm.split('TZID=')[-1]] - except KeyError: - continue - if tzids is None: - from . import tz - tzlookup = tz.gettz - elif callable(tzids): - tzlookup = tzids - else: - tzlookup = getattr(tzids, 'get', None) - if tzlookup is None: - msg = ('tzids must be a callable, mapping, or None, ' - 'not %s' % tzids) - raise ValueError(msg) - - TZID = tzlookup(tzkey) - continue - - # RFC 5445 3.8.2.4: The VALUE parameter is optional, but may be found - # only once. - if parm not in {"VALUE=DATE-TIME", "VALUE=DATE"}: - raise ValueError("unsupported parm: " + parm) - else: - if value_found: - msg = ("Duplicate value parameter found in: " + parm) - raise ValueError(msg) - value_found = True - - for datestr in date_value.split(','): - date = parser.parse(datestr, ignoretz=ignoretz, tzinfos=tzinfos) - if TZID is not None: - if date.tzinfo is None: - date = date.replace(tzinfo=TZID) - else: - raise ValueError('DTSTART/EXDATE specifies multiple timezone') - datevals.append(date) - - return datevals - - def _parse_rfc(self, s, - dtstart=None, - cache=False, - unfold=False, - forceset=False, - compatible=False, - ignoretz=False, - tzids=None, - tzinfos=None): - global parser - if compatible: - forceset = True - unfold = True - - TZID_NAMES = dict(map( - lambda x: (x.upper(), x), - re.findall('TZID=(?P[^:]+):', s) - )) - s = s.upper() - if not s.strip(): - raise ValueError("empty string") - if unfold: - lines = s.splitlines() - i = 0 - while i < len(lines): - line = lines[i].rstrip() - if not line: - del lines[i] - elif i > 0 and line[0] == " ": - lines[i-1] += line[1:] - del lines[i] - else: - i += 1 - else: - lines = s.split() - if (not forceset and len(lines) == 1 and (s.find(':') == -1 or - s.startswith('RRULE:'))): - return self._parse_rfc_rrule(lines[0], cache=cache, - dtstart=dtstart, ignoretz=ignoretz, - tzinfos=tzinfos) - else: - rrulevals = [] - rdatevals = [] - exrulevals = [] - exdatevals = [] - for line in lines: - if not line: - continue - if line.find(':') == -1: - name = "RRULE" - value = line - else: - name, value = line.split(':', 1) - parms = name.split(';') - if not parms: - raise ValueError("empty property name") - name = parms[0] - parms = parms[1:] - if name == "RRULE": - for parm in parms: - raise ValueError("unsupported RRULE parm: "+parm) - rrulevals.append(value) - elif name == "RDATE": - for parm in parms: - if parm != "VALUE=DATE-TIME": - raise ValueError("unsupported RDATE parm: "+parm) - rdatevals.append(value) - elif name == "EXRULE": - for parm in parms: - raise ValueError("unsupported EXRULE parm: "+parm) - exrulevals.append(value) - elif name == "EXDATE": - exdatevals.extend( - self._parse_date_value(value, parms, - TZID_NAMES, ignoretz, - tzids, tzinfos) - ) - elif name == "DTSTART": - dtvals = self._parse_date_value(value, parms, TZID_NAMES, - ignoretz, tzids, tzinfos) - if len(dtvals) != 1: - raise ValueError("Multiple DTSTART values specified:" + - value) - dtstart = dtvals[0] - else: - raise ValueError("unsupported property: "+name) - if (forceset or len(rrulevals) > 1 or rdatevals - or exrulevals or exdatevals): - if not parser and (rdatevals or exdatevals): - from dateutil import parser - rset = rruleset(cache=cache) - for value in rrulevals: - rset.rrule(self._parse_rfc_rrule(value, dtstart=dtstart, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in rdatevals: - for datestr in value.split(','): - rset.rdate(parser.parse(datestr, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in exrulevals: - rset.exrule(self._parse_rfc_rrule(value, dtstart=dtstart, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in exdatevals: - rset.exdate(value) - if compatible and dtstart: - rset.rdate(dtstart) - return rset - else: - return self._parse_rfc_rrule(rrulevals[0], - dtstart=dtstart, - cache=cache, - ignoretz=ignoretz, - tzinfos=tzinfos) - - def __call__(self, s, **kwargs): - return self._parse_rfc(s, **kwargs) - - -rrulestr = _rrulestr() - -# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/__init__.py b/venv/lib/python3.10/site-packages/dateutil/tz/__init__.py deleted file mode 100644 index af1352c..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tz/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- -from .tz import * -from .tz import __doc__ - -__all__ = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", - "tzstr", "tzical", "tzwin", "tzwinlocal", "gettz", - "enfold", "datetime_ambiguous", "datetime_exists", - "resolve_imaginary", "UTC", "DeprecatedTzFormatWarning"] - - -class DeprecatedTzFormatWarning(Warning): - """Warning raised when time zones are parsed from deprecated formats.""" diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 34c56d260b3e7b96d38edcd3ff69b895c3cfda09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 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 E55WDDfB*mh diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/_factories.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/_factories.cpython-310.pyc deleted file mode 100644 index 1a0ecd0229eeac2b8139b66dce6d87dc826b8e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2945 zcmb7G&5zqe6rZstw&NsApj+q%DuF^p3f)l3M-LS(0xc3qTd7-7k&9(KlU*lH9A+jh z8>OeM)Dv*$l&!ezzrdd|S57_m#FyZ`$$B@t*)GDCpXbdRzj^cK_j}{KRtpJSKhry% zGPHg}W&UEI+=539L2$xpM*6f(DYl)=X*=+CGq=y$%=WRY)c4vRC0`I;;@%^|J>hS= z?ErM22cQR5FN0p@A?TqfgFOVj!mFTHtzO~II%(FP!mOl8OPLE0ikK%jc>Z$t6!kVV1Zh)F+RkIrp`3E(QP6g6+vN<}>@i`aU4ltVrW)NH zucw2JOz3=&&^edr5mWL4JgNbLlL?84rrMd1ZKvx_Xi6r|FZ4&7qII%M*P6_{Jnt}y z(t*RneYmB@GqkzX0+T($0t!Tna2e%l&u>CJp_ZRP5FEtP6y==k*fB36oM52XiFg(zcD2^4sqJMs5jg*BPCKy;!Oo5$Vyt%dfK=%+ zvtcLDcj$6Jy9JM022tS8Vvn?4?gG{r#B_JOY7@V8D3t}$ZsYf7KxopX6S6@k^a;H~ z3Y38lI==R4riC29UN({(uq8*hkqx~W>xLA1BnPSyH#$90MW6xDlBPZ-?WE_}__ z7xb${ef`+~U%>J+XC^6Z?e>-6=$7 zNSA2fEI9$}R7lxB0b8bZw@$-9neY4^{>A+I@611T|7OK*ZMSrkh*-jB6h9!MZQ1D& z97xr@N*2(nFR^cdj|hxgIPe091wQ&5xcGlgRL9S)yb4 z8VGad(ANueLc$$5kD^0dYMfv^AdOs4A?NckS HmM{DZY6p&F diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/tz.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/tz.cpython-310.pyc deleted file mode 100644 index c988dbc517855c6ef465093ea1ed6da92c799ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44931 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 diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/win.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/tz/__pycache__/win.cpython-310.pyc deleted file mode 100644 index bacc4d702909928fe20146b422c60c7367c93131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11440 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 UlCX5MT-B?$@b`V|hn4C70b~(wNB{r; diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/_common.py b/venv/lib/python3.10/site-packages/dateutil/tz/_common.py deleted file mode 100644 index e6ac118..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tz/_common.py +++ /dev/null @@ -1,419 +0,0 @@ -from six import PY2 - -from functools import wraps - -from datetime import datetime, timedelta, tzinfo - - -ZERO = timedelta(0) - -__all__ = ['tzname_in_python2', 'enfold'] - - -def tzname_in_python2(namefunc): - """Change unicode output into bytestrings in Python 2 - - tzname() API changed in Python 3. It used to return bytes, but was changed - to unicode strings - """ - if PY2: - @wraps(namefunc) - def adjust_encoding(*args, **kwargs): - name = namefunc(*args, **kwargs) - if name is not None: - name = name.encode() - - return name - - return adjust_encoding - else: - return namefunc - - -# The following is adapted from Alexander Belopolsky's tz library -# https://github.com/abalkin/tz -if hasattr(datetime, 'fold'): - # This is the pre-python 3.6 fold situation - def enfold(dt, fold=1): - """ - Provides a unified interface for assigning the ``fold`` attribute to - datetimes both before and after the implementation of PEP-495. - - :param fold: - The value for the ``fold`` attribute in the returned datetime. This - should be either 0 or 1. - - :return: - Returns an object for which ``getattr(dt, 'fold', 0)`` returns - ``fold`` for all versions of Python. In versions prior to - Python 3.6, this is a ``_DatetimeWithFold`` object, which is a - subclass of :py:class:`datetime.datetime` with the ``fold`` - attribute added, if ``fold`` is 1. - - .. versionadded:: 2.6.0 - """ - return dt.replace(fold=fold) - -else: - class _DatetimeWithFold(datetime): - """ - This is a class designed to provide a PEP 495-compliant interface for - Python versions before 3.6. It is used only for dates in a fold, so - the ``fold`` attribute is fixed at ``1``. - - .. versionadded:: 2.6.0 - """ - __slots__ = () - - def replace(self, *args, **kwargs): - """ - Return a datetime with the same attributes, except for those - attributes given new values by whichever keyword arguments are - specified. Note that tzinfo=None can be specified to create a naive - datetime from an aware datetime with no conversion of date and time - data. - - This is reimplemented in ``_DatetimeWithFold`` because pypy3 will - return a ``datetime.datetime`` even if ``fold`` is unchanged. - """ - argnames = ( - 'year', 'month', 'day', 'hour', 'minute', 'second', - 'microsecond', 'tzinfo' - ) - - for arg, argname in zip(args, argnames): - if argname in kwargs: - raise TypeError('Duplicate argument: {}'.format(argname)) - - kwargs[argname] = arg - - for argname in argnames: - if argname not in kwargs: - kwargs[argname] = getattr(self, argname) - - dt_class = self.__class__ if kwargs.get('fold', 1) else datetime - - return dt_class(**kwargs) - - @property - def fold(self): - return 1 - - def enfold(dt, fold=1): - """ - Provides a unified interface for assigning the ``fold`` attribute to - datetimes both before and after the implementation of PEP-495. - - :param fold: - The value for the ``fold`` attribute in the returned datetime. This - should be either 0 or 1. - - :return: - Returns an object for which ``getattr(dt, 'fold', 0)`` returns - ``fold`` for all versions of Python. In versions prior to - Python 3.6, this is a ``_DatetimeWithFold`` object, which is a - subclass of :py:class:`datetime.datetime` with the ``fold`` - attribute added, if ``fold`` is 1. - - .. versionadded:: 2.6.0 - """ - if getattr(dt, 'fold', 0) == fold: - return dt - - args = dt.timetuple()[:6] - args += (dt.microsecond, dt.tzinfo) - - if fold: - return _DatetimeWithFold(*args) - else: - return datetime(*args) - - -def _validate_fromutc_inputs(f): - """ - The CPython version of ``fromutc`` checks that the input is a ``datetime`` - object and that ``self`` is attached as its ``tzinfo``. - """ - @wraps(f) - def fromutc(self, dt): - if not isinstance(dt, datetime): - raise TypeError("fromutc() requires a datetime argument") - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - return f(self, dt) - - return fromutc - - -class _tzinfo(tzinfo): - """ - Base class for all ``dateutil`` ``tzinfo`` objects. - """ - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - - dt = dt.replace(tzinfo=self) - - wall_0 = enfold(dt, fold=0) - wall_1 = enfold(dt, fold=1) - - same_offset = wall_0.utcoffset() == wall_1.utcoffset() - same_dt = wall_0.replace(tzinfo=None) == wall_1.replace(tzinfo=None) - - return same_dt and not same_offset - - def _fold_status(self, dt_utc, dt_wall): - """ - Determine the fold status of a "wall" datetime, given a representation - of the same datetime as a (naive) UTC datetime. This is calculated based - on the assumption that ``dt.utcoffset() - dt.dst()`` is constant for all - datetimes, and that this offset is the actual number of hours separating - ``dt_utc`` and ``dt_wall``. - - :param dt_utc: - Representation of the datetime as UTC - - :param dt_wall: - Representation of the datetime as "wall time". This parameter must - either have a `fold` attribute or have a fold-naive - :class:`datetime.tzinfo` attached, otherwise the calculation may - fail. - """ - if self.is_ambiguous(dt_wall): - delta_wall = dt_wall - dt_utc - _fold = int(delta_wall == (dt_utc.utcoffset() - dt_utc.dst())) - else: - _fold = 0 - - return _fold - - def _fold(self, dt): - return getattr(dt, 'fold', 0) - - def _fromutc(self, dt): - """ - Given a timezone-aware datetime in a given timezone, calculates a - timezone-aware datetime in a new timezone. - - Since this is the one time that we *know* we have an unambiguous - datetime object, we take this opportunity to determine whether the - datetime is ambiguous and in a "fold" state (e.g. if it's the first - occurrence, chronologically, of the ambiguous datetime). - - :param dt: - A timezone-aware :class:`datetime.datetime` object. - """ - - # Re-implement the algorithm from Python's datetime.py - dtoff = dt.utcoffset() - if dtoff is None: - raise ValueError("fromutc() requires a non-None utcoffset() " - "result") - - # The original datetime.py code assumes that `dst()` defaults to - # zero during ambiguous times. PEP 495 inverts this presumption, so - # for pre-PEP 495 versions of python, we need to tweak the algorithm. - dtdst = dt.dst() - if dtdst is None: - raise ValueError("fromutc() requires a non-None dst() result") - delta = dtoff - dtdst - - dt += delta - # Set fold=1 so we can default to being in the fold for - # ambiguous dates. - dtdst = enfold(dt, fold=1).dst() - if dtdst is None: - raise ValueError("fromutc(): dt.dst gave inconsistent " - "results; cannot convert") - return dt + dtdst - - @_validate_fromutc_inputs - def fromutc(self, dt): - """ - Given a timezone-aware datetime in a given timezone, calculates a - timezone-aware datetime in a new timezone. - - Since this is the one time that we *know* we have an unambiguous - datetime object, we take this opportunity to determine whether the - datetime is ambiguous and in a "fold" state (e.g. if it's the first - occurrence, chronologically, of the ambiguous datetime). - - :param dt: - A timezone-aware :class:`datetime.datetime` object. - """ - dt_wall = self._fromutc(dt) - - # Calculate the fold status given the two datetimes. - _fold = self._fold_status(dt, dt_wall) - - # Set the default fold value for ambiguous dates - return enfold(dt_wall, fold=_fold) - - -class tzrangebase(_tzinfo): - """ - This is an abstract base class for time zones represented by an annual - transition into and out of DST. Child classes should implement the following - methods: - - * ``__init__(self, *args, **kwargs)`` - * ``transitions(self, year)`` - this is expected to return a tuple of - datetimes representing the DST on and off transitions in standard - time. - - A fully initialized ``tzrangebase`` subclass should also provide the - following attributes: - * ``hasdst``: Boolean whether or not the zone uses DST. - * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects - representing the respective UTC offsets. - * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short - abbreviations in DST and STD, respectively. - * ``_hasdst``: Whether or not the zone has DST. - - .. versionadded:: 2.6.0 - """ - def __init__(self): - raise NotImplementedError('tzrangebase is an abstract base class') - - def utcoffset(self, dt): - isdst = self._isdst(dt) - - if isdst is None: - return None - elif isdst: - return self._dst_offset - else: - return self._std_offset - - def dst(self, dt): - isdst = self._isdst(dt) - - if isdst is None: - return None - elif isdst: - return self._dst_base_offset - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - if self._isdst(dt): - return self._dst_abbr - else: - return self._std_abbr - - def fromutc(self, dt): - """ Given a datetime in UTC, return local time """ - if not isinstance(dt, datetime): - raise TypeError("fromutc() requires a datetime argument") - - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - # Get transitions - if there are none, fixed offset - transitions = self.transitions(dt.year) - if transitions is None: - return dt + self.utcoffset(dt) - - # Get the transition times in UTC - dston, dstoff = transitions - - dston -= self._std_offset - dstoff -= self._std_offset - - utc_transitions = (dston, dstoff) - dt_utc = dt.replace(tzinfo=None) - - isdst = self._naive_isdst(dt_utc, utc_transitions) - - if isdst: - dt_wall = dt + self._dst_offset - else: - dt_wall = dt + self._std_offset - - _fold = int(not isdst and self.is_ambiguous(dt_wall)) - - return enfold(dt_wall, fold=_fold) - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - if not self.hasdst: - return False - - start, end = self.transitions(dt.year) - - dt = dt.replace(tzinfo=None) - return (end <= dt < end + self._dst_base_offset) - - def _isdst(self, dt): - if not self.hasdst: - return False - elif dt is None: - return None - - transitions = self.transitions(dt.year) - - if transitions is None: - return False - - dt = dt.replace(tzinfo=None) - - isdst = self._naive_isdst(dt, transitions) - - # Handle ambiguous dates - if not isdst and self.is_ambiguous(dt): - return not self._fold(dt) - else: - return isdst - - def _naive_isdst(self, dt, transitions): - dston, dstoff = transitions - - dt = dt.replace(tzinfo=None) - - if dston < dstoff: - isdst = dston <= dt < dstoff - else: - isdst = not dstoff <= dt < dston - - return isdst - - @property - def _dst_base_offset(self): - return self._dst_offset - self._std_offset - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(...)" % self.__class__.__name__ - - __reduce__ = object.__reduce__ diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/_factories.py b/venv/lib/python3.10/site-packages/dateutil/tz/_factories.py deleted file mode 100644 index f8a6589..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tz/_factories.py +++ /dev/null @@ -1,80 +0,0 @@ -from datetime import timedelta -import weakref -from collections import OrderedDict - -from six.moves import _thread - - -class _TzSingleton(type): - def __init__(cls, *args, **kwargs): - cls.__instance = None - super(_TzSingleton, cls).__init__(*args, **kwargs) - - def __call__(cls): - if cls.__instance is None: - cls.__instance = super(_TzSingleton, cls).__call__() - return cls.__instance - - -class _TzFactory(type): - def instance(cls, *args, **kwargs): - """Alternate constructor that returns a fresh instance""" - return type.__call__(cls, *args, **kwargs) - - -class _TzOffsetFactory(_TzFactory): - def __init__(cls, *args, **kwargs): - cls.__instances = weakref.WeakValueDictionary() - cls.__strong_cache = OrderedDict() - cls.__strong_cache_size = 8 - - cls._cache_lock = _thread.allocate_lock() - - def __call__(cls, name, offset): - if isinstance(offset, timedelta): - key = (name, offset.total_seconds()) - else: - key = (name, offset) - - instance = cls.__instances.get(key, None) - if instance is None: - instance = cls.__instances.setdefault(key, - cls.instance(name, offset)) - - # This lock may not be necessary in Python 3. See GH issue #901 - with cls._cache_lock: - cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) - - # Remove an item if the strong cache is overpopulated - if len(cls.__strong_cache) > cls.__strong_cache_size: - cls.__strong_cache.popitem(last=False) - - return instance - - -class _TzStrFactory(_TzFactory): - def __init__(cls, *args, **kwargs): - cls.__instances = weakref.WeakValueDictionary() - cls.__strong_cache = OrderedDict() - cls.__strong_cache_size = 8 - - cls.__cache_lock = _thread.allocate_lock() - - def __call__(cls, s, posix_offset=False): - key = (s, posix_offset) - instance = cls.__instances.get(key, None) - - if instance is None: - instance = cls.__instances.setdefault(key, - cls.instance(s, posix_offset)) - - # This lock may not be necessary in Python 3. See GH issue #901 - with cls.__cache_lock: - cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) - - # Remove an item if the strong cache is overpopulated - if len(cls.__strong_cache) > cls.__strong_cache_size: - cls.__strong_cache.popitem(last=False) - - return instance - diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/tz.py b/venv/lib/python3.10/site-packages/dateutil/tz/tz.py deleted file mode 100644 index 6175914..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tz/tz.py +++ /dev/null @@ -1,1849 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers timezone implementations subclassing the abstract -:py:class:`datetime.tzinfo` type. There are classes to handle tzfile format -files (usually are in :file:`/etc/localtime`, :file:`/usr/share/zoneinfo`, -etc), TZ environment string (in all known formats), given ranges (with help -from relative deltas), local machine timezone, fixed offset timezone, and UTC -timezone. -""" -import datetime -import struct -import time -import sys -import os -import bisect -import weakref -from collections import OrderedDict - -import six -from six import string_types -from six.moves import _thread -from ._common import tzname_in_python2, _tzinfo -from ._common import tzrangebase, enfold -from ._common import _validate_fromutc_inputs - -from ._factories import _TzSingleton, _TzOffsetFactory -from ._factories import _TzStrFactory -try: - from .win import tzwin, tzwinlocal -except ImportError: - tzwin = tzwinlocal = None - -# For warning about rounding tzinfo -from warnings import warn - -ZERO = datetime.timedelta(0) -EPOCH = datetime.datetime(1970, 1, 1, 0, 0) -EPOCHORDINAL = EPOCH.toordinal() - - -@six.add_metaclass(_TzSingleton) -class tzutc(datetime.tzinfo): - """ - This is a tzinfo object that represents the UTC time zone. - - **Examples:** - - .. doctest:: - - >>> from datetime import * - >>> from dateutil.tz import * - - >>> datetime.now() - datetime.datetime(2003, 9, 27, 9, 40, 1, 521290) - - >>> datetime.now(tzutc()) - datetime.datetime(2003, 9, 27, 12, 40, 12, 156379, tzinfo=tzutc()) - - >>> datetime.now(tzutc()).tzname() - 'UTC' - - .. versionchanged:: 2.7.0 - ``tzutc()`` is now a singleton, so the result of ``tzutc()`` will - always return the same object. - - .. doctest:: - - >>> from dateutil.tz import tzutc, UTC - >>> tzutc() is tzutc() - True - >>> tzutc() is UTC - True - """ - def utcoffset(self, dt): - return ZERO - - def dst(self, dt): - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return "UTC" - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - return False - - @_validate_fromutc_inputs - def fromutc(self, dt): - """ - Fast track version of fromutc() returns the original ``dt`` object for - any valid :py:class:`datetime.datetime` object. - """ - return dt - - def __eq__(self, other): - if not isinstance(other, (tzutc, tzoffset)): - return NotImplemented - - return (isinstance(other, tzutc) or - (isinstance(other, tzoffset) and other._offset == ZERO)) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s()" % self.__class__.__name__ - - __reduce__ = object.__reduce__ - - -#: Convenience constant providing a :class:`tzutc()` instance -#: -#: .. versionadded:: 2.7.0 -UTC = tzutc() - - -@six.add_metaclass(_TzOffsetFactory) -class tzoffset(datetime.tzinfo): - """ - A simple class for representing a fixed offset from UTC. - - :param name: - The timezone name, to be returned when ``tzname()`` is called. - :param offset: - The time zone offset in seconds, or (since version 2.6.0, represented - as a :py:class:`datetime.timedelta` object). - """ - def __init__(self, name, offset): - self._name = name - - try: - # Allow a timedelta - offset = offset.total_seconds() - except (TypeError, AttributeError): - pass - - self._offset = datetime.timedelta(seconds=_get_supported_offset(offset)) - - def utcoffset(self, dt): - return self._offset - - def dst(self, dt): - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return self._name - - @_validate_fromutc_inputs - def fromutc(self, dt): - return dt + self._offset - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - return False - - def __eq__(self, other): - if not isinstance(other, tzoffset): - return NotImplemented - - return self._offset == other._offset - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(%s, %s)" % (self.__class__.__name__, - repr(self._name), - int(self._offset.total_seconds())) - - __reduce__ = object.__reduce__ - - -class tzlocal(_tzinfo): - """ - A :class:`tzinfo` subclass built around the ``time`` timezone functions. - """ - def __init__(self): - super(tzlocal, self).__init__() - - self._std_offset = datetime.timedelta(seconds=-time.timezone) - if time.daylight: - self._dst_offset = datetime.timedelta(seconds=-time.altzone) - else: - self._dst_offset = self._std_offset - - self._dst_saved = self._dst_offset - self._std_offset - self._hasdst = bool(self._dst_saved) - self._tznames = tuple(time.tzname) - - def utcoffset(self, dt): - if dt is None and self._hasdst: - return None - - if self._isdst(dt): - return self._dst_offset - else: - return self._std_offset - - def dst(self, dt): - if dt is None and self._hasdst: - return None - - if self._isdst(dt): - return self._dst_offset - self._std_offset - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return self._tznames[self._isdst(dt)] - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - naive_dst = self._naive_is_dst(dt) - return (not naive_dst and - (naive_dst != self._naive_is_dst(dt - self._dst_saved))) - - def _naive_is_dst(self, dt): - timestamp = _datetime_to_timestamp(dt) - return time.localtime(timestamp + time.timezone).tm_isdst - - def _isdst(self, dt, fold_naive=True): - # We can't use mktime here. It is unstable when deciding if - # the hour near to a change is DST or not. - # - # timestamp = time.mktime((dt.year, dt.month, dt.day, dt.hour, - # dt.minute, dt.second, dt.weekday(), 0, -1)) - # return time.localtime(timestamp).tm_isdst - # - # The code above yields the following result: - # - # >>> import tz, datetime - # >>> t = tz.tzlocal() - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRDT' - # >>> datetime.datetime(2003,2,16,0,tzinfo=t).tzname() - # 'BRST' - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRST' - # >>> datetime.datetime(2003,2,15,22,tzinfo=t).tzname() - # 'BRDT' - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRDT' - # - # Here is a more stable implementation: - # - if not self._hasdst: - return False - - # Check for ambiguous times: - dstval = self._naive_is_dst(dt) - fold = getattr(dt, 'fold', None) - - if self.is_ambiguous(dt): - if fold is not None: - return not self._fold(dt) - else: - return True - - return dstval - - def __eq__(self, other): - if isinstance(other, tzlocal): - return (self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset) - elif isinstance(other, tzutc): - return (not self._hasdst and - self._tznames[0] in {'UTC', 'GMT'} and - self._std_offset == ZERO) - elif isinstance(other, tzoffset): - return (not self._hasdst and - self._tznames[0] == other._name and - self._std_offset == other._offset) - else: - return NotImplemented - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s()" % self.__class__.__name__ - - __reduce__ = object.__reduce__ - - -class _ttinfo(object): - __slots__ = ["offset", "delta", "isdst", "abbr", - "isstd", "isgmt", "dstoffset"] - - def __init__(self): - for attr in self.__slots__: - setattr(self, attr, None) - - def __repr__(self): - l = [] - for attr in self.__slots__: - value = getattr(self, attr) - if value is not None: - l.append("%s=%s" % (attr, repr(value))) - return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) - - def __eq__(self, other): - if not isinstance(other, _ttinfo): - return NotImplemented - - return (self.offset == other.offset and - self.delta == other.delta and - self.isdst == other.isdst and - self.abbr == other.abbr and - self.isstd == other.isstd and - self.isgmt == other.isgmt and - self.dstoffset == other.dstoffset) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __getstate__(self): - state = {} - for name in self.__slots__: - state[name] = getattr(self, name, None) - return state - - def __setstate__(self, state): - for name in self.__slots__: - if name in state: - setattr(self, name, state[name]) - - -class _tzfile(object): - """ - Lightweight class for holding the relevant transition and time zone - information read from binary tzfiles. - """ - attrs = ['trans_list', 'trans_list_utc', 'trans_idx', 'ttinfo_list', - 'ttinfo_std', 'ttinfo_dst', 'ttinfo_before', 'ttinfo_first'] - - def __init__(self, **kwargs): - for attr in self.attrs: - setattr(self, attr, kwargs.get(attr, None)) - - -class tzfile(_tzinfo): - """ - This is a ``tzinfo`` subclass that allows one to use the ``tzfile(5)`` - format timezone files to extract current and historical zone information. - - :param fileobj: - This can be an opened file stream or a file name that the time zone - information can be read from. - - :param filename: - This is an optional parameter specifying the source of the time zone - information in the event that ``fileobj`` is a file object. If omitted - and ``fileobj`` is a file stream, this parameter will be set either to - ``fileobj``'s ``name`` attribute or to ``repr(fileobj)``. - - See `Sources for Time Zone and Daylight Saving Time Data - `_ for more information. - Time zone files can be compiled from the `IANA Time Zone database files - `_ with the `zic time zone compiler - `_ - - .. note:: - - Only construct a ``tzfile`` directly if you have a specific timezone - file on disk that you want to read into a Python ``tzinfo`` object. - If you want to get a ``tzfile`` representing a specific IANA zone, - (e.g. ``'America/New_York'``), you should call - :func:`dateutil.tz.gettz` with the zone identifier. - - - **Examples:** - - Using the US Eastern time zone as an example, we can see that a ``tzfile`` - provides time zone information for the standard Daylight Saving offsets: - - .. testsetup:: tzfile - - from dateutil.tz import gettz - from datetime import datetime - - .. doctest:: tzfile - - >>> NYC = gettz('America/New_York') - >>> NYC - tzfile('/usr/share/zoneinfo/America/New_York') - - >>> print(datetime(2016, 1, 3, tzinfo=NYC)) # EST - 2016-01-03 00:00:00-05:00 - - >>> print(datetime(2016, 7, 7, tzinfo=NYC)) # EDT - 2016-07-07 00:00:00-04:00 - - - The ``tzfile`` structure contains a fully history of the time zone, - so historical dates will also have the right offsets. For example, before - the adoption of the UTC standards, New York used local solar mean time: - - .. doctest:: tzfile - - >>> print(datetime(1901, 4, 12, tzinfo=NYC)) # LMT - 1901-04-12 00:00:00-04:56 - - And during World War II, New York was on "Eastern War Time", which was a - state of permanent daylight saving time: - - .. doctest:: tzfile - - >>> print(datetime(1944, 2, 7, tzinfo=NYC)) # EWT - 1944-02-07 00:00:00-04:00 - - """ - - def __init__(self, fileobj, filename=None): - super(tzfile, self).__init__() - - file_opened_here = False - if isinstance(fileobj, string_types): - self._filename = fileobj - fileobj = open(fileobj, 'rb') - file_opened_here = True - elif filename is not None: - self._filename = filename - elif hasattr(fileobj, "name"): - self._filename = fileobj.name - else: - self._filename = repr(fileobj) - - if fileobj is not None: - if not file_opened_here: - fileobj = _nullcontext(fileobj) - - with fileobj as file_stream: - tzobj = self._read_tzfile(file_stream) - - self._set_tzdata(tzobj) - - def _set_tzdata(self, tzobj): - """ Set the time zone data of this object from a _tzfile object """ - # Copy the relevant attributes over as private attributes - for attr in _tzfile.attrs: - setattr(self, '_' + attr, getattr(tzobj, attr)) - - def _read_tzfile(self, fileobj): - out = _tzfile() - - # From tzfile(5): - # - # The time zone information files used by tzset(3) - # begin with the magic characters "TZif" to identify - # them as time zone information files, followed by - # sixteen bytes reserved for future use, followed by - # six four-byte values of type long, written in a - # ``standard'' byte order (the high-order byte - # of the value is written first). - if fileobj.read(4).decode() != "TZif": - raise ValueError("magic not found") - - fileobj.read(16) - - ( - # The number of UTC/local indicators stored in the file. - ttisgmtcnt, - - # The number of standard/wall indicators stored in the file. - ttisstdcnt, - - # The number of leap seconds for which data is - # stored in the file. - leapcnt, - - # The number of "transition times" for which data - # is stored in the file. - timecnt, - - # The number of "local time types" for which data - # is stored in the file (must not be zero). - typecnt, - - # The number of characters of "time zone - # abbreviation strings" stored in the file. - charcnt, - - ) = struct.unpack(">6l", fileobj.read(24)) - - # The above header is followed by tzh_timecnt four-byte - # values of type long, sorted in ascending order. - # These values are written in ``standard'' byte order. - # Each is used as a transition time (as returned by - # time(2)) at which the rules for computing local time - # change. - - if timecnt: - out.trans_list_utc = list(struct.unpack(">%dl" % timecnt, - fileobj.read(timecnt*4))) - else: - out.trans_list_utc = [] - - # Next come tzh_timecnt one-byte values of type unsigned - # char; each one tells which of the different types of - # ``local time'' types described in the file is associated - # with the same-indexed transition time. These values - # serve as indices into an array of ttinfo structures that - # appears next in the file. - - if timecnt: - out.trans_idx = struct.unpack(">%dB" % timecnt, - fileobj.read(timecnt)) - else: - out.trans_idx = [] - - # Each ttinfo structure is written as a four-byte value - # for tt_gmtoff of type long, in a standard byte - # order, followed by a one-byte value for tt_isdst - # and a one-byte value for tt_abbrind. In each - # structure, tt_gmtoff gives the number of - # seconds to be added to UTC, tt_isdst tells whether - # tm_isdst should be set by localtime(3), and - # tt_abbrind serves as an index into the array of - # time zone abbreviation characters that follow the - # ttinfo structure(s) in the file. - - ttinfo = [] - - for i in range(typecnt): - ttinfo.append(struct.unpack(">lbb", fileobj.read(6))) - - abbr = fileobj.read(charcnt).decode() - - # Then there are tzh_leapcnt pairs of four-byte - # values, written in standard byte order; the - # first value of each pair gives the time (as - # returned by time(2)) at which a leap second - # occurs; the second gives the total number of - # leap seconds to be applied after the given time. - # The pairs of values are sorted in ascending order - # by time. - - # Not used, for now (but seek for correct file position) - if leapcnt: - fileobj.seek(leapcnt * 8, os.SEEK_CUR) - - # Then there are tzh_ttisstdcnt standard/wall - # indicators, each stored as a one-byte value; - # they tell whether the transition times associated - # with local time types were specified as standard - # time or wall clock time, and are used when - # a time zone file is used in handling POSIX-style - # time zone environment variables. - - if ttisstdcnt: - isstd = struct.unpack(">%db" % ttisstdcnt, - fileobj.read(ttisstdcnt)) - - # Finally, there are tzh_ttisgmtcnt UTC/local - # indicators, each stored as a one-byte value; - # they tell whether the transition times associated - # with local time types were specified as UTC or - # local time, and are used when a time zone file - # is used in handling POSIX-style time zone envi- - # ronment variables. - - if ttisgmtcnt: - isgmt = struct.unpack(">%db" % ttisgmtcnt, - fileobj.read(ttisgmtcnt)) - - # Build ttinfo list - out.ttinfo_list = [] - for i in range(typecnt): - gmtoff, isdst, abbrind = ttinfo[i] - gmtoff = _get_supported_offset(gmtoff) - tti = _ttinfo() - tti.offset = gmtoff - tti.dstoffset = datetime.timedelta(0) - tti.delta = datetime.timedelta(seconds=gmtoff) - tti.isdst = isdst - tti.abbr = abbr[abbrind:abbr.find('\x00', abbrind)] - tti.isstd = (ttisstdcnt > i and isstd[i] != 0) - tti.isgmt = (ttisgmtcnt > i and isgmt[i] != 0) - out.ttinfo_list.append(tti) - - # Replace ttinfo indexes for ttinfo objects. - out.trans_idx = [out.ttinfo_list[idx] for idx in out.trans_idx] - - # Set standard, dst, and before ttinfos. before will be - # used when a given time is before any transitions, - # and will be set to the first non-dst ttinfo, or to - # the first dst, if all of them are dst. - out.ttinfo_std = None - out.ttinfo_dst = None - out.ttinfo_before = None - if out.ttinfo_list: - if not out.trans_list_utc: - out.ttinfo_std = out.ttinfo_first = out.ttinfo_list[0] - else: - for i in range(timecnt-1, -1, -1): - tti = out.trans_idx[i] - if not out.ttinfo_std and not tti.isdst: - out.ttinfo_std = tti - elif not out.ttinfo_dst and tti.isdst: - out.ttinfo_dst = tti - - if out.ttinfo_std and out.ttinfo_dst: - break - else: - if out.ttinfo_dst and not out.ttinfo_std: - out.ttinfo_std = out.ttinfo_dst - - for tti in out.ttinfo_list: - if not tti.isdst: - out.ttinfo_before = tti - break - else: - out.ttinfo_before = out.ttinfo_list[0] - - # Now fix transition times to become relative to wall time. - # - # I'm not sure about this. In my tests, the tz source file - # is setup to wall time, and in the binary file isstd and - # isgmt are off, so it should be in wall time. OTOH, it's - # always in gmt time. Let me know if you have comments - # about this. - lastdst = None - lastoffset = None - lastdstoffset = None - lastbaseoffset = None - out.trans_list = [] - - for i, tti in enumerate(out.trans_idx): - offset = tti.offset - dstoffset = 0 - - if lastdst is not None: - if tti.isdst: - if not lastdst: - dstoffset = offset - lastoffset - - if not dstoffset and lastdstoffset: - dstoffset = lastdstoffset - - tti.dstoffset = datetime.timedelta(seconds=dstoffset) - lastdstoffset = dstoffset - - # If a time zone changes its base offset during a DST transition, - # then you need to adjust by the previous base offset to get the - # transition time in local time. Otherwise you use the current - # base offset. Ideally, I would have some mathematical proof of - # why this is true, but I haven't really thought about it enough. - baseoffset = offset - dstoffset - adjustment = baseoffset - if (lastbaseoffset is not None and baseoffset != lastbaseoffset - and tti.isdst != lastdst): - # The base DST has changed - adjustment = lastbaseoffset - - lastdst = tti.isdst - lastoffset = offset - lastbaseoffset = baseoffset - - out.trans_list.append(out.trans_list_utc[i] + adjustment) - - out.trans_idx = tuple(out.trans_idx) - out.trans_list = tuple(out.trans_list) - out.trans_list_utc = tuple(out.trans_list_utc) - - return out - - def _find_last_transition(self, dt, in_utc=False): - # If there's no list, there are no transitions to find - if not self._trans_list: - return None - - timestamp = _datetime_to_timestamp(dt) - - # Find where the timestamp fits in the transition list - if the - # timestamp is a transition time, it's part of the "after" period. - trans_list = self._trans_list_utc if in_utc else self._trans_list - idx = bisect.bisect_right(trans_list, timestamp) - - # We want to know when the previous transition was, so subtract off 1 - return idx - 1 - - def _get_ttinfo(self, idx): - # For no list or after the last transition, default to _ttinfo_std - if idx is None or (idx + 1) >= len(self._trans_list): - return self._ttinfo_std - - # If there is a list and the time is before it, return _ttinfo_before - if idx < 0: - return self._ttinfo_before - - return self._trans_idx[idx] - - def _find_ttinfo(self, dt): - idx = self._resolve_ambiguous_time(dt) - - return self._get_ttinfo(idx) - - def fromutc(self, dt): - """ - The ``tzfile`` implementation of :py:func:`datetime.tzinfo.fromutc`. - - :param dt: - A :py:class:`datetime.datetime` object. - - :raises TypeError: - Raised if ``dt`` is not a :py:class:`datetime.datetime` object. - - :raises ValueError: - Raised if this is called with a ``dt`` which does not have this - ``tzinfo`` attached. - - :return: - Returns a :py:class:`datetime.datetime` object representing the - wall time in ``self``'s time zone. - """ - # These isinstance checks are in datetime.tzinfo, so we'll preserve - # them, even if we don't care about duck typing. - if not isinstance(dt, datetime.datetime): - raise TypeError("fromutc() requires a datetime argument") - - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - # First treat UTC as wall time and get the transition we're in. - idx = self._find_last_transition(dt, in_utc=True) - tti = self._get_ttinfo(idx) - - dt_out = dt + datetime.timedelta(seconds=tti.offset) - - fold = self.is_ambiguous(dt_out, idx=idx) - - return enfold(dt_out, fold=int(fold)) - - def is_ambiguous(self, dt, idx=None): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - if idx is None: - idx = self._find_last_transition(dt) - - # Calculate the difference in offsets from current to previous - timestamp = _datetime_to_timestamp(dt) - tti = self._get_ttinfo(idx) - - if idx is None or idx <= 0: - return False - - od = self._get_ttinfo(idx - 1).offset - tti.offset - tt = self._trans_list[idx] # Transition time - - return timestamp < tt + od - - def _resolve_ambiguous_time(self, dt): - idx = self._find_last_transition(dt) - - # If we have no transitions, return the index - _fold = self._fold(dt) - if idx is None or idx == 0: - return idx - - # If it's ambiguous and we're in a fold, shift to a different index. - idx_offset = int(not _fold and self.is_ambiguous(dt, idx)) - - return idx - idx_offset - - def utcoffset(self, dt): - if dt is None: - return None - - if not self._ttinfo_std: - return ZERO - - return self._find_ttinfo(dt).delta - - def dst(self, dt): - if dt is None: - return None - - if not self._ttinfo_dst: - return ZERO - - tti = self._find_ttinfo(dt) - - if not tti.isdst: - return ZERO - - # The documentation says that utcoffset()-dst() must - # be constant for every dt. - return tti.dstoffset - - @tzname_in_python2 - def tzname(self, dt): - if not self._ttinfo_std or dt is None: - return None - return self._find_ttinfo(dt).abbr - - def __eq__(self, other): - if not isinstance(other, tzfile): - return NotImplemented - return (self._trans_list == other._trans_list and - self._trans_idx == other._trans_idx and - self._ttinfo_list == other._ttinfo_list) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._filename)) - - def __reduce__(self): - return self.__reduce_ex__(None) - - def __reduce_ex__(self, protocol): - return (self.__class__, (None, self._filename), self.__dict__) - - -class tzrange(tzrangebase): - """ - The ``tzrange`` object is a time zone specified by a set of offsets and - abbreviations, equivalent to the way the ``TZ`` variable can be specified - in POSIX-like systems, but using Python delta objects to specify DST - start, end and offsets. - - :param stdabbr: - The abbreviation for standard time (e.g. ``'EST'``). - - :param stdoffset: - An integer or :class:`datetime.timedelta` object or equivalent - specifying the base offset from UTC. - - If unspecified, +00:00 is used. - - :param dstabbr: - The abbreviation for DST / "Summer" time (e.g. ``'EDT'``). - - If specified, with no other DST information, DST is assumed to occur - and the default behavior or ``dstoffset``, ``start`` and ``end`` is - used. If unspecified and no other DST information is specified, it - is assumed that this zone has no DST. - - If this is unspecified and other DST information is *is* specified, - DST occurs in the zone but the time zone abbreviation is left - unchanged. - - :param dstoffset: - A an integer or :class:`datetime.timedelta` object or equivalent - specifying the UTC offset during DST. If unspecified and any other DST - information is specified, it is assumed to be the STD offset +1 hour. - - :param start: - A :class:`relativedelta.relativedelta` object or equivalent specifying - the time and time of year that daylight savings time starts. To - specify, for example, that DST starts at 2AM on the 2nd Sunday in - March, pass: - - ``relativedelta(hours=2, month=3, day=1, weekday=SU(+2))`` - - If unspecified and any other DST information is specified, the default - value is 2 AM on the first Sunday in April. - - :param end: - A :class:`relativedelta.relativedelta` object or equivalent - representing the time and time of year that daylight savings time - ends, with the same specification method as in ``start``. One note is - that this should point to the first time in the *standard* zone, so if - a transition occurs at 2AM in the DST zone and the clocks are set back - 1 hour to 1AM, set the ``hours`` parameter to +1. - - - **Examples:** - - .. testsetup:: tzrange - - from dateutil.tz import tzrange, tzstr - - .. doctest:: tzrange - - >>> tzstr('EST5EDT') == tzrange("EST", -18000, "EDT") - True - - >>> from dateutil.relativedelta import * - >>> range1 = tzrange("EST", -18000, "EDT") - >>> range2 = tzrange("EST", -18000, "EDT", -14400, - ... relativedelta(hours=+2, month=4, day=1, - ... weekday=SU(+1)), - ... relativedelta(hours=+1, month=10, day=31, - ... weekday=SU(-1))) - >>> tzstr('EST5EDT') == range1 == range2 - True - - """ - def __init__(self, stdabbr, stdoffset=None, - dstabbr=None, dstoffset=None, - start=None, end=None): - - global relativedelta - from dateutil import relativedelta - - self._std_abbr = stdabbr - self._dst_abbr = dstabbr - - try: - stdoffset = stdoffset.total_seconds() - except (TypeError, AttributeError): - pass - - try: - dstoffset = dstoffset.total_seconds() - except (TypeError, AttributeError): - pass - - if stdoffset is not None: - self._std_offset = datetime.timedelta(seconds=stdoffset) - else: - self._std_offset = ZERO - - if dstoffset is not None: - self._dst_offset = datetime.timedelta(seconds=dstoffset) - elif dstabbr and stdoffset is not None: - self._dst_offset = self._std_offset + datetime.timedelta(hours=+1) - else: - self._dst_offset = ZERO - - if dstabbr and start is None: - self._start_delta = relativedelta.relativedelta( - hours=+2, month=4, day=1, weekday=relativedelta.SU(+1)) - else: - self._start_delta = start - - if dstabbr and end is None: - self._end_delta = relativedelta.relativedelta( - hours=+1, month=10, day=31, weekday=relativedelta.SU(-1)) - else: - self._end_delta = end - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = bool(self._start_delta) - - def transitions(self, year): - """ - For a given year, get the DST on and off transition times, expressed - always on the standard time side. For zones with no transitions, this - function returns ``None``. - - :param year: - The year whose transitions you would like to query. - - :return: - Returns a :class:`tuple` of :class:`datetime.datetime` objects, - ``(dston, dstoff)`` for zones with an annual DST transition, or - ``None`` for fixed offset zones. - """ - if not self.hasdst: - return None - - base_year = datetime.datetime(year, 1, 1) - - start = base_year + self._start_delta - end = base_year + self._end_delta - - return (start, end) - - def __eq__(self, other): - if not isinstance(other, tzrange): - return NotImplemented - - return (self._std_abbr == other._std_abbr and - self._dst_abbr == other._dst_abbr and - self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset and - self._start_delta == other._start_delta and - self._end_delta == other._end_delta) - - @property - def _dst_base_offset(self): - return self._dst_base_offset_ - - -@six.add_metaclass(_TzStrFactory) -class tzstr(tzrange): - """ - ``tzstr`` objects are time zone objects specified by a time-zone string as - it would be passed to a ``TZ`` variable on POSIX-style systems (see - the `GNU C Library: TZ Variable`_ for more details). - - There is one notable exception, which is that POSIX-style time zones use an - inverted offset format, so normally ``GMT+3`` would be parsed as an offset - 3 hours *behind* GMT. The ``tzstr`` time zone object will parse this as an - offset 3 hours *ahead* of GMT. If you would like to maintain the POSIX - behavior, pass a ``True`` value to ``posix_offset``. - - The :class:`tzrange` object provides the same functionality, but is - specified using :class:`relativedelta.relativedelta` objects. rather than - strings. - - :param s: - A time zone string in ``TZ`` variable format. This can be a - :class:`bytes` (2.x: :class:`str`), :class:`str` (2.x: - :class:`unicode`) or a stream emitting unicode characters - (e.g. :class:`StringIO`). - - :param posix_offset: - Optional. If set to ``True``, interpret strings such as ``GMT+3`` or - ``UTC+3`` as being 3 hours *behind* UTC rather than ahead, per the - POSIX standard. - - .. caution:: - - Prior to version 2.7.0, this function also supported time zones - in the format: - - * ``EST5EDT,4,0,6,7200,10,0,26,7200,3600`` - * ``EST5EDT,4,1,0,7200,10,-1,0,7200,3600`` - - This format is non-standard and has been deprecated; this function - will raise a :class:`DeprecatedTZFormatWarning` until - support is removed in a future version. - - .. _`GNU C Library: TZ Variable`: - https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html - """ - def __init__(self, s, posix_offset=False): - global parser - from dateutil.parser import _parser as parser - - self._s = s - - res = parser._parsetz(s) - if res is None or res.any_unused_tokens: - raise ValueError("unknown string format") - - # Here we break the compatibility with the TZ variable handling. - # GMT-3 actually *means* the timezone -3. - if res.stdabbr in ("GMT", "UTC") and not posix_offset: - res.stdoffset *= -1 - - # We must initialize it first, since _delta() needs - # _std_offset and _dst_offset set. Use False in start/end - # to avoid building it two times. - tzrange.__init__(self, res.stdabbr, res.stdoffset, - res.dstabbr, res.dstoffset, - start=False, end=False) - - if not res.dstabbr: - self._start_delta = None - self._end_delta = None - else: - self._start_delta = self._delta(res.start) - if self._start_delta: - self._end_delta = self._delta(res.end, isend=1) - - self.hasdst = bool(self._start_delta) - - def _delta(self, x, isend=0): - from dateutil import relativedelta - kwargs = {} - if x.month is not None: - kwargs["month"] = x.month - if x.weekday is not None: - kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week) - if x.week > 0: - kwargs["day"] = 1 - else: - kwargs["day"] = 31 - elif x.day: - kwargs["day"] = x.day - elif x.yday is not None: - kwargs["yearday"] = x.yday - elif x.jyday is not None: - kwargs["nlyearday"] = x.jyday - if not kwargs: - # Default is to start on first sunday of april, and end - # on last sunday of october. - if not isend: - kwargs["month"] = 4 - kwargs["day"] = 1 - kwargs["weekday"] = relativedelta.SU(+1) - else: - kwargs["month"] = 10 - kwargs["day"] = 31 - kwargs["weekday"] = relativedelta.SU(-1) - if x.time is not None: - kwargs["seconds"] = x.time - else: - # Default is 2AM. - kwargs["seconds"] = 7200 - if isend: - # Convert to standard time, to follow the documented way - # of working with the extra hour. See the documentation - # of the tzinfo class. - delta = self._dst_offset - self._std_offset - kwargs["seconds"] -= delta.seconds + delta.days * 86400 - return relativedelta.relativedelta(**kwargs) - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._s)) - - -class _tzicalvtzcomp(object): - def __init__(self, tzoffsetfrom, tzoffsetto, isdst, - tzname=None, rrule=None): - self.tzoffsetfrom = datetime.timedelta(seconds=tzoffsetfrom) - self.tzoffsetto = datetime.timedelta(seconds=tzoffsetto) - self.tzoffsetdiff = self.tzoffsetto - self.tzoffsetfrom - self.isdst = isdst - self.tzname = tzname - self.rrule = rrule - - -class _tzicalvtz(_tzinfo): - def __init__(self, tzid, comps=[]): - super(_tzicalvtz, self).__init__() - - self._tzid = tzid - self._comps = comps - self._cachedate = [] - self._cachecomp = [] - self._cache_lock = _thread.allocate_lock() - - def _find_comp(self, dt): - if len(self._comps) == 1: - return self._comps[0] - - dt = dt.replace(tzinfo=None) - - try: - with self._cache_lock: - return self._cachecomp[self._cachedate.index( - (dt, self._fold(dt)))] - except ValueError: - pass - - lastcompdt = None - lastcomp = None - - for comp in self._comps: - compdt = self._find_compdt(comp, dt) - - if compdt and (not lastcompdt or lastcompdt < compdt): - lastcompdt = compdt - lastcomp = comp - - if not lastcomp: - # RFC says nothing about what to do when a given - # time is before the first onset date. We'll look for the - # first standard component, or the first component, if - # none is found. - for comp in self._comps: - if not comp.isdst: - lastcomp = comp - break - else: - lastcomp = comp[0] - - with self._cache_lock: - self._cachedate.insert(0, (dt, self._fold(dt))) - self._cachecomp.insert(0, lastcomp) - - if len(self._cachedate) > 10: - self._cachedate.pop() - self._cachecomp.pop() - - return lastcomp - - def _find_compdt(self, comp, dt): - if comp.tzoffsetdiff < ZERO and self._fold(dt): - dt -= comp.tzoffsetdiff - - compdt = comp.rrule.before(dt, inc=True) - - return compdt - - def utcoffset(self, dt): - if dt is None: - return None - - return self._find_comp(dt).tzoffsetto - - def dst(self, dt): - comp = self._find_comp(dt) - if comp.isdst: - return comp.tzoffsetdiff - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return self._find_comp(dt).tzname - - def __repr__(self): - return "" % repr(self._tzid) - - __reduce__ = object.__reduce__ - - -class tzical(object): - """ - This object is designed to parse an iCalendar-style ``VTIMEZONE`` structure - as set out in `RFC 5545`_ Section 4.6.5 into one or more `tzinfo` objects. - - :param `fileobj`: - A file or stream in iCalendar format, which should be UTF-8 encoded - with CRLF endings. - - .. _`RFC 5545`: https://tools.ietf.org/html/rfc5545 - """ - def __init__(self, fileobj): - global rrule - from dateutil import rrule - - if isinstance(fileobj, string_types): - self._s = fileobj - # ical should be encoded in UTF-8 with CRLF - fileobj = open(fileobj, 'r') - else: - self._s = getattr(fileobj, 'name', repr(fileobj)) - fileobj = _nullcontext(fileobj) - - self._vtz = {} - - with fileobj as fobj: - self._parse_rfc(fobj.read()) - - def keys(self): - """ - Retrieves the available time zones as a list. - """ - return list(self._vtz.keys()) - - def get(self, tzid=None): - """ - Retrieve a :py:class:`datetime.tzinfo` object by its ``tzid``. - - :param tzid: - If there is exactly one time zone available, omitting ``tzid`` - or passing :py:const:`None` value returns it. Otherwise a valid - key (which can be retrieved from :func:`keys`) is required. - - :raises ValueError: - Raised if ``tzid`` is not specified but there are either more - or fewer than 1 zone defined. - - :returns: - Returns either a :py:class:`datetime.tzinfo` object representing - the relevant time zone or :py:const:`None` if the ``tzid`` was - not found. - """ - if tzid is None: - if len(self._vtz) == 0: - raise ValueError("no timezones defined") - elif len(self._vtz) > 1: - raise ValueError("more than one timezone available") - tzid = next(iter(self._vtz)) - - return self._vtz.get(tzid) - - def _parse_offset(self, s): - s = s.strip() - if not s: - raise ValueError("empty offset") - if s[0] in ('+', '-'): - signal = (-1, +1)[s[0] == '+'] - s = s[1:] - else: - signal = +1 - if len(s) == 4: - return (int(s[:2]) * 3600 + int(s[2:]) * 60) * signal - elif len(s) == 6: - return (int(s[:2]) * 3600 + int(s[2:4]) * 60 + int(s[4:])) * signal - else: - raise ValueError("invalid offset: " + s) - - def _parse_rfc(self, s): - lines = s.splitlines() - if not lines: - raise ValueError("empty string") - - # Unfold - i = 0 - while i < len(lines): - line = lines[i].rstrip() - if not line: - del lines[i] - elif i > 0 and line[0] == " ": - lines[i-1] += line[1:] - del lines[i] - else: - i += 1 - - tzid = None - comps = [] - invtz = False - comptype = None - for line in lines: - if not line: - continue - name, value = line.split(':', 1) - parms = name.split(';') - if not parms: - raise ValueError("empty property name") - name = parms[0].upper() - parms = parms[1:] - if invtz: - if name == "BEGIN": - if value in ("STANDARD", "DAYLIGHT"): - # Process component - pass - else: - raise ValueError("unknown component: "+value) - comptype = value - founddtstart = False - tzoffsetfrom = None - tzoffsetto = None - rrulelines = [] - tzname = None - elif name == "END": - if value == "VTIMEZONE": - if comptype: - raise ValueError("component not closed: "+comptype) - if not tzid: - raise ValueError("mandatory TZID not found") - if not comps: - raise ValueError( - "at least one component is needed") - # Process vtimezone - self._vtz[tzid] = _tzicalvtz(tzid, comps) - invtz = False - elif value == comptype: - if not founddtstart: - raise ValueError("mandatory DTSTART not found") - if tzoffsetfrom is None: - raise ValueError( - "mandatory TZOFFSETFROM not found") - if tzoffsetto is None: - raise ValueError( - "mandatory TZOFFSETFROM not found") - # Process component - rr = None - if rrulelines: - rr = rrule.rrulestr("\n".join(rrulelines), - compatible=True, - ignoretz=True, - cache=True) - comp = _tzicalvtzcomp(tzoffsetfrom, tzoffsetto, - (comptype == "DAYLIGHT"), - tzname, rr) - comps.append(comp) - comptype = None - else: - raise ValueError("invalid component end: "+value) - elif comptype: - if name == "DTSTART": - # DTSTART in VTIMEZONE takes a subset of valid RRULE - # values under RFC 5545. - for parm in parms: - if parm != 'VALUE=DATE-TIME': - msg = ('Unsupported DTSTART param in ' + - 'VTIMEZONE: ' + parm) - raise ValueError(msg) - rrulelines.append(line) - founddtstart = True - elif name in ("RRULE", "RDATE", "EXRULE", "EXDATE"): - rrulelines.append(line) - elif name == "TZOFFSETFROM": - if parms: - raise ValueError( - "unsupported %s parm: %s " % (name, parms[0])) - tzoffsetfrom = self._parse_offset(value) - elif name == "TZOFFSETTO": - if parms: - raise ValueError( - "unsupported TZOFFSETTO parm: "+parms[0]) - tzoffsetto = self._parse_offset(value) - elif name == "TZNAME": - if parms: - raise ValueError( - "unsupported TZNAME parm: "+parms[0]) - tzname = value - elif name == "COMMENT": - pass - else: - raise ValueError("unsupported property: "+name) - else: - if name == "TZID": - if parms: - raise ValueError( - "unsupported TZID parm: "+parms[0]) - tzid = value - elif name in ("TZURL", "LAST-MODIFIED", "COMMENT"): - pass - else: - raise ValueError("unsupported property: "+name) - elif name == "BEGIN" and value == "VTIMEZONE": - tzid = None - comps = [] - invtz = True - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._s)) - - -if sys.platform != "win32": - TZFILES = ["/etc/localtime", "localtime"] - TZPATHS = ["/usr/share/zoneinfo", - "/usr/lib/zoneinfo", - "/usr/share/lib/zoneinfo", - "/etc/zoneinfo"] -else: - TZFILES = [] - TZPATHS = [] - - -def __get_gettz(): - tzlocal_classes = (tzlocal,) - if tzwinlocal is not None: - tzlocal_classes += (tzwinlocal,) - - class GettzFunc(object): - """ - Retrieve a time zone object from a string representation - - This function is intended to retrieve the :py:class:`tzinfo` subclass - that best represents the time zone that would be used if a POSIX - `TZ variable`_ were set to the same value. - - If no argument or an empty string is passed to ``gettz``, local time - is returned: - - .. code-block:: python3 - - >>> gettz() - tzfile('/etc/localtime') - - This function is also the preferred way to map IANA tz database keys - to :class:`tzfile` objects: - - .. code-block:: python3 - - >>> gettz('Pacific/Kiritimati') - tzfile('/usr/share/zoneinfo/Pacific/Kiritimati') - - On Windows, the standard is extended to include the Windows-specific - zone names provided by the operating system: - - .. code-block:: python3 - - >>> gettz('Egypt Standard Time') - tzwin('Egypt Standard Time') - - Passing a GNU ``TZ`` style string time zone specification returns a - :class:`tzstr` object: - - .. code-block:: python3 - - >>> gettz('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') - tzstr('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') - - :param name: - A time zone name (IANA, or, on Windows, Windows keys), location of - a ``tzfile(5)`` zoneinfo file or ``TZ`` variable style time zone - specifier. An empty string, no argument or ``None`` is interpreted - as local time. - - :return: - Returns an instance of one of ``dateutil``'s :py:class:`tzinfo` - subclasses. - - .. versionchanged:: 2.7.0 - - After version 2.7.0, any two calls to ``gettz`` using the same - input strings will return the same object: - - .. code-block:: python3 - - >>> tz.gettz('America/Chicago') is tz.gettz('America/Chicago') - True - - In addition to improving performance, this ensures that - `"same zone" semantics`_ are used for datetimes in the same zone. - - - .. _`TZ variable`: - https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html - - .. _`"same zone" semantics`: - https://blog.ganssle.io/articles/2018/02/aware-datetime-arithmetic.html - """ - def __init__(self): - - self.__instances = weakref.WeakValueDictionary() - self.__strong_cache_size = 8 - self.__strong_cache = OrderedDict() - self._cache_lock = _thread.allocate_lock() - - def __call__(self, name=None): - with self._cache_lock: - rv = self.__instances.get(name, None) - - if rv is None: - rv = self.nocache(name=name) - if not (name is None - or isinstance(rv, tzlocal_classes) - or rv is None): - # tzlocal is slightly more complicated than the other - # time zone providers because it depends on environment - # at construction time, so don't cache that. - # - # We also cannot store weak references to None, so we - # will also not store that. - self.__instances[name] = rv - else: - # No need for strong caching, return immediately - return rv - - self.__strong_cache[name] = self.__strong_cache.pop(name, rv) - - if len(self.__strong_cache) > self.__strong_cache_size: - self.__strong_cache.popitem(last=False) - - return rv - - def set_cache_size(self, size): - with self._cache_lock: - self.__strong_cache_size = size - while len(self.__strong_cache) > size: - self.__strong_cache.popitem(last=False) - - def cache_clear(self): - with self._cache_lock: - self.__instances = weakref.WeakValueDictionary() - self.__strong_cache.clear() - - @staticmethod - def nocache(name=None): - """A non-cached version of gettz""" - tz = None - if not name: - try: - name = os.environ["TZ"] - except KeyError: - pass - if name is None or name in ("", ":"): - for filepath in TZFILES: - if not os.path.isabs(filepath): - filename = filepath - for path in TZPATHS: - filepath = os.path.join(path, filename) - if os.path.isfile(filepath): - break - else: - continue - if os.path.isfile(filepath): - try: - tz = tzfile(filepath) - break - except (IOError, OSError, ValueError): - pass - else: - tz = tzlocal() - else: - try: - if name.startswith(":"): - name = name[1:] - except TypeError as e: - if isinstance(name, bytes): - new_msg = "gettz argument should be str, not bytes" - six.raise_from(TypeError(new_msg), e) - else: - raise - if os.path.isabs(name): - if os.path.isfile(name): - tz = tzfile(name) - else: - tz = None - else: - for path in TZPATHS: - filepath = os.path.join(path, name) - if not os.path.isfile(filepath): - filepath = filepath.replace(' ', '_') - if not os.path.isfile(filepath): - continue - try: - tz = tzfile(filepath) - break - except (IOError, OSError, ValueError): - pass - else: - tz = None - if tzwin is not None: - try: - tz = tzwin(name) - except (WindowsError, UnicodeEncodeError): - # UnicodeEncodeError is for Python 2.7 compat - tz = None - - if not tz: - from dateutil.zoneinfo import get_zonefile_instance - tz = get_zonefile_instance().get(name) - - if not tz: - for c in name: - # name is not a tzstr unless it has at least - # one offset. For short values of "name", an - # explicit for loop seems to be the fastest way - # To determine if a string contains a digit - if c in "0123456789": - try: - tz = tzstr(name) - except ValueError: - pass - break - else: - if name in ("GMT", "UTC"): - tz = UTC - elif name in time.tzname: - tz = tzlocal() - return tz - - return GettzFunc() - - -gettz = __get_gettz() -del __get_gettz - - -def datetime_exists(dt, tz=None): - """ - Given a datetime and a time zone, determine whether or not a given datetime - would fall in a gap. - - :param dt: - A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` - is provided.) - - :param tz: - A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If - ``None`` or not provided, the datetime's own time zone will be used. - - :return: - Returns a boolean value whether or not the "wall time" exists in - ``tz``. - - .. versionadded:: 2.7.0 - """ - if tz is None: - if dt.tzinfo is None: - raise ValueError('Datetime is naive and no time zone provided.') - tz = dt.tzinfo - - dt = dt.replace(tzinfo=None) - - # This is essentially a test of whether or not the datetime can survive - # a round trip to UTC. - dt_rt = dt.replace(tzinfo=tz).astimezone(UTC).astimezone(tz) - dt_rt = dt_rt.replace(tzinfo=None) - - return dt == dt_rt - - -def datetime_ambiguous(dt, tz=None): - """ - Given a datetime and a time zone, determine whether or not a given datetime - is ambiguous (i.e if there are two times differentiated only by their DST - status). - - :param dt: - A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` - is provided.) - - :param tz: - A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If - ``None`` or not provided, the datetime's own time zone will be used. - - :return: - Returns a boolean value whether or not the "wall time" is ambiguous in - ``tz``. - - .. versionadded:: 2.6.0 - """ - if tz is None: - if dt.tzinfo is None: - raise ValueError('Datetime is naive and no time zone provided.') - - tz = dt.tzinfo - - # If a time zone defines its own "is_ambiguous" function, we'll use that. - is_ambiguous_fn = getattr(tz, 'is_ambiguous', None) - if is_ambiguous_fn is not None: - try: - return tz.is_ambiguous(dt) - except Exception: - pass - - # If it doesn't come out and tell us it's ambiguous, we'll just check if - # the fold attribute has any effect on this particular date and time. - dt = dt.replace(tzinfo=tz) - wall_0 = enfold(dt, fold=0) - wall_1 = enfold(dt, fold=1) - - same_offset = wall_0.utcoffset() == wall_1.utcoffset() - same_dst = wall_0.dst() == wall_1.dst() - - return not (same_offset and same_dst) - - -def resolve_imaginary(dt): - """ - Given a datetime that may be imaginary, return an existing datetime. - - This function assumes that an imaginary datetime represents what the - wall time would be in a zone had the offset transition not occurred, so - it will always fall forward by the transition's change in offset. - - .. doctest:: - - >>> from dateutil import tz - >>> from datetime import datetime - >>> NYC = tz.gettz('America/New_York') - >>> print(tz.resolve_imaginary(datetime(2017, 3, 12, 2, 30, tzinfo=NYC))) - 2017-03-12 03:30:00-04:00 - - >>> KIR = tz.gettz('Pacific/Kiritimati') - >>> print(tz.resolve_imaginary(datetime(1995, 1, 1, 12, 30, tzinfo=KIR))) - 1995-01-02 12:30:00+14:00 - - As a note, :func:`datetime.astimezone` is guaranteed to produce a valid, - existing datetime, so a round-trip to and from UTC is sufficient to get - an extant datetime, however, this generally "falls back" to an earlier time - rather than falling forward to the STD side (though no guarantees are made - about this behavior). - - :param dt: - A :class:`datetime.datetime` which may or may not exist. - - :return: - Returns an existing :class:`datetime.datetime`. If ``dt`` was not - imaginary, the datetime returned is guaranteed to be the same object - passed to the function. - - .. versionadded:: 2.7.0 - """ - if dt.tzinfo is not None and not datetime_exists(dt): - - curr_offset = (dt + datetime.timedelta(hours=24)).utcoffset() - old_offset = (dt - datetime.timedelta(hours=24)).utcoffset() - - dt += curr_offset - old_offset - - return dt - - -def _datetime_to_timestamp(dt): - """ - Convert a :class:`datetime.datetime` object to an epoch timestamp in - seconds since January 1, 1970, ignoring the time zone. - """ - return (dt.replace(tzinfo=None) - EPOCH).total_seconds() - - -if sys.version_info >= (3, 6): - def _get_supported_offset(second_offset): - return second_offset -else: - def _get_supported_offset(second_offset): - # For python pre-3.6, round to full-minutes if that's not the case. - # Python's datetime doesn't accept sub-minute timezones. Check - # http://python.org/sf/1447945 or https://bugs.python.org/issue5288 - # for some information. - old_offset = second_offset - calculated_offset = 60 * ((second_offset + 30) // 60) - return calculated_offset - - -try: - # Python 3.7 feature - from contextlib import nullcontext as _nullcontext -except ImportError: - class _nullcontext(object): - """ - Class for wrapping contexts so that they are passed through in a - with statement. - """ - def __init__(self, context): - self.context = context - - def __enter__(self): - return self.context - - def __exit__(*args, **kwargs): - pass - -# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.10/site-packages/dateutil/tz/win.py b/venv/lib/python3.10/site-packages/dateutil/tz/win.py deleted file mode 100644 index cde07ba..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tz/win.py +++ /dev/null @@ -1,370 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module provides an interface to the native time zone data on Windows, -including :py:class:`datetime.tzinfo` implementations. - -Attempting to import this module on a non-Windows platform will raise an -:py:obj:`ImportError`. -""" -# This code was originally contributed by Jeffrey Harris. -import datetime -import struct - -from six.moves import winreg -from six import text_type - -try: - import ctypes - from ctypes import wintypes -except ValueError: - # ValueError is raised on non-Windows systems for some horrible reason. - raise ImportError("Running tzwin on non-Windows system") - -from ._common import tzrangebase - -__all__ = ["tzwin", "tzwinlocal", "tzres"] - -ONEWEEK = datetime.timedelta(7) - -TZKEYNAMENT = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" -TZKEYNAME9X = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones" -TZLOCALKEYNAME = r"SYSTEM\CurrentControlSet\Control\TimeZoneInformation" - - -def _settzkeyname(): - handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) - try: - winreg.OpenKey(handle, TZKEYNAMENT).Close() - TZKEYNAME = TZKEYNAMENT - except WindowsError: - TZKEYNAME = TZKEYNAME9X - handle.Close() - return TZKEYNAME - - -TZKEYNAME = _settzkeyname() - - -class tzres(object): - """ - Class for accessing ``tzres.dll``, which contains timezone name related - resources. - - .. versionadded:: 2.5.0 - """ - p_wchar = ctypes.POINTER(wintypes.WCHAR) # Pointer to a wide char - - def __init__(self, tzres_loc='tzres.dll'): - # Load the user32 DLL so we can load strings from tzres - user32 = ctypes.WinDLL('user32') - - # Specify the LoadStringW function - user32.LoadStringW.argtypes = (wintypes.HINSTANCE, - wintypes.UINT, - wintypes.LPWSTR, - ctypes.c_int) - - self.LoadStringW = user32.LoadStringW - self._tzres = ctypes.WinDLL(tzres_loc) - self.tzres_loc = tzres_loc - - def load_name(self, offset): - """ - Load a timezone name from a DLL offset (integer). - - >>> from dateutil.tzwin import tzres - >>> tzr = tzres() - >>> print(tzr.load_name(112)) - 'Eastern Standard Time' - - :param offset: - A positive integer value referring to a string from the tzres dll. - - .. note:: - - Offsets found in the registry are generally of the form - ``@tzres.dll,-114``. The offset in this case is 114, not -114. - - """ - resource = self.p_wchar() - lpBuffer = ctypes.cast(ctypes.byref(resource), wintypes.LPWSTR) - nchar = self.LoadStringW(self._tzres._handle, offset, lpBuffer, 0) - return resource[:nchar] - - def name_from_string(self, tzname_str): - """ - Parse strings as returned from the Windows registry into the time zone - name as defined in the registry. - - >>> from dateutil.tzwin import tzres - >>> tzr = tzres() - >>> print(tzr.name_from_string('@tzres.dll,-251')) - 'Dateline Daylight Time' - >>> print(tzr.name_from_string('Eastern Standard Time')) - 'Eastern Standard Time' - - :param tzname_str: - A timezone name string as returned from a Windows registry key. - - :return: - Returns the localized timezone string from tzres.dll if the string - is of the form `@tzres.dll,-offset`, else returns the input string. - """ - if not tzname_str.startswith('@'): - return tzname_str - - name_splt = tzname_str.split(',-') - try: - offset = int(name_splt[1]) - except: - raise ValueError("Malformed timezone string.") - - return self.load_name(offset) - - -class tzwinbase(tzrangebase): - """tzinfo class based on win32's timezones available in the registry.""" - def __init__(self): - raise NotImplementedError('tzwinbase is an abstract base class') - - def __eq__(self, other): - # Compare on all relevant dimensions, including name. - if not isinstance(other, tzwinbase): - return NotImplemented - - return (self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset and - self._stddayofweek == other._stddayofweek and - self._dstdayofweek == other._dstdayofweek and - self._stdweeknumber == other._stdweeknumber and - self._dstweeknumber == other._dstweeknumber and - self._stdhour == other._stdhour and - self._dsthour == other._dsthour and - self._stdminute == other._stdminute and - self._dstminute == other._dstminute and - self._std_abbr == other._std_abbr and - self._dst_abbr == other._dst_abbr) - - @staticmethod - def list(): - """Return a list of all time zones known to the system.""" - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - with winreg.OpenKey(handle, TZKEYNAME) as tzkey: - result = [winreg.EnumKey(tzkey, i) - for i in range(winreg.QueryInfoKey(tzkey)[0])] - return result - - def display(self): - """ - Return the display name of the time zone. - """ - return self._display - - def transitions(self, year): - """ - For a given year, get the DST on and off transition times, expressed - always on the standard time side. For zones with no transitions, this - function returns ``None``. - - :param year: - The year whose transitions you would like to query. - - :return: - Returns a :class:`tuple` of :class:`datetime.datetime` objects, - ``(dston, dstoff)`` for zones with an annual DST transition, or - ``None`` for fixed offset zones. - """ - - if not self.hasdst: - return None - - dston = picknthweekday(year, self._dstmonth, self._dstdayofweek, - self._dsthour, self._dstminute, - self._dstweeknumber) - - dstoff = picknthweekday(year, self._stdmonth, self._stddayofweek, - self._stdhour, self._stdminute, - self._stdweeknumber) - - # Ambiguous dates default to the STD side - dstoff -= self._dst_base_offset - - return dston, dstoff - - def _get_hasdst(self): - return self._dstmonth != 0 - - @property - def _dst_base_offset(self): - return self._dst_base_offset_ - - -class tzwin(tzwinbase): - """ - Time zone object created from the zone info in the Windows registry - - These are similar to :py:class:`dateutil.tz.tzrange` objects in that - the time zone data is provided in the format of a single offset rule - for either 0 or 2 time zone transitions per year. - - :param: name - The name of a Windows time zone key, e.g. "Eastern Standard Time". - The full list of keys can be retrieved with :func:`tzwin.list`. - """ - - def __init__(self, name): - self._name = name - - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - tzkeyname = text_type("{kn}\\{name}").format(kn=TZKEYNAME, name=name) - with winreg.OpenKey(handle, tzkeyname) as tzkey: - keydict = valuestodict(tzkey) - - self._std_abbr = keydict["Std"] - self._dst_abbr = keydict["Dlt"] - - self._display = keydict["Display"] - - # See http://ww_winreg.jsiinc.com/SUBA/tip0300/rh0398.htm - tup = struct.unpack("=3l16h", keydict["TZI"]) - stdoffset = -tup[0]-tup[1] # Bias + StandardBias * -1 - dstoffset = stdoffset-tup[2] # + DaylightBias * -1 - self._std_offset = datetime.timedelta(minutes=stdoffset) - self._dst_offset = datetime.timedelta(minutes=dstoffset) - - # for the meaning see the win32 TIME_ZONE_INFORMATION structure docs - # http://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx - (self._stdmonth, - self._stddayofweek, # Sunday = 0 - self._stdweeknumber, # Last = 5 - self._stdhour, - self._stdminute) = tup[4:9] - - (self._dstmonth, - self._dstdayofweek, # Sunday = 0 - self._dstweeknumber, # Last = 5 - self._dsthour, - self._dstminute) = tup[12:17] - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = self._get_hasdst() - - def __repr__(self): - return "tzwin(%s)" % repr(self._name) - - def __reduce__(self): - return (self.__class__, (self._name,)) - - -class tzwinlocal(tzwinbase): - """ - Class representing the local time zone information in the Windows registry - - While :class:`dateutil.tz.tzlocal` makes system calls (via the :mod:`time` - module) to retrieve time zone information, ``tzwinlocal`` retrieves the - rules directly from the Windows registry and creates an object like - :class:`dateutil.tz.tzwin`. - - Because Windows does not have an equivalent of :func:`time.tzset`, on - Windows, :class:`dateutil.tz.tzlocal` instances will always reflect the - time zone settings *at the time that the process was started*, meaning - changes to the machine's time zone settings during the run of a program - on Windows will **not** be reflected by :class:`dateutil.tz.tzlocal`. - Because ``tzwinlocal`` reads the registry directly, it is unaffected by - this issue. - """ - def __init__(self): - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - with winreg.OpenKey(handle, TZLOCALKEYNAME) as tzlocalkey: - keydict = valuestodict(tzlocalkey) - - self._std_abbr = keydict["StandardName"] - self._dst_abbr = keydict["DaylightName"] - - try: - tzkeyname = text_type('{kn}\\{sn}').format(kn=TZKEYNAME, - sn=self._std_abbr) - with winreg.OpenKey(handle, tzkeyname) as tzkey: - _keydict = valuestodict(tzkey) - self._display = _keydict["Display"] - except OSError: - self._display = None - - stdoffset = -keydict["Bias"]-keydict["StandardBias"] - dstoffset = stdoffset-keydict["DaylightBias"] - - self._std_offset = datetime.timedelta(minutes=stdoffset) - self._dst_offset = datetime.timedelta(minutes=dstoffset) - - # For reasons unclear, in this particular key, the day of week has been - # moved to the END of the SYSTEMTIME structure. - tup = struct.unpack("=8h", keydict["StandardStart"]) - - (self._stdmonth, - self._stdweeknumber, # Last = 5 - self._stdhour, - self._stdminute) = tup[1:5] - - self._stddayofweek = tup[7] - - tup = struct.unpack("=8h", keydict["DaylightStart"]) - - (self._dstmonth, - self._dstweeknumber, # Last = 5 - self._dsthour, - self._dstminute) = tup[1:5] - - self._dstdayofweek = tup[7] - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = self._get_hasdst() - - def __repr__(self): - return "tzwinlocal()" - - def __str__(self): - # str will return the standard name, not the daylight name. - return "tzwinlocal(%s)" % repr(self._std_abbr) - - def __reduce__(self): - return (self.__class__, ()) - - -def picknthweekday(year, month, dayofweek, hour, minute, whichweek): - """ dayofweek == 0 means Sunday, whichweek 5 means last instance """ - first = datetime.datetime(year, month, 1, hour, minute) - - # This will work if dayofweek is ISO weekday (1-7) or Microsoft-style (0-6), - # Because 7 % 7 = 0 - weekdayone = first.replace(day=((dayofweek - first.isoweekday()) % 7) + 1) - wd = weekdayone + ((whichweek - 1) * ONEWEEK) - if (wd.month != month): - wd -= ONEWEEK - - return wd - - -def valuestodict(key): - """Convert a registry key's values to a dictionary.""" - dout = {} - size = winreg.QueryInfoKey(key)[1] - tz_res = None - - for i in range(size): - key_name, value, dtype = winreg.EnumValue(key, i) - if dtype == winreg.REG_DWORD or dtype == winreg.REG_DWORD_LITTLE_ENDIAN: - # If it's a DWORD (32-bit integer), it's stored as unsigned - convert - # that to a proper signed integer - if value & (1 << 31): - value = value - (1 << 32) - elif dtype == winreg.REG_SZ: - # If it's a reference to the tzres DLL, load the actual string - if value.startswith('@tzres'): - tz_res = tz_res or tzres() - value = tz_res.name_from_string(value) - - value = value.rstrip('\x00') # Remove trailing nulls - - dout[key_name] = value - - return dout diff --git a/venv/lib/python3.10/site-packages/dateutil/tzwin.py b/venv/lib/python3.10/site-packages/dateutil/tzwin.py deleted file mode 100644 index cebc673..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/tzwin.py +++ /dev/null @@ -1,2 +0,0 @@ -# tzwin has moved to dateutil.tz.win -from .tz.win import * diff --git a/venv/lib/python3.10/site-packages/dateutil/utils.py b/venv/lib/python3.10/site-packages/dateutil/utils.py deleted file mode 100644 index dd2d245..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/utils.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers general convenience and utility functions for dealing with -datetimes. - -.. versionadded:: 2.7.0 -""" -from __future__ import unicode_literals - -from datetime import datetime, time - - -def today(tzinfo=None): - """ - Returns a :py:class:`datetime` representing the current day at midnight - - :param tzinfo: - The time zone to attach (also used to determine the current day). - - :return: - A :py:class:`datetime.datetime` object representing the current day - at midnight. - """ - - dt = datetime.now(tzinfo) - return datetime.combine(dt.date(), time(0, tzinfo=tzinfo)) - - -def default_tzinfo(dt, tzinfo): - """ - Sets the ``tzinfo`` parameter on naive datetimes only - - This is useful for example when you are provided a datetime that may have - either an implicit or explicit time zone, such as when parsing a time zone - string. - - .. doctest:: - - >>> from dateutil.tz import tzoffset - >>> from dateutil.parser import parse - >>> from dateutil.utils import default_tzinfo - >>> dflt_tz = tzoffset("EST", -18000) - >>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz)) - 2014-01-01 12:30:00+00:00 - >>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz)) - 2014-01-01 12:30:00-05:00 - - :param dt: - The datetime on which to replace the time zone - - :param tzinfo: - The :py:class:`datetime.tzinfo` subclass instance to assign to - ``dt`` if (and only if) it is naive. - - :return: - Returns an aware :py:class:`datetime.datetime`. - """ - if dt.tzinfo is not None: - return dt - else: - return dt.replace(tzinfo=tzinfo) - - -def within_delta(dt1, dt2, delta): - """ - Useful for comparing two datetimes that may have a negligible difference - to be considered equal. - """ - delta = abs(delta) - difference = dt1 - dt2 - return -delta <= difference <= delta diff --git a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__init__.py b/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__init__.py deleted file mode 100644 index 34f11ad..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__init__.py +++ /dev/null @@ -1,167 +0,0 @@ -# -*- coding: utf-8 -*- -import warnings -import json - -from tarfile import TarFile -from pkgutil import get_data -from io import BytesIO - -from dateutil.tz import tzfile as _tzfile - -__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata"] - -ZONEFILENAME = "dateutil-zoneinfo.tar.gz" -METADATA_FN = 'METADATA' - - -class tzfile(_tzfile): - def __reduce__(self): - return (gettz, (self._filename,)) - - -def getzoneinfofile_stream(): - try: - return BytesIO(get_data(__name__, ZONEFILENAME)) - except IOError as e: # TODO switch to FileNotFoundError? - warnings.warn("I/O error({0}): {1}".format(e.errno, e.strerror)) - return None - - -class ZoneInfoFile(object): - def __init__(self, zonefile_stream=None): - if zonefile_stream is not None: - with TarFile.open(fileobj=zonefile_stream) as tf: - self.zones = {zf.name: tzfile(tf.extractfile(zf), filename=zf.name) - for zf in tf.getmembers() - if zf.isfile() and zf.name != METADATA_FN} - # deal with links: They'll point to their parent object. Less - # waste of memory - links = {zl.name: self.zones[zl.linkname] - for zl in tf.getmembers() if - zl.islnk() or zl.issym()} - self.zones.update(links) - try: - metadata_json = tf.extractfile(tf.getmember(METADATA_FN)) - metadata_str = metadata_json.read().decode('UTF-8') - self.metadata = json.loads(metadata_str) - except KeyError: - # no metadata in tar file - self.metadata = None - else: - self.zones = {} - self.metadata = None - - def get(self, name, default=None): - """ - Wrapper for :func:`ZoneInfoFile.zones.get`. This is a convenience method - for retrieving zones from the zone dictionary. - - :param name: - The name of the zone to retrieve. (Generally IANA zone names) - - :param default: - The value to return in the event of a missing key. - - .. versionadded:: 2.6.0 - - """ - return self.zones.get(name, default) - - -# The current API has gettz as a module function, although in fact it taps into -# a stateful class. So as a workaround for now, without changing the API, we -# will create a new "global" class instance the first time a user requests a -# timezone. Ugly, but adheres to the api. -# -# TODO: Remove after deprecation period. -_CLASS_ZONE_INSTANCE = [] - - -def get_zonefile_instance(new_instance=False): - """ - This is a convenience function which provides a :class:`ZoneInfoFile` - instance using the data provided by the ``dateutil`` package. By default, it - caches a single instance of the ZoneInfoFile object and returns that. - - :param new_instance: - If ``True``, a new instance of :class:`ZoneInfoFile` is instantiated and - used as the cached instance for the next call. Otherwise, new instances - are created only as necessary. - - :return: - Returns a :class:`ZoneInfoFile` object. - - .. versionadded:: 2.6 - """ - if new_instance: - zif = None - else: - zif = getattr(get_zonefile_instance, '_cached_instance', None) - - if zif is None: - zif = ZoneInfoFile(getzoneinfofile_stream()) - - get_zonefile_instance._cached_instance = zif - - return zif - - -def gettz(name): - """ - This retrieves a time zone from the local zoneinfo tarball that is packaged - with dateutil. - - :param name: - An IANA-style time zone name, as found in the zoneinfo file. - - :return: - Returns a :class:`dateutil.tz.tzfile` time zone object. - - .. warning:: - It is generally inadvisable to use this function, and it is only - provided for API compatibility with earlier versions. This is *not* - equivalent to ``dateutil.tz.gettz()``, which selects an appropriate - time zone based on the inputs, favoring system zoneinfo. This is ONLY - for accessing the dateutil-specific zoneinfo (which may be out of - date compared to the system zoneinfo). - - .. deprecated:: 2.6 - If you need to use a specific zoneinfofile over the system zoneinfo, - instantiate a :class:`dateutil.zoneinfo.ZoneInfoFile` object and call - :func:`dateutil.zoneinfo.ZoneInfoFile.get(name)` instead. - - Use :func:`get_zonefile_instance` to retrieve an instance of the - dateutil-provided zoneinfo. - """ - warnings.warn("zoneinfo.gettz() will be removed in future versions, " - "to use the dateutil-provided zoneinfo files, instantiate a " - "ZoneInfoFile object and use ZoneInfoFile.zones.get() " - "instead. See the documentation for details.", - DeprecationWarning) - - if len(_CLASS_ZONE_INSTANCE) == 0: - _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) - return _CLASS_ZONE_INSTANCE[0].zones.get(name) - - -def gettz_db_metadata(): - """ Get the zonefile metadata - - See `zonefile_metadata`_ - - :returns: - A dictionary with the database metadata - - .. deprecated:: 2.6 - See deprecation warning in :func:`zoneinfo.gettz`. To get metadata, - query the attribute ``zoneinfo.ZoneInfoFile.metadata``. - """ - warnings.warn("zoneinfo.gettz_db_metadata() will be removed in future " - "versions, to use the dateutil-provided zoneinfo files, " - "ZoneInfoFile object and query the 'metadata' attribute " - "instead. See the documentation for details.", - DeprecationWarning) - - if len(_CLASS_ZONE_INSTANCE) == 0: - _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) - return _CLASS_ZONE_INSTANCE[0].metadata diff --git a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index f5b88cb6e1417f79f69ef849c3c227e611b80b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5769 zcmb_g&2QYs73YxLU245jWcjN>o0Li0#G6VhCoR%IaNQ`56$nY>AW~p>fr3kMW+hs? z|!}tqbO#f_Lyo)3G1_L)Z>ly9rFKaVgn?18{wJk<-R?qHN+7*3n z_p1F`yQa@8J*Pj@t}|oD;MG5}_9b3xH@MTD{lMTey#9s3>!N;awP*Mx-uS|3&tZO+ z&tZN}yny-n9ix4jU+44u@)xYVz!&%xJavU%<=61{DrcKU^TuDHpRv(oX>H4wYhh2| z)Y%cr7^<+hM61H68@H4%TRY>_`S{+}>ier(s{tu8{WEd#E{^0X24Rrf+9qe*gz^@* zpu8KM13pr9sS-<$V$DFZaUj<-thp#?jAOZ{Au? zLM4_4ez527h-5i8csVzC*@L4(<$0~aD6M;*6nq#6&s!i(N#zC`U(P(-D(`MI?bPu+ zQq=QkSwH4O_}ohyp7(g@_p&>39s;!fQ^N~1M;^M2BOydO*d+5AE{Y%djL@uowt8O#_jsLDx|vy&P;>)@C&y3DA!RIYetzqyx#E8Q=25dQNhfL1Kq{t<_Wg}}YwI7~+gSbhURqnf ze~(tA&Ver@xIRg3I!mkFSoVFDRv<8nQzubUiv~oQc+URxI>4BRK%Brb*miB)cL3yEd%Dz|wBXSPnM8teeb*8%c1U~D6x z;O0LH#|#bGtF zCQr#Hl!#Zz4{u`#k*B}DaReWn7^j9b57{FiaL<~YSx*dD2zzLr8(*1Un~#yvO@^R5 zc`7$6X*EpfDzzyu(n~qHcxxLP_vt0^8zucf(L+r$HCwk*bKHdxQ*|@wP}ZdN+dK?Z z5cdanUL_5QNvgm~m6^{R^W|sb=5&aWuanfi-HQXim)vQU>(7}@5YT2X;zXOhkei(} zU_P6eufqy+?H7&ASgjvytb|D~+M_?os4riEl(a$+Pg18BMtfvAXzs_DZ=2(uB;8BX zczU1fiL~OOW;^3CP~RHETdUB?v^4{oNppp?#&NGB&6T#jokIs zjn!-uT9P!+$>*Z$4}0qT7W;m0DBMi$P)2ST>D>hERJ674_JL}@+|)+NKhTaixERGBLKJuyJ4{F4rII^azVIS33`5# zoP}UVOUipVcc^1PSfa))U(DU@k&aiVlQ%YUPm7zn$8K;eloERoFK?(?08^KF~lzcQFp^D&Uuh(+#<60hsiC8?dcT&jnCFFn? zX`eVk4ncM#0+A$Tg05s%msWi`@xph6Y~rwqe=bZBz5hl!?`1X=o`hZ0mZ zNOjvIS8&-h+YR`zc)V?m!%1N*u}6jo{(>ArtGmxk5vVc6Lj{;qC z)b>-88Ol=jF<`%E%B#vgsVH-H3F#1U5O5X zzXU`-1d1o@MhfZ8sk-H2|8uMhMbx;Jy%BV#w#t&FjQylLUMbPDuE@Zhg0(|%=YE*@ z+oW=g6vrQ`H91j0anf0@B8V2)olpnY`S;5ypf@QcnjKA^=n5xR zQ^)Zc%$bP6bLYP!0PJP^K@fPZb`-kgN-PyPEsW96jQ>T`*7NY6v63x+UtpSQ?u}pyD2C!v1=R*`$!aI8jwx! zr^6 zv`X!0#HU!FnkU`XG?{*vnCfoy2LyUc>*L7Y7rt-W_CFiddAv324=DleocR@0Pu+e+Aa@5oB%uL!izo}cS%;kt-4r$U#f8f%PqqaT<6{}*8GBFb2=5aiL( zR_XO;@RDoT>9j6{_Vm}bo6Y|}%%_!^26kz~>$!@ryQMjl9hCh4HMD0+Xv^C`ko+YL zcWC$(4b)O+-OA7DO!p+^paJXP#@9G9z&3Kg)|sR`O}5s&mTf`^O>5{22w>SuZ*8!* zL!T-2N2$~dWBrK=UtaUpK#lcxgm%r#3UgZXJkTRP*wI%?{T8g%ORHI#&J@=A>u!s( uN$YWu>Zx-(`@DCD(mZi7ILtwJ)xgUt^;ouPvw6#@%scjS-Ev-Py!J2m3>x$R diff --git a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-310.pyc b/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-310.pyc deleted file mode 100644 index dc49c1a8ff967630eeb0a6cf08406cc073551726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2698 zcmZuzUvC@75#L=N$sGy zDF34O$6vGv`35KFiwBcmK{az|1Q9eL!Lp|Tt>!FXRbLBgRqq8J^em~Tji8Y>gC@oO zwZu-v5()6>7r%ZWxZ@2!`FvIcpmY{ zagCD9|A?4h%qS)J`yEv4FK;gEcI}jj`Z0TYanZJ&{q@o-+lZ6!|K@#t0xZhQXM`*KvoiQslBd7N3PvoPT{PUT!>xH4AIa1mNr z*f{CqDlWbld}u@cVY|(tjKSAgn8GPjiF+Xhwu~S^_*koy4~Ju$_u?=MdrD9Gc0L^T zmgfV1B|QSSzbFhw4XCd{HCLgTkdl1aT2M>&=?Qy6N(hL*v#;0#@-^w!98<=5d1$B3 z+gEW0(Z_l>9nHR`LBpoGh_&`X%6~@vsY+#kQpAx~k+e4MANE^>9!3Y@M4JBpL!+0F_VOdwzLmtrMk>v3zk%wbEmz6> z&DEA$iGtKIw|g)5?K(PphKarhnm6K1$jrKyQQ8g;qG=Q)xp0Ds)X; z1z|xeRia36=$IWluTr#yqR@55(Xnel+)Si(bwEHL1+A*Xua*Ba5{14{X?O-_2PUQm zjo;Xy9m=5kbc0@^9d_;8%l_;1+Vc%|30CmOzI*%mMxA|owXV0|NQACg6$AotyaUxt zp_%&@xsgp6Fb8``vWp(E^ym#r7Qh*EV572j3>o();MPU$549PcLH3pGkmz?rT{I?a z;bm+>7M`sMI-#X^g@|TJChQ7??-k%9$krM#s~`RwV*d_g%QA+8aL{m%zjUm~s>-V73UEJS7kpl~v>!=LcqeO*v07+t&8G*D`WrThcPeL`9 zp<(S!h<6|I!T%%s&iC5XV{fx+&nrZWq>F0Z!GqVJDak%W{Q=V*3q&he^`=0SR*~w> z#XZ!SqfX-j9u3HKfZt4&vcR7_mBs)=F1fvW6vB+lN0D5HiVkCR(C7%g{RIUwBQ_oSYNx#35u;F$zj;Ho$?7M~iR>}U%Tfh!H} zg*QpT1E={JYcE|1mmbCf;wH8?a9?cSU&b9A1DTrN+ur;2FL&WdsY|Uh1x%nfeDf;@BYAuKf~+%JXL-0wh=k z15$Tzag`*!)l*rKc16?`ja6Q)t~#gIi@0$9ttIW=MqgLK;S(Q11Am)9mz(TT&3~)& G!~X&*^4u%{ diff --git a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz b/venv/lib/python3.10/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz deleted file mode 100644 index 1461f8c862df8c3eae75e0ea376788b5b2602269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156400 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 diff --git a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/rebuild.py b/venv/lib/python3.10/site-packages/dateutil/zoneinfo/rebuild.py deleted file mode 100644 index 684c658..0000000 --- a/venv/lib/python3.10/site-packages/dateutil/zoneinfo/rebuild.py +++ /dev/null @@ -1,75 +0,0 @@ -import logging -import os -import tempfile -import shutil -import json -from subprocess import check_call, check_output -from tarfile import TarFile - -from dateutil.zoneinfo import METADATA_FN, ZONEFILENAME - - -def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): - """Rebuild the internal timezone info in dateutil/zoneinfo/zoneinfo*tar* - - filename is the timezone tarball from ``ftp.iana.org/tz``. - - """ - tmpdir = tempfile.mkdtemp() - zonedir = os.path.join(tmpdir, "zoneinfo") - moduledir = os.path.dirname(__file__) - try: - with TarFile.open(filename) as tf: - for name in zonegroups: - tf.extract(name, tmpdir) - filepaths = [os.path.join(tmpdir, n) for n in zonegroups] - - _run_zic(zonedir, filepaths) - - # write metadata file - with open(os.path.join(zonedir, METADATA_FN), 'w') as f: - json.dump(metadata, f, indent=4, sort_keys=True) - target = os.path.join(moduledir, ZONEFILENAME) - with TarFile.open(target, "w:%s" % format) as tf: - for entry in os.listdir(zonedir): - entrypath = os.path.join(zonedir, entry) - tf.add(entrypath, entry) - finally: - shutil.rmtree(tmpdir) - - -def _run_zic(zonedir, filepaths): - """Calls the ``zic`` compiler in a compatible way to get a "fat" binary. - - Recent versions of ``zic`` default to ``-b slim``, while older versions - don't even have the ``-b`` option (but default to "fat" binaries). The - current version of dateutil does not support Version 2+ TZif files, which - causes problems when used in conjunction with "slim" binaries, so this - function is used to ensure that we always get a "fat" binary. - """ - - try: - help_text = check_output(["zic", "--help"]) - except OSError as e: - _print_on_nosuchfile(e) - raise - - if b"-b " in help_text: - bloat_args = ["-b", "fat"] - else: - bloat_args = [] - - check_call(["zic"] + bloat_args + ["-d", zonedir] + filepaths) - - -def _print_on_nosuchfile(e): - """Print helpful troubleshooting message - - e is an exception raised by subprocess.check_call() - - """ - if e.errno == 2: - logging.error( - "Could not find zic. Perhaps you need to install " - "libc-bin or some other package that provides it, " - "or it's not in your PATH?") diff --git a/venv/lib/python3.10/site-packages/distutils-precedence.pth b/venv/lib/python3.10/site-packages/distutils-precedence.pth deleted file mode 100644 index 7f009fe..0000000 --- a/venv/lib/python3.10/site-packages/distutils-precedence.pth +++ /dev/null @@ -1 +0,0 @@ -import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim(); diff --git a/venv/lib/python3.10/site-packages/google/auth/__init__.py b/venv/lib/python3.10/site-packages/google/auth/__init__.py deleted file mode 100644 index 765bbd7..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/__init__.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google Auth Library for Python.""" - -import logging -import sys -import warnings - -from google.auth import version as google_auth_version -from google.auth._default import ( - default, - load_credentials_from_dict, - load_credentials_from_file, -) - - -__version__ = google_auth_version.__version__ - - -__all__ = ["default", "load_credentials_from_file", "load_credentials_from_dict"] - - -class Python37DeprecationWarning(DeprecationWarning): # pragma: NO COVER - """ - Deprecation warning raised when Python 3.7 runtime is detected. - Python 3.7 support will be dropped after January 1, 2024. - """ - - pass - - -# Checks if the current runtime is Python 3.7. -if sys.version_info.major == 3 and sys.version_info.minor == 7: # pragma: NO COVER - message = ( - "After January 1, 2024, new releases of this library will drop support " - "for Python 3.7." - ) - warnings.warn(message, Python37DeprecationWarning) - -# Set default logging handler to avoid "No handler found" warnings. -logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ed1d11eeebf758b478a70e8982c72e37a6533bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmZ`&Uu)Dr5a0Z{OYTo=ZL1a$T=40jy=W`wgNOw|ky1nvAt1{(JC{ql$;REJ<@&1N zckrq8&99VKpZXPi(b?P;E9k<`%FM~Xc!@L*w@_yWR2y_nz@gOCl^UaBeFNo-h z;4={cEPe9gWpEF#9j=J*$kn^8eO>gdE&A~)cxP*{3d`p%W^vBe;l{ahb`z~z=j7bM z*W9;cG&sHcLa9^&-L0!B-OCO%*E2d%n!cV@Q&o&FumQ3^a+=^6w8>O4@|r-vgx9ia zZcD`lOEd^5s*Fp+CR*i8WXXShlT5%?b)2h#Rq(Azrp> zuem+1Zs*Z+C^aO!!ouEjU1UXi`lU~CU2)Kpxrb_=84&bj3dN#5x-))6b&bX6Kr=%H zRFG64#%+%IBW;YS%Tnozo@7$e1E4~yvcz0`Qh}zgcu`y29&FO>``ZuaU+<6nCShU#m^7XROJw*b(UzAKviYY(PI;tMDr4x z+$xnY(J>Uqk<1RFvYpk=_`&_iWEE_cJUQYim?&+B8*vR!yG^ z@sbxpf^G);wUmp)pMlP;p$!h7%!%;SlHA-u;V*}7=!DMDU3a=c=&g7geb;q=4gC%8 EH@Zni+W-In diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/_cloud_sdk.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/_cloud_sdk.cpython-310.pyc deleted file mode 100644 index da0eddecc6d8aa98d70233890a3d7a0b795419d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3450 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/_default.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/_default.cpython-310.pyc deleted file mode 100644 index fb2adbebff836cb24006122435e23cea5866c2bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21005 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 NFmD*QOk;83e*pBY;|l-) diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/_exponential_backoff.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/_exponential_backoff.cpython-310.pyc deleted file mode 100644 index 17970a0e503f4db2827e66df71bc759c69346ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2989 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⋘Z1S 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/_refresh_worker.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/_refresh_worker.cpython-310.pyc deleted file mode 100644 index 22a5f5df8a9bdf77f23d0473ae8cb6f03381c5eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3529 zcma)8-*4l_5#FUJiIOGPxw`J5ZPM+f0iqz0dTk$qLlES8%^gx)oW%C^TD=f7cO}!J zNM)C_W5FqkUVuEcd2dm`2KsVu{d@RU^eKNrgZ9#Imil>i&=TNsN$$?hd^7XSr0sT- z;rcV*8}!z7a7=l0#{JN8)_yAI=QTyt%T9x2kfEH=b1bEy?#;r}ibJv)z!!)yu)lJGjl87!;!uaT@Pe zN|}APl-94xnyi1u`Zejv2A*}wv@%BrM_L8){U8a3N>6{;6u3Un z!yt*K$_VvI5N7e2NE0OvgK#v|X`V=NoF0noD9D5^g@{08=}0AAyFKJkZGO?5biRk% zY-5o8ocS!{7tSTatYWQorZ?Y9qAUtxdu(>3#JE(cyW4S#x__GLkCw`7={znsg^;h3ESbl=l4>$u9 zEa&Cw82>LoMxv)Vb&>KBlH$))>8hv2t=8LQXbi zpirzG;P=W85ok4+qNKMCDCMJOn#wt^KDPsOBKxC3A@&2Rz1CgYeI8a;l&2(Lrf0(B6;<(-EM~{-=FjmMtVaNk> z;JPIYgvVU?I0trs;{+Kd1^tN<>>+PtWT#cpbnkbZ!X+Du`fTSxr&(~-Z@rh;t-lW9 zTi;MFW_&OkSJ8 znkcwv+hz02dl{e1k1=euUG8xAYtP-mbL-i*yUkm?`ITFD{?q)oTi^PZTc6%q(_qGL z-8F$%cxsV~zrra<4EDuMn{Zrzn^^0Z`_5XDfTy2-N0Pj>mL$aG&h*jDYkO*(o`6?_ zla-{n53?t?mfPqWQIE-4F1UI2ff0w!tp2@I~dEUvluD zV{QETH8x81KdiJyqOxhK8oElucQF*Td?LxdoAl+Xk!E4!LoBc*r{!#Yvx&>~yPXCh znt(ffzi9gYIF)%!b71#z9>lXhb)cSx0DXfr_zn%^Vf{TC2#po3tbUZJnlK}k%_atq zx!iNTn)iLrYt`((5TDmB3Lm=6s~A?hn9tb&0fg?zTXr&^qpbC7RBZGMSU!E-CR5qC zlrg2t@I_(~cdgZ!wR%fv(@nd z5o`E<7zf56hL!j}%%IW0q|8Fqt+>x}j90Gz0@9 z5nYy5&R*r9AkL;YGWViNRP-12SG&eKwe}coi*!Eazk|c~XR}j&N5o>~`w<7F4EUYWY>aOmB^MKMB=@{DH>y;Rg>M zyt`LaZ8a#tol#u{pH{NXR>X?V69pMI(HzvhO}@pqx%YeL+4O~VG_exLQ){YUqTz=$ z2pVi^zm8eap7|E7acG{Mii+Y?6hiKC*m-Tnb zrnyT^b63p`HHAwbistf*Cax$N;O&Rl4_mFO9XgnNUewA2w@0nOu!yO`d#mIyG{rMO RyiJdL{D#wXHY+=K{tNVKc1HjJ diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/_service_account_info.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/_service_account_info.cpython-310.pyc deleted file mode 100644 index 94d1d1fbc43ff0788367bd9bd5db497b76b9d3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2380 zcmd^B&2Jnv6t`z)Ke9;{RF$s_G7^WZl;U1LUZNBnHz_S_dL6s51PNAUX9oGJo|n8-urp<>S~KX`0q`4WG9<3>xs^h*`8#DkyZlEm0gRo&=i%Yy1Q5zTRAY653F~Ztv&SU^X&1S)){Jfv@gLk zgXe-Q+v(qBGg-*Et$VY{`GKh7k-RFqcg%!L`8ad4@a$AToJZ(795&fPVd8-l3p~Kf zb1Yut>D93Mq_1*fhbt>D;PZfIP(dRpwv5qclc{upCp+SHj_;Atka8%=-8zE+fSk@H zqA<@7^dH*-5D$;CY^1CO@T*8|pWN?XDM`e|>&o>UHzuD$hB?TuxysogP`@%0mi>I% zJqgxXXSocmbY)AZG?fOEq>NCn!5WU+m%S_N)oEpPpjB?5%1FEfxK?=|e}L&en8j`| zBa8uB7cX!1KmGiRO0H8cBh1sXG4r%+U(Tg?87&y(QVJ=`#?11#US-c8#H@nie-C>5 zdL(y7Jq=wj1rDsZ&jJ5Ufayf^GE9RfrF&p?UR@Lmws=FhXm?y>@-h1#U9Yq2Sc*NVnEX&0e<3U)hE(7y z8{y(}>YQIK6&aM&oYclH-M9@`a1*Lm<2Bw141QP`_@;nMx>g2Cmys@H4s{F2lo4L{ zK2PCgbB^x$o_Gnx2Kd4(;Xzn$Ro8}5x$3K7zV8k!Smq=LKzEuUFapa-_vLlV3re6N^hxyBRd;O0Ys( HVSDXAiVw6f diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/api_key.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/api_key.cpython-310.pyc deleted file mode 100644 index 4f6a2966f093b3eb8443cd1207bb3d20dd3a4c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2716 zcmbtWOK;mo5ayE9!?LWr6Cj6nPpySUVv8JF7(oytXj32R8jjlo`=IIFl|-8&nO#b- z1f3cK`42hS$NVK;dup$__0*XqDN#;y>Ka_n?#|9@znM|Iwbe3Uyd{T&2SELai|Vjp z@eDro6ee!C1}EGM$=GyFg0uy+Pex_huk&%}(XNs`1e?YE9bfuiG>Pv9_-@igERTm3%uisep=!WgA#qIMjIh4F;j7fsg|HE#3T zh4GrWb)f6Kq3MQbUT%oi>E;#TO}?S`+WZFJ>|lJP$M+_(>8LaaXx4W>(xq8a>8OeFjr% zq-0^dHZRR9gBS~{%EI0=}HnMl*XIr~OAib=p{H0&iYSI$&KQzr~g zoMe`c;^=Yzt1lfDq@tJj?93ku<>Xk`5JzBp0PKD;lMT@LDSQf5cN#Wn!QcFD1w#GO zenx<$97yB$9KQGH7$@+A=KgoG4U2a~ZoofH=hGG}vxYcN0s!Y1uy~I!vCa9Ns;c7r zqncy~E`gS#T<8s0UDr|5(RJ|T7EJS7Rr&ht1F)8UDD8*w63pM%V!NhxBWpq$u|9kxMfwzl>hkdS}Nyi^rLQz*QA6<|D=$nd{4 z{B*cSE0UFv(|`$34F~HYK9UeCV+)4WEd=HRKuoum7q`1WXZ76p%mS0-eb~8<&`u5) zuMqqUSTs~S?fJuMXTLjc37OukTY*n60<;eD0vSl^h`d4DcdT#4-;VsQdcz(e+)`2 zeEJ&lD)hK%*raWn?G`aD=pOpJxuJQW7s^k7#oeqRPn(mg$AX*Nu+pL_U0$0{a*v;4 RfmW#9?zHP|(kAzn2o;Ovvt3M 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 ToSm7Sn}2ckPGxca`n>g@#gcl` diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/downscoped.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/downscoped.cpython-310.pyc deleted file mode 100644 index 1bd5075985f89898a767d51bcaec2ab7fdce2b5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19651 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 a#eyi6_l9!`tOO>56~HiteoYeblf~Z_#@HqR diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/exceptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index 6659fc96d64ad7b5846ca2a7fe76f57e741e866e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4037 zcmb7H&vVm86qaP!v5k|M5JLF91q!$Yn-0?{)1N>ZXr~Z5NoZ%>gAm%aBakJtlA&?K z31+x)=&>i5=_UV?uKg3Z^+Lb5l4TQzn3~y*zTK7Hx9`3E_7O}^mo@zU(pOu5?$fk? z2#o&n09Vn%d0o@E*3@olT<6AfjT=ILmTMZoIc@@*!T`du8AQd>(jSl!5mFALI+b z3!)$@&&=jDMh@{sj4Y-jGZ;C{k6`3TIx>rqqx={~j-?}2j2!1DFmeJT`|+JQjGW{Q zBMc)4Ffz|STGMK$`kyZU?uc&W27btTq2SE*S+pToI|$mIsN210gLQ4^q1_gBXVkg$ zoJ$A73wRJ(Q-_lct~YZpv=$uAbI*%SQ{=hH^Ut+sdb99CGqvUv3>V_ro65p97+97v zko~jQ?NBhsv%`?J0?BO8dxwRfRbkyhEVG}9Cu*~3;aPN%7U^5sGvk4=rN7j4ZOeF- zqnN)op60f4TbgBZ4d!zzaY>3uZrb-faif-x^I@+G1N7~q_#A8drNx&r)=vhHC@uzwskp$KeCc_)AU5!Jc1U|L&4}D z-f3;tt(EL&D5;60C?E0*=BXM5?)lx6Y2u`IQhxY(5eVi0XAL-BO#O-Fbh zmJGSjnU{(XZDNiH(NIw{^@?HS=X4dtv0SCaSJB>7(T(ORHz*_{-%XDSC-;5a=gG0S@rv80I~*4KY#QatL3FsiR?o06=^{nQadd4Rg% z9@LZC!y!zZM0-Q=ENVqv(#U(+%LUAWZDm!oqzKcab9;^%c1YBfGMt@Smp1!_*O)$aEgu4LiMXL zs)=)*M?F`CpC>PlI`;!89s{Wh8AU=9DIUDti*S0@Z>=qD*uF2kgy81x1UqUm!)oRv z%ZZ^)QqNpStP1u82Bl3_sub9-;t5V;Pk z#>$Q45YX*1avU--yh7wj3{8mP4ubVe3|DG}UDaTozDjS8e0r!0Cou6jT3AF!+GZFt zx}?!DKMs^_pbh0a!%Ownn49)eG4&!e!-L#$rD-ZDGF^MWFpz|OgO&&bp)s1|SNesg z(2a(h=T*5tl~}21suCd&_oGBu6(j~Xkf}+~&s>894{kwKBs|#=ByvhK2J+>QQwKjv zGO~>NFtI$W5V-y-x23<#D=H>gq7~}G8b+30SVmK~R#`9V=37HAzwIyX*ll)s%NeYG zPZH6`B$WXpNi@75878iysTzTjXu(jV$6~WHh0^V>*&Pp3<9Whwi(wcpjfG+D+U;9| zFhFdQ7nI9-xTW^GQBH&2PiRTv5SmDC=CGkMNA_Ok&%ofF%sioq z=4XFQ)NfUUK~FlOe{{_L-PK!3sj!#nk6~;rGfils>1t~F4(cS8mHpFWwo`3pR7RQ$oK8$)y&8gt9pv98nb}t&|VEDI;2BC>G z_N6q|H@l)=+m!`P{SOjUFIX7~LK8_$-C0Xg@QZf{Ec=gL8TcKjhnha0E@O5p5;FD2 z<@)8?UOuU%1d@Y6Xr*>g)sb;2`#+m1bydZviZMx*j-=~U(v7RG3rS*}NY!aP#pPje zB;~uL%###)Nsf<8ncF1!Ag=D*jU+B3a+4`rT>LsI^uHxJQ8I7NRCCqos#(pWQC~zW K&6$IL3+8{N&wf+@ diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/external_account.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/external_account.cpython-310.pyc deleted file mode 100644 index 60b5ce2fcdd58a540b0cc349f3eb7ba4b6407f7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17845 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/iam.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/iam.cpython-310.pyc deleted file mode 100644 index cb2fb6b30f9362cf7919e4a2ad16ec3678d6d610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3382 zcmbVP&2Qtz6(=c*qG?&#b#}KO2+%=4QVWR0EE)uX(T{lDVr#T(FV;>`uqdbzXC%?4 zNM>eeRf>FR_S$>VlYH!7(qr!gdg`hFLJv*f8;Z8Yg);~6mi zV!j$3b`0a6IN2OFOg@E2j({*DFqp}##0*URYfT%0ZC3A^K@;9J5@*^9TKb(0yc@Wh zZvwv+Yys~C9`{)58%D7G++Z%-dTp>R?w+^5Yy@p)of=(l@wc-qOC%X(f)p}N$3#sy zd7fqCgpr8I%h`<~bDlkoqSNkHblM_^2p%H_WAN2pJKthMV$+0>8e)Mr^FeeYl3 zG~>8ymToxVNzR1?z8Q&mu7L6QA0nQkDsr(`OM{Oi!L@NTk!!IukEIrU`E>E2pNs6A zM@srVUvhC7M;z?WiWJ^_akVewar!LDhCic;`pLP>(g>B<91WO!3Xep>4Tz-?Sj-F> z%wmn#Mqo3WHQ~3(9p#V^rCVb3aZC1&(2=f zQf2?dT|_I@;9Yy#O5}5$K3`1 z5N#;5fB)8>WK-^si#QTl#FdKu zi%+C4BLO&@j(d5=qz~F(`bj+W^SPR2>5uwPKZI&lyqDAH0dmjSp`XveiZD)N z6^1>mY6pn(z%e~@@y@A+$bP*ZVd>YS1q|-hQ1EA9l(90G=CyeRUG~aS)(YU@+=jVE z=-9lnRdeMqTeVg$?ptlK=Cv6k=OK61g#FvAHqadal*ZD&hAypV4VX8VHgo=DUpY(X zyrbSZe{j(dhw9;Km$l#|=ltDkkn~3r&Ul2gO8PZ|k-OM?0gwR=^?pS{HEN*7&ZA4S zv|pZ_o-NvkSqh1zdS~;TFCNf5Pq3OL0e-_liCs2fMw2~UrnABWF= zeex{)?A1}}VEIucT-;`BO`5Ej=CX8#RPv8MDz}Coe*|EkF(#MmX1_Z6|&sMZXQNS43?MH$*%;Web70pQCXW&+Keh%Hqm_9ZHXx~`afh%8v{p2c>>;_;O>>y7 zdiA@&$Ok}N!!}*dePliMOmC}W>ecR!_yBim({(ZR*Tv*izv4T%jLrK1DyVJRmTNv~{1>J> Bv>gBd diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/identity_pool.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/identity_pool.cpython-310.pyc deleted file mode 100644 index 1cea6328f12fba1923790618f37b17d2b1313133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12602 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/impersonated_credentials.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/impersonated_credentials.cpython-310.pyc deleted file mode 100644 index b7e475af681e47f8fc45e6fdb160b97ec3945a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13759 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/metrics.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/metrics.cpython-310.pyc deleted file mode 100644 index 2b188f0381e8652232097815f28306d91e558679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3441 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/__pycache__/version.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/__pycache__/version.cpython-310.pyc deleted file mode 100644 index 7f069133676a1288aa9fd626e60a3302edd9cdf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmd1j<>g`kf?13~X<lB!#fn4F!Mo?5J*o}Ztdld7LsT9N@& b4Yo+Hpz;=nO>TZlX-=vg$ce=uTRHdupXoNk diff --git a/venv/lib/python3.10/site-packages/google/auth/_cloud_sdk.py b/venv/lib/python3.10/site-packages/google/auth/_cloud_sdk.py deleted file mode 100644 index a944119..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_cloud_sdk.py +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright 2015 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for reading the Google Cloud SDK's configuration.""" - -import os -import subprocess - -from google.auth import _helpers -from google.auth import environment_vars -from google.auth import exceptions - - -# The ~/.config subdirectory containing gcloud credentials. -_CONFIG_DIRECTORY = "gcloud" -# Windows systems store config at %APPDATA%\gcloud -_WINDOWS_CONFIG_ROOT_ENV_VAR = "APPDATA" -# The name of the file in the Cloud SDK config that contains default -# credentials. -_CREDENTIALS_FILENAME = "application_default_credentials.json" -# The name of the Cloud SDK shell script -_CLOUD_SDK_POSIX_COMMAND = "gcloud" -_CLOUD_SDK_WINDOWS_COMMAND = "gcloud.cmd" -# The command to get the Cloud SDK configuration -_CLOUD_SDK_CONFIG_GET_PROJECT_COMMAND = ("config", "get", "project") -# The command to get google user access token -_CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND = ("auth", "print-access-token") -# Cloud SDK's application-default client ID -CLOUD_SDK_CLIENT_ID = ( - "764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com" -) - - -def get_config_path(): - """Returns the absolute path the the Cloud SDK's configuration directory. - - Returns: - str: The Cloud SDK config path. - """ - # If the path is explicitly set, return that. - try: - return os.environ[environment_vars.CLOUD_SDK_CONFIG_DIR] - except KeyError: - pass - - # Non-windows systems store this at ~/.config/gcloud - if os.name != "nt": - return os.path.join(os.path.expanduser("~"), ".config", _CONFIG_DIRECTORY) - # Windows systems store config at %APPDATA%\gcloud - else: - try: - return os.path.join( - os.environ[_WINDOWS_CONFIG_ROOT_ENV_VAR], _CONFIG_DIRECTORY - ) - except KeyError: - # This should never happen unless someone is really - # messing with things, but we'll cover the case anyway. - drive = os.environ.get("SystemDrive", "C:") - return os.path.join(drive, "\\", _CONFIG_DIRECTORY) - - -def get_application_default_credentials_path(): - """Gets the path to the application default credentials file. - - The path may or may not exist. - - Returns: - str: The full path to application default credentials. - """ - config_path = get_config_path() - return os.path.join(config_path, _CREDENTIALS_FILENAME) - - -def _run_subprocess_ignore_stderr(command): - """ Return subprocess.check_output with the given command and ignores stderr.""" - with open(os.devnull, "w") as devnull: - output = subprocess.check_output(command, stderr=devnull) - return output - - -def get_project_id(): - """Gets the project ID from the Cloud SDK. - - Returns: - Optional[str]: The project ID. - """ - if os.name == "nt": - command = _CLOUD_SDK_WINDOWS_COMMAND - else: - command = _CLOUD_SDK_POSIX_COMMAND - - try: - # Ignore the stderr coming from gcloud, so it won't be mixed into the output. - # https://github.com/googleapis/google-auth-library-python/issues/673 - project = _run_subprocess_ignore_stderr( - (command,) + _CLOUD_SDK_CONFIG_GET_PROJECT_COMMAND - ) - - # Turn bytes into a string and remove "\n" - project = _helpers.from_bytes(project).strip() - return project if project else None - except (subprocess.CalledProcessError, OSError, IOError): - return None - - -def get_auth_access_token(account=None): - """Load user access token with the ``gcloud auth print-access-token`` command. - - Args: - account (Optional[str]): Account to get the access token for. If not - specified, the current active account will be used. - - Returns: - str: The user access token. - - Raises: - google.auth.exceptions.UserAccessTokenError: if failed to get access - token from gcloud. - """ - if os.name == "nt": - command = _CLOUD_SDK_WINDOWS_COMMAND - else: - command = _CLOUD_SDK_POSIX_COMMAND - - try: - if account: - command = ( - (command,) - + _CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND - + ("--account=" + account,) - ) - else: - command = (command,) + _CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND - - access_token = subprocess.check_output(command, stderr=subprocess.STDOUT) - # remove the trailing "\n" - return access_token.decode("utf-8").strip() - except (subprocess.CalledProcessError, OSError, IOError) as caught_exc: - new_exc = exceptions.UserAccessTokenError( - "Failed to obtain access token", caught_exc - ) - raise new_exc from caught_exc diff --git a/venv/lib/python3.10/site-packages/google/auth/_credentials_async.py b/venv/lib/python3.10/site-packages/google/auth/_credentials_async.py deleted file mode 100644 index 760758d..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_credentials_async.py +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Interfaces for credentials.""" - -import abc -import inspect - -from google.auth import credentials - - -class Credentials(credentials.Credentials, metaclass=abc.ABCMeta): - """Async inherited credentials class from google.auth.credentials. - The added functionality is the before_request call which requires - async/await syntax. - All credentials have a :attr:`token` that is used for authentication and - may also optionally set an :attr:`expiry` to indicate when the token will - no longer be valid. - - Most credentials will be :attr:`invalid` until :meth:`refresh` is called. - Credentials can do this automatically before the first HTTP request in - :meth:`before_request`. - - Although the token and expiration will change as the credentials are - :meth:`refreshed ` and used, credentials should be considered - immutable. Various credentials will accept configuration such as private - keys, scopes, and other options. These options are not changeable after - construction. Some classes will provide mechanisms to copy the credentials - with modifications such as :meth:`ScopedCredentials.with_scopes`. - """ - - async def before_request(self, request, method, url, headers): - """Performs credential-specific before request logic. - - Refreshes the credentials if necessary, then calls :meth:`apply` to - apply the token to the authentication header. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - method (str): The request's HTTP method or the RPC method being - invoked. - url (str): The request's URI or the RPC service's URI. - headers (Mapping): The request's headers. - """ - # pylint: disable=unused-argument - # (Subclasses may use these arguments to ascertain information about - # the http request.) - - if not self.valid: - if inspect.iscoroutinefunction(self.refresh): - await self.refresh(request) - else: - self.refresh(request) - self.apply(headers) - - -class CredentialsWithQuotaProject(credentials.CredentialsWithQuotaProject): - """Abstract base for credentials supporting ``with_quota_project`` factory""" - - -class AnonymousCredentials(credentials.AnonymousCredentials, Credentials): - """Credentials that do not provide any authentication information. - - These are useful in the case of services that support anonymous access or - local service emulators that do not use credentials. This class inherits - from the sync anonymous credentials file, but is kept if async credentials - is initialized and we would like anonymous credentials. - """ - - -class ReadOnlyScoped(credentials.ReadOnlyScoped, metaclass=abc.ABCMeta): - """Interface for credentials whose scopes can be queried. - - OAuth 2.0-based credentials allow limiting access using scopes as described - in `RFC6749 Section 3.3`_. - If a credential class implements this interface then the credentials either - use scopes in their implementation. - - Some credentials require scopes in order to obtain a token. You can check - if scoping is necessary with :attr:`requires_scopes`:: - - if credentials.requires_scopes: - # Scoping is required. - credentials = _credentials_async.with_scopes(scopes=['one', 'two']) - - Credentials that require scopes must either be constructed with scopes:: - - credentials = SomeScopedCredentials(scopes=['one', 'two']) - - Or must copy an existing instance using :meth:`with_scopes`:: - - scoped_credentials = _credentials_async.with_scopes(scopes=['one', 'two']) - - Some credentials have scopes but do not allow or require scopes to be set, - these credentials can be used as-is. - - .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 - """ - - -class Scoped(credentials.Scoped): - """Interface for credentials whose scopes can be replaced while copying. - - OAuth 2.0-based credentials allow limiting access using scopes as described - in `RFC6749 Section 3.3`_. - If a credential class implements this interface then the credentials either - use scopes in their implementation. - - Some credentials require scopes in order to obtain a token. You can check - if scoping is necessary with :attr:`requires_scopes`:: - - if credentials.requires_scopes: - # Scoping is required. - credentials = _credentials_async.create_scoped(['one', 'two']) - - Credentials that require scopes must either be constructed with scopes:: - - credentials = SomeScopedCredentials(scopes=['one', 'two']) - - Or must copy an existing instance using :meth:`with_scopes`:: - - scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) - - Some credentials have scopes but do not allow or require scopes to be set, - these credentials can be used as-is. - - .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 - """ - - -def with_scopes_if_required(credentials, scopes): - """Creates a copy of the credentials with scopes if scoping is required. - - This helper function is useful when you do not know (or care to know) the - specific type of credentials you are using (such as when you use - :func:`google.auth.default`). This function will call - :meth:`Scoped.with_scopes` if the credentials are scoped credentials and if - the credentials require scoping. Otherwise, it will return the credentials - as-is. - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - scope if necessary. - scopes (Sequence[str]): The list of scopes to use. - - Returns: - google.auth._credentials_async.Credentials: Either a new set of scoped - credentials, or the passed in credentials instance if no scoping - was required. - """ - if isinstance(credentials, Scoped) and credentials.requires_scopes: - return credentials.with_scopes(scopes) - else: - return credentials - - -class Signing(credentials.Signing, metaclass=abc.ABCMeta): - """Interface for credentials that can cryptographically sign messages.""" diff --git a/venv/lib/python3.10/site-packages/google/auth/_default.py b/venv/lib/python3.10/site-packages/google/auth/_default.py deleted file mode 100644 index 63009df..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_default.py +++ /dev/null @@ -1,691 +0,0 @@ -# Copyright 2015 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Application default credentials. - -Implements application default credentials and project ID detection. -""" - -import io -import json -import logging -import os -import warnings - -from google.auth import environment_vars -from google.auth import exceptions -import google.auth.transport._http_client - -_LOGGER = logging.getLogger(__name__) - -# Valid types accepted for file-based credentials. -_AUTHORIZED_USER_TYPE = "authorized_user" -_SERVICE_ACCOUNT_TYPE = "service_account" -_EXTERNAL_ACCOUNT_TYPE = "external_account" -_EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = "external_account_authorized_user" -_IMPERSONATED_SERVICE_ACCOUNT_TYPE = "impersonated_service_account" -_GDCH_SERVICE_ACCOUNT_TYPE = "gdch_service_account" -_VALID_TYPES = ( - _AUTHORIZED_USER_TYPE, - _SERVICE_ACCOUNT_TYPE, - _EXTERNAL_ACCOUNT_TYPE, - _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE, - _IMPERSONATED_SERVICE_ACCOUNT_TYPE, - _GDCH_SERVICE_ACCOUNT_TYPE, -) - -# Help message when no credentials can be found. -_CLOUD_SDK_MISSING_CREDENTIALS = """\ -Your default credentials were not found. To set up Application Default Credentials, \ -see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.\ -""" - -# Warning when using Cloud SDK user credentials -_CLOUD_SDK_CREDENTIALS_WARNING = """\ -Your application has authenticated using end user credentials from Google \ -Cloud SDK without a quota project. You might receive a "quota exceeded" \ -or "API not enabled" error. See the following page for troubleshooting: \ -https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \ -""" - -# The subject token type used for AWS external_account credentials. -_AWS_SUBJECT_TOKEN_TYPE = "urn:ietf:params:aws:token-type:aws4_request" - - -def _warn_about_problematic_credentials(credentials): - """Determines if the credentials are problematic. - - Credentials from the Cloud SDK that are associated with Cloud SDK's project - are problematic because they may not have APIs enabled and have limited - quota. If this is the case, warn about it. - """ - from google.auth import _cloud_sdk - - if credentials.client_id == _cloud_sdk.CLOUD_SDK_CLIENT_ID: - warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING) - - -def load_credentials_from_file( - filename, scopes=None, default_scopes=None, quota_project_id=None, request=None -): - """Loads Google credentials from a file. - - The credentials file must be a service account key, stored authorized - user credentials, external account credentials, or impersonated service - account credentials. - - Args: - filename (str): The full path to the credentials file. - scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - quota_project_id (Optional[str]): The project ID used for - quota and billing. - request (Optional[google.auth.transport.Request]): An object used to make - HTTP requests. This is used to determine the associated project ID - for a workload identity pool resource (external account credentials). - If not specified, then it will use a - google.auth.transport.requests.Request client to make requests. - - Returns: - Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded - credentials and the project ID. Authorized user credentials do not - have the project ID information. External account credentials project - IDs may not always be determined. - - Raises: - google.auth.exceptions.DefaultCredentialsError: if the file is in the - wrong format or is missing. - """ - if not os.path.exists(filename): - raise exceptions.DefaultCredentialsError( - "File {} was not found.".format(filename) - ) - - with io.open(filename, "r") as file_obj: - try: - info = json.load(file_obj) - except ValueError as caught_exc: - new_exc = exceptions.DefaultCredentialsError( - "File {} is not a valid json file.".format(filename), caught_exc - ) - raise new_exc from caught_exc - return _load_credentials_from_info( - filename, info, scopes, default_scopes, quota_project_id, request - ) - - -def load_credentials_from_dict( - info, scopes=None, default_scopes=None, quota_project_id=None, request=None -): - """Loads Google credentials from a dict. - - The credentials file must be a service account key, stored authorized - user credentials, external account credentials, or impersonated service - account credentials. - - Args: - info (Dict[str, Any]): A dict object containing the credentials - scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - quota_project_id (Optional[str]): The project ID used for - quota and billing. - request (Optional[google.auth.transport.Request]): An object used to make - HTTP requests. This is used to determine the associated project ID - for a workload identity pool resource (external account credentials). - If not specified, then it will use a - google.auth.transport.requests.Request client to make requests. - - Returns: - Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded - credentials and the project ID. Authorized user credentials do not - have the project ID information. External account credentials project - IDs may not always be determined. - - Raises: - google.auth.exceptions.DefaultCredentialsError: if the file is in the - wrong format or is missing. - """ - if not isinstance(info, dict): - raise exceptions.DefaultCredentialsError( - "info object was of type {} but dict type was expected.".format(type(info)) - ) - - return _load_credentials_from_info( - "dict object", info, scopes, default_scopes, quota_project_id, request - ) - - -def _load_credentials_from_info( - filename, info, scopes, default_scopes, quota_project_id, request -): - from google.auth.credentials import CredentialsWithQuotaProject - - credential_type = info.get("type") - - if credential_type == _AUTHORIZED_USER_TYPE: - credentials, project_id = _get_authorized_user_credentials( - filename, info, scopes - ) - - elif credential_type == _SERVICE_ACCOUNT_TYPE: - credentials, project_id = _get_service_account_credentials( - filename, info, scopes, default_scopes - ) - - elif credential_type == _EXTERNAL_ACCOUNT_TYPE: - credentials, project_id = _get_external_account_credentials( - info, - filename, - scopes=scopes, - default_scopes=default_scopes, - request=request, - ) - - elif credential_type == _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE: - credentials, project_id = _get_external_account_authorized_user_credentials( - filename, info, request - ) - - elif credential_type == _IMPERSONATED_SERVICE_ACCOUNT_TYPE: - credentials, project_id = _get_impersonated_service_account_credentials( - filename, info, scopes - ) - elif credential_type == _GDCH_SERVICE_ACCOUNT_TYPE: - credentials, project_id = _get_gdch_service_account_credentials(filename, info) - else: - raise exceptions.DefaultCredentialsError( - "The file {file} does not have a valid type. " - "Type is {type}, expected one of {valid_types}.".format( - file=filename, type=credential_type, valid_types=_VALID_TYPES - ) - ) - if isinstance(credentials, CredentialsWithQuotaProject): - credentials = _apply_quota_project_id(credentials, quota_project_id) - return credentials, project_id - - -def _get_gcloud_sdk_credentials(quota_project_id=None): - """Gets the credentials and project ID from the Cloud SDK.""" - from google.auth import _cloud_sdk - - _LOGGER.debug("Checking Cloud SDK credentials as part of auth process...") - - # Check if application default credentials exist. - credentials_filename = _cloud_sdk.get_application_default_credentials_path() - - if not os.path.isfile(credentials_filename): - _LOGGER.debug("Cloud SDK credentials not found on disk; not using them") - return None, None - - credentials, project_id = load_credentials_from_file( - credentials_filename, quota_project_id=quota_project_id - ) - - if not project_id: - project_id = _cloud_sdk.get_project_id() - - return credentials, project_id - - -def _get_explicit_environ_credentials(quota_project_id=None): - """Gets credentials from the GOOGLE_APPLICATION_CREDENTIALS environment - variable.""" - from google.auth import _cloud_sdk - - cloud_sdk_adc_path = _cloud_sdk.get_application_default_credentials_path() - explicit_file = os.environ.get(environment_vars.CREDENTIALS) - - _LOGGER.debug( - "Checking %s for explicit credentials as part of auth process...", explicit_file - ) - - if explicit_file is not None and explicit_file == cloud_sdk_adc_path: - # Cloud sdk flow calls gcloud to fetch project id, so if the explicit - # file path is cloud sdk credentials path, then we should fall back - # to cloud sdk flow, otherwise project id cannot be obtained. - _LOGGER.debug( - "Explicit credentials path %s is the same as Cloud SDK credentials path, fall back to Cloud SDK credentials flow...", - explicit_file, - ) - return _get_gcloud_sdk_credentials(quota_project_id=quota_project_id) - - if explicit_file is not None: - credentials, project_id = load_credentials_from_file( - os.environ[environment_vars.CREDENTIALS], quota_project_id=quota_project_id - ) - - return credentials, project_id - - else: - return None, None - - -def _get_gae_credentials(): - """Gets Google App Engine App Identity credentials and project ID.""" - # If not GAE gen1, prefer the metadata service even if the GAE APIs are - # available as per https://google.aip.dev/auth/4115. - if os.environ.get(environment_vars.LEGACY_APPENGINE_RUNTIME) != "python27": - return None, None - - # While this library is normally bundled with app_engine, there are - # some cases where it's not available, so we tolerate ImportError. - try: - _LOGGER.debug("Checking for App Engine runtime as part of auth process...") - import google.auth.app_engine as app_engine - except ImportError: - _LOGGER.warning("Import of App Engine auth library failed.") - return None, None - - try: - credentials = app_engine.Credentials() - project_id = app_engine.get_project_id() - return credentials, project_id - except EnvironmentError: - _LOGGER.debug( - "No App Engine library was found so cannot authentication via App Engine Identity Credentials." - ) - return None, None - - -def _get_gce_credentials(request=None, quota_project_id=None): - """Gets credentials and project ID from the GCE Metadata Service.""" - # Ping requires a transport, but we want application default credentials - # to require no arguments. So, we'll use the _http_client transport which - # uses http.client. This is only acceptable because the metadata server - # doesn't do SSL and never requires proxies. - - # While this library is normally bundled with compute_engine, there are - # some cases where it's not available, so we tolerate ImportError. - try: - from google.auth import compute_engine - from google.auth.compute_engine import _metadata - except ImportError: - _LOGGER.warning("Import of Compute Engine auth library failed.") - return None, None - - if request is None: - request = google.auth.transport._http_client.Request() - - if _metadata.is_on_gce(request=request): - # Get the project ID. - try: - project_id = _metadata.get_project_id(request=request) - except exceptions.TransportError: - project_id = None - - cred = compute_engine.Credentials() - cred = _apply_quota_project_id(cred, quota_project_id) - - return cred, project_id - else: - _LOGGER.warning( - "Authentication failed using Compute Engine authentication due to unavailable metadata server." - ) - return None, None - - -def _get_external_account_credentials( - info, filename, scopes=None, default_scopes=None, request=None -): - """Loads external account Credentials from the parsed external account info. - - The credentials information must correspond to a supported external account - credentials. - - Args: - info (Mapping[str, str]): The external account info in Google format. - filename (str): The full path to the credentials file. - scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary. - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - request (Optional[google.auth.transport.Request]): An object used to make - HTTP requests. This is used to determine the associated project ID - for a workload identity pool resource (external account credentials). - If not specified, then it will use a - google.auth.transport.requests.Request client to make requests. - - Returns: - Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded - credentials and the project ID. External account credentials project - IDs may not always be determined. - - Raises: - google.auth.exceptions.DefaultCredentialsError: if the info dictionary - is in the wrong format or is missing required information. - """ - # There are currently 3 types of external_account credentials. - if info.get("subject_token_type") == _AWS_SUBJECT_TOKEN_TYPE: - # Check if configuration corresponds to an AWS credentials. - from google.auth import aws - - credentials = aws.Credentials.from_info( - info, scopes=scopes, default_scopes=default_scopes - ) - elif ( - info.get("credential_source") is not None - and info.get("credential_source").get("executable") is not None - ): - from google.auth import pluggable - - credentials = pluggable.Credentials.from_info( - info, scopes=scopes, default_scopes=default_scopes - ) - else: - try: - # Check if configuration corresponds to an Identity Pool credentials. - from google.auth import identity_pool - - credentials = identity_pool.Credentials.from_info( - info, scopes=scopes, default_scopes=default_scopes - ) - except ValueError: - # If the configuration is invalid or does not correspond to any - # supported external_account credentials, raise an error. - raise exceptions.DefaultCredentialsError( - "Failed to load external account credentials from {}".format(filename) - ) - if request is None: - import google.auth.transport.requests - - request = google.auth.transport.requests.Request() - - return credentials, credentials.get_project_id(request=request) - - -def _get_external_account_authorized_user_credentials( - filename, info, scopes=None, default_scopes=None, request=None -): - try: - from google.auth import external_account_authorized_user - - credentials = external_account_authorized_user.Credentials.from_info(info) - except ValueError: - raise exceptions.DefaultCredentialsError( - "Failed to load external account authorized user credentials from {}".format( - filename - ) - ) - - return credentials, None - - -def _get_authorized_user_credentials(filename, info, scopes=None): - from google.oauth2 import credentials - - try: - credentials = credentials.Credentials.from_authorized_user_info( - info, scopes=scopes - ) - except ValueError as caught_exc: - msg = "Failed to load authorized user credentials from {}".format(filename) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - return credentials, None - - -def _get_service_account_credentials(filename, info, scopes=None, default_scopes=None): - from google.oauth2 import service_account - - try: - credentials = service_account.Credentials.from_service_account_info( - info, scopes=scopes, default_scopes=default_scopes - ) - except ValueError as caught_exc: - msg = "Failed to load service account credentials from {}".format(filename) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - return credentials, info.get("project_id") - - -def _get_impersonated_service_account_credentials(filename, info, scopes): - from google.auth import impersonated_credentials - - try: - source_credentials_info = info.get("source_credentials") - source_credentials_type = source_credentials_info.get("type") - if source_credentials_type == _AUTHORIZED_USER_TYPE: - source_credentials, _ = _get_authorized_user_credentials( - filename, source_credentials_info - ) - elif source_credentials_type == _SERVICE_ACCOUNT_TYPE: - source_credentials, _ = _get_service_account_credentials( - filename, source_credentials_info - ) - else: - raise exceptions.InvalidType( - "source credential of type {} is not supported.".format( - source_credentials_type - ) - ) - impersonation_url = info.get("service_account_impersonation_url") - start_index = impersonation_url.rfind("/") - end_index = impersonation_url.find(":generateAccessToken") - if start_index == -1 or end_index == -1 or start_index > end_index: - raise exceptions.InvalidValue( - "Cannot extract target principal from {}".format(impersonation_url) - ) - target_principal = impersonation_url[start_index + 1 : end_index] - delegates = info.get("delegates") - quota_project_id = info.get("quota_project_id") - credentials = impersonated_credentials.Credentials( - source_credentials, - target_principal, - scopes, - delegates, - quota_project_id=quota_project_id, - ) - except ValueError as caught_exc: - msg = "Failed to load impersonated service account credentials from {}".format( - filename - ) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - return credentials, None - - -def _get_gdch_service_account_credentials(filename, info): - from google.oauth2 import gdch_credentials - - try: - credentials = gdch_credentials.ServiceAccountCredentials.from_service_account_info( - info - ) - except ValueError as caught_exc: - msg = "Failed to load GDCH service account credentials from {}".format(filename) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - return credentials, info.get("project") - - -def get_api_key_credentials(key): - """Return credentials with the given API key.""" - from google.auth import api_key - - return api_key.Credentials(key) - - -def _apply_quota_project_id(credentials, quota_project_id): - if quota_project_id: - credentials = credentials.with_quota_project(quota_project_id) - else: - credentials = credentials.with_quota_project_from_environment() - - from google.oauth2 import credentials as authorized_user_credentials - - if isinstance(credentials, authorized_user_credentials.Credentials) and ( - not credentials.quota_project_id - ): - _warn_about_problematic_credentials(credentials) - return credentials - - -def default(scopes=None, request=None, quota_project_id=None, default_scopes=None): - """Gets the default credentials for the current environment. - - `Application Default Credentials`_ provides an easy way to obtain - credentials to call Google APIs for server-to-server or local applications. - This function acquires credentials from the environment in the following - order: - - 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set - to the path of a valid service account JSON private key file, then it is - loaded and returned. The project ID returned is the project ID defined - in the service account file if available (some older files do not - contain project ID information). - - If the environment variable is set to the path of a valid external - account JSON configuration file (workload identity federation), then the - configuration file is used to determine and retrieve the external - credentials from the current environment (AWS, Azure, etc). - These will then be exchanged for Google access tokens via the Google STS - endpoint. - The project ID returned in this case is the one corresponding to the - underlying workload identity pool resource if determinable. - - If the environment variable is set to the path of a valid GDCH service - account JSON file (`Google Distributed Cloud Hosted`_), then a GDCH - credential will be returned. The project ID returned is the project - specified in the JSON file. - 2. If the `Google Cloud SDK`_ is installed and has application default - credentials set they are loaded and returned. - - To enable application default credentials with the Cloud SDK run:: - - gcloud auth application-default login - - If the Cloud SDK has an active project, the project ID is returned. The - active project can be set using:: - - gcloud config set project - - 3. If the application is running in the `App Engine standard environment`_ - (first generation) then the credentials and project ID from the - `App Identity Service`_ are used. - 4. If the application is running in `Compute Engine`_ or `Cloud Run`_ or - the `App Engine flexible environment`_ or the `App Engine standard - environment`_ (second generation) then the credentials and project ID - are obtained from the `Metadata Service`_. - 5. If no credentials are found, - :class:`~google.auth.exceptions.DefaultCredentialsError` will be raised. - - .. _Application Default Credentials: https://developers.google.com\ - /identity/protocols/application-default-credentials - .. _Google Cloud SDK: https://cloud.google.com/sdk - .. _App Engine standard environment: https://cloud.google.com/appengine - .. _App Identity Service: https://cloud.google.com/appengine/docs/python\ - /appidentity/ - .. _Compute Engine: https://cloud.google.com/compute - .. _App Engine flexible environment: https://cloud.google.com\ - /appengine/flexible - .. _Metadata Service: https://cloud.google.com/compute/docs\ - /storing-retrieving-metadata - .. _Cloud Run: https://cloud.google.com/run - .. _Google Distributed Cloud Hosted: https://cloud.google.com/blog/topics\ - /hybrid-cloud/announcing-google-distributed-cloud-edge-and-hosted - - Example:: - - import google.auth - - credentials, project_id = google.auth.default() - - Args: - scopes (Sequence[str]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary. - request (Optional[google.auth.transport.Request]): An object used to make - HTTP requests. This is used to either detect whether the application - is running on Compute Engine or to determine the associated project - ID for a workload identity pool resource (external account - credentials). If not specified, then it will either use the standard - library http client to make requests for Compute Engine credentials - or a google.auth.transport.requests.Request client for external - account credentials. - quota_project_id (Optional[str]): The project ID used for - quota and billing. - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - Returns: - Tuple[~google.auth.credentials.Credentials, Optional[str]]: - the current environment's credentials and project ID. Project ID - may be None, which indicates that the Project ID could not be - ascertained from the environment. - - Raises: - ~google.auth.exceptions.DefaultCredentialsError: - If no credentials were found, or if the credentials found were - invalid. - """ - from google.auth.credentials import with_scopes_if_required - from google.auth.credentials import CredentialsWithQuotaProject - - explicit_project_id = os.environ.get( - environment_vars.PROJECT, os.environ.get(environment_vars.LEGACY_PROJECT) - ) - - checkers = ( - # Avoid passing scopes here to prevent passing scopes to user credentials. - # with_scopes_if_required() below will ensure scopes/default scopes are - # safely set on the returned credentials since requires_scopes will - # guard against setting scopes on user credentials. - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - lambda: _get_gcloud_sdk_credentials(quota_project_id=quota_project_id), - _get_gae_credentials, - lambda: _get_gce_credentials(request, quota_project_id=quota_project_id), - ) - - for checker in checkers: - credentials, project_id = checker() - if credentials is not None: - credentials = with_scopes_if_required( - credentials, scopes, default_scopes=default_scopes - ) - - effective_project_id = explicit_project_id or project_id - - # For external account credentials, scopes are required to determine - # the project ID. Try to get the project ID again if not yet - # determined. - if not effective_project_id and callable( - getattr(credentials, "get_project_id", None) - ): - if request is None: - import google.auth.transport.requests - - request = google.auth.transport.requests.Request() - effective_project_id = credentials.get_project_id(request=request) - - if quota_project_id and isinstance( - credentials, CredentialsWithQuotaProject - ): - credentials = credentials.with_quota_project(quota_project_id) - - if not effective_project_id: - _LOGGER.warning( - "No project ID could be determined. Consider running " - "`gcloud config set project` or setting the %s " - "environment variable", - environment_vars.PROJECT, - ) - return credentials, effective_project_id - - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) diff --git a/venv/lib/python3.10/site-packages/google/auth/_default_async.py b/venv/lib/python3.10/site-packages/google/auth/_default_async.py deleted file mode 100644 index 2e53e20..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_default_async.py +++ /dev/null @@ -1,282 +0,0 @@ -# Copyright 2020 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Application default credentials. - -Implements application default credentials and project ID detection. -""" - -import io -import json -import os - -from google.auth import _default -from google.auth import environment_vars -from google.auth import exceptions - - -def load_credentials_from_file(filename, scopes=None, quota_project_id=None): - """Loads Google credentials from a file. - - The credentials file must be a service account key or stored authorized - user credentials. - - Args: - filename (str): The full path to the credentials file. - scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary - quota_project_id (Optional[str]): The project ID used for - quota and billing. - - Returns: - Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded - credentials and the project ID. Authorized user credentials do not - have the project ID information. - - Raises: - google.auth.exceptions.DefaultCredentialsError: if the file is in the - wrong format or is missing. - """ - if not os.path.exists(filename): - raise exceptions.DefaultCredentialsError( - "File {} was not found.".format(filename) - ) - - with io.open(filename, "r") as file_obj: - try: - info = json.load(file_obj) - except ValueError as caught_exc: - new_exc = exceptions.DefaultCredentialsError( - "File {} is not a valid json file.".format(filename), caught_exc - ) - raise new_exc from caught_exc - - # The type key should indicate that the file is either a service account - # credentials file or an authorized user credentials file. - credential_type = info.get("type") - - if credential_type == _default._AUTHORIZED_USER_TYPE: - from google.oauth2 import _credentials_async as credentials - - try: - credentials = credentials.Credentials.from_authorized_user_info( - info, scopes=scopes - ) - except ValueError as caught_exc: - msg = "Failed to load authorized user credentials from {}".format(filename) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - if quota_project_id: - credentials = credentials.with_quota_project(quota_project_id) - if not credentials.quota_project_id: - _default._warn_about_problematic_credentials(credentials) - return credentials, None - - elif credential_type == _default._SERVICE_ACCOUNT_TYPE: - from google.oauth2 import _service_account_async as service_account - - try: - credentials = service_account.Credentials.from_service_account_info( - info, scopes=scopes - ).with_quota_project(quota_project_id) - except ValueError as caught_exc: - msg = "Failed to load service account credentials from {}".format(filename) - new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) - raise new_exc from caught_exc - return credentials, info.get("project_id") - - else: - raise exceptions.DefaultCredentialsError( - "The file {file} does not have a valid type. " - "Type is {type}, expected one of {valid_types}.".format( - file=filename, type=credential_type, valid_types=_default._VALID_TYPES - ) - ) - - -def _get_gcloud_sdk_credentials(quota_project_id=None): - """Gets the credentials and project ID from the Cloud SDK.""" - from google.auth import _cloud_sdk - - # Check if application default credentials exist. - credentials_filename = _cloud_sdk.get_application_default_credentials_path() - - if not os.path.isfile(credentials_filename): - return None, None - - credentials, project_id = load_credentials_from_file( - credentials_filename, quota_project_id=quota_project_id - ) - - if not project_id: - project_id = _cloud_sdk.get_project_id() - - return credentials, project_id - - -def _get_explicit_environ_credentials(quota_project_id=None): - """Gets credentials from the GOOGLE_APPLICATION_CREDENTIALS environment - variable.""" - from google.auth import _cloud_sdk - - cloud_sdk_adc_path = _cloud_sdk.get_application_default_credentials_path() - explicit_file = os.environ.get(environment_vars.CREDENTIALS) - - if explicit_file is not None and explicit_file == cloud_sdk_adc_path: - # Cloud sdk flow calls gcloud to fetch project id, so if the explicit - # file path is cloud sdk credentials path, then we should fall back - # to cloud sdk flow, otherwise project id cannot be obtained. - return _get_gcloud_sdk_credentials(quota_project_id=quota_project_id) - - if explicit_file is not None: - credentials, project_id = load_credentials_from_file( - os.environ[environment_vars.CREDENTIALS], quota_project_id=quota_project_id - ) - - return credentials, project_id - - else: - return None, None - - -def _get_gae_credentials(): - """Gets Google App Engine App Identity credentials and project ID.""" - # While this library is normally bundled with app_engine, there are - # some cases where it's not available, so we tolerate ImportError. - - return _default._get_gae_credentials() - - -def _get_gce_credentials(request=None): - """Gets credentials and project ID from the GCE Metadata Service.""" - # Ping requires a transport, but we want application default credentials - # to require no arguments. So, we'll use the _http_client transport which - # uses http.client. This is only acceptable because the metadata server - # doesn't do SSL and never requires proxies. - - # While this library is normally bundled with compute_engine, there are - # some cases where it's not available, so we tolerate ImportError. - - return _default._get_gce_credentials(request) - - -def default_async(scopes=None, request=None, quota_project_id=None): - """Gets the default credentials for the current environment. - - `Application Default Credentials`_ provides an easy way to obtain - credentials to call Google APIs for server-to-server or local applications. - This function acquires credentials from the environment in the following - order: - - 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set - to the path of a valid service account JSON private key file, then it is - loaded and returned. The project ID returned is the project ID defined - in the service account file if available (some older files do not - contain project ID information). - 2. If the `Google Cloud SDK`_ is installed and has application default - credentials set they are loaded and returned. - - To enable application default credentials with the Cloud SDK run:: - - gcloud auth application-default login - - If the Cloud SDK has an active project, the project ID is returned. The - active project can be set using:: - - gcloud config set project - - 3. If the application is running in the `App Engine standard environment`_ - (first generation) then the credentials and project ID from the - `App Identity Service`_ are used. - 4. If the application is running in `Compute Engine`_ or `Cloud Run`_ or - the `App Engine flexible environment`_ or the `App Engine standard - environment`_ (second generation) then the credentials and project ID - are obtained from the `Metadata Service`_. - 5. If no credentials are found, - :class:`~google.auth.exceptions.DefaultCredentialsError` will be raised. - - .. _Application Default Credentials: https://developers.google.com\ - /identity/protocols/application-default-credentials - .. _Google Cloud SDK: https://cloud.google.com/sdk - .. _App Engine standard environment: https://cloud.google.com/appengine - .. _App Identity Service: https://cloud.google.com/appengine/docs/python\ - /appidentity/ - .. _Compute Engine: https://cloud.google.com/compute - .. _App Engine flexible environment: https://cloud.google.com\ - /appengine/flexible - .. _Metadata Service: https://cloud.google.com/compute/docs\ - /storing-retrieving-metadata - .. _Cloud Run: https://cloud.google.com/run - - Example:: - - import google.auth - - credentials, project_id = google.auth.default() - - Args: - scopes (Sequence[str]): The list of scopes for the credentials. If - specified, the credentials will automatically be scoped if - necessary. - request (google.auth.transport.Request): An object used to make - HTTP requests. This is used to detect whether the application - is running on Compute Engine. If not specified, then it will - use the standard library http client to make requests. - quota_project_id (Optional[str]): The project ID used for - quota and billing. - Returns: - Tuple[~google.auth.credentials.Credentials, Optional[str]]: - the current environment's credentials and project ID. Project ID - may be None, which indicates that the Project ID could not be - ascertained from the environment. - - Raises: - ~google.auth.exceptions.DefaultCredentialsError: - If no credentials were found, or if the credentials found were - invalid. - """ - from google.auth._credentials_async import with_scopes_if_required - from google.auth.credentials import CredentialsWithQuotaProject - - explicit_project_id = os.environ.get( - environment_vars.PROJECT, os.environ.get(environment_vars.LEGACY_PROJECT) - ) - - checkers = ( - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - lambda: _get_gcloud_sdk_credentials(quota_project_id=quota_project_id), - _get_gae_credentials, - lambda: _get_gce_credentials(request), - ) - - for checker in checkers: - credentials, project_id = checker() - if credentials is not None: - credentials = with_scopes_if_required(credentials, scopes) - if quota_project_id and isinstance( - credentials, CredentialsWithQuotaProject - ): - credentials = credentials.with_quota_project(quota_project_id) - effective_project_id = explicit_project_id or project_id - if not effective_project_id: - _default._LOGGER.warning( - "No project ID could be determined. Consider running " - "`gcloud config set project` or setting the %s " - "environment variable", - environment_vars.PROJECT, - ) - return credentials, effective_project_id - - raise exceptions.DefaultCredentialsError(_default._CLOUD_SDK_MISSING_CREDENTIALS) diff --git a/venv/lib/python3.10/site-packages/google/auth/_exponential_backoff.py b/venv/lib/python3.10/site-packages/google/auth/_exponential_backoff.py deleted file mode 100644 index 0dd621a..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_exponential_backoff.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import random -import time - -# The default amount of retry attempts -_DEFAULT_RETRY_TOTAL_ATTEMPTS = 3 - -# The default initial backoff period (1.0 second). -_DEFAULT_INITIAL_INTERVAL_SECONDS = 1.0 - -# The default randomization factor (0.1 which results in a random period ranging -# between 10% below and 10% above the retry interval). -_DEFAULT_RANDOMIZATION_FACTOR = 0.1 - -# The default multiplier value (2 which is 100% increase per back off). -_DEFAULT_MULTIPLIER = 2.0 - -"""Exponential Backoff Utility - -This is a private module that implements the exponential back off algorithm. -It can be used as a utility for code that needs to retry on failure, for example -an HTTP request. -""" - - -class ExponentialBackoff: - """An exponential backoff iterator. This can be used in a for loop to - perform requests with exponential backoff. - - Args: - total_attempts Optional[int]: - The maximum amount of retries that should happen. - The default value is 3 attempts. - initial_wait_seconds Optional[int]: - The amount of time to sleep in the first backoff. This parameter - should be in seconds. - The default value is 1 second. - randomization_factor Optional[float]: - The amount of jitter that should be in each backoff. For example, - a value of 0.1 will introduce a jitter range of 10% to the - current backoff period. - The default value is 0.1. - multiplier Optional[float]: - The backoff multipler. This adjusts how much each backoff will - increase. For example a value of 2.0 leads to a 200% backoff - on each attempt. If the initial_wait is 1.0 it would look like - this sequence [1.0, 2.0, 4.0, 8.0]. - The default value is 2.0. - """ - - def __init__( - self, - total_attempts=_DEFAULT_RETRY_TOTAL_ATTEMPTS, - initial_wait_seconds=_DEFAULT_INITIAL_INTERVAL_SECONDS, - randomization_factor=_DEFAULT_RANDOMIZATION_FACTOR, - multiplier=_DEFAULT_MULTIPLIER, - ): - self._total_attempts = total_attempts - self._initial_wait_seconds = initial_wait_seconds - - self._current_wait_in_seconds = self._initial_wait_seconds - - self._randomization_factor = randomization_factor - self._multiplier = multiplier - self._backoff_count = 0 - - def __iter__(self): - self._backoff_count = 0 - self._current_wait_in_seconds = self._initial_wait_seconds - return self - - def __next__(self): - if self._backoff_count >= self._total_attempts: - raise StopIteration - self._backoff_count += 1 - - jitter_variance = self._current_wait_in_seconds * self._randomization_factor - jitter = random.uniform( - self._current_wait_in_seconds - jitter_variance, - self._current_wait_in_seconds + jitter_variance, - ) - - time.sleep(jitter) - - self._current_wait_in_seconds *= self._multiplier - return self._backoff_count - - @property - def total_attempts(self): - """The total amount of backoff attempts that will be made.""" - return self._total_attempts - - @property - def backoff_count(self): - """The current amount of backoff attempts that have been made.""" - return self._backoff_count diff --git a/venv/lib/python3.10/site-packages/google/auth/_helpers.py b/venv/lib/python3.10/site-packages/google/auth/_helpers.py deleted file mode 100644 index a6c07f7..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_helpers.py +++ /dev/null @@ -1,273 +0,0 @@ -# Copyright 2015 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helper functions for commonly used utilities.""" - -import base64 -import calendar -import datetime -from email.message import Message -import sys -import urllib - -from google.auth import exceptions - -# The smallest MDS cache used by this library stores tokens until 4 minutes from -# expiry. -REFRESH_THRESHOLD = datetime.timedelta(minutes=3, seconds=45) - - -def copy_docstring(source_class): - """Decorator that copies a method's docstring from another class. - - Args: - source_class (type): The class that has the documented method. - - Returns: - Callable: A decorator that will copy the docstring of the same - named method in the source class to the decorated method. - """ - - def decorator(method): - """Decorator implementation. - - Args: - method (Callable): The method to copy the docstring to. - - Returns: - Callable: the same method passed in with an updated docstring. - - Raises: - google.auth.exceptions.InvalidOperation: if the method already has a docstring. - """ - if method.__doc__: - raise exceptions.InvalidOperation("Method already has a docstring.") - - source_method = getattr(source_class, method.__name__) - method.__doc__ = source_method.__doc__ - - return method - - return decorator - - -def parse_content_type(header_value): - """Parse a 'content-type' header value to get just the plain media-type (without parameters). - - This is done using the class Message from email.message as suggested in PEP 594 - (because the cgi is now deprecated and will be removed in python 3.13, - see https://peps.python.org/pep-0594/#cgi). - - Args: - header_value (str): The value of a 'content-type' header as a string. - - Returns: - str: A string with just the lowercase media-type from the parsed 'content-type' header. - If the provided content-type is not parsable, returns 'text/plain', - the default value for textual files. - """ - m = Message() - m["content-type"] = header_value - return ( - m.get_content_type() - ) # Despite the name, actually returns just the media-type - - -def utcnow(): - """Returns the current UTC datetime. - - Returns: - datetime: The current time in UTC. - """ - # We used datetime.utcnow() before, since it's deprecated from python 3.12, - # we are using datetime.now(timezone.utc) now. "utcnow()" is offset-native - # (no timezone info), but "now()" is offset-aware (with timezone info). - # This will cause datetime comparison problem. For backward compatibility, - # we need to remove the timezone info. - now = datetime.datetime.now(datetime.timezone.utc) - now = now.replace(tzinfo=None) - return now - - -def datetime_to_secs(value): - """Convert a datetime object to the number of seconds since the UNIX epoch. - - Args: - value (datetime): The datetime to convert. - - Returns: - int: The number of seconds since the UNIX epoch. - """ - return calendar.timegm(value.utctimetuple()) - - -def to_bytes(value, encoding="utf-8"): - """Converts a string value to bytes, if necessary. - - Args: - value (Union[str, bytes]): The value to be converted. - encoding (str): The encoding to use to convert unicode to bytes. - Defaults to "utf-8". - - Returns: - bytes: The original value converted to bytes (if unicode) or as - passed in if it started out as bytes. - - Raises: - google.auth.exceptions.InvalidValue: If the value could not be converted to bytes. - """ - result = value.encode(encoding) if isinstance(value, str) else value - if isinstance(result, bytes): - return result - else: - raise exceptions.InvalidValue( - "{0!r} could not be converted to bytes".format(value) - ) - - -def from_bytes(value): - """Converts bytes to a string value, if necessary. - - Args: - value (Union[str, bytes]): The value to be converted. - - Returns: - str: The original value converted to unicode (if bytes) or as passed in - if it started out as unicode. - - Raises: - google.auth.exceptions.InvalidValue: If the value could not be converted to unicode. - """ - result = value.decode("utf-8") if isinstance(value, bytes) else value - if isinstance(result, str): - return result - else: - raise exceptions.InvalidValue( - "{0!r} could not be converted to unicode".format(value) - ) - - -def update_query(url, params, remove=None): - """Updates a URL's query parameters. - - Replaces any current values if they are already present in the URL. - - Args: - url (str): The URL to update. - params (Mapping[str, str]): A mapping of query parameter - keys to values. - remove (Sequence[str]): Parameters to remove from the query string. - - Returns: - str: The URL with updated query parameters. - - Examples: - - >>> url = 'http://example.com?a=1' - >>> update_query(url, {'a': '2'}) - http://example.com?a=2 - >>> update_query(url, {'b': '3'}) - http://example.com?a=1&b=3 - >> update_query(url, {'b': '3'}, remove=['a']) - http://example.com?b=3 - - """ - if remove is None: - remove = [] - - # Split the URL into parts. - parts = urllib.parse.urlparse(url) - # Parse the query string. - query_params = urllib.parse.parse_qs(parts.query) - # Update the query parameters with the new parameters. - query_params.update(params) - # Remove any values specified in remove. - query_params = { - key: value for key, value in query_params.items() if key not in remove - } - # Re-encoded the query string. - new_query = urllib.parse.urlencode(query_params, doseq=True) - # Unsplit the url. - new_parts = parts._replace(query=new_query) - return urllib.parse.urlunparse(new_parts) - - -def scopes_to_string(scopes): - """Converts scope value to a string suitable for sending to OAuth 2.0 - authorization servers. - - Args: - scopes (Sequence[str]): The sequence of scopes to convert. - - Returns: - str: The scopes formatted as a single string. - """ - return " ".join(scopes) - - -def string_to_scopes(scopes): - """Converts stringifed scopes value to a list. - - Args: - scopes (Union[Sequence, str]): The string of space-separated scopes - to convert. - Returns: - Sequence(str): The separated scopes. - """ - if not scopes: - return [] - - return scopes.split(" ") - - -def padded_urlsafe_b64decode(value): - """Decodes base64 strings lacking padding characters. - - Google infrastructure tends to omit the base64 padding characters. - - Args: - value (Union[str, bytes]): The encoded value. - - Returns: - bytes: The decoded value - """ - b64string = to_bytes(value) - padded = b64string + b"=" * (-len(b64string) % 4) - return base64.urlsafe_b64decode(padded) - - -def unpadded_urlsafe_b64encode(value): - """Encodes base64 strings removing any padding characters. - - `rfc 7515`_ defines Base64url to NOT include any padding - characters, but the stdlib doesn't do that by default. - - _rfc7515: https://tools.ietf.org/html/rfc7515#page-6 - - Args: - value (Union[str|bytes]): The bytes-like value to encode - - Returns: - Union[str|bytes]: The encoded value - """ - return base64.urlsafe_b64encode(value).rstrip(b"=") - - -def is_python_3(): - """Check if the Python interpreter is Python 2 or 3. - - Returns: - bool: True if the Python interpreter is Python 3 and False otherwise. - """ - return sys.version_info > (3, 0) diff --git a/venv/lib/python3.10/site-packages/google/auth/_jwt_async.py b/venv/lib/python3.10/site-packages/google/auth/_jwt_async.py deleted file mode 100644 index 3a1abc5..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_jwt_async.py +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""JSON Web Tokens - -Provides support for creating (encoding) and verifying (decoding) JWTs, -especially JWTs generated and consumed by Google infrastructure. - -See `rfc7519`_ for more details on JWTs. - -To encode a JWT use :func:`encode`:: - - from google.auth import crypt - from google.auth import jwt_async - - signer = crypt.Signer(private_key) - payload = {'some': 'payload'} - encoded = jwt_async.encode(signer, payload) - -To decode a JWT and verify claims use :func:`decode`:: - - claims = jwt_async.decode(encoded, certs=public_certs) - -You can also skip verification:: - - claims = jwt_async.decode(encoded, verify=False) - -.. _rfc7519: https://tools.ietf.org/html/rfc7519 - - -NOTE: This async support is experimental and marked internal. This surface may -change in minor releases. -""" - -from google.auth import _credentials_async -from google.auth import jwt - - -def encode(signer, payload, header=None, key_id=None): - """Make a signed JWT. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign the JWT. - payload (Mapping[str, str]): The JWT payload. - header (Mapping[str, str]): Additional JWT header payload. - key_id (str): The key id to add to the JWT header. If the - signer has a key id it will be used as the default. If this is - specified it will override the signer's key id. - - Returns: - bytes: The encoded JWT. - """ - return jwt.encode(signer, payload, header, key_id) - - -def decode(token, certs=None, verify=True, audience=None): - """Decode and verify a JWT. - - Args: - token (str): The encoded JWT. - certs (Union[str, bytes, Mapping[str, Union[str, bytes]]]): The - certificate used to validate the JWT signature. If bytes or string, - it must the the public key certificate in PEM format. If a mapping, - it must be a mapping of key IDs to public key certificates in PEM - format. The mapping must contain the same key ID that's specified - in the token's header. - verify (bool): Whether to perform signature and claim validation. - Verification is done by default. - audience (str): The audience claim, 'aud', that this JWT should - contain. If None then the JWT's 'aud' parameter is not verified. - - Returns: - Mapping[str, str]: The deserialized JSON payload in the JWT. - - Raises: - ValueError: if any verification checks failed. - """ - - return jwt.decode(token, certs, verify, audience) - - -class Credentials( - jwt.Credentials, _credentials_async.Signing, _credentials_async.Credentials -): - """Credentials that use a JWT as the bearer token. - - These credentials require an "audience" claim. This claim identifies the - intended recipient of the bearer token. - - The constructor arguments determine the claims for the JWT that is - sent with requests. Usually, you'll construct these credentials with - one of the helper constructors as shown in the next section. - - To create JWT credentials using a Google service account private key - JSON file:: - - audience = 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher' - credentials = jwt_async.Credentials.from_service_account_file( - 'service-account.json', - audience=audience) - - If you already have the service account file loaded and parsed:: - - service_account_info = json.load(open('service_account.json')) - credentials = jwt_async.Credentials.from_service_account_info( - service_account_info, - audience=audience) - - Both helper methods pass on arguments to the constructor, so you can - specify the JWT claims:: - - credentials = jwt_async.Credentials.from_service_account_file( - 'service-account.json', - audience=audience, - additional_claims={'meta': 'data'}) - - You can also construct the credentials directly if you have a - :class:`~google.auth.crypt.Signer` instance:: - - credentials = jwt_async.Credentials( - signer, - issuer='your-issuer', - subject='your-subject', - audience=audience) - - The claims are considered immutable. If you want to modify the claims, - you can easily create another instance using :meth:`with_claims`:: - - new_audience = ( - 'https://pubsub.googleapis.com/google.pubsub.v1.Subscriber') - new_credentials = credentials.with_claims(audience=new_audience) - """ - - -class OnDemandCredentials( - jwt.OnDemandCredentials, _credentials_async.Signing, _credentials_async.Credentials -): - """On-demand JWT credentials. - - Like :class:`Credentials`, this class uses a JWT as the bearer token for - authentication. However, this class does not require the audience at - construction time. Instead, it will generate a new token on-demand for - each request using the request URI as the audience. It caches tokens - so that multiple requests to the same URI do not incur the overhead - of generating a new token every time. - - This behavior is especially useful for `gRPC`_ clients. A gRPC service may - have multiple audience and gRPC clients may not know all of the audiences - required for accessing a particular service. With these credentials, - no knowledge of the audiences is required ahead of time. - - .. _grpc: http://www.grpc.io/ - """ diff --git a/venv/lib/python3.10/site-packages/google/auth/_oauth2client.py b/venv/lib/python3.10/site-packages/google/auth/_oauth2client.py deleted file mode 100644 index 8b83ff2..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_oauth2client.py +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for transitioning from oauth2client to google-auth. - -.. warning:: - This module is private as it is intended to assist first-party downstream - clients with the transition from oauth2client to google-auth. -""" - -from __future__ import absolute_import - -from google.auth import _helpers -import google.auth.app_engine -import google.auth.compute_engine -import google.oauth2.credentials -import google.oauth2.service_account - -try: - import oauth2client.client # type: ignore - import oauth2client.contrib.gce # type: ignore - import oauth2client.service_account # type: ignore -except ImportError as caught_exc: - raise ImportError("oauth2client is not installed.") from caught_exc - -try: - import oauth2client.contrib.appengine # type: ignore - - _HAS_APPENGINE = True -except ImportError: - _HAS_APPENGINE = False - - -_CONVERT_ERROR_TMPL = "Unable to convert {} to a google-auth credentials class." - - -def _convert_oauth2_credentials(credentials): - """Converts to :class:`google.oauth2.credentials.Credentials`. - - Args: - credentials (Union[oauth2client.client.OAuth2Credentials, - oauth2client.client.GoogleCredentials]): The credentials to - convert. - - Returns: - google.oauth2.credentials.Credentials: The converted credentials. - """ - new_credentials = google.oauth2.credentials.Credentials( - token=credentials.access_token, - refresh_token=credentials.refresh_token, - token_uri=credentials.token_uri, - client_id=credentials.client_id, - client_secret=credentials.client_secret, - scopes=credentials.scopes, - ) - - new_credentials._expires = credentials.token_expiry - - return new_credentials - - -def _convert_service_account_credentials(credentials): - """Converts to :class:`google.oauth2.service_account.Credentials`. - - Args: - credentials (Union[ - oauth2client.service_account.ServiceAccountCredentials, - oauth2client.service_account._JWTAccessCredentials]): The - credentials to convert. - - Returns: - google.oauth2.service_account.Credentials: The converted credentials. - """ - info = credentials.serialization_data.copy() - info["token_uri"] = credentials.token_uri - return google.oauth2.service_account.Credentials.from_service_account_info(info) - - -def _convert_gce_app_assertion_credentials(credentials): - """Converts to :class:`google.auth.compute_engine.Credentials`. - - Args: - credentials (oauth2client.contrib.gce.AppAssertionCredentials): The - credentials to convert. - - Returns: - google.oauth2.service_account.Credentials: The converted credentials. - """ - return google.auth.compute_engine.Credentials( - service_account_email=credentials.service_account_email - ) - - -def _convert_appengine_app_assertion_credentials(credentials): - """Converts to :class:`google.auth.app_engine.Credentials`. - - Args: - credentials (oauth2client.contrib.app_engine.AppAssertionCredentials): - The credentials to convert. - - Returns: - google.oauth2.service_account.Credentials: The converted credentials. - """ - # pylint: disable=invalid-name - return google.auth.app_engine.Credentials( - scopes=_helpers.string_to_scopes(credentials.scope), - service_account_id=credentials.service_account_id, - ) - - -_CLASS_CONVERSION_MAP = { - oauth2client.client.OAuth2Credentials: _convert_oauth2_credentials, - oauth2client.client.GoogleCredentials: _convert_oauth2_credentials, - oauth2client.service_account.ServiceAccountCredentials: _convert_service_account_credentials, - oauth2client.service_account._JWTAccessCredentials: _convert_service_account_credentials, - oauth2client.contrib.gce.AppAssertionCredentials: _convert_gce_app_assertion_credentials, -} - -if _HAS_APPENGINE: - _CLASS_CONVERSION_MAP[ - oauth2client.contrib.appengine.AppAssertionCredentials - ] = _convert_appengine_app_assertion_credentials - - -def convert(credentials): - """Convert oauth2client credentials to google-auth credentials. - - This class converts: - - - :class:`oauth2client.client.OAuth2Credentials` to - :class:`google.oauth2.credentials.Credentials`. - - :class:`oauth2client.client.GoogleCredentials` to - :class:`google.oauth2.credentials.Credentials`. - - :class:`oauth2client.service_account.ServiceAccountCredentials` to - :class:`google.oauth2.service_account.Credentials`. - - :class:`oauth2client.service_account._JWTAccessCredentials` to - :class:`google.oauth2.service_account.Credentials`. - - :class:`oauth2client.contrib.gce.AppAssertionCredentials` to - :class:`google.auth.compute_engine.Credentials`. - - :class:`oauth2client.contrib.appengine.AppAssertionCredentials` to - :class:`google.auth.app_engine.Credentials`. - - Returns: - google.auth.credentials.Credentials: The converted credentials. - - Raises: - ValueError: If the credentials could not be converted. - """ - - credentials_class = type(credentials) - - try: - return _CLASS_CONVERSION_MAP[credentials_class](credentials) - except KeyError as caught_exc: - new_exc = ValueError(_CONVERT_ERROR_TMPL.format(credentials_class)) - raise new_exc from caught_exc diff --git a/venv/lib/python3.10/site-packages/google/auth/_refresh_worker.py b/venv/lib/python3.10/site-packages/google/auth/_refresh_worker.py deleted file mode 100644 index 674032d..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_refresh_worker.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2023 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import copy -import logging -import threading - -import google.auth.exceptions as e - -_LOGGER = logging.getLogger(__name__) - - -class RefreshThreadManager: - """ - Organizes exactly one background job that refresh a token. - """ - - def __init__(self): - """Initializes the manager.""" - - self._worker = None - self._lock = threading.Lock() # protects access to worker threads. - - def start_refresh(self, cred, request): - """Starts a refresh thread for the given credentials. - The credentials are refreshed using the request parameter. - request and cred MUST not be None - - Returns True if a background refresh was kicked off. False otherwise. - - Args: - cred: A credentials object. - request: A request object. - Returns: - bool - """ - if cred is None or request is None: - raise e.InvalidValue( - "Unable to start refresh. cred and request must be valid and instantiated objects." - ) - - with self._lock: - if self._worker is not None and self._worker._error_info is not None: - return False - - if self._worker is None or not self._worker.is_alive(): # pragma: NO COVER - self._worker = RefreshThread(cred=cred, request=copy.deepcopy(request)) - self._worker.start() - return True - - def clear_error(self): - """ - Removes any errors that were stored from previous background refreshes. - """ - with self._lock: - if self._worker: - self._worker._error_info = None - - def __getstate__(self): - """Pickle helper that serializes the _lock attribute.""" - state = self.__dict__.copy() - state["_lock"] = None - return state - - def __setstate__(self, state): - """Pickle helper that deserializes the _lock attribute.""" - state["_lock"] = threading.Lock() - self.__dict__.update(state) - - -class RefreshThread(threading.Thread): - """ - Thread that refreshes credentials. - """ - - def __init__(self, cred, request, **kwargs): - """Initializes the thread. - - Args: - cred: A Credential object to refresh. - request: A Request object used to perform a credential refresh. - **kwargs: Additional keyword arguments. - """ - - super().__init__(**kwargs) - self._cred = cred - self._request = request - self._error_info = None - - def run(self): - """ - Perform the credential refresh. - """ - try: - self._cred.refresh(self._request) - except Exception as err: # pragma: NO COVER - _LOGGER.error(f"Background refresh failed due to: {err}") - self._error_info = err diff --git a/venv/lib/python3.10/site-packages/google/auth/_service_account_info.py b/venv/lib/python3.10/site-packages/google/auth/_service_account_info.py deleted file mode 100644 index 6b64adc..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/_service_account_info.py +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helper functions for loading data from a Google service account file.""" - -import io -import json - -from google.auth import crypt -from google.auth import exceptions - - -def from_dict(data, require=None, use_rsa_signer=True): - """Validates a dictionary containing Google service account data. - - Creates and returns a :class:`google.auth.crypt.Signer` instance from the - private key specified in the data. - - Args: - data (Mapping[str, str]): The service account data - require (Sequence[str]): List of keys required to be present in the - info. - use_rsa_signer (Optional[bool]): Whether to use RSA signer or EC signer. - We use RSA signer by default. - - Returns: - google.auth.crypt.Signer: A signer created from the private key in the - service account file. - - Raises: - MalformedError: if the data was in the wrong format, or if one of the - required keys is missing. - """ - keys_needed = set(require if require is not None else []) - - missing = keys_needed.difference(data.keys()) - - if missing: - raise exceptions.MalformedError( - "Service account info was not in the expected format, missing " - "fields {}.".format(", ".join(missing)) - ) - - # Create a signer. - if use_rsa_signer: - signer = crypt.RSASigner.from_service_account_info(data) - else: - signer = crypt.ES256Signer.from_service_account_info(data) - - return signer - - -def from_filename(filename, require=None, use_rsa_signer=True): - """Reads a Google service account JSON file and returns its parsed info. - - Args: - filename (str): The path to the service account .json file. - require (Sequence[str]): List of keys required to be present in the - info. - use_rsa_signer (Optional[bool]): Whether to use RSA signer or EC signer. - We use RSA signer by default. - - Returns: - Tuple[ Mapping[str, str], google.auth.crypt.Signer ]: The verified - info and a signer instance. - """ - with io.open(filename, "r", encoding="utf-8") as json_file: - data = json.load(json_file) - return data, from_dict(data, require=require, use_rsa_signer=use_rsa_signer) diff --git a/venv/lib/python3.10/site-packages/google/auth/api_key.py b/venv/lib/python3.10/site-packages/google/auth/api_key.py deleted file mode 100644 index 4fdf7f2..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/api_key.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google API key support. -This module provides authentication using the `API key`_. -.. _API key: - https://cloud.google.com/docs/authentication/api-keys/ -""" - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions - - -class Credentials(credentials.Credentials): - """API key credentials. - These credentials use API key to provide authorization to applications. - """ - - def __init__(self, token): - """ - Args: - token (str): API key string - Raises: - ValueError: If the provided API key is not a non-empty string. - """ - super(Credentials, self).__init__() - if not token: - raise exceptions.InvalidValue("Token must be a non-empty API key string") - self.token = token - - @property - def expired(self): - return False - - @property - def valid(self): - return True - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - return - - def apply(self, headers, token=None): - """Apply the API key token to the x-goog-api-key header. - Args: - headers (Mapping): The HTTP request headers. - token (Optional[str]): If specified, overrides the current access - token. - """ - headers["x-goog-api-key"] = token or self.token - - def before_request(self, request, method, url, headers): - """Performs credential-specific before request logic. - Refreshes the credentials if necessary, then calls :meth:`apply` to - apply the token to the x-goog-api-key header. - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - method (str): The request's HTTP method or the RPC method being - invoked. - url (str): The request's URI or the RPC service's URI. - headers (Mapping): The request's headers. - """ - self.apply(headers) diff --git a/venv/lib/python3.10/site-packages/google/auth/app_engine.py b/venv/lib/python3.10/site-packages/google/auth/app_engine.py deleted file mode 100644 index 7083ee6..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/app_engine.py +++ /dev/null @@ -1,180 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google App Engine standard environment support. - -This module provides authentication and signing for applications running on App -Engine in the standard environment using the `App Identity API`_. - - -.. _App Identity API: - https://cloud.google.com/appengine/docs/python/appidentity/ -""" - -import datetime - -from google.auth import _helpers -from google.auth import credentials -from google.auth import crypt -from google.auth import exceptions - -# pytype: disable=import-error -try: - from google.appengine.api import app_identity # type: ignore -except ImportError: - app_identity = None # type: ignore -# pytype: enable=import-error - - -class Signer(crypt.Signer): - """Signs messages using the App Engine App Identity service. - - This can be used in place of :class:`google.auth.crypt.Signer` when - running in the App Engine standard environment. - """ - - @property - def key_id(self): - """Optional[str]: The key ID used to identify this private key. - - .. warning:: - This is always ``None``. The key ID used by App Engine can not - be reliably determined ahead of time. - """ - return None - - @_helpers.copy_docstring(crypt.Signer) - def sign(self, message): - message = _helpers.to_bytes(message) - _, signature = app_identity.sign_blob(message) - return signature - - -def get_project_id(): - """Gets the project ID for the current App Engine application. - - Returns: - str: The project ID - - Raises: - google.auth.exceptions.OSError: If the App Engine APIs are unavailable. - """ - # pylint: disable=missing-raises-doc - # Pylint rightfully thinks google.auth.exceptions.OSError is OSError, but doesn't - # realize it's a valid alias. - if app_identity is None: - raise exceptions.OSError("The App Engine APIs are not available.") - return app_identity.get_application_id() - - -class Credentials( - credentials.Scoped, credentials.Signing, credentials.CredentialsWithQuotaProject -): - """App Engine standard environment credentials. - - These credentials use the App Engine App Identity API to obtain access - tokens. - """ - - def __init__( - self, - scopes=None, - default_scopes=None, - service_account_id=None, - quota_project_id=None, - ): - """ - Args: - scopes (Sequence[str]): Scopes to request from the App Identity - API. - default_scopes (Sequence[str]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - service_account_id (str): The service account ID passed into - :func:`google.appengine.api.app_identity.get_access_token`. - If not specified, the default application service account - ID will be used. - quota_project_id (Optional[str]): The project ID used for quota - and billing. - - Raises: - google.auth.exceptions.OSError: If the App Engine APIs are unavailable. - """ - # pylint: disable=missing-raises-doc - # Pylint rightfully thinks google.auth.exceptions.OSError is OSError, but doesn't - # realize it's a valid alias. - if app_identity is None: - raise exceptions.OSError("The App Engine APIs are not available.") - - super(Credentials, self).__init__() - self._scopes = scopes - self._default_scopes = default_scopes - self._service_account_id = service_account_id - self._signer = Signer() - self._quota_project_id = quota_project_id - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - scopes = self._scopes if self._scopes is not None else self._default_scopes - # pylint: disable=unused-argument - token, ttl = app_identity.get_access_token(scopes, self._service_account_id) - expiry = datetime.datetime.utcfromtimestamp(ttl) - - self.token, self.expiry = token, expiry - - @property - def service_account_email(self): - """The service account email.""" - if self._service_account_id is None: - self._service_account_id = app_identity.get_service_account_name() - return self._service_account_id - - @property - def requires_scopes(self): - """Checks if the credentials requires scopes. - - Returns: - bool: True if there are no scopes set otherwise False. - """ - return not self._scopes and not self._default_scopes - - @_helpers.copy_docstring(credentials.Scoped) - def with_scopes(self, scopes, default_scopes=None): - return self.__class__( - scopes=scopes, - default_scopes=default_scopes, - service_account_id=self._service_account_id, - quota_project_id=self.quota_project_id, - ) - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__( - scopes=self._scopes, - service_account_id=self._service_account_id, - quota_project_id=quota_project_id, - ) - - @_helpers.copy_docstring(credentials.Signing) - def sign_bytes(self, message): - return self._signer.sign(message) - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer_email(self): - return self.service_account_email - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer(self): - return self._signer diff --git a/venv/lib/python3.10/site-packages/google/auth/aws.py b/venv/lib/python3.10/site-packages/google/auth/aws.py deleted file mode 100644 index 28c065d..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/aws.py +++ /dev/null @@ -1,861 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""AWS Credentials and AWS Signature V4 Request Signer. - -This module provides credentials to access Google Cloud resources from Amazon -Web Services (AWS) workloads. These credentials are recommended over the -use of service account credentials in AWS as they do not involve the management -of long-live service account private keys. - -AWS Credentials are initialized using external_account arguments which are -typically loaded from the external credentials JSON file. - -This module also provides a definition for an abstract AWS security credentials supplier. -This supplier can be implemented to return valid AWS security credentials and an AWS region -and used to create AWS credentials. The credentials will then call the -supplier instead of using pre-defined methods such as calling the EC2 metadata endpoints. - -This module also provides a basic implementation of the -`AWS Signature Version 4`_ request signing algorithm. - -AWS Credentials use serialized signed requests to the -`AWS STS GetCallerIdentity`_ API that can be exchanged for Google access tokens -via the GCP STS endpoint. - -.. _AWS Signature Version 4: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html -.. _AWS STS GetCallerIdentity: https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html -""" - -import abc -from dataclasses import dataclass -import hashlib -import hmac -import http.client as http_client -import json -import os -import posixpath -import re -from typing import Optional -import urllib -from urllib.parse import urljoin - -from google.auth import _helpers -from google.auth import environment_vars -from google.auth import exceptions -from google.auth import external_account - -# AWS Signature Version 4 signing algorithm identifier. -_AWS_ALGORITHM = "AWS4-HMAC-SHA256" -# The termination string for the AWS credential scope value as defined in -# https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html -_AWS_REQUEST_TYPE = "aws4_request" -# The AWS authorization header name for the security session token if available. -_AWS_SECURITY_TOKEN_HEADER = "x-amz-security-token" -# The AWS authorization header name for the auto-generated date. -_AWS_DATE_HEADER = "x-amz-date" -# The default AWS regional credential verification URL. -_DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL = ( - "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15" -) -# IMDSV2 session token lifetime. This is set to a low value because the session token is used immediately. -_IMDSV2_SESSION_TOKEN_TTL_SECONDS = "300" - - -class RequestSigner(object): - """Implements an AWS request signer based on the AWS Signature Version 4 signing - process. - https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html - """ - - def __init__(self, region_name): - """Instantiates an AWS request signer used to compute authenticated signed - requests to AWS APIs based on the AWS Signature Version 4 signing process. - - Args: - region_name (str): The AWS region to use. - """ - - self._region_name = region_name - - def get_request_options( - self, - aws_security_credentials, - url, - method, - request_payload="", - additional_headers={}, - ): - """Generates the signed request for the provided HTTP request for calling - an AWS API. This follows the steps described at: - https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html - - Args: - aws_security_credentials (AWSSecurityCredentials): The AWS security credentials. - url (str): The AWS service URL containing the canonical URI and - query string. - method (str): The HTTP method used to call this API. - request_payload (Optional[str]): The optional request payload if - available. - additional_headers (Optional[Mapping[str, str]]): The optional - additional headers needed for the requested AWS API. - - Returns: - Mapping[str, str]: The AWS signed request dictionary object. - """ - - additional_headers = additional_headers or {} - - uri = urllib.parse.urlparse(url) - # Normalize the URL path. This is needed for the canonical_uri. - # os.path.normpath can't be used since it normalizes "/" paths - # to "\\" in Windows OS. - normalized_uri = urllib.parse.urlparse( - urljoin(url, posixpath.normpath(uri.path)) - ) - # Validate provided URL. - if not uri.hostname or uri.scheme != "https": - raise exceptions.InvalidResource("Invalid AWS service URL") - - header_map = _generate_authentication_header_map( - host=uri.hostname, - canonical_uri=normalized_uri.path or "/", - canonical_querystring=_get_canonical_querystring(uri.query), - method=method, - region=self._region_name, - aws_security_credentials=aws_security_credentials, - request_payload=request_payload, - additional_headers=additional_headers, - ) - headers = { - "Authorization": header_map.get("authorization_header"), - "host": uri.hostname, - } - # Add x-amz-date if available. - if "amz_date" in header_map: - headers[_AWS_DATE_HEADER] = header_map.get("amz_date") - # Append additional optional headers, eg. X-Amz-Target, Content-Type, etc. - for key in additional_headers: - headers[key] = additional_headers[key] - - # Add session token if available. - if aws_security_credentials.session_token is not None: - headers[_AWS_SECURITY_TOKEN_HEADER] = aws_security_credentials.session_token - - signed_request = {"url": url, "method": method, "headers": headers} - if request_payload: - signed_request["data"] = request_payload - return signed_request - - -def _get_canonical_querystring(query): - """Generates the canonical query string given a raw query string. - Logic is based on - https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - - Args: - query (str): The raw query string. - - Returns: - str: The canonical query string. - """ - # Parse raw query string. - querystring = urllib.parse.parse_qs(query) - querystring_encoded_map = {} - for key in querystring: - quote_key = urllib.parse.quote(key, safe="-_.~") - # URI encode key. - querystring_encoded_map[quote_key] = [] - for item in querystring[key]: - # For each key, URI encode all values for that key. - querystring_encoded_map[quote_key].append( - urllib.parse.quote(item, safe="-_.~") - ) - # Sort values for each key. - querystring_encoded_map[quote_key].sort() - # Sort keys. - sorted_keys = list(querystring_encoded_map.keys()) - sorted_keys.sort() - # Reconstruct the query string. Preserve keys with multiple values. - querystring_encoded_pairs = [] - for key in sorted_keys: - for item in querystring_encoded_map[key]: - querystring_encoded_pairs.append("{}={}".format(key, item)) - return "&".join(querystring_encoded_pairs) - - -def _sign(key, msg): - """Creates the HMAC-SHA256 hash of the provided message using the provided - key. - - Args: - key (str): The HMAC-SHA256 key to use. - msg (str): The message to hash. - - Returns: - str: The computed hash bytes. - """ - return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() - - -def _get_signing_key(key, date_stamp, region_name, service_name): - """Calculates the signing key used to calculate the signature for - AWS Signature Version 4 based on: - https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html - - Args: - key (str): The AWS secret access key. - date_stamp (str): The '%Y%m%d' date format. - region_name (str): The AWS region. - service_name (str): The AWS service name, eg. sts. - - Returns: - str: The signing key bytes. - """ - k_date = _sign(("AWS4" + key).encode("utf-8"), date_stamp) - k_region = _sign(k_date, region_name) - k_service = _sign(k_region, service_name) - k_signing = _sign(k_service, "aws4_request") - return k_signing - - -def _generate_authentication_header_map( - host, - canonical_uri, - canonical_querystring, - method, - region, - aws_security_credentials, - request_payload="", - additional_headers={}, -): - """Generates the authentication header map needed for generating the AWS - Signature Version 4 signed request. - - Args: - host (str): The AWS service URL hostname. - canonical_uri (str): The AWS service URL path name. - canonical_querystring (str): The AWS service URL query string. - method (str): The HTTP method used to call this API. - region (str): The AWS region. - aws_security_credentials (AWSSecurityCredentials): The AWS security credentials. - request_payload (Optional[str]): The optional request payload if - available. - additional_headers (Optional[Mapping[str, str]]): The optional - additional headers needed for the requested AWS API. - - Returns: - Mapping[str, str]: The AWS authentication header dictionary object. - This contains the x-amz-date and authorization header information. - """ - # iam.amazonaws.com host => iam service. - # sts.us-east-2.amazonaws.com host => sts service. - service_name = host.split(".")[0] - - current_time = _helpers.utcnow() - amz_date = current_time.strftime("%Y%m%dT%H%M%SZ") - date_stamp = current_time.strftime("%Y%m%d") - - # Change all additional headers to be lower case. - full_headers = {} - for key in additional_headers: - full_headers[key.lower()] = additional_headers[key] - # Add AWS session token if available. - if aws_security_credentials.session_token is not None: - full_headers[ - _AWS_SECURITY_TOKEN_HEADER - ] = aws_security_credentials.session_token - - # Required headers - full_headers["host"] = host - # Do not use generated x-amz-date if the date header is provided. - # Previously the date was not fixed with x-amz- and could be provided - # manually. - # https://github.com/boto/botocore/blob/879f8440a4e9ace5d3cf145ce8b3d5e5ffb892ef/tests/unit/auth/aws4_testsuite/get-header-value-trim.req - if "date" not in full_headers: - full_headers[_AWS_DATE_HEADER] = amz_date - - # Header keys need to be sorted alphabetically. - canonical_headers = "" - header_keys = list(full_headers.keys()) - header_keys.sort() - for key in header_keys: - canonical_headers = "{}{}:{}\n".format( - canonical_headers, key, full_headers[key] - ) - signed_headers = ";".join(header_keys) - - payload_hash = hashlib.sha256((request_payload or "").encode("utf-8")).hexdigest() - - # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - canonical_request = "{}\n{}\n{}\n{}\n{}\n{}".format( - method, - canonical_uri, - canonical_querystring, - canonical_headers, - signed_headers, - payload_hash, - ) - - credential_scope = "{}/{}/{}/{}".format( - date_stamp, region, service_name, _AWS_REQUEST_TYPE - ) - - # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html - string_to_sign = "{}\n{}\n{}\n{}".format( - _AWS_ALGORITHM, - amz_date, - credential_scope, - hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), - ) - - # https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html - signing_key = _get_signing_key( - aws_security_credentials.secret_access_key, date_stamp, region, service_name - ) - signature = hmac.new( - signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 - ).hexdigest() - - # https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html - authorization_header = "{} Credential={}/{}, SignedHeaders={}, Signature={}".format( - _AWS_ALGORITHM, - aws_security_credentials.access_key_id, - credential_scope, - signed_headers, - signature, - ) - - authentication_header = {"authorization_header": authorization_header} - # Do not use generated x-amz-date if the date header is provided. - if "date" not in full_headers: - authentication_header["amz_date"] = amz_date - return authentication_header - - -@dataclass -class AwsSecurityCredentials: - """A class that models AWS security credentials with an optional session token. - - Attributes: - access_key_id (str): The AWS security credentials access key id. - secret_access_key (str): The AWS security credentials secret access key. - session_token (Optional[str]): The optional AWS security credentials session token. This should be set when using temporary credentials. - """ - - access_key_id: str - secret_access_key: str - session_token: Optional[str] = None - - -class AwsSecurityCredentialsSupplier(metaclass=abc.ABCMeta): - """Base class for AWS security credential suppliers. This can be implemented with custom logic to retrieve - AWS security credentials to exchange for a Google Cloud access token. The AWS external account credential does - not cache the AWS security credentials, so caching logic should be added in the implementation. - """ - - @abc.abstractmethod - def get_aws_security_credentials(self, context, request): - """Returns the AWS security credentials for the requested context. - - .. warning: This is not cached by the calling Google credential, so caching logic should be implemented in the supplier. - - Args: - context (google.auth.externalaccount.SupplierContext): The context object - containing information about the requested audience and subject token type. - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - security credential retrieval logic. - - Returns: - AwsSecurityCredentials: The requested AWS security credentials. - """ - raise NotImplementedError("") - - @abc.abstractmethod - def get_aws_region(self, context, request): - """Returns the AWS region for the requested context. - - Args: - context (google.auth.externalaccount.SupplierContext): The context object - containing information about the requested audience and subject token type. - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - region retrieval logic. - - Returns: - str: The AWS region. - """ - raise NotImplementedError("") - - -class _DefaultAwsSecurityCredentialsSupplier(AwsSecurityCredentialsSupplier): - """Default implementation of AWS security credentials supplier. Supports retrieving - credentials and region via EC2 metadata endpoints and environment variables. - """ - - def __init__(self, credential_source): - self._region_url = credential_source.get("region_url") - self._security_credentials_url = credential_source.get("url") - self._imdsv2_session_token_url = credential_source.get( - "imdsv2_session_token_url" - ) - - @_helpers.copy_docstring(AwsSecurityCredentialsSupplier) - def get_aws_security_credentials(self, context, request): - - # Check environment variables for permanent credentials first. - # https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html - env_aws_access_key_id = os.environ.get(environment_vars.AWS_ACCESS_KEY_ID) - env_aws_secret_access_key = os.environ.get( - environment_vars.AWS_SECRET_ACCESS_KEY - ) - # This is normally not available for permanent credentials. - env_aws_session_token = os.environ.get(environment_vars.AWS_SESSION_TOKEN) - if env_aws_access_key_id and env_aws_secret_access_key: - return AwsSecurityCredentials( - env_aws_access_key_id, env_aws_secret_access_key, env_aws_session_token - ) - - imdsv2_session_token = self._get_imdsv2_session_token(request) - role_name = self._get_metadata_role_name(request, imdsv2_session_token) - - # Get security credentials. - credentials = self._get_metadata_security_credentials( - request, role_name, imdsv2_session_token - ) - - return AwsSecurityCredentials( - credentials.get("AccessKeyId"), - credentials.get("SecretAccessKey"), - credentials.get("Token"), - ) - - @_helpers.copy_docstring(AwsSecurityCredentialsSupplier) - def get_aws_region(self, context, request): - # The AWS metadata server is not available in some AWS environments - # such as AWS lambda. Instead, it is available via environment - # variable. - env_aws_region = os.environ.get(environment_vars.AWS_REGION) - if env_aws_region is not None: - return env_aws_region - - env_aws_region = os.environ.get(environment_vars.AWS_DEFAULT_REGION) - if env_aws_region is not None: - return env_aws_region - - if not self._region_url: - raise exceptions.RefreshError("Unable to determine AWS region") - - headers = None - imdsv2_session_token = self._get_imdsv2_session_token(request) - if imdsv2_session_token is not None: - headers = {"X-aws-ec2-metadata-token": imdsv2_session_token} - - response = request(url=self._region_url, method="GET", headers=headers) - - # Support both string and bytes type response.data. - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - if response.status != http_client.OK: - raise exceptions.RefreshError( - "Unable to retrieve AWS region: {}".format(response_body) - ) - - # This endpoint will return the region in format: us-east-2b. - # Only the us-east-2 part should be used. - return response_body[:-1] - - def _get_imdsv2_session_token(self, request): - if request is not None and self._imdsv2_session_token_url is not None: - headers = { - "X-aws-ec2-metadata-token-ttl-seconds": _IMDSV2_SESSION_TOKEN_TTL_SECONDS - } - - imdsv2_session_token_response = request( - url=self._imdsv2_session_token_url, method="PUT", headers=headers - ) - - if imdsv2_session_token_response.status != http_client.OK: - raise exceptions.RefreshError( - "Unable to retrieve AWS Session Token: {}".format( - imdsv2_session_token_response.data - ) - ) - - return imdsv2_session_token_response.data - else: - return None - - def _get_metadata_security_credentials( - self, request, role_name, imdsv2_session_token - ): - """Retrieves the AWS security credentials required for signing AWS - requests from the AWS metadata server. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - role_name (str): The AWS role name required by the AWS metadata - server security_credentials endpoint in order to return the - credentials. - imdsv2_session_token (str): The AWS IMDSv2 session token to be added as a - header in the requests to AWS metadata endpoint. - - Returns: - Mapping[str, str]: The AWS metadata server security credentials - response. - - Raises: - google.auth.exceptions.RefreshError: If an error occurs while - retrieving the AWS security credentials. - """ - headers = {"Content-Type": "application/json"} - if imdsv2_session_token is not None: - headers["X-aws-ec2-metadata-token"] = imdsv2_session_token - - response = request( - url="{}/{}".format(self._security_credentials_url, role_name), - method="GET", - headers=headers, - ) - - # support both string and bytes type response.data - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - if response.status != http_client.OK: - raise exceptions.RefreshError( - "Unable to retrieve AWS security credentials: {}".format(response_body) - ) - - credentials_response = json.loads(response_body) - - return credentials_response - - def _get_metadata_role_name(self, request, imdsv2_session_token): - """Retrieves the AWS role currently attached to the current AWS - workload by querying the AWS metadata server. This is needed for the - AWS metadata server security credentials endpoint in order to retrieve - the AWS security credentials needed to sign requests to AWS APIs. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - imdsv2_session_token (str): The AWS IMDSv2 session token to be added as a - header in the requests to AWS metadata endpoint. - - Returns: - str: The AWS role name. - - Raises: - google.auth.exceptions.RefreshError: If an error occurs while - retrieving the AWS role name. - """ - if self._security_credentials_url is None: - raise exceptions.RefreshError( - "Unable to determine the AWS metadata server security credentials endpoint" - ) - - headers = None - if imdsv2_session_token is not None: - headers = {"X-aws-ec2-metadata-token": imdsv2_session_token} - - response = request( - url=self._security_credentials_url, method="GET", headers=headers - ) - - # support both string and bytes type response.data - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - if response.status != http_client.OK: - raise exceptions.RefreshError( - "Unable to retrieve AWS role name {}".format(response_body) - ) - - return response_body - - -class Credentials(external_account.Credentials): - """AWS external account credentials. - This is used to exchange serialized AWS signature v4 signed requests to - AWS STS GetCallerIdentity service for Google access tokens. - """ - - def __init__( - self, - audience, - subject_token_type, - token_url=external_account._DEFAULT_TOKEN_URL, - credential_source=None, - aws_security_credentials_supplier=None, - *args, - **kwargs - ): - """Instantiates an AWS workload external account credentials object. - - Args: - audience (str): The STS audience field. - subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. - Expected values include:: - - “urn:ietf:params:aws:token-type:aws4_request” - - token_url (Optional [str]): The STS endpoint URL. If not provided, will default to "https://sts.googleapis.com/v1/token". - credential_source (Optional [Mapping]): The credential source dictionary used - to provide instructions on how to retrieve external credential to be exchanged for Google access tokens. - Either a credential source or an AWS security credentials supplier must be provided. - - Example credential_source for AWS credential:: - - { - "environment_id": "aws1", - "regional_cred_verification_url": "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15", - "region_url": "http://169.254.169.254/latest/meta-data/placement/availability-zone", - "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials", - imdsv2_session_token_url": "http://169.254.169.254/latest/api/token" - } - - aws_security_credentials_supplier (Optional [AwsSecurityCredentialsSupplier]): Optional AWS security credentials supplier. - This will be called to supply valid AWS security credentails which will then - be exchanged for Google access tokens. Either an AWS security credentials supplier - or a credential source must be provided. - args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - access token retrieval logic. - ValueError: For invalid parameters. - - .. note:: Typically one of the helper constructors - :meth:`from_file` or - :meth:`from_info` are used instead of calling the constructor directly. - """ - super(Credentials, self).__init__( - audience=audience, - subject_token_type=subject_token_type, - token_url=token_url, - credential_source=credential_source, - *args, - **kwargs - ) - if credential_source is None and aws_security_credentials_supplier is None: - raise exceptions.InvalidValue( - "A valid credential source or AWS security credentials supplier must be provided." - ) - if ( - credential_source is not None - and aws_security_credentials_supplier is not None - ): - raise exceptions.InvalidValue( - "AWS credential cannot have both a credential source and an AWS security credentials supplier." - ) - - if aws_security_credentials_supplier: - self._aws_security_credentials_supplier = aws_security_credentials_supplier - # The regional cred verification URL would normally be provided through the credential source. So set it to the default one here. - self._cred_verification_url = ( - _DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL - ) - else: - environment_id = credential_source.get("environment_id") or "" - self._aws_security_credentials_supplier = _DefaultAwsSecurityCredentialsSupplier( - credential_source - ) - self._cred_verification_url = credential_source.get( - "regional_cred_verification_url" - ) - - # Get the environment ID, i.e. "aws1". Currently, only one version supported (1). - matches = re.match(r"^(aws)([\d]+)$", environment_id) - if matches: - env_id, env_version = matches.groups() - else: - env_id, env_version = (None, None) - - if env_id != "aws" or self._cred_verification_url is None: - raise exceptions.InvalidResource( - "No valid AWS 'credential_source' provided" - ) - elif env_version is None or int(env_version) != 1: - raise exceptions.InvalidValue( - "aws version '{}' is not supported in the current build.".format( - env_version - ) - ) - - self._target_resource = audience - self._request_signer = None - - def retrieve_subject_token(self, request): - """Retrieves the subject token using the credential_source object. - The subject token is a serialized `AWS GetCallerIdentity signed request`_. - - The logic is summarized as: - - Retrieve the AWS region from the AWS_REGION or AWS_DEFAULT_REGION - environment variable or from the AWS metadata server availability-zone - if not found in the environment variable. - - Check AWS credentials in environment variables. If not found, retrieve - from the AWS metadata server security-credentials endpoint. - - When retrieving AWS credentials from the metadata server - security-credentials endpoint, the AWS role needs to be determined by - calling the security-credentials endpoint without any argument. Then the - credentials can be retrieved via: security-credentials/role_name - - Generate the signed request to AWS STS GetCallerIdentity action. - - Inject x-goog-cloud-target-resource into header and serialize the - signed request. This will be the subject-token to pass to GCP STS. - - .. _AWS GetCallerIdentity signed request: - https://cloud.google.com/iam/docs/access-resources-aws#exchange-token - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - Returns: - str: The retrieved subject token. - """ - - # Initialize the request signer if not yet initialized after determining - # the current AWS region. - if self._request_signer is None: - self._region = self._aws_security_credentials_supplier.get_aws_region( - self._supplier_context, request - ) - self._request_signer = RequestSigner(self._region) - - # Retrieve the AWS security credentials needed to generate the signed - # request. - aws_security_credentials = self._aws_security_credentials_supplier.get_aws_security_credentials( - self._supplier_context, request - ) - # Generate the signed request to AWS STS GetCallerIdentity API. - # Use the required regional endpoint. Otherwise, the request will fail. - request_options = self._request_signer.get_request_options( - aws_security_credentials, - self._cred_verification_url.replace("{region}", self._region), - "POST", - ) - # The GCP STS endpoint expects the headers to be formatted as: - # [ - # {key: 'x-amz-date', value: '...'}, - # {key: 'Authorization', value: '...'}, - # ... - # ] - # And then serialized as: - # quote(json.dumps({ - # url: '...', - # method: 'POST', - # headers: [{key: 'x-amz-date', value: '...'}, ...] - # })) - request_headers = request_options.get("headers") - # The full, canonical resource name of the workload identity pool - # provider, with or without the HTTPS prefix. - # Including this header as part of the signature is recommended to - # ensure data integrity. - request_headers["x-goog-cloud-target-resource"] = self._target_resource - - # Serialize AWS signed request. - aws_signed_req = {} - aws_signed_req["url"] = request_options.get("url") - aws_signed_req["method"] = request_options.get("method") - aws_signed_req["headers"] = [] - # Reformat header to GCP STS expected format. - for key in request_headers.keys(): - aws_signed_req["headers"].append( - {"key": key, "value": request_headers[key]} - ) - - return urllib.parse.quote( - json.dumps(aws_signed_req, separators=(",", ":"), sort_keys=True) - ) - - def _create_default_metrics_options(self): - metrics_options = super(Credentials, self)._create_default_metrics_options() - metrics_options["source"] = "aws" - if self._has_custom_supplier(): - metrics_options["source"] = "programmatic" - return metrics_options - - def _has_custom_supplier(self): - return self._credential_source is None - - def _constructor_args(self): - args = super(Credentials, self)._constructor_args() - # If a custom supplier was used, append it to the args dict. - if self._has_custom_supplier(): - args.update( - { - "aws_security_credentials_supplier": self._aws_security_credentials_supplier - } - ) - return args - - @classmethod - def from_info(cls, info, **kwargs): - """Creates an AWS Credentials instance from parsed external account info. - - Args: - info (Mapping[str, str]): The AWS external account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.aws.Credentials: The constructed credentials. - - Raises: - ValueError: For invalid parameters. - """ - aws_security_credentials_supplier = info.get( - "aws_security_credentials_supplier" - ) - kwargs.update( - {"aws_security_credentials_supplier": aws_security_credentials_supplier} - ) - return super(Credentials, cls).from_info(info, **kwargs) - - @classmethod - def from_file(cls, filename, **kwargs): - """Creates an AWS Credentials instance from an external account json file. - - Args: - filename (str): The path to the AWS external account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.aws.Credentials: The constructed credentials. - """ - return super(Credentials, cls).from_file(filename, **kwargs) diff --git a/venv/lib/python3.10/site-packages/google/auth/compute_engine/__init__.py b/venv/lib/python3.10/site-packages/google/auth/compute_engine/__init__.py deleted file mode 100644 index 7e1206f..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/compute_engine/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google Compute Engine authentication.""" - -from google.auth.compute_engine._metadata import detect_gce_residency_linux -from google.auth.compute_engine.credentials import Credentials -from google.auth.compute_engine.credentials import IDTokenCredentials - - -__all__ = ["Credentials", "IDTokenCredentials", "detect_gce_residency_linux"] diff --git a/venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e32055a9522c26e33399849fd122d74b36b02c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmaKpKTiW87{=l5>KSbv9GyC-NrxU99UP1?sm8cCsM9S3;gynda5=cf`XT%Pj&6RX zu1NHngJGQlxV zby{U*w#c)PcghY%5{b?SE;q!+0~+M72RGJA4gHa=>efU5+DK)f&sskQ;}vIKSyOxm z12n+%JpmrLr;-D0z$pQS&!|?WeF@X;Q3Ijl71J)1ySG=5b^>O-n>OJgsL7&4{JTLu z&nXp_Q(ErJ1xpdl3%&%RumCD(1)d4!+2UGx_|H+kqFA{_7p66(pQy>Bdz2qd#mJ6DGltB@Bt&w~K$9?R1ka4lDfy=Gu?k diff --git a/venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/_metadata.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/compute_engine/__pycache__/_metadata.cpython-310.pyc deleted file mode 100644 index dc0c106f638dbc5ab1dbe1fa1b830058ce49ac10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9134 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 UT5_D^)6y^W7j-55UH$Zb0H2~t5&!@I diff --git a/venv/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py b/venv/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py deleted file mode 100644 index e597365..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py +++ /dev/null @@ -1,355 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Provides helper methods for talking to the Compute Engine metadata server. - -See https://cloud.google.com/compute/docs/metadata for more details. -""" - -import datetime -import http.client as http_client -import json -import logging -import os -from urllib.parse import urljoin - -from google.auth import _helpers -from google.auth import environment_vars -from google.auth import exceptions -from google.auth import metrics - -_LOGGER = logging.getLogger(__name__) - -# Environment variable GCE_METADATA_HOST is originally named -# GCE_METADATA_ROOT. For compatiblity reasons, here it checks -# the new variable first; if not set, the system falls back -# to the old variable. -_GCE_METADATA_HOST = os.getenv(environment_vars.GCE_METADATA_HOST, None) -if not _GCE_METADATA_HOST: - _GCE_METADATA_HOST = os.getenv( - environment_vars.GCE_METADATA_ROOT, "metadata.google.internal" - ) -_METADATA_ROOT = "http://{}/computeMetadata/v1/".format(_GCE_METADATA_HOST) - -# This is used to ping the metadata server, it avoids the cost of a DNS -# lookup. -_METADATA_IP_ROOT = "http://{}".format( - os.getenv(environment_vars.GCE_METADATA_IP, "169.254.169.254") -) -_METADATA_FLAVOR_HEADER = "metadata-flavor" -_METADATA_FLAVOR_VALUE = "Google" -_METADATA_HEADERS = {_METADATA_FLAVOR_HEADER: _METADATA_FLAVOR_VALUE} - -# Timeout in seconds to wait for the GCE metadata server when detecting the -# GCE environment. -try: - _METADATA_DEFAULT_TIMEOUT = int(os.getenv("GCE_METADATA_TIMEOUT", 3)) -except ValueError: # pragma: NO COVER - _METADATA_DEFAULT_TIMEOUT = 3 - -# Detect GCE Residency -_GOOGLE = "Google" -_GCE_PRODUCT_NAME_FILE = "/sys/class/dmi/id/product_name" - - -def is_on_gce(request): - """Checks to see if the code runs on Google Compute Engine - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - - Returns: - bool: True if the code runs on Google Compute Engine, False otherwise. - """ - if ping(request): - return True - - if os.name == "nt": - # TODO: implement GCE residency detection on Windows - return False - - # Detect GCE residency on Linux - return detect_gce_residency_linux() - - -def detect_gce_residency_linux(): - """Detect Google Compute Engine residency by smbios check on Linux - - Returns: - bool: True if the GCE product name file is detected, False otherwise. - """ - try: - with open(_GCE_PRODUCT_NAME_FILE, "r") as file_obj: - content = file_obj.read().strip() - - except Exception: - return False - - return content.startswith(_GOOGLE) - - -def ping(request, timeout=_METADATA_DEFAULT_TIMEOUT, retry_count=3): - """Checks to see if the metadata server is available. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - timeout (int): How long to wait for the metadata server to respond. - retry_count (int): How many times to attempt connecting to metadata - server using above timeout. - - Returns: - bool: True if the metadata server is reachable, False otherwise. - """ - # NOTE: The explicit ``timeout`` is a workaround. The underlying - # issue is that resolving an unknown host on some networks will take - # 20-30 seconds; making this timeout short fixes the issue, but - # could lead to false negatives in the event that we are on GCE, but - # the metadata resolution was particularly slow. The latter case is - # "unlikely". - retries = 0 - headers = _METADATA_HEADERS.copy() - headers[metrics.API_CLIENT_HEADER] = metrics.mds_ping() - - while retries < retry_count: - try: - response = request( - url=_METADATA_IP_ROOT, method="GET", headers=headers, timeout=timeout - ) - - metadata_flavor = response.headers.get(_METADATA_FLAVOR_HEADER) - return ( - response.status == http_client.OK - and metadata_flavor == _METADATA_FLAVOR_VALUE - ) - - except exceptions.TransportError as e: - _LOGGER.warning( - "Compute Engine Metadata server unavailable on " - "attempt %s of %s. Reason: %s", - retries + 1, - retry_count, - e, - ) - retries += 1 - - return False - - -def get( - request, - path, - root=_METADATA_ROOT, - params=None, - recursive=False, - retry_count=5, - headers=None, - return_none_for_not_found_error=False, -): - """Fetch a resource from the metadata server. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - path (str): The resource to retrieve. For example, - ``'instance/service-accounts/default'``. - root (str): The full path to the metadata server root. - params (Optional[Mapping[str, str]]): A mapping of query parameter - keys to values. - recursive (bool): Whether to do a recursive query of metadata. See - https://cloud.google.com/compute/docs/metadata#aggcontents for more - details. - retry_count (int): How many times to attempt connecting to metadata - server using above timeout. - headers (Optional[Mapping[str, str]]): Headers for the request. - return_none_for_not_found_error (Optional[bool]): If True, returns None - for 404 error instead of throwing an exception. - - Returns: - Union[Mapping, str]: If the metadata server returns JSON, a mapping of - the decoded JSON is return. Otherwise, the response content is - returned as a string. - - Raises: - google.auth.exceptions.TransportError: if an error occurred while - retrieving metadata. - """ - base_url = urljoin(root, path) - query_params = {} if params is None else params - - headers_to_use = _METADATA_HEADERS.copy() - if headers: - headers_to_use.update(headers) - - if recursive: - query_params["recursive"] = "true" - - url = _helpers.update_query(base_url, query_params) - - retries = 0 - while retries < retry_count: - try: - response = request(url=url, method="GET", headers=headers_to_use) - break - - except exceptions.TransportError as e: - _LOGGER.warning( - "Compute Engine Metadata server unavailable on " - "attempt %s of %s. Reason: %s", - retries + 1, - retry_count, - e, - ) - retries += 1 - else: - raise exceptions.TransportError( - "Failed to retrieve {} from the Google Compute Engine " - "metadata service. Compute Engine Metadata server unavailable".format(url) - ) - - content = _helpers.from_bytes(response.data) - - if response.status == http_client.NOT_FOUND and return_none_for_not_found_error: - return None - - if response.status == http_client.OK: - if ( - _helpers.parse_content_type(response.headers["content-type"]) - == "application/json" - ): - try: - return json.loads(content) - except ValueError as caught_exc: - new_exc = exceptions.TransportError( - "Received invalid JSON from the Google Compute Engine " - "metadata service: {:.20}".format(content) - ) - raise new_exc from caught_exc - else: - return content - - raise exceptions.TransportError( - "Failed to retrieve {} from the Google Compute Engine " - "metadata service. Status: {} Response:\n{}".format( - url, response.status, response.data - ), - response, - ) - - -def get_project_id(request): - """Get the Google Cloud Project ID from the metadata server. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - - Returns: - str: The project ID - - Raises: - google.auth.exceptions.TransportError: if an error occurred while - retrieving metadata. - """ - return get(request, "project/project-id") - - -def get_universe_domain(request): - """Get the universe domain value from the metadata server. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - - Returns: - str: The universe domain value. If the universe domain endpoint is not - not found, return the default value, which is googleapis.com - - Raises: - google.auth.exceptions.TransportError: if an error other than - 404 occurs while retrieving metadata. - """ - universe_domain = get( - request, "universe/universe_domain", return_none_for_not_found_error=True - ) - if not universe_domain: - return "googleapis.com" - return universe_domain - - -def get_service_account_info(request, service_account="default"): - """Get information about a service account from the metadata server. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - service_account (str): The string 'default' or a service account email - address. The determines which service account for which to acquire - information. - - Returns: - Mapping: The service account's information, for example:: - - { - 'email': '...', - 'scopes': ['scope', ...], - 'aliases': ['default', '...'] - } - - Raises: - google.auth.exceptions.TransportError: if an error occurred while - retrieving metadata. - """ - path = "instance/service-accounts/{0}/".format(service_account) - # See https://cloud.google.com/compute/docs/metadata#aggcontents - # for more on the use of 'recursive'. - return get(request, path, params={"recursive": "true"}) - - -def get_service_account_token(request, service_account="default", scopes=None): - """Get the OAuth 2.0 access token for a service account. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - service_account (str): The string 'default' or a service account email - address. The determines which service account for which to acquire - an access token. - scopes (Optional[Union[str, List[str]]]): Optional string or list of - strings with auth scopes. - Returns: - Tuple[str, datetime]: The access token and its expiration. - - Raises: - google.auth.exceptions.TransportError: if an error occurred while - retrieving metadata. - """ - if scopes: - if not isinstance(scopes, str): - scopes = ",".join(scopes) - params = {"scopes": scopes} - else: - params = None - - metrics_header = { - metrics.API_CLIENT_HEADER: metrics.token_request_access_token_mds() - } - - path = "instance/service-accounts/{0}/token".format(service_account) - token_json = get(request, path, params=params, headers=metrics_header) - token_expiry = _helpers.utcnow() + datetime.timedelta( - seconds=token_json["expires_in"] - ) - return token_json["access_token"], token_expiry diff --git a/venv/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py b/venv/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py deleted file mode 100644 index 008b991..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py +++ /dev/null @@ -1,488 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google Compute Engine credentials. - -This module provides authentication for an application running on Google -Compute Engine using the Compute Engine metadata server. - -""" - -import datetime - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions -from google.auth import iam -from google.auth import jwt -from google.auth import metrics -from google.auth.compute_engine import _metadata -from google.oauth2 import _client - - -class Credentials( - credentials.Scoped, - credentials.CredentialsWithQuotaProject, - credentials.CredentialsWithUniverseDomain, -): - """Compute Engine Credentials. - - These credentials use the Google Compute Engine metadata server to obtain - OAuth 2.0 access tokens associated with the instance's service account, - and are also used for Cloud Run, Flex and App Engine (except for the Python - 2.7 runtime, which is supported only on older versions of this library). - - For more information about Compute Engine authentication, including how - to configure scopes, see the `Compute Engine authentication - documentation`_. - - .. note:: On Compute Engine the metadata server ignores requested scopes. - On Cloud Run, Flex and App Engine the server honours requested scopes. - - .. _Compute Engine authentication documentation: - https://cloud.google.com/compute/docs/authentication#using - """ - - def __init__( - self, - service_account_email="default", - quota_project_id=None, - scopes=None, - default_scopes=None, - universe_domain=None, - ): - """ - Args: - service_account_email (str): The service account email to use, or - 'default'. A Compute Engine instance may have multiple service - accounts. - quota_project_id (Optional[str]): The project ID used for quota and - billing. - scopes (Optional[Sequence[str]]): The list of scopes for the credentials. - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - universe_domain (Optional[str]): The universe domain. If not - provided or None, credential will attempt to fetch the value - from metadata server. If metadata server doesn't have universe - domain endpoint, then the default googleapis.com will be used. - """ - super(Credentials, self).__init__() - self._service_account_email = service_account_email - self._quota_project_id = quota_project_id - self._scopes = scopes - self._default_scopes = default_scopes - self._universe_domain_cached = False - if universe_domain: - self._universe_domain = universe_domain - self._universe_domain_cached = True - - def _retrieve_info(self, request): - """Retrieve information about the service account. - - Updates the scopes and retrieves the full service account email. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - """ - info = _metadata.get_service_account_info( - request, service_account=self._service_account_email - ) - - self._service_account_email = info["email"] - - # Don't override scopes requested by the user. - if self._scopes is None: - self._scopes = info["scopes"] - - def _metric_header_for_usage(self): - return metrics.CRED_TYPE_SA_MDS - - def refresh(self, request): - """Refresh the access token and scopes. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If the Compute Engine metadata - service can't be reached if if the instance has not - credentials. - """ - scopes = self._scopes if self._scopes is not None else self._default_scopes - try: - self._retrieve_info(request) - self.token, self.expiry = _metadata.get_service_account_token( - request, service_account=self._service_account_email, scopes=scopes - ) - except exceptions.TransportError as caught_exc: - new_exc = exceptions.RefreshError(caught_exc) - raise new_exc from caught_exc - - @property - def service_account_email(self): - """The service account email. - - .. note:: This is not guaranteed to be set until :meth:`refresh` has been - called. - """ - return self._service_account_email - - @property - def requires_scopes(self): - return not self._scopes - - @property - def universe_domain(self): - if self._universe_domain_cached: - return self._universe_domain - - from google.auth.transport import requests as google_auth_requests - - self._universe_domain = _metadata.get_universe_domain( - google_auth_requests.Request() - ) - self._universe_domain_cached = True - return self._universe_domain - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - creds = self.__class__( - service_account_email=self._service_account_email, - quota_project_id=quota_project_id, - scopes=self._scopes, - default_scopes=self._default_scopes, - ) - creds._universe_domain = self._universe_domain - creds._universe_domain_cached = self._universe_domain_cached - return creds - - @_helpers.copy_docstring(credentials.Scoped) - def with_scopes(self, scopes, default_scopes=None): - # Compute Engine credentials can not be scoped (the metadata service - # ignores the scopes parameter). App Engine, Cloud Run and Flex support - # requesting scopes. - creds = self.__class__( - scopes=scopes, - default_scopes=default_scopes, - service_account_email=self._service_account_email, - quota_project_id=self._quota_project_id, - ) - creds._universe_domain = self._universe_domain - creds._universe_domain_cached = self._universe_domain_cached - return creds - - @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) - def with_universe_domain(self, universe_domain): - return self.__class__( - scopes=self._scopes, - default_scopes=self._default_scopes, - service_account_email=self._service_account_email, - quota_project_id=self._quota_project_id, - universe_domain=universe_domain, - ) - - -_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds -_DEFAULT_TOKEN_URI = "https://www.googleapis.com/oauth2/v4/token" - - -class IDTokenCredentials( - credentials.CredentialsWithQuotaProject, - credentials.Signing, - credentials.CredentialsWithTokenUri, -): - """Open ID Connect ID Token-based service account credentials. - - These credentials relies on the default service account of a GCE instance. - - ID token can be requested from `GCE metadata server identity endpoint`_, IAM - token endpoint or other token endpoints you specify. If metadata server - identity endpoint is not used, the GCE instance must have been started with - a service account that has access to the IAM Cloud API. - - .. _GCE metadata server identity endpoint: - https://cloud.google.com/compute/docs/instances/verifying-instance-identity - """ - - def __init__( - self, - request, - target_audience, - token_uri=None, - additional_claims=None, - service_account_email=None, - signer=None, - use_metadata_identity_endpoint=False, - quota_project_id=None, - ): - """ - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - target_audience (str): The intended audience for these credentials, - used when requesting the ID Token. The ID Token's ``aud`` claim - will be set to this string. - token_uri (str): The OAuth 2.0 Token URI. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT assertion used in the authorization grant. - service_account_email (str): Optional explicit service account to - use to sign JWT tokens. - By default, this is the default GCE service account. - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - In case the signer is specified, the request argument will be - ignored. - use_metadata_identity_endpoint (bool): Whether to use GCE metadata - identity endpoint. For backward compatibility the default value - is False. If set to True, ``token_uri``, ``additional_claims``, - ``service_account_email``, ``signer`` argument should not be set; - otherwise ValueError will be raised. - quota_project_id (Optional[str]): The project ID used for quota and - billing. - - Raises: - ValueError: - If ``use_metadata_identity_endpoint`` is set to True, and one of - ``token_uri``, ``additional_claims``, ``service_account_email``, - ``signer`` arguments is set. - """ - super(IDTokenCredentials, self).__init__() - - self._quota_project_id = quota_project_id - self._use_metadata_identity_endpoint = use_metadata_identity_endpoint - self._target_audience = target_audience - - if use_metadata_identity_endpoint: - if token_uri or additional_claims or service_account_email or signer: - raise exceptions.MalformedError( - "If use_metadata_identity_endpoint is set, token_uri, " - "additional_claims, service_account_email, signer arguments" - " must not be set" - ) - self._token_uri = None - self._additional_claims = None - self._signer = None - - if service_account_email is None: - sa_info = _metadata.get_service_account_info(request) - self._service_account_email = sa_info["email"] - else: - self._service_account_email = service_account_email - - if not use_metadata_identity_endpoint: - if signer is None: - signer = iam.Signer( - request=request, - credentials=Credentials(), - service_account_email=self._service_account_email, - ) - self._signer = signer - self._token_uri = token_uri or _DEFAULT_TOKEN_URI - - if additional_claims is not None: - self._additional_claims = additional_claims - else: - self._additional_claims = {} - - def with_target_audience(self, target_audience): - """Create a copy of these credentials with the specified target - audience. - Args: - target_audience (str): The intended audience for these credentials, - used when requesting the ID Token. - Returns: - google.auth.service_account.IDTokenCredentials: A new credentials - instance. - """ - # since the signer is already instantiated, - # the request is not needed - if self._use_metadata_identity_endpoint: - return self.__class__( - None, - target_audience=target_audience, - use_metadata_identity_endpoint=True, - quota_project_id=self._quota_project_id, - ) - else: - return self.__class__( - None, - service_account_email=self._service_account_email, - token_uri=self._token_uri, - target_audience=target_audience, - additional_claims=self._additional_claims.copy(), - signer=self.signer, - use_metadata_identity_endpoint=False, - quota_project_id=self._quota_project_id, - ) - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - - # since the signer is already instantiated, - # the request is not needed - if self._use_metadata_identity_endpoint: - return self.__class__( - None, - target_audience=self._target_audience, - use_metadata_identity_endpoint=True, - quota_project_id=quota_project_id, - ) - else: - return self.__class__( - None, - service_account_email=self._service_account_email, - token_uri=self._token_uri, - target_audience=self._target_audience, - additional_claims=self._additional_claims.copy(), - signer=self.signer, - use_metadata_identity_endpoint=False, - quota_project_id=quota_project_id, - ) - - @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) - def with_token_uri(self, token_uri): - - # since the signer is already instantiated, - # the request is not needed - if self._use_metadata_identity_endpoint: - raise exceptions.MalformedError( - "If use_metadata_identity_endpoint is set, token_uri" " must not be set" - ) - else: - return self.__class__( - None, - service_account_email=self._service_account_email, - token_uri=token_uri, - target_audience=self._target_audience, - additional_claims=self._additional_claims.copy(), - signer=self.signer, - use_metadata_identity_endpoint=False, - quota_project_id=self.quota_project_id, - ) - - def _make_authorization_grant_assertion(self): - """Create the OAuth 2.0 assertion. - This assertion is used during the OAuth 2.0 grant to acquire an - ID token. - Returns: - bytes: The authorization grant assertion. - """ - now = _helpers.utcnow() - lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) - expiry = now + lifetime - - payload = { - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - # The issuer must be the service account email. - "iss": self.service_account_email, - # The audience must be the auth token endpoint's URI - "aud": self._token_uri, - # The target audience specifies which service the ID token is - # intended for. - "target_audience": self._target_audience, - } - - payload.update(self._additional_claims) - - token = jwt.encode(self._signer, payload) - - return token - - def _call_metadata_identity_endpoint(self, request): - """Request ID token from metadata identity endpoint. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Returns: - Tuple[str, datetime.datetime]: The ID token and the expiry of the ID token. - - Raises: - google.auth.exceptions.RefreshError: If the Compute Engine metadata - service can't be reached or if the instance has no credentials. - ValueError: If extracting expiry from the obtained ID token fails. - """ - try: - path = "instance/service-accounts/default/identity" - params = {"audience": self._target_audience, "format": "full"} - metrics_header = { - metrics.API_CLIENT_HEADER: metrics.token_request_id_token_mds() - } - id_token = _metadata.get( - request, path, params=params, headers=metrics_header - ) - except exceptions.TransportError as caught_exc: - new_exc = exceptions.RefreshError(caught_exc) - raise new_exc from caught_exc - - _, payload, _, _ = jwt._unverified_decode(id_token) - return id_token, datetime.datetime.utcfromtimestamp(payload["exp"]) - - def refresh(self, request): - """Refreshes the ID token. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If the credentials could - not be refreshed. - ValueError: If extracting expiry from the obtained ID token fails. - """ - if self._use_metadata_identity_endpoint: - self.token, self.expiry = self._call_metadata_identity_endpoint(request) - else: - assertion = self._make_authorization_grant_assertion() - access_token, expiry, _ = _client.id_token_jwt_grant( - request, self._token_uri, assertion - ) - self.token = access_token - self.expiry = expiry - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer(self): - return self._signer - - def sign_bytes(self, message): - """Signs the given message. - - Args: - message (bytes): The message to sign. - - Returns: - bytes: The message's cryptographic signature. - - Raises: - ValueError: - Signer is not available if metadata identity endpoint is used. - """ - if self._use_metadata_identity_endpoint: - raise exceptions.InvalidOperation( - "Signer is not available if metadata identity endpoint is used" - ) - return self._signer.sign(message) - - @property - def service_account_email(self): - """The service account email.""" - return self._service_account_email - - @property - def signer_email(self): - return self._service_account_email diff --git a/venv/lib/python3.10/site-packages/google/auth/credentials.py b/venv/lib/python3.10/site-packages/google/auth/credentials.py deleted file mode 100644 index 27abd44..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/credentials.py +++ /dev/null @@ -1,513 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Interfaces for credentials.""" - -import abc -from enum import Enum -import os - -from google.auth import _helpers, environment_vars -from google.auth import exceptions -from google.auth import metrics -from google.auth._refresh_worker import RefreshThreadManager - -DEFAULT_UNIVERSE_DOMAIN = "googleapis.com" - - -class Credentials(metaclass=abc.ABCMeta): - """Base class for all credentials. - - All credentials have a :attr:`token` that is used for authentication and - may also optionally set an :attr:`expiry` to indicate when the token will - no longer be valid. - - Most credentials will be :attr:`invalid` until :meth:`refresh` is called. - Credentials can do this automatically before the first HTTP request in - :meth:`before_request`. - - Although the token and expiration will change as the credentials are - :meth:`refreshed ` and used, credentials should be considered - immutable. Various credentials will accept configuration such as private - keys, scopes, and other options. These options are not changeable after - construction. Some classes will provide mechanisms to copy the credentials - with modifications such as :meth:`ScopedCredentials.with_scopes`. - """ - - def __init__(self): - self.token = None - """str: The bearer token that can be used in HTTP headers to make - authenticated requests.""" - self.expiry = None - """Optional[datetime]: When the token expires and is no longer valid. - If this is None, the token is assumed to never expire.""" - self._quota_project_id = None - """Optional[str]: Project to use for quota and billing purposes.""" - self._trust_boundary = None - """Optional[dict]: Cache of a trust boundary response which has a list - of allowed regions and an encoded string representation of credentials - trust boundary.""" - self._universe_domain = DEFAULT_UNIVERSE_DOMAIN - """Optional[str]: The universe domain value, default is googleapis.com - """ - - self._use_non_blocking_refresh = False - self._refresh_worker = RefreshThreadManager() - - @property - def expired(self): - """Checks if the credentials are expired. - - Note that credentials can be invalid but not expired because - Credentials with :attr:`expiry` set to None is considered to never - expire. - - .. deprecated:: v2.24.0 - Prefer checking :attr:`token_state` instead. - """ - if not self.expiry: - return False - # Remove some threshold from expiry to err on the side of reporting - # expiration early so that we avoid the 401-refresh-retry loop. - skewed_expiry = self.expiry - _helpers.REFRESH_THRESHOLD - return _helpers.utcnow() >= skewed_expiry - - @property - def valid(self): - """Checks the validity of the credentials. - - This is True if the credentials have a :attr:`token` and the token - is not :attr:`expired`. - - .. deprecated:: v2.24.0 - Prefer checking :attr:`token_state` instead. - """ - return self.token is not None and not self.expired - - @property - def token_state(self): - """ - See `:obj:`TokenState` - """ - if self.token is None: - return TokenState.INVALID - - # Credentials that can't expire are always treated as fresh. - if self.expiry is None: - return TokenState.FRESH - - expired = _helpers.utcnow() >= self.expiry - if expired: - return TokenState.INVALID - - is_stale = _helpers.utcnow() >= (self.expiry - _helpers.REFRESH_THRESHOLD) - if is_stale: - return TokenState.STALE - - return TokenState.FRESH - - @property - def quota_project_id(self): - """Project to use for quota and billing purposes.""" - return self._quota_project_id - - @property - def universe_domain(self): - """The universe domain value.""" - return self._universe_domain - - @abc.abstractmethod - def refresh(self, request): - """Refreshes the access token. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If the credentials could - not be refreshed. - """ - # pylint: disable=missing-raises-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Refresh must be implemented") - - def _metric_header_for_usage(self): - """The x-goog-api-client header for token usage metric. - - This header will be added to the API service requests in before_request - method. For example, "cred-type/sa-jwt" means service account self - signed jwt access token is used in the API service request - authorization header. Children credentials classes need to override - this method to provide the header value, if the token usage metric is - needed. - - Returns: - str: The x-goog-api-client header value. - """ - return None - - def apply(self, headers, token=None): - """Apply the token to the authentication header. - - Args: - headers (Mapping): The HTTP request headers. - token (Optional[str]): If specified, overrides the current access - token. - """ - headers["authorization"] = "Bearer {}".format( - _helpers.from_bytes(token or self.token) - ) - """Trust boundary value will be a cached value from global lookup. - - The response of trust boundary will be a list of regions and a hex - encoded representation. - - An example of global lookup response: - { - "locations": [ - "us-central1", "us-east1", "europe-west1", "asia-east1" - ] - "encoded_locations": "0xA30" - } - """ - if self._trust_boundary is not None: - headers["x-allowed-locations"] = self._trust_boundary["encoded_locations"] - if self.quota_project_id: - headers["x-goog-user-project"] = self.quota_project_id - - def _blocking_refresh(self, request): - if not self.valid: - self.refresh(request) - - def _non_blocking_refresh(self, request): - use_blocking_refresh_fallback = False - - if self.token_state == TokenState.STALE: - use_blocking_refresh_fallback = not self._refresh_worker.start_refresh( - self, request - ) - - if self.token_state == TokenState.INVALID or use_blocking_refresh_fallback: - self.refresh(request) - # If the blocking refresh succeeds then we can clear the error info - # on the background refresh worker, and perform refreshes in a - # background thread. - self._refresh_worker.clear_error() - - def before_request(self, request, method, url, headers): - """Performs credential-specific before request logic. - - Refreshes the credentials if necessary, then calls :meth:`apply` to - apply the token to the authentication header. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - method (str): The request's HTTP method or the RPC method being - invoked. - url (str): The request's URI or the RPC service's URI. - headers (Mapping): The request's headers. - """ - # pylint: disable=unused-argument - # (Subclasses may use these arguments to ascertain information about - # the http request.) - if self._use_non_blocking_refresh: - self._non_blocking_refresh(request) - else: - self._blocking_refresh(request) - - metrics.add_metric_header(headers, self._metric_header_for_usage()) - self.apply(headers) - - def with_non_blocking_refresh(self): - self._use_non_blocking_refresh = True - - -class CredentialsWithQuotaProject(Credentials): - """Abstract base for credentials supporting ``with_quota_project`` factory""" - - def with_quota_project(self, quota_project_id): - """Returns a copy of these credentials with a modified quota project. - - Args: - quota_project_id (str): The project to use for quota and - billing purposes - - Returns: - google.auth.credentials.Credentials: A new credentials instance. - """ - raise NotImplementedError("This credential does not support quota project.") - - def with_quota_project_from_environment(self): - quota_from_env = os.environ.get(environment_vars.GOOGLE_CLOUD_QUOTA_PROJECT) - if quota_from_env: - return self.with_quota_project(quota_from_env) - return self - - -class CredentialsWithTokenUri(Credentials): - """Abstract base for credentials supporting ``with_token_uri`` factory""" - - def with_token_uri(self, token_uri): - """Returns a copy of these credentials with a modified token uri. - - Args: - token_uri (str): The uri to use for fetching/exchanging tokens - - Returns: - google.auth.credentials.Credentials: A new credentials instance. - """ - raise NotImplementedError("This credential does not use token uri.") - - -class CredentialsWithUniverseDomain(Credentials): - """Abstract base for credentials supporting ``with_universe_domain`` factory""" - - def with_universe_domain(self, universe_domain): - """Returns a copy of these credentials with a modified universe domain. - - Args: - universe_domain (str): The universe domain to use - - Returns: - google.auth.credentials.Credentials: A new credentials instance. - """ - raise NotImplementedError( - "This credential does not support with_universe_domain." - ) - - -class AnonymousCredentials(Credentials): - """Credentials that do not provide any authentication information. - - These are useful in the case of services that support anonymous access or - local service emulators that do not use credentials. - """ - - @property - def expired(self): - """Returns `False`, anonymous credentials never expire.""" - return False - - @property - def valid(self): - """Returns `True`, anonymous credentials are always valid.""" - return True - - def refresh(self, request): - """Raises :class:``InvalidOperation``, anonymous credentials cannot be - refreshed.""" - raise exceptions.InvalidOperation("Anonymous credentials cannot be refreshed.") - - def apply(self, headers, token=None): - """Anonymous credentials do nothing to the request. - - The optional ``token`` argument is not supported. - - Raises: - google.auth.exceptions.InvalidValue: If a token was specified. - """ - if token is not None: - raise exceptions.InvalidValue("Anonymous credentials don't support tokens.") - - def before_request(self, request, method, url, headers): - """Anonymous credentials do nothing to the request.""" - - -class ReadOnlyScoped(metaclass=abc.ABCMeta): - """Interface for credentials whose scopes can be queried. - - OAuth 2.0-based credentials allow limiting access using scopes as described - in `RFC6749 Section 3.3`_. - If a credential class implements this interface then the credentials either - use scopes in their implementation. - - Some credentials require scopes in order to obtain a token. You can check - if scoping is necessary with :attr:`requires_scopes`:: - - if credentials.requires_scopes: - # Scoping is required. - credentials = credentials.with_scopes(scopes=['one', 'two']) - - Credentials that require scopes must either be constructed with scopes:: - - credentials = SomeScopedCredentials(scopes=['one', 'two']) - - Or must copy an existing instance using :meth:`with_scopes`:: - - scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) - - Some credentials have scopes but do not allow or require scopes to be set, - these credentials can be used as-is. - - .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 - """ - - def __init__(self): - super(ReadOnlyScoped, self).__init__() - self._scopes = None - self._default_scopes = None - - @property - def scopes(self): - """Sequence[str]: the credentials' current set of scopes.""" - return self._scopes - - @property - def default_scopes(self): - """Sequence[str]: the credentials' current set of default scopes.""" - return self._default_scopes - - @abc.abstractproperty - def requires_scopes(self): - """True if these credentials require scopes to obtain an access token. - """ - return False - - def has_scopes(self, scopes): - """Checks if the credentials have the given scopes. - - .. warning: This method is not guaranteed to be accurate if the - credentials are :attr:`~Credentials.invalid`. - - Args: - scopes (Sequence[str]): The list of scopes to check. - - Returns: - bool: True if the credentials have the given scopes. - """ - credential_scopes = ( - self._scopes if self._scopes is not None else self._default_scopes - ) - return set(scopes).issubset(set(credential_scopes or [])) - - -class Scoped(ReadOnlyScoped): - """Interface for credentials whose scopes can be replaced while copying. - - OAuth 2.0-based credentials allow limiting access using scopes as described - in `RFC6749 Section 3.3`_. - If a credential class implements this interface then the credentials either - use scopes in their implementation. - - Some credentials require scopes in order to obtain a token. You can check - if scoping is necessary with :attr:`requires_scopes`:: - - if credentials.requires_scopes: - # Scoping is required. - credentials = credentials.create_scoped(['one', 'two']) - - Credentials that require scopes must either be constructed with scopes:: - - credentials = SomeScopedCredentials(scopes=['one', 'two']) - - Or must copy an existing instance using :meth:`with_scopes`:: - - scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) - - Some credentials have scopes but do not allow or require scopes to be set, - these credentials can be used as-is. - - .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 - """ - - @abc.abstractmethod - def with_scopes(self, scopes, default_scopes=None): - """Create a copy of these credentials with the specified scopes. - - Args: - scopes (Sequence[str]): The list of scopes to attach to the - current credentials. - - Raises: - NotImplementedError: If the credentials' scopes can not be changed. - This can be avoided by checking :attr:`requires_scopes` before - calling this method. - """ - raise NotImplementedError("This class does not require scoping.") - - -def with_scopes_if_required(credentials, scopes, default_scopes=None): - """Creates a copy of the credentials with scopes if scoping is required. - - This helper function is useful when you do not know (or care to know) the - specific type of credentials you are using (such as when you use - :func:`google.auth.default`). This function will call - :meth:`Scoped.with_scopes` if the credentials are scoped credentials and if - the credentials require scoping. Otherwise, it will return the credentials - as-is. - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - scope if necessary. - scopes (Sequence[str]): The list of scopes to use. - default_scopes (Sequence[str]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - - Returns: - google.auth.credentials.Credentials: Either a new set of scoped - credentials, or the passed in credentials instance if no scoping - was required. - """ - if isinstance(credentials, Scoped) and credentials.requires_scopes: - return credentials.with_scopes(scopes, default_scopes=default_scopes) - else: - return credentials - - -class Signing(metaclass=abc.ABCMeta): - """Interface for credentials that can cryptographically sign messages.""" - - @abc.abstractmethod - def sign_bytes(self, message): - """Signs the given message. - - Args: - message (bytes): The message to sign. - - Returns: - bytes: The message's cryptographic signature. - """ - # pylint: disable=missing-raises-doc,redundant-returns-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Sign bytes must be implemented.") - - @abc.abstractproperty - def signer_email(self): - """Optional[str]: An email address that identifies the signer.""" - # pylint: disable=missing-raises-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Signer email must be implemented.") - - @abc.abstractproperty - def signer(self): - """google.auth.crypt.Signer: The signer used to sign bytes.""" - # pylint: disable=missing-raises-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Signer must be implemented.") - - -class TokenState(Enum): - """ - Tracks the state of a token. - FRESH: The token is valid. It is not expired or close to expired, or the token has no expiry. - STALE: The token is close to expired, and should be refreshed. The token can be used normally. - INVALID: The token is expired or invalid. The token cannot be used for a normal operation. - """ - - FRESH = 1 - STALE = 2 - INVALID = 3 diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__init__.py b/venv/lib/python3.10/site-packages/google/auth/crypt/__init__.py deleted file mode 100644 index 6d147e7..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/__init__.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Cryptography helpers for verifying and signing messages. - -The simplest way to verify signatures is using :func:`verify_signature`:: - - cert = open('certs.pem').read() - valid = crypt.verify_signature(message, signature, cert) - -If you're going to verify many messages with the same certificate, you can use -:class:`RSAVerifier`:: - - cert = open('certs.pem').read() - verifier = crypt.RSAVerifier.from_string(cert) - valid = verifier.verify(message, signature) - -To sign messages use :class:`RSASigner` with a private key:: - - private_key = open('private_key.pem').read() - signer = crypt.RSASigner.from_string(private_key) - signature = signer.sign(message) - -The code above also works for :class:`ES256Signer` and :class:`ES256Verifier`. -Note that these two classes are only available if your `cryptography` dependency -version is at least 1.4.0. -""" - -from google.auth.crypt import base -from google.auth.crypt import rsa - -try: - from google.auth.crypt import es256 -except ImportError: # pragma: NO COVER - es256 = None # type: ignore - -if es256 is not None: # pragma: NO COVER - __all__ = [ - "ES256Signer", - "ES256Verifier", - "RSASigner", - "RSAVerifier", - "Signer", - "Verifier", - ] -else: # pragma: NO COVER - __all__ = ["RSASigner", "RSAVerifier", "Signer", "Verifier"] - - -# Aliases to maintain the v1.0.0 interface, as the crypt module was split -# into submodules. -Signer = base.Signer -Verifier = base.Verifier -RSASigner = rsa.RSASigner -RSAVerifier = rsa.RSAVerifier - -if es256 is not None: # pragma: NO COVER - ES256Signer = es256.ES256Signer - ES256Verifier = es256.ES256Verifier - - -def verify_signature(message, signature, certs, verifier_cls=rsa.RSAVerifier): - """Verify an RSA or ECDSA cryptographic signature. - - Checks that the provided ``signature`` was generated from ``bytes`` using - the private key associated with the ``cert``. - - Args: - message (Union[str, bytes]): The plaintext message. - signature (Union[str, bytes]): The cryptographic signature to check. - certs (Union[Sequence, str, bytes]): The certificate or certificates - to use to check the signature. - verifier_cls (Optional[~google.auth.crypt.base.Signer]): Which verifier - class to use for verification. This can be used to select different - algorithms, such as RSA or ECDSA. Default value is :class:`RSAVerifier`. - - Returns: - bool: True if the signature is valid, otherwise False. - """ - if isinstance(certs, (str, bytes)): - certs = [certs] - - for cert in certs: - verifier = verifier_cls.from_string(cert) - if verifier.verify(message, signature): - return True - return False diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index c20de9ea32afeb30a4b7b5aca1b201a41040409c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2506 zcmb7FPmkL~6t^8Gn>g8ODR4mIFkI+HY@L>WLJ?F{+pW|~k-CKnx0OAyC&}zO9(QJv z#VF+hp8|1cx$%{J<-}J&Nbue`PP~*JaOCHi$-Fo3&+q+4?C*OPJU`nHrhg4A>vx)~yk}eZOWJ|^ zt(Dmq7ITyK(v~00tfcd+9dt4mMteA7&e>kD2eKP-K6)E9qcFVQ)}qaCoRi5mPM|`OwxQ_kU2|pCKZ_qNmfkqX~DA@p;Dc|!R&KWE(@{}n}E@(lt*eIFZR4*k{ge$UCs5zc4vv?d;W<#`Rc0}W`=Mi{f zCN=qjh@54I*KnfzoGq>meaUEYI5c}!H023wiqUER-=+>X&K>Q}KQd;Ao_B9b3bDK< z8JP+6X6NgIX2muva>4bSXpD?5m{I0a9#hSZP@lv!gK(HPj#H}CIC^k;`y0#?XY&6A zvQgT`(lF#trC5YYOYrj$6LC3q6E&Q-3I9KWhHxJWlY?Dc;52DCeG2IZm#c6o$t7Pw zjO3gZbvZUmAuMgH(pY=7Hds+6n*mjaTneXQp^9pY15m6i`1q-#!cd?Xu}B!96R`rB zDnTxUJg-n%$8>V~;U}L~2Sx_4m;Tt+$oK9Gh*Qt0#wtTn^o1a%n1EFZ@DN#A5W1o~ zrIVBqZg3+>WFWWclZYe?V4AQjEULa_5c!9KxMyyj^og=^|!iPe_yZtnp`0L#F&VkF~fMZ zp;Pv33E%?KdDS7@xZxzsd1I=!o?&Eg1U7wrQblTYhIi)zd<}htajMASSGk5X(Dd;S zGa+Uv^XXF0{fcf8#C`=nOwOY@kLMNP0~=jB+VoTH!1gXd8U^D%q!oGvnRLR?#RPXM zma*K+FpT30cCa0FEZ)d~%0P=`z&>E{G*Gt!i>z-6u5w9x%9> zvIYhwLZnb^iJH^Pc|ud>(m5gmuqH1!r1UOu5UVoy@b0i(dK@k|r70AwY(c@wwn0$P zZxDIeF^Mjq>Gw96D|=f2m2Ff0V9=~a>EdG0t=E3Dp=XimSssfL&z#~)OQ5f=! z>oD~5qCBYF-QCmokU9=PT)En@yN+iM?2hgH?K<*pSR7s{_rfp{aTo?~yaFBRz!nLN zVM%1AvVU)p3#m_}6cY7lnug(yx*Bwbq$QEP%qb@RhIk8&bw6K-WSO#CHq6xfAlxg1 dcLuiO9Dt8q@Uh$S>~62q?tsVWJIbrAe*hT603iSX diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_cryptography_rsa.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_cryptography_rsa.cpython-310.pyc deleted file mode 100644 index 419d5cb967c475c3efd4142f2c98afe750b5cd9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5191 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 FDZWcoF@OL7 diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_python_rsa.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/_python_rsa.cpython-310.pyc deleted file mode 100644 index 892958e36e3f56bf4dcdb933e9bc552b6cfa24fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5799 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/base.cpython-310.pyc deleted file mode 100644 index 184054e0b44a108a118d0b154b5e93ccdce3989d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4154 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/rsa.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/crypt/__pycache__/rsa.cpython-310.pyc deleted file mode 100644 index e62a035e15c1d1b62c3cecd0cdd80bdbbb9ea013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmYk0F;2rU6ozdlO$%*7l{i2aggP_^u`nQ11_l;{S^>fXQHb5dG>IeIElQ8V4Y*QP zCa%zlmz1G?^8fs-&;EZk93CQAUwF27auNDzhW*upVG7$kf^fvp=9ptnGMp1eFcRd$ zVGgLv+!w^%IdYNcRA(491*8L{$2=gtmh>9(wIx5%xU)H(&2Rl!SEW^nj>@$1jZ6xm z{ixvnT4=eDLI=NKj>fnih5KlzO$3+yu&ivVie`Kmck6B#autUm8zo95nFyklO@sEK zCh!kC0MB{r!uoK0{&%VS_j#$bz0+E0?Ev|Wv(uzqL#mguWhVC-aCKGKlQHULsRo%PJ6<=lI27{$J S0dbFrGaw!rU?`{QWcvpYMs*ng diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/_cryptography_rsa.py b/venv/lib/python3.10/site-packages/google/auth/crypt/_cryptography_rsa.py deleted file mode 100644 index 1a3e9ff..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/_cryptography_rsa.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""RSA verifier and signer that use the ``cryptography`` library. - -This is a much faster implementation than the default (in -``google.auth.crypt._python_rsa``), which depends on the pure-Python -``rsa`` library. -""" - -import cryptography.exceptions -from cryptography.hazmat import backends -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import padding -import cryptography.x509 - -from google.auth import _helpers -from google.auth.crypt import base - -_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" -_BACKEND = backends.default_backend() -_PADDING = padding.PKCS1v15() -_SHA256 = hashes.SHA256() - - -class RSAVerifier(base.Verifier): - """Verifies RSA cryptographic signatures using public keys. - - Args: - public_key ( - cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey): - The public key used to verify signatures. - """ - - def __init__(self, public_key): - self._pubkey = public_key - - @_helpers.copy_docstring(base.Verifier) - def verify(self, message, signature): - message = _helpers.to_bytes(message) - try: - self._pubkey.verify(signature, message, _PADDING, _SHA256) - return True - except (ValueError, cryptography.exceptions.InvalidSignature): - return False - - @classmethod - def from_string(cls, public_key): - """Construct an Verifier instance from a public key or public - certificate string. - - Args: - public_key (Union[str, bytes]): The public key in PEM format or the - x509 public key certificate. - - Returns: - Verifier: The constructed verifier. - - Raises: - ValueError: If the public key can't be parsed. - """ - public_key_data = _helpers.to_bytes(public_key) - - if _CERTIFICATE_MARKER in public_key_data: - cert = cryptography.x509.load_pem_x509_certificate( - public_key_data, _BACKEND - ) - pubkey = cert.public_key() - - else: - pubkey = serialization.load_pem_public_key(public_key_data, _BACKEND) - - return cls(pubkey) - - -class RSASigner(base.Signer, base.FromServiceAccountMixin): - """Signs messages with an RSA private key. - - Args: - private_key ( - cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey): - The private key to sign with. - key_id (str): Optional key ID used to identify this private key. This - can be useful to associate the private key with its associated - public key or certificate. - """ - - def __init__(self, private_key, key_id=None): - self._key = private_key - self._key_id = key_id - - @property # type: ignore - @_helpers.copy_docstring(base.Signer) - def key_id(self): - return self._key_id - - @_helpers.copy_docstring(base.Signer) - def sign(self, message): - message = _helpers.to_bytes(message) - return self._key.sign(message, _PADDING, _SHA256) - - @classmethod - def from_string(cls, key, key_id=None): - """Construct a RSASigner from a private key in PEM format. - - Args: - key (Union[bytes, str]): Private key in PEM format. - key_id (str): An optional key id used to identify the private key. - - Returns: - google.auth.crypt._cryptography_rsa.RSASigner: The - constructed signer. - - Raises: - ValueError: If ``key`` is not ``bytes`` or ``str`` (unicode). - UnicodeDecodeError: If ``key`` is ``bytes`` but cannot be decoded - into a UTF-8 ``str``. - ValueError: If ``cryptography`` "Could not deserialize key data." - """ - key = _helpers.to_bytes(key) - private_key = serialization.load_pem_private_key( - key, password=None, backend=_BACKEND - ) - return cls(private_key, key_id=key_id) - - def __getstate__(self): - """Pickle helper that serializes the _key attribute.""" - state = self.__dict__.copy() - state["_key"] = self._key.private_bytes( - encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.PKCS8, - encryption_algorithm=serialization.NoEncryption(), - ) - return state - - def __setstate__(self, state): - """Pickle helper that deserializes the _key attribute.""" - state["_key"] = serialization.load_pem_private_key(state["_key"], None) - self.__dict__.update(state) diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/_helpers.py b/venv/lib/python3.10/site-packages/google/auth/crypt/_helpers.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/_python_rsa.py b/venv/lib/python3.10/site-packages/google/auth/crypt/_python_rsa.py deleted file mode 100644 index e553c25..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/_python_rsa.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Pure-Python RSA cryptography implementation. - -Uses the ``rsa``, ``pyasn1`` and ``pyasn1_modules`` packages -to parse PEM files storing PKCS#1 or PKCS#8 keys as well as -certificates. There is no support for p12 files. -""" - -from __future__ import absolute_import - -import io - -from pyasn1.codec.der import decoder # type: ignore -from pyasn1_modules import pem # type: ignore -from pyasn1_modules.rfc2459 import Certificate # type: ignore -from pyasn1_modules.rfc5208 import PrivateKeyInfo # type: ignore -import rsa # type: ignore - -from google.auth import _helpers -from google.auth import exceptions -from google.auth.crypt import base - -_POW2 = (128, 64, 32, 16, 8, 4, 2, 1) -_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" -_PKCS1_MARKER = ("-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----") -_PKCS8_MARKER = ("-----BEGIN PRIVATE KEY-----", "-----END PRIVATE KEY-----") -_PKCS8_SPEC = PrivateKeyInfo() - - -def _bit_list_to_bytes(bit_list): - """Converts an iterable of 1s and 0s to bytes. - - Combines the list 8 at a time, treating each group of 8 bits - as a single byte. - - Args: - bit_list (Sequence): Sequence of 1s and 0s. - - Returns: - bytes: The decoded bytes. - """ - num_bits = len(bit_list) - byte_vals = bytearray() - for start in range(0, num_bits, 8): - curr_bits = bit_list[start : start + 8] - char_val = sum(val * digit for val, digit in zip(_POW2, curr_bits)) - byte_vals.append(char_val) - return bytes(byte_vals) - - -class RSAVerifier(base.Verifier): - """Verifies RSA cryptographic signatures using public keys. - - Args: - public_key (rsa.key.PublicKey): The public key used to verify - signatures. - """ - - def __init__(self, public_key): - self._pubkey = public_key - - @_helpers.copy_docstring(base.Verifier) - def verify(self, message, signature): - message = _helpers.to_bytes(message) - try: - return rsa.pkcs1.verify(message, signature, self._pubkey) - except (ValueError, rsa.pkcs1.VerificationError): - return False - - @classmethod - def from_string(cls, public_key): - """Construct an Verifier instance from a public key or public - certificate string. - - Args: - public_key (Union[str, bytes]): The public key in PEM format or the - x509 public key certificate. - - Returns: - google.auth.crypt._python_rsa.RSAVerifier: The constructed verifier. - - Raises: - ValueError: If the public_key can't be parsed. - """ - public_key = _helpers.to_bytes(public_key) - is_x509_cert = _CERTIFICATE_MARKER in public_key - - # If this is a certificate, extract the public key info. - if is_x509_cert: - der = rsa.pem.load_pem(public_key, "CERTIFICATE") - asn1_cert, remaining = decoder.decode(der, asn1Spec=Certificate()) - if remaining != b"": - raise exceptions.InvalidValue("Unused bytes", remaining) - - cert_info = asn1_cert["tbsCertificate"]["subjectPublicKeyInfo"] - key_bytes = _bit_list_to_bytes(cert_info["subjectPublicKey"]) - pubkey = rsa.PublicKey.load_pkcs1(key_bytes, "DER") - else: - pubkey = rsa.PublicKey.load_pkcs1(public_key, "PEM") - return cls(pubkey) - - -class RSASigner(base.Signer, base.FromServiceAccountMixin): - """Signs messages with an RSA private key. - - Args: - private_key (rsa.key.PrivateKey): The private key to sign with. - key_id (str): Optional key ID used to identify this private key. This - can be useful to associate the private key with its associated - public key or certificate. - """ - - def __init__(self, private_key, key_id=None): - self._key = private_key - self._key_id = key_id - - @property # type: ignore - @_helpers.copy_docstring(base.Signer) - def key_id(self): - return self._key_id - - @_helpers.copy_docstring(base.Signer) - def sign(self, message): - message = _helpers.to_bytes(message) - return rsa.pkcs1.sign(message, self._key, "SHA-256") - - @classmethod - def from_string(cls, key, key_id=None): - """Construct an Signer instance from a private key in PEM format. - - Args: - key (str): Private key in PEM format. - key_id (str): An optional key id used to identify the private key. - - Returns: - google.auth.crypt.Signer: The constructed signer. - - Raises: - ValueError: If the key cannot be parsed as PKCS#1 or PKCS#8 in - PEM format. - """ - key = _helpers.from_bytes(key) # PEM expects str in Python 3 - marker_id, key_bytes = pem.readPemBlocksFromFile( - io.StringIO(key), _PKCS1_MARKER, _PKCS8_MARKER - ) - - # Key is in pkcs1 format. - if marker_id == 0: - private_key = rsa.key.PrivateKey.load_pkcs1(key_bytes, format="DER") - # Key is in pkcs8. - elif marker_id == 1: - key_info, remaining = decoder.decode(key_bytes, asn1Spec=_PKCS8_SPEC) - if remaining != b"": - raise exceptions.InvalidValue("Unused bytes", remaining) - private_key_info = key_info.getComponentByName("privateKey") - private_key = rsa.key.PrivateKey.load_pkcs1( - private_key_info.asOctets(), format="DER" - ) - else: - raise exceptions.MalformedError("No key could be detected.") - - return cls(private_key, key_id=key_id) diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/base.py b/venv/lib/python3.10/site-packages/google/auth/crypt/base.py deleted file mode 100644 index ad871c3..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/base.py +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Base classes for cryptographic signers and verifiers.""" - -import abc -import io -import json - -from google.auth import exceptions - -_JSON_FILE_PRIVATE_KEY = "private_key" -_JSON_FILE_PRIVATE_KEY_ID = "private_key_id" - - -class Verifier(metaclass=abc.ABCMeta): - """Abstract base class for crytographic signature verifiers.""" - - @abc.abstractmethod - def verify(self, message, signature): - """Verifies a message against a cryptographic signature. - - Args: - message (Union[str, bytes]): The message to verify. - signature (Union[str, bytes]): The cryptography signature to check. - - Returns: - bool: True if message was signed by the private key associated - with the public key that this object was constructed with. - """ - # pylint: disable=missing-raises-doc,redundant-returns-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Verify must be implemented") - - -class Signer(metaclass=abc.ABCMeta): - """Abstract base class for cryptographic signers.""" - - @abc.abstractproperty - def key_id(self): - """Optional[str]: The key ID used to identify this private key.""" - raise NotImplementedError("Key id must be implemented") - - @abc.abstractmethod - def sign(self, message): - """Signs a message. - - Args: - message (Union[str, bytes]): The message to be signed. - - Returns: - bytes: The signature of the message. - """ - # pylint: disable=missing-raises-doc,redundant-returns-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("Sign must be implemented") - - -class FromServiceAccountMixin(metaclass=abc.ABCMeta): - """Mix-in to enable factory constructors for a Signer.""" - - @abc.abstractmethod - def from_string(cls, key, key_id=None): - """Construct an Signer instance from a private key string. - - Args: - key (str): Private key as a string. - key_id (str): An optional key id used to identify the private key. - - Returns: - google.auth.crypt.Signer: The constructed signer. - - Raises: - ValueError: If the key cannot be parsed. - """ - raise NotImplementedError("from_string must be implemented") - - @classmethod - def from_service_account_info(cls, info): - """Creates a Signer instance instance from a dictionary containing - service account info in Google format. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - - Returns: - google.auth.crypt.Signer: The constructed signer. - - Raises: - ValueError: If the info is not in the expected format. - """ - if _JSON_FILE_PRIVATE_KEY not in info: - raise exceptions.MalformedError( - "The private_key field was not found in the service account " "info." - ) - - return cls.from_string( - info[_JSON_FILE_PRIVATE_KEY], info.get(_JSON_FILE_PRIVATE_KEY_ID) - ) - - @classmethod - def from_service_account_file(cls, filename): - """Creates a Signer instance from a service account .json file - in Google format. - - Args: - filename (str): The path to the service account .json file. - - Returns: - google.auth.crypt.Signer: The constructed signer. - """ - with io.open(filename, "r", encoding="utf-8") as json_file: - data = json.load(json_file) - - return cls.from_service_account_info(data) diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/es256.py b/venv/lib/python3.10/site-packages/google/auth/crypt/es256.py deleted file mode 100644 index 820e4be..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/es256.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright 2017 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""ECDSA (ES256) verifier and signer that use the ``cryptography`` library. -""" - -from cryptography import utils # type: ignore -import cryptography.exceptions -from cryptography.hazmat import backends -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric import padding -from cryptography.hazmat.primitives.asymmetric.utils import decode_dss_signature -from cryptography.hazmat.primitives.asymmetric.utils import encode_dss_signature -import cryptography.x509 - -from google.auth import _helpers -from google.auth.crypt import base - - -_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" -_BACKEND = backends.default_backend() -_PADDING = padding.PKCS1v15() - - -class ES256Verifier(base.Verifier): - """Verifies ECDSA cryptographic signatures using public keys. - - Args: - public_key ( - cryptography.hazmat.primitives.asymmetric.ec.ECDSAPublicKey): - The public key used to verify signatures. - """ - - def __init__(self, public_key): - self._pubkey = public_key - - @_helpers.copy_docstring(base.Verifier) - def verify(self, message, signature): - # First convert (r||s) raw signature to ASN1 encoded signature. - sig_bytes = _helpers.to_bytes(signature) - if len(sig_bytes) != 64: - return False - r = ( - int.from_bytes(sig_bytes[:32], byteorder="big") - if _helpers.is_python_3() - else utils.int_from_bytes(sig_bytes[:32], byteorder="big") - ) - s = ( - int.from_bytes(sig_bytes[32:], byteorder="big") - if _helpers.is_python_3() - else utils.int_from_bytes(sig_bytes[32:], byteorder="big") - ) - asn1_sig = encode_dss_signature(r, s) - - message = _helpers.to_bytes(message) - try: - self._pubkey.verify(asn1_sig, message, ec.ECDSA(hashes.SHA256())) - return True - except (ValueError, cryptography.exceptions.InvalidSignature): - return False - - @classmethod - def from_string(cls, public_key): - """Construct an Verifier instance from a public key or public - certificate string. - - Args: - public_key (Union[str, bytes]): The public key in PEM format or the - x509 public key certificate. - - Returns: - Verifier: The constructed verifier. - - Raises: - ValueError: If the public key can't be parsed. - """ - public_key_data = _helpers.to_bytes(public_key) - - if _CERTIFICATE_MARKER in public_key_data: - cert = cryptography.x509.load_pem_x509_certificate( - public_key_data, _BACKEND - ) - pubkey = cert.public_key() - - else: - pubkey = serialization.load_pem_public_key(public_key_data, _BACKEND) - - return cls(pubkey) - - -class ES256Signer(base.Signer, base.FromServiceAccountMixin): - """Signs messages with an ECDSA private key. - - Args: - private_key ( - cryptography.hazmat.primitives.asymmetric.ec.ECDSAPrivateKey): - The private key to sign with. - key_id (str): Optional key ID used to identify this private key. This - can be useful to associate the private key with its associated - public key or certificate. - """ - - def __init__(self, private_key, key_id=None): - self._key = private_key - self._key_id = key_id - - @property # type: ignore - @_helpers.copy_docstring(base.Signer) - def key_id(self): - return self._key_id - - @_helpers.copy_docstring(base.Signer) - def sign(self, message): - message = _helpers.to_bytes(message) - asn1_signature = self._key.sign(message, ec.ECDSA(hashes.SHA256())) - - # Convert ASN1 encoded signature to (r||s) raw signature. - (r, s) = decode_dss_signature(asn1_signature) - return ( - (r.to_bytes(32, byteorder="big") + s.to_bytes(32, byteorder="big")) - if _helpers.is_python_3() - else (utils.int_to_bytes(r, 32) + utils.int_to_bytes(s, 32)) - ) - - @classmethod - def from_string(cls, key, key_id=None): - """Construct a RSASigner from a private key in PEM format. - - Args: - key (Union[bytes, str]): Private key in PEM format. - key_id (str): An optional key id used to identify the private key. - - Returns: - google.auth.crypt._cryptography_rsa.RSASigner: The - constructed signer. - - Raises: - ValueError: If ``key`` is not ``bytes`` or ``str`` (unicode). - UnicodeDecodeError: If ``key`` is ``bytes`` but cannot be decoded - into a UTF-8 ``str``. - ValueError: If ``cryptography`` "Could not deserialize key data." - """ - key = _helpers.to_bytes(key) - private_key = serialization.load_pem_private_key( - key, password=None, backend=_BACKEND - ) - return cls(private_key, key_id=key_id) - - def __getstate__(self): - """Pickle helper that serializes the _key attribute.""" - state = self.__dict__.copy() - state["_key"] = self._key.private_bytes( - encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.PKCS8, - encryption_algorithm=serialization.NoEncryption(), - ) - return state - - def __setstate__(self, state): - """Pickle helper that deserializes the _key attribute.""" - state["_key"] = serialization.load_pem_private_key(state["_key"], None) - self.__dict__.update(state) diff --git a/venv/lib/python3.10/site-packages/google/auth/crypt/rsa.py b/venv/lib/python3.10/site-packages/google/auth/crypt/rsa.py deleted file mode 100644 index ed842d1..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/crypt/rsa.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""RSA cryptography signer and verifier.""" - - -try: - # Prefer cryptograph-based RSA implementation. - from google.auth.crypt import _cryptography_rsa - - RSASigner = _cryptography_rsa.RSASigner - RSAVerifier = _cryptography_rsa.RSAVerifier -except ImportError: # pragma: NO COVER - # Fallback to pure-python RSA implementation if cryptography is - # unavailable. - from google.auth.crypt import _python_rsa - - RSASigner = _python_rsa.RSASigner # type: ignore - RSAVerifier = _python_rsa.RSAVerifier # type: ignore diff --git a/venv/lib/python3.10/site-packages/google/auth/downscoped.py b/venv/lib/python3.10/site-packages/google/auth/downscoped.py deleted file mode 100644 index ea75be9..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/downscoped.py +++ /dev/null @@ -1,512 +0,0 @@ -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Downscoping with Credential Access Boundaries - -This module provides the ability to downscope credentials using -`Downscoping with Credential Access Boundaries`_. This is useful to restrict the -Identity and Access Management (IAM) permissions that a short-lived credential -can use. - -To downscope permissions of a source credential, a Credential Access Boundary -that specifies which resources the new credential can access, as well as -an upper bound on the permissions that are available on each resource, has to -be defined. A downscoped credential can then be instantiated using the source -credential and the Credential Access Boundary. - -The common pattern of usage is to have a token broker with elevated access -generate these downscoped credentials from higher access source credentials and -pass the downscoped short-lived access tokens to a token consumer via some -secure authenticated channel for limited access to Google Cloud Storage -resources. - -For example, a token broker can be set up on a server in a private network. -Various workloads (token consumers) in the same network will send authenticated -requests to that broker for downscoped tokens to access or modify specific google -cloud storage buckets. - -The broker will instantiate downscoped credentials instances that can be used to -generate short lived downscoped access tokens that can be passed to the token -consumer. These downscoped access tokens can be injected by the consumer into -google.oauth2.Credentials and used to initialize a storage client instance to -access Google Cloud Storage resources with restricted access. - -Note: Only Cloud Storage supports Credential Access Boundaries. Other Google -Cloud services do not support this feature. - -.. _Downscoping with Credential Access Boundaries: https://cloud.google.com/iam/docs/downscoping-short-lived-credentials -""" - -import datetime - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions -from google.oauth2 import sts - -# The maximum number of access boundary rules a Credential Access Boundary can -# contain. -_MAX_ACCESS_BOUNDARY_RULES_COUNT = 10 -# The token exchange grant_type used for exchanging credentials. -_STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange" -# The token exchange requested_token_type. This is always an access_token. -_STS_REQUESTED_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" -# The STS token URL used to exchanged a short lived access token for a downscoped one. -_STS_TOKEN_URL_PATTERN = "https://sts.{}/v1/token" -# The subject token type to use when exchanging a short lived access token for a -# downscoped token. -_STS_SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" - - -class CredentialAccessBoundary(object): - """Defines a Credential Access Boundary which contains a list of access boundary - rules. Each rule contains information on the resource that the rule applies to, - the upper bound of the permissions that are available on that resource and an - optional condition to further restrict permissions. - """ - - def __init__(self, rules=[]): - """Instantiates a Credential Access Boundary. A Credential Access Boundary - can contain up to 10 access boundary rules. - - Args: - rules (Sequence[google.auth.downscoped.AccessBoundaryRule]): The list of - access boundary rules limiting the access that a downscoped credential - will have. - Raises: - InvalidType: If any of the rules are not a valid type. - InvalidValue: If the provided rules exceed the maximum allowed. - """ - self.rules = rules - - @property - def rules(self): - """Returns the list of access boundary rules defined on the Credential - Access Boundary. - - Returns: - Tuple[google.auth.downscoped.AccessBoundaryRule, ...]: The list of access - boundary rules defined on the Credential Access Boundary. These are returned - as an immutable tuple to prevent modification. - """ - return tuple(self._rules) - - @rules.setter - def rules(self, value): - """Updates the current rules on the Credential Access Boundary. This will overwrite - the existing set of rules. - - Args: - value (Sequence[google.auth.downscoped.AccessBoundaryRule]): The list of - access boundary rules limiting the access that a downscoped credential - will have. - Raises: - InvalidType: If any of the rules are not a valid type. - InvalidValue: If the provided rules exceed the maximum allowed. - """ - if len(value) > _MAX_ACCESS_BOUNDARY_RULES_COUNT: - raise exceptions.InvalidValue( - "Credential access boundary rules can have a maximum of {} rules.".format( - _MAX_ACCESS_BOUNDARY_RULES_COUNT - ) - ) - for access_boundary_rule in value: - if not isinstance(access_boundary_rule, AccessBoundaryRule): - raise exceptions.InvalidType( - "List of rules provided do not contain a valid 'google.auth.downscoped.AccessBoundaryRule'." - ) - # Make a copy of the original list. - self._rules = list(value) - - def add_rule(self, rule): - """Adds a single access boundary rule to the existing rules. - - Args: - rule (google.auth.downscoped.AccessBoundaryRule): The access boundary rule, - limiting the access that a downscoped credential will have, to be added to - the existing rules. - Raises: - InvalidType: If any of the rules are not a valid type. - InvalidValue: If the provided rules exceed the maximum allowed. - """ - if len(self.rules) == _MAX_ACCESS_BOUNDARY_RULES_COUNT: - raise exceptions.InvalidValue( - "Credential access boundary rules can have a maximum of {} rules.".format( - _MAX_ACCESS_BOUNDARY_RULES_COUNT - ) - ) - if not isinstance(rule, AccessBoundaryRule): - raise exceptions.InvalidType( - "The provided rule does not contain a valid 'google.auth.downscoped.AccessBoundaryRule'." - ) - self._rules.append(rule) - - def to_json(self): - """Generates the dictionary representation of the Credential Access Boundary. - This uses the format expected by the Security Token Service API as documented in - `Defining a Credential Access Boundary`_. - - .. _Defining a Credential Access Boundary: - https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary - - Returns: - Mapping: Credential Access Boundary Rule represented in a dictionary object. - """ - rules = [] - for access_boundary_rule in self.rules: - rules.append(access_boundary_rule.to_json()) - - return {"accessBoundary": {"accessBoundaryRules": rules}} - - -class AccessBoundaryRule(object): - """Defines an access boundary rule which contains information on the resource that - the rule applies to, the upper bound of the permissions that are available on that - resource and an optional condition to further restrict permissions. - """ - - def __init__( - self, available_resource, available_permissions, availability_condition=None - ): - """Instantiates a single access boundary rule. - - Args: - available_resource (str): The full resource name of the Cloud Storage bucket - that the rule applies to. Use the format - "//storage.googleapis.com/projects/_/buckets/bucket-name". - available_permissions (Sequence[str]): A list defining the upper bound that - the downscoped token will have on the available permissions for the - resource. Each value is the identifier for an IAM predefined role or - custom role, with the prefix "inRole:". For example: - "inRole:roles/storage.objectViewer". - Only the permissions in these roles will be available. - availability_condition (Optional[google.auth.downscoped.AvailabilityCondition]): - Optional condition that restricts the availability of permissions to - specific Cloud Storage objects. - - Raises: - InvalidType: If any of the parameters are not of the expected types. - InvalidValue: If any of the parameters are not of the expected values. - """ - self.available_resource = available_resource - self.available_permissions = available_permissions - self.availability_condition = availability_condition - - @property - def available_resource(self): - """Returns the current available resource. - - Returns: - str: The current available resource. - """ - return self._available_resource - - @available_resource.setter - def available_resource(self, value): - """Updates the current available resource. - - Args: - value (str): The updated value of the available resource. - - Raises: - google.auth.exceptions.InvalidType: If the value is not a string. - """ - if not isinstance(value, str): - raise exceptions.InvalidType( - "The provided available_resource is not a string." - ) - self._available_resource = value - - @property - def available_permissions(self): - """Returns the current available permissions. - - Returns: - Tuple[str, ...]: The current available permissions. These are returned - as an immutable tuple to prevent modification. - """ - return tuple(self._available_permissions) - - @available_permissions.setter - def available_permissions(self, value): - """Updates the current available permissions. - - Args: - value (Sequence[str]): The updated value of the available permissions. - - Raises: - InvalidType: If the value is not a list of strings. - InvalidValue: If the value is not valid. - """ - for available_permission in value: - if not isinstance(available_permission, str): - raise exceptions.InvalidType( - "Provided available_permissions are not a list of strings." - ) - if available_permission.find("inRole:") != 0: - raise exceptions.InvalidValue( - "available_permissions must be prefixed with 'inRole:'." - ) - # Make a copy of the original list. - self._available_permissions = list(value) - - @property - def availability_condition(self): - """Returns the current availability condition. - - Returns: - Optional[google.auth.downscoped.AvailabilityCondition]: The current - availability condition. - """ - return self._availability_condition - - @availability_condition.setter - def availability_condition(self, value): - """Updates the current availability condition. - - Args: - value (Optional[google.auth.downscoped.AvailabilityCondition]): The updated - value of the availability condition. - - Raises: - google.auth.exceptions.InvalidType: If the value is not of type google.auth.downscoped.AvailabilityCondition - or None. - """ - if not isinstance(value, AvailabilityCondition) and value is not None: - raise exceptions.InvalidType( - "The provided availability_condition is not a 'google.auth.downscoped.AvailabilityCondition' or None." - ) - self._availability_condition = value - - def to_json(self): - """Generates the dictionary representation of the access boundary rule. - This uses the format expected by the Security Token Service API as documented in - `Defining a Credential Access Boundary`_. - - .. _Defining a Credential Access Boundary: - https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary - - Returns: - Mapping: The access boundary rule represented in a dictionary object. - """ - json = { - "availablePermissions": list(self.available_permissions), - "availableResource": self.available_resource, - } - if self.availability_condition: - json["availabilityCondition"] = self.availability_condition.to_json() - return json - - -class AvailabilityCondition(object): - """An optional condition that can be used as part of a Credential Access Boundary - to further restrict permissions.""" - - def __init__(self, expression, title=None, description=None): - """Instantiates an availability condition using the provided expression and - optional title or description. - - Args: - expression (str): A condition expression that specifies the Cloud Storage - objects where permissions are available. For example, this expression - makes permissions available for objects whose name starts with "customer-a": - "resource.name.startsWith('projects/_/buckets/example-bucket/objects/customer-a')" - title (Optional[str]): An optional short string that identifies the purpose of - the condition. - description (Optional[str]): Optional details about the purpose of the condition. - - Raises: - InvalidType: If any of the parameters are not of the expected types. - InvalidValue: If any of the parameters are not of the expected values. - """ - self.expression = expression - self.title = title - self.description = description - - @property - def expression(self): - """Returns the current condition expression. - - Returns: - str: The current conditon expression. - """ - return self._expression - - @expression.setter - def expression(self, value): - """Updates the current condition expression. - - Args: - value (str): The updated value of the condition expression. - - Raises: - google.auth.exceptions.InvalidType: If the value is not of type string. - """ - if not isinstance(value, str): - raise exceptions.InvalidType("The provided expression is not a string.") - self._expression = value - - @property - def title(self): - """Returns the current title. - - Returns: - Optional[str]: The current title. - """ - return self._title - - @title.setter - def title(self, value): - """Updates the current title. - - Args: - value (Optional[str]): The updated value of the title. - - Raises: - google.auth.exceptions.InvalidType: If the value is not of type string or None. - """ - if not isinstance(value, str) and value is not None: - raise exceptions.InvalidType("The provided title is not a string or None.") - self._title = value - - @property - def description(self): - """Returns the current description. - - Returns: - Optional[str]: The current description. - """ - return self._description - - @description.setter - def description(self, value): - """Updates the current description. - - Args: - value (Optional[str]): The updated value of the description. - - Raises: - google.auth.exceptions.InvalidType: If the value is not of type string or None. - """ - if not isinstance(value, str) and value is not None: - raise exceptions.InvalidType( - "The provided description is not a string or None." - ) - self._description = value - - def to_json(self): - """Generates the dictionary representation of the availability condition. - This uses the format expected by the Security Token Service API as documented in - `Defining a Credential Access Boundary`_. - - .. _Defining a Credential Access Boundary: - https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary - - Returns: - Mapping[str, str]: The availability condition represented in a dictionary - object. - """ - json = {"expression": self.expression} - if self.title: - json["title"] = self.title - if self.description: - json["description"] = self.description - return json - - -class Credentials(credentials.CredentialsWithQuotaProject): - """Defines a set of Google credentials that are downscoped from an existing set - of Google OAuth2 credentials. This is useful to restrict the Identity and Access - Management (IAM) permissions that a short-lived credential can use. - The common pattern of usage is to have a token broker with elevated access - generate these downscoped credentials from higher access source credentials and - pass the downscoped short-lived access tokens to a token consumer via some - secure authenticated channel for limited access to Google Cloud Storage - resources. - """ - - def __init__( - self, - source_credentials, - credential_access_boundary, - quota_project_id=None, - universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, - ): - """Instantiates a downscoped credentials object using the provided source - credentials and credential access boundary rules. - To downscope permissions of a source credential, a Credential Access Boundary - that specifies which resources the new credential can access, as well as an - upper bound on the permissions that are available on each resource, has to be - defined. A downscoped credential can then be instantiated using the source - credential and the Credential Access Boundary. - - Args: - source_credentials (google.auth.credentials.Credentials): The source credentials - to be downscoped based on the provided Credential Access Boundary rules. - credential_access_boundary (google.auth.downscoped.CredentialAccessBoundary): - The Credential Access Boundary which contains a list of access boundary - rules. Each rule contains information on the resource that the rule applies to, - the upper bound of the permissions that are available on that resource and an - optional condition to further restrict permissions. - quota_project_id (Optional[str]): The optional quota project ID. - universe_domain (Optional[str]): The universe domain value, default is googleapis.com - Raises: - google.auth.exceptions.RefreshError: If the source credentials - return an error on token refresh. - google.auth.exceptions.OAuthError: If the STS token exchange - endpoint returned an error during downscoped token generation. - """ - - super(Credentials, self).__init__() - self._source_credentials = source_credentials - self._credential_access_boundary = credential_access_boundary - self._quota_project_id = quota_project_id - self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN - self._sts_client = sts.Client( - _STS_TOKEN_URL_PATTERN.format(self.universe_domain) - ) - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - # Generate an access token from the source credentials. - self._source_credentials.refresh(request) - now = _helpers.utcnow() - # Exchange the access token for a downscoped access token. - response_data = self._sts_client.exchange_token( - request=request, - grant_type=_STS_GRANT_TYPE, - subject_token=self._source_credentials.token, - subject_token_type=_STS_SUBJECT_TOKEN_TYPE, - requested_token_type=_STS_REQUESTED_TOKEN_TYPE, - additional_options=self._credential_access_boundary.to_json(), - ) - self.token = response_data.get("access_token") - # For downscoping CAB flow, the STS endpoint may not return the expiration - # field for some flows. The generated downscoped token should always have - # the same expiration time as the source credentials. When no expires_in - # field is returned in the response, we can just get the expiration time - # from the source credentials. - if response_data.get("expires_in"): - lifetime = datetime.timedelta(seconds=response_data.get("expires_in")) - self.expiry = now + lifetime - else: - self.expiry = self._source_credentials.expiry - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__( - self._source_credentials, - self._credential_access_boundary, - quota_project_id=quota_project_id, - ) diff --git a/venv/lib/python3.10/site-packages/google/auth/environment_vars.py b/venv/lib/python3.10/site-packages/google/auth/environment_vars.py deleted file mode 100644 index 81f3157..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/environment_vars.py +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Environment variables used by :mod:`google.auth`.""" - - -PROJECT = "GOOGLE_CLOUD_PROJECT" -"""Environment variable defining default project. - -This used by :func:`google.auth.default` to explicitly set a project ID. This -environment variable is also used by the Google Cloud Python Library. -""" - -LEGACY_PROJECT = "GCLOUD_PROJECT" -"""Previously used environment variable defining the default project. - -This environment variable is used instead of the current one in some -situations (such as Google App Engine). -""" - -GOOGLE_CLOUD_QUOTA_PROJECT = "GOOGLE_CLOUD_QUOTA_PROJECT" -"""Environment variable defining the project to be used for -quota and billing.""" - -CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS" -"""Environment variable defining the location of Google application default -credentials.""" - -# The environment variable name which can replace ~/.config if set. -CLOUD_SDK_CONFIG_DIR = "CLOUDSDK_CONFIG" -"""Environment variable defines the location of Google Cloud SDK's config -files.""" - -# These two variables allow for customization of the addresses used when -# contacting the GCE metadata service. -GCE_METADATA_HOST = "GCE_METADATA_HOST" -"""Environment variable providing an alternate hostname or host:port to be -used for GCE metadata requests. - -This environment variable was originally named GCE_METADATA_ROOT. The system will -check this environemnt variable first; should there be no value present, -the system will fall back to the old variable. -""" - -GCE_METADATA_ROOT = "GCE_METADATA_ROOT" -"""Old environment variable for GCE_METADATA_HOST.""" - -GCE_METADATA_IP = "GCE_METADATA_IP" -"""Environment variable providing an alternate ip:port to be used for ip-only -GCE metadata requests.""" - -GOOGLE_API_USE_CLIENT_CERTIFICATE = "GOOGLE_API_USE_CLIENT_CERTIFICATE" -"""Environment variable controlling whether to use client certificate or not. - -The default value is false. Users have to explicitly set this value to true -in order to use client certificate to establish a mutual TLS channel.""" - -LEGACY_APPENGINE_RUNTIME = "APPENGINE_RUNTIME" -"""Gen1 environment variable defining the App Engine Runtime. - -Used to distinguish between GAE gen1 and GAE gen2+. -""" - -# AWS environment variables used with AWS workload identity pools to retrieve -# AWS security credentials and the AWS region needed to create a serialized -# signed requests to the AWS STS GetCalledIdentity API that can be exchanged -# for a Google access tokens via the GCP STS endpoint. -# When not available the AWS metadata server is used to retrieve these values. -AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID" -AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY" -AWS_SESSION_TOKEN = "AWS_SESSION_TOKEN" -AWS_REGION = "AWS_REGION" -AWS_DEFAULT_REGION = "AWS_DEFAULT_REGION" diff --git a/venv/lib/python3.10/site-packages/google/auth/exceptions.py b/venv/lib/python3.10/site-packages/google/auth/exceptions.py deleted file mode 100644 index fcbe61b..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/exceptions.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Exceptions used in the google.auth package.""" - - -class GoogleAuthError(Exception): - """Base class for all google.auth errors.""" - - def __init__(self, *args, **kwargs): - super(GoogleAuthError, self).__init__(*args) - retryable = kwargs.get("retryable", False) - self._retryable = retryable - - @property - def retryable(self): - return self._retryable - - -class TransportError(GoogleAuthError): - """Used to indicate an error occurred during an HTTP request.""" - - -class RefreshError(GoogleAuthError): - """Used to indicate that an refreshing the credentials' access token - failed.""" - - -class UserAccessTokenError(GoogleAuthError): - """Used to indicate ``gcloud auth print-access-token`` command failed.""" - - -class DefaultCredentialsError(GoogleAuthError): - """Used to indicate that acquiring default credentials failed.""" - - -class MutualTLSChannelError(GoogleAuthError): - """Used to indicate that mutual TLS channel creation is failed, or mutual - TLS channel credentials is missing or invalid.""" - - -class ClientCertError(GoogleAuthError): - """Used to indicate that client certificate is missing or invalid.""" - - @property - def retryable(self): - return False - - -class OAuthError(GoogleAuthError): - """Used to indicate an error occurred during an OAuth related HTTP - request.""" - - -class ReauthFailError(RefreshError): - """An exception for when reauth failed.""" - - def __init__(self, message=None, **kwargs): - super(ReauthFailError, self).__init__( - "Reauthentication failed. {0}".format(message), **kwargs - ) - - -class ReauthSamlChallengeFailError(ReauthFailError): - """An exception for SAML reauth challenge failures.""" - - -class MalformedError(DefaultCredentialsError, ValueError): - """An exception for malformed data.""" - - -class InvalidResource(DefaultCredentialsError, ValueError): - """An exception for URL error.""" - - -class InvalidOperation(DefaultCredentialsError, ValueError): - """An exception for invalid operation.""" - - -class InvalidValue(DefaultCredentialsError, ValueError): - """Used to wrap general ValueError of python.""" - - -class InvalidType(DefaultCredentialsError, TypeError): - """Used to wrap general TypeError of python.""" - - -class OSError(DefaultCredentialsError, EnvironmentError): - """Used to wrap EnvironmentError(OSError after python3.3).""" diff --git a/venv/lib/python3.10/site-packages/google/auth/external_account.py b/venv/lib/python3.10/site-packages/google/auth/external_account.py deleted file mode 100644 index c14001b..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/external_account.py +++ /dev/null @@ -1,575 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""External Account Credentials. - -This module provides credentials that exchange workload identity pool external -credentials for Google access tokens. This facilitates accessing Google Cloud -Platform resources from on-prem and non-Google Cloud platforms (e.g. AWS, -Microsoft Azure, OIDC identity providers), using native credentials retrieved -from the current environment without the need to copy, save and manage -long-lived service account credentials. - -Specifically, this is intended to use access tokens acquired using the GCP STS -token exchange endpoint following the `OAuth 2.0 Token Exchange`_ spec. - -.. _OAuth 2.0 Token Exchange: https://tools.ietf.org/html/rfc8693 -""" - -import abc -import copy -from dataclasses import dataclass -import datetime -import io -import json -import re - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions -from google.auth import impersonated_credentials -from google.auth import metrics -from google.oauth2 import sts -from google.oauth2 import utils - -# External account JSON type identifier. -_EXTERNAL_ACCOUNT_JSON_TYPE = "external_account" -# The token exchange grant_type used for exchanging credentials. -_STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange" -# The token exchange requested_token_type. This is always an access_token. -_STS_REQUESTED_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" -# Cloud resource manager URL used to retrieve project information. -_CLOUD_RESOURCE_MANAGER = "https://cloudresourcemanager.googleapis.com/v1/projects/" -# Default Google sts token url. -_DEFAULT_TOKEN_URL = "https://sts.googleapis.com/v1/token" - - -@dataclass -class SupplierContext: - """A context class that contains information about the requested third party credential that is passed - to AWS security credential and subject token suppliers. - - Attributes: - subject_token_type (str): The requested subject token type based on the Oauth2.0 token exchange spec. - Expected values include:: - - “urn:ietf:params:oauth:token-type:jwt” - “urn:ietf:params:oauth:token-type:id-token” - “urn:ietf:params:oauth:token-type:saml2” - “urn:ietf:params:aws:token-type:aws4_request” - - audience (str): The requested audience for the subject token. - """ - - subject_token_type: str - audience: str - - -class Credentials( - credentials.Scoped, - credentials.CredentialsWithQuotaProject, - credentials.CredentialsWithTokenUri, - metaclass=abc.ABCMeta, -): - """Base class for all external account credentials. - - This is used to instantiate Credentials for exchanging external account - credentials for Google access token and authorizing requests to Google APIs. - The base class implements the common logic for exchanging external account - credentials for Google access tokens. - """ - - def __init__( - self, - audience, - subject_token_type, - token_url, - credential_source, - service_account_impersonation_url=None, - service_account_impersonation_options=None, - client_id=None, - client_secret=None, - token_info_url=None, - quota_project_id=None, - scopes=None, - default_scopes=None, - workforce_pool_user_project=None, - universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, - trust_boundary=None, - ): - """Instantiates an external account credentials object. - - Args: - audience (str): The STS audience field. - subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. - Expected values include:: - - “urn:ietf:params:oauth:token-type:jwt” - “urn:ietf:params:oauth:token-type:id-token” - “urn:ietf:params:oauth:token-type:saml2” - “urn:ietf:params:aws:token-type:aws4_request” - - token_url (str): The STS endpoint URL. - credential_source (Mapping): The credential source dictionary. - service_account_impersonation_url (Optional[str]): The optional service account - impersonation generateAccessToken URL. - client_id (Optional[str]): The optional client ID. - client_secret (Optional[str]): The optional client secret. - token_info_url (str): The optional STS endpoint URL for token introspection. - quota_project_id (Optional[str]): The optional quota project ID. - scopes (Optional[Sequence[str]]): Optional scopes to request during the - authorization grant. - default_scopes (Optional[Sequence[str]]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - workforce_pool_user_project (Optona[str]): The optional workforce pool user - project number when the credential corresponds to a workforce pool and not - a workload identity pool. The underlying principal must still have - serviceusage.services.use IAM permission to use the project for - billing/quota. - universe_domain (str): The universe domain. The default universe - domain is googleapis.com. - trust_boundary (str): String representation of trust boundary meta. - Raises: - google.auth.exceptions.RefreshError: If the generateAccessToken - endpoint returned an error. - """ - super(Credentials, self).__init__() - self._audience = audience - self._subject_token_type = subject_token_type - self._token_url = token_url - self._token_info_url = token_info_url - self._credential_source = credential_source - self._service_account_impersonation_url = service_account_impersonation_url - self._service_account_impersonation_options = ( - service_account_impersonation_options or {} - ) - self._client_id = client_id - self._client_secret = client_secret - self._quota_project_id = quota_project_id - self._scopes = scopes - self._default_scopes = default_scopes - self._workforce_pool_user_project = workforce_pool_user_project - self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN - self._trust_boundary = { - "locations": [], - "encoded_locations": "0x0", - } # expose a placeholder trust boundary value. - - if self._client_id: - self._client_auth = utils.ClientAuthentication( - utils.ClientAuthType.basic, self._client_id, self._client_secret - ) - else: - self._client_auth = None - self._sts_client = sts.Client(self._token_url, self._client_auth) - - self._metrics_options = self._create_default_metrics_options() - - self._impersonated_credentials = None - self._project_id = None - self._supplier_context = SupplierContext( - self._subject_token_type, self._audience - ) - - if not self.is_workforce_pool and self._workforce_pool_user_project: - # Workload identity pools do not support workforce pool user projects. - raise exceptions.InvalidValue( - "workforce_pool_user_project should not be set for non-workforce pool " - "credentials" - ) - - @property - def info(self): - """Generates the dictionary representation of the current credentials. - - Returns: - Mapping: The dictionary representation of the credentials. This is the - reverse of "from_info" defined on the subclasses of this class. It is - useful for serializing the current credentials so it can deserialized - later. - """ - config_info = self._constructor_args() - config_info.update( - type=_EXTERNAL_ACCOUNT_JSON_TYPE, - service_account_impersonation=config_info.pop( - "service_account_impersonation_options", None - ), - ) - config_info.pop("scopes", None) - config_info.pop("default_scopes", None) - return {key: value for key, value in config_info.items() if value is not None} - - def _constructor_args(self): - args = { - "audience": self._audience, - "subject_token_type": self._subject_token_type, - "token_url": self._token_url, - "token_info_url": self._token_info_url, - "service_account_impersonation_url": self._service_account_impersonation_url, - "service_account_impersonation_options": copy.deepcopy( - self._service_account_impersonation_options - ) - or None, - "credential_source": copy.deepcopy(self._credential_source), - "quota_project_id": self._quota_project_id, - "client_id": self._client_id, - "client_secret": self._client_secret, - "workforce_pool_user_project": self._workforce_pool_user_project, - "scopes": self._scopes, - "default_scopes": self._default_scopes, - "universe_domain": self._universe_domain, - } - if not self.is_workforce_pool: - args.pop("workforce_pool_user_project") - return args - - @property - def service_account_email(self): - """Returns the service account email if service account impersonation is used. - - Returns: - Optional[str]: The service account email if impersonation is used. Otherwise - None is returned. - """ - if self._service_account_impersonation_url: - # Parse email from URL. The formal looks as follows: - # https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/name@project-id.iam.gserviceaccount.com:generateAccessToken - url = self._service_account_impersonation_url - start_index = url.rfind("/") - end_index = url.find(":generateAccessToken") - if start_index != -1 and end_index != -1 and start_index < end_index: - start_index = start_index + 1 - return url[start_index:end_index] - return None - - @property - def is_user(self): - """Returns whether the credentials represent a user (True) or workload (False). - Workloads behave similarly to service accounts. Currently workloads will use - service account impersonation but will eventually not require impersonation. - As a result, this property is more reliable than the service account email - property in determining if the credentials represent a user or workload. - - Returns: - bool: True if the credentials represent a user. False if they represent a - workload. - """ - # If service account impersonation is used, the credentials will always represent a - # service account. - if self._service_account_impersonation_url: - return False - return self.is_workforce_pool - - @property - def is_workforce_pool(self): - """Returns whether the credentials represent a workforce pool (True) or - workload (False) based on the credentials' audience. - - This will also return True for impersonated workforce pool credentials. - - Returns: - bool: True if the credentials represent a workforce pool. False if they - represent a workload. - """ - # Workforce pools representing users have the following audience format: - # //iam.googleapis.com/locations/$location/workforcePools/$poolId/providers/$providerId - p = re.compile(r"//iam\.googleapis\.com/locations/[^/]+/workforcePools/") - return p.match(self._audience or "") is not None - - @property - def requires_scopes(self): - """Checks if the credentials requires scopes. - - Returns: - bool: True if there are no scopes set otherwise False. - """ - return not self._scopes and not self._default_scopes - - @property - def project_number(self): - """Optional[str]: The project number corresponding to the workload identity pool.""" - - # STS audience pattern: - # //iam.googleapis.com/projects/$PROJECT_NUMBER/locations/... - components = self._audience.split("/") - try: - project_index = components.index("projects") - if project_index + 1 < len(components): - return components[project_index + 1] or None - except ValueError: - return None - - @property - def token_info_url(self): - """Optional[str]: The STS token introspection endpoint.""" - - return self._token_info_url - - @_helpers.copy_docstring(credentials.Scoped) - def with_scopes(self, scopes, default_scopes=None): - kwargs = self._constructor_args() - kwargs.update(scopes=scopes, default_scopes=default_scopes) - scoped = self.__class__(**kwargs) - scoped._metrics_options = self._metrics_options - return scoped - - @abc.abstractmethod - def retrieve_subject_token(self, request): - """Retrieves the subject token using the credential_source object. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - Returns: - str: The retrieved subject token. - """ - # pylint: disable=missing-raises-doc - # (pylint doesn't recognize that this is abstract) - raise NotImplementedError("retrieve_subject_token must be implemented") - - def get_project_id(self, request): - """Retrieves the project ID corresponding to the workload identity or workforce pool. - For workforce pool credentials, it returns the project ID corresponding to - the workforce_pool_user_project. - - When not determinable, None is returned. - - This is introduced to support the current pattern of using the Auth library: - - credentials, project_id = google.auth.default() - - The resource may not have permission (resourcemanager.projects.get) to - call this API or the required scopes may not be selected: - https://cloud.google.com/resource-manager/reference/rest/v1/projects/get#authorization-scopes - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - Returns: - Optional[str]: The project ID corresponding to the workload identity pool - or workforce pool if determinable. - """ - if self._project_id: - # If already retrieved, return the cached project ID value. - return self._project_id - scopes = self._scopes if self._scopes is not None else self._default_scopes - # Scopes are required in order to retrieve a valid access token. - project_number = self.project_number or self._workforce_pool_user_project - if project_number and scopes: - headers = {} - url = _CLOUD_RESOURCE_MANAGER + project_number - self.before_request(request, "GET", url, headers) - response = request(url=url, method="GET", headers=headers) - - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - response_data = json.loads(response_body) - - if response.status == 200: - # Cache result as this field is immutable. - self._project_id = response_data.get("projectId") - return self._project_id - - return None - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - scopes = self._scopes if self._scopes is not None else self._default_scopes - - if self._should_initialize_impersonated_credentials(): - self._impersonated_credentials = self._initialize_impersonated_credentials() - - if self._impersonated_credentials: - self._impersonated_credentials.refresh(request) - self.token = self._impersonated_credentials.token - self.expiry = self._impersonated_credentials.expiry - else: - now = _helpers.utcnow() - additional_options = None - # Do not pass workforce_pool_user_project when client authentication - # is used. The client ID is sufficient for determining the user project. - if self._workforce_pool_user_project and not self._client_id: - additional_options = {"userProject": self._workforce_pool_user_project} - additional_headers = { - metrics.API_CLIENT_HEADER: metrics.byoid_metrics_header( - self._metrics_options - ) - } - response_data = self._sts_client.exchange_token( - request=request, - grant_type=_STS_GRANT_TYPE, - subject_token=self.retrieve_subject_token(request), - subject_token_type=self._subject_token_type, - audience=self._audience, - scopes=scopes, - requested_token_type=_STS_REQUESTED_TOKEN_TYPE, - additional_options=additional_options, - additional_headers=additional_headers, - ) - self.token = response_data.get("access_token") - expires_in = response_data.get("expires_in") - # Some services do not respect the OAUTH2.0 RFC and send expires_in as a - # JSON String. - if isinstance(expires_in, str): - expires_in = int(expires_in) - - lifetime = datetime.timedelta(seconds=expires_in) - - self.expiry = now + lifetime - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - # Return copy of instance with the provided quota project ID. - kwargs = self._constructor_args() - kwargs.update(quota_project_id=quota_project_id) - new_cred = self.__class__(**kwargs) - new_cred._metrics_options = self._metrics_options - return new_cred - - @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) - def with_token_uri(self, token_uri): - kwargs = self._constructor_args() - kwargs.update(token_url=token_uri) - new_cred = self.__class__(**kwargs) - new_cred._metrics_options = self._metrics_options - return new_cred - - @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) - def with_universe_domain(self, universe_domain): - kwargs = self._constructor_args() - kwargs.update(universe_domain=universe_domain) - new_cred = self.__class__(**kwargs) - new_cred._metrics_options = self._metrics_options - return new_cred - - def _should_initialize_impersonated_credentials(self): - return ( - self._service_account_impersonation_url is not None - and self._impersonated_credentials is None - ) - - def _initialize_impersonated_credentials(self): - """Generates an impersonated credentials. - - For more details, see `projects.serviceAccounts.generateAccessToken`_. - - .. _projects.serviceAccounts.generateAccessToken: https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/generateAccessToken - - Returns: - impersonated_credentials.Credential: The impersonated credentials - object. - - Raises: - google.auth.exceptions.RefreshError: If the generateAccessToken - endpoint returned an error. - """ - # Return copy of instance with no service account impersonation. - kwargs = self._constructor_args() - kwargs.update( - service_account_impersonation_url=None, - service_account_impersonation_options={}, - ) - source_credentials = self.__class__(**kwargs) - source_credentials._metrics_options = self._metrics_options - - # Determine target_principal. - target_principal = self.service_account_email - if not target_principal: - raise exceptions.RefreshError( - "Unable to determine target principal from service account impersonation URL." - ) - - scopes = self._scopes if self._scopes is not None else self._default_scopes - # Initialize and return impersonated credentials. - return impersonated_credentials.Credentials( - source_credentials=source_credentials, - target_principal=target_principal, - target_scopes=scopes, - quota_project_id=self._quota_project_id, - iam_endpoint_override=self._service_account_impersonation_url, - lifetime=self._service_account_impersonation_options.get( - "token_lifetime_seconds" - ), - ) - - def _create_default_metrics_options(self): - metrics_options = {} - if self._service_account_impersonation_url: - metrics_options["sa-impersonation"] = "true" - else: - metrics_options["sa-impersonation"] = "false" - if self._service_account_impersonation_options.get("token_lifetime_seconds"): - metrics_options["config-lifetime"] = "true" - else: - metrics_options["config-lifetime"] = "false" - - return metrics_options - - @classmethod - def from_info(cls, info, **kwargs): - """Creates a Credentials instance from parsed external account info. - - Args: - info (Mapping[str, str]): The external account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.identity_pool.Credentials: The constructed - credentials. - - Raises: - InvalidValue: For invalid parameters. - """ - return cls( - audience=info.get("audience"), - subject_token_type=info.get("subject_token_type"), - token_url=info.get("token_url"), - token_info_url=info.get("token_info_url"), - service_account_impersonation_url=info.get( - "service_account_impersonation_url" - ), - service_account_impersonation_options=info.get( - "service_account_impersonation" - ) - or {}, - client_id=info.get("client_id"), - client_secret=info.get("client_secret"), - credential_source=info.get("credential_source"), - quota_project_id=info.get("quota_project_id"), - workforce_pool_user_project=info.get("workforce_pool_user_project"), - universe_domain=info.get( - "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN - ), - **kwargs - ) - - @classmethod - def from_file(cls, filename, **kwargs): - """Creates a Credentials instance from an external account json file. - - Args: - filename (str): The path to the external account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.identity_pool.Credentials: The constructed - credentials. - """ - with io.open(filename, "r", encoding="utf-8") as json_file: - data = json.load(json_file) - return cls.from_info(data, **kwargs) diff --git a/venv/lib/python3.10/site-packages/google/auth/external_account_authorized_user.py b/venv/lib/python3.10/site-packages/google/auth/external_account_authorized_user.py deleted file mode 100644 index f733871..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/external_account_authorized_user.py +++ /dev/null @@ -1,364 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""External Account Authorized User Credentials. -This module provides credentials based on OAuth 2.0 access and refresh tokens. -These credentials usually access resources on behalf of a user (resource -owner). - -Specifically, these are sourced using external identities via Workforce Identity Federation. - -Obtaining the initial access and refresh token can be done through the Google Cloud CLI. - -Example credential: -{ - "type": "external_account_authorized_user", - "audience": "//iam.googleapis.com/locations/global/workforcePools/$WORKFORCE_POOL_ID/providers/$PROVIDER_ID", - "refresh_token": "refreshToken", - "token_url": "https://sts.googleapis.com/v1/oauth/token", - "token_info_url": "https://sts.googleapis.com/v1/instrospect", - "client_id": "clientId", - "client_secret": "clientSecret" -} -""" - -import datetime -import io -import json - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions -from google.oauth2 import sts -from google.oauth2 import utils - -_EXTERNAL_ACCOUNT_AUTHORIZED_USER_JSON_TYPE = "external_account_authorized_user" - - -class Credentials( - credentials.CredentialsWithQuotaProject, - credentials.ReadOnlyScoped, - credentials.CredentialsWithTokenUri, -): - """Credentials for External Account Authorized Users. - - This is used to instantiate Credentials for exchanging refresh tokens from - authorized users for Google access token and authorizing requests to Google - APIs. - - The credentials are considered immutable. If you want to modify the - quota project, use `with_quota_project` and if you want to modify the token - uri, use `with_token_uri`. - """ - - def __init__( - self, - token=None, - expiry=None, - refresh_token=None, - audience=None, - client_id=None, - client_secret=None, - token_url=None, - token_info_url=None, - revoke_url=None, - scopes=None, - quota_project_id=None, - universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, - ): - """Instantiates a external account authorized user credentials object. - - Args: - token (str): The OAuth 2.0 access token. Can be None if refresh information - is provided. - expiry (datetime.datetime): The optional expiration datetime of the OAuth 2.0 access - token. - refresh_token (str): The optional OAuth 2.0 refresh token. If specified, - credentials can be refreshed. - audience (str): The optional STS audience which contains the resource name for the workforce - pool and the provider identifier in that pool. - client_id (str): The OAuth 2.0 client ID. Must be specified for refresh, can be left as - None if the token can not be refreshed. - client_secret (str): The OAuth 2.0 client secret. Must be specified for refresh, can be - left as None if the token can not be refreshed. - token_url (str): The optional STS token exchange endpoint for refresh. Must be specified for - refresh, can be left as None if the token can not be refreshed. - token_info_url (str): The optional STS endpoint URL for token introspection. - revoke_url (str): The optional STS endpoint URL for revoking tokens. - quota_project_id (str): The optional project ID used for quota and billing. - This project may be different from the project used to - create the credentials. - universe_domain (Optional[str]): The universe domain. The default value - is googleapis.com. - - Returns: - google.auth.external_account_authorized_user.Credentials: The - constructed credentials. - """ - super(Credentials, self).__init__() - - self.token = token - self.expiry = expiry - self._audience = audience - self._refresh_token = refresh_token - self._token_url = token_url - self._token_info_url = token_info_url - self._client_id = client_id - self._client_secret = client_secret - self._revoke_url = revoke_url - self._quota_project_id = quota_project_id - self._scopes = scopes - self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN - - if not self.valid and not self.can_refresh: - raise exceptions.InvalidOperation( - "Token should be created with fields to make it valid (`token` and " - "`expiry`), or fields to allow it to refresh (`refresh_token`, " - "`token_url`, `client_id`, `client_secret`)." - ) - - self._client_auth = None - if self._client_id: - self._client_auth = utils.ClientAuthentication( - utils.ClientAuthType.basic, self._client_id, self._client_secret - ) - self._sts_client = sts.Client(self._token_url, self._client_auth) - - @property - def info(self): - """Generates the serializable dictionary representation of the current - credentials. - - Returns: - Mapping: The dictionary representation of the credentials. This is the - reverse of the "from_info" method defined in this class. It is - useful for serializing the current credentials so it can deserialized - later. - """ - config_info = self.constructor_args() - config_info.update(type=_EXTERNAL_ACCOUNT_AUTHORIZED_USER_JSON_TYPE) - if config_info["expiry"]: - config_info["expiry"] = config_info["expiry"].isoformat() + "Z" - - return {key: value for key, value in config_info.items() if value is not None} - - def constructor_args(self): - return { - "audience": self._audience, - "refresh_token": self._refresh_token, - "token_url": self._token_url, - "token_info_url": self._token_info_url, - "client_id": self._client_id, - "client_secret": self._client_secret, - "token": self.token, - "expiry": self.expiry, - "revoke_url": self._revoke_url, - "scopes": self._scopes, - "quota_project_id": self._quota_project_id, - "universe_domain": self._universe_domain, - } - - @property - def scopes(self): - """Optional[str]: The OAuth 2.0 permission scopes.""" - return self._scopes - - @property - def requires_scopes(self): - """ False: OAuth 2.0 credentials have their scopes set when - the initial token is requested and can not be changed.""" - return False - - @property - def client_id(self): - """Optional[str]: The OAuth 2.0 client ID.""" - return self._client_id - - @property - def client_secret(self): - """Optional[str]: The OAuth 2.0 client secret.""" - return self._client_secret - - @property - def audience(self): - """Optional[str]: The STS audience which contains the resource name for the - workforce pool and the provider identifier in that pool.""" - return self._audience - - @property - def refresh_token(self): - """Optional[str]: The OAuth 2.0 refresh token.""" - return self._refresh_token - - @property - def token_url(self): - """Optional[str]: The STS token exchange endpoint for refresh.""" - return self._token_url - - @property - def token_info_url(self): - """Optional[str]: The STS endpoint for token info.""" - return self._token_info_url - - @property - def revoke_url(self): - """Optional[str]: The STS endpoint for token revocation.""" - return self._revoke_url - - @property - def is_user(self): - """ True: This credential always represents a user.""" - return True - - @property - def can_refresh(self): - return all( - (self._refresh_token, self._token_url, self._client_id, self._client_secret) - ) - - def get_project_id(self, request=None): - """Retrieves the project ID corresponding to the workload identity or workforce pool. - For workforce pool credentials, it returns the project ID corresponding to - the workforce_pool_user_project. - - When not determinable, None is returned. - - Args: - request (google.auth.transport.requests.Request): Request object. - Unused here, but passed from _default.default(). - - Return: - str: project ID is not determinable for this credential type so it returns None - """ - - return None - - def to_json(self, strip=None): - """Utility function that creates a JSON representation of this - credential. - Args: - strip (Sequence[str]): Optional list of members to exclude from the - generated JSON. - Returns: - str: A JSON representation of this instance. When converted into - a dictionary, it can be passed to from_info() - to create a new instance. - """ - strip = strip if strip else [] - return json.dumps({k: v for (k, v) in self.info.items() if k not in strip}) - - def refresh(self, request): - """Refreshes the access token. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If the credentials could - not be refreshed. - """ - if not self.can_refresh: - raise exceptions.RefreshError( - "The credentials do not contain the necessary fields need to " - "refresh the access token. You must specify refresh_token, " - "token_url, client_id, and client_secret." - ) - - now = _helpers.utcnow() - response_data = self._make_sts_request(request) - - self.token = response_data.get("access_token") - - lifetime = datetime.timedelta(seconds=response_data.get("expires_in")) - self.expiry = now + lifetime - - if "refresh_token" in response_data: - self._refresh_token = response_data["refresh_token"] - - def _make_sts_request(self, request): - return self._sts_client.refresh_token(request, self._refresh_token) - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - kwargs = self.constructor_args() - kwargs.update(quota_project_id=quota_project_id) - return self.__class__(**kwargs) - - @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) - def with_token_uri(self, token_uri): - kwargs = self.constructor_args() - kwargs.update(token_url=token_uri) - return self.__class__(**kwargs) - - @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) - def with_universe_domain(self, universe_domain): - kwargs = self.constructor_args() - kwargs.update(universe_domain=universe_domain) - return self.__class__(**kwargs) - - @classmethod - def from_info(cls, info, **kwargs): - """Creates a Credentials instance from parsed external account info. - - Args: - info (Mapping[str, str]): The external account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.external_account_authorized_user.Credentials: The - constructed credentials. - - Raises: - ValueError: For invalid parameters. - """ - expiry = info.get("expiry") - if expiry: - expiry = datetime.datetime.strptime( - expiry.rstrip("Z").split(".")[0], "%Y-%m-%dT%H:%M:%S" - ) - return cls( - audience=info.get("audience"), - refresh_token=info.get("refresh_token"), - token_url=info.get("token_url"), - token_info_url=info.get("token_info_url"), - client_id=info.get("client_id"), - client_secret=info.get("client_secret"), - token=info.get("token"), - expiry=expiry, - revoke_url=info.get("revoke_url"), - quota_project_id=info.get("quota_project_id"), - scopes=info.get("scopes"), - universe_domain=info.get( - "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN - ), - **kwargs - ) - - @classmethod - def from_file(cls, filename, **kwargs): - """Creates a Credentials instance from an external account json file. - - Args: - filename (str): The path to the external account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.external_account_authorized_user.Credentials: The - constructed credentials. - """ - with io.open(filename, "r", encoding="utf-8") as json_file: - data = json.load(json_file) - return cls.from_info(data, **kwargs) diff --git a/venv/lib/python3.10/site-packages/google/auth/iam.py b/venv/lib/python3.10/site-packages/google/auth/iam.py deleted file mode 100644 index e9df844..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/iam.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Tools for using the Google `Cloud Identity and Access Management (IAM) -API`_'s auth-related functionality. - -.. _Cloud Identity and Access Management (IAM) API: - https://cloud.google.com/iam/docs/ -""" - -import base64 -import http.client as http_client -import json - -from google.auth import _helpers -from google.auth import crypt -from google.auth import exceptions - -_IAM_API_ROOT_URI = "https://iamcredentials.googleapis.com/v1" -_SIGN_BLOB_URI = _IAM_API_ROOT_URI + "/projects/-/serviceAccounts/{}:signBlob?alt=json" - - -class Signer(crypt.Signer): - """Signs messages using the IAM `signBlob API`_. - - This is useful when you need to sign bytes but do not have access to the - credential's private key file. - - .. _signBlob API: - https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts - /signBlob - """ - - def __init__(self, request, credentials, service_account_email): - """ - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - credentials (google.auth.credentials.Credentials): The credentials - that will be used to authenticate the request to the IAM API. - The credentials must have of one the following scopes: - - - https://www.googleapis.com/auth/iam - - https://www.googleapis.com/auth/cloud-platform - service_account_email (str): The service account email identifying - which service account to use to sign bytes. Often, this can - be the same as the service account email in the given - credentials. - """ - self._request = request - self._credentials = credentials - self._service_account_email = service_account_email - - def _make_signing_request(self, message): - """Makes a request to the API signBlob API.""" - message = _helpers.to_bytes(message) - - method = "POST" - url = _SIGN_BLOB_URI.format(self._service_account_email) - headers = {"Content-Type": "application/json"} - body = json.dumps( - {"payload": base64.b64encode(message).decode("utf-8")} - ).encode("utf-8") - - self._credentials.before_request(self._request, method, url, headers) - response = self._request(url=url, method=method, body=body, headers=headers) - - if response.status != http_client.OK: - raise exceptions.TransportError( - "Error calling the IAM signBlob API: {}".format(response.data) - ) - - return json.loads(response.data.decode("utf-8")) - - @property - def key_id(self): - """Optional[str]: The key ID used to identify this private key. - - .. warning:: - This is always ``None``. The key ID used by IAM can not - be reliably determined ahead of time. - """ - return None - - @_helpers.copy_docstring(crypt.Signer) - def sign(self, message): - response = self._make_signing_request(message) - return base64.b64decode(response["signedBlob"]) diff --git a/venv/lib/python3.10/site-packages/google/auth/identity_pool.py b/venv/lib/python3.10/site-packages/google/auth/identity_pool.py deleted file mode 100644 index a9ec577..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/identity_pool.py +++ /dev/null @@ -1,374 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Identity Pool Credentials. - -This module provides credentials to access Google Cloud resources from on-prem -or non-Google Cloud platforms which support external credentials (e.g. OIDC ID -tokens) retrieved from local file locations or local servers. This includes -Microsoft Azure and OIDC identity providers (e.g. K8s workloads registered with -Hub with Hub workload identity enabled). - -These credentials are recommended over the use of service account credentials -in on-prem/non-Google Cloud platforms as they do not involve the management of -long-live service account private keys. - -Identity Pool Credentials are initialized using external_account -arguments which are typically loaded from an external credentials file or -an external credentials URL. - -This module also provides a definition for an abstract subject token supplier. -This supplier can be implemented to return a valid OIDC or SAML2.0 subject token -and used to create Identity Pool credentials. The credentials will then call the -supplier instead of using pre-defined methods such as reading a local file or -calling a URL. -""" - -try: - from collections.abc import Mapping -# Python 2.7 compatibility -except ImportError: # pragma: NO COVER - from collections import Mapping -import abc -import json -import os -from typing import NamedTuple - -from google.auth import _helpers -from google.auth import exceptions -from google.auth import external_account - - -class SubjectTokenSupplier(metaclass=abc.ABCMeta): - """Base class for subject token suppliers. This can be implemented with custom logic to retrieve - a subject token to exchange for a Google Cloud access token when using Workload or - Workforce Identity Federation. The identity pool credential does not cache the subject token, - so caching logic should be added in the implementation. - """ - - @abc.abstractmethod - def get_subject_token(self, context, request): - """Returns the requested subject token. The subject token must be valid. - - .. warning: This is not cached by the calling Google credential, so caching logic should be implemented in the supplier. - - Args: - context (google.auth.externalaccount.SupplierContext): The context object - containing information about the requested audience and subject token type. - request (google.auth.transport.Request): The object used to make - HTTP requests. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - subject token retrieval logic. - - Returns: - str: The requested subject token string. - """ - raise NotImplementedError("") - - -class _TokenContent(NamedTuple): - """Models the token content response from file and url internal suppliers. - Attributes: - content (str): The string content of the file or URL response. - location (str): The location the content was retrieved from. This will either be a file location or a URL. - """ - - content: str - location: str - - -class _FileSupplier(SubjectTokenSupplier): - """ Internal implementation of subject token supplier which supports reading a subject token from a file.""" - - def __init__(self, path, format_type, subject_token_field_name): - self._path = path - self._format_type = format_type - self._subject_token_field_name = subject_token_field_name - - @_helpers.copy_docstring(SubjectTokenSupplier) - def get_subject_token(self, context, request): - if not os.path.exists(self._path): - raise exceptions.RefreshError("File '{}' was not found.".format(self._path)) - - with open(self._path, "r", encoding="utf-8") as file_obj: - token_content = _TokenContent(file_obj.read(), self._path) - - return _parse_token_data( - token_content, self._format_type, self._subject_token_field_name - ) - - -class _UrlSupplier(SubjectTokenSupplier): - """ Internal implementation of subject token supplier which supports retrieving a subject token by calling a URL endpoint.""" - - def __init__(self, url, format_type, subject_token_field_name, headers): - self._url = url - self._format_type = format_type - self._subject_token_field_name = subject_token_field_name - self._headers = headers - - @_helpers.copy_docstring(SubjectTokenSupplier) - def get_subject_token(self, context, request): - response = request(url=self._url, method="GET", headers=self._headers) - - # support both string and bytes type response.data - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - if response.status != 200: - raise exceptions.RefreshError( - "Unable to retrieve Identity Pool subject token", response_body - ) - token_content = _TokenContent(response_body, self._url) - return _parse_token_data( - token_content, self._format_type, self._subject_token_field_name - ) - - -def _parse_token_data(token_content, format_type="text", subject_token_field_name=None): - if format_type == "text": - token = token_content.content - else: - try: - # Parse file content as JSON. - response_data = json.loads(token_content.content) - # Get the subject_token. - token = response_data[subject_token_field_name] - except (KeyError, ValueError): - raise exceptions.RefreshError( - "Unable to parse subject_token from JSON file '{}' using key '{}'".format( - token_content.location, subject_token_field_name - ) - ) - if not token: - raise exceptions.RefreshError( - "Missing subject_token in the credential_source file" - ) - return token - - -class Credentials(external_account.Credentials): - """External account credentials sourced from files and URLs.""" - - def __init__( - self, - audience, - subject_token_type, - token_url=external_account._DEFAULT_TOKEN_URL, - credential_source=None, - subject_token_supplier=None, - *args, - **kwargs - ): - """Instantiates an external account credentials object from a file/URL. - - Args: - audience (str): The STS audience field. - subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. - Expected values include:: - - “urn:ietf:params:oauth:token-type:jwt” - “urn:ietf:params:oauth:token-type:id-token” - “urn:ietf:params:oauth:token-type:saml2” - - token_url (Optional [str]): The STS endpoint URL. If not provided, will default to "https://sts.googleapis.com/v1/token". - credential_source (Optional [Mapping]): The credential source dictionary used to - provide instructions on how to retrieve external credential to be - exchanged for Google access tokens. Either a credential source or - a subject token supplier must be provided. - - Example credential_source for url-sourced credential:: - - { - "url": "http://www.example.com", - "format": { - "type": "json", - "subject_token_field_name": "access_token", - }, - "headers": {"foo": "bar"}, - } - - Example credential_source for file-sourced credential:: - - { - "file": "/path/to/token/file.txt" - } - subject_token_supplier (Optional [SubjectTokenSupplier]): Optional subject token supplier. - This will be called to supply a valid subject token which will then - be exchanged for Google access tokens. Either a subject token supplier - or a credential source must be provided. - args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - access token retrieval logic. - ValueError: For invalid parameters. - - .. note:: Typically one of the helper constructors - :meth:`from_file` or - :meth:`from_info` are used instead of calling the constructor directly. - """ - - super(Credentials, self).__init__( - audience=audience, - subject_token_type=subject_token_type, - token_url=token_url, - credential_source=credential_source, - *args, - **kwargs - ) - if credential_source is None and subject_token_supplier is None: - raise exceptions.InvalidValue( - "A valid credential source or a subject token supplier must be provided." - ) - if credential_source is not None and subject_token_supplier is not None: - raise exceptions.InvalidValue( - "Identity pool credential cannot have both a credential source and a subject token supplier." - ) - - if subject_token_supplier is not None: - self._subject_token_supplier = subject_token_supplier - self._credential_source_file = None - self._credential_source_url = None - else: - if not isinstance(credential_source, Mapping): - self._credential_source_executable = None - raise exceptions.MalformedError( - "Invalid credential_source. The credential_source is not a dict." - ) - self._credential_source_file = credential_source.get("file") - self._credential_source_url = credential_source.get("url") - self._credential_source_headers = credential_source.get("headers") - credential_source_format = credential_source.get("format", {}) - # Get credential_source format type. When not provided, this - # defaults to text. - self._credential_source_format_type = ( - credential_source_format.get("type") or "text" - ) - # environment_id is only supported in AWS or dedicated future external - # account credentials. - if "environment_id" in credential_source: - raise exceptions.MalformedError( - "Invalid Identity Pool credential_source field 'environment_id'" - ) - if self._credential_source_format_type not in ["text", "json"]: - raise exceptions.MalformedError( - "Invalid credential_source format '{}'".format( - self._credential_source_format_type - ) - ) - # For JSON types, get the required subject_token field name. - if self._credential_source_format_type == "json": - self._credential_source_field_name = credential_source_format.get( - "subject_token_field_name" - ) - if self._credential_source_field_name is None: - raise exceptions.MalformedError( - "Missing subject_token_field_name for JSON credential_source format" - ) - else: - self._credential_source_field_name = None - - if self._credential_source_file and self._credential_source_url: - raise exceptions.MalformedError( - "Ambiguous credential_source. 'file' is mutually exclusive with 'url'." - ) - if not self._credential_source_file and not self._credential_source_url: - raise exceptions.MalformedError( - "Missing credential_source. A 'file' or 'url' must be provided." - ) - - if self._credential_source_file: - self._subject_token_supplier = _FileSupplier( - self._credential_source_file, - self._credential_source_format_type, - self._credential_source_field_name, - ) - else: - self._subject_token_supplier = _UrlSupplier( - self._credential_source_url, - self._credential_source_format_type, - self._credential_source_field_name, - self._credential_source_headers, - ) - - @_helpers.copy_docstring(external_account.Credentials) - def retrieve_subject_token(self, request): - return self._subject_token_supplier.get_subject_token( - self._supplier_context, request - ) - - def _create_default_metrics_options(self): - metrics_options = super(Credentials, self)._create_default_metrics_options() - # Check that credential source is a dict before checking for file vs url. This check needs to be done - # here because the external_account credential constructor needs to pass the metrics options to the - # impersonated credential object before the identity_pool credentials are validated. - if isinstance(self._credential_source, Mapping): - if self._credential_source.get("file"): - metrics_options["source"] = "file" - else: - metrics_options["source"] = "url" - else: - metrics_options["source"] = "programmatic" - return metrics_options - - def _has_custom_supplier(self): - return self._credential_source is None - - def _constructor_args(self): - args = super(Credentials, self)._constructor_args() - # If a custom supplier was used, append it to the args dict. - if self._has_custom_supplier(): - args.update({"subject_token_supplier": self._subject_token_supplier}) - return args - - @classmethod - def from_info(cls, info, **kwargs): - """Creates an Identity Pool Credentials instance from parsed external account info. - - Args: - info (Mapping[str, str]): The Identity Pool external account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.identity_pool.Credentials: The constructed - credentials. - - Raises: - ValueError: For invalid parameters. - """ - subject_token_supplier = info.get("subject_token_supplier") - kwargs.update({"subject_token_supplier": subject_token_supplier}) - return super(Credentials, cls).from_info(info, **kwargs) - - @classmethod - def from_file(cls, filename, **kwargs): - """Creates an IdentityPool Credentials instance from an external account json file. - - Args: - filename (str): The path to the IdentityPool external account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.identity_pool.Credentials: The constructed - credentials. - """ - return super(Credentials, cls).from_file(filename, **kwargs) diff --git a/venv/lib/python3.10/site-packages/google/auth/impersonated_credentials.py b/venv/lib/python3.10/site-packages/google/auth/impersonated_credentials.py deleted file mode 100644 index d32e6eb..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/impersonated_credentials.py +++ /dev/null @@ -1,465 +0,0 @@ -# Copyright 2018 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google Cloud Impersonated credentials. - -This module provides authentication for applications where local credentials -impersonates a remote service account using `IAM Credentials API`_. - -This class can be used to impersonate a service account as long as the original -Credential object has the "Service Account Token Creator" role on the target -service account. - - .. _IAM Credentials API: - https://cloud.google.com/iam/credentials/reference/rest/ -""" - -import base64 -import copy -from datetime import datetime -import http.client as http_client -import json - -from google.auth import _helpers -from google.auth import credentials -from google.auth import exceptions -from google.auth import jwt -from google.auth import metrics - -_IAM_SCOPE = ["https://www.googleapis.com/auth/iam"] - -_IAM_ENDPOINT = ( - "https://iamcredentials.googleapis.com/v1/projects/-" - + "/serviceAccounts/{}:generateAccessToken" -) - -_IAM_SIGN_ENDPOINT = ( - "https://iamcredentials.googleapis.com/v1/projects/-" - + "/serviceAccounts/{}:signBlob" -) - -_IAM_IDTOKEN_ENDPOINT = ( - "https://iamcredentials.googleapis.com/v1/" - + "projects/-/serviceAccounts/{}:generateIdToken" -) - -_REFRESH_ERROR = "Unable to acquire impersonated credentials" - -_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds - -_DEFAULT_TOKEN_URI = "https://oauth2.googleapis.com/token" - - -def _make_iam_token_request( - request, principal, headers, body, iam_endpoint_override=None -): - """Makes a request to the Google Cloud IAM service for an access token. - Args: - request (Request): The Request object to use. - principal (str): The principal to request an access token for. - headers (Mapping[str, str]): Map of headers to transmit. - body (Mapping[str, str]): JSON Payload body for the iamcredentials - API call. - iam_endpoint_override (Optiona[str]): The full IAM endpoint override - with the target_principal embedded. This is useful when supporting - impersonation with regional endpoints. - - Raises: - google.auth.exceptions.TransportError: Raised if there is an underlying - HTTP connection error - google.auth.exceptions.RefreshError: Raised if the impersonated - credentials are not available. Common reasons are - `iamcredentials.googleapis.com` is not enabled or the - `Service Account Token Creator` is not assigned - """ - iam_endpoint = iam_endpoint_override or _IAM_ENDPOINT.format(principal) - - body = json.dumps(body).encode("utf-8") - - response = request(url=iam_endpoint, method="POST", headers=headers, body=body) - - # support both string and bytes type response.data - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - if response.status != http_client.OK: - raise exceptions.RefreshError(_REFRESH_ERROR, response_body) - - try: - token_response = json.loads(response_body) - token = token_response["accessToken"] - expiry = datetime.strptime(token_response["expireTime"], "%Y-%m-%dT%H:%M:%SZ") - - return token, expiry - - except (KeyError, ValueError) as caught_exc: - new_exc = exceptions.RefreshError( - "{}: No access token or invalid expiration in response.".format( - _REFRESH_ERROR - ), - response_body, - ) - raise new_exc from caught_exc - - -class Credentials( - credentials.Scoped, credentials.CredentialsWithQuotaProject, credentials.Signing -): - """This module defines impersonated credentials which are essentially - impersonated identities. - - Impersonated Credentials allows credentials issued to a user or - service account to impersonate another. The target service account must - grant the originating credential principal the - `Service Account Token Creator`_ IAM role: - - For more information about Token Creator IAM role and - IAMCredentials API, see - `Creating Short-Lived Service Account Credentials`_. - - .. _Service Account Token Creator: - https://cloud.google.com/iam/docs/service-accounts#the_service_account_token_creator_role - - .. _Creating Short-Lived Service Account Credentials: - https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials - - Usage: - - First grant source_credentials the `Service Account Token Creator` - role on the target account to impersonate. In this example, the - service account represented by svc_account.json has the - token creator role on - `impersonated-account@_project_.iam.gserviceaccount.com`. - - Enable the IAMCredentials API on the source project: - `gcloud services enable iamcredentials.googleapis.com`. - - Initialize a source credential which does not have access to - list bucket:: - - from google.oauth2 import service_account - - target_scopes = [ - 'https://www.googleapis.com/auth/devstorage.read_only'] - - source_credentials = ( - service_account.Credentials.from_service_account_file( - '/path/to/svc_account.json', - scopes=target_scopes)) - - Now use the source credentials to acquire credentials to impersonate - another service account:: - - from google.auth import impersonated_credentials - - target_credentials = impersonated_credentials.Credentials( - source_credentials=source_credentials, - target_principal='impersonated-account@_project_.iam.gserviceaccount.com', - target_scopes = target_scopes, - lifetime=500) - - Resource access is granted:: - - client = storage.Client(credentials=target_credentials) - buckets = client.list_buckets(project='your_project') - for bucket in buckets: - print(bucket.name) - """ - - def __init__( - self, - source_credentials, - target_principal, - target_scopes, - delegates=None, - lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, - quota_project_id=None, - iam_endpoint_override=None, - ): - """ - Args: - source_credentials (google.auth.Credentials): The source credential - used as to acquire the impersonated credentials. - target_principal (str): The service account to impersonate. - target_scopes (Sequence[str]): Scopes to request during the - authorization grant. - delegates (Sequence[str]): The chained list of delegates required - to grant the final access_token. If set, the sequence of - identities must have "Service Account Token Creator" capability - granted to the prceeding identity. For example, if set to - [serviceAccountB, serviceAccountC], the source_credential - must have the Token Creator role on serviceAccountB. - serviceAccountB must have the Token Creator on - serviceAccountC. - Finally, C must have Token Creator on target_principal. - If left unset, source_credential must have that role on - target_principal. - lifetime (int): Number of seconds the delegated credential should - be valid for (upto 3600). - quota_project_id (Optional[str]): The project ID used for quota and billing. - This project may be different from the project used to - create the credentials. - iam_endpoint_override (Optiona[str]): The full IAM endpoint override - with the target_principal embedded. This is useful when supporting - impersonation with regional endpoints. - """ - - super(Credentials, self).__init__() - - self._source_credentials = copy.copy(source_credentials) - # Service account source credentials must have the _IAM_SCOPE - # added to refresh correctly. User credentials cannot have - # their original scopes modified. - if isinstance(self._source_credentials, credentials.Scoped): - self._source_credentials = self._source_credentials.with_scopes(_IAM_SCOPE) - # If the source credential is service account and self signed jwt - # is needed, we need to create a jwt credential inside it - if ( - hasattr(self._source_credentials, "_create_self_signed_jwt") - and self._source_credentials._always_use_jwt_access - ): - self._source_credentials._create_self_signed_jwt(None) - self._target_principal = target_principal - self._target_scopes = target_scopes - self._delegates = delegates - self._lifetime = lifetime or _DEFAULT_TOKEN_LIFETIME_SECS - self.token = None - self.expiry = _helpers.utcnow() - self._quota_project_id = quota_project_id - self._iam_endpoint_override = iam_endpoint_override - - def _metric_header_for_usage(self): - return metrics.CRED_TYPE_SA_IMPERSONATE - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - self._update_token(request) - - def _update_token(self, request): - """Updates credentials with a new access_token representing - the impersonated account. - - Args: - request (google.auth.transport.requests.Request): Request object - to use for refreshing credentials. - """ - - # Refresh our source credentials if it is not valid. - if ( - self._source_credentials.token_state == credentials.TokenState.STALE - or self._source_credentials.token_state == credentials.TokenState.INVALID - ): - self._source_credentials.refresh(request) - - body = { - "delegates": self._delegates, - "scope": self._target_scopes, - "lifetime": str(self._lifetime) + "s", - } - - headers = { - "Content-Type": "application/json", - metrics.API_CLIENT_HEADER: metrics.token_request_access_token_impersonate(), - } - - # Apply the source credentials authentication info. - self._source_credentials.apply(headers) - - self.token, self.expiry = _make_iam_token_request( - request=request, - principal=self._target_principal, - headers=headers, - body=body, - iam_endpoint_override=self._iam_endpoint_override, - ) - - def sign_bytes(self, message): - from google.auth.transport.requests import AuthorizedSession - - iam_sign_endpoint = _IAM_SIGN_ENDPOINT.format(self._target_principal) - - body = { - "payload": base64.b64encode(message).decode("utf-8"), - "delegates": self._delegates, - } - - headers = {"Content-Type": "application/json"} - - authed_session = AuthorizedSession(self._source_credentials) - - try: - response = authed_session.post( - url=iam_sign_endpoint, headers=headers, json=body - ) - finally: - authed_session.close() - - if response.status_code != http_client.OK: - raise exceptions.TransportError( - "Error calling sign_bytes: {}".format(response.json()) - ) - - return base64.b64decode(response.json()["signedBlob"]) - - @property - def signer_email(self): - return self._target_principal - - @property - def service_account_email(self): - return self._target_principal - - @property - def signer(self): - return self - - @property - def requires_scopes(self): - return not self._target_scopes - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__( - self._source_credentials, - target_principal=self._target_principal, - target_scopes=self._target_scopes, - delegates=self._delegates, - lifetime=self._lifetime, - quota_project_id=quota_project_id, - iam_endpoint_override=self._iam_endpoint_override, - ) - - @_helpers.copy_docstring(credentials.Scoped) - def with_scopes(self, scopes, default_scopes=None): - return self.__class__( - self._source_credentials, - target_principal=self._target_principal, - target_scopes=scopes or default_scopes, - delegates=self._delegates, - lifetime=self._lifetime, - quota_project_id=self._quota_project_id, - iam_endpoint_override=self._iam_endpoint_override, - ) - - -class IDTokenCredentials(credentials.CredentialsWithQuotaProject): - """Open ID Connect ID Token-based service account credentials. - - """ - - def __init__( - self, - target_credentials, - target_audience=None, - include_email=False, - quota_project_id=None, - ): - """ - Args: - target_credentials (google.auth.Credentials): The target - credential used as to acquire the id tokens for. - target_audience (string): Audience to issue the token for. - include_email (bool): Include email in IdToken - quota_project_id (Optional[str]): The project ID used for - quota and billing. - """ - super(IDTokenCredentials, self).__init__() - - if not isinstance(target_credentials, Credentials): - raise exceptions.GoogleAuthError( - "Provided Credential must be " "impersonated_credentials" - ) - self._target_credentials = target_credentials - self._target_audience = target_audience - self._include_email = include_email - self._quota_project_id = quota_project_id - - def from_credentials(self, target_credentials, target_audience=None): - return self.__class__( - target_credentials=target_credentials, - target_audience=target_audience, - include_email=self._include_email, - quota_project_id=self._quota_project_id, - ) - - def with_target_audience(self, target_audience): - return self.__class__( - target_credentials=self._target_credentials, - target_audience=target_audience, - include_email=self._include_email, - quota_project_id=self._quota_project_id, - ) - - def with_include_email(self, include_email): - return self.__class__( - target_credentials=self._target_credentials, - target_audience=self._target_audience, - include_email=include_email, - quota_project_id=self._quota_project_id, - ) - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__( - target_credentials=self._target_credentials, - target_audience=self._target_audience, - include_email=self._include_email, - quota_project_id=quota_project_id, - ) - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - from google.auth.transport.requests import AuthorizedSession - - iam_sign_endpoint = _IAM_IDTOKEN_ENDPOINT.format( - self._target_credentials.signer_email - ) - - body = { - "audience": self._target_audience, - "delegates": self._target_credentials._delegates, - "includeEmail": self._include_email, - } - - headers = { - "Content-Type": "application/json", - metrics.API_CLIENT_HEADER: metrics.token_request_id_token_impersonate(), - } - - authed_session = AuthorizedSession( - self._target_credentials._source_credentials, auth_request=request - ) - - try: - response = authed_session.post( - url=iam_sign_endpoint, - headers=headers, - data=json.dumps(body).encode("utf-8"), - ) - finally: - authed_session.close() - - if response.status_code != http_client.OK: - raise exceptions.RefreshError( - "Error getting ID token: {}".format(response.json()) - ) - - id_token = response.json()["token"] - self.token = id_token - self.expiry = datetime.utcfromtimestamp( - jwt.decode(id_token, verify=False)["exp"] - ) diff --git a/venv/lib/python3.10/site-packages/google/auth/jwt.py b/venv/lib/python3.10/site-packages/google/auth/jwt.py deleted file mode 100644 index 1ebd565..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/jwt.py +++ /dev/null @@ -1,878 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""JSON Web Tokens - -Provides support for creating (encoding) and verifying (decoding) JWTs, -especially JWTs generated and consumed by Google infrastructure. - -See `rfc7519`_ for more details on JWTs. - -To encode a JWT use :func:`encode`:: - - from google.auth import crypt - from google.auth import jwt - - signer = crypt.Signer(private_key) - payload = {'some': 'payload'} - encoded = jwt.encode(signer, payload) - -To decode a JWT and verify claims use :func:`decode`:: - - claims = jwt.decode(encoded, certs=public_certs) - -You can also skip verification:: - - claims = jwt.decode(encoded, verify=False) - -.. _rfc7519: https://tools.ietf.org/html/rfc7519 - -""" - -try: - from collections.abc import Mapping -# Python 2.7 compatibility -except ImportError: # pragma: NO COVER - from collections import Mapping # type: ignore -import copy -import datetime -import json -import urllib - -import cachetools - -from google.auth import _helpers -from google.auth import _service_account_info -from google.auth import crypt -from google.auth import exceptions -import google.auth.credentials - -try: - from google.auth.crypt import es256 -except ImportError: # pragma: NO COVER - es256 = None # type: ignore - -_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds -_DEFAULT_MAX_CACHE_SIZE = 10 -_ALGORITHM_TO_VERIFIER_CLASS = {"RS256": crypt.RSAVerifier} -_CRYPTOGRAPHY_BASED_ALGORITHMS = frozenset(["ES256"]) - -if es256 is not None: # pragma: NO COVER - _ALGORITHM_TO_VERIFIER_CLASS["ES256"] = es256.ES256Verifier # type: ignore - - -def encode(signer, payload, header=None, key_id=None): - """Make a signed JWT. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign the JWT. - payload (Mapping[str, str]): The JWT payload. - header (Mapping[str, str]): Additional JWT header payload. - key_id (str): The key id to add to the JWT header. If the - signer has a key id it will be used as the default. If this is - specified it will override the signer's key id. - - Returns: - bytes: The encoded JWT. - """ - if header is None: - header = {} - - if key_id is None: - key_id = signer.key_id - - header.update({"typ": "JWT"}) - - if "alg" not in header: - if es256 is not None and isinstance(signer, es256.ES256Signer): - header.update({"alg": "ES256"}) - else: - header.update({"alg": "RS256"}) - - if key_id is not None: - header["kid"] = key_id - - segments = [ - _helpers.unpadded_urlsafe_b64encode(json.dumps(header).encode("utf-8")), - _helpers.unpadded_urlsafe_b64encode(json.dumps(payload).encode("utf-8")), - ] - - signing_input = b".".join(segments) - signature = signer.sign(signing_input) - segments.append(_helpers.unpadded_urlsafe_b64encode(signature)) - - return b".".join(segments) - - -def _decode_jwt_segment(encoded_section): - """Decodes a single JWT segment.""" - section_bytes = _helpers.padded_urlsafe_b64decode(encoded_section) - try: - return json.loads(section_bytes.decode("utf-8")) - except ValueError as caught_exc: - new_exc = exceptions.MalformedError( - "Can't parse segment: {0}".format(section_bytes) - ) - raise new_exc from caught_exc - - -def _unverified_decode(token): - """Decodes a token and does no verification. - - Args: - token (Union[str, bytes]): The encoded JWT. - - Returns: - Tuple[Mapping, Mapping, str, str]: header, payload, signed_section, and - signature. - - Raises: - google.auth.exceptions.MalformedError: if there are an incorrect amount of segments in the token or segments of the wrong type. - """ - token = _helpers.to_bytes(token) - - if token.count(b".") != 2: - raise exceptions.MalformedError( - "Wrong number of segments in token: {0}".format(token) - ) - - encoded_header, encoded_payload, signature = token.split(b".") - signed_section = encoded_header + b"." + encoded_payload - signature = _helpers.padded_urlsafe_b64decode(signature) - - # Parse segments - header = _decode_jwt_segment(encoded_header) - payload = _decode_jwt_segment(encoded_payload) - - if not isinstance(header, Mapping): - raise exceptions.MalformedError( - "Header segment should be a JSON object: {0}".format(encoded_header) - ) - - if not isinstance(payload, Mapping): - raise exceptions.MalformedError( - "Payload segment should be a JSON object: {0}".format(encoded_payload) - ) - - return header, payload, signed_section, signature - - -def decode_header(token): - """Return the decoded header of a token. - - No verification is done. This is useful to extract the key id from - the header in order to acquire the appropriate certificate to verify - the token. - - Args: - token (Union[str, bytes]): the encoded JWT. - - Returns: - Mapping: The decoded JWT header. - """ - header, _, _, _ = _unverified_decode(token) - return header - - -def _verify_iat_and_exp(payload, clock_skew_in_seconds=0): - """Verifies the ``iat`` (Issued At) and ``exp`` (Expires) claims in a token - payload. - - Args: - payload (Mapping[str, str]): The JWT payload. - clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` - validation. - - Raises: - google.auth.exceptions.InvalidValue: if value validation failed. - google.auth.exceptions.MalformedError: if schema validation failed. - """ - now = _helpers.datetime_to_secs(_helpers.utcnow()) - - # Make sure the iat and exp claims are present. - for key in ("iat", "exp"): - if key not in payload: - raise exceptions.MalformedError( - "Token does not contain required claim {}".format(key) - ) - - # Make sure the token wasn't issued in the future. - iat = payload["iat"] - # Err on the side of accepting a token that is slightly early to account - # for clock skew. - earliest = iat - clock_skew_in_seconds - if now < earliest: - raise exceptions.InvalidValue( - "Token used too early, {} < {}. Check that your computer's clock is set correctly.".format( - now, iat - ) - ) - - # Make sure the token wasn't issued in the past. - exp = payload["exp"] - # Err on the side of accepting a token that is slightly out of date - # to account for clow skew. - latest = exp + clock_skew_in_seconds - if latest < now: - raise exceptions.InvalidValue("Token expired, {} < {}".format(latest, now)) - - -def decode(token, certs=None, verify=True, audience=None, clock_skew_in_seconds=0): - """Decode and verify a JWT. - - Args: - token (str): The encoded JWT. - certs (Union[str, bytes, Mapping[str, Union[str, bytes]]]): The - certificate used to validate the JWT signature. If bytes or string, - it must the the public key certificate in PEM format. If a mapping, - it must be a mapping of key IDs to public key certificates in PEM - format. The mapping must contain the same key ID that's specified - in the token's header. - verify (bool): Whether to perform signature and claim validation. - Verification is done by default. - audience (str or list): The audience claim, 'aud', that this JWT should - contain. Or a list of audience claims. If None then the JWT's 'aud' - parameter is not verified. - clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` - validation. - - Returns: - Mapping[str, str]: The deserialized JSON payload in the JWT. - - Raises: - google.auth.exceptions.InvalidValue: if value validation failed. - google.auth.exceptions.MalformedError: if schema validation failed. - """ - header, payload, signed_section, signature = _unverified_decode(token) - - if not verify: - return payload - - # Pluck the key id and algorithm from the header and make sure we have - # a verifier that can support it. - key_alg = header.get("alg") - key_id = header.get("kid") - - try: - verifier_cls = _ALGORITHM_TO_VERIFIER_CLASS[key_alg] - except KeyError as exc: - if key_alg in _CRYPTOGRAPHY_BASED_ALGORITHMS: - raise exceptions.InvalidValue( - "The key algorithm {} requires the cryptography package to be installed.".format( - key_alg - ) - ) from exc - else: - raise exceptions.InvalidValue( - "Unsupported signature algorithm {}".format(key_alg) - ) from exc - # If certs is specified as a dictionary of key IDs to certificates, then - # use the certificate identified by the key ID in the token header. - if isinstance(certs, Mapping): - if key_id: - if key_id not in certs: - raise exceptions.MalformedError( - "Certificate for key id {} not found.".format(key_id) - ) - certs_to_check = [certs[key_id]] - # If there's no key id in the header, check against all of the certs. - else: - certs_to_check = certs.values() - else: - certs_to_check = certs - - # Verify that the signature matches the message. - if not crypt.verify_signature( - signed_section, signature, certs_to_check, verifier_cls - ): - raise exceptions.MalformedError("Could not verify token signature.") - - # Verify the issued at and created times in the payload. - _verify_iat_and_exp(payload, clock_skew_in_seconds) - - # Check audience. - if audience is not None: - claim_audience = payload.get("aud") - if isinstance(audience, str): - audience = [audience] - if claim_audience not in audience: - raise exceptions.InvalidValue( - "Token has wrong audience {}, expected one of {}".format( - claim_audience, audience - ) - ) - - return payload - - -class Credentials( - google.auth.credentials.Signing, google.auth.credentials.CredentialsWithQuotaProject -): - """Credentials that use a JWT as the bearer token. - - These credentials require an "audience" claim. This claim identifies the - intended recipient of the bearer token. - - The constructor arguments determine the claims for the JWT that is - sent with requests. Usually, you'll construct these credentials with - one of the helper constructors as shown in the next section. - - To create JWT credentials using a Google service account private key - JSON file:: - - audience = 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher' - credentials = jwt.Credentials.from_service_account_file( - 'service-account.json', - audience=audience) - - If you already have the service account file loaded and parsed:: - - service_account_info = json.load(open('service_account.json')) - credentials = jwt.Credentials.from_service_account_info( - service_account_info, - audience=audience) - - Both helper methods pass on arguments to the constructor, so you can - specify the JWT claims:: - - credentials = jwt.Credentials.from_service_account_file( - 'service-account.json', - audience=audience, - additional_claims={'meta': 'data'}) - - You can also construct the credentials directly if you have a - :class:`~google.auth.crypt.Signer` instance:: - - credentials = jwt.Credentials( - signer, - issuer='your-issuer', - subject='your-subject', - audience=audience) - - The claims are considered immutable. If you want to modify the claims, - you can easily create another instance using :meth:`with_claims`:: - - new_audience = ( - 'https://pubsub.googleapis.com/google.pubsub.v1.Subscriber') - new_credentials = credentials.with_claims(audience=new_audience) - """ - - def __init__( - self, - signer, - issuer, - subject, - audience, - additional_claims=None, - token_lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, - quota_project_id=None, - ): - """ - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - issuer (str): The `iss` claim. - subject (str): The `sub` claim. - audience (str): the `aud` claim. The intended audience for the - credentials. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT payload. - token_lifetime (int): The amount of time in seconds for - which the token is valid. Defaults to 1 hour. - quota_project_id (Optional[str]): The project ID used for quota - and billing. - """ - super(Credentials, self).__init__() - self._signer = signer - self._issuer = issuer - self._subject = subject - self._audience = audience - self._token_lifetime = token_lifetime - self._quota_project_id = quota_project_id - - if additional_claims is None: - additional_claims = {} - - self._additional_claims = additional_claims - - @classmethod - def _from_signer_and_info(cls, signer, info, **kwargs): - """Creates a Credentials instance from a signer and service account - info. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - info (Mapping[str, str]): The service account info. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: The constructed credentials. - - Raises: - google.auth.exceptions.MalformedError: If the info is not in the expected format. - """ - kwargs.setdefault("subject", info["client_email"]) - kwargs.setdefault("issuer", info["client_email"]) - return cls(signer, **kwargs) - - @classmethod - def from_service_account_info(cls, info, **kwargs): - """Creates an Credentials instance from a dictionary. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: The constructed credentials. - - Raises: - google.auth.exceptions.MalformedError: If the info is not in the expected format. - """ - signer = _service_account_info.from_dict(info, require=["client_email"]) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_service_account_file(cls, filename, **kwargs): - """Creates a Credentials instance from a service account .json file - in Google format. - - Args: - filename (str): The path to the service account .json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: The constructed credentials. - """ - info, signer = _service_account_info.from_filename( - filename, require=["client_email"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_signing_credentials(cls, credentials, audience, **kwargs): - """Creates a new :class:`google.auth.jwt.Credentials` instance from an - existing :class:`google.auth.credentials.Signing` instance. - - The new instance will use the same signer as the existing instance and - will use the existing instance's signer email as the issuer and - subject by default. - - Example:: - - svc_creds = service_account.Credentials.from_service_account_file( - 'service_account.json') - audience = ( - 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher') - jwt_creds = jwt.Credentials.from_signing_credentials( - svc_creds, audience=audience) - - Args: - credentials (google.auth.credentials.Signing): The credentials to - use to construct the new credentials. - audience (str): the `aud` claim. The intended audience for the - credentials. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: A new Credentials instance. - """ - kwargs.setdefault("issuer", credentials.signer_email) - kwargs.setdefault("subject", credentials.signer_email) - return cls(credentials.signer, audience=audience, **kwargs) - - def with_claims( - self, issuer=None, subject=None, audience=None, additional_claims=None - ): - """Returns a copy of these credentials with modified claims. - - Args: - issuer (str): The `iss` claim. If unspecified the current issuer - claim will be used. - subject (str): The `sub` claim. If unspecified the current subject - claim will be used. - audience (str): the `aud` claim. If unspecified the current - audience claim will be used. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT payload. This will be merged with the current - additional claims. - - Returns: - google.auth.jwt.Credentials: A new credentials instance. - """ - new_additional_claims = copy.deepcopy(self._additional_claims) - new_additional_claims.update(additional_claims or {}) - - return self.__class__( - self._signer, - issuer=issuer if issuer is not None else self._issuer, - subject=subject if subject is not None else self._subject, - audience=audience if audience is not None else self._audience, - additional_claims=new_additional_claims, - quota_project_id=self._quota_project_id, - ) - - @_helpers.copy_docstring(google.auth.credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__( - self._signer, - issuer=self._issuer, - subject=self._subject, - audience=self._audience, - additional_claims=self._additional_claims, - quota_project_id=quota_project_id, - ) - - def _make_jwt(self): - """Make a signed JWT. - - Returns: - Tuple[bytes, datetime]: The encoded JWT and the expiration. - """ - now = _helpers.utcnow() - lifetime = datetime.timedelta(seconds=self._token_lifetime) - expiry = now + lifetime - - payload = { - "iss": self._issuer, - "sub": self._subject, - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - } - if self._audience: - payload["aud"] = self._audience - - payload.update(self._additional_claims) - - jwt = encode(self._signer, payload) - - return jwt, expiry - - def refresh(self, request): - """Refreshes the access token. - - Args: - request (Any): Unused. - """ - # pylint: disable=unused-argument - # (pylint doesn't correctly recognize overridden methods.) - self.token, self.expiry = self._make_jwt() - - @_helpers.copy_docstring(google.auth.credentials.Signing) - def sign_bytes(self, message): - return self._signer.sign(message) - - @property # type: ignore - @_helpers.copy_docstring(google.auth.credentials.Signing) - def signer_email(self): - return self._issuer - - @property # type: ignore - @_helpers.copy_docstring(google.auth.credentials.Signing) - def signer(self): - return self._signer - - @property # type: ignore - def additional_claims(self): - """ Additional claims the JWT object was created with.""" - return self._additional_claims - - -class OnDemandCredentials( - google.auth.credentials.Signing, google.auth.credentials.CredentialsWithQuotaProject -): - """On-demand JWT credentials. - - Like :class:`Credentials`, this class uses a JWT as the bearer token for - authentication. However, this class does not require the audience at - construction time. Instead, it will generate a new token on-demand for - each request using the request URI as the audience. It caches tokens - so that multiple requests to the same URI do not incur the overhead - of generating a new token every time. - - This behavior is especially useful for `gRPC`_ clients. A gRPC service may - have multiple audience and gRPC clients may not know all of the audiences - required for accessing a particular service. With these credentials, - no knowledge of the audiences is required ahead of time. - - .. _grpc: http://www.grpc.io/ - """ - - def __init__( - self, - signer, - issuer, - subject, - additional_claims=None, - token_lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, - max_cache_size=_DEFAULT_MAX_CACHE_SIZE, - quota_project_id=None, - ): - """ - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - issuer (str): The `iss` claim. - subject (str): The `sub` claim. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT payload. - token_lifetime (int): The amount of time in seconds for - which the token is valid. Defaults to 1 hour. - max_cache_size (int): The maximum number of JWT tokens to keep in - cache. Tokens are cached using :class:`cachetools.LRUCache`. - quota_project_id (Optional[str]): The project ID used for quota - and billing. - - """ - super(OnDemandCredentials, self).__init__() - self._signer = signer - self._issuer = issuer - self._subject = subject - self._token_lifetime = token_lifetime - self._quota_project_id = quota_project_id - - if additional_claims is None: - additional_claims = {} - - self._additional_claims = additional_claims - self._cache = cachetools.LRUCache(maxsize=max_cache_size) - - @classmethod - def _from_signer_and_info(cls, signer, info, **kwargs): - """Creates an OnDemandCredentials instance from a signer and service - account info. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - info (Mapping[str, str]): The service account info. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.OnDemandCredentials: The constructed credentials. - - Raises: - google.auth.exceptions.MalformedError: If the info is not in the expected format. - """ - kwargs.setdefault("subject", info["client_email"]) - kwargs.setdefault("issuer", info["client_email"]) - return cls(signer, **kwargs) - - @classmethod - def from_service_account_info(cls, info, **kwargs): - """Creates an OnDemandCredentials instance from a dictionary. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.OnDemandCredentials: The constructed credentials. - - Raises: - google.auth.exceptions.MalformedError: If the info is not in the expected format. - """ - signer = _service_account_info.from_dict(info, require=["client_email"]) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_service_account_file(cls, filename, **kwargs): - """Creates an OnDemandCredentials instance from a service account .json - file in Google format. - - Args: - filename (str): The path to the service account .json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.OnDemandCredentials: The constructed credentials. - """ - info, signer = _service_account_info.from_filename( - filename, require=["client_email"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_signing_credentials(cls, credentials, **kwargs): - """Creates a new :class:`google.auth.jwt.OnDemandCredentials` instance - from an existing :class:`google.auth.credentials.Signing` instance. - - The new instance will use the same signer as the existing instance and - will use the existing instance's signer email as the issuer and - subject by default. - - Example:: - - svc_creds = service_account.Credentials.from_service_account_file( - 'service_account.json') - jwt_creds = jwt.OnDemandCredentials.from_signing_credentials( - svc_creds) - - Args: - credentials (google.auth.credentials.Signing): The credentials to - use to construct the new credentials. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: A new Credentials instance. - """ - kwargs.setdefault("issuer", credentials.signer_email) - kwargs.setdefault("subject", credentials.signer_email) - return cls(credentials.signer, **kwargs) - - def with_claims(self, issuer=None, subject=None, additional_claims=None): - """Returns a copy of these credentials with modified claims. - - Args: - issuer (str): The `iss` claim. If unspecified the current issuer - claim will be used. - subject (str): The `sub` claim. If unspecified the current subject - claim will be used. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT payload. This will be merged with the current - additional claims. - - Returns: - google.auth.jwt.OnDemandCredentials: A new credentials instance. - """ - new_additional_claims = copy.deepcopy(self._additional_claims) - new_additional_claims.update(additional_claims or {}) - - return self.__class__( - self._signer, - issuer=issuer if issuer is not None else self._issuer, - subject=subject if subject is not None else self._subject, - additional_claims=new_additional_claims, - max_cache_size=self._cache.maxsize, - quota_project_id=self._quota_project_id, - ) - - @_helpers.copy_docstring(google.auth.credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - - return self.__class__( - self._signer, - issuer=self._issuer, - subject=self._subject, - additional_claims=self._additional_claims, - max_cache_size=self._cache.maxsize, - quota_project_id=quota_project_id, - ) - - @property - def valid(self): - """Checks the validity of the credentials. - - These credentials are always valid because it generates tokens on - demand. - """ - return True - - def _make_jwt_for_audience(self, audience): - """Make a new JWT for the given audience. - - Args: - audience (str): The intended audience. - - Returns: - Tuple[bytes, datetime]: The encoded JWT and the expiration. - """ - now = _helpers.utcnow() - lifetime = datetime.timedelta(seconds=self._token_lifetime) - expiry = now + lifetime - - payload = { - "iss": self._issuer, - "sub": self._subject, - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - "aud": audience, - } - - payload.update(self._additional_claims) - - jwt = encode(self._signer, payload) - - return jwt, expiry - - def _get_jwt_for_audience(self, audience): - """Get a JWT For a given audience. - - If there is already an existing, non-expired token in the cache for - the audience, that token is used. Otherwise, a new token will be - created. - - Args: - audience (str): The intended audience. - - Returns: - bytes: The encoded JWT. - """ - token, expiry = self._cache.get(audience, (None, None)) - - if token is None or expiry < _helpers.utcnow(): - token, expiry = self._make_jwt_for_audience(audience) - self._cache[audience] = token, expiry - - return token - - def refresh(self, request): - """Raises an exception, these credentials can not be directly - refreshed. - - Args: - request (Any): Unused. - - Raises: - google.auth.RefreshError - """ - # pylint: disable=unused-argument - # (pylint doesn't correctly recognize overridden methods.) - raise exceptions.RefreshError( - "OnDemandCredentials can not be directly refreshed." - ) - - def before_request(self, request, method, url, headers): - """Performs credential-specific before request logic. - - Args: - request (Any): Unused. JWT credentials do not need to make an - HTTP request to refresh. - method (str): The request's HTTP method. - url (str): The request's URI. This is used as the audience claim - when generating the JWT. - headers (Mapping): The request's headers. - """ - # pylint: disable=unused-argument - # (pylint doesn't correctly recognize overridden methods.) - parts = urllib.parse.urlsplit(url) - # Strip query string and fragment - audience = urllib.parse.urlunsplit( - (parts.scheme, parts.netloc, parts.path, "", "") - ) - token = self._get_jwt_for_audience(audience) - self.apply(headers, token=token) - - @_helpers.copy_docstring(google.auth.credentials.Signing) - def sign_bytes(self, message): - return self._signer.sign(message) - - @property # type: ignore - @_helpers.copy_docstring(google.auth.credentials.Signing) - def signer_email(self): - return self._issuer - - @property # type: ignore - @_helpers.copy_docstring(google.auth.credentials.Signing) - def signer(self): - return self._signer diff --git a/venv/lib/python3.10/site-packages/google/auth/metrics.py b/venv/lib/python3.10/site-packages/google/auth/metrics.py deleted file mode 100644 index 11e4b07..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/metrics.py +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright 2023 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" We use x-goog-api-client header to report metrics. This module provides -the constants and helper methods to construct x-goog-api-client header. -""" - -import platform - -from google.auth import version - - -API_CLIENT_HEADER = "x-goog-api-client" - -# BYOID Specific consts -BYOID_HEADER_SECTION = "google-byoid-sdk" - -# Auth request type -REQUEST_TYPE_ACCESS_TOKEN = "auth-request-type/at" -REQUEST_TYPE_ID_TOKEN = "auth-request-type/it" -REQUEST_TYPE_MDS_PING = "auth-request-type/mds" -REQUEST_TYPE_REAUTH_START = "auth-request-type/re-start" -REQUEST_TYPE_REAUTH_CONTINUE = "auth-request-type/re-cont" - -# Credential type -CRED_TYPE_USER = "cred-type/u" -CRED_TYPE_SA_ASSERTION = "cred-type/sa" -CRED_TYPE_SA_JWT = "cred-type/jwt" -CRED_TYPE_SA_MDS = "cred-type/mds" -CRED_TYPE_SA_IMPERSONATE = "cred-type/imp" - - -# Versions -def python_and_auth_lib_version(): - return "gl-python/{} auth/{}".format(platform.python_version(), version.__version__) - - -# Token request metric header values - -# x-goog-api-client header value for access token request via metadata server. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/mds" -def token_request_access_token_mds(): - return "{} {} {}".format( - python_and_auth_lib_version(), REQUEST_TYPE_ACCESS_TOKEN, CRED_TYPE_SA_MDS - ) - - -# x-goog-api-client header value for ID token request via metadata server. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/mds" -def token_request_id_token_mds(): - return "{} {} {}".format( - python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_MDS - ) - - -# x-goog-api-client header value for impersonated credentials access token request. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/imp" -def token_request_access_token_impersonate(): - return "{} {} {}".format( - python_and_auth_lib_version(), - REQUEST_TYPE_ACCESS_TOKEN, - CRED_TYPE_SA_IMPERSONATE, - ) - - -# x-goog-api-client header value for impersonated credentials ID token request. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/imp" -def token_request_id_token_impersonate(): - return "{} {} {}".format( - python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_IMPERSONATE - ) - - -# x-goog-api-client header value for service account credentials access token -# request (assertion flow). -# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/sa" -def token_request_access_token_sa_assertion(): - return "{} {} {}".format( - python_and_auth_lib_version(), REQUEST_TYPE_ACCESS_TOKEN, CRED_TYPE_SA_ASSERTION - ) - - -# x-goog-api-client header value for service account credentials ID token -# request (assertion flow). -# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/sa" -def token_request_id_token_sa_assertion(): - return "{} {} {}".format( - python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_ASSERTION - ) - - -# x-goog-api-client header value for user credentials token request. -# Example: "gl-python/3.7 auth/1.1 cred-type/u" -def token_request_user(): - return "{} {}".format(python_and_auth_lib_version(), CRED_TYPE_USER) - - -# Miscellenous metrics - -# x-goog-api-client header value for metadata server ping. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/mds" -def mds_ping(): - return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_MDS_PING) - - -# x-goog-api-client header value for reauth start endpoint calls. -# Example: "gl-python/3.7 auth/1.1 auth-request-type/re-start" -def reauth_start(): - return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_REAUTH_START) - - -# x-goog-api-client header value for reauth continue endpoint calls. -# Example: "gl-python/3.7 auth/1.1 cred-type/re-cont" -def reauth_continue(): - return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_REAUTH_CONTINUE) - - -# x-goog-api-client header value for BYOID calls to the Security Token Service exchange token endpoint. -# Example: "gl-python/3.7 auth/1.1 google-byoid-sdk source/aws sa-impersonation/true sa-impersonation/true" -def byoid_metrics_header(metrics_options): - header = "{} {}".format(python_and_auth_lib_version(), BYOID_HEADER_SECTION) - for key, value in metrics_options.items(): - header = "{} {}/{}".format(header, key, value) - return header - - -def add_metric_header(headers, metric_header_value): - """Add x-goog-api-client header with the given value. - - Args: - headers (Mapping[str, str]): The headers to which we will add the - metric header. - metric_header_value (Optional[str]): If value is None, do nothing; - if headers already has a x-goog-api-client header, append the value - to the existing header; otherwise add a new x-goog-api-client - header with the given value. - """ - if not metric_header_value: - return - if API_CLIENT_HEADER not in headers: - headers[API_CLIENT_HEADER] = metric_header_value - else: - headers[API_CLIENT_HEADER] += " " + metric_header_value diff --git a/venv/lib/python3.10/site-packages/google/auth/pluggable.py b/venv/lib/python3.10/site-packages/google/auth/pluggable.py deleted file mode 100644 index 53b4eac..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/pluggable.py +++ /dev/null @@ -1,429 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Pluggable Credentials. -Pluggable Credentials are initialized using external_account arguments which -are typically loaded from third-party executables. Unlike other -credentials that can be initialized with a list of explicit arguments, secrets -or credentials, external account clients use the environment and hints/guidelines -provided by the external_account JSON file to retrieve credentials and exchange -them for Google access tokens. - -Example credential_source for pluggable credential: -{ - "executable": { - "command": "/path/to/get/credentials.sh --arg1=value1 --arg2=value2", - "timeout_millis": 5000, - "output_file": "/path/to/generated/cached/credentials" - } -} -""" - -try: - from collections.abc import Mapping -# Python 2.7 compatibility -except ImportError: # pragma: NO COVER - from collections import Mapping -import json -import os -import subprocess -import sys -import time - -from google.auth import _helpers -from google.auth import exceptions -from google.auth import external_account - -# The max supported executable spec version. -EXECUTABLE_SUPPORTED_MAX_VERSION = 1 - -EXECUTABLE_TIMEOUT_MILLIS_DEFAULT = 30 * 1000 # 30 seconds -EXECUTABLE_TIMEOUT_MILLIS_LOWER_BOUND = 5 * 1000 # 5 seconds -EXECUTABLE_TIMEOUT_MILLIS_UPPER_BOUND = 120 * 1000 # 2 minutes - -EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_LOWER_BOUND = 30 * 1000 # 30 seconds -EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_UPPER_BOUND = 30 * 60 * 1000 # 30 minutes - - -class Credentials(external_account.Credentials): - """External account credentials sourced from executables.""" - - def __init__( - self, - audience, - subject_token_type, - token_url, - credential_source, - *args, - **kwargs - ): - """Instantiates an external account credentials object from a executables. - - Args: - audience (str): The STS audience field. - subject_token_type (str): The subject token type. - token_url (str): The STS endpoint URL. - credential_source (Mapping): The credential source dictionary used to - provide instructions on how to retrieve external credential to be - exchanged for Google access tokens. - - Example credential_source for pluggable credential: - - { - "executable": { - "command": "/path/to/get/credentials.sh --arg1=value1 --arg2=value2", - "timeout_millis": 5000, - "output_file": "/path/to/generated/cached/credentials" - } - } - args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. - - Raises: - google.auth.exceptions.RefreshError: If an error is encountered during - access token retrieval logic. - google.auth.exceptions.InvalidValue: For invalid parameters. - google.auth.exceptions.MalformedError: For invalid parameters. - - .. note:: Typically one of the helper constructors - :meth:`from_file` or - :meth:`from_info` are used instead of calling the constructor directly. - """ - - self.interactive = kwargs.pop("interactive", False) - super(Credentials, self).__init__( - audience=audience, - subject_token_type=subject_token_type, - token_url=token_url, - credential_source=credential_source, - *args, - **kwargs - ) - if not isinstance(credential_source, Mapping): - self._credential_source_executable = None - raise exceptions.MalformedError( - "Missing credential_source. The credential_source is not a dict." - ) - self._credential_source_executable = credential_source.get("executable") - if not self._credential_source_executable: - raise exceptions.MalformedError( - "Missing credential_source. An 'executable' must be provided." - ) - self._credential_source_executable_command = self._credential_source_executable.get( - "command" - ) - self._credential_source_executable_timeout_millis = self._credential_source_executable.get( - "timeout_millis" - ) - self._credential_source_executable_interactive_timeout_millis = self._credential_source_executable.get( - "interactive_timeout_millis" - ) - self._credential_source_executable_output_file = self._credential_source_executable.get( - "output_file" - ) - - # Dummy value. This variable is only used via injection, not exposed to ctor - self._tokeninfo_username = "" - - if not self._credential_source_executable_command: - raise exceptions.MalformedError( - "Missing command field. Executable command must be provided." - ) - if not self._credential_source_executable_timeout_millis: - self._credential_source_executable_timeout_millis = ( - EXECUTABLE_TIMEOUT_MILLIS_DEFAULT - ) - elif ( - self._credential_source_executable_timeout_millis - < EXECUTABLE_TIMEOUT_MILLIS_LOWER_BOUND - or self._credential_source_executable_timeout_millis - > EXECUTABLE_TIMEOUT_MILLIS_UPPER_BOUND - ): - raise exceptions.InvalidValue("Timeout must be between 5 and 120 seconds.") - - if self._credential_source_executable_interactive_timeout_millis: - if ( - self._credential_source_executable_interactive_timeout_millis - < EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_LOWER_BOUND - or self._credential_source_executable_interactive_timeout_millis - > EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_UPPER_BOUND - ): - raise exceptions.InvalidValue( - "Interactive timeout must be between 30 seconds and 30 minutes." - ) - - @_helpers.copy_docstring(external_account.Credentials) - def retrieve_subject_token(self, request): - self._validate_running_mode() - - # Check output file. - if self._credential_source_executable_output_file is not None: - try: - with open( - self._credential_source_executable_output_file, encoding="utf-8" - ) as output_file: - response = json.load(output_file) - except Exception: - pass - else: - try: - # If the cached response is expired, _parse_subject_token will raise an error which will be ignored and we will call the executable again. - subject_token = self._parse_subject_token(response) - if ( - "expiration_time" not in response - ): # Always treat missing expiration_time as expired and proceed to executable run. - raise exceptions.RefreshError - except (exceptions.MalformedError, exceptions.InvalidValue): - raise - except exceptions.RefreshError: - pass - else: - return subject_token - - if not _helpers.is_python_3(): - raise exceptions.RefreshError( - "Pluggable auth is only supported for python 3.7+" - ) - - # Inject env vars. - env = os.environ.copy() - self._inject_env_variables(env) - env["GOOGLE_EXTERNAL_ACCOUNT_REVOKE"] = "0" - - # Run executable. - exe_timeout = ( - self._credential_source_executable_interactive_timeout_millis / 1000 - if self.interactive - else self._credential_source_executable_timeout_millis / 1000 - ) - exe_stdin = sys.stdin if self.interactive else None - exe_stdout = sys.stdout if self.interactive else subprocess.PIPE - exe_stderr = sys.stdout if self.interactive else subprocess.STDOUT - - result = subprocess.run( - self._credential_source_executable_command.split(), - timeout=exe_timeout, - stdin=exe_stdin, - stdout=exe_stdout, - stderr=exe_stderr, - env=env, - ) - if result.returncode != 0: - raise exceptions.RefreshError( - "Executable exited with non-zero return code {}. Error: {}".format( - result.returncode, result.stdout - ) - ) - - # Handle executable output. - response = json.loads(result.stdout.decode("utf-8")) if result.stdout else None - if not response and self._credential_source_executable_output_file is not None: - response = json.load( - open(self._credential_source_executable_output_file, encoding="utf-8") - ) - - subject_token = self._parse_subject_token(response) - return subject_token - - def revoke(self, request): - """Revokes the subject token using the credential_source object. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - Raises: - google.auth.exceptions.RefreshError: If the executable revocation - not properly executed. - - """ - if not self.interactive: - raise exceptions.InvalidValue( - "Revoke is only enabled under interactive mode." - ) - self._validate_running_mode() - - if not _helpers.is_python_3(): - raise exceptions.RefreshError( - "Pluggable auth is only supported for python 3.7+" - ) - - # Inject variables - env = os.environ.copy() - self._inject_env_variables(env) - env["GOOGLE_EXTERNAL_ACCOUNT_REVOKE"] = "1" - - # Run executable - result = subprocess.run( - self._credential_source_executable_command.split(), - timeout=self._credential_source_executable_interactive_timeout_millis - / 1000, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - env=env, - ) - - if result.returncode != 0: - raise exceptions.RefreshError( - "Auth revoke failed on executable. Exit with non-zero return code {}. Error: {}".format( - result.returncode, result.stdout - ) - ) - - response = json.loads(result.stdout.decode("utf-8")) - self._validate_revoke_response(response) - - @property - def external_account_id(self): - """Returns the external account identifier. - - When service account impersonation is used the identifier is the service - account email. - - Without service account impersonation, this returns None, unless it is - being used by the Google Cloud CLI which populates this field. - """ - - return self.service_account_email or self._tokeninfo_username - - @classmethod - def from_info(cls, info, **kwargs): - """Creates a Pluggable Credentials instance from parsed external account info. - - Args: - info (Mapping[str, str]): The Pluggable external account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.pluggable.Credentials: The constructed - credentials. - - Raises: - google.auth.exceptions.InvalidValue: For invalid parameters. - google.auth.exceptions.MalformedError: For invalid parameters. - """ - return super(Credentials, cls).from_info(info, **kwargs) - - @classmethod - def from_file(cls, filename, **kwargs): - """Creates an Pluggable Credentials instance from an external account json file. - - Args: - filename (str): The path to the Pluggable external account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.pluggable.Credentials: The constructed - credentials. - """ - return super(Credentials, cls).from_file(filename, **kwargs) - - def _inject_env_variables(self, env): - env["GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE"] = self._audience - env["GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE"] = self._subject_token_type - env["GOOGLE_EXTERNAL_ACCOUNT_ID"] = self.external_account_id - env["GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE"] = "1" if self.interactive else "0" - - if self._service_account_impersonation_url is not None: - env[ - "GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL" - ] = self.service_account_email - if self._credential_source_executable_output_file is not None: - env[ - "GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE" - ] = self._credential_source_executable_output_file - - def _parse_subject_token(self, response): - self._validate_response_schema(response) - if not response["success"]: - if "code" not in response or "message" not in response: - raise exceptions.MalformedError( - "Error code and message fields are required in the response." - ) - raise exceptions.RefreshError( - "Executable returned unsuccessful response: code: {}, message: {}.".format( - response["code"], response["message"] - ) - ) - if "expiration_time" in response and response["expiration_time"] < time.time(): - raise exceptions.RefreshError( - "The token returned by the executable is expired." - ) - if "token_type" not in response: - raise exceptions.MalformedError( - "The executable response is missing the token_type field." - ) - if ( - response["token_type"] == "urn:ietf:params:oauth:token-type:jwt" - or response["token_type"] == "urn:ietf:params:oauth:token-type:id_token" - ): # OIDC - return response["id_token"] - elif response["token_type"] == "urn:ietf:params:oauth:token-type:saml2": # SAML - return response["saml_response"] - else: - raise exceptions.RefreshError("Executable returned unsupported token type.") - - def _validate_revoke_response(self, response): - self._validate_response_schema(response) - if not response["success"]: - raise exceptions.RefreshError("Revoke failed with unsuccessful response.") - - def _validate_response_schema(self, response): - if "version" not in response: - raise exceptions.MalformedError( - "The executable response is missing the version field." - ) - if response["version"] > EXECUTABLE_SUPPORTED_MAX_VERSION: - raise exceptions.RefreshError( - "Executable returned unsupported version {}.".format( - response["version"] - ) - ) - - if "success" not in response: - raise exceptions.MalformedError( - "The executable response is missing the success field." - ) - - def _validate_running_mode(self): - env_allow_executables = os.environ.get( - "GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES" - ) - if env_allow_executables != "1": - raise exceptions.MalformedError( - "Executables need to be explicitly allowed (set GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES to '1') to run." - ) - - if self.interactive and not self._credential_source_executable_output_file: - raise exceptions.MalformedError( - "An output_file must be specified in the credential configuration for interactive mode." - ) - - if ( - self.interactive - and not self._credential_source_executable_interactive_timeout_millis - ): - raise exceptions.InvalidOperation( - "Interactive mode cannot run without an interactive timeout." - ) - - if self.interactive and not self.is_workforce_pool: - raise exceptions.InvalidValue( - "Interactive mode is only enabled for workforce pool." - ) - - def _create_default_metrics_options(self): - metrics_options = super(Credentials, self)._create_default_metrics_options() - metrics_options["source"] = "executable" - return metrics_options diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__init__.py b/venv/lib/python3.10/site-packages/google/auth/transport/__init__.py deleted file mode 100644 index 724568e..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/__init__.py +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Transport - HTTP client library support. - -:mod:`google.auth` is designed to work with various HTTP client libraries such -as urllib3 and requests. In order to work across these libraries with different -interfaces some abstraction is needed. - -This module provides two interfaces that are implemented by transport adapters -to support HTTP libraries. :class:`Request` defines the interface expected by -:mod:`google.auth` to make requests. :class:`Response` defines the interface -for the return value of :class:`Request`. -""" - -import abc -import http.client as http_client - -DEFAULT_RETRYABLE_STATUS_CODES = ( - http_client.INTERNAL_SERVER_ERROR, - http_client.SERVICE_UNAVAILABLE, - http_client.REQUEST_TIMEOUT, - http_client.TOO_MANY_REQUESTS, -) -"""Sequence[int]: HTTP status codes indicating a request can be retried. -""" - - -DEFAULT_REFRESH_STATUS_CODES = (http_client.UNAUTHORIZED,) -"""Sequence[int]: Which HTTP status code indicate that credentials should be -refreshed. -""" - -DEFAULT_MAX_REFRESH_ATTEMPTS = 2 -"""int: How many times to refresh the credentials and retry a request.""" - - -class Response(metaclass=abc.ABCMeta): - """HTTP Response data.""" - - @abc.abstractproperty - def status(self): - """int: The HTTP status code.""" - raise NotImplementedError("status must be implemented.") - - @abc.abstractproperty - def headers(self): - """Mapping[str, str]: The HTTP response headers.""" - raise NotImplementedError("headers must be implemented.") - - @abc.abstractproperty - def data(self): - """bytes: The response body.""" - raise NotImplementedError("data must be implemented.") - - -class Request(metaclass=abc.ABCMeta): - """Interface for a callable that makes HTTP requests. - - Specific transport implementations should provide an implementation of - this that adapts their specific request / response API. - - .. automethod:: __call__ - """ - - @abc.abstractmethod - def __call__( - self, url, method="GET", body=None, headers=None, timeout=None, **kwargs - ): - """Make an HTTP request. - - Args: - url (str): The URI to be requested. - method (str): The HTTP method to use for the request. Defaults - to 'GET'. - body (bytes): The payload / body in HTTP request. - headers (Mapping[str, str]): Request headers. - timeout (Optional[int]): The number of seconds to wait for a - response from the server. If not specified or if None, the - transport-specific default timeout will be used. - kwargs: Additionally arguments passed on to the transport's - request method. - - Returns: - Response: The HTTP response. - - Raises: - google.auth.exceptions.TransportError: If any exception occurred. - """ - # pylint: disable=redundant-returns-doc, missing-raises-doc - # (pylint doesn't play well with abstract docstrings.) - raise NotImplementedError("__call__ must be implemented.") diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 8eaeca8fbe74b8400aae996a17ba694d7eea535c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmb7GNpIUm6ehJ>@s_$<(xey^C}IOK)gV2zLJ>r8A*&Ol9?IW zk&aES{R906`AY

M7^miURF>Tx59(ic**-&i3~AJ^CvvRSlls^zQKMRZaT?CyP%J zCih{;mq3`-*O<<7uHM(<|J)?sFX$RCyez^f!6?J13=93GC0wlz_5PJ5jph5xOWGri z6?3k=klDnbP(&LnX8 z1lWUtgDC-qsk11f0mze8FgtZoVr=3!(9a-s+oe+054(wJhv2KB^zK6`yI`1JJG#g(R zpFB+N!;p0#T!XaK`Z=ce^N@T+mSg$1+8e!(iCIjN4`!I6MOI?vc(1}Lm~K&}%M*oX z8*!#(Q^KgChOGnt?7?@`W(UTf6(9<#;*I``zLlF@2iMh!35La7q@oHk&Gs2LW?!VU zNhlQ=oQa?DPLDP^zG|I@v?+uyV7VZS_u5ss^nsgN34yb)ZM_ksDI;mlu)aGeZvn}Wkh3_yi|3pEv2 zkpBu2!0kn^#Qs6o2&|4fFyuOridN7IxvE|$;8@k;-7P&@ns7y9Ft|`%7{~i~|0^Kp zt7|C_HH3f;soyWLJXBFRDyMKV`@J=X5Ug}cZ0fpn0I(Lr7lK9#z;kS^RtY>kz#C`i z*b8tr$2p342?#p&LziXv2mpPGgz*W0k(iZ2Fip@B0WpR)M-Z7wNF|dRfKXEVr17K$ zD2#d-27&T`VuKQ5^*XUEw7|0B%_#qh7~e|3%9_yTW5t}Es)K)N>aT7I(2=@z7p2@Wq_ zrH%wNJY)32mzBX^+dK}3G|cRqBkoppbR_kr@YRr>AiiyfLM(bDX}doV4}r{7nM^dN2SD<=X(O+Yf`Ok;3DJxbsgJ6lKk1`RzZ9Q`<+e)jVH}?wmf1eAqbHGhxN-KErEP&uo|nJ!@xwx7mx9f#HGq zc)#1~H+TCtPESAVHhYiHoITxbH+}|w$%%$(Hrr3kUQ}*8*l9yUiMvZ|`enX~DnBG$ k?;d_j$uEHvRx8WPdLa)@3V(m+N|izm8dXmJIRE*^zffP0bpQYW diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_aiohttp_requests.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_aiohttp_requests.cpython-310.pyc deleted file mode 100644 index 1696b596e441b2d1423ffec2e7b621889f30cdd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11833 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 diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_custom_tls_signer.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_custom_tls_signer.cpython-310.pyc deleted file mode 100644 index 695c83492bb60fb09600ff576334de10a8f1279e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5767 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 Q`BP5KS#m1Q3(L#@2AeaeR{#J2 diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_http_client.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_http_client.cpython-310.pyc deleted file mode 100644 index 0a74e364f3ad2ce694ee49b94c527c5992486931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3418 zcma(UO^@5gmBTMl)Q3OfuecwWv~{v79LYgjAl(>-xAAssbS)R_H3A4N7%n-|a+f0M znW0swQc&2wwwKjQ(7usJXboHekDUwdG~uMyYA&cG?om;l!Y zb)qrz#AS_BGHC8-p%vP%w9sbtqt;7f&;m>?bO7T3rVW^Os6Wv<_1Q1?xu1wE<&yfL zpGn5)Fy-`6%B&m25liIl0ud#!mH08u1*2&aPrLsDm9>6{D3|>)V3~~4M8K*pmka|u zu>KjaxDP|zg^6hc0v78b85p4+8n3j0$*j-}tykJhGOz)*!&(8?0CvK90Xv}!dN-7_ z$3W{uu-S_>UFk|V<<`_3laKV+2qlfoyo z^vQ~_Td)drFlhN9jFx^1L;Mt`IXTkinny5xuV8hepK1@lM!*@cGEZ^W3N^6H=m!KS zmLIagEAj+}xCv7PNB>a&y}lp|9Y{4G)&HhHgHXQK!1q?1P8jbPO7GrL#xa{J>$xB2 zj9WlkO#eCV9j0T}8|6{J(|}1C^^QLlJrQs}i;~fYSsIGobCx{s#nC}8o65s9`C0d) zJ3SFe_F?7+$Nq?k-Y88+G3)ucJnXG}-t*9lUg@H4HdXH3FbZUljK5- z>D;d8MM)$*uX{I613wn`x@Qy}TiHVTG8d}mRe(EU@{su<<3c&!5;8fUl;wrK^gFsT z1&fEuS;qFvc#e+|=qjN(mi8~1L&G`qMG zP;LEx5-xq01QY#wXT`p?VvqQKr;Z*?{4w)9<$B&Y4f7b`rsqA&{kYnxd0ve23@O>Bpz3XTuactdkiEiL%lVU%Bt#cnfo%=8Z zQm*Hkx&e6wvkZaEYQUSTsoEZUmNOw|@2_QnbE%}*US$$x>}>D%1H1#v595!@{uYM# zH%xO#*SW@PQad6GYYs^qR;@@|m{LD7PRuzuC5u`CTaf9v38bNip9<@!W?3&ORW8O1d_Er| zCg(BT5RzA!_vzk4DpPs@Ik;rU!ZPXNS^UP364G#;q!3=AffOqi)-=c*OCDYNfDQdT zmSR;3N@f&geE{M8;JlE7G@R0ngQ;Yq(kt_)aq5S(M~l7ayv^sSt9M8@9{Cw&Szu9J zIa+OlaN+kg0I`|;C#Wy8~iu0UCt&jnKsEJYSaQn>)-&_yC_X1+XB7QB2u zRnCz6BMdVzFVy5%1PAT&?ol>8&#^C60}ZPB2i3+foP|``36szzKr^uWcxPvOPgx;5 z$VaMHS*04#94s$;Q52LF#3?A+LQdPuCRJGsW726A)mj;#yRyq{!LdsztIiAF5;j3#t&S~w4rp&;&-)lC#Lr=JZrH>zOwu%L za+#RlxTZ;T;t=!ei4!LN;dIt9oE23H8^3@d9GI}ELMi=*Berv)AT5JY{U1QtWmCsLf&;1+ zr=t8R3+>SIA~c1h|D~96?v@?IJ?ymvb_-^^ R3C_U3rrsp3e%ZM8?zi+og6;qS diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_mtls_helper.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/_mtls_helper.cpython-310.pyc deleted file mode 100644 index 89f72792bf9feded89d0001e1f4934a43ed2e616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7364 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 Wzl*uz+0rHD7m8f^uJmU4C;tZYYJwsF diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/grpc.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/auth/transport/__pycache__/grpc.cpython-310.pyc deleted file mode 100644 index be53e09cc11dba55cb236c8c5706f672495f8201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12214 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�F8ewPa!ZBgO{SXBT73vUN|$`ZP6 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 Jqq_LY{{hdHj%NS> diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/_aiohttp_requests.py b/venv/lib/python3.10/site-packages/google/auth/transport/_aiohttp_requests.py deleted file mode 100644 index 3a8da91..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/_aiohttp_requests.py +++ /dev/null @@ -1,390 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Transport adapter for Async HTTP (aiohttp). - -NOTE: This async support is experimental and marked internal. This surface may -change in minor releases. -""" - -from __future__ import absolute_import - -import asyncio -import functools - -import aiohttp # type: ignore -import urllib3 # type: ignore - -from google.auth import exceptions -from google.auth import transport -from google.auth.transport import requests - -# Timeout can be re-defined depending on async requirement. Currently made 60s more than -# sync timeout. -_DEFAULT_TIMEOUT = 180 # in seconds - - -class _CombinedResponse(transport.Response): - """ - In order to more closely resemble the `requests` interface, where a raw - and deflated content could be accessed at once, this class lazily reads the - stream in `transport.Response` so both return forms can be used. - - The gzip and deflate transfer-encodings are automatically decoded for you - because the default parameter for autodecompress into the ClientSession is set - to False, and therefore we add this class to act as a wrapper for a user to be - able to access both the raw and decoded response bodies - mirroring the sync - implementation. - """ - - def __init__(self, response): - self._response = response - self._raw_content = None - - def _is_compressed(self): - headers = self._response.headers - return "Content-Encoding" in headers and ( - headers["Content-Encoding"] == "gzip" - or headers["Content-Encoding"] == "deflate" - ) - - @property - def status(self): - return self._response.status - - @property - def headers(self): - return self._response.headers - - @property - def data(self): - return self._response.content - - async def raw_content(self): - if self._raw_content is None: - self._raw_content = await self._response.content.read() - return self._raw_content - - async def content(self): - # Load raw_content if necessary - await self.raw_content() - if self._is_compressed(): - decoder = urllib3.response.MultiDecoder( - self._response.headers["Content-Encoding"] - ) - decompressed = decoder.decompress(self._raw_content) - return decompressed - - return self._raw_content - - -class _Response(transport.Response): - """ - Requests transport response adapter. - - Args: - response (requests.Response): The raw Requests response. - """ - - def __init__(self, response): - self._response = response - - @property - def status(self): - return self._response.status - - @property - def headers(self): - return self._response.headers - - @property - def data(self): - return self._response.content - - -class Request(transport.Request): - """Requests request adapter. - - This class is used internally for making requests using asyncio transports - in a consistent way. If you use :class:`AuthorizedSession` you do not need - to construct or use this class directly. - - This class can be useful if you want to manually refresh a - :class:`~google.auth.credentials.Credentials` instance:: - - import google.auth.transport.aiohttp_requests - - request = google.auth.transport.aiohttp_requests.Request() - - credentials.refresh(request) - - Args: - session (aiohttp.ClientSession): An instance :class:`aiohttp.ClientSession` used - to make HTTP requests. If not specified, a session will be created. - - .. automethod:: __call__ - """ - - def __init__(self, session=None): - # TODO: Use auto_decompress property for aiohttp 3.7+ - if session is not None and session._auto_decompress: - raise exceptions.InvalidOperation( - "Client sessions with auto_decompress=True are not supported." - ) - self.session = session - - async def __call__( - self, - url, - method="GET", - body=None, - headers=None, - timeout=_DEFAULT_TIMEOUT, - **kwargs, - ): - """ - Make an HTTP request using aiohttp. - - Args: - url (str): The URL to be requested. - method (Optional[str]): - The HTTP method to use for the request. Defaults to 'GET'. - body (Optional[bytes]): - The payload or body in HTTP request. - headers (Optional[Mapping[str, str]]): - Request headers. - timeout (Optional[int]): The number of seconds to wait for a - response from the server. If not specified or if None, the - requests default timeout will be used. - kwargs: Additional arguments passed through to the underlying - requests :meth:`requests.Session.request` method. - - Returns: - google.auth.transport.Response: The HTTP response. - - Raises: - google.auth.exceptions.TransportError: If any exception occurred. - """ - - try: - if self.session is None: # pragma: NO COVER - self.session = aiohttp.ClientSession( - auto_decompress=False - ) # pragma: NO COVER - requests._LOGGER.debug("Making request: %s %s", method, url) - response = await self.session.request( - method, url, data=body, headers=headers, timeout=timeout, **kwargs - ) - return _CombinedResponse(response) - - except aiohttp.ClientError as caught_exc: - new_exc = exceptions.TransportError(caught_exc) - raise new_exc from caught_exc - - except asyncio.TimeoutError as caught_exc: - new_exc = exceptions.TransportError(caught_exc) - raise new_exc from caught_exc - - -class AuthorizedSession(aiohttp.ClientSession): - """This is an async implementation of the Authorized Session class. We utilize an - aiohttp transport instance, and the interface mirrors the google.auth.transport.requests - Authorized Session class, except for the change in the transport used in the async use case. - - A Requests Session class with credentials. - - This class is used to perform requests to API endpoints that require - authorization:: - - from google.auth.transport import aiohttp_requests - - async with aiohttp_requests.AuthorizedSession(credentials) as authed_session: - response = await authed_session.request( - 'GET', 'https://www.googleapis.com/storage/v1/b') - - The underlying :meth:`request` implementation handles adding the - credentials' headers to the request and refreshing credentials as needed. - - Args: - credentials (google.auth._credentials_async.Credentials): - The credentials to add to the request. - refresh_status_codes (Sequence[int]): Which HTTP status codes indicate - that credentials should be refreshed and the request should be - retried. - max_refresh_attempts (int): The maximum number of times to attempt to - refresh the credentials and retry the request. - refresh_timeout (Optional[int]): The timeout value in seconds for - credential refresh HTTP requests. - auth_request (google.auth.transport.aiohttp_requests.Request): - (Optional) An instance of - :class:`~google.auth.transport.aiohttp_requests.Request` used when - refreshing credentials. If not passed, - an instance of :class:`~google.auth.transport.aiohttp_requests.Request` - is created. - kwargs: Additional arguments passed through to the underlying - ClientSession :meth:`aiohttp.ClientSession` object. - """ - - def __init__( - self, - credentials, - refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, - max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, - refresh_timeout=None, - auth_request=None, - auto_decompress=False, - **kwargs, - ): - super(AuthorizedSession, self).__init__(**kwargs) - self.credentials = credentials - self._refresh_status_codes = refresh_status_codes - self._max_refresh_attempts = max_refresh_attempts - self._refresh_timeout = refresh_timeout - self._is_mtls = False - self._auth_request = auth_request - self._auth_request_session = None - self._loop = asyncio.get_event_loop() - self._refresh_lock = asyncio.Lock() - self._auto_decompress = auto_decompress - - async def request( - self, - method, - url, - data=None, - headers=None, - max_allowed_time=None, - timeout=_DEFAULT_TIMEOUT, - auto_decompress=False, - **kwargs, - ): - - """Implementation of Authorized Session aiohttp request. - - Args: - method (str): - The http request method used (e.g. GET, PUT, DELETE) - url (str): - The url at which the http request is sent. - data (Optional[dict]): Dictionary, list of tuples, bytes, or file-like - object to send in the body of the Request. - headers (Optional[dict]): Dictionary of HTTP Headers to send with the - Request. - timeout (Optional[Union[float, aiohttp.ClientTimeout]]): - The amount of time in seconds to wait for the server response - with each individual request. Can also be passed as an - ``aiohttp.ClientTimeout`` object. - max_allowed_time (Optional[float]): - If the method runs longer than this, a ``Timeout`` exception is - automatically raised. Unlike the ``timeout`` parameter, this - value applies to the total method execution time, even if - multiple requests are made under the hood. - - Mind that it is not guaranteed that the timeout error is raised - at ``max_allowed_time``. It might take longer, for example, if - an underlying request takes a lot of time, but the request - itself does not timeout, e.g. if a large file is being - transmitted. The timout error will be raised after such - request completes. - """ - # Headers come in as bytes which isn't expected behavior, the resumable - # media libraries in some cases expect a str type for the header values, - # but sometimes the operations return these in bytes types. - if headers: - for key in headers.keys(): - if type(headers[key]) is bytes: - headers[key] = headers[key].decode("utf-8") - - async with aiohttp.ClientSession( - auto_decompress=self._auto_decompress - ) as self._auth_request_session: - auth_request = Request(self._auth_request_session) - self._auth_request = auth_request - - # Use a kwarg for this instead of an attribute to maintain - # thread-safety. - _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) - # Make a copy of the headers. They will be modified by the credentials - # and we want to pass the original headers if we recurse. - request_headers = headers.copy() if headers is not None else {} - - # Do not apply the timeout unconditionally in order to not override the - # _auth_request's default timeout. - auth_request = ( - self._auth_request - if timeout is None - else functools.partial(self._auth_request, timeout=timeout) - ) - - remaining_time = max_allowed_time - - with requests.TimeoutGuard(remaining_time, asyncio.TimeoutError) as guard: - await self.credentials.before_request( - auth_request, method, url, request_headers - ) - - with requests.TimeoutGuard(remaining_time, asyncio.TimeoutError) as guard: - response = await super(AuthorizedSession, self).request( - method, - url, - data=data, - headers=request_headers, - timeout=timeout, - **kwargs, - ) - - remaining_time = guard.remaining_timeout - - if ( - response.status in self._refresh_status_codes - and _credential_refresh_attempt < self._max_refresh_attempts - ): - - requests._LOGGER.info( - "Refreshing credentials due to a %s response. Attempt %s/%s.", - response.status, - _credential_refresh_attempt + 1, - self._max_refresh_attempts, - ) - - # Do not apply the timeout unconditionally in order to not override the - # _auth_request's default timeout. - auth_request = ( - self._auth_request - if timeout is None - else functools.partial(self._auth_request, timeout=timeout) - ) - - with requests.TimeoutGuard( - remaining_time, asyncio.TimeoutError - ) as guard: - async with self._refresh_lock: - await self._loop.run_in_executor( - None, self.credentials.refresh, auth_request - ) - - remaining_time = guard.remaining_timeout - - return await self.request( - method, - url, - data=data, - headers=headers, - max_allowed_time=remaining_time, - timeout=timeout, - _credential_refresh_attempt=_credential_refresh_attempt + 1, - **kwargs, - ) - - return response diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/_custom_tls_signer.py b/venv/lib/python3.10/site-packages/google/auth/transport/_custom_tls_signer.py deleted file mode 100644 index 57a563d..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/_custom_tls_signer.py +++ /dev/null @@ -1,271 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Code for configuring client side TLS to offload the signing operation to -signing libraries. -""" - -import ctypes -import json -import logging -import os -import sys - -import cffi # type: ignore - -from google.auth import exceptions - -_LOGGER = logging.getLogger(__name__) - -# C++ offload lib requires google-auth lib to provide the following callback: -# using SignFunc = int (*)(unsigned char *sig, size_t *sig_len, -# const unsigned char *tbs, size_t tbs_len) -# The bytes to be signed and the length are provided via `tbs` and `tbs_len`, -# the callback computes the signature, and write the signature and its length -# into `sig` and `sig_len`. -# If the signing is successful, the callback returns 1, otherwise it returns 0. -SIGN_CALLBACK_CTYPE = ctypes.CFUNCTYPE( - ctypes.c_int, # return type - ctypes.POINTER(ctypes.c_ubyte), # sig - ctypes.POINTER(ctypes.c_size_t), # sig_len - ctypes.POINTER(ctypes.c_ubyte), # tbs - ctypes.c_size_t, # tbs_len -) - - -# Cast SSL_CTX* to void* -def _cast_ssl_ctx_to_void_p(ssl_ctx): - return ctypes.cast(int(cffi.FFI().cast("intptr_t", ssl_ctx)), ctypes.c_void_p) - - -# Load offload library and set up the function types. -def load_offload_lib(offload_lib_path): - _LOGGER.debug("loading offload library from %s", offload_lib_path) - - # winmode parameter is only available for python 3.8+. - lib = ( - ctypes.CDLL(offload_lib_path, winmode=0) - if sys.version_info >= (3, 8) and os.name == "nt" - else ctypes.CDLL(offload_lib_path) - ) - - # Set up types for: - # int ConfigureSslContext(SignFunc sign_func, const char *cert, SSL_CTX *ctx) - lib.ConfigureSslContext.argtypes = [ - SIGN_CALLBACK_CTYPE, - ctypes.c_char_p, - ctypes.c_void_p, - ] - lib.ConfigureSslContext.restype = ctypes.c_int - - return lib - - -# Load signer library and set up the function types. -# See: https://github.com/googleapis/enterprise-certificate-proxy/blob/main/cshared/main.go -def load_signer_lib(signer_lib_path): - _LOGGER.debug("loading signer library from %s", signer_lib_path) - - # winmode parameter is only available for python 3.8+. - lib = ( - ctypes.CDLL(signer_lib_path, winmode=0) - if sys.version_info >= (3, 8) and os.name == "nt" - else ctypes.CDLL(signer_lib_path) - ) - - # Set up types for: - # func GetCertPemForPython(configFilePath *C.char, certHolder *byte, certHolderLen int) - lib.GetCertPemForPython.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int] - # Returns: certLen - lib.GetCertPemForPython.restype = ctypes.c_int - - # Set up types for: - # func SignForPython(configFilePath *C.char, digest *byte, digestLen int, - # sigHolder *byte, sigHolderLen int) - lib.SignForPython.argtypes = [ - ctypes.c_char_p, - ctypes.c_char_p, - ctypes.c_int, - ctypes.c_char_p, - ctypes.c_int, - ] - # Returns: the signature length - lib.SignForPython.restype = ctypes.c_int - - return lib - - -def load_provider_lib(provider_lib_path): - _LOGGER.debug("loading provider library from %s", provider_lib_path) - - # winmode parameter is only available for python 3.8+. - lib = ( - ctypes.CDLL(provider_lib_path, winmode=0) - if sys.version_info >= (3, 8) and os.name == "nt" - else ctypes.CDLL(provider_lib_path) - ) - - lib.ECP_attach_to_ctx.argtypes = [ctypes.c_void_p, ctypes.c_char_p] - lib.ECP_attach_to_ctx.restype = ctypes.c_int - - return lib - - -# Computes SHA256 hash. -def _compute_sha256_digest(to_be_signed, to_be_signed_len): - from cryptography.hazmat.primitives import hashes - - data = ctypes.string_at(to_be_signed, to_be_signed_len) - hash = hashes.Hash(hashes.SHA256()) - hash.update(data) - return hash.finalize() - - -# Create the signing callback. The actual signing work is done by the -# `SignForPython` method from the signer lib. -def get_sign_callback(signer_lib, config_file_path): - def sign_callback(sig, sig_len, tbs, tbs_len): - _LOGGER.debug("calling sign callback...") - - digest = _compute_sha256_digest(tbs, tbs_len) - digestArray = ctypes.c_char * len(digest) - - # reserve 2000 bytes for the signature, shoud be more then enough. - # RSA signature is 256 bytes, EC signature is 70~72. - sig_holder_len = 2000 - sig_holder = ctypes.create_string_buffer(sig_holder_len) - - signature_len = signer_lib.SignForPython( - config_file_path.encode(), # configFilePath - digestArray.from_buffer(bytearray(digest)), # digest - len(digest), # digestLen - sig_holder, # sigHolder - sig_holder_len, # sigHolderLen - ) - - if signature_len == 0: - # signing failed, return 0 - return 0 - - sig_len[0] = signature_len - bs = bytearray(sig_holder) - for i in range(signature_len): - sig[i] = bs[i] - - return 1 - - return SIGN_CALLBACK_CTYPE(sign_callback) - - -# Obtain the certificate bytes by calling the `GetCertPemForPython` method from -# the signer lib. The method is called twice, the first time is to compute the -# cert length, then we create a buffer to hold the cert, and call it again to -# fill the buffer. -def get_cert(signer_lib, config_file_path): - # First call to calculate the cert length - cert_len = signer_lib.GetCertPemForPython( - config_file_path.encode(), # configFilePath - None, # certHolder - 0, # certHolderLen - ) - if cert_len == 0: - raise exceptions.MutualTLSChannelError("failed to get certificate") - - # Then we create an array to hold the cert, and call again to fill the cert - cert_holder = ctypes.create_string_buffer(cert_len) - signer_lib.GetCertPemForPython( - config_file_path.encode(), # configFilePath - cert_holder, # certHolder - cert_len, # certHolderLen - ) - return bytes(cert_holder) - - -class CustomTlsSigner(object): - def __init__(self, enterprise_cert_file_path): - """ - This class loads the offload and signer library, and calls APIs from - these libraries to obtain the cert and a signing callback, and attach - them to SSL context. The cert and the signing callback will be used - for client authentication in TLS handshake. - - Args: - enterprise_cert_file_path (str): the path to a enterprise cert JSON - file. The file should contain the following field: - - { - "libs": { - "ecp_client": "...", - "tls_offload": "..." - } - } - """ - self._enterprise_cert_file_path = enterprise_cert_file_path - self._cert = None - self._sign_callback = None - self._provider_lib = None - - def load_libraries(self): - with open(self._enterprise_cert_file_path, "r") as f: - enterprise_cert_json = json.load(f) - libs = enterprise_cert_json.get("libs", {}) - - signer_library = libs.get("ecp_client", None) - offload_library = libs.get("tls_offload", None) - provider_library = libs.get("ecp_provider", None) - - # Using newer provider implementation. This is mutually exclusive to the - # offload implementation. - if provider_library: - self._provider_lib = load_provider_lib(provider_library) - return - - # Using old offload implementation - if offload_library and signer_library: - self._offload_lib = load_offload_lib(offload_library) - self._signer_lib = load_signer_lib(signer_library) - self.set_up_custom_key() - return - - raise exceptions.MutualTLSChannelError("enterprise cert file is invalid") - - def set_up_custom_key(self): - # We need to keep a reference of the cert and sign callback so it won't - # be garbage collected, otherwise it will crash when used by signer lib. - self._cert = get_cert(self._signer_lib, self._enterprise_cert_file_path) - self._sign_callback = get_sign_callback( - self._signer_lib, self._enterprise_cert_file_path - ) - - def attach_to_ssl_context(self, ctx): - if self._provider_lib: - if not self._provider_lib.ECP_attach_to_ctx( - _cast_ssl_ctx_to_void_p(ctx._ctx._context), - self._enterprise_cert_file_path.encode("ascii"), - ): - raise exceptions.MutualTLSChannelError( - "failed to configure ECP Provider SSL context" - ) - elif self._offload_lib and self._signer_lib: - if not self._offload_lib.ConfigureSslContext( - self._sign_callback, - ctypes.c_char_p(self._cert), - _cast_ssl_ctx_to_void_p(ctx._ctx._context), - ): - raise exceptions.MutualTLSChannelError( - "failed to configure ECP Offload SSL context" - ) - else: - raise exceptions.MutualTLSChannelError("Invalid ECP configuration.") diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/_http_client.py b/venv/lib/python3.10/site-packages/google/auth/transport/_http_client.py deleted file mode 100644 index cec0ab7..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/_http_client.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Transport adapter for http.client, for internal use only.""" - -import http.client as http_client -import logging -import socket -import urllib - -from google.auth import exceptions -from google.auth import transport - -_LOGGER = logging.getLogger(__name__) - - -class Response(transport.Response): - """http.client transport response adapter. - - Args: - response (http.client.HTTPResponse): The raw http client response. - """ - - def __init__(self, response): - self._status = response.status - self._headers = {key.lower(): value for key, value in response.getheaders()} - self._data = response.read() - - @property - def status(self): - return self._status - - @property - def headers(self): - return self._headers - - @property - def data(self): - return self._data - - -class Request(transport.Request): - """http.client transport request adapter.""" - - def __call__( - self, url, method="GET", body=None, headers=None, timeout=None, **kwargs - ): - """Make an HTTP request using http.client. - - Args: - url (str): The URI to be requested. - method (str): The HTTP method to use for the request. Defaults - to 'GET'. - body (bytes): The payload / body in HTTP request. - headers (Mapping): Request headers. - timeout (Optional(int)): The number of seconds to wait for a - response from the server. If not specified or if None, the - socket global default timeout will be used. - kwargs: Additional arguments passed throught to the underlying - :meth:`~http.client.HTTPConnection.request` method. - - Returns: - Response: The HTTP response. - - Raises: - google.auth.exceptions.TransportError: If any exception occurred. - """ - # socket._GLOBAL_DEFAULT_TIMEOUT is the default in http.client. - if timeout is None: - timeout = socket._GLOBAL_DEFAULT_TIMEOUT - - # http.client doesn't allow None as the headers argument. - if headers is None: - headers = {} - - # http.client needs the host and path parts specified separately. - parts = urllib.parse.urlsplit(url) - path = urllib.parse.urlunsplit( - ("", "", parts.path, parts.query, parts.fragment) - ) - - if parts.scheme != "http": - raise exceptions.TransportError( - "http.client transport only supports the http scheme, {}" - "was specified".format(parts.scheme) - ) - - connection = http_client.HTTPConnection(parts.netloc, timeout=timeout) - - try: - _LOGGER.debug("Making request: %s %s", method, url) - - connection.request(method, path, body=body, headers=headers, **kwargs) - response = connection.getresponse() - return Response(response) - - except (http_client.HTTPException, socket.error) as caught_exc: - new_exc = exceptions.TransportError(caught_exc) - raise new_exc from caught_exc - - finally: - connection.close() diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/_mtls_helper.py b/venv/lib/python3.10/site-packages/google/auth/transport/_mtls_helper.py deleted file mode 100644 index 1b9b9c2..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/_mtls_helper.py +++ /dev/null @@ -1,252 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helper functions for getting mTLS cert and key.""" - -import json -import logging -from os import path -import re -import subprocess - -from google.auth import exceptions - -CONTEXT_AWARE_METADATA_PATH = "~/.secureConnect/context_aware_metadata.json" -_CERT_PROVIDER_COMMAND = "cert_provider_command" -_CERT_REGEX = re.compile( - b"-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\r?\n?", re.DOTALL -) - -# support various format of key files, e.g. -# "-----BEGIN PRIVATE KEY-----...", -# "-----BEGIN EC PRIVATE KEY-----...", -# "-----BEGIN RSA PRIVATE KEY-----..." -# "-----BEGIN ENCRYPTED PRIVATE KEY-----" -_KEY_REGEX = re.compile( - b"-----BEGIN [A-Z ]*PRIVATE KEY-----.+-----END [A-Z ]*PRIVATE KEY-----\r?\n?", - re.DOTALL, -) - -_LOGGER = logging.getLogger(__name__) - - -_PASSPHRASE_REGEX = re.compile( - b"-----BEGIN PASSPHRASE-----(.+)-----END PASSPHRASE-----", re.DOTALL -) - - -def _check_dca_metadata_path(metadata_path): - """Checks for context aware metadata. If it exists, returns the absolute path; - otherwise returns None. - - Args: - metadata_path (str): context aware metadata path. - - Returns: - str: absolute path if exists and None otherwise. - """ - metadata_path = path.expanduser(metadata_path) - if not path.exists(metadata_path): - _LOGGER.debug("%s is not found, skip client SSL authentication.", metadata_path) - return None - return metadata_path - - -def _read_dca_metadata_file(metadata_path): - """Loads context aware metadata from the given path. - - Args: - metadata_path (str): context aware metadata path. - - Returns: - Dict[str, str]: The metadata. - - Raises: - google.auth.exceptions.ClientCertError: If failed to parse metadata as JSON. - """ - try: - with open(metadata_path) as f: - metadata = json.load(f) - except ValueError as caught_exc: - new_exc = exceptions.ClientCertError(caught_exc) - raise new_exc from caught_exc - - return metadata - - -def _run_cert_provider_command(command, expect_encrypted_key=False): - """Run the provided command, and return client side mTLS cert, key and - passphrase. - - Args: - command (List[str]): cert provider command. - expect_encrypted_key (bool): If encrypted private key is expected. - - Returns: - Tuple[bytes, bytes, bytes]: client certificate bytes in PEM format, key - bytes in PEM format and passphrase bytes. - - Raises: - google.auth.exceptions.ClientCertError: if problems occurs when running - the cert provider command or generating cert, key and passphrase. - """ - try: - process = subprocess.Popen( - command, stdout=subprocess.PIPE, stderr=subprocess.PIPE - ) - stdout, stderr = process.communicate() - except OSError as caught_exc: - new_exc = exceptions.ClientCertError(caught_exc) - raise new_exc from caught_exc - - # Check cert provider command execution error. - if process.returncode != 0: - raise exceptions.ClientCertError( - "Cert provider command returns non-zero status code %s" % process.returncode - ) - - # Extract certificate (chain), key and passphrase. - cert_match = re.findall(_CERT_REGEX, stdout) - if len(cert_match) != 1: - raise exceptions.ClientCertError("Client SSL certificate is missing or invalid") - key_match = re.findall(_KEY_REGEX, stdout) - if len(key_match) != 1: - raise exceptions.ClientCertError("Client SSL key is missing or invalid") - passphrase_match = re.findall(_PASSPHRASE_REGEX, stdout) - - if expect_encrypted_key: - if len(passphrase_match) != 1: - raise exceptions.ClientCertError("Passphrase is missing or invalid") - if b"ENCRYPTED" not in key_match[0]: - raise exceptions.ClientCertError("Encrypted private key is expected") - return cert_match[0], key_match[0], passphrase_match[0].strip() - - if b"ENCRYPTED" in key_match[0]: - raise exceptions.ClientCertError("Encrypted private key is not expected") - if len(passphrase_match) > 0: - raise exceptions.ClientCertError("Passphrase is not expected") - return cert_match[0], key_match[0], None - - -def get_client_ssl_credentials( - generate_encrypted_key=False, - context_aware_metadata_path=CONTEXT_AWARE_METADATA_PATH, -): - """Returns the client side certificate, private key and passphrase. - - Args: - generate_encrypted_key (bool): If set to True, encrypted private key - and passphrase will be generated; otherwise, unencrypted private key - will be generated and passphrase will be None. - context_aware_metadata_path (str): The context_aware_metadata.json file path. - - Returns: - Tuple[bool, bytes, bytes, bytes]: - A boolean indicating if cert, key and passphrase are obtained, the - cert bytes and key bytes both in PEM format, and passphrase bytes. - - Raises: - google.auth.exceptions.ClientCertError: if problems occurs when getting - the cert, key and passphrase. - """ - metadata_path = _check_dca_metadata_path(context_aware_metadata_path) - - if metadata_path: - metadata_json = _read_dca_metadata_file(metadata_path) - - if _CERT_PROVIDER_COMMAND not in metadata_json: - raise exceptions.ClientCertError("Cert provider command is not found") - - command = metadata_json[_CERT_PROVIDER_COMMAND] - - if generate_encrypted_key and "--with_passphrase" not in command: - command.append("--with_passphrase") - - # Execute the command. - cert, key, passphrase = _run_cert_provider_command( - command, expect_encrypted_key=generate_encrypted_key - ) - return True, cert, key, passphrase - - return False, None, None, None - - -def get_client_cert_and_key(client_cert_callback=None): - """Returns the client side certificate and private key. The function first - tries to get certificate and key from client_cert_callback; if the callback - is None or doesn't provide certificate and key, the function tries application - default SSL credentials. - - Args: - client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): An - optional callback which returns client certificate bytes and private - key bytes both in PEM format. - - Returns: - Tuple[bool, bytes, bytes]: - A boolean indicating if cert and key are obtained, the cert bytes - and key bytes both in PEM format. - - Raises: - google.auth.exceptions.ClientCertError: if problems occurs when getting - the cert and key. - """ - if client_cert_callback: - cert, key = client_cert_callback() - return True, cert, key - - has_cert, cert, key, _ = get_client_ssl_credentials(generate_encrypted_key=False) - return has_cert, cert, key - - -def decrypt_private_key(key, passphrase): - """A helper function to decrypt the private key with the given passphrase. - google-auth library doesn't support passphrase protected private key for - mutual TLS channel. This helper function can be used to decrypt the - passphrase protected private key in order to estalish mutual TLS channel. - - For example, if you have a function which produces client cert, passphrase - protected private key and passphrase, you can convert it to a client cert - callback function accepted by google-auth:: - - from google.auth.transport import _mtls_helper - - def your_client_cert_function(): - return cert, encrypted_key, passphrase - - # callback accepted by google-auth for mutual TLS channel. - def client_cert_callback(): - cert, encrypted_key, passphrase = your_client_cert_function() - decrypted_key = _mtls_helper.decrypt_private_key(encrypted_key, - passphrase) - return cert, decrypted_key - - Args: - key (bytes): The private key bytes in PEM format. - passphrase (bytes): The passphrase bytes. - - Returns: - bytes: The decrypted private key in PEM format. - - Raises: - ImportError: If pyOpenSSL is not installed. - OpenSSL.crypto.Error: If there is any problem decrypting the private key. - """ - from OpenSSL import crypto - - # First convert encrypted_key_bytes to PKey object - pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key, passphrase=passphrase) - - # Then dump the decrypted key bytes - return crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey) diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/grpc.py b/venv/lib/python3.10/site-packages/google/auth/transport/grpc.py deleted file mode 100644 index 9a81797..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/grpc.py +++ /dev/null @@ -1,343 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Authorization support for gRPC.""" - -from __future__ import absolute_import - -import logging -import os - -from google.auth import environment_vars -from google.auth import exceptions -from google.auth.transport import _mtls_helper -from google.oauth2 import service_account - -try: - import grpc # type: ignore -except ImportError as caught_exc: # pragma: NO COVER - raise ImportError( - "gRPC is not installed from please install the grpcio package to use the gRPC transport." - ) from caught_exc - -_LOGGER = logging.getLogger(__name__) - - -class AuthMetadataPlugin(grpc.AuthMetadataPlugin): - """A `gRPC AuthMetadataPlugin`_ that inserts the credentials into each - request. - - .. _gRPC AuthMetadataPlugin: - http://www.grpc.io/grpc/python/grpc.html#grpc.AuthMetadataPlugin - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - add to requests. - request (google.auth.transport.Request): A HTTP transport request - object used to refresh credentials as needed. - default_host (Optional[str]): A host like "pubsub.googleapis.com". - This is used when a self-signed JWT is created from service - account credentials. - """ - - def __init__(self, credentials, request, default_host=None): - # pylint: disable=no-value-for-parameter - # pylint doesn't realize that the super method takes no arguments - # because this class is the same name as the superclass. - super(AuthMetadataPlugin, self).__init__() - self._credentials = credentials - self._request = request - self._default_host = default_host - - def _get_authorization_headers(self, context): - """Gets the authorization headers for a request. - - Returns: - Sequence[Tuple[str, str]]: A list of request headers (key, value) - to add to the request. - """ - headers = {} - - # https://google.aip.dev/auth/4111 - # Attempt to use self-signed JWTs when a service account is used. - # A default host must be explicitly provided since it cannot always - # be determined from the context.service_url. - if isinstance(self._credentials, service_account.Credentials): - self._credentials._create_self_signed_jwt( - "https://{}/".format(self._default_host) if self._default_host else None - ) - - self._credentials.before_request( - self._request, context.method_name, context.service_url, headers - ) - - return list(headers.items()) - - def __call__(self, context, callback): - """Passes authorization metadata into the given callback. - - Args: - context (grpc.AuthMetadataContext): The RPC context. - callback (grpc.AuthMetadataPluginCallback): The callback that will - be invoked to pass in the authorization metadata. - """ - callback(self._get_authorization_headers(context), None) - - -def secure_authorized_channel( - credentials, - request, - target, - ssl_credentials=None, - client_cert_callback=None, - **kwargs -): - """Creates a secure authorized gRPC channel. - - This creates a channel with SSL and :class:`AuthMetadataPlugin`. This - channel can be used to create a stub that can make authorized requests. - Users can configure client certificate or rely on device certificates to - establish a mutual TLS channel, if the `GOOGLE_API_USE_CLIENT_CERTIFICATE` - variable is explicitly set to `true`. - - Example:: - - import google.auth - import google.auth.transport.grpc - import google.auth.transport.requests - from google.cloud.speech.v1 import cloud_speech_pb2 - - # Get credentials. - credentials, _ = google.auth.default() - - # Get an HTTP request function to refresh credentials. - request = google.auth.transport.requests.Request() - - # Create a channel. - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, regular_endpoint, request, - ssl_credentials=grpc.ssl_channel_credentials()) - - # Use the channel to create a stub. - cloud_speech.create_Speech_stub(channel) - - Usage: - - There are actually a couple of options to create a channel, depending on if - you want to create a regular or mutual TLS channel. - - First let's list the endpoints (regular vs mutual TLS) to choose from:: - - regular_endpoint = 'speech.googleapis.com:443' - mtls_endpoint = 'speech.mtls.googleapis.com:443' - - Option 1: create a regular (non-mutual) TLS channel by explicitly setting - the ssl_credentials:: - - regular_ssl_credentials = grpc.ssl_channel_credentials() - - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, regular_endpoint, request, - ssl_credentials=regular_ssl_credentials) - - Option 2: create a mutual TLS channel by calling a callback which returns - the client side certificate and the key (Note that - `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be explicitly - set to `true`):: - - def my_client_cert_callback(): - code_to_load_client_cert_and_key() - if loaded: - return (pem_cert_bytes, pem_key_bytes) - raise MyClientCertFailureException() - - try: - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, mtls_endpoint, request, - client_cert_callback=my_client_cert_callback) - except MyClientCertFailureException: - # handle the exception - - Option 3: use application default SSL credentials. It searches and uses - the command in a context aware metadata file, which is available on devices - with endpoint verification support (Note that - `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be explicitly - set to `true`). - See https://cloud.google.com/endpoint-verification/docs/overview:: - - try: - default_ssl_credentials = SslCredentials() - except: - # Exception can be raised if the context aware metadata is malformed. - # See :class:`SslCredentials` for the possible exceptions. - - # Choose the endpoint based on the SSL credentials type. - if default_ssl_credentials.is_mtls: - endpoint_to_use = mtls_endpoint - else: - endpoint_to_use = regular_endpoint - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, endpoint_to_use, request, - ssl_credentials=default_ssl_credentials) - - Option 4: not setting ssl_credentials and client_cert_callback. For devices - without endpoint verification support or `GOOGLE_API_USE_CLIENT_CERTIFICATE` - environment variable is not `true`, a regular TLS channel is created; - otherwise, a mutual TLS channel is created, however, the call should be - wrapped in a try/except block in case of malformed context aware metadata. - - The following code uses regular_endpoint, it works the same no matter the - created channle is regular or mutual TLS. Regular endpoint ignores client - certificate and key:: - - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, regular_endpoint, request) - - The following code uses mtls_endpoint, if the created channle is regular, - and API mtls_endpoint is confgured to require client SSL credentials, API - calls using this channel will be rejected:: - - channel = google.auth.transport.grpc.secure_authorized_channel( - credentials, mtls_endpoint, request) - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - add to requests. - request (google.auth.transport.Request): A HTTP transport request - object used to refresh credentials as needed. Even though gRPC - is a separate transport, there's no way to refresh the credentials - without using a standard http transport. - target (str): The host and port of the service. - ssl_credentials (grpc.ChannelCredentials): Optional SSL channel - credentials. This can be used to specify different certificates. - This argument is mutually exclusive with client_cert_callback; - providing both will raise an exception. - If ssl_credentials and client_cert_callback are None, application - default SSL credentials are used if `GOOGLE_API_USE_CLIENT_CERTIFICATE` - environment variable is explicitly set to `true`, otherwise one way TLS - SSL credentials are used. - client_cert_callback (Callable[[], (bytes, bytes)]): Optional - callback function to obtain client certicate and key for mutual TLS - connection. This argument is mutually exclusive with - ssl_credentials; providing both will raise an exception. - This argument does nothing unless `GOOGLE_API_USE_CLIENT_CERTIFICATE` - environment variable is explicitly set to `true`. - kwargs: Additional arguments to pass to :func:`grpc.secure_channel`. - - Returns: - grpc.Channel: The created gRPC channel. - - Raises: - google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel - creation failed for any reason. - """ - # Create the metadata plugin for inserting the authorization header. - metadata_plugin = AuthMetadataPlugin(credentials, request) - - # Create a set of grpc.CallCredentials using the metadata plugin. - google_auth_credentials = grpc.metadata_call_credentials(metadata_plugin) - - if ssl_credentials and client_cert_callback: - raise exceptions.MalformedError( - "Received both ssl_credentials and client_cert_callback; " - "these are mutually exclusive." - ) - - # If SSL credentials are not explicitly set, try client_cert_callback and ADC. - if not ssl_credentials: - use_client_cert = os.getenv( - environment_vars.GOOGLE_API_USE_CLIENT_CERTIFICATE, "false" - ) - if use_client_cert == "true" and client_cert_callback: - # Use the callback if provided. - cert, key = client_cert_callback() - ssl_credentials = grpc.ssl_channel_credentials( - certificate_chain=cert, private_key=key - ) - elif use_client_cert == "true": - # Use application default SSL credentials. - adc_ssl_credentils = SslCredentials() - ssl_credentials = adc_ssl_credentils.ssl_credentials - else: - ssl_credentials = grpc.ssl_channel_credentials() - - # Combine the ssl credentials and the authorization credentials. - composite_credentials = grpc.composite_channel_credentials( - ssl_credentials, google_auth_credentials - ) - - return grpc.secure_channel(target, composite_credentials, **kwargs) - - -class SslCredentials: - """Class for application default SSL credentials. - - The behavior is controlled by `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment - variable whose default value is `false`. Client certificate will not be used - unless the environment variable is explicitly set to `true`. See - https://google.aip.dev/auth/4114 - - If the environment variable is `true`, then for devices with endpoint verification - support, a device certificate will be automatically loaded and mutual TLS will - be established. - See https://cloud.google.com/endpoint-verification/docs/overview. - """ - - def __init__(self): - use_client_cert = os.getenv( - environment_vars.GOOGLE_API_USE_CLIENT_CERTIFICATE, "false" - ) - if use_client_cert != "true": - self._is_mtls = False - else: - # Load client SSL credentials. - metadata_path = _mtls_helper._check_dca_metadata_path( - _mtls_helper.CONTEXT_AWARE_METADATA_PATH - ) - self._is_mtls = metadata_path is not None - - @property - def ssl_credentials(self): - """Get the created SSL channel credentials. - - For devices with endpoint verification support, if the device certificate - loading has any problems, corresponding exceptions will be raised. For - a device without endpoint verification support, no exceptions will be - raised. - - Returns: - grpc.ChannelCredentials: The created grpc channel credentials. - - Raises: - google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel - creation failed for any reason. - """ - if self._is_mtls: - try: - _, cert, key, _ = _mtls_helper.get_client_ssl_credentials() - self._ssl_credentials = grpc.ssl_channel_credentials( - certificate_chain=cert, private_key=key - ) - except exceptions.ClientCertError as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - else: - self._ssl_credentials = grpc.ssl_channel_credentials() - - return self._ssl_credentials - - @property - def is_mtls(self): - """Indicates if the created SSL channel credentials is mutual TLS.""" - return self._is_mtls diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/mtls.py b/venv/lib/python3.10/site-packages/google/auth/transport/mtls.py deleted file mode 100644 index c570761..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/mtls.py +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Utilites for mutual TLS.""" - -from google.auth import exceptions -from google.auth.transport import _mtls_helper - - -def has_default_client_cert_source(): - """Check if default client SSL credentials exists on the device. - - Returns: - bool: indicating if the default client cert source exists. - """ - metadata_path = _mtls_helper._check_dca_metadata_path( - _mtls_helper.CONTEXT_AWARE_METADATA_PATH - ) - return metadata_path is not None - - -def default_client_cert_source(): - """Get a callback which returns the default client SSL credentials. - - Returns: - Callable[[], [bytes, bytes]]: A callback which returns the default - client certificate bytes and private key bytes, both in PEM format. - - Raises: - google.auth.exceptions.DefaultClientCertSourceError: If the default - client SSL credentials don't exist or are malformed. - """ - if not has_default_client_cert_source(): - raise exceptions.MutualTLSChannelError( - "Default client cert source doesn't exist" - ) - - def callback(): - try: - _, cert_bytes, key_bytes = _mtls_helper.get_client_cert_and_key() - except (OSError, RuntimeError, ValueError) as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - return cert_bytes, key_bytes - - return callback - - -def default_client_encrypted_cert_source(cert_path, key_path): - """Get a callback which returns the default encrpyted client SSL credentials. - - Args: - cert_path (str): The cert file path. The default client certificate will - be written to this file when the returned callback is called. - key_path (str): The key file path. The default encrypted client key will - be written to this file when the returned callback is called. - - Returns: - Callable[[], [str, str, bytes]]: A callback which generates the default - client certificate, encrpyted private key and passphrase. It writes - the certificate and private key into the cert_path and key_path, and - returns the cert_path, key_path and passphrase bytes. - - Raises: - google.auth.exceptions.DefaultClientCertSourceError: If any problem - occurs when loading or saving the client certificate and key. - """ - if not has_default_client_cert_source(): - raise exceptions.MutualTLSChannelError( - "Default client encrypted cert source doesn't exist" - ) - - def callback(): - try: - ( - _, - cert_bytes, - key_bytes, - passphrase_bytes, - ) = _mtls_helper.get_client_ssl_credentials(generate_encrypted_key=True) - with open(cert_path, "wb") as cert_file: - cert_file.write(cert_bytes) - with open(key_path, "wb") as key_file: - key_file.write(key_bytes) - except (exceptions.ClientCertError, OSError) as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - return cert_path, key_path, passphrase_bytes - - return callback diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/requests.py b/venv/lib/python3.10/site-packages/google/auth/transport/requests.py deleted file mode 100644 index aa16113..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/requests.py +++ /dev/null @@ -1,603 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Transport adapter for Requests.""" - -from __future__ import absolute_import - -import functools -import logging -import numbers -import os -import time - -try: - import requests -except ImportError as caught_exc: # pragma: NO COVER - raise ImportError( - "The requests library is not installed from please install the requests package to use the requests transport." - ) from caught_exc -import requests.adapters # pylint: disable=ungrouped-imports -import requests.exceptions # pylint: disable=ungrouped-imports -from requests.packages.urllib3.util.ssl_ import ( # type: ignore - create_urllib3_context, -) # pylint: disable=ungrouped-imports - -from google.auth import environment_vars -from google.auth import exceptions -from google.auth import transport -import google.auth.transport._mtls_helper -from google.oauth2 import service_account - -_LOGGER = logging.getLogger(__name__) - -_DEFAULT_TIMEOUT = 120 # in seconds - - -class _Response(transport.Response): - """Requests transport response adapter. - - Args: - response (requests.Response): The raw Requests response. - """ - - def __init__(self, response): - self._response = response - - @property - def status(self): - return self._response.status_code - - @property - def headers(self): - return self._response.headers - - @property - def data(self): - return self._response.content - - -class TimeoutGuard(object): - """A context manager raising an error if the suite execution took too long. - - Args: - timeout (Union[None, Union[float, Tuple[float, float]]]): - The maximum number of seconds a suite can run without the context - manager raising a timeout exception on exit. If passed as a tuple, - the smaller of the values is taken as a timeout. If ``None``, a - timeout error is never raised. - timeout_error_type (Optional[Exception]): - The type of the error to raise on timeout. Defaults to - :class:`requests.exceptions.Timeout`. - """ - - def __init__(self, timeout, timeout_error_type=requests.exceptions.Timeout): - self._timeout = timeout - self.remaining_timeout = timeout - self._timeout_error_type = timeout_error_type - - def __enter__(self): - self._start = time.time() - return self - - def __exit__(self, exc_type, exc_value, traceback): - if exc_value: - return # let the error bubble up automatically - - if self._timeout is None: - return # nothing to do, the timeout was not specified - - elapsed = time.time() - self._start - deadline_hit = False - - if isinstance(self._timeout, numbers.Number): - self.remaining_timeout = self._timeout - elapsed - deadline_hit = self.remaining_timeout <= 0 - else: - self.remaining_timeout = tuple(x - elapsed for x in self._timeout) - deadline_hit = min(self.remaining_timeout) <= 0 - - if deadline_hit: - raise self._timeout_error_type() - - -class Request(transport.Request): - """Requests request adapter. - - This class is used internally for making requests using various transports - in a consistent way. If you use :class:`AuthorizedSession` you do not need - to construct or use this class directly. - - This class can be useful if you want to manually refresh a - :class:`~google.auth.credentials.Credentials` instance:: - - import google.auth.transport.requests - import requests - - request = google.auth.transport.requests.Request() - - credentials.refresh(request) - - Args: - session (requests.Session): An instance :class:`requests.Session` used - to make HTTP requests. If not specified, a session will be created. - - .. automethod:: __call__ - """ - - def __init__(self, session=None): - if not session: - session = requests.Session() - - self.session = session - - def __del__(self): - try: - if hasattr(self, "session") and self.session is not None: - self.session.close() - except TypeError: - # NOTE: For certain Python binary built, the queue.Empty exception - # might not be considered a normal Python exception causing - # TypeError. - pass - - def __call__( - self, - url, - method="GET", - body=None, - headers=None, - timeout=_DEFAULT_TIMEOUT, - **kwargs - ): - """Make an HTTP request using requests. - - Args: - url (str): The URI to be requested. - method (str): The HTTP method to use for the request. Defaults - to 'GET'. - body (bytes): The payload or body in HTTP request. - headers (Mapping[str, str]): Request headers. - timeout (Optional[int]): The number of seconds to wait for a - response from the server. If not specified or if None, the - requests default timeout will be used. - kwargs: Additional arguments passed through to the underlying - requests :meth:`~requests.Session.request` method. - - Returns: - google.auth.transport.Response: The HTTP response. - - Raises: - google.auth.exceptions.TransportError: If any exception occurred. - """ - try: - _LOGGER.debug("Making request: %s %s", method, url) - response = self.session.request( - method, url, data=body, headers=headers, timeout=timeout, **kwargs - ) - return _Response(response) - except requests.exceptions.RequestException as caught_exc: - new_exc = exceptions.TransportError(caught_exc) - raise new_exc from caught_exc - - -class _MutualTlsAdapter(requests.adapters.HTTPAdapter): - """ - A TransportAdapter that enables mutual TLS. - - Args: - cert (bytes): client certificate in PEM format - key (bytes): client private key in PEM format - - Raises: - ImportError: if certifi or pyOpenSSL is not installed - OpenSSL.crypto.Error: if client cert or key is invalid - """ - - def __init__(self, cert, key): - import certifi - from OpenSSL import crypto - import urllib3.contrib.pyopenssl # type: ignore - - urllib3.contrib.pyopenssl.inject_into_urllib3() - - pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key) - x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert) - - ctx_poolmanager = create_urllib3_context() - ctx_poolmanager.load_verify_locations(cafile=certifi.where()) - ctx_poolmanager._ctx.use_certificate(x509) - ctx_poolmanager._ctx.use_privatekey(pkey) - self._ctx_poolmanager = ctx_poolmanager - - ctx_proxymanager = create_urllib3_context() - ctx_proxymanager.load_verify_locations(cafile=certifi.where()) - ctx_proxymanager._ctx.use_certificate(x509) - ctx_proxymanager._ctx.use_privatekey(pkey) - self._ctx_proxymanager = ctx_proxymanager - - super(_MutualTlsAdapter, self).__init__() - - def init_poolmanager(self, *args, **kwargs): - kwargs["ssl_context"] = self._ctx_poolmanager - super(_MutualTlsAdapter, self).init_poolmanager(*args, **kwargs) - - def proxy_manager_for(self, *args, **kwargs): - kwargs["ssl_context"] = self._ctx_proxymanager - return super(_MutualTlsAdapter, self).proxy_manager_for(*args, **kwargs) - - -class _MutualTlsOffloadAdapter(requests.adapters.HTTPAdapter): - """ - A TransportAdapter that enables mutual TLS and offloads the client side - signing operation to the signing library. - - Args: - enterprise_cert_file_path (str): the path to a enterprise cert JSON - file. The file should contain the following field: - - { - "libs": { - "signer_library": "...", - "offload_library": "..." - } - } - - Raises: - ImportError: if certifi or pyOpenSSL is not installed - google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel - creation failed for any reason. - """ - - def __init__(self, enterprise_cert_file_path): - import certifi - import urllib3.contrib.pyopenssl - - from google.auth.transport import _custom_tls_signer - - # Call inject_into_urllib3 to activate certificate checking. See the - # following links for more info: - # (1) doc: https://github.com/urllib3/urllib3/blob/cb9ebf8aac5d75f64c8551820d760b72b619beff/src/urllib3/contrib/pyopenssl.py#L31-L32 - # (2) mTLS example: https://github.com/urllib3/urllib3/issues/474#issuecomment-253168415 - urllib3.contrib.pyopenssl.inject_into_urllib3() - - self.signer = _custom_tls_signer.CustomTlsSigner(enterprise_cert_file_path) - self.signer.load_libraries() - - poolmanager = create_urllib3_context() - poolmanager.load_verify_locations(cafile=certifi.where()) - self.signer.attach_to_ssl_context(poolmanager) - self._ctx_poolmanager = poolmanager - - proxymanager = create_urllib3_context() - proxymanager.load_verify_locations(cafile=certifi.where()) - self.signer.attach_to_ssl_context(proxymanager) - self._ctx_proxymanager = proxymanager - - super(_MutualTlsOffloadAdapter, self).__init__() - - def init_poolmanager(self, *args, **kwargs): - kwargs["ssl_context"] = self._ctx_poolmanager - super(_MutualTlsOffloadAdapter, self).init_poolmanager(*args, **kwargs) - - def proxy_manager_for(self, *args, **kwargs): - kwargs["ssl_context"] = self._ctx_proxymanager - return super(_MutualTlsOffloadAdapter, self).proxy_manager_for(*args, **kwargs) - - -class AuthorizedSession(requests.Session): - """A Requests Session class with credentials. - - This class is used to perform requests to API endpoints that require - authorization:: - - from google.auth.transport.requests import AuthorizedSession - - authed_session = AuthorizedSession(credentials) - - response = authed_session.request( - 'GET', 'https://www.googleapis.com/storage/v1/b') - - - The underlying :meth:`request` implementation handles adding the - credentials' headers to the request and refreshing credentials as needed. - - This class also supports mutual TLS via :meth:`configure_mtls_channel` - method. In order to use this method, the `GOOGLE_API_USE_CLIENT_CERTIFICATE` - environment variable must be explicitly set to ``true``, otherwise it does - nothing. Assume the environment is set to ``true``, the method behaves in the - following manner: - - If client_cert_callback is provided, client certificate and private - key are loaded using the callback; if client_cert_callback is None, - application default SSL credentials will be used. Exceptions are raised if - there are problems with the certificate, private key, or the loading process, - so it should be called within a try/except block. - - First we set the environment variable to ``true``, then create an :class:`AuthorizedSession` - instance and specify the endpoints:: - - regular_endpoint = 'https://pubsub.googleapis.com/v1/projects/{my_project_id}/topics' - mtls_endpoint = 'https://pubsub.mtls.googleapis.com/v1/projects/{my_project_id}/topics' - - authed_session = AuthorizedSession(credentials) - - Now we can pass a callback to :meth:`configure_mtls_channel`:: - - def my_cert_callback(): - # some code to load client cert bytes and private key bytes, both in - # PEM format. - some_code_to_load_client_cert_and_key() - if loaded: - return cert, key - raise MyClientCertFailureException() - - # Always call configure_mtls_channel within a try/except block. - try: - authed_session.configure_mtls_channel(my_cert_callback) - except: - # handle exceptions. - - if authed_session.is_mtls: - response = authed_session.request('GET', mtls_endpoint) - else: - response = authed_session.request('GET', regular_endpoint) - - - You can alternatively use application default SSL credentials like this:: - - try: - authed_session.configure_mtls_channel() - except: - # handle exceptions. - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - add to the request. - refresh_status_codes (Sequence[int]): Which HTTP status codes indicate - that credentials should be refreshed and the request should be - retried. - max_refresh_attempts (int): The maximum number of times to attempt to - refresh the credentials and retry the request. - refresh_timeout (Optional[int]): The timeout value in seconds for - credential refresh HTTP requests. - auth_request (google.auth.transport.requests.Request): - (Optional) An instance of - :class:`~google.auth.transport.requests.Request` used when - refreshing credentials. If not passed, - an instance of :class:`~google.auth.transport.requests.Request` - is created. - default_host (Optional[str]): A host like "pubsub.googleapis.com". - This is used when a self-signed JWT is created from service - account credentials. - """ - - def __init__( - self, - credentials, - refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, - max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, - refresh_timeout=None, - auth_request=None, - default_host=None, - ): - super(AuthorizedSession, self).__init__() - self.credentials = credentials - self._refresh_status_codes = refresh_status_codes - self._max_refresh_attempts = max_refresh_attempts - self._refresh_timeout = refresh_timeout - self._is_mtls = False - self._default_host = default_host - - if auth_request is None: - self._auth_request_session = requests.Session() - - # Using an adapter to make HTTP requests robust to network errors. - # This adapter retrys HTTP requests when network errors occur - # and the requests seems safely retryable. - retry_adapter = requests.adapters.HTTPAdapter(max_retries=3) - self._auth_request_session.mount("https://", retry_adapter) - - # Do not pass `self` as the session here, as it can lead to - # infinite recursion. - auth_request = Request(self._auth_request_session) - else: - self._auth_request_session = None - - # Request instance used by internal methods (for example, - # credentials.refresh). - self._auth_request = auth_request - - # https://google.aip.dev/auth/4111 - # Attempt to use self-signed JWTs when a service account is used. - if isinstance(self.credentials, service_account.Credentials): - self.credentials._create_self_signed_jwt( - "https://{}/".format(self._default_host) if self._default_host else None - ) - - def configure_mtls_channel(self, client_cert_callback=None): - """Configure the client certificate and key for SSL connection. - - The function does nothing unless `GOOGLE_API_USE_CLIENT_CERTIFICATE` is - explicitly set to `true`. In this case if client certificate and key are - successfully obtained (from the given client_cert_callback or from application - default SSL credentials), a :class:`_MutualTlsAdapter` instance will be mounted - to "https://" prefix. - - Args: - client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): - The optional callback returns the client certificate and private - key bytes both in PEM format. - If the callback is None, application default SSL credentials - will be used. - - Raises: - google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel - creation failed for any reason. - """ - use_client_cert = os.getenv( - environment_vars.GOOGLE_API_USE_CLIENT_CERTIFICATE, "false" - ) - if use_client_cert != "true": - self._is_mtls = False - return - - try: - import OpenSSL - except ImportError as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - try: - ( - self._is_mtls, - cert, - key, - ) = google.auth.transport._mtls_helper.get_client_cert_and_key( - client_cert_callback - ) - - if self._is_mtls: - mtls_adapter = _MutualTlsAdapter(cert, key) - self.mount("https://", mtls_adapter) - except ( - exceptions.ClientCertError, - ImportError, - OpenSSL.crypto.Error, - ) as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - def request( - self, - method, - url, - data=None, - headers=None, - max_allowed_time=None, - timeout=_DEFAULT_TIMEOUT, - **kwargs - ): - """Implementation of Requests' request. - - Args: - timeout (Optional[Union[float, Tuple[float, float]]]): - The amount of time in seconds to wait for the server response - with each individual request. Can also be passed as a tuple - ``(connect_timeout, read_timeout)``. See :meth:`requests.Session.request` - documentation for details. - max_allowed_time (Optional[float]): - If the method runs longer than this, a ``Timeout`` exception is - automatically raised. Unlike the ``timeout`` parameter, this - value applies to the total method execution time, even if - multiple requests are made under the hood. - - Mind that it is not guaranteed that the timeout error is raised - at ``max_allowed_time``. It might take longer, for example, if - an underlying request takes a lot of time, but the request - itself does not timeout, e.g. if a large file is being - transmitted. The timout error will be raised after such - request completes. - """ - # pylint: disable=arguments-differ - # Requests has a ton of arguments to request, but only two - # (method, url) are required. We pass through all of the other - # arguments to super, so no need to exhaustively list them here. - - # Use a kwarg for this instead of an attribute to maintain - # thread-safety. - _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) - - # Make a copy of the headers. They will be modified by the credentials - # and we want to pass the original headers if we recurse. - request_headers = headers.copy() if headers is not None else {} - - # Do not apply the timeout unconditionally in order to not override the - # _auth_request's default timeout. - auth_request = ( - self._auth_request - if timeout is None - else functools.partial(self._auth_request, timeout=timeout) - ) - - remaining_time = max_allowed_time - - with TimeoutGuard(remaining_time) as guard: - self.credentials.before_request(auth_request, method, url, request_headers) - remaining_time = guard.remaining_timeout - - with TimeoutGuard(remaining_time) as guard: - response = super(AuthorizedSession, self).request( - method, - url, - data=data, - headers=request_headers, - timeout=timeout, - **kwargs - ) - remaining_time = guard.remaining_timeout - - # If the response indicated that the credentials needed to be - # refreshed, then refresh the credentials and re-attempt the - # request. - # A stored token may expire between the time it is retrieved and - # the time the request is made, so we may need to try twice. - if ( - response.status_code in self._refresh_status_codes - and _credential_refresh_attempt < self._max_refresh_attempts - ): - - _LOGGER.info( - "Refreshing credentials due to a %s response. Attempt %s/%s.", - response.status_code, - _credential_refresh_attempt + 1, - self._max_refresh_attempts, - ) - - # Do not apply the timeout unconditionally in order to not override the - # _auth_request's default timeout. - auth_request = ( - self._auth_request - if timeout is None - else functools.partial(self._auth_request, timeout=timeout) - ) - - with TimeoutGuard(remaining_time) as guard: - self.credentials.refresh(auth_request) - remaining_time = guard.remaining_timeout - - # Recurse. Pass in the original headers, not our modified set, but - # do pass the adjusted max allowed time (i.e. the remaining total time). - return self.request( - method, - url, - data=data, - headers=headers, - max_allowed_time=remaining_time, - timeout=timeout, - _credential_refresh_attempt=_credential_refresh_attempt + 1, - **kwargs - ) - - return response - - @property - def is_mtls(self): - """Indicates if the created SSL channel is mutual TLS.""" - return self._is_mtls - - def close(self): - if self._auth_request_session is not None: - self._auth_request_session.close() - super(AuthorizedSession, self).close() diff --git a/venv/lib/python3.10/site-packages/google/auth/transport/urllib3.py b/venv/lib/python3.10/site-packages/google/auth/transport/urllib3.py deleted file mode 100644 index 63144f5..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/transport/urllib3.py +++ /dev/null @@ -1,444 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Transport adapter for urllib3.""" - -from __future__ import absolute_import - -import logging -import os -import warnings - -# Certifi is Mozilla's certificate bundle. Urllib3 needs a certificate bundle -# to verify HTTPS requests, and certifi is the recommended and most reliable -# way to get a root certificate bundle. See -# http://urllib3.readthedocs.io/en/latest/user-guide.html\ -# #certificate-verification -# For more details. -try: - import certifi -except ImportError: # pragma: NO COVER - certifi = None # type: ignore - -try: - import urllib3 # type: ignore - import urllib3.exceptions # type: ignore -except ImportError as caught_exc: # pragma: NO COVER - raise ImportError( - "The urllib3 library is not installed from please install the " - "urllib3 package to use the urllib3 transport." - ) from caught_exc - -from packaging import version # type: ignore - -from google.auth import environment_vars -from google.auth import exceptions -from google.auth import transport -from google.oauth2 import service_account - -if version.parse(urllib3.__version__) >= version.parse("2.0.0"): # pragma: NO COVER - RequestMethods = urllib3._request_methods.RequestMethods # type: ignore -else: # pragma: NO COVER - RequestMethods = urllib3.request.RequestMethods # type: ignore - -_LOGGER = logging.getLogger(__name__) - - -class _Response(transport.Response): - """urllib3 transport response adapter. - - Args: - response (urllib3.response.HTTPResponse): The raw urllib3 response. - """ - - def __init__(self, response): - self._response = response - - @property - def status(self): - return self._response.status - - @property - def headers(self): - return self._response.headers - - @property - def data(self): - return self._response.data - - -class Request(transport.Request): - """urllib3 request adapter. - - This class is used internally for making requests using various transports - in a consistent way. If you use :class:`AuthorizedHttp` you do not need - to construct or use this class directly. - - This class can be useful if you want to manually refresh a - :class:`~google.auth.credentials.Credentials` instance:: - - import google.auth.transport.urllib3 - import urllib3 - - http = urllib3.PoolManager() - request = google.auth.transport.urllib3.Request(http) - - credentials.refresh(request) - - Args: - http (urllib3.request.RequestMethods): An instance of any urllib3 - class that implements :class:`~urllib3.request.RequestMethods`, - usually :class:`urllib3.PoolManager`. - - .. automethod:: __call__ - """ - - def __init__(self, http): - self.http = http - - def __call__( - self, url, method="GET", body=None, headers=None, timeout=None, **kwargs - ): - """Make an HTTP request using urllib3. - - Args: - url (str): The URI to be requested. - method (str): The HTTP method to use for the request. Defaults - to 'GET'. - body (bytes): The payload / body in HTTP request. - headers (Mapping[str, str]): Request headers. - timeout (Optional[int]): The number of seconds to wait for a - response from the server. If not specified or if None, the - urllib3 default timeout will be used. - kwargs: Additional arguments passed throught to the underlying - urllib3 :meth:`urlopen` method. - - Returns: - google.auth.transport.Response: The HTTP response. - - Raises: - google.auth.exceptions.TransportError: If any exception occurred. - """ - # urllib3 uses a sentinel default value for timeout, so only set it if - # specified. - if timeout is not None: - kwargs["timeout"] = timeout - - try: - _LOGGER.debug("Making request: %s %s", method, url) - response = self.http.request( - method, url, body=body, headers=headers, **kwargs - ) - return _Response(response) - except urllib3.exceptions.HTTPError as caught_exc: - new_exc = exceptions.TransportError(caught_exc) - raise new_exc from caught_exc - - -def _make_default_http(): - if certifi is not None: - return urllib3.PoolManager(cert_reqs="CERT_REQUIRED", ca_certs=certifi.where()) - else: - return urllib3.PoolManager() - - -def _make_mutual_tls_http(cert, key): - """Create a mutual TLS HTTP connection with the given client cert and key. - See https://github.com/urllib3/urllib3/issues/474#issuecomment-253168415 - - Args: - cert (bytes): client certificate in PEM format - key (bytes): client private key in PEM format - - Returns: - urllib3.PoolManager: Mutual TLS HTTP connection. - - Raises: - ImportError: If certifi or pyOpenSSL is not installed. - OpenSSL.crypto.Error: If the cert or key is invalid. - """ - import certifi - from OpenSSL import crypto - import urllib3.contrib.pyopenssl # type: ignore - - urllib3.contrib.pyopenssl.inject_into_urllib3() - ctx = urllib3.util.ssl_.create_urllib3_context() - ctx.load_verify_locations(cafile=certifi.where()) - - pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key) - x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert) - - ctx._ctx.use_certificate(x509) - ctx._ctx.use_privatekey(pkey) - - http = urllib3.PoolManager(ssl_context=ctx) - return http - - -class AuthorizedHttp(RequestMethods): # type: ignore - """A urllib3 HTTP class with credentials. - - This class is used to perform requests to API endpoints that require - authorization:: - - from google.auth.transport.urllib3 import AuthorizedHttp - - authed_http = AuthorizedHttp(credentials) - - response = authed_http.request( - 'GET', 'https://www.googleapis.com/storage/v1/b') - - This class implements :class:`urllib3.request.RequestMethods` and can be - used just like any other :class:`urllib3.PoolManager`. - - The underlying :meth:`urlopen` implementation handles adding the - credentials' headers to the request and refreshing credentials as needed. - - This class also supports mutual TLS via :meth:`configure_mtls_channel` - method. In order to use this method, the `GOOGLE_API_USE_CLIENT_CERTIFICATE` - environment variable must be explicitly set to `true`, otherwise it does - nothing. Assume the environment is set to `true`, the method behaves in the - following manner: - If client_cert_callback is provided, client certificate and private - key are loaded using the callback; if client_cert_callback is None, - application default SSL credentials will be used. Exceptions are raised if - there are problems with the certificate, private key, or the loading process, - so it should be called within a try/except block. - - First we set the environment variable to `true`, then create an :class:`AuthorizedHttp` - instance and specify the endpoints:: - - regular_endpoint = 'https://pubsub.googleapis.com/v1/projects/{my_project_id}/topics' - mtls_endpoint = 'https://pubsub.mtls.googleapis.com/v1/projects/{my_project_id}/topics' - - authed_http = AuthorizedHttp(credentials) - - Now we can pass a callback to :meth:`configure_mtls_channel`:: - - def my_cert_callback(): - # some code to load client cert bytes and private key bytes, both in - # PEM format. - some_code_to_load_client_cert_and_key() - if loaded: - return cert, key - raise MyClientCertFailureException() - - # Always call configure_mtls_channel within a try/except block. - try: - is_mtls = authed_http.configure_mtls_channel(my_cert_callback) - except: - # handle exceptions. - - if is_mtls: - response = authed_http.request('GET', mtls_endpoint) - else: - response = authed_http.request('GET', regular_endpoint) - - You can alternatively use application default SSL credentials like this:: - - try: - is_mtls = authed_http.configure_mtls_channel() - except: - # handle exceptions. - - Args: - credentials (google.auth.credentials.Credentials): The credentials to - add to the request. - http (urllib3.PoolManager): The underlying HTTP object to - use to make requests. If not specified, a - :class:`urllib3.PoolManager` instance will be constructed with - sane defaults. - refresh_status_codes (Sequence[int]): Which HTTP status codes indicate - that credentials should be refreshed and the request should be - retried. - max_refresh_attempts (int): The maximum number of times to attempt to - refresh the credentials and retry the request. - default_host (Optional[str]): A host like "pubsub.googleapis.com". - This is used when a self-signed JWT is created from service - account credentials. - """ - - def __init__( - self, - credentials, - http=None, - refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, - max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, - default_host=None, - ): - if http is None: - self.http = _make_default_http() - self._has_user_provided_http = False - else: - self.http = http - self._has_user_provided_http = True - - self.credentials = credentials - self._refresh_status_codes = refresh_status_codes - self._max_refresh_attempts = max_refresh_attempts - self._default_host = default_host - # Request instance used by internal methods (for example, - # credentials.refresh). - self._request = Request(self.http) - - # https://google.aip.dev/auth/4111 - # Attempt to use self-signed JWTs when a service account is used. - if isinstance(self.credentials, service_account.Credentials): - self.credentials._create_self_signed_jwt( - "https://{}/".format(self._default_host) if self._default_host else None - ) - - super(AuthorizedHttp, self).__init__() - - def configure_mtls_channel(self, client_cert_callback=None): - """Configures mutual TLS channel using the given client_cert_callback or - application default SSL credentials. The behavior is controlled by - `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable. - (1) If the environment variable value is `true`, the function returns True - if the channel is mutual TLS and False otherwise. The `http` provided - in the constructor will be overwritten. - (2) If the environment variable is not set or `false`, the function does - nothing and it always return False. - - Args: - client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): - The optional callback returns the client certificate and private - key bytes both in PEM format. - If the callback is None, application default SSL credentials - will be used. - - Returns: - True if the channel is mutual TLS and False otherwise. - - Raises: - google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel - creation failed for any reason. - """ - use_client_cert = os.getenv( - environment_vars.GOOGLE_API_USE_CLIENT_CERTIFICATE, "false" - ) - if use_client_cert != "true": - return False - - try: - import OpenSSL - except ImportError as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - try: - found_cert_key, cert, key = transport._mtls_helper.get_client_cert_and_key( - client_cert_callback - ) - - if found_cert_key: - self.http = _make_mutual_tls_http(cert, key) - else: - self.http = _make_default_http() - except ( - exceptions.ClientCertError, - ImportError, - OpenSSL.crypto.Error, - ) as caught_exc: - new_exc = exceptions.MutualTLSChannelError(caught_exc) - raise new_exc from caught_exc - - if self._has_user_provided_http: - self._has_user_provided_http = False - warnings.warn( - "`http` provided in the constructor is overwritten", UserWarning - ) - - return found_cert_key - - def urlopen(self, method, url, body=None, headers=None, **kwargs): - """Implementation of urllib3's urlopen.""" - # pylint: disable=arguments-differ - # We use kwargs to collect additional args that we don't need to - # introspect here. However, we do explicitly collect the two - # positional arguments. - - # Use a kwarg for this instead of an attribute to maintain - # thread-safety. - _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) - - if headers is None: - headers = self.headers - - # Make a copy of the headers. They will be modified by the credentials - # and we want to pass the original headers if we recurse. - request_headers = headers.copy() - - self.credentials.before_request(self._request, method, url, request_headers) - - response = self.http.urlopen( - method, url, body=body, headers=request_headers, **kwargs - ) - - # If the response indicated that the credentials needed to be - # refreshed, then refresh the credentials and re-attempt the - # request. - # A stored token may expire between the time it is retrieved and - # the time the request is made, so we may need to try twice. - # The reason urllib3's retries aren't used is because they - # don't allow you to modify the request headers. :/ - if ( - response.status in self._refresh_status_codes - and _credential_refresh_attempt < self._max_refresh_attempts - ): - - _LOGGER.info( - "Refreshing credentials due to a %s response. Attempt %s/%s.", - response.status, - _credential_refresh_attempt + 1, - self._max_refresh_attempts, - ) - - self.credentials.refresh(self._request) - - # Recurse. Pass in the original headers, not our modified set. - return self.urlopen( - method, - url, - body=body, - headers=headers, - _credential_refresh_attempt=_credential_refresh_attempt + 1, - **kwargs - ) - - return response - - # Proxy methods for compliance with the urllib3.PoolManager interface - - def __enter__(self): - """Proxy to ``self.http``.""" - return self.http.__enter__() - - def __exit__(self, exc_type, exc_val, exc_tb): - """Proxy to ``self.http``.""" - return self.http.__exit__(exc_type, exc_val, exc_tb) - - def __del__(self): - if hasattr(self, "http") and self.http is not None: - self.http.clear() - - @property - def headers(self): - """Proxy to ``self.http``.""" - return self.http.headers - - @headers.setter - def headers(self, value): - """Proxy to ``self.http``.""" - self.http.headers = value diff --git a/venv/lib/python3.10/site-packages/google/auth/version.py b/venv/lib/python3.10/site-packages/google/auth/version.py deleted file mode 100644 index f0dd919..0000000 --- a/venv/lib/python3.10/site-packages/google/auth/version.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -__version__ = "2.29.0" diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__init__.py b/venv/lib/python3.10/site-packages/google/oauth2/__init__.py deleted file mode 100644 index accae96..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google OAuth 2.0 Library for Python.""" - -import sys -import warnings - - -class Python37DeprecationWarning(DeprecationWarning): # pragma: NO COVER - """ - Deprecation warning raised when Python 3.7 runtime is detected. - Python 3.7 support will be dropped after January 1, 2024. - """ - - pass - - -# Checks if the current runtime is Python 3.7. -if sys.version_info.major == 3 and sys.version_info.minor == 7: # pragma: NO COVER - message = ( - "After January 1, 2024, new releases of this library will drop support " - "for Python 3.7." - ) - warnings.warn(message, Python37DeprecationWarning) diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ec1faa4372e62bd78071fe1d74adbf7a16d81417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 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 XTKgzznP-es=1azF+KY5%=Bxh%&JOg< diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_client_async.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_client_async.cpython-310.pyc deleted file mode 100644 index b8b5742cfc66a92efc66e71ecc122e56b882ea67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8639 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 diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_credentials_async.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_credentials_async.cpython-310.pyc deleted file mode 100644 index f04d202a790f81d57e427a208d09f9c0bc05a908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3610 zcmb7GUvDEx5uX{4?eWA3xh%Va6@MBb!CFe}-M!OsM1U?j5bR4Nn9s;jE2e$`@o z+qdxj(SCn?{)T1!jRu>ai^02SYKktg0xPi-C$ncx(6EVafOZ4d&@Sj^&@^;2Yt7n$ zXXqB_M$oaXUs_2!@jkT@k9SV|7mdKjOegU%<6~wEGh4~l6RX#a{^?lOYrCXyoKY%axVnsCM9S6kR9QaoWIXRqW$amwK9epU7t0L1laU8$>qqly{6pxMeZ}lHQ?Xi$77PEQAHD?Kj3YqaL znfqndvT-KPpmD#?!Y|u%$fjD))!|^Eg+P#`T#x%gP6ksw%LcVB->-E!c+h{d|G>z* z=9jM~)AYKPI7@Uju`8(bPNWxE0t)YA3OS26r!;ymivPLV_oaPpubr;BCygNz=@Ak`@xQ zU2bh;W8~PDwK1-v_y5W}pW#FDT}!=4VvHChn!Ojr>ltBo% zbi6QmLUNuLLPvxKCy2LwlV683uBV5?vlI?8%VE7dWQfAUL*FPs%o|=~KiwSlZ!+Ke z;cQXMIe75!&7Khw1GCm2!78=CqN%^5`<=bCP5_~WrEY_Q-)qWQQw^fzU5%Sa>?`~C zw#I!diO=xjzk}95^UykIe&YPWdjzS!vOa2FI2Vlz_o8{xT4G3zex=qx+(xzVh7 z`9{*Z+*@|8pd)FSSWloq)q3sY^FMv@IupTiq3K2mZ47SYoRBz@3pP%9mME6<3KQ44 zh>)m}*Wg*7{TlZ^E0ku+0PA9fdZAed!V;2)g-rKZoTVrfVVdk$5Lpe8_>${>uMxBi zY^l;T)+6xJq}ot64b%At$1nw$j^m#fTxqCXNn>XS)(V<2H!@Ml zC^27wH!8&`m-}p%DueGe<8Lqe=gvOs-3oSays1mIQhxQHtP1>aZ5H;`bY+vIG97f^ zuXukUrI2N-LWN*^CD9a(pdD6+23z5V@pr=4T3`K7CPHZI$>uYzuMrL}cy)yyffOGfM%HQ@#|2LN#C z(d6#h*DLL-Z9G|x>pK8neJSCn&>^BOH1c@zXG?w^qCQIpQ!(R%Ns-1<#9Zri@a!Em zP%*rLI(RS_i5i^p{B)3|qrrTE>&sCm?hjO|`N2GjpG6a{1`{DB86OC`--m;nh~1wr z$ZB(!4{@&g2%YnZ*Kl5Xj`KPG|JQS!|F|v3c3-+(^w)m=znsq;d-ZE|TXxItqU|`o zy=!}BFRgmE^V0p?`?u?!-`W7+etmM>#Hp)~XhMI3NIw8kA(HAYtxJ1}Os;UmwlH>< z?v;(l8?w4*ANLw%^EArRMBV{g*^K7%Y|(4VJ&fcnnracsill55GAr9t9s#(Oad_3; zrcFB|j_9BaGj|kYPSN!`pR}A^d&fS%yJ^Dp&Bur(FAVc&#>24m!?1d4fbNFC^(d=X z+F_W8I1D9O8tmY8vY-j2B`#OCFe%&Aksz|LFERLyw(6y z;*qy&VPtTH_$ddT-?U?GupwDv5|mNawR>l&6|tHP8%L5ifO zL=~R HcaHuCP&Yc# diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_id_token_async.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_id_token_async.cpython-310.pyc deleted file mode 100644 index 8c6bfe4def8d47d0081dea8806c197e504001160..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8586 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 WCF^zC1?Lm%P3MWV=scPE(%%4{B{&rT diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_reauth_async.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/_reauth_async.cpython-310.pyc deleted file mode 100644 index 85b18f01857082b4a159dc9015f80f60f10949ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9074 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 Nz7OuzeEMts_kXTis8s*} diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/challenges.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/challenges.cpython-310.pyc deleted file mode 100644 index 196614b6fff85dee0142b59e9eb47c5570ffdceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6297 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 G-~1Pr3w5~w diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/credentials.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/credentials.cpython-310.pyc deleted file mode 100644 index 5e36dbb9d999bee65c7646bcbe0222a92c5d6bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20040 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

UIQ<(ObM9I0;cR z1{6t#%lP_pXh<@Eie#}r{*n_@(l>MoMn- z82`%zzH2sV!x?NHGV-AWHmH^f^`z0eClyD#zIF(SLplUKoucD1Cn=3rLt1GWlF|F{;Ul;PS!uHkQeCe# z$jKD7KLYKbylKMXkhM_GXOBKs=I_rwc zN%>mbrg=?jT4)A2=qo6!ZSQw+RGW&C6tB31jlrUvg)9M>PUu!IPvaCo8E;}JnCd*) z8+3Pr#w=fhf?Y%6_d4a`gq$9m(FAsEK0GsaV)8FbU*pSQd%0;NT`tYbXki|ym*Mse QBze*&Q`)!Wzmv271KKcS2LJ#7 diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/gdch_credentials.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/gdch_credentials.cpython-310.pyc deleted file mode 100644 index 361ed7f00b0cbbea3d6dec1e4669f2505940ba55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7884 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 M=oC9v)ED)C1D7ldssI20 diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/id_token.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/id_token.cpython-310.pyc deleted file mode 100644 index 5f418bcde4ad137e92ebbe06795bf0e39086e13b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10326 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 diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/service_account.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/service_account.cpython-310.pyc deleted file mode 100644 index 9c895ac4c7c6c44c79bc102a84fe3781f3e6d0ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26003 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 diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/sts.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/sts.cpython-310.pyc deleted file mode 100644 index f8ce42936736830ff80120717aba5d03ada4350d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmc&&&2QYs6(_meFKSm(Y}qM_7GavU@V3#e?WDHjx># zmIJd}dt}fGt-dm7l~oVwFH2pAT02IoM*eCU#@5VZw;u?15Yu7ET*`Vu#Dq&+sc2b2JCs2f$P;&u2u9sFa%G>n&*oS=1?y*?E0DRX zcpnF0=~?+-5Qp>CjPL8c^*L!>BZAI0%L>}Bog6QQ=p++dJ|Yyhl@3_x}zkQgRO%%yuocn}Za z{gVVX9`{^741m%lpfwc6*Y6PFkT8soL3R)VcdvHnIBTG^qd*hodch}p5!f|ugispb z%CN^=I3x*rf$zo%K7i%>L^?i+qFAD?7!d*JYCw`iYbzm~3>YX%Se4Cuf zA&-Eb2EJO3pSYZf1o*SDJhK+$J^$XFPd;)5Q*VHq+-~1`<~eE$pYCjJjv2rj?Y8U9 znSAU`_uamfiMZeCNHj+~V6xYa`F^J_2Vo~)Msc`w$v1lagIvm0C8hH>h!$hBWoBjc zPI1~;k0S{tTipdyp1u#N3v=srUaTG;AFqNb2CG9JvdE7qqdvYrePA5oAwGkF8C?@% z(V}LzL>Im=dJuQiepQD^EYr#>qg$?9vp?FPRa$#xb}O__9iXUwVc15u29emzD(lLv zPW>l^FQUzvJJIJ{#3>6D#&TRZ-ax@^MY!pg)IRip*Tr8z`Z1&-&D3~ljjYrptWJrb(tUKu)5?M;>_SK=kGU@y3>l7!uytS8?8sk>GZI@{}vIwX!ks zO+vWUniUh5Kv{GILTGAJTps>YsmTp`E;%AWNcKWd1hTPNsv_3mppB*7ZJ2~NH z*vl>W3k;6snq!_WY2~(y{rN@M0D*ypt_uHk_=`WnAdQiEZk*Yv#jiUrbZ$H} zKCk`GIxC-5(n@Nl~xGtSr+9eO5)TOqp98^a&m^DXr3hqivf3VN0(n+fa z3)FsT@w<36YT&cT!t1jdj7_z#@ zeu|dE(NbBJv*$wwvAKkIjr`8TZFiT7yFwf0VP+m>wSr-{SzKxQ$*mF;y@9J?0eLsQ z0XbwKjau&kOo<=DP_yjPis_h*l2x)z3x3OH<)2P{@n5!OebcBqrUMkGD}~=pGx3|i zpg5M{0vA%w_W~|bD=nuLYL1Mwn$-4V)$-Wuf5M%p|t zfpb;JE||7}LpswZJU#-10#?l_?a9%UoxQ zckVcEx2vfIF7c#EGfi|CKBSJMf?ca0;kf!QHv2D6ruap4?VV%p9b=pq5KvB=#$-x=_<`-{N8=a(!qG zp#22ZUeFq3*&@A-lQZbh4Ws~sngm?;b}|@D!`^KY2sS5W4oFqTg}`UJwQH++icA1V6yrWyxhz<-=1juP zuFTvj&(9X7Vj)|ey3voTI^hY9&@eMvbwCz?@%eSQB;FIuP9ayT-}<3i^(2E({} zKnc)o;g_5g(TAn5f=#YK&$W?%X~AzVob{kw^z$63fkN?dLkG~M5CJ{}+`0SlC&h;e z%%XVwe<8w*Z(Uy7XSO@>^vw*=q*8=7Ps`G7au*cYGPMttrhEwJ=Pb-|?l15cXnET~ zL)J|Dn=zK0UBKLI)i(13TpBvK2)?;M2j_U6{y+xT4bOW%Bw_xf>UlKwJx}#XN+x~> z<-mmj@9HMaXJH5=6Yr}b2_jY1Dxz>-5?A`|`S?Y%TDg0-eVE zZQWXA6@BL4MSd7>Dhj*Jnf6$91^fy;?Os>;NP91K$d6U0pu5&78I`mOw$~o$&Ho(S V)DVj>*o%#;HPB?ks+F#n{tdkWEHwZC diff --git a/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/utils.cpython-310.pyc b/venv/lib/python3.10/site-packages/google/oauth2/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index 02bdc609b93acfbf2a28e759a0b5583b21913c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5544 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 t``BL*^bz5iZBApi+= expiry - _helpers.REFRESH_THRESHOLD: - raise exceptions.RefreshError( - "The credentials returned by the refresh_handler are " - "already expired." - ) - self.token = token - self.expiry = expiry - return - - if ( - self._refresh_token is None - or self._token_uri is None - or self._client_id is None - or self._client_secret is None - ): - raise exceptions.RefreshError( - "The credentials do not contain the necessary fields need to " - "refresh the access token. You must specify refresh_token, " - "token_uri, client_id, and client_secret." - ) - - ( - access_token, - refresh_token, - expiry, - grant_response, - rapt_token, - ) = reauth.refresh_grant( - request, - self._token_uri, - self._refresh_token, - self._client_id, - self._client_secret, - scopes=scopes, - rapt_token=self._rapt_token, - enable_reauth_refresh=self._enable_reauth_refresh, - ) - - self.token = access_token - self.expiry = expiry - self._refresh_token = refresh_token - self._id_token = grant_response.get("id_token") - self._rapt_token = rapt_token - - if scopes and "scope" in grant_response: - requested_scopes = frozenset(scopes) - self._granted_scopes = grant_response["scope"].split() - granted_scopes = frozenset(self._granted_scopes) - scopes_requested_but_not_granted = requested_scopes - granted_scopes - if scopes_requested_but_not_granted: - # User might be presented with unbundled scopes at the time of - # consent. So it is a valid scenario to not have all the requested - # scopes as part of granted scopes but log a warning in case the - # developer wants to debug the scenario. - _LOGGER.warning( - "Not all requested scopes were granted by the " - "authorization server, missing scopes {}.".format( - ", ".join(scopes_requested_but_not_granted) - ) - ) - - @classmethod - def from_authorized_user_info(cls, info, scopes=None): - """Creates a Credentials instance from parsed authorized user info. - - Args: - info (Mapping[str, str]): The authorized user info in Google - format. - scopes (Sequence[str]): Optional list of scopes to include in the - credentials. - - Returns: - google.oauth2.credentials.Credentials: The constructed - credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - keys_needed = set(("refresh_token", "client_id", "client_secret")) - missing = keys_needed.difference(info.keys()) - - if missing: - raise ValueError( - "Authorized user info was not in the expected format, missing " - "fields {}.".format(", ".join(missing)) - ) - - # access token expiry (datetime obj); auto-expire if not saved - expiry = info.get("expiry") - if expiry: - expiry = datetime.strptime( - expiry.rstrip("Z").split(".")[0], "%Y-%m-%dT%H:%M:%S" - ) - else: - expiry = _helpers.utcnow() - _helpers.REFRESH_THRESHOLD - - # process scopes, which needs to be a seq - if scopes is None and "scopes" in info: - scopes = info.get("scopes") - if isinstance(scopes, str): - scopes = scopes.split(" ") - - return cls( - token=info.get("token"), - refresh_token=info.get("refresh_token"), - token_uri=_GOOGLE_OAUTH2_TOKEN_ENDPOINT, # always overrides - scopes=scopes, - client_id=info.get("client_id"), - client_secret=info.get("client_secret"), - quota_project_id=info.get("quota_project_id"), # may not exist - expiry=expiry, - rapt_token=info.get("rapt_token"), # may not exist - trust_boundary=info.get("trust_boundary"), # may not exist - universe_domain=info.get("universe_domain"), # may not exist - account=info.get("account", ""), # may not exist - ) - - @classmethod - def from_authorized_user_file(cls, filename, scopes=None): - """Creates a Credentials instance from an authorized user json file. - - Args: - filename (str): The path to the authorized user json file. - scopes (Sequence[str]): Optional list of scopes to include in the - credentials. - - Returns: - google.oauth2.credentials.Credentials: The constructed - credentials. - - Raises: - ValueError: If the file is not in the expected format. - """ - with io.open(filename, "r", encoding="utf-8") as json_file: - data = json.load(json_file) - return cls.from_authorized_user_info(data, scopes) - - def to_json(self, strip=None): - """Utility function that creates a JSON representation of a Credentials - object. - - Args: - strip (Sequence[str]): Optional list of members to exclude from the - generated JSON. - - Returns: - str: A JSON representation of this instance. When converted into - a dictionary, it can be passed to from_authorized_user_info() - to create a new credential instance. - """ - prep = { - "token": self.token, - "refresh_token": self.refresh_token, - "token_uri": self.token_uri, - "client_id": self.client_id, - "client_secret": self.client_secret, - "scopes": self.scopes, - "rapt_token": self.rapt_token, - "universe_domain": self._universe_domain, - "account": self._account, - } - if self.expiry: # flatten expiry timestamp - prep["expiry"] = self.expiry.isoformat() + "Z" - - # Remove empty entries (those which are None) - prep = {k: v for k, v in prep.items() if v is not None} - - # Remove entries that explicitely need to be removed - if strip is not None: - prep = {k: v for k, v in prep.items() if k not in strip} - - return json.dumps(prep) - - -class UserAccessTokenCredentials(credentials.CredentialsWithQuotaProject): - """Access token credentials for user account. - - Obtain the access token for a given user account or the current active - user account with the ``gcloud auth print-access-token`` command. - - Args: - account (Optional[str]): Account to get the access token for. If not - specified, the current active account will be used. - quota_project_id (Optional[str]): The project ID used for quota - and billing. - """ - - def __init__(self, account=None, quota_project_id=None): - warnings.warn( - "UserAccessTokenCredentials is deprecated, please use " - "google.oauth2.credentials.Credentials instead. To use " - "that credential type, simply run " - "`gcloud auth application-default login` and let the " - "client libraries pick up the application default credentials." - ) - super(UserAccessTokenCredentials, self).__init__() - self._account = account - self._quota_project_id = quota_project_id - - def with_account(self, account): - """Create a new instance with the given account. - - Args: - account (str): Account to get the access token for. - - Returns: - google.oauth2.credentials.UserAccessTokenCredentials: The created - credentials with the given account. - """ - return self.__class__(account=account, quota_project_id=self._quota_project_id) - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - return self.__class__(account=self._account, quota_project_id=quota_project_id) - - def refresh(self, request): - """Refreshes the access token. - - Args: - request (google.auth.transport.Request): This argument is required - by the base class interface but not used in this implementation, - so just set it to `None`. - - Raises: - google.auth.exceptions.UserAccessTokenError: If the access token - refresh failed. - """ - self.token = _cloud_sdk.get_auth_access_token(self._account) - - @_helpers.copy_docstring(credentials.Credentials) - def before_request(self, request, method, url, headers): - self.refresh(request) - self.apply(headers) diff --git a/venv/lib/python3.10/site-packages/google/oauth2/gdch_credentials.py b/venv/lib/python3.10/site-packages/google/oauth2/gdch_credentials.py deleted file mode 100644 index 7410cfc..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/gdch_credentials.py +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Experimental GDCH credentials support. -""" - -import datetime - -from google.auth import _helpers -from google.auth import _service_account_info -from google.auth import credentials -from google.auth import exceptions -from google.auth import jwt -from google.oauth2 import _client - - -TOKEN_EXCHANGE_TYPE = "urn:ietf:params:oauth:token-type:token-exchange" -ACCESS_TOKEN_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" -SERVICE_ACCOUNT_TOKEN_TYPE = "urn:k8s:params:oauth:token-type:serviceaccount" -JWT_LIFETIME = datetime.timedelta(seconds=3600) # 1 hour - - -class ServiceAccountCredentials(credentials.Credentials): - """Credentials for GDCH (`Google Distributed Cloud Hosted`_) for service - account users. - - .. _Google Distributed Cloud Hosted: - https://cloud.google.com/blog/topics/hybrid-cloud/\ - announcing-google-distributed-cloud-edge-and-hosted - - To create a GDCH service account credential, first create a JSON file of - the following format:: - - { - "type": "gdch_service_account", - "format_version": "1", - "project": "", - "private_key_id": "", - "private_key": "-----BEGIN EC PRIVATE KEY-----\n\n-----END EC PRIVATE KEY-----\n", - "name": "", - "ca_cert_path": "", - "token_uri": "https://service-identity./authenticate" - } - - The "format_version" field stands for the format of the JSON file. For now - it is always "1". The `private_key_id` and `private_key` is used for signing. - The `ca_cert_path` is used for token server TLS certificate verification. - - After the JSON file is created, set `GOOGLE_APPLICATION_CREDENTIALS` environment - variable to the JSON file path, then use the following code to create the - credential:: - - import google.auth - - credential, _ = google.auth.default() - credential = credential.with_gdch_audience("") - - We can also create the credential directly:: - - from google.oauth import gdch_credentials - - credential = gdch_credentials.ServiceAccountCredentials.from_service_account_file("") - credential = credential.with_gdch_audience("") - - The token is obtained in the following way. This class first creates a - self signed JWT. It uses the `name` value as the `iss` and `sub` claim, and - the `token_uri` as the `aud` claim, and signs the JWT with the `private_key`. - It then sends the JWT to the `token_uri` to exchange a final token for - `audience`. - """ - - def __init__( - self, signer, service_identity_name, project, audience, token_uri, ca_cert_path - ): - """ - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - service_identity_name (str): The service identity name. It will be - used as the `iss` and `sub` claim in the self signed JWT. - project (str): The project. - audience (str): The audience for the final token. - token_uri (str): The token server uri. - ca_cert_path (str): The CA cert path for token server side TLS - certificate verification. If the token server uses well known - CA, then this parameter can be `None`. - """ - super(ServiceAccountCredentials, self).__init__() - self._signer = signer - self._service_identity_name = service_identity_name - self._project = project - self._audience = audience - self._token_uri = token_uri - self._ca_cert_path = ca_cert_path - - def _create_jwt(self): - now = _helpers.utcnow() - expiry = now + JWT_LIFETIME - iss_sub_value = "system:serviceaccount:{}:{}".format( - self._project, self._service_identity_name - ) - - payload = { - "iss": iss_sub_value, - "sub": iss_sub_value, - "aud": self._token_uri, - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - } - - return _helpers.from_bytes(jwt.encode(self._signer, payload)) - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - import google.auth.transport.requests - - if not isinstance(request, google.auth.transport.requests.Request): - raise exceptions.RefreshError( - "For GDCH service account credentials, request must be a google.auth.transport.requests.Request object" - ) - - # Create a self signed JWT, and do token exchange. - jwt_token = self._create_jwt() - request_body = { - "grant_type": TOKEN_EXCHANGE_TYPE, - "audience": self._audience, - "requested_token_type": ACCESS_TOKEN_TOKEN_TYPE, - "subject_token": jwt_token, - "subject_token_type": SERVICE_ACCOUNT_TOKEN_TYPE, - } - response_data = _client._token_endpoint_request( - request, - self._token_uri, - request_body, - access_token=None, - use_json=True, - verify=self._ca_cert_path, - ) - - self.token, _, self.expiry, _ = _client._handle_refresh_grant_response( - response_data, None - ) - - def with_gdch_audience(self, audience): - """Create a copy of GDCH credentials with the specified audience. - - Args: - audience (str): The intended audience for GDCH credentials. - """ - return self.__class__( - self._signer, - self._service_identity_name, - self._project, - audience, - self._token_uri, - self._ca_cert_path, - ) - - @classmethod - def _from_signer_and_info(cls, signer, info): - """Creates a Credentials instance from a signer and service account - info. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - info (Mapping[str, str]): The service account info. - - Returns: - google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed - credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - if info["format_version"] != "1": - raise ValueError("Only format version 1 is supported") - - return cls( - signer, - info["name"], # service_identity_name - info["project"], - None, # audience - info["token_uri"], - info.get("ca_cert_path", None), - ) - - @classmethod - def from_service_account_info(cls, info): - """Creates a Credentials instance from parsed service account info. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed - credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - signer = _service_account_info.from_dict( - info, - require=[ - "format_version", - "private_key_id", - "private_key", - "name", - "project", - "token_uri", - ], - use_rsa_signer=False, - ) - return cls._from_signer_and_info(signer, info) - - @classmethod - def from_service_account_file(cls, filename): - """Creates a Credentials instance from a service account json file. - - Args: - filename (str): The path to the service account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed - credentials. - """ - info, signer = _service_account_info.from_filename( - filename, - require=[ - "format_version", - "private_key_id", - "private_key", - "name", - "project", - "token_uri", - ], - use_rsa_signer=False, - ) - return cls._from_signer_and_info(signer, info) diff --git a/venv/lib/python3.10/site-packages/google/oauth2/id_token.py b/venv/lib/python3.10/site-packages/google/oauth2/id_token.py deleted file mode 100644 index e5dda50..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/id_token.py +++ /dev/null @@ -1,340 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google ID Token helpers. - -Provides support for verifying `OpenID Connect ID Tokens`_, especially ones -generated by Google infrastructure. - -To parse and verify an ID Token issued by Google's OAuth 2.0 authorization -server use :func:`verify_oauth2_token`. To verify an ID Token issued by -Firebase, use :func:`verify_firebase_token`. - -A general purpose ID Token verifier is available as :func:`verify_token`. - -Example:: - - from google.oauth2 import id_token - from google.auth.transport import requests - - request = requests.Request() - - id_info = id_token.verify_oauth2_token( - token, request, 'my-client-id.example.com') - - userid = id_info['sub'] - -By default, this will re-fetch certificates for each verification. Because -Google's public keys are only changed infrequently (on the order of once per -day), you may wish to take advantage of caching to reduce latency and the -potential for network errors. This can be accomplished using an external -library like `CacheControl`_ to create a cache-aware -:class:`google.auth.transport.Request`:: - - import cachecontrol - import google.auth.transport.requests - import requests - - session = requests.session() - cached_session = cachecontrol.CacheControl(session) - request = google.auth.transport.requests.Request(session=cached_session) - -.. _OpenID Connect ID Tokens: - http://openid.net/specs/openid-connect-core-1_0.html#IDToken -.. _CacheControl: https://cachecontrol.readthedocs.io -""" - -import http.client as http_client -import json -import os - -from google.auth import environment_vars -from google.auth import exceptions -from google.auth import jwt - - -# The URL that provides public certificates for verifying ID tokens issued -# by Google's OAuth 2.0 authorization server. -_GOOGLE_OAUTH2_CERTS_URL = "https://www.googleapis.com/oauth2/v1/certs" - -# The URL that provides public certificates for verifying ID tokens issued -# by Firebase and the Google APIs infrastructure -_GOOGLE_APIS_CERTS_URL = ( - "https://www.googleapis.com/robot/v1/metadata/x509" - "/securetoken@system.gserviceaccount.com" -) - -_GOOGLE_ISSUERS = ["accounts.google.com", "https://accounts.google.com"] - - -def _fetch_certs(request, certs_url): - """Fetches certificates. - - Google-style cerificate endpoints return JSON in the format of - ``{'key id': 'x509 certificate'}``. - - Args: - request (google.auth.transport.Request): The object used to make - HTTP requests. - certs_url (str): The certificate endpoint URL. - - Returns: - Mapping[str, str]: A mapping of public key ID to x.509 certificate - data. - """ - response = request(certs_url, method="GET") - - if response.status != http_client.OK: - raise exceptions.TransportError( - "Could not fetch certificates at {}".format(certs_url) - ) - - return json.loads(response.data.decode("utf-8")) - - -def verify_token( - id_token, - request, - audience=None, - certs_url=_GOOGLE_OAUTH2_CERTS_URL, - clock_skew_in_seconds=0, -): - """Verifies an ID token and returns the decoded token. - - Args: - id_token (Union[str, bytes]): The encoded token. - request (google.auth.transport.Request): The object used to make - HTTP requests. - audience (str or list): The audience or audiences that this token is - intended for. If None then the audience is not verified. - certs_url (str): The URL that specifies the certificates to use to - verify the token. This URL should return JSON in the format of - ``{'key id': 'x509 certificate'}``. - clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` - validation. - - Returns: - Mapping[str, Any]: The decoded token. - """ - certs = _fetch_certs(request, certs_url) - - return jwt.decode( - id_token, - certs=certs, - audience=audience, - clock_skew_in_seconds=clock_skew_in_seconds, - ) - - -def verify_oauth2_token(id_token, request, audience=None, clock_skew_in_seconds=0): - """Verifies an ID Token issued by Google's OAuth 2.0 authorization server. - - Args: - id_token (Union[str, bytes]): The encoded token. - request (google.auth.transport.Request): The object used to make - HTTP requests. - audience (str): The audience that this token is intended for. This is - typically your application's OAuth 2.0 client ID. If None then the - audience is not verified. - clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` - validation. - - Returns: - Mapping[str, Any]: The decoded token. - - Raises: - exceptions.GoogleAuthError: If the issuer is invalid. - ValueError: If token verification fails - """ - idinfo = verify_token( - id_token, - request, - audience=audience, - certs_url=_GOOGLE_OAUTH2_CERTS_URL, - clock_skew_in_seconds=clock_skew_in_seconds, - ) - - if idinfo["iss"] not in _GOOGLE_ISSUERS: - raise exceptions.GoogleAuthError( - "Wrong issuer. 'iss' should be one of the following: {}".format( - _GOOGLE_ISSUERS - ) - ) - - return idinfo - - -def verify_firebase_token(id_token, request, audience=None, clock_skew_in_seconds=0): - """Verifies an ID Token issued by Firebase Authentication. - - Args: - id_token (Union[str, bytes]): The encoded token. - request (google.auth.transport.Request): The object used to make - HTTP requests. - audience (str): The audience that this token is intended for. This is - typically your Firebase application ID. If None then the audience - is not verified. - clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` - validation. - - Returns: - Mapping[str, Any]: The decoded token. - """ - return verify_token( - id_token, - request, - audience=audience, - certs_url=_GOOGLE_APIS_CERTS_URL, - clock_skew_in_seconds=clock_skew_in_seconds, - ) - - -def fetch_id_token_credentials(audience, request=None): - """Create the ID Token credentials from the current environment. - - This function acquires ID token from the environment in the following order. - See https://google.aip.dev/auth/4110. - - 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set - to the path of a valid service account JSON file, then ID token is - acquired using this service account credentials. - 2. If the application is running in Compute Engine, App Engine or Cloud Run, - then the ID token are obtained from the metadata server. - 3. If metadata server doesn't exist and no valid service account credentials - are found, :class:`~google.auth.exceptions.DefaultCredentialsError` will - be raised. - - Example:: - - import google.oauth2.id_token - import google.auth.transport.requests - - request = google.auth.transport.requests.Request() - target_audience = "https://pubsub.googleapis.com" - - # Create ID token credentials. - credentials = google.oauth2.id_token.fetch_id_token_credentials(target_audience, request=request) - - # Refresh the credential to obtain an ID token. - credentials.refresh(request) - - id_token = credentials.token - id_token_expiry = credentials.expiry - - Args: - audience (str): The audience that this ID token is intended for. - request (Optional[google.auth.transport.Request]): A callable used to make - HTTP requests. A request object will be created if not provided. - - Returns: - google.auth.credentials.Credentials: The ID token credentials. - - Raises: - ~google.auth.exceptions.DefaultCredentialsError: - If metadata server doesn't exist and no valid service account - credentials are found. - """ - # 1. Try to get credentials from the GOOGLE_APPLICATION_CREDENTIALS environment - # variable. - credentials_filename = os.environ.get(environment_vars.CREDENTIALS) - if credentials_filename: - if not ( - os.path.exists(credentials_filename) - and os.path.isfile(credentials_filename) - ): - raise exceptions.DefaultCredentialsError( - "GOOGLE_APPLICATION_CREDENTIALS path is either not found or invalid." - ) - - try: - with open(credentials_filename, "r") as f: - from google.oauth2 import service_account - - info = json.load(f) - if info.get("type") == "service_account": - return service_account.IDTokenCredentials.from_service_account_info( - info, target_audience=audience - ) - except ValueError as caught_exc: - new_exc = exceptions.DefaultCredentialsError( - "GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.", - caught_exc, - ) - raise new_exc from caught_exc - - # 2. Try to fetch ID token from metada server if it exists. The code - # works for GAE and Cloud Run metadata server as well. - try: - from google.auth import compute_engine - from google.auth.compute_engine import _metadata - - # Create a request object if not provided. - if not request: - import google.auth.transport.requests - - request = google.auth.transport.requests.Request() - - if _metadata.ping(request): - return compute_engine.IDTokenCredentials( - request, audience, use_metadata_identity_endpoint=True - ) - except (ImportError, exceptions.TransportError): - pass - - raise exceptions.DefaultCredentialsError( - "Neither metadata server or valid service account credentials are found." - ) - - -def fetch_id_token(request, audience): - """Fetch the ID Token from the current environment. - - This function acquires ID token from the environment in the following order. - See https://google.aip.dev/auth/4110. - - 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set - to the path of a valid service account JSON file, then ID token is - acquired using this service account credentials. - 2. If the application is running in Compute Engine, App Engine or Cloud Run, - then the ID token are obtained from the metadata server. - 3. If metadata server doesn't exist and no valid service account credentials - are found, :class:`~google.auth.exceptions.DefaultCredentialsError` will - be raised. - - Example:: - - import google.oauth2.id_token - import google.auth.transport.requests - - request = google.auth.transport.requests.Request() - target_audience = "https://pubsub.googleapis.com" - - id_token = google.oauth2.id_token.fetch_id_token(request, target_audience) - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - audience (str): The audience that this ID token is intended for. - - Returns: - str: The ID token. - - Raises: - ~google.auth.exceptions.DefaultCredentialsError: - If metadata server doesn't exist and no valid service account - credentials are found. - """ - id_token_credentials = fetch_id_token_credentials(audience, request=request) - id_token_credentials.refresh(request) - return id_token_credentials.token diff --git a/venv/lib/python3.10/site-packages/google/oauth2/reauth.py b/venv/lib/python3.10/site-packages/google/oauth2/reauth.py deleted file mode 100644 index 5870347..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/reauth.py +++ /dev/null @@ -1,368 +0,0 @@ -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""A module that provides functions for handling rapt authentication. - -Reauth is a process of obtaining additional authentication (such as password, -security token, etc.) while refreshing OAuth 2.0 credentials for a user. - -Credentials that use the Reauth flow must have the reauth scope, -``https://www.googleapis.com/auth/accounts.reauth``. - -This module provides a high-level function for executing the Reauth process, -:func:`refresh_grant`, and lower-level helpers for doing the individual -steps of the reauth process. - -Those steps are: - -1. Obtaining a list of challenges from the reauth server. -2. Running through each challenge and sending the result back to the reauth - server. -3. Refreshing the access token using the returned rapt token. -""" - -import sys - -from google.auth import exceptions -from google.auth import metrics -from google.oauth2 import _client -from google.oauth2 import challenges - - -_REAUTH_SCOPE = "https://www.googleapis.com/auth/accounts.reauth" -_REAUTH_API = "https://reauth.googleapis.com/v2/sessions" - -_REAUTH_NEEDED_ERROR = "invalid_grant" -_REAUTH_NEEDED_ERROR_INVALID_RAPT = "invalid_rapt" -_REAUTH_NEEDED_ERROR_RAPT_REQUIRED = "rapt_required" - -_AUTHENTICATED = "AUTHENTICATED" -_CHALLENGE_REQUIRED = "CHALLENGE_REQUIRED" -_CHALLENGE_PENDING = "CHALLENGE_PENDING" - - -# Override this global variable to set custom max number of rounds of reauth -# challenges should be run. -RUN_CHALLENGE_RETRY_LIMIT = 5 - - -def is_interactive(): - """Check if we are in an interractive environment. - - Override this function with a different logic if you are using this library - outside a CLI. - - If the rapt token needs refreshing, the user needs to answer the challenges. - If the user is not in an interractive environment, the challenges can not - be answered and we just wait for timeout for no reason. - - Returns: - bool: True if is interactive environment, False otherwise. - """ - - return sys.stdin.isatty() - - -def _get_challenges( - request, supported_challenge_types, access_token, requested_scopes=None -): - """Does initial request to reauth API to get the challenges. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - supported_challenge_types (Sequence[str]): list of challenge names - supported by the manager. - access_token (str): Access token with reauth scopes. - requested_scopes (Optional(Sequence[str])): Authorized scopes for the credentials. - - Returns: - dict: The response from the reauth API. - """ - body = {"supportedChallengeTypes": supported_challenge_types} - if requested_scopes: - body["oauthScopesForDomainPolicyLookup"] = requested_scopes - metrics_header = {metrics.API_CLIENT_HEADER: metrics.reauth_start()} - - return _client._token_endpoint_request( - request, - _REAUTH_API + ":start", - body, - access_token=access_token, - use_json=True, - headers=metrics_header, - ) - - -def _send_challenge_result( - request, session_id, challenge_id, client_input, access_token -): - """Attempt to refresh access token by sending next challenge result. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - session_id (str): session id returned by the initial reauth call. - challenge_id (str): challenge id returned by the initial reauth call. - client_input: dict with a challenge-specific client input. For example: - ``{'credential': password}`` for password challenge. - access_token (str): Access token with reauth scopes. - - Returns: - dict: The response from the reauth API. - """ - body = { - "sessionId": session_id, - "challengeId": challenge_id, - "action": "RESPOND", - "proposalResponse": client_input, - } - metrics_header = {metrics.API_CLIENT_HEADER: metrics.reauth_continue()} - - return _client._token_endpoint_request( - request, - _REAUTH_API + "/{}:continue".format(session_id), - body, - access_token=access_token, - use_json=True, - headers=metrics_header, - ) - - -def _run_next_challenge(msg, request, access_token): - """Get the next challenge from msg and run it. - - Args: - msg (dict): Reauth API response body (either from the initial request to - https://reauth.googleapis.com/v2/sessions:start or from sending the - previous challenge response to - https://reauth.googleapis.com/v2/sessions/id:continue) - request (google.auth.transport.Request): A callable used to make - HTTP requests. - access_token (str): reauth access token - - Returns: - dict: The response from the reauth API. - - Raises: - google.auth.exceptions.ReauthError: if reauth failed. - """ - for challenge in msg["challenges"]: - if challenge["status"] != "READY": - # Skip non-activated challenges. - continue - c = challenges.AVAILABLE_CHALLENGES.get(challenge["challengeType"], None) - if not c: - raise exceptions.ReauthFailError( - "Unsupported challenge type {0}. Supported types: {1}".format( - challenge["challengeType"], - ",".join(list(challenges.AVAILABLE_CHALLENGES.keys())), - ) - ) - if not c.is_locally_eligible: - raise exceptions.ReauthFailError( - "Challenge {0} is not locally eligible".format( - challenge["challengeType"] - ) - ) - client_input = c.obtain_challenge_input(challenge) - if not client_input: - return None - return _send_challenge_result( - request, - msg["sessionId"], - challenge["challengeId"], - client_input, - access_token, - ) - return None - - -def _obtain_rapt(request, access_token, requested_scopes): - """Given an http request method and reauth access token, get rapt token. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - access_token (str): reauth access token - requested_scopes (Sequence[str]): scopes required by the client application - - Returns: - str: The rapt token. - - Raises: - google.auth.exceptions.ReauthError: if reauth failed - """ - msg = _get_challenges( - request, - list(challenges.AVAILABLE_CHALLENGES.keys()), - access_token, - requested_scopes, - ) - - if msg["status"] == _AUTHENTICATED: - return msg["encodedProofOfReauthToken"] - - for _ in range(0, RUN_CHALLENGE_RETRY_LIMIT): - if not ( - msg["status"] == _CHALLENGE_REQUIRED or msg["status"] == _CHALLENGE_PENDING - ): - raise exceptions.ReauthFailError( - "Reauthentication challenge failed due to API error: {}".format( - msg["status"] - ) - ) - - if not is_interactive(): - raise exceptions.ReauthFailError( - "Reauthentication challenge could not be answered because you are not" - " in an interactive session." - ) - - msg = _run_next_challenge(msg, request, access_token) - - if not msg: - raise exceptions.ReauthFailError("Failed to obtain rapt token.") - if msg["status"] == _AUTHENTICATED: - return msg["encodedProofOfReauthToken"] - - # If we got here it means we didn't get authenticated. - raise exceptions.ReauthFailError("Failed to obtain rapt token.") - - -def get_rapt_token( - request, client_id, client_secret, refresh_token, token_uri, scopes=None -): - """Given an http request method and refresh_token, get rapt token. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - client_id (str): client id to get access token for reauth scope. - client_secret (str): client secret for the client_id - refresh_token (str): refresh token to refresh access token - token_uri (str): uri to refresh access token - scopes (Optional(Sequence[str])): scopes required by the client application - - Returns: - str: The rapt token. - Raises: - google.auth.exceptions.RefreshError: If reauth failed. - """ - sys.stderr.write("Reauthentication required.\n") - - # Get access token for reauth. - access_token, _, _, _ = _client.refresh_grant( - request=request, - client_id=client_id, - client_secret=client_secret, - refresh_token=refresh_token, - token_uri=token_uri, - scopes=[_REAUTH_SCOPE], - ) - - # Get rapt token from reauth API. - rapt_token = _obtain_rapt(request, access_token, requested_scopes=scopes) - - return rapt_token - - -def refresh_grant( - request, - token_uri, - refresh_token, - client_id, - client_secret, - scopes=None, - rapt_token=None, - enable_reauth_refresh=False, -): - """Implements the reauthentication flow. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - token_uri (str): The OAuth 2.0 authorizations server's token endpoint - URI. - refresh_token (str): The refresh token to use to get a new access - token. - client_id (str): The OAuth 2.0 application's client ID. - client_secret (str): The Oauth 2.0 appliaction's client secret. - scopes (Optional(Sequence[str])): Scopes to request. If present, all - scopes must be authorized for the refresh token. Useful if refresh - token has a wild card scope (e.g. - 'https://www.googleapis.com/auth/any-api'). - rapt_token (Optional(str)): The rapt token for reauth. - enable_reauth_refresh (Optional[bool]): Whether reauth refresh flow - should be used. The default value is False. This option is for - gcloud only, other users should use the default value. - - Returns: - Tuple[str, Optional[str], Optional[datetime], Mapping[str, str], str]: The - access token, new refresh token, expiration, the additional data - returned by the token endpoint, and the rapt token. - - Raises: - google.auth.exceptions.RefreshError: If the token endpoint returned - an error. - """ - body = { - "grant_type": _client._REFRESH_GRANT_TYPE, - "client_id": client_id, - "client_secret": client_secret, - "refresh_token": refresh_token, - } - if scopes: - body["scope"] = " ".join(scopes) - if rapt_token: - body["rapt"] = rapt_token - metrics_header = {metrics.API_CLIENT_HEADER: metrics.token_request_user()} - - response_status_ok, response_data, retryable_error = _client._token_endpoint_request_no_throw( - request, token_uri, body, headers=metrics_header - ) - - if not response_status_ok and isinstance(response_data, str): - raise exceptions.RefreshError(response_data, retryable=False) - - if ( - not response_status_ok - and response_data.get("error") == _REAUTH_NEEDED_ERROR - and ( - response_data.get("error_subtype") == _REAUTH_NEEDED_ERROR_INVALID_RAPT - or response_data.get("error_subtype") == _REAUTH_NEEDED_ERROR_RAPT_REQUIRED - ) - ): - if not enable_reauth_refresh: - raise exceptions.RefreshError( - "Reauthentication is needed. Please run `gcloud auth application-default login` to reauthenticate." - ) - - rapt_token = get_rapt_token( - request, client_id, client_secret, refresh_token, token_uri, scopes=scopes - ) - body["rapt"] = rapt_token - ( - response_status_ok, - response_data, - retryable_error, - ) = _client._token_endpoint_request_no_throw( - request, token_uri, body, headers=metrics_header - ) - - if not response_status_ok: - _client._handle_error_response(response_data, retryable_error) - return _client._handle_refresh_grant_response(response_data, refresh_token) + ( - rapt_token, - ) diff --git a/venv/lib/python3.10/site-packages/google/oauth2/service_account.py b/venv/lib/python3.10/site-packages/google/oauth2/service_account.py deleted file mode 100644 index 04fd779..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/service_account.py +++ /dev/null @@ -1,829 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Service Accounts: JSON Web Token (JWT) Profile for OAuth 2.0 - -This module implements the JWT Profile for OAuth 2.0 Authorization Grants -as defined by `RFC 7523`_ with particular support for how this RFC is -implemented in Google's infrastructure. Google refers to these credentials -as *Service Accounts*. - -Service accounts are used for server-to-server communication, such as -interactions between a web application server and a Google service. The -service account belongs to your application instead of to an individual end -user. In contrast to other OAuth 2.0 profiles, no users are involved and your -application "acts" as the service account. - -Typically an application uses a service account when the application uses -Google APIs to work with its own data rather than a user's data. For example, -an application that uses Google Cloud Datastore for data persistence would use -a service account to authenticate its calls to the Google Cloud Datastore API. -However, an application that needs to access a user's Drive documents would -use the normal OAuth 2.0 profile. - -Additionally, Google Apps domain administrators can grant service accounts -`domain-wide delegation`_ authority to access user data on behalf of users in -the domain. - -This profile uses a JWT to acquire an OAuth 2.0 access token. The JWT is used -in place of the usual authorization token returned during the standard -OAuth 2.0 Authorization Code grant. The JWT is only used for this purpose, as -the acquired access token is used as the bearer token when making requests -using these credentials. - -This profile differs from normal OAuth 2.0 profile because no user consent -step is required. The use of the private key allows this profile to assert -identity directly. - -This profile also differs from the :mod:`google.auth.jwt` authentication -because the JWT credentials use the JWT directly as the bearer token. This -profile instead only uses the JWT to obtain an OAuth 2.0 access token. The -obtained OAuth 2.0 access token is used as the bearer token. - -Domain-wide delegation ----------------------- - -Domain-wide delegation allows a service account to access user data on -behalf of any user in a Google Apps domain without consent from the user. -For example, an application that uses the Google Calendar API to add events to -the calendars of all users in a Google Apps domain would use a service account -to access the Google Calendar API on behalf of users. - -The Google Apps administrator must explicitly authorize the service account to -do this. This authorization step is referred to as "delegating domain-wide -authority" to a service account. - -You can use domain-wise delegation by creating a set of credentials with a -specific subject using :meth:`~Credentials.with_subject`. - -.. _RFC 7523: https://tools.ietf.org/html/rfc7523 -""" - -import copy -import datetime - -from google.auth import _helpers -from google.auth import _service_account_info -from google.auth import credentials -from google.auth import exceptions -from google.auth import jwt -from google.auth import metrics -from google.oauth2 import _client - -_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds -_GOOGLE_OAUTH2_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token" - - -class Credentials( - credentials.Signing, - credentials.Scoped, - credentials.CredentialsWithQuotaProject, - credentials.CredentialsWithTokenUri, -): - """Service account credentials - - Usually, you'll create these credentials with one of the helper - constructors. To create credentials using a Google service account - private key JSON file:: - - credentials = service_account.Credentials.from_service_account_file( - 'service-account.json') - - Or if you already have the service account file loaded:: - - service_account_info = json.load(open('service_account.json')) - credentials = service_account.Credentials.from_service_account_info( - service_account_info) - - Both helper methods pass on arguments to the constructor, so you can - specify additional scopes and a subject if necessary:: - - credentials = service_account.Credentials.from_service_account_file( - 'service-account.json', - scopes=['email'], - subject='user@example.com') - - The credentials are considered immutable. If you want to modify the scopes - or the subject used for delegation, use :meth:`with_scopes` or - :meth:`with_subject`:: - - scoped_credentials = credentials.with_scopes(['email']) - delegated_credentials = credentials.with_subject(subject) - - To add a quota project, use :meth:`with_quota_project`:: - - credentials = credentials.with_quota_project('myproject-123') - """ - - def __init__( - self, - signer, - service_account_email, - token_uri, - scopes=None, - default_scopes=None, - subject=None, - project_id=None, - quota_project_id=None, - additional_claims=None, - always_use_jwt_access=False, - universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, - trust_boundary=None, - ): - """ - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - service_account_email (str): The service account's email. - scopes (Sequence[str]): User-defined scopes to request during the - authorization grant. - default_scopes (Sequence[str]): Default scopes passed by a - Google client library. Use 'scopes' for user-defined scopes. - token_uri (str): The OAuth 2.0 Token URI. - subject (str): For domain-wide delegation, the email address of the - user to for which to request delegated access. - project_id (str): Project ID associated with the service account - credential. - quota_project_id (Optional[str]): The project ID used for quota and - billing. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT assertion used in the authorization grant. - always_use_jwt_access (Optional[bool]): Whether self signed JWT should - be always used. - universe_domain (str): The universe domain. The default - universe domain is googleapis.com. For default value self - signed jwt is used for token refresh. - trust_boundary (str): String representation of trust boundary meta. - - .. note:: Typically one of the helper constructors - :meth:`from_service_account_file` or - :meth:`from_service_account_info` are used instead of calling the - constructor directly. - """ - super(Credentials, self).__init__() - - self._scopes = scopes - self._default_scopes = default_scopes - self._signer = signer - self._service_account_email = service_account_email - self._subject = subject - self._project_id = project_id - self._quota_project_id = quota_project_id - self._token_uri = token_uri - self._always_use_jwt_access = always_use_jwt_access - self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN - - if universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: - self._always_use_jwt_access = True - - self._jwt_credentials = None - - if additional_claims is not None: - self._additional_claims = additional_claims - else: - self._additional_claims = {} - self._trust_boundary = {"locations": [], "encoded_locations": "0x0"} - - @classmethod - def _from_signer_and_info(cls, signer, info, **kwargs): - """Creates a Credentials instance from a signer and service account - info. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - info (Mapping[str, str]): The service account info. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.Credentials: The constructed credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - return cls( - signer, - service_account_email=info["client_email"], - token_uri=info["token_uri"], - project_id=info.get("project_id"), - universe_domain=info.get( - "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN - ), - trust_boundary=info.get("trust_boundary"), - **kwargs - ) - - @classmethod - def from_service_account_info(cls, info, **kwargs): - """Creates a Credentials instance from parsed service account info. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.service_account.Credentials: The constructed - credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - signer = _service_account_info.from_dict( - info, require=["client_email", "token_uri"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_service_account_file(cls, filename, **kwargs): - """Creates a Credentials instance from a service account json file. - - Args: - filename (str): The path to the service account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.service_account.Credentials: The constructed - credentials. - """ - info, signer = _service_account_info.from_filename( - filename, require=["client_email", "token_uri"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - @property - def service_account_email(self): - """The service account email.""" - return self._service_account_email - - @property - def project_id(self): - """Project ID associated with this credential.""" - return self._project_id - - @property - def requires_scopes(self): - """Checks if the credentials requires scopes. - - Returns: - bool: True if there are no scopes set otherwise False. - """ - return True if not self._scopes else False - - def _make_copy(self): - cred = self.__class__( - self._signer, - service_account_email=self._service_account_email, - scopes=copy.copy(self._scopes), - default_scopes=copy.copy(self._default_scopes), - token_uri=self._token_uri, - subject=self._subject, - project_id=self._project_id, - quota_project_id=self._quota_project_id, - additional_claims=self._additional_claims.copy(), - always_use_jwt_access=self._always_use_jwt_access, - universe_domain=self._universe_domain, - ) - return cred - - @_helpers.copy_docstring(credentials.Scoped) - def with_scopes(self, scopes, default_scopes=None): - cred = self._make_copy() - cred._scopes = scopes - cred._default_scopes = default_scopes - return cred - - def with_always_use_jwt_access(self, always_use_jwt_access): - """Create a copy of these credentials with the specified always_use_jwt_access value. - - Args: - always_use_jwt_access (bool): Whether always use self signed JWT or not. - - Returns: - google.auth.service_account.Credentials: A new credentials - instance. - Raises: - google.auth.exceptions.InvalidValue: If the universe domain is not - default and always_use_jwt_access is False. - """ - cred = self._make_copy() - if ( - cred._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN - and not always_use_jwt_access - ): - raise exceptions.InvalidValue( - "always_use_jwt_access should be True for non-default universe domain" - ) - cred._always_use_jwt_access = always_use_jwt_access - return cred - - @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) - def with_universe_domain(self, universe_domain): - cred = self._make_copy() - cred._universe_domain = universe_domain - if universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: - cred._always_use_jwt_access = True - return cred - - def with_subject(self, subject): - """Create a copy of these credentials with the specified subject. - - Args: - subject (str): The subject claim. - - Returns: - google.auth.service_account.Credentials: A new credentials - instance. - """ - cred = self._make_copy() - cred._subject = subject - return cred - - def with_claims(self, additional_claims): - """Returns a copy of these credentials with modified claims. - - Args: - additional_claims (Mapping[str, str]): Any additional claims for - the JWT payload. This will be merged with the current - additional claims. - - Returns: - google.auth.service_account.Credentials: A new credentials - instance. - """ - new_additional_claims = copy.deepcopy(self._additional_claims) - new_additional_claims.update(additional_claims or {}) - cred = self._make_copy() - cred._additional_claims = new_additional_claims - return cred - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - cred = self._make_copy() - cred._quota_project_id = quota_project_id - return cred - - @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) - def with_token_uri(self, token_uri): - cred = self._make_copy() - cred._token_uri = token_uri - return cred - - def _make_authorization_grant_assertion(self): - """Create the OAuth 2.0 assertion. - - This assertion is used during the OAuth 2.0 grant to acquire an - access token. - - Returns: - bytes: The authorization grant assertion. - """ - now = _helpers.utcnow() - lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) - expiry = now + lifetime - - payload = { - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - # The issuer must be the service account email. - "iss": self._service_account_email, - # The audience must be the auth token endpoint's URI - "aud": _GOOGLE_OAUTH2_TOKEN_ENDPOINT, - "scope": _helpers.scopes_to_string(self._scopes or ()), - } - - payload.update(self._additional_claims) - - # The subject can be a user email for domain-wide delegation. - if self._subject: - payload.setdefault("sub", self._subject) - - token = jwt.encode(self._signer, payload) - - return token - - def _use_self_signed_jwt(self): - # Since domain wide delegation doesn't work with self signed JWT. If - # subject exists, then we should not use self signed JWT. - return self._subject is None and self._jwt_credentials is not None - - def _metric_header_for_usage(self): - if self._use_self_signed_jwt(): - return metrics.CRED_TYPE_SA_JWT - return metrics.CRED_TYPE_SA_ASSERTION - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - if self._always_use_jwt_access and not self._jwt_credentials: - # If self signed jwt should be used but jwt credential is not - # created, try to create one with scopes - self._create_self_signed_jwt(None) - - if ( - self._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN - and self._subject - ): - raise exceptions.RefreshError( - "domain wide delegation is not supported for non-default universe domain" - ) - - if self._use_self_signed_jwt(): - self._jwt_credentials.refresh(request) - self.token = self._jwt_credentials.token.decode() - self.expiry = self._jwt_credentials.expiry - else: - assertion = self._make_authorization_grant_assertion() - access_token, expiry, _ = _client.jwt_grant( - request, self._token_uri, assertion - ) - self.token = access_token - self.expiry = expiry - - def _create_self_signed_jwt(self, audience): - """Create a self-signed JWT from the credentials if requirements are met. - - Args: - audience (str): The service URL. ``https://[API_ENDPOINT]/`` - """ - # https://google.aip.dev/auth/4111 - if self._always_use_jwt_access: - if self._scopes: - additional_claims = {"scope": " ".join(self._scopes)} - if ( - self._jwt_credentials is None - or self._jwt_credentials.additional_claims != additional_claims - ): - self._jwt_credentials = jwt.Credentials.from_signing_credentials( - self, None, additional_claims=additional_claims - ) - elif audience: - if ( - self._jwt_credentials is None - or self._jwt_credentials._audience != audience - ): - - self._jwt_credentials = jwt.Credentials.from_signing_credentials( - self, audience - ) - elif self._default_scopes: - additional_claims = {"scope": " ".join(self._default_scopes)} - if ( - self._jwt_credentials is None - or additional_claims != self._jwt_credentials.additional_claims - ): - self._jwt_credentials = jwt.Credentials.from_signing_credentials( - self, None, additional_claims=additional_claims - ) - elif not self._scopes and audience: - self._jwt_credentials = jwt.Credentials.from_signing_credentials( - self, audience - ) - - @_helpers.copy_docstring(credentials.Signing) - def sign_bytes(self, message): - return self._signer.sign(message) - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer(self): - return self._signer - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer_email(self): - return self._service_account_email - - -class IDTokenCredentials( - credentials.Signing, - credentials.CredentialsWithQuotaProject, - credentials.CredentialsWithTokenUri, -): - """Open ID Connect ID Token-based service account credentials. - - These credentials are largely similar to :class:`.Credentials`, but instead - of using an OAuth 2.0 Access Token as the bearer token, they use an Open - ID Connect ID Token as the bearer token. These credentials are useful when - communicating to services that require ID Tokens and can not accept access - tokens. - - Usually, you'll create these credentials with one of the helper - constructors. To create credentials using a Google service account - private key JSON file:: - - credentials = ( - service_account.IDTokenCredentials.from_service_account_file( - 'service-account.json')) - - - Or if you already have the service account file loaded:: - - service_account_info = json.load(open('service_account.json')) - credentials = ( - service_account.IDTokenCredentials.from_service_account_info( - service_account_info)) - - - Both helper methods pass on arguments to the constructor, so you can - specify additional scopes and a subject if necessary:: - - credentials = ( - service_account.IDTokenCredentials.from_service_account_file( - 'service-account.json', - scopes=['email'], - subject='user@example.com')) - - - The credentials are considered immutable. If you want to modify the scopes - or the subject used for delegation, use :meth:`with_scopes` or - :meth:`with_subject`:: - - scoped_credentials = credentials.with_scopes(['email']) - delegated_credentials = credentials.with_subject(subject) - - """ - - def __init__( - self, - signer, - service_account_email, - token_uri, - target_audience, - additional_claims=None, - quota_project_id=None, - universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, - ): - """ - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - service_account_email (str): The service account's email. - token_uri (str): The OAuth 2.0 Token URI. - target_audience (str): The intended audience for these credentials, - used when requesting the ID Token. The ID Token's ``aud`` claim - will be set to this string. - additional_claims (Mapping[str, str]): Any additional claims for - the JWT assertion used in the authorization grant. - quota_project_id (Optional[str]): The project ID used for quota and billing. - universe_domain (str): The universe domain. The default - universe domain is googleapis.com. For default value IAM ID - token endponint is used for token refresh. Note that - iam.serviceAccountTokenCreator role is required to use the IAM - endpoint. - .. note:: Typically one of the helper constructors - :meth:`from_service_account_file` or - :meth:`from_service_account_info` are used instead of calling the - constructor directly. - """ - super(IDTokenCredentials, self).__init__() - self._signer = signer - self._service_account_email = service_account_email - self._token_uri = token_uri - self._target_audience = target_audience - self._quota_project_id = quota_project_id - self._use_iam_endpoint = False - - if not universe_domain: - self._universe_domain = credentials.DEFAULT_UNIVERSE_DOMAIN - else: - self._universe_domain = universe_domain - - if universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: - self._use_iam_endpoint = True - - if additional_claims is not None: - self._additional_claims = additional_claims - else: - self._additional_claims = {} - - @classmethod - def _from_signer_and_info(cls, signer, info, **kwargs): - """Creates a credentials instance from a signer and service account - info. - - Args: - signer (google.auth.crypt.Signer): The signer used to sign JWTs. - info (Mapping[str, str]): The service account info. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.jwt.IDTokenCredentials: The constructed credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - kwargs.setdefault("service_account_email", info["client_email"]) - kwargs.setdefault("token_uri", info["token_uri"]) - if "universe_domain" in info: - kwargs["universe_domain"] = info["universe_domain"] - return cls(signer, **kwargs) - - @classmethod - def from_service_account_info(cls, info, **kwargs): - """Creates a credentials instance from parsed service account info. - - Args: - info (Mapping[str, str]): The service account info in Google - format. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.service_account.IDTokenCredentials: The constructed - credentials. - - Raises: - ValueError: If the info is not in the expected format. - """ - signer = _service_account_info.from_dict( - info, require=["client_email", "token_uri"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - @classmethod - def from_service_account_file(cls, filename, **kwargs): - """Creates a credentials instance from a service account json file. - - Args: - filename (str): The path to the service account json file. - kwargs: Additional arguments to pass to the constructor. - - Returns: - google.auth.service_account.IDTokenCredentials: The constructed - credentials. - """ - info, signer = _service_account_info.from_filename( - filename, require=["client_email", "token_uri"] - ) - return cls._from_signer_and_info(signer, info, **kwargs) - - def _make_copy(self): - cred = self.__class__( - self._signer, - service_account_email=self._service_account_email, - token_uri=self._token_uri, - target_audience=self._target_audience, - additional_claims=self._additional_claims.copy(), - quota_project_id=self.quota_project_id, - universe_domain=self._universe_domain, - ) - # _use_iam_endpoint is not exposed in the constructor - cred._use_iam_endpoint = self._use_iam_endpoint - return cred - - def with_target_audience(self, target_audience): - """Create a copy of these credentials with the specified target - audience. - - Args: - target_audience (str): The intended audience for these credentials, - used when requesting the ID Token. - - Returns: - google.auth.service_account.IDTokenCredentials: A new credentials - instance. - """ - cred = self._make_copy() - cred._target_audience = target_audience - return cred - - def _with_use_iam_endpoint(self, use_iam_endpoint): - """Create a copy of these credentials with the use_iam_endpoint value. - - Args: - use_iam_endpoint (bool): If True, IAM generateIdToken endpoint will - be used instead of the token_uri. Note that - iam.serviceAccountTokenCreator role is required to use the IAM - endpoint. The default value is False. This feature is currently - experimental and subject to change without notice. - - Returns: - google.auth.service_account.IDTokenCredentials: A new credentials - instance. - Raises: - google.auth.exceptions.InvalidValue: If the universe domain is not - default and use_iam_endpoint is False. - """ - cred = self._make_copy() - if ( - cred._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN - and not use_iam_endpoint - ): - raise exceptions.InvalidValue( - "use_iam_endpoint should be True for non-default universe domain" - ) - cred._use_iam_endpoint = use_iam_endpoint - return cred - - @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) - def with_quota_project(self, quota_project_id): - cred = self._make_copy() - cred._quota_project_id = quota_project_id - return cred - - @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) - def with_token_uri(self, token_uri): - cred = self._make_copy() - cred._token_uri = token_uri - return cred - - def _make_authorization_grant_assertion(self): - """Create the OAuth 2.0 assertion. - - This assertion is used during the OAuth 2.0 grant to acquire an - ID token. - - Returns: - bytes: The authorization grant assertion. - """ - now = _helpers.utcnow() - lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) - expiry = now + lifetime - - payload = { - "iat": _helpers.datetime_to_secs(now), - "exp": _helpers.datetime_to_secs(expiry), - # The issuer must be the service account email. - "iss": self.service_account_email, - # The audience must be the auth token endpoint's URI - "aud": _GOOGLE_OAUTH2_TOKEN_ENDPOINT, - # The target audience specifies which service the ID token is - # intended for. - "target_audience": self._target_audience, - } - - payload.update(self._additional_claims) - - token = jwt.encode(self._signer, payload) - - return token - - def _refresh_with_iam_endpoint(self, request): - """Use IAM generateIdToken endpoint to obtain an ID token. - - It works as follows: - - 1. First we create a self signed jwt with - https://www.googleapis.com/auth/iam being the scope. - - 2. Next we use the self signed jwt as the access token, and make a POST - request to IAM generateIdToken endpoint. The request body is: - { - "audience": self._target_audience, - "includeEmail": "true", - "useEmailAzp": "true", - } - - If the request is succesfully, it will return {"token":"the ID token"}, - and we can extract the ID token and compute its expiry. - """ - jwt_credentials = jwt.Credentials.from_signing_credentials( - self, - None, - additional_claims={"scope": "https://www.googleapis.com/auth/iam"}, - ) - jwt_credentials.refresh(request) - self.token, self.expiry = _client.call_iam_generate_id_token_endpoint( - request, - self.signer_email, - self._target_audience, - jwt_credentials.token.decode(), - ) - - @_helpers.copy_docstring(credentials.Credentials) - def refresh(self, request): - if self._use_iam_endpoint: - self._refresh_with_iam_endpoint(request) - else: - assertion = self._make_authorization_grant_assertion() - access_token, expiry, _ = _client.id_token_jwt_grant( - request, self._token_uri, assertion - ) - self.token = access_token - self.expiry = expiry - - @property - def service_account_email(self): - """The service account email.""" - return self._service_account_email - - @_helpers.copy_docstring(credentials.Signing) - def sign_bytes(self, message): - return self._signer.sign(message) - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer(self): - return self._signer - - @property # type: ignore - @_helpers.copy_docstring(credentials.Signing) - def signer_email(self): - return self._service_account_email diff --git a/venv/lib/python3.10/site-packages/google/oauth2/sts.py b/venv/lib/python3.10/site-packages/google/oauth2/sts.py deleted file mode 100644 index ad39627..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/sts.py +++ /dev/null @@ -1,176 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""OAuth 2.0 Token Exchange Spec. - -This module defines a token exchange utility based on the `OAuth 2.0 Token -Exchange`_ spec. This will be mainly used to exchange external credentials -for GCP access tokens in workload identity pools to access Google APIs. - -The implementation will support various types of client authentication as -allowed in the spec. - -A deviation on the spec will be for additional Google specific options that -cannot be easily mapped to parameters defined in the RFC. - -The returned dictionary response will be based on the `rfc8693 section 2.2.1`_ -spec JSON response. - -.. _OAuth 2.0 Token Exchange: https://tools.ietf.org/html/rfc8693 -.. _rfc8693 section 2.2.1: https://tools.ietf.org/html/rfc8693#section-2.2.1 -""" - -import http.client as http_client -import json -import urllib - -from google.oauth2 import utils - - -_URLENCODED_HEADERS = {"Content-Type": "application/x-www-form-urlencoded"} - - -class Client(utils.OAuthClientAuthHandler): - """Implements the OAuth 2.0 token exchange spec based on - https://tools.ietf.org/html/rfc8693. - """ - - def __init__(self, token_exchange_endpoint, client_authentication=None): - """Initializes an STS client instance. - - Args: - token_exchange_endpoint (str): The token exchange endpoint. - client_authentication (Optional(google.oauth2.oauth2_utils.ClientAuthentication)): - The optional OAuth client authentication credentials if available. - """ - super(Client, self).__init__(client_authentication) - self._token_exchange_endpoint = token_exchange_endpoint - - def _make_request(self, request, headers, request_body): - # Initialize request headers. - request_headers = _URLENCODED_HEADERS.copy() - - # Inject additional headers. - if headers: - for k, v in dict(headers).items(): - request_headers[k] = v - - # Apply OAuth client authentication. - self.apply_client_authentication_options(request_headers, request_body) - - # Execute request. - response = request( - url=self._token_exchange_endpoint, - method="POST", - headers=request_headers, - body=urllib.parse.urlencode(request_body).encode("utf-8"), - ) - - response_body = ( - response.data.decode("utf-8") - if hasattr(response.data, "decode") - else response.data - ) - - # If non-200 response received, translate to OAuthError exception. - if response.status != http_client.OK: - utils.handle_error_response(response_body) - - response_data = json.loads(response_body) - - # Return successful response. - return response_data - - def exchange_token( - self, - request, - grant_type, - subject_token, - subject_token_type, - resource=None, - audience=None, - scopes=None, - requested_token_type=None, - actor_token=None, - actor_token_type=None, - additional_options=None, - additional_headers=None, - ): - """Exchanges the provided token for another type of token based on the - rfc8693 spec. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - grant_type (str): The OAuth 2.0 token exchange grant type. - subject_token (str): The OAuth 2.0 token exchange subject token. - subject_token_type (str): The OAuth 2.0 token exchange subject token type. - resource (Optional[str]): The optional OAuth 2.0 token exchange resource field. - audience (Optional[str]): The optional OAuth 2.0 token exchange audience field. - scopes (Optional[Sequence[str]]): The optional list of scopes to use. - requested_token_type (Optional[str]): The optional OAuth 2.0 token exchange requested - token type. - actor_token (Optional[str]): The optional OAuth 2.0 token exchange actor token. - actor_token_type (Optional[str]): The optional OAuth 2.0 token exchange actor token type. - additional_options (Optional[Mapping[str, str]]): The optional additional - non-standard Google specific options. - additional_headers (Optional[Mapping[str, str]]): The optional additional - headers to pass to the token exchange endpoint. - - Returns: - Mapping[str, str]: The token exchange JSON-decoded response data containing - the requested token and its expiration time. - - Raises: - google.auth.exceptions.OAuthError: If the token endpoint returned - an error. - """ - # Initialize request body. - request_body = { - "grant_type": grant_type, - "resource": resource, - "audience": audience, - "scope": " ".join(scopes or []), - "requested_token_type": requested_token_type, - "subject_token": subject_token, - "subject_token_type": subject_token_type, - "actor_token": actor_token, - "actor_token_type": actor_token_type, - "options": None, - } - # Add additional non-standard options. - if additional_options: - request_body["options"] = urllib.parse.quote(json.dumps(additional_options)) - # Remove empty fields in request body. - for k, v in dict(request_body).items(): - if v is None or v == "": - del request_body[k] - - return self._make_request(request, additional_headers, request_body) - - def refresh_token(self, request, refresh_token): - """Exchanges a refresh token for an access token based on the - RFC6749 spec. - - Args: - request (google.auth.transport.Request): A callable used to make - HTTP requests. - subject_token (str): The OAuth 2.0 refresh token. - """ - - return self._make_request( - request, - None, - {"grant_type": "refresh_token", "refresh_token": refresh_token}, - ) diff --git a/venv/lib/python3.10/site-packages/google/oauth2/utils.py b/venv/lib/python3.10/site-packages/google/oauth2/utils.py deleted file mode 100644 index d72ff19..0000000 --- a/venv/lib/python3.10/site-packages/google/oauth2/utils.py +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""OAuth 2.0 Utilities. - -This module provides implementations for various OAuth 2.0 utilities. -This includes `OAuth error handling`_ and -`Client authentication for OAuth flows`_. - -OAuth error handling --------------------- -This will define interfaces for handling OAuth related error responses as -stated in `RFC 6749 section 5.2`_. -This will include a common function to convert these HTTP error responses to a -:class:`google.auth.exceptions.OAuthError` exception. - - -Client authentication for OAuth flows -------------------------------------- -We introduce an interface for defining client authentication credentials based -on `RFC 6749 section 2.3.1`_. This will expose the following -capabilities: - - * Ability to support basic authentication via request header. - * Ability to support bearer token authentication via request header. - * Ability to support client ID / secret authentication via request body. - -.. _RFC 6749 section 2.3.1: https://tools.ietf.org/html/rfc6749#section-2.3.1 -.. _RFC 6749 section 5.2: https://tools.ietf.org/html/rfc6749#section-5.2 -""" - -import abc -import base64 -import enum -import json - -from google.auth import exceptions - - -# OAuth client authentication based on -# https://tools.ietf.org/html/rfc6749#section-2.3. -class ClientAuthType(enum.Enum): - basic = 1 - request_body = 2 - - -class ClientAuthentication(object): - """Defines the client authentication credentials for basic and request-body - types based on https://tools.ietf.org/html/rfc6749#section-2.3.1. - """ - - def __init__(self, client_auth_type, client_id, client_secret=None): - """Instantiates a client authentication object containing the client ID - and secret credentials for basic and response-body auth. - - Args: - client_auth_type (google.oauth2.oauth_utils.ClientAuthType): The - client authentication type. - client_id (str): The client ID. - client_secret (Optional[str]): The client secret. - """ - self.client_auth_type = client_auth_type - self.client_id = client_id - self.client_secret = client_secret - - -class OAuthClientAuthHandler(metaclass=abc.ABCMeta): - """Abstract class for handling client authentication in OAuth-based - operations. - """ - - def __init__(self, client_authentication=None): - """Instantiates an OAuth client authentication handler. - - Args: - client_authentication (Optional[google.oauth2.utils.ClientAuthentication]): - The OAuth client authentication credentials if available. - """ - super(OAuthClientAuthHandler, self).__init__() - self._client_authentication = client_authentication - - def apply_client_authentication_options( - self, headers, request_body=None, bearer_token=None - ): - """Applies client authentication on the OAuth request's headers or POST - body. - - Args: - headers (Mapping[str, str]): The HTTP request header. - request_body (Optional[Mapping[str, str]]): The HTTP request body - dictionary. For requests that do not support request body, this - is None and will be ignored. - bearer_token (Optional[str]): The optional bearer token. - """ - # Inject authenticated header. - self._inject_authenticated_headers(headers, bearer_token) - # Inject authenticated request body. - if bearer_token is None: - self._inject_authenticated_request_body(request_body) - - def _inject_authenticated_headers(self, headers, bearer_token=None): - if bearer_token is not None: - headers["Authorization"] = "Bearer %s" % bearer_token - elif ( - self._client_authentication is not None - and self._client_authentication.client_auth_type is ClientAuthType.basic - ): - username = self._client_authentication.client_id - password = self._client_authentication.client_secret or "" - - credentials = base64.b64encode( - ("%s:%s" % (username, password)).encode() - ).decode() - headers["Authorization"] = "Basic %s" % credentials - - def _inject_authenticated_request_body(self, request_body): - if ( - self._client_authentication is not None - and self._client_authentication.client_auth_type - is ClientAuthType.request_body - ): - if request_body is None: - raise exceptions.OAuthError( - "HTTP request does not support request-body" - ) - else: - request_body["client_id"] = self._client_authentication.client_id - request_body["client_secret"] = ( - self._client_authentication.client_secret or "" - ) - - -def handle_error_response(response_body): - """Translates an error response from an OAuth operation into an - OAuthError exception. - - Args: - response_body (str): The decoded response data. - - Raises: - google.auth.exceptions.OAuthError - """ - try: - error_components = [] - error_data = json.loads(response_body) - - error_components.append("Error code {}".format(error_data["error"])) - if "error_description" in error_data: - error_components.append(": {}".format(error_data["error_description"])) - if "error_uri" in error_data: - error_components.append(" - {}".format(error_data["error_uri"])) - error_details = "".join(error_components) - # If no details could be extracted, use the response data. - except (KeyError, ValueError): - error_details = response_body - - raise exceptions.OAuthError(error_details, response_body) diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/LICENSE b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/METADATA b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/METADATA deleted file mode 100644 index e078565..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/METADATA +++ /dev/null @@ -1,135 +0,0 @@ -Metadata-Version: 2.1 -Name: google-auth -Version: 2.29.0 -Summary: Google Authentication Library -Home-page: https://github.com/googleapis/google-auth-library-python -Author: Google Cloud Platform -Author-email: googleapis-packages@google.com -License: Apache 2.0 -Keywords: google auth oauth client -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Apache Software License -Classifier: Operating System :: POSIX -Classifier: Operating System :: Microsoft :: Windows -Classifier: Operating System :: MacOS :: MacOS X -Classifier: Operating System :: OS Independent -Classifier: Topic :: Internet :: WWW/HTTP -Requires-Python: >=3.7 -License-File: LICENSE -Requires-Dist: cachetools <6.0,>=2.0.0 -Requires-Dist: pyasn1-modules >=0.2.1 -Requires-Dist: rsa <5,>=3.1.4 -Provides-Extra: aiohttp -Requires-Dist: aiohttp <4.0.0.dev0,>=3.6.2 ; extra == 'aiohttp' -Requires-Dist: requests <3.0.0.dev0,>=2.20.0 ; extra == 'aiohttp' -Provides-Extra: enterprise_cert -Requires-Dist: cryptography ==36.0.2 ; extra == 'enterprise_cert' -Requires-Dist: pyopenssl ==22.0.0 ; extra == 'enterprise_cert' -Provides-Extra: pyopenssl -Requires-Dist: pyopenssl >=20.0.0 ; extra == 'pyopenssl' -Requires-Dist: cryptography >=38.0.3 ; extra == 'pyopenssl' -Provides-Extra: reauth -Requires-Dist: pyu2f >=0.1.5 ; extra == 'reauth' -Provides-Extra: requests -Requires-Dist: requests <3.0.0.dev0,>=2.20.0 ; extra == 'requests' - -Google Auth Python Library -========================== - -|pypi| - -This library simplifies using Google's various server-to-server authentication -mechanisms to access Google APIs. - -.. |pypi| image:: https://img.shields.io/pypi/v/google-auth.svg - :target: https://pypi.python.org/pypi/google-auth - -Installing ----------- - -You can install using `pip`_:: - - $ pip install google-auth - -.. _pip: https://pip.pypa.io/en/stable/ - -For more information on setting up your Python development environment, please refer to `Python Development Environment Setup Guide`_ for Google Cloud Platform. - -.. _`Python Development Environment Setup Guide`: https://cloud.google.com/python/docs/setup - -Extras ------- - -google-auth has few extras that you can install. For example:: - - $ pip install google-auth[pyopenssl] - -Note that the extras pyopenssl and enterprise_cert should not be used together because they use conflicting versions of `cryptography`_. - -.. _`cryptography`: https://cryptography.io/en/latest/ - -Supported Python Versions -^^^^^^^^^^^^^^^^^^^^^^^^^ -Python >= 3.7 - -**NOTE**: -Python 3.7 was marked as `unsupported`_ by the python community in June 2023. -We recommend that all developers upgrade to Python 3.8 and newer as soon as -they can. Support for Python 3.7 will be removed from this library after -January 1 2024. Previous releases that support Python 3.7 will continue to be available -for download, but releases after January 1 2024 will only target Python 3.8 and -newer. - -.. _unsupported: https://devguide.python.org/versions/#unsupported-versions - -Unsupported Python Versions -^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Python == 2.7: The last version of this library with support for Python 2.7 - was `google.auth == 1.34.0`. - -- Python 3.5: The last version of this library with support for Python 3.5 - was `google.auth == 1.23.0`. - -- Python 3.6: The last version of this library with support for Python 3.6 - was `google.auth == 2.22.0`. - -Documentation -------------- - -Google Auth Python Library has usage and reference documentation at https://googleapis.dev/python/google-auth/latest/index.html. - -Current Maintainers -------------------- -- googleapis-auth@google.com - -Authors -------- - -- `@theacodes `_ (Thea Flowers) -- `@dhermes `_ (Danny Hermes) -- `@lukesneeringer `_ (Luke Sneeringer) -- `@busunkim96 `_ (Bu Sun Kim) - -Contributing ------------- - -Contributions to this library are always welcome and highly encouraged. - -See `CONTRIBUTING.rst`_ for more information on how to get started. - -.. _CONTRIBUTING.rst: https://github.com/googleapis/google-auth-library-python/blob/main/CONTRIBUTING.rst - -License -------- - -Apache 2.0 - See `the LICENSE`_ for more information. - -.. _the LICENSE: https://github.com/googleapis/google-auth-library-python/blob/main/LICENSE diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/RECORD b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/RECORD deleted file mode 100644 index 0528ca7..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/RECORD +++ /dev/null @@ -1,128 +0,0 @@ -google/auth/__init__.py,sha256=wg5MWwRk8nfJFMmUMU2gLirrPdGe9NMwqLkdSwdFwE8,1639 -google/auth/__pycache__/__init__.cpython-310.pyc,, -google/auth/__pycache__/_cloud_sdk.cpython-310.pyc,, -google/auth/__pycache__/_credentials_async.cpython-310.pyc,, -google/auth/__pycache__/_default.cpython-310.pyc,, -google/auth/__pycache__/_default_async.cpython-310.pyc,, -google/auth/__pycache__/_exponential_backoff.cpython-310.pyc,, -google/auth/__pycache__/_helpers.cpython-310.pyc,, -google/auth/__pycache__/_jwt_async.cpython-310.pyc,, -google/auth/__pycache__/_oauth2client.cpython-310.pyc,, -google/auth/__pycache__/_refresh_worker.cpython-310.pyc,, -google/auth/__pycache__/_service_account_info.cpython-310.pyc,, -google/auth/__pycache__/api_key.cpython-310.pyc,, -google/auth/__pycache__/app_engine.cpython-310.pyc,, -google/auth/__pycache__/aws.cpython-310.pyc,, -google/auth/__pycache__/credentials.cpython-310.pyc,, -google/auth/__pycache__/downscoped.cpython-310.pyc,, -google/auth/__pycache__/environment_vars.cpython-310.pyc,, -google/auth/__pycache__/exceptions.cpython-310.pyc,, -google/auth/__pycache__/external_account.cpython-310.pyc,, -google/auth/__pycache__/external_account_authorized_user.cpython-310.pyc,, -google/auth/__pycache__/iam.cpython-310.pyc,, -google/auth/__pycache__/identity_pool.cpython-310.pyc,, -google/auth/__pycache__/impersonated_credentials.cpython-310.pyc,, -google/auth/__pycache__/jwt.cpython-310.pyc,, -google/auth/__pycache__/metrics.cpython-310.pyc,, -google/auth/__pycache__/pluggable.cpython-310.pyc,, -google/auth/__pycache__/version.cpython-310.pyc,, -google/auth/_cloud_sdk.py,sha256=u7tbE3KdHBCzZK8ka47xG3CHHtF0DhFDjmPSgz8lwXg,5212 -google/auth/_credentials_async.py,sha256=bHB28wMULOIEMmYqKEOU06A4co7uIXPcnfVC_TaA6KY,6802 -google/auth/_default.py,sha256=gULLKwjyw_JP_zgab9YkLww4QATthRjo13newNZ0Zgk,28538 -google/auth/_default_async.py,sha256=r4bFozWfioQa4lIEC-psuRsLiVhnJbuW-uQ0daj7s3Q,11575 -google/auth/_exponential_backoff.py,sha256=YEuEn2SzAvoPoesLnGdAKwLKipsdnQQl-R0Qh7v64T8,3903 -google/auth/_helpers.py,sha256=7Zm-uwaZWyFb3fE2JQA-sJUTSBvltTgZkNkMGc7raRo,8236 -google/auth/_jwt_async.py,sha256=5mGab5CkdnBMkQkS4mtNkwFkktp1jBw6G1sYQk8bYKY,5972 -google/auth/_oauth2client.py,sha256=hPxcl_8q6Oxr0hOHPUWaWObxI85Pv-0q6kZhRUrT5oY,5855 -google/auth/_refresh_worker.py,sha256=7apJkFsD9oL1yz1K7O8v-YN3f3TdNBiJdd7_Wmq6zpE,3375 -google/auth/_service_account_info.py,sha256=KGruc_OxS7O7_EADD4JEIjjz_-5Xa1_rlgk1t0p1nvk,2816 -google/auth/api_key.py,sha256=PeieTYceHJIFCo0zQo1EA9NEDL_Ie6S78qmD-6Ig17s,2583 -google/auth/app_engine.py,sha256=LuEaoWM1UwcIUJ6OrLza0tTpqJBXbtzZ3XjN0C-6Wvk,6121 -google/auth/aws.py,sha256=2V5NLhboorkPLLwnA87VuyH9imruake6qhyHKV_rVYM,34568 -google/auth/compute_engine/__init__.py,sha256=BqeTka-oyHFATkys3SGKRlOyWQ8mVV0vVaP2hOwV4Qw,910 -google/auth/compute_engine/__pycache__/__init__.cpython-310.pyc,, -google/auth/compute_engine/__pycache__/_metadata.cpython-310.pyc,, -google/auth/compute_engine/__pycache__/credentials.cpython-310.pyc,, -google/auth/compute_engine/_metadata.py,sha256=Uy-j_ru8qRU4WmvshXxf1tnHN8D2BVyj-839VgBiydQ,11848 -google/auth/compute_engine/credentials.py,sha256=aGdb_LlDv0iDAuW4InStICvxsPN222x4hc-x6HYTPQk,18760 -google/auth/credentials.py,sha256=QhGHUljYgSlBTqrlo9g_pAxyHV2TlMTxZMsYnOSXEMM,18516 -google/auth/crypt/__init__.py,sha256=xxBMOPuzD-XOxPvzkleLa2oj4u-9FSjnFmUN3PBk00s,3324 -google/auth/crypt/__pycache__/__init__.cpython-310.pyc,, -google/auth/crypt/__pycache__/_cryptography_rsa.cpython-310.pyc,, -google/auth/crypt/__pycache__/_helpers.cpython-310.pyc,, -google/auth/crypt/__pycache__/_python_rsa.cpython-310.pyc,, -google/auth/crypt/__pycache__/base.cpython-310.pyc,, -google/auth/crypt/__pycache__/es256.cpython-310.pyc,, -google/auth/crypt/__pycache__/rsa.cpython-310.pyc,, -google/auth/crypt/_cryptography_rsa.py,sha256=o2QTRkfDRLtEBiq-fbpbTWypvxaxUDwzlx2NpXG9o0w,5158 -google/auth/crypt/_helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -google/auth/crypt/_python_rsa.py,sha256=L0kgvPXVdEGhajzxLRIgdk2T9rY0nlThrSlSz8Hc8XY,6123 -google/auth/crypt/base.py,sha256=3CJrnQsppR6h-WnTRqSrt1hPEQVkHcwNIVJ_B5M00hY,4190 -google/auth/crypt/es256.py,sha256=hXyeia3g6_TZf-UYdZVzFKgbPrLlgSuR1mMvYKSYqbg,6251 -google/auth/crypt/rsa.py,sha256=QI17aKQsX3gdbJkBef-zsm-X_YBjBollCaoA65Am-WI,1109 -google/auth/downscoped.py,sha256=KmmC8lbBWUFUsIYt1VpcbTXs3yYJYXteH19qdZQgobA,21793 -google/auth/environment_vars.py,sha256=ML9aFh5gwRStBDjn8BQSQHyWsA-OcMn-RB5FRMM8qOw,3297 -google/auth/exceptions.py,sha256=OeM4KgN0GVHUq8XTfagIwXqPpYXc4zvtK9Eptw8bi50,2962 -google/auth/external_account.py,sha256=PBoJ3hkv58uNpSsFnWI4HfObM7SOz8a9iGyZuULYeTw,24130 -google/auth/external_account_authorized_user.py,sha256=OeoI8FpoG9u1LDyHnZreVmlI_z-uDeWL_CBIEBC2sCI,13562 -google/auth/iam.py,sha256=-Pij0ZsUwU43rn7f9uWsYCss8p_4ER1oJu437mamWUI,3651 -google/auth/identity_pool.py,sha256=zN0xDa2IfPU8_At5uGBFVYwWra8xHpuFZLSOBfz3ZgA,16011 -google/auth/impersonated_credentials.py,sha256=BiSYO_F3UvEIsM9z-J1onX0ubMDW4RKasHktnICuku4,16975 -google/auth/jwt.py,sha256=1m_arp5x-4I5UTDaK9y50PSlKnUhnSKFyJW95k3-7cQ,31096 -google/auth/metrics.py,sha256=wx3m95QQCF885wYvPL4T01CHOdCBN5JvFCtbOakd98Q,5614 -google/auth/pluggable.py,sha256=iCqevwmAs8MJ0OdlxnlFFmHDxthNpqVIQXTKjnTyN8E,17306 -google/auth/transport/__init__.py,sha256=Bc9Tx4qozvP1g1USD8pvk7NEVE6hgXrpO-FH2WQFkkU,3621 -google/auth/transport/__pycache__/__init__.cpython-310.pyc,, -google/auth/transport/__pycache__/_aiohttp_requests.cpython-310.pyc,, -google/auth/transport/__pycache__/_custom_tls_signer.cpython-310.pyc,, -google/auth/transport/__pycache__/_http_client.cpython-310.pyc,, -google/auth/transport/__pycache__/_mtls_helper.cpython-310.pyc,, -google/auth/transport/__pycache__/grpc.cpython-310.pyc,, -google/auth/transport/__pycache__/mtls.cpython-310.pyc,, -google/auth/transport/__pycache__/requests.cpython-310.pyc,, -google/auth/transport/__pycache__/urllib3.cpython-310.pyc,, -google/auth/transport/_aiohttp_requests.py,sha256=OWl0SAygFICdOp33rpauBlcmeo0z4N64p4-GBMyjmOc,14554 -google/auth/transport/_custom_tls_signer.py,sha256=E0bfybQJanDnfq9nfcY8d0k2vxFMOV0s05h1GYlEd9w,9680 -google/auth/transport/_http_client.py,sha256=j7Amhmg-ipWztX3W5zOs2kJUFFuGCs0PhI7ZMAvle50,3706 -google/auth/transport/_mtls_helper.py,sha256=cClydxTEeXZXU8Z36LsmX4VYUjaBKjqZoAqiBrydDhw,9062 -google/auth/transport/grpc.py,sha256=59vVJbmvzpW61z0h1Z5xQa3ZMzCu4G3wLYQrAtHFpAk,13937 -google/auth/transport/mtls.py,sha256=-QZN3xe9Jb7OGQ_4Qv_GtyZuRvbRGPbBZEdRjgdqFWg,3793 -google/auth/transport/requests.py,sha256=L0xLVrPaJvDJqqtGGauLRFCK5jXdBKAv29kM1e80h0M,22707 -google/auth/transport/urllib3.py,sha256=cQITCEXvu375iIP749bG5p96Sf2EVBsq63EbKRYkhTA,16049 -google/auth/version.py,sha256=I02L77ZU1zYFnHO98O72btm0ZMy633_FR2wkKYeiHkQ,598 -google/oauth2/__init__.py,sha256=IdFKxhIzlqNIalPgeB2P5hP6KkoxcpNk61hp7P2B85w,1196 -google/oauth2/__pycache__/__init__.cpython-310.pyc,, -google/oauth2/__pycache__/_client.cpython-310.pyc,, -google/oauth2/__pycache__/_client_async.cpython-310.pyc,, -google/oauth2/__pycache__/_credentials_async.cpython-310.pyc,, -google/oauth2/__pycache__/_id_token_async.cpython-310.pyc,, -google/oauth2/__pycache__/_reauth_async.cpython-310.pyc,, -google/oauth2/__pycache__/_service_account_async.cpython-310.pyc,, -google/oauth2/__pycache__/challenges.cpython-310.pyc,, -google/oauth2/__pycache__/credentials.cpython-310.pyc,, -google/oauth2/__pycache__/gdch_credentials.cpython-310.pyc,, -google/oauth2/__pycache__/id_token.cpython-310.pyc,, -google/oauth2/__pycache__/reauth.cpython-310.pyc,, -google/oauth2/__pycache__/service_account.cpython-310.pyc,, -google/oauth2/__pycache__/sts.cpython-310.pyc,, -google/oauth2/__pycache__/utils.cpython-310.pyc,, -google/oauth2/_client.py,sha256=muJCQR_9FA3RpngNnpaAeaLfIwDFz-9X_udMDj0CrCc,17533 -google/oauth2/_client_async.py,sha256=CscoOhgVni9P6Xxy8a2BPGf_spxz_VAloIKvJqe6xfk,10480 -google/oauth2/_credentials_async.py,sha256=hUrucQkcYuYlyCdHMci8tzaVncnjQlFc2sAfNu5Dt8k,4474 -google/oauth2/_id_token_async.py,sha256=o_DViJoWMGlL3zwTbW2unGDBfY569D_VMB4l7bx-Qpw,10115 -google/oauth2/_reauth_async.py,sha256=C6k3f4T0aoVWItl8shYjOl5ngaoTJw3zKVhqHAeBXU0,11696 -google/oauth2/_service_account_async.py,sha256=5-HBGWoHhbWpCRbd34YiopQepEsEf8gSiuMlSm5hN84,5131 -google/oauth2/challenges.py,sha256=kGzZiSdQbvRFxnZnqHAlSOOcoEKNfatO1euJo40CAmY,7171 -google/oauth2/credentials.py,sha256=hXgCshPfbDMu-3VAbIfMugzFG-ggfhTnJVrTNWem9io,25809 -google/oauth2/gdch_credentials.py,sha256=CY6iPnPuc2OCIe1Zujwg1Mu9QSl1iGJqGOy6TkUleHw,9007 -google/oauth2/id_token.py,sha256=XxUfOR4Pb8QnLizNhwV9QB-JvEU7lFGoC3NWcqTvKgI,12067 -google/oauth2/reauth.py,sha256=neMOsDBYoDwJJuoaG7tKUZEb9NmzLVRQqWrwWwya2DA,12790 -google/oauth2/service_account.py,sha256=AHHyhEueL5Uiy9lqOY_O-RV3mHC1ZZmzEZHWBt16fVQ,31544 -google/oauth2/sts.py,sha256=GjpFEvByl3EzyGt2v1kev6rvP7_uSQ3eTlpBK9vUhSc,6699 -google/oauth2/utils.py,sha256=4crAdpKbDtobpQfXJc3uF6Zm6F3IzffvRSo-9h_515w,6315 -google_auth-2.29.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -google_auth-2.29.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357 -google_auth-2.29.0.dist-info/METADATA,sha256=tGcKXdXRWDGJx_U7JOIeUCHHHRwTK21XtnGd6JJs7ak,4690 -google_auth-2.29.0.dist-info/RECORD,, -google_auth-2.29.0.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110 -google_auth-2.29.0.dist-info/top_level.txt,sha256=BWmDiI8eoKfseZ5-MI2AW66GLJLNH4Lz23AXXTrIlyQ,23 diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/WHEEL b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/WHEEL deleted file mode 100644 index f31e450..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.41.3) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/top_level.txt deleted file mode 100644 index 64f26a3..0000000 --- a/venv/lib/python3.10/site-packages/google_auth-2.29.0.dist-info/top_level.txt +++ /dev/null @@ -1,3 +0,0 @@ -google -scripts -testing diff --git a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/idna-3.7.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/LICENSE.md b/venv/lib/python3.10/site-packages/idna-3.7.dist-info/LICENSE.md deleted file mode 100644 index 19b6b45..0000000 --- a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/LICENSE.md +++ /dev/null @@ -1,31 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2013-2024, Kim Davies and contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/METADATA b/venv/lib/python3.10/site-packages/idna-3.7.dist-info/METADATA deleted file mode 100644 index b28f6ec..0000000 --- a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/METADATA +++ /dev/null @@ -1,243 +0,0 @@ -Metadata-Version: 2.1 -Name: idna -Version: 3.7 -Summary: Internationalized Domain Names in Applications (IDNA) -Author-email: Kim Davies -Requires-Python: >=3.5 -Description-Content-Type: text/x-rst -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: System Administrators -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: Name Service (DNS) -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Utilities -Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.rst -Project-URL: Issue tracker, https://github.com/kjd/idna/issues -Project-URL: Source, https://github.com/kjd/idna - -Internationalized Domain Names in Applications (IDNA) -===================================================== - -Support for the Internationalized Domain Names in -Applications (IDNA) protocol as specified in `RFC 5891 -`_. This is the latest version of -the protocol and is sometimes referred to as “IDNA 2008”. - -This library also provides support for Unicode Technical -Standard 46, `Unicode IDNA Compatibility Processing -`_. - -This acts as a suitable replacement for the “encodings.idna” -module that comes with the Python standard library, but which -only supports the older superseded IDNA specification (`RFC 3490 -`_). - -Basic functions are simply executed: - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - - -Installation ------------- - -This package is available for installation from PyPI: - -.. code-block:: bash - - $ python3 -m pip install idna - - -Usage ------ - -For typical usage, the ``encode`` and ``decode`` functions will take a -domain name argument and perform a conversion to A-labels or U-labels -respectively. - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - -You may use the codec encoding and decoding methods using the -``idna.codec`` module: - -.. code-block:: pycon - - >>> import idna.codec - >>> print('домен.испытание'.encode('idna2008')) - b'xn--d1acufc.xn--80akhbyknj4f' - >>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna2008')) - домен.испытание - -Conversions can be applied at a per-label basis using the ``ulabel`` or -``alabel`` functions if necessary: - -.. code-block:: pycon - - >>> idna.alabel('测试') - b'xn--0zwm56d' - -Compatibility Mapping (UTS #46) -+++++++++++++++++++++++++++++++ - -As described in `RFC 5895 `_, the -IDNA specification does not normalize input from different potential -ways a user may input a domain name. This functionality, known as -a “mapping”, is considered by the specification to be a local -user-interface issue distinct from IDNA conversion functionality. - -This library provides one such mapping that was developed by the -Unicode Consortium. Known as `Unicode IDNA Compatibility Processing -`_, it provides for both a regular -mapping for typical applications, as well as a transitional mapping to -help migrate from older IDNA 2003 applications. - -For example, “Königsgäßchen” is not a permissible label as *LATIN -CAPITAL LETTER K* is not allowed (nor are capital letters in general). -UTS 46 will convert this into lower case prior to applying the IDNA -conversion. - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('Königsgäßchen') - ... - idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed - >>> idna.encode('Königsgäßchen', uts46=True) - b'xn--knigsgchen-b4a3dun' - >>> print(idna.decode('xn--knigsgchen-b4a3dun')) - königsgäßchen - -Transitional processing provides conversions to help transition from -the older 2003 standard to the current standard. For example, in the -original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was -converted into two *LATIN SMALL LETTER S* (ss), whereas in the current -IDNA specification this conversion is not performed. - -.. code-block:: pycon - - >>> idna.encode('Königsgäßchen', uts46=True, transitional=True) - 'xn--knigsgsschen-lcb0w' - -Implementers should use transitional processing with caution, only in -rare cases where conversion from legacy labels to current labels must be -performed (i.e. IDNA implementations that pre-date 2008). For typical -applications that just need to convert labels, transitional processing -is unlikely to be beneficial and could produce unexpected incompatible -results. - -``encodings.idna`` Compatibility -++++++++++++++++++++++++++++++++ - -Function calls from the Python built-in ``encodings.idna`` module are -mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. -Simply substitute the ``import`` clause in your code to refer to the new -module name. - -Exceptions ----------- - -All errors raised during the conversion following the specification -should raise an exception derived from the ``idna.IDNAError`` base -class. - -More specific exceptions that may be generated as ``idna.IDNABidiError`` -when the error reflects an illegal combination of left-to-right and -right-to-left characters in a label; ``idna.InvalidCodepoint`` when -a specific codepoint is an illegal character in an IDN label (i.e. -INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is -illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ -but the contextual requirements are not satisfied.) - -Building and Diagnostics ------------------------- - -The IDNA and UTS 46 functionality relies upon pre-calculated lookup -tables for performance. These tables are derived from computing against -eligibility criteria in the respective standards. These tables are -computed using the command-line script ``tools/idna-data``. - -This tool will fetch relevant codepoint data from the Unicode repository -and perform the required calculations to identify eligibility. There are -three main modes: - -* ``idna-data make-libdata``. Generates ``idnadata.py`` and - ``uts46data.py``, the pre-calculated lookup tables used for IDNA and - UTS 46 conversions. Implementers who wish to track this library against - a different Unicode version may use this tool to manually generate a - different version of the ``idnadata.py`` and ``uts46data.py`` files. - -* ``idna-data make-table``. Generate a table of the IDNA disposition - (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix - B.1 of RFC 5892 and the pre-computed tables published by `IANA - `_. - -* ``idna-data U+0061``. Prints debugging output on the various - properties associated with an individual Unicode codepoint (in this - case, U+0061), that are used to assess the IDNA and UTS 46 status of a - codepoint. This is helpful in debugging or analysis. - -The tool accepts a number of arguments, described using ``idna-data --h``. Most notably, the ``--version`` argument allows the specification -of the version of Unicode to be used in computing the table data. For -example, ``idna-data --version 9.0.0 make-libdata`` will generate -library data against Unicode 9.0.0. - - -Additional Notes ----------------- - -* **Packages**. The latest tagged release version is published in the - `Python Package Index `_. - -* **Version support**. This library supports Python 3.5 and higher. - As this library serves as a low-level toolkit for a variety of - applications, many of which strive for broad compatibility with older - Python versions, there is no rush to remove older interpreter support. - Removing support for older versions should be well justified in that the - maintenance burden has become too high. - -* **Python 2**. Python 2 is supported by version 2.x of this library. - While active development of the version 2.x series has ended, notable - issues being corrected may be backported to 2.x. Use "idna<3" in your - requirements file if you need this library for a Python 2 application. - -* **Testing**. The library has a test suite based on each rule of the - IDNA specification, as well as tests that are provided as part of the - Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing - `_. - -* **Emoji**. It is an occasional request to support emoji domains in - this library. Encoding of symbols like emoji is expressly prohibited by - the technical standard IDNA 2008 and emoji domains are broadly phased - out across the domain industry due to associated security risks. For - now, applications that need to support these non-compliant labels - may wish to consider trying the encode/decode operation in this library - first, and then falling back to using `encodings.idna`. See `the Github - project `_ for more discussion. - diff --git a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/RECORD b/venv/lib/python3.10/site-packages/idna-3.7.dist-info/RECORD deleted file mode 100644 index 9e27c72..0000000 --- a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/RECORD +++ /dev/null @@ -1,22 +0,0 @@ -idna-3.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -idna-3.7.dist-info/LICENSE.md,sha256=pZ8LDvNjWHQQmkRhykT_enDVBpboFHZ7-vch1Mmw2w8,1541 -idna-3.7.dist-info/METADATA,sha256=OixCk-dKLZkPy-MfviOmiPvwJ1O2K_8rqCrFjC_uxy4,9888 -idna-3.7.dist-info/RECORD,, -idna-3.7.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 -idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 -idna/__pycache__/__init__.cpython-310.pyc,, -idna/__pycache__/codec.cpython-310.pyc,, -idna/__pycache__/compat.cpython-310.pyc,, -idna/__pycache__/core.cpython-310.pyc,, -idna/__pycache__/idnadata.cpython-310.pyc,, -idna/__pycache__/intranges.cpython-310.pyc,, -idna/__pycache__/package_data.cpython-310.pyc,, -idna/__pycache__/uts46data.cpython-310.pyc,, -idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426 -idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321 -idna/core.py,sha256=lyhpoe2vulEaB_65xhXmoKgO-xUqFDvcwxu5hpNNO4E,12663 -idna/idnadata.py,sha256=dqRwytzkjIHMBa2R1lYvHDwACenZPt8eGVu1Y8UBE-E,78320 -idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881 -idna/package_data.py,sha256=Tkt0KnIeyIlnHddOaz9WSkkislNgokJAuE-p5GorMqo,21 -idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503 diff --git a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/WHEEL b/venv/lib/python3.10/site-packages/idna-3.7.dist-info/WHEEL deleted file mode 100644 index 3b5e64b..0000000 --- a/venv/lib/python3.10/site-packages/idna-3.7.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: flit 3.9.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/venv/lib/python3.10/site-packages/idna/__init__.py b/venv/lib/python3.10/site-packages/idna/__init__.py deleted file mode 100644 index a40eeaf..0000000 --- a/venv/lib/python3.10/site-packages/idna/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -from .package_data import __version__ -from .core import ( - IDNABidiError, - IDNAError, - InvalidCodepoint, - InvalidCodepointContext, - alabel, - check_bidi, - check_hyphen_ok, - check_initial_combiner, - check_label, - check_nfc, - decode, - encode, - ulabel, - uts46_remap, - valid_contextj, - valid_contexto, - valid_label_length, - valid_string_length, -) -from .intranges import intranges_contain - -__all__ = [ - "IDNABidiError", - "IDNAError", - "InvalidCodepoint", - "InvalidCodepointContext", - "alabel", - "check_bidi", - "check_hyphen_ok", - "check_initial_combiner", - "check_label", - "check_nfc", - "decode", - "encode", - "intranges_contain", - "ulabel", - "uts46_remap", - "valid_contextj", - "valid_contexto", - "valid_label_length", - "valid_string_length", -] diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 075df482a8ef096915aa8f8031876cff86321d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmbu7yN=W_6hM=CWG0hj-n)zVgDG~y3WO*S0v3vGRy-sMH-avcvuqOh^)>u(`@SCpKS23=^}O=Z@5Xx2fQBNFAqqo~ zd!i@%s4oX-ActruBNWLI8p$yl%NWISf+jLSiA+%{GnC0Gn#viP$vK+K1zN}@TFMn# z$u(NH{`%rXo}$w*C<8k97NRpc{1|MapP>)E30;EmftiMDh4E(TvgP?-x{Nh zi$U$g`L#L_!ReKztkzsvcXr=$rIlr0tc!>sTPED3s93SXTkp=zI=MR56;oL6+-Yav zid#+uF0|Zo#f(cjd*>nU6m?s;h_b?mb`ewEci;Vz>}~VpDK<=!+D+ROy|Xrv&-Zlg zmfd-K6APwFTe($dYpmg_yfga7EPRQEsFF3UJHpjwW&AJ$GXM+$5nu!u17ZM7-Xwq& zkO8KE6Tl2G2P^MR2ToLw9V0tFeXA^ z{5>!aAvM6SPkE&!%ga44j4qh9Jl{QQ@}@AP_I*3AHEr?(Q-@seZC)R3rPbq$%SU;` oEjzy}s>wN3B*z%0j`2l(bmQkz)4gCX;5|0b#x!^rrt7r#8yq;|%K!iX diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/codec.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/codec.cpython-310.pyc deleted file mode 100644 index 287933faa677b724faf86c6b30a3c2cba3fab426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3264 zcmb7`OK%*-7RS5#J>&7%aU2r!bV7Ix5KqEGgbP6q2|__vz7hc;HA16ySB=w2PxnyO z19E6f2xrUP-<`em?tTE+vE~ERmQ_|Pyn+qcpa>95aP*00o=1}tI&JF*8(~I?vGo!s5SVN+HRmwCewaeo&#?olo zO8ZijBbg@-#yxnb?xNg4*w6B8xnk>8x(w$QN7jceKm@+vBkljOJYlV>zk!e+DY@;xAhbz1Dl!|eFmS0 zD2nzYw3h9Q4N1BL<;X)GT18QW$RV=~wAR$Rpcc%Ez)%|+YF$tn0Fh8H+{zOv1|l!x z>_Zb~a!*ktIftGTLh<0CF)8&Bn(Dt0k3(|@Snjed%w@}~T={C{a&O5}7r0Mt z?p?F;M&&4@zh==FWZAH`kcPH`%DriQd1foD{2jOSs&E^9F{=vXYK0hk+rk$?>64!7 zUtQt;PEh%~tn$uUTMc9LYFmYt364e`90m@#fE7sE>W6>g*{8I#V!}b13>2D}Fv#fn z-Y8EA(;hEM)ssSdYM7;^_T%AD@TcmlXDbJGTFl^*SG_`Lsm(s0L#wkT2 zbw^o1jWXm0mEK3k=9{QhD|?2VM;O)Z-ukHD7qVAJ#53qyU4}RanI^)_)bo7T)*IALn4@Xy0p{hNS-Gvm~A)u?(Tz^`giO-SRvsFOZ-)OwDzI_46=1jj~UE z3auBJB+dT?wTo2i0csz~`0-HRG-t*X)Mf)7gY?gs)8mk?kZZSXwL}@0yW92_E8QJ$ zjJanpe+y{)!2C5pOqly)%#Ge){uWsb=HU^{{W6%s{9|C=7-JqDV*V}Xftv`;M9eXi{0ForuIN1&1R38YK`rglc~*xG zE#}~%I=ScuilV))a1q5t#pf2TCDvV5;c~KV-F1va1}}kk8FKpvI)j|GD5S&x^~;y9 zb^>XfNY@T?H0p(Paz52LP9D+KTPSr49KnI#7zZA-purk(Nc-kup>)GsA8zHi-OyQT zt{L?a{5&;j+l&*|-hY%g`@&gEM<2dolO}aKogP;MA4qF{0#bB6bq7FiuyngZnlllce zp1Ms^J@JEa2t2aXnswSgGhH1@v5_jEcoG>pe6POeyiXgi$URSE@gZA8R4&*Hiwox$ LFD|<0-1h8Wh|#Tv diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/compat.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/compat.cpython-310.pyc deleted file mode 100644 index 59c70e5875fc387b7e0c51bdb902648ce9bbf1b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmZ{izi!(w5XMRUvuwv{nid7xNvnz`a@!?CQPfB~c=1rXi#J(3J3=HTUDEk4oID++=MUa`eK zbIP9ZE3fvKejO|W&O`vA2q9VrA`-oy!Lmo403wLj-b+SGNJ=dFr1ZrAd=ZKvb&kY{ zIs-ABv-J3$C|JrZe|=8{OFipPWNX83vQ*NBRlb7CMhIq$vT%DJhO0fAmo)#x6b$>$ z?)aST_>At0Ko&~Cj$=gHj^Podzl-cj)sStrWr3;yW6JFMLT9?byeZ}8tWiQ|Hz04a zs$6AFYp#@hfBtry>C(VilNZmnP-Kno7|i?t?ez;WPUlFh7QFs#T<_*J<5xY z7yA?(sQ^ccL)UYZ`!J%)_7{qbaB_FziBq3Cf$Q0$x9hzdg5U8UJoRR`Z>FDTljPla ze31wRI+4mGTT@o0hD7EyGzd-7pfajZ6%jp~DKo8`3TluB#1}+`DaX_QY#n6>7(blv z=sUjWv@IRlpil@lbnJzVOzZqb_q@>AWPNSWhO5?q?!2;nSLcX%+x;QBYYyx<_~eIL XiERZR-3!pJACuuH{M38pzwrM79Rs7Q diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/core.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/core.cpython-310.pyc deleted file mode 100644 index c0ce02eb788904957de8aaf7eb06ecf1efd6c1b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9497 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

7C2e8 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 diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/intranges.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/intranges.cpython-310.pyc deleted file mode 100644 index 7e7968fbbe5c54f51d4457f1916ba6478045c640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1975 zcmZuyTW=IM6t?HGSvD5}1V{i?Rw!yl3cCbeN);|@QTtL+36M~uR+GutyBTG6X0Sa# zs$KDrR_a6lK;Pi8e`#L(l)uoI^gEthpsH8)*vIGoo#QR%=X(s}PyTH9;|ybe)8XUM z!QnBc`2&k&TTF84<$R0d>*wCs-}1-7R=}AIl&``SCPNjdPc%I|sRo@)B-)(tFOLrQ{rEtoL2^ zS`{J@d1kCAhaxMi8Yyko#W;~l)D;oecFRf)>pb6&z-q=xo{OR$?8r)u?0V#Hfu~hhNv8h?U4c{qNQLAT zsUj3~QjC=OswXgxfr#(8%*S_5p@>^-VgiTISQn;Fcai7Bev)jb<)o5CqLol@lho$> z;3|y*N@sEo^EeZm4?x}|=y5>xGd1(Ax6-_6pDyV4YVcqL(^zsB{^G0V@H9TwP(^_kke5>FurY}MApO=GOL^v4LS*pua zS(^>^zBB`q>ZC$kx2sZ`0h;smAkTIN)jm>J-0N@L85pR&T_x#W0>lQHERq3o-J0%K z`^}}(Q#{n=*ts?fi{=WJZa3foU&L>jdwhxC;2qxe^ks@AbXYV#f=)dUP6q91x=NqJ zW`bwzAu9K4hHCSk9tzN0P?4v}h`xG4a8$iSM-mj6hE&aQcW$`;q^AfCAJbV{#D*+A zqSbrMhV*RtPxUhBIdL7mJ9_6I8|Hcil-3-j*VzPgQk_9}6Le>Nk?U*NHvuvg>+{%t z5-)W%f$O|@jSY3S+ZVe_-;j=xi zKc9ru?b3hF(5ckJco9Ik-^!iJbVvsMf1fyIfLOy{9z0Q2>2X$|$cJK^+}##KJimq> z*HVjiB%}gB2GL2(>17{fBr|Q>KB$_~Od{RyI=>j+gZl^4Br{E(;&S39uj!RkR>LJyW US-=vo?#v?p%)4^=n!g(S3n&Tppa1{> diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/package_data.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/package_data.cpython-310.pyc deleted file mode 100644 index fcb4928d31ce5c2dd9e4af32d043b7f2869f04b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmd1j<>g`kf|-m#X`(>-F^Gc<7=auIATH(r5-AK(3@MDk44O<;%*J}=ewvK8xZ~r? zQj3Z+^Yh~4S27ea0abyCUs3uQ`MIh3>7|*;Mfu68B_)~q*%rn6#mPm91(|v2x&`?u z#rkEbd1d-JnMwKul_eSZdB%E%2KvRBC8@dviOJcC>8Zu~nJIaR`cPhcN@7W(UP0w8 V4x8Nkl+v73JCN&&L3VO5004>kG}r(D diff --git a/venv/lib/python3.10/site-packages/idna/__pycache__/uts46data.cpython-310.pyc b/venv/lib/python3.10/site-packages/idna/__pycache__/uts46data.cpython-310.pyc deleted file mode 100644 index 4a7f1ca9bf895f22a67204cf2a926b48623fb5ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152367 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 Tuple[bytes, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return b"", 0 - - return encode(data), len(data) - - def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return '', 0 - - return decode(data), len(data) - -class IncrementalEncoder(codecs.BufferedIncrementalEncoder): - def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return b'', 0 - - labels = _unicode_dots_re.split(data) - trailing_dot = b'' - if labels: - if not labels[-1]: - trailing_dot = b'.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = b'.' - - result = [] - size = 0 - for label in labels: - result.append(alabel(label)) - if size: - size += 1 - size += len(label) - - # Join with U+002E - result_bytes = b'.'.join(result) + trailing_dot - size += len(trailing_dot) - return result_bytes, size - -class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return ('', 0) - - if not isinstance(data, str): - data = str(data, 'ascii') - - labels = _unicode_dots_re.split(data) - trailing_dot = '' - if labels: - if not labels[-1]: - trailing_dot = '.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = '.' - - result = [] - size = 0 - for label in labels: - result.append(ulabel(label)) - if size: - size += 1 - size += len(label) - - result_str = '.'.join(result) + trailing_dot - size += len(trailing_dot) - return (result_str, size) - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - - -class StreamReader(Codec, codecs.StreamReader): - pass - - -def search_function(name: str) -> Optional[codecs.CodecInfo]: - if name != 'idna2008': - return None - return codecs.CodecInfo( - name=name, - encode=Codec().encode, - decode=Codec().decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) - -codecs.register(search_function) diff --git a/venv/lib/python3.10/site-packages/idna/compat.py b/venv/lib/python3.10/site-packages/idna/compat.py deleted file mode 100644 index 786e6bd..0000000 --- a/venv/lib/python3.10/site-packages/idna/compat.py +++ /dev/null @@ -1,13 +0,0 @@ -from .core import * -from .codec import * -from typing import Any, Union - -def ToASCII(label: str) -> bytes: - return encode(label) - -def ToUnicode(label: Union[bytes, bytearray]) -> str: - return decode(label) - -def nameprep(s: Any) -> None: - raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol') - diff --git a/venv/lib/python3.10/site-packages/idna/core.py b/venv/lib/python3.10/site-packages/idna/core.py deleted file mode 100644 index 0dae61a..0000000 --- a/venv/lib/python3.10/site-packages/idna/core.py +++ /dev/null @@ -1,395 +0,0 @@ -from . import idnadata -import bisect -import unicodedata -import re -from typing import Union, Optional -from .intranges import intranges_contain - -_virama_combining_class = 9 -_alabel_prefix = b'xn--' -_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') - -class IDNAError(UnicodeError): - """ Base exception for all IDNA-encoding related problems """ - pass - - -class IDNABidiError(IDNAError): - """ Exception when bidirectional requirements are not satisfied """ - pass - - -class InvalidCodepoint(IDNAError): - """ Exception when a disallowed or unallocated codepoint is used """ - pass - - -class InvalidCodepointContext(IDNAError): - """ Exception when the codepoint is not valid in the context it is used """ - pass - - -def _combining_class(cp: int) -> int: - v = unicodedata.combining(chr(cp)) - if v == 0: - if not unicodedata.name(chr(cp)): - raise ValueError('Unknown character in unicodedata') - return v - -def _is_script(cp: str, script: str) -> bool: - return intranges_contain(ord(cp), idnadata.scripts[script]) - -def _punycode(s: str) -> bytes: - return s.encode('punycode') - -def _unot(s: int) -> str: - return 'U+{:04X}'.format(s) - - -def valid_label_length(label: Union[bytes, str]) -> bool: - if len(label) > 63: - return False - return True - - -def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: - if len(label) > (254 if trailing_dot else 253): - return False - return True - - -def check_bidi(label: str, check_ltr: bool = False) -> bool: - # Bidi rules should only be applied if string contains RTL characters - bidi_label = False - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - if direction == '': - # String likely comes from a newer version of Unicode - raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx)) - if direction in ['R', 'AL', 'AN']: - bidi_label = True - if not bidi_label and not check_ltr: - return True - - # Bidi rule 1 - direction = unicodedata.bidirectional(label[0]) - if direction in ['R', 'AL']: - rtl = True - elif direction == 'L': - rtl = False - else: - raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label))) - - valid_ending = False - number_type = None # type: Optional[str] - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - - if rtl: - # Bidi rule 2 - if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx)) - # Bidi rule 3 - if direction in ['R', 'AL', 'EN', 'AN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - # Bidi rule 4 - if direction in ['AN', 'EN']: - if not number_type: - number_type = direction - else: - if number_type != direction: - raise IDNABidiError('Can not mix numeral types in a right-to-left label') - else: - # Bidi rule 5 - if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx)) - # Bidi rule 6 - if direction in ['L', 'EN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - - if not valid_ending: - raise IDNABidiError('Label ends with illegal codepoint directionality') - - return True - - -def check_initial_combiner(label: str) -> bool: - if unicodedata.category(label[0])[0] == 'M': - raise IDNAError('Label begins with an illegal combining character') - return True - - -def check_hyphen_ok(label: str) -> bool: - if label[2:4] == '--': - raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') - if label[0] == '-' or label[-1] == '-': - raise IDNAError('Label must not start or end with a hyphen') - return True - - -def check_nfc(label: str) -> None: - if unicodedata.normalize('NFC', label) != label: - raise IDNAError('Label must be in Normalization Form C') - - -def valid_contextj(label: str, pos: int) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x200c: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - - ok = False - for i in range(pos-1, -1, -1): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - elif joining_type in [ord('L'), ord('D')]: - ok = True - break - else: - break - - if not ok: - return False - - ok = False - for i in range(pos+1, len(label)): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - elif joining_type in [ord('R'), ord('D')]: - ok = True - break - else: - break - return ok - - if cp_value == 0x200d: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - return False - - else: - - return False - - -def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x00b7: - if 0 < pos < len(label)-1: - if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: - return True - return False - - elif cp_value == 0x0375: - if pos < len(label)-1 and len(label) > 1: - return _is_script(label[pos + 1], 'Greek') - return False - - elif cp_value == 0x05f3 or cp_value == 0x05f4: - if pos > 0: - return _is_script(label[pos - 1], 'Hebrew') - return False - - elif cp_value == 0x30fb: - for cp in label: - if cp == '\u30fb': - continue - if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): - return True - return False - - elif 0x660 <= cp_value <= 0x669: - for cp in label: - if 0x6f0 <= ord(cp) <= 0x06f9: - return False - return True - - elif 0x6f0 <= cp_value <= 0x6f9: - for cp in label: - if 0x660 <= ord(cp) <= 0x0669: - return False - return True - - return False - - -def check_label(label: Union[str, bytes, bytearray]) -> None: - if isinstance(label, (bytes, bytearray)): - label = label.decode('utf-8') - if len(label) == 0: - raise IDNAError('Empty Label') - - check_nfc(label) - check_hyphen_ok(label) - check_initial_combiner(label) - - for (pos, cp) in enumerate(label): - cp_value = ord(cp) - if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): - continue - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): - if not valid_contextj(label, pos): - raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( - _unot(cp_value), pos+1, repr(label))) - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): - if not valid_contexto(label, pos): - raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label))) - else: - raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label))) - - check_bidi(label) - - -def alabel(label: str) -> bytes: - try: - label_bytes = label.encode('ascii') - ulabel(label_bytes) - if not valid_label_length(label_bytes): - raise IDNAError('Label too long') - return label_bytes - except UnicodeEncodeError: - pass - - check_label(label) - label_bytes = _alabel_prefix + _punycode(label) - - if not valid_label_length(label_bytes): - raise IDNAError('Label too long') - - return label_bytes - - -def ulabel(label: Union[str, bytes, bytearray]) -> str: - if not isinstance(label, (bytes, bytearray)): - try: - label_bytes = label.encode('ascii') - except UnicodeEncodeError: - check_label(label) - return label - else: - label_bytes = label - - label_bytes = label_bytes.lower() - if label_bytes.startswith(_alabel_prefix): - label_bytes = label_bytes[len(_alabel_prefix):] - if not label_bytes: - raise IDNAError('Malformed A-label, no Punycode eligible content found') - if label_bytes.decode('ascii')[-1] == '-': - raise IDNAError('A-label must not end with a hyphen') - else: - check_label(label_bytes) - return label_bytes.decode('ascii') - - try: - label = label_bytes.decode('punycode') - except UnicodeError: - raise IDNAError('Invalid A-label') - check_label(label) - return label - - -def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: - """Re-map the characters in the string according to UTS46 processing.""" - from .uts46data import uts46data - output = '' - - for pos, char in enumerate(domain): - code_point = ord(char) - try: - uts46row = uts46data[code_point if code_point < 256 else - bisect.bisect_left(uts46data, (code_point, 'Z')) - 1] - status = uts46row[1] - replacement = None # type: Optional[str] - if len(uts46row) == 3: - replacement = uts46row[2] - if (status == 'V' or - (status == 'D' and not transitional) or - (status == '3' and not std3_rules and replacement is None)): - output += char - elif replacement is not None and (status == 'M' or - (status == '3' and not std3_rules) or - (status == 'D' and transitional)): - output += replacement - elif status != 'I': - raise IndexError() - except IndexError: - raise InvalidCodepoint( - 'Codepoint {} not allowed at position {} in {}'.format( - _unot(code_point), pos + 1, repr(domain))) - - return unicodedata.normalize('NFC', output) - - -def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: - if not isinstance(s, str): - try: - s = str(s, 'ascii') - except UnicodeDecodeError: - raise IDNAError('should pass a unicode string to the function rather than a byte string.') - if uts46: - s = uts46_remap(s, std3_rules, transitional) - trailing_dot = False - result = [] - if strict: - labels = s.split('.') - else: - labels = _unicode_dots_re.split(s) - if not labels or labels == ['']: - raise IDNAError('Empty domain') - if labels[-1] == '': - del labels[-1] - trailing_dot = True - for label in labels: - s = alabel(label) - if s: - result.append(s) - else: - raise IDNAError('Empty label') - if trailing_dot: - result.append(b'') - s = b'.'.join(result) - if not valid_string_length(s, trailing_dot): - raise IDNAError('Domain too long') - return s - - -def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str: - try: - if not isinstance(s, str): - s = str(s, 'ascii') - except UnicodeDecodeError: - raise IDNAError('Invalid ASCII in A-label') - if uts46: - s = uts46_remap(s, std3_rules, False) - trailing_dot = False - result = [] - if not strict: - labels = _unicode_dots_re.split(s) - else: - labels = s.split('.') - if not labels or labels == ['']: - raise IDNAError('Empty domain') - if not labels[-1]: - del labels[-1] - trailing_dot = True - for label in labels: - s = ulabel(label) - if s: - result.append(s) - else: - raise IDNAError('Empty label') - if trailing_dot: - result.append('') - return '.'.join(result) diff --git a/venv/lib/python3.10/site-packages/idna/idnadata.py b/venv/lib/python3.10/site-packages/idna/idnadata.py deleted file mode 100644 index c61dcf9..0000000 --- a/venv/lib/python3.10/site-packages/idna/idnadata.py +++ /dev/null @@ -1,4245 +0,0 @@ -# This file is automatically generated by tools/idna-data - -__version__ = '15.1.0' -scripts = { - 'Greek': ( - 0x37000000374, - 0x37500000378, - 0x37a0000037e, - 0x37f00000380, - 0x38400000385, - 0x38600000387, - 0x3880000038b, - 0x38c0000038d, - 0x38e000003a2, - 0x3a3000003e2, - 0x3f000000400, - 0x1d2600001d2b, - 0x1d5d00001d62, - 0x1d6600001d6b, - 0x1dbf00001dc0, - 0x1f0000001f16, - 0x1f1800001f1e, - 0x1f2000001f46, - 0x1f4800001f4e, - 0x1f5000001f58, - 0x1f5900001f5a, - 0x1f5b00001f5c, - 0x1f5d00001f5e, - 0x1f5f00001f7e, - 0x1f8000001fb5, - 0x1fb600001fc5, - 0x1fc600001fd4, - 0x1fd600001fdc, - 0x1fdd00001ff0, - 0x1ff200001ff5, - 0x1ff600001fff, - 0x212600002127, - 0xab650000ab66, - 0x101400001018f, - 0x101a0000101a1, - 0x1d2000001d246, - ), - 'Han': ( - 0x2e8000002e9a, - 0x2e9b00002ef4, - 0x2f0000002fd6, - 0x300500003006, - 0x300700003008, - 0x30210000302a, - 0x30380000303c, - 0x340000004dc0, - 0x4e000000a000, - 0xf9000000fa6e, - 0xfa700000fada, - 0x16fe200016fe4, - 0x16ff000016ff2, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x2ebf00002ee5e, - 0x2f8000002fa1e, - 0x300000003134b, - 0x31350000323b0, - ), - 'Hebrew': ( - 0x591000005c8, - 0x5d0000005eb, - 0x5ef000005f5, - 0xfb1d0000fb37, - 0xfb380000fb3d, - 0xfb3e0000fb3f, - 0xfb400000fb42, - 0xfb430000fb45, - 0xfb460000fb50, - ), - 'Hiragana': ( - 0x304100003097, - 0x309d000030a0, - 0x1b0010001b120, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1f2000001f201, - ), - 'Katakana': ( - 0x30a1000030fb, - 0x30fd00003100, - 0x31f000003200, - 0x32d0000032ff, - 0x330000003358, - 0xff660000ff70, - 0xff710000ff9e, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b001, - 0x1b1200001b123, - 0x1b1550001b156, - 0x1b1640001b168, - ), -} -joining_types = { - 0xad: 84, - 0x300: 84, - 0x301: 84, - 0x302: 84, - 0x303: 84, - 0x304: 84, - 0x305: 84, - 0x306: 84, - 0x307: 84, - 0x308: 84, - 0x309: 84, - 0x30a: 84, - 0x30b: 84, - 0x30c: 84, - 0x30d: 84, - 0x30e: 84, - 0x30f: 84, - 0x310: 84, - 0x311: 84, - 0x312: 84, - 0x313: 84, - 0x314: 84, - 0x315: 84, - 0x316: 84, - 0x317: 84, - 0x318: 84, - 0x319: 84, - 0x31a: 84, - 0x31b: 84, - 0x31c: 84, - 0x31d: 84, - 0x31e: 84, - 0x31f: 84, - 0x320: 84, - 0x321: 84, - 0x322: 84, - 0x323: 84, - 0x324: 84, - 0x325: 84, - 0x326: 84, - 0x327: 84, - 0x328: 84, - 0x329: 84, - 0x32a: 84, - 0x32b: 84, - 0x32c: 84, - 0x32d: 84, - 0x32e: 84, - 0x32f: 84, - 0x330: 84, - 0x331: 84, - 0x332: 84, - 0x333: 84, - 0x334: 84, - 0x335: 84, - 0x336: 84, - 0x337: 84, - 0x338: 84, - 0x339: 84, - 0x33a: 84, - 0x33b: 84, - 0x33c: 84, - 0x33d: 84, - 0x33e: 84, - 0x33f: 84, - 0x340: 84, - 0x341: 84, - 0x342: 84, - 0x343: 84, - 0x344: 84, - 0x345: 84, - 0x346: 84, - 0x347: 84, - 0x348: 84, - 0x349: 84, - 0x34a: 84, - 0x34b: 84, - 0x34c: 84, - 0x34d: 84, - 0x34e: 84, - 0x34f: 84, - 0x350: 84, - 0x351: 84, - 0x352: 84, - 0x353: 84, - 0x354: 84, - 0x355: 84, - 0x356: 84, - 0x357: 84, - 0x358: 84, - 0x359: 84, - 0x35a: 84, - 0x35b: 84, - 0x35c: 84, - 0x35d: 84, - 0x35e: 84, - 0x35f: 84, - 0x360: 84, - 0x361: 84, - 0x362: 84, - 0x363: 84, - 0x364: 84, - 0x365: 84, - 0x366: 84, - 0x367: 84, - 0x368: 84, - 0x369: 84, - 0x36a: 84, - 0x36b: 84, - 0x36c: 84, - 0x36d: 84, - 0x36e: 84, - 0x36f: 84, - 0x483: 84, - 0x484: 84, - 0x485: 84, - 0x486: 84, - 0x487: 84, - 0x488: 84, - 0x489: 84, - 0x591: 84, - 0x592: 84, - 0x593: 84, - 0x594: 84, - 0x595: 84, - 0x596: 84, - 0x597: 84, - 0x598: 84, - 0x599: 84, - 0x59a: 84, - 0x59b: 84, - 0x59c: 84, - 0x59d: 84, - 0x59e: 84, - 0x59f: 84, - 0x5a0: 84, - 0x5a1: 84, - 0x5a2: 84, - 0x5a3: 84, - 0x5a4: 84, - 0x5a5: 84, - 0x5a6: 84, - 0x5a7: 84, - 0x5a8: 84, - 0x5a9: 84, - 0x5aa: 84, - 0x5ab: 84, - 0x5ac: 84, - 0x5ad: 84, - 0x5ae: 84, - 0x5af: 84, - 0x5b0: 84, - 0x5b1: 84, - 0x5b2: 84, - 0x5b3: 84, - 0x5b4: 84, - 0x5b5: 84, - 0x5b6: 84, - 0x5b7: 84, - 0x5b8: 84, - 0x5b9: 84, - 0x5ba: 84, - 0x5bb: 84, - 0x5bc: 84, - 0x5bd: 84, - 0x5bf: 84, - 0x5c1: 84, - 0x5c2: 84, - 0x5c4: 84, - 0x5c5: 84, - 0x5c7: 84, - 0x610: 84, - 0x611: 84, - 0x612: 84, - 0x613: 84, - 0x614: 84, - 0x615: 84, - 0x616: 84, - 0x617: 84, - 0x618: 84, - 0x619: 84, - 0x61a: 84, - 0x61c: 84, - 0x620: 68, - 0x622: 82, - 0x623: 82, - 0x624: 82, - 0x625: 82, - 0x626: 68, - 0x627: 82, - 0x628: 68, - 0x629: 82, - 0x62a: 68, - 0x62b: 68, - 0x62c: 68, - 0x62d: 68, - 0x62e: 68, - 0x62f: 82, - 0x630: 82, - 0x631: 82, - 0x632: 82, - 0x633: 68, - 0x634: 68, - 0x635: 68, - 0x636: 68, - 0x637: 68, - 0x638: 68, - 0x639: 68, - 0x63a: 68, - 0x63b: 68, - 0x63c: 68, - 0x63d: 68, - 0x63e: 68, - 0x63f: 68, - 0x640: 67, - 0x641: 68, - 0x642: 68, - 0x643: 68, - 0x644: 68, - 0x645: 68, - 0x646: 68, - 0x647: 68, - 0x648: 82, - 0x649: 68, - 0x64a: 68, - 0x64b: 84, - 0x64c: 84, - 0x64d: 84, - 0x64e: 84, - 0x64f: 84, - 0x650: 84, - 0x651: 84, - 0x652: 84, - 0x653: 84, - 0x654: 84, - 0x655: 84, - 0x656: 84, - 0x657: 84, - 0x658: 84, - 0x659: 84, - 0x65a: 84, - 0x65b: 84, - 0x65c: 84, - 0x65d: 84, - 0x65e: 84, - 0x65f: 84, - 0x66e: 68, - 0x66f: 68, - 0x670: 84, - 0x671: 82, - 0x672: 82, - 0x673: 82, - 0x675: 82, - 0x676: 82, - 0x677: 82, - 0x678: 68, - 0x679: 68, - 0x67a: 68, - 0x67b: 68, - 0x67c: 68, - 0x67d: 68, - 0x67e: 68, - 0x67f: 68, - 0x680: 68, - 0x681: 68, - 0x682: 68, - 0x683: 68, - 0x684: 68, - 0x685: 68, - 0x686: 68, - 0x687: 68, - 0x688: 82, - 0x689: 82, - 0x68a: 82, - 0x68b: 82, - 0x68c: 82, - 0x68d: 82, - 0x68e: 82, - 0x68f: 82, - 0x690: 82, - 0x691: 82, - 0x692: 82, - 0x693: 82, - 0x694: 82, - 0x695: 82, - 0x696: 82, - 0x697: 82, - 0x698: 82, - 0x699: 82, - 0x69a: 68, - 0x69b: 68, - 0x69c: 68, - 0x69d: 68, - 0x69e: 68, - 0x69f: 68, - 0x6a0: 68, - 0x6a1: 68, - 0x6a2: 68, - 0x6a3: 68, - 0x6a4: 68, - 0x6a5: 68, - 0x6a6: 68, - 0x6a7: 68, - 0x6a8: 68, - 0x6a9: 68, - 0x6aa: 68, - 0x6ab: 68, - 0x6ac: 68, - 0x6ad: 68, - 0x6ae: 68, - 0x6af: 68, - 0x6b0: 68, - 0x6b1: 68, - 0x6b2: 68, - 0x6b3: 68, - 0x6b4: 68, - 0x6b5: 68, - 0x6b6: 68, - 0x6b7: 68, - 0x6b8: 68, - 0x6b9: 68, - 0x6ba: 68, - 0x6bb: 68, - 0x6bc: 68, - 0x6bd: 68, - 0x6be: 68, - 0x6bf: 68, - 0x6c0: 82, - 0x6c1: 68, - 0x6c2: 68, - 0x6c3: 82, - 0x6c4: 82, - 0x6c5: 82, - 0x6c6: 82, - 0x6c7: 82, - 0x6c8: 82, - 0x6c9: 82, - 0x6ca: 82, - 0x6cb: 82, - 0x6cc: 68, - 0x6cd: 82, - 0x6ce: 68, - 0x6cf: 82, - 0x6d0: 68, - 0x6d1: 68, - 0x6d2: 82, - 0x6d3: 82, - 0x6d5: 82, - 0x6d6: 84, - 0x6d7: 84, - 0x6d8: 84, - 0x6d9: 84, - 0x6da: 84, - 0x6db: 84, - 0x6dc: 84, - 0x6df: 84, - 0x6e0: 84, - 0x6e1: 84, - 0x6e2: 84, - 0x6e3: 84, - 0x6e4: 84, - 0x6e7: 84, - 0x6e8: 84, - 0x6ea: 84, - 0x6eb: 84, - 0x6ec: 84, - 0x6ed: 84, - 0x6ee: 82, - 0x6ef: 82, - 0x6fa: 68, - 0x6fb: 68, - 0x6fc: 68, - 0x6ff: 68, - 0x70f: 84, - 0x710: 82, - 0x711: 84, - 0x712: 68, - 0x713: 68, - 0x714: 68, - 0x715: 82, - 0x716: 82, - 0x717: 82, - 0x718: 82, - 0x719: 82, - 0x71a: 68, - 0x71b: 68, - 0x71c: 68, - 0x71d: 68, - 0x71e: 82, - 0x71f: 68, - 0x720: 68, - 0x721: 68, - 0x722: 68, - 0x723: 68, - 0x724: 68, - 0x725: 68, - 0x726: 68, - 0x727: 68, - 0x728: 82, - 0x729: 68, - 0x72a: 82, - 0x72b: 68, - 0x72c: 82, - 0x72d: 68, - 0x72e: 68, - 0x72f: 82, - 0x730: 84, - 0x731: 84, - 0x732: 84, - 0x733: 84, - 0x734: 84, - 0x735: 84, - 0x736: 84, - 0x737: 84, - 0x738: 84, - 0x739: 84, - 0x73a: 84, - 0x73b: 84, - 0x73c: 84, - 0x73d: 84, - 0x73e: 84, - 0x73f: 84, - 0x740: 84, - 0x741: 84, - 0x742: 84, - 0x743: 84, - 0x744: 84, - 0x745: 84, - 0x746: 84, - 0x747: 84, - 0x748: 84, - 0x749: 84, - 0x74a: 84, - 0x74d: 82, - 0x74e: 68, - 0x74f: 68, - 0x750: 68, - 0x751: 68, - 0x752: 68, - 0x753: 68, - 0x754: 68, - 0x755: 68, - 0x756: 68, - 0x757: 68, - 0x758: 68, - 0x759: 82, - 0x75a: 82, - 0x75b: 82, - 0x75c: 68, - 0x75d: 68, - 0x75e: 68, - 0x75f: 68, - 0x760: 68, - 0x761: 68, - 0x762: 68, - 0x763: 68, - 0x764: 68, - 0x765: 68, - 0x766: 68, - 0x767: 68, - 0x768: 68, - 0x769: 68, - 0x76a: 68, - 0x76b: 82, - 0x76c: 82, - 0x76d: 68, - 0x76e: 68, - 0x76f: 68, - 0x770: 68, - 0x771: 82, - 0x772: 68, - 0x773: 82, - 0x774: 82, - 0x775: 68, - 0x776: 68, - 0x777: 68, - 0x778: 82, - 0x779: 82, - 0x77a: 68, - 0x77b: 68, - 0x77c: 68, - 0x77d: 68, - 0x77e: 68, - 0x77f: 68, - 0x7a6: 84, - 0x7a7: 84, - 0x7a8: 84, - 0x7a9: 84, - 0x7aa: 84, - 0x7ab: 84, - 0x7ac: 84, - 0x7ad: 84, - 0x7ae: 84, - 0x7af: 84, - 0x7b0: 84, - 0x7ca: 68, - 0x7cb: 68, - 0x7cc: 68, - 0x7cd: 68, - 0x7ce: 68, - 0x7cf: 68, - 0x7d0: 68, - 0x7d1: 68, - 0x7d2: 68, - 0x7d3: 68, - 0x7d4: 68, - 0x7d5: 68, - 0x7d6: 68, - 0x7d7: 68, - 0x7d8: 68, - 0x7d9: 68, - 0x7da: 68, - 0x7db: 68, - 0x7dc: 68, - 0x7dd: 68, - 0x7de: 68, - 0x7df: 68, - 0x7e0: 68, - 0x7e1: 68, - 0x7e2: 68, - 0x7e3: 68, - 0x7e4: 68, - 0x7e5: 68, - 0x7e6: 68, - 0x7e7: 68, - 0x7e8: 68, - 0x7e9: 68, - 0x7ea: 68, - 0x7eb: 84, - 0x7ec: 84, - 0x7ed: 84, - 0x7ee: 84, - 0x7ef: 84, - 0x7f0: 84, - 0x7f1: 84, - 0x7f2: 84, - 0x7f3: 84, - 0x7fa: 67, - 0x7fd: 84, - 0x816: 84, - 0x817: 84, - 0x818: 84, - 0x819: 84, - 0x81b: 84, - 0x81c: 84, - 0x81d: 84, - 0x81e: 84, - 0x81f: 84, - 0x820: 84, - 0x821: 84, - 0x822: 84, - 0x823: 84, - 0x825: 84, - 0x826: 84, - 0x827: 84, - 0x829: 84, - 0x82a: 84, - 0x82b: 84, - 0x82c: 84, - 0x82d: 84, - 0x840: 82, - 0x841: 68, - 0x842: 68, - 0x843: 68, - 0x844: 68, - 0x845: 68, - 0x846: 82, - 0x847: 82, - 0x848: 68, - 0x849: 82, - 0x84a: 68, - 0x84b: 68, - 0x84c: 68, - 0x84d: 68, - 0x84e: 68, - 0x84f: 68, - 0x850: 68, - 0x851: 68, - 0x852: 68, - 0x853: 68, - 0x854: 82, - 0x855: 68, - 0x856: 82, - 0x857: 82, - 0x858: 82, - 0x859: 84, - 0x85a: 84, - 0x85b: 84, - 0x860: 68, - 0x862: 68, - 0x863: 68, - 0x864: 68, - 0x865: 68, - 0x867: 82, - 0x868: 68, - 0x869: 82, - 0x86a: 82, - 0x870: 82, - 0x871: 82, - 0x872: 82, - 0x873: 82, - 0x874: 82, - 0x875: 82, - 0x876: 82, - 0x877: 82, - 0x878: 82, - 0x879: 82, - 0x87a: 82, - 0x87b: 82, - 0x87c: 82, - 0x87d: 82, - 0x87e: 82, - 0x87f: 82, - 0x880: 82, - 0x881: 82, - 0x882: 82, - 0x883: 67, - 0x884: 67, - 0x885: 67, - 0x886: 68, - 0x889: 68, - 0x88a: 68, - 0x88b: 68, - 0x88c: 68, - 0x88d: 68, - 0x88e: 82, - 0x898: 84, - 0x899: 84, - 0x89a: 84, - 0x89b: 84, - 0x89c: 84, - 0x89d: 84, - 0x89e: 84, - 0x89f: 84, - 0x8a0: 68, - 0x8a1: 68, - 0x8a2: 68, - 0x8a3: 68, - 0x8a4: 68, - 0x8a5: 68, - 0x8a6: 68, - 0x8a7: 68, - 0x8a8: 68, - 0x8a9: 68, - 0x8aa: 82, - 0x8ab: 82, - 0x8ac: 82, - 0x8ae: 82, - 0x8af: 68, - 0x8b0: 68, - 0x8b1: 82, - 0x8b2: 82, - 0x8b3: 68, - 0x8b4: 68, - 0x8b5: 68, - 0x8b6: 68, - 0x8b7: 68, - 0x8b8: 68, - 0x8b9: 82, - 0x8ba: 68, - 0x8bb: 68, - 0x8bc: 68, - 0x8bd: 68, - 0x8be: 68, - 0x8bf: 68, - 0x8c0: 68, - 0x8c1: 68, - 0x8c2: 68, - 0x8c3: 68, - 0x8c4: 68, - 0x8c5: 68, - 0x8c6: 68, - 0x8c7: 68, - 0x8c8: 68, - 0x8ca: 84, - 0x8cb: 84, - 0x8cc: 84, - 0x8cd: 84, - 0x8ce: 84, - 0x8cf: 84, - 0x8d0: 84, - 0x8d1: 84, - 0x8d2: 84, - 0x8d3: 84, - 0x8d4: 84, - 0x8d5: 84, - 0x8d6: 84, - 0x8d7: 84, - 0x8d8: 84, - 0x8d9: 84, - 0x8da: 84, - 0x8db: 84, - 0x8dc: 84, - 0x8dd: 84, - 0x8de: 84, - 0x8df: 84, - 0x8e0: 84, - 0x8e1: 84, - 0x8e3: 84, - 0x8e4: 84, - 0x8e5: 84, - 0x8e6: 84, - 0x8e7: 84, - 0x8e8: 84, - 0x8e9: 84, - 0x8ea: 84, - 0x8eb: 84, - 0x8ec: 84, - 0x8ed: 84, - 0x8ee: 84, - 0x8ef: 84, - 0x8f0: 84, - 0x8f1: 84, - 0x8f2: 84, - 0x8f3: 84, - 0x8f4: 84, - 0x8f5: 84, - 0x8f6: 84, - 0x8f7: 84, - 0x8f8: 84, - 0x8f9: 84, - 0x8fa: 84, - 0x8fb: 84, - 0x8fc: 84, - 0x8fd: 84, - 0x8fe: 84, - 0x8ff: 84, - 0x900: 84, - 0x901: 84, - 0x902: 84, - 0x93a: 84, - 0x93c: 84, - 0x941: 84, - 0x942: 84, - 0x943: 84, - 0x944: 84, - 0x945: 84, - 0x946: 84, - 0x947: 84, - 0x948: 84, - 0x94d: 84, - 0x951: 84, - 0x952: 84, - 0x953: 84, - 0x954: 84, - 0x955: 84, - 0x956: 84, - 0x957: 84, - 0x962: 84, - 0x963: 84, - 0x981: 84, - 0x9bc: 84, - 0x9c1: 84, - 0x9c2: 84, - 0x9c3: 84, - 0x9c4: 84, - 0x9cd: 84, - 0x9e2: 84, - 0x9e3: 84, - 0x9fe: 84, - 0xa01: 84, - 0xa02: 84, - 0xa3c: 84, - 0xa41: 84, - 0xa42: 84, - 0xa47: 84, - 0xa48: 84, - 0xa4b: 84, - 0xa4c: 84, - 0xa4d: 84, - 0xa51: 84, - 0xa70: 84, - 0xa71: 84, - 0xa75: 84, - 0xa81: 84, - 0xa82: 84, - 0xabc: 84, - 0xac1: 84, - 0xac2: 84, - 0xac3: 84, - 0xac4: 84, - 0xac5: 84, - 0xac7: 84, - 0xac8: 84, - 0xacd: 84, - 0xae2: 84, - 0xae3: 84, - 0xafa: 84, - 0xafb: 84, - 0xafc: 84, - 0xafd: 84, - 0xafe: 84, - 0xaff: 84, - 0xb01: 84, - 0xb3c: 84, - 0xb3f: 84, - 0xb41: 84, - 0xb42: 84, - 0xb43: 84, - 0xb44: 84, - 0xb4d: 84, - 0xb55: 84, - 0xb56: 84, - 0xb62: 84, - 0xb63: 84, - 0xb82: 84, - 0xbc0: 84, - 0xbcd: 84, - 0xc00: 84, - 0xc04: 84, - 0xc3c: 84, - 0xc3e: 84, - 0xc3f: 84, - 0xc40: 84, - 0xc46: 84, - 0xc47: 84, - 0xc48: 84, - 0xc4a: 84, - 0xc4b: 84, - 0xc4c: 84, - 0xc4d: 84, - 0xc55: 84, - 0xc56: 84, - 0xc62: 84, - 0xc63: 84, - 0xc81: 84, - 0xcbc: 84, - 0xcbf: 84, - 0xcc6: 84, - 0xccc: 84, - 0xccd: 84, - 0xce2: 84, - 0xce3: 84, - 0xd00: 84, - 0xd01: 84, - 0xd3b: 84, - 0xd3c: 84, - 0xd41: 84, - 0xd42: 84, - 0xd43: 84, - 0xd44: 84, - 0xd4d: 84, - 0xd62: 84, - 0xd63: 84, - 0xd81: 84, - 0xdca: 84, - 0xdd2: 84, - 0xdd3: 84, - 0xdd4: 84, - 0xdd6: 84, - 0xe31: 84, - 0xe34: 84, - 0xe35: 84, - 0xe36: 84, - 0xe37: 84, - 0xe38: 84, - 0xe39: 84, - 0xe3a: 84, - 0xe47: 84, - 0xe48: 84, - 0xe49: 84, - 0xe4a: 84, - 0xe4b: 84, - 0xe4c: 84, - 0xe4d: 84, - 0xe4e: 84, - 0xeb1: 84, - 0xeb4: 84, - 0xeb5: 84, - 0xeb6: 84, - 0xeb7: 84, - 0xeb8: 84, - 0xeb9: 84, - 0xeba: 84, - 0xebb: 84, - 0xebc: 84, - 0xec8: 84, - 0xec9: 84, - 0xeca: 84, - 0xecb: 84, - 0xecc: 84, - 0xecd: 84, - 0xece: 84, - 0xf18: 84, - 0xf19: 84, - 0xf35: 84, - 0xf37: 84, - 0xf39: 84, - 0xf71: 84, - 0xf72: 84, - 0xf73: 84, - 0xf74: 84, - 0xf75: 84, - 0xf76: 84, - 0xf77: 84, - 0xf78: 84, - 0xf79: 84, - 0xf7a: 84, - 0xf7b: 84, - 0xf7c: 84, - 0xf7d: 84, - 0xf7e: 84, - 0xf80: 84, - 0xf81: 84, - 0xf82: 84, - 0xf83: 84, - 0xf84: 84, - 0xf86: 84, - 0xf87: 84, - 0xf8d: 84, - 0xf8e: 84, - 0xf8f: 84, - 0xf90: 84, - 0xf91: 84, - 0xf92: 84, - 0xf93: 84, - 0xf94: 84, - 0xf95: 84, - 0xf96: 84, - 0xf97: 84, - 0xf99: 84, - 0xf9a: 84, - 0xf9b: 84, - 0xf9c: 84, - 0xf9d: 84, - 0xf9e: 84, - 0xf9f: 84, - 0xfa0: 84, - 0xfa1: 84, - 0xfa2: 84, - 0xfa3: 84, - 0xfa4: 84, - 0xfa5: 84, - 0xfa6: 84, - 0xfa7: 84, - 0xfa8: 84, - 0xfa9: 84, - 0xfaa: 84, - 0xfab: 84, - 0xfac: 84, - 0xfad: 84, - 0xfae: 84, - 0xfaf: 84, - 0xfb0: 84, - 0xfb1: 84, - 0xfb2: 84, - 0xfb3: 84, - 0xfb4: 84, - 0xfb5: 84, - 0xfb6: 84, - 0xfb7: 84, - 0xfb8: 84, - 0xfb9: 84, - 0xfba: 84, - 0xfbb: 84, - 0xfbc: 84, - 0xfc6: 84, - 0x102d: 84, - 0x102e: 84, - 0x102f: 84, - 0x1030: 84, - 0x1032: 84, - 0x1033: 84, - 0x1034: 84, - 0x1035: 84, - 0x1036: 84, - 0x1037: 84, - 0x1039: 84, - 0x103a: 84, - 0x103d: 84, - 0x103e: 84, - 0x1058: 84, - 0x1059: 84, - 0x105e: 84, - 0x105f: 84, - 0x1060: 84, - 0x1071: 84, - 0x1072: 84, - 0x1073: 84, - 0x1074: 84, - 0x1082: 84, - 0x1085: 84, - 0x1086: 84, - 0x108d: 84, - 0x109d: 84, - 0x135d: 84, - 0x135e: 84, - 0x135f: 84, - 0x1712: 84, - 0x1713: 84, - 0x1714: 84, - 0x1732: 84, - 0x1733: 84, - 0x1752: 84, - 0x1753: 84, - 0x1772: 84, - 0x1773: 84, - 0x17b4: 84, - 0x17b5: 84, - 0x17b7: 84, - 0x17b8: 84, - 0x17b9: 84, - 0x17ba: 84, - 0x17bb: 84, - 0x17bc: 84, - 0x17bd: 84, - 0x17c6: 84, - 0x17c9: 84, - 0x17ca: 84, - 0x17cb: 84, - 0x17cc: 84, - 0x17cd: 84, - 0x17ce: 84, - 0x17cf: 84, - 0x17d0: 84, - 0x17d1: 84, - 0x17d2: 84, - 0x17d3: 84, - 0x17dd: 84, - 0x1807: 68, - 0x180a: 67, - 0x180b: 84, - 0x180c: 84, - 0x180d: 84, - 0x180f: 84, - 0x1820: 68, - 0x1821: 68, - 0x1822: 68, - 0x1823: 68, - 0x1824: 68, - 0x1825: 68, - 0x1826: 68, - 0x1827: 68, - 0x1828: 68, - 0x1829: 68, - 0x182a: 68, - 0x182b: 68, - 0x182c: 68, - 0x182d: 68, - 0x182e: 68, - 0x182f: 68, - 0x1830: 68, - 0x1831: 68, - 0x1832: 68, - 0x1833: 68, - 0x1834: 68, - 0x1835: 68, - 0x1836: 68, - 0x1837: 68, - 0x1838: 68, - 0x1839: 68, - 0x183a: 68, - 0x183b: 68, - 0x183c: 68, - 0x183d: 68, - 0x183e: 68, - 0x183f: 68, - 0x1840: 68, - 0x1841: 68, - 0x1842: 68, - 0x1843: 68, - 0x1844: 68, - 0x1845: 68, - 0x1846: 68, - 0x1847: 68, - 0x1848: 68, - 0x1849: 68, - 0x184a: 68, - 0x184b: 68, - 0x184c: 68, - 0x184d: 68, - 0x184e: 68, - 0x184f: 68, - 0x1850: 68, - 0x1851: 68, - 0x1852: 68, - 0x1853: 68, - 0x1854: 68, - 0x1855: 68, - 0x1856: 68, - 0x1857: 68, - 0x1858: 68, - 0x1859: 68, - 0x185a: 68, - 0x185b: 68, - 0x185c: 68, - 0x185d: 68, - 0x185e: 68, - 0x185f: 68, - 0x1860: 68, - 0x1861: 68, - 0x1862: 68, - 0x1863: 68, - 0x1864: 68, - 0x1865: 68, - 0x1866: 68, - 0x1867: 68, - 0x1868: 68, - 0x1869: 68, - 0x186a: 68, - 0x186b: 68, - 0x186c: 68, - 0x186d: 68, - 0x186e: 68, - 0x186f: 68, - 0x1870: 68, - 0x1871: 68, - 0x1872: 68, - 0x1873: 68, - 0x1874: 68, - 0x1875: 68, - 0x1876: 68, - 0x1877: 68, - 0x1878: 68, - 0x1885: 84, - 0x1886: 84, - 0x1887: 68, - 0x1888: 68, - 0x1889: 68, - 0x188a: 68, - 0x188b: 68, - 0x188c: 68, - 0x188d: 68, - 0x188e: 68, - 0x188f: 68, - 0x1890: 68, - 0x1891: 68, - 0x1892: 68, - 0x1893: 68, - 0x1894: 68, - 0x1895: 68, - 0x1896: 68, - 0x1897: 68, - 0x1898: 68, - 0x1899: 68, - 0x189a: 68, - 0x189b: 68, - 0x189c: 68, - 0x189d: 68, - 0x189e: 68, - 0x189f: 68, - 0x18a0: 68, - 0x18a1: 68, - 0x18a2: 68, - 0x18a3: 68, - 0x18a4: 68, - 0x18a5: 68, - 0x18a6: 68, - 0x18a7: 68, - 0x18a8: 68, - 0x18a9: 84, - 0x18aa: 68, - 0x1920: 84, - 0x1921: 84, - 0x1922: 84, - 0x1927: 84, - 0x1928: 84, - 0x1932: 84, - 0x1939: 84, - 0x193a: 84, - 0x193b: 84, - 0x1a17: 84, - 0x1a18: 84, - 0x1a1b: 84, - 0x1a56: 84, - 0x1a58: 84, - 0x1a59: 84, - 0x1a5a: 84, - 0x1a5b: 84, - 0x1a5c: 84, - 0x1a5d: 84, - 0x1a5e: 84, - 0x1a60: 84, - 0x1a62: 84, - 0x1a65: 84, - 0x1a66: 84, - 0x1a67: 84, - 0x1a68: 84, - 0x1a69: 84, - 0x1a6a: 84, - 0x1a6b: 84, - 0x1a6c: 84, - 0x1a73: 84, - 0x1a74: 84, - 0x1a75: 84, - 0x1a76: 84, - 0x1a77: 84, - 0x1a78: 84, - 0x1a79: 84, - 0x1a7a: 84, - 0x1a7b: 84, - 0x1a7c: 84, - 0x1a7f: 84, - 0x1ab0: 84, - 0x1ab1: 84, - 0x1ab2: 84, - 0x1ab3: 84, - 0x1ab4: 84, - 0x1ab5: 84, - 0x1ab6: 84, - 0x1ab7: 84, - 0x1ab8: 84, - 0x1ab9: 84, - 0x1aba: 84, - 0x1abb: 84, - 0x1abc: 84, - 0x1abd: 84, - 0x1abe: 84, - 0x1abf: 84, - 0x1ac0: 84, - 0x1ac1: 84, - 0x1ac2: 84, - 0x1ac3: 84, - 0x1ac4: 84, - 0x1ac5: 84, - 0x1ac6: 84, - 0x1ac7: 84, - 0x1ac8: 84, - 0x1ac9: 84, - 0x1aca: 84, - 0x1acb: 84, - 0x1acc: 84, - 0x1acd: 84, - 0x1ace: 84, - 0x1b00: 84, - 0x1b01: 84, - 0x1b02: 84, - 0x1b03: 84, - 0x1b34: 84, - 0x1b36: 84, - 0x1b37: 84, - 0x1b38: 84, - 0x1b39: 84, - 0x1b3a: 84, - 0x1b3c: 84, - 0x1b42: 84, - 0x1b6b: 84, - 0x1b6c: 84, - 0x1b6d: 84, - 0x1b6e: 84, - 0x1b6f: 84, - 0x1b70: 84, - 0x1b71: 84, - 0x1b72: 84, - 0x1b73: 84, - 0x1b80: 84, - 0x1b81: 84, - 0x1ba2: 84, - 0x1ba3: 84, - 0x1ba4: 84, - 0x1ba5: 84, - 0x1ba8: 84, - 0x1ba9: 84, - 0x1bab: 84, - 0x1bac: 84, - 0x1bad: 84, - 0x1be6: 84, - 0x1be8: 84, - 0x1be9: 84, - 0x1bed: 84, - 0x1bef: 84, - 0x1bf0: 84, - 0x1bf1: 84, - 0x1c2c: 84, - 0x1c2d: 84, - 0x1c2e: 84, - 0x1c2f: 84, - 0x1c30: 84, - 0x1c31: 84, - 0x1c32: 84, - 0x1c33: 84, - 0x1c36: 84, - 0x1c37: 84, - 0x1cd0: 84, - 0x1cd1: 84, - 0x1cd2: 84, - 0x1cd4: 84, - 0x1cd5: 84, - 0x1cd6: 84, - 0x1cd7: 84, - 0x1cd8: 84, - 0x1cd9: 84, - 0x1cda: 84, - 0x1cdb: 84, - 0x1cdc: 84, - 0x1cdd: 84, - 0x1cde: 84, - 0x1cdf: 84, - 0x1ce0: 84, - 0x1ce2: 84, - 0x1ce3: 84, - 0x1ce4: 84, - 0x1ce5: 84, - 0x1ce6: 84, - 0x1ce7: 84, - 0x1ce8: 84, - 0x1ced: 84, - 0x1cf4: 84, - 0x1cf8: 84, - 0x1cf9: 84, - 0x1dc0: 84, - 0x1dc1: 84, - 0x1dc2: 84, - 0x1dc3: 84, - 0x1dc4: 84, - 0x1dc5: 84, - 0x1dc6: 84, - 0x1dc7: 84, - 0x1dc8: 84, - 0x1dc9: 84, - 0x1dca: 84, - 0x1dcb: 84, - 0x1dcc: 84, - 0x1dcd: 84, - 0x1dce: 84, - 0x1dcf: 84, - 0x1dd0: 84, - 0x1dd1: 84, - 0x1dd2: 84, - 0x1dd3: 84, - 0x1dd4: 84, - 0x1dd5: 84, - 0x1dd6: 84, - 0x1dd7: 84, - 0x1dd8: 84, - 0x1dd9: 84, - 0x1dda: 84, - 0x1ddb: 84, - 0x1ddc: 84, - 0x1ddd: 84, - 0x1dde: 84, - 0x1ddf: 84, - 0x1de0: 84, - 0x1de1: 84, - 0x1de2: 84, - 0x1de3: 84, - 0x1de4: 84, - 0x1de5: 84, - 0x1de6: 84, - 0x1de7: 84, - 0x1de8: 84, - 0x1de9: 84, - 0x1dea: 84, - 0x1deb: 84, - 0x1dec: 84, - 0x1ded: 84, - 0x1dee: 84, - 0x1def: 84, - 0x1df0: 84, - 0x1df1: 84, - 0x1df2: 84, - 0x1df3: 84, - 0x1df4: 84, - 0x1df5: 84, - 0x1df6: 84, - 0x1df7: 84, - 0x1df8: 84, - 0x1df9: 84, - 0x1dfa: 84, - 0x1dfb: 84, - 0x1dfc: 84, - 0x1dfd: 84, - 0x1dfe: 84, - 0x1dff: 84, - 0x200b: 84, - 0x200d: 67, - 0x200e: 84, - 0x200f: 84, - 0x202a: 84, - 0x202b: 84, - 0x202c: 84, - 0x202d: 84, - 0x202e: 84, - 0x2060: 84, - 0x2061: 84, - 0x2062: 84, - 0x2063: 84, - 0x2064: 84, - 0x206a: 84, - 0x206b: 84, - 0x206c: 84, - 0x206d: 84, - 0x206e: 84, - 0x206f: 84, - 0x20d0: 84, - 0x20d1: 84, - 0x20d2: 84, - 0x20d3: 84, - 0x20d4: 84, - 0x20d5: 84, - 0x20d6: 84, - 0x20d7: 84, - 0x20d8: 84, - 0x20d9: 84, - 0x20da: 84, - 0x20db: 84, - 0x20dc: 84, - 0x20dd: 84, - 0x20de: 84, - 0x20df: 84, - 0x20e0: 84, - 0x20e1: 84, - 0x20e2: 84, - 0x20e3: 84, - 0x20e4: 84, - 0x20e5: 84, - 0x20e6: 84, - 0x20e7: 84, - 0x20e8: 84, - 0x20e9: 84, - 0x20ea: 84, - 0x20eb: 84, - 0x20ec: 84, - 0x20ed: 84, - 0x20ee: 84, - 0x20ef: 84, - 0x20f0: 84, - 0x2cef: 84, - 0x2cf0: 84, - 0x2cf1: 84, - 0x2d7f: 84, - 0x2de0: 84, - 0x2de1: 84, - 0x2de2: 84, - 0x2de3: 84, - 0x2de4: 84, - 0x2de5: 84, - 0x2de6: 84, - 0x2de7: 84, - 0x2de8: 84, - 0x2de9: 84, - 0x2dea: 84, - 0x2deb: 84, - 0x2dec: 84, - 0x2ded: 84, - 0x2dee: 84, - 0x2def: 84, - 0x2df0: 84, - 0x2df1: 84, - 0x2df2: 84, - 0x2df3: 84, - 0x2df4: 84, - 0x2df5: 84, - 0x2df6: 84, - 0x2df7: 84, - 0x2df8: 84, - 0x2df9: 84, - 0x2dfa: 84, - 0x2dfb: 84, - 0x2dfc: 84, - 0x2dfd: 84, - 0x2dfe: 84, - 0x2dff: 84, - 0x302a: 84, - 0x302b: 84, - 0x302c: 84, - 0x302d: 84, - 0x3099: 84, - 0x309a: 84, - 0xa66f: 84, - 0xa670: 84, - 0xa671: 84, - 0xa672: 84, - 0xa674: 84, - 0xa675: 84, - 0xa676: 84, - 0xa677: 84, - 0xa678: 84, - 0xa679: 84, - 0xa67a: 84, - 0xa67b: 84, - 0xa67c: 84, - 0xa67d: 84, - 0xa69e: 84, - 0xa69f: 84, - 0xa6f0: 84, - 0xa6f1: 84, - 0xa802: 84, - 0xa806: 84, - 0xa80b: 84, - 0xa825: 84, - 0xa826: 84, - 0xa82c: 84, - 0xa840: 68, - 0xa841: 68, - 0xa842: 68, - 0xa843: 68, - 0xa844: 68, - 0xa845: 68, - 0xa846: 68, - 0xa847: 68, - 0xa848: 68, - 0xa849: 68, - 0xa84a: 68, - 0xa84b: 68, - 0xa84c: 68, - 0xa84d: 68, - 0xa84e: 68, - 0xa84f: 68, - 0xa850: 68, - 0xa851: 68, - 0xa852: 68, - 0xa853: 68, - 0xa854: 68, - 0xa855: 68, - 0xa856: 68, - 0xa857: 68, - 0xa858: 68, - 0xa859: 68, - 0xa85a: 68, - 0xa85b: 68, - 0xa85c: 68, - 0xa85d: 68, - 0xa85e: 68, - 0xa85f: 68, - 0xa860: 68, - 0xa861: 68, - 0xa862: 68, - 0xa863: 68, - 0xa864: 68, - 0xa865: 68, - 0xa866: 68, - 0xa867: 68, - 0xa868: 68, - 0xa869: 68, - 0xa86a: 68, - 0xa86b: 68, - 0xa86c: 68, - 0xa86d: 68, - 0xa86e: 68, - 0xa86f: 68, - 0xa870: 68, - 0xa871: 68, - 0xa872: 76, - 0xa8c4: 84, - 0xa8c5: 84, - 0xa8e0: 84, - 0xa8e1: 84, - 0xa8e2: 84, - 0xa8e3: 84, - 0xa8e4: 84, - 0xa8e5: 84, - 0xa8e6: 84, - 0xa8e7: 84, - 0xa8e8: 84, - 0xa8e9: 84, - 0xa8ea: 84, - 0xa8eb: 84, - 0xa8ec: 84, - 0xa8ed: 84, - 0xa8ee: 84, - 0xa8ef: 84, - 0xa8f0: 84, - 0xa8f1: 84, - 0xa8ff: 84, - 0xa926: 84, - 0xa927: 84, - 0xa928: 84, - 0xa929: 84, - 0xa92a: 84, - 0xa92b: 84, - 0xa92c: 84, - 0xa92d: 84, - 0xa947: 84, - 0xa948: 84, - 0xa949: 84, - 0xa94a: 84, - 0xa94b: 84, - 0xa94c: 84, - 0xa94d: 84, - 0xa94e: 84, - 0xa94f: 84, - 0xa950: 84, - 0xa951: 84, - 0xa980: 84, - 0xa981: 84, - 0xa982: 84, - 0xa9b3: 84, - 0xa9b6: 84, - 0xa9b7: 84, - 0xa9b8: 84, - 0xa9b9: 84, - 0xa9bc: 84, - 0xa9bd: 84, - 0xa9e5: 84, - 0xaa29: 84, - 0xaa2a: 84, - 0xaa2b: 84, - 0xaa2c: 84, - 0xaa2d: 84, - 0xaa2e: 84, - 0xaa31: 84, - 0xaa32: 84, - 0xaa35: 84, - 0xaa36: 84, - 0xaa43: 84, - 0xaa4c: 84, - 0xaa7c: 84, - 0xaab0: 84, - 0xaab2: 84, - 0xaab3: 84, - 0xaab4: 84, - 0xaab7: 84, - 0xaab8: 84, - 0xaabe: 84, - 0xaabf: 84, - 0xaac1: 84, - 0xaaec: 84, - 0xaaed: 84, - 0xaaf6: 84, - 0xabe5: 84, - 0xabe8: 84, - 0xabed: 84, - 0xfb1e: 84, - 0xfe00: 84, - 0xfe01: 84, - 0xfe02: 84, - 0xfe03: 84, - 0xfe04: 84, - 0xfe05: 84, - 0xfe06: 84, - 0xfe07: 84, - 0xfe08: 84, - 0xfe09: 84, - 0xfe0a: 84, - 0xfe0b: 84, - 0xfe0c: 84, - 0xfe0d: 84, - 0xfe0e: 84, - 0xfe0f: 84, - 0xfe20: 84, - 0xfe21: 84, - 0xfe22: 84, - 0xfe23: 84, - 0xfe24: 84, - 0xfe25: 84, - 0xfe26: 84, - 0xfe27: 84, - 0xfe28: 84, - 0xfe29: 84, - 0xfe2a: 84, - 0xfe2b: 84, - 0xfe2c: 84, - 0xfe2d: 84, - 0xfe2e: 84, - 0xfe2f: 84, - 0xfeff: 84, - 0xfff9: 84, - 0xfffa: 84, - 0xfffb: 84, - 0x101fd: 84, - 0x102e0: 84, - 0x10376: 84, - 0x10377: 84, - 0x10378: 84, - 0x10379: 84, - 0x1037a: 84, - 0x10a01: 84, - 0x10a02: 84, - 0x10a03: 84, - 0x10a05: 84, - 0x10a06: 84, - 0x10a0c: 84, - 0x10a0d: 84, - 0x10a0e: 84, - 0x10a0f: 84, - 0x10a38: 84, - 0x10a39: 84, - 0x10a3a: 84, - 0x10a3f: 84, - 0x10ac0: 68, - 0x10ac1: 68, - 0x10ac2: 68, - 0x10ac3: 68, - 0x10ac4: 68, - 0x10ac5: 82, - 0x10ac7: 82, - 0x10ac9: 82, - 0x10aca: 82, - 0x10acd: 76, - 0x10ace: 82, - 0x10acf: 82, - 0x10ad0: 82, - 0x10ad1: 82, - 0x10ad2: 82, - 0x10ad3: 68, - 0x10ad4: 68, - 0x10ad5: 68, - 0x10ad6: 68, - 0x10ad7: 76, - 0x10ad8: 68, - 0x10ad9: 68, - 0x10ada: 68, - 0x10adb: 68, - 0x10adc: 68, - 0x10add: 82, - 0x10ade: 68, - 0x10adf: 68, - 0x10ae0: 68, - 0x10ae1: 82, - 0x10ae4: 82, - 0x10ae5: 84, - 0x10ae6: 84, - 0x10aeb: 68, - 0x10aec: 68, - 0x10aed: 68, - 0x10aee: 68, - 0x10aef: 82, - 0x10b80: 68, - 0x10b81: 82, - 0x10b82: 68, - 0x10b83: 82, - 0x10b84: 82, - 0x10b85: 82, - 0x10b86: 68, - 0x10b87: 68, - 0x10b88: 68, - 0x10b89: 82, - 0x10b8a: 68, - 0x10b8b: 68, - 0x10b8c: 82, - 0x10b8d: 68, - 0x10b8e: 82, - 0x10b8f: 82, - 0x10b90: 68, - 0x10b91: 82, - 0x10ba9: 82, - 0x10baa: 82, - 0x10bab: 82, - 0x10bac: 82, - 0x10bad: 68, - 0x10bae: 68, - 0x10d00: 76, - 0x10d01: 68, - 0x10d02: 68, - 0x10d03: 68, - 0x10d04: 68, - 0x10d05: 68, - 0x10d06: 68, - 0x10d07: 68, - 0x10d08: 68, - 0x10d09: 68, - 0x10d0a: 68, - 0x10d0b: 68, - 0x10d0c: 68, - 0x10d0d: 68, - 0x10d0e: 68, - 0x10d0f: 68, - 0x10d10: 68, - 0x10d11: 68, - 0x10d12: 68, - 0x10d13: 68, - 0x10d14: 68, - 0x10d15: 68, - 0x10d16: 68, - 0x10d17: 68, - 0x10d18: 68, - 0x10d19: 68, - 0x10d1a: 68, - 0x10d1b: 68, - 0x10d1c: 68, - 0x10d1d: 68, - 0x10d1e: 68, - 0x10d1f: 68, - 0x10d20: 68, - 0x10d21: 68, - 0x10d22: 82, - 0x10d23: 68, - 0x10d24: 84, - 0x10d25: 84, - 0x10d26: 84, - 0x10d27: 84, - 0x10eab: 84, - 0x10eac: 84, - 0x10efd: 84, - 0x10efe: 84, - 0x10eff: 84, - 0x10f30: 68, - 0x10f31: 68, - 0x10f32: 68, - 0x10f33: 82, - 0x10f34: 68, - 0x10f35: 68, - 0x10f36: 68, - 0x10f37: 68, - 0x10f38: 68, - 0x10f39: 68, - 0x10f3a: 68, - 0x10f3b: 68, - 0x10f3c: 68, - 0x10f3d: 68, - 0x10f3e: 68, - 0x10f3f: 68, - 0x10f40: 68, - 0x10f41: 68, - 0x10f42: 68, - 0x10f43: 68, - 0x10f44: 68, - 0x10f46: 84, - 0x10f47: 84, - 0x10f48: 84, - 0x10f49: 84, - 0x10f4a: 84, - 0x10f4b: 84, - 0x10f4c: 84, - 0x10f4d: 84, - 0x10f4e: 84, - 0x10f4f: 84, - 0x10f50: 84, - 0x10f51: 68, - 0x10f52: 68, - 0x10f53: 68, - 0x10f54: 82, - 0x10f70: 68, - 0x10f71: 68, - 0x10f72: 68, - 0x10f73: 68, - 0x10f74: 82, - 0x10f75: 82, - 0x10f76: 68, - 0x10f77: 68, - 0x10f78: 68, - 0x10f79: 68, - 0x10f7a: 68, - 0x10f7b: 68, - 0x10f7c: 68, - 0x10f7d: 68, - 0x10f7e: 68, - 0x10f7f: 68, - 0x10f80: 68, - 0x10f81: 68, - 0x10f82: 84, - 0x10f83: 84, - 0x10f84: 84, - 0x10f85: 84, - 0x10fb0: 68, - 0x10fb2: 68, - 0x10fb3: 68, - 0x10fb4: 82, - 0x10fb5: 82, - 0x10fb6: 82, - 0x10fb8: 68, - 0x10fb9: 82, - 0x10fba: 82, - 0x10fbb: 68, - 0x10fbc: 68, - 0x10fbd: 82, - 0x10fbe: 68, - 0x10fbf: 68, - 0x10fc1: 68, - 0x10fc2: 82, - 0x10fc3: 82, - 0x10fc4: 68, - 0x10fc9: 82, - 0x10fca: 68, - 0x10fcb: 76, - 0x11001: 84, - 0x11038: 84, - 0x11039: 84, - 0x1103a: 84, - 0x1103b: 84, - 0x1103c: 84, - 0x1103d: 84, - 0x1103e: 84, - 0x1103f: 84, - 0x11040: 84, - 0x11041: 84, - 0x11042: 84, - 0x11043: 84, - 0x11044: 84, - 0x11045: 84, - 0x11046: 84, - 0x11070: 84, - 0x11073: 84, - 0x11074: 84, - 0x1107f: 84, - 0x11080: 84, - 0x11081: 84, - 0x110b3: 84, - 0x110b4: 84, - 0x110b5: 84, - 0x110b6: 84, - 0x110b9: 84, - 0x110ba: 84, - 0x110c2: 84, - 0x11100: 84, - 0x11101: 84, - 0x11102: 84, - 0x11127: 84, - 0x11128: 84, - 0x11129: 84, - 0x1112a: 84, - 0x1112b: 84, - 0x1112d: 84, - 0x1112e: 84, - 0x1112f: 84, - 0x11130: 84, - 0x11131: 84, - 0x11132: 84, - 0x11133: 84, - 0x11134: 84, - 0x11173: 84, - 0x11180: 84, - 0x11181: 84, - 0x111b6: 84, - 0x111b7: 84, - 0x111b8: 84, - 0x111b9: 84, - 0x111ba: 84, - 0x111bb: 84, - 0x111bc: 84, - 0x111bd: 84, - 0x111be: 84, - 0x111c9: 84, - 0x111ca: 84, - 0x111cb: 84, - 0x111cc: 84, - 0x111cf: 84, - 0x1122f: 84, - 0x11230: 84, - 0x11231: 84, - 0x11234: 84, - 0x11236: 84, - 0x11237: 84, - 0x1123e: 84, - 0x11241: 84, - 0x112df: 84, - 0x112e3: 84, - 0x112e4: 84, - 0x112e5: 84, - 0x112e6: 84, - 0x112e7: 84, - 0x112e8: 84, - 0x112e9: 84, - 0x112ea: 84, - 0x11300: 84, - 0x11301: 84, - 0x1133b: 84, - 0x1133c: 84, - 0x11340: 84, - 0x11366: 84, - 0x11367: 84, - 0x11368: 84, - 0x11369: 84, - 0x1136a: 84, - 0x1136b: 84, - 0x1136c: 84, - 0x11370: 84, - 0x11371: 84, - 0x11372: 84, - 0x11373: 84, - 0x11374: 84, - 0x11438: 84, - 0x11439: 84, - 0x1143a: 84, - 0x1143b: 84, - 0x1143c: 84, - 0x1143d: 84, - 0x1143e: 84, - 0x1143f: 84, - 0x11442: 84, - 0x11443: 84, - 0x11444: 84, - 0x11446: 84, - 0x1145e: 84, - 0x114b3: 84, - 0x114b4: 84, - 0x114b5: 84, - 0x114b6: 84, - 0x114b7: 84, - 0x114b8: 84, - 0x114ba: 84, - 0x114bf: 84, - 0x114c0: 84, - 0x114c2: 84, - 0x114c3: 84, - 0x115b2: 84, - 0x115b3: 84, - 0x115b4: 84, - 0x115b5: 84, - 0x115bc: 84, - 0x115bd: 84, - 0x115bf: 84, - 0x115c0: 84, - 0x115dc: 84, - 0x115dd: 84, - 0x11633: 84, - 0x11634: 84, - 0x11635: 84, - 0x11636: 84, - 0x11637: 84, - 0x11638: 84, - 0x11639: 84, - 0x1163a: 84, - 0x1163d: 84, - 0x1163f: 84, - 0x11640: 84, - 0x116ab: 84, - 0x116ad: 84, - 0x116b0: 84, - 0x116b1: 84, - 0x116b2: 84, - 0x116b3: 84, - 0x116b4: 84, - 0x116b5: 84, - 0x116b7: 84, - 0x1171d: 84, - 0x1171e: 84, - 0x1171f: 84, - 0x11722: 84, - 0x11723: 84, - 0x11724: 84, - 0x11725: 84, - 0x11727: 84, - 0x11728: 84, - 0x11729: 84, - 0x1172a: 84, - 0x1172b: 84, - 0x1182f: 84, - 0x11830: 84, - 0x11831: 84, - 0x11832: 84, - 0x11833: 84, - 0x11834: 84, - 0x11835: 84, - 0x11836: 84, - 0x11837: 84, - 0x11839: 84, - 0x1183a: 84, - 0x1193b: 84, - 0x1193c: 84, - 0x1193e: 84, - 0x11943: 84, - 0x119d4: 84, - 0x119d5: 84, - 0x119d6: 84, - 0x119d7: 84, - 0x119da: 84, - 0x119db: 84, - 0x119e0: 84, - 0x11a01: 84, - 0x11a02: 84, - 0x11a03: 84, - 0x11a04: 84, - 0x11a05: 84, - 0x11a06: 84, - 0x11a07: 84, - 0x11a08: 84, - 0x11a09: 84, - 0x11a0a: 84, - 0x11a33: 84, - 0x11a34: 84, - 0x11a35: 84, - 0x11a36: 84, - 0x11a37: 84, - 0x11a38: 84, - 0x11a3b: 84, - 0x11a3c: 84, - 0x11a3d: 84, - 0x11a3e: 84, - 0x11a47: 84, - 0x11a51: 84, - 0x11a52: 84, - 0x11a53: 84, - 0x11a54: 84, - 0x11a55: 84, - 0x11a56: 84, - 0x11a59: 84, - 0x11a5a: 84, - 0x11a5b: 84, - 0x11a8a: 84, - 0x11a8b: 84, - 0x11a8c: 84, - 0x11a8d: 84, - 0x11a8e: 84, - 0x11a8f: 84, - 0x11a90: 84, - 0x11a91: 84, - 0x11a92: 84, - 0x11a93: 84, - 0x11a94: 84, - 0x11a95: 84, - 0x11a96: 84, - 0x11a98: 84, - 0x11a99: 84, - 0x11c30: 84, - 0x11c31: 84, - 0x11c32: 84, - 0x11c33: 84, - 0x11c34: 84, - 0x11c35: 84, - 0x11c36: 84, - 0x11c38: 84, - 0x11c39: 84, - 0x11c3a: 84, - 0x11c3b: 84, - 0x11c3c: 84, - 0x11c3d: 84, - 0x11c3f: 84, - 0x11c92: 84, - 0x11c93: 84, - 0x11c94: 84, - 0x11c95: 84, - 0x11c96: 84, - 0x11c97: 84, - 0x11c98: 84, - 0x11c99: 84, - 0x11c9a: 84, - 0x11c9b: 84, - 0x11c9c: 84, - 0x11c9d: 84, - 0x11c9e: 84, - 0x11c9f: 84, - 0x11ca0: 84, - 0x11ca1: 84, - 0x11ca2: 84, - 0x11ca3: 84, - 0x11ca4: 84, - 0x11ca5: 84, - 0x11ca6: 84, - 0x11ca7: 84, - 0x11caa: 84, - 0x11cab: 84, - 0x11cac: 84, - 0x11cad: 84, - 0x11cae: 84, - 0x11caf: 84, - 0x11cb0: 84, - 0x11cb2: 84, - 0x11cb3: 84, - 0x11cb5: 84, - 0x11cb6: 84, - 0x11d31: 84, - 0x11d32: 84, - 0x11d33: 84, - 0x11d34: 84, - 0x11d35: 84, - 0x11d36: 84, - 0x11d3a: 84, - 0x11d3c: 84, - 0x11d3d: 84, - 0x11d3f: 84, - 0x11d40: 84, - 0x11d41: 84, - 0x11d42: 84, - 0x11d43: 84, - 0x11d44: 84, - 0x11d45: 84, - 0x11d47: 84, - 0x11d90: 84, - 0x11d91: 84, - 0x11d95: 84, - 0x11d97: 84, - 0x11ef3: 84, - 0x11ef4: 84, - 0x11f00: 84, - 0x11f01: 84, - 0x11f36: 84, - 0x11f37: 84, - 0x11f38: 84, - 0x11f39: 84, - 0x11f3a: 84, - 0x11f40: 84, - 0x11f42: 84, - 0x13430: 84, - 0x13431: 84, - 0x13432: 84, - 0x13433: 84, - 0x13434: 84, - 0x13435: 84, - 0x13436: 84, - 0x13437: 84, - 0x13438: 84, - 0x13439: 84, - 0x1343a: 84, - 0x1343b: 84, - 0x1343c: 84, - 0x1343d: 84, - 0x1343e: 84, - 0x1343f: 84, - 0x13440: 84, - 0x13447: 84, - 0x13448: 84, - 0x13449: 84, - 0x1344a: 84, - 0x1344b: 84, - 0x1344c: 84, - 0x1344d: 84, - 0x1344e: 84, - 0x1344f: 84, - 0x13450: 84, - 0x13451: 84, - 0x13452: 84, - 0x13453: 84, - 0x13454: 84, - 0x13455: 84, - 0x16af0: 84, - 0x16af1: 84, - 0x16af2: 84, - 0x16af3: 84, - 0x16af4: 84, - 0x16b30: 84, - 0x16b31: 84, - 0x16b32: 84, - 0x16b33: 84, - 0x16b34: 84, - 0x16b35: 84, - 0x16b36: 84, - 0x16f4f: 84, - 0x16f8f: 84, - 0x16f90: 84, - 0x16f91: 84, - 0x16f92: 84, - 0x16fe4: 84, - 0x1bc9d: 84, - 0x1bc9e: 84, - 0x1bca0: 84, - 0x1bca1: 84, - 0x1bca2: 84, - 0x1bca3: 84, - 0x1cf00: 84, - 0x1cf01: 84, - 0x1cf02: 84, - 0x1cf03: 84, - 0x1cf04: 84, - 0x1cf05: 84, - 0x1cf06: 84, - 0x1cf07: 84, - 0x1cf08: 84, - 0x1cf09: 84, - 0x1cf0a: 84, - 0x1cf0b: 84, - 0x1cf0c: 84, - 0x1cf0d: 84, - 0x1cf0e: 84, - 0x1cf0f: 84, - 0x1cf10: 84, - 0x1cf11: 84, - 0x1cf12: 84, - 0x1cf13: 84, - 0x1cf14: 84, - 0x1cf15: 84, - 0x1cf16: 84, - 0x1cf17: 84, - 0x1cf18: 84, - 0x1cf19: 84, - 0x1cf1a: 84, - 0x1cf1b: 84, - 0x1cf1c: 84, - 0x1cf1d: 84, - 0x1cf1e: 84, - 0x1cf1f: 84, - 0x1cf20: 84, - 0x1cf21: 84, - 0x1cf22: 84, - 0x1cf23: 84, - 0x1cf24: 84, - 0x1cf25: 84, - 0x1cf26: 84, - 0x1cf27: 84, - 0x1cf28: 84, - 0x1cf29: 84, - 0x1cf2a: 84, - 0x1cf2b: 84, - 0x1cf2c: 84, - 0x1cf2d: 84, - 0x1cf30: 84, - 0x1cf31: 84, - 0x1cf32: 84, - 0x1cf33: 84, - 0x1cf34: 84, - 0x1cf35: 84, - 0x1cf36: 84, - 0x1cf37: 84, - 0x1cf38: 84, - 0x1cf39: 84, - 0x1cf3a: 84, - 0x1cf3b: 84, - 0x1cf3c: 84, - 0x1cf3d: 84, - 0x1cf3e: 84, - 0x1cf3f: 84, - 0x1cf40: 84, - 0x1cf41: 84, - 0x1cf42: 84, - 0x1cf43: 84, - 0x1cf44: 84, - 0x1cf45: 84, - 0x1cf46: 84, - 0x1d167: 84, - 0x1d168: 84, - 0x1d169: 84, - 0x1d173: 84, - 0x1d174: 84, - 0x1d175: 84, - 0x1d176: 84, - 0x1d177: 84, - 0x1d178: 84, - 0x1d179: 84, - 0x1d17a: 84, - 0x1d17b: 84, - 0x1d17c: 84, - 0x1d17d: 84, - 0x1d17e: 84, - 0x1d17f: 84, - 0x1d180: 84, - 0x1d181: 84, - 0x1d182: 84, - 0x1d185: 84, - 0x1d186: 84, - 0x1d187: 84, - 0x1d188: 84, - 0x1d189: 84, - 0x1d18a: 84, - 0x1d18b: 84, - 0x1d1aa: 84, - 0x1d1ab: 84, - 0x1d1ac: 84, - 0x1d1ad: 84, - 0x1d242: 84, - 0x1d243: 84, - 0x1d244: 84, - 0x1da00: 84, - 0x1da01: 84, - 0x1da02: 84, - 0x1da03: 84, - 0x1da04: 84, - 0x1da05: 84, - 0x1da06: 84, - 0x1da07: 84, - 0x1da08: 84, - 0x1da09: 84, - 0x1da0a: 84, - 0x1da0b: 84, - 0x1da0c: 84, - 0x1da0d: 84, - 0x1da0e: 84, - 0x1da0f: 84, - 0x1da10: 84, - 0x1da11: 84, - 0x1da12: 84, - 0x1da13: 84, - 0x1da14: 84, - 0x1da15: 84, - 0x1da16: 84, - 0x1da17: 84, - 0x1da18: 84, - 0x1da19: 84, - 0x1da1a: 84, - 0x1da1b: 84, - 0x1da1c: 84, - 0x1da1d: 84, - 0x1da1e: 84, - 0x1da1f: 84, - 0x1da20: 84, - 0x1da21: 84, - 0x1da22: 84, - 0x1da23: 84, - 0x1da24: 84, - 0x1da25: 84, - 0x1da26: 84, - 0x1da27: 84, - 0x1da28: 84, - 0x1da29: 84, - 0x1da2a: 84, - 0x1da2b: 84, - 0x1da2c: 84, - 0x1da2d: 84, - 0x1da2e: 84, - 0x1da2f: 84, - 0x1da30: 84, - 0x1da31: 84, - 0x1da32: 84, - 0x1da33: 84, - 0x1da34: 84, - 0x1da35: 84, - 0x1da36: 84, - 0x1da3b: 84, - 0x1da3c: 84, - 0x1da3d: 84, - 0x1da3e: 84, - 0x1da3f: 84, - 0x1da40: 84, - 0x1da41: 84, - 0x1da42: 84, - 0x1da43: 84, - 0x1da44: 84, - 0x1da45: 84, - 0x1da46: 84, - 0x1da47: 84, - 0x1da48: 84, - 0x1da49: 84, - 0x1da4a: 84, - 0x1da4b: 84, - 0x1da4c: 84, - 0x1da4d: 84, - 0x1da4e: 84, - 0x1da4f: 84, - 0x1da50: 84, - 0x1da51: 84, - 0x1da52: 84, - 0x1da53: 84, - 0x1da54: 84, - 0x1da55: 84, - 0x1da56: 84, - 0x1da57: 84, - 0x1da58: 84, - 0x1da59: 84, - 0x1da5a: 84, - 0x1da5b: 84, - 0x1da5c: 84, - 0x1da5d: 84, - 0x1da5e: 84, - 0x1da5f: 84, - 0x1da60: 84, - 0x1da61: 84, - 0x1da62: 84, - 0x1da63: 84, - 0x1da64: 84, - 0x1da65: 84, - 0x1da66: 84, - 0x1da67: 84, - 0x1da68: 84, - 0x1da69: 84, - 0x1da6a: 84, - 0x1da6b: 84, - 0x1da6c: 84, - 0x1da75: 84, - 0x1da84: 84, - 0x1da9b: 84, - 0x1da9c: 84, - 0x1da9d: 84, - 0x1da9e: 84, - 0x1da9f: 84, - 0x1daa1: 84, - 0x1daa2: 84, - 0x1daa3: 84, - 0x1daa4: 84, - 0x1daa5: 84, - 0x1daa6: 84, - 0x1daa7: 84, - 0x1daa8: 84, - 0x1daa9: 84, - 0x1daaa: 84, - 0x1daab: 84, - 0x1daac: 84, - 0x1daad: 84, - 0x1daae: 84, - 0x1daaf: 84, - 0x1e000: 84, - 0x1e001: 84, - 0x1e002: 84, - 0x1e003: 84, - 0x1e004: 84, - 0x1e005: 84, - 0x1e006: 84, - 0x1e008: 84, - 0x1e009: 84, - 0x1e00a: 84, - 0x1e00b: 84, - 0x1e00c: 84, - 0x1e00d: 84, - 0x1e00e: 84, - 0x1e00f: 84, - 0x1e010: 84, - 0x1e011: 84, - 0x1e012: 84, - 0x1e013: 84, - 0x1e014: 84, - 0x1e015: 84, - 0x1e016: 84, - 0x1e017: 84, - 0x1e018: 84, - 0x1e01b: 84, - 0x1e01c: 84, - 0x1e01d: 84, - 0x1e01e: 84, - 0x1e01f: 84, - 0x1e020: 84, - 0x1e021: 84, - 0x1e023: 84, - 0x1e024: 84, - 0x1e026: 84, - 0x1e027: 84, - 0x1e028: 84, - 0x1e029: 84, - 0x1e02a: 84, - 0x1e08f: 84, - 0x1e130: 84, - 0x1e131: 84, - 0x1e132: 84, - 0x1e133: 84, - 0x1e134: 84, - 0x1e135: 84, - 0x1e136: 84, - 0x1e2ae: 84, - 0x1e2ec: 84, - 0x1e2ed: 84, - 0x1e2ee: 84, - 0x1e2ef: 84, - 0x1e4ec: 84, - 0x1e4ed: 84, - 0x1e4ee: 84, - 0x1e4ef: 84, - 0x1e8d0: 84, - 0x1e8d1: 84, - 0x1e8d2: 84, - 0x1e8d3: 84, - 0x1e8d4: 84, - 0x1e8d5: 84, - 0x1e8d6: 84, - 0x1e900: 68, - 0x1e901: 68, - 0x1e902: 68, - 0x1e903: 68, - 0x1e904: 68, - 0x1e905: 68, - 0x1e906: 68, - 0x1e907: 68, - 0x1e908: 68, - 0x1e909: 68, - 0x1e90a: 68, - 0x1e90b: 68, - 0x1e90c: 68, - 0x1e90d: 68, - 0x1e90e: 68, - 0x1e90f: 68, - 0x1e910: 68, - 0x1e911: 68, - 0x1e912: 68, - 0x1e913: 68, - 0x1e914: 68, - 0x1e915: 68, - 0x1e916: 68, - 0x1e917: 68, - 0x1e918: 68, - 0x1e919: 68, - 0x1e91a: 68, - 0x1e91b: 68, - 0x1e91c: 68, - 0x1e91d: 68, - 0x1e91e: 68, - 0x1e91f: 68, - 0x1e920: 68, - 0x1e921: 68, - 0x1e922: 68, - 0x1e923: 68, - 0x1e924: 68, - 0x1e925: 68, - 0x1e926: 68, - 0x1e927: 68, - 0x1e928: 68, - 0x1e929: 68, - 0x1e92a: 68, - 0x1e92b: 68, - 0x1e92c: 68, - 0x1e92d: 68, - 0x1e92e: 68, - 0x1e92f: 68, - 0x1e930: 68, - 0x1e931: 68, - 0x1e932: 68, - 0x1e933: 68, - 0x1e934: 68, - 0x1e935: 68, - 0x1e936: 68, - 0x1e937: 68, - 0x1e938: 68, - 0x1e939: 68, - 0x1e93a: 68, - 0x1e93b: 68, - 0x1e93c: 68, - 0x1e93d: 68, - 0x1e93e: 68, - 0x1e93f: 68, - 0x1e940: 68, - 0x1e941: 68, - 0x1e942: 68, - 0x1e943: 68, - 0x1e944: 84, - 0x1e945: 84, - 0x1e946: 84, - 0x1e947: 84, - 0x1e948: 84, - 0x1e949: 84, - 0x1e94a: 84, - 0x1e94b: 84, - 0xe0001: 84, - 0xe0020: 84, - 0xe0021: 84, - 0xe0022: 84, - 0xe0023: 84, - 0xe0024: 84, - 0xe0025: 84, - 0xe0026: 84, - 0xe0027: 84, - 0xe0028: 84, - 0xe0029: 84, - 0xe002a: 84, - 0xe002b: 84, - 0xe002c: 84, - 0xe002d: 84, - 0xe002e: 84, - 0xe002f: 84, - 0xe0030: 84, - 0xe0031: 84, - 0xe0032: 84, - 0xe0033: 84, - 0xe0034: 84, - 0xe0035: 84, - 0xe0036: 84, - 0xe0037: 84, - 0xe0038: 84, - 0xe0039: 84, - 0xe003a: 84, - 0xe003b: 84, - 0xe003c: 84, - 0xe003d: 84, - 0xe003e: 84, - 0xe003f: 84, - 0xe0040: 84, - 0xe0041: 84, - 0xe0042: 84, - 0xe0043: 84, - 0xe0044: 84, - 0xe0045: 84, - 0xe0046: 84, - 0xe0047: 84, - 0xe0048: 84, - 0xe0049: 84, - 0xe004a: 84, - 0xe004b: 84, - 0xe004c: 84, - 0xe004d: 84, - 0xe004e: 84, - 0xe004f: 84, - 0xe0050: 84, - 0xe0051: 84, - 0xe0052: 84, - 0xe0053: 84, - 0xe0054: 84, - 0xe0055: 84, - 0xe0056: 84, - 0xe0057: 84, - 0xe0058: 84, - 0xe0059: 84, - 0xe005a: 84, - 0xe005b: 84, - 0xe005c: 84, - 0xe005d: 84, - 0xe005e: 84, - 0xe005f: 84, - 0xe0060: 84, - 0xe0061: 84, - 0xe0062: 84, - 0xe0063: 84, - 0xe0064: 84, - 0xe0065: 84, - 0xe0066: 84, - 0xe0067: 84, - 0xe0068: 84, - 0xe0069: 84, - 0xe006a: 84, - 0xe006b: 84, - 0xe006c: 84, - 0xe006d: 84, - 0xe006e: 84, - 0xe006f: 84, - 0xe0070: 84, - 0xe0071: 84, - 0xe0072: 84, - 0xe0073: 84, - 0xe0074: 84, - 0xe0075: 84, - 0xe0076: 84, - 0xe0077: 84, - 0xe0078: 84, - 0xe0079: 84, - 0xe007a: 84, - 0xe007b: 84, - 0xe007c: 84, - 0xe007d: 84, - 0xe007e: 84, - 0xe007f: 84, - 0xe0100: 84, - 0xe0101: 84, - 0xe0102: 84, - 0xe0103: 84, - 0xe0104: 84, - 0xe0105: 84, - 0xe0106: 84, - 0xe0107: 84, - 0xe0108: 84, - 0xe0109: 84, - 0xe010a: 84, - 0xe010b: 84, - 0xe010c: 84, - 0xe010d: 84, - 0xe010e: 84, - 0xe010f: 84, - 0xe0110: 84, - 0xe0111: 84, - 0xe0112: 84, - 0xe0113: 84, - 0xe0114: 84, - 0xe0115: 84, - 0xe0116: 84, - 0xe0117: 84, - 0xe0118: 84, - 0xe0119: 84, - 0xe011a: 84, - 0xe011b: 84, - 0xe011c: 84, - 0xe011d: 84, - 0xe011e: 84, - 0xe011f: 84, - 0xe0120: 84, - 0xe0121: 84, - 0xe0122: 84, - 0xe0123: 84, - 0xe0124: 84, - 0xe0125: 84, - 0xe0126: 84, - 0xe0127: 84, - 0xe0128: 84, - 0xe0129: 84, - 0xe012a: 84, - 0xe012b: 84, - 0xe012c: 84, - 0xe012d: 84, - 0xe012e: 84, - 0xe012f: 84, - 0xe0130: 84, - 0xe0131: 84, - 0xe0132: 84, - 0xe0133: 84, - 0xe0134: 84, - 0xe0135: 84, - 0xe0136: 84, - 0xe0137: 84, - 0xe0138: 84, - 0xe0139: 84, - 0xe013a: 84, - 0xe013b: 84, - 0xe013c: 84, - 0xe013d: 84, - 0xe013e: 84, - 0xe013f: 84, - 0xe0140: 84, - 0xe0141: 84, - 0xe0142: 84, - 0xe0143: 84, - 0xe0144: 84, - 0xe0145: 84, - 0xe0146: 84, - 0xe0147: 84, - 0xe0148: 84, - 0xe0149: 84, - 0xe014a: 84, - 0xe014b: 84, - 0xe014c: 84, - 0xe014d: 84, - 0xe014e: 84, - 0xe014f: 84, - 0xe0150: 84, - 0xe0151: 84, - 0xe0152: 84, - 0xe0153: 84, - 0xe0154: 84, - 0xe0155: 84, - 0xe0156: 84, - 0xe0157: 84, - 0xe0158: 84, - 0xe0159: 84, - 0xe015a: 84, - 0xe015b: 84, - 0xe015c: 84, - 0xe015d: 84, - 0xe015e: 84, - 0xe015f: 84, - 0xe0160: 84, - 0xe0161: 84, - 0xe0162: 84, - 0xe0163: 84, - 0xe0164: 84, - 0xe0165: 84, - 0xe0166: 84, - 0xe0167: 84, - 0xe0168: 84, - 0xe0169: 84, - 0xe016a: 84, - 0xe016b: 84, - 0xe016c: 84, - 0xe016d: 84, - 0xe016e: 84, - 0xe016f: 84, - 0xe0170: 84, - 0xe0171: 84, - 0xe0172: 84, - 0xe0173: 84, - 0xe0174: 84, - 0xe0175: 84, - 0xe0176: 84, - 0xe0177: 84, - 0xe0178: 84, - 0xe0179: 84, - 0xe017a: 84, - 0xe017b: 84, - 0xe017c: 84, - 0xe017d: 84, - 0xe017e: 84, - 0xe017f: 84, - 0xe0180: 84, - 0xe0181: 84, - 0xe0182: 84, - 0xe0183: 84, - 0xe0184: 84, - 0xe0185: 84, - 0xe0186: 84, - 0xe0187: 84, - 0xe0188: 84, - 0xe0189: 84, - 0xe018a: 84, - 0xe018b: 84, - 0xe018c: 84, - 0xe018d: 84, - 0xe018e: 84, - 0xe018f: 84, - 0xe0190: 84, - 0xe0191: 84, - 0xe0192: 84, - 0xe0193: 84, - 0xe0194: 84, - 0xe0195: 84, - 0xe0196: 84, - 0xe0197: 84, - 0xe0198: 84, - 0xe0199: 84, - 0xe019a: 84, - 0xe019b: 84, - 0xe019c: 84, - 0xe019d: 84, - 0xe019e: 84, - 0xe019f: 84, - 0xe01a0: 84, - 0xe01a1: 84, - 0xe01a2: 84, - 0xe01a3: 84, - 0xe01a4: 84, - 0xe01a5: 84, - 0xe01a6: 84, - 0xe01a7: 84, - 0xe01a8: 84, - 0xe01a9: 84, - 0xe01aa: 84, - 0xe01ab: 84, - 0xe01ac: 84, - 0xe01ad: 84, - 0xe01ae: 84, - 0xe01af: 84, - 0xe01b0: 84, - 0xe01b1: 84, - 0xe01b2: 84, - 0xe01b3: 84, - 0xe01b4: 84, - 0xe01b5: 84, - 0xe01b6: 84, - 0xe01b7: 84, - 0xe01b8: 84, - 0xe01b9: 84, - 0xe01ba: 84, - 0xe01bb: 84, - 0xe01bc: 84, - 0xe01bd: 84, - 0xe01be: 84, - 0xe01bf: 84, - 0xe01c0: 84, - 0xe01c1: 84, - 0xe01c2: 84, - 0xe01c3: 84, - 0xe01c4: 84, - 0xe01c5: 84, - 0xe01c6: 84, - 0xe01c7: 84, - 0xe01c8: 84, - 0xe01c9: 84, - 0xe01ca: 84, - 0xe01cb: 84, - 0xe01cc: 84, - 0xe01cd: 84, - 0xe01ce: 84, - 0xe01cf: 84, - 0xe01d0: 84, - 0xe01d1: 84, - 0xe01d2: 84, - 0xe01d3: 84, - 0xe01d4: 84, - 0xe01d5: 84, - 0xe01d6: 84, - 0xe01d7: 84, - 0xe01d8: 84, - 0xe01d9: 84, - 0xe01da: 84, - 0xe01db: 84, - 0xe01dc: 84, - 0xe01dd: 84, - 0xe01de: 84, - 0xe01df: 84, - 0xe01e0: 84, - 0xe01e1: 84, - 0xe01e2: 84, - 0xe01e3: 84, - 0xe01e4: 84, - 0xe01e5: 84, - 0xe01e6: 84, - 0xe01e7: 84, - 0xe01e8: 84, - 0xe01e9: 84, - 0xe01ea: 84, - 0xe01eb: 84, - 0xe01ec: 84, - 0xe01ed: 84, - 0xe01ee: 84, - 0xe01ef: 84, -} -codepoint_classes = { - 'PVALID': ( - 0x2d0000002e, - 0x300000003a, - 0x610000007b, - 0xdf000000f7, - 0xf800000100, - 0x10100000102, - 0x10300000104, - 0x10500000106, - 0x10700000108, - 0x1090000010a, - 0x10b0000010c, - 0x10d0000010e, - 0x10f00000110, - 0x11100000112, - 0x11300000114, - 0x11500000116, - 0x11700000118, - 0x1190000011a, - 0x11b0000011c, - 0x11d0000011e, - 0x11f00000120, - 0x12100000122, - 0x12300000124, - 0x12500000126, - 0x12700000128, - 0x1290000012a, - 0x12b0000012c, - 0x12d0000012e, - 0x12f00000130, - 0x13100000132, - 0x13500000136, - 0x13700000139, - 0x13a0000013b, - 0x13c0000013d, - 0x13e0000013f, - 0x14200000143, - 0x14400000145, - 0x14600000147, - 0x14800000149, - 0x14b0000014c, - 0x14d0000014e, - 0x14f00000150, - 0x15100000152, - 0x15300000154, - 0x15500000156, - 0x15700000158, - 0x1590000015a, - 0x15b0000015c, - 0x15d0000015e, - 0x15f00000160, - 0x16100000162, - 0x16300000164, - 0x16500000166, - 0x16700000168, - 0x1690000016a, - 0x16b0000016c, - 0x16d0000016e, - 0x16f00000170, - 0x17100000172, - 0x17300000174, - 0x17500000176, - 0x17700000178, - 0x17a0000017b, - 0x17c0000017d, - 0x17e0000017f, - 0x18000000181, - 0x18300000184, - 0x18500000186, - 0x18800000189, - 0x18c0000018e, - 0x19200000193, - 0x19500000196, - 0x1990000019c, - 0x19e0000019f, - 0x1a1000001a2, - 0x1a3000001a4, - 0x1a5000001a6, - 0x1a8000001a9, - 0x1aa000001ac, - 0x1ad000001ae, - 0x1b0000001b1, - 0x1b4000001b5, - 0x1b6000001b7, - 0x1b9000001bc, - 0x1bd000001c4, - 0x1ce000001cf, - 0x1d0000001d1, - 0x1d2000001d3, - 0x1d4000001d5, - 0x1d6000001d7, - 0x1d8000001d9, - 0x1da000001db, - 0x1dc000001de, - 0x1df000001e0, - 0x1e1000001e2, - 0x1e3000001e4, - 0x1e5000001e6, - 0x1e7000001e8, - 0x1e9000001ea, - 0x1eb000001ec, - 0x1ed000001ee, - 0x1ef000001f1, - 0x1f5000001f6, - 0x1f9000001fa, - 0x1fb000001fc, - 0x1fd000001fe, - 0x1ff00000200, - 0x20100000202, - 0x20300000204, - 0x20500000206, - 0x20700000208, - 0x2090000020a, - 0x20b0000020c, - 0x20d0000020e, - 0x20f00000210, - 0x21100000212, - 0x21300000214, - 0x21500000216, - 0x21700000218, - 0x2190000021a, - 0x21b0000021c, - 0x21d0000021e, - 0x21f00000220, - 0x22100000222, - 0x22300000224, - 0x22500000226, - 0x22700000228, - 0x2290000022a, - 0x22b0000022c, - 0x22d0000022e, - 0x22f00000230, - 0x23100000232, - 0x2330000023a, - 0x23c0000023d, - 0x23f00000241, - 0x24200000243, - 0x24700000248, - 0x2490000024a, - 0x24b0000024c, - 0x24d0000024e, - 0x24f000002b0, - 0x2b9000002c2, - 0x2c6000002d2, - 0x2ec000002ed, - 0x2ee000002ef, - 0x30000000340, - 0x34200000343, - 0x3460000034f, - 0x35000000370, - 0x37100000372, - 0x37300000374, - 0x37700000378, - 0x37b0000037e, - 0x39000000391, - 0x3ac000003cf, - 0x3d7000003d8, - 0x3d9000003da, - 0x3db000003dc, - 0x3dd000003de, - 0x3df000003e0, - 0x3e1000003e2, - 0x3e3000003e4, - 0x3e5000003e6, - 0x3e7000003e8, - 0x3e9000003ea, - 0x3eb000003ec, - 0x3ed000003ee, - 0x3ef000003f0, - 0x3f3000003f4, - 0x3f8000003f9, - 0x3fb000003fd, - 0x43000000460, - 0x46100000462, - 0x46300000464, - 0x46500000466, - 0x46700000468, - 0x4690000046a, - 0x46b0000046c, - 0x46d0000046e, - 0x46f00000470, - 0x47100000472, - 0x47300000474, - 0x47500000476, - 0x47700000478, - 0x4790000047a, - 0x47b0000047c, - 0x47d0000047e, - 0x47f00000480, - 0x48100000482, - 0x48300000488, - 0x48b0000048c, - 0x48d0000048e, - 0x48f00000490, - 0x49100000492, - 0x49300000494, - 0x49500000496, - 0x49700000498, - 0x4990000049a, - 0x49b0000049c, - 0x49d0000049e, - 0x49f000004a0, - 0x4a1000004a2, - 0x4a3000004a4, - 0x4a5000004a6, - 0x4a7000004a8, - 0x4a9000004aa, - 0x4ab000004ac, - 0x4ad000004ae, - 0x4af000004b0, - 0x4b1000004b2, - 0x4b3000004b4, - 0x4b5000004b6, - 0x4b7000004b8, - 0x4b9000004ba, - 0x4bb000004bc, - 0x4bd000004be, - 0x4bf000004c0, - 0x4c2000004c3, - 0x4c4000004c5, - 0x4c6000004c7, - 0x4c8000004c9, - 0x4ca000004cb, - 0x4cc000004cd, - 0x4ce000004d0, - 0x4d1000004d2, - 0x4d3000004d4, - 0x4d5000004d6, - 0x4d7000004d8, - 0x4d9000004da, - 0x4db000004dc, - 0x4dd000004de, - 0x4df000004e0, - 0x4e1000004e2, - 0x4e3000004e4, - 0x4e5000004e6, - 0x4e7000004e8, - 0x4e9000004ea, - 0x4eb000004ec, - 0x4ed000004ee, - 0x4ef000004f0, - 0x4f1000004f2, - 0x4f3000004f4, - 0x4f5000004f6, - 0x4f7000004f8, - 0x4f9000004fa, - 0x4fb000004fc, - 0x4fd000004fe, - 0x4ff00000500, - 0x50100000502, - 0x50300000504, - 0x50500000506, - 0x50700000508, - 0x5090000050a, - 0x50b0000050c, - 0x50d0000050e, - 0x50f00000510, - 0x51100000512, - 0x51300000514, - 0x51500000516, - 0x51700000518, - 0x5190000051a, - 0x51b0000051c, - 0x51d0000051e, - 0x51f00000520, - 0x52100000522, - 0x52300000524, - 0x52500000526, - 0x52700000528, - 0x5290000052a, - 0x52b0000052c, - 0x52d0000052e, - 0x52f00000530, - 0x5590000055a, - 0x56000000587, - 0x58800000589, - 0x591000005be, - 0x5bf000005c0, - 0x5c1000005c3, - 0x5c4000005c6, - 0x5c7000005c8, - 0x5d0000005eb, - 0x5ef000005f3, - 0x6100000061b, - 0x62000000640, - 0x64100000660, - 0x66e00000675, - 0x679000006d4, - 0x6d5000006dd, - 0x6df000006e9, - 0x6ea000006f0, - 0x6fa00000700, - 0x7100000074b, - 0x74d000007b2, - 0x7c0000007f6, - 0x7fd000007fe, - 0x8000000082e, - 0x8400000085c, - 0x8600000086b, - 0x87000000888, - 0x8890000088f, - 0x898000008e2, - 0x8e300000958, - 0x96000000964, - 0x96600000970, - 0x97100000984, - 0x9850000098d, - 0x98f00000991, - 0x993000009a9, - 0x9aa000009b1, - 0x9b2000009b3, - 0x9b6000009ba, - 0x9bc000009c5, - 0x9c7000009c9, - 0x9cb000009cf, - 0x9d7000009d8, - 0x9e0000009e4, - 0x9e6000009f2, - 0x9fc000009fd, - 0x9fe000009ff, - 0xa0100000a04, - 0xa0500000a0b, - 0xa0f00000a11, - 0xa1300000a29, - 0xa2a00000a31, - 0xa3200000a33, - 0xa3500000a36, - 0xa3800000a3a, - 0xa3c00000a3d, - 0xa3e00000a43, - 0xa4700000a49, - 0xa4b00000a4e, - 0xa5100000a52, - 0xa5c00000a5d, - 0xa6600000a76, - 0xa8100000a84, - 0xa8500000a8e, - 0xa8f00000a92, - 0xa9300000aa9, - 0xaaa00000ab1, - 0xab200000ab4, - 0xab500000aba, - 0xabc00000ac6, - 0xac700000aca, - 0xacb00000ace, - 0xad000000ad1, - 0xae000000ae4, - 0xae600000af0, - 0xaf900000b00, - 0xb0100000b04, - 0xb0500000b0d, - 0xb0f00000b11, - 0xb1300000b29, - 0xb2a00000b31, - 0xb3200000b34, - 0xb3500000b3a, - 0xb3c00000b45, - 0xb4700000b49, - 0xb4b00000b4e, - 0xb5500000b58, - 0xb5f00000b64, - 0xb6600000b70, - 0xb7100000b72, - 0xb8200000b84, - 0xb8500000b8b, - 0xb8e00000b91, - 0xb9200000b96, - 0xb9900000b9b, - 0xb9c00000b9d, - 0xb9e00000ba0, - 0xba300000ba5, - 0xba800000bab, - 0xbae00000bba, - 0xbbe00000bc3, - 0xbc600000bc9, - 0xbca00000bce, - 0xbd000000bd1, - 0xbd700000bd8, - 0xbe600000bf0, - 0xc0000000c0d, - 0xc0e00000c11, - 0xc1200000c29, - 0xc2a00000c3a, - 0xc3c00000c45, - 0xc4600000c49, - 0xc4a00000c4e, - 0xc5500000c57, - 0xc5800000c5b, - 0xc5d00000c5e, - 0xc6000000c64, - 0xc6600000c70, - 0xc8000000c84, - 0xc8500000c8d, - 0xc8e00000c91, - 0xc9200000ca9, - 0xcaa00000cb4, - 0xcb500000cba, - 0xcbc00000cc5, - 0xcc600000cc9, - 0xcca00000cce, - 0xcd500000cd7, - 0xcdd00000cdf, - 0xce000000ce4, - 0xce600000cf0, - 0xcf100000cf4, - 0xd0000000d0d, - 0xd0e00000d11, - 0xd1200000d45, - 0xd4600000d49, - 0xd4a00000d4f, - 0xd5400000d58, - 0xd5f00000d64, - 0xd6600000d70, - 0xd7a00000d80, - 0xd8100000d84, - 0xd8500000d97, - 0xd9a00000db2, - 0xdb300000dbc, - 0xdbd00000dbe, - 0xdc000000dc7, - 0xdca00000dcb, - 0xdcf00000dd5, - 0xdd600000dd7, - 0xdd800000de0, - 0xde600000df0, - 0xdf200000df4, - 0xe0100000e33, - 0xe3400000e3b, - 0xe4000000e4f, - 0xe5000000e5a, - 0xe8100000e83, - 0xe8400000e85, - 0xe8600000e8b, - 0xe8c00000ea4, - 0xea500000ea6, - 0xea700000eb3, - 0xeb400000ebe, - 0xec000000ec5, - 0xec600000ec7, - 0xec800000ecf, - 0xed000000eda, - 0xede00000ee0, - 0xf0000000f01, - 0xf0b00000f0c, - 0xf1800000f1a, - 0xf2000000f2a, - 0xf3500000f36, - 0xf3700000f38, - 0xf3900000f3a, - 0xf3e00000f43, - 0xf4400000f48, - 0xf4900000f4d, - 0xf4e00000f52, - 0xf5300000f57, - 0xf5800000f5c, - 0xf5d00000f69, - 0xf6a00000f6d, - 0xf7100000f73, - 0xf7400000f75, - 0xf7a00000f81, - 0xf8200000f85, - 0xf8600000f93, - 0xf9400000f98, - 0xf9900000f9d, - 0xf9e00000fa2, - 0xfa300000fa7, - 0xfa800000fac, - 0xfad00000fb9, - 0xfba00000fbd, - 0xfc600000fc7, - 0x10000000104a, - 0x10500000109e, - 0x10d0000010fb, - 0x10fd00001100, - 0x120000001249, - 0x124a0000124e, - 0x125000001257, - 0x125800001259, - 0x125a0000125e, - 0x126000001289, - 0x128a0000128e, - 0x1290000012b1, - 0x12b2000012b6, - 0x12b8000012bf, - 0x12c0000012c1, - 0x12c2000012c6, - 0x12c8000012d7, - 0x12d800001311, - 0x131200001316, - 0x13180000135b, - 0x135d00001360, - 0x138000001390, - 0x13a0000013f6, - 0x14010000166d, - 0x166f00001680, - 0x16810000169b, - 0x16a0000016eb, - 0x16f1000016f9, - 0x170000001716, - 0x171f00001735, - 0x174000001754, - 0x17600000176d, - 0x176e00001771, - 0x177200001774, - 0x1780000017b4, - 0x17b6000017d4, - 0x17d7000017d8, - 0x17dc000017de, - 0x17e0000017ea, - 0x18100000181a, - 0x182000001879, - 0x1880000018ab, - 0x18b0000018f6, - 0x19000000191f, - 0x19200000192c, - 0x19300000193c, - 0x19460000196e, - 0x197000001975, - 0x1980000019ac, - 0x19b0000019ca, - 0x19d0000019da, - 0x1a0000001a1c, - 0x1a2000001a5f, - 0x1a6000001a7d, - 0x1a7f00001a8a, - 0x1a9000001a9a, - 0x1aa700001aa8, - 0x1ab000001abe, - 0x1abf00001acf, - 0x1b0000001b4d, - 0x1b5000001b5a, - 0x1b6b00001b74, - 0x1b8000001bf4, - 0x1c0000001c38, - 0x1c4000001c4a, - 0x1c4d00001c7e, - 0x1cd000001cd3, - 0x1cd400001cfb, - 0x1d0000001d2c, - 0x1d2f00001d30, - 0x1d3b00001d3c, - 0x1d4e00001d4f, - 0x1d6b00001d78, - 0x1d7900001d9b, - 0x1dc000001e00, - 0x1e0100001e02, - 0x1e0300001e04, - 0x1e0500001e06, - 0x1e0700001e08, - 0x1e0900001e0a, - 0x1e0b00001e0c, - 0x1e0d00001e0e, - 0x1e0f00001e10, - 0x1e1100001e12, - 0x1e1300001e14, - 0x1e1500001e16, - 0x1e1700001e18, - 0x1e1900001e1a, - 0x1e1b00001e1c, - 0x1e1d00001e1e, - 0x1e1f00001e20, - 0x1e2100001e22, - 0x1e2300001e24, - 0x1e2500001e26, - 0x1e2700001e28, - 0x1e2900001e2a, - 0x1e2b00001e2c, - 0x1e2d00001e2e, - 0x1e2f00001e30, - 0x1e3100001e32, - 0x1e3300001e34, - 0x1e3500001e36, - 0x1e3700001e38, - 0x1e3900001e3a, - 0x1e3b00001e3c, - 0x1e3d00001e3e, - 0x1e3f00001e40, - 0x1e4100001e42, - 0x1e4300001e44, - 0x1e4500001e46, - 0x1e4700001e48, - 0x1e4900001e4a, - 0x1e4b00001e4c, - 0x1e4d00001e4e, - 0x1e4f00001e50, - 0x1e5100001e52, - 0x1e5300001e54, - 0x1e5500001e56, - 0x1e5700001e58, - 0x1e5900001e5a, - 0x1e5b00001e5c, - 0x1e5d00001e5e, - 0x1e5f00001e60, - 0x1e6100001e62, - 0x1e6300001e64, - 0x1e6500001e66, - 0x1e6700001e68, - 0x1e6900001e6a, - 0x1e6b00001e6c, - 0x1e6d00001e6e, - 0x1e6f00001e70, - 0x1e7100001e72, - 0x1e7300001e74, - 0x1e7500001e76, - 0x1e7700001e78, - 0x1e7900001e7a, - 0x1e7b00001e7c, - 0x1e7d00001e7e, - 0x1e7f00001e80, - 0x1e8100001e82, - 0x1e8300001e84, - 0x1e8500001e86, - 0x1e8700001e88, - 0x1e8900001e8a, - 0x1e8b00001e8c, - 0x1e8d00001e8e, - 0x1e8f00001e90, - 0x1e9100001e92, - 0x1e9300001e94, - 0x1e9500001e9a, - 0x1e9c00001e9e, - 0x1e9f00001ea0, - 0x1ea100001ea2, - 0x1ea300001ea4, - 0x1ea500001ea6, - 0x1ea700001ea8, - 0x1ea900001eaa, - 0x1eab00001eac, - 0x1ead00001eae, - 0x1eaf00001eb0, - 0x1eb100001eb2, - 0x1eb300001eb4, - 0x1eb500001eb6, - 0x1eb700001eb8, - 0x1eb900001eba, - 0x1ebb00001ebc, - 0x1ebd00001ebe, - 0x1ebf00001ec0, - 0x1ec100001ec2, - 0x1ec300001ec4, - 0x1ec500001ec6, - 0x1ec700001ec8, - 0x1ec900001eca, - 0x1ecb00001ecc, - 0x1ecd00001ece, - 0x1ecf00001ed0, - 0x1ed100001ed2, - 0x1ed300001ed4, - 0x1ed500001ed6, - 0x1ed700001ed8, - 0x1ed900001eda, - 0x1edb00001edc, - 0x1edd00001ede, - 0x1edf00001ee0, - 0x1ee100001ee2, - 0x1ee300001ee4, - 0x1ee500001ee6, - 0x1ee700001ee8, - 0x1ee900001eea, - 0x1eeb00001eec, - 0x1eed00001eee, - 0x1eef00001ef0, - 0x1ef100001ef2, - 0x1ef300001ef4, - 0x1ef500001ef6, - 0x1ef700001ef8, - 0x1ef900001efa, - 0x1efb00001efc, - 0x1efd00001efe, - 0x1eff00001f08, - 0x1f1000001f16, - 0x1f2000001f28, - 0x1f3000001f38, - 0x1f4000001f46, - 0x1f5000001f58, - 0x1f6000001f68, - 0x1f7000001f71, - 0x1f7200001f73, - 0x1f7400001f75, - 0x1f7600001f77, - 0x1f7800001f79, - 0x1f7a00001f7b, - 0x1f7c00001f7d, - 0x1fb000001fb2, - 0x1fb600001fb7, - 0x1fc600001fc7, - 0x1fd000001fd3, - 0x1fd600001fd8, - 0x1fe000001fe3, - 0x1fe400001fe8, - 0x1ff600001ff7, - 0x214e0000214f, - 0x218400002185, - 0x2c3000002c60, - 0x2c6100002c62, - 0x2c6500002c67, - 0x2c6800002c69, - 0x2c6a00002c6b, - 0x2c6c00002c6d, - 0x2c7100002c72, - 0x2c7300002c75, - 0x2c7600002c7c, - 0x2c8100002c82, - 0x2c8300002c84, - 0x2c8500002c86, - 0x2c8700002c88, - 0x2c8900002c8a, - 0x2c8b00002c8c, - 0x2c8d00002c8e, - 0x2c8f00002c90, - 0x2c9100002c92, - 0x2c9300002c94, - 0x2c9500002c96, - 0x2c9700002c98, - 0x2c9900002c9a, - 0x2c9b00002c9c, - 0x2c9d00002c9e, - 0x2c9f00002ca0, - 0x2ca100002ca2, - 0x2ca300002ca4, - 0x2ca500002ca6, - 0x2ca700002ca8, - 0x2ca900002caa, - 0x2cab00002cac, - 0x2cad00002cae, - 0x2caf00002cb0, - 0x2cb100002cb2, - 0x2cb300002cb4, - 0x2cb500002cb6, - 0x2cb700002cb8, - 0x2cb900002cba, - 0x2cbb00002cbc, - 0x2cbd00002cbe, - 0x2cbf00002cc0, - 0x2cc100002cc2, - 0x2cc300002cc4, - 0x2cc500002cc6, - 0x2cc700002cc8, - 0x2cc900002cca, - 0x2ccb00002ccc, - 0x2ccd00002cce, - 0x2ccf00002cd0, - 0x2cd100002cd2, - 0x2cd300002cd4, - 0x2cd500002cd6, - 0x2cd700002cd8, - 0x2cd900002cda, - 0x2cdb00002cdc, - 0x2cdd00002cde, - 0x2cdf00002ce0, - 0x2ce100002ce2, - 0x2ce300002ce5, - 0x2cec00002ced, - 0x2cee00002cf2, - 0x2cf300002cf4, - 0x2d0000002d26, - 0x2d2700002d28, - 0x2d2d00002d2e, - 0x2d3000002d68, - 0x2d7f00002d97, - 0x2da000002da7, - 0x2da800002daf, - 0x2db000002db7, - 0x2db800002dbf, - 0x2dc000002dc7, - 0x2dc800002dcf, - 0x2dd000002dd7, - 0x2dd800002ddf, - 0x2de000002e00, - 0x2e2f00002e30, - 0x300500003008, - 0x302a0000302e, - 0x303c0000303d, - 0x304100003097, - 0x30990000309b, - 0x309d0000309f, - 0x30a1000030fb, - 0x30fc000030ff, - 0x310500003130, - 0x31a0000031c0, - 0x31f000003200, - 0x340000004dc0, - 0x4e000000a48d, - 0xa4d00000a4fe, - 0xa5000000a60d, - 0xa6100000a62c, - 0xa6410000a642, - 0xa6430000a644, - 0xa6450000a646, - 0xa6470000a648, - 0xa6490000a64a, - 0xa64b0000a64c, - 0xa64d0000a64e, - 0xa64f0000a650, - 0xa6510000a652, - 0xa6530000a654, - 0xa6550000a656, - 0xa6570000a658, - 0xa6590000a65a, - 0xa65b0000a65c, - 0xa65d0000a65e, - 0xa65f0000a660, - 0xa6610000a662, - 0xa6630000a664, - 0xa6650000a666, - 0xa6670000a668, - 0xa6690000a66a, - 0xa66b0000a66c, - 0xa66d0000a670, - 0xa6740000a67e, - 0xa67f0000a680, - 0xa6810000a682, - 0xa6830000a684, - 0xa6850000a686, - 0xa6870000a688, - 0xa6890000a68a, - 0xa68b0000a68c, - 0xa68d0000a68e, - 0xa68f0000a690, - 0xa6910000a692, - 0xa6930000a694, - 0xa6950000a696, - 0xa6970000a698, - 0xa6990000a69a, - 0xa69b0000a69c, - 0xa69e0000a6e6, - 0xa6f00000a6f2, - 0xa7170000a720, - 0xa7230000a724, - 0xa7250000a726, - 0xa7270000a728, - 0xa7290000a72a, - 0xa72b0000a72c, - 0xa72d0000a72e, - 0xa72f0000a732, - 0xa7330000a734, - 0xa7350000a736, - 0xa7370000a738, - 0xa7390000a73a, - 0xa73b0000a73c, - 0xa73d0000a73e, - 0xa73f0000a740, - 0xa7410000a742, - 0xa7430000a744, - 0xa7450000a746, - 0xa7470000a748, - 0xa7490000a74a, - 0xa74b0000a74c, - 0xa74d0000a74e, - 0xa74f0000a750, - 0xa7510000a752, - 0xa7530000a754, - 0xa7550000a756, - 0xa7570000a758, - 0xa7590000a75a, - 0xa75b0000a75c, - 0xa75d0000a75e, - 0xa75f0000a760, - 0xa7610000a762, - 0xa7630000a764, - 0xa7650000a766, - 0xa7670000a768, - 0xa7690000a76a, - 0xa76b0000a76c, - 0xa76d0000a76e, - 0xa76f0000a770, - 0xa7710000a779, - 0xa77a0000a77b, - 0xa77c0000a77d, - 0xa77f0000a780, - 0xa7810000a782, - 0xa7830000a784, - 0xa7850000a786, - 0xa7870000a789, - 0xa78c0000a78d, - 0xa78e0000a790, - 0xa7910000a792, - 0xa7930000a796, - 0xa7970000a798, - 0xa7990000a79a, - 0xa79b0000a79c, - 0xa79d0000a79e, - 0xa79f0000a7a0, - 0xa7a10000a7a2, - 0xa7a30000a7a4, - 0xa7a50000a7a6, - 0xa7a70000a7a8, - 0xa7a90000a7aa, - 0xa7af0000a7b0, - 0xa7b50000a7b6, - 0xa7b70000a7b8, - 0xa7b90000a7ba, - 0xa7bb0000a7bc, - 0xa7bd0000a7be, - 0xa7bf0000a7c0, - 0xa7c10000a7c2, - 0xa7c30000a7c4, - 0xa7c80000a7c9, - 0xa7ca0000a7cb, - 0xa7d10000a7d2, - 0xa7d30000a7d4, - 0xa7d50000a7d6, - 0xa7d70000a7d8, - 0xa7d90000a7da, - 0xa7f60000a7f8, - 0xa7fa0000a828, - 0xa82c0000a82d, - 0xa8400000a874, - 0xa8800000a8c6, - 0xa8d00000a8da, - 0xa8e00000a8f8, - 0xa8fb0000a8fc, - 0xa8fd0000a92e, - 0xa9300000a954, - 0xa9800000a9c1, - 0xa9cf0000a9da, - 0xa9e00000a9ff, - 0xaa000000aa37, - 0xaa400000aa4e, - 0xaa500000aa5a, - 0xaa600000aa77, - 0xaa7a0000aac3, - 0xaadb0000aade, - 0xaae00000aaf0, - 0xaaf20000aaf7, - 0xab010000ab07, - 0xab090000ab0f, - 0xab110000ab17, - 0xab200000ab27, - 0xab280000ab2f, - 0xab300000ab5b, - 0xab600000ab69, - 0xabc00000abeb, - 0xabec0000abee, - 0xabf00000abfa, - 0xac000000d7a4, - 0xfa0e0000fa10, - 0xfa110000fa12, - 0xfa130000fa15, - 0xfa1f0000fa20, - 0xfa210000fa22, - 0xfa230000fa25, - 0xfa270000fa2a, - 0xfb1e0000fb1f, - 0xfe200000fe30, - 0xfe730000fe74, - 0x100000001000c, - 0x1000d00010027, - 0x100280001003b, - 0x1003c0001003e, - 0x1003f0001004e, - 0x100500001005e, - 0x10080000100fb, - 0x101fd000101fe, - 0x102800001029d, - 0x102a0000102d1, - 0x102e0000102e1, - 0x1030000010320, - 0x1032d00010341, - 0x103420001034a, - 0x103500001037b, - 0x103800001039e, - 0x103a0000103c4, - 0x103c8000103d0, - 0x104280001049e, - 0x104a0000104aa, - 0x104d8000104fc, - 0x1050000010528, - 0x1053000010564, - 0x10597000105a2, - 0x105a3000105b2, - 0x105b3000105ba, - 0x105bb000105bd, - 0x1060000010737, - 0x1074000010756, - 0x1076000010768, - 0x1078000010781, - 0x1080000010806, - 0x1080800010809, - 0x1080a00010836, - 0x1083700010839, - 0x1083c0001083d, - 0x1083f00010856, - 0x1086000010877, - 0x108800001089f, - 0x108e0000108f3, - 0x108f4000108f6, - 0x1090000010916, - 0x109200001093a, - 0x10980000109b8, - 0x109be000109c0, - 0x10a0000010a04, - 0x10a0500010a07, - 0x10a0c00010a14, - 0x10a1500010a18, - 0x10a1900010a36, - 0x10a3800010a3b, - 0x10a3f00010a40, - 0x10a6000010a7d, - 0x10a8000010a9d, - 0x10ac000010ac8, - 0x10ac900010ae7, - 0x10b0000010b36, - 0x10b4000010b56, - 0x10b6000010b73, - 0x10b8000010b92, - 0x10c0000010c49, - 0x10cc000010cf3, - 0x10d0000010d28, - 0x10d3000010d3a, - 0x10e8000010eaa, - 0x10eab00010ead, - 0x10eb000010eb2, - 0x10efd00010f1d, - 0x10f2700010f28, - 0x10f3000010f51, - 0x10f7000010f86, - 0x10fb000010fc5, - 0x10fe000010ff7, - 0x1100000011047, - 0x1106600011076, - 0x1107f000110bb, - 0x110c2000110c3, - 0x110d0000110e9, - 0x110f0000110fa, - 0x1110000011135, - 0x1113600011140, - 0x1114400011148, - 0x1115000011174, - 0x1117600011177, - 0x11180000111c5, - 0x111c9000111cd, - 0x111ce000111db, - 0x111dc000111dd, - 0x1120000011212, - 0x1121300011238, - 0x1123e00011242, - 0x1128000011287, - 0x1128800011289, - 0x1128a0001128e, - 0x1128f0001129e, - 0x1129f000112a9, - 0x112b0000112eb, - 0x112f0000112fa, - 0x1130000011304, - 0x113050001130d, - 0x1130f00011311, - 0x1131300011329, - 0x1132a00011331, - 0x1133200011334, - 0x113350001133a, - 0x1133b00011345, - 0x1134700011349, - 0x1134b0001134e, - 0x1135000011351, - 0x1135700011358, - 0x1135d00011364, - 0x113660001136d, - 0x1137000011375, - 0x114000001144b, - 0x114500001145a, - 0x1145e00011462, - 0x11480000114c6, - 0x114c7000114c8, - 0x114d0000114da, - 0x11580000115b6, - 0x115b8000115c1, - 0x115d8000115de, - 0x1160000011641, - 0x1164400011645, - 0x116500001165a, - 0x11680000116b9, - 0x116c0000116ca, - 0x117000001171b, - 0x1171d0001172c, - 0x117300001173a, - 0x1174000011747, - 0x118000001183b, - 0x118c0000118ea, - 0x118ff00011907, - 0x119090001190a, - 0x1190c00011914, - 0x1191500011917, - 0x1191800011936, - 0x1193700011939, - 0x1193b00011944, - 0x119500001195a, - 0x119a0000119a8, - 0x119aa000119d8, - 0x119da000119e2, - 0x119e3000119e5, - 0x11a0000011a3f, - 0x11a4700011a48, - 0x11a5000011a9a, - 0x11a9d00011a9e, - 0x11ab000011af9, - 0x11c0000011c09, - 0x11c0a00011c37, - 0x11c3800011c41, - 0x11c5000011c5a, - 0x11c7200011c90, - 0x11c9200011ca8, - 0x11ca900011cb7, - 0x11d0000011d07, - 0x11d0800011d0a, - 0x11d0b00011d37, - 0x11d3a00011d3b, - 0x11d3c00011d3e, - 0x11d3f00011d48, - 0x11d5000011d5a, - 0x11d6000011d66, - 0x11d6700011d69, - 0x11d6a00011d8f, - 0x11d9000011d92, - 0x11d9300011d99, - 0x11da000011daa, - 0x11ee000011ef7, - 0x11f0000011f11, - 0x11f1200011f3b, - 0x11f3e00011f43, - 0x11f5000011f5a, - 0x11fb000011fb1, - 0x120000001239a, - 0x1248000012544, - 0x12f9000012ff1, - 0x1300000013430, - 0x1344000013456, - 0x1440000014647, - 0x1680000016a39, - 0x16a4000016a5f, - 0x16a6000016a6a, - 0x16a7000016abf, - 0x16ac000016aca, - 0x16ad000016aee, - 0x16af000016af5, - 0x16b0000016b37, - 0x16b4000016b44, - 0x16b5000016b5a, - 0x16b6300016b78, - 0x16b7d00016b90, - 0x16e6000016e80, - 0x16f0000016f4b, - 0x16f4f00016f88, - 0x16f8f00016fa0, - 0x16fe000016fe2, - 0x16fe300016fe5, - 0x16ff000016ff2, - 0x17000000187f8, - 0x1880000018cd6, - 0x18d0000018d09, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b123, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1b1550001b156, - 0x1b1640001b168, - 0x1b1700001b2fc, - 0x1bc000001bc6b, - 0x1bc700001bc7d, - 0x1bc800001bc89, - 0x1bc900001bc9a, - 0x1bc9d0001bc9f, - 0x1cf000001cf2e, - 0x1cf300001cf47, - 0x1da000001da37, - 0x1da3b0001da6d, - 0x1da750001da76, - 0x1da840001da85, - 0x1da9b0001daa0, - 0x1daa10001dab0, - 0x1df000001df1f, - 0x1df250001df2b, - 0x1e0000001e007, - 0x1e0080001e019, - 0x1e01b0001e022, - 0x1e0230001e025, - 0x1e0260001e02b, - 0x1e08f0001e090, - 0x1e1000001e12d, - 0x1e1300001e13e, - 0x1e1400001e14a, - 0x1e14e0001e14f, - 0x1e2900001e2af, - 0x1e2c00001e2fa, - 0x1e4d00001e4fa, - 0x1e7e00001e7e7, - 0x1e7e80001e7ec, - 0x1e7ed0001e7ef, - 0x1e7f00001e7ff, - 0x1e8000001e8c5, - 0x1e8d00001e8d7, - 0x1e9220001e94c, - 0x1e9500001e95a, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x2ebf00002ee5e, - 0x300000003134b, - 0x31350000323b0, - ), - 'CONTEXTJ': ( - 0x200c0000200e, - ), - 'CONTEXTO': ( - 0xb7000000b8, - 0x37500000376, - 0x5f3000005f5, - 0x6600000066a, - 0x6f0000006fa, - 0x30fb000030fc, - ), -} diff --git a/venv/lib/python3.10/site-packages/idna/intranges.py b/venv/lib/python3.10/site-packages/idna/intranges.py deleted file mode 100644 index 6a43b04..0000000 --- a/venv/lib/python3.10/site-packages/idna/intranges.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -Given a list of integers, made up of (hopefully) a small number of long runs -of consecutive integers, compute a representation of the form -((start1, end1), (start2, end2) ...). Then answer the question "was x present -in the original list?" in time O(log(# runs)). -""" - -import bisect -from typing import List, Tuple - -def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: - """Represent a list of integers as a sequence of ranges: - ((start_0, end_0), (start_1, end_1), ...), such that the original - integers are exactly those x such that start_i <= x < end_i for some i. - - Ranges are encoded as single integers (start << 32 | end), not as tuples. - """ - - sorted_list = sorted(list_) - ranges = [] - last_write = -1 - for i in range(len(sorted_list)): - if i+1 < len(sorted_list): - if sorted_list[i] == sorted_list[i+1]-1: - continue - current_range = sorted_list[last_write+1:i+1] - ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) - last_write = i - - return tuple(ranges) - -def _encode_range(start: int, end: int) -> int: - return (start << 32) | end - -def _decode_range(r: int) -> Tuple[int, int]: - return (r >> 32), (r & ((1 << 32) - 1)) - - -def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: - """Determine if `int_` falls into one of the ranges in `ranges`.""" - tuple_ = _encode_range(int_, 0) - pos = bisect.bisect_left(ranges, tuple_) - # we could be immediately ahead of a tuple (start, end) - # with start < int_ <= end - if pos > 0: - left, right = _decode_range(ranges[pos-1]) - if left <= int_ < right: - return True - # or we could be immediately behind a tuple (int_, end) - if pos < len(ranges): - left, _ = _decode_range(ranges[pos]) - if left == int_: - return True - return False diff --git a/venv/lib/python3.10/site-packages/idna/package_data.py b/venv/lib/python3.10/site-packages/idna/package_data.py deleted file mode 100644 index ed81113..0000000 --- a/venv/lib/python3.10/site-packages/idna/package_data.py +++ /dev/null @@ -1,2 +0,0 @@ -__version__ = '3.7' - diff --git a/venv/lib/python3.10/site-packages/idna/py.typed b/venv/lib/python3.10/site-packages/idna/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/idna/uts46data.py b/venv/lib/python3.10/site-packages/idna/uts46data.py deleted file mode 100644 index 6a1eddb..0000000 --- a/venv/lib/python3.10/site-packages/idna/uts46data.py +++ /dev/null @@ -1,8598 +0,0 @@ -# This file is automatically generated by tools/idna-data -# vim: set fileencoding=utf-8 : - -from typing import List, Tuple, Union - - -"""IDNA Mapping Table from UTS46.""" - - -__version__ = '15.1.0' -def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x0, '3'), - (0x1, '3'), - (0x2, '3'), - (0x3, '3'), - (0x4, '3'), - (0x5, '3'), - (0x6, '3'), - (0x7, '3'), - (0x8, '3'), - (0x9, '3'), - (0xA, '3'), - (0xB, '3'), - (0xC, '3'), - (0xD, '3'), - (0xE, '3'), - (0xF, '3'), - (0x10, '3'), - (0x11, '3'), - (0x12, '3'), - (0x13, '3'), - (0x14, '3'), - (0x15, '3'), - (0x16, '3'), - (0x17, '3'), - (0x18, '3'), - (0x19, '3'), - (0x1A, '3'), - (0x1B, '3'), - (0x1C, '3'), - (0x1D, '3'), - (0x1E, '3'), - (0x1F, '3'), - (0x20, '3'), - (0x21, '3'), - (0x22, '3'), - (0x23, '3'), - (0x24, '3'), - (0x25, '3'), - (0x26, '3'), - (0x27, '3'), - (0x28, '3'), - (0x29, '3'), - (0x2A, '3'), - (0x2B, '3'), - (0x2C, '3'), - (0x2D, 'V'), - (0x2E, 'V'), - (0x2F, '3'), - (0x30, 'V'), - (0x31, 'V'), - (0x32, 'V'), - (0x33, 'V'), - (0x34, 'V'), - (0x35, 'V'), - (0x36, 'V'), - (0x37, 'V'), - (0x38, 'V'), - (0x39, 'V'), - (0x3A, '3'), - (0x3B, '3'), - (0x3C, '3'), - (0x3D, '3'), - (0x3E, '3'), - (0x3F, '3'), - (0x40, '3'), - (0x41, 'M', 'a'), - (0x42, 'M', 'b'), - (0x43, 'M', 'c'), - (0x44, 'M', 'd'), - (0x45, 'M', 'e'), - (0x46, 'M', 'f'), - (0x47, 'M', 'g'), - (0x48, 'M', 'h'), - (0x49, 'M', 'i'), - (0x4A, 'M', 'j'), - (0x4B, 'M', 'k'), - (0x4C, 'M', 'l'), - (0x4D, 'M', 'm'), - (0x4E, 'M', 'n'), - (0x4F, 'M', 'o'), - (0x50, 'M', 'p'), - (0x51, 'M', 'q'), - (0x52, 'M', 'r'), - (0x53, 'M', 's'), - (0x54, 'M', 't'), - (0x55, 'M', 'u'), - (0x56, 'M', 'v'), - (0x57, 'M', 'w'), - (0x58, 'M', 'x'), - (0x59, 'M', 'y'), - (0x5A, 'M', 'z'), - (0x5B, '3'), - (0x5C, '3'), - (0x5D, '3'), - (0x5E, '3'), - (0x5F, '3'), - (0x60, '3'), - (0x61, 'V'), - (0x62, 'V'), - (0x63, 'V'), - ] - -def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x64, 'V'), - (0x65, 'V'), - (0x66, 'V'), - (0x67, 'V'), - (0x68, 'V'), - (0x69, 'V'), - (0x6A, 'V'), - (0x6B, 'V'), - (0x6C, 'V'), - (0x6D, 'V'), - (0x6E, 'V'), - (0x6F, 'V'), - (0x70, 'V'), - (0x71, 'V'), - (0x72, 'V'), - (0x73, 'V'), - (0x74, 'V'), - (0x75, 'V'), - (0x76, 'V'), - (0x77, 'V'), - (0x78, 'V'), - (0x79, 'V'), - (0x7A, 'V'), - (0x7B, '3'), - (0x7C, '3'), - (0x7D, '3'), - (0x7E, '3'), - (0x7F, '3'), - (0x80, 'X'), - (0x81, 'X'), - (0x82, 'X'), - (0x83, 'X'), - (0x84, 'X'), - (0x85, 'X'), - (0x86, 'X'), - (0x87, 'X'), - (0x88, 'X'), - (0x89, 'X'), - (0x8A, 'X'), - (0x8B, 'X'), - (0x8C, 'X'), - (0x8D, 'X'), - (0x8E, 'X'), - (0x8F, 'X'), - (0x90, 'X'), - (0x91, 'X'), - (0x92, 'X'), - (0x93, 'X'), - (0x94, 'X'), - (0x95, 'X'), - (0x96, 'X'), - (0x97, 'X'), - (0x98, 'X'), - (0x99, 'X'), - (0x9A, 'X'), - (0x9B, 'X'), - (0x9C, 'X'), - (0x9D, 'X'), - (0x9E, 'X'), - (0x9F, 'X'), - (0xA0, '3', ' '), - (0xA1, 'V'), - (0xA2, 'V'), - (0xA3, 'V'), - (0xA4, 'V'), - (0xA5, 'V'), - (0xA6, 'V'), - (0xA7, 'V'), - (0xA8, '3', ' ̈'), - (0xA9, 'V'), - (0xAA, 'M', 'a'), - (0xAB, 'V'), - (0xAC, 'V'), - (0xAD, 'I'), - (0xAE, 'V'), - (0xAF, '3', ' ̄'), - (0xB0, 'V'), - (0xB1, 'V'), - (0xB2, 'M', '2'), - (0xB3, 'M', '3'), - (0xB4, '3', ' ́'), - (0xB5, 'M', 'μ'), - (0xB6, 'V'), - (0xB7, 'V'), - (0xB8, '3', ' ̧'), - (0xB9, 'M', '1'), - (0xBA, 'M', 'o'), - (0xBB, 'V'), - (0xBC, 'M', '1⁄4'), - (0xBD, 'M', '1⁄2'), - (0xBE, 'M', '3⁄4'), - (0xBF, 'V'), - (0xC0, 'M', 'à'), - (0xC1, 'M', 'á'), - (0xC2, 'M', 'â'), - (0xC3, 'M', 'ã'), - (0xC4, 'M', 'ä'), - (0xC5, 'M', 'å'), - (0xC6, 'M', 'æ'), - (0xC7, 'M', 'ç'), - ] - -def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC8, 'M', 'è'), - (0xC9, 'M', 'é'), - (0xCA, 'M', 'ê'), - (0xCB, 'M', 'ë'), - (0xCC, 'M', 'ì'), - (0xCD, 'M', 'í'), - (0xCE, 'M', 'î'), - (0xCF, 'M', 'ï'), - (0xD0, 'M', 'ð'), - (0xD1, 'M', 'ñ'), - (0xD2, 'M', 'ò'), - (0xD3, 'M', 'ó'), - (0xD4, 'M', 'ô'), - (0xD5, 'M', 'õ'), - (0xD6, 'M', 'ö'), - (0xD7, 'V'), - (0xD8, 'M', 'ø'), - (0xD9, 'M', 'ù'), - (0xDA, 'M', 'ú'), - (0xDB, 'M', 'û'), - (0xDC, 'M', 'ü'), - (0xDD, 'M', 'ý'), - (0xDE, 'M', 'þ'), - (0xDF, 'D', 'ss'), - (0xE0, 'V'), - (0xE1, 'V'), - (0xE2, 'V'), - (0xE3, 'V'), - (0xE4, 'V'), - (0xE5, 'V'), - (0xE6, 'V'), - (0xE7, 'V'), - (0xE8, 'V'), - (0xE9, 'V'), - (0xEA, 'V'), - (0xEB, 'V'), - (0xEC, 'V'), - (0xED, 'V'), - (0xEE, 'V'), - (0xEF, 'V'), - (0xF0, 'V'), - (0xF1, 'V'), - (0xF2, 'V'), - (0xF3, 'V'), - (0xF4, 'V'), - (0xF5, 'V'), - (0xF6, 'V'), - (0xF7, 'V'), - (0xF8, 'V'), - (0xF9, 'V'), - (0xFA, 'V'), - (0xFB, 'V'), - (0xFC, 'V'), - (0xFD, 'V'), - (0xFE, 'V'), - (0xFF, 'V'), - (0x100, 'M', 'ā'), - (0x101, 'V'), - (0x102, 'M', 'ă'), - (0x103, 'V'), - (0x104, 'M', 'ą'), - (0x105, 'V'), - (0x106, 'M', 'ć'), - (0x107, 'V'), - (0x108, 'M', 'ĉ'), - (0x109, 'V'), - (0x10A, 'M', 'ċ'), - (0x10B, 'V'), - (0x10C, 'M', 'č'), - (0x10D, 'V'), - (0x10E, 'M', 'ď'), - (0x10F, 'V'), - (0x110, 'M', 'đ'), - (0x111, 'V'), - (0x112, 'M', 'ē'), - (0x113, 'V'), - (0x114, 'M', 'ĕ'), - (0x115, 'V'), - (0x116, 'M', 'ė'), - (0x117, 'V'), - (0x118, 'M', 'ę'), - (0x119, 'V'), - (0x11A, 'M', 'ě'), - (0x11B, 'V'), - (0x11C, 'M', 'ĝ'), - (0x11D, 'V'), - (0x11E, 'M', 'ğ'), - (0x11F, 'V'), - (0x120, 'M', 'ġ'), - (0x121, 'V'), - (0x122, 'M', 'ģ'), - (0x123, 'V'), - (0x124, 'M', 'ĥ'), - (0x125, 'V'), - (0x126, 'M', 'ħ'), - (0x127, 'V'), - (0x128, 'M', 'ĩ'), - (0x129, 'V'), - (0x12A, 'M', 'ī'), - (0x12B, 'V'), - ] - -def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x12C, 'M', 'ĭ'), - (0x12D, 'V'), - (0x12E, 'M', 'į'), - (0x12F, 'V'), - (0x130, 'M', 'i̇'), - (0x131, 'V'), - (0x132, 'M', 'ij'), - (0x134, 'M', 'ĵ'), - (0x135, 'V'), - (0x136, 'M', 'ķ'), - (0x137, 'V'), - (0x139, 'M', 'ĺ'), - (0x13A, 'V'), - (0x13B, 'M', 'ļ'), - (0x13C, 'V'), - (0x13D, 'M', 'ľ'), - (0x13E, 'V'), - (0x13F, 'M', 'l·'), - (0x141, 'M', 'ł'), - (0x142, 'V'), - (0x143, 'M', 'ń'), - (0x144, 'V'), - (0x145, 'M', 'ņ'), - (0x146, 'V'), - (0x147, 'M', 'ň'), - (0x148, 'V'), - (0x149, 'M', 'ʼn'), - (0x14A, 'M', 'ŋ'), - (0x14B, 'V'), - (0x14C, 'M', 'ō'), - (0x14D, 'V'), - (0x14E, 'M', 'ŏ'), - (0x14F, 'V'), - (0x150, 'M', 'ő'), - (0x151, 'V'), - (0x152, 'M', 'œ'), - (0x153, 'V'), - (0x154, 'M', 'ŕ'), - (0x155, 'V'), - (0x156, 'M', 'ŗ'), - (0x157, 'V'), - (0x158, 'M', 'ř'), - (0x159, 'V'), - (0x15A, 'M', 'ś'), - (0x15B, 'V'), - (0x15C, 'M', 'ŝ'), - (0x15D, 'V'), - (0x15E, 'M', 'ş'), - (0x15F, 'V'), - (0x160, 'M', 'š'), - (0x161, 'V'), - (0x162, 'M', 'ţ'), - (0x163, 'V'), - (0x164, 'M', 'ť'), - (0x165, 'V'), - (0x166, 'M', 'ŧ'), - (0x167, 'V'), - (0x168, 'M', 'ũ'), - (0x169, 'V'), - (0x16A, 'M', 'ū'), - (0x16B, 'V'), - (0x16C, 'M', 'ŭ'), - (0x16D, 'V'), - (0x16E, 'M', 'ů'), - (0x16F, 'V'), - (0x170, 'M', 'ű'), - (0x171, 'V'), - (0x172, 'M', 'ų'), - (0x173, 'V'), - (0x174, 'M', 'ŵ'), - (0x175, 'V'), - (0x176, 'M', 'ŷ'), - (0x177, 'V'), - (0x178, 'M', 'ÿ'), - (0x179, 'M', 'ź'), - (0x17A, 'V'), - (0x17B, 'M', 'ż'), - (0x17C, 'V'), - (0x17D, 'M', 'ž'), - (0x17E, 'V'), - (0x17F, 'M', 's'), - (0x180, 'V'), - (0x181, 'M', 'ɓ'), - (0x182, 'M', 'ƃ'), - (0x183, 'V'), - (0x184, 'M', 'ƅ'), - (0x185, 'V'), - (0x186, 'M', 'ɔ'), - (0x187, 'M', 'ƈ'), - (0x188, 'V'), - (0x189, 'M', 'ɖ'), - (0x18A, 'M', 'ɗ'), - (0x18B, 'M', 'ƌ'), - (0x18C, 'V'), - (0x18E, 'M', 'ǝ'), - (0x18F, 'M', 'ə'), - (0x190, 'M', 'ɛ'), - (0x191, 'M', 'ƒ'), - (0x192, 'V'), - (0x193, 'M', 'ɠ'), - ] - -def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x194, 'M', 'ɣ'), - (0x195, 'V'), - (0x196, 'M', 'ɩ'), - (0x197, 'M', 'ɨ'), - (0x198, 'M', 'ƙ'), - (0x199, 'V'), - (0x19C, 'M', 'ɯ'), - (0x19D, 'M', 'ɲ'), - (0x19E, 'V'), - (0x19F, 'M', 'ɵ'), - (0x1A0, 'M', 'ơ'), - (0x1A1, 'V'), - (0x1A2, 'M', 'ƣ'), - (0x1A3, 'V'), - (0x1A4, 'M', 'ƥ'), - (0x1A5, 'V'), - (0x1A6, 'M', 'ʀ'), - (0x1A7, 'M', 'ƨ'), - (0x1A8, 'V'), - (0x1A9, 'M', 'ʃ'), - (0x1AA, 'V'), - (0x1AC, 'M', 'ƭ'), - (0x1AD, 'V'), - (0x1AE, 'M', 'ʈ'), - (0x1AF, 'M', 'ư'), - (0x1B0, 'V'), - (0x1B1, 'M', 'ʊ'), - (0x1B2, 'M', 'ʋ'), - (0x1B3, 'M', 'ƴ'), - (0x1B4, 'V'), - (0x1B5, 'M', 'ƶ'), - (0x1B6, 'V'), - (0x1B7, 'M', 'ʒ'), - (0x1B8, 'M', 'ƹ'), - (0x1B9, 'V'), - (0x1BC, 'M', 'ƽ'), - (0x1BD, 'V'), - (0x1C4, 'M', 'dž'), - (0x1C7, 'M', 'lj'), - (0x1CA, 'M', 'nj'), - (0x1CD, 'M', 'ǎ'), - (0x1CE, 'V'), - (0x1CF, 'M', 'ǐ'), - (0x1D0, 'V'), - (0x1D1, 'M', 'ǒ'), - (0x1D2, 'V'), - (0x1D3, 'M', 'ǔ'), - (0x1D4, 'V'), - (0x1D5, 'M', 'ǖ'), - (0x1D6, 'V'), - (0x1D7, 'M', 'ǘ'), - (0x1D8, 'V'), - (0x1D9, 'M', 'ǚ'), - (0x1DA, 'V'), - (0x1DB, 'M', 'ǜ'), - (0x1DC, 'V'), - (0x1DE, 'M', 'ǟ'), - (0x1DF, 'V'), - (0x1E0, 'M', 'ǡ'), - (0x1E1, 'V'), - (0x1E2, 'M', 'ǣ'), - (0x1E3, 'V'), - (0x1E4, 'M', 'ǥ'), - (0x1E5, 'V'), - (0x1E6, 'M', 'ǧ'), - (0x1E7, 'V'), - (0x1E8, 'M', 'ǩ'), - (0x1E9, 'V'), - (0x1EA, 'M', 'ǫ'), - (0x1EB, 'V'), - (0x1EC, 'M', 'ǭ'), - (0x1ED, 'V'), - (0x1EE, 'M', 'ǯ'), - (0x1EF, 'V'), - (0x1F1, 'M', 'dz'), - (0x1F4, 'M', 'ǵ'), - (0x1F5, 'V'), - (0x1F6, 'M', 'ƕ'), - (0x1F7, 'M', 'ƿ'), - (0x1F8, 'M', 'ǹ'), - (0x1F9, 'V'), - (0x1FA, 'M', 'ǻ'), - (0x1FB, 'V'), - (0x1FC, 'M', 'ǽ'), - (0x1FD, 'V'), - (0x1FE, 'M', 'ǿ'), - (0x1FF, 'V'), - (0x200, 'M', 'ȁ'), - (0x201, 'V'), - (0x202, 'M', 'ȃ'), - (0x203, 'V'), - (0x204, 'M', 'ȅ'), - (0x205, 'V'), - (0x206, 'M', 'ȇ'), - (0x207, 'V'), - (0x208, 'M', 'ȉ'), - (0x209, 'V'), - (0x20A, 'M', 'ȋ'), - (0x20B, 'V'), - (0x20C, 'M', 'ȍ'), - ] - -def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x20D, 'V'), - (0x20E, 'M', 'ȏ'), - (0x20F, 'V'), - (0x210, 'M', 'ȑ'), - (0x211, 'V'), - (0x212, 'M', 'ȓ'), - (0x213, 'V'), - (0x214, 'M', 'ȕ'), - (0x215, 'V'), - (0x216, 'M', 'ȗ'), - (0x217, 'V'), - (0x218, 'M', 'ș'), - (0x219, 'V'), - (0x21A, 'M', 'ț'), - (0x21B, 'V'), - (0x21C, 'M', 'ȝ'), - (0x21D, 'V'), - (0x21E, 'M', 'ȟ'), - (0x21F, 'V'), - (0x220, 'M', 'ƞ'), - (0x221, 'V'), - (0x222, 'M', 'ȣ'), - (0x223, 'V'), - (0x224, 'M', 'ȥ'), - (0x225, 'V'), - (0x226, 'M', 'ȧ'), - (0x227, 'V'), - (0x228, 'M', 'ȩ'), - (0x229, 'V'), - (0x22A, 'M', 'ȫ'), - (0x22B, 'V'), - (0x22C, 'M', 'ȭ'), - (0x22D, 'V'), - (0x22E, 'M', 'ȯ'), - (0x22F, 'V'), - (0x230, 'M', 'ȱ'), - (0x231, 'V'), - (0x232, 'M', 'ȳ'), - (0x233, 'V'), - (0x23A, 'M', 'ⱥ'), - (0x23B, 'M', 'ȼ'), - (0x23C, 'V'), - (0x23D, 'M', 'ƚ'), - (0x23E, 'M', 'ⱦ'), - (0x23F, 'V'), - (0x241, 'M', 'ɂ'), - (0x242, 'V'), - (0x243, 'M', 'ƀ'), - (0x244, 'M', 'ʉ'), - (0x245, 'M', 'ʌ'), - (0x246, 'M', 'ɇ'), - (0x247, 'V'), - (0x248, 'M', 'ɉ'), - (0x249, 'V'), - (0x24A, 'M', 'ɋ'), - (0x24B, 'V'), - (0x24C, 'M', 'ɍ'), - (0x24D, 'V'), - (0x24E, 'M', 'ɏ'), - (0x24F, 'V'), - (0x2B0, 'M', 'h'), - (0x2B1, 'M', 'ɦ'), - (0x2B2, 'M', 'j'), - (0x2B3, 'M', 'r'), - (0x2B4, 'M', 'ɹ'), - (0x2B5, 'M', 'ɻ'), - (0x2B6, 'M', 'ʁ'), - (0x2B7, 'M', 'w'), - (0x2B8, 'M', 'y'), - (0x2B9, 'V'), - (0x2D8, '3', ' ̆'), - (0x2D9, '3', ' ̇'), - (0x2DA, '3', ' ̊'), - (0x2DB, '3', ' ̨'), - (0x2DC, '3', ' ̃'), - (0x2DD, '3', ' ̋'), - (0x2DE, 'V'), - (0x2E0, 'M', 'ɣ'), - (0x2E1, 'M', 'l'), - (0x2E2, 'M', 's'), - (0x2E3, 'M', 'x'), - (0x2E4, 'M', 'ʕ'), - (0x2E5, 'V'), - (0x340, 'M', '̀'), - (0x341, 'M', '́'), - (0x342, 'V'), - (0x343, 'M', '̓'), - (0x344, 'M', '̈́'), - (0x345, 'M', 'ι'), - (0x346, 'V'), - (0x34F, 'I'), - (0x350, 'V'), - (0x370, 'M', 'ͱ'), - (0x371, 'V'), - (0x372, 'M', 'ͳ'), - (0x373, 'V'), - (0x374, 'M', 'ʹ'), - (0x375, 'V'), - (0x376, 'M', 'ͷ'), - (0x377, 'V'), - ] - -def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x378, 'X'), - (0x37A, '3', ' ι'), - (0x37B, 'V'), - (0x37E, '3', ';'), - (0x37F, 'M', 'ϳ'), - (0x380, 'X'), - (0x384, '3', ' ́'), - (0x385, '3', ' ̈́'), - (0x386, 'M', 'ά'), - (0x387, 'M', '·'), - (0x388, 'M', 'έ'), - (0x389, 'M', 'ή'), - (0x38A, 'M', 'ί'), - (0x38B, 'X'), - (0x38C, 'M', 'ό'), - (0x38D, 'X'), - (0x38E, 'M', 'ύ'), - (0x38F, 'M', 'ώ'), - (0x390, 'V'), - (0x391, 'M', 'α'), - (0x392, 'M', 'β'), - (0x393, 'M', 'γ'), - (0x394, 'M', 'δ'), - (0x395, 'M', 'ε'), - (0x396, 'M', 'ζ'), - (0x397, 'M', 'η'), - (0x398, 'M', 'θ'), - (0x399, 'M', 'ι'), - (0x39A, 'M', 'κ'), - (0x39B, 'M', 'λ'), - (0x39C, 'M', 'μ'), - (0x39D, 'M', 'ν'), - (0x39E, 'M', 'ξ'), - (0x39F, 'M', 'ο'), - (0x3A0, 'M', 'π'), - (0x3A1, 'M', 'ρ'), - (0x3A2, 'X'), - (0x3A3, 'M', 'σ'), - (0x3A4, 'M', 'τ'), - (0x3A5, 'M', 'υ'), - (0x3A6, 'M', 'φ'), - (0x3A7, 'M', 'χ'), - (0x3A8, 'M', 'ψ'), - (0x3A9, 'M', 'ω'), - (0x3AA, 'M', 'ϊ'), - (0x3AB, 'M', 'ϋ'), - (0x3AC, 'V'), - (0x3C2, 'D', 'σ'), - (0x3C3, 'V'), - (0x3CF, 'M', 'ϗ'), - (0x3D0, 'M', 'β'), - (0x3D1, 'M', 'θ'), - (0x3D2, 'M', 'υ'), - (0x3D3, 'M', 'ύ'), - (0x3D4, 'M', 'ϋ'), - (0x3D5, 'M', 'φ'), - (0x3D6, 'M', 'π'), - (0x3D7, 'V'), - (0x3D8, 'M', 'ϙ'), - (0x3D9, 'V'), - (0x3DA, 'M', 'ϛ'), - (0x3DB, 'V'), - (0x3DC, 'M', 'ϝ'), - (0x3DD, 'V'), - (0x3DE, 'M', 'ϟ'), - (0x3DF, 'V'), - (0x3E0, 'M', 'ϡ'), - (0x3E1, 'V'), - (0x3E2, 'M', 'ϣ'), - (0x3E3, 'V'), - (0x3E4, 'M', 'ϥ'), - (0x3E5, 'V'), - (0x3E6, 'M', 'ϧ'), - (0x3E7, 'V'), - (0x3E8, 'M', 'ϩ'), - (0x3E9, 'V'), - (0x3EA, 'M', 'ϫ'), - (0x3EB, 'V'), - (0x3EC, 'M', 'ϭ'), - (0x3ED, 'V'), - (0x3EE, 'M', 'ϯ'), - (0x3EF, 'V'), - (0x3F0, 'M', 'κ'), - (0x3F1, 'M', 'ρ'), - (0x3F2, 'M', 'σ'), - (0x3F3, 'V'), - (0x3F4, 'M', 'θ'), - (0x3F5, 'M', 'ε'), - (0x3F6, 'V'), - (0x3F7, 'M', 'ϸ'), - (0x3F8, 'V'), - (0x3F9, 'M', 'σ'), - (0x3FA, 'M', 'ϻ'), - (0x3FB, 'V'), - (0x3FD, 'M', 'ͻ'), - (0x3FE, 'M', 'ͼ'), - (0x3FF, 'M', 'ͽ'), - (0x400, 'M', 'ѐ'), - (0x401, 'M', 'ё'), - (0x402, 'M', 'ђ'), - ] - -def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x403, 'M', 'ѓ'), - (0x404, 'M', 'є'), - (0x405, 'M', 'ѕ'), - (0x406, 'M', 'і'), - (0x407, 'M', 'ї'), - (0x408, 'M', 'ј'), - (0x409, 'M', 'љ'), - (0x40A, 'M', 'њ'), - (0x40B, 'M', 'ћ'), - (0x40C, 'M', 'ќ'), - (0x40D, 'M', 'ѝ'), - (0x40E, 'M', 'ў'), - (0x40F, 'M', 'џ'), - (0x410, 'M', 'а'), - (0x411, 'M', 'б'), - (0x412, 'M', 'в'), - (0x413, 'M', 'г'), - (0x414, 'M', 'д'), - (0x415, 'M', 'е'), - (0x416, 'M', 'ж'), - (0x417, 'M', 'з'), - (0x418, 'M', 'и'), - (0x419, 'M', 'й'), - (0x41A, 'M', 'к'), - (0x41B, 'M', 'л'), - (0x41C, 'M', 'м'), - (0x41D, 'M', 'н'), - (0x41E, 'M', 'о'), - (0x41F, 'M', 'п'), - (0x420, 'M', 'р'), - (0x421, 'M', 'с'), - (0x422, 'M', 'т'), - (0x423, 'M', 'у'), - (0x424, 'M', 'ф'), - (0x425, 'M', 'х'), - (0x426, 'M', 'ц'), - (0x427, 'M', 'ч'), - (0x428, 'M', 'ш'), - (0x429, 'M', 'щ'), - (0x42A, 'M', 'ъ'), - (0x42B, 'M', 'ы'), - (0x42C, 'M', 'ь'), - (0x42D, 'M', 'э'), - (0x42E, 'M', 'ю'), - (0x42F, 'M', 'я'), - (0x430, 'V'), - (0x460, 'M', 'ѡ'), - (0x461, 'V'), - (0x462, 'M', 'ѣ'), - (0x463, 'V'), - (0x464, 'M', 'ѥ'), - (0x465, 'V'), - (0x466, 'M', 'ѧ'), - (0x467, 'V'), - (0x468, 'M', 'ѩ'), - (0x469, 'V'), - (0x46A, 'M', 'ѫ'), - (0x46B, 'V'), - (0x46C, 'M', 'ѭ'), - (0x46D, 'V'), - (0x46E, 'M', 'ѯ'), - (0x46F, 'V'), - (0x470, 'M', 'ѱ'), - (0x471, 'V'), - (0x472, 'M', 'ѳ'), - (0x473, 'V'), - (0x474, 'M', 'ѵ'), - (0x475, 'V'), - (0x476, 'M', 'ѷ'), - (0x477, 'V'), - (0x478, 'M', 'ѹ'), - (0x479, 'V'), - (0x47A, 'M', 'ѻ'), - (0x47B, 'V'), - (0x47C, 'M', 'ѽ'), - (0x47D, 'V'), - (0x47E, 'M', 'ѿ'), - (0x47F, 'V'), - (0x480, 'M', 'ҁ'), - (0x481, 'V'), - (0x48A, 'M', 'ҋ'), - (0x48B, 'V'), - (0x48C, 'M', 'ҍ'), - (0x48D, 'V'), - (0x48E, 'M', 'ҏ'), - (0x48F, 'V'), - (0x490, 'M', 'ґ'), - (0x491, 'V'), - (0x492, 'M', 'ғ'), - (0x493, 'V'), - (0x494, 'M', 'ҕ'), - (0x495, 'V'), - (0x496, 'M', 'җ'), - (0x497, 'V'), - (0x498, 'M', 'ҙ'), - (0x499, 'V'), - (0x49A, 'M', 'қ'), - (0x49B, 'V'), - (0x49C, 'M', 'ҝ'), - (0x49D, 'V'), - ] - -def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x49E, 'M', 'ҟ'), - (0x49F, 'V'), - (0x4A0, 'M', 'ҡ'), - (0x4A1, 'V'), - (0x4A2, 'M', 'ң'), - (0x4A3, 'V'), - (0x4A4, 'M', 'ҥ'), - (0x4A5, 'V'), - (0x4A6, 'M', 'ҧ'), - (0x4A7, 'V'), - (0x4A8, 'M', 'ҩ'), - (0x4A9, 'V'), - (0x4AA, 'M', 'ҫ'), - (0x4AB, 'V'), - (0x4AC, 'M', 'ҭ'), - (0x4AD, 'V'), - (0x4AE, 'M', 'ү'), - (0x4AF, 'V'), - (0x4B0, 'M', 'ұ'), - (0x4B1, 'V'), - (0x4B2, 'M', 'ҳ'), - (0x4B3, 'V'), - (0x4B4, 'M', 'ҵ'), - (0x4B5, 'V'), - (0x4B6, 'M', 'ҷ'), - (0x4B7, 'V'), - (0x4B8, 'M', 'ҹ'), - (0x4B9, 'V'), - (0x4BA, 'M', 'һ'), - (0x4BB, 'V'), - (0x4BC, 'M', 'ҽ'), - (0x4BD, 'V'), - (0x4BE, 'M', 'ҿ'), - (0x4BF, 'V'), - (0x4C0, 'X'), - (0x4C1, 'M', 'ӂ'), - (0x4C2, 'V'), - (0x4C3, 'M', 'ӄ'), - (0x4C4, 'V'), - (0x4C5, 'M', 'ӆ'), - (0x4C6, 'V'), - (0x4C7, 'M', 'ӈ'), - (0x4C8, 'V'), - (0x4C9, 'M', 'ӊ'), - (0x4CA, 'V'), - (0x4CB, 'M', 'ӌ'), - (0x4CC, 'V'), - (0x4CD, 'M', 'ӎ'), - (0x4CE, 'V'), - (0x4D0, 'M', 'ӑ'), - (0x4D1, 'V'), - (0x4D2, 'M', 'ӓ'), - (0x4D3, 'V'), - (0x4D4, 'M', 'ӕ'), - (0x4D5, 'V'), - (0x4D6, 'M', 'ӗ'), - (0x4D7, 'V'), - (0x4D8, 'M', 'ә'), - (0x4D9, 'V'), - (0x4DA, 'M', 'ӛ'), - (0x4DB, 'V'), - (0x4DC, 'M', 'ӝ'), - (0x4DD, 'V'), - (0x4DE, 'M', 'ӟ'), - (0x4DF, 'V'), - (0x4E0, 'M', 'ӡ'), - (0x4E1, 'V'), - (0x4E2, 'M', 'ӣ'), - (0x4E3, 'V'), - (0x4E4, 'M', 'ӥ'), - (0x4E5, 'V'), - (0x4E6, 'M', 'ӧ'), - (0x4E7, 'V'), - (0x4E8, 'M', 'ө'), - (0x4E9, 'V'), - (0x4EA, 'M', 'ӫ'), - (0x4EB, 'V'), - (0x4EC, 'M', 'ӭ'), - (0x4ED, 'V'), - (0x4EE, 'M', 'ӯ'), - (0x4EF, 'V'), - (0x4F0, 'M', 'ӱ'), - (0x4F1, 'V'), - (0x4F2, 'M', 'ӳ'), - (0x4F3, 'V'), - (0x4F4, 'M', 'ӵ'), - (0x4F5, 'V'), - (0x4F6, 'M', 'ӷ'), - (0x4F7, 'V'), - (0x4F8, 'M', 'ӹ'), - (0x4F9, 'V'), - (0x4FA, 'M', 'ӻ'), - (0x4FB, 'V'), - (0x4FC, 'M', 'ӽ'), - (0x4FD, 'V'), - (0x4FE, 'M', 'ӿ'), - (0x4FF, 'V'), - (0x500, 'M', 'ԁ'), - (0x501, 'V'), - (0x502, 'M', 'ԃ'), - ] - -def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x503, 'V'), - (0x504, 'M', 'ԅ'), - (0x505, 'V'), - (0x506, 'M', 'ԇ'), - (0x507, 'V'), - (0x508, 'M', 'ԉ'), - (0x509, 'V'), - (0x50A, 'M', 'ԋ'), - (0x50B, 'V'), - (0x50C, 'M', 'ԍ'), - (0x50D, 'V'), - (0x50E, 'M', 'ԏ'), - (0x50F, 'V'), - (0x510, 'M', 'ԑ'), - (0x511, 'V'), - (0x512, 'M', 'ԓ'), - (0x513, 'V'), - (0x514, 'M', 'ԕ'), - (0x515, 'V'), - (0x516, 'M', 'ԗ'), - (0x517, 'V'), - (0x518, 'M', 'ԙ'), - (0x519, 'V'), - (0x51A, 'M', 'ԛ'), - (0x51B, 'V'), - (0x51C, 'M', 'ԝ'), - (0x51D, 'V'), - (0x51E, 'M', 'ԟ'), - (0x51F, 'V'), - (0x520, 'M', 'ԡ'), - (0x521, 'V'), - (0x522, 'M', 'ԣ'), - (0x523, 'V'), - (0x524, 'M', 'ԥ'), - (0x525, 'V'), - (0x526, 'M', 'ԧ'), - (0x527, 'V'), - (0x528, 'M', 'ԩ'), - (0x529, 'V'), - (0x52A, 'M', 'ԫ'), - (0x52B, 'V'), - (0x52C, 'M', 'ԭ'), - (0x52D, 'V'), - (0x52E, 'M', 'ԯ'), - (0x52F, 'V'), - (0x530, 'X'), - (0x531, 'M', 'ա'), - (0x532, 'M', 'բ'), - (0x533, 'M', 'գ'), - (0x534, 'M', 'դ'), - (0x535, 'M', 'ե'), - (0x536, 'M', 'զ'), - (0x537, 'M', 'է'), - (0x538, 'M', 'ը'), - (0x539, 'M', 'թ'), - (0x53A, 'M', 'ժ'), - (0x53B, 'M', 'ի'), - (0x53C, 'M', 'լ'), - (0x53D, 'M', 'խ'), - (0x53E, 'M', 'ծ'), - (0x53F, 'M', 'կ'), - (0x540, 'M', 'հ'), - (0x541, 'M', 'ձ'), - (0x542, 'M', 'ղ'), - (0x543, 'M', 'ճ'), - (0x544, 'M', 'մ'), - (0x545, 'M', 'յ'), - (0x546, 'M', 'ն'), - (0x547, 'M', 'շ'), - (0x548, 'M', 'ո'), - (0x549, 'M', 'չ'), - (0x54A, 'M', 'պ'), - (0x54B, 'M', 'ջ'), - (0x54C, 'M', 'ռ'), - (0x54D, 'M', 'ս'), - (0x54E, 'M', 'վ'), - (0x54F, 'M', 'տ'), - (0x550, 'M', 'ր'), - (0x551, 'M', 'ց'), - (0x552, 'M', 'ւ'), - (0x553, 'M', 'փ'), - (0x554, 'M', 'ք'), - (0x555, 'M', 'օ'), - (0x556, 'M', 'ֆ'), - (0x557, 'X'), - (0x559, 'V'), - (0x587, 'M', 'եւ'), - (0x588, 'V'), - (0x58B, 'X'), - (0x58D, 'V'), - (0x590, 'X'), - (0x591, 'V'), - (0x5C8, 'X'), - (0x5D0, 'V'), - (0x5EB, 'X'), - (0x5EF, 'V'), - (0x5F5, 'X'), - (0x606, 'V'), - (0x61C, 'X'), - (0x61D, 'V'), - ] - -def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x675, 'M', 'اٴ'), - (0x676, 'M', 'وٴ'), - (0x677, 'M', 'ۇٴ'), - (0x678, 'M', 'يٴ'), - (0x679, 'V'), - (0x6DD, 'X'), - (0x6DE, 'V'), - (0x70E, 'X'), - (0x710, 'V'), - (0x74B, 'X'), - (0x74D, 'V'), - (0x7B2, 'X'), - (0x7C0, 'V'), - (0x7FB, 'X'), - (0x7FD, 'V'), - (0x82E, 'X'), - (0x830, 'V'), - (0x83F, 'X'), - (0x840, 'V'), - (0x85C, 'X'), - (0x85E, 'V'), - (0x85F, 'X'), - (0x860, 'V'), - (0x86B, 'X'), - (0x870, 'V'), - (0x88F, 'X'), - (0x898, 'V'), - (0x8E2, 'X'), - (0x8E3, 'V'), - (0x958, 'M', 'क़'), - (0x959, 'M', 'ख़'), - (0x95A, 'M', 'ग़'), - (0x95B, 'M', 'ज़'), - (0x95C, 'M', 'ड़'), - (0x95D, 'M', 'ढ़'), - (0x95E, 'M', 'फ़'), - (0x95F, 'M', 'य़'), - (0x960, 'V'), - (0x984, 'X'), - (0x985, 'V'), - (0x98D, 'X'), - (0x98F, 'V'), - (0x991, 'X'), - (0x993, 'V'), - (0x9A9, 'X'), - (0x9AA, 'V'), - (0x9B1, 'X'), - (0x9B2, 'V'), - (0x9B3, 'X'), - (0x9B6, 'V'), - (0x9BA, 'X'), - (0x9BC, 'V'), - (0x9C5, 'X'), - (0x9C7, 'V'), - (0x9C9, 'X'), - (0x9CB, 'V'), - (0x9CF, 'X'), - (0x9D7, 'V'), - (0x9D8, 'X'), - (0x9DC, 'M', 'ড়'), - (0x9DD, 'M', 'ঢ়'), - (0x9DE, 'X'), - (0x9DF, 'M', 'য়'), - (0x9E0, 'V'), - (0x9E4, 'X'), - (0x9E6, 'V'), - (0x9FF, 'X'), - (0xA01, 'V'), - (0xA04, 'X'), - (0xA05, 'V'), - (0xA0B, 'X'), - (0xA0F, 'V'), - (0xA11, 'X'), - (0xA13, 'V'), - (0xA29, 'X'), - (0xA2A, 'V'), - (0xA31, 'X'), - (0xA32, 'V'), - (0xA33, 'M', 'ਲ਼'), - (0xA34, 'X'), - (0xA35, 'V'), - (0xA36, 'M', 'ਸ਼'), - (0xA37, 'X'), - (0xA38, 'V'), - (0xA3A, 'X'), - (0xA3C, 'V'), - (0xA3D, 'X'), - (0xA3E, 'V'), - (0xA43, 'X'), - (0xA47, 'V'), - (0xA49, 'X'), - (0xA4B, 'V'), - (0xA4E, 'X'), - (0xA51, 'V'), - (0xA52, 'X'), - (0xA59, 'M', 'ਖ਼'), - (0xA5A, 'M', 'ਗ਼'), - (0xA5B, 'M', 'ਜ਼'), - (0xA5C, 'V'), - (0xA5D, 'X'), - ] - -def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA5E, 'M', 'ਫ਼'), - (0xA5F, 'X'), - (0xA66, 'V'), - (0xA77, 'X'), - (0xA81, 'V'), - (0xA84, 'X'), - (0xA85, 'V'), - (0xA8E, 'X'), - (0xA8F, 'V'), - (0xA92, 'X'), - (0xA93, 'V'), - (0xAA9, 'X'), - (0xAAA, 'V'), - (0xAB1, 'X'), - (0xAB2, 'V'), - (0xAB4, 'X'), - (0xAB5, 'V'), - (0xABA, 'X'), - (0xABC, 'V'), - (0xAC6, 'X'), - (0xAC7, 'V'), - (0xACA, 'X'), - (0xACB, 'V'), - (0xACE, 'X'), - (0xAD0, 'V'), - (0xAD1, 'X'), - (0xAE0, 'V'), - (0xAE4, 'X'), - (0xAE6, 'V'), - (0xAF2, 'X'), - (0xAF9, 'V'), - (0xB00, 'X'), - (0xB01, 'V'), - (0xB04, 'X'), - (0xB05, 'V'), - (0xB0D, 'X'), - (0xB0F, 'V'), - (0xB11, 'X'), - (0xB13, 'V'), - (0xB29, 'X'), - (0xB2A, 'V'), - (0xB31, 'X'), - (0xB32, 'V'), - (0xB34, 'X'), - (0xB35, 'V'), - (0xB3A, 'X'), - (0xB3C, 'V'), - (0xB45, 'X'), - (0xB47, 'V'), - (0xB49, 'X'), - (0xB4B, 'V'), - (0xB4E, 'X'), - (0xB55, 'V'), - (0xB58, 'X'), - (0xB5C, 'M', 'ଡ଼'), - (0xB5D, 'M', 'ଢ଼'), - (0xB5E, 'X'), - (0xB5F, 'V'), - (0xB64, 'X'), - (0xB66, 'V'), - (0xB78, 'X'), - (0xB82, 'V'), - (0xB84, 'X'), - (0xB85, 'V'), - (0xB8B, 'X'), - (0xB8E, 'V'), - (0xB91, 'X'), - (0xB92, 'V'), - (0xB96, 'X'), - (0xB99, 'V'), - (0xB9B, 'X'), - (0xB9C, 'V'), - (0xB9D, 'X'), - (0xB9E, 'V'), - (0xBA0, 'X'), - (0xBA3, 'V'), - (0xBA5, 'X'), - (0xBA8, 'V'), - (0xBAB, 'X'), - (0xBAE, 'V'), - (0xBBA, 'X'), - (0xBBE, 'V'), - (0xBC3, 'X'), - (0xBC6, 'V'), - (0xBC9, 'X'), - (0xBCA, 'V'), - (0xBCE, 'X'), - (0xBD0, 'V'), - (0xBD1, 'X'), - (0xBD7, 'V'), - (0xBD8, 'X'), - (0xBE6, 'V'), - (0xBFB, 'X'), - (0xC00, 'V'), - (0xC0D, 'X'), - (0xC0E, 'V'), - (0xC11, 'X'), - (0xC12, 'V'), - (0xC29, 'X'), - (0xC2A, 'V'), - ] - -def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC3A, 'X'), - (0xC3C, 'V'), - (0xC45, 'X'), - (0xC46, 'V'), - (0xC49, 'X'), - (0xC4A, 'V'), - (0xC4E, 'X'), - (0xC55, 'V'), - (0xC57, 'X'), - (0xC58, 'V'), - (0xC5B, 'X'), - (0xC5D, 'V'), - (0xC5E, 'X'), - (0xC60, 'V'), - (0xC64, 'X'), - (0xC66, 'V'), - (0xC70, 'X'), - (0xC77, 'V'), - (0xC8D, 'X'), - (0xC8E, 'V'), - (0xC91, 'X'), - (0xC92, 'V'), - (0xCA9, 'X'), - (0xCAA, 'V'), - (0xCB4, 'X'), - (0xCB5, 'V'), - (0xCBA, 'X'), - (0xCBC, 'V'), - (0xCC5, 'X'), - (0xCC6, 'V'), - (0xCC9, 'X'), - (0xCCA, 'V'), - (0xCCE, 'X'), - (0xCD5, 'V'), - (0xCD7, 'X'), - (0xCDD, 'V'), - (0xCDF, 'X'), - (0xCE0, 'V'), - (0xCE4, 'X'), - (0xCE6, 'V'), - (0xCF0, 'X'), - (0xCF1, 'V'), - (0xCF4, 'X'), - (0xD00, 'V'), - (0xD0D, 'X'), - (0xD0E, 'V'), - (0xD11, 'X'), - (0xD12, 'V'), - (0xD45, 'X'), - (0xD46, 'V'), - (0xD49, 'X'), - (0xD4A, 'V'), - (0xD50, 'X'), - (0xD54, 'V'), - (0xD64, 'X'), - (0xD66, 'V'), - (0xD80, 'X'), - (0xD81, 'V'), - (0xD84, 'X'), - (0xD85, 'V'), - (0xD97, 'X'), - (0xD9A, 'V'), - (0xDB2, 'X'), - (0xDB3, 'V'), - (0xDBC, 'X'), - (0xDBD, 'V'), - (0xDBE, 'X'), - (0xDC0, 'V'), - (0xDC7, 'X'), - (0xDCA, 'V'), - (0xDCB, 'X'), - (0xDCF, 'V'), - (0xDD5, 'X'), - (0xDD6, 'V'), - (0xDD7, 'X'), - (0xDD8, 'V'), - (0xDE0, 'X'), - (0xDE6, 'V'), - (0xDF0, 'X'), - (0xDF2, 'V'), - (0xDF5, 'X'), - (0xE01, 'V'), - (0xE33, 'M', 'ํา'), - (0xE34, 'V'), - (0xE3B, 'X'), - (0xE3F, 'V'), - (0xE5C, 'X'), - (0xE81, 'V'), - (0xE83, 'X'), - (0xE84, 'V'), - (0xE85, 'X'), - (0xE86, 'V'), - (0xE8B, 'X'), - (0xE8C, 'V'), - (0xEA4, 'X'), - (0xEA5, 'V'), - (0xEA6, 'X'), - (0xEA7, 'V'), - (0xEB3, 'M', 'ໍາ'), - (0xEB4, 'V'), - ] - -def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xEBE, 'X'), - (0xEC0, 'V'), - (0xEC5, 'X'), - (0xEC6, 'V'), - (0xEC7, 'X'), - (0xEC8, 'V'), - (0xECF, 'X'), - (0xED0, 'V'), - (0xEDA, 'X'), - (0xEDC, 'M', 'ຫນ'), - (0xEDD, 'M', 'ຫມ'), - (0xEDE, 'V'), - (0xEE0, 'X'), - (0xF00, 'V'), - (0xF0C, 'M', '་'), - (0xF0D, 'V'), - (0xF43, 'M', 'གྷ'), - (0xF44, 'V'), - (0xF48, 'X'), - (0xF49, 'V'), - (0xF4D, 'M', 'ཌྷ'), - (0xF4E, 'V'), - (0xF52, 'M', 'དྷ'), - (0xF53, 'V'), - (0xF57, 'M', 'བྷ'), - (0xF58, 'V'), - (0xF5C, 'M', 'ཛྷ'), - (0xF5D, 'V'), - (0xF69, 'M', 'ཀྵ'), - (0xF6A, 'V'), - (0xF6D, 'X'), - (0xF71, 'V'), - (0xF73, 'M', 'ཱི'), - (0xF74, 'V'), - (0xF75, 'M', 'ཱུ'), - (0xF76, 'M', 'ྲྀ'), - (0xF77, 'M', 'ྲཱྀ'), - (0xF78, 'M', 'ླྀ'), - (0xF79, 'M', 'ླཱྀ'), - (0xF7A, 'V'), - (0xF81, 'M', 'ཱྀ'), - (0xF82, 'V'), - (0xF93, 'M', 'ྒྷ'), - (0xF94, 'V'), - (0xF98, 'X'), - (0xF99, 'V'), - (0xF9D, 'M', 'ྜྷ'), - (0xF9E, 'V'), - (0xFA2, 'M', 'ྡྷ'), - (0xFA3, 'V'), - (0xFA7, 'M', 'ྦྷ'), - (0xFA8, 'V'), - (0xFAC, 'M', 'ྫྷ'), - (0xFAD, 'V'), - (0xFB9, 'M', 'ྐྵ'), - (0xFBA, 'V'), - (0xFBD, 'X'), - (0xFBE, 'V'), - (0xFCD, 'X'), - (0xFCE, 'V'), - (0xFDB, 'X'), - (0x1000, 'V'), - (0x10A0, 'X'), - (0x10C7, 'M', 'ⴧ'), - (0x10C8, 'X'), - (0x10CD, 'M', 'ⴭ'), - (0x10CE, 'X'), - (0x10D0, 'V'), - (0x10FC, 'M', 'ნ'), - (0x10FD, 'V'), - (0x115F, 'X'), - (0x1161, 'V'), - (0x1249, 'X'), - (0x124A, 'V'), - (0x124E, 'X'), - (0x1250, 'V'), - (0x1257, 'X'), - (0x1258, 'V'), - (0x1259, 'X'), - (0x125A, 'V'), - (0x125E, 'X'), - (0x1260, 'V'), - (0x1289, 'X'), - (0x128A, 'V'), - (0x128E, 'X'), - (0x1290, 'V'), - (0x12B1, 'X'), - (0x12B2, 'V'), - (0x12B6, 'X'), - (0x12B8, 'V'), - (0x12BF, 'X'), - (0x12C0, 'V'), - (0x12C1, 'X'), - (0x12C2, 'V'), - (0x12C6, 'X'), - (0x12C8, 'V'), - (0x12D7, 'X'), - (0x12D8, 'V'), - (0x1311, 'X'), - (0x1312, 'V'), - ] - -def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1316, 'X'), - (0x1318, 'V'), - (0x135B, 'X'), - (0x135D, 'V'), - (0x137D, 'X'), - (0x1380, 'V'), - (0x139A, 'X'), - (0x13A0, 'V'), - (0x13F6, 'X'), - (0x13F8, 'M', 'Ᏸ'), - (0x13F9, 'M', 'Ᏹ'), - (0x13FA, 'M', 'Ᏺ'), - (0x13FB, 'M', 'Ᏻ'), - (0x13FC, 'M', 'Ᏼ'), - (0x13FD, 'M', 'Ᏽ'), - (0x13FE, 'X'), - (0x1400, 'V'), - (0x1680, 'X'), - (0x1681, 'V'), - (0x169D, 'X'), - (0x16A0, 'V'), - (0x16F9, 'X'), - (0x1700, 'V'), - (0x1716, 'X'), - (0x171F, 'V'), - (0x1737, 'X'), - (0x1740, 'V'), - (0x1754, 'X'), - (0x1760, 'V'), - (0x176D, 'X'), - (0x176E, 'V'), - (0x1771, 'X'), - (0x1772, 'V'), - (0x1774, 'X'), - (0x1780, 'V'), - (0x17B4, 'X'), - (0x17B6, 'V'), - (0x17DE, 'X'), - (0x17E0, 'V'), - (0x17EA, 'X'), - (0x17F0, 'V'), - (0x17FA, 'X'), - (0x1800, 'V'), - (0x1806, 'X'), - (0x1807, 'V'), - (0x180B, 'I'), - (0x180E, 'X'), - (0x180F, 'I'), - (0x1810, 'V'), - (0x181A, 'X'), - (0x1820, 'V'), - (0x1879, 'X'), - (0x1880, 'V'), - (0x18AB, 'X'), - (0x18B0, 'V'), - (0x18F6, 'X'), - (0x1900, 'V'), - (0x191F, 'X'), - (0x1920, 'V'), - (0x192C, 'X'), - (0x1930, 'V'), - (0x193C, 'X'), - (0x1940, 'V'), - (0x1941, 'X'), - (0x1944, 'V'), - (0x196E, 'X'), - (0x1970, 'V'), - (0x1975, 'X'), - (0x1980, 'V'), - (0x19AC, 'X'), - (0x19B0, 'V'), - (0x19CA, 'X'), - (0x19D0, 'V'), - (0x19DB, 'X'), - (0x19DE, 'V'), - (0x1A1C, 'X'), - (0x1A1E, 'V'), - (0x1A5F, 'X'), - (0x1A60, 'V'), - (0x1A7D, 'X'), - (0x1A7F, 'V'), - (0x1A8A, 'X'), - (0x1A90, 'V'), - (0x1A9A, 'X'), - (0x1AA0, 'V'), - (0x1AAE, 'X'), - (0x1AB0, 'V'), - (0x1ACF, 'X'), - (0x1B00, 'V'), - (0x1B4D, 'X'), - (0x1B50, 'V'), - (0x1B7F, 'X'), - (0x1B80, 'V'), - (0x1BF4, 'X'), - (0x1BFC, 'V'), - (0x1C38, 'X'), - (0x1C3B, 'V'), - (0x1C4A, 'X'), - (0x1C4D, 'V'), - (0x1C80, 'M', 'в'), - ] - -def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1C81, 'M', 'д'), - (0x1C82, 'M', 'о'), - (0x1C83, 'M', 'с'), - (0x1C84, 'M', 'т'), - (0x1C86, 'M', 'ъ'), - (0x1C87, 'M', 'ѣ'), - (0x1C88, 'M', 'ꙋ'), - (0x1C89, 'X'), - (0x1C90, 'M', 'ა'), - (0x1C91, 'M', 'ბ'), - (0x1C92, 'M', 'გ'), - (0x1C93, 'M', 'დ'), - (0x1C94, 'M', 'ე'), - (0x1C95, 'M', 'ვ'), - (0x1C96, 'M', 'ზ'), - (0x1C97, 'M', 'თ'), - (0x1C98, 'M', 'ი'), - (0x1C99, 'M', 'კ'), - (0x1C9A, 'M', 'ლ'), - (0x1C9B, 'M', 'მ'), - (0x1C9C, 'M', 'ნ'), - (0x1C9D, 'M', 'ო'), - (0x1C9E, 'M', 'პ'), - (0x1C9F, 'M', 'ჟ'), - (0x1CA0, 'M', 'რ'), - (0x1CA1, 'M', 'ს'), - (0x1CA2, 'M', 'ტ'), - (0x1CA3, 'M', 'უ'), - (0x1CA4, 'M', 'ფ'), - (0x1CA5, 'M', 'ქ'), - (0x1CA6, 'M', 'ღ'), - (0x1CA7, 'M', 'ყ'), - (0x1CA8, 'M', 'შ'), - (0x1CA9, 'M', 'ჩ'), - (0x1CAA, 'M', 'ც'), - (0x1CAB, 'M', 'ძ'), - (0x1CAC, 'M', 'წ'), - (0x1CAD, 'M', 'ჭ'), - (0x1CAE, 'M', 'ხ'), - (0x1CAF, 'M', 'ჯ'), - (0x1CB0, 'M', 'ჰ'), - (0x1CB1, 'M', 'ჱ'), - (0x1CB2, 'M', 'ჲ'), - (0x1CB3, 'M', 'ჳ'), - (0x1CB4, 'M', 'ჴ'), - (0x1CB5, 'M', 'ჵ'), - (0x1CB6, 'M', 'ჶ'), - (0x1CB7, 'M', 'ჷ'), - (0x1CB8, 'M', 'ჸ'), - (0x1CB9, 'M', 'ჹ'), - (0x1CBA, 'M', 'ჺ'), - (0x1CBB, 'X'), - (0x1CBD, 'M', 'ჽ'), - (0x1CBE, 'M', 'ჾ'), - (0x1CBF, 'M', 'ჿ'), - (0x1CC0, 'V'), - (0x1CC8, 'X'), - (0x1CD0, 'V'), - (0x1CFB, 'X'), - (0x1D00, 'V'), - (0x1D2C, 'M', 'a'), - (0x1D2D, 'M', 'æ'), - (0x1D2E, 'M', 'b'), - (0x1D2F, 'V'), - (0x1D30, 'M', 'd'), - (0x1D31, 'M', 'e'), - (0x1D32, 'M', 'ǝ'), - (0x1D33, 'M', 'g'), - (0x1D34, 'M', 'h'), - (0x1D35, 'M', 'i'), - (0x1D36, 'M', 'j'), - (0x1D37, 'M', 'k'), - (0x1D38, 'M', 'l'), - (0x1D39, 'M', 'm'), - (0x1D3A, 'M', 'n'), - (0x1D3B, 'V'), - (0x1D3C, 'M', 'o'), - (0x1D3D, 'M', 'ȣ'), - (0x1D3E, 'M', 'p'), - (0x1D3F, 'M', 'r'), - (0x1D40, 'M', 't'), - (0x1D41, 'M', 'u'), - (0x1D42, 'M', 'w'), - (0x1D43, 'M', 'a'), - (0x1D44, 'M', 'ɐ'), - (0x1D45, 'M', 'ɑ'), - (0x1D46, 'M', 'ᴂ'), - (0x1D47, 'M', 'b'), - (0x1D48, 'M', 'd'), - (0x1D49, 'M', 'e'), - (0x1D4A, 'M', 'ə'), - (0x1D4B, 'M', 'ɛ'), - (0x1D4C, 'M', 'ɜ'), - (0x1D4D, 'M', 'g'), - (0x1D4E, 'V'), - (0x1D4F, 'M', 'k'), - (0x1D50, 'M', 'm'), - (0x1D51, 'M', 'ŋ'), - (0x1D52, 'M', 'o'), - (0x1D53, 'M', 'ɔ'), - ] - -def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D54, 'M', 'ᴖ'), - (0x1D55, 'M', 'ᴗ'), - (0x1D56, 'M', 'p'), - (0x1D57, 'M', 't'), - (0x1D58, 'M', 'u'), - (0x1D59, 'M', 'ᴝ'), - (0x1D5A, 'M', 'ɯ'), - (0x1D5B, 'M', 'v'), - (0x1D5C, 'M', 'ᴥ'), - (0x1D5D, 'M', 'β'), - (0x1D5E, 'M', 'γ'), - (0x1D5F, 'M', 'δ'), - (0x1D60, 'M', 'φ'), - (0x1D61, 'M', 'χ'), - (0x1D62, 'M', 'i'), - (0x1D63, 'M', 'r'), - (0x1D64, 'M', 'u'), - (0x1D65, 'M', 'v'), - (0x1D66, 'M', 'β'), - (0x1D67, 'M', 'γ'), - (0x1D68, 'M', 'ρ'), - (0x1D69, 'M', 'φ'), - (0x1D6A, 'M', 'χ'), - (0x1D6B, 'V'), - (0x1D78, 'M', 'н'), - (0x1D79, 'V'), - (0x1D9B, 'M', 'ɒ'), - (0x1D9C, 'M', 'c'), - (0x1D9D, 'M', 'ɕ'), - (0x1D9E, 'M', 'ð'), - (0x1D9F, 'M', 'ɜ'), - (0x1DA0, 'M', 'f'), - (0x1DA1, 'M', 'ɟ'), - (0x1DA2, 'M', 'ɡ'), - (0x1DA3, 'M', 'ɥ'), - (0x1DA4, 'M', 'ɨ'), - (0x1DA5, 'M', 'ɩ'), - (0x1DA6, 'M', 'ɪ'), - (0x1DA7, 'M', 'ᵻ'), - (0x1DA8, 'M', 'ʝ'), - (0x1DA9, 'M', 'ɭ'), - (0x1DAA, 'M', 'ᶅ'), - (0x1DAB, 'M', 'ʟ'), - (0x1DAC, 'M', 'ɱ'), - (0x1DAD, 'M', 'ɰ'), - (0x1DAE, 'M', 'ɲ'), - (0x1DAF, 'M', 'ɳ'), - (0x1DB0, 'M', 'ɴ'), - (0x1DB1, 'M', 'ɵ'), - (0x1DB2, 'M', 'ɸ'), - (0x1DB3, 'M', 'ʂ'), - (0x1DB4, 'M', 'ʃ'), - (0x1DB5, 'M', 'ƫ'), - (0x1DB6, 'M', 'ʉ'), - (0x1DB7, 'M', 'ʊ'), - (0x1DB8, 'M', 'ᴜ'), - (0x1DB9, 'M', 'ʋ'), - (0x1DBA, 'M', 'ʌ'), - (0x1DBB, 'M', 'z'), - (0x1DBC, 'M', 'ʐ'), - (0x1DBD, 'M', 'ʑ'), - (0x1DBE, 'M', 'ʒ'), - (0x1DBF, 'M', 'θ'), - (0x1DC0, 'V'), - (0x1E00, 'M', 'ḁ'), - (0x1E01, 'V'), - (0x1E02, 'M', 'ḃ'), - (0x1E03, 'V'), - (0x1E04, 'M', 'ḅ'), - (0x1E05, 'V'), - (0x1E06, 'M', 'ḇ'), - (0x1E07, 'V'), - (0x1E08, 'M', 'ḉ'), - (0x1E09, 'V'), - (0x1E0A, 'M', 'ḋ'), - (0x1E0B, 'V'), - (0x1E0C, 'M', 'ḍ'), - (0x1E0D, 'V'), - (0x1E0E, 'M', 'ḏ'), - (0x1E0F, 'V'), - (0x1E10, 'M', 'ḑ'), - (0x1E11, 'V'), - (0x1E12, 'M', 'ḓ'), - (0x1E13, 'V'), - (0x1E14, 'M', 'ḕ'), - (0x1E15, 'V'), - (0x1E16, 'M', 'ḗ'), - (0x1E17, 'V'), - (0x1E18, 'M', 'ḙ'), - (0x1E19, 'V'), - (0x1E1A, 'M', 'ḛ'), - (0x1E1B, 'V'), - (0x1E1C, 'M', 'ḝ'), - (0x1E1D, 'V'), - (0x1E1E, 'M', 'ḟ'), - (0x1E1F, 'V'), - (0x1E20, 'M', 'ḡ'), - (0x1E21, 'V'), - (0x1E22, 'M', 'ḣ'), - (0x1E23, 'V'), - ] - -def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E24, 'M', 'ḥ'), - (0x1E25, 'V'), - (0x1E26, 'M', 'ḧ'), - (0x1E27, 'V'), - (0x1E28, 'M', 'ḩ'), - (0x1E29, 'V'), - (0x1E2A, 'M', 'ḫ'), - (0x1E2B, 'V'), - (0x1E2C, 'M', 'ḭ'), - (0x1E2D, 'V'), - (0x1E2E, 'M', 'ḯ'), - (0x1E2F, 'V'), - (0x1E30, 'M', 'ḱ'), - (0x1E31, 'V'), - (0x1E32, 'M', 'ḳ'), - (0x1E33, 'V'), - (0x1E34, 'M', 'ḵ'), - (0x1E35, 'V'), - (0x1E36, 'M', 'ḷ'), - (0x1E37, 'V'), - (0x1E38, 'M', 'ḹ'), - (0x1E39, 'V'), - (0x1E3A, 'M', 'ḻ'), - (0x1E3B, 'V'), - (0x1E3C, 'M', 'ḽ'), - (0x1E3D, 'V'), - (0x1E3E, 'M', 'ḿ'), - (0x1E3F, 'V'), - (0x1E40, 'M', 'ṁ'), - (0x1E41, 'V'), - (0x1E42, 'M', 'ṃ'), - (0x1E43, 'V'), - (0x1E44, 'M', 'ṅ'), - (0x1E45, 'V'), - (0x1E46, 'M', 'ṇ'), - (0x1E47, 'V'), - (0x1E48, 'M', 'ṉ'), - (0x1E49, 'V'), - (0x1E4A, 'M', 'ṋ'), - (0x1E4B, 'V'), - (0x1E4C, 'M', 'ṍ'), - (0x1E4D, 'V'), - (0x1E4E, 'M', 'ṏ'), - (0x1E4F, 'V'), - (0x1E50, 'M', 'ṑ'), - (0x1E51, 'V'), - (0x1E52, 'M', 'ṓ'), - (0x1E53, 'V'), - (0x1E54, 'M', 'ṕ'), - (0x1E55, 'V'), - (0x1E56, 'M', 'ṗ'), - (0x1E57, 'V'), - (0x1E58, 'M', 'ṙ'), - (0x1E59, 'V'), - (0x1E5A, 'M', 'ṛ'), - (0x1E5B, 'V'), - (0x1E5C, 'M', 'ṝ'), - (0x1E5D, 'V'), - (0x1E5E, 'M', 'ṟ'), - (0x1E5F, 'V'), - (0x1E60, 'M', 'ṡ'), - (0x1E61, 'V'), - (0x1E62, 'M', 'ṣ'), - (0x1E63, 'V'), - (0x1E64, 'M', 'ṥ'), - (0x1E65, 'V'), - (0x1E66, 'M', 'ṧ'), - (0x1E67, 'V'), - (0x1E68, 'M', 'ṩ'), - (0x1E69, 'V'), - (0x1E6A, 'M', 'ṫ'), - (0x1E6B, 'V'), - (0x1E6C, 'M', 'ṭ'), - (0x1E6D, 'V'), - (0x1E6E, 'M', 'ṯ'), - (0x1E6F, 'V'), - (0x1E70, 'M', 'ṱ'), - (0x1E71, 'V'), - (0x1E72, 'M', 'ṳ'), - (0x1E73, 'V'), - (0x1E74, 'M', 'ṵ'), - (0x1E75, 'V'), - (0x1E76, 'M', 'ṷ'), - (0x1E77, 'V'), - (0x1E78, 'M', 'ṹ'), - (0x1E79, 'V'), - (0x1E7A, 'M', 'ṻ'), - (0x1E7B, 'V'), - (0x1E7C, 'M', 'ṽ'), - (0x1E7D, 'V'), - (0x1E7E, 'M', 'ṿ'), - (0x1E7F, 'V'), - (0x1E80, 'M', 'ẁ'), - (0x1E81, 'V'), - (0x1E82, 'M', 'ẃ'), - (0x1E83, 'V'), - (0x1E84, 'M', 'ẅ'), - (0x1E85, 'V'), - (0x1E86, 'M', 'ẇ'), - (0x1E87, 'V'), - ] - -def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E88, 'M', 'ẉ'), - (0x1E89, 'V'), - (0x1E8A, 'M', 'ẋ'), - (0x1E8B, 'V'), - (0x1E8C, 'M', 'ẍ'), - (0x1E8D, 'V'), - (0x1E8E, 'M', 'ẏ'), - (0x1E8F, 'V'), - (0x1E90, 'M', 'ẑ'), - (0x1E91, 'V'), - (0x1E92, 'M', 'ẓ'), - (0x1E93, 'V'), - (0x1E94, 'M', 'ẕ'), - (0x1E95, 'V'), - (0x1E9A, 'M', 'aʾ'), - (0x1E9B, 'M', 'ṡ'), - (0x1E9C, 'V'), - (0x1E9E, 'M', 'ß'), - (0x1E9F, 'V'), - (0x1EA0, 'M', 'ạ'), - (0x1EA1, 'V'), - (0x1EA2, 'M', 'ả'), - (0x1EA3, 'V'), - (0x1EA4, 'M', 'ấ'), - (0x1EA5, 'V'), - (0x1EA6, 'M', 'ầ'), - (0x1EA7, 'V'), - (0x1EA8, 'M', 'ẩ'), - (0x1EA9, 'V'), - (0x1EAA, 'M', 'ẫ'), - (0x1EAB, 'V'), - (0x1EAC, 'M', 'ậ'), - (0x1EAD, 'V'), - (0x1EAE, 'M', 'ắ'), - (0x1EAF, 'V'), - (0x1EB0, 'M', 'ằ'), - (0x1EB1, 'V'), - (0x1EB2, 'M', 'ẳ'), - (0x1EB3, 'V'), - (0x1EB4, 'M', 'ẵ'), - (0x1EB5, 'V'), - (0x1EB6, 'M', 'ặ'), - (0x1EB7, 'V'), - (0x1EB8, 'M', 'ẹ'), - (0x1EB9, 'V'), - (0x1EBA, 'M', 'ẻ'), - (0x1EBB, 'V'), - (0x1EBC, 'M', 'ẽ'), - (0x1EBD, 'V'), - (0x1EBE, 'M', 'ế'), - (0x1EBF, 'V'), - (0x1EC0, 'M', 'ề'), - (0x1EC1, 'V'), - (0x1EC2, 'M', 'ể'), - (0x1EC3, 'V'), - (0x1EC4, 'M', 'ễ'), - (0x1EC5, 'V'), - (0x1EC6, 'M', 'ệ'), - (0x1EC7, 'V'), - (0x1EC8, 'M', 'ỉ'), - (0x1EC9, 'V'), - (0x1ECA, 'M', 'ị'), - (0x1ECB, 'V'), - (0x1ECC, 'M', 'ọ'), - (0x1ECD, 'V'), - (0x1ECE, 'M', 'ỏ'), - (0x1ECF, 'V'), - (0x1ED0, 'M', 'ố'), - (0x1ED1, 'V'), - (0x1ED2, 'M', 'ồ'), - (0x1ED3, 'V'), - (0x1ED4, 'M', 'ổ'), - (0x1ED5, 'V'), - (0x1ED6, 'M', 'ỗ'), - (0x1ED7, 'V'), - (0x1ED8, 'M', 'ộ'), - (0x1ED9, 'V'), - (0x1EDA, 'M', 'ớ'), - (0x1EDB, 'V'), - (0x1EDC, 'M', 'ờ'), - (0x1EDD, 'V'), - (0x1EDE, 'M', 'ở'), - (0x1EDF, 'V'), - (0x1EE0, 'M', 'ỡ'), - (0x1EE1, 'V'), - (0x1EE2, 'M', 'ợ'), - (0x1EE3, 'V'), - (0x1EE4, 'M', 'ụ'), - (0x1EE5, 'V'), - (0x1EE6, 'M', 'ủ'), - (0x1EE7, 'V'), - (0x1EE8, 'M', 'ứ'), - (0x1EE9, 'V'), - (0x1EEA, 'M', 'ừ'), - (0x1EEB, 'V'), - (0x1EEC, 'M', 'ử'), - (0x1EED, 'V'), - (0x1EEE, 'M', 'ữ'), - (0x1EEF, 'V'), - (0x1EF0, 'M', 'ự'), - ] - -def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EF1, 'V'), - (0x1EF2, 'M', 'ỳ'), - (0x1EF3, 'V'), - (0x1EF4, 'M', 'ỵ'), - (0x1EF5, 'V'), - (0x1EF6, 'M', 'ỷ'), - (0x1EF7, 'V'), - (0x1EF8, 'M', 'ỹ'), - (0x1EF9, 'V'), - (0x1EFA, 'M', 'ỻ'), - (0x1EFB, 'V'), - (0x1EFC, 'M', 'ỽ'), - (0x1EFD, 'V'), - (0x1EFE, 'M', 'ỿ'), - (0x1EFF, 'V'), - (0x1F08, 'M', 'ἀ'), - (0x1F09, 'M', 'ἁ'), - (0x1F0A, 'M', 'ἂ'), - (0x1F0B, 'M', 'ἃ'), - (0x1F0C, 'M', 'ἄ'), - (0x1F0D, 'M', 'ἅ'), - (0x1F0E, 'M', 'ἆ'), - (0x1F0F, 'M', 'ἇ'), - (0x1F10, 'V'), - (0x1F16, 'X'), - (0x1F18, 'M', 'ἐ'), - (0x1F19, 'M', 'ἑ'), - (0x1F1A, 'M', 'ἒ'), - (0x1F1B, 'M', 'ἓ'), - (0x1F1C, 'M', 'ἔ'), - (0x1F1D, 'M', 'ἕ'), - (0x1F1E, 'X'), - (0x1F20, 'V'), - (0x1F28, 'M', 'ἠ'), - (0x1F29, 'M', 'ἡ'), - (0x1F2A, 'M', 'ἢ'), - (0x1F2B, 'M', 'ἣ'), - (0x1F2C, 'M', 'ἤ'), - (0x1F2D, 'M', 'ἥ'), - (0x1F2E, 'M', 'ἦ'), - (0x1F2F, 'M', 'ἧ'), - (0x1F30, 'V'), - (0x1F38, 'M', 'ἰ'), - (0x1F39, 'M', 'ἱ'), - (0x1F3A, 'M', 'ἲ'), - (0x1F3B, 'M', 'ἳ'), - (0x1F3C, 'M', 'ἴ'), - (0x1F3D, 'M', 'ἵ'), - (0x1F3E, 'M', 'ἶ'), - (0x1F3F, 'M', 'ἷ'), - (0x1F40, 'V'), - (0x1F46, 'X'), - (0x1F48, 'M', 'ὀ'), - (0x1F49, 'M', 'ὁ'), - (0x1F4A, 'M', 'ὂ'), - (0x1F4B, 'M', 'ὃ'), - (0x1F4C, 'M', 'ὄ'), - (0x1F4D, 'M', 'ὅ'), - (0x1F4E, 'X'), - (0x1F50, 'V'), - (0x1F58, 'X'), - (0x1F59, 'M', 'ὑ'), - (0x1F5A, 'X'), - (0x1F5B, 'M', 'ὓ'), - (0x1F5C, 'X'), - (0x1F5D, 'M', 'ὕ'), - (0x1F5E, 'X'), - (0x1F5F, 'M', 'ὗ'), - (0x1F60, 'V'), - (0x1F68, 'M', 'ὠ'), - (0x1F69, 'M', 'ὡ'), - (0x1F6A, 'M', 'ὢ'), - (0x1F6B, 'M', 'ὣ'), - (0x1F6C, 'M', 'ὤ'), - (0x1F6D, 'M', 'ὥ'), - (0x1F6E, 'M', 'ὦ'), - (0x1F6F, 'M', 'ὧ'), - (0x1F70, 'V'), - (0x1F71, 'M', 'ά'), - (0x1F72, 'V'), - (0x1F73, 'M', 'έ'), - (0x1F74, 'V'), - (0x1F75, 'M', 'ή'), - (0x1F76, 'V'), - (0x1F77, 'M', 'ί'), - (0x1F78, 'V'), - (0x1F79, 'M', 'ό'), - (0x1F7A, 'V'), - (0x1F7B, 'M', 'ύ'), - (0x1F7C, 'V'), - (0x1F7D, 'M', 'ώ'), - (0x1F7E, 'X'), - (0x1F80, 'M', 'ἀι'), - (0x1F81, 'M', 'ἁι'), - (0x1F82, 'M', 'ἂι'), - (0x1F83, 'M', 'ἃι'), - (0x1F84, 'M', 'ἄι'), - (0x1F85, 'M', 'ἅι'), - (0x1F86, 'M', 'ἆι'), - (0x1F87, 'M', 'ἇι'), - ] - -def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F88, 'M', 'ἀι'), - (0x1F89, 'M', 'ἁι'), - (0x1F8A, 'M', 'ἂι'), - (0x1F8B, 'M', 'ἃι'), - (0x1F8C, 'M', 'ἄι'), - (0x1F8D, 'M', 'ἅι'), - (0x1F8E, 'M', 'ἆι'), - (0x1F8F, 'M', 'ἇι'), - (0x1F90, 'M', 'ἠι'), - (0x1F91, 'M', 'ἡι'), - (0x1F92, 'M', 'ἢι'), - (0x1F93, 'M', 'ἣι'), - (0x1F94, 'M', 'ἤι'), - (0x1F95, 'M', 'ἥι'), - (0x1F96, 'M', 'ἦι'), - (0x1F97, 'M', 'ἧι'), - (0x1F98, 'M', 'ἠι'), - (0x1F99, 'M', 'ἡι'), - (0x1F9A, 'M', 'ἢι'), - (0x1F9B, 'M', 'ἣι'), - (0x1F9C, 'M', 'ἤι'), - (0x1F9D, 'M', 'ἥι'), - (0x1F9E, 'M', 'ἦι'), - (0x1F9F, 'M', 'ἧι'), - (0x1FA0, 'M', 'ὠι'), - (0x1FA1, 'M', 'ὡι'), - (0x1FA2, 'M', 'ὢι'), - (0x1FA3, 'M', 'ὣι'), - (0x1FA4, 'M', 'ὤι'), - (0x1FA5, 'M', 'ὥι'), - (0x1FA6, 'M', 'ὦι'), - (0x1FA7, 'M', 'ὧι'), - (0x1FA8, 'M', 'ὠι'), - (0x1FA9, 'M', 'ὡι'), - (0x1FAA, 'M', 'ὢι'), - (0x1FAB, 'M', 'ὣι'), - (0x1FAC, 'M', 'ὤι'), - (0x1FAD, 'M', 'ὥι'), - (0x1FAE, 'M', 'ὦι'), - (0x1FAF, 'M', 'ὧι'), - (0x1FB0, 'V'), - (0x1FB2, 'M', 'ὰι'), - (0x1FB3, 'M', 'αι'), - (0x1FB4, 'M', 'άι'), - (0x1FB5, 'X'), - (0x1FB6, 'V'), - (0x1FB7, 'M', 'ᾶι'), - (0x1FB8, 'M', 'ᾰ'), - (0x1FB9, 'M', 'ᾱ'), - (0x1FBA, 'M', 'ὰ'), - (0x1FBB, 'M', 'ά'), - (0x1FBC, 'M', 'αι'), - (0x1FBD, '3', ' ̓'), - (0x1FBE, 'M', 'ι'), - (0x1FBF, '3', ' ̓'), - (0x1FC0, '3', ' ͂'), - (0x1FC1, '3', ' ̈͂'), - (0x1FC2, 'M', 'ὴι'), - (0x1FC3, 'M', 'ηι'), - (0x1FC4, 'M', 'ήι'), - (0x1FC5, 'X'), - (0x1FC6, 'V'), - (0x1FC7, 'M', 'ῆι'), - (0x1FC8, 'M', 'ὲ'), - (0x1FC9, 'M', 'έ'), - (0x1FCA, 'M', 'ὴ'), - (0x1FCB, 'M', 'ή'), - (0x1FCC, 'M', 'ηι'), - (0x1FCD, '3', ' ̓̀'), - (0x1FCE, '3', ' ̓́'), - (0x1FCF, '3', ' ̓͂'), - (0x1FD0, 'V'), - (0x1FD3, 'M', 'ΐ'), - (0x1FD4, 'X'), - (0x1FD6, 'V'), - (0x1FD8, 'M', 'ῐ'), - (0x1FD9, 'M', 'ῑ'), - (0x1FDA, 'M', 'ὶ'), - (0x1FDB, 'M', 'ί'), - (0x1FDC, 'X'), - (0x1FDD, '3', ' ̔̀'), - (0x1FDE, '3', ' ̔́'), - (0x1FDF, '3', ' ̔͂'), - (0x1FE0, 'V'), - (0x1FE3, 'M', 'ΰ'), - (0x1FE4, 'V'), - (0x1FE8, 'M', 'ῠ'), - (0x1FE9, 'M', 'ῡ'), - (0x1FEA, 'M', 'ὺ'), - (0x1FEB, 'M', 'ύ'), - (0x1FEC, 'M', 'ῥ'), - (0x1FED, '3', ' ̈̀'), - (0x1FEE, '3', ' ̈́'), - (0x1FEF, '3', '`'), - (0x1FF0, 'X'), - (0x1FF2, 'M', 'ὼι'), - (0x1FF3, 'M', 'ωι'), - (0x1FF4, 'M', 'ώι'), - (0x1FF5, 'X'), - (0x1FF6, 'V'), - ] - -def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FF7, 'M', 'ῶι'), - (0x1FF8, 'M', 'ὸ'), - (0x1FF9, 'M', 'ό'), - (0x1FFA, 'M', 'ὼ'), - (0x1FFB, 'M', 'ώ'), - (0x1FFC, 'M', 'ωι'), - (0x1FFD, '3', ' ́'), - (0x1FFE, '3', ' ̔'), - (0x1FFF, 'X'), - (0x2000, '3', ' '), - (0x200B, 'I'), - (0x200C, 'D', ''), - (0x200E, 'X'), - (0x2010, 'V'), - (0x2011, 'M', '‐'), - (0x2012, 'V'), - (0x2017, '3', ' ̳'), - (0x2018, 'V'), - (0x2024, 'X'), - (0x2027, 'V'), - (0x2028, 'X'), - (0x202F, '3', ' '), - (0x2030, 'V'), - (0x2033, 'M', '′′'), - (0x2034, 'M', '′′′'), - (0x2035, 'V'), - (0x2036, 'M', '‵‵'), - (0x2037, 'M', '‵‵‵'), - (0x2038, 'V'), - (0x203C, '3', '!!'), - (0x203D, 'V'), - (0x203E, '3', ' ̅'), - (0x203F, 'V'), - (0x2047, '3', '??'), - (0x2048, '3', '?!'), - (0x2049, '3', '!?'), - (0x204A, 'V'), - (0x2057, 'M', '′′′′'), - (0x2058, 'V'), - (0x205F, '3', ' '), - (0x2060, 'I'), - (0x2061, 'X'), - (0x2064, 'I'), - (0x2065, 'X'), - (0x2070, 'M', '0'), - (0x2071, 'M', 'i'), - (0x2072, 'X'), - (0x2074, 'M', '4'), - (0x2075, 'M', '5'), - (0x2076, 'M', '6'), - (0x2077, 'M', '7'), - (0x2078, 'M', '8'), - (0x2079, 'M', '9'), - (0x207A, '3', '+'), - (0x207B, 'M', '−'), - (0x207C, '3', '='), - (0x207D, '3', '('), - (0x207E, '3', ')'), - (0x207F, 'M', 'n'), - (0x2080, 'M', '0'), - (0x2081, 'M', '1'), - (0x2082, 'M', '2'), - (0x2083, 'M', '3'), - (0x2084, 'M', '4'), - (0x2085, 'M', '5'), - (0x2086, 'M', '6'), - (0x2087, 'M', '7'), - (0x2088, 'M', '8'), - (0x2089, 'M', '9'), - (0x208A, '3', '+'), - (0x208B, 'M', '−'), - (0x208C, '3', '='), - (0x208D, '3', '('), - (0x208E, '3', ')'), - (0x208F, 'X'), - (0x2090, 'M', 'a'), - (0x2091, 'M', 'e'), - (0x2092, 'M', 'o'), - (0x2093, 'M', 'x'), - (0x2094, 'M', 'ə'), - (0x2095, 'M', 'h'), - (0x2096, 'M', 'k'), - (0x2097, 'M', 'l'), - (0x2098, 'M', 'm'), - (0x2099, 'M', 'n'), - (0x209A, 'M', 'p'), - (0x209B, 'M', 's'), - (0x209C, 'M', 't'), - (0x209D, 'X'), - (0x20A0, 'V'), - (0x20A8, 'M', 'rs'), - (0x20A9, 'V'), - (0x20C1, 'X'), - (0x20D0, 'V'), - (0x20F1, 'X'), - (0x2100, '3', 'a/c'), - (0x2101, '3', 'a/s'), - (0x2102, 'M', 'c'), - (0x2103, 'M', '°c'), - (0x2104, 'V'), - ] - -def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2105, '3', 'c/o'), - (0x2106, '3', 'c/u'), - (0x2107, 'M', 'ɛ'), - (0x2108, 'V'), - (0x2109, 'M', '°f'), - (0x210A, 'M', 'g'), - (0x210B, 'M', 'h'), - (0x210F, 'M', 'ħ'), - (0x2110, 'M', 'i'), - (0x2112, 'M', 'l'), - (0x2114, 'V'), - (0x2115, 'M', 'n'), - (0x2116, 'M', 'no'), - (0x2117, 'V'), - (0x2119, 'M', 'p'), - (0x211A, 'M', 'q'), - (0x211B, 'M', 'r'), - (0x211E, 'V'), - (0x2120, 'M', 'sm'), - (0x2121, 'M', 'tel'), - (0x2122, 'M', 'tm'), - (0x2123, 'V'), - (0x2124, 'M', 'z'), - (0x2125, 'V'), - (0x2126, 'M', 'ω'), - (0x2127, 'V'), - (0x2128, 'M', 'z'), - (0x2129, 'V'), - (0x212A, 'M', 'k'), - (0x212B, 'M', 'å'), - (0x212C, 'M', 'b'), - (0x212D, 'M', 'c'), - (0x212E, 'V'), - (0x212F, 'M', 'e'), - (0x2131, 'M', 'f'), - (0x2132, 'X'), - (0x2133, 'M', 'm'), - (0x2134, 'M', 'o'), - (0x2135, 'M', 'א'), - (0x2136, 'M', 'ב'), - (0x2137, 'M', 'ג'), - (0x2138, 'M', 'ד'), - (0x2139, 'M', 'i'), - (0x213A, 'V'), - (0x213B, 'M', 'fax'), - (0x213C, 'M', 'π'), - (0x213D, 'M', 'γ'), - (0x213F, 'M', 'π'), - (0x2140, 'M', '∑'), - (0x2141, 'V'), - (0x2145, 'M', 'd'), - (0x2147, 'M', 'e'), - (0x2148, 'M', 'i'), - (0x2149, 'M', 'j'), - (0x214A, 'V'), - (0x2150, 'M', '1⁄7'), - (0x2151, 'M', '1⁄9'), - (0x2152, 'M', '1⁄10'), - (0x2153, 'M', '1⁄3'), - (0x2154, 'M', '2⁄3'), - (0x2155, 'M', '1⁄5'), - (0x2156, 'M', '2⁄5'), - (0x2157, 'M', '3⁄5'), - (0x2158, 'M', '4⁄5'), - (0x2159, 'M', '1⁄6'), - (0x215A, 'M', '5⁄6'), - (0x215B, 'M', '1⁄8'), - (0x215C, 'M', '3⁄8'), - (0x215D, 'M', '5⁄8'), - (0x215E, 'M', '7⁄8'), - (0x215F, 'M', '1⁄'), - (0x2160, 'M', 'i'), - (0x2161, 'M', 'ii'), - (0x2162, 'M', 'iii'), - (0x2163, 'M', 'iv'), - (0x2164, 'M', 'v'), - (0x2165, 'M', 'vi'), - (0x2166, 'M', 'vii'), - (0x2167, 'M', 'viii'), - (0x2168, 'M', 'ix'), - (0x2169, 'M', 'x'), - (0x216A, 'M', 'xi'), - (0x216B, 'M', 'xii'), - (0x216C, 'M', 'l'), - (0x216D, 'M', 'c'), - (0x216E, 'M', 'd'), - (0x216F, 'M', 'm'), - (0x2170, 'M', 'i'), - (0x2171, 'M', 'ii'), - (0x2172, 'M', 'iii'), - (0x2173, 'M', 'iv'), - (0x2174, 'M', 'v'), - (0x2175, 'M', 'vi'), - (0x2176, 'M', 'vii'), - (0x2177, 'M', 'viii'), - (0x2178, 'M', 'ix'), - (0x2179, 'M', 'x'), - (0x217A, 'M', 'xi'), - (0x217B, 'M', 'xii'), - (0x217C, 'M', 'l'), - ] - -def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x217D, 'M', 'c'), - (0x217E, 'M', 'd'), - (0x217F, 'M', 'm'), - (0x2180, 'V'), - (0x2183, 'X'), - (0x2184, 'V'), - (0x2189, 'M', '0⁄3'), - (0x218A, 'V'), - (0x218C, 'X'), - (0x2190, 'V'), - (0x222C, 'M', '∫∫'), - (0x222D, 'M', '∫∫∫'), - (0x222E, 'V'), - (0x222F, 'M', '∮∮'), - (0x2230, 'M', '∮∮∮'), - (0x2231, 'V'), - (0x2329, 'M', '〈'), - (0x232A, 'M', '〉'), - (0x232B, 'V'), - (0x2427, 'X'), - (0x2440, 'V'), - (0x244B, 'X'), - (0x2460, 'M', '1'), - (0x2461, 'M', '2'), - (0x2462, 'M', '3'), - (0x2463, 'M', '4'), - (0x2464, 'M', '5'), - (0x2465, 'M', '6'), - (0x2466, 'M', '7'), - (0x2467, 'M', '8'), - (0x2468, 'M', '9'), - (0x2469, 'M', '10'), - (0x246A, 'M', '11'), - (0x246B, 'M', '12'), - (0x246C, 'M', '13'), - (0x246D, 'M', '14'), - (0x246E, 'M', '15'), - (0x246F, 'M', '16'), - (0x2470, 'M', '17'), - (0x2471, 'M', '18'), - (0x2472, 'M', '19'), - (0x2473, 'M', '20'), - (0x2474, '3', '(1)'), - (0x2475, '3', '(2)'), - (0x2476, '3', '(3)'), - (0x2477, '3', '(4)'), - (0x2478, '3', '(5)'), - (0x2479, '3', '(6)'), - (0x247A, '3', '(7)'), - (0x247B, '3', '(8)'), - (0x247C, '3', '(9)'), - (0x247D, '3', '(10)'), - (0x247E, '3', '(11)'), - (0x247F, '3', '(12)'), - (0x2480, '3', '(13)'), - (0x2481, '3', '(14)'), - (0x2482, '3', '(15)'), - (0x2483, '3', '(16)'), - (0x2484, '3', '(17)'), - (0x2485, '3', '(18)'), - (0x2486, '3', '(19)'), - (0x2487, '3', '(20)'), - (0x2488, 'X'), - (0x249C, '3', '(a)'), - (0x249D, '3', '(b)'), - (0x249E, '3', '(c)'), - (0x249F, '3', '(d)'), - (0x24A0, '3', '(e)'), - (0x24A1, '3', '(f)'), - (0x24A2, '3', '(g)'), - (0x24A3, '3', '(h)'), - (0x24A4, '3', '(i)'), - (0x24A5, '3', '(j)'), - (0x24A6, '3', '(k)'), - (0x24A7, '3', '(l)'), - (0x24A8, '3', '(m)'), - (0x24A9, '3', '(n)'), - (0x24AA, '3', '(o)'), - (0x24AB, '3', '(p)'), - (0x24AC, '3', '(q)'), - (0x24AD, '3', '(r)'), - (0x24AE, '3', '(s)'), - (0x24AF, '3', '(t)'), - (0x24B0, '3', '(u)'), - (0x24B1, '3', '(v)'), - (0x24B2, '3', '(w)'), - (0x24B3, '3', '(x)'), - (0x24B4, '3', '(y)'), - (0x24B5, '3', '(z)'), - (0x24B6, 'M', 'a'), - (0x24B7, 'M', 'b'), - (0x24B8, 'M', 'c'), - (0x24B9, 'M', 'd'), - (0x24BA, 'M', 'e'), - (0x24BB, 'M', 'f'), - (0x24BC, 'M', 'g'), - (0x24BD, 'M', 'h'), - (0x24BE, 'M', 'i'), - (0x24BF, 'M', 'j'), - (0x24C0, 'M', 'k'), - ] - -def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x24C1, 'M', 'l'), - (0x24C2, 'M', 'm'), - (0x24C3, 'M', 'n'), - (0x24C4, 'M', 'o'), - (0x24C5, 'M', 'p'), - (0x24C6, 'M', 'q'), - (0x24C7, 'M', 'r'), - (0x24C8, 'M', 's'), - (0x24C9, 'M', 't'), - (0x24CA, 'M', 'u'), - (0x24CB, 'M', 'v'), - (0x24CC, 'M', 'w'), - (0x24CD, 'M', 'x'), - (0x24CE, 'M', 'y'), - (0x24CF, 'M', 'z'), - (0x24D0, 'M', 'a'), - (0x24D1, 'M', 'b'), - (0x24D2, 'M', 'c'), - (0x24D3, 'M', 'd'), - (0x24D4, 'M', 'e'), - (0x24D5, 'M', 'f'), - (0x24D6, 'M', 'g'), - (0x24D7, 'M', 'h'), - (0x24D8, 'M', 'i'), - (0x24D9, 'M', 'j'), - (0x24DA, 'M', 'k'), - (0x24DB, 'M', 'l'), - (0x24DC, 'M', 'm'), - (0x24DD, 'M', 'n'), - (0x24DE, 'M', 'o'), - (0x24DF, 'M', 'p'), - (0x24E0, 'M', 'q'), - (0x24E1, 'M', 'r'), - (0x24E2, 'M', 's'), - (0x24E3, 'M', 't'), - (0x24E4, 'M', 'u'), - (0x24E5, 'M', 'v'), - (0x24E6, 'M', 'w'), - (0x24E7, 'M', 'x'), - (0x24E8, 'M', 'y'), - (0x24E9, 'M', 'z'), - (0x24EA, 'M', '0'), - (0x24EB, 'V'), - (0x2A0C, 'M', '∫∫∫∫'), - (0x2A0D, 'V'), - (0x2A74, '3', '::='), - (0x2A75, '3', '=='), - (0x2A76, '3', '==='), - (0x2A77, 'V'), - (0x2ADC, 'M', '⫝̸'), - (0x2ADD, 'V'), - (0x2B74, 'X'), - (0x2B76, 'V'), - (0x2B96, 'X'), - (0x2B97, 'V'), - (0x2C00, 'M', 'ⰰ'), - (0x2C01, 'M', 'ⰱ'), - (0x2C02, 'M', 'ⰲ'), - (0x2C03, 'M', 'ⰳ'), - (0x2C04, 'M', 'ⰴ'), - (0x2C05, 'M', 'ⰵ'), - (0x2C06, 'M', 'ⰶ'), - (0x2C07, 'M', 'ⰷ'), - (0x2C08, 'M', 'ⰸ'), - (0x2C09, 'M', 'ⰹ'), - (0x2C0A, 'M', 'ⰺ'), - (0x2C0B, 'M', 'ⰻ'), - (0x2C0C, 'M', 'ⰼ'), - (0x2C0D, 'M', 'ⰽ'), - (0x2C0E, 'M', 'ⰾ'), - (0x2C0F, 'M', 'ⰿ'), - (0x2C10, 'M', 'ⱀ'), - (0x2C11, 'M', 'ⱁ'), - (0x2C12, 'M', 'ⱂ'), - (0x2C13, 'M', 'ⱃ'), - (0x2C14, 'M', 'ⱄ'), - (0x2C15, 'M', 'ⱅ'), - (0x2C16, 'M', 'ⱆ'), - (0x2C17, 'M', 'ⱇ'), - (0x2C18, 'M', 'ⱈ'), - (0x2C19, 'M', 'ⱉ'), - (0x2C1A, 'M', 'ⱊ'), - (0x2C1B, 'M', 'ⱋ'), - (0x2C1C, 'M', 'ⱌ'), - (0x2C1D, 'M', 'ⱍ'), - (0x2C1E, 'M', 'ⱎ'), - (0x2C1F, 'M', 'ⱏ'), - (0x2C20, 'M', 'ⱐ'), - (0x2C21, 'M', 'ⱑ'), - (0x2C22, 'M', 'ⱒ'), - (0x2C23, 'M', 'ⱓ'), - (0x2C24, 'M', 'ⱔ'), - (0x2C25, 'M', 'ⱕ'), - (0x2C26, 'M', 'ⱖ'), - (0x2C27, 'M', 'ⱗ'), - (0x2C28, 'M', 'ⱘ'), - (0x2C29, 'M', 'ⱙ'), - (0x2C2A, 'M', 'ⱚ'), - (0x2C2B, 'M', 'ⱛ'), - (0x2C2C, 'M', 'ⱜ'), - ] - -def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2C2D, 'M', 'ⱝ'), - (0x2C2E, 'M', 'ⱞ'), - (0x2C2F, 'M', 'ⱟ'), - (0x2C30, 'V'), - (0x2C60, 'M', 'ⱡ'), - (0x2C61, 'V'), - (0x2C62, 'M', 'ɫ'), - (0x2C63, 'M', 'ᵽ'), - (0x2C64, 'M', 'ɽ'), - (0x2C65, 'V'), - (0x2C67, 'M', 'ⱨ'), - (0x2C68, 'V'), - (0x2C69, 'M', 'ⱪ'), - (0x2C6A, 'V'), - (0x2C6B, 'M', 'ⱬ'), - (0x2C6C, 'V'), - (0x2C6D, 'M', 'ɑ'), - (0x2C6E, 'M', 'ɱ'), - (0x2C6F, 'M', 'ɐ'), - (0x2C70, 'M', 'ɒ'), - (0x2C71, 'V'), - (0x2C72, 'M', 'ⱳ'), - (0x2C73, 'V'), - (0x2C75, 'M', 'ⱶ'), - (0x2C76, 'V'), - (0x2C7C, 'M', 'j'), - (0x2C7D, 'M', 'v'), - (0x2C7E, 'M', 'ȿ'), - (0x2C7F, 'M', 'ɀ'), - (0x2C80, 'M', 'ⲁ'), - (0x2C81, 'V'), - (0x2C82, 'M', 'ⲃ'), - (0x2C83, 'V'), - (0x2C84, 'M', 'ⲅ'), - (0x2C85, 'V'), - (0x2C86, 'M', 'ⲇ'), - (0x2C87, 'V'), - (0x2C88, 'M', 'ⲉ'), - (0x2C89, 'V'), - (0x2C8A, 'M', 'ⲋ'), - (0x2C8B, 'V'), - (0x2C8C, 'M', 'ⲍ'), - (0x2C8D, 'V'), - (0x2C8E, 'M', 'ⲏ'), - (0x2C8F, 'V'), - (0x2C90, 'M', 'ⲑ'), - (0x2C91, 'V'), - (0x2C92, 'M', 'ⲓ'), - (0x2C93, 'V'), - (0x2C94, 'M', 'ⲕ'), - (0x2C95, 'V'), - (0x2C96, 'M', 'ⲗ'), - (0x2C97, 'V'), - (0x2C98, 'M', 'ⲙ'), - (0x2C99, 'V'), - (0x2C9A, 'M', 'ⲛ'), - (0x2C9B, 'V'), - (0x2C9C, 'M', 'ⲝ'), - (0x2C9D, 'V'), - (0x2C9E, 'M', 'ⲟ'), - (0x2C9F, 'V'), - (0x2CA0, 'M', 'ⲡ'), - (0x2CA1, 'V'), - (0x2CA2, 'M', 'ⲣ'), - (0x2CA3, 'V'), - (0x2CA4, 'M', 'ⲥ'), - (0x2CA5, 'V'), - (0x2CA6, 'M', 'ⲧ'), - (0x2CA7, 'V'), - (0x2CA8, 'M', 'ⲩ'), - (0x2CA9, 'V'), - (0x2CAA, 'M', 'ⲫ'), - (0x2CAB, 'V'), - (0x2CAC, 'M', 'ⲭ'), - (0x2CAD, 'V'), - (0x2CAE, 'M', 'ⲯ'), - (0x2CAF, 'V'), - (0x2CB0, 'M', 'ⲱ'), - (0x2CB1, 'V'), - (0x2CB2, 'M', 'ⲳ'), - (0x2CB3, 'V'), - (0x2CB4, 'M', 'ⲵ'), - (0x2CB5, 'V'), - (0x2CB6, 'M', 'ⲷ'), - (0x2CB7, 'V'), - (0x2CB8, 'M', 'ⲹ'), - (0x2CB9, 'V'), - (0x2CBA, 'M', 'ⲻ'), - (0x2CBB, 'V'), - (0x2CBC, 'M', 'ⲽ'), - (0x2CBD, 'V'), - (0x2CBE, 'M', 'ⲿ'), - (0x2CBF, 'V'), - (0x2CC0, 'M', 'ⳁ'), - (0x2CC1, 'V'), - (0x2CC2, 'M', 'ⳃ'), - (0x2CC3, 'V'), - (0x2CC4, 'M', 'ⳅ'), - (0x2CC5, 'V'), - (0x2CC6, 'M', 'ⳇ'), - ] - -def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2CC7, 'V'), - (0x2CC8, 'M', 'ⳉ'), - (0x2CC9, 'V'), - (0x2CCA, 'M', 'ⳋ'), - (0x2CCB, 'V'), - (0x2CCC, 'M', 'ⳍ'), - (0x2CCD, 'V'), - (0x2CCE, 'M', 'ⳏ'), - (0x2CCF, 'V'), - (0x2CD0, 'M', 'ⳑ'), - (0x2CD1, 'V'), - (0x2CD2, 'M', 'ⳓ'), - (0x2CD3, 'V'), - (0x2CD4, 'M', 'ⳕ'), - (0x2CD5, 'V'), - (0x2CD6, 'M', 'ⳗ'), - (0x2CD7, 'V'), - (0x2CD8, 'M', 'ⳙ'), - (0x2CD9, 'V'), - (0x2CDA, 'M', 'ⳛ'), - (0x2CDB, 'V'), - (0x2CDC, 'M', 'ⳝ'), - (0x2CDD, 'V'), - (0x2CDE, 'M', 'ⳟ'), - (0x2CDF, 'V'), - (0x2CE0, 'M', 'ⳡ'), - (0x2CE1, 'V'), - (0x2CE2, 'M', 'ⳣ'), - (0x2CE3, 'V'), - (0x2CEB, 'M', 'ⳬ'), - (0x2CEC, 'V'), - (0x2CED, 'M', 'ⳮ'), - (0x2CEE, 'V'), - (0x2CF2, 'M', 'ⳳ'), - (0x2CF3, 'V'), - (0x2CF4, 'X'), - (0x2CF9, 'V'), - (0x2D26, 'X'), - (0x2D27, 'V'), - (0x2D28, 'X'), - (0x2D2D, 'V'), - (0x2D2E, 'X'), - (0x2D30, 'V'), - (0x2D68, 'X'), - (0x2D6F, 'M', 'ⵡ'), - (0x2D70, 'V'), - (0x2D71, 'X'), - (0x2D7F, 'V'), - (0x2D97, 'X'), - (0x2DA0, 'V'), - (0x2DA7, 'X'), - (0x2DA8, 'V'), - (0x2DAF, 'X'), - (0x2DB0, 'V'), - (0x2DB7, 'X'), - (0x2DB8, 'V'), - (0x2DBF, 'X'), - (0x2DC0, 'V'), - (0x2DC7, 'X'), - (0x2DC8, 'V'), - (0x2DCF, 'X'), - (0x2DD0, 'V'), - (0x2DD7, 'X'), - (0x2DD8, 'V'), - (0x2DDF, 'X'), - (0x2DE0, 'V'), - (0x2E5E, 'X'), - (0x2E80, 'V'), - (0x2E9A, 'X'), - (0x2E9B, 'V'), - (0x2E9F, 'M', '母'), - (0x2EA0, 'V'), - (0x2EF3, 'M', '龟'), - (0x2EF4, 'X'), - (0x2F00, 'M', '一'), - (0x2F01, 'M', '丨'), - (0x2F02, 'M', '丶'), - (0x2F03, 'M', '丿'), - (0x2F04, 'M', '乙'), - (0x2F05, 'M', '亅'), - (0x2F06, 'M', '二'), - (0x2F07, 'M', '亠'), - (0x2F08, 'M', '人'), - (0x2F09, 'M', '儿'), - (0x2F0A, 'M', '入'), - (0x2F0B, 'M', '八'), - (0x2F0C, 'M', '冂'), - (0x2F0D, 'M', '冖'), - (0x2F0E, 'M', '冫'), - (0x2F0F, 'M', '几'), - (0x2F10, 'M', '凵'), - (0x2F11, 'M', '刀'), - (0x2F12, 'M', '力'), - (0x2F13, 'M', '勹'), - (0x2F14, 'M', '匕'), - (0x2F15, 'M', '匚'), - (0x2F16, 'M', '匸'), - (0x2F17, 'M', '十'), - (0x2F18, 'M', '卜'), - (0x2F19, 'M', '卩'), - ] - -def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F1A, 'M', '厂'), - (0x2F1B, 'M', '厶'), - (0x2F1C, 'M', '又'), - (0x2F1D, 'M', '口'), - (0x2F1E, 'M', '囗'), - (0x2F1F, 'M', '土'), - (0x2F20, 'M', '士'), - (0x2F21, 'M', '夂'), - (0x2F22, 'M', '夊'), - (0x2F23, 'M', '夕'), - (0x2F24, 'M', '大'), - (0x2F25, 'M', '女'), - (0x2F26, 'M', '子'), - (0x2F27, 'M', '宀'), - (0x2F28, 'M', '寸'), - (0x2F29, 'M', '小'), - (0x2F2A, 'M', '尢'), - (0x2F2B, 'M', '尸'), - (0x2F2C, 'M', '屮'), - (0x2F2D, 'M', '山'), - (0x2F2E, 'M', '巛'), - (0x2F2F, 'M', '工'), - (0x2F30, 'M', '己'), - (0x2F31, 'M', '巾'), - (0x2F32, 'M', '干'), - (0x2F33, 'M', '幺'), - (0x2F34, 'M', '广'), - (0x2F35, 'M', '廴'), - (0x2F36, 'M', '廾'), - (0x2F37, 'M', '弋'), - (0x2F38, 'M', '弓'), - (0x2F39, 'M', '彐'), - (0x2F3A, 'M', '彡'), - (0x2F3B, 'M', '彳'), - (0x2F3C, 'M', '心'), - (0x2F3D, 'M', '戈'), - (0x2F3E, 'M', '戶'), - (0x2F3F, 'M', '手'), - (0x2F40, 'M', '支'), - (0x2F41, 'M', '攴'), - (0x2F42, 'M', '文'), - (0x2F43, 'M', '斗'), - (0x2F44, 'M', '斤'), - (0x2F45, 'M', '方'), - (0x2F46, 'M', '无'), - (0x2F47, 'M', '日'), - (0x2F48, 'M', '曰'), - (0x2F49, 'M', '月'), - (0x2F4A, 'M', '木'), - (0x2F4B, 'M', '欠'), - (0x2F4C, 'M', '止'), - (0x2F4D, 'M', '歹'), - (0x2F4E, 'M', '殳'), - (0x2F4F, 'M', '毋'), - (0x2F50, 'M', '比'), - (0x2F51, 'M', '毛'), - (0x2F52, 'M', '氏'), - (0x2F53, 'M', '气'), - (0x2F54, 'M', '水'), - (0x2F55, 'M', '火'), - (0x2F56, 'M', '爪'), - (0x2F57, 'M', '父'), - (0x2F58, 'M', '爻'), - (0x2F59, 'M', '爿'), - (0x2F5A, 'M', '片'), - (0x2F5B, 'M', '牙'), - (0x2F5C, 'M', '牛'), - (0x2F5D, 'M', '犬'), - (0x2F5E, 'M', '玄'), - (0x2F5F, 'M', '玉'), - (0x2F60, 'M', '瓜'), - (0x2F61, 'M', '瓦'), - (0x2F62, 'M', '甘'), - (0x2F63, 'M', '生'), - (0x2F64, 'M', '用'), - (0x2F65, 'M', '田'), - (0x2F66, 'M', '疋'), - (0x2F67, 'M', '疒'), - (0x2F68, 'M', '癶'), - (0x2F69, 'M', '白'), - (0x2F6A, 'M', '皮'), - (0x2F6B, 'M', '皿'), - (0x2F6C, 'M', '目'), - (0x2F6D, 'M', '矛'), - (0x2F6E, 'M', '矢'), - (0x2F6F, 'M', '石'), - (0x2F70, 'M', '示'), - (0x2F71, 'M', '禸'), - (0x2F72, 'M', '禾'), - (0x2F73, 'M', '穴'), - (0x2F74, 'M', '立'), - (0x2F75, 'M', '竹'), - (0x2F76, 'M', '米'), - (0x2F77, 'M', '糸'), - (0x2F78, 'M', '缶'), - (0x2F79, 'M', '网'), - (0x2F7A, 'M', '羊'), - (0x2F7B, 'M', '羽'), - (0x2F7C, 'M', '老'), - (0x2F7D, 'M', '而'), - ] - -def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F7E, 'M', '耒'), - (0x2F7F, 'M', '耳'), - (0x2F80, 'M', '聿'), - (0x2F81, 'M', '肉'), - (0x2F82, 'M', '臣'), - (0x2F83, 'M', '自'), - (0x2F84, 'M', '至'), - (0x2F85, 'M', '臼'), - (0x2F86, 'M', '舌'), - (0x2F87, 'M', '舛'), - (0x2F88, 'M', '舟'), - (0x2F89, 'M', '艮'), - (0x2F8A, 'M', '色'), - (0x2F8B, 'M', '艸'), - (0x2F8C, 'M', '虍'), - (0x2F8D, 'M', '虫'), - (0x2F8E, 'M', '血'), - (0x2F8F, 'M', '行'), - (0x2F90, 'M', '衣'), - (0x2F91, 'M', '襾'), - (0x2F92, 'M', '見'), - (0x2F93, 'M', '角'), - (0x2F94, 'M', '言'), - (0x2F95, 'M', '谷'), - (0x2F96, 'M', '豆'), - (0x2F97, 'M', '豕'), - (0x2F98, 'M', '豸'), - (0x2F99, 'M', '貝'), - (0x2F9A, 'M', '赤'), - (0x2F9B, 'M', '走'), - (0x2F9C, 'M', '足'), - (0x2F9D, 'M', '身'), - (0x2F9E, 'M', '車'), - (0x2F9F, 'M', '辛'), - (0x2FA0, 'M', '辰'), - (0x2FA1, 'M', '辵'), - (0x2FA2, 'M', '邑'), - (0x2FA3, 'M', '酉'), - (0x2FA4, 'M', '釆'), - (0x2FA5, 'M', '里'), - (0x2FA6, 'M', '金'), - (0x2FA7, 'M', '長'), - (0x2FA8, 'M', '門'), - (0x2FA9, 'M', '阜'), - (0x2FAA, 'M', '隶'), - (0x2FAB, 'M', '隹'), - (0x2FAC, 'M', '雨'), - (0x2FAD, 'M', '靑'), - (0x2FAE, 'M', '非'), - (0x2FAF, 'M', '面'), - (0x2FB0, 'M', '革'), - (0x2FB1, 'M', '韋'), - (0x2FB2, 'M', '韭'), - (0x2FB3, 'M', '音'), - (0x2FB4, 'M', '頁'), - (0x2FB5, 'M', '風'), - (0x2FB6, 'M', '飛'), - (0x2FB7, 'M', '食'), - (0x2FB8, 'M', '首'), - (0x2FB9, 'M', '香'), - (0x2FBA, 'M', '馬'), - (0x2FBB, 'M', '骨'), - (0x2FBC, 'M', '高'), - (0x2FBD, 'M', '髟'), - (0x2FBE, 'M', '鬥'), - (0x2FBF, 'M', '鬯'), - (0x2FC0, 'M', '鬲'), - (0x2FC1, 'M', '鬼'), - (0x2FC2, 'M', '魚'), - (0x2FC3, 'M', '鳥'), - (0x2FC4, 'M', '鹵'), - (0x2FC5, 'M', '鹿'), - (0x2FC6, 'M', '麥'), - (0x2FC7, 'M', '麻'), - (0x2FC8, 'M', '黃'), - (0x2FC9, 'M', '黍'), - (0x2FCA, 'M', '黑'), - (0x2FCB, 'M', '黹'), - (0x2FCC, 'M', '黽'), - (0x2FCD, 'M', '鼎'), - (0x2FCE, 'M', '鼓'), - (0x2FCF, 'M', '鼠'), - (0x2FD0, 'M', '鼻'), - (0x2FD1, 'M', '齊'), - (0x2FD2, 'M', '齒'), - (0x2FD3, 'M', '龍'), - (0x2FD4, 'M', '龜'), - (0x2FD5, 'M', '龠'), - (0x2FD6, 'X'), - (0x3000, '3', ' '), - (0x3001, 'V'), - (0x3002, 'M', '.'), - (0x3003, 'V'), - (0x3036, 'M', '〒'), - (0x3037, 'V'), - (0x3038, 'M', '十'), - (0x3039, 'M', '卄'), - (0x303A, 'M', '卅'), - (0x303B, 'V'), - (0x3040, 'X'), - ] - -def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3041, 'V'), - (0x3097, 'X'), - (0x3099, 'V'), - (0x309B, '3', ' ゙'), - (0x309C, '3', ' ゚'), - (0x309D, 'V'), - (0x309F, 'M', 'より'), - (0x30A0, 'V'), - (0x30FF, 'M', 'コト'), - (0x3100, 'X'), - (0x3105, 'V'), - (0x3130, 'X'), - (0x3131, 'M', 'ᄀ'), - (0x3132, 'M', 'ᄁ'), - (0x3133, 'M', 'ᆪ'), - (0x3134, 'M', 'ᄂ'), - (0x3135, 'M', 'ᆬ'), - (0x3136, 'M', 'ᆭ'), - (0x3137, 'M', 'ᄃ'), - (0x3138, 'M', 'ᄄ'), - (0x3139, 'M', 'ᄅ'), - (0x313A, 'M', 'ᆰ'), - (0x313B, 'M', 'ᆱ'), - (0x313C, 'M', 'ᆲ'), - (0x313D, 'M', 'ᆳ'), - (0x313E, 'M', 'ᆴ'), - (0x313F, 'M', 'ᆵ'), - (0x3140, 'M', 'ᄚ'), - (0x3141, 'M', 'ᄆ'), - (0x3142, 'M', 'ᄇ'), - (0x3143, 'M', 'ᄈ'), - (0x3144, 'M', 'ᄡ'), - (0x3145, 'M', 'ᄉ'), - (0x3146, 'M', 'ᄊ'), - (0x3147, 'M', 'ᄋ'), - (0x3148, 'M', 'ᄌ'), - (0x3149, 'M', 'ᄍ'), - (0x314A, 'M', 'ᄎ'), - (0x314B, 'M', 'ᄏ'), - (0x314C, 'M', 'ᄐ'), - (0x314D, 'M', 'ᄑ'), - (0x314E, 'M', 'ᄒ'), - (0x314F, 'M', 'ᅡ'), - (0x3150, 'M', 'ᅢ'), - (0x3151, 'M', 'ᅣ'), - (0x3152, 'M', 'ᅤ'), - (0x3153, 'M', 'ᅥ'), - (0x3154, 'M', 'ᅦ'), - (0x3155, 'M', 'ᅧ'), - (0x3156, 'M', 'ᅨ'), - (0x3157, 'M', 'ᅩ'), - (0x3158, 'M', 'ᅪ'), - (0x3159, 'M', 'ᅫ'), - (0x315A, 'M', 'ᅬ'), - (0x315B, 'M', 'ᅭ'), - (0x315C, 'M', 'ᅮ'), - (0x315D, 'M', 'ᅯ'), - (0x315E, 'M', 'ᅰ'), - (0x315F, 'M', 'ᅱ'), - (0x3160, 'M', 'ᅲ'), - (0x3161, 'M', 'ᅳ'), - (0x3162, 'M', 'ᅴ'), - (0x3163, 'M', 'ᅵ'), - (0x3164, 'X'), - (0x3165, 'M', 'ᄔ'), - (0x3166, 'M', 'ᄕ'), - (0x3167, 'M', 'ᇇ'), - (0x3168, 'M', 'ᇈ'), - (0x3169, 'M', 'ᇌ'), - (0x316A, 'M', 'ᇎ'), - (0x316B, 'M', 'ᇓ'), - (0x316C, 'M', 'ᇗ'), - (0x316D, 'M', 'ᇙ'), - (0x316E, 'M', 'ᄜ'), - (0x316F, 'M', 'ᇝ'), - (0x3170, 'M', 'ᇟ'), - (0x3171, 'M', 'ᄝ'), - (0x3172, 'M', 'ᄞ'), - (0x3173, 'M', 'ᄠ'), - (0x3174, 'M', 'ᄢ'), - (0x3175, 'M', 'ᄣ'), - (0x3176, 'M', 'ᄧ'), - (0x3177, 'M', 'ᄩ'), - (0x3178, 'M', 'ᄫ'), - (0x3179, 'M', 'ᄬ'), - (0x317A, 'M', 'ᄭ'), - (0x317B, 'M', 'ᄮ'), - (0x317C, 'M', 'ᄯ'), - (0x317D, 'M', 'ᄲ'), - (0x317E, 'M', 'ᄶ'), - (0x317F, 'M', 'ᅀ'), - (0x3180, 'M', 'ᅇ'), - (0x3181, 'M', 'ᅌ'), - (0x3182, 'M', 'ᇱ'), - (0x3183, 'M', 'ᇲ'), - (0x3184, 'M', 'ᅗ'), - (0x3185, 'M', 'ᅘ'), - (0x3186, 'M', 'ᅙ'), - (0x3187, 'M', 'ᆄ'), - (0x3188, 'M', 'ᆅ'), - ] - -def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3189, 'M', 'ᆈ'), - (0x318A, 'M', 'ᆑ'), - (0x318B, 'M', 'ᆒ'), - (0x318C, 'M', 'ᆔ'), - (0x318D, 'M', 'ᆞ'), - (0x318E, 'M', 'ᆡ'), - (0x318F, 'X'), - (0x3190, 'V'), - (0x3192, 'M', '一'), - (0x3193, 'M', '二'), - (0x3194, 'M', '三'), - (0x3195, 'M', '四'), - (0x3196, 'M', '上'), - (0x3197, 'M', '中'), - (0x3198, 'M', '下'), - (0x3199, 'M', '甲'), - (0x319A, 'M', '乙'), - (0x319B, 'M', '丙'), - (0x319C, 'M', '丁'), - (0x319D, 'M', '天'), - (0x319E, 'M', '地'), - (0x319F, 'M', '人'), - (0x31A0, 'V'), - (0x31E4, 'X'), - (0x31F0, 'V'), - (0x3200, '3', '(ᄀ)'), - (0x3201, '3', '(ᄂ)'), - (0x3202, '3', '(ᄃ)'), - (0x3203, '3', '(ᄅ)'), - (0x3204, '3', '(ᄆ)'), - (0x3205, '3', '(ᄇ)'), - (0x3206, '3', '(ᄉ)'), - (0x3207, '3', '(ᄋ)'), - (0x3208, '3', '(ᄌ)'), - (0x3209, '3', '(ᄎ)'), - (0x320A, '3', '(ᄏ)'), - (0x320B, '3', '(ᄐ)'), - (0x320C, '3', '(ᄑ)'), - (0x320D, '3', '(ᄒ)'), - (0x320E, '3', '(가)'), - (0x320F, '3', '(나)'), - (0x3210, '3', '(다)'), - (0x3211, '3', '(라)'), - (0x3212, '3', '(마)'), - (0x3213, '3', '(바)'), - (0x3214, '3', '(사)'), - (0x3215, '3', '(아)'), - (0x3216, '3', '(자)'), - (0x3217, '3', '(차)'), - (0x3218, '3', '(카)'), - (0x3219, '3', '(타)'), - (0x321A, '3', '(파)'), - (0x321B, '3', '(하)'), - (0x321C, '3', '(주)'), - (0x321D, '3', '(오전)'), - (0x321E, '3', '(오후)'), - (0x321F, 'X'), - (0x3220, '3', '(一)'), - (0x3221, '3', '(二)'), - (0x3222, '3', '(三)'), - (0x3223, '3', '(四)'), - (0x3224, '3', '(五)'), - (0x3225, '3', '(六)'), - (0x3226, '3', '(七)'), - (0x3227, '3', '(八)'), - (0x3228, '3', '(九)'), - (0x3229, '3', '(十)'), - (0x322A, '3', '(月)'), - (0x322B, '3', '(火)'), - (0x322C, '3', '(水)'), - (0x322D, '3', '(木)'), - (0x322E, '3', '(金)'), - (0x322F, '3', '(土)'), - (0x3230, '3', '(日)'), - (0x3231, '3', '(株)'), - (0x3232, '3', '(有)'), - (0x3233, '3', '(社)'), - (0x3234, '3', '(名)'), - (0x3235, '3', '(特)'), - (0x3236, '3', '(財)'), - (0x3237, '3', '(祝)'), - (0x3238, '3', '(労)'), - (0x3239, '3', '(代)'), - (0x323A, '3', '(呼)'), - (0x323B, '3', '(学)'), - (0x323C, '3', '(監)'), - (0x323D, '3', '(企)'), - (0x323E, '3', '(資)'), - (0x323F, '3', '(協)'), - (0x3240, '3', '(祭)'), - (0x3241, '3', '(休)'), - (0x3242, '3', '(自)'), - (0x3243, '3', '(至)'), - (0x3244, 'M', '問'), - (0x3245, 'M', '幼'), - (0x3246, 'M', '文'), - (0x3247, 'M', '箏'), - (0x3248, 'V'), - (0x3250, 'M', 'pte'), - (0x3251, 'M', '21'), - ] - -def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3252, 'M', '22'), - (0x3253, 'M', '23'), - (0x3254, 'M', '24'), - (0x3255, 'M', '25'), - (0x3256, 'M', '26'), - (0x3257, 'M', '27'), - (0x3258, 'M', '28'), - (0x3259, 'M', '29'), - (0x325A, 'M', '30'), - (0x325B, 'M', '31'), - (0x325C, 'M', '32'), - (0x325D, 'M', '33'), - (0x325E, 'M', '34'), - (0x325F, 'M', '35'), - (0x3260, 'M', 'ᄀ'), - (0x3261, 'M', 'ᄂ'), - (0x3262, 'M', 'ᄃ'), - (0x3263, 'M', 'ᄅ'), - (0x3264, 'M', 'ᄆ'), - (0x3265, 'M', 'ᄇ'), - (0x3266, 'M', 'ᄉ'), - (0x3267, 'M', 'ᄋ'), - (0x3268, 'M', 'ᄌ'), - (0x3269, 'M', 'ᄎ'), - (0x326A, 'M', 'ᄏ'), - (0x326B, 'M', 'ᄐ'), - (0x326C, 'M', 'ᄑ'), - (0x326D, 'M', 'ᄒ'), - (0x326E, 'M', '가'), - (0x326F, 'M', '나'), - (0x3270, 'M', '다'), - (0x3271, 'M', '라'), - (0x3272, 'M', '마'), - (0x3273, 'M', '바'), - (0x3274, 'M', '사'), - (0x3275, 'M', '아'), - (0x3276, 'M', '자'), - (0x3277, 'M', '차'), - (0x3278, 'M', '카'), - (0x3279, 'M', '타'), - (0x327A, 'M', '파'), - (0x327B, 'M', '하'), - (0x327C, 'M', '참고'), - (0x327D, 'M', '주의'), - (0x327E, 'M', '우'), - (0x327F, 'V'), - (0x3280, 'M', '一'), - (0x3281, 'M', '二'), - (0x3282, 'M', '三'), - (0x3283, 'M', '四'), - (0x3284, 'M', '五'), - (0x3285, 'M', '六'), - (0x3286, 'M', '七'), - (0x3287, 'M', '八'), - (0x3288, 'M', '九'), - (0x3289, 'M', '十'), - (0x328A, 'M', '月'), - (0x328B, 'M', '火'), - (0x328C, 'M', '水'), - (0x328D, 'M', '木'), - (0x328E, 'M', '金'), - (0x328F, 'M', '土'), - (0x3290, 'M', '日'), - (0x3291, 'M', '株'), - (0x3292, 'M', '有'), - (0x3293, 'M', '社'), - (0x3294, 'M', '名'), - (0x3295, 'M', '特'), - (0x3296, 'M', '財'), - (0x3297, 'M', '祝'), - (0x3298, 'M', '労'), - (0x3299, 'M', '秘'), - (0x329A, 'M', '男'), - (0x329B, 'M', '女'), - (0x329C, 'M', '適'), - (0x329D, 'M', '優'), - (0x329E, 'M', '印'), - (0x329F, 'M', '注'), - (0x32A0, 'M', '項'), - (0x32A1, 'M', '休'), - (0x32A2, 'M', '写'), - (0x32A3, 'M', '正'), - (0x32A4, 'M', '上'), - (0x32A5, 'M', '中'), - (0x32A6, 'M', '下'), - (0x32A7, 'M', '左'), - (0x32A8, 'M', '右'), - (0x32A9, 'M', '医'), - (0x32AA, 'M', '宗'), - (0x32AB, 'M', '学'), - (0x32AC, 'M', '監'), - (0x32AD, 'M', '企'), - (0x32AE, 'M', '資'), - (0x32AF, 'M', '協'), - (0x32B0, 'M', '夜'), - (0x32B1, 'M', '36'), - (0x32B2, 'M', '37'), - (0x32B3, 'M', '38'), - (0x32B4, 'M', '39'), - (0x32B5, 'M', '40'), - ] - -def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x32B6, 'M', '41'), - (0x32B7, 'M', '42'), - (0x32B8, 'M', '43'), - (0x32B9, 'M', '44'), - (0x32BA, 'M', '45'), - (0x32BB, 'M', '46'), - (0x32BC, 'M', '47'), - (0x32BD, 'M', '48'), - (0x32BE, 'M', '49'), - (0x32BF, 'M', '50'), - (0x32C0, 'M', '1月'), - (0x32C1, 'M', '2月'), - (0x32C2, 'M', '3月'), - (0x32C3, 'M', '4月'), - (0x32C4, 'M', '5月'), - (0x32C5, 'M', '6月'), - (0x32C6, 'M', '7月'), - (0x32C7, 'M', '8月'), - (0x32C8, 'M', '9月'), - (0x32C9, 'M', '10月'), - (0x32CA, 'M', '11月'), - (0x32CB, 'M', '12月'), - (0x32CC, 'M', 'hg'), - (0x32CD, 'M', 'erg'), - (0x32CE, 'M', 'ev'), - (0x32CF, 'M', 'ltd'), - (0x32D0, 'M', 'ア'), - (0x32D1, 'M', 'イ'), - (0x32D2, 'M', 'ウ'), - (0x32D3, 'M', 'エ'), - (0x32D4, 'M', 'オ'), - (0x32D5, 'M', 'カ'), - (0x32D6, 'M', 'キ'), - (0x32D7, 'M', 'ク'), - (0x32D8, 'M', 'ケ'), - (0x32D9, 'M', 'コ'), - (0x32DA, 'M', 'サ'), - (0x32DB, 'M', 'シ'), - (0x32DC, 'M', 'ス'), - (0x32DD, 'M', 'セ'), - (0x32DE, 'M', 'ソ'), - (0x32DF, 'M', 'タ'), - (0x32E0, 'M', 'チ'), - (0x32E1, 'M', 'ツ'), - (0x32E2, 'M', 'テ'), - (0x32E3, 'M', 'ト'), - (0x32E4, 'M', 'ナ'), - (0x32E5, 'M', 'ニ'), - (0x32E6, 'M', 'ヌ'), - (0x32E7, 'M', 'ネ'), - (0x32E8, 'M', 'ノ'), - (0x32E9, 'M', 'ハ'), - (0x32EA, 'M', 'ヒ'), - (0x32EB, 'M', 'フ'), - (0x32EC, 'M', 'ヘ'), - (0x32ED, 'M', 'ホ'), - (0x32EE, 'M', 'マ'), - (0x32EF, 'M', 'ミ'), - (0x32F0, 'M', 'ム'), - (0x32F1, 'M', 'メ'), - (0x32F2, 'M', 'モ'), - (0x32F3, 'M', 'ヤ'), - (0x32F4, 'M', 'ユ'), - (0x32F5, 'M', 'ヨ'), - (0x32F6, 'M', 'ラ'), - (0x32F7, 'M', 'リ'), - (0x32F8, 'M', 'ル'), - (0x32F9, 'M', 'レ'), - (0x32FA, 'M', 'ロ'), - (0x32FB, 'M', 'ワ'), - (0x32FC, 'M', 'ヰ'), - (0x32FD, 'M', 'ヱ'), - (0x32FE, 'M', 'ヲ'), - (0x32FF, 'M', '令和'), - (0x3300, 'M', 'アパート'), - (0x3301, 'M', 'アルファ'), - (0x3302, 'M', 'アンペア'), - (0x3303, 'M', 'アール'), - (0x3304, 'M', 'イニング'), - (0x3305, 'M', 'インチ'), - (0x3306, 'M', 'ウォン'), - (0x3307, 'M', 'エスクード'), - (0x3308, 'M', 'エーカー'), - (0x3309, 'M', 'オンス'), - (0x330A, 'M', 'オーム'), - (0x330B, 'M', 'カイリ'), - (0x330C, 'M', 'カラット'), - (0x330D, 'M', 'カロリー'), - (0x330E, 'M', 'ガロン'), - (0x330F, 'M', 'ガンマ'), - (0x3310, 'M', 'ギガ'), - (0x3311, 'M', 'ギニー'), - (0x3312, 'M', 'キュリー'), - (0x3313, 'M', 'ギルダー'), - (0x3314, 'M', 'キロ'), - (0x3315, 'M', 'キログラム'), - (0x3316, 'M', 'キロメートル'), - (0x3317, 'M', 'キロワット'), - (0x3318, 'M', 'グラム'), - (0x3319, 'M', 'グラムトン'), - ] - -def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x331A, 'M', 'クルゼイロ'), - (0x331B, 'M', 'クローネ'), - (0x331C, 'M', 'ケース'), - (0x331D, 'M', 'コルナ'), - (0x331E, 'M', 'コーポ'), - (0x331F, 'M', 'サイクル'), - (0x3320, 'M', 'サンチーム'), - (0x3321, 'M', 'シリング'), - (0x3322, 'M', 'センチ'), - (0x3323, 'M', 'セント'), - (0x3324, 'M', 'ダース'), - (0x3325, 'M', 'デシ'), - (0x3326, 'M', 'ドル'), - (0x3327, 'M', 'トン'), - (0x3328, 'M', 'ナノ'), - (0x3329, 'M', 'ノット'), - (0x332A, 'M', 'ハイツ'), - (0x332B, 'M', 'パーセント'), - (0x332C, 'M', 'パーツ'), - (0x332D, 'M', 'バーレル'), - (0x332E, 'M', 'ピアストル'), - (0x332F, 'M', 'ピクル'), - (0x3330, 'M', 'ピコ'), - (0x3331, 'M', 'ビル'), - (0x3332, 'M', 'ファラッド'), - (0x3333, 'M', 'フィート'), - (0x3334, 'M', 'ブッシェル'), - (0x3335, 'M', 'フラン'), - (0x3336, 'M', 'ヘクタール'), - (0x3337, 'M', 'ペソ'), - (0x3338, 'M', 'ペニヒ'), - (0x3339, 'M', 'ヘルツ'), - (0x333A, 'M', 'ペンス'), - (0x333B, 'M', 'ページ'), - (0x333C, 'M', 'ベータ'), - (0x333D, 'M', 'ポイント'), - (0x333E, 'M', 'ボルト'), - (0x333F, 'M', 'ホン'), - (0x3340, 'M', 'ポンド'), - (0x3341, 'M', 'ホール'), - (0x3342, 'M', 'ホーン'), - (0x3343, 'M', 'マイクロ'), - (0x3344, 'M', 'マイル'), - (0x3345, 'M', 'マッハ'), - (0x3346, 'M', 'マルク'), - (0x3347, 'M', 'マンション'), - (0x3348, 'M', 'ミクロン'), - (0x3349, 'M', 'ミリ'), - (0x334A, 'M', 'ミリバール'), - (0x334B, 'M', 'メガ'), - (0x334C, 'M', 'メガトン'), - (0x334D, 'M', 'メートル'), - (0x334E, 'M', 'ヤード'), - (0x334F, 'M', 'ヤール'), - (0x3350, 'M', 'ユアン'), - (0x3351, 'M', 'リットル'), - (0x3352, 'M', 'リラ'), - (0x3353, 'M', 'ルピー'), - (0x3354, 'M', 'ルーブル'), - (0x3355, 'M', 'レム'), - (0x3356, 'M', 'レントゲン'), - (0x3357, 'M', 'ワット'), - (0x3358, 'M', '0点'), - (0x3359, 'M', '1点'), - (0x335A, 'M', '2点'), - (0x335B, 'M', '3点'), - (0x335C, 'M', '4点'), - (0x335D, 'M', '5点'), - (0x335E, 'M', '6点'), - (0x335F, 'M', '7点'), - (0x3360, 'M', '8点'), - (0x3361, 'M', '9点'), - (0x3362, 'M', '10点'), - (0x3363, 'M', '11点'), - (0x3364, 'M', '12点'), - (0x3365, 'M', '13点'), - (0x3366, 'M', '14点'), - (0x3367, 'M', '15点'), - (0x3368, 'M', '16点'), - (0x3369, 'M', '17点'), - (0x336A, 'M', '18点'), - (0x336B, 'M', '19点'), - (0x336C, 'M', '20点'), - (0x336D, 'M', '21点'), - (0x336E, 'M', '22点'), - (0x336F, 'M', '23点'), - (0x3370, 'M', '24点'), - (0x3371, 'M', 'hpa'), - (0x3372, 'M', 'da'), - (0x3373, 'M', 'au'), - (0x3374, 'M', 'bar'), - (0x3375, 'M', 'ov'), - (0x3376, 'M', 'pc'), - (0x3377, 'M', 'dm'), - (0x3378, 'M', 'dm2'), - (0x3379, 'M', 'dm3'), - (0x337A, 'M', 'iu'), - (0x337B, 'M', '平成'), - (0x337C, 'M', '昭和'), - (0x337D, 'M', '大正'), - ] - -def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x337E, 'M', '明治'), - (0x337F, 'M', '株式会社'), - (0x3380, 'M', 'pa'), - (0x3381, 'M', 'na'), - (0x3382, 'M', 'μa'), - (0x3383, 'M', 'ma'), - (0x3384, 'M', 'ka'), - (0x3385, 'M', 'kb'), - (0x3386, 'M', 'mb'), - (0x3387, 'M', 'gb'), - (0x3388, 'M', 'cal'), - (0x3389, 'M', 'kcal'), - (0x338A, 'M', 'pf'), - (0x338B, 'M', 'nf'), - (0x338C, 'M', 'μf'), - (0x338D, 'M', 'μg'), - (0x338E, 'M', 'mg'), - (0x338F, 'M', 'kg'), - (0x3390, 'M', 'hz'), - (0x3391, 'M', 'khz'), - (0x3392, 'M', 'mhz'), - (0x3393, 'M', 'ghz'), - (0x3394, 'M', 'thz'), - (0x3395, 'M', 'μl'), - (0x3396, 'M', 'ml'), - (0x3397, 'M', 'dl'), - (0x3398, 'M', 'kl'), - (0x3399, 'M', 'fm'), - (0x339A, 'M', 'nm'), - (0x339B, 'M', 'μm'), - (0x339C, 'M', 'mm'), - (0x339D, 'M', 'cm'), - (0x339E, 'M', 'km'), - (0x339F, 'M', 'mm2'), - (0x33A0, 'M', 'cm2'), - (0x33A1, 'M', 'm2'), - (0x33A2, 'M', 'km2'), - (0x33A3, 'M', 'mm3'), - (0x33A4, 'M', 'cm3'), - (0x33A5, 'M', 'm3'), - (0x33A6, 'M', 'km3'), - (0x33A7, 'M', 'm∕s'), - (0x33A8, 'M', 'm∕s2'), - (0x33A9, 'M', 'pa'), - (0x33AA, 'M', 'kpa'), - (0x33AB, 'M', 'mpa'), - (0x33AC, 'M', 'gpa'), - (0x33AD, 'M', 'rad'), - (0x33AE, 'M', 'rad∕s'), - (0x33AF, 'M', 'rad∕s2'), - (0x33B0, 'M', 'ps'), - (0x33B1, 'M', 'ns'), - (0x33B2, 'M', 'μs'), - (0x33B3, 'M', 'ms'), - (0x33B4, 'M', 'pv'), - (0x33B5, 'M', 'nv'), - (0x33B6, 'M', 'μv'), - (0x33B7, 'M', 'mv'), - (0x33B8, 'M', 'kv'), - (0x33B9, 'M', 'mv'), - (0x33BA, 'M', 'pw'), - (0x33BB, 'M', 'nw'), - (0x33BC, 'M', 'μw'), - (0x33BD, 'M', 'mw'), - (0x33BE, 'M', 'kw'), - (0x33BF, 'M', 'mw'), - (0x33C0, 'M', 'kω'), - (0x33C1, 'M', 'mω'), - (0x33C2, 'X'), - (0x33C3, 'M', 'bq'), - (0x33C4, 'M', 'cc'), - (0x33C5, 'M', 'cd'), - (0x33C6, 'M', 'c∕kg'), - (0x33C7, 'X'), - (0x33C8, 'M', 'db'), - (0x33C9, 'M', 'gy'), - (0x33CA, 'M', 'ha'), - (0x33CB, 'M', 'hp'), - (0x33CC, 'M', 'in'), - (0x33CD, 'M', 'kk'), - (0x33CE, 'M', 'km'), - (0x33CF, 'M', 'kt'), - (0x33D0, 'M', 'lm'), - (0x33D1, 'M', 'ln'), - (0x33D2, 'M', 'log'), - (0x33D3, 'M', 'lx'), - (0x33D4, 'M', 'mb'), - (0x33D5, 'M', 'mil'), - (0x33D6, 'M', 'mol'), - (0x33D7, 'M', 'ph'), - (0x33D8, 'X'), - (0x33D9, 'M', 'ppm'), - (0x33DA, 'M', 'pr'), - (0x33DB, 'M', 'sr'), - (0x33DC, 'M', 'sv'), - (0x33DD, 'M', 'wb'), - (0x33DE, 'M', 'v∕m'), - (0x33DF, 'M', 'a∕m'), - (0x33E0, 'M', '1日'), - (0x33E1, 'M', '2日'), - ] - -def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x33E2, 'M', '3日'), - (0x33E3, 'M', '4日'), - (0x33E4, 'M', '5日'), - (0x33E5, 'M', '6日'), - (0x33E6, 'M', '7日'), - (0x33E7, 'M', '8日'), - (0x33E8, 'M', '9日'), - (0x33E9, 'M', '10日'), - (0x33EA, 'M', '11日'), - (0x33EB, 'M', '12日'), - (0x33EC, 'M', '13日'), - (0x33ED, 'M', '14日'), - (0x33EE, 'M', '15日'), - (0x33EF, 'M', '16日'), - (0x33F0, 'M', '17日'), - (0x33F1, 'M', '18日'), - (0x33F2, 'M', '19日'), - (0x33F3, 'M', '20日'), - (0x33F4, 'M', '21日'), - (0x33F5, 'M', '22日'), - (0x33F6, 'M', '23日'), - (0x33F7, 'M', '24日'), - (0x33F8, 'M', '25日'), - (0x33F9, 'M', '26日'), - (0x33FA, 'M', '27日'), - (0x33FB, 'M', '28日'), - (0x33FC, 'M', '29日'), - (0x33FD, 'M', '30日'), - (0x33FE, 'M', '31日'), - (0x33FF, 'M', 'gal'), - (0x3400, 'V'), - (0xA48D, 'X'), - (0xA490, 'V'), - (0xA4C7, 'X'), - (0xA4D0, 'V'), - (0xA62C, 'X'), - (0xA640, 'M', 'ꙁ'), - (0xA641, 'V'), - (0xA642, 'M', 'ꙃ'), - (0xA643, 'V'), - (0xA644, 'M', 'ꙅ'), - (0xA645, 'V'), - (0xA646, 'M', 'ꙇ'), - (0xA647, 'V'), - (0xA648, 'M', 'ꙉ'), - (0xA649, 'V'), - (0xA64A, 'M', 'ꙋ'), - (0xA64B, 'V'), - (0xA64C, 'M', 'ꙍ'), - (0xA64D, 'V'), - (0xA64E, 'M', 'ꙏ'), - (0xA64F, 'V'), - (0xA650, 'M', 'ꙑ'), - (0xA651, 'V'), - (0xA652, 'M', 'ꙓ'), - (0xA653, 'V'), - (0xA654, 'M', 'ꙕ'), - (0xA655, 'V'), - (0xA656, 'M', 'ꙗ'), - (0xA657, 'V'), - (0xA658, 'M', 'ꙙ'), - (0xA659, 'V'), - (0xA65A, 'M', 'ꙛ'), - (0xA65B, 'V'), - (0xA65C, 'M', 'ꙝ'), - (0xA65D, 'V'), - (0xA65E, 'M', 'ꙟ'), - (0xA65F, 'V'), - (0xA660, 'M', 'ꙡ'), - (0xA661, 'V'), - (0xA662, 'M', 'ꙣ'), - (0xA663, 'V'), - (0xA664, 'M', 'ꙥ'), - (0xA665, 'V'), - (0xA666, 'M', 'ꙧ'), - (0xA667, 'V'), - (0xA668, 'M', 'ꙩ'), - (0xA669, 'V'), - (0xA66A, 'M', 'ꙫ'), - (0xA66B, 'V'), - (0xA66C, 'M', 'ꙭ'), - (0xA66D, 'V'), - (0xA680, 'M', 'ꚁ'), - (0xA681, 'V'), - (0xA682, 'M', 'ꚃ'), - (0xA683, 'V'), - (0xA684, 'M', 'ꚅ'), - (0xA685, 'V'), - (0xA686, 'M', 'ꚇ'), - (0xA687, 'V'), - (0xA688, 'M', 'ꚉ'), - (0xA689, 'V'), - (0xA68A, 'M', 'ꚋ'), - (0xA68B, 'V'), - (0xA68C, 'M', 'ꚍ'), - (0xA68D, 'V'), - (0xA68E, 'M', 'ꚏ'), - (0xA68F, 'V'), - (0xA690, 'M', 'ꚑ'), - (0xA691, 'V'), - ] - -def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA692, 'M', 'ꚓ'), - (0xA693, 'V'), - (0xA694, 'M', 'ꚕ'), - (0xA695, 'V'), - (0xA696, 'M', 'ꚗ'), - (0xA697, 'V'), - (0xA698, 'M', 'ꚙ'), - (0xA699, 'V'), - (0xA69A, 'M', 'ꚛ'), - (0xA69B, 'V'), - (0xA69C, 'M', 'ъ'), - (0xA69D, 'M', 'ь'), - (0xA69E, 'V'), - (0xA6F8, 'X'), - (0xA700, 'V'), - (0xA722, 'M', 'ꜣ'), - (0xA723, 'V'), - (0xA724, 'M', 'ꜥ'), - (0xA725, 'V'), - (0xA726, 'M', 'ꜧ'), - (0xA727, 'V'), - (0xA728, 'M', 'ꜩ'), - (0xA729, 'V'), - (0xA72A, 'M', 'ꜫ'), - (0xA72B, 'V'), - (0xA72C, 'M', 'ꜭ'), - (0xA72D, 'V'), - (0xA72E, 'M', 'ꜯ'), - (0xA72F, 'V'), - (0xA732, 'M', 'ꜳ'), - (0xA733, 'V'), - (0xA734, 'M', 'ꜵ'), - (0xA735, 'V'), - (0xA736, 'M', 'ꜷ'), - (0xA737, 'V'), - (0xA738, 'M', 'ꜹ'), - (0xA739, 'V'), - (0xA73A, 'M', 'ꜻ'), - (0xA73B, 'V'), - (0xA73C, 'M', 'ꜽ'), - (0xA73D, 'V'), - (0xA73E, 'M', 'ꜿ'), - (0xA73F, 'V'), - (0xA740, 'M', 'ꝁ'), - (0xA741, 'V'), - (0xA742, 'M', 'ꝃ'), - (0xA743, 'V'), - (0xA744, 'M', 'ꝅ'), - (0xA745, 'V'), - (0xA746, 'M', 'ꝇ'), - (0xA747, 'V'), - (0xA748, 'M', 'ꝉ'), - (0xA749, 'V'), - (0xA74A, 'M', 'ꝋ'), - (0xA74B, 'V'), - (0xA74C, 'M', 'ꝍ'), - (0xA74D, 'V'), - (0xA74E, 'M', 'ꝏ'), - (0xA74F, 'V'), - (0xA750, 'M', 'ꝑ'), - (0xA751, 'V'), - (0xA752, 'M', 'ꝓ'), - (0xA753, 'V'), - (0xA754, 'M', 'ꝕ'), - (0xA755, 'V'), - (0xA756, 'M', 'ꝗ'), - (0xA757, 'V'), - (0xA758, 'M', 'ꝙ'), - (0xA759, 'V'), - (0xA75A, 'M', 'ꝛ'), - (0xA75B, 'V'), - (0xA75C, 'M', 'ꝝ'), - (0xA75D, 'V'), - (0xA75E, 'M', 'ꝟ'), - (0xA75F, 'V'), - (0xA760, 'M', 'ꝡ'), - (0xA761, 'V'), - (0xA762, 'M', 'ꝣ'), - (0xA763, 'V'), - (0xA764, 'M', 'ꝥ'), - (0xA765, 'V'), - (0xA766, 'M', 'ꝧ'), - (0xA767, 'V'), - (0xA768, 'M', 'ꝩ'), - (0xA769, 'V'), - (0xA76A, 'M', 'ꝫ'), - (0xA76B, 'V'), - (0xA76C, 'M', 'ꝭ'), - (0xA76D, 'V'), - (0xA76E, 'M', 'ꝯ'), - (0xA76F, 'V'), - (0xA770, 'M', 'ꝯ'), - (0xA771, 'V'), - (0xA779, 'M', 'ꝺ'), - (0xA77A, 'V'), - (0xA77B, 'M', 'ꝼ'), - (0xA77C, 'V'), - (0xA77D, 'M', 'ᵹ'), - (0xA77E, 'M', 'ꝿ'), - (0xA77F, 'V'), - ] - -def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA780, 'M', 'ꞁ'), - (0xA781, 'V'), - (0xA782, 'M', 'ꞃ'), - (0xA783, 'V'), - (0xA784, 'M', 'ꞅ'), - (0xA785, 'V'), - (0xA786, 'M', 'ꞇ'), - (0xA787, 'V'), - (0xA78B, 'M', 'ꞌ'), - (0xA78C, 'V'), - (0xA78D, 'M', 'ɥ'), - (0xA78E, 'V'), - (0xA790, 'M', 'ꞑ'), - (0xA791, 'V'), - (0xA792, 'M', 'ꞓ'), - (0xA793, 'V'), - (0xA796, 'M', 'ꞗ'), - (0xA797, 'V'), - (0xA798, 'M', 'ꞙ'), - (0xA799, 'V'), - (0xA79A, 'M', 'ꞛ'), - (0xA79B, 'V'), - (0xA79C, 'M', 'ꞝ'), - (0xA79D, 'V'), - (0xA79E, 'M', 'ꞟ'), - (0xA79F, 'V'), - (0xA7A0, 'M', 'ꞡ'), - (0xA7A1, 'V'), - (0xA7A2, 'M', 'ꞣ'), - (0xA7A3, 'V'), - (0xA7A4, 'M', 'ꞥ'), - (0xA7A5, 'V'), - (0xA7A6, 'M', 'ꞧ'), - (0xA7A7, 'V'), - (0xA7A8, 'M', 'ꞩ'), - (0xA7A9, 'V'), - (0xA7AA, 'M', 'ɦ'), - (0xA7AB, 'M', 'ɜ'), - (0xA7AC, 'M', 'ɡ'), - (0xA7AD, 'M', 'ɬ'), - (0xA7AE, 'M', 'ɪ'), - (0xA7AF, 'V'), - (0xA7B0, 'M', 'ʞ'), - (0xA7B1, 'M', 'ʇ'), - (0xA7B2, 'M', 'ʝ'), - (0xA7B3, 'M', 'ꭓ'), - (0xA7B4, 'M', 'ꞵ'), - (0xA7B5, 'V'), - (0xA7B6, 'M', 'ꞷ'), - (0xA7B7, 'V'), - (0xA7B8, 'M', 'ꞹ'), - (0xA7B9, 'V'), - (0xA7BA, 'M', 'ꞻ'), - (0xA7BB, 'V'), - (0xA7BC, 'M', 'ꞽ'), - (0xA7BD, 'V'), - (0xA7BE, 'M', 'ꞿ'), - (0xA7BF, 'V'), - (0xA7C0, 'M', 'ꟁ'), - (0xA7C1, 'V'), - (0xA7C2, 'M', 'ꟃ'), - (0xA7C3, 'V'), - (0xA7C4, 'M', 'ꞔ'), - (0xA7C5, 'M', 'ʂ'), - (0xA7C6, 'M', 'ᶎ'), - (0xA7C7, 'M', 'ꟈ'), - (0xA7C8, 'V'), - (0xA7C9, 'M', 'ꟊ'), - (0xA7CA, 'V'), - (0xA7CB, 'X'), - (0xA7D0, 'M', 'ꟑ'), - (0xA7D1, 'V'), - (0xA7D2, 'X'), - (0xA7D3, 'V'), - (0xA7D4, 'X'), - (0xA7D5, 'V'), - (0xA7D6, 'M', 'ꟗ'), - (0xA7D7, 'V'), - (0xA7D8, 'M', 'ꟙ'), - (0xA7D9, 'V'), - (0xA7DA, 'X'), - (0xA7F2, 'M', 'c'), - (0xA7F3, 'M', 'f'), - (0xA7F4, 'M', 'q'), - (0xA7F5, 'M', 'ꟶ'), - (0xA7F6, 'V'), - (0xA7F8, 'M', 'ħ'), - (0xA7F9, 'M', 'œ'), - (0xA7FA, 'V'), - (0xA82D, 'X'), - (0xA830, 'V'), - (0xA83A, 'X'), - (0xA840, 'V'), - (0xA878, 'X'), - (0xA880, 'V'), - (0xA8C6, 'X'), - (0xA8CE, 'V'), - (0xA8DA, 'X'), - (0xA8E0, 'V'), - (0xA954, 'X'), - ] - -def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA95F, 'V'), - (0xA97D, 'X'), - (0xA980, 'V'), - (0xA9CE, 'X'), - (0xA9CF, 'V'), - (0xA9DA, 'X'), - (0xA9DE, 'V'), - (0xA9FF, 'X'), - (0xAA00, 'V'), - (0xAA37, 'X'), - (0xAA40, 'V'), - (0xAA4E, 'X'), - (0xAA50, 'V'), - (0xAA5A, 'X'), - (0xAA5C, 'V'), - (0xAAC3, 'X'), - (0xAADB, 'V'), - (0xAAF7, 'X'), - (0xAB01, 'V'), - (0xAB07, 'X'), - (0xAB09, 'V'), - (0xAB0F, 'X'), - (0xAB11, 'V'), - (0xAB17, 'X'), - (0xAB20, 'V'), - (0xAB27, 'X'), - (0xAB28, 'V'), - (0xAB2F, 'X'), - (0xAB30, 'V'), - (0xAB5C, 'M', 'ꜧ'), - (0xAB5D, 'M', 'ꬷ'), - (0xAB5E, 'M', 'ɫ'), - (0xAB5F, 'M', 'ꭒ'), - (0xAB60, 'V'), - (0xAB69, 'M', 'ʍ'), - (0xAB6A, 'V'), - (0xAB6C, 'X'), - (0xAB70, 'M', 'Ꭰ'), - (0xAB71, 'M', 'Ꭱ'), - (0xAB72, 'M', 'Ꭲ'), - (0xAB73, 'M', 'Ꭳ'), - (0xAB74, 'M', 'Ꭴ'), - (0xAB75, 'M', 'Ꭵ'), - (0xAB76, 'M', 'Ꭶ'), - (0xAB77, 'M', 'Ꭷ'), - (0xAB78, 'M', 'Ꭸ'), - (0xAB79, 'M', 'Ꭹ'), - (0xAB7A, 'M', 'Ꭺ'), - (0xAB7B, 'M', 'Ꭻ'), - (0xAB7C, 'M', 'Ꭼ'), - (0xAB7D, 'M', 'Ꭽ'), - (0xAB7E, 'M', 'Ꭾ'), - (0xAB7F, 'M', 'Ꭿ'), - (0xAB80, 'M', 'Ꮀ'), - (0xAB81, 'M', 'Ꮁ'), - (0xAB82, 'M', 'Ꮂ'), - (0xAB83, 'M', 'Ꮃ'), - (0xAB84, 'M', 'Ꮄ'), - (0xAB85, 'M', 'Ꮅ'), - (0xAB86, 'M', 'Ꮆ'), - (0xAB87, 'M', 'Ꮇ'), - (0xAB88, 'M', 'Ꮈ'), - (0xAB89, 'M', 'Ꮉ'), - (0xAB8A, 'M', 'Ꮊ'), - (0xAB8B, 'M', 'Ꮋ'), - (0xAB8C, 'M', 'Ꮌ'), - (0xAB8D, 'M', 'Ꮍ'), - (0xAB8E, 'M', 'Ꮎ'), - (0xAB8F, 'M', 'Ꮏ'), - (0xAB90, 'M', 'Ꮐ'), - (0xAB91, 'M', 'Ꮑ'), - (0xAB92, 'M', 'Ꮒ'), - (0xAB93, 'M', 'Ꮓ'), - (0xAB94, 'M', 'Ꮔ'), - (0xAB95, 'M', 'Ꮕ'), - (0xAB96, 'M', 'Ꮖ'), - (0xAB97, 'M', 'Ꮗ'), - (0xAB98, 'M', 'Ꮘ'), - (0xAB99, 'M', 'Ꮙ'), - (0xAB9A, 'M', 'Ꮚ'), - (0xAB9B, 'M', 'Ꮛ'), - (0xAB9C, 'M', 'Ꮜ'), - (0xAB9D, 'M', 'Ꮝ'), - (0xAB9E, 'M', 'Ꮞ'), - (0xAB9F, 'M', 'Ꮟ'), - (0xABA0, 'M', 'Ꮠ'), - (0xABA1, 'M', 'Ꮡ'), - (0xABA2, 'M', 'Ꮢ'), - (0xABA3, 'M', 'Ꮣ'), - (0xABA4, 'M', 'Ꮤ'), - (0xABA5, 'M', 'Ꮥ'), - (0xABA6, 'M', 'Ꮦ'), - (0xABA7, 'M', 'Ꮧ'), - (0xABA8, 'M', 'Ꮨ'), - (0xABA9, 'M', 'Ꮩ'), - (0xABAA, 'M', 'Ꮪ'), - (0xABAB, 'M', 'Ꮫ'), - (0xABAC, 'M', 'Ꮬ'), - (0xABAD, 'M', 'Ꮭ'), - (0xABAE, 'M', 'Ꮮ'), - ] - -def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xABAF, 'M', 'Ꮯ'), - (0xABB0, 'M', 'Ꮰ'), - (0xABB1, 'M', 'Ꮱ'), - (0xABB2, 'M', 'Ꮲ'), - (0xABB3, 'M', 'Ꮳ'), - (0xABB4, 'M', 'Ꮴ'), - (0xABB5, 'M', 'Ꮵ'), - (0xABB6, 'M', 'Ꮶ'), - (0xABB7, 'M', 'Ꮷ'), - (0xABB8, 'M', 'Ꮸ'), - (0xABB9, 'M', 'Ꮹ'), - (0xABBA, 'M', 'Ꮺ'), - (0xABBB, 'M', 'Ꮻ'), - (0xABBC, 'M', 'Ꮼ'), - (0xABBD, 'M', 'Ꮽ'), - (0xABBE, 'M', 'Ꮾ'), - (0xABBF, 'M', 'Ꮿ'), - (0xABC0, 'V'), - (0xABEE, 'X'), - (0xABF0, 'V'), - (0xABFA, 'X'), - (0xAC00, 'V'), - (0xD7A4, 'X'), - (0xD7B0, 'V'), - (0xD7C7, 'X'), - (0xD7CB, 'V'), - (0xD7FC, 'X'), - (0xF900, 'M', '豈'), - (0xF901, 'M', '更'), - (0xF902, 'M', '車'), - (0xF903, 'M', '賈'), - (0xF904, 'M', '滑'), - (0xF905, 'M', '串'), - (0xF906, 'M', '句'), - (0xF907, 'M', '龜'), - (0xF909, 'M', '契'), - (0xF90A, 'M', '金'), - (0xF90B, 'M', '喇'), - (0xF90C, 'M', '奈'), - (0xF90D, 'M', '懶'), - (0xF90E, 'M', '癩'), - (0xF90F, 'M', '羅'), - (0xF910, 'M', '蘿'), - (0xF911, 'M', '螺'), - (0xF912, 'M', '裸'), - (0xF913, 'M', '邏'), - (0xF914, 'M', '樂'), - (0xF915, 'M', '洛'), - (0xF916, 'M', '烙'), - (0xF917, 'M', '珞'), - (0xF918, 'M', '落'), - (0xF919, 'M', '酪'), - (0xF91A, 'M', '駱'), - (0xF91B, 'M', '亂'), - (0xF91C, 'M', '卵'), - (0xF91D, 'M', '欄'), - (0xF91E, 'M', '爛'), - (0xF91F, 'M', '蘭'), - (0xF920, 'M', '鸞'), - (0xF921, 'M', '嵐'), - (0xF922, 'M', '濫'), - (0xF923, 'M', '藍'), - (0xF924, 'M', '襤'), - (0xF925, 'M', '拉'), - (0xF926, 'M', '臘'), - (0xF927, 'M', '蠟'), - (0xF928, 'M', '廊'), - (0xF929, 'M', '朗'), - (0xF92A, 'M', '浪'), - (0xF92B, 'M', '狼'), - (0xF92C, 'M', '郎'), - (0xF92D, 'M', '來'), - (0xF92E, 'M', '冷'), - (0xF92F, 'M', '勞'), - (0xF930, 'M', '擄'), - (0xF931, 'M', '櫓'), - (0xF932, 'M', '爐'), - (0xF933, 'M', '盧'), - (0xF934, 'M', '老'), - (0xF935, 'M', '蘆'), - (0xF936, 'M', '虜'), - (0xF937, 'M', '路'), - (0xF938, 'M', '露'), - (0xF939, 'M', '魯'), - (0xF93A, 'M', '鷺'), - (0xF93B, 'M', '碌'), - (0xF93C, 'M', '祿'), - (0xF93D, 'M', '綠'), - (0xF93E, 'M', '菉'), - (0xF93F, 'M', '錄'), - (0xF940, 'M', '鹿'), - (0xF941, 'M', '論'), - (0xF942, 'M', '壟'), - (0xF943, 'M', '弄'), - (0xF944, 'M', '籠'), - (0xF945, 'M', '聾'), - (0xF946, 'M', '牢'), - (0xF947, 'M', '磊'), - (0xF948, 'M', '賂'), - (0xF949, 'M', '雷'), - ] - -def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF94A, 'M', '壘'), - (0xF94B, 'M', '屢'), - (0xF94C, 'M', '樓'), - (0xF94D, 'M', '淚'), - (0xF94E, 'M', '漏'), - (0xF94F, 'M', '累'), - (0xF950, 'M', '縷'), - (0xF951, 'M', '陋'), - (0xF952, 'M', '勒'), - (0xF953, 'M', '肋'), - (0xF954, 'M', '凜'), - (0xF955, 'M', '凌'), - (0xF956, 'M', '稜'), - (0xF957, 'M', '綾'), - (0xF958, 'M', '菱'), - (0xF959, 'M', '陵'), - (0xF95A, 'M', '讀'), - (0xF95B, 'M', '拏'), - (0xF95C, 'M', '樂'), - (0xF95D, 'M', '諾'), - (0xF95E, 'M', '丹'), - (0xF95F, 'M', '寧'), - (0xF960, 'M', '怒'), - (0xF961, 'M', '率'), - (0xF962, 'M', '異'), - (0xF963, 'M', '北'), - (0xF964, 'M', '磻'), - (0xF965, 'M', '便'), - (0xF966, 'M', '復'), - (0xF967, 'M', '不'), - (0xF968, 'M', '泌'), - (0xF969, 'M', '數'), - (0xF96A, 'M', '索'), - (0xF96B, 'M', '參'), - (0xF96C, 'M', '塞'), - (0xF96D, 'M', '省'), - (0xF96E, 'M', '葉'), - (0xF96F, 'M', '說'), - (0xF970, 'M', '殺'), - (0xF971, 'M', '辰'), - (0xF972, 'M', '沈'), - (0xF973, 'M', '拾'), - (0xF974, 'M', '若'), - (0xF975, 'M', '掠'), - (0xF976, 'M', '略'), - (0xF977, 'M', '亮'), - (0xF978, 'M', '兩'), - (0xF979, 'M', '凉'), - (0xF97A, 'M', '梁'), - (0xF97B, 'M', '糧'), - (0xF97C, 'M', '良'), - (0xF97D, 'M', '諒'), - (0xF97E, 'M', '量'), - (0xF97F, 'M', '勵'), - (0xF980, 'M', '呂'), - (0xF981, 'M', '女'), - (0xF982, 'M', '廬'), - (0xF983, 'M', '旅'), - (0xF984, 'M', '濾'), - (0xF985, 'M', '礪'), - (0xF986, 'M', '閭'), - (0xF987, 'M', '驪'), - (0xF988, 'M', '麗'), - (0xF989, 'M', '黎'), - (0xF98A, 'M', '力'), - (0xF98B, 'M', '曆'), - (0xF98C, 'M', '歷'), - (0xF98D, 'M', '轢'), - (0xF98E, 'M', '年'), - (0xF98F, 'M', '憐'), - (0xF990, 'M', '戀'), - (0xF991, 'M', '撚'), - (0xF992, 'M', '漣'), - (0xF993, 'M', '煉'), - (0xF994, 'M', '璉'), - (0xF995, 'M', '秊'), - (0xF996, 'M', '練'), - (0xF997, 'M', '聯'), - (0xF998, 'M', '輦'), - (0xF999, 'M', '蓮'), - (0xF99A, 'M', '連'), - (0xF99B, 'M', '鍊'), - (0xF99C, 'M', '列'), - (0xF99D, 'M', '劣'), - (0xF99E, 'M', '咽'), - (0xF99F, 'M', '烈'), - (0xF9A0, 'M', '裂'), - (0xF9A1, 'M', '說'), - (0xF9A2, 'M', '廉'), - (0xF9A3, 'M', '念'), - (0xF9A4, 'M', '捻'), - (0xF9A5, 'M', '殮'), - (0xF9A6, 'M', '簾'), - (0xF9A7, 'M', '獵'), - (0xF9A8, 'M', '令'), - (0xF9A9, 'M', '囹'), - (0xF9AA, 'M', '寧'), - (0xF9AB, 'M', '嶺'), - (0xF9AC, 'M', '怜'), - (0xF9AD, 'M', '玲'), - ] - -def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF9AE, 'M', '瑩'), - (0xF9AF, 'M', '羚'), - (0xF9B0, 'M', '聆'), - (0xF9B1, 'M', '鈴'), - (0xF9B2, 'M', '零'), - (0xF9B3, 'M', '靈'), - (0xF9B4, 'M', '領'), - (0xF9B5, 'M', '例'), - (0xF9B6, 'M', '禮'), - (0xF9B7, 'M', '醴'), - (0xF9B8, 'M', '隸'), - (0xF9B9, 'M', '惡'), - (0xF9BA, 'M', '了'), - (0xF9BB, 'M', '僚'), - (0xF9BC, 'M', '寮'), - (0xF9BD, 'M', '尿'), - (0xF9BE, 'M', '料'), - (0xF9BF, 'M', '樂'), - (0xF9C0, 'M', '燎'), - (0xF9C1, 'M', '療'), - (0xF9C2, 'M', '蓼'), - (0xF9C3, 'M', '遼'), - (0xF9C4, 'M', '龍'), - (0xF9C5, 'M', '暈'), - (0xF9C6, 'M', '阮'), - (0xF9C7, 'M', '劉'), - (0xF9C8, 'M', '杻'), - (0xF9C9, 'M', '柳'), - (0xF9CA, 'M', '流'), - (0xF9CB, 'M', '溜'), - (0xF9CC, 'M', '琉'), - (0xF9CD, 'M', '留'), - (0xF9CE, 'M', '硫'), - (0xF9CF, 'M', '紐'), - (0xF9D0, 'M', '類'), - (0xF9D1, 'M', '六'), - (0xF9D2, 'M', '戮'), - (0xF9D3, 'M', '陸'), - (0xF9D4, 'M', '倫'), - (0xF9D5, 'M', '崙'), - (0xF9D6, 'M', '淪'), - (0xF9D7, 'M', '輪'), - (0xF9D8, 'M', '律'), - (0xF9D9, 'M', '慄'), - (0xF9DA, 'M', '栗'), - (0xF9DB, 'M', '率'), - (0xF9DC, 'M', '隆'), - (0xF9DD, 'M', '利'), - (0xF9DE, 'M', '吏'), - (0xF9DF, 'M', '履'), - (0xF9E0, 'M', '易'), - (0xF9E1, 'M', '李'), - (0xF9E2, 'M', '梨'), - (0xF9E3, 'M', '泥'), - (0xF9E4, 'M', '理'), - (0xF9E5, 'M', '痢'), - (0xF9E6, 'M', '罹'), - (0xF9E7, 'M', '裏'), - (0xF9E8, 'M', '裡'), - (0xF9E9, 'M', '里'), - (0xF9EA, 'M', '離'), - (0xF9EB, 'M', '匿'), - (0xF9EC, 'M', '溺'), - (0xF9ED, 'M', '吝'), - (0xF9EE, 'M', '燐'), - (0xF9EF, 'M', '璘'), - (0xF9F0, 'M', '藺'), - (0xF9F1, 'M', '隣'), - (0xF9F2, 'M', '鱗'), - (0xF9F3, 'M', '麟'), - (0xF9F4, 'M', '林'), - (0xF9F5, 'M', '淋'), - (0xF9F6, 'M', '臨'), - (0xF9F7, 'M', '立'), - (0xF9F8, 'M', '笠'), - (0xF9F9, 'M', '粒'), - (0xF9FA, 'M', '狀'), - (0xF9FB, 'M', '炙'), - (0xF9FC, 'M', '識'), - (0xF9FD, 'M', '什'), - (0xF9FE, 'M', '茶'), - (0xF9FF, 'M', '刺'), - (0xFA00, 'M', '切'), - (0xFA01, 'M', '度'), - (0xFA02, 'M', '拓'), - (0xFA03, 'M', '糖'), - (0xFA04, 'M', '宅'), - (0xFA05, 'M', '洞'), - (0xFA06, 'M', '暴'), - (0xFA07, 'M', '輻'), - (0xFA08, 'M', '行'), - (0xFA09, 'M', '降'), - (0xFA0A, 'M', '見'), - (0xFA0B, 'M', '廓'), - (0xFA0C, 'M', '兀'), - (0xFA0D, 'M', '嗀'), - (0xFA0E, 'V'), - (0xFA10, 'M', '塚'), - (0xFA11, 'V'), - (0xFA12, 'M', '晴'), - ] - -def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA13, 'V'), - (0xFA15, 'M', '凞'), - (0xFA16, 'M', '猪'), - (0xFA17, 'M', '益'), - (0xFA18, 'M', '礼'), - (0xFA19, 'M', '神'), - (0xFA1A, 'M', '祥'), - (0xFA1B, 'M', '福'), - (0xFA1C, 'M', '靖'), - (0xFA1D, 'M', '精'), - (0xFA1E, 'M', '羽'), - (0xFA1F, 'V'), - (0xFA20, 'M', '蘒'), - (0xFA21, 'V'), - (0xFA22, 'M', '諸'), - (0xFA23, 'V'), - (0xFA25, 'M', '逸'), - (0xFA26, 'M', '都'), - (0xFA27, 'V'), - (0xFA2A, 'M', '飯'), - (0xFA2B, 'M', '飼'), - (0xFA2C, 'M', '館'), - (0xFA2D, 'M', '鶴'), - (0xFA2E, 'M', '郞'), - (0xFA2F, 'M', '隷'), - (0xFA30, 'M', '侮'), - (0xFA31, 'M', '僧'), - (0xFA32, 'M', '免'), - (0xFA33, 'M', '勉'), - (0xFA34, 'M', '勤'), - (0xFA35, 'M', '卑'), - (0xFA36, 'M', '喝'), - (0xFA37, 'M', '嘆'), - (0xFA38, 'M', '器'), - (0xFA39, 'M', '塀'), - (0xFA3A, 'M', '墨'), - (0xFA3B, 'M', '層'), - (0xFA3C, 'M', '屮'), - (0xFA3D, 'M', '悔'), - (0xFA3E, 'M', '慨'), - (0xFA3F, 'M', '憎'), - (0xFA40, 'M', '懲'), - (0xFA41, 'M', '敏'), - (0xFA42, 'M', '既'), - (0xFA43, 'M', '暑'), - (0xFA44, 'M', '梅'), - (0xFA45, 'M', '海'), - (0xFA46, 'M', '渚'), - (0xFA47, 'M', '漢'), - (0xFA48, 'M', '煮'), - (0xFA49, 'M', '爫'), - (0xFA4A, 'M', '琢'), - (0xFA4B, 'M', '碑'), - (0xFA4C, 'M', '社'), - (0xFA4D, 'M', '祉'), - (0xFA4E, 'M', '祈'), - (0xFA4F, 'M', '祐'), - (0xFA50, 'M', '祖'), - (0xFA51, 'M', '祝'), - (0xFA52, 'M', '禍'), - (0xFA53, 'M', '禎'), - (0xFA54, 'M', '穀'), - (0xFA55, 'M', '突'), - (0xFA56, 'M', '節'), - (0xFA57, 'M', '練'), - (0xFA58, 'M', '縉'), - (0xFA59, 'M', '繁'), - (0xFA5A, 'M', '署'), - (0xFA5B, 'M', '者'), - (0xFA5C, 'M', '臭'), - (0xFA5D, 'M', '艹'), - (0xFA5F, 'M', '著'), - (0xFA60, 'M', '褐'), - (0xFA61, 'M', '視'), - (0xFA62, 'M', '謁'), - (0xFA63, 'M', '謹'), - (0xFA64, 'M', '賓'), - (0xFA65, 'M', '贈'), - (0xFA66, 'M', '辶'), - (0xFA67, 'M', '逸'), - (0xFA68, 'M', '難'), - (0xFA69, 'M', '響'), - (0xFA6A, 'M', '頻'), - (0xFA6B, 'M', '恵'), - (0xFA6C, 'M', '𤋮'), - (0xFA6D, 'M', '舘'), - (0xFA6E, 'X'), - (0xFA70, 'M', '並'), - (0xFA71, 'M', '况'), - (0xFA72, 'M', '全'), - (0xFA73, 'M', '侀'), - (0xFA74, 'M', '充'), - (0xFA75, 'M', '冀'), - (0xFA76, 'M', '勇'), - (0xFA77, 'M', '勺'), - (0xFA78, 'M', '喝'), - (0xFA79, 'M', '啕'), - (0xFA7A, 'M', '喙'), - (0xFA7B, 'M', '嗢'), - (0xFA7C, 'M', '塚'), - ] - -def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA7D, 'M', '墳'), - (0xFA7E, 'M', '奄'), - (0xFA7F, 'M', '奔'), - (0xFA80, 'M', '婢'), - (0xFA81, 'M', '嬨'), - (0xFA82, 'M', '廒'), - (0xFA83, 'M', '廙'), - (0xFA84, 'M', '彩'), - (0xFA85, 'M', '徭'), - (0xFA86, 'M', '惘'), - (0xFA87, 'M', '慎'), - (0xFA88, 'M', '愈'), - (0xFA89, 'M', '憎'), - (0xFA8A, 'M', '慠'), - (0xFA8B, 'M', '懲'), - (0xFA8C, 'M', '戴'), - (0xFA8D, 'M', '揄'), - (0xFA8E, 'M', '搜'), - (0xFA8F, 'M', '摒'), - (0xFA90, 'M', '敖'), - (0xFA91, 'M', '晴'), - (0xFA92, 'M', '朗'), - (0xFA93, 'M', '望'), - (0xFA94, 'M', '杖'), - (0xFA95, 'M', '歹'), - (0xFA96, 'M', '殺'), - (0xFA97, 'M', '流'), - (0xFA98, 'M', '滛'), - (0xFA99, 'M', '滋'), - (0xFA9A, 'M', '漢'), - (0xFA9B, 'M', '瀞'), - (0xFA9C, 'M', '煮'), - (0xFA9D, 'M', '瞧'), - (0xFA9E, 'M', '爵'), - (0xFA9F, 'M', '犯'), - (0xFAA0, 'M', '猪'), - (0xFAA1, 'M', '瑱'), - (0xFAA2, 'M', '甆'), - (0xFAA3, 'M', '画'), - (0xFAA4, 'M', '瘝'), - (0xFAA5, 'M', '瘟'), - (0xFAA6, 'M', '益'), - (0xFAA7, 'M', '盛'), - (0xFAA8, 'M', '直'), - (0xFAA9, 'M', '睊'), - (0xFAAA, 'M', '着'), - (0xFAAB, 'M', '磌'), - (0xFAAC, 'M', '窱'), - (0xFAAD, 'M', '節'), - (0xFAAE, 'M', '类'), - (0xFAAF, 'M', '絛'), - (0xFAB0, 'M', '練'), - (0xFAB1, 'M', '缾'), - (0xFAB2, 'M', '者'), - (0xFAB3, 'M', '荒'), - (0xFAB4, 'M', '華'), - (0xFAB5, 'M', '蝹'), - (0xFAB6, 'M', '襁'), - (0xFAB7, 'M', '覆'), - (0xFAB8, 'M', '視'), - (0xFAB9, 'M', '調'), - (0xFABA, 'M', '諸'), - (0xFABB, 'M', '請'), - (0xFABC, 'M', '謁'), - (0xFABD, 'M', '諾'), - (0xFABE, 'M', '諭'), - (0xFABF, 'M', '謹'), - (0xFAC0, 'M', '變'), - (0xFAC1, 'M', '贈'), - (0xFAC2, 'M', '輸'), - (0xFAC3, 'M', '遲'), - (0xFAC4, 'M', '醙'), - (0xFAC5, 'M', '鉶'), - (0xFAC6, 'M', '陼'), - (0xFAC7, 'M', '難'), - (0xFAC8, 'M', '靖'), - (0xFAC9, 'M', '韛'), - (0xFACA, 'M', '響'), - (0xFACB, 'M', '頋'), - (0xFACC, 'M', '頻'), - (0xFACD, 'M', '鬒'), - (0xFACE, 'M', '龜'), - (0xFACF, 'M', '𢡊'), - (0xFAD0, 'M', '𢡄'), - (0xFAD1, 'M', '𣏕'), - (0xFAD2, 'M', '㮝'), - (0xFAD3, 'M', '䀘'), - (0xFAD4, 'M', '䀹'), - (0xFAD5, 'M', '𥉉'), - (0xFAD6, 'M', '𥳐'), - (0xFAD7, 'M', '𧻓'), - (0xFAD8, 'M', '齃'), - (0xFAD9, 'M', '龎'), - (0xFADA, 'X'), - (0xFB00, 'M', 'ff'), - (0xFB01, 'M', 'fi'), - (0xFB02, 'M', 'fl'), - (0xFB03, 'M', 'ffi'), - (0xFB04, 'M', 'ffl'), - (0xFB05, 'M', 'st'), - ] - -def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFB07, 'X'), - (0xFB13, 'M', 'մն'), - (0xFB14, 'M', 'մե'), - (0xFB15, 'M', 'մի'), - (0xFB16, 'M', 'վն'), - (0xFB17, 'M', 'մխ'), - (0xFB18, 'X'), - (0xFB1D, 'M', 'יִ'), - (0xFB1E, 'V'), - (0xFB1F, 'M', 'ײַ'), - (0xFB20, 'M', 'ע'), - (0xFB21, 'M', 'א'), - (0xFB22, 'M', 'ד'), - (0xFB23, 'M', 'ה'), - (0xFB24, 'M', 'כ'), - (0xFB25, 'M', 'ל'), - (0xFB26, 'M', 'ם'), - (0xFB27, 'M', 'ר'), - (0xFB28, 'M', 'ת'), - (0xFB29, '3', '+'), - (0xFB2A, 'M', 'שׁ'), - (0xFB2B, 'M', 'שׂ'), - (0xFB2C, 'M', 'שּׁ'), - (0xFB2D, 'M', 'שּׂ'), - (0xFB2E, 'M', 'אַ'), - (0xFB2F, 'M', 'אָ'), - (0xFB30, 'M', 'אּ'), - (0xFB31, 'M', 'בּ'), - (0xFB32, 'M', 'גּ'), - (0xFB33, 'M', 'דּ'), - (0xFB34, 'M', 'הּ'), - (0xFB35, 'M', 'וּ'), - (0xFB36, 'M', 'זּ'), - (0xFB37, 'X'), - (0xFB38, 'M', 'טּ'), - (0xFB39, 'M', 'יּ'), - (0xFB3A, 'M', 'ךּ'), - (0xFB3B, 'M', 'כּ'), - (0xFB3C, 'M', 'לּ'), - (0xFB3D, 'X'), - (0xFB3E, 'M', 'מּ'), - (0xFB3F, 'X'), - (0xFB40, 'M', 'נּ'), - (0xFB41, 'M', 'סּ'), - (0xFB42, 'X'), - (0xFB43, 'M', 'ףּ'), - (0xFB44, 'M', 'פּ'), - (0xFB45, 'X'), - (0xFB46, 'M', 'צּ'), - (0xFB47, 'M', 'קּ'), - (0xFB48, 'M', 'רּ'), - (0xFB49, 'M', 'שּ'), - (0xFB4A, 'M', 'תּ'), - (0xFB4B, 'M', 'וֹ'), - (0xFB4C, 'M', 'בֿ'), - (0xFB4D, 'M', 'כֿ'), - (0xFB4E, 'M', 'פֿ'), - (0xFB4F, 'M', 'אל'), - (0xFB50, 'M', 'ٱ'), - (0xFB52, 'M', 'ٻ'), - (0xFB56, 'M', 'پ'), - (0xFB5A, 'M', 'ڀ'), - (0xFB5E, 'M', 'ٺ'), - (0xFB62, 'M', 'ٿ'), - (0xFB66, 'M', 'ٹ'), - (0xFB6A, 'M', 'ڤ'), - (0xFB6E, 'M', 'ڦ'), - (0xFB72, 'M', 'ڄ'), - (0xFB76, 'M', 'ڃ'), - (0xFB7A, 'M', 'چ'), - (0xFB7E, 'M', 'ڇ'), - (0xFB82, 'M', 'ڍ'), - (0xFB84, 'M', 'ڌ'), - (0xFB86, 'M', 'ڎ'), - (0xFB88, 'M', 'ڈ'), - (0xFB8A, 'M', 'ژ'), - (0xFB8C, 'M', 'ڑ'), - (0xFB8E, 'M', 'ک'), - (0xFB92, 'M', 'گ'), - (0xFB96, 'M', 'ڳ'), - (0xFB9A, 'M', 'ڱ'), - (0xFB9E, 'M', 'ں'), - (0xFBA0, 'M', 'ڻ'), - (0xFBA4, 'M', 'ۀ'), - (0xFBA6, 'M', 'ہ'), - (0xFBAA, 'M', 'ھ'), - (0xFBAE, 'M', 'ے'), - (0xFBB0, 'M', 'ۓ'), - (0xFBB2, 'V'), - (0xFBC3, 'X'), - (0xFBD3, 'M', 'ڭ'), - (0xFBD7, 'M', 'ۇ'), - (0xFBD9, 'M', 'ۆ'), - (0xFBDB, 'M', 'ۈ'), - (0xFBDD, 'M', 'ۇٴ'), - (0xFBDE, 'M', 'ۋ'), - (0xFBE0, 'M', 'ۅ'), - (0xFBE2, 'M', 'ۉ'), - (0xFBE4, 'M', 'ې'), - (0xFBE8, 'M', 'ى'), - ] - -def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFBEA, 'M', 'ئا'), - (0xFBEC, 'M', 'ئە'), - (0xFBEE, 'M', 'ئو'), - (0xFBF0, 'M', 'ئۇ'), - (0xFBF2, 'M', 'ئۆ'), - (0xFBF4, 'M', 'ئۈ'), - (0xFBF6, 'M', 'ئې'), - (0xFBF9, 'M', 'ئى'), - (0xFBFC, 'M', 'ی'), - (0xFC00, 'M', 'ئج'), - (0xFC01, 'M', 'ئح'), - (0xFC02, 'M', 'ئم'), - (0xFC03, 'M', 'ئى'), - (0xFC04, 'M', 'ئي'), - (0xFC05, 'M', 'بج'), - (0xFC06, 'M', 'بح'), - (0xFC07, 'M', 'بخ'), - (0xFC08, 'M', 'بم'), - (0xFC09, 'M', 'بى'), - (0xFC0A, 'M', 'بي'), - (0xFC0B, 'M', 'تج'), - (0xFC0C, 'M', 'تح'), - (0xFC0D, 'M', 'تخ'), - (0xFC0E, 'M', 'تم'), - (0xFC0F, 'M', 'تى'), - (0xFC10, 'M', 'تي'), - (0xFC11, 'M', 'ثج'), - (0xFC12, 'M', 'ثم'), - (0xFC13, 'M', 'ثى'), - (0xFC14, 'M', 'ثي'), - (0xFC15, 'M', 'جح'), - (0xFC16, 'M', 'جم'), - (0xFC17, 'M', 'حج'), - (0xFC18, 'M', 'حم'), - (0xFC19, 'M', 'خج'), - (0xFC1A, 'M', 'خح'), - (0xFC1B, 'M', 'خم'), - (0xFC1C, 'M', 'سج'), - (0xFC1D, 'M', 'سح'), - (0xFC1E, 'M', 'سخ'), - (0xFC1F, 'M', 'سم'), - (0xFC20, 'M', 'صح'), - (0xFC21, 'M', 'صم'), - (0xFC22, 'M', 'ضج'), - (0xFC23, 'M', 'ضح'), - (0xFC24, 'M', 'ضخ'), - (0xFC25, 'M', 'ضم'), - (0xFC26, 'M', 'طح'), - (0xFC27, 'M', 'طم'), - (0xFC28, 'M', 'ظم'), - (0xFC29, 'M', 'عج'), - (0xFC2A, 'M', 'عم'), - (0xFC2B, 'M', 'غج'), - (0xFC2C, 'M', 'غم'), - (0xFC2D, 'M', 'فج'), - (0xFC2E, 'M', 'فح'), - (0xFC2F, 'M', 'فخ'), - (0xFC30, 'M', 'فم'), - (0xFC31, 'M', 'فى'), - (0xFC32, 'M', 'في'), - (0xFC33, 'M', 'قح'), - (0xFC34, 'M', 'قم'), - (0xFC35, 'M', 'قى'), - (0xFC36, 'M', 'قي'), - (0xFC37, 'M', 'كا'), - (0xFC38, 'M', 'كج'), - (0xFC39, 'M', 'كح'), - (0xFC3A, 'M', 'كخ'), - (0xFC3B, 'M', 'كل'), - (0xFC3C, 'M', 'كم'), - (0xFC3D, 'M', 'كى'), - (0xFC3E, 'M', 'كي'), - (0xFC3F, 'M', 'لج'), - (0xFC40, 'M', 'لح'), - (0xFC41, 'M', 'لخ'), - (0xFC42, 'M', 'لم'), - (0xFC43, 'M', 'لى'), - (0xFC44, 'M', 'لي'), - (0xFC45, 'M', 'مج'), - (0xFC46, 'M', 'مح'), - (0xFC47, 'M', 'مخ'), - (0xFC48, 'M', 'مم'), - (0xFC49, 'M', 'مى'), - (0xFC4A, 'M', 'مي'), - (0xFC4B, 'M', 'نج'), - (0xFC4C, 'M', 'نح'), - (0xFC4D, 'M', 'نخ'), - (0xFC4E, 'M', 'نم'), - (0xFC4F, 'M', 'نى'), - (0xFC50, 'M', 'ني'), - (0xFC51, 'M', 'هج'), - (0xFC52, 'M', 'هم'), - (0xFC53, 'M', 'هى'), - (0xFC54, 'M', 'هي'), - (0xFC55, 'M', 'يج'), - (0xFC56, 'M', 'يح'), - (0xFC57, 'M', 'يخ'), - (0xFC58, 'M', 'يم'), - (0xFC59, 'M', 'يى'), - (0xFC5A, 'M', 'يي'), - ] - -def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFC5B, 'M', 'ذٰ'), - (0xFC5C, 'M', 'رٰ'), - (0xFC5D, 'M', 'ىٰ'), - (0xFC5E, '3', ' ٌّ'), - (0xFC5F, '3', ' ٍّ'), - (0xFC60, '3', ' َّ'), - (0xFC61, '3', ' ُّ'), - (0xFC62, '3', ' ِّ'), - (0xFC63, '3', ' ّٰ'), - (0xFC64, 'M', 'ئر'), - (0xFC65, 'M', 'ئز'), - (0xFC66, 'M', 'ئم'), - (0xFC67, 'M', 'ئن'), - (0xFC68, 'M', 'ئى'), - (0xFC69, 'M', 'ئي'), - (0xFC6A, 'M', 'بر'), - (0xFC6B, 'M', 'بز'), - (0xFC6C, 'M', 'بم'), - (0xFC6D, 'M', 'بن'), - (0xFC6E, 'M', 'بى'), - (0xFC6F, 'M', 'بي'), - (0xFC70, 'M', 'تر'), - (0xFC71, 'M', 'تز'), - (0xFC72, 'M', 'تم'), - (0xFC73, 'M', 'تن'), - (0xFC74, 'M', 'تى'), - (0xFC75, 'M', 'تي'), - (0xFC76, 'M', 'ثر'), - (0xFC77, 'M', 'ثز'), - (0xFC78, 'M', 'ثم'), - (0xFC79, 'M', 'ثن'), - (0xFC7A, 'M', 'ثى'), - (0xFC7B, 'M', 'ثي'), - (0xFC7C, 'M', 'فى'), - (0xFC7D, 'M', 'في'), - (0xFC7E, 'M', 'قى'), - (0xFC7F, 'M', 'قي'), - (0xFC80, 'M', 'كا'), - (0xFC81, 'M', 'كل'), - (0xFC82, 'M', 'كم'), - (0xFC83, 'M', 'كى'), - (0xFC84, 'M', 'كي'), - (0xFC85, 'M', 'لم'), - (0xFC86, 'M', 'لى'), - (0xFC87, 'M', 'لي'), - (0xFC88, 'M', 'ما'), - (0xFC89, 'M', 'مم'), - (0xFC8A, 'M', 'نر'), - (0xFC8B, 'M', 'نز'), - (0xFC8C, 'M', 'نم'), - (0xFC8D, 'M', 'نن'), - (0xFC8E, 'M', 'نى'), - (0xFC8F, 'M', 'ني'), - (0xFC90, 'M', 'ىٰ'), - (0xFC91, 'M', 'ير'), - (0xFC92, 'M', 'يز'), - (0xFC93, 'M', 'يم'), - (0xFC94, 'M', 'ين'), - (0xFC95, 'M', 'يى'), - (0xFC96, 'M', 'يي'), - (0xFC97, 'M', 'ئج'), - (0xFC98, 'M', 'ئح'), - (0xFC99, 'M', 'ئخ'), - (0xFC9A, 'M', 'ئم'), - (0xFC9B, 'M', 'ئه'), - (0xFC9C, 'M', 'بج'), - (0xFC9D, 'M', 'بح'), - (0xFC9E, 'M', 'بخ'), - (0xFC9F, 'M', 'بم'), - (0xFCA0, 'M', 'به'), - (0xFCA1, 'M', 'تج'), - (0xFCA2, 'M', 'تح'), - (0xFCA3, 'M', 'تخ'), - (0xFCA4, 'M', 'تم'), - (0xFCA5, 'M', 'ته'), - (0xFCA6, 'M', 'ثم'), - (0xFCA7, 'M', 'جح'), - (0xFCA8, 'M', 'جم'), - (0xFCA9, 'M', 'حج'), - (0xFCAA, 'M', 'حم'), - (0xFCAB, 'M', 'خج'), - (0xFCAC, 'M', 'خم'), - (0xFCAD, 'M', 'سج'), - (0xFCAE, 'M', 'سح'), - (0xFCAF, 'M', 'سخ'), - (0xFCB0, 'M', 'سم'), - (0xFCB1, 'M', 'صح'), - (0xFCB2, 'M', 'صخ'), - (0xFCB3, 'M', 'صم'), - (0xFCB4, 'M', 'ضج'), - (0xFCB5, 'M', 'ضح'), - (0xFCB6, 'M', 'ضخ'), - (0xFCB7, 'M', 'ضم'), - (0xFCB8, 'M', 'طح'), - (0xFCB9, 'M', 'ظم'), - (0xFCBA, 'M', 'عج'), - (0xFCBB, 'M', 'عم'), - (0xFCBC, 'M', 'غج'), - (0xFCBD, 'M', 'غم'), - (0xFCBE, 'M', 'فج'), - ] - -def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFCBF, 'M', 'فح'), - (0xFCC0, 'M', 'فخ'), - (0xFCC1, 'M', 'فم'), - (0xFCC2, 'M', 'قح'), - (0xFCC3, 'M', 'قم'), - (0xFCC4, 'M', 'كج'), - (0xFCC5, 'M', 'كح'), - (0xFCC6, 'M', 'كخ'), - (0xFCC7, 'M', 'كل'), - (0xFCC8, 'M', 'كم'), - (0xFCC9, 'M', 'لج'), - (0xFCCA, 'M', 'لح'), - (0xFCCB, 'M', 'لخ'), - (0xFCCC, 'M', 'لم'), - (0xFCCD, 'M', 'له'), - (0xFCCE, 'M', 'مج'), - (0xFCCF, 'M', 'مح'), - (0xFCD0, 'M', 'مخ'), - (0xFCD1, 'M', 'مم'), - (0xFCD2, 'M', 'نج'), - (0xFCD3, 'M', 'نح'), - (0xFCD4, 'M', 'نخ'), - (0xFCD5, 'M', 'نم'), - (0xFCD6, 'M', 'نه'), - (0xFCD7, 'M', 'هج'), - (0xFCD8, 'M', 'هم'), - (0xFCD9, 'M', 'هٰ'), - (0xFCDA, 'M', 'يج'), - (0xFCDB, 'M', 'يح'), - (0xFCDC, 'M', 'يخ'), - (0xFCDD, 'M', 'يم'), - (0xFCDE, 'M', 'يه'), - (0xFCDF, 'M', 'ئم'), - (0xFCE0, 'M', 'ئه'), - (0xFCE1, 'M', 'بم'), - (0xFCE2, 'M', 'به'), - (0xFCE3, 'M', 'تم'), - (0xFCE4, 'M', 'ته'), - (0xFCE5, 'M', 'ثم'), - (0xFCE6, 'M', 'ثه'), - (0xFCE7, 'M', 'سم'), - (0xFCE8, 'M', 'سه'), - (0xFCE9, 'M', 'شم'), - (0xFCEA, 'M', 'شه'), - (0xFCEB, 'M', 'كل'), - (0xFCEC, 'M', 'كم'), - (0xFCED, 'M', 'لم'), - (0xFCEE, 'M', 'نم'), - (0xFCEF, 'M', 'نه'), - (0xFCF0, 'M', 'يم'), - (0xFCF1, 'M', 'يه'), - (0xFCF2, 'M', 'ـَّ'), - (0xFCF3, 'M', 'ـُّ'), - (0xFCF4, 'M', 'ـِّ'), - (0xFCF5, 'M', 'طى'), - (0xFCF6, 'M', 'طي'), - (0xFCF7, 'M', 'عى'), - (0xFCF8, 'M', 'عي'), - (0xFCF9, 'M', 'غى'), - (0xFCFA, 'M', 'غي'), - (0xFCFB, 'M', 'سى'), - (0xFCFC, 'M', 'سي'), - (0xFCFD, 'M', 'شى'), - (0xFCFE, 'M', 'شي'), - (0xFCFF, 'M', 'حى'), - (0xFD00, 'M', 'حي'), - (0xFD01, 'M', 'جى'), - (0xFD02, 'M', 'جي'), - (0xFD03, 'M', 'خى'), - (0xFD04, 'M', 'خي'), - (0xFD05, 'M', 'صى'), - (0xFD06, 'M', 'صي'), - (0xFD07, 'M', 'ضى'), - (0xFD08, 'M', 'ضي'), - (0xFD09, 'M', 'شج'), - (0xFD0A, 'M', 'شح'), - (0xFD0B, 'M', 'شخ'), - (0xFD0C, 'M', 'شم'), - (0xFD0D, 'M', 'شر'), - (0xFD0E, 'M', 'سر'), - (0xFD0F, 'M', 'صر'), - (0xFD10, 'M', 'ضر'), - (0xFD11, 'M', 'طى'), - (0xFD12, 'M', 'طي'), - (0xFD13, 'M', 'عى'), - (0xFD14, 'M', 'عي'), - (0xFD15, 'M', 'غى'), - (0xFD16, 'M', 'غي'), - (0xFD17, 'M', 'سى'), - (0xFD18, 'M', 'سي'), - (0xFD19, 'M', 'شى'), - (0xFD1A, 'M', 'شي'), - (0xFD1B, 'M', 'حى'), - (0xFD1C, 'M', 'حي'), - (0xFD1D, 'M', 'جى'), - (0xFD1E, 'M', 'جي'), - (0xFD1F, 'M', 'خى'), - (0xFD20, 'M', 'خي'), - (0xFD21, 'M', 'صى'), - (0xFD22, 'M', 'صي'), - ] - -def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFD23, 'M', 'ضى'), - (0xFD24, 'M', 'ضي'), - (0xFD25, 'M', 'شج'), - (0xFD26, 'M', 'شح'), - (0xFD27, 'M', 'شخ'), - (0xFD28, 'M', 'شم'), - (0xFD29, 'M', 'شر'), - (0xFD2A, 'M', 'سر'), - (0xFD2B, 'M', 'صر'), - (0xFD2C, 'M', 'ضر'), - (0xFD2D, 'M', 'شج'), - (0xFD2E, 'M', 'شح'), - (0xFD2F, 'M', 'شخ'), - (0xFD30, 'M', 'شم'), - (0xFD31, 'M', 'سه'), - (0xFD32, 'M', 'شه'), - (0xFD33, 'M', 'طم'), - (0xFD34, 'M', 'سج'), - (0xFD35, 'M', 'سح'), - (0xFD36, 'M', 'سخ'), - (0xFD37, 'M', 'شج'), - (0xFD38, 'M', 'شح'), - (0xFD39, 'M', 'شخ'), - (0xFD3A, 'M', 'طم'), - (0xFD3B, 'M', 'ظم'), - (0xFD3C, 'M', 'اً'), - (0xFD3E, 'V'), - (0xFD50, 'M', 'تجم'), - (0xFD51, 'M', 'تحج'), - (0xFD53, 'M', 'تحم'), - (0xFD54, 'M', 'تخم'), - (0xFD55, 'M', 'تمج'), - (0xFD56, 'M', 'تمح'), - (0xFD57, 'M', 'تمخ'), - (0xFD58, 'M', 'جمح'), - (0xFD5A, 'M', 'حمي'), - (0xFD5B, 'M', 'حمى'), - (0xFD5C, 'M', 'سحج'), - (0xFD5D, 'M', 'سجح'), - (0xFD5E, 'M', 'سجى'), - (0xFD5F, 'M', 'سمح'), - (0xFD61, 'M', 'سمج'), - (0xFD62, 'M', 'سمم'), - (0xFD64, 'M', 'صحح'), - (0xFD66, 'M', 'صمم'), - (0xFD67, 'M', 'شحم'), - (0xFD69, 'M', 'شجي'), - (0xFD6A, 'M', 'شمخ'), - (0xFD6C, 'M', 'شمم'), - (0xFD6E, 'M', 'ضحى'), - (0xFD6F, 'M', 'ضخم'), - (0xFD71, 'M', 'طمح'), - (0xFD73, 'M', 'طمم'), - (0xFD74, 'M', 'طمي'), - (0xFD75, 'M', 'عجم'), - (0xFD76, 'M', 'عمم'), - (0xFD78, 'M', 'عمى'), - (0xFD79, 'M', 'غمم'), - (0xFD7A, 'M', 'غمي'), - (0xFD7B, 'M', 'غمى'), - (0xFD7C, 'M', 'فخم'), - (0xFD7E, 'M', 'قمح'), - (0xFD7F, 'M', 'قمم'), - (0xFD80, 'M', 'لحم'), - (0xFD81, 'M', 'لحي'), - (0xFD82, 'M', 'لحى'), - (0xFD83, 'M', 'لجج'), - (0xFD85, 'M', 'لخم'), - (0xFD87, 'M', 'لمح'), - (0xFD89, 'M', 'محج'), - (0xFD8A, 'M', 'محم'), - (0xFD8B, 'M', 'محي'), - (0xFD8C, 'M', 'مجح'), - (0xFD8D, 'M', 'مجم'), - (0xFD8E, 'M', 'مخج'), - (0xFD8F, 'M', 'مخم'), - (0xFD90, 'X'), - (0xFD92, 'M', 'مجخ'), - (0xFD93, 'M', 'همج'), - (0xFD94, 'M', 'همم'), - (0xFD95, 'M', 'نحم'), - (0xFD96, 'M', 'نحى'), - (0xFD97, 'M', 'نجم'), - (0xFD99, 'M', 'نجى'), - (0xFD9A, 'M', 'نمي'), - (0xFD9B, 'M', 'نمى'), - (0xFD9C, 'M', 'يمم'), - (0xFD9E, 'M', 'بخي'), - (0xFD9F, 'M', 'تجي'), - (0xFDA0, 'M', 'تجى'), - (0xFDA1, 'M', 'تخي'), - (0xFDA2, 'M', 'تخى'), - (0xFDA3, 'M', 'تمي'), - (0xFDA4, 'M', 'تمى'), - (0xFDA5, 'M', 'جمي'), - (0xFDA6, 'M', 'جحى'), - (0xFDA7, 'M', 'جمى'), - (0xFDA8, 'M', 'سخى'), - (0xFDA9, 'M', 'صحي'), - (0xFDAA, 'M', 'شحي'), - ] - -def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFDAB, 'M', 'ضحي'), - (0xFDAC, 'M', 'لجي'), - (0xFDAD, 'M', 'لمي'), - (0xFDAE, 'M', 'يحي'), - (0xFDAF, 'M', 'يجي'), - (0xFDB0, 'M', 'يمي'), - (0xFDB1, 'M', 'ممي'), - (0xFDB2, 'M', 'قمي'), - (0xFDB3, 'M', 'نحي'), - (0xFDB4, 'M', 'قمح'), - (0xFDB5, 'M', 'لحم'), - (0xFDB6, 'M', 'عمي'), - (0xFDB7, 'M', 'كمي'), - (0xFDB8, 'M', 'نجح'), - (0xFDB9, 'M', 'مخي'), - (0xFDBA, 'M', 'لجم'), - (0xFDBB, 'M', 'كمم'), - (0xFDBC, 'M', 'لجم'), - (0xFDBD, 'M', 'نجح'), - (0xFDBE, 'M', 'جحي'), - (0xFDBF, 'M', 'حجي'), - (0xFDC0, 'M', 'مجي'), - (0xFDC1, 'M', 'فمي'), - (0xFDC2, 'M', 'بحي'), - (0xFDC3, 'M', 'كمم'), - (0xFDC4, 'M', 'عجم'), - (0xFDC5, 'M', 'صمم'), - (0xFDC6, 'M', 'سخي'), - (0xFDC7, 'M', 'نجي'), - (0xFDC8, 'X'), - (0xFDCF, 'V'), - (0xFDD0, 'X'), - (0xFDF0, 'M', 'صلے'), - (0xFDF1, 'M', 'قلے'), - (0xFDF2, 'M', 'الله'), - (0xFDF3, 'M', 'اكبر'), - (0xFDF4, 'M', 'محمد'), - (0xFDF5, 'M', 'صلعم'), - (0xFDF6, 'M', 'رسول'), - (0xFDF7, 'M', 'عليه'), - (0xFDF8, 'M', 'وسلم'), - (0xFDF9, 'M', 'صلى'), - (0xFDFA, '3', 'صلى الله عليه وسلم'), - (0xFDFB, '3', 'جل جلاله'), - (0xFDFC, 'M', 'ریال'), - (0xFDFD, 'V'), - (0xFE00, 'I'), - (0xFE10, '3', ','), - (0xFE11, 'M', '、'), - (0xFE12, 'X'), - (0xFE13, '3', ':'), - (0xFE14, '3', ';'), - (0xFE15, '3', '!'), - (0xFE16, '3', '?'), - (0xFE17, 'M', '〖'), - (0xFE18, 'M', '〗'), - (0xFE19, 'X'), - (0xFE20, 'V'), - (0xFE30, 'X'), - (0xFE31, 'M', '—'), - (0xFE32, 'M', '–'), - (0xFE33, '3', '_'), - (0xFE35, '3', '('), - (0xFE36, '3', ')'), - (0xFE37, '3', '{'), - (0xFE38, '3', '}'), - (0xFE39, 'M', '〔'), - (0xFE3A, 'M', '〕'), - (0xFE3B, 'M', '【'), - (0xFE3C, 'M', '】'), - (0xFE3D, 'M', '《'), - (0xFE3E, 'M', '》'), - (0xFE3F, 'M', '〈'), - (0xFE40, 'M', '〉'), - (0xFE41, 'M', '「'), - (0xFE42, 'M', '」'), - (0xFE43, 'M', '『'), - (0xFE44, 'M', '』'), - (0xFE45, 'V'), - (0xFE47, '3', '['), - (0xFE48, '3', ']'), - (0xFE49, '3', ' ̅'), - (0xFE4D, '3', '_'), - (0xFE50, '3', ','), - (0xFE51, 'M', '、'), - (0xFE52, 'X'), - (0xFE54, '3', ';'), - (0xFE55, '3', ':'), - (0xFE56, '3', '?'), - (0xFE57, '3', '!'), - (0xFE58, 'M', '—'), - (0xFE59, '3', '('), - (0xFE5A, '3', ')'), - (0xFE5B, '3', '{'), - (0xFE5C, '3', '}'), - (0xFE5D, 'M', '〔'), - (0xFE5E, 'M', '〕'), - (0xFE5F, '3', '#'), - (0xFE60, '3', '&'), - (0xFE61, '3', '*'), - ] - -def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFE62, '3', '+'), - (0xFE63, 'M', '-'), - (0xFE64, '3', '<'), - (0xFE65, '3', '>'), - (0xFE66, '3', '='), - (0xFE67, 'X'), - (0xFE68, '3', '\\'), - (0xFE69, '3', '$'), - (0xFE6A, '3', '%'), - (0xFE6B, '3', '@'), - (0xFE6C, 'X'), - (0xFE70, '3', ' ً'), - (0xFE71, 'M', 'ـً'), - (0xFE72, '3', ' ٌ'), - (0xFE73, 'V'), - (0xFE74, '3', ' ٍ'), - (0xFE75, 'X'), - (0xFE76, '3', ' َ'), - (0xFE77, 'M', 'ـَ'), - (0xFE78, '3', ' ُ'), - (0xFE79, 'M', 'ـُ'), - (0xFE7A, '3', ' ِ'), - (0xFE7B, 'M', 'ـِ'), - (0xFE7C, '3', ' ّ'), - (0xFE7D, 'M', 'ـّ'), - (0xFE7E, '3', ' ْ'), - (0xFE7F, 'M', 'ـْ'), - (0xFE80, 'M', 'ء'), - (0xFE81, 'M', 'آ'), - (0xFE83, 'M', 'أ'), - (0xFE85, 'M', 'ؤ'), - (0xFE87, 'M', 'إ'), - (0xFE89, 'M', 'ئ'), - (0xFE8D, 'M', 'ا'), - (0xFE8F, 'M', 'ب'), - (0xFE93, 'M', 'ة'), - (0xFE95, 'M', 'ت'), - (0xFE99, 'M', 'ث'), - (0xFE9D, 'M', 'ج'), - (0xFEA1, 'M', 'ح'), - (0xFEA5, 'M', 'خ'), - (0xFEA9, 'M', 'د'), - (0xFEAB, 'M', 'ذ'), - (0xFEAD, 'M', 'ر'), - (0xFEAF, 'M', 'ز'), - (0xFEB1, 'M', 'س'), - (0xFEB5, 'M', 'ش'), - (0xFEB9, 'M', 'ص'), - (0xFEBD, 'M', 'ض'), - (0xFEC1, 'M', 'ط'), - (0xFEC5, 'M', 'ظ'), - (0xFEC9, 'M', 'ع'), - (0xFECD, 'M', 'غ'), - (0xFED1, 'M', 'ف'), - (0xFED5, 'M', 'ق'), - (0xFED9, 'M', 'ك'), - (0xFEDD, 'M', 'ل'), - (0xFEE1, 'M', 'م'), - (0xFEE5, 'M', 'ن'), - (0xFEE9, 'M', 'ه'), - (0xFEED, 'M', 'و'), - (0xFEEF, 'M', 'ى'), - (0xFEF1, 'M', 'ي'), - (0xFEF5, 'M', 'لآ'), - (0xFEF7, 'M', 'لأ'), - (0xFEF9, 'M', 'لإ'), - (0xFEFB, 'M', 'لا'), - (0xFEFD, 'X'), - (0xFEFF, 'I'), - (0xFF00, 'X'), - (0xFF01, '3', '!'), - (0xFF02, '3', '"'), - (0xFF03, '3', '#'), - (0xFF04, '3', '$'), - (0xFF05, '3', '%'), - (0xFF06, '3', '&'), - (0xFF07, '3', '\''), - (0xFF08, '3', '('), - (0xFF09, '3', ')'), - (0xFF0A, '3', '*'), - (0xFF0B, '3', '+'), - (0xFF0C, '3', ','), - (0xFF0D, 'M', '-'), - (0xFF0E, 'M', '.'), - (0xFF0F, '3', '/'), - (0xFF10, 'M', '0'), - (0xFF11, 'M', '1'), - (0xFF12, 'M', '2'), - (0xFF13, 'M', '3'), - (0xFF14, 'M', '4'), - (0xFF15, 'M', '5'), - (0xFF16, 'M', '6'), - (0xFF17, 'M', '7'), - (0xFF18, 'M', '8'), - (0xFF19, 'M', '9'), - (0xFF1A, '3', ':'), - (0xFF1B, '3', ';'), - (0xFF1C, '3', '<'), - (0xFF1D, '3', '='), - (0xFF1E, '3', '>'), - ] - -def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF1F, '3', '?'), - (0xFF20, '3', '@'), - (0xFF21, 'M', 'a'), - (0xFF22, 'M', 'b'), - (0xFF23, 'M', 'c'), - (0xFF24, 'M', 'd'), - (0xFF25, 'M', 'e'), - (0xFF26, 'M', 'f'), - (0xFF27, 'M', 'g'), - (0xFF28, 'M', 'h'), - (0xFF29, 'M', 'i'), - (0xFF2A, 'M', 'j'), - (0xFF2B, 'M', 'k'), - (0xFF2C, 'M', 'l'), - (0xFF2D, 'M', 'm'), - (0xFF2E, 'M', 'n'), - (0xFF2F, 'M', 'o'), - (0xFF30, 'M', 'p'), - (0xFF31, 'M', 'q'), - (0xFF32, 'M', 'r'), - (0xFF33, 'M', 's'), - (0xFF34, 'M', 't'), - (0xFF35, 'M', 'u'), - (0xFF36, 'M', 'v'), - (0xFF37, 'M', 'w'), - (0xFF38, 'M', 'x'), - (0xFF39, 'M', 'y'), - (0xFF3A, 'M', 'z'), - (0xFF3B, '3', '['), - (0xFF3C, '3', '\\'), - (0xFF3D, '3', ']'), - (0xFF3E, '3', '^'), - (0xFF3F, '3', '_'), - (0xFF40, '3', '`'), - (0xFF41, 'M', 'a'), - (0xFF42, 'M', 'b'), - (0xFF43, 'M', 'c'), - (0xFF44, 'M', 'd'), - (0xFF45, 'M', 'e'), - (0xFF46, 'M', 'f'), - (0xFF47, 'M', 'g'), - (0xFF48, 'M', 'h'), - (0xFF49, 'M', 'i'), - (0xFF4A, 'M', 'j'), - (0xFF4B, 'M', 'k'), - (0xFF4C, 'M', 'l'), - (0xFF4D, 'M', 'm'), - (0xFF4E, 'M', 'n'), - (0xFF4F, 'M', 'o'), - (0xFF50, 'M', 'p'), - (0xFF51, 'M', 'q'), - (0xFF52, 'M', 'r'), - (0xFF53, 'M', 's'), - (0xFF54, 'M', 't'), - (0xFF55, 'M', 'u'), - (0xFF56, 'M', 'v'), - (0xFF57, 'M', 'w'), - (0xFF58, 'M', 'x'), - (0xFF59, 'M', 'y'), - (0xFF5A, 'M', 'z'), - (0xFF5B, '3', '{'), - (0xFF5C, '3', '|'), - (0xFF5D, '3', '}'), - (0xFF5E, '3', '~'), - (0xFF5F, 'M', '⦅'), - (0xFF60, 'M', '⦆'), - (0xFF61, 'M', '.'), - (0xFF62, 'M', '「'), - (0xFF63, 'M', '」'), - (0xFF64, 'M', '、'), - (0xFF65, 'M', '・'), - (0xFF66, 'M', 'ヲ'), - (0xFF67, 'M', 'ァ'), - (0xFF68, 'M', 'ィ'), - (0xFF69, 'M', 'ゥ'), - (0xFF6A, 'M', 'ェ'), - (0xFF6B, 'M', 'ォ'), - (0xFF6C, 'M', 'ャ'), - (0xFF6D, 'M', 'ュ'), - (0xFF6E, 'M', 'ョ'), - (0xFF6F, 'M', 'ッ'), - (0xFF70, 'M', 'ー'), - (0xFF71, 'M', 'ア'), - (0xFF72, 'M', 'イ'), - (0xFF73, 'M', 'ウ'), - (0xFF74, 'M', 'エ'), - (0xFF75, 'M', 'オ'), - (0xFF76, 'M', 'カ'), - (0xFF77, 'M', 'キ'), - (0xFF78, 'M', 'ク'), - (0xFF79, 'M', 'ケ'), - (0xFF7A, 'M', 'コ'), - (0xFF7B, 'M', 'サ'), - (0xFF7C, 'M', 'シ'), - (0xFF7D, 'M', 'ス'), - (0xFF7E, 'M', 'セ'), - (0xFF7F, 'M', 'ソ'), - (0xFF80, 'M', 'タ'), - (0xFF81, 'M', 'チ'), - (0xFF82, 'M', 'ツ'), - ] - -def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF83, 'M', 'テ'), - (0xFF84, 'M', 'ト'), - (0xFF85, 'M', 'ナ'), - (0xFF86, 'M', 'ニ'), - (0xFF87, 'M', 'ヌ'), - (0xFF88, 'M', 'ネ'), - (0xFF89, 'M', 'ノ'), - (0xFF8A, 'M', 'ハ'), - (0xFF8B, 'M', 'ヒ'), - (0xFF8C, 'M', 'フ'), - (0xFF8D, 'M', 'ヘ'), - (0xFF8E, 'M', 'ホ'), - (0xFF8F, 'M', 'マ'), - (0xFF90, 'M', 'ミ'), - (0xFF91, 'M', 'ム'), - (0xFF92, 'M', 'メ'), - (0xFF93, 'M', 'モ'), - (0xFF94, 'M', 'ヤ'), - (0xFF95, 'M', 'ユ'), - (0xFF96, 'M', 'ヨ'), - (0xFF97, 'M', 'ラ'), - (0xFF98, 'M', 'リ'), - (0xFF99, 'M', 'ル'), - (0xFF9A, 'M', 'レ'), - (0xFF9B, 'M', 'ロ'), - (0xFF9C, 'M', 'ワ'), - (0xFF9D, 'M', 'ン'), - (0xFF9E, 'M', '゙'), - (0xFF9F, 'M', '゚'), - (0xFFA0, 'X'), - (0xFFA1, 'M', 'ᄀ'), - (0xFFA2, 'M', 'ᄁ'), - (0xFFA3, 'M', 'ᆪ'), - (0xFFA4, 'M', 'ᄂ'), - (0xFFA5, 'M', 'ᆬ'), - (0xFFA6, 'M', 'ᆭ'), - (0xFFA7, 'M', 'ᄃ'), - (0xFFA8, 'M', 'ᄄ'), - (0xFFA9, 'M', 'ᄅ'), - (0xFFAA, 'M', 'ᆰ'), - (0xFFAB, 'M', 'ᆱ'), - (0xFFAC, 'M', 'ᆲ'), - (0xFFAD, 'M', 'ᆳ'), - (0xFFAE, 'M', 'ᆴ'), - (0xFFAF, 'M', 'ᆵ'), - (0xFFB0, 'M', 'ᄚ'), - (0xFFB1, 'M', 'ᄆ'), - (0xFFB2, 'M', 'ᄇ'), - (0xFFB3, 'M', 'ᄈ'), - (0xFFB4, 'M', 'ᄡ'), - (0xFFB5, 'M', 'ᄉ'), - (0xFFB6, 'M', 'ᄊ'), - (0xFFB7, 'M', 'ᄋ'), - (0xFFB8, 'M', 'ᄌ'), - (0xFFB9, 'M', 'ᄍ'), - (0xFFBA, 'M', 'ᄎ'), - (0xFFBB, 'M', 'ᄏ'), - (0xFFBC, 'M', 'ᄐ'), - (0xFFBD, 'M', 'ᄑ'), - (0xFFBE, 'M', 'ᄒ'), - (0xFFBF, 'X'), - (0xFFC2, 'M', 'ᅡ'), - (0xFFC3, 'M', 'ᅢ'), - (0xFFC4, 'M', 'ᅣ'), - (0xFFC5, 'M', 'ᅤ'), - (0xFFC6, 'M', 'ᅥ'), - (0xFFC7, 'M', 'ᅦ'), - (0xFFC8, 'X'), - (0xFFCA, 'M', 'ᅧ'), - (0xFFCB, 'M', 'ᅨ'), - (0xFFCC, 'M', 'ᅩ'), - (0xFFCD, 'M', 'ᅪ'), - (0xFFCE, 'M', 'ᅫ'), - (0xFFCF, 'M', 'ᅬ'), - (0xFFD0, 'X'), - (0xFFD2, 'M', 'ᅭ'), - (0xFFD3, 'M', 'ᅮ'), - (0xFFD4, 'M', 'ᅯ'), - (0xFFD5, 'M', 'ᅰ'), - (0xFFD6, 'M', 'ᅱ'), - (0xFFD7, 'M', 'ᅲ'), - (0xFFD8, 'X'), - (0xFFDA, 'M', 'ᅳ'), - (0xFFDB, 'M', 'ᅴ'), - (0xFFDC, 'M', 'ᅵ'), - (0xFFDD, 'X'), - (0xFFE0, 'M', '¢'), - (0xFFE1, 'M', '£'), - (0xFFE2, 'M', '¬'), - (0xFFE3, '3', ' ̄'), - (0xFFE4, 'M', '¦'), - (0xFFE5, 'M', '¥'), - (0xFFE6, 'M', '₩'), - (0xFFE7, 'X'), - (0xFFE8, 'M', '│'), - (0xFFE9, 'M', '←'), - (0xFFEA, 'M', '↑'), - (0xFFEB, 'M', '→'), - (0xFFEC, 'M', '↓'), - (0xFFED, 'M', '■'), - ] - -def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFFEE, 'M', '○'), - (0xFFEF, 'X'), - (0x10000, 'V'), - (0x1000C, 'X'), - (0x1000D, 'V'), - (0x10027, 'X'), - (0x10028, 'V'), - (0x1003B, 'X'), - (0x1003C, 'V'), - (0x1003E, 'X'), - (0x1003F, 'V'), - (0x1004E, 'X'), - (0x10050, 'V'), - (0x1005E, 'X'), - (0x10080, 'V'), - (0x100FB, 'X'), - (0x10100, 'V'), - (0x10103, 'X'), - (0x10107, 'V'), - (0x10134, 'X'), - (0x10137, 'V'), - (0x1018F, 'X'), - (0x10190, 'V'), - (0x1019D, 'X'), - (0x101A0, 'V'), - (0x101A1, 'X'), - (0x101D0, 'V'), - (0x101FE, 'X'), - (0x10280, 'V'), - (0x1029D, 'X'), - (0x102A0, 'V'), - (0x102D1, 'X'), - (0x102E0, 'V'), - (0x102FC, 'X'), - (0x10300, 'V'), - (0x10324, 'X'), - (0x1032D, 'V'), - (0x1034B, 'X'), - (0x10350, 'V'), - (0x1037B, 'X'), - (0x10380, 'V'), - (0x1039E, 'X'), - (0x1039F, 'V'), - (0x103C4, 'X'), - (0x103C8, 'V'), - (0x103D6, 'X'), - (0x10400, 'M', '𐐨'), - (0x10401, 'M', '𐐩'), - (0x10402, 'M', '𐐪'), - (0x10403, 'M', '𐐫'), - (0x10404, 'M', '𐐬'), - (0x10405, 'M', '𐐭'), - (0x10406, 'M', '𐐮'), - (0x10407, 'M', '𐐯'), - (0x10408, 'M', '𐐰'), - (0x10409, 'M', '𐐱'), - (0x1040A, 'M', '𐐲'), - (0x1040B, 'M', '𐐳'), - (0x1040C, 'M', '𐐴'), - (0x1040D, 'M', '𐐵'), - (0x1040E, 'M', '𐐶'), - (0x1040F, 'M', '𐐷'), - (0x10410, 'M', '𐐸'), - (0x10411, 'M', '𐐹'), - (0x10412, 'M', '𐐺'), - (0x10413, 'M', '𐐻'), - (0x10414, 'M', '𐐼'), - (0x10415, 'M', '𐐽'), - (0x10416, 'M', '𐐾'), - (0x10417, 'M', '𐐿'), - (0x10418, 'M', '𐑀'), - (0x10419, 'M', '𐑁'), - (0x1041A, 'M', '𐑂'), - (0x1041B, 'M', '𐑃'), - (0x1041C, 'M', '𐑄'), - (0x1041D, 'M', '𐑅'), - (0x1041E, 'M', '𐑆'), - (0x1041F, 'M', '𐑇'), - (0x10420, 'M', '𐑈'), - (0x10421, 'M', '𐑉'), - (0x10422, 'M', '𐑊'), - (0x10423, 'M', '𐑋'), - (0x10424, 'M', '𐑌'), - (0x10425, 'M', '𐑍'), - (0x10426, 'M', '𐑎'), - (0x10427, 'M', '𐑏'), - (0x10428, 'V'), - (0x1049E, 'X'), - (0x104A0, 'V'), - (0x104AA, 'X'), - (0x104B0, 'M', '𐓘'), - (0x104B1, 'M', '𐓙'), - (0x104B2, 'M', '𐓚'), - (0x104B3, 'M', '𐓛'), - (0x104B4, 'M', '𐓜'), - (0x104B5, 'M', '𐓝'), - (0x104B6, 'M', '𐓞'), - (0x104B7, 'M', '𐓟'), - (0x104B8, 'M', '𐓠'), - (0x104B9, 'M', '𐓡'), - ] - -def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x104BA, 'M', '𐓢'), - (0x104BB, 'M', '𐓣'), - (0x104BC, 'M', '𐓤'), - (0x104BD, 'M', '𐓥'), - (0x104BE, 'M', '𐓦'), - (0x104BF, 'M', '𐓧'), - (0x104C0, 'M', '𐓨'), - (0x104C1, 'M', '𐓩'), - (0x104C2, 'M', '𐓪'), - (0x104C3, 'M', '𐓫'), - (0x104C4, 'M', '𐓬'), - (0x104C5, 'M', '𐓭'), - (0x104C6, 'M', '𐓮'), - (0x104C7, 'M', '𐓯'), - (0x104C8, 'M', '𐓰'), - (0x104C9, 'M', '𐓱'), - (0x104CA, 'M', '𐓲'), - (0x104CB, 'M', '𐓳'), - (0x104CC, 'M', '𐓴'), - (0x104CD, 'M', '𐓵'), - (0x104CE, 'M', '𐓶'), - (0x104CF, 'M', '𐓷'), - (0x104D0, 'M', '𐓸'), - (0x104D1, 'M', '𐓹'), - (0x104D2, 'M', '𐓺'), - (0x104D3, 'M', '𐓻'), - (0x104D4, 'X'), - (0x104D8, 'V'), - (0x104FC, 'X'), - (0x10500, 'V'), - (0x10528, 'X'), - (0x10530, 'V'), - (0x10564, 'X'), - (0x1056F, 'V'), - (0x10570, 'M', '𐖗'), - (0x10571, 'M', '𐖘'), - (0x10572, 'M', '𐖙'), - (0x10573, 'M', '𐖚'), - (0x10574, 'M', '𐖛'), - (0x10575, 'M', '𐖜'), - (0x10576, 'M', '𐖝'), - (0x10577, 'M', '𐖞'), - (0x10578, 'M', '𐖟'), - (0x10579, 'M', '𐖠'), - (0x1057A, 'M', '𐖡'), - (0x1057B, 'X'), - (0x1057C, 'M', '𐖣'), - (0x1057D, 'M', '𐖤'), - (0x1057E, 'M', '𐖥'), - (0x1057F, 'M', '𐖦'), - (0x10580, 'M', '𐖧'), - (0x10581, 'M', '𐖨'), - (0x10582, 'M', '𐖩'), - (0x10583, 'M', '𐖪'), - (0x10584, 'M', '𐖫'), - (0x10585, 'M', '𐖬'), - (0x10586, 'M', '𐖭'), - (0x10587, 'M', '𐖮'), - (0x10588, 'M', '𐖯'), - (0x10589, 'M', '𐖰'), - (0x1058A, 'M', '𐖱'), - (0x1058B, 'X'), - (0x1058C, 'M', '𐖳'), - (0x1058D, 'M', '𐖴'), - (0x1058E, 'M', '𐖵'), - (0x1058F, 'M', '𐖶'), - (0x10590, 'M', '𐖷'), - (0x10591, 'M', '𐖸'), - (0x10592, 'M', '𐖹'), - (0x10593, 'X'), - (0x10594, 'M', '𐖻'), - (0x10595, 'M', '𐖼'), - (0x10596, 'X'), - (0x10597, 'V'), - (0x105A2, 'X'), - (0x105A3, 'V'), - (0x105B2, 'X'), - (0x105B3, 'V'), - (0x105BA, 'X'), - (0x105BB, 'V'), - (0x105BD, 'X'), - (0x10600, 'V'), - (0x10737, 'X'), - (0x10740, 'V'), - (0x10756, 'X'), - (0x10760, 'V'), - (0x10768, 'X'), - (0x10780, 'V'), - (0x10781, 'M', 'ː'), - (0x10782, 'M', 'ˑ'), - (0x10783, 'M', 'æ'), - (0x10784, 'M', 'ʙ'), - (0x10785, 'M', 'ɓ'), - (0x10786, 'X'), - (0x10787, 'M', 'ʣ'), - (0x10788, 'M', 'ꭦ'), - (0x10789, 'M', 'ʥ'), - (0x1078A, 'M', 'ʤ'), - (0x1078B, 'M', 'ɖ'), - (0x1078C, 'M', 'ɗ'), - ] - -def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1078D, 'M', 'ᶑ'), - (0x1078E, 'M', 'ɘ'), - (0x1078F, 'M', 'ɞ'), - (0x10790, 'M', 'ʩ'), - (0x10791, 'M', 'ɤ'), - (0x10792, 'M', 'ɢ'), - (0x10793, 'M', 'ɠ'), - (0x10794, 'M', 'ʛ'), - (0x10795, 'M', 'ħ'), - (0x10796, 'M', 'ʜ'), - (0x10797, 'M', 'ɧ'), - (0x10798, 'M', 'ʄ'), - (0x10799, 'M', 'ʪ'), - (0x1079A, 'M', 'ʫ'), - (0x1079B, 'M', 'ɬ'), - (0x1079C, 'M', '𝼄'), - (0x1079D, 'M', 'ꞎ'), - (0x1079E, 'M', 'ɮ'), - (0x1079F, 'M', '𝼅'), - (0x107A0, 'M', 'ʎ'), - (0x107A1, 'M', '𝼆'), - (0x107A2, 'M', 'ø'), - (0x107A3, 'M', 'ɶ'), - (0x107A4, 'M', 'ɷ'), - (0x107A5, 'M', 'q'), - (0x107A6, 'M', 'ɺ'), - (0x107A7, 'M', '𝼈'), - (0x107A8, 'M', 'ɽ'), - (0x107A9, 'M', 'ɾ'), - (0x107AA, 'M', 'ʀ'), - (0x107AB, 'M', 'ʨ'), - (0x107AC, 'M', 'ʦ'), - (0x107AD, 'M', 'ꭧ'), - (0x107AE, 'M', 'ʧ'), - (0x107AF, 'M', 'ʈ'), - (0x107B0, 'M', 'ⱱ'), - (0x107B1, 'X'), - (0x107B2, 'M', 'ʏ'), - (0x107B3, 'M', 'ʡ'), - (0x107B4, 'M', 'ʢ'), - (0x107B5, 'M', 'ʘ'), - (0x107B6, 'M', 'ǀ'), - (0x107B7, 'M', 'ǁ'), - (0x107B8, 'M', 'ǂ'), - (0x107B9, 'M', '𝼊'), - (0x107BA, 'M', '𝼞'), - (0x107BB, 'X'), - (0x10800, 'V'), - (0x10806, 'X'), - (0x10808, 'V'), - (0x10809, 'X'), - (0x1080A, 'V'), - (0x10836, 'X'), - (0x10837, 'V'), - (0x10839, 'X'), - (0x1083C, 'V'), - (0x1083D, 'X'), - (0x1083F, 'V'), - (0x10856, 'X'), - (0x10857, 'V'), - (0x1089F, 'X'), - (0x108A7, 'V'), - (0x108B0, 'X'), - (0x108E0, 'V'), - (0x108F3, 'X'), - (0x108F4, 'V'), - (0x108F6, 'X'), - (0x108FB, 'V'), - (0x1091C, 'X'), - (0x1091F, 'V'), - (0x1093A, 'X'), - (0x1093F, 'V'), - (0x10940, 'X'), - (0x10980, 'V'), - (0x109B8, 'X'), - (0x109BC, 'V'), - (0x109D0, 'X'), - (0x109D2, 'V'), - (0x10A04, 'X'), - (0x10A05, 'V'), - (0x10A07, 'X'), - (0x10A0C, 'V'), - (0x10A14, 'X'), - (0x10A15, 'V'), - (0x10A18, 'X'), - (0x10A19, 'V'), - (0x10A36, 'X'), - (0x10A38, 'V'), - (0x10A3B, 'X'), - (0x10A3F, 'V'), - (0x10A49, 'X'), - (0x10A50, 'V'), - (0x10A59, 'X'), - (0x10A60, 'V'), - (0x10AA0, 'X'), - (0x10AC0, 'V'), - (0x10AE7, 'X'), - (0x10AEB, 'V'), - (0x10AF7, 'X'), - (0x10B00, 'V'), - ] - -def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x10B36, 'X'), - (0x10B39, 'V'), - (0x10B56, 'X'), - (0x10B58, 'V'), - (0x10B73, 'X'), - (0x10B78, 'V'), - (0x10B92, 'X'), - (0x10B99, 'V'), - (0x10B9D, 'X'), - (0x10BA9, 'V'), - (0x10BB0, 'X'), - (0x10C00, 'V'), - (0x10C49, 'X'), - (0x10C80, 'M', '𐳀'), - (0x10C81, 'M', '𐳁'), - (0x10C82, 'M', '𐳂'), - (0x10C83, 'M', '𐳃'), - (0x10C84, 'M', '𐳄'), - (0x10C85, 'M', '𐳅'), - (0x10C86, 'M', '𐳆'), - (0x10C87, 'M', '𐳇'), - (0x10C88, 'M', '𐳈'), - (0x10C89, 'M', '𐳉'), - (0x10C8A, 'M', '𐳊'), - (0x10C8B, 'M', '𐳋'), - (0x10C8C, 'M', '𐳌'), - (0x10C8D, 'M', '𐳍'), - (0x10C8E, 'M', '𐳎'), - (0x10C8F, 'M', '𐳏'), - (0x10C90, 'M', '𐳐'), - (0x10C91, 'M', '𐳑'), - (0x10C92, 'M', '𐳒'), - (0x10C93, 'M', '𐳓'), - (0x10C94, 'M', '𐳔'), - (0x10C95, 'M', '𐳕'), - (0x10C96, 'M', '𐳖'), - (0x10C97, 'M', '𐳗'), - (0x10C98, 'M', '𐳘'), - (0x10C99, 'M', '𐳙'), - (0x10C9A, 'M', '𐳚'), - (0x10C9B, 'M', '𐳛'), - (0x10C9C, 'M', '𐳜'), - (0x10C9D, 'M', '𐳝'), - (0x10C9E, 'M', '𐳞'), - (0x10C9F, 'M', '𐳟'), - (0x10CA0, 'M', '𐳠'), - (0x10CA1, 'M', '𐳡'), - (0x10CA2, 'M', '𐳢'), - (0x10CA3, 'M', '𐳣'), - (0x10CA4, 'M', '𐳤'), - (0x10CA5, 'M', '𐳥'), - (0x10CA6, 'M', '𐳦'), - (0x10CA7, 'M', '𐳧'), - (0x10CA8, 'M', '𐳨'), - (0x10CA9, 'M', '𐳩'), - (0x10CAA, 'M', '𐳪'), - (0x10CAB, 'M', '𐳫'), - (0x10CAC, 'M', '𐳬'), - (0x10CAD, 'M', '𐳭'), - (0x10CAE, 'M', '𐳮'), - (0x10CAF, 'M', '𐳯'), - (0x10CB0, 'M', '𐳰'), - (0x10CB1, 'M', '𐳱'), - (0x10CB2, 'M', '𐳲'), - (0x10CB3, 'X'), - (0x10CC0, 'V'), - (0x10CF3, 'X'), - (0x10CFA, 'V'), - (0x10D28, 'X'), - (0x10D30, 'V'), - (0x10D3A, 'X'), - (0x10E60, 'V'), - (0x10E7F, 'X'), - (0x10E80, 'V'), - (0x10EAA, 'X'), - (0x10EAB, 'V'), - (0x10EAE, 'X'), - (0x10EB0, 'V'), - (0x10EB2, 'X'), - (0x10EFD, 'V'), - (0x10F28, 'X'), - (0x10F30, 'V'), - (0x10F5A, 'X'), - (0x10F70, 'V'), - (0x10F8A, 'X'), - (0x10FB0, 'V'), - (0x10FCC, 'X'), - (0x10FE0, 'V'), - (0x10FF7, 'X'), - (0x11000, 'V'), - (0x1104E, 'X'), - (0x11052, 'V'), - (0x11076, 'X'), - (0x1107F, 'V'), - (0x110BD, 'X'), - (0x110BE, 'V'), - (0x110C3, 'X'), - (0x110D0, 'V'), - (0x110E9, 'X'), - (0x110F0, 'V'), - ] - -def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x110FA, 'X'), - (0x11100, 'V'), - (0x11135, 'X'), - (0x11136, 'V'), - (0x11148, 'X'), - (0x11150, 'V'), - (0x11177, 'X'), - (0x11180, 'V'), - (0x111E0, 'X'), - (0x111E1, 'V'), - (0x111F5, 'X'), - (0x11200, 'V'), - (0x11212, 'X'), - (0x11213, 'V'), - (0x11242, 'X'), - (0x11280, 'V'), - (0x11287, 'X'), - (0x11288, 'V'), - (0x11289, 'X'), - (0x1128A, 'V'), - (0x1128E, 'X'), - (0x1128F, 'V'), - (0x1129E, 'X'), - (0x1129F, 'V'), - (0x112AA, 'X'), - (0x112B0, 'V'), - (0x112EB, 'X'), - (0x112F0, 'V'), - (0x112FA, 'X'), - (0x11300, 'V'), - (0x11304, 'X'), - (0x11305, 'V'), - (0x1130D, 'X'), - (0x1130F, 'V'), - (0x11311, 'X'), - (0x11313, 'V'), - (0x11329, 'X'), - (0x1132A, 'V'), - (0x11331, 'X'), - (0x11332, 'V'), - (0x11334, 'X'), - (0x11335, 'V'), - (0x1133A, 'X'), - (0x1133B, 'V'), - (0x11345, 'X'), - (0x11347, 'V'), - (0x11349, 'X'), - (0x1134B, 'V'), - (0x1134E, 'X'), - (0x11350, 'V'), - (0x11351, 'X'), - (0x11357, 'V'), - (0x11358, 'X'), - (0x1135D, 'V'), - (0x11364, 'X'), - (0x11366, 'V'), - (0x1136D, 'X'), - (0x11370, 'V'), - (0x11375, 'X'), - (0x11400, 'V'), - (0x1145C, 'X'), - (0x1145D, 'V'), - (0x11462, 'X'), - (0x11480, 'V'), - (0x114C8, 'X'), - (0x114D0, 'V'), - (0x114DA, 'X'), - (0x11580, 'V'), - (0x115B6, 'X'), - (0x115B8, 'V'), - (0x115DE, 'X'), - (0x11600, 'V'), - (0x11645, 'X'), - (0x11650, 'V'), - (0x1165A, 'X'), - (0x11660, 'V'), - (0x1166D, 'X'), - (0x11680, 'V'), - (0x116BA, 'X'), - (0x116C0, 'V'), - (0x116CA, 'X'), - (0x11700, 'V'), - (0x1171B, 'X'), - (0x1171D, 'V'), - (0x1172C, 'X'), - (0x11730, 'V'), - (0x11747, 'X'), - (0x11800, 'V'), - (0x1183C, 'X'), - (0x118A0, 'M', '𑣀'), - (0x118A1, 'M', '𑣁'), - (0x118A2, 'M', '𑣂'), - (0x118A3, 'M', '𑣃'), - (0x118A4, 'M', '𑣄'), - (0x118A5, 'M', '𑣅'), - (0x118A6, 'M', '𑣆'), - (0x118A7, 'M', '𑣇'), - (0x118A8, 'M', '𑣈'), - (0x118A9, 'M', '𑣉'), - (0x118AA, 'M', '𑣊'), - ] - -def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x118AB, 'M', '𑣋'), - (0x118AC, 'M', '𑣌'), - (0x118AD, 'M', '𑣍'), - (0x118AE, 'M', '𑣎'), - (0x118AF, 'M', '𑣏'), - (0x118B0, 'M', '𑣐'), - (0x118B1, 'M', '𑣑'), - (0x118B2, 'M', '𑣒'), - (0x118B3, 'M', '𑣓'), - (0x118B4, 'M', '𑣔'), - (0x118B5, 'M', '𑣕'), - (0x118B6, 'M', '𑣖'), - (0x118B7, 'M', '𑣗'), - (0x118B8, 'M', '𑣘'), - (0x118B9, 'M', '𑣙'), - (0x118BA, 'M', '𑣚'), - (0x118BB, 'M', '𑣛'), - (0x118BC, 'M', '𑣜'), - (0x118BD, 'M', '𑣝'), - (0x118BE, 'M', '𑣞'), - (0x118BF, 'M', '𑣟'), - (0x118C0, 'V'), - (0x118F3, 'X'), - (0x118FF, 'V'), - (0x11907, 'X'), - (0x11909, 'V'), - (0x1190A, 'X'), - (0x1190C, 'V'), - (0x11914, 'X'), - (0x11915, 'V'), - (0x11917, 'X'), - (0x11918, 'V'), - (0x11936, 'X'), - (0x11937, 'V'), - (0x11939, 'X'), - (0x1193B, 'V'), - (0x11947, 'X'), - (0x11950, 'V'), - (0x1195A, 'X'), - (0x119A0, 'V'), - (0x119A8, 'X'), - (0x119AA, 'V'), - (0x119D8, 'X'), - (0x119DA, 'V'), - (0x119E5, 'X'), - (0x11A00, 'V'), - (0x11A48, 'X'), - (0x11A50, 'V'), - (0x11AA3, 'X'), - (0x11AB0, 'V'), - (0x11AF9, 'X'), - (0x11B00, 'V'), - (0x11B0A, 'X'), - (0x11C00, 'V'), - (0x11C09, 'X'), - (0x11C0A, 'V'), - (0x11C37, 'X'), - (0x11C38, 'V'), - (0x11C46, 'X'), - (0x11C50, 'V'), - (0x11C6D, 'X'), - (0x11C70, 'V'), - (0x11C90, 'X'), - (0x11C92, 'V'), - (0x11CA8, 'X'), - (0x11CA9, 'V'), - (0x11CB7, 'X'), - (0x11D00, 'V'), - (0x11D07, 'X'), - (0x11D08, 'V'), - (0x11D0A, 'X'), - (0x11D0B, 'V'), - (0x11D37, 'X'), - (0x11D3A, 'V'), - (0x11D3B, 'X'), - (0x11D3C, 'V'), - (0x11D3E, 'X'), - (0x11D3F, 'V'), - (0x11D48, 'X'), - (0x11D50, 'V'), - (0x11D5A, 'X'), - (0x11D60, 'V'), - (0x11D66, 'X'), - (0x11D67, 'V'), - (0x11D69, 'X'), - (0x11D6A, 'V'), - (0x11D8F, 'X'), - (0x11D90, 'V'), - (0x11D92, 'X'), - (0x11D93, 'V'), - (0x11D99, 'X'), - (0x11DA0, 'V'), - (0x11DAA, 'X'), - (0x11EE0, 'V'), - (0x11EF9, 'X'), - (0x11F00, 'V'), - (0x11F11, 'X'), - (0x11F12, 'V'), - (0x11F3B, 'X'), - (0x11F3E, 'V'), - ] - -def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x11F5A, 'X'), - (0x11FB0, 'V'), - (0x11FB1, 'X'), - (0x11FC0, 'V'), - (0x11FF2, 'X'), - (0x11FFF, 'V'), - (0x1239A, 'X'), - (0x12400, 'V'), - (0x1246F, 'X'), - (0x12470, 'V'), - (0x12475, 'X'), - (0x12480, 'V'), - (0x12544, 'X'), - (0x12F90, 'V'), - (0x12FF3, 'X'), - (0x13000, 'V'), - (0x13430, 'X'), - (0x13440, 'V'), - (0x13456, 'X'), - (0x14400, 'V'), - (0x14647, 'X'), - (0x16800, 'V'), - (0x16A39, 'X'), - (0x16A40, 'V'), - (0x16A5F, 'X'), - (0x16A60, 'V'), - (0x16A6A, 'X'), - (0x16A6E, 'V'), - (0x16ABF, 'X'), - (0x16AC0, 'V'), - (0x16ACA, 'X'), - (0x16AD0, 'V'), - (0x16AEE, 'X'), - (0x16AF0, 'V'), - (0x16AF6, 'X'), - (0x16B00, 'V'), - (0x16B46, 'X'), - (0x16B50, 'V'), - (0x16B5A, 'X'), - (0x16B5B, 'V'), - (0x16B62, 'X'), - (0x16B63, 'V'), - (0x16B78, 'X'), - (0x16B7D, 'V'), - (0x16B90, 'X'), - (0x16E40, 'M', '𖹠'), - (0x16E41, 'M', '𖹡'), - (0x16E42, 'M', '𖹢'), - (0x16E43, 'M', '𖹣'), - (0x16E44, 'M', '𖹤'), - (0x16E45, 'M', '𖹥'), - (0x16E46, 'M', '𖹦'), - (0x16E47, 'M', '𖹧'), - (0x16E48, 'M', '𖹨'), - (0x16E49, 'M', '𖹩'), - (0x16E4A, 'M', '𖹪'), - (0x16E4B, 'M', '𖹫'), - (0x16E4C, 'M', '𖹬'), - (0x16E4D, 'M', '𖹭'), - (0x16E4E, 'M', '𖹮'), - (0x16E4F, 'M', '𖹯'), - (0x16E50, 'M', '𖹰'), - (0x16E51, 'M', '𖹱'), - (0x16E52, 'M', '𖹲'), - (0x16E53, 'M', '𖹳'), - (0x16E54, 'M', '𖹴'), - (0x16E55, 'M', '𖹵'), - (0x16E56, 'M', '𖹶'), - (0x16E57, 'M', '𖹷'), - (0x16E58, 'M', '𖹸'), - (0x16E59, 'M', '𖹹'), - (0x16E5A, 'M', '𖹺'), - (0x16E5B, 'M', '𖹻'), - (0x16E5C, 'M', '𖹼'), - (0x16E5D, 'M', '𖹽'), - (0x16E5E, 'M', '𖹾'), - (0x16E5F, 'M', '𖹿'), - (0x16E60, 'V'), - (0x16E9B, 'X'), - (0x16F00, 'V'), - (0x16F4B, 'X'), - (0x16F4F, 'V'), - (0x16F88, 'X'), - (0x16F8F, 'V'), - (0x16FA0, 'X'), - (0x16FE0, 'V'), - (0x16FE5, 'X'), - (0x16FF0, 'V'), - (0x16FF2, 'X'), - (0x17000, 'V'), - (0x187F8, 'X'), - (0x18800, 'V'), - (0x18CD6, 'X'), - (0x18D00, 'V'), - (0x18D09, 'X'), - (0x1AFF0, 'V'), - (0x1AFF4, 'X'), - (0x1AFF5, 'V'), - (0x1AFFC, 'X'), - (0x1AFFD, 'V'), - ] - -def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1AFFF, 'X'), - (0x1B000, 'V'), - (0x1B123, 'X'), - (0x1B132, 'V'), - (0x1B133, 'X'), - (0x1B150, 'V'), - (0x1B153, 'X'), - (0x1B155, 'V'), - (0x1B156, 'X'), - (0x1B164, 'V'), - (0x1B168, 'X'), - (0x1B170, 'V'), - (0x1B2FC, 'X'), - (0x1BC00, 'V'), - (0x1BC6B, 'X'), - (0x1BC70, 'V'), - (0x1BC7D, 'X'), - (0x1BC80, 'V'), - (0x1BC89, 'X'), - (0x1BC90, 'V'), - (0x1BC9A, 'X'), - (0x1BC9C, 'V'), - (0x1BCA0, 'I'), - (0x1BCA4, 'X'), - (0x1CF00, 'V'), - (0x1CF2E, 'X'), - (0x1CF30, 'V'), - (0x1CF47, 'X'), - (0x1CF50, 'V'), - (0x1CFC4, 'X'), - (0x1D000, 'V'), - (0x1D0F6, 'X'), - (0x1D100, 'V'), - (0x1D127, 'X'), - (0x1D129, 'V'), - (0x1D15E, 'M', '𝅗𝅥'), - (0x1D15F, 'M', '𝅘𝅥'), - (0x1D160, 'M', '𝅘𝅥𝅮'), - (0x1D161, 'M', '𝅘𝅥𝅯'), - (0x1D162, 'M', '𝅘𝅥𝅰'), - (0x1D163, 'M', '𝅘𝅥𝅱'), - (0x1D164, 'M', '𝅘𝅥𝅲'), - (0x1D165, 'V'), - (0x1D173, 'X'), - (0x1D17B, 'V'), - (0x1D1BB, 'M', '𝆹𝅥'), - (0x1D1BC, 'M', '𝆺𝅥'), - (0x1D1BD, 'M', '𝆹𝅥𝅮'), - (0x1D1BE, 'M', '𝆺𝅥𝅮'), - (0x1D1BF, 'M', '𝆹𝅥𝅯'), - (0x1D1C0, 'M', '𝆺𝅥𝅯'), - (0x1D1C1, 'V'), - (0x1D1EB, 'X'), - (0x1D200, 'V'), - (0x1D246, 'X'), - (0x1D2C0, 'V'), - (0x1D2D4, 'X'), - (0x1D2E0, 'V'), - (0x1D2F4, 'X'), - (0x1D300, 'V'), - (0x1D357, 'X'), - (0x1D360, 'V'), - (0x1D379, 'X'), - (0x1D400, 'M', 'a'), - (0x1D401, 'M', 'b'), - (0x1D402, 'M', 'c'), - (0x1D403, 'M', 'd'), - (0x1D404, 'M', 'e'), - (0x1D405, 'M', 'f'), - (0x1D406, 'M', 'g'), - (0x1D407, 'M', 'h'), - (0x1D408, 'M', 'i'), - (0x1D409, 'M', 'j'), - (0x1D40A, 'M', 'k'), - (0x1D40B, 'M', 'l'), - (0x1D40C, 'M', 'm'), - (0x1D40D, 'M', 'n'), - (0x1D40E, 'M', 'o'), - (0x1D40F, 'M', 'p'), - (0x1D410, 'M', 'q'), - (0x1D411, 'M', 'r'), - (0x1D412, 'M', 's'), - (0x1D413, 'M', 't'), - (0x1D414, 'M', 'u'), - (0x1D415, 'M', 'v'), - (0x1D416, 'M', 'w'), - (0x1D417, 'M', 'x'), - (0x1D418, 'M', 'y'), - (0x1D419, 'M', 'z'), - (0x1D41A, 'M', 'a'), - (0x1D41B, 'M', 'b'), - (0x1D41C, 'M', 'c'), - (0x1D41D, 'M', 'd'), - (0x1D41E, 'M', 'e'), - (0x1D41F, 'M', 'f'), - (0x1D420, 'M', 'g'), - (0x1D421, 'M', 'h'), - (0x1D422, 'M', 'i'), - (0x1D423, 'M', 'j'), - (0x1D424, 'M', 'k'), - ] - -def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D425, 'M', 'l'), - (0x1D426, 'M', 'm'), - (0x1D427, 'M', 'n'), - (0x1D428, 'M', 'o'), - (0x1D429, 'M', 'p'), - (0x1D42A, 'M', 'q'), - (0x1D42B, 'M', 'r'), - (0x1D42C, 'M', 's'), - (0x1D42D, 'M', 't'), - (0x1D42E, 'M', 'u'), - (0x1D42F, 'M', 'v'), - (0x1D430, 'M', 'w'), - (0x1D431, 'M', 'x'), - (0x1D432, 'M', 'y'), - (0x1D433, 'M', 'z'), - (0x1D434, 'M', 'a'), - (0x1D435, 'M', 'b'), - (0x1D436, 'M', 'c'), - (0x1D437, 'M', 'd'), - (0x1D438, 'M', 'e'), - (0x1D439, 'M', 'f'), - (0x1D43A, 'M', 'g'), - (0x1D43B, 'M', 'h'), - (0x1D43C, 'M', 'i'), - (0x1D43D, 'M', 'j'), - (0x1D43E, 'M', 'k'), - (0x1D43F, 'M', 'l'), - (0x1D440, 'M', 'm'), - (0x1D441, 'M', 'n'), - (0x1D442, 'M', 'o'), - (0x1D443, 'M', 'p'), - (0x1D444, 'M', 'q'), - (0x1D445, 'M', 'r'), - (0x1D446, 'M', 's'), - (0x1D447, 'M', 't'), - (0x1D448, 'M', 'u'), - (0x1D449, 'M', 'v'), - (0x1D44A, 'M', 'w'), - (0x1D44B, 'M', 'x'), - (0x1D44C, 'M', 'y'), - (0x1D44D, 'M', 'z'), - (0x1D44E, 'M', 'a'), - (0x1D44F, 'M', 'b'), - (0x1D450, 'M', 'c'), - (0x1D451, 'M', 'd'), - (0x1D452, 'M', 'e'), - (0x1D453, 'M', 'f'), - (0x1D454, 'M', 'g'), - (0x1D455, 'X'), - (0x1D456, 'M', 'i'), - (0x1D457, 'M', 'j'), - (0x1D458, 'M', 'k'), - (0x1D459, 'M', 'l'), - (0x1D45A, 'M', 'm'), - (0x1D45B, 'M', 'n'), - (0x1D45C, 'M', 'o'), - (0x1D45D, 'M', 'p'), - (0x1D45E, 'M', 'q'), - (0x1D45F, 'M', 'r'), - (0x1D460, 'M', 's'), - (0x1D461, 'M', 't'), - (0x1D462, 'M', 'u'), - (0x1D463, 'M', 'v'), - (0x1D464, 'M', 'w'), - (0x1D465, 'M', 'x'), - (0x1D466, 'M', 'y'), - (0x1D467, 'M', 'z'), - (0x1D468, 'M', 'a'), - (0x1D469, 'M', 'b'), - (0x1D46A, 'M', 'c'), - (0x1D46B, 'M', 'd'), - (0x1D46C, 'M', 'e'), - (0x1D46D, 'M', 'f'), - (0x1D46E, 'M', 'g'), - (0x1D46F, 'M', 'h'), - (0x1D470, 'M', 'i'), - (0x1D471, 'M', 'j'), - (0x1D472, 'M', 'k'), - (0x1D473, 'M', 'l'), - (0x1D474, 'M', 'm'), - (0x1D475, 'M', 'n'), - (0x1D476, 'M', 'o'), - (0x1D477, 'M', 'p'), - (0x1D478, 'M', 'q'), - (0x1D479, 'M', 'r'), - (0x1D47A, 'M', 's'), - (0x1D47B, 'M', 't'), - (0x1D47C, 'M', 'u'), - (0x1D47D, 'M', 'v'), - (0x1D47E, 'M', 'w'), - (0x1D47F, 'M', 'x'), - (0x1D480, 'M', 'y'), - (0x1D481, 'M', 'z'), - (0x1D482, 'M', 'a'), - (0x1D483, 'M', 'b'), - (0x1D484, 'M', 'c'), - (0x1D485, 'M', 'd'), - (0x1D486, 'M', 'e'), - (0x1D487, 'M', 'f'), - (0x1D488, 'M', 'g'), - ] - -def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D489, 'M', 'h'), - (0x1D48A, 'M', 'i'), - (0x1D48B, 'M', 'j'), - (0x1D48C, 'M', 'k'), - (0x1D48D, 'M', 'l'), - (0x1D48E, 'M', 'm'), - (0x1D48F, 'M', 'n'), - (0x1D490, 'M', 'o'), - (0x1D491, 'M', 'p'), - (0x1D492, 'M', 'q'), - (0x1D493, 'M', 'r'), - (0x1D494, 'M', 's'), - (0x1D495, 'M', 't'), - (0x1D496, 'M', 'u'), - (0x1D497, 'M', 'v'), - (0x1D498, 'M', 'w'), - (0x1D499, 'M', 'x'), - (0x1D49A, 'M', 'y'), - (0x1D49B, 'M', 'z'), - (0x1D49C, 'M', 'a'), - (0x1D49D, 'X'), - (0x1D49E, 'M', 'c'), - (0x1D49F, 'M', 'd'), - (0x1D4A0, 'X'), - (0x1D4A2, 'M', 'g'), - (0x1D4A3, 'X'), - (0x1D4A5, 'M', 'j'), - (0x1D4A6, 'M', 'k'), - (0x1D4A7, 'X'), - (0x1D4A9, 'M', 'n'), - (0x1D4AA, 'M', 'o'), - (0x1D4AB, 'M', 'p'), - (0x1D4AC, 'M', 'q'), - (0x1D4AD, 'X'), - (0x1D4AE, 'M', 's'), - (0x1D4AF, 'M', 't'), - (0x1D4B0, 'M', 'u'), - (0x1D4B1, 'M', 'v'), - (0x1D4B2, 'M', 'w'), - (0x1D4B3, 'M', 'x'), - (0x1D4B4, 'M', 'y'), - (0x1D4B5, 'M', 'z'), - (0x1D4B6, 'M', 'a'), - (0x1D4B7, 'M', 'b'), - (0x1D4B8, 'M', 'c'), - (0x1D4B9, 'M', 'd'), - (0x1D4BA, 'X'), - (0x1D4BB, 'M', 'f'), - (0x1D4BC, 'X'), - (0x1D4BD, 'M', 'h'), - (0x1D4BE, 'M', 'i'), - (0x1D4BF, 'M', 'j'), - (0x1D4C0, 'M', 'k'), - (0x1D4C1, 'M', 'l'), - (0x1D4C2, 'M', 'm'), - (0x1D4C3, 'M', 'n'), - (0x1D4C4, 'X'), - (0x1D4C5, 'M', 'p'), - (0x1D4C6, 'M', 'q'), - (0x1D4C7, 'M', 'r'), - (0x1D4C8, 'M', 's'), - (0x1D4C9, 'M', 't'), - (0x1D4CA, 'M', 'u'), - (0x1D4CB, 'M', 'v'), - (0x1D4CC, 'M', 'w'), - (0x1D4CD, 'M', 'x'), - (0x1D4CE, 'M', 'y'), - (0x1D4CF, 'M', 'z'), - (0x1D4D0, 'M', 'a'), - (0x1D4D1, 'M', 'b'), - (0x1D4D2, 'M', 'c'), - (0x1D4D3, 'M', 'd'), - (0x1D4D4, 'M', 'e'), - (0x1D4D5, 'M', 'f'), - (0x1D4D6, 'M', 'g'), - (0x1D4D7, 'M', 'h'), - (0x1D4D8, 'M', 'i'), - (0x1D4D9, 'M', 'j'), - (0x1D4DA, 'M', 'k'), - (0x1D4DB, 'M', 'l'), - (0x1D4DC, 'M', 'm'), - (0x1D4DD, 'M', 'n'), - (0x1D4DE, 'M', 'o'), - (0x1D4DF, 'M', 'p'), - (0x1D4E0, 'M', 'q'), - (0x1D4E1, 'M', 'r'), - (0x1D4E2, 'M', 's'), - (0x1D4E3, 'M', 't'), - (0x1D4E4, 'M', 'u'), - (0x1D4E5, 'M', 'v'), - (0x1D4E6, 'M', 'w'), - (0x1D4E7, 'M', 'x'), - (0x1D4E8, 'M', 'y'), - (0x1D4E9, 'M', 'z'), - (0x1D4EA, 'M', 'a'), - (0x1D4EB, 'M', 'b'), - (0x1D4EC, 'M', 'c'), - (0x1D4ED, 'M', 'd'), - (0x1D4EE, 'M', 'e'), - (0x1D4EF, 'M', 'f'), - ] - -def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D4F0, 'M', 'g'), - (0x1D4F1, 'M', 'h'), - (0x1D4F2, 'M', 'i'), - (0x1D4F3, 'M', 'j'), - (0x1D4F4, 'M', 'k'), - (0x1D4F5, 'M', 'l'), - (0x1D4F6, 'M', 'm'), - (0x1D4F7, 'M', 'n'), - (0x1D4F8, 'M', 'o'), - (0x1D4F9, 'M', 'p'), - (0x1D4FA, 'M', 'q'), - (0x1D4FB, 'M', 'r'), - (0x1D4FC, 'M', 's'), - (0x1D4FD, 'M', 't'), - (0x1D4FE, 'M', 'u'), - (0x1D4FF, 'M', 'v'), - (0x1D500, 'M', 'w'), - (0x1D501, 'M', 'x'), - (0x1D502, 'M', 'y'), - (0x1D503, 'M', 'z'), - (0x1D504, 'M', 'a'), - (0x1D505, 'M', 'b'), - (0x1D506, 'X'), - (0x1D507, 'M', 'd'), - (0x1D508, 'M', 'e'), - (0x1D509, 'M', 'f'), - (0x1D50A, 'M', 'g'), - (0x1D50B, 'X'), - (0x1D50D, 'M', 'j'), - (0x1D50E, 'M', 'k'), - (0x1D50F, 'M', 'l'), - (0x1D510, 'M', 'm'), - (0x1D511, 'M', 'n'), - (0x1D512, 'M', 'o'), - (0x1D513, 'M', 'p'), - (0x1D514, 'M', 'q'), - (0x1D515, 'X'), - (0x1D516, 'M', 's'), - (0x1D517, 'M', 't'), - (0x1D518, 'M', 'u'), - (0x1D519, 'M', 'v'), - (0x1D51A, 'M', 'w'), - (0x1D51B, 'M', 'x'), - (0x1D51C, 'M', 'y'), - (0x1D51D, 'X'), - (0x1D51E, 'M', 'a'), - (0x1D51F, 'M', 'b'), - (0x1D520, 'M', 'c'), - (0x1D521, 'M', 'd'), - (0x1D522, 'M', 'e'), - (0x1D523, 'M', 'f'), - (0x1D524, 'M', 'g'), - (0x1D525, 'M', 'h'), - (0x1D526, 'M', 'i'), - (0x1D527, 'M', 'j'), - (0x1D528, 'M', 'k'), - (0x1D529, 'M', 'l'), - (0x1D52A, 'M', 'm'), - (0x1D52B, 'M', 'n'), - (0x1D52C, 'M', 'o'), - (0x1D52D, 'M', 'p'), - (0x1D52E, 'M', 'q'), - (0x1D52F, 'M', 'r'), - (0x1D530, 'M', 's'), - (0x1D531, 'M', 't'), - (0x1D532, 'M', 'u'), - (0x1D533, 'M', 'v'), - (0x1D534, 'M', 'w'), - (0x1D535, 'M', 'x'), - (0x1D536, 'M', 'y'), - (0x1D537, 'M', 'z'), - (0x1D538, 'M', 'a'), - (0x1D539, 'M', 'b'), - (0x1D53A, 'X'), - (0x1D53B, 'M', 'd'), - (0x1D53C, 'M', 'e'), - (0x1D53D, 'M', 'f'), - (0x1D53E, 'M', 'g'), - (0x1D53F, 'X'), - (0x1D540, 'M', 'i'), - (0x1D541, 'M', 'j'), - (0x1D542, 'M', 'k'), - (0x1D543, 'M', 'l'), - (0x1D544, 'M', 'm'), - (0x1D545, 'X'), - (0x1D546, 'M', 'o'), - (0x1D547, 'X'), - (0x1D54A, 'M', 's'), - (0x1D54B, 'M', 't'), - (0x1D54C, 'M', 'u'), - (0x1D54D, 'M', 'v'), - (0x1D54E, 'M', 'w'), - (0x1D54F, 'M', 'x'), - (0x1D550, 'M', 'y'), - (0x1D551, 'X'), - (0x1D552, 'M', 'a'), - (0x1D553, 'M', 'b'), - (0x1D554, 'M', 'c'), - (0x1D555, 'M', 'd'), - (0x1D556, 'M', 'e'), - ] - -def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D557, 'M', 'f'), - (0x1D558, 'M', 'g'), - (0x1D559, 'M', 'h'), - (0x1D55A, 'M', 'i'), - (0x1D55B, 'M', 'j'), - (0x1D55C, 'M', 'k'), - (0x1D55D, 'M', 'l'), - (0x1D55E, 'M', 'm'), - (0x1D55F, 'M', 'n'), - (0x1D560, 'M', 'o'), - (0x1D561, 'M', 'p'), - (0x1D562, 'M', 'q'), - (0x1D563, 'M', 'r'), - (0x1D564, 'M', 's'), - (0x1D565, 'M', 't'), - (0x1D566, 'M', 'u'), - (0x1D567, 'M', 'v'), - (0x1D568, 'M', 'w'), - (0x1D569, 'M', 'x'), - (0x1D56A, 'M', 'y'), - (0x1D56B, 'M', 'z'), - (0x1D56C, 'M', 'a'), - (0x1D56D, 'M', 'b'), - (0x1D56E, 'M', 'c'), - (0x1D56F, 'M', 'd'), - (0x1D570, 'M', 'e'), - (0x1D571, 'M', 'f'), - (0x1D572, 'M', 'g'), - (0x1D573, 'M', 'h'), - (0x1D574, 'M', 'i'), - (0x1D575, 'M', 'j'), - (0x1D576, 'M', 'k'), - (0x1D577, 'M', 'l'), - (0x1D578, 'M', 'm'), - (0x1D579, 'M', 'n'), - (0x1D57A, 'M', 'o'), - (0x1D57B, 'M', 'p'), - (0x1D57C, 'M', 'q'), - (0x1D57D, 'M', 'r'), - (0x1D57E, 'M', 's'), - (0x1D57F, 'M', 't'), - (0x1D580, 'M', 'u'), - (0x1D581, 'M', 'v'), - (0x1D582, 'M', 'w'), - (0x1D583, 'M', 'x'), - (0x1D584, 'M', 'y'), - (0x1D585, 'M', 'z'), - (0x1D586, 'M', 'a'), - (0x1D587, 'M', 'b'), - (0x1D588, 'M', 'c'), - (0x1D589, 'M', 'd'), - (0x1D58A, 'M', 'e'), - (0x1D58B, 'M', 'f'), - (0x1D58C, 'M', 'g'), - (0x1D58D, 'M', 'h'), - (0x1D58E, 'M', 'i'), - (0x1D58F, 'M', 'j'), - (0x1D590, 'M', 'k'), - (0x1D591, 'M', 'l'), - (0x1D592, 'M', 'm'), - (0x1D593, 'M', 'n'), - (0x1D594, 'M', 'o'), - (0x1D595, 'M', 'p'), - (0x1D596, 'M', 'q'), - (0x1D597, 'M', 'r'), - (0x1D598, 'M', 's'), - (0x1D599, 'M', 't'), - (0x1D59A, 'M', 'u'), - (0x1D59B, 'M', 'v'), - (0x1D59C, 'M', 'w'), - (0x1D59D, 'M', 'x'), - (0x1D59E, 'M', 'y'), - (0x1D59F, 'M', 'z'), - (0x1D5A0, 'M', 'a'), - (0x1D5A1, 'M', 'b'), - (0x1D5A2, 'M', 'c'), - (0x1D5A3, 'M', 'd'), - (0x1D5A4, 'M', 'e'), - (0x1D5A5, 'M', 'f'), - (0x1D5A6, 'M', 'g'), - (0x1D5A7, 'M', 'h'), - (0x1D5A8, 'M', 'i'), - (0x1D5A9, 'M', 'j'), - (0x1D5AA, 'M', 'k'), - (0x1D5AB, 'M', 'l'), - (0x1D5AC, 'M', 'm'), - (0x1D5AD, 'M', 'n'), - (0x1D5AE, 'M', 'o'), - (0x1D5AF, 'M', 'p'), - (0x1D5B0, 'M', 'q'), - (0x1D5B1, 'M', 'r'), - (0x1D5B2, 'M', 's'), - (0x1D5B3, 'M', 't'), - (0x1D5B4, 'M', 'u'), - (0x1D5B5, 'M', 'v'), - (0x1D5B6, 'M', 'w'), - (0x1D5B7, 'M', 'x'), - (0x1D5B8, 'M', 'y'), - (0x1D5B9, 'M', 'z'), - (0x1D5BA, 'M', 'a'), - ] - -def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D5BB, 'M', 'b'), - (0x1D5BC, 'M', 'c'), - (0x1D5BD, 'M', 'd'), - (0x1D5BE, 'M', 'e'), - (0x1D5BF, 'M', 'f'), - (0x1D5C0, 'M', 'g'), - (0x1D5C1, 'M', 'h'), - (0x1D5C2, 'M', 'i'), - (0x1D5C3, 'M', 'j'), - (0x1D5C4, 'M', 'k'), - (0x1D5C5, 'M', 'l'), - (0x1D5C6, 'M', 'm'), - (0x1D5C7, 'M', 'n'), - (0x1D5C8, 'M', 'o'), - (0x1D5C9, 'M', 'p'), - (0x1D5CA, 'M', 'q'), - (0x1D5CB, 'M', 'r'), - (0x1D5CC, 'M', 's'), - (0x1D5CD, 'M', 't'), - (0x1D5CE, 'M', 'u'), - (0x1D5CF, 'M', 'v'), - (0x1D5D0, 'M', 'w'), - (0x1D5D1, 'M', 'x'), - (0x1D5D2, 'M', 'y'), - (0x1D5D3, 'M', 'z'), - (0x1D5D4, 'M', 'a'), - (0x1D5D5, 'M', 'b'), - (0x1D5D6, 'M', 'c'), - (0x1D5D7, 'M', 'd'), - (0x1D5D8, 'M', 'e'), - (0x1D5D9, 'M', 'f'), - (0x1D5DA, 'M', 'g'), - (0x1D5DB, 'M', 'h'), - (0x1D5DC, 'M', 'i'), - (0x1D5DD, 'M', 'j'), - (0x1D5DE, 'M', 'k'), - (0x1D5DF, 'M', 'l'), - (0x1D5E0, 'M', 'm'), - (0x1D5E1, 'M', 'n'), - (0x1D5E2, 'M', 'o'), - (0x1D5E3, 'M', 'p'), - (0x1D5E4, 'M', 'q'), - (0x1D5E5, 'M', 'r'), - (0x1D5E6, 'M', 's'), - (0x1D5E7, 'M', 't'), - (0x1D5E8, 'M', 'u'), - (0x1D5E9, 'M', 'v'), - (0x1D5EA, 'M', 'w'), - (0x1D5EB, 'M', 'x'), - (0x1D5EC, 'M', 'y'), - (0x1D5ED, 'M', 'z'), - (0x1D5EE, 'M', 'a'), - (0x1D5EF, 'M', 'b'), - (0x1D5F0, 'M', 'c'), - (0x1D5F1, 'M', 'd'), - (0x1D5F2, 'M', 'e'), - (0x1D5F3, 'M', 'f'), - (0x1D5F4, 'M', 'g'), - (0x1D5F5, 'M', 'h'), - (0x1D5F6, 'M', 'i'), - (0x1D5F7, 'M', 'j'), - (0x1D5F8, 'M', 'k'), - (0x1D5F9, 'M', 'l'), - (0x1D5FA, 'M', 'm'), - (0x1D5FB, 'M', 'n'), - (0x1D5FC, 'M', 'o'), - (0x1D5FD, 'M', 'p'), - (0x1D5FE, 'M', 'q'), - (0x1D5FF, 'M', 'r'), - (0x1D600, 'M', 's'), - (0x1D601, 'M', 't'), - (0x1D602, 'M', 'u'), - (0x1D603, 'M', 'v'), - (0x1D604, 'M', 'w'), - (0x1D605, 'M', 'x'), - (0x1D606, 'M', 'y'), - (0x1D607, 'M', 'z'), - (0x1D608, 'M', 'a'), - (0x1D609, 'M', 'b'), - (0x1D60A, 'M', 'c'), - (0x1D60B, 'M', 'd'), - (0x1D60C, 'M', 'e'), - (0x1D60D, 'M', 'f'), - (0x1D60E, 'M', 'g'), - (0x1D60F, 'M', 'h'), - (0x1D610, 'M', 'i'), - (0x1D611, 'M', 'j'), - (0x1D612, 'M', 'k'), - (0x1D613, 'M', 'l'), - (0x1D614, 'M', 'm'), - (0x1D615, 'M', 'n'), - (0x1D616, 'M', 'o'), - (0x1D617, 'M', 'p'), - (0x1D618, 'M', 'q'), - (0x1D619, 'M', 'r'), - (0x1D61A, 'M', 's'), - (0x1D61B, 'M', 't'), - (0x1D61C, 'M', 'u'), - (0x1D61D, 'M', 'v'), - (0x1D61E, 'M', 'w'), - ] - -def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D61F, 'M', 'x'), - (0x1D620, 'M', 'y'), - (0x1D621, 'M', 'z'), - (0x1D622, 'M', 'a'), - (0x1D623, 'M', 'b'), - (0x1D624, 'M', 'c'), - (0x1D625, 'M', 'd'), - (0x1D626, 'M', 'e'), - (0x1D627, 'M', 'f'), - (0x1D628, 'M', 'g'), - (0x1D629, 'M', 'h'), - (0x1D62A, 'M', 'i'), - (0x1D62B, 'M', 'j'), - (0x1D62C, 'M', 'k'), - (0x1D62D, 'M', 'l'), - (0x1D62E, 'M', 'm'), - (0x1D62F, 'M', 'n'), - (0x1D630, 'M', 'o'), - (0x1D631, 'M', 'p'), - (0x1D632, 'M', 'q'), - (0x1D633, 'M', 'r'), - (0x1D634, 'M', 's'), - (0x1D635, 'M', 't'), - (0x1D636, 'M', 'u'), - (0x1D637, 'M', 'v'), - (0x1D638, 'M', 'w'), - (0x1D639, 'M', 'x'), - (0x1D63A, 'M', 'y'), - (0x1D63B, 'M', 'z'), - (0x1D63C, 'M', 'a'), - (0x1D63D, 'M', 'b'), - (0x1D63E, 'M', 'c'), - (0x1D63F, 'M', 'd'), - (0x1D640, 'M', 'e'), - (0x1D641, 'M', 'f'), - (0x1D642, 'M', 'g'), - (0x1D643, 'M', 'h'), - (0x1D644, 'M', 'i'), - (0x1D645, 'M', 'j'), - (0x1D646, 'M', 'k'), - (0x1D647, 'M', 'l'), - (0x1D648, 'M', 'm'), - (0x1D649, 'M', 'n'), - (0x1D64A, 'M', 'o'), - (0x1D64B, 'M', 'p'), - (0x1D64C, 'M', 'q'), - (0x1D64D, 'M', 'r'), - (0x1D64E, 'M', 's'), - (0x1D64F, 'M', 't'), - (0x1D650, 'M', 'u'), - (0x1D651, 'M', 'v'), - (0x1D652, 'M', 'w'), - (0x1D653, 'M', 'x'), - (0x1D654, 'M', 'y'), - (0x1D655, 'M', 'z'), - (0x1D656, 'M', 'a'), - (0x1D657, 'M', 'b'), - (0x1D658, 'M', 'c'), - (0x1D659, 'M', 'd'), - (0x1D65A, 'M', 'e'), - (0x1D65B, 'M', 'f'), - (0x1D65C, 'M', 'g'), - (0x1D65D, 'M', 'h'), - (0x1D65E, 'M', 'i'), - (0x1D65F, 'M', 'j'), - (0x1D660, 'M', 'k'), - (0x1D661, 'M', 'l'), - (0x1D662, 'M', 'm'), - (0x1D663, 'M', 'n'), - (0x1D664, 'M', 'o'), - (0x1D665, 'M', 'p'), - (0x1D666, 'M', 'q'), - (0x1D667, 'M', 'r'), - (0x1D668, 'M', 's'), - (0x1D669, 'M', 't'), - (0x1D66A, 'M', 'u'), - (0x1D66B, 'M', 'v'), - (0x1D66C, 'M', 'w'), - (0x1D66D, 'M', 'x'), - (0x1D66E, 'M', 'y'), - (0x1D66F, 'M', 'z'), - (0x1D670, 'M', 'a'), - (0x1D671, 'M', 'b'), - (0x1D672, 'M', 'c'), - (0x1D673, 'M', 'd'), - (0x1D674, 'M', 'e'), - (0x1D675, 'M', 'f'), - (0x1D676, 'M', 'g'), - (0x1D677, 'M', 'h'), - (0x1D678, 'M', 'i'), - (0x1D679, 'M', 'j'), - (0x1D67A, 'M', 'k'), - (0x1D67B, 'M', 'l'), - (0x1D67C, 'M', 'm'), - (0x1D67D, 'M', 'n'), - (0x1D67E, 'M', 'o'), - (0x1D67F, 'M', 'p'), - (0x1D680, 'M', 'q'), - (0x1D681, 'M', 'r'), - (0x1D682, 'M', 's'), - ] - -def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D683, 'M', 't'), - (0x1D684, 'M', 'u'), - (0x1D685, 'M', 'v'), - (0x1D686, 'M', 'w'), - (0x1D687, 'M', 'x'), - (0x1D688, 'M', 'y'), - (0x1D689, 'M', 'z'), - (0x1D68A, 'M', 'a'), - (0x1D68B, 'M', 'b'), - (0x1D68C, 'M', 'c'), - (0x1D68D, 'M', 'd'), - (0x1D68E, 'M', 'e'), - (0x1D68F, 'M', 'f'), - (0x1D690, 'M', 'g'), - (0x1D691, 'M', 'h'), - (0x1D692, 'M', 'i'), - (0x1D693, 'M', 'j'), - (0x1D694, 'M', 'k'), - (0x1D695, 'M', 'l'), - (0x1D696, 'M', 'm'), - (0x1D697, 'M', 'n'), - (0x1D698, 'M', 'o'), - (0x1D699, 'M', 'p'), - (0x1D69A, 'M', 'q'), - (0x1D69B, 'M', 'r'), - (0x1D69C, 'M', 's'), - (0x1D69D, 'M', 't'), - (0x1D69E, 'M', 'u'), - (0x1D69F, 'M', 'v'), - (0x1D6A0, 'M', 'w'), - (0x1D6A1, 'M', 'x'), - (0x1D6A2, 'M', 'y'), - (0x1D6A3, 'M', 'z'), - (0x1D6A4, 'M', 'ı'), - (0x1D6A5, 'M', 'ȷ'), - (0x1D6A6, 'X'), - (0x1D6A8, 'M', 'α'), - (0x1D6A9, 'M', 'β'), - (0x1D6AA, 'M', 'γ'), - (0x1D6AB, 'M', 'δ'), - (0x1D6AC, 'M', 'ε'), - (0x1D6AD, 'M', 'ζ'), - (0x1D6AE, 'M', 'η'), - (0x1D6AF, 'M', 'θ'), - (0x1D6B0, 'M', 'ι'), - (0x1D6B1, 'M', 'κ'), - (0x1D6B2, 'M', 'λ'), - (0x1D6B3, 'M', 'μ'), - (0x1D6B4, 'M', 'ν'), - (0x1D6B5, 'M', 'ξ'), - (0x1D6B6, 'M', 'ο'), - (0x1D6B7, 'M', 'π'), - (0x1D6B8, 'M', 'ρ'), - (0x1D6B9, 'M', 'θ'), - (0x1D6BA, 'M', 'σ'), - (0x1D6BB, 'M', 'τ'), - (0x1D6BC, 'M', 'υ'), - (0x1D6BD, 'M', 'φ'), - (0x1D6BE, 'M', 'χ'), - (0x1D6BF, 'M', 'ψ'), - (0x1D6C0, 'M', 'ω'), - (0x1D6C1, 'M', '∇'), - (0x1D6C2, 'M', 'α'), - (0x1D6C3, 'M', 'β'), - (0x1D6C4, 'M', 'γ'), - (0x1D6C5, 'M', 'δ'), - (0x1D6C6, 'M', 'ε'), - (0x1D6C7, 'M', 'ζ'), - (0x1D6C8, 'M', 'η'), - (0x1D6C9, 'M', 'θ'), - (0x1D6CA, 'M', 'ι'), - (0x1D6CB, 'M', 'κ'), - (0x1D6CC, 'M', 'λ'), - (0x1D6CD, 'M', 'μ'), - (0x1D6CE, 'M', 'ν'), - (0x1D6CF, 'M', 'ξ'), - (0x1D6D0, 'M', 'ο'), - (0x1D6D1, 'M', 'π'), - (0x1D6D2, 'M', 'ρ'), - (0x1D6D3, 'M', 'σ'), - (0x1D6D5, 'M', 'τ'), - (0x1D6D6, 'M', 'υ'), - (0x1D6D7, 'M', 'φ'), - (0x1D6D8, 'M', 'χ'), - (0x1D6D9, 'M', 'ψ'), - (0x1D6DA, 'M', 'ω'), - (0x1D6DB, 'M', '∂'), - (0x1D6DC, 'M', 'ε'), - (0x1D6DD, 'M', 'θ'), - (0x1D6DE, 'M', 'κ'), - (0x1D6DF, 'M', 'φ'), - (0x1D6E0, 'M', 'ρ'), - (0x1D6E1, 'M', 'π'), - (0x1D6E2, 'M', 'α'), - (0x1D6E3, 'M', 'β'), - (0x1D6E4, 'M', 'γ'), - (0x1D6E5, 'M', 'δ'), - (0x1D6E6, 'M', 'ε'), - (0x1D6E7, 'M', 'ζ'), - (0x1D6E8, 'M', 'η'), - ] - -def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D6E9, 'M', 'θ'), - (0x1D6EA, 'M', 'ι'), - (0x1D6EB, 'M', 'κ'), - (0x1D6EC, 'M', 'λ'), - (0x1D6ED, 'M', 'μ'), - (0x1D6EE, 'M', 'ν'), - (0x1D6EF, 'M', 'ξ'), - (0x1D6F0, 'M', 'ο'), - (0x1D6F1, 'M', 'π'), - (0x1D6F2, 'M', 'ρ'), - (0x1D6F3, 'M', 'θ'), - (0x1D6F4, 'M', 'σ'), - (0x1D6F5, 'M', 'τ'), - (0x1D6F6, 'M', 'υ'), - (0x1D6F7, 'M', 'φ'), - (0x1D6F8, 'M', 'χ'), - (0x1D6F9, 'M', 'ψ'), - (0x1D6FA, 'M', 'ω'), - (0x1D6FB, 'M', '∇'), - (0x1D6FC, 'M', 'α'), - (0x1D6FD, 'M', 'β'), - (0x1D6FE, 'M', 'γ'), - (0x1D6FF, 'M', 'δ'), - (0x1D700, 'M', 'ε'), - (0x1D701, 'M', 'ζ'), - (0x1D702, 'M', 'η'), - (0x1D703, 'M', 'θ'), - (0x1D704, 'M', 'ι'), - (0x1D705, 'M', 'κ'), - (0x1D706, 'M', 'λ'), - (0x1D707, 'M', 'μ'), - (0x1D708, 'M', 'ν'), - (0x1D709, 'M', 'ξ'), - (0x1D70A, 'M', 'ο'), - (0x1D70B, 'M', 'π'), - (0x1D70C, 'M', 'ρ'), - (0x1D70D, 'M', 'σ'), - (0x1D70F, 'M', 'τ'), - (0x1D710, 'M', 'υ'), - (0x1D711, 'M', 'φ'), - (0x1D712, 'M', 'χ'), - (0x1D713, 'M', 'ψ'), - (0x1D714, 'M', 'ω'), - (0x1D715, 'M', '∂'), - (0x1D716, 'M', 'ε'), - (0x1D717, 'M', 'θ'), - (0x1D718, 'M', 'κ'), - (0x1D719, 'M', 'φ'), - (0x1D71A, 'M', 'ρ'), - (0x1D71B, 'M', 'π'), - (0x1D71C, 'M', 'α'), - (0x1D71D, 'M', 'β'), - (0x1D71E, 'M', 'γ'), - (0x1D71F, 'M', 'δ'), - (0x1D720, 'M', 'ε'), - (0x1D721, 'M', 'ζ'), - (0x1D722, 'M', 'η'), - (0x1D723, 'M', 'θ'), - (0x1D724, 'M', 'ι'), - (0x1D725, 'M', 'κ'), - (0x1D726, 'M', 'λ'), - (0x1D727, 'M', 'μ'), - (0x1D728, 'M', 'ν'), - (0x1D729, 'M', 'ξ'), - (0x1D72A, 'M', 'ο'), - (0x1D72B, 'M', 'π'), - (0x1D72C, 'M', 'ρ'), - (0x1D72D, 'M', 'θ'), - (0x1D72E, 'M', 'σ'), - (0x1D72F, 'M', 'τ'), - (0x1D730, 'M', 'υ'), - (0x1D731, 'M', 'φ'), - (0x1D732, 'M', 'χ'), - (0x1D733, 'M', 'ψ'), - (0x1D734, 'M', 'ω'), - (0x1D735, 'M', '∇'), - (0x1D736, 'M', 'α'), - (0x1D737, 'M', 'β'), - (0x1D738, 'M', 'γ'), - (0x1D739, 'M', 'δ'), - (0x1D73A, 'M', 'ε'), - (0x1D73B, 'M', 'ζ'), - (0x1D73C, 'M', 'η'), - (0x1D73D, 'M', 'θ'), - (0x1D73E, 'M', 'ι'), - (0x1D73F, 'M', 'κ'), - (0x1D740, 'M', 'λ'), - (0x1D741, 'M', 'μ'), - (0x1D742, 'M', 'ν'), - (0x1D743, 'M', 'ξ'), - (0x1D744, 'M', 'ο'), - (0x1D745, 'M', 'π'), - (0x1D746, 'M', 'ρ'), - (0x1D747, 'M', 'σ'), - (0x1D749, 'M', 'τ'), - (0x1D74A, 'M', 'υ'), - (0x1D74B, 'M', 'φ'), - (0x1D74C, 'M', 'χ'), - (0x1D74D, 'M', 'ψ'), - (0x1D74E, 'M', 'ω'), - ] - -def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D74F, 'M', '∂'), - (0x1D750, 'M', 'ε'), - (0x1D751, 'M', 'θ'), - (0x1D752, 'M', 'κ'), - (0x1D753, 'M', 'φ'), - (0x1D754, 'M', 'ρ'), - (0x1D755, 'M', 'π'), - (0x1D756, 'M', 'α'), - (0x1D757, 'M', 'β'), - (0x1D758, 'M', 'γ'), - (0x1D759, 'M', 'δ'), - (0x1D75A, 'M', 'ε'), - (0x1D75B, 'M', 'ζ'), - (0x1D75C, 'M', 'η'), - (0x1D75D, 'M', 'θ'), - (0x1D75E, 'M', 'ι'), - (0x1D75F, 'M', 'κ'), - (0x1D760, 'M', 'λ'), - (0x1D761, 'M', 'μ'), - (0x1D762, 'M', 'ν'), - (0x1D763, 'M', 'ξ'), - (0x1D764, 'M', 'ο'), - (0x1D765, 'M', 'π'), - (0x1D766, 'M', 'ρ'), - (0x1D767, 'M', 'θ'), - (0x1D768, 'M', 'σ'), - (0x1D769, 'M', 'τ'), - (0x1D76A, 'M', 'υ'), - (0x1D76B, 'M', 'φ'), - (0x1D76C, 'M', 'χ'), - (0x1D76D, 'M', 'ψ'), - (0x1D76E, 'M', 'ω'), - (0x1D76F, 'M', '∇'), - (0x1D770, 'M', 'α'), - (0x1D771, 'M', 'β'), - (0x1D772, 'M', 'γ'), - (0x1D773, 'M', 'δ'), - (0x1D774, 'M', 'ε'), - (0x1D775, 'M', 'ζ'), - (0x1D776, 'M', 'η'), - (0x1D777, 'M', 'θ'), - (0x1D778, 'M', 'ι'), - (0x1D779, 'M', 'κ'), - (0x1D77A, 'M', 'λ'), - (0x1D77B, 'M', 'μ'), - (0x1D77C, 'M', 'ν'), - (0x1D77D, 'M', 'ξ'), - (0x1D77E, 'M', 'ο'), - (0x1D77F, 'M', 'π'), - (0x1D780, 'M', 'ρ'), - (0x1D781, 'M', 'σ'), - (0x1D783, 'M', 'τ'), - (0x1D784, 'M', 'υ'), - (0x1D785, 'M', 'φ'), - (0x1D786, 'M', 'χ'), - (0x1D787, 'M', 'ψ'), - (0x1D788, 'M', 'ω'), - (0x1D789, 'M', '∂'), - (0x1D78A, 'M', 'ε'), - (0x1D78B, 'M', 'θ'), - (0x1D78C, 'M', 'κ'), - (0x1D78D, 'M', 'φ'), - (0x1D78E, 'M', 'ρ'), - (0x1D78F, 'M', 'π'), - (0x1D790, 'M', 'α'), - (0x1D791, 'M', 'β'), - (0x1D792, 'M', 'γ'), - (0x1D793, 'M', 'δ'), - (0x1D794, 'M', 'ε'), - (0x1D795, 'M', 'ζ'), - (0x1D796, 'M', 'η'), - (0x1D797, 'M', 'θ'), - (0x1D798, 'M', 'ι'), - (0x1D799, 'M', 'κ'), - (0x1D79A, 'M', 'λ'), - (0x1D79B, 'M', 'μ'), - (0x1D79C, 'M', 'ν'), - (0x1D79D, 'M', 'ξ'), - (0x1D79E, 'M', 'ο'), - (0x1D79F, 'M', 'π'), - (0x1D7A0, 'M', 'ρ'), - (0x1D7A1, 'M', 'θ'), - (0x1D7A2, 'M', 'σ'), - (0x1D7A3, 'M', 'τ'), - (0x1D7A4, 'M', 'υ'), - (0x1D7A5, 'M', 'φ'), - (0x1D7A6, 'M', 'χ'), - (0x1D7A7, 'M', 'ψ'), - (0x1D7A8, 'M', 'ω'), - (0x1D7A9, 'M', '∇'), - (0x1D7AA, 'M', 'α'), - (0x1D7AB, 'M', 'β'), - (0x1D7AC, 'M', 'γ'), - (0x1D7AD, 'M', 'δ'), - (0x1D7AE, 'M', 'ε'), - (0x1D7AF, 'M', 'ζ'), - (0x1D7B0, 'M', 'η'), - (0x1D7B1, 'M', 'θ'), - (0x1D7B2, 'M', 'ι'), - (0x1D7B3, 'M', 'κ'), - ] - -def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D7B4, 'M', 'λ'), - (0x1D7B5, 'M', 'μ'), - (0x1D7B6, 'M', 'ν'), - (0x1D7B7, 'M', 'ξ'), - (0x1D7B8, 'M', 'ο'), - (0x1D7B9, 'M', 'π'), - (0x1D7BA, 'M', 'ρ'), - (0x1D7BB, 'M', 'σ'), - (0x1D7BD, 'M', 'τ'), - (0x1D7BE, 'M', 'υ'), - (0x1D7BF, 'M', 'φ'), - (0x1D7C0, 'M', 'χ'), - (0x1D7C1, 'M', 'ψ'), - (0x1D7C2, 'M', 'ω'), - (0x1D7C3, 'M', '∂'), - (0x1D7C4, 'M', 'ε'), - (0x1D7C5, 'M', 'θ'), - (0x1D7C6, 'M', 'κ'), - (0x1D7C7, 'M', 'φ'), - (0x1D7C8, 'M', 'ρ'), - (0x1D7C9, 'M', 'π'), - (0x1D7CA, 'M', 'ϝ'), - (0x1D7CC, 'X'), - (0x1D7CE, 'M', '0'), - (0x1D7CF, 'M', '1'), - (0x1D7D0, 'M', '2'), - (0x1D7D1, 'M', '3'), - (0x1D7D2, 'M', '4'), - (0x1D7D3, 'M', '5'), - (0x1D7D4, 'M', '6'), - (0x1D7D5, 'M', '7'), - (0x1D7D6, 'M', '8'), - (0x1D7D7, 'M', '9'), - (0x1D7D8, 'M', '0'), - (0x1D7D9, 'M', '1'), - (0x1D7DA, 'M', '2'), - (0x1D7DB, 'M', '3'), - (0x1D7DC, 'M', '4'), - (0x1D7DD, 'M', '5'), - (0x1D7DE, 'M', '6'), - (0x1D7DF, 'M', '7'), - (0x1D7E0, 'M', '8'), - (0x1D7E1, 'M', '9'), - (0x1D7E2, 'M', '0'), - (0x1D7E3, 'M', '1'), - (0x1D7E4, 'M', '2'), - (0x1D7E5, 'M', '3'), - (0x1D7E6, 'M', '4'), - (0x1D7E7, 'M', '5'), - (0x1D7E8, 'M', '6'), - (0x1D7E9, 'M', '7'), - (0x1D7EA, 'M', '8'), - (0x1D7EB, 'M', '9'), - (0x1D7EC, 'M', '0'), - (0x1D7ED, 'M', '1'), - (0x1D7EE, 'M', '2'), - (0x1D7EF, 'M', '3'), - (0x1D7F0, 'M', '4'), - (0x1D7F1, 'M', '5'), - (0x1D7F2, 'M', '6'), - (0x1D7F3, 'M', '7'), - (0x1D7F4, 'M', '8'), - (0x1D7F5, 'M', '9'), - (0x1D7F6, 'M', '0'), - (0x1D7F7, 'M', '1'), - (0x1D7F8, 'M', '2'), - (0x1D7F9, 'M', '3'), - (0x1D7FA, 'M', '4'), - (0x1D7FB, 'M', '5'), - (0x1D7FC, 'M', '6'), - (0x1D7FD, 'M', '7'), - (0x1D7FE, 'M', '8'), - (0x1D7FF, 'M', '9'), - (0x1D800, 'V'), - (0x1DA8C, 'X'), - (0x1DA9B, 'V'), - (0x1DAA0, 'X'), - (0x1DAA1, 'V'), - (0x1DAB0, 'X'), - (0x1DF00, 'V'), - (0x1DF1F, 'X'), - (0x1DF25, 'V'), - (0x1DF2B, 'X'), - (0x1E000, 'V'), - (0x1E007, 'X'), - (0x1E008, 'V'), - (0x1E019, 'X'), - (0x1E01B, 'V'), - (0x1E022, 'X'), - (0x1E023, 'V'), - (0x1E025, 'X'), - (0x1E026, 'V'), - (0x1E02B, 'X'), - (0x1E030, 'M', 'а'), - (0x1E031, 'M', 'б'), - (0x1E032, 'M', 'в'), - (0x1E033, 'M', 'г'), - (0x1E034, 'M', 'д'), - (0x1E035, 'M', 'е'), - (0x1E036, 'M', 'ж'), - ] - -def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E037, 'M', 'з'), - (0x1E038, 'M', 'и'), - (0x1E039, 'M', 'к'), - (0x1E03A, 'M', 'л'), - (0x1E03B, 'M', 'м'), - (0x1E03C, 'M', 'о'), - (0x1E03D, 'M', 'п'), - (0x1E03E, 'M', 'р'), - (0x1E03F, 'M', 'с'), - (0x1E040, 'M', 'т'), - (0x1E041, 'M', 'у'), - (0x1E042, 'M', 'ф'), - (0x1E043, 'M', 'х'), - (0x1E044, 'M', 'ц'), - (0x1E045, 'M', 'ч'), - (0x1E046, 'M', 'ш'), - (0x1E047, 'M', 'ы'), - (0x1E048, 'M', 'э'), - (0x1E049, 'M', 'ю'), - (0x1E04A, 'M', 'ꚉ'), - (0x1E04B, 'M', 'ә'), - (0x1E04C, 'M', 'і'), - (0x1E04D, 'M', 'ј'), - (0x1E04E, 'M', 'ө'), - (0x1E04F, 'M', 'ү'), - (0x1E050, 'M', 'ӏ'), - (0x1E051, 'M', 'а'), - (0x1E052, 'M', 'б'), - (0x1E053, 'M', 'в'), - (0x1E054, 'M', 'г'), - (0x1E055, 'M', 'д'), - (0x1E056, 'M', 'е'), - (0x1E057, 'M', 'ж'), - (0x1E058, 'M', 'з'), - (0x1E059, 'M', 'и'), - (0x1E05A, 'M', 'к'), - (0x1E05B, 'M', 'л'), - (0x1E05C, 'M', 'о'), - (0x1E05D, 'M', 'п'), - (0x1E05E, 'M', 'с'), - (0x1E05F, 'M', 'у'), - (0x1E060, 'M', 'ф'), - (0x1E061, 'M', 'х'), - (0x1E062, 'M', 'ц'), - (0x1E063, 'M', 'ч'), - (0x1E064, 'M', 'ш'), - (0x1E065, 'M', 'ъ'), - (0x1E066, 'M', 'ы'), - (0x1E067, 'M', 'ґ'), - (0x1E068, 'M', 'і'), - (0x1E069, 'M', 'ѕ'), - (0x1E06A, 'M', 'џ'), - (0x1E06B, 'M', 'ҫ'), - (0x1E06C, 'M', 'ꙑ'), - (0x1E06D, 'M', 'ұ'), - (0x1E06E, 'X'), - (0x1E08F, 'V'), - (0x1E090, 'X'), - (0x1E100, 'V'), - (0x1E12D, 'X'), - (0x1E130, 'V'), - (0x1E13E, 'X'), - (0x1E140, 'V'), - (0x1E14A, 'X'), - (0x1E14E, 'V'), - (0x1E150, 'X'), - (0x1E290, 'V'), - (0x1E2AF, 'X'), - (0x1E2C0, 'V'), - (0x1E2FA, 'X'), - (0x1E2FF, 'V'), - (0x1E300, 'X'), - (0x1E4D0, 'V'), - (0x1E4FA, 'X'), - (0x1E7E0, 'V'), - (0x1E7E7, 'X'), - (0x1E7E8, 'V'), - (0x1E7EC, 'X'), - (0x1E7ED, 'V'), - (0x1E7EF, 'X'), - (0x1E7F0, 'V'), - (0x1E7FF, 'X'), - (0x1E800, 'V'), - (0x1E8C5, 'X'), - (0x1E8C7, 'V'), - (0x1E8D7, 'X'), - (0x1E900, 'M', '𞤢'), - (0x1E901, 'M', '𞤣'), - (0x1E902, 'M', '𞤤'), - (0x1E903, 'M', '𞤥'), - (0x1E904, 'M', '𞤦'), - (0x1E905, 'M', '𞤧'), - (0x1E906, 'M', '𞤨'), - (0x1E907, 'M', '𞤩'), - (0x1E908, 'M', '𞤪'), - (0x1E909, 'M', '𞤫'), - (0x1E90A, 'M', '𞤬'), - (0x1E90B, 'M', '𞤭'), - (0x1E90C, 'M', '𞤮'), - (0x1E90D, 'M', '𞤯'), - ] - -def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E90E, 'M', '𞤰'), - (0x1E90F, 'M', '𞤱'), - (0x1E910, 'M', '𞤲'), - (0x1E911, 'M', '𞤳'), - (0x1E912, 'M', '𞤴'), - (0x1E913, 'M', '𞤵'), - (0x1E914, 'M', '𞤶'), - (0x1E915, 'M', '𞤷'), - (0x1E916, 'M', '𞤸'), - (0x1E917, 'M', '𞤹'), - (0x1E918, 'M', '𞤺'), - (0x1E919, 'M', '𞤻'), - (0x1E91A, 'M', '𞤼'), - (0x1E91B, 'M', '𞤽'), - (0x1E91C, 'M', '𞤾'), - (0x1E91D, 'M', '𞤿'), - (0x1E91E, 'M', '𞥀'), - (0x1E91F, 'M', '𞥁'), - (0x1E920, 'M', '𞥂'), - (0x1E921, 'M', '𞥃'), - (0x1E922, 'V'), - (0x1E94C, 'X'), - (0x1E950, 'V'), - (0x1E95A, 'X'), - (0x1E95E, 'V'), - (0x1E960, 'X'), - (0x1EC71, 'V'), - (0x1ECB5, 'X'), - (0x1ED01, 'V'), - (0x1ED3E, 'X'), - (0x1EE00, 'M', 'ا'), - (0x1EE01, 'M', 'ب'), - (0x1EE02, 'M', 'ج'), - (0x1EE03, 'M', 'د'), - (0x1EE04, 'X'), - (0x1EE05, 'M', 'و'), - (0x1EE06, 'M', 'ز'), - (0x1EE07, 'M', 'ح'), - (0x1EE08, 'M', 'ط'), - (0x1EE09, 'M', 'ي'), - (0x1EE0A, 'M', 'ك'), - (0x1EE0B, 'M', 'ل'), - (0x1EE0C, 'M', 'م'), - (0x1EE0D, 'M', 'ن'), - (0x1EE0E, 'M', 'س'), - (0x1EE0F, 'M', 'ع'), - (0x1EE10, 'M', 'ف'), - (0x1EE11, 'M', 'ص'), - (0x1EE12, 'M', 'ق'), - (0x1EE13, 'M', 'ر'), - (0x1EE14, 'M', 'ش'), - (0x1EE15, 'M', 'ت'), - (0x1EE16, 'M', 'ث'), - (0x1EE17, 'M', 'خ'), - (0x1EE18, 'M', 'ذ'), - (0x1EE19, 'M', 'ض'), - (0x1EE1A, 'M', 'ظ'), - (0x1EE1B, 'M', 'غ'), - (0x1EE1C, 'M', 'ٮ'), - (0x1EE1D, 'M', 'ں'), - (0x1EE1E, 'M', 'ڡ'), - (0x1EE1F, 'M', 'ٯ'), - (0x1EE20, 'X'), - (0x1EE21, 'M', 'ب'), - (0x1EE22, 'M', 'ج'), - (0x1EE23, 'X'), - (0x1EE24, 'M', 'ه'), - (0x1EE25, 'X'), - (0x1EE27, 'M', 'ح'), - (0x1EE28, 'X'), - (0x1EE29, 'M', 'ي'), - (0x1EE2A, 'M', 'ك'), - (0x1EE2B, 'M', 'ل'), - (0x1EE2C, 'M', 'م'), - (0x1EE2D, 'M', 'ن'), - (0x1EE2E, 'M', 'س'), - (0x1EE2F, 'M', 'ع'), - (0x1EE30, 'M', 'ف'), - (0x1EE31, 'M', 'ص'), - (0x1EE32, 'M', 'ق'), - (0x1EE33, 'X'), - (0x1EE34, 'M', 'ش'), - (0x1EE35, 'M', 'ت'), - (0x1EE36, 'M', 'ث'), - (0x1EE37, 'M', 'خ'), - (0x1EE38, 'X'), - (0x1EE39, 'M', 'ض'), - (0x1EE3A, 'X'), - (0x1EE3B, 'M', 'غ'), - (0x1EE3C, 'X'), - (0x1EE42, 'M', 'ج'), - (0x1EE43, 'X'), - (0x1EE47, 'M', 'ح'), - (0x1EE48, 'X'), - (0x1EE49, 'M', 'ي'), - (0x1EE4A, 'X'), - (0x1EE4B, 'M', 'ل'), - (0x1EE4C, 'X'), - (0x1EE4D, 'M', 'ن'), - (0x1EE4E, 'M', 'س'), - ] - -def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EE4F, 'M', 'ع'), - (0x1EE50, 'X'), - (0x1EE51, 'M', 'ص'), - (0x1EE52, 'M', 'ق'), - (0x1EE53, 'X'), - (0x1EE54, 'M', 'ش'), - (0x1EE55, 'X'), - (0x1EE57, 'M', 'خ'), - (0x1EE58, 'X'), - (0x1EE59, 'M', 'ض'), - (0x1EE5A, 'X'), - (0x1EE5B, 'M', 'غ'), - (0x1EE5C, 'X'), - (0x1EE5D, 'M', 'ں'), - (0x1EE5E, 'X'), - (0x1EE5F, 'M', 'ٯ'), - (0x1EE60, 'X'), - (0x1EE61, 'M', 'ب'), - (0x1EE62, 'M', 'ج'), - (0x1EE63, 'X'), - (0x1EE64, 'M', 'ه'), - (0x1EE65, 'X'), - (0x1EE67, 'M', 'ح'), - (0x1EE68, 'M', 'ط'), - (0x1EE69, 'M', 'ي'), - (0x1EE6A, 'M', 'ك'), - (0x1EE6B, 'X'), - (0x1EE6C, 'M', 'م'), - (0x1EE6D, 'M', 'ن'), - (0x1EE6E, 'M', 'س'), - (0x1EE6F, 'M', 'ع'), - (0x1EE70, 'M', 'ف'), - (0x1EE71, 'M', 'ص'), - (0x1EE72, 'M', 'ق'), - (0x1EE73, 'X'), - (0x1EE74, 'M', 'ش'), - (0x1EE75, 'M', 'ت'), - (0x1EE76, 'M', 'ث'), - (0x1EE77, 'M', 'خ'), - (0x1EE78, 'X'), - (0x1EE79, 'M', 'ض'), - (0x1EE7A, 'M', 'ظ'), - (0x1EE7B, 'M', 'غ'), - (0x1EE7C, 'M', 'ٮ'), - (0x1EE7D, 'X'), - (0x1EE7E, 'M', 'ڡ'), - (0x1EE7F, 'X'), - (0x1EE80, 'M', 'ا'), - (0x1EE81, 'M', 'ب'), - (0x1EE82, 'M', 'ج'), - (0x1EE83, 'M', 'د'), - (0x1EE84, 'M', 'ه'), - (0x1EE85, 'M', 'و'), - (0x1EE86, 'M', 'ز'), - (0x1EE87, 'M', 'ح'), - (0x1EE88, 'M', 'ط'), - (0x1EE89, 'M', 'ي'), - (0x1EE8A, 'X'), - (0x1EE8B, 'M', 'ل'), - (0x1EE8C, 'M', 'م'), - (0x1EE8D, 'M', 'ن'), - (0x1EE8E, 'M', 'س'), - (0x1EE8F, 'M', 'ع'), - (0x1EE90, 'M', 'ف'), - (0x1EE91, 'M', 'ص'), - (0x1EE92, 'M', 'ق'), - (0x1EE93, 'M', 'ر'), - (0x1EE94, 'M', 'ش'), - (0x1EE95, 'M', 'ت'), - (0x1EE96, 'M', 'ث'), - (0x1EE97, 'M', 'خ'), - (0x1EE98, 'M', 'ذ'), - (0x1EE99, 'M', 'ض'), - (0x1EE9A, 'M', 'ظ'), - (0x1EE9B, 'M', 'غ'), - (0x1EE9C, 'X'), - (0x1EEA1, 'M', 'ب'), - (0x1EEA2, 'M', 'ج'), - (0x1EEA3, 'M', 'د'), - (0x1EEA4, 'X'), - (0x1EEA5, 'M', 'و'), - (0x1EEA6, 'M', 'ز'), - (0x1EEA7, 'M', 'ح'), - (0x1EEA8, 'M', 'ط'), - (0x1EEA9, 'M', 'ي'), - (0x1EEAA, 'X'), - (0x1EEAB, 'M', 'ل'), - (0x1EEAC, 'M', 'م'), - (0x1EEAD, 'M', 'ن'), - (0x1EEAE, 'M', 'س'), - (0x1EEAF, 'M', 'ع'), - (0x1EEB0, 'M', 'ف'), - (0x1EEB1, 'M', 'ص'), - (0x1EEB2, 'M', 'ق'), - (0x1EEB3, 'M', 'ر'), - (0x1EEB4, 'M', 'ش'), - (0x1EEB5, 'M', 'ت'), - (0x1EEB6, 'M', 'ث'), - (0x1EEB7, 'M', 'خ'), - (0x1EEB8, 'M', 'ذ'), - ] - -def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EEB9, 'M', 'ض'), - (0x1EEBA, 'M', 'ظ'), - (0x1EEBB, 'M', 'غ'), - (0x1EEBC, 'X'), - (0x1EEF0, 'V'), - (0x1EEF2, 'X'), - (0x1F000, 'V'), - (0x1F02C, 'X'), - (0x1F030, 'V'), - (0x1F094, 'X'), - (0x1F0A0, 'V'), - (0x1F0AF, 'X'), - (0x1F0B1, 'V'), - (0x1F0C0, 'X'), - (0x1F0C1, 'V'), - (0x1F0D0, 'X'), - (0x1F0D1, 'V'), - (0x1F0F6, 'X'), - (0x1F101, '3', '0,'), - (0x1F102, '3', '1,'), - (0x1F103, '3', '2,'), - (0x1F104, '3', '3,'), - (0x1F105, '3', '4,'), - (0x1F106, '3', '5,'), - (0x1F107, '3', '6,'), - (0x1F108, '3', '7,'), - (0x1F109, '3', '8,'), - (0x1F10A, '3', '9,'), - (0x1F10B, 'V'), - (0x1F110, '3', '(a)'), - (0x1F111, '3', '(b)'), - (0x1F112, '3', '(c)'), - (0x1F113, '3', '(d)'), - (0x1F114, '3', '(e)'), - (0x1F115, '3', '(f)'), - (0x1F116, '3', '(g)'), - (0x1F117, '3', '(h)'), - (0x1F118, '3', '(i)'), - (0x1F119, '3', '(j)'), - (0x1F11A, '3', '(k)'), - (0x1F11B, '3', '(l)'), - (0x1F11C, '3', '(m)'), - (0x1F11D, '3', '(n)'), - (0x1F11E, '3', '(o)'), - (0x1F11F, '3', '(p)'), - (0x1F120, '3', '(q)'), - (0x1F121, '3', '(r)'), - (0x1F122, '3', '(s)'), - (0x1F123, '3', '(t)'), - (0x1F124, '3', '(u)'), - (0x1F125, '3', '(v)'), - (0x1F126, '3', '(w)'), - (0x1F127, '3', '(x)'), - (0x1F128, '3', '(y)'), - (0x1F129, '3', '(z)'), - (0x1F12A, 'M', '〔s〕'), - (0x1F12B, 'M', 'c'), - (0x1F12C, 'M', 'r'), - (0x1F12D, 'M', 'cd'), - (0x1F12E, 'M', 'wz'), - (0x1F12F, 'V'), - (0x1F130, 'M', 'a'), - (0x1F131, 'M', 'b'), - (0x1F132, 'M', 'c'), - (0x1F133, 'M', 'd'), - (0x1F134, 'M', 'e'), - (0x1F135, 'M', 'f'), - (0x1F136, 'M', 'g'), - (0x1F137, 'M', 'h'), - (0x1F138, 'M', 'i'), - (0x1F139, 'M', 'j'), - (0x1F13A, 'M', 'k'), - (0x1F13B, 'M', 'l'), - (0x1F13C, 'M', 'm'), - (0x1F13D, 'M', 'n'), - (0x1F13E, 'M', 'o'), - (0x1F13F, 'M', 'p'), - (0x1F140, 'M', 'q'), - (0x1F141, 'M', 'r'), - (0x1F142, 'M', 's'), - (0x1F143, 'M', 't'), - (0x1F144, 'M', 'u'), - (0x1F145, 'M', 'v'), - (0x1F146, 'M', 'w'), - (0x1F147, 'M', 'x'), - (0x1F148, 'M', 'y'), - (0x1F149, 'M', 'z'), - (0x1F14A, 'M', 'hv'), - (0x1F14B, 'M', 'mv'), - (0x1F14C, 'M', 'sd'), - (0x1F14D, 'M', 'ss'), - (0x1F14E, 'M', 'ppv'), - (0x1F14F, 'M', 'wc'), - (0x1F150, 'V'), - (0x1F16A, 'M', 'mc'), - (0x1F16B, 'M', 'md'), - (0x1F16C, 'M', 'mr'), - (0x1F16D, 'V'), - (0x1F190, 'M', 'dj'), - (0x1F191, 'V'), - ] - -def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F1AE, 'X'), - (0x1F1E6, 'V'), - (0x1F200, 'M', 'ほか'), - (0x1F201, 'M', 'ココ'), - (0x1F202, 'M', 'サ'), - (0x1F203, 'X'), - (0x1F210, 'M', '手'), - (0x1F211, 'M', '字'), - (0x1F212, 'M', '双'), - (0x1F213, 'M', 'デ'), - (0x1F214, 'M', '二'), - (0x1F215, 'M', '多'), - (0x1F216, 'M', '解'), - (0x1F217, 'M', '天'), - (0x1F218, 'M', '交'), - (0x1F219, 'M', '映'), - (0x1F21A, 'M', '無'), - (0x1F21B, 'M', '料'), - (0x1F21C, 'M', '前'), - (0x1F21D, 'M', '後'), - (0x1F21E, 'M', '再'), - (0x1F21F, 'M', '新'), - (0x1F220, 'M', '初'), - (0x1F221, 'M', '終'), - (0x1F222, 'M', '生'), - (0x1F223, 'M', '販'), - (0x1F224, 'M', '声'), - (0x1F225, 'M', '吹'), - (0x1F226, 'M', '演'), - (0x1F227, 'M', '投'), - (0x1F228, 'M', '捕'), - (0x1F229, 'M', '一'), - (0x1F22A, 'M', '三'), - (0x1F22B, 'M', '遊'), - (0x1F22C, 'M', '左'), - (0x1F22D, 'M', '中'), - (0x1F22E, 'M', '右'), - (0x1F22F, 'M', '指'), - (0x1F230, 'M', '走'), - (0x1F231, 'M', '打'), - (0x1F232, 'M', '禁'), - (0x1F233, 'M', '空'), - (0x1F234, 'M', '合'), - (0x1F235, 'M', '満'), - (0x1F236, 'M', '有'), - (0x1F237, 'M', '月'), - (0x1F238, 'M', '申'), - (0x1F239, 'M', '割'), - (0x1F23A, 'M', '営'), - (0x1F23B, 'M', '配'), - (0x1F23C, 'X'), - (0x1F240, 'M', '〔本〕'), - (0x1F241, 'M', '〔三〕'), - (0x1F242, 'M', '〔二〕'), - (0x1F243, 'M', '〔安〕'), - (0x1F244, 'M', '〔点〕'), - (0x1F245, 'M', '〔打〕'), - (0x1F246, 'M', '〔盗〕'), - (0x1F247, 'M', '〔勝〕'), - (0x1F248, 'M', '〔敗〕'), - (0x1F249, 'X'), - (0x1F250, 'M', '得'), - (0x1F251, 'M', '可'), - (0x1F252, 'X'), - (0x1F260, 'V'), - (0x1F266, 'X'), - (0x1F300, 'V'), - (0x1F6D8, 'X'), - (0x1F6DC, 'V'), - (0x1F6ED, 'X'), - (0x1F6F0, 'V'), - (0x1F6FD, 'X'), - (0x1F700, 'V'), - (0x1F777, 'X'), - (0x1F77B, 'V'), - (0x1F7DA, 'X'), - (0x1F7E0, 'V'), - (0x1F7EC, 'X'), - (0x1F7F0, 'V'), - (0x1F7F1, 'X'), - (0x1F800, 'V'), - (0x1F80C, 'X'), - (0x1F810, 'V'), - (0x1F848, 'X'), - (0x1F850, 'V'), - (0x1F85A, 'X'), - (0x1F860, 'V'), - (0x1F888, 'X'), - (0x1F890, 'V'), - (0x1F8AE, 'X'), - (0x1F8B0, 'V'), - (0x1F8B2, 'X'), - (0x1F900, 'V'), - (0x1FA54, 'X'), - (0x1FA60, 'V'), - (0x1FA6E, 'X'), - (0x1FA70, 'V'), - (0x1FA7D, 'X'), - (0x1FA80, 'V'), - (0x1FA89, 'X'), - ] - -def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FA90, 'V'), - (0x1FABE, 'X'), - (0x1FABF, 'V'), - (0x1FAC6, 'X'), - (0x1FACE, 'V'), - (0x1FADC, 'X'), - (0x1FAE0, 'V'), - (0x1FAE9, 'X'), - (0x1FAF0, 'V'), - (0x1FAF9, 'X'), - (0x1FB00, 'V'), - (0x1FB93, 'X'), - (0x1FB94, 'V'), - (0x1FBCB, 'X'), - (0x1FBF0, 'M', '0'), - (0x1FBF1, 'M', '1'), - (0x1FBF2, 'M', '2'), - (0x1FBF3, 'M', '3'), - (0x1FBF4, 'M', '4'), - (0x1FBF5, 'M', '5'), - (0x1FBF6, 'M', '6'), - (0x1FBF7, 'M', '7'), - (0x1FBF8, 'M', '8'), - (0x1FBF9, 'M', '9'), - (0x1FBFA, 'X'), - (0x20000, 'V'), - (0x2A6E0, 'X'), - (0x2A700, 'V'), - (0x2B73A, 'X'), - (0x2B740, 'V'), - (0x2B81E, 'X'), - (0x2B820, 'V'), - (0x2CEA2, 'X'), - (0x2CEB0, 'V'), - (0x2EBE1, 'X'), - (0x2EBF0, 'V'), - (0x2EE5E, 'X'), - (0x2F800, 'M', '丽'), - (0x2F801, 'M', '丸'), - (0x2F802, 'M', '乁'), - (0x2F803, 'M', '𠄢'), - (0x2F804, 'M', '你'), - (0x2F805, 'M', '侮'), - (0x2F806, 'M', '侻'), - (0x2F807, 'M', '倂'), - (0x2F808, 'M', '偺'), - (0x2F809, 'M', '備'), - (0x2F80A, 'M', '僧'), - (0x2F80B, 'M', '像'), - (0x2F80C, 'M', '㒞'), - (0x2F80D, 'M', '𠘺'), - (0x2F80E, 'M', '免'), - (0x2F80F, 'M', '兔'), - (0x2F810, 'M', '兤'), - (0x2F811, 'M', '具'), - (0x2F812, 'M', '𠔜'), - (0x2F813, 'M', '㒹'), - (0x2F814, 'M', '內'), - (0x2F815, 'M', '再'), - (0x2F816, 'M', '𠕋'), - (0x2F817, 'M', '冗'), - (0x2F818, 'M', '冤'), - (0x2F819, 'M', '仌'), - (0x2F81A, 'M', '冬'), - (0x2F81B, 'M', '况'), - (0x2F81C, 'M', '𩇟'), - (0x2F81D, 'M', '凵'), - (0x2F81E, 'M', '刃'), - (0x2F81F, 'M', '㓟'), - (0x2F820, 'M', '刻'), - (0x2F821, 'M', '剆'), - (0x2F822, 'M', '割'), - (0x2F823, 'M', '剷'), - (0x2F824, 'M', '㔕'), - (0x2F825, 'M', '勇'), - (0x2F826, 'M', '勉'), - (0x2F827, 'M', '勤'), - (0x2F828, 'M', '勺'), - (0x2F829, 'M', '包'), - (0x2F82A, 'M', '匆'), - (0x2F82B, 'M', '北'), - (0x2F82C, 'M', '卉'), - (0x2F82D, 'M', '卑'), - (0x2F82E, 'M', '博'), - (0x2F82F, 'M', '即'), - (0x2F830, 'M', '卽'), - (0x2F831, 'M', '卿'), - (0x2F834, 'M', '𠨬'), - (0x2F835, 'M', '灰'), - (0x2F836, 'M', '及'), - (0x2F837, 'M', '叟'), - (0x2F838, 'M', '𠭣'), - (0x2F839, 'M', '叫'), - (0x2F83A, 'M', '叱'), - (0x2F83B, 'M', '吆'), - (0x2F83C, 'M', '咞'), - (0x2F83D, 'M', '吸'), - (0x2F83E, 'M', '呈'), - (0x2F83F, 'M', '周'), - (0x2F840, 'M', '咢'), - ] - -def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F841, 'M', '哶'), - (0x2F842, 'M', '唐'), - (0x2F843, 'M', '啓'), - (0x2F844, 'M', '啣'), - (0x2F845, 'M', '善'), - (0x2F847, 'M', '喙'), - (0x2F848, 'M', '喫'), - (0x2F849, 'M', '喳'), - (0x2F84A, 'M', '嗂'), - (0x2F84B, 'M', '圖'), - (0x2F84C, 'M', '嘆'), - (0x2F84D, 'M', '圗'), - (0x2F84E, 'M', '噑'), - (0x2F84F, 'M', '噴'), - (0x2F850, 'M', '切'), - (0x2F851, 'M', '壮'), - (0x2F852, 'M', '城'), - (0x2F853, 'M', '埴'), - (0x2F854, 'M', '堍'), - (0x2F855, 'M', '型'), - (0x2F856, 'M', '堲'), - (0x2F857, 'M', '報'), - (0x2F858, 'M', '墬'), - (0x2F859, 'M', '𡓤'), - (0x2F85A, 'M', '売'), - (0x2F85B, 'M', '壷'), - (0x2F85C, 'M', '夆'), - (0x2F85D, 'M', '多'), - (0x2F85E, 'M', '夢'), - (0x2F85F, 'M', '奢'), - (0x2F860, 'M', '𡚨'), - (0x2F861, 'M', '𡛪'), - (0x2F862, 'M', '姬'), - (0x2F863, 'M', '娛'), - (0x2F864, 'M', '娧'), - (0x2F865, 'M', '姘'), - (0x2F866, 'M', '婦'), - (0x2F867, 'M', '㛮'), - (0x2F868, 'X'), - (0x2F869, 'M', '嬈'), - (0x2F86A, 'M', '嬾'), - (0x2F86C, 'M', '𡧈'), - (0x2F86D, 'M', '寃'), - (0x2F86E, 'M', '寘'), - (0x2F86F, 'M', '寧'), - (0x2F870, 'M', '寳'), - (0x2F871, 'M', '𡬘'), - (0x2F872, 'M', '寿'), - (0x2F873, 'M', '将'), - (0x2F874, 'X'), - (0x2F875, 'M', '尢'), - (0x2F876, 'M', '㞁'), - (0x2F877, 'M', '屠'), - (0x2F878, 'M', '屮'), - (0x2F879, 'M', '峀'), - (0x2F87A, 'M', '岍'), - (0x2F87B, 'M', '𡷤'), - (0x2F87C, 'M', '嵃'), - (0x2F87D, 'M', '𡷦'), - (0x2F87E, 'M', '嵮'), - (0x2F87F, 'M', '嵫'), - (0x2F880, 'M', '嵼'), - (0x2F881, 'M', '巡'), - (0x2F882, 'M', '巢'), - (0x2F883, 'M', '㠯'), - (0x2F884, 'M', '巽'), - (0x2F885, 'M', '帨'), - (0x2F886, 'M', '帽'), - (0x2F887, 'M', '幩'), - (0x2F888, 'M', '㡢'), - (0x2F889, 'M', '𢆃'), - (0x2F88A, 'M', '㡼'), - (0x2F88B, 'M', '庰'), - (0x2F88C, 'M', '庳'), - (0x2F88D, 'M', '庶'), - (0x2F88E, 'M', '廊'), - (0x2F88F, 'M', '𪎒'), - (0x2F890, 'M', '廾'), - (0x2F891, 'M', '𢌱'), - (0x2F893, 'M', '舁'), - (0x2F894, 'M', '弢'), - (0x2F896, 'M', '㣇'), - (0x2F897, 'M', '𣊸'), - (0x2F898, 'M', '𦇚'), - (0x2F899, 'M', '形'), - (0x2F89A, 'M', '彫'), - (0x2F89B, 'M', '㣣'), - (0x2F89C, 'M', '徚'), - (0x2F89D, 'M', '忍'), - (0x2F89E, 'M', '志'), - (0x2F89F, 'M', '忹'), - (0x2F8A0, 'M', '悁'), - (0x2F8A1, 'M', '㤺'), - (0x2F8A2, 'M', '㤜'), - (0x2F8A3, 'M', '悔'), - (0x2F8A4, 'M', '𢛔'), - (0x2F8A5, 'M', '惇'), - (0x2F8A6, 'M', '慈'), - (0x2F8A7, 'M', '慌'), - (0x2F8A8, 'M', '慎'), - ] - -def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F8A9, 'M', '慌'), - (0x2F8AA, 'M', '慺'), - (0x2F8AB, 'M', '憎'), - (0x2F8AC, 'M', '憲'), - (0x2F8AD, 'M', '憤'), - (0x2F8AE, 'M', '憯'), - (0x2F8AF, 'M', '懞'), - (0x2F8B0, 'M', '懲'), - (0x2F8B1, 'M', '懶'), - (0x2F8B2, 'M', '成'), - (0x2F8B3, 'M', '戛'), - (0x2F8B4, 'M', '扝'), - (0x2F8B5, 'M', '抱'), - (0x2F8B6, 'M', '拔'), - (0x2F8B7, 'M', '捐'), - (0x2F8B8, 'M', '𢬌'), - (0x2F8B9, 'M', '挽'), - (0x2F8BA, 'M', '拼'), - (0x2F8BB, 'M', '捨'), - (0x2F8BC, 'M', '掃'), - (0x2F8BD, 'M', '揤'), - (0x2F8BE, 'M', '𢯱'), - (0x2F8BF, 'M', '搢'), - (0x2F8C0, 'M', '揅'), - (0x2F8C1, 'M', '掩'), - (0x2F8C2, 'M', '㨮'), - (0x2F8C3, 'M', '摩'), - (0x2F8C4, 'M', '摾'), - (0x2F8C5, 'M', '撝'), - (0x2F8C6, 'M', '摷'), - (0x2F8C7, 'M', '㩬'), - (0x2F8C8, 'M', '敏'), - (0x2F8C9, 'M', '敬'), - (0x2F8CA, 'M', '𣀊'), - (0x2F8CB, 'M', '旣'), - (0x2F8CC, 'M', '書'), - (0x2F8CD, 'M', '晉'), - (0x2F8CE, 'M', '㬙'), - (0x2F8CF, 'M', '暑'), - (0x2F8D0, 'M', '㬈'), - (0x2F8D1, 'M', '㫤'), - (0x2F8D2, 'M', '冒'), - (0x2F8D3, 'M', '冕'), - (0x2F8D4, 'M', '最'), - (0x2F8D5, 'M', '暜'), - (0x2F8D6, 'M', '肭'), - (0x2F8D7, 'M', '䏙'), - (0x2F8D8, 'M', '朗'), - (0x2F8D9, 'M', '望'), - (0x2F8DA, 'M', '朡'), - (0x2F8DB, 'M', '杞'), - (0x2F8DC, 'M', '杓'), - (0x2F8DD, 'M', '𣏃'), - (0x2F8DE, 'M', '㭉'), - (0x2F8DF, 'M', '柺'), - (0x2F8E0, 'M', '枅'), - (0x2F8E1, 'M', '桒'), - (0x2F8E2, 'M', '梅'), - (0x2F8E3, 'M', '𣑭'), - (0x2F8E4, 'M', '梎'), - (0x2F8E5, 'M', '栟'), - (0x2F8E6, 'M', '椔'), - (0x2F8E7, 'M', '㮝'), - (0x2F8E8, 'M', '楂'), - (0x2F8E9, 'M', '榣'), - (0x2F8EA, 'M', '槪'), - (0x2F8EB, 'M', '檨'), - (0x2F8EC, 'M', '𣚣'), - (0x2F8ED, 'M', '櫛'), - (0x2F8EE, 'M', '㰘'), - (0x2F8EF, 'M', '次'), - (0x2F8F0, 'M', '𣢧'), - (0x2F8F1, 'M', '歔'), - (0x2F8F2, 'M', '㱎'), - (0x2F8F3, 'M', '歲'), - (0x2F8F4, 'M', '殟'), - (0x2F8F5, 'M', '殺'), - (0x2F8F6, 'M', '殻'), - (0x2F8F7, 'M', '𣪍'), - (0x2F8F8, 'M', '𡴋'), - (0x2F8F9, 'M', '𣫺'), - (0x2F8FA, 'M', '汎'), - (0x2F8FB, 'M', '𣲼'), - (0x2F8FC, 'M', '沿'), - (0x2F8FD, 'M', '泍'), - (0x2F8FE, 'M', '汧'), - (0x2F8FF, 'M', '洖'), - (0x2F900, 'M', '派'), - (0x2F901, 'M', '海'), - (0x2F902, 'M', '流'), - (0x2F903, 'M', '浩'), - (0x2F904, 'M', '浸'), - (0x2F905, 'M', '涅'), - (0x2F906, 'M', '𣴞'), - (0x2F907, 'M', '洴'), - (0x2F908, 'M', '港'), - (0x2F909, 'M', '湮'), - (0x2F90A, 'M', '㴳'), - (0x2F90B, 'M', '滋'), - (0x2F90C, 'M', '滇'), - ] - -def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F90D, 'M', '𣻑'), - (0x2F90E, 'M', '淹'), - (0x2F90F, 'M', '潮'), - (0x2F910, 'M', '𣽞'), - (0x2F911, 'M', '𣾎'), - (0x2F912, 'M', '濆'), - (0x2F913, 'M', '瀹'), - (0x2F914, 'M', '瀞'), - (0x2F915, 'M', '瀛'), - (0x2F916, 'M', '㶖'), - (0x2F917, 'M', '灊'), - (0x2F918, 'M', '災'), - (0x2F919, 'M', '灷'), - (0x2F91A, 'M', '炭'), - (0x2F91B, 'M', '𠔥'), - (0x2F91C, 'M', '煅'), - (0x2F91D, 'M', '𤉣'), - (0x2F91E, 'M', '熜'), - (0x2F91F, 'X'), - (0x2F920, 'M', '爨'), - (0x2F921, 'M', '爵'), - (0x2F922, 'M', '牐'), - (0x2F923, 'M', '𤘈'), - (0x2F924, 'M', '犀'), - (0x2F925, 'M', '犕'), - (0x2F926, 'M', '𤜵'), - (0x2F927, 'M', '𤠔'), - (0x2F928, 'M', '獺'), - (0x2F929, 'M', '王'), - (0x2F92A, 'M', '㺬'), - (0x2F92B, 'M', '玥'), - (0x2F92C, 'M', '㺸'), - (0x2F92E, 'M', '瑇'), - (0x2F92F, 'M', '瑜'), - (0x2F930, 'M', '瑱'), - (0x2F931, 'M', '璅'), - (0x2F932, 'M', '瓊'), - (0x2F933, 'M', '㼛'), - (0x2F934, 'M', '甤'), - (0x2F935, 'M', '𤰶'), - (0x2F936, 'M', '甾'), - (0x2F937, 'M', '𤲒'), - (0x2F938, 'M', '異'), - (0x2F939, 'M', '𢆟'), - (0x2F93A, 'M', '瘐'), - (0x2F93B, 'M', '𤾡'), - (0x2F93C, 'M', '𤾸'), - (0x2F93D, 'M', '𥁄'), - (0x2F93E, 'M', '㿼'), - (0x2F93F, 'M', '䀈'), - (0x2F940, 'M', '直'), - (0x2F941, 'M', '𥃳'), - (0x2F942, 'M', '𥃲'), - (0x2F943, 'M', '𥄙'), - (0x2F944, 'M', '𥄳'), - (0x2F945, 'M', '眞'), - (0x2F946, 'M', '真'), - (0x2F948, 'M', '睊'), - (0x2F949, 'M', '䀹'), - (0x2F94A, 'M', '瞋'), - (0x2F94B, 'M', '䁆'), - (0x2F94C, 'M', '䂖'), - (0x2F94D, 'M', '𥐝'), - (0x2F94E, 'M', '硎'), - (0x2F94F, 'M', '碌'), - (0x2F950, 'M', '磌'), - (0x2F951, 'M', '䃣'), - (0x2F952, 'M', '𥘦'), - (0x2F953, 'M', '祖'), - (0x2F954, 'M', '𥚚'), - (0x2F955, 'M', '𥛅'), - (0x2F956, 'M', '福'), - (0x2F957, 'M', '秫'), - (0x2F958, 'M', '䄯'), - (0x2F959, 'M', '穀'), - (0x2F95A, 'M', '穊'), - (0x2F95B, 'M', '穏'), - (0x2F95C, 'M', '𥥼'), - (0x2F95D, 'M', '𥪧'), - (0x2F95F, 'X'), - (0x2F960, 'M', '䈂'), - (0x2F961, 'M', '𥮫'), - (0x2F962, 'M', '篆'), - (0x2F963, 'M', '築'), - (0x2F964, 'M', '䈧'), - (0x2F965, 'M', '𥲀'), - (0x2F966, 'M', '糒'), - (0x2F967, 'M', '䊠'), - (0x2F968, 'M', '糨'), - (0x2F969, 'M', '糣'), - (0x2F96A, 'M', '紀'), - (0x2F96B, 'M', '𥾆'), - (0x2F96C, 'M', '絣'), - (0x2F96D, 'M', '䌁'), - (0x2F96E, 'M', '緇'), - (0x2F96F, 'M', '縂'), - (0x2F970, 'M', '繅'), - (0x2F971, 'M', '䌴'), - (0x2F972, 'M', '𦈨'), - (0x2F973, 'M', '𦉇'), - ] - -def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F974, 'M', '䍙'), - (0x2F975, 'M', '𦋙'), - (0x2F976, 'M', '罺'), - (0x2F977, 'M', '𦌾'), - (0x2F978, 'M', '羕'), - (0x2F979, 'M', '翺'), - (0x2F97A, 'M', '者'), - (0x2F97B, 'M', '𦓚'), - (0x2F97C, 'M', '𦔣'), - (0x2F97D, 'M', '聠'), - (0x2F97E, 'M', '𦖨'), - (0x2F97F, 'M', '聰'), - (0x2F980, 'M', '𣍟'), - (0x2F981, 'M', '䏕'), - (0x2F982, 'M', '育'), - (0x2F983, 'M', '脃'), - (0x2F984, 'M', '䐋'), - (0x2F985, 'M', '脾'), - (0x2F986, 'M', '媵'), - (0x2F987, 'M', '𦞧'), - (0x2F988, 'M', '𦞵'), - (0x2F989, 'M', '𣎓'), - (0x2F98A, 'M', '𣎜'), - (0x2F98B, 'M', '舁'), - (0x2F98C, 'M', '舄'), - (0x2F98D, 'M', '辞'), - (0x2F98E, 'M', '䑫'), - (0x2F98F, 'M', '芑'), - (0x2F990, 'M', '芋'), - (0x2F991, 'M', '芝'), - (0x2F992, 'M', '劳'), - (0x2F993, 'M', '花'), - (0x2F994, 'M', '芳'), - (0x2F995, 'M', '芽'), - (0x2F996, 'M', '苦'), - (0x2F997, 'M', '𦬼'), - (0x2F998, 'M', '若'), - (0x2F999, 'M', '茝'), - (0x2F99A, 'M', '荣'), - (0x2F99B, 'M', '莭'), - (0x2F99C, 'M', '茣'), - (0x2F99D, 'M', '莽'), - (0x2F99E, 'M', '菧'), - (0x2F99F, 'M', '著'), - (0x2F9A0, 'M', '荓'), - (0x2F9A1, 'M', '菊'), - (0x2F9A2, 'M', '菌'), - (0x2F9A3, 'M', '菜'), - (0x2F9A4, 'M', '𦰶'), - (0x2F9A5, 'M', '𦵫'), - (0x2F9A6, 'M', '𦳕'), - (0x2F9A7, 'M', '䔫'), - (0x2F9A8, 'M', '蓱'), - (0x2F9A9, 'M', '蓳'), - (0x2F9AA, 'M', '蔖'), - (0x2F9AB, 'M', '𧏊'), - (0x2F9AC, 'M', '蕤'), - (0x2F9AD, 'M', '𦼬'), - (0x2F9AE, 'M', '䕝'), - (0x2F9AF, 'M', '䕡'), - (0x2F9B0, 'M', '𦾱'), - (0x2F9B1, 'M', '𧃒'), - (0x2F9B2, 'M', '䕫'), - (0x2F9B3, 'M', '虐'), - (0x2F9B4, 'M', '虜'), - (0x2F9B5, 'M', '虧'), - (0x2F9B6, 'M', '虩'), - (0x2F9B7, 'M', '蚩'), - (0x2F9B8, 'M', '蚈'), - (0x2F9B9, 'M', '蜎'), - (0x2F9BA, 'M', '蛢'), - (0x2F9BB, 'M', '蝹'), - (0x2F9BC, 'M', '蜨'), - (0x2F9BD, 'M', '蝫'), - (0x2F9BE, 'M', '螆'), - (0x2F9BF, 'X'), - (0x2F9C0, 'M', '蟡'), - (0x2F9C1, 'M', '蠁'), - (0x2F9C2, 'M', '䗹'), - (0x2F9C3, 'M', '衠'), - (0x2F9C4, 'M', '衣'), - (0x2F9C5, 'M', '𧙧'), - (0x2F9C6, 'M', '裗'), - (0x2F9C7, 'M', '裞'), - (0x2F9C8, 'M', '䘵'), - (0x2F9C9, 'M', '裺'), - (0x2F9CA, 'M', '㒻'), - (0x2F9CB, 'M', '𧢮'), - (0x2F9CC, 'M', '𧥦'), - (0x2F9CD, 'M', '䚾'), - (0x2F9CE, 'M', '䛇'), - (0x2F9CF, 'M', '誠'), - (0x2F9D0, 'M', '諭'), - (0x2F9D1, 'M', '變'), - (0x2F9D2, 'M', '豕'), - (0x2F9D3, 'M', '𧲨'), - (0x2F9D4, 'M', '貫'), - (0x2F9D5, 'M', '賁'), - (0x2F9D6, 'M', '贛'), - (0x2F9D7, 'M', '起'), - ] - -def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F9D8, 'M', '𧼯'), - (0x2F9D9, 'M', '𠠄'), - (0x2F9DA, 'M', '跋'), - (0x2F9DB, 'M', '趼'), - (0x2F9DC, 'M', '跰'), - (0x2F9DD, 'M', '𠣞'), - (0x2F9DE, 'M', '軔'), - (0x2F9DF, 'M', '輸'), - (0x2F9E0, 'M', '𨗒'), - (0x2F9E1, 'M', '𨗭'), - (0x2F9E2, 'M', '邔'), - (0x2F9E3, 'M', '郱'), - (0x2F9E4, 'M', '鄑'), - (0x2F9E5, 'M', '𨜮'), - (0x2F9E6, 'M', '鄛'), - (0x2F9E7, 'M', '鈸'), - (0x2F9E8, 'M', '鋗'), - (0x2F9E9, 'M', '鋘'), - (0x2F9EA, 'M', '鉼'), - (0x2F9EB, 'M', '鏹'), - (0x2F9EC, 'M', '鐕'), - (0x2F9ED, 'M', '𨯺'), - (0x2F9EE, 'M', '開'), - (0x2F9EF, 'M', '䦕'), - (0x2F9F0, 'M', '閷'), - (0x2F9F1, 'M', '𨵷'), - (0x2F9F2, 'M', '䧦'), - (0x2F9F3, 'M', '雃'), - (0x2F9F4, 'M', '嶲'), - (0x2F9F5, 'M', '霣'), - (0x2F9F6, 'M', '𩅅'), - (0x2F9F7, 'M', '𩈚'), - (0x2F9F8, 'M', '䩮'), - (0x2F9F9, 'M', '䩶'), - (0x2F9FA, 'M', '韠'), - (0x2F9FB, 'M', '𩐊'), - (0x2F9FC, 'M', '䪲'), - (0x2F9FD, 'M', '𩒖'), - (0x2F9FE, 'M', '頋'), - (0x2FA00, 'M', '頩'), - (0x2FA01, 'M', '𩖶'), - (0x2FA02, 'M', '飢'), - (0x2FA03, 'M', '䬳'), - (0x2FA04, 'M', '餩'), - (0x2FA05, 'M', '馧'), - (0x2FA06, 'M', '駂'), - (0x2FA07, 'M', '駾'), - (0x2FA08, 'M', '䯎'), - (0x2FA09, 'M', '𩬰'), - (0x2FA0A, 'M', '鬒'), - (0x2FA0B, 'M', '鱀'), - (0x2FA0C, 'M', '鳽'), - (0x2FA0D, 'M', '䳎'), - (0x2FA0E, 'M', '䳭'), - (0x2FA0F, 'M', '鵧'), - (0x2FA10, 'M', '𪃎'), - (0x2FA11, 'M', '䳸'), - (0x2FA12, 'M', '𪄅'), - (0x2FA13, 'M', '𪈎'), - (0x2FA14, 'M', '𪊑'), - (0x2FA15, 'M', '麻'), - (0x2FA16, 'M', '䵖'), - (0x2FA17, 'M', '黹'), - (0x2FA18, 'M', '黾'), - (0x2FA19, 'M', '鼅'), - (0x2FA1A, 'M', '鼏'), - (0x2FA1B, 'M', '鼖'), - (0x2FA1C, 'M', '鼻'), - (0x2FA1D, 'M', '𪘀'), - (0x2FA1E, 'X'), - (0x30000, 'V'), - (0x3134B, 'X'), - (0x31350, 'V'), - (0x323B0, 'X'), - (0xE0100, 'I'), - (0xE01F0, 'X'), - ] - -uts46data = tuple( - _seg_0() - + _seg_1() - + _seg_2() - + _seg_3() - + _seg_4() - + _seg_5() - + _seg_6() - + _seg_7() - + _seg_8() - + _seg_9() - + _seg_10() - + _seg_11() - + _seg_12() - + _seg_13() - + _seg_14() - + _seg_15() - + _seg_16() - + _seg_17() - + _seg_18() - + _seg_19() - + _seg_20() - + _seg_21() - + _seg_22() - + _seg_23() - + _seg_24() - + _seg_25() - + _seg_26() - + _seg_27() - + _seg_28() - + _seg_29() - + _seg_30() - + _seg_31() - + _seg_32() - + _seg_33() - + _seg_34() - + _seg_35() - + _seg_36() - + _seg_37() - + _seg_38() - + _seg_39() - + _seg_40() - + _seg_41() - + _seg_42() - + _seg_43() - + _seg_44() - + _seg_45() - + _seg_46() - + _seg_47() - + _seg_48() - + _seg_49() - + _seg_50() - + _seg_51() - + _seg_52() - + _seg_53() - + _seg_54() - + _seg_55() - + _seg_56() - + _seg_57() - + _seg_58() - + _seg_59() - + _seg_60() - + _seg_61() - + _seg_62() - + _seg_63() - + _seg_64() - + _seg_65() - + _seg_66() - + _seg_67() - + _seg_68() - + _seg_69() - + _seg_70() - + _seg_71() - + _seg_72() - + _seg_73() - + _seg_74() - + _seg_75() - + _seg_76() - + _seg_77() - + _seg_78() - + _seg_79() - + _seg_80() - + _seg_81() -) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/LICENSE b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/LICENSE deleted file mode 100644 index 00b2401..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 The Kubernetes Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/METADATA b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/METADATA deleted file mode 100644 index 50dc941..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/METADATA +++ /dev/null @@ -1,40 +0,0 @@ -Metadata-Version: 2.1 -Name: kubernetes -Version: 29.0.0 -Summary: Kubernetes python client -Home-page: https://github.com/kubernetes-client/python -Author: Kubernetes -Author-email: -License: Apache License Version 2.0 -Keywords: Swagger,OpenAPI,Kubernetes -Classifier: Development Status :: 5 - Production/Stable -Classifier: Topic :: Utilities -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: Information Technology -Classifier: License :: OSI Approved :: Apache Software License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Requires-Python: >=3.6 -License-File: LICENSE -Requires-Dist: certifi >=14.05.14 -Requires-Dist: six >=1.9.0 -Requires-Dist: python-dateutil >=2.5.3 -Requires-Dist: pyyaml >=5.4.1 -Requires-Dist: google-auth >=1.0.1 -Requires-Dist: websocket-client !=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 -Requires-Dist: requests -Requires-Dist: requests-oauthlib -Requires-Dist: oauthlib >=3.2.2 -Requires-Dist: urllib3 >=1.24.2 -Requires-Dist: ipaddress >=1.0.17 ; python_version=="2.7" -Provides-Extra: adal -Requires-Dist: adal >=1.0.2 ; extra == 'adal' - -Python client for kubernetes http://kubernetes.io/ diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/RECORD b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/RECORD deleted file mode 100644 index 84691e5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/RECORD +++ /dev/null @@ -1,1341 +0,0 @@ -kubernetes-29.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -kubernetes-29.0.0.dist-info/LICENSE,sha256=X1Kn-eahP3zk7IT-cvvx96mCe-6F3ZkQJqqsz-K9ZVw,11354 -kubernetes-29.0.0.dist-info/METADATA,sha256=3WTRmzYG8gSqV9zvsu0FoQ-IivlolUp8QXPD62pdDmw,1517 -kubernetes-29.0.0.dist-info/RECORD,, -kubernetes-29.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -kubernetes-29.0.0.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110 -kubernetes-29.0.0.dist-info/top_level.txt,sha256=lfBi9Orzf5WO-d6GHVm37K5NUUH5hLOCYOz66nbEnGM,11 -kubernetes/__init__.py,sha256=5U46fHPRlFqRvcgeQ4VRqZVJDgIrogXWOQ0ezTtycIs,844 -kubernetes/__pycache__/__init__.cpython-310.pyc,, -kubernetes/client/__init__.py,sha256=A3pmEIs-RXRKjOYSqxyOuNQDsghcG0KlqiiirK_HkUg,52424 -kubernetes/client/__pycache__/__init__.cpython-310.pyc,, -kubernetes/client/__pycache__/api_client.cpython-310.pyc,, -kubernetes/client/__pycache__/configuration.cpython-310.pyc,, -kubernetes/client/__pycache__/exceptions.cpython-310.pyc,, -kubernetes/client/__pycache__/rest.cpython-310.pyc,, -kubernetes/client/api/__init__.py,sha256=GPT6mx1BELIJ-qjyvq2gxdBiKLh8OePrWQCoqWHbFJ4,4200 -kubernetes/client/api/__pycache__/__init__.cpython-310.pyc,, -kubernetes/client/api/__pycache__/admissionregistration_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/admissionregistration_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/admissionregistration_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/admissionregistration_v1beta1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apiextensions_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apiextensions_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apiregistration_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apiregistration_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apis_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apps_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/apps_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authentication_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authentication_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authentication_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authentication_v1beta1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authorization_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/authorization_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/autoscaling_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/autoscaling_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/autoscaling_v2_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/batch_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/batch_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/certificates_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/certificates_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/certificates_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/coordination_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/coordination_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/core_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/core_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/custom_objects_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/discovery_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/discovery_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/events_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/events_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/flowcontrol_apiserver_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/flowcontrol_apiserver_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/flowcontrol_apiserver_v1beta3_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/internal_apiserver_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/internal_apiserver_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/logs_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/networking_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/networking_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/networking_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/node_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/node_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/openid_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/policy_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/policy_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/rbac_authorization_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/rbac_authorization_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/resource_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/resource_v1alpha2_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/scheduling_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/scheduling_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/storage_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/storage_v1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/storage_v1alpha1_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/version_api.cpython-310.pyc,, -kubernetes/client/api/__pycache__/well_known_api.cpython-310.pyc,, -kubernetes/client/api/admissionregistration_api.py,sha256=57ZFOuZ6oQBA_b0z4V6u2MePzOaSlIsQVpIQ1181qMw,5215 -kubernetes/client/api/admissionregistration_v1_api.py,sha256=boWClFNgcG03Gks1FZESzDIkmo8rLWgJnuF0a9Q2sQc,181587 -kubernetes/client/api/admissionregistration_v1alpha1_api.py,sha256=QVWElHxznq2L9YtuAYbt7S_yvkFgnpTaR4xiQymX900,209939 -kubernetes/client/api/admissionregistration_v1beta1_api.py,sha256=1kaC2tbyTHLm8GKwvHm9TnATQ9ScNIsBvIAxrLA4io0,209871 -kubernetes/client/api/apiextensions_api.py,sha256=s_gI669Jzg1-PqGbK2ei_8l9Pb0RqWwKp1bzAzqGuc4,5199 -kubernetes/client/api/apiextensions_v1_api.py,sha256=2aRUMyoze78Ha1IUrApOm6WlVKmHV8i-6ynLWld-I6w,120703 -kubernetes/client/api/apiregistration_api.py,sha256=CX6MnyRY0IEXTMdNY-iG4MQW33E0NZ0VtcnrHRh93wc,5203 -kubernetes/client/api/apiregistration_v1_api.py,sha256=SRl72p5wDXjQ0-BgdghMlL_Sj6ge-342pfxVV_ot568,118315 -kubernetes/client/api/apis_api.py,sha256=GPc3rRvZLm8-A4zTH5SkW5RQui5z7Ppig0bTJgzgMTw,5205 -kubernetes/client/api/apps_api.py,sha256=VGkCIbMwtPmKndkSq71EvKvyIyJQ8VNuKr92sD9Waec,5174 -kubernetes/client/api/apps_v1_api.py,sha256=bjrpTui4oSsPbuTp35qiwNF373oR-SWzUNxr1UQvNTA,772205 -kubernetes/client/api/authentication_api.py,sha256=RrOXs2lCdOSkIJv70yr-fUjpMbefNX0FBb_SkzNFVi4,5201 -kubernetes/client/api/authentication_v1_api.py,sha256=LgExwxIez4LfxBe-bK4NfH3nh6LmNUqD8RtKUm73pC0,24010 -kubernetes/client/api/authentication_v1alpha1_api.py,sha256=0WoLP2ViS_rmk7OykgZz7aoH8uFwVrjcKDXE1Lf_vKc,14735 -kubernetes/client/api/authentication_v1beta1_api.py,sha256=-jG-102Fgy4_jIzJMYmm34hP_QNWCG8QzBkNbwPKJ2A,14727 -kubernetes/client/api/authorization_api.py,sha256=wnKkXcoTcvWKks3jB3y0cRACdwNvt9II6kbVlzijgUE,5199 -kubernetes/client/api/authorization_v1_api.py,sha256=nk1TlI5rEXDmSYa4Wl2a3owHCXZkfwim5VvwNQMJ5b4,44309 -kubernetes/client/api/autoscaling_api.py,sha256=SsdXdGExRzENyh7x7mcX1SuA7HfmB0WbJVFxBwCc3so,5188 -kubernetes/client/api/autoscaling_v1_api.py,sha256=TMNF3V6iLs1Zvlq-1MvJDJH4J4AMA60WDVt5GzhnYYY,149207 -kubernetes/client/api/autoscaling_v2_api.py,sha256=P9Vdw21H7JJHmmhEafI7oNIYyOQCaHUZKsexRtc-U9M,149207 -kubernetes/client/api/batch_api.py,sha256=Tord3vpPtd5otV2hZFnejwJLI54C-nrPvOmhM7Lm2dM,5176 -kubernetes/client/api/batch_v1_api.py,sha256=hsHjsoXUgcQZaYQ1a6NJ-l39_I5-XemczHS5N-QdF8Q,285860 -kubernetes/client/api/certificates_api.py,sha256=2a6tyFsPJ8aVdzpd8Ypmk4vf3xSl4RLJYooc2lso3Ws,5197 -kubernetes/client/api/certificates_v1_api.py,sha256=PiJaQ1myB4Cnp7x-2kqzN9jp5VvLCqNLwnbIJnxAiqI,148888 -kubernetes/client/api/certificates_v1alpha1_api.py,sha256=HTDGMfxWfM9xiQgsbHb1pM8INKo-vEapUi1loqhAezI,92293 -kubernetes/client/api/coordination_api.py,sha256=7S12Ns_tE1fA5OzcLxso2dKTSsvoDtHRoUjDoU7aHaM,5197 -kubernetes/client/api/coordination_v1_api.py,sha256=Neq1Zmbf5_--gOl-5b3C-utFFd1JhV4AiGpzr7MM3_8,116015 -kubernetes/client/api/core_api.py,sha256=5yJzFBZzyVnttLd1L8-2kokWaKnLLFPXnoVULMK_wF8,5201 -kubernetes/client/api/core_v1_api.py,sha256=4q9Ve-tQdoLr_3YgfIdL61vopsirUQtUgmR7N6xrmNY,2283504 -kubernetes/client/api/custom_objects_api.py,sha256=qG9if00OZiVLLO_7mKYX3njWHCGlBCwMJdutpTeZI6w,315813 -kubernetes/client/api/discovery_api.py,sha256=QUrmnYE4g4azN6shZR1Tnl_fMq1VHZyDOgEaYHYaEeA,5191 -kubernetes/client/api/discovery_v1_api.py,sha256=tzAP_Cop3BglO7D8j6USuoiAc3xk7PeomJU2aMU1fuk,117123 -kubernetes/client/api/events_api.py,sha256=e8ocNBEl7d39OtikvcNAZpxL_OY9jNwlynoa8CI-UAI,5185 -kubernetes/client/api/events_v1_api.py,sha256=KReh47vuV6HcuDVAOcB_U-VlDSidCnA5mVCbIqFnIQs,116091 -kubernetes/client/api/flowcontrol_apiserver_api.py,sha256=BSYC7PA6iyTpNIK3KL_ZX8BKro9vPqeO-5Ey45TIwVk,5214 -kubernetes/client/api/flowcontrol_apiserver_v1_api.py,sha256=z0gNDbyn53FTaTcU9CdS0ApeFecswVl5NiI4icBvhp0,234246 -kubernetes/client/api/flowcontrol_apiserver_v1beta3_api.py,sha256=lwFitfZC7LRH3wIyFAaZRZ160XIZMQsKou2SXa4dMlc,234656 -kubernetes/client/api/internal_apiserver_api.py,sha256=xOR0vYSWkDF4P_R6OGjP6H5nJxrbDqqcWWF7kOeDiiI,5208 -kubernetes/client/api/internal_apiserver_v1alpha1_api.py,sha256=0dQ-L7CxkFsxwKDOoFuE3V3iyuftlfEn4n-Bv7TJ-tQ,119262 -kubernetes/client/api/logs_api.py,sha256=QYCkqYJHfWTb8mvSPgdySG-Xl87NDS7A0MwBh9KuCZ8,9507 -kubernetes/client/api/networking_api.py,sha256=6w-HlkPaYQeftnZF7tCkBchbxpp99fxLPXl1KAM_9uI,5193 -kubernetes/client/api/networking_v1_api.py,sha256=QBJGku8JQKSzggQZEsraSoeOHmh9dKsSFcHQUr4WOzI,344069 -kubernetes/client/api/networking_v1alpha1_api.py,sha256=XKkMje82CB-bY3T7iexzSmWCt2f_gNacOTMzg3eY40I,204636 -kubernetes/client/api/node_api.py,sha256=dlBZrrASkmuPwkZ1VltjqSIQMRhBHzERiTnA3Cb0W7Y,5181 -kubernetes/client/api/node_v1_api.py,sha256=y__jLDDeABJkSwugF7bW0YzmvXA5JC6e_LUGS2DVUbs,91331 -kubernetes/client/api/openid_api.py,sha256=AoVpV1rPcE-qQKlOB8DjO6kFBYa5sbJKRuhq5laIAbE,5464 -kubernetes/client/api/policy_api.py,sha256=r0ZEn0uEDzvD8YHElGSwZQOR3hSJcY-xpGgNBva69SM,5178 -kubernetes/client/api/policy_v1_api.py,sha256=2unex1qF8H9J_wKnbH9GfhsuqGblEcy2q9PTzpLfeJw,148382 -kubernetes/client/api/rbac_authorization_api.py,sha256=xxJsRyxzr4NvSD_82_VVfVb34WEavHdsCo0onRPTr00,5208 -kubernetes/client/api/rbac_authorization_v1_api.py,sha256=hw132A0VmtQlJ_2mQyLhgWVJzAzM6BtiXUaim4Ct9QU,400622 -kubernetes/client/api/resource_api.py,sha256=nCLn29X_3YLB0t78Ac3YnRS6pdGX8-HcH4tBfTA--7k,5189 -kubernetes/client/api/resource_v1alpha2_api.py,sha256=GYDYZgpFpvblYwfuhxXo5vjeiXnD9scLnwwsgXYUVIg,490999 -kubernetes/client/api/scheduling_api.py,sha256=nW9ngA92uJ0pi93dBMo29zRuzvO2fMmeOEKdS0_s2Fg,5193 -kubernetes/client/api/scheduling_v1_api.py,sha256=jYMkX2i-YP6uWVlTjP-gERiu2JYXf7hcPXEv3oG3I_g,91496 -kubernetes/client/api/storage_api.py,sha256=v5UGf55sa8GN8AQuBty1N5DTFPOMgUCQjOz2Q65_iGY,5187 -kubernetes/client/api/storage_v1_api.py,sha256=Q1XBWQ8ZbOqJZgFA5vscf7iWj95CqKQQRrFawSJPmcc,489332 -kubernetes/client/api/storage_v1alpha1_api.py,sha256=9vKM0FuF1v50rI6d7q_CRKkKcGxl728a_IRw4dFVnew,92651 -kubernetes/client/api/version_api.py,sha256=yA284tPbPcdvh3a_jDLbz21394GEUjQ3xzHv0lUTK4o,5067 -kubernetes/client/api/well_known_api.py,sha256=s-ViZnBujnTsf-M9hgS6lLNZlmcVtboiu7B9UOaLezI,5523 -kubernetes/client/api_client.py,sha256=CFBApUwHD6dbM5VBGeH4iqfXrucplY4i0oJZFhcjMpw,25581 -kubernetes/client/apis/__init__.py,sha256=7YOy2L56gwx6GKnESDPIZfVc1AORwFeTivDv6pE1Pyo,435 -kubernetes/client/apis/__pycache__/__init__.cpython-310.pyc,, -kubernetes/client/configuration.py,sha256=MFtGrvogCsQfHwzKzZ4Fg3UyRSXlrqwDJQYDHKlCZHE,13482 -kubernetes/client/exceptions.py,sha256=rbYmoIrMZf8M4DGuwddv2PAsSG-buI0GuN5_9eoHhgo,3794 -kubernetes/client/models/__init__.py,sha256=mzb24dxcQXTTjO9JouaKdmevFaFr_JyoDofY2ZEeZ1Y,47853 -kubernetes/client/models/__pycache__/__init__.cpython-310.pyc,, -kubernetes/client/models/__pycache__/admissionregistration_v1_service_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/admissionregistration_v1_webhook_client_config.cpython-310.pyc,, -kubernetes/client/models/__pycache__/apiextensions_v1_service_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/apiextensions_v1_webhook_client_config.cpython-310.pyc,, -kubernetes/client/models/__pycache__/apiregistration_v1_service_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/authentication_v1_token_request.cpython-310.pyc,, -kubernetes/client/models/__pycache__/core_v1_endpoint_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/core_v1_event.cpython-310.pyc,, -kubernetes/client/models/__pycache__/core_v1_event_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/core_v1_event_series.cpython-310.pyc,, -kubernetes/client/models/__pycache__/discovery_v1_endpoint_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/events_v1_event.cpython-310.pyc,, -kubernetes/client/models/__pycache__/events_v1_event_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/events_v1_event_series.cpython-310.pyc,, -kubernetes/client/models/__pycache__/flowcontrol_v1_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/rbac_v1_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/storage_v1_token_request.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_affinity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_aggregation_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_group.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_group_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_resource.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_resource_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_service.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_service_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_service_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_service_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_service_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_api_versions.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_attached_volume.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_aws_elastic_block_store_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_azure_disk_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_azure_file_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_azure_file_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_binding.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_bound_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_capabilities.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ceph_fs_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ceph_fs_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_certificate_signing_request.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_certificate_signing_request_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_certificate_signing_request_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_certificate_signing_request_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_certificate_signing_request_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cinder_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cinder_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_claim_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_client_ip_config.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cluster_role.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cluster_role_binding.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cluster_role_binding_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cluster_role_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cluster_trust_bundle_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_component_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_component_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_component_status_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_env_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_key_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_node_config_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_config_map_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_image.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_resize_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_state.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_state_running.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_state_terminated.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_state_waiting.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_container_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_controller_revision.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_controller_revision_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cron_job.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cron_job_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cron_job_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cron_job_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_cross_version_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_driver.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_driver_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_driver_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_node.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_node_driver.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_node_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_node_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_storage_capacity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_storage_capacity_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_csi_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_column_definition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_conversion.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_names.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_definition_version.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_subresource_scale.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_subresources.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_custom_resource_validation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_endpoint.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_daemon_set_update_strategy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_delete_options.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_deployment_strategy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_downward_api_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_downward_api_volume_file.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_downward_api_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_empty_dir_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_address.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_conditions.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_hints.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_slice.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_slice_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoint_subset.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoints.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_endpoints_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_env_from_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_env_var.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_env_var_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ephemeral_container.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ephemeral_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_event_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_eviction.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_exec_action.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_exempt_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_external_documentation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_fc_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flex_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flex_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flocker_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_distinguisher_method.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_schema.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_schema_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_schema_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_schema_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_flow_schema_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_for_zone.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_gce_persistent_disk_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_git_repo_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_glusterfs_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_glusterfs_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_group_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_group_version_for_discovery.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_grpc_action.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_host_alias.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_host_ip.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_host_path_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_http_get_action.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_http_header.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_http_ingress_path.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_http_ingress_rule_value.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_backend.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_class_parameters_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_class_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_load_balancer_ingress.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_load_balancer_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_port_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_service_backend.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ingress_tls.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_ip_block.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_iscsi_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_iscsi_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_job_template_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_json_schema_props.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_key_to_path.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_label_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_label_selector_requirement.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_lease.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_lease_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_lease_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_lifecycle.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_lifecycle_handler.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limit_range.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limit_range_item.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limit_range_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limit_range_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limit_response.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_limited_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_list_meta.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_load_balancer_ingress.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_load_balancer_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_local_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_local_subject_access_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_local_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_managed_fields_entry.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_match_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_modify_volume_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_mutating_webhook.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_mutating_webhook_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_mutating_webhook_configuration_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_namespace.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_namespace_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_namespace_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_namespace_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_namespace_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_egress_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_ingress_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_peer.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_network_policy_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_nfs_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_address.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_affinity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_config_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_config_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_daemon_endpoints.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_selector_requirement.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_selector_term.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_node_system_info.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_non_resource_attributes.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_non_resource_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_non_resource_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_object_field_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_object_meta.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_overhead.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_owner_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_template.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_claim_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_persistent_volume_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_photon_persistent_disk_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_affinity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_affinity_term.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_anti_affinity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_disruption_budget.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_disruption_budget_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_disruption_budget_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_disruption_budget_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_dns_config.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_dns_config_option.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_failure_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_exit_codes_requirement.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_pod_conditions_pattern.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_failure_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_ip.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_os.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_readiness_gate.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_resource_claim.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_resource_claim_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_scheduling_gate.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_security_context.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_template.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_template_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_pod_template_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_policy_rules_with_subjects.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_port_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_portworx_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_preconditions.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_preferred_scheduling_term.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_priority_level_configuration_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_probe.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_projected_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_queuing_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_quobyte_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rbd_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rbd_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replica_set.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replica_set_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replica_set_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replica_set_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replica_set_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replication_controller.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replication_controller_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replication_controller_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replication_controller_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_replication_controller_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_attributes.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_claim.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_field_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_quota.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_quota_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_quota_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_quota_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_requirements.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_resource_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_role.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_role_binding.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_role_binding_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_role_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_role_ref.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rolling_update_daemon_set.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rolling_update_deployment.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rolling_update_stateful_set_strategy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_rule_with_operations.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_runtime_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_runtime_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scale.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scale_io_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scale_io_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scale_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scale_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scheduling.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scope_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_scoped_resource_selector_requirement.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_se_linux_options.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_seccomp_profile.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_env_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_key_selector.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_secret_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_security_context.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_access_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_access_review_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_rules_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_self_subject_rules_review_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_server_address_by_client_cidr.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_account.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_account_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_account_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_account_token_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_backend_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_port.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_service_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_session_affinity_config.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_sleep_action.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_ordinals.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_persistent_volume_claim_retention_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_stateful_set_update_strategy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_status_cause.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_status_details.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_storage_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_storage_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_storage_os_persistent_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_storage_os_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_subject_access_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_subject_access_review_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_subject_access_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_subject_rules_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_sysctl.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_taint.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_tcp_socket_action.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_token_request_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_token_request_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_token_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_token_review_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_token_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_toleration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_topology_selector_label_requirement.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_topology_selector_term.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_topology_spread_constraint.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_typed_local_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_typed_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_uncounted_terminated_pods.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_user_info.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_user_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_validating_webhook.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_validating_webhook_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_validating_webhook_configuration_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_validation_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_attachment.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_attachment_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_attachment_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_attachment_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_attachment_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_device.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_error.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_mount.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_node_affinity.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_node_resources.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_projection.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_volume_resource_requirements.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_vsphere_virtual_disk_volume_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_watch_event.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_webhook_conversion.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_weighted_pod_affinity_term.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1_windows_security_context_options.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_audit_annotation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_expression_warning.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_ip_address.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_ip_address_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_ip_address_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_match_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_match_resources.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_named_rule_with_operations.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_param_kind.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_param_ref.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_parent_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_self_subject_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_self_subject_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_server_storage_version.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_service_cidr.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_service_cidr_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_service_cidr_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_service_cidr_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_storage_version.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_storage_version_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_storage_version_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_storage_version_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_type_checking.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_validation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_variable.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_allocation_result.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_consumer_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_parameters_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_scheduling_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_class.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_class_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_class_parameters_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1alpha2_resource_handle.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_audit_annotation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_expression_warning.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_match_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_match_resources.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_named_rule_with_operations.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_param_kind.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_param_ref.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_self_subject_review.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_self_subject_review_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_type_checking.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_validation.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta1_variable.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_exempt_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_distinguisher_method.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_schema.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_schema_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_schema_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_schema_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_flow_schema_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_group_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_limit_response.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_limited_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_non_resource_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_policy_rules_with_subjects.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_queuing_configuration.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_resource_policy_rule.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_service_account_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v1beta3_user_subject.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_container_resource_metric_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_container_resource_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_cross_version_object_reference.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_external_metric_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_external_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_behavior.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_condition.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_list.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_hpa_scaling_policy.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_hpa_scaling_rules.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_metric_identifier.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_metric_spec.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_metric_target.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_metric_value_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_object_metric_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_object_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_pods_metric_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_pods_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_resource_metric_source.cpython-310.pyc,, -kubernetes/client/models/__pycache__/v2_resource_metric_status.cpython-310.pyc,, -kubernetes/client/models/__pycache__/version_info.cpython-310.pyc,, -kubernetes/client/models/admissionregistration_v1_service_reference.py,sha256=7UuVhVl-XY_rEsl-5XBOo6JsmNsnw5brkhwkyKOJ5j8,6812 -kubernetes/client/models/admissionregistration_v1_webhook_client_config.py,sha256=CKgEBrfVaSBU5Cf0l4VXaO1qLY-m8WkiyhiDcB6Xm4Q,8236 -kubernetes/client/models/apiextensions_v1_service_reference.py,sha256=qoTonw-9PQZkK8vfyc4571mvqUNE5sFGmUxb4zWxqD0,6646 -kubernetes/client/models/apiextensions_v1_webhook_client_config.py,sha256=2hWPaanh9qoX0WVjrZEtuhbHFx2syA0bmINbt1gi260,8076 -kubernetes/client/models/apiregistration_v1_service_reference.py,sha256=if6Zw8N9UUgPIMBD-20hP_tGe1efMvsuec2xRCBRmnY,5462 -kubernetes/client/models/authentication_v1_token_request.py,sha256=o9kPeS3wmAu5iP1RnyhHzyFw4SeK9OUT3d59aJqfLxw,7746 -kubernetes/client/models/core_v1_endpoint_port.py,sha256=Fbkerxstuxze1Ejm0eYe0o0N4KuhOL2YpGgvoCm3krE,7954 -kubernetes/client/models/core_v1_event.py,sha256=gLK5N6kOkbNn0WWFi_a7Cdlk-BiwlTkJqDVaLAo9i5Q,17942 -kubernetes/client/models/core_v1_event_list.py,sha256=HE9v5wfERnwxD43jeJQuNUEeSat9EpH_aJe3myOhkz4,6840 -kubernetes/client/models/core_v1_event_series.py,sha256=JWLIRDpkgNCNl1NSgIVWEDw1MYPFSlepy6aR2dR7ZIU,4514 -kubernetes/client/models/discovery_v1_endpoint_port.py,sha256=GXbrWEUbVbbCpihWiCQZWA6gW0ggtLF5CdvjsIEWC78,8798 -kubernetes/client/models/events_v1_event.py,sha256=PD0GYlwKnPGzclxeXEGmsBByc7vQhONObPQvsK-Y724,19892 -kubernetes/client/models/events_v1_event_list.py,sha256=-3qAu3WrGIQu3GjT9wjvHtLOBo3Fotms2QQ9pgMSLm0,6926 -kubernetes/client/models/events_v1_event_series.py,sha256=bFIoSlNEJbVbCUkwebAFGyyq0aWWs1SSYokjVk6oEgQ,5001 -kubernetes/client/models/flowcontrol_v1_subject.py,sha256=u09ZDVmaLa1PaLo9xySFQcAbVhDqLncF-WvukcOV_m8,5859 -kubernetes/client/models/rbac_v1_subject.py,sha256=fMUz0EXRR86d4j0Og5k2V8wEwxWdACPi1MplsfFchJM,6882 -kubernetes/client/models/storage_v1_token_request.py,sha256=Q73xjx3Cvy0GNoRHM-TlkzLGhgJwRGbSezcWXgiERtU,5134 -kubernetes/client/models/v1_affinity.py,sha256=_jNueYKm2P5a0Ltbz_ToBNhQeGNxp9vN9dPl3djU7E8,5091 -kubernetes/client/models/v1_aggregation_rule.py,sha256=1MgcPjVFqFdHQ59rWrD7KNqODxI5H52xa-EsvsQvSE0,4142 -kubernetes/client/models/v1_api_group.py,sha256=Q3N3EznNi2Oyy5fnk1t-9ilu-IOpfcWvGvVB77VhS2k,10450 -kubernetes/client/models/v1_api_group_list.py,sha256=0uGa5BTd6fUWplwzh4dEdXdCOCpqahB_JeOwG3w6TRE,6182 -kubernetes/client/models/v1_api_resource.py,sha256=TO9JKOBRCwjvf3_p5Sd1IlaV3kMZif_FGCRD9eXlpiM,13876 -kubernetes/client/models/v1_api_resource_list.py,sha256=A9nzCYRuRNVn7UAJhqMv2pgv6lQe9WI0FkP-5tLX8ag,7505 -kubernetes/client/models/v1_api_service.py,sha256=nKEoqyhBfbVpdDXJ1CFK2DiT3nL8gBQhLmS6nEzqHd4,7196 -kubernetes/client/models/v1_api_service_condition.py,sha256=2iYU2pIETUMBa8wQ7JraTTFeb841HlHZbYdm761ru6s,7405 -kubernetes/client/models/v1_api_service_list.py,sha256=oB8dHrE4S4JfVSnwMzwhvhhdsjFMiQXq0PniFZ65DNw,6897 -kubernetes/client/models/v1_api_service_spec.py,sha256=WgsqRtVjsn782cydwU78LKLy1t5yb8g0HrOWauHK6ro,13305 -kubernetes/client/models/v1_api_service_status.py,sha256=4I3-0ED6sD7jP64IikNOCJPkX8JCmHXlyJ_F5JSdcsc,3626 -kubernetes/client/models/v1_api_versions.py,sha256=QTzrMDbJH6vloRZkbWTyliC2SFDIs3HzeU9153S-8bI,8894 -kubernetes/client/models/v1_attached_volume.py,sha256=dEw2Yz1qvQ3xtIHAFhIsbCOGSTMUle62xAlu9qLejPk,4641 -kubernetes/client/models/v1_aws_elastic_block_store_volume_source.py,sha256=bkunHUqcnsY7XVQTjfsYbVgWNL5JbY-uWeIHc3dBwns,7972 -kubernetes/client/models/v1_azure_disk_volume_source.py,sha256=iIQXZnOY_c8jbiKYTK03kxRoRmMas_mkg87Mj7udsOM,8896 -kubernetes/client/models/v1_azure_file_persistent_volume_source.py,sha256=Dqtv39CeA7DiYolMkpDNXuJ-hKT8i7LE-vI9o9MCZlY,7209 -kubernetes/client/models/v1_azure_file_volume_source.py,sha256=Na23Y9gSLFrrQKHjlGwUwSW_t5Xz59bFrQk_pnOk37k,5853 -kubernetes/client/models/v1_binding.py,sha256=hWcEEkFuEyNZrpFytMHK3wqpUfYsvnldBuZXpCS3f0g,6673 -kubernetes/client/models/v1_bound_object_reference.py,sha256=IMvuape6kafJzv7WGl3Dis3GGFsTpmjHPCcwTZ7jyk4,5754 -kubernetes/client/models/v1_capabilities.py,sha256=4daP_U6-BuGVY2XKJRA3pfAQ0e1PA2nyF7Zu1oo7TBs,4053 -kubernetes/client/models/v1_ceph_fs_persistent_volume_source.py,sha256=xQfFGCMC1WMB6hIj03nTBHmuSQsTWK9NjFXAKAF6TSk,8999 -kubernetes/client/models/v1_ceph_fs_volume_source.py,sha256=uSSaMClk-N0WBIR8Lbj9x78O3YLmR0shRsqirJ5MwVA,8734 -kubernetes/client/models/v1_certificate_signing_request.py,sha256=ra802xOPj7VEh3rKzO5ZoL-PCDSOFSU7271xKyWk79U,7800 -kubernetes/client/models/v1_certificate_signing_request_condition.py,sha256=zl0wKY3fb-6k_Sl-mYnSuZX78snV5eWysXxSfV-LSYQ,10545 -kubernetes/client/models/v1_certificate_signing_request_list.py,sha256=sZXU7MHsQc1ByyIy_aL31Csi8WDcdGSi38qwdPuWEFU,7296 -kubernetes/client/models/v1_certificate_signing_request_spec.py,sha256=6_V6lOQMNAwNQL-Wt8X73dWUw_pVOYxFgW3-WideEVA,18541 -kubernetes/client/models/v1_certificate_signing_request_status.py,sha256=ayRZcNNNGKbc_q139RAL3uD5cvRa0KDXSi9AVSw4Jn4,7881 -kubernetes/client/models/v1_cinder_persistent_volume_source.py,sha256=C7aQjV6UPI2ySJ0v2jofKVxHs0PfT9SxkZ71bL6lFZk,7145 -kubernetes/client/models/v1_cinder_volume_source.py,sha256=BpsWpTKN_Mn-by8rX8bdzpYXBd7vd50e6ZHc4yn_PaY,6948 -kubernetes/client/models/v1_claim_source.py,sha256=GkbkMHDdEP_iQPufZziiZWvtblFaHXkDrfLXsf7km4g,6084 -kubernetes/client/models/v1_client_ip_config.py,sha256=j985AfN-GlbWKlaJAClMlC1tiWXLiqPuqP38u1jP5ZQ,3945 -kubernetes/client/models/v1_cluster_role.py,sha256=SaSn2Nl0lSI2OjudmhXwHOc15WCkOrYnXhajNmJKD0E,7592 -kubernetes/client/models/v1_cluster_role_binding.py,sha256=1VL9bhKx2Tqu8vwlE-iO8ahWflEU8hI2hxmyD38RItM,7815 -kubernetes/client/models/v1_cluster_role_binding_list.py,sha256=2dcl1D2m1mXZGb00NtNyWAmlrvR1uHwmxuhufMJlxkM,7095 -kubernetes/client/models/v1_cluster_role_list.py,sha256=9sZwZnCTV4Y6irKu5m-NCaRmooy_tsYUq6lTygTkaVw,6920 -kubernetes/client/models/v1_cluster_trust_bundle_projection.py,sha256=MkoVRxDvxOma9406MbAaE3g8_akeH6lKo0h8YW1EXSo,8041 -kubernetes/client/models/v1_component_condition.py,sha256=8D5LDyZ4I_oj7xf5asjsWzpOyKOGWWbtcfW0UCNoMDk,6441 -kubernetes/client/models/v1_component_status.py,sha256=G6clTWtkZWWagtcAcKHed-RcQgB7OgZjGSlHehGS6SM,6904 -kubernetes/client/models/v1_component_status_list.py,sha256=ZzGXupyBSQTsh1OUYNWwZPsp_NajHNaZ1BkXIUumAm8,7014 -kubernetes/client/models/v1_condition.py,sha256=zGF3a4PeB8k4wdcUePH7-KC5c6kwBZDkc1GUYW22rJM,10070 -kubernetes/client/models/v1_config_map.py,sha256=pa-yHKlA1bkLCTSY4qEbU7gy37iXtvaX_WN3m_d2qVQ,9779 -kubernetes/client/models/v1_config_map_env_source.py,sha256=_M7hRmWca5AluEKGWnJyjOQgWQqmzwtVIgBO7UhUhtA,4428 -kubernetes/client/models/v1_config_map_key_selector.py,sha256=icw9jzIH1TrbnRkmV8fBO4QjLv0uJ9cCRbiPis3kQTE,5306 -kubernetes/client/models/v1_config_map_list.py,sha256=Stf2xQP_4y9D_H_0yg85w5rgxZHdb5iLyPsjvQCxHDI,6876 -kubernetes/client/models/v1_config_map_node_config_source.py,sha256=EoxE-D6uHyTkHsSzeBre-yoGyiA8fDw75_JwdtLdKUc,8452 -kubernetes/client/models/v1_config_map_projection.py,sha256=GIxR2hhwAGp3QdbSrjG15XfP_6JuXPXBd9ADVmvW6UQ,6179 -kubernetes/client/models/v1_config_map_volume_source.py,sha256=Pj5jDCTfXho8rcHci5MlCXwPwYnqAN9O50uWgtc8zxI,7971 -kubernetes/client/models/v1_container.py,sha256=eOgFABSpWMRTUAu0RXbKySZjstuhUQG9wEsN92XkB78,33074 -kubernetes/client/models/v1_container_image.py,sha256=kixNjMFjyjix8m_BrJ_aQr-EUmZhKlL151Lb1Sw56wM,4498 -kubernetes/client/models/v1_container_port.py,sha256=RX8vcZny3DbThYX_6YkrTLrYrlmaHkTSqW6PJA5Sq8A,7629 -kubernetes/client/models/v1_container_resize_policy.py,sha256=wtBMGemjIj5ZXP7-VqSBurB7F5nPEpkQDAOJvOrWymE,5178 -kubernetes/client/models/v1_container_state.py,sha256=nRdey-0xZfMKmmvZzaz9_MgcWk5xhDdV9BYkR661IoE,4915 -kubernetes/client/models/v1_container_state_running.py,sha256=FHS-Ov4BO5cxO9_sPLmxlP1iJZUPbst6aTteaEdOuw4,3634 -kubernetes/client/models/v1_container_state_terminated.py,sha256=S4wIXEQwNETPWQeDoWqc26UyBk7Df1e6S6EuvciWuPo,9083 -kubernetes/client/models/v1_container_state_waiting.py,sha256=73TpZg_5EfVoVKDP4jhxMZdz6e-LQzVKJDFvjpGWhdg,4375 -kubernetes/client/models/v1_container_status.py,sha256=qdUi2w8b1rBEcrRdAH_tG6NYsAWODn7r49egNIR_zKk,15862 -kubernetes/client/models/v1_controller_revision.py,sha256=0VTP7h805YYqhIzhSVW981XQIt7-SzLCBDQe3_BKgCE,7835 -kubernetes/client/models/v1_controller_revision_list.py,sha256=LqvdLonLFPcPOmGL5Xl6eGYBWiBn1NJuPF7MPD5G3kE,7099 -kubernetes/client/models/v1_cron_job.py,sha256=R8xdAsJJz6rME3DJtqxMpaXhF--tLyuRh1z8D4ww92I,7106 -kubernetes/client/models/v1_cron_job_list.py,sha256=krC4zSNLXdCSSE6c4Q4l6y8c1Q-gBbgTqpNKxVs2zgU,6826 -kubernetes/client/models/v1_cron_job_spec.py,sha256=SQA0aEbFSO7NrZWTJK9mVOO3JiX5DcSh-Xz88weRDDI,13409 -kubernetes/client/models/v1_cron_job_status.py,sha256=bWDHGzuuhS0zWHuCldjB2Zx2xFbxkyBr6v6PTVUVEIw,5696 -kubernetes/client/models/v1_cross_version_object_reference.py,sha256=Io1d0MTYHLfmXD_cg6T4MtvWZbdw7CmSyP71Yi-PO8E,5895 -kubernetes/client/models/v1_csi_driver.py,sha256=Nf6P6kR05_D4qMstUHrLstrCmwCu1oZx4P26H96YO2I,6665 -kubernetes/client/models/v1_csi_driver_list.py,sha256=6P76Woo5y-Q3WObuONj0SgB8Y6tGY9Ge5qUGsnXOhxU,6872 -kubernetes/client/models/v1_csi_driver_spec.py,sha256=mCKeiOlhs6p9akcBON8mTutjtfOIejJHlKEI56GPZjM,21869 -kubernetes/client/models/v1_csi_node.py,sha256=NklY0YR7Gy20l1sSMCG-HywTsHfsrgmLnKDKcTQvjZY,6619 -kubernetes/client/models/v1_csi_node_driver.py,sha256=NtDv3l3eKSSFzmc7JWZbzg9PCJs0JoXGj5CM5vqnvDg,8698 -kubernetes/client/models/v1_csi_node_list.py,sha256=UvoSsfrU_gE5ubFBZnXslBJxGAHITydHIxckFYOpjO4,6822 -kubernetes/client/models/v1_csi_node_spec.py,sha256=AoE744acfDTq02ysRfaxCkb9iNrnXS_t5DAFIpZsrWM,3869 -kubernetes/client/models/v1_csi_persistent_volume_source.py,sha256=ro8ALTeUicXD5S5AtjNJCdF_FaycAyqVVtgKKXxwEcw,13515 -kubernetes/client/models/v1_csi_storage_capacity.py,sha256=rV4SKSG8mwbrvNuQpJlLDktNhQMUr5qXhxSEP9kW_MI,12001 -kubernetes/client/models/v1_csi_storage_capacity_list.py,sha256=vYta44TCmR8Xcz8bJBK8ewuNfpASnVOJI5UyzQp0O6U,7115 -kubernetes/client/models/v1_csi_volume_source.py,sha256=chSpOGRG7PKsE9PMprUnAOYu64yHj2DPJLDyoH6IEYE,8057 -kubernetes/client/models/v1_custom_resource_column_definition.py,sha256=X926j59pbNTbfhBJJOYr38GgWW-F4Iv1xyHwtpOXEvQ,9655 -kubernetes/client/models/v1_custom_resource_conversion.py,sha256=P1wUOTEYIeYS2zyyKDrxb9YQ_sKViQ2Agq-fOuICHys,5273 -kubernetes/client/models/v1_custom_resource_definition.py,sha256=yzz-boxtbUmrklKwsk5ItcDn8aVtV0bK0bqRXkbQuqY,7770 -kubernetes/client/models/v1_custom_resource_definition_condition.py,sha256=800qile8biSpu83bsj1ve703WLvj0z19SVMxvbp-id0,7945 -kubernetes/client/models/v1_custom_resource_definition_list.py,sha256=JHwhmjMqe7Et8uYtvxEgZ8xsZ0pndM_uj08-1s07t9I,7265 -kubernetes/client/models/v1_custom_resource_definition_names.py,sha256=tLVchwOvhagOHM_St9G8l_sjc5yjnONvQX5mLbyKU6c,9755 -kubernetes/client/models/v1_custom_resource_definition_spec.py,sha256=4KujxRXzjvaplNRS02hHwCZn8x4kp9lJzFQyEJCtAa0,11520 -kubernetes/client/models/v1_custom_resource_definition_status.py,sha256=NEHqAjUvytDshq8MP4LaYd2eAIFEcY4eCvm87__rW2Y,6600 -kubernetes/client/models/v1_custom_resource_definition_version.py,sha256=aIEvXeOhAB8oIdfbZyqQ51e6Q7dVG_Q1vJswsa7fLfI,12477 -kubernetes/client/models/v1_custom_resource_subresource_scale.py,sha256=Q41Mt5q457nG9Jh2I1AIS2CGGvyiL-SJPvIRYYCVbgc,8848 -kubernetes/client/models/v1_custom_resource_subresources.py,sha256=pzVNf25mivhcImUAwN1wOXY41qGNbR9iMOoZyCAqvh8,4885 -kubernetes/client/models/v1_custom_resource_validation.py,sha256=QaR5qNaGiFdvHK-pxoOkz0zEtKQH3c805b9nCT6QDQ0,3680 -kubernetes/client/models/v1_daemon_endpoint.py,sha256=b8SZK9RD5z5hdQ38jUDOwlvdCoy8WSkbXNuHGcs0HXY,3568 -kubernetes/client/models/v1_daemon_set.py,sha256=64jGJqi3SgRes5dlWWNFzatMKspOrwf3IeLEhn0wmek,7166 -kubernetes/client/models/v1_daemon_set_condition.py,sha256=omo-Tbo5UGP1P9Jj5Oco7cfkJOK8bTMIqronBigUdHQ,7295 -kubernetes/client/models/v1_daemon_set_list.py,sha256=GifxEbZjqCnww1zvjZj4y8rvvmR9njO2uE6aBbwdskc,6856 -kubernetes/client/models/v1_daemon_set_spec.py,sha256=w01Sfgjsf-7HMol5ukawip2GIZTSR4vaBrxDrqNPqpk,7947 -kubernetes/client/models/v1_daemon_set_status.py,sha256=q_VZILdLmnhdxSIOk9CKamK67WVuii5-PYEnxIeiMkc,15485 -kubernetes/client/models/v1_daemon_set_update_strategy.py,sha256=ShS-PukC6GrZvp6m76Rv4-0xqffgNS8st9zB9SjZOlE,4497 -kubernetes/client/models/v1_delete_options.py,sha256=morxa5AmegLc4AJmuI7YydlM8QrrtmTY9YuRRKOo2nE,12179 -kubernetes/client/models/v1_deployment.py,sha256=gb9YGJuMDjFN1K9txQm0ZLc-OMIJtmjG0gs0ydk_3KI,7196 -kubernetes/client/models/v1_deployment_condition.py,sha256=sd0H9U8zLs4Krb-IQUPKy2jABONSEYgncUhX39DSssc,8315 -kubernetes/client/models/v1_deployment_list.py,sha256=-pdI2vIhXkWp6BdH4DIiJ3mGy8JB7YShd0bun-uFszs,6901 -kubernetes/client/models/v1_deployment_spec.py,sha256=UdcvtLK51Ci6QmFewuWkqL4_PQDp22BjI8-EbMQ6pgk,11289 -kubernetes/client/models/v1_deployment_status.py,sha256=fpkpGl0yfS2dYz8veVBv8BrjOe6dJJ9R2mw6fLttcvU,11651 -kubernetes/client/models/v1_deployment_strategy.py,sha256=FAtQ175LsBrB1BqlJSxNx0A44035RXAytyysrxJMR7o,4426 -kubernetes/client/models/v1_downward_api_projection.py,sha256=C_T5Fqir4iJZyoOzhPGYhyTz5GI5aOgjc88xa5qmHvA,3582 -kubernetes/client/models/v1_downward_api_volume_file.py,sha256=UbJFqwjR2g9rghJacqbGmzEVSGsVr42fxkaNzck8mUc,7178 -kubernetes/client/models/v1_downward_api_volume_source.py,sha256=Pn4fPVu8MYphMoHy-WHsu4tfcrzvrXrbM1TMG69oTso,5472 -kubernetes/client/models/v1_empty_dir_volume_source.py,sha256=JfBcLKIkN8clCPjs8pYR0PlmzjpLxt6fYl-ycKzxq-A,5590 -kubernetes/client/models/v1_endpoint.py,sha256=nYEtNDYTExsSE5MXFrQLNGNcA6Rb34nWV4-j7hjFqFs,11221 -kubernetes/client/models/v1_endpoint_address.py,sha256=pdW_47T8NAfqoszbk4yX74POFSEbYociyN7qDy2r6jc,6257 -kubernetes/client/models/v1_endpoint_conditions.py,sha256=IZWkSxgqpAR2Eni51UGPvshkCDgBrarek4I91pzM6Rs,6709 -kubernetes/client/models/v1_endpoint_hints.py,sha256=QtwwjUJkogvtRKrpRLGwbhQ7ljay8mWyRGf5UWGT6IQ,3673 -kubernetes/client/models/v1_endpoint_slice.py,sha256=szhBx3-SF5Fqtie4aL_KLoWd-xDzRCLHFh3J7bzrskY,10084 -kubernetes/client/models/v1_endpoint_slice_list.py,sha256=PAn7vBQzlautilNYn6FKVuTTV_IydBKDnM_q_NJyZ-A,6976 -kubernetes/client/models/v1_endpoint_subset.py,sha256=uAdxcusYmqJoLS4rBEsS7dtfy9hQdS2X3DPQpPlihpw,6047 -kubernetes/client/models/v1_endpoints.py,sha256=9Q5Dgl0rLErm-9trR28A-9lI3Hd4CKIX4nTjMOjG7Mc,7596 -kubernetes/client/models/v1_endpoints_list.py,sha256=uAFOLw4px1y5RUPs9FFnDv_Z3n5_EkOBQqbw5RpnVuA,6848 -kubernetes/client/models/v1_env_from_source.py,sha256=1ikn_oKppuQtdn4Y8V8OoOFz4wx_u05BCPc3h0GfizI,5140 -kubernetes/client/models/v1_env_var.py,sha256=IfEa25E_1asxWQRDv1HtUVFvRKlgSMdIqf6C7cOhsWQ,5904 -kubernetes/client/models/v1_env_var_source.py,sha256=OI2A4Rn9HQ9I9T6afOQUoxpGIvNizjVMoZJgnrjjCB8,6110 -kubernetes/client/models/v1_ephemeral_container.py,sha256=4XjlxLzbv6j1O_qYR25BF12F0BFs6qTHDnEngvYhAiQ,33195 -kubernetes/client/models/v1_ephemeral_volume_source.py,sha256=UrKAG6_z_zpp072B7qsI5D_Kwpuor4-09K_K4h9FwWQ,3778 -kubernetes/client/models/v1_event_source.py,sha256=75OMyLnF9f4LZBph3wFshKZ8JU993Z-a_iP3cwfA0Zo,4221 -kubernetes/client/models/v1_eviction.py,sha256=ar3e8RLIvhkSpxj2CRB1lbQSSewBJxXUfn6EPffqs04,6690 -kubernetes/client/models/v1_exec_action.py,sha256=TtJdmNkRsFKZnkrplxibXT0xEsiefE18N05XYHgxfDY,4182 -kubernetes/client/models/v1_exempt_priority_level_configuration.py,sha256=ZAU_bgPwLP1FGdZOMXv0lEftf84MIs3R__XO3uaOgw0,7084 -kubernetes/client/models/v1_external_documentation.py,sha256=FtEJkLHGAAJRSkPr7K3emiewi_Js23hTu_7lTjgPMTU,4097 -kubernetes/client/models/v1_fc_volume_source.py,sha256=z8UwhOArmI3bs4-nkgDwL52nmrZQdI3ma6Gtg0Qeaco,7349 -kubernetes/client/models/v1_flex_persistent_volume_source.py,sha256=oWhZ16_F-pWIBitPLV6hKpB0aclRT8pTH6v3aVq0BiQ,7615 -kubernetes/client/models/v1_flex_volume_source.py,sha256=geAHqEy4CqPPBGSfdRsP11_pPFc5AtF6IxEux1bZvzk,7390 -kubernetes/client/models/v1_flocker_volume_source.py,sha256=4pn0NqarIv3PoeXjhzWoGekFItHQwyliv_eKluhxWFU,4781 -kubernetes/client/models/v1_flow_distinguisher_method.py,sha256=2AnMX-2goHkW6UXySMwrd9fQNLmeDOYR34ZHHrKgH5Y,3798 -kubernetes/client/models/v1_flow_schema.py,sha256=vrDbv56d0aolVUQ8C4ToVvkzgH1z0mPADcnjKBwjB3M,7196 -kubernetes/client/models/v1_flow_schema_condition.py,sha256=-mZlYLZgpt9elfNv-M2hZu_1cJA-Kj2ET1G6_0R0Bl4,7257 -kubernetes/client/models/v1_flow_schema_list.py,sha256=FLR3dy8sA1030fYnJdxQKF5lzTAIy7mtFlEt5ypK0wQ,6901 -kubernetes/client/models/v1_flow_schema_spec.py,sha256=QTDMzJlUfsxuNHLIBzfOdy0M3FJ0fvVlAR3Q-WqwKpk,7897 -kubernetes/client/models/v1_flow_schema_status.py,sha256=Q8zCOt2RFOaIUAh4foHx6qq6_jYCe2RqAWZLQplhtPc,3672 -kubernetes/client/models/v1_for_zone.py,sha256=MW7siHQeVC23EX_Szu1jFfDrZjfjweM7xKKuRp7lZo8,3518 -kubernetes/client/models/v1_gce_persistent_disk_volume_source.py,sha256=LxmsbVzx1xbkSWHhT6i-JuhcoyzLRJongAME0jwBnmQ,8034 -kubernetes/client/models/v1_git_repo_volume_source.py,sha256=KqNktIa3UoQPK-kEEpWrWrEaz0IAEsIDyJGptcEv3Pk,5828 -kubernetes/client/models/v1_glusterfs_persistent_volume_source.py,sha256=2olMe4cxeBY6Grx3gELG8uQzcuxxjAuqBd947bFETps,7759 -kubernetes/client/models/v1_glusterfs_volume_source.py,sha256=hyReaxuo6_mjDLm7mTq8utnp7Ai_nf4UpiconL556sw,6113 -kubernetes/client/models/v1_group_subject.py,sha256=pSIOdC5zLD3U12GzSws42hU4RjqjI5I2faqCy1bMqMA,3888 -kubernetes/client/models/v1_group_version_for_discovery.py,sha256=w4Jv2jnPbaG0cZ3SxO_LrT14rmVPuWsO1D1o6BrEn6c,5076 -kubernetes/client/models/v1_grpc_action.py,sha256=SH2BZIXEzG-_6iLZGRiW-iy-51AV7QzWy3WAL3dur6c,4721 -kubernetes/client/models/v1_horizontal_pod_autoscaler.py,sha256=NAgEhdQB2Voj_15v6fTyd5NwUp-L0KmvDORECm2OeVs,7586 -kubernetes/client/models/v1_horizontal_pod_autoscaler_list.py,sha256=FfjBmuJ6YQwUjT2cPfnQBPung2R84OQrUsKRJpN4qDY,7244 -kubernetes/client/models/v1_horizontal_pod_autoscaler_spec.py,sha256=iD0_D3zyCgGIuf-YOF9toEC6n26PNbL8CCpa5rn6-Eo,8320 -kubernetes/client/models/v1_horizontal_pod_autoscaler_status.py,sha256=RKObDIF0_duQl6OJ1KpDgt_dtuvnFMUdKcUYaLX5rl0,9425 -kubernetes/client/models/v1_host_alias.py,sha256=Cj6CyyiBzaWHst5eW5_c6WRbICrSa0uNYbZwlDp5Ztw,4141 -kubernetes/client/models/v1_host_ip.py,sha256=uQmOiYtLlOeKu2FqDkiEnmwDzm45XRjnQxEuIUn-tns,3324 -kubernetes/client/models/v1_host_path_volume_source.py,sha256=o4MUy-vn775sqRorfggofwJ8OPHMcnrHpiV3N92z7Ps,4785 -kubernetes/client/models/v1_http_get_action.py,sha256=RpE_YhsN6XEyA1Zg6zdh41qKcpwYwf2Y7SJ5_ONL5uM,7067 -kubernetes/client/models/v1_http_header.py,sha256=NYXmFftVJ2nu2cOAvLvpws_j0v0kJAnQri9y-NqjzM8,4556 -kubernetes/client/models/v1_http_ingress_path.py,sha256=CwH9TTNLh5rUz-yN3djvMYKppIsGB1pSSf9IL1B20j0,7434 -kubernetes/client/models/v1_http_ingress_rule_value.py,sha256=4mBzeHIaleuiZf9ZU1IEsg4myEmZdXZ5g3Bfvvx6gTA,3751 -kubernetes/client/models/v1_ingress.py,sha256=7iKuznH0sNH-BIiLE5Txngjg5R9A-txM1DwGrAuk3os,7106 -kubernetes/client/models/v1_ingress_backend.py,sha256=TvY-5h5uVndjsAkd3pIQTw6fOomw3Eq2s5Y_zqVGhYs,4165 -kubernetes/client/models/v1_ingress_class.py,sha256=8H12Q7hNE7sXY5WCxv5VEhkVTecDiHgnVthDmx3pZ0U,6580 -kubernetes/client/models/v1_ingress_class_list.py,sha256=BtqshAAAhwr8r1yU1ayy2zir1idbRVZaL9zqNKEC6GU,6953 -kubernetes/client/models/v1_ingress_class_parameters_reference.py,sha256=jg5rcPEzyaCU6Mv5DXgM_uNesJ_RqzqlEQvKmUdEjsw,8009 -kubernetes/client/models/v1_ingress_class_spec.py,sha256=Wf8YxxAudskipsEIcCzzWLV8DTSO8lRzGvWMyfmWQLM,5087 -kubernetes/client/models/v1_ingress_list.py,sha256=7z4AoyfsOIUMu4Q5GK_yg3qvdmNIOmoLIQ-PX2_EkxY,6824 -kubernetes/client/models/v1_ingress_load_balancer_ingress.py,sha256=5coKb5NQGGkvFmEL_Bn4YOn3WAHa4iXh69qwTpWez-0,5344 -kubernetes/client/models/v1_ingress_load_balancer_status.py,sha256=dD1ReXcHzxWCveijIILhQhtsB8OMXiC9CR9cZcdBDsU,3719 -kubernetes/client/models/v1_ingress_port_status.py,sha256=juYr5fulojfNwEnbnzAbnLELvXLCAjGGMIWZJM7Ezho,6010 -kubernetes/client/models/v1_ingress_rule.py,sha256=43uA2O-k0k2RqLUsuOqIjFGgHHbHRd-Dl1Ak7-Mb8Sk,6694 -kubernetes/client/models/v1_ingress_service_backend.py,sha256=BlKQjwepAA3ii8jvZRAPMv9Byyj3fr7qg08hhimKyz8,4426 -kubernetes/client/models/v1_ingress_spec.py,sha256=64KDxv0DxdSEZsYyG4R664VNF-sYZSuUFB0KB7jUeKQ,8144 -kubernetes/client/models/v1_ingress_status.py,sha256=nH9g9NCC9bLtVL8HY6GgSfJQIUNgEVePp0OnvVzABh4,3543 -kubernetes/client/models/v1_ingress_tls.py,sha256=e3YARffm7xqs0lA6B25f3iJs4nwzohTcRGtgrSgr0g0,5274 -kubernetes/client/models/v1_ip_block.py,sha256=OmlKuJMcZQ9punrwT4mSrvUpSS8ajiEILJS3UVXMHw8,4726 -kubernetes/client/models/v1_iscsi_persistent_volume_source.py,sha256=H6d5z6-rDrsCL5rhEXcSOOp59z7vhtWJ98O_P1VrE4E,14704 -kubernetes/client/models/v1_iscsi_volume_source.py,sha256=ucJPuuQpvZUn0-XR0Qhp3Y957NSCfQx-GXBvTshP5WA,14263 -kubernetes/client/models/v1_job.py,sha256=UXFpz257EEp8MxwuzhdNq1eitzoNaykeL9DLhH5I-YU,6986 -kubernetes/client/models/v1_job_condition.py,sha256=_1TOwd4Ngarr5Tt2Ep6uL8IQJDuICWzgVRvTwbGh3SY,8111 -kubernetes/client/models/v1_job_list.py,sha256=qM5_1K-lUbIGLSBoJdQkgHel6rbl3sZhhkUS6RngSew,6726 -kubernetes/client/models/v1_job_spec.py,sha256=MHx-VM3TLarz4JNhxp_zm2CGN7-V9rg4EZhIB9P9nRE,25823 -kubernetes/client/models/v1_job_status.py,sha256=a1t3Ay_NZt6DYrrfnGcmcuZqRZV6Lnk0Tq6LRyWY2nI,16293 -kubernetes/client/models/v1_job_template_spec.py,sha256=wGwfsxgteOsnNk9IQqIgblFyAevVhOUkbfNwYwyaFcM,4030 -kubernetes/client/models/v1_json_schema_props.py,sha256=4Sl5a3g9eHVth9v2PTzezmS6-Tks8ydBETuiHu2LcDw,49550 -kubernetes/client/models/v1_key_to_path.py,sha256=8YWcR-msIBN9mBW4rIBywbTHjIRu0Fqx6tgvKKfOiFg,6043 -kubernetes/client/models/v1_label_selector.py,sha256=YmdKj4oUiTxCrvW45dn-GZfbYUyOpG0iXInRubwTors,5205 -kubernetes/client/models/v1_label_selector_requirement.py,sha256=_6LfvI6dwMhE4j9pR3AL_qDKloQhvG9WvcZ5Drszxak,6013 -kubernetes/client/models/v1_lease.py,sha256=Xyc_e_46a3D4PcW1hcPcOOFIVb6WO7JzWOVCLNDqXOM,6419 -kubernetes/client/models/v1_lease_list.py,sha256=vb6G3iSnshveZ6F_gfuORMa-mxE2bu6TRV5rqFA8ADU,6788 -kubernetes/client/models/v1_lease_spec.py,sha256=8bjvp3sT8Q1lTIeprAmXjiL2wpFAOyvBuG6rD4YNs1A,7798 -kubernetes/client/models/v1_lifecycle.py,sha256=bF3lsm8erG9_wtX6R4BYQPwH--7iM9zKJiKAuofmVmA,4121 -kubernetes/client/models/v1_lifecycle_handler.py,sha256=Sdg7RglOGf9IjRHsUIvCijV0TV29iLpaQTE3fRTa-8c,5491 -kubernetes/client/models/v1_limit_range.py,sha256=74DHKxMiyEhkoVGY_HKfFBef5OmoEKh_dPDtOrwoFwQ,6534 -kubernetes/client/models/v1_limit_range_item.py,sha256=Xu3v1xg6s9533_rMItjONXcXOHQ31LgbOOsdwwSBRTU,8648 -kubernetes/client/models/v1_limit_range_list.py,sha256=zp-jX3U4huBImuG1WVqaJ9OK-y2O2Hqe8AV1qu2FzRA,7091 -kubernetes/client/models/v1_limit_range_spec.py,sha256=4fyre7Vuj4WVdNqGH-iQNB7Ir82BCxerE5-a8SGNzNI,3725 -kubernetes/client/models/v1_limit_response.py,sha256=lb3glOa_tGxUPsF8zijMtUJiyH-KOeB56GlodvcWq1g,4744 -kubernetes/client/models/v1_limited_priority_level_configuration.py,sha256=crPSWnadkdzdxnR32BTBQjNUw-tcv5DxyYVEj7flu2s,11019 -kubernetes/client/models/v1_list_meta.py,sha256=j48N7J-DpkcDnqf5-q4HIIUhuIxz6vQHS-2YNcRnXjA,9404 -kubernetes/client/models/v1_load_balancer_ingress.py,sha256=1fX1ttQS45DhDB57p8SqLv_gYaGvLDBlpzFUZq-zv58,7117 -kubernetes/client/models/v1_load_balancer_status.py,sha256=jFP6B778tnEQsRA3RpJlD1SGHPqRepBCC_e5hojrtus,3788 -kubernetes/client/models/v1_local_object_reference.py,sha256=lrWBaq2N-VcxtU1wej8ZflO8n6eY5AdjIntcoUYKrEE,3616 -kubernetes/client/models/v1_local_subject_access_review.py,sha256=NvD1jfEbWinOkYLFcRPNwgEZ9epwQTZFh9-eibimt6g,7740 -kubernetes/client/models/v1_local_volume_source.py,sha256=oLwhU1wQOKLrKg7TDx6490cZuBqzOp9sqWKw_JQIqEI,4972 -kubernetes/client/models/v1_managed_fields_entry.py,sha256=KyECTRCH0Ri3W5kJMQ2HOL9SVHIrDRw7d4SI3EyZwoc,10901 -kubernetes/client/models/v1_match_condition.py,sha256=XjgGD2c_Kkj90A5WSTfqy0Tl3rBfby_y0UBFkIOkgao,7295 -kubernetes/client/models/v1_modify_volume_status.py,sha256=g3WeK0fGJzypPhmKk8hjaGXp9dbR38U-5HAbwvmDI6k,6333 -kubernetes/client/models/v1_mutating_webhook.py,sha256=a0OI-BDAKa1-eStJVtz5mf4lRQGER1GuTdQWnrK44ZU,23223 -kubernetes/client/models/v1_mutating_webhook_configuration.py,sha256=XGwdbosIzf1gkkgEC8_jLe0emG3HgvdPMAWHhFJkk3M,7187 -kubernetes/client/models/v1_mutating_webhook_configuration_list.py,sha256=IkWl98KQgzYDpc97azivJrjIJ08702FD692ruVdLGMw,7323 -kubernetes/client/models/v1_namespace.py,sha256=7RaLiC9GPGdyTmuJ8lYyl3pu7kjt8v_V7ga42vDcn-A,7166 -kubernetes/client/models/v1_namespace_condition.py,sha256=gZDGnmE2l7WPseYCguP4EHdmruJFDNe0Yi4-90H6ZYs,7215 -kubernetes/client/models/v1_namespace_list.py,sha256=9Oj6NbBNgFbpx_5NUzD_fi5wPrIlRRgfUgcXOxoqSL0,7092 -kubernetes/client/models/v1_namespace_spec.py,sha256=5ZqSYm9H89ISH5s_Jd72ftdq9OSa-6uUWWIPXGqaioo,3826 -kubernetes/client/models/v1_namespace_status.py,sha256=gjkFIGwutM0651MLc81Hv442XSTFlUqcN86wnlhwxG0,4616 -kubernetes/client/models/v1_network_policy.py,sha256=5Eji9dDpthcvnWGmFx6eRS_OTH8SlYswrCFY6-3IP54,6603 -kubernetes/client/models/v1_network_policy_egress_rule.py,sha256=VqrC_ufDd2LwGf6StzYZRV2hgir7BMPOPJPtsfrUzu0,5713 -kubernetes/client/models/v1_network_policy_ingress_rule.py,sha256=8BTvIWA8WLip2qGBJwcCJ-5708fbsXXrgp0pNTQit1A,5852 -kubernetes/client/models/v1_network_policy_list.py,sha256=-Io8k9Ik3KbqtvWMyJIkeowJul3KC4vuhNM3GT-lyNs,6972 -kubernetes/client/models/v1_network_policy_peer.py,sha256=hE_1R6hCdjnNmfo5oP30vPSl1MDMGPS03WlZjzUms_s,5141 -kubernetes/client/models/v1_network_policy_port.py,sha256=RRR-UrIzY2PPW_Hbg9PrV-v8QsE8yeeZYPunr-E63-A,6154 -kubernetes/client/models/v1_network_policy_spec.py,sha256=d9YEC2uboWRB0Zcb1DvyFg86rdkV-v2lbyAuZ-721yc,9758 -kubernetes/client/models/v1_nfs_volume_source.py,sha256=MGIoBv6-yL-OFJB_-OMO_IIxVehApTTEUnCVy87Fe5M,5884 -kubernetes/client/models/v1_node.py,sha256=UwLRu3HSDpD4yq4BUc2iiE-R3pQDz5I-xt1Pv3un0fA,7016 -kubernetes/client/models/v1_node_address.py,sha256=iFxu4D_SC7Qtah9vuiC-Sr9WwKG6-jRj1Dnqvy4HIH0,4476 -kubernetes/client/models/v1_node_affinity.py,sha256=-QSwFLi_mo3DlOFI29-i4ZhOiRgaVzxuvYoMJSS92yM,7138 -kubernetes/client/models/v1_node_condition.py,sha256=abUqlzkA3es3WH1XJJx-Iz_wpfr_txeJoZIZIyRDX70,8205 -kubernetes/client/models/v1_node_config_source.py,sha256=xXaBpq3VV-n7nf2Wpef_cP4j3eqdfyxGUHMLcS8FolM,3507 -kubernetes/client/models/v1_node_config_status.py,sha256=MeCjHEHCdtHDfrvlgmuT21uqlGSxcc9VlykUgzWPWc4,7722 -kubernetes/client/models/v1_node_daemon_endpoints.py,sha256=PfYxjQU2C8l1dpPHUQFYh7CPmLibCW5pOtwNKYLAo-M,3618 -kubernetes/client/models/v1_node_list.py,sha256=241Uc_97EJGCyBnKIFQUxPYXwTXLEYD8oF327kQeKAc,6723 -kubernetes/client/models/v1_node_selector.py,sha256=nIR-0N3c3wHzme55CNIx-i-EiOjyIes3IAyFOth0W98,3980 -kubernetes/client/models/v1_node_selector_requirement.py,sha256=8yXd7xu_s7b59647EAJTwjDuQECS0ShR7JJeEunxNro,6193 -kubernetes/client/models/v1_node_selector_term.py,sha256=jUP8lNN15rfQkYcGZn1pj6x-0i6_ByxOeTTkSwjUQOI,4811 -kubernetes/client/models/v1_node_spec.py,sha256=jN0JKxnlQ1PndeDFg0wn7QKbmeP1HrEHhDhsQOLKfG4,9288 -kubernetes/client/models/v1_node_status.py,sha256=75R1dlM9suB6F9Uu0_O7szdpFfPeQNLI9VDsMyAbQEI,13823 -kubernetes/client/models/v1_node_system_info.py,sha256=N11sqZudVdD7XZtlLf1DZGYpsUhNtPmQRF4RxyjwMqI,14378 -kubernetes/client/models/v1_non_resource_attributes.py,sha256=idy00OF--OHc6LKlVOBVcMfq3trQbCqYxZyCbH9v68s,4199 -kubernetes/client/models/v1_non_resource_policy_rule.py,sha256=24MI4dcNGP99rLIXWD_jSSkS3El5ONoUCkjOqNIaEWU,5783 -kubernetes/client/models/v1_non_resource_rule.py,sha256=HVcd11V39SryDVBKGqf8D9SSX8qEYQt1XPS7N4J0xpE,5041 -kubernetes/client/models/v1_object_field_selector.py,sha256=d_zdYmAyVEpJviApCQgmTaTfV5gjyM2v_ZsLrSZy2D0,4735 -kubernetes/client/models/v1_object_meta.py,sha256=4PCRsm2QrDX93lvK9w_OqzhCPp50pHmmWJpdG5ZxhC0,28280 -kubernetes/client/models/v1_object_reference.py,sha256=NbuEHT1ANgVZzjx4R5zXRpLtR2pYBi996YCiGJVoMOc,10311 -kubernetes/client/models/v1_overhead.py,sha256=BIAsJGm8LXzR_o9hG9H0OdD60YUqHTpeYdxGGNHr4kE,3586 -kubernetes/client/models/v1_owner_reference.py,sha256=EQVW6gDElPCX4iTolg5L7dGbEsSNKCkfQqxHhnd-NHM,9564 -kubernetes/client/models/v1_persistent_volume.py,sha256=Y8GlZ-taeHqYej4B9QElPoHGDyKFsj_CbNb_DAtwnbU,7376 -kubernetes/client/models/v1_persistent_volume_claim.py,sha256=MrYkriL495nnaznzNLre-WnJ5LDUf9rFid4idV4YXrg,7526 -kubernetes/client/models/v1_persistent_volume_claim_condition.py,sha256=1Q61Frl9ZgzNY8luWiv5gUDQWg-YfCnrvNWijO6zHB0,8785 -kubernetes/client/models/v1_persistent_volume_claim_list.py,sha256=GtlCSSaCleEtR5XuQ2yWZ6de9wUlXJVaMLylGrZN7Ug,7370 -kubernetes/client/models/v1_persistent_volume_claim_spec.py,sha256=yKP9iCRdMuLTJQm7wuHcZ9lDgQwmdpqy7CbxdZgdfRU,13787 -kubernetes/client/models/v1_persistent_volume_claim_status.py,sha256=P_t-VeVa-SR9hygyJMzblVkoHkYrI9pqysYOW9yWoM8,18956 -kubernetes/client/models/v1_persistent_volume_claim_template.py,sha256=brluG-Aqggdeva44UReICuDoGUFYIHH0TlmMraFJVpA,4406 -kubernetes/client/models/v1_persistent_volume_claim_volume_source.py,sha256=woedN2zalpkO-eOflG2iYfh3AKXf7gWPS8ah3gatEaQ,5132 -kubernetes/client/models/v1_persistent_volume_list.py,sha256=2LDG9NYC0iit9A-qfe148tubKixxt23z01LRGbwNCOQ,7197 -kubernetes/client/models/v1_persistent_volume_spec.py,sha256=uAgQSIvfMuHjFjJ-wFK3XqotQsZ7S67OeS3NIDIDybM,32060 -kubernetes/client/models/v1_persistent_volume_status.py,sha256=eKU4IdC-DHd4UkO2G8R96Xjq2y5fdEwfwMr74vGbHaI,7255 -kubernetes/client/models/v1_photon_persistent_disk_volume_source.py,sha256=05ZG-rRKIkF9kE1NC9tU-mkFMGLPyvE8YOtmAr7zeus,4940 -kubernetes/client/models/v1_pod.py,sha256=MfmaMJf2aKxSku5qupI1xY5FlH3sC_YcckGIq_D36gA,6986 -kubernetes/client/models/v1_pod_affinity.py,sha256=ov3gBu6HR6tPGbTOmkEUKLT320ZcqougTGSvoMGT1Wk,8191 -kubernetes/client/models/v1_pod_affinity_term.py,sha256=w5hUygGvdAuZKcaWwhMhBDKtZNc7qQIaOBv7gb5Bb3A,12074 -kubernetes/client/models/v1_pod_anti_affinity.py,sha256=D1b0W-s9I8G23FH8Xo_nnhvogekIvFLY5r9D18_4rNA,8279 -kubernetes/client/models/v1_pod_condition.py,sha256=neAgr9a7l-obUuoI4LQveQmNePQT2B3nHJ0mxWGoDtM,8533 -kubernetes/client/models/v1_pod_disruption_budget.py,sha256=GKyqKR9TrHQWIjpXikdn_IeXmj5tp9qtsbwFmSwyqAg,7466 -kubernetes/client/models/v1_pod_disruption_budget_list.py,sha256=ZntBwsH4nvJ1zr151MMu2OCSpH1DscAjdPDCFaFsDyA,7120 -kubernetes/client/models/v1_pod_disruption_budget_spec.py,sha256=zB52RHn2lkR-VGrpgbfzUVsLKyeL-PuLqMUMOuZ36PE,10214 -kubernetes/client/models/v1_pod_disruption_budget_status.py,sha256=aPQlmMrRXfRinHWmCKOY_qqlYMlusgP84qrZ3qCodz8,13928 -kubernetes/client/models/v1_pod_dns_config.py,sha256=WHarjlDhZlPC-uAQ4pPkEBR8cLuf-KlEes6EoMNoTAw,6059 -kubernetes/client/models/v1_pod_dns_config_option.py,sha256=11N0jGyjhRS4kWS-L9CQZCdSwcvgmKCrpNiN31yRN3c,4025 -kubernetes/client/models/v1_pod_failure_policy.py,sha256=laiDbSlo3UGMDl0VIqp2NgP1UTbyU_y00FbzVTy6oFU,4278 -kubernetes/client/models/v1_pod_failure_policy_on_exit_codes_requirement.py,sha256=B_Ixlykz1g3fc8abfCFNjfLVQq9_6BPUf1qOAAi6EuY,8359 -kubernetes/client/models/v1_pod_failure_policy_on_pod_conditions_pattern.py,sha256=KwY1zAu43Lalc5UgMB7-kb57Za9m1hEmQGtjUkKDqO4,5211 -kubernetes/client/models/v1_pod_failure_policy_rule.py,sha256=MVqfgVdIfi5SGcMGYiw8-vWBcpQqtoE-23mN7vqwdC4,7582 -kubernetes/client/models/v1_pod_ip.py,sha256=Q-rZeOrvDRbv2FcZW4ChZiNPXljAhXyH-LMMHJDheLI,3314 -kubernetes/client/models/v1_pod_list.py,sha256=exuHUdZ2Erme77BV9-m7PGRgAeFTdibBKonpItvPko0,6890 -kubernetes/client/models/v1_pod_os.py,sha256=ZvpdyadO9t0G6YVVI4mmscfXH21gCScWdm3eleMZkbE,4154 -kubernetes/client/models/v1_pod_readiness_gate.py,sha256=HEoEoo8jpRgWOqsn-0lZpirA5YQSGxtt_pP6GABha50,3891 -kubernetes/client/models/v1_pod_resource_claim.py,sha256=i-1oqmMIwO0Aq04namo3trWHkMpmbL470EBTzA7CX7Q,4359 -kubernetes/client/models/v1_pod_resource_claim_status.py,sha256=diY_ZnSgzsZb33y2J_Uth6Y5HUA6QGxNmyvga2joriQ,5369 -kubernetes/client/models/v1_pod_scheduling_gate.py,sha256=UXlF3MKPRN4lGTXYC88iSgtyN-NGqsaaTRPGeTxlzN0,3684 -kubernetes/client/models/v1_pod_security_context.py,sha256=nHXo8mLNX5L7nUy8ZvD6YjE0E28UNZ11FWZB9QkphTQ,16845 -kubernetes/client/models/v1_pod_spec.py,sha256=O6nSkQrSW82U7ybQ2A3c_7YLY9Y6MqHuppAjN3fh8Ac,54872 -kubernetes/client/models/v1_pod_status.py,sha256=vtyTVtjbXRWBKAsrAaK8AwRnBVGgh3fRZ3SaZxAcSWg,23744 -kubernetes/client/models/v1_pod_template.py,sha256=bdI6e78GVqiZcp-UmCvswTWRYlMvf5P1E23Uuw6rYI8,6637 -kubernetes/client/models/v1_pod_template_list.py,sha256=Twt3Yno01fEF9aPfniMGdInwbaPPg0QARy2GpCo0OJo,6900 -kubernetes/client/models/v1_pod_template_spec.py,sha256=6PZci0RlTOAYikWYXbCIw84x1feUAQ_z7eypbZT7Xa8,4030 -kubernetes/client/models/v1_policy_rule.py,sha256=DCJHNZZ6FyfKO2QjSrYH3kvLAIOvD4L1H8_JY5ehnac,8744 -kubernetes/client/models/v1_policy_rules_with_subjects.py,sha256=r5yHu7i1Au-8L-OZMjIyTQh4if2egoDZLeHB9AleIns,6921 -kubernetes/client/models/v1_port_status.py,sha256=obQzDBvob1QS7BQLAbUaVWGY7HqXbGVTwSrJc0BYsrg,6026 -kubernetes/client/models/v1_portworx_volume_source.py,sha256=BNJvBvFAMZwlCcLmbSPH8xlSfg0bzFIPo0rGD4EKFuY,5809 -kubernetes/client/models/v1_preconditions.py,sha256=dSxTmWJ561WuSrobGLUMqDP-LF8nYCk9EUJaAkKzKvw,4314 -kubernetes/client/models/v1_preferred_scheduling_term.py,sha256=XpTv1PQpTuNdaI9YWKXvpCN756UM_JndfKOGJMa4Bz4,4742 -kubernetes/client/models/v1_priority_class.py,sha256=-iCdyzwR_d2bsISMDn_OZ6OiCPV7AD97g_3oSdK6X1k,10904 -kubernetes/client/models/v1_priority_class_list.py,sha256=yNeaBhXLkPNUATrRUbErlsXMR_KFI8NybwcgvNEWql0,6976 -kubernetes/client/models/v1_priority_level_configuration.py,sha256=pbjs3cO7PlfrHrCKsC7ov1XiCFM9kdnNAbu6GNr2R3A,7676 -kubernetes/client/models/v1_priority_level_configuration_condition.py,sha256=d2bXtRV_G6lq1K4KK65pWovgwsj46tAhbBvyDMgEDDI,7641 -kubernetes/client/models/v1_priority_level_configuration_list.py,sha256=sDNAAfeYYgdhQDfdgeXW9nltq7aEjL0Lg8b2M_FxSYw,7283 -kubernetes/client/models/v1_priority_level_configuration_reference.py,sha256=8M4J9iwyygg8x-11hbkIzSLfRDv8uRymSBLMRZbX-Kw,3830 -kubernetes/client/models/v1_priority_level_configuration_spec.py,sha256=8E7zSyrhaY3iwvcxGOyDwg6Z4AGiZkFiDhlHhmHwAcg,6229 -kubernetes/client/models/v1_priority_level_configuration_status.py,sha256=J-2ctGxsUZrtdtbGGjLmu7DS1runL7ZJs-Sqok5THHk,3846 -kubernetes/client/models/v1_probe.py,sha256=w-7sGJSpaI0urkTSjjBtfio6yIBgAA5xzY5epb4Oo3A,13723 -kubernetes/client/models/v1_projected_volume_source.py,sha256=TF7jCzHRSQOp8K1y7my9oqb-lAfVNq-bs38T3s8eYIs,5321 -kubernetes/client/models/v1_queuing_configuration.py,sha256=HtqSurwoAmXPqg_MswCT5djz1eYw3HAnKlyQkLt7pnU,7495 -kubernetes/client/models/v1_quobyte_volume_source.py,sha256=zqPqS4YeJduReqEzcaNhzgecL9OgFlyN0JBKmAgGT8w,8515 -kubernetes/client/models/v1_rbd_persistent_volume_source.py,sha256=L820ztAeatHR8S0ZZ4kJGAJjiuvpfWbGr1N4wTpnB2Q,11076 -kubernetes/client/models/v1_rbd_volume_source.py,sha256=07euAmgPGT-7M8isSa0xFBsHpF5Kv7OpvJegNr5YLVQ,10731 -kubernetes/client/models/v1_replica_set.py,sha256=pLy9Du_nRuD_FuVLuZB-jNC_SfLnsXMqaqzAJ2sktPw,7196 -kubernetes/client/models/v1_replica_set_condition.py,sha256=D4coACnue7uy62yYw_tzyJjlmfdICqGN1_QBC37_SNo,7331 -kubernetes/client/models/v1_replica_set_list.py,sha256=T8sizEw6w6xBhegnkeUbW5PCtmaRMeiepKXGoUO3J68,7057 -kubernetes/client/models/v1_replica_set_spec.py,sha256=790AU0dbb5nchTTdZOez2DIwVJvFTgmPmZdRjHqwrTM,6847 -kubernetes/client/models/v1_replica_set_status.py,sha256=YFe-OYIyOP1J87eXeTOjxiGfjJoDeDZqmnjYhJ7KEI8,9394 -kubernetes/client/models/v1_replication_controller.py,sha256=_p8eS5goh42ZX4lDrbkTZ5hI2kc3kU09t6Yq7vP0FXs,7526 -kubernetes/client/models/v1_replication_controller_condition.py,sha256=OxKwUGjqJIG4mQ9_hZaF8KSD3rdvn6n6RuHITV16Ugc,7617 -kubernetes/client/models/v1_replication_controller_list.py,sha256=T-WEqp2mrUrJrstfN0WBRwgK2Pa85yWUhJvIP-KYxXY,7334 -kubernetes/client/models/v1_replication_controller_spec.py,sha256=Sp-30zaO50jdihGzLor41wqwAAMNNIjcoIWM6PI7958,7744 -kubernetes/client/models/v1_replication_controller_status.py,sha256=C-ilHQfD1Av0HWkhpLxyMcM7ylTHAVr7ZUT-TojGoR4,9773 -kubernetes/client/models/v1_resource_attributes.py,sha256=fuhARxGZwd2iC0gM965noH6x3mZ4DOh-bHf0dQPa_HA,9368 -kubernetes/client/models/v1_resource_claim.py,sha256=zRpfdrF8knEdqgzFDNkf8Ntq2f88OBNTHUJq0upD2HU,3800 -kubernetes/client/models/v1_resource_field_selector.py,sha256=yp4knwFhgQuNt7lz0m8mIYHHyI4sgnPR0AO6zbQ5E2I,5549 -kubernetes/client/models/v1_resource_policy_rule.py,sha256=b5fdSMqidGW8iLaURjtAXtT5d6-rkRmElMlOz3QZZaE,9571 -kubernetes/client/models/v1_resource_quota.py,sha256=7x9OzBb9QfK5WMKqthQ4mfGAd9jzxc3TwisKT8xmMvM,7286 -kubernetes/client/models/v1_resource_quota_list.py,sha256=-Do9PFwISEYJHR6ehBsCe7m2ak3D0x65PKvX69oRCvE,7128 -kubernetes/client/models/v1_resource_quota_spec.py,sha256=i546b6CwZT4cOq5yqHuviESAdO1ybfOfynuaVsHM0cw,5460 -kubernetes/client/models/v1_resource_quota_status.py,sha256=rfvL_4B71QQA77r7-pCsXNIjdiddFGVhNhDqbsf2c2Y,4529 -kubernetes/client/models/v1_resource_requirements.py,sha256=KKhg-dgVblRS2aQoIIZW247hENq6xa4iUjWWSSpiURI,6474 -kubernetes/client/models/v1_resource_rule.py,sha256=fpmiCSRUReaHrUp7kyKPeyC9wWkiGZV9f2LG74gud-c,7224 -kubernetes/client/models/v1_role.py,sha256=0rMDPAkbi9t3qMyYcxqPDk_UolyqNypHT5Uo8gSVN4s,6576 -kubernetes/client/models/v1_role_binding.py,sha256=hedDxGbDXms6MEHJk9xzXEIKuHz6SvS6sPQquhWmS1M,7647 -kubernetes/client/models/v1_role_binding_list.py,sha256=zZ15MRCLIxE0-Bqlsvfin1lHNlUMoYCn8UQf9XUp7h4,6920 -kubernetes/client/models/v1_role_list.py,sha256=seD22WjqS8RZYi39-xwvJHnB3Du0fyx9yvdMSJtlzq8,6745 -kubernetes/client/models/v1_role_ref.py,sha256=pHhrRqK7NOxwLKrL443VZjhyZ6JhNtcZ5m87pd--SzQ,5368 -kubernetes/client/models/v1_rolling_update_daemon_set.py,sha256=KCyS64vBtUVUwLt9PdwP8oazYxBhG4erZGhvZEnJkJ4,8525 -kubernetes/client/models/v1_rolling_update_deployment.py,sha256=nMH8h4VPgfoOjnCgoKyhZn-wsDY_PsnuApIJJjme4z8,7017 -kubernetes/client/models/v1_rolling_update_stateful_set_strategy.py,sha256=i_igtlCIySZepburXhukrF_Eb0INAwc107CvMo5baEU,6231 -kubernetes/client/models/v1_rule_with_operations.py,sha256=d2gdd_7jcgifkT1OfhWrSV218pSPoQ1FthtV9EAsGvQ,9436 -kubernetes/client/models/v1_runtime_class.py,sha256=5Lp1EzUfoyqW-hJ-WYpb4tFMsd7aAhoowlzfKGaFC54,9352 -kubernetes/client/models/v1_runtime_class_list.py,sha256=j8pI7P94SgrsjLeZwCTyD4ZPWgUNDQTY7_SPbm_l2B0,6949 -kubernetes/client/models/v1_scale.py,sha256=Y136lfjKgMAL8gcpObSBzpKX88nGy4MiXk433JB1lKU,7046 -kubernetes/client/models/v1_scale_io_persistent_volume_source.py,sha256=1XJxegi9rk-xx0qHzFVY-TB1xqU9uZnFiCHrOmiqNAQ,13222 -kubernetes/client/models/v1_scale_io_volume_source.py,sha256=LZ7CUZMcLVPP0vSKrcKy-OVLFiVqm5ovyRJjsichbJc,12779 -kubernetes/client/models/v1_scale_spec.py,sha256=OvxGsUOyRvoRzTxauqbjZem2VCRjkOUvGVw93eFQ6r8,3518 -kubernetes/client/models/v1_scale_status.py,sha256=AAdR6qTbtDwtc7EdXks4NprDA8ixEO6JXUxa_3lx-PU,5097 -kubernetes/client/models/v1_scheduling.py,sha256=n9G8TWTFX2Yz2k2aHPmmg-sPmI6os0jjmYpIcWLx4t8,5328 -kubernetes/client/models/v1_scope_selector.py,sha256=GlxDz-spOZU-sXaHHqVcw3OlHyY_flcq6RIC3tNETJ4,3839 -kubernetes/client/models/v1_scoped_resource_selector_requirement.py,sha256=QuCLdyke-lilKfjMEZSy7hxGZTtsVAjE9ue59D_6zKg,6265 -kubernetes/client/models/v1_se_linux_options.py,sha256=FjVPNGDRyfHHKTn67kfEm_Eoe5c0Yop7qPrbhi-DlKQ,5755 -kubernetes/client/models/v1_seccomp_profile.py,sha256=gyv7qXvidqaTju1zH93HA6_YWTxoXOIOhFouBll9jtY,5526 -kubernetes/client/models/v1_secret.py,sha256=pHS4W2rs-FRU8gBRfy7ryvU2-fd8BW4xMsGTVZgTn94,10414 -kubernetes/client/models/v1_secret_env_source.py,sha256=I6e9j7vzHUePGVDEAm-eElsp_krXensV1jPaojfJlcM,4386 -kubernetes/client/models/v1_secret_key_selector.py,sha256=MmPVHOun5QZ8iJoVJTgrx7U6yPH8xCvl0LazVY_oI_8,5348 -kubernetes/client/models/v1_secret_list.py,sha256=UhquYNrKdNrk0GuiaSlZuWQ49tVl5x5ssHfHgvLwaMc,6947 -kubernetes/client/models/v1_secret_projection.py,sha256=2NrGT_Z439B4eU-QC7jjQ7oq-XXRTT96L8cVSitRYNE,6123 -kubernetes/client/models/v1_secret_reference.py,sha256=sV-_xcq_82XXdHKA2CFx2fEZpUXkwTriomq1V1l5mBc,4371 -kubernetes/client/models/v1_secret_volume_source.py,sha256=wTnxP7XtvvNiApuLKLGi4Cn3714wfuMhCPfzNNbu38U,8096 -kubernetes/client/models/v1_security_context.py,sha256=52xPKyCweXsRxRy55kFj2BNNq6vnPYUBiuykNJvMFt0,16354 -kubernetes/client/models/v1_self_subject_access_review.py,sha256=wCm4FG-eDwrUIYq3LRthnLHboewp1tXIcvfV9Y7CmXk,7728 -kubernetes/client/models/v1_self_subject_access_review_spec.py,sha256=5hZpefk4fjYjOoPyDy9D4rVPt-3p981fM67unTA2bJ0,4837 -kubernetes/client/models/v1_self_subject_review.py,sha256=wIwhUU7jUhbgmyXbziubTRhkal_CQgrr6Yg3Mkv1HPQ,6741 -kubernetes/client/models/v1_self_subject_review_status.py,sha256=GPFhvslUk3i42_Sl3iJ8Im6td4c5GqlnGBUFIBfmYkc,3492 -kubernetes/client/models/v1_self_subject_rules_review.py,sha256=-l7FOti7pLrFNzs3C3K4O_miOl1jAYiWGHYMwakM_JA,7698 -kubernetes/client/models/v1_self_subject_rules_review_spec.py,sha256=fnnSmhQBJVpajP1N1y5SCibLjnPx_wef-fYLHK6F_aM,3626 -kubernetes/client/models/v1_server_address_by_client_cidr.py,sha256=pQCjflJyY46h3CyPrunD3eIneVAlRbm1awWoamVVP98,5238 -kubernetes/client/models/v1_service.py,sha256=s8y9BlKMf45S_8raXLt_VBA7FAnqp1cWZVjyJ3Vvxqs,7106 -kubernetes/client/models/v1_service_account.py,sha256=gqhpUMpRaZ3uDsCzNQVJKNOICGowpzWZISGShUR_FJI,11146 -kubernetes/client/models/v1_service_account_list.py,sha256=54NX2dDinlcPDieq_Il34C_bh2AqOF_y5O8HWE4wBdM,7165 -kubernetes/client/models/v1_service_account_subject.py,sha256=NHQbDcZ3CVdWMwXdC562cbIxS9hoNBYHL1pa5XQOBGE,4834 -kubernetes/client/models/v1_service_account_token_projection.py,sha256=xk1s1lbFYG7UqWxmDASy9VQ16cMVPrv8JpasqYQ7Oeo,6831 -kubernetes/client/models/v1_service_backend_port.py,sha256=NBVnHRXNv0e2GG4twbDBN6vn4CwVO00Ltc2r2TGhxhM,4495 -kubernetes/client/models/v1_service_list.py,sha256=iL3okUywvTx7uGuCON-e-zNZN3yavekZfOosOivYip8,6798 -kubernetes/client/models/v1_service_port.py,sha256=a9clFhBNNT4l2fBV7nqorRGsQV1yyNoDoaVtFm8k2HY,11951 -kubernetes/client/models/v1_service_spec.py,sha256=1h6y0NPx3Qu93x4b0gyaCBddxAlHoO7kU7sNbU4S1O0,42792 -kubernetes/client/models/v1_service_status.py,sha256=vlkbSih-NGm1nsbzBtXvpVMR8mrSkRmfIOaX7_oG63U,4361 -kubernetes/client/models/v1_session_affinity_config.py,sha256=1q6gqCEjs857_SpMZrBFwCkePp4QuaXxDVYQ9f_p3fM,3494 -kubernetes/client/models/v1_sleep_action.py,sha256=42Jk_lWz-Zt8hohDnqgLDIs8EyINm1s567ngg_qRaPg,3623 -kubernetes/client/models/v1_stateful_set.py,sha256=AZmD-4swy9LMbUsGXDCHTWxL7sNW_P06wB5xRaMe8yc,7226 -kubernetes/client/models/v1_stateful_set_condition.py,sha256=XOOb_9-tVstGeP6ouCgHMVkBxkI4T84iojzb1dnmWEU,7347 -kubernetes/client/models/v1_stateful_set_list.py,sha256=rz_O4T_7wd87WPUl-lOd2eOEIUZKI0dbG8lUt3N187o,6928 -kubernetes/client/models/v1_stateful_set_ordinals.py,sha256=do_GbK9xOsootrdFtZHnPFabkSA_HUgBylxHJzlNSWQ,4302 -kubernetes/client/models/v1_stateful_set_persistent_volume_claim_retention_policy.py,sha256=LJ6o4W43PoGRYEeUqnQOV9X5fblYKTFMF3wwOy1wM-s,5817 -kubernetes/client/models/v1_stateful_set_spec.py,sha256=r-qHUE8i7_AiZqp2VK-UPh-W6ExHo1FDrANFhAjEqdQ,17176 -kubernetes/client/models/v1_stateful_set_status.py,sha256=TkrDEYki9KkAZ7t797l2n9MrcW2fQr_-n4uZuurSitM,14116 -kubernetes/client/models/v1_stateful_set_update_strategy.py,sha256=ZFHAJd89LF1axKDaFoJRemB6VYHOeeG3VYDIQG0C0-c,4529 -kubernetes/client/models/v1_status.py,sha256=WpnxnRvD593IiwGamf3okcmmKV_Jsr4NOcJ1IwLaRXw,10061 -kubernetes/client/models/v1_status_cause.py,sha256=phzpf16c70ynSObNf-ysRKCKjVr3_Z8Aqe6EcqL7C8s,5980 -kubernetes/client/models/v1_status_details.py,sha256=tJtDgLhCnXzuUc9LJdJmCPJ12nqPse1CMwIyEXZhzZg,8863 -kubernetes/client/models/v1_storage_class.py,sha256=7v72yr93jJolGGjnyNwma6ndpxujmHb7mkd4Pl48HZA,14396 -kubernetes/client/models/v1_storage_class_list.py,sha256=w8iggOHa1yWUGPYKcRoiOQtP1mOMSi9hc0HuK3vTDec,6951 -kubernetes/client/models/v1_storage_os_persistent_volume_source.py,sha256=r_QGu96VtBn6cNaZsYqsMPEN2jGI3gHQiDw49QAd3Po,8636 -kubernetes/client/models/v1_storage_os_volume_source.py,sha256=bptkvy5UCLSqP18h8-UCpAuKqc-th5cvJH0GL3iWyRQ,8411 -kubernetes/client/models/v1_subject_access_review.py,sha256=jHKFq_ArsYvWc8CoUvAJg92pgPAnVGLW0SZyV-YDZpo,7620 -kubernetes/client/models/v1_subject_access_review_spec.py,sha256=8cvIaUmUzxCl2Gr__a1kcuVuDG4MqYS9Qq-Esiyk1aw,8354 -kubernetes/client/models/v1_subject_access_review_status.py,sha256=gXN_x8sxqgyXwhcOm2cuy8ySu4oXmBCvf4_Zcf4GmTc,7409 -kubernetes/client/models/v1_subject_rules_review_status.py,sha256=T3iHegDKwyKfTnyiXTG5IdJK73QgXePfsc20SC2aSmQ,8461 -kubernetes/client/models/v1_sysctl.py,sha256=qBi0k_6WHA3Fn4UWx1bXGMM6-VXXsTJfrverOba-7PU,4320 -kubernetes/client/models/v1_taint.py,sha256=spR8b3y07xSLRI5RSFgYKGwiE9HHptytFSuK-wNYQ_I,6226 -kubernetes/client/models/v1_tcp_socket_action.py,sha256=MS73rFUtxuIzC-JdXJZCGja-_G6EhWE2qGODcVtRRuo,4526 -kubernetes/client/models/v1_token_request_spec.py,sha256=GIgYg0ZyCBduM__fvzZ9lr-gOR2DInniaXvdde6wcBs,6597 -kubernetes/client/models/v1_token_request_status.py,sha256=S_u8t9kOmJ2wG279sUizoFBI8HjUkCsoQoAtkm-UtwM,4914 -kubernetes/client/models/v1_token_review.py,sha256=HKiWnAPXYM44mKAAlYRXkAE80mCpOLAeZL7k27tIL6g,7380 -kubernetes/client/models/v1_token_review_spec.py,sha256=e1NNqvdzY4I6KGmy_W0hegltwcmvOiofRK8pDOLKYH4,4857 -kubernetes/client/models/v1_token_review_status.py,sha256=tt-zxyeJhaqCHVdaacaT7SBVw_IDHYDAsofhWlaWlcQ,7097 -kubernetes/client/models/v1_toleration.py,sha256=erzf0GGAVOYnJcdWMG5ER9yLvQW2iM7pKdqiKW6Cq68,8245 -kubernetes/client/models/v1_topology_selector_label_requirement.py,sha256=8YJt5FV3NM__DSyZuBiD_Op2cEMbLaus22Okzobu9ag,4840 -kubernetes/client/models/v1_topology_selector_term.py,sha256=RsCtibbbXRpKVPZG7ZShCvMJDNDTjPyVSSe88lmzt4U,3985 -kubernetes/client/models/v1_topology_spread_constraint.py,sha256=HCe-1hGwFgCQyoGPHe2H1IAyqDvU1jNWTCGJbLsSGeQ,21414 -kubernetes/client/models/v1_typed_local_object_reference.py,sha256=pmt4ZHphvZ-Os8zj2Uy7djkE_mwNlCfBr6LCUdHBFUE,5769 -kubernetes/client/models/v1_typed_object_reference.py,sha256=bDgh6VLu5adQLTDBG8TdjkL6maASRJh-chXSTYeMfMM,7216 -kubernetes/client/models/v1_uncounted_terminated_pods.py,sha256=FqmOYtt_YX1uJisVtcRBh4v4yFDXPNYC2tX5ZBG1PGk,4413 -kubernetes/client/models/v1_user_info.py,sha256=jbYRaClVWrEv7L-i9P0TGWP1GL_b7_KwrlrYVi3ESu4,5970 -kubernetes/client/models/v1_user_subject.py,sha256=c9uG3_uWNd3gONQODBiLwEhdUb2IvmqSac_-6C8Dfzs,3634 -kubernetes/client/models/v1_validating_webhook.py,sha256=WF7y89TpIk1Bcd-vcASgI8e_j3A_wO9vhBQyJMzpwsk,20359 -kubernetes/client/models/v1_validating_webhook_configuration.py,sha256=yufM0FPhSGUj_aPAr8-KAKwrJFslhoO4uvP1P8XJdUk,7233 -kubernetes/client/models/v1_validating_webhook_configuration_list.py,sha256=JS_BV2aPHJbz4MguSQESW7i5l0jYisR1gJj4wROByZQ,7373 -kubernetes/client/models/v1_validation_rule.py,sha256=mnZtw2qJ8M_bBwYjyWrQ8chXCsX-h6ti7LIMFMIhXHg,22970 -kubernetes/client/models/v1_volume.py,sha256=mRkJLz3XaOhbcdgYZJj-DH4JqehICE4rq1YqeNsThro,25154 -kubernetes/client/models/v1_volume_attachment.py,sha256=W6XbH867N-eB03HNEEKTddm_MHH8MVTY8mRV8tWtjcs,7530 -kubernetes/client/models/v1_volume_attachment_list.py,sha256=em_2IHcHn0NxmZ2g726gznMGCK2P6Ou3OzZq8di9P5A,7049 -kubernetes/client/models/v1_volume_attachment_source.py,sha256=CcdkN-pCAYim0W3JI733btnAzeGVH375ywPkDoX_2DA,4880 -kubernetes/client/models/v1_volume_attachment_spec.py,sha256=zG3ahhbyhS33vh6B_Ud7ElXFdgMmFDMYz2lyFGpOERQ,5813 -kubernetes/client/models/v1_volume_attachment_status.py,sha256=7G7R2E2ERrBjkBL2AUHsO-dGFP_LFJq5T5pXvKo-N5c,7156 -kubernetes/client/models/v1_volume_device.py,sha256=QljXil6rq3qv39QsqFCGGs1cREY4ZwyqA47UUt1R0XM,4701 -kubernetes/client/models/v1_volume_error.py,sha256=DPBiXfv65mo6SoaZJOHli_NvZ1HWxaEBrgBXQzps6mY,4426 -kubernetes/client/models/v1_volume_mount.py,sha256=eSatF9j2bqvn8UV7plvGBb0J4EDc6T4cWGbxHLLrNuc,9092 -kubernetes/client/models/v1_volume_node_affinity.py,sha256=OhmbpgMIdr71ricvdT46lPq79p57KNS-bVXsHxkqjpE,3445 -kubernetes/client/models/v1_volume_node_resources.py,sha256=OnvP2qO467DulgcrvS_K-rjA0f-NeiSn74ZlFpSAn-c,4190 -kubernetes/client/models/v1_volume_projection.py,sha256=72ge-65l0QWgStW_JQaaDQcridyFuZjvCFgiZx3Ex5I,7018 -kubernetes/client/models/v1_volume_resource_requirements.py,sha256=r49QrKhTlJo9AtBNbkvyhVSDxMs_9B6h9k5XetWJ9Uw,5285 -kubernetes/client/models/v1_vsphere_virtual_disk_volume_source.py,sha256=2phKfWZatblqDKDIdyvob-CxRw66v7vxA9hjU_3Wmo4,7360 -kubernetes/client/models/v1_watch_event.py,sha256=aIdrnDlOyEYTu7ZCTnbjE1Ift6ByuOn6MvsapgMNIJc,4740 -kubernetes/client/models/v1_webhook_conversion.py,sha256=XgGMhJ4x_j1VJiRQ2YCpJlYLn-yki9Y-E3uDoeNBZyQ,5789 -kubernetes/client/models/v1_weighted_pod_affinity_term.py,sha256=rDbiMSwwcK0T6m8cZ1MmOx_bUv4TWxT_9XsxTtWDmMw,4882 -kubernetes/client/models/v1_windows_security_context_options.py,sha256=hLdCb1XrHXxuJ5x03ASSKrEYdDBxOioFgOKxuQYkeD4,8455 -kubernetes/client/models/v1alpha1_audit_annotation.py,sha256=9EUzelbFul4kKUHps3wrRTAhjsyqF4ueHFMDC7t6nk4,7521 -kubernetes/client/models/v1alpha1_cluster_trust_bundle.py,sha256=g5li_DW90hatNxVceLDkAOUpZ8Xv01AUJqFDSPXv-Gw,7010 -kubernetes/client/models/v1alpha1_cluster_trust_bundle_list.py,sha256=4PCmPor7nrLnH4GlJFS-Ya2QIUPV2AGfwL1xxD6SDmU,7259 -kubernetes/client/models/v1alpha1_cluster_trust_bundle_spec.py,sha256=ZluJ33CZOrKkqJm_bXgp1v_eYPIeEHgXlkXfaGFMgs8,7397 -kubernetes/client/models/v1alpha1_expression_warning.py,sha256=o9yqBlbAAnv-F1UB15e8VsoRug5SDKhf7ErgFnWeHyw,5300 -kubernetes/client/models/v1alpha1_ip_address.py,sha256=llosjUdhr26zuoBjlkUBPsyDzpqpS3NiLwZDKoOU8Zw,6649 -kubernetes/client/models/v1alpha1_ip_address_list.py,sha256=VH4j0mqUhl6bF42a0FAYKGx1j3yC8_TvTZACgYProxI,7016 -kubernetes/client/models/v1alpha1_ip_address_spec.py,sha256=wnE2aT3BJrJnXdMi91w600FP24bEMkoHcX47deP6SzA,3519 -kubernetes/client/models/v1alpha1_match_condition.py,sha256=Fheav0IDL4ou4bP_Q6AuU8O1d6cRWHcveIIynhkxUhU,7367 -kubernetes/client/models/v1alpha1_match_resources.py,sha256=PYwdxNycjxlXTYsG2lhtjXnt-EAFIGD7g5CWha3p-4Y,10168 -kubernetes/client/models/v1alpha1_named_rule_with_operations.py,sha256=LnN12wPgoHercacjiTZ0tu_pBMxkEvnWmthgGEqwK_4,10860 -kubernetes/client/models/v1alpha1_param_kind.py,sha256=9gMFpc2CcIlGJJ2Mkz6XLFuI0WrjLv7OhnzOR8peizg,4450 -kubernetes/client/models/v1alpha1_param_ref.py,sha256=eDGNS0zo0i7YuiYaOMPShlYcKYz6uFYHQjWgoG6iPwk,8400 -kubernetes/client/models/v1alpha1_parent_reference.py,sha256=ezYuF9WTyPNROSLgU7paLFzC2HQUO-TA4kpTgjiUZlo,6027 -kubernetes/client/models/v1alpha1_self_subject_review.py,sha256=z4cTCmgFynv8-2lRNv1qGbC0H4NG-Uw_SJ8YQjMIqVg,6879 -kubernetes/client/models/v1alpha1_self_subject_review_status.py,sha256=-qvxO9o6Gczshpr0RQNqi666Lz_-s_TNW5OoOJD91dg,3540 -kubernetes/client/models/v1alpha1_server_storage_version.py,sha256=gVvRITRRcl2V0PwBu3Vqel2HCU_72YJ120E2Y5XW0S0,7146 -kubernetes/client/models/v1alpha1_service_cidr.py,sha256=QAo8aBX5TqPyERaqqDarlMHd6l6fGw6fTxQvq3ibylY,7406 -kubernetes/client/models/v1alpha1_service_cidr_list.py,sha256=FDEmxTRE19ePdd5jYVn0H-M7kNiJO7d2OVQ4774rJMg,7064 -kubernetes/client/models/v1alpha1_service_cidr_spec.py,sha256=FE7D-tiCObyr-W5rBT0gdhjNDAdTxKEpVEGGsFUtjtU,3860 -kubernetes/client/models/v1alpha1_service_cidr_status.py,sha256=Ka_a6l0GzJMn8ujqfvR134gDgyPfKHM3H1IJ3o_flZ4,3802 -kubernetes/client/models/v1alpha1_storage_version.py,sha256=LQNqFVeGAiZzEJswbRJXg8bGOMi80Soc3mJRs1MSRR4,7932 -kubernetes/client/models/v1alpha1_storage_version_condition.py,sha256=H3-xne9hMYSaP-3SZVJPNRUDv7derrD8AJ2k7UAIdBk,8875 -kubernetes/client/models/v1alpha1_storage_version_list.py,sha256=Ngikh50QpjrpMEXHzEP0AwfHDpXrCLnEJFtIoA18P84,7137 -kubernetes/client/models/v1alpha1_storage_version_status.py,sha256=-Zs0YWtpF8HRI24GrKc6d5HQvI4KsRPoIga8d3qGQLE,6566 -kubernetes/client/models/v1alpha1_type_checking.py,sha256=FkG6jjv_VTaot2EKSCDOnNQfqPb2ptVmW9OAzWbnNaI,3855 -kubernetes/client/models/v1alpha1_validating_admission_policy.py,sha256=NKmYFnHMNQTLKQZVHn-SYc4Y2QXTLCaPUaZGgWwEPFI,7826 -kubernetes/client/models/v1alpha1_validating_admission_policy_binding.py,sha256=0j_dgtQSFSM7IFAwR4V5B1eLNrCtFZiUIu5qXxjy2eo,7178 -kubernetes/client/models/v1alpha1_validating_admission_policy_binding_list.py,sha256=vHJKJ5fycZrMDdCnrAHDFN0nWrP8cXF7V3ogDI7e23I,7368 -kubernetes/client/models/v1alpha1_validating_admission_policy_binding_spec.py,sha256=eV6iJW4Ju-0NzaRp0H4aahwSKktaj050rpYqGbjCWDI,11319 -kubernetes/client/models/v1alpha1_validating_admission_policy_list.py,sha256=j8Dj5JcwidCvHut1tn8op-n1UX2sISBKj8JTMinojro,7231 -kubernetes/client/models/v1alpha1_validating_admission_policy_spec.py,sha256=Hnk7QceeFpNtykIGR8ucAraiuCohEABcO41itiMdDJw,14193 -kubernetes/client/models/v1alpha1_validating_admission_policy_status.py,sha256=vlpe5ZXjSshNyE9evz3h9xaH0VPE7DaDjncn5vLBqqY,5895 -kubernetes/client/models/v1alpha1_validation.py,sha256=654YzW_sFwtnwcJVChlMwmgRm-DksRoOPVemwMIF-jg,15882 -kubernetes/client/models/v1alpha1_variable.py,sha256=sJ1i6WTMkkcfcAYKA3sqS4uyC7EHkfFRab5f_H_iZCo,5281 -kubernetes/client/models/v1alpha1_volume_attributes_class.py,sha256=1KRcgpaBKJ0cQAosZ09TIQplDo8-G5vCgHs1VS9DAN8,9717 -kubernetes/client/models/v1alpha1_volume_attributes_class_list.py,sha256=rmEbjKfyDBGLp57MHtPhcya8Pf8BFlZftxOqHFWqMkQ,7328 -kubernetes/client/models/v1alpha2_allocation_result.py,sha256=s7OOaT0sEn30IihFCXFl9LRz9-Rl2T-RZktkEzWa-nE,7096 -kubernetes/client/models/v1alpha2_pod_scheduling_context.py,sha256=XfqNOx2fXkoYaS_N3cIea3XDK1ctSBE9AVAHEk0I2oc,7830 -kubernetes/client/models/v1alpha2_pod_scheduling_context_list.py,sha256=5W-033znoz8RS9IRalSPiMYG7ckvlh7OQWXcojG7oSw,7303 -kubernetes/client/models/v1alpha2_pod_scheduling_context_spec.py,sha256=eytRJDDztEyQkPs_Pk9fCdc7UUtd3P8cQy318w2qe3w,5495 -kubernetes/client/models/v1alpha2_pod_scheduling_context_status.py,sha256=yEfU8PJnq20jMIY77MUvGB9bm-FaLAhJSrFKVKb958U,4167 -kubernetes/client/models/v1alpha2_resource_claim.py,sha256=_7TPiXoHLP-mZJ1vvlJGaa6NuUTmVwUK40N4keeDZFY,7620 -kubernetes/client/models/v1alpha2_resource_claim_consumer_reference.py,sha256=WSBhPDDH1pSfDJWIzNngf6DJvzasUiqqcgwxv8N8hA8,7011 -kubernetes/client/models/v1alpha2_resource_claim_list.py,sha256=1qk9nTpuO5bizw7CJZfZh2XWS0igu_DPonA_A2QFROs,7116 -kubernetes/client/models/v1alpha2_resource_claim_parameters_reference.py,sha256=CUAY7Pl3bce6Q4_t2upT9J7BrLTVJDKJpEbaliBighY,6115 -kubernetes/client/models/v1alpha2_resource_claim_scheduling_status.py,sha256=ruEkOct0W-2cFASmRPQenfArcpDdT_6GLlkfiaHkQKE,5050 -kubernetes/client/models/v1alpha2_resource_claim_spec.py,sha256=BETu0RPQDNRlOeflw3F1I2kTmCykkRYAKBEIJZ8pPRU,6242 -kubernetes/client/models/v1alpha2_resource_claim_status.py,sha256=YOkOn_VcVJkiEFgUPtHzh22qJThyIiLWfr1zEI6TvVw,7673 -kubernetes/client/models/v1alpha2_resource_claim_template.py,sha256=YbpGA8HjEp9h62yku6ezSmha2uszwnNY11qFa9JY6YE,7079 -kubernetes/client/models/v1alpha2_resource_claim_template_list.py,sha256=sxgKDBbRqOLFSmI5vjVG2-IriQ21LFlqejK-aC1aYBI,7318 -kubernetes/client/models/v1alpha2_resource_claim_template_spec.py,sha256=kdpnJ6vrurA2SzaUmzOZJaicwodHHijE7uLfX4u7Agc,4424 -kubernetes/client/models/v1alpha2_resource_class.py,sha256=YrcGpDeUNX4XUv25V2Uzi1Exb90jJGyutVt0KpLQFas,9205 -kubernetes/client/models/v1alpha2_resource_class_list.py,sha256=ILcEx2TYkner9E5qCHNd8S84ZKJC-pu_VhqfFKwHo_8,7118 -kubernetes/client/models/v1alpha2_resource_class_parameters_reference.py,sha256=_ctoi7cJqzlUJMiiHssHUPiAeTB4PKd5c948FUkn-Ig,7158 -kubernetes/client/models/v1alpha2_resource_handle.py,sha256=2foP5bflGH2YpVfKXDnsaXkaMGi0VAArm3To_yHFhdY,5640 -kubernetes/client/models/v1beta1_audit_annotation.py,sha256=rjRQDzFyvGnLTMd27xbUNIDDvbFoLZc5hMmLtP7ZK3I,7509 -kubernetes/client/models/v1beta1_expression_warning.py,sha256=ZhdFlkJ9z498UctUVMYy6XzA9r32g1jHjZOJ5dv2wMk,5288 -kubernetes/client/models/v1beta1_match_condition.py,sha256=EO1BzJTklFL2C28TMond4UOCMpyaSCUaprXkec5KooU,7355 -kubernetes/client/models/v1beta1_match_resources.py,sha256=gl9jgms3Tohc8UyXjv5ZzcK6gen_9ST_eF-i1l2Uqwg,10138 -kubernetes/client/models/v1beta1_named_rule_with_operations.py,sha256=IDK4kJGfrwQd5AdIvVJloytmrj2fOFbI3CJSQbl8_Gg,10832 -kubernetes/client/models/v1beta1_param_kind.py,sha256=i7CnK1E6VDJF3zAhZBK4xSxG9Puq8grNijH1caCDVME,4438 -kubernetes/client/models/v1beta1_param_ref.py,sha256=EKOHZ4lEWFXvN7Yaoo0IrTZN3IfvEIzIGEel-W1idVw,8816 -kubernetes/client/models/v1beta1_self_subject_review.py,sha256=HSyuDHV93Z3RqseeGnj0eVNYpKyWrizCYYhjQun6unM,6856 -kubernetes/client/models/v1beta1_self_subject_review_status.py,sha256=AQeaBXDQpCIcPNXgtztFQc3HPjrxUlK3dHyuOr5shrM,3532 -kubernetes/client/models/v1beta1_type_checking.py,sha256=LjGUtqD007tR6zYCko_-Ssq6tG43X2bZRTNQ5tkZV4Q,3844 -kubernetes/client/models/v1beta1_validating_admission_policy.py,sha256=k6VCbaP9wWFq-Sjze32e9rWL11zTLWiG91oGxwGLOY0,7796 -kubernetes/client/models/v1beta1_validating_admission_policy_binding.py,sha256=2x_VSIlCxwmg4rOjJGDyXfkoSZfxzx1yQ-Bhpqcm7jM,7155 -kubernetes/client/models/v1beta1_validating_admission_policy_binding_list.py,sha256=OGgBnib1gJ0nf5hiBkD9VP7AGahBofuyf50qchmUDNU,7345 -kubernetes/client/models/v1beta1_validating_admission_policy_binding_spec.py,sha256=bac_CF3-fdFVO4u4SRPZsTzhHpZTg_yvE2J0GLostc8,11293 -kubernetes/client/models/v1beta1_validating_admission_policy_list.py,sha256=Lpzriq4gFyJu7N74SHxlI-kt_iRIc2ar1xkFdBZkEtY,7208 -kubernetes/client/models/v1beta1_validating_admission_policy_spec.py,sha256=y71v51WHqx3heau4mn3JFmuas2fgl5DikAuGuJTAefA,14143 -kubernetes/client/models/v1beta1_validating_admission_policy_status.py,sha256=1zHz7GVTOhsGVTCOSDIQfUacMqIZC2MKLHhy29_qE3s,5876 -kubernetes/client/models/v1beta1_validation.py,sha256=-osXf2AZGNzbVHEgExqFOqnQY-llnv0MrzovEV4Kxwg,15862 -kubernetes/client/models/v1beta1_variable.py,sha256=0Tcz6n5ex1l1QOExGdW10ws4fNJzwg0Ts90-ZimGZgc,5269 -kubernetes/client/models/v1beta3_exempt_priority_level_configuration.py,sha256=tWPOv1X30qtMbBNgqAVfafU8L3cEAoITO1soGPabjVo,7144 -kubernetes/client/models/v1beta3_flow_distinguisher_method.py,sha256=SPCCuCKxnfBqtvt6374_GqXHkNEK9k4M6OQRvoHgKCQ,3838 -kubernetes/client/models/v1beta3_flow_schema.py,sha256=C8F-1A84TrV9dAP4SzFAKTvbLBJM7XC-xn5-BNh2ZxM,7346 -kubernetes/client/models/v1beta3_flow_schema_condition.py,sha256=KtfT19cN54CzODEj9J7TYSApVGCTm5vCuOtKNi7Dl9E,7377 -kubernetes/client/models/v1beta3_flow_schema_list.py,sha256=wnHRlVdxgOmOYaDrUuh2phsHa6ToxVHx51hhFJUmRig,7016 -kubernetes/client/models/v1beta3_flow_schema_spec.py,sha256=Z0ue7Q5aUx10EGfjywE-dRaTpRe0dXTQtqPGWBW8lF8,8042 -kubernetes/client/models/v1beta3_flow_schema_status.py,sha256=J94izOO9Yyc_WakBrBU61L5VVTSLmC3zkAmNJsVig3o,3727 -kubernetes/client/models/v1beta3_group_subject.py,sha256=nuHlVqT5WQYjqNntpX-OpYHMriQE37k3pUzUdYUugjc,3928 -kubernetes/client/models/v1beta3_limit_response.py,sha256=_1n9jqNdJD1QCRFnJOoJaWb2qhN7OR6kTYDaWqfUCeA,4819 -kubernetes/client/models/v1beta3_limited_priority_level_configuration.py,sha256=VrOxUBf48kG81--B8jbNSCT-NHPsv7IqgmFE4cHOXwA,10838 -kubernetes/client/models/v1beta3_non_resource_policy_rule.py,sha256=R5tGbZ_jVsMYD7J39my5lvKn-SnkswzmrxhVphbLszY,5843 -kubernetes/client/models/v1beta3_policy_rules_with_subjects.py,sha256=wj0WJNBakd5ZhF1c1BM4CacXcOZb_5EpPDqpHjb32RQ,7013 -kubernetes/client/models/v1beta3_priority_level_configuration.py,sha256=qUCRjXBJVsjTLYEh_4vEBOiiWo-DSRg2ZBrUtLpnMXM,7826 -kubernetes/client/models/v1beta3_priority_level_configuration_condition.py,sha256=_gn1WvXRwNFO9kUWYGbrwFCaZKvOaGdkWC5TQuwT1_M,7761 -kubernetes/client/models/v1beta3_priority_level_configuration_list.py,sha256=2I1HgKgHYlv87SJ-mGcrXuxhRKCK-Tvv40Q_StBaUPo,7398 -kubernetes/client/models/v1beta3_priority_level_configuration_reference.py,sha256=SSFIxvm1XNIf7h_m8ihvoO5heUscIuZJ3eEOZ-bXRTQ,3870 -kubernetes/client/models/v1beta3_priority_level_configuration_spec.py,sha256=v1Mhb8PWwYTRYi5C9r1MZLeHIt-7igNywTa92uXF8IU,6339 -kubernetes/client/models/v1beta3_priority_level_configuration_status.py,sha256=WFaBelC4FHYd0ucXBkWAkoYzrtjgBW2pRUPYN4-8BGA,3901 -kubernetes/client/models/v1beta3_queuing_configuration.py,sha256=NsdfOxmw-O0bNCS6pqKYfPwANwv6TdiOgy9vqhfVJsE,7575 -kubernetes/client/models/v1beta3_resource_policy_rule.py,sha256=4BhX8y8KhbNs2xOgBBaSwKh5SGCesBo5V-0u3c1-V7A,9691 -kubernetes/client/models/v1beta3_service_account_subject.py,sha256=iFUNZKQzIPh1-VgXGMxFqNs3tROLKHWcJYWgyji2X0s,4894 -kubernetes/client/models/v1beta3_subject.py,sha256=ceXWjLlEO9hnrIg83VSjbrg-po9SsBzteApeDXIzg20,5784 -kubernetes/client/models/v1beta3_user_subject.py,sha256=5gJZbs0qffjXuRT2gCX1_JrftkvUX9mSxaDXBaTejGA,3674 -kubernetes/client/models/v2_container_resource_metric_source.py,sha256=1hgSaQgmgFyGCrZgsNDAtN2WjikPzCPz0x3LDjy29-0,5694 -kubernetes/client/models/v2_container_resource_metric_status.py,sha256=KuWujsOjuEptmGHH9V-sBofhUQ20NwxxSXbJeCmxdXY,5730 -kubernetes/client/models/v2_cross_version_object_reference.py,sha256=Ed2J5vmkQl0gkS2putdK7ECoaFZ6oFx3KkPHyqGkOqM,5895 -kubernetes/client/models/v2_external_metric_source.py,sha256=ubtn-BVchjNFaMm-pltmYT-ZxI1oiAvKMzlhvBz2FU8,4435 -kubernetes/client/models/v2_external_metric_status.py,sha256=jBilg7amjKlw4alZB4xFhddVxwTYcLsQQkIezcgC2zQ,4471 -kubernetes/client/models/v2_horizontal_pod_autoscaler.py,sha256=y1zMZY-Cd2MNNvMvZ__xgmZnBXVu9D7YhHJXiqlAihE,7586 -kubernetes/client/models/v2_horizontal_pod_autoscaler_behavior.py,sha256=KMI4_JzcBx_3Fg8PCO74p0c_UAI-8Zn6nhIjy_iPyq8,4379 -kubernetes/client/models/v2_horizontal_pod_autoscaler_condition.py,sha256=pefs-WHy_tJv3XmbySYXdfmeov58JDXcmMab_0XTiYE,7759 -kubernetes/client/models/v2_horizontal_pod_autoscaler_list.py,sha256=MaIFv6eVhSk_UrPwwDU0ZmfYqefvjInSdUMp2vQcchM,7244 -kubernetes/client/models/v2_horizontal_pod_autoscaler_spec.py,sha256=QBVplHgb0qs3US716ggpG63Adg4puj-86Ys3gYe1gtU,9393 -kubernetes/client/models/v2_horizontal_pod_autoscaler_status.py,sha256=oMs6JvFSvnpCUlNZKcI2RcJEAGKFUkvf3H68inFRC1Y,10018 -kubernetes/client/models/v2_hpa_scaling_policy.py,sha256=RdH7wE2alFgZGc59PxDivXKsgxEzh9Y7zca5Us-vf-s,5954 -kubernetes/client/models/v2_hpa_scaling_rules.py,sha256=A1_GLNYu3tiOy0yp-S9rT5KO3qSOZ6lsflDoMMrNUM0,6818 -kubernetes/client/models/v2_metric_identifier.py,sha256=EWm_CBU-yayk3twFephXvsmO8EuPBw5HEHAfX4D-quA,4305 -kubernetes/client/models/v2_metric_spec.py,sha256=O2GRyrSEcFfG7g9AiYgKMdfqw0w4zojYcVmcOd-ybhM,7686 -kubernetes/client/models/v2_metric_status.py,sha256=HiJPZesFS6Ehavaa7D8at5b70RnyVBLoJrhLJSv6AYg,7746 -kubernetes/client/models/v2_metric_target.py,sha256=y_UzgLARUpXOlbdTCgxZ_zSLvlhFzHoOVRJzvnWqwC8,6819 -kubernetes/client/models/v2_metric_value_status.py,sha256=XloUl4gVBdc2amYPGQDJEEmWExyebNiiWFPW0Uto3oM,5872 -kubernetes/client/models/v2_object_metric_source.py,sha256=V1B8lMYRU9nHAypJJTXwiyKPUvI6McTgabhAWjUwjGw,5503 -kubernetes/client/models/v2_object_metric_status.py,sha256=yMj4fHCjQkzOA-FOJPDWQz7lpX0PHk2L96HdEz0X1kI,5539 -kubernetes/client/models/v2_pods_metric_source.py,sha256=1lsbuB19JUv3ZBjRofnGUtgFmOPH8iADnAYyG63zCaY,4387 -kubernetes/client/models/v2_pods_metric_status.py,sha256=WqH0xBHtqfh4Z508MF-t6othujC9RSHxv_18SZH_VHw,4423 -kubernetes/client/models/v2_resource_metric_source.py,sha256=HBflAMN3nJSdEoy6eQoCAajs58ds61j5qOvFz0zUuKY,4484 -kubernetes/client/models/v2_resource_metric_status.py,sha256=_AHphIlG61EPDCSbc-BJw567QEBK6Sfa6OFOyuNztWQ,4520 -kubernetes/client/models/version_info.py,sha256=bM8XOKrZ9otvm4x8cDrLGror31R7AwCVtwSXfdTKFPw,10169 -kubernetes/client/rest.py,sha256=1lkHpDqszeTomNy9NiqI3XUd5sLR3moHVpaveLAL5Yg,13121 -kubernetes/config/__init__.py,sha256=jDlgnwBP8CnTOuYzcQk4xgpwxesVy6oXqaCngbZGPls,2023 -kubernetes/config/__pycache__/__init__.cpython-310.pyc,, -kubernetes/config/__pycache__/config_exception.cpython-310.pyc,, -kubernetes/config/__pycache__/dateutil.cpython-310.pyc,, -kubernetes/config/__pycache__/dateutil_test.cpython-310.pyc,, -kubernetes/config/__pycache__/exec_provider.cpython-310.pyc,, -kubernetes/config/__pycache__/exec_provider_test.cpython-310.pyc,, -kubernetes/config/__pycache__/incluster_config.cpython-310.pyc,, -kubernetes/config/__pycache__/incluster_config_test.cpython-310.pyc,, -kubernetes/config/__pycache__/kube_config.cpython-310.pyc,, -kubernetes/config/__pycache__/kube_config_test.cpython-310.pyc,, -kubernetes/config/config_exception.py,sha256=mh46I33-L7-kQgJe6IoHrAEd5yB960CgNJWO-qW8SOM,632 -kubernetes/config/dateutil.py,sha256=gOEEIyj3ZAmBWUOBDBbIE81A4CFE9cy8_JSrOwTCDcA,2745 -kubernetes/config/dateutil_test.py,sha256=fcZYSos3EVoxftPRCYJ8XK82F6TmTYwIGPbGPDvt7Mk,3105 -kubernetes/config/exec_provider.py,sha256=fgPoZJ6TWgx9dZGsBi-gyzUGwZtJvH2pIicDA1RRCCE,3743 -kubernetes/config/exec_provider_test.py,sha256=Y8kmsgKuVlIQpCR37JJoD2kGB13hM5uEapv055RYbvU,5929 -kubernetes/config/incluster_config.py,sha256=BzFoaIdTvDUMT6uhmdJvVvec-S8vLFPZcKcCLvRFOxU,4676 -kubernetes/config/incluster_config_test.py,sha256=74OyzgyC5J50e36_J7fhYMOfXL8uIKtO-QoWNS0hNlo,5971 -kubernetes/config/kube_config.py,sha256=w1OKvWu8Y8TM_HOxBk3PNXuznm1bancLFxxBRowhATE,33554 -kubernetes/config/kube_config_test.py,sha256=-1nM1IdZHUa9sMUB_TjkyXX7KYbNf4SX-AKWoOZILlE,70564 -kubernetes/dynamic/__init__.py,sha256=Wju9Fz6BaobrPkp0ZF9ijUYg4XjaWG3eRu5LIE1pfj8,618 -kubernetes/dynamic/__pycache__/__init__.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/client.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/discovery.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/exceptions.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/resource.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/test_client.cpython-310.pyc,, -kubernetes/dynamic/__pycache__/test_discovery.cpython-310.pyc,, -kubernetes/dynamic/client.py,sha256=03fbcy7iwY85Lrz5kWNVKz7Tu73j1PQKprRpC2Z3Kbg,13950 -kubernetes/dynamic/discovery.py,sha256=VeruDZFie1kxrldz578tqHydCET2opECDNPPgjlqed0,17484 -kubernetes/dynamic/exceptions.py,sha256=iOApp7sSAHE_9w7y_CEZFv3pgo3Nf4hGpu2PiHSdbB8,3843 -kubernetes/dynamic/resource.py,sha256=xg-F8Q19aJ1E7NaZImjk2OG0wtMhG0n6bghJKyiiykU,14775 -kubernetes/dynamic/test_client.py,sha256=0ZM7nFzYglJnr9jQ2twy7YkHg28Rh7czMGQGBApR3Dw,20020 -kubernetes/dynamic/test_discovery.py,sha256=GsQC3JRSsZrtZV7zO2-uZ_9HyR34Pn4lDtETleKcfnk,2324 -kubernetes/leaderelection/__init__.py,sha256=0_vUk1kIpYwVAQAaVqQQxttZwlYihfLQW4MLxPpQdjc,587 -kubernetes/leaderelection/__pycache__/__init__.cpython-310.pyc,, -kubernetes/leaderelection/__pycache__/electionconfig.cpython-310.pyc,, -kubernetes/leaderelection/__pycache__/example.cpython-310.pyc,, -kubernetes/leaderelection/__pycache__/leaderelection.cpython-310.pyc,, -kubernetes/leaderelection/__pycache__/leaderelection_test.cpython-310.pyc,, -kubernetes/leaderelection/__pycache__/leaderelectionrecord.cpython-310.pyc,, -kubernetes/leaderelection/electionconfig.py,sha256=TuXi_aoWQ5juO6jdngWTKLNrIns3N7-mqERVyMWabRE,2176 -kubernetes/leaderelection/example.py,sha256=EWG2vFxCKLu9237-5qf7FCLwjGaBdQLTOLKPF6RO3aE,1871 -kubernetes/leaderelection/leaderelection.py,sha256=ehkcEZytezk_TyYnAuD5Un-cBVmmc_PtCmCZzfHY0wc,8377 -kubernetes/leaderelection/leaderelection_test.py,sha256=WjyGMOpANO-Fv36WKgPhPh5UKELdbcvYcQm_6Y6cE5Q,9900 -kubernetes/leaderelection/leaderelectionrecord.py,sha256=fLkWsFGiFMiS6z7aDMpHrIsU4T4e7ijhjs3tXSLhsLA,911 -kubernetes/leaderelection/resourcelock/__init__.py,sha256=0_vUk1kIpYwVAQAaVqQQxttZwlYihfLQW4MLxPpQdjc,587 -kubernetes/leaderelection/resourcelock/__pycache__/__init__.cpython-310.pyc,, -kubernetes/leaderelection/resourcelock/__pycache__/configmaplock.cpython-310.pyc,, -kubernetes/leaderelection/resourcelock/configmaplock.py,sha256=fx2H84OFh7VIkbntnVD31417KJN0KFonhsYrtmH7bno,5857 -kubernetes/stream/__init__.py,sha256=1fGSZdJImNU8V5Ct_lLLqXCBEtZC4QaSsSdGxYtDyDo,628 -kubernetes/stream/__pycache__/__init__.cpython-310.pyc,, -kubernetes/stream/__pycache__/stream.cpython-310.pyc,, -kubernetes/stream/__pycache__/ws_client.cpython-310.pyc,, -kubernetes/stream/__pycache__/ws_client_test.cpython-310.pyc,, -kubernetes/stream/stream.py,sha256=xTyyDFKosT26qaRg6MGig8jWlgicol02NySWa1k3mDI,1649 -kubernetes/stream/ws_client.py,sha256=8WRNsE50ojSvasX5V9rxDb4bNO6M181cdJ5nOpuzzaw,22885 -kubernetes/stream/ws_client_test.py,sha256=IdR0RVNMXYFHxPq5SSVN0fLVC8mAdSXLN5HtVMg32OI,3796 -kubernetes/utils/__init__.py,sha256=aXLLTwPnyhFp_8ORiyunlL4-4RRGg0oZV9YKtQvHldM,805 -kubernetes/utils/__pycache__/__init__.cpython-310.pyc,, -kubernetes/utils/__pycache__/create_from_yaml.cpython-310.pyc,, -kubernetes/utils/__pycache__/quantity.cpython-310.pyc,, -kubernetes/utils/create_from_yaml.py,sha256=t1JM6_hRwa9ZU2R393PqOKU1MHNHz7iCdRisDfe33Y4,10816 -kubernetes/utils/quantity.py,sha256=zvcu9vAXLk0_gAJciUaf-cbSoXu41i-N4Cirhd0MLtQ,2347 -kubernetes/watch/__init__.py,sha256=jHa7RNecyK7P6J7nBggnwEWCiu4TR_v69mN4DDz8WGo,613 -kubernetes/watch/__pycache__/__init__.cpython-310.pyc,, -kubernetes/watch/__pycache__/watch.cpython-310.pyc,, -kubernetes/watch/__pycache__/watch_test.cpython-310.pyc,, -kubernetes/watch/watch.py,sha256=ZF1lz5l4byWK4Krwu1AM5Zfs9aq9GTwY0-j5HD8esCg,8748 -kubernetes/watch/watch_test.py,sha256=A_xdkf2pDxbsVSViUIpUq3UQCCjoI7TtE-6atrSWTTA,20590 diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/REQUESTED b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/WHEEL b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/WHEEL deleted file mode 100644 index 4724c45..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.42.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/top_level.txt deleted file mode 100644 index 807e21b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes-29.0.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -kubernetes diff --git a/venv/lib/python3.10/site-packages/kubernetes/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/__init__.py deleted file mode 100644 index d0da13f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2022 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -__project__ = 'kubernetes' -# The version is auto-updated. Please do not edit. -__version__ = "29.0.0" - -from . import client -from . import config -from . import dynamic -from . import watch -from . import stream -from . import utils -from . import leaderelection diff --git a/venv/lib/python3.10/site-packages/kubernetes/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 317dd4642983101057ed29f0d556ed7ae05e93c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmYk&OHRWu5C&l9ou&^VZqY^K0vnJJ;sA&R>@1{^+SAlDu_N0pDo5c4T&Y`DT!9ti zNC<5C*EgPpA9^}12#)vQVSN`7^688JBgEnsmwm<%gb@+2K!hS{!!BY`K+rKdX7S(z zov>tZicVQNI74SF8=RwamJc4GM{I;H9?5*nitTO%Mu7wSmY!dg%X0Y@;L-EonDSPF za)Y#5%LbK+gQ`2pk;!ZA_{MjwGf;PaYv*KZ5wjL*0R~#&PHJ^OFW9)MdZS-(qpFTr z?7>)UVL^<4w87sXCiao|NPT2Ja*PjR#@;@@pXf$+K%1T9MssjZ((R?CmYcels#)|} zSh@$br>$Jk{@^xRU6f}_YNdlkU-NCJ5Pcibo6m1 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/client/__init__.py deleted file mode 100644 index 623e054..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/__init__.py +++ /dev/null @@ -1,653 +0,0 @@ -# coding: utf-8 - -# flake8: noqa - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -__version__ = "29.0.0" - -# import apis into sdk package -from kubernetes.client.api.well_known_api import WellKnownApi -from kubernetes.client.api.admissionregistration_api import AdmissionregistrationApi -from kubernetes.client.api.admissionregistration_v1_api import AdmissionregistrationV1Api -from kubernetes.client.api.admissionregistration_v1alpha1_api import AdmissionregistrationV1alpha1Api -from kubernetes.client.api.admissionregistration_v1beta1_api import AdmissionregistrationV1beta1Api -from kubernetes.client.api.apiextensions_api import ApiextensionsApi -from kubernetes.client.api.apiextensions_v1_api import ApiextensionsV1Api -from kubernetes.client.api.apiregistration_api import ApiregistrationApi -from kubernetes.client.api.apiregistration_v1_api import ApiregistrationV1Api -from kubernetes.client.api.apis_api import ApisApi -from kubernetes.client.api.apps_api import AppsApi -from kubernetes.client.api.apps_v1_api import AppsV1Api -from kubernetes.client.api.authentication_api import AuthenticationApi -from kubernetes.client.api.authentication_v1_api import AuthenticationV1Api -from kubernetes.client.api.authentication_v1alpha1_api import AuthenticationV1alpha1Api -from kubernetes.client.api.authentication_v1beta1_api import AuthenticationV1beta1Api -from kubernetes.client.api.authorization_api import AuthorizationApi -from kubernetes.client.api.authorization_v1_api import AuthorizationV1Api -from kubernetes.client.api.autoscaling_api import AutoscalingApi -from kubernetes.client.api.autoscaling_v1_api import AutoscalingV1Api -from kubernetes.client.api.autoscaling_v2_api import AutoscalingV2Api -from kubernetes.client.api.batch_api import BatchApi -from kubernetes.client.api.batch_v1_api import BatchV1Api -from kubernetes.client.api.certificates_api import CertificatesApi -from kubernetes.client.api.certificates_v1_api import CertificatesV1Api -from kubernetes.client.api.certificates_v1alpha1_api import CertificatesV1alpha1Api -from kubernetes.client.api.coordination_api import CoordinationApi -from kubernetes.client.api.coordination_v1_api import CoordinationV1Api -from kubernetes.client.api.core_api import CoreApi -from kubernetes.client.api.core_v1_api import CoreV1Api -from kubernetes.client.api.custom_objects_api import CustomObjectsApi -from kubernetes.client.api.discovery_api import DiscoveryApi -from kubernetes.client.api.discovery_v1_api import DiscoveryV1Api -from kubernetes.client.api.events_api import EventsApi -from kubernetes.client.api.events_v1_api import EventsV1Api -from kubernetes.client.api.flowcontrol_apiserver_api import FlowcontrolApiserverApi -from kubernetes.client.api.flowcontrol_apiserver_v1_api import FlowcontrolApiserverV1Api -from kubernetes.client.api.flowcontrol_apiserver_v1beta3_api import FlowcontrolApiserverV1beta3Api -from kubernetes.client.api.internal_apiserver_api import InternalApiserverApi -from kubernetes.client.api.internal_apiserver_v1alpha1_api import InternalApiserverV1alpha1Api -from kubernetes.client.api.logs_api import LogsApi -from kubernetes.client.api.networking_api import NetworkingApi -from kubernetes.client.api.networking_v1_api import NetworkingV1Api -from kubernetes.client.api.networking_v1alpha1_api import NetworkingV1alpha1Api -from kubernetes.client.api.node_api import NodeApi -from kubernetes.client.api.node_v1_api import NodeV1Api -from kubernetes.client.api.openid_api import OpenidApi -from kubernetes.client.api.policy_api import PolicyApi -from kubernetes.client.api.policy_v1_api import PolicyV1Api -from kubernetes.client.api.rbac_authorization_api import RbacAuthorizationApi -from kubernetes.client.api.rbac_authorization_v1_api import RbacAuthorizationV1Api -from kubernetes.client.api.resource_api import ResourceApi -from kubernetes.client.api.resource_v1alpha2_api import ResourceV1alpha2Api -from kubernetes.client.api.scheduling_api import SchedulingApi -from kubernetes.client.api.scheduling_v1_api import SchedulingV1Api -from kubernetes.client.api.storage_api import StorageApi -from kubernetes.client.api.storage_v1_api import StorageV1Api -from kubernetes.client.api.storage_v1alpha1_api import StorageV1alpha1Api -from kubernetes.client.api.version_api import VersionApi - -# import ApiClient -from kubernetes.client.api_client import ApiClient -from kubernetes.client.configuration import Configuration -from kubernetes.client.exceptions import OpenApiException -from kubernetes.client.exceptions import ApiTypeError -from kubernetes.client.exceptions import ApiValueError -from kubernetes.client.exceptions import ApiKeyError -from kubernetes.client.exceptions import ApiException -# import models into sdk package -from kubernetes.client.models.admissionregistration_v1_service_reference import AdmissionregistrationV1ServiceReference -from kubernetes.client.models.admissionregistration_v1_webhook_client_config import AdmissionregistrationV1WebhookClientConfig -from kubernetes.client.models.apiextensions_v1_service_reference import ApiextensionsV1ServiceReference -from kubernetes.client.models.apiextensions_v1_webhook_client_config import ApiextensionsV1WebhookClientConfig -from kubernetes.client.models.apiregistration_v1_service_reference import ApiregistrationV1ServiceReference -from kubernetes.client.models.authentication_v1_token_request import AuthenticationV1TokenRequest -from kubernetes.client.models.core_v1_endpoint_port import CoreV1EndpointPort -from kubernetes.client.models.core_v1_event import CoreV1Event -from kubernetes.client.models.core_v1_event_list import CoreV1EventList -from kubernetes.client.models.core_v1_event_series import CoreV1EventSeries -from kubernetes.client.models.discovery_v1_endpoint_port import DiscoveryV1EndpointPort -from kubernetes.client.models.events_v1_event import EventsV1Event -from kubernetes.client.models.events_v1_event_list import EventsV1EventList -from kubernetes.client.models.events_v1_event_series import EventsV1EventSeries -from kubernetes.client.models.flowcontrol_v1_subject import FlowcontrolV1Subject -from kubernetes.client.models.rbac_v1_subject import RbacV1Subject -from kubernetes.client.models.storage_v1_token_request import StorageV1TokenRequest -from kubernetes.client.models.v1_api_group import V1APIGroup -from kubernetes.client.models.v1_api_group_list import V1APIGroupList -from kubernetes.client.models.v1_api_resource import V1APIResource -from kubernetes.client.models.v1_api_resource_list import V1APIResourceList -from kubernetes.client.models.v1_api_service import V1APIService -from kubernetes.client.models.v1_api_service_condition import V1APIServiceCondition -from kubernetes.client.models.v1_api_service_list import V1APIServiceList -from kubernetes.client.models.v1_api_service_spec import V1APIServiceSpec -from kubernetes.client.models.v1_api_service_status import V1APIServiceStatus -from kubernetes.client.models.v1_api_versions import V1APIVersions -from kubernetes.client.models.v1_aws_elastic_block_store_volume_source import V1AWSElasticBlockStoreVolumeSource -from kubernetes.client.models.v1_affinity import V1Affinity -from kubernetes.client.models.v1_aggregation_rule import V1AggregationRule -from kubernetes.client.models.v1_attached_volume import V1AttachedVolume -from kubernetes.client.models.v1_azure_disk_volume_source import V1AzureDiskVolumeSource -from kubernetes.client.models.v1_azure_file_persistent_volume_source import V1AzureFilePersistentVolumeSource -from kubernetes.client.models.v1_azure_file_volume_source import V1AzureFileVolumeSource -from kubernetes.client.models.v1_binding import V1Binding -from kubernetes.client.models.v1_bound_object_reference import V1BoundObjectReference -from kubernetes.client.models.v1_csi_driver import V1CSIDriver -from kubernetes.client.models.v1_csi_driver_list import V1CSIDriverList -from kubernetes.client.models.v1_csi_driver_spec import V1CSIDriverSpec -from kubernetes.client.models.v1_csi_node import V1CSINode -from kubernetes.client.models.v1_csi_node_driver import V1CSINodeDriver -from kubernetes.client.models.v1_csi_node_list import V1CSINodeList -from kubernetes.client.models.v1_csi_node_spec import V1CSINodeSpec -from kubernetes.client.models.v1_csi_persistent_volume_source import V1CSIPersistentVolumeSource -from kubernetes.client.models.v1_csi_storage_capacity import V1CSIStorageCapacity -from kubernetes.client.models.v1_csi_storage_capacity_list import V1CSIStorageCapacityList -from kubernetes.client.models.v1_csi_volume_source import V1CSIVolumeSource -from kubernetes.client.models.v1_capabilities import V1Capabilities -from kubernetes.client.models.v1_ceph_fs_persistent_volume_source import V1CephFSPersistentVolumeSource -from kubernetes.client.models.v1_ceph_fs_volume_source import V1CephFSVolumeSource -from kubernetes.client.models.v1_certificate_signing_request import V1CertificateSigningRequest -from kubernetes.client.models.v1_certificate_signing_request_condition import V1CertificateSigningRequestCondition -from kubernetes.client.models.v1_certificate_signing_request_list import V1CertificateSigningRequestList -from kubernetes.client.models.v1_certificate_signing_request_spec import V1CertificateSigningRequestSpec -from kubernetes.client.models.v1_certificate_signing_request_status import V1CertificateSigningRequestStatus -from kubernetes.client.models.v1_cinder_persistent_volume_source import V1CinderPersistentVolumeSource -from kubernetes.client.models.v1_cinder_volume_source import V1CinderVolumeSource -from kubernetes.client.models.v1_claim_source import V1ClaimSource -from kubernetes.client.models.v1_client_ip_config import V1ClientIPConfig -from kubernetes.client.models.v1_cluster_role import V1ClusterRole -from kubernetes.client.models.v1_cluster_role_binding import V1ClusterRoleBinding -from kubernetes.client.models.v1_cluster_role_binding_list import V1ClusterRoleBindingList -from kubernetes.client.models.v1_cluster_role_list import V1ClusterRoleList -from kubernetes.client.models.v1_cluster_trust_bundle_projection import V1ClusterTrustBundleProjection -from kubernetes.client.models.v1_component_condition import V1ComponentCondition -from kubernetes.client.models.v1_component_status import V1ComponentStatus -from kubernetes.client.models.v1_component_status_list import V1ComponentStatusList -from kubernetes.client.models.v1_condition import V1Condition -from kubernetes.client.models.v1_config_map import V1ConfigMap -from kubernetes.client.models.v1_config_map_env_source import V1ConfigMapEnvSource -from kubernetes.client.models.v1_config_map_key_selector import V1ConfigMapKeySelector -from kubernetes.client.models.v1_config_map_list import V1ConfigMapList -from kubernetes.client.models.v1_config_map_node_config_source import V1ConfigMapNodeConfigSource -from kubernetes.client.models.v1_config_map_projection import V1ConfigMapProjection -from kubernetes.client.models.v1_config_map_volume_source import V1ConfigMapVolumeSource -from kubernetes.client.models.v1_container import V1Container -from kubernetes.client.models.v1_container_image import V1ContainerImage -from kubernetes.client.models.v1_container_port import V1ContainerPort -from kubernetes.client.models.v1_container_resize_policy import V1ContainerResizePolicy -from kubernetes.client.models.v1_container_state import V1ContainerState -from kubernetes.client.models.v1_container_state_running import V1ContainerStateRunning -from kubernetes.client.models.v1_container_state_terminated import V1ContainerStateTerminated -from kubernetes.client.models.v1_container_state_waiting import V1ContainerStateWaiting -from kubernetes.client.models.v1_container_status import V1ContainerStatus -from kubernetes.client.models.v1_controller_revision import V1ControllerRevision -from kubernetes.client.models.v1_controller_revision_list import V1ControllerRevisionList -from kubernetes.client.models.v1_cron_job import V1CronJob -from kubernetes.client.models.v1_cron_job_list import V1CronJobList -from kubernetes.client.models.v1_cron_job_spec import V1CronJobSpec -from kubernetes.client.models.v1_cron_job_status import V1CronJobStatus -from kubernetes.client.models.v1_cross_version_object_reference import V1CrossVersionObjectReference -from kubernetes.client.models.v1_custom_resource_column_definition import V1CustomResourceColumnDefinition -from kubernetes.client.models.v1_custom_resource_conversion import V1CustomResourceConversion -from kubernetes.client.models.v1_custom_resource_definition import V1CustomResourceDefinition -from kubernetes.client.models.v1_custom_resource_definition_condition import V1CustomResourceDefinitionCondition -from kubernetes.client.models.v1_custom_resource_definition_list import V1CustomResourceDefinitionList -from kubernetes.client.models.v1_custom_resource_definition_names import V1CustomResourceDefinitionNames -from kubernetes.client.models.v1_custom_resource_definition_spec import V1CustomResourceDefinitionSpec -from kubernetes.client.models.v1_custom_resource_definition_status import V1CustomResourceDefinitionStatus -from kubernetes.client.models.v1_custom_resource_definition_version import V1CustomResourceDefinitionVersion -from kubernetes.client.models.v1_custom_resource_subresource_scale import V1CustomResourceSubresourceScale -from kubernetes.client.models.v1_custom_resource_subresources import V1CustomResourceSubresources -from kubernetes.client.models.v1_custom_resource_validation import V1CustomResourceValidation -from kubernetes.client.models.v1_daemon_endpoint import V1DaemonEndpoint -from kubernetes.client.models.v1_daemon_set import V1DaemonSet -from kubernetes.client.models.v1_daemon_set_condition import V1DaemonSetCondition -from kubernetes.client.models.v1_daemon_set_list import V1DaemonSetList -from kubernetes.client.models.v1_daemon_set_spec import V1DaemonSetSpec -from kubernetes.client.models.v1_daemon_set_status import V1DaemonSetStatus -from kubernetes.client.models.v1_daemon_set_update_strategy import V1DaemonSetUpdateStrategy -from kubernetes.client.models.v1_delete_options import V1DeleteOptions -from kubernetes.client.models.v1_deployment import V1Deployment -from kubernetes.client.models.v1_deployment_condition import V1DeploymentCondition -from kubernetes.client.models.v1_deployment_list import V1DeploymentList -from kubernetes.client.models.v1_deployment_spec import V1DeploymentSpec -from kubernetes.client.models.v1_deployment_status import V1DeploymentStatus -from kubernetes.client.models.v1_deployment_strategy import V1DeploymentStrategy -from kubernetes.client.models.v1_downward_api_projection import V1DownwardAPIProjection -from kubernetes.client.models.v1_downward_api_volume_file import V1DownwardAPIVolumeFile -from kubernetes.client.models.v1_downward_api_volume_source import V1DownwardAPIVolumeSource -from kubernetes.client.models.v1_empty_dir_volume_source import V1EmptyDirVolumeSource -from kubernetes.client.models.v1_endpoint import V1Endpoint -from kubernetes.client.models.v1_endpoint_address import V1EndpointAddress -from kubernetes.client.models.v1_endpoint_conditions import V1EndpointConditions -from kubernetes.client.models.v1_endpoint_hints import V1EndpointHints -from kubernetes.client.models.v1_endpoint_slice import V1EndpointSlice -from kubernetes.client.models.v1_endpoint_slice_list import V1EndpointSliceList -from kubernetes.client.models.v1_endpoint_subset import V1EndpointSubset -from kubernetes.client.models.v1_endpoints import V1Endpoints -from kubernetes.client.models.v1_endpoints_list import V1EndpointsList -from kubernetes.client.models.v1_env_from_source import V1EnvFromSource -from kubernetes.client.models.v1_env_var import V1EnvVar -from kubernetes.client.models.v1_env_var_source import V1EnvVarSource -from kubernetes.client.models.v1_ephemeral_container import V1EphemeralContainer -from kubernetes.client.models.v1_ephemeral_volume_source import V1EphemeralVolumeSource -from kubernetes.client.models.v1_event_source import V1EventSource -from kubernetes.client.models.v1_eviction import V1Eviction -from kubernetes.client.models.v1_exec_action import V1ExecAction -from kubernetes.client.models.v1_exempt_priority_level_configuration import V1ExemptPriorityLevelConfiguration -from kubernetes.client.models.v1_external_documentation import V1ExternalDocumentation -from kubernetes.client.models.v1_fc_volume_source import V1FCVolumeSource -from kubernetes.client.models.v1_flex_persistent_volume_source import V1FlexPersistentVolumeSource -from kubernetes.client.models.v1_flex_volume_source import V1FlexVolumeSource -from kubernetes.client.models.v1_flocker_volume_source import V1FlockerVolumeSource -from kubernetes.client.models.v1_flow_distinguisher_method import V1FlowDistinguisherMethod -from kubernetes.client.models.v1_flow_schema import V1FlowSchema -from kubernetes.client.models.v1_flow_schema_condition import V1FlowSchemaCondition -from kubernetes.client.models.v1_flow_schema_list import V1FlowSchemaList -from kubernetes.client.models.v1_flow_schema_spec import V1FlowSchemaSpec -from kubernetes.client.models.v1_flow_schema_status import V1FlowSchemaStatus -from kubernetes.client.models.v1_for_zone import V1ForZone -from kubernetes.client.models.v1_gce_persistent_disk_volume_source import V1GCEPersistentDiskVolumeSource -from kubernetes.client.models.v1_grpc_action import V1GRPCAction -from kubernetes.client.models.v1_git_repo_volume_source import V1GitRepoVolumeSource -from kubernetes.client.models.v1_glusterfs_persistent_volume_source import V1GlusterfsPersistentVolumeSource -from kubernetes.client.models.v1_glusterfs_volume_source import V1GlusterfsVolumeSource -from kubernetes.client.models.v1_group_subject import V1GroupSubject -from kubernetes.client.models.v1_group_version_for_discovery import V1GroupVersionForDiscovery -from kubernetes.client.models.v1_http_get_action import V1HTTPGetAction -from kubernetes.client.models.v1_http_header import V1HTTPHeader -from kubernetes.client.models.v1_http_ingress_path import V1HTTPIngressPath -from kubernetes.client.models.v1_http_ingress_rule_value import V1HTTPIngressRuleValue -from kubernetes.client.models.v1_horizontal_pod_autoscaler import V1HorizontalPodAutoscaler -from kubernetes.client.models.v1_horizontal_pod_autoscaler_list import V1HorizontalPodAutoscalerList -from kubernetes.client.models.v1_horizontal_pod_autoscaler_spec import V1HorizontalPodAutoscalerSpec -from kubernetes.client.models.v1_horizontal_pod_autoscaler_status import V1HorizontalPodAutoscalerStatus -from kubernetes.client.models.v1_host_alias import V1HostAlias -from kubernetes.client.models.v1_host_ip import V1HostIP -from kubernetes.client.models.v1_host_path_volume_source import V1HostPathVolumeSource -from kubernetes.client.models.v1_ip_block import V1IPBlock -from kubernetes.client.models.v1_iscsi_persistent_volume_source import V1ISCSIPersistentVolumeSource -from kubernetes.client.models.v1_iscsi_volume_source import V1ISCSIVolumeSource -from kubernetes.client.models.v1_ingress import V1Ingress -from kubernetes.client.models.v1_ingress_backend import V1IngressBackend -from kubernetes.client.models.v1_ingress_class import V1IngressClass -from kubernetes.client.models.v1_ingress_class_list import V1IngressClassList -from kubernetes.client.models.v1_ingress_class_parameters_reference import V1IngressClassParametersReference -from kubernetes.client.models.v1_ingress_class_spec import V1IngressClassSpec -from kubernetes.client.models.v1_ingress_list import V1IngressList -from kubernetes.client.models.v1_ingress_load_balancer_ingress import V1IngressLoadBalancerIngress -from kubernetes.client.models.v1_ingress_load_balancer_status import V1IngressLoadBalancerStatus -from kubernetes.client.models.v1_ingress_port_status import V1IngressPortStatus -from kubernetes.client.models.v1_ingress_rule import V1IngressRule -from kubernetes.client.models.v1_ingress_service_backend import V1IngressServiceBackend -from kubernetes.client.models.v1_ingress_spec import V1IngressSpec -from kubernetes.client.models.v1_ingress_status import V1IngressStatus -from kubernetes.client.models.v1_ingress_tls import V1IngressTLS -from kubernetes.client.models.v1_json_schema_props import V1JSONSchemaProps -from kubernetes.client.models.v1_job import V1Job -from kubernetes.client.models.v1_job_condition import V1JobCondition -from kubernetes.client.models.v1_job_list import V1JobList -from kubernetes.client.models.v1_job_spec import V1JobSpec -from kubernetes.client.models.v1_job_status import V1JobStatus -from kubernetes.client.models.v1_job_template_spec import V1JobTemplateSpec -from kubernetes.client.models.v1_key_to_path import V1KeyToPath -from kubernetes.client.models.v1_label_selector import V1LabelSelector -from kubernetes.client.models.v1_label_selector_requirement import V1LabelSelectorRequirement -from kubernetes.client.models.v1_lease import V1Lease -from kubernetes.client.models.v1_lease_list import V1LeaseList -from kubernetes.client.models.v1_lease_spec import V1LeaseSpec -from kubernetes.client.models.v1_lifecycle import V1Lifecycle -from kubernetes.client.models.v1_lifecycle_handler import V1LifecycleHandler -from kubernetes.client.models.v1_limit_range import V1LimitRange -from kubernetes.client.models.v1_limit_range_item import V1LimitRangeItem -from kubernetes.client.models.v1_limit_range_list import V1LimitRangeList -from kubernetes.client.models.v1_limit_range_spec import V1LimitRangeSpec -from kubernetes.client.models.v1_limit_response import V1LimitResponse -from kubernetes.client.models.v1_limited_priority_level_configuration import V1LimitedPriorityLevelConfiguration -from kubernetes.client.models.v1_list_meta import V1ListMeta -from kubernetes.client.models.v1_load_balancer_ingress import V1LoadBalancerIngress -from kubernetes.client.models.v1_load_balancer_status import V1LoadBalancerStatus -from kubernetes.client.models.v1_local_object_reference import V1LocalObjectReference -from kubernetes.client.models.v1_local_subject_access_review import V1LocalSubjectAccessReview -from kubernetes.client.models.v1_local_volume_source import V1LocalVolumeSource -from kubernetes.client.models.v1_managed_fields_entry import V1ManagedFieldsEntry -from kubernetes.client.models.v1_match_condition import V1MatchCondition -from kubernetes.client.models.v1_modify_volume_status import V1ModifyVolumeStatus -from kubernetes.client.models.v1_mutating_webhook import V1MutatingWebhook -from kubernetes.client.models.v1_mutating_webhook_configuration import V1MutatingWebhookConfiguration -from kubernetes.client.models.v1_mutating_webhook_configuration_list import V1MutatingWebhookConfigurationList -from kubernetes.client.models.v1_nfs_volume_source import V1NFSVolumeSource -from kubernetes.client.models.v1_namespace import V1Namespace -from kubernetes.client.models.v1_namespace_condition import V1NamespaceCondition -from kubernetes.client.models.v1_namespace_list import V1NamespaceList -from kubernetes.client.models.v1_namespace_spec import V1NamespaceSpec -from kubernetes.client.models.v1_namespace_status import V1NamespaceStatus -from kubernetes.client.models.v1_network_policy import V1NetworkPolicy -from kubernetes.client.models.v1_network_policy_egress_rule import V1NetworkPolicyEgressRule -from kubernetes.client.models.v1_network_policy_ingress_rule import V1NetworkPolicyIngressRule -from kubernetes.client.models.v1_network_policy_list import V1NetworkPolicyList -from kubernetes.client.models.v1_network_policy_peer import V1NetworkPolicyPeer -from kubernetes.client.models.v1_network_policy_port import V1NetworkPolicyPort -from kubernetes.client.models.v1_network_policy_spec import V1NetworkPolicySpec -from kubernetes.client.models.v1_node import V1Node -from kubernetes.client.models.v1_node_address import V1NodeAddress -from kubernetes.client.models.v1_node_affinity import V1NodeAffinity -from kubernetes.client.models.v1_node_condition import V1NodeCondition -from kubernetes.client.models.v1_node_config_source import V1NodeConfigSource -from kubernetes.client.models.v1_node_config_status import V1NodeConfigStatus -from kubernetes.client.models.v1_node_daemon_endpoints import V1NodeDaemonEndpoints -from kubernetes.client.models.v1_node_list import V1NodeList -from kubernetes.client.models.v1_node_selector import V1NodeSelector -from kubernetes.client.models.v1_node_selector_requirement import V1NodeSelectorRequirement -from kubernetes.client.models.v1_node_selector_term import V1NodeSelectorTerm -from kubernetes.client.models.v1_node_spec import V1NodeSpec -from kubernetes.client.models.v1_node_status import V1NodeStatus -from kubernetes.client.models.v1_node_system_info import V1NodeSystemInfo -from kubernetes.client.models.v1_non_resource_attributes import V1NonResourceAttributes -from kubernetes.client.models.v1_non_resource_policy_rule import V1NonResourcePolicyRule -from kubernetes.client.models.v1_non_resource_rule import V1NonResourceRule -from kubernetes.client.models.v1_object_field_selector import V1ObjectFieldSelector -from kubernetes.client.models.v1_object_meta import V1ObjectMeta -from kubernetes.client.models.v1_object_reference import V1ObjectReference -from kubernetes.client.models.v1_overhead import V1Overhead -from kubernetes.client.models.v1_owner_reference import V1OwnerReference -from kubernetes.client.models.v1_persistent_volume import V1PersistentVolume -from kubernetes.client.models.v1_persistent_volume_claim import V1PersistentVolumeClaim -from kubernetes.client.models.v1_persistent_volume_claim_condition import V1PersistentVolumeClaimCondition -from kubernetes.client.models.v1_persistent_volume_claim_list import V1PersistentVolumeClaimList -from kubernetes.client.models.v1_persistent_volume_claim_spec import V1PersistentVolumeClaimSpec -from kubernetes.client.models.v1_persistent_volume_claim_status import V1PersistentVolumeClaimStatus -from kubernetes.client.models.v1_persistent_volume_claim_template import V1PersistentVolumeClaimTemplate -from kubernetes.client.models.v1_persistent_volume_claim_volume_source import V1PersistentVolumeClaimVolumeSource -from kubernetes.client.models.v1_persistent_volume_list import V1PersistentVolumeList -from kubernetes.client.models.v1_persistent_volume_spec import V1PersistentVolumeSpec -from kubernetes.client.models.v1_persistent_volume_status import V1PersistentVolumeStatus -from kubernetes.client.models.v1_photon_persistent_disk_volume_source import V1PhotonPersistentDiskVolumeSource -from kubernetes.client.models.v1_pod import V1Pod -from kubernetes.client.models.v1_pod_affinity import V1PodAffinity -from kubernetes.client.models.v1_pod_affinity_term import V1PodAffinityTerm -from kubernetes.client.models.v1_pod_anti_affinity import V1PodAntiAffinity -from kubernetes.client.models.v1_pod_condition import V1PodCondition -from kubernetes.client.models.v1_pod_dns_config import V1PodDNSConfig -from kubernetes.client.models.v1_pod_dns_config_option import V1PodDNSConfigOption -from kubernetes.client.models.v1_pod_disruption_budget import V1PodDisruptionBudget -from kubernetes.client.models.v1_pod_disruption_budget_list import V1PodDisruptionBudgetList -from kubernetes.client.models.v1_pod_disruption_budget_spec import V1PodDisruptionBudgetSpec -from kubernetes.client.models.v1_pod_disruption_budget_status import V1PodDisruptionBudgetStatus -from kubernetes.client.models.v1_pod_failure_policy import V1PodFailurePolicy -from kubernetes.client.models.v1_pod_failure_policy_on_exit_codes_requirement import V1PodFailurePolicyOnExitCodesRequirement -from kubernetes.client.models.v1_pod_failure_policy_on_pod_conditions_pattern import V1PodFailurePolicyOnPodConditionsPattern -from kubernetes.client.models.v1_pod_failure_policy_rule import V1PodFailurePolicyRule -from kubernetes.client.models.v1_pod_ip import V1PodIP -from kubernetes.client.models.v1_pod_list import V1PodList -from kubernetes.client.models.v1_pod_os import V1PodOS -from kubernetes.client.models.v1_pod_readiness_gate import V1PodReadinessGate -from kubernetes.client.models.v1_pod_resource_claim import V1PodResourceClaim -from kubernetes.client.models.v1_pod_resource_claim_status import V1PodResourceClaimStatus -from kubernetes.client.models.v1_pod_scheduling_gate import V1PodSchedulingGate -from kubernetes.client.models.v1_pod_security_context import V1PodSecurityContext -from kubernetes.client.models.v1_pod_spec import V1PodSpec -from kubernetes.client.models.v1_pod_status import V1PodStatus -from kubernetes.client.models.v1_pod_template import V1PodTemplate -from kubernetes.client.models.v1_pod_template_list import V1PodTemplateList -from kubernetes.client.models.v1_pod_template_spec import V1PodTemplateSpec -from kubernetes.client.models.v1_policy_rule import V1PolicyRule -from kubernetes.client.models.v1_policy_rules_with_subjects import V1PolicyRulesWithSubjects -from kubernetes.client.models.v1_port_status import V1PortStatus -from kubernetes.client.models.v1_portworx_volume_source import V1PortworxVolumeSource -from kubernetes.client.models.v1_preconditions import V1Preconditions -from kubernetes.client.models.v1_preferred_scheduling_term import V1PreferredSchedulingTerm -from kubernetes.client.models.v1_priority_class import V1PriorityClass -from kubernetes.client.models.v1_priority_class_list import V1PriorityClassList -from kubernetes.client.models.v1_priority_level_configuration import V1PriorityLevelConfiguration -from kubernetes.client.models.v1_priority_level_configuration_condition import V1PriorityLevelConfigurationCondition -from kubernetes.client.models.v1_priority_level_configuration_list import V1PriorityLevelConfigurationList -from kubernetes.client.models.v1_priority_level_configuration_reference import V1PriorityLevelConfigurationReference -from kubernetes.client.models.v1_priority_level_configuration_spec import V1PriorityLevelConfigurationSpec -from kubernetes.client.models.v1_priority_level_configuration_status import V1PriorityLevelConfigurationStatus -from kubernetes.client.models.v1_probe import V1Probe -from kubernetes.client.models.v1_projected_volume_source import V1ProjectedVolumeSource -from kubernetes.client.models.v1_queuing_configuration import V1QueuingConfiguration -from kubernetes.client.models.v1_quobyte_volume_source import V1QuobyteVolumeSource -from kubernetes.client.models.v1_rbd_persistent_volume_source import V1RBDPersistentVolumeSource -from kubernetes.client.models.v1_rbd_volume_source import V1RBDVolumeSource -from kubernetes.client.models.v1_replica_set import V1ReplicaSet -from kubernetes.client.models.v1_replica_set_condition import V1ReplicaSetCondition -from kubernetes.client.models.v1_replica_set_list import V1ReplicaSetList -from kubernetes.client.models.v1_replica_set_spec import V1ReplicaSetSpec -from kubernetes.client.models.v1_replica_set_status import V1ReplicaSetStatus -from kubernetes.client.models.v1_replication_controller import V1ReplicationController -from kubernetes.client.models.v1_replication_controller_condition import V1ReplicationControllerCondition -from kubernetes.client.models.v1_replication_controller_list import V1ReplicationControllerList -from kubernetes.client.models.v1_replication_controller_spec import V1ReplicationControllerSpec -from kubernetes.client.models.v1_replication_controller_status import V1ReplicationControllerStatus -from kubernetes.client.models.v1_resource_attributes import V1ResourceAttributes -from kubernetes.client.models.v1_resource_claim import V1ResourceClaim -from kubernetes.client.models.v1_resource_field_selector import V1ResourceFieldSelector -from kubernetes.client.models.v1_resource_policy_rule import V1ResourcePolicyRule -from kubernetes.client.models.v1_resource_quota import V1ResourceQuota -from kubernetes.client.models.v1_resource_quota_list import V1ResourceQuotaList -from kubernetes.client.models.v1_resource_quota_spec import V1ResourceQuotaSpec -from kubernetes.client.models.v1_resource_quota_status import V1ResourceQuotaStatus -from kubernetes.client.models.v1_resource_requirements import V1ResourceRequirements -from kubernetes.client.models.v1_resource_rule import V1ResourceRule -from kubernetes.client.models.v1_role import V1Role -from kubernetes.client.models.v1_role_binding import V1RoleBinding -from kubernetes.client.models.v1_role_binding_list import V1RoleBindingList -from kubernetes.client.models.v1_role_list import V1RoleList -from kubernetes.client.models.v1_role_ref import V1RoleRef -from kubernetes.client.models.v1_rolling_update_daemon_set import V1RollingUpdateDaemonSet -from kubernetes.client.models.v1_rolling_update_deployment import V1RollingUpdateDeployment -from kubernetes.client.models.v1_rolling_update_stateful_set_strategy import V1RollingUpdateStatefulSetStrategy -from kubernetes.client.models.v1_rule_with_operations import V1RuleWithOperations -from kubernetes.client.models.v1_runtime_class import V1RuntimeClass -from kubernetes.client.models.v1_runtime_class_list import V1RuntimeClassList -from kubernetes.client.models.v1_se_linux_options import V1SELinuxOptions -from kubernetes.client.models.v1_scale import V1Scale -from kubernetes.client.models.v1_scale_io_persistent_volume_source import V1ScaleIOPersistentVolumeSource -from kubernetes.client.models.v1_scale_io_volume_source import V1ScaleIOVolumeSource -from kubernetes.client.models.v1_scale_spec import V1ScaleSpec -from kubernetes.client.models.v1_scale_status import V1ScaleStatus -from kubernetes.client.models.v1_scheduling import V1Scheduling -from kubernetes.client.models.v1_scope_selector import V1ScopeSelector -from kubernetes.client.models.v1_scoped_resource_selector_requirement import V1ScopedResourceSelectorRequirement -from kubernetes.client.models.v1_seccomp_profile import V1SeccompProfile -from kubernetes.client.models.v1_secret import V1Secret -from kubernetes.client.models.v1_secret_env_source import V1SecretEnvSource -from kubernetes.client.models.v1_secret_key_selector import V1SecretKeySelector -from kubernetes.client.models.v1_secret_list import V1SecretList -from kubernetes.client.models.v1_secret_projection import V1SecretProjection -from kubernetes.client.models.v1_secret_reference import V1SecretReference -from kubernetes.client.models.v1_secret_volume_source import V1SecretVolumeSource -from kubernetes.client.models.v1_security_context import V1SecurityContext -from kubernetes.client.models.v1_self_subject_access_review import V1SelfSubjectAccessReview -from kubernetes.client.models.v1_self_subject_access_review_spec import V1SelfSubjectAccessReviewSpec -from kubernetes.client.models.v1_self_subject_review import V1SelfSubjectReview -from kubernetes.client.models.v1_self_subject_review_status import V1SelfSubjectReviewStatus -from kubernetes.client.models.v1_self_subject_rules_review import V1SelfSubjectRulesReview -from kubernetes.client.models.v1_self_subject_rules_review_spec import V1SelfSubjectRulesReviewSpec -from kubernetes.client.models.v1_server_address_by_client_cidr import V1ServerAddressByClientCIDR -from kubernetes.client.models.v1_service import V1Service -from kubernetes.client.models.v1_service_account import V1ServiceAccount -from kubernetes.client.models.v1_service_account_list import V1ServiceAccountList -from kubernetes.client.models.v1_service_account_subject import V1ServiceAccountSubject -from kubernetes.client.models.v1_service_account_token_projection import V1ServiceAccountTokenProjection -from kubernetes.client.models.v1_service_backend_port import V1ServiceBackendPort -from kubernetes.client.models.v1_service_list import V1ServiceList -from kubernetes.client.models.v1_service_port import V1ServicePort -from kubernetes.client.models.v1_service_spec import V1ServiceSpec -from kubernetes.client.models.v1_service_status import V1ServiceStatus -from kubernetes.client.models.v1_session_affinity_config import V1SessionAffinityConfig -from kubernetes.client.models.v1_sleep_action import V1SleepAction -from kubernetes.client.models.v1_stateful_set import V1StatefulSet -from kubernetes.client.models.v1_stateful_set_condition import V1StatefulSetCondition -from kubernetes.client.models.v1_stateful_set_list import V1StatefulSetList -from kubernetes.client.models.v1_stateful_set_ordinals import V1StatefulSetOrdinals -from kubernetes.client.models.v1_stateful_set_persistent_volume_claim_retention_policy import V1StatefulSetPersistentVolumeClaimRetentionPolicy -from kubernetes.client.models.v1_stateful_set_spec import V1StatefulSetSpec -from kubernetes.client.models.v1_stateful_set_status import V1StatefulSetStatus -from kubernetes.client.models.v1_stateful_set_update_strategy import V1StatefulSetUpdateStrategy -from kubernetes.client.models.v1_status import V1Status -from kubernetes.client.models.v1_status_cause import V1StatusCause -from kubernetes.client.models.v1_status_details import V1StatusDetails -from kubernetes.client.models.v1_storage_class import V1StorageClass -from kubernetes.client.models.v1_storage_class_list import V1StorageClassList -from kubernetes.client.models.v1_storage_os_persistent_volume_source import V1StorageOSPersistentVolumeSource -from kubernetes.client.models.v1_storage_os_volume_source import V1StorageOSVolumeSource -from kubernetes.client.models.v1_subject_access_review import V1SubjectAccessReview -from kubernetes.client.models.v1_subject_access_review_spec import V1SubjectAccessReviewSpec -from kubernetes.client.models.v1_subject_access_review_status import V1SubjectAccessReviewStatus -from kubernetes.client.models.v1_subject_rules_review_status import V1SubjectRulesReviewStatus -from kubernetes.client.models.v1_sysctl import V1Sysctl -from kubernetes.client.models.v1_tcp_socket_action import V1TCPSocketAction -from kubernetes.client.models.v1_taint import V1Taint -from kubernetes.client.models.v1_token_request_spec import V1TokenRequestSpec -from kubernetes.client.models.v1_token_request_status import V1TokenRequestStatus -from kubernetes.client.models.v1_token_review import V1TokenReview -from kubernetes.client.models.v1_token_review_spec import V1TokenReviewSpec -from kubernetes.client.models.v1_token_review_status import V1TokenReviewStatus -from kubernetes.client.models.v1_toleration import V1Toleration -from kubernetes.client.models.v1_topology_selector_label_requirement import V1TopologySelectorLabelRequirement -from kubernetes.client.models.v1_topology_selector_term import V1TopologySelectorTerm -from kubernetes.client.models.v1_topology_spread_constraint import V1TopologySpreadConstraint -from kubernetes.client.models.v1_typed_local_object_reference import V1TypedLocalObjectReference -from kubernetes.client.models.v1_typed_object_reference import V1TypedObjectReference -from kubernetes.client.models.v1_uncounted_terminated_pods import V1UncountedTerminatedPods -from kubernetes.client.models.v1_user_info import V1UserInfo -from kubernetes.client.models.v1_user_subject import V1UserSubject -from kubernetes.client.models.v1_validating_webhook import V1ValidatingWebhook -from kubernetes.client.models.v1_validating_webhook_configuration import V1ValidatingWebhookConfiguration -from kubernetes.client.models.v1_validating_webhook_configuration_list import V1ValidatingWebhookConfigurationList -from kubernetes.client.models.v1_validation_rule import V1ValidationRule -from kubernetes.client.models.v1_volume import V1Volume -from kubernetes.client.models.v1_volume_attachment import V1VolumeAttachment -from kubernetes.client.models.v1_volume_attachment_list import V1VolumeAttachmentList -from kubernetes.client.models.v1_volume_attachment_source import V1VolumeAttachmentSource -from kubernetes.client.models.v1_volume_attachment_spec import V1VolumeAttachmentSpec -from kubernetes.client.models.v1_volume_attachment_status import V1VolumeAttachmentStatus -from kubernetes.client.models.v1_volume_device import V1VolumeDevice -from kubernetes.client.models.v1_volume_error import V1VolumeError -from kubernetes.client.models.v1_volume_mount import V1VolumeMount -from kubernetes.client.models.v1_volume_node_affinity import V1VolumeNodeAffinity -from kubernetes.client.models.v1_volume_node_resources import V1VolumeNodeResources -from kubernetes.client.models.v1_volume_projection import V1VolumeProjection -from kubernetes.client.models.v1_volume_resource_requirements import V1VolumeResourceRequirements -from kubernetes.client.models.v1_vsphere_virtual_disk_volume_source import V1VsphereVirtualDiskVolumeSource -from kubernetes.client.models.v1_watch_event import V1WatchEvent -from kubernetes.client.models.v1_webhook_conversion import V1WebhookConversion -from kubernetes.client.models.v1_weighted_pod_affinity_term import V1WeightedPodAffinityTerm -from kubernetes.client.models.v1_windows_security_context_options import V1WindowsSecurityContextOptions -from kubernetes.client.models.v1alpha1_audit_annotation import V1alpha1AuditAnnotation -from kubernetes.client.models.v1alpha1_cluster_trust_bundle import V1alpha1ClusterTrustBundle -from kubernetes.client.models.v1alpha1_cluster_trust_bundle_list import V1alpha1ClusterTrustBundleList -from kubernetes.client.models.v1alpha1_cluster_trust_bundle_spec import V1alpha1ClusterTrustBundleSpec -from kubernetes.client.models.v1alpha1_expression_warning import V1alpha1ExpressionWarning -from kubernetes.client.models.v1alpha1_ip_address import V1alpha1IPAddress -from kubernetes.client.models.v1alpha1_ip_address_list import V1alpha1IPAddressList -from kubernetes.client.models.v1alpha1_ip_address_spec import V1alpha1IPAddressSpec -from kubernetes.client.models.v1alpha1_match_condition import V1alpha1MatchCondition -from kubernetes.client.models.v1alpha1_match_resources import V1alpha1MatchResources -from kubernetes.client.models.v1alpha1_named_rule_with_operations import V1alpha1NamedRuleWithOperations -from kubernetes.client.models.v1alpha1_param_kind import V1alpha1ParamKind -from kubernetes.client.models.v1alpha1_param_ref import V1alpha1ParamRef -from kubernetes.client.models.v1alpha1_parent_reference import V1alpha1ParentReference -from kubernetes.client.models.v1alpha1_self_subject_review import V1alpha1SelfSubjectReview -from kubernetes.client.models.v1alpha1_self_subject_review_status import V1alpha1SelfSubjectReviewStatus -from kubernetes.client.models.v1alpha1_server_storage_version import V1alpha1ServerStorageVersion -from kubernetes.client.models.v1alpha1_service_cidr import V1alpha1ServiceCIDR -from kubernetes.client.models.v1alpha1_service_cidr_list import V1alpha1ServiceCIDRList -from kubernetes.client.models.v1alpha1_service_cidr_spec import V1alpha1ServiceCIDRSpec -from kubernetes.client.models.v1alpha1_service_cidr_status import V1alpha1ServiceCIDRStatus -from kubernetes.client.models.v1alpha1_storage_version import V1alpha1StorageVersion -from kubernetes.client.models.v1alpha1_storage_version_condition import V1alpha1StorageVersionCondition -from kubernetes.client.models.v1alpha1_storage_version_list import V1alpha1StorageVersionList -from kubernetes.client.models.v1alpha1_storage_version_status import V1alpha1StorageVersionStatus -from kubernetes.client.models.v1alpha1_type_checking import V1alpha1TypeChecking -from kubernetes.client.models.v1alpha1_validating_admission_policy import V1alpha1ValidatingAdmissionPolicy -from kubernetes.client.models.v1alpha1_validating_admission_policy_binding import V1alpha1ValidatingAdmissionPolicyBinding -from kubernetes.client.models.v1alpha1_validating_admission_policy_binding_list import V1alpha1ValidatingAdmissionPolicyBindingList -from kubernetes.client.models.v1alpha1_validating_admission_policy_binding_spec import V1alpha1ValidatingAdmissionPolicyBindingSpec -from kubernetes.client.models.v1alpha1_validating_admission_policy_list import V1alpha1ValidatingAdmissionPolicyList -from kubernetes.client.models.v1alpha1_validating_admission_policy_spec import V1alpha1ValidatingAdmissionPolicySpec -from kubernetes.client.models.v1alpha1_validating_admission_policy_status import V1alpha1ValidatingAdmissionPolicyStatus -from kubernetes.client.models.v1alpha1_validation import V1alpha1Validation -from kubernetes.client.models.v1alpha1_variable import V1alpha1Variable -from kubernetes.client.models.v1alpha1_volume_attributes_class import V1alpha1VolumeAttributesClass -from kubernetes.client.models.v1alpha1_volume_attributes_class_list import V1alpha1VolumeAttributesClassList -from kubernetes.client.models.v1alpha2_allocation_result import V1alpha2AllocationResult -from kubernetes.client.models.v1alpha2_pod_scheduling_context import V1alpha2PodSchedulingContext -from kubernetes.client.models.v1alpha2_pod_scheduling_context_list import V1alpha2PodSchedulingContextList -from kubernetes.client.models.v1alpha2_pod_scheduling_context_spec import V1alpha2PodSchedulingContextSpec -from kubernetes.client.models.v1alpha2_pod_scheduling_context_status import V1alpha2PodSchedulingContextStatus -from kubernetes.client.models.v1alpha2_resource_claim import V1alpha2ResourceClaim -from kubernetes.client.models.v1alpha2_resource_claim_consumer_reference import V1alpha2ResourceClaimConsumerReference -from kubernetes.client.models.v1alpha2_resource_claim_list import V1alpha2ResourceClaimList -from kubernetes.client.models.v1alpha2_resource_claim_parameters_reference import V1alpha2ResourceClaimParametersReference -from kubernetes.client.models.v1alpha2_resource_claim_scheduling_status import V1alpha2ResourceClaimSchedulingStatus -from kubernetes.client.models.v1alpha2_resource_claim_spec import V1alpha2ResourceClaimSpec -from kubernetes.client.models.v1alpha2_resource_claim_status import V1alpha2ResourceClaimStatus -from kubernetes.client.models.v1alpha2_resource_claim_template import V1alpha2ResourceClaimTemplate -from kubernetes.client.models.v1alpha2_resource_claim_template_list import V1alpha2ResourceClaimTemplateList -from kubernetes.client.models.v1alpha2_resource_claim_template_spec import V1alpha2ResourceClaimTemplateSpec -from kubernetes.client.models.v1alpha2_resource_class import V1alpha2ResourceClass -from kubernetes.client.models.v1alpha2_resource_class_list import V1alpha2ResourceClassList -from kubernetes.client.models.v1alpha2_resource_class_parameters_reference import V1alpha2ResourceClassParametersReference -from kubernetes.client.models.v1alpha2_resource_handle import V1alpha2ResourceHandle -from kubernetes.client.models.v1beta1_audit_annotation import V1beta1AuditAnnotation -from kubernetes.client.models.v1beta1_expression_warning import V1beta1ExpressionWarning -from kubernetes.client.models.v1beta1_match_condition import V1beta1MatchCondition -from kubernetes.client.models.v1beta1_match_resources import V1beta1MatchResources -from kubernetes.client.models.v1beta1_named_rule_with_operations import V1beta1NamedRuleWithOperations -from kubernetes.client.models.v1beta1_param_kind import V1beta1ParamKind -from kubernetes.client.models.v1beta1_param_ref import V1beta1ParamRef -from kubernetes.client.models.v1beta1_self_subject_review import V1beta1SelfSubjectReview -from kubernetes.client.models.v1beta1_self_subject_review_status import V1beta1SelfSubjectReviewStatus -from kubernetes.client.models.v1beta1_type_checking import V1beta1TypeChecking -from kubernetes.client.models.v1beta1_validating_admission_policy import V1beta1ValidatingAdmissionPolicy -from kubernetes.client.models.v1beta1_validating_admission_policy_binding import V1beta1ValidatingAdmissionPolicyBinding -from kubernetes.client.models.v1beta1_validating_admission_policy_binding_list import V1beta1ValidatingAdmissionPolicyBindingList -from kubernetes.client.models.v1beta1_validating_admission_policy_binding_spec import V1beta1ValidatingAdmissionPolicyBindingSpec -from kubernetes.client.models.v1beta1_validating_admission_policy_list import V1beta1ValidatingAdmissionPolicyList -from kubernetes.client.models.v1beta1_validating_admission_policy_spec import V1beta1ValidatingAdmissionPolicySpec -from kubernetes.client.models.v1beta1_validating_admission_policy_status import V1beta1ValidatingAdmissionPolicyStatus -from kubernetes.client.models.v1beta1_validation import V1beta1Validation -from kubernetes.client.models.v1beta1_variable import V1beta1Variable -from kubernetes.client.models.v1beta3_exempt_priority_level_configuration import V1beta3ExemptPriorityLevelConfiguration -from kubernetes.client.models.v1beta3_flow_distinguisher_method import V1beta3FlowDistinguisherMethod -from kubernetes.client.models.v1beta3_flow_schema import V1beta3FlowSchema -from kubernetes.client.models.v1beta3_flow_schema_condition import V1beta3FlowSchemaCondition -from kubernetes.client.models.v1beta3_flow_schema_list import V1beta3FlowSchemaList -from kubernetes.client.models.v1beta3_flow_schema_spec import V1beta3FlowSchemaSpec -from kubernetes.client.models.v1beta3_flow_schema_status import V1beta3FlowSchemaStatus -from kubernetes.client.models.v1beta3_group_subject import V1beta3GroupSubject -from kubernetes.client.models.v1beta3_limit_response import V1beta3LimitResponse -from kubernetes.client.models.v1beta3_limited_priority_level_configuration import V1beta3LimitedPriorityLevelConfiguration -from kubernetes.client.models.v1beta3_non_resource_policy_rule import V1beta3NonResourcePolicyRule -from kubernetes.client.models.v1beta3_policy_rules_with_subjects import V1beta3PolicyRulesWithSubjects -from kubernetes.client.models.v1beta3_priority_level_configuration import V1beta3PriorityLevelConfiguration -from kubernetes.client.models.v1beta3_priority_level_configuration_condition import V1beta3PriorityLevelConfigurationCondition -from kubernetes.client.models.v1beta3_priority_level_configuration_list import V1beta3PriorityLevelConfigurationList -from kubernetes.client.models.v1beta3_priority_level_configuration_reference import V1beta3PriorityLevelConfigurationReference -from kubernetes.client.models.v1beta3_priority_level_configuration_spec import V1beta3PriorityLevelConfigurationSpec -from kubernetes.client.models.v1beta3_priority_level_configuration_status import V1beta3PriorityLevelConfigurationStatus -from kubernetes.client.models.v1beta3_queuing_configuration import V1beta3QueuingConfiguration -from kubernetes.client.models.v1beta3_resource_policy_rule import V1beta3ResourcePolicyRule -from kubernetes.client.models.v1beta3_service_account_subject import V1beta3ServiceAccountSubject -from kubernetes.client.models.v1beta3_subject import V1beta3Subject -from kubernetes.client.models.v1beta3_user_subject import V1beta3UserSubject -from kubernetes.client.models.v2_container_resource_metric_source import V2ContainerResourceMetricSource -from kubernetes.client.models.v2_container_resource_metric_status import V2ContainerResourceMetricStatus -from kubernetes.client.models.v2_cross_version_object_reference import V2CrossVersionObjectReference -from kubernetes.client.models.v2_external_metric_source import V2ExternalMetricSource -from kubernetes.client.models.v2_external_metric_status import V2ExternalMetricStatus -from kubernetes.client.models.v2_hpa_scaling_policy import V2HPAScalingPolicy -from kubernetes.client.models.v2_hpa_scaling_rules import V2HPAScalingRules -from kubernetes.client.models.v2_horizontal_pod_autoscaler import V2HorizontalPodAutoscaler -from kubernetes.client.models.v2_horizontal_pod_autoscaler_behavior import V2HorizontalPodAutoscalerBehavior -from kubernetes.client.models.v2_horizontal_pod_autoscaler_condition import V2HorizontalPodAutoscalerCondition -from kubernetes.client.models.v2_horizontal_pod_autoscaler_list import V2HorizontalPodAutoscalerList -from kubernetes.client.models.v2_horizontal_pod_autoscaler_spec import V2HorizontalPodAutoscalerSpec -from kubernetes.client.models.v2_horizontal_pod_autoscaler_status import V2HorizontalPodAutoscalerStatus -from kubernetes.client.models.v2_metric_identifier import V2MetricIdentifier -from kubernetes.client.models.v2_metric_spec import V2MetricSpec -from kubernetes.client.models.v2_metric_status import V2MetricStatus -from kubernetes.client.models.v2_metric_target import V2MetricTarget -from kubernetes.client.models.v2_metric_value_status import V2MetricValueStatus -from kubernetes.client.models.v2_object_metric_source import V2ObjectMetricSource -from kubernetes.client.models.v2_object_metric_status import V2ObjectMetricStatus -from kubernetes.client.models.v2_pods_metric_source import V2PodsMetricSource -from kubernetes.client.models.v2_pods_metric_status import V2PodsMetricStatus -from kubernetes.client.models.v2_resource_metric_source import V2ResourceMetricSource -from kubernetes.client.models.v2_resource_metric_status import V2ResourceMetricStatus -from kubernetes.client.models.version_info import VersionInfo - diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index eab6628a06ac594a960ba71f704479239e5d839a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63105 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 g$}buy;XjQ4$Ee5;)ae75goxpru(G6))6 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 EUu^5KG5`Po diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/rest.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/__pycache__/rest.cpython-310.pyc deleted file mode 100644 index 48687effc645d36959158ef140f50839eca951ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6869 zcmai3&669)b)PQ`1|R#$-6fZztdSfmLc|3`Gq$BICJ{xhL^||xv%5|dTt>6#26mRf z4A|2k2^g!mLLHI=Q$FR8a#eP#d@ytJDfiq`mH%Ll@rl={%5i9yncwRfd@Mv!gPPZ0 zZ{Bj^wplk- zY1J)N=IS|B+I3r%`FdWJPTf&up5B+Z7ev)=Z!abC-8*kQX ztw0|34yui)Q;Sk08Aa`Q)Y!<#M55xl-*&_3zQ5^ieeb<1Dfj(D?mplmCe~5Ym1q*H z>pQny7BzYu9?DHu@HY2jzHz1c-4B$^nG{O2&9NjI`w7RYb047(C_+j z>_JhF0w|8CPd_FaAL5PQ2H;v>`J?DJ13Ht-bwS z9(SWK<_!a%jvlJhdjoI$7Qj#+Y98Pbl{!iTrGe5!X){$A;7bmuWI-@YLm@j=y+=_X-nOKDPR1*u}@!YE&Mjc*j^@4_o8eGbtcJKYT20MWj zgsqKk#Nyfm9zLjnMXlSHhf#R7dgZ-Z97w*=^&9v67LRN9#>Q4_v;!<=4NPRU+fN+N z3&KEp-XGDt8~|H)@GI+s)oEQ+M|ce#IHQN^W2KO{4z(lgL_fvkEBat#m&=|AW7l_C z&>*w+MSo;oBW<{c+-I=7YQ+!*P)Ld`4)are6@452tmZB z7?RltrKUV;WTDk4H~t5Jv9qixH__{6!6@Vk20NcQi=|o@ z;5-F#ovc-4CA4hd5@wmrp_NyybvDly&~mb|MYe=iA!{wOb7&Q_)(TritHfwUE+&hl zs2j>+?;afShI~dVxZNN)dT2r=ylP#4g9=(aK7)I}-;Wcg;d|7Iv(9GF=81EU_dQiBP$=$u2zSX`S{=Eu zEnKh@ZxSGj6yGL55l4K70NHG1tzLwLL9_40aXT>y%-z`9-S>94{_4lKceidP1=ZZX zyS-H}Vc5&WN%ACA&*_{^v%%{C|V>S)Ut+{{038=+Q$VltRApyCFjHP(RV&RoDud z{y>Y1Kh*wSAKGGhm=ntq8}DPC+TB&lLzaUon&cm?#|lEtC(7>U_Es;4;ix(3YrI#RGF#&H2&V?EHt4l52V zR=B1O{uPpy9%$mfhohh=u*iGlT*P&YH$>m>2tXrXIq(DV7D3qRBQNP>^&bZxN2E}pE*i^I9c z`q680h00UoEJbK$?(?~a`a^A)|Cuf-^3t&MSU)b&YNP$uuypkL$+y^Rr~0tuy)NH4 zaTzd|0dE*Fs&_^w!=j;5*=*Z z_j^ci;%b`RQog;}^@ZPYJ4h}fmL{tsw5(I5v{R^X{TV#;%p!r0=zEHGyy>czt6IqH zMeGKl%B5fOVHO)_IAp!ETn-}Er~F&Z$~{8T=u+2Z7qfLg^Sj-4&`^=3Mq{7Ne%?hq z8_PJNLY-5hULJo$DwuuF@OZTG@ZrM^QuGEUmgenj!gTgqYWpE`KkFbh3ZNWWQ{Ph7 zJNYVGAM8cE9r?^dz?ACL5j5S8{dUYRk2FciboJK${?6_wJ&ROs;64o6ll6I-6sqrl zLy?r1;@I*Kho-0}(cv?s(>2C%20;ZKY3BDzr6_VVi>iAwP5j&-cK1b(SI6Itrj=>k zlR<}rOC_I}pKR?X z)~&7UHxv8j)}5{Wt;E{7ySJa1J3rn}ay!@eZ`?}qcX#%0-`(CDd_ZPDv04%`j3kNJ zi?j7~r>uQ~S*2rUPO0M=_9{)#(d8Kd9K7eAlWUj^;) z;wFJDfWf)($i$QP2fwMxFC3ZzZ{2w~JIUhw-Es z#6gHtf7sy2Y=cKI?!Ud7m_aBLs~v?cQ6sGUei|HLr{rgeiP$Pk8ZiXNtpWE%<1i`S z{$%^^?$(X#d+?NY00X&BC^^>abYpQv5y}(~UQ#5vgFbGV1f7|ZA|G9>Af4aayQ3~u zu<(fGK4c-ah&3RpW1=Y2C$9(Oe&&zq+ zn(bRDS~K5SPT4FfNr;yHd+Vnwxiws_I6pQ1U_&y;n%C#eOW+c%OR4D_fhuhs4N}PHq59}x@+F;frxZkoZX1bh4oY%TB~kE(9wxKr=$KLg8LyJ= zsq<20DRhPOwQ3_4NN2S#>G(ELn=*;#FIo0%w``-LD+ZB5o&pxh`70jiLavG}714EESq?dx9QjHunbuO|!m7B~aEfWQ+nz~t7 z2l7?CF=@fU-KueojI{U%?e7eDd+`MV<^&d1y`W%P2b_N)h)QKW$$K9DJ4kOan>}RQ zxWyC(#u6il(oHK*dkV5&v4?K)4uN+G+ySVsVWX^eq6a*#VqZblUqxDh%N&z1YJ_oV za<5%&s9VD7WPei|p4xuv^I04PAsMve^p=M%aqp-tEmh-ZpqSXV?|y{8IMnu+*y*`K s&1cFU$LdO)Yw7LmpJN@h*ag7eQp828xyBF@yjCk`QuengkMPNV93`8d(^H8OxDmNct#!gT7C% za@(uELa(|rT7gWw{>V+?!~C`S{by&jtKG5P&`=kVKYv8`k58H+k-zC8{BuKIJdl6x zUs7cw*(gLXDxy)+H{b?Vi7M7ra1*OVHS3#j3u{CT>uRXQn252y1$9_2>RH!792-Of z>sn~Ugh;TCK@&EMX4ZAkf~}&Jbv?9UyJ%+}hYsu%ova(63%f-(>qh9oUeU`s0e#pn z`dK%@01k>l*3B@4!(y0q3yk2X7-iiGV>m9xS+~IiPKrs^?J$MYVw!aa%;2n;W!(vL zI4|Z|cfkTCMUr(lEMiKeSogpZE{kQ>y>J^>#0u*^xPz-=m32R?;ksC7JpgxcLu{}f zgiYKMTdarR9^M!CSr5Yl+!oucN8lmuh#l6W@CYA^$E?TT2|g81S&zdH_)I)wJpn)B zbMc(@B)q_v;w9@T*u_1u$9fuG;cM}l^$hIefjD423qRo-@rLyr9O7H?mi0XRjPJxd z)(ar;y?D<$3BTY6@qzUs{EBIjW}SlHFe5Uom*5BuVX$6?ESkb(eH)H3CvvP;-~=sU zvAzQz@l>3$UIjoD$a)R(XbYS5Iu!7e_{91yIOqzO^#*uY6h+pXaE9mNTw{j!Z8=nq)NdvuEZh2iFhXQqmT5NUh%{*>pIo}o!BuQ&pM_Nn(7fWhnoVfv$QchxWtZaJ6S6q z%D*|>6ojbRu^rRTAx1K2Z`vuko{f7)A5FtkIm91Xu3?{<&KKX%cyS%LVvo<{%qYCx zzX(mBP02Ny35@Pd;{fg(qt|B_O@qv&vf#ct6}@TX+KPbpHa;V zJEwAO*fqU#+c~|M#KdJokVt#DsU*&>oeiEL$-ofXE0}pJ>n9m|WrJm?Cs*%Z1Yq0# zQN}1)UB0K|oA$s_zi+yB(J@rFt-+-lpju%K2gZq+EnY6o#AQPesqVnDolH&zimR*O zZp+1Wc))dsrb92j%yM`7^Vhm``nc#79W$MF=$sZ~r^O>VA*Nit3kFznNi1Xv*21~m z#L}m2kIQ$=X9Jen!Dzp?8kxt6}ib(UgdH5u2w&*%@D?YGFj`h9lZP}p5V?n#Y1 zyp=LtOZ3cjXf?JN8K$*{@czpkP^~5AuE(n`>d7*owYVHNUJ)wzPy<23x=0dIJvI_I zrQu4>0PZ_M`0TZC)q$)tBO-N8M`$TDlW*~wzRNYxLN?tR2p=sxoK~WBYoLTyqiG|< zxHhZcjN;(!#OfdI1*<}LTo+&B=$(WQme1sf&OD~Nh#ILxsouK@oG1?(p@Wj6_7JRj z6G~teyq9>*CUk`lt$@BtDTNMRPN~0AN?}-~G(f!OO*7;X%|QnV(!4|rsbE9IX=d8s zBR*~WXFP`;CVaH~v(5&mKa(RwYG&n=c8c7Z-PTg2%au&0$+A-Zft9hGsk(-{n<1}e z{eY}^7@8$Wb56^HTh&60&Jn8Fw?e3TRP#j7m(RR}4!uqb6*A7tf{N2f5~Nx245 zJu_Ud7TiniOAqZ2=*cd6$+7>Vzkt`CdMeOE552hW4Jqwvy@qosdPpe@IbUzyyzloU zdcBSX&mZka)8LY2{S61F9~TCnK~oRm#jLT#Z05vv;*1>|`;E9UZkVq-cH!&B&BPmf zW~~{w5`XL`?Qz?-9$3s{t>+eN@y@fxc!M>*vHJeezd8h-uks0(Dc4+e%y>@_##Jbz zOh+OmnG^>RyB;b*6TQ!&#)~`D74^WGJdlT8LOJ z2RG_tgzOV?jillU-6i)w`RHbaeKhCffJ=p_#gu3mBC5L&za&hAdBRh@OC*muRs6=y z!OwnS?p)u(Ty1xClN$XA#)0PHyz_V9rq#F0O*&B`&NUCBBok8a!Cd=p7JVK^fTi!0 zT^NiO8NV;3kYx`>-_kg*h9Mqu`f0%6Gid6k@Z#3k27x)u1_8BMgSpRb5K)tP&#iHj zwU`fIk2xTQPI=`nOCp67OFoN~1|CBnupRww@9WY1T{4|vT9DUdfec#7 z!tmq~pT3n9X5&2pQqY96NE?1vm=c=iG>#X8N-07I$XY(w$M!iibp>7pP@7w_rLAYy zv0d1O6~N3l)_3+^-;v0gvO}{d2$!sN6_2OVhlTGfiB|CM!{J;cd^pRaP>PUi9S!$? zu7;q90GQ5hWP+*T0Z$KxaWolb3q2R<$Ag<64OOK1jf{r-bjHaT%GuHa4pR>33WcE55Ec(2`zN}8PD zB@^&4yM!O|5X^Z+-RbMcixq+zI>^9{2+D#`q}sTZXi9!XW5suj8RRksP5XF&412^? zCQ`+Tm^|j8CQqX{UY&r1uB-b!O8L0D+@lap~CaR;~ejKBk4#>Sq zUg!ys+m(4D`XyPlYy%x795C*Zxy&PKiiQ1a~emIGN@N#EMl& z*dgFCkQD?d)k4#FdF0!PsV@b%H3?}-fbRm2p`cQcB-=U%4eNutzx}9f5MT;Y0jIfR z_}gEStWI&KlEg0g_9nQ>2WWDypA3A!fKyu!I$iL9AiQ-&+IbzYI$Rm(rES%!yV^V| zFN2MsIs_Oh0~BW<(s;3F93TXrt7`@lpvqKR(E)%TZG&Sez5SwTZ6rh zE(m>*|D!GY=)*Vqu{EGIXLbRA-+^YF*6=d)zGCqH$o$_qEF!g?rh0X8+bMnuSxix2z}c;{MxKWF33ZT5zTh z-!^^Mwaknuw)nGw&8;FEjhNhbxaEfUmR7=5XhGSaLqsN^&3Z9G|S>BG@0n|u@dR}%z`HI z(Y4ci4pKHa$;by#OKLI6r=@o{40)!<8^7dKayb(FJUzOGsk%BpS06wvFo?vkY&^I> z8h1{lB{4`DR>+Ic8_9R!4MmkZ5o|Hu$b`~?$re@FoJKKM=v8T6r-PkOr6pBd9WQ)o+(xEFe8lrN<8;ePm@rMTcb@iV+DdQ4+(isc^=Zpx6QM zpz=Ebt!Vc#xxfOTYyhMC7fg6JvKnuhqk{t~mv`^r-kOdE$gOM~&{)0)D1b%^1XOF| zF68xcu^jbkjP>FMUVgc@d4i+j%La0+UX@tXok=kyrUaitQ;*=~U2z@P@oe|i<+g7- z)$f)2s^h{Otkgf~d$7xY<++~YF88gzzU@Pyh49`#k3RW+Y08d{4q3zQ@-We9nWue zubBCMSAGDqh-sQbMhBQAR)3`f%6t_%QxKoGg&(3-KptCbPZQ7d is+z+fKJTWbf2$(*4i=*d338oo$9Mcj*V(c!dH(_D-%XDI diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1_api.cpython-310.pyc deleted file mode 100644 index c595bde48e2a1534f67810e0ad1b334aaa34f318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136345 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 XE~QF$WN3P_FjN?x9@?KjH1_`k#_yeH diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1beta1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/admissionregistration_v1beta1_api.cpython-310.pyc deleted file mode 100644 index e47f930137b1fe0e19c5877245b3fcb7ddb75893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155009 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_api.cpython-310.pyc deleted file mode 100644 index a4594cb0ed30f7a1b642cd44a5f71ac058521cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4676 zcmeHL&5zs06(=c*OKBzV#&Hb?ae--rz^h^{#SIFy3)_hsyG{^bW7t9tLJDHU8ENUI zIP}bLy;^WDwJ$xie?U)m(Myi~Kl&H&+EY&jdg!4S_ctV^U9Gp+UWy(P3PaAvd-LXf z%=?h&cH0)7KiH2aPp(+jU(Mk3<6`hBntFs6vql!PnG@SHXXMzX--sKdM)`F|F1~Ku zoOvU!Tx-T_Gk@gITBDY2J+zp|)?Qj{jkjMkM(eEc#OnD+|7;UHUuI)26Rx>xm*ZVQ z7+0Z;QXPqeq*5G2j5D$|Ie)~VVV45pFZ%f|gs%m$(Y z(n7>)F}PW8BV><|4@e@O(H-*OXCK|Fs1NrzIp9(m(qck1hKAI=M_&*o!feJ9y+b6A zIaU1Tt^QAcQJ%RzMR~NHvmV6p14e5e!43B=h`_=Hl4jJx6ii9y$il9R?Ey!D1Frry% zp_ImBKDkf`CE$Gl`D?;iq)SOxlx8%^XdKV`l{thC7+O50Z`x;Q>Ka}-_{=Q1rmYv& zv7Otw6=3Fx^{u_zbEFYU(WYq>gbSg%ipLY_W8qs%8vFm39PEi1A560-lp^F>M}z&J zs{u?9h{^P3DwrA^@Z?|+N8>>{*Lx!QxPR-Tfr>Q0nbL5dPPrQFFYS0x5gP#Aw9~Q; zFz%=G!ViKdiF6SB7$;C3UcT+wZTsl`d#eZ-_7||B4YP-c9IefREN*pTFukvqgld4=JvRjl3$n&b*+0$PP{Ft>V@J22 z6S`y!f3idPArEnRm)xB`emq|isIh|-PD4-@gd)+U6Nx6|S2R|9yEOew#;~rB`$k}o zxk^Q%I1%HgJk;cQ6vxZ`%!$r@#^xwGgDYjgfJQQn3Cdu?1I9yPI+&=ozIZ!EHSLr8 zmA=gFH`1=Iq#?gxtJZCxqZtRq9a49QG8YLHVN75U_%&pod@&&+IZ@oX%$Ug}n;|kR z1Hd+cmoTCr;8Y7usxS-56zW(duPbOgqQmE7)J}Q2j#6A()Qbk)#j?iUfiwPbeF)x z;wtWlF^9ke#=xjE5J^1WEu9`h&GnTF5*U-IK#c={?`*-b6yE-GDyOQ%sb1@5y1RmV z!?+;hi~JvK+DGIZ54Hln;>Iok?H#nzjr|3k(vdq;>$s6OUfEOR8Gp22+qR{hSB>0Z z&U@Bt`@Z$-%ilQ1?r}4B^TvTKf23X3$la^f3;Q>A-prlcy=^^v*TCPgBJ0>gTf?3{ zzAb#)_^vbexC3X|eC2^k(@@D<%)5;&WojRH&B{{*O4iEPazAh7oxGi|vv%IiomW0v z2ekQi>Tj1_dhL`m8<_Ff=I=J(df%achFn&-|IWGIGnV!L_r&L33zO8RXMP_Fs)XRX6$;82vvm>>wrjIOM!@)1gp7ZC zVKG}K3;4XWp8HX#dnf5iWn6gwPlHF#En3TjNp|6ti_NnM3}(*6ez^g_qfZ_pqeqC% z5`LH>P9mV~^Z9cj5!mFkETG7Z57iBX@I~lb@sGQ`#?dBC(>Myt9CYwhiDY$VPG|Aa z2d7~U64pP-zx${ewHRlU!n+rSJk_K1UvetB9EyFO9R1KFgkHny8JbW-5 zwNLaUO?WDWATOggl<(q=vdJ9_HXp60Lg}E)5LMBfL@`&R?!uJ>8r56TMcuR))cKG) zvt7AcaXAzS{bf=SRN1%cwF)m5NC{No@k6AHtZ1m{uxO#^kZ3a{O~@@Pnb8##H9!w4 zj}y>}Yu_XkCh0F45OMEP8PZEFjW)}zg99oTXKx$WnvVuFRx}Q1EZ+kO@JPWxwKnP? zmzVR!s9RI47uU_<7i$|QG%C5Q8;RAc(iCrJ(h6ykfltuXW4yd;uH!nM?Y_C%@@=R3 zy>Z{PUCd#n{-N&y%75dzp5rdymS5lYQC1mz?;l5li&B#_u}ZGt9KAJDttE8EgP>>! z!A!6$HvLWzJVT*cudD?D{vZef*#VB+G%v%>DHct!DNXt$O}+O%nle+q<=Sn}Z+5Pg z^SzGz5VMBTBt!lNO48JNg#!b=j?U=%DNC;^%|3KoSGZ-#dmacsG&ccRYi&18v!_>8 h7$xEJPFnc4D|YXi(o-3RT&L6a9lz0WHtj3kzX7V-J`n%_ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apiregistration_v1_api.cpython-310.pyc deleted file mode 100644 index 0ed4ba5525da2a366318ce7d65ecff0a130fe98e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88562 zcmeHwTZ|mnnO=9#Oi#~^99~6HB2^k%;*7nvm48HvH`s7KV`P&-Fjw_x~rDni|jH-#^b^UVHAZ^SS@VFUfzy z`0_3Mg_m$qxvM#qSA}Z6R=8To^Yc)3=<1N%hp!IfK3pBC6|WZMw~^{-t#q|i8@oD| z&%K^gMK$`voEr7UKODL`p@y#H=1M#Nd)&dlw_2;7u6s={9GCAG0!MjaMf;7WAJmsDLlYlVp<{|({Gx9}JK2VA_|)jTS!pz^4o z(`rZ!|1gg#8d1d`=B|#YQB}gdsK(Sd?xSi#P2yfsQ)&`yTbUI*R*V^@Ms7_i1%Z9mjp2dP+IC?^jQ&8Qc%36Y2}NA5_n% zXK_EIPO4el534!#Mcf}#oW6F#%8T2H)YoNi?T*zX5zhr^Ax+0qepA|l zc~i};x7=!Vd%-l=N&zB|{_!*aUd3N{1eZ2yqLtI5&D@8%8~Jv=ohu{cO72$v!dyYK z+B)NI!!K8&Y99{0>Y6U$hg&(#9{N#haU-aCi|Z}FqJxUpZ2F7WzZNc{lit1tq&WvEp;!?xaZmpYwvx*^b$?-n$Dj09#f+kB+-Hu;ipGK{A#mX!#IkOZI znv3e@#zscx#88cHr53Pa{}Io_oD4OuJ)FkdFN~uwT%&q zFLqEsCv0*AFt25&+}*Exl<=6h9DhDh;&crg&9}s z%B?g}2K)~x`ps>GL3*fi^f=}mB|*t58*UwWLD%9`%WONf7JHrN*h+^qkjCj3zQ(v3 zi9*IsHK?znPoO%3dUYF>UT?aPoHQeMwJPb_xa>OY!DtV%R)|*yK^3oF2=w}5KK+G$u2Cc;j{VHk;5>+~AG$61w9n_>YO_q(!ds0KYT18)G z@5IF0bW*u9Y4cZw9-tr%uU-jS=U7-^A(HMUB(ve7FClU3yAwuO(M z9avC29hZ;e8Jl%fy&|@-$<7|ODisgn^<_~B!BhC?;Q<7Jtg-ip30X@cw}Xq6P$Z2N zDeE$ok6omSrY2&14r090)P4mk*RCMfT)!#_ck_x~>^iTw>av{&&5(o)4`@GIG60rmGRnY;HolH zL%UyM9$(|6BXgC5DFaKW7Zd2BSWgByWvvg4J zu1f|MhJp1~4GJ2k4AH|dJ2vBaq!~0_&SUcOI~T@g3h!<@6^!zbd%$tu#fr(-&TJFI zoHvIV?#@Zgq5|ujOoRFnqlwq=v4oM zCV4ZKSs@@L)^;}!%bmlh9X5zE=bDjNYr))*9>b!!GtBi@ zr+6L1+j=NUfw@fZ$Nl}uoJ4rYb$99L{`}6#f$R1Dr+QZId-3!>{Bh+T{z*QU69r~y z9V_^s=Wh(Rhi~Tbx$yJ+&+_?Pvv6~$J*0*n&;2ZaF896t-!0r2xlwG7w1+qI`b2YB z4Yx-Q=RVB;Am1*whuR}A<=#KU_-CjGj9e?~Giszgw3!dTj?j_Ev0ng{=}dD}jq({k zcViTPrS;s6F;zmmoPHPaN)j)R&to@B3}?t%f%#Em63a)}n2qI2tZ@@!V@*h`Ho_)s zthU6OG$A(Dl*IZ&giYC4e<-o`m=F^S`5Q<6CUBor#T!#no}B&{h=cOnm|{6^jzMC3 zDY5prntmy#_O0h{>=6l!tNrRgyVM?QkGH4V6YWWLu#NO@PN+kO&HG_{hw}Zif`mMd zkWqE?CwrkgJ>mXSw1xgE{k-W;ss59xQkg2nMM9=ZWvW!BN@c2)Ec7x}%5I+gW~$V{ zRV~30yM@J-E;I$B0#Oa;E>shnt=tsoUrbZi=>NyT+osmQ+}TR`Wq0W#O!w~m|IZ&mx78`0CypE^ae>)jc(JI><`-|7Ypxzs@ z?bfOvok+&ntgD4C+_iwsi)OIeTI&?gVi&H_>`c7kVgF4p2iLv&N6!%h3)4W@0wA^p zKUmy6Ek7H0DeMe$$F?(>Y=4?CpVX0l9G{joajskABEhQ@jR5;HBCxPCvWDH(@aj}F zMwXj^cRN#nEjIvm$xcm}N=*`jiXUK0Lbf}~*vhH7&G6P_r&tXj^RQF&KEP&{>I{Yc z2c0osej0zZP;&!7fW*#W1NfCgK%>>ly?*QHD3LPeWXZr`mMfAFb%vEb;#esb8qPW(N3RT=#t#%maBNDe zkSGgqk(Obr5b?7=V5=L0nkPDl#S|=%(y1K?>{d7PYp z)j+W4JglQg0Z>a3*8=$wfnEZ9=~7NX{Zat16a)$>wJav$+#@lY0PE%S!dDlZD+bT! z`X+u=4A-J!Og30(3KHncqL37f1ZT{zGr(o*z~NEK_*JeVYpoe9YOfY-;$sR}JsEZ% z0=x|p!Gd!h+7gmTWE`+fU&(-{Zxc4bis6(Xv7{)i0!Zwl4n3@lSTN;=NJi)m@*>f$ zfK#u#dKG9tG_z=x5f=k>%bA$vADFv~QcI{9TS>cT&U6dI_Hay2*ct(f3BM1l8`gpM z0VE-aRV-1IleNWPF-f@siN*2;=K(4rf5WIBv~XIXaa{RD#twB_#VA zhJ!@1SV4ysfeIt}2uyF%LuP?|c5@Xa$RWj~(O3QNo<1j8xhPc15N!k`o^)SJYZVzJ z8ZC=b~p0x6M&lOSEeCm`c*yCuQL6LThkAvewE>*B)`VfNx#AoYaaGP#(7Ok z#C*Ru&TE8|8a3}h#z;r?S!itugz(^?ZPm^`vpJL45bW#+uovz6+08A3Og+W~KPed6 zuM$WG?*a^^rkVyr`%_DRq527C^i^Cs`=!vAWE1v^*-6$!usYMG+}$lUeV)Pl5@k0# zo~G!>nIbLr^a)%(df^_x&BgDt05>|tbLZbazkI$^diS(xJt<7mAe@>cWBnX1w=5_q z)kvx9FZ1#hUcSo9*LWcSsK3t35-;E2c@Y1jQD}td{hEj|EFob}Z7dO>ULkK}YRAM02qODD|-7f87Elr7-&-fPjYC@i19Eit&qIZ;7cGH~nF)hi^_` zEbhCQ6gS?5*?}dD_PtF`<252!24Dq%5!s3vLmhxAejWC@y>OE?;;{yKr(ms3`*vCd zZW~*^2*QaoVn8HG9LkTzi)o`PYytafz!R`m0&ak;gP&l36Y2nIDWNm#eL$i|jAof6 z(HWwb%*D8Y%^$O)JzD9(9wmxp4HRMWq5{}Y5@?CdIxVu6M9R{S@d>e91gL`?z)ln5 z1a1J!Q^*^e3?S(E7ALg+4PaIdTnJzveqHm|njVNXHB=AGUSS!dP2Sf0^$1=x=9Dxz zBpzYPVz4P&E-{`mgcH1;Vso7@oqpcAY~hmg%mUykV}sQUK=NP)ZOphtO;TmzBAYsN z>ab`7E+=C6B*n{Mwyu8kk#Wse72|zXJMsqcNB}HD;X95Dr(%IQ8me+GGJTW=BqSC zZaN|SP@v18&|4cm3=9Ejp%Zik6334lvdum@3L!BkYZ@AxWE%REI%N%yJ$ypNoB03~ zF0=_kgdUoQ#`{yk07e985ILx}h(B7~%+x>S3e#Ac((;ZpP$?*w;9!Y_XQC3%ELhWd zgQ5~UMh^&E4f?B~j7j_2a+{{u1V7hnh zLedrvw2jzoLBSLoY&3M-?OvPgKH!Vw49m33Y`Y_G02GSUBZvw{nO<_vqGNRxYxY*! ziAw8|c7*{mu92vnnwmk&k;GtpdM;tX@4@;R{wL6X`YI*c&-<e>NDMp+u4Vw5D8#Y}WeDunKX@zQVl@qz-+*`*H` zHL%y_Ou$#0vTy*$n#Y>hvJen~tZSmOd0R48<8^%8PFZ-VTcbfdlQE^7Z8exl!{#A( zb1oXW(V-BL(0}*os3+2d9DGR32S}20Du>Bvd1aSzVn`mXurLK-BE<>~FJ^`!;aS-s z2a3xltT#aTu`89H1s~t&Zo+h&BnlRt-VV%CuCfsX;NozCKst7gkhd7I#MEPE(k@D9 z7As}5`H7Q8VP$%h)(|(Tm`@b1-BJZWv-4_=CT8kL3S2wDRRu`T$O>E@U_Exb0xi=- zdY8%0UrSGQ!f3HG)Orh?Xz;VJN|YB-yiq;HL#WJ`Epg)!=Uha=DLY=wLVTF!T3my; z@Xt_RhyMs^&+H%Z`YCE|^X7d%ya&*ofL%=7+ZrNTOQG<5v-FDog#_o_u(cY}+#78& zDuIexCi;TN52=LkS43-X+MBOo@r4voDy%tr){5Pw6WfGW4_l~qQyj#TbwpG+^i|5k zGzBDOmw8TDgG|uJDjV<#5VBpPqhkufaHv6OGR;Vg%}w%1&*N$m%@_p)H#_v{Jj9Ak znp-47w)Iv6n~}&o*nFlsYZ9f+K zwI00$(|t5-!2ul?vFPnvoJ*o-qcMQdqLGyIj!-l)K^p2OXG<^k4VW-afsF}V3x?o{ zVx;8kyeMPcJWMXQcRP=9mRlL&;)&>m^ER{S1)>c#c9|;Nb&5ZusjP*w5gW2^h&> z@sg>Tkep4&yi3Goc5J#SaT#JZoO&vSQw*B@{gPuJQ^)-!#j~ z^IXJ*XQ&{rBnYw)T5`8#Mbu;y3lij-5wZd&)H0H@s@;E!xy7vi5OO9tl5@b$j=*T%%d)5mYf;Zz|0Dkk65M(R~)2Z z?x(=7ioyblFX@*u#3-(tFhRFMIDQ0{hUB;&FmbKG`?733ojJ3KMUyQFi-?a=9Y{K) zSQ|%lD}7C8CEA=d4Ig_=Mw`ISowJhamC~Ey2k@52%?`w8sv`8@-HlDfE?P`6qM?hO znj;HI&L|}P$?furGtPyed9e!rTFYSS1Ej>Gv{BGl^>7V?WM;$)7|ocT5wQ%y4wARU z8$}Jl8sDzz^jBt(7}tc16*nA_Gv7h+n7t=y71E*^42vMV)uCkFzC5GW6S-J}(6AF~ z@&P|c-MrY1r?;_JX?fGA7IOdlGRdsSFw2I+qW6~`V|TPMO1D5WaiN@hE>@g-+k|RZ zVxvE!t8o)9syx|ogAi6dwohrfp;&C}T8Zpb6c`rwW_Q(YmD7bGe?!@=S3|Qyj8eu6 z)7~kEos0go(tewgJPMpiugAo_g`CW8K|U!?;<$PC7wP==)~ zU_+dqx=c2?OWe0G=Im^pOeL&wj8Ci>3gG0jXqvp)a1f_*nS)9uO!w16Jlc>lvuw)*g+fXR}$-x39+#bORT>^*kK#%ZzR@ZCd9@% z!dO4e>tTc*G4bRZ<^Q+|voVj_m<&A{$9!DUe8Pm;m`~c63kZEOj=3N)kC`wN6D?p2 zEnpn?33zv#RLAX;-$bnAFjkm^7q{X~v=a4{7%Pk^2gV9d!&rfy--_2tYDS%CkBYg% zBz(M0s4u|JTjA!IdIly5ygzI2aE=aR1%}Kaq^Q0q#tP55$DhhLA;x3&ZO4ezXq8b! zK9OVWj3NR;OhysOC?Z()%Pxf3U9dQ%C|T66Vn#zmn8+w18AargaQ`3CLNbboS#3BE zyGxCXB7&`VgX~+bq<{<=MZ_Mckx@i4ipcF~rqKqo>~m)n5p$YLMiI$8D8WB%=0WLE z^`MkdL`ZJSC?a$#_DM-M8AXItgNz~q8d*jW8AOuEC?a4akjs%#L{>722>33$IBGPs zo76F4*?|jSDDCnub0jiYFpsJukv-x=q%#(ym*&8MJ-t?s#@)uAUVFLDh!DWU5mCBxI2~fv#hnA>Bc}MjoxLd@TG}tk#d|-b;kLN96#at!9k5|KrN}f#%5Qv( zT;>nv)QKzB!+C=)qK| za8dPp{Aphwsa5|ShVQY0ihQ2%ybRsz#6*9AVc+J3Y@gk|k>JpUQ;aar%K|TpywL52 zKFteHRo5@@@**!^!sXVU1fS_s^jmTPX_K%N{u6vCJ`2Ak(}Vq%3_f`v@>i0+AHfL) z(O=}tgeMQ&_2~p>@11v*;#Bm|u##>~^gAf(+=%;shjKX(+r?E!)F8s$T$UhW*QAhe zs}TLu(W8M(xSH6se*h11?opyWKb|muHV>6(r7nw5werreG zijU`*UF!68jMR9dFJjn8`*z;f_tgK0>7$20AANSvL+vzOl*GqEFI}{UG&n32!I7IqPy|OTMX(5p;Haetj$9j6 zB^+CuqzLjT*aD8Woe*kZNln`Ol-eT{!IIi56v1hs2<~(LEhf4?34H#>-Bk0s|HE*m zxMdz7VS4phpL!m7fQ0|I zmXz7-}Hp*tMwf2KDfvnHUCEF#dciaBnpVhm_ugGqNTTCxQr*Mt+B$jP6v zqZU(GJ|7j?8eqo`OF|edO2%Np8d<4Iri}2c>1yoq#)v@m88Na^#oKD;gtKUqDKbsY z{6>m%8{{1KUWbD$+0a@mNOty7M5rt!} z%mG>EfGl%BCLZv9LkDEoc!b+%bmFe_D-yxVs)?vv3Rppt1@LT$s9=NTCsj`XGBBqK0LnUUb z6nfYyLj&0=C%{%2?qjRa0oUilxfz_E(cPJK_yt#IaNtJgX4BTySl783LTs!D%efgG zpV8sjU`J%J+p)(jr|2j+MNcH$jyB)gTeo9R36}_N%Iy7VHDle5oe)mZ7lc#v zjQb%@C`>oi4CGCX3K`~m&tAr4QIcW46|R&r%-5~bbuc|U^FSH6@n6FcG+13Gk8$Za z$tDJ$4bUp!T6R`oc2;0^R^aWNxNstm*fWMd!h?shvjQ{BH#@s6JG)J|ao7&Z&Thl0 z6A?u<=ILc;w`FIyeF|r{WteY<`DU1JcIZ@g=#(5VmtZVqn6L9T^t0^HsqD}xtUo^| zn6Fu0XFiSOl!4Iex73eK_U(tvr%_rW=KCk}X#~^Q1oZp>TgJ{!7~e*R20|v{_D9ot zR6O};aos~VJ>r!|{O=fNJ0n5^NtoHba_?rgX*AG!9$Lrit{xa*u4gj$cbOZ>;ng^s ze~+KKdHpWG(v6V*9xwD7r2jrI^b@4ZylmhyH==PAQcgR(JdMlFF*$_R5Kb1a;l#ji z7?R2vDecbl$)7jtY9Vp>E>1{n2CJ>Lo+tDSlRm+Vcpg&tbah&cf)lM}cbj0n!bb;L z`g-``1Cj&&0X`H@z$wtw?JRxM&VP3MPKQAEY!&>ayP_qekj@HR`^5jqaNr-EGX45V zTvWb2qzW(PfJ*1uIM!;d;OE*yf0qA){FU6?kh?RP%i(m#%EsMT3^!ce#Cf_nKG;x< zgb8J>B*9YZ_S_U29Ssi;u&1Ct8O+w*8V>ng4b(Q6R6NJDjD_);WgMtE7f%Tyst-e>2=<0$r+=Qsr#uU3~F?*p&W!l}Q}Vq1RS&_O+Dh1Ko!)7+t8 zewO4Koe`Um_bk)F$+N1PH~V6DV) z?pL~jbA7Z*HeG{nNpllcrmd)V+5RK|jS=x$v^ZkjSQs7$rO>xMAOVOON8iSq;&%Hc z8c${~UA(fqc@@eHBr6vWkJx{VJLf#HMu6XrP(J*0yFyGL4}pH5_lg+A=4Q zS9vsbDtD$mQWy%S*W-w5w9`t^;_24NxMU9bGrzC79F$i*9Fgv$F`}8_3aM?LUU=cf z1(fMMS7Y4hmdIG`gOjW4l+mW|8nHJaW}bo^{eUqBN1&r0Y+$fQ7I;*$=i*HE9yyq- zA~&}!eEjUdg5v48d>o&aQShjGMQmZyHwVJYQRq138AXRb1PZ^7gUtEOkprS(#X#P$ zJS4r(j(So;k+eNNIhBuHq>82{Vtfu_M0@uu&7>gLT)!#_ck|lBvEI%ruDWcxpUD)D zr5@0Jwt`lbXJzj$ISAZ7n$E5i-Od6=Ugmu47%+;PpzTc}k!UEw!X~animNa6WNoBp zXyHzwJ}c-jukpsAc0G_`GjL|)ml@}5&nP7BhiaY+@4`6h2aZ@+o!XmsD>9d}%dVk! z!g~RZwe!8I!ZFud;NWmfG_~9C0=Ugsux}Lq7|~d4P6}rWOAlbSUXo`YV_^sWc*gd& zqWK*9CbUXa+^nM|`)A>n5XW7cxizVSq?DXn!^S1-S*SF|Z!Zs;?(yh?I-=WsrVmnl>Re);@{#7YK_E zx&8}@h4Ahn*F5YQrI^Hh3Wq-L5lQ6qUn34Aabpi9baM=KvtPK^6Y79yz9Tos5q8jq z9ReTwF!nd^bnXO7C@v1XN;I(A#X7+#-bNSVO7EN}%U7&r1Lx$L zTMfOFSeaPu%9F*yJd``Qz3OVZuCuCxEiNN4Id9Ds`q(XDW4aS0_`cn*&tp3{21bOy6HW(^j*8fPwT|qq?isAD~))ke5Te z9LA+HBHL#Pi2M_HqV7{pK*~l8^=wcY|m=$B#QtCV#9E zuSov-Z1PvEcMXCu-xseZ6+W|VQ`vTF)sH4$1;hZQWPTY4iGk|hL?$~Uf8 z=jc;BR_Ge?au6W=uYZUS#izg^7#qwWm@bUx3m=yX(VhH&QhpLVfk7;Sh&@nB9wn47 zeOw$a7KZbM)PIb{Lx&3a;@|EJ_AcJnYE$}o&$d^RNT7Wb3}k_SHi#@x4x4VXl|CFO z-bn1@4A|&E9H<08qU-@Hlx)W%+wrIb>vewzD`o7gTyE9jnOwt-q`&D!c#qIWfT;mC zkKif`F%pFWlDF2akmZV4mL_8Tq+wgsNOkFXdg9nVzJ2#n^m=_m?7{m!O zqUqc@xs1KvCt(S=H}-y#iQO;rH_c+-9uf+~i<&gLQZMWERR4pfq7A7lnw2ciHjcb3 z3MEJcC;Jr~qim$~9DN@WjsiKz8TCFKV$;={%76C}T}Xw)2kcwz<7@kVwohwwN;RE09|hSir%PkoUfS8VN2pB*jC{U)@~}ct%60-DE>Q&jFvU0TEoJ5G2ifhh@IQKGP{x=IYrb2KfNfoekMp z6tu3A`U#wVrHB0sJLf-%UYbs3rOPVrl6bY^df*N^-E)ldcK^ab?;z}(Tq~^ML-A-~ zsE{B2f5XGKC&~7bV z+9yj>$ZX!d5A$wDx-qV0GS3}defP5=-8{R?FpwHq2P%}0?egrOa9^&Cxnk$k!2Q2n z9_tysld7e@fwblhy8k{Ky)hS^ajcTeiteHlG7x;7VmuHUZ%;^5Z}X7MT%XN%v${& z2QH_*M%Ar&cL$V7)JF;{>npsS7aw}>z{xF>%ttUip~CSi&OC)t0lZMw195Ac`3Qb= zd<4f}UZ1TaT;5vGyO}FqF&oWX@xtXQrZK~?PC9?hT=A}6gAMa3x|)M^7rprQIm@LN zV(d!MA^T_SiZ`QGWVDLzE|~rF*=&Z*3|J?pmfHi3&khWD?f^Ec47uV7c&?q@Wrg3j zGVNK;C(X`&{huR#MdrH}Y!Wan=m+;x@m&kH#~`n?|GLjB?LO;)c0X7k2VxJjBnuy~+_XIgMQhQawbV(*W`CoMhDPKZz1l6q2DAjjPQnyF}g9U;~4GL3D`If?Tm zGMmB7X7Hi18O$`c?C=yF)MP&~d2$SowvdBYQmRL$v4O#;KrrpA^bUK!$*AzrsP zYr9pvy_eL4#oPH$f`j!fpslgn8=nja>r2ksx!p0jL3VBf)Z-O7 z3Vqz^YQsGxuMBa%1ouqRLV#CJkAUR z%s{~V1OmG;tieyu@VA35^y-P4DPW3L_CZ;eYG3EL(1$Z~!F$Q5u z{}>PdB{jQ$gbzC}-=k)iQbzPB5}A9VQ!1C~ld)XxjF-!`K((s;JXtQk-*T(=m(g-r z1(kAH<5;(x-p>oIru8ele3O?;yjgBUaGwC@H_nhFZA4~zt0Q7G5veI z&`eGLfEOZX`uBNZc@wV1#Q!6-&zvseLMSi%5-z3OaDKd48Yvws`K6~y@0Xs<{cdTz zbfok1$eAIONF(``nLB(r`d5|V>CT9_LiiVLQFCJ8;PU$5h{Fgz# X&4oPqaJVozUMiG^CJWQ~gT?<3rF*Su diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apis_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apis_api.cpython-310.pyc deleted file mode 100644 index d4f0370ef8cc5c1dce3ca42aff2584246c421e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4637 zcmeGfO>Y~=b-%b=QlzCguHm2oI&BbGEMzinP@olTH%{y-K?=oi*c^xyi{Z|YTx+?r zo|%7o4rJ=sMs`3?OG{RMmNsn;F~v={fi*(D{>GTckiL$Ztcelu_0$Gi{G z?Y1rW{%Aj({Q8Pz{S60aKMw{UK~WE&V%ErFHgght?u;B8`)=ZnT+@0Z4_Ys2%>9vX z)*4B39*lx{Yt*u>J&XCQ`OIQX-hS$iHkkXR)eDaQ*(UIPo{zaqx#p^E#`}UWt|A#{ zIu#o<9;OO15p8KAriG5 z+^CNcvPZ~!Bo&Y8F1i2H4{lc2hciwNxm1W+Oo)adqPqLwGr~la&v~kMiR1~Vir=`| z|H;qIo$FhetL?6CQlme`*w;Lowf_#>w0d^ANykbgx#nR!&xF+bFxR@9#h)ZGVCgw! z2L{7M#_vlhWZ8w$S2W41VT6aA{ahG)1V#NADsGKz5SYVk5KxP`%zI{oh#Jg)W{n!G z$pUD7=71R5WfKloP>z4M|HbhBE*Z{ZMWTc%MW91-EyydZM}DkWZ&>h6&mBYs20O)10O`O_D{w(t*eUDwZGiv3vqWU4yCs;&Mwiwe{3Gu?xGfLYVo|`o`Yx zITAThwrLiJ(UOy%;>kn?u<(r~QR)9Z9n8d>52kq>NfB|a5xn&jBBa3-4@Zit(A8Zg{gZ>LB zo^p*C!&-OMMY@fz4d4hpq;W#W2`4DV*X%%G{ERltInd9@oE~t{2%;8gG?O9~xgwtq zhY#REJkGh&_%Iot&^*z7G86`$(A0<&&!Vr}xI;4YqDY2XXTU-@^Y&2Ye6{<|ojaf~ zl2b-*6XfnX&D-ZU_Rj5;T*0+qXLST_-tJXz917?M%8nffHr;DN1i?8Dif*VM2sKtNRuaVlB~|d z8(sK~@hUn8d&yu22qo7rK^ds*fbmFR2PUec-+UaSn)b=PN@V!jk>S-7MD$CtYVn3T zo^!ysOX?0$_;3K@1njRyvr$9#$!8NH(o@-8NDNM<`5esu%F6E$unNcu0+ec@X|g=> z&BWA~0^FKJG$p`yfyYqLs#ub3or99~z^cFbsBI8n3Q_?tuw(e!Tav8KaHo>QF8S&v zyrVrS^6Xc!(yyKlyg)xvKO!`)VCg`B=ap&a)r}PbWp*#0SgpP*;9+?co(if&h#oLR zk%l5o7W>A~flv9t`a20xb1LXKod__QEwD1BfAECLsWRKDY6GXY*0*0rlZ3V@_}-R% zd~IpQ*1^u1vr7Q}78GO7{t6vqx}B+Y;uh|6dkW#ipX?X5ZE5GZTR6;l$9iGkvwm~= zYv;r}X%t@J9@_GU+GB3vUA3OtzqN}-;S}C2>+#zNf7^PCPp@zK3 z8w<7=ZDc~}&_su-Y)s;Wt5J7pK0*!YS=oggX%^P8kXk#=oK{|r1h{+?P=pXH&8b$s zR_P}KLIG9!{0PEDR=O%aDqE0XNGNk9(aD;uWpo7+7}y?GRwkqsi2()@81|Pgu(Wr{ z_;DkZ(Uv(nJfw1Y_cp@Tbhsd)(mkY!dg{I>ed+R#SOgta&7Yz zN5z*7@8#82U^~_S(tFwVU=CL5ANoE(1uuQi zcf2LsstxP_vMJo}|Ks@j>w=Lrza*Q0zt_a%ETwZEhGjbp=Yr)4_B&zt7?RO?r5T2h z`G=wGz#h4U6_Rm=G)yQZ#!3>?yYE9$I2Bl)-S&e<=bD-Cb>#ani_VwP7r zpr!9ZXY}qFb*{3>KFGGtVoh3m5ePp*b%$3|>q`UA^sB7GAin6PWpJw^_YNkV3JLO@ PPCIY{x8rQtSN#6~_K_{@ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apps_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/apps_api.cpython-310.pyc deleted file mode 100644 index 327969721203473c9898fc5c8fd0edd209c05b4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4603 zcmeGfO^@5gm82+&`toiZ$8b;|rcDB`inSCsXweF`6E}7@L4b|n2ssD|h!JNb(MxgY znc;f1;9hE9dT4(@Pj=Buj{P6~1-$muQ-L0O=*4|+NNHE=E!<1dLrP-E`FL;Myf^Pt zbh|AJp5NP#ra!x4S%1O7*~f*!C(zVG_%Lg1F`GHDy>P~kjs03&8`sR=9lP*%55XMy~ zqf|#CA*mFH5#x;P%y_~j)zF%7Z(qc+943X5mho2KB!fe44JtUIHoGO0v zR{tlzFlVk#VU9LjpQIvxO0lnbIB)$Gq-pi+VvA0ch%?QDXpsu3_hGJiFO5EpBcRfA ziVh4$%alKmQplnUqpxY4mBSD>Is4RL@Ch{aWB71uY{P{)%!UhUvKn)r+i*p7<~_H@ zb=F`${5|HtHMEMxy);#@`SEY|zZ^XnlF>X;B#fz21UfX+g1jbrl*d~1Mg))e^o^Vw z!21G(t_f$6HsUQQEohR_I9~Qk9S9xZV)bAj+o#afHTdMfTxQ9Jww_rhc5dfZ05e}% z-`V>;N1`N(7EPldTuIVZJf2D)7QVA2D*ZoagSlAn!7PhHDMGGwG&uOV8i3vbVlum# z3Z@2!JUJZ1(PWS=^;{$$^>2MRP?6?0QyL!78CQdYwek*1Vgo>jmZ|_c{d8IQK@cU8 z4uT&6S>?gUw>`UMA8%J;@2>zt8x~g&@{9KO1vJAm13sB^+sduS7IPzz!5{74*>Hh% z`ZwTs#x+t5W>RG7MT(8420$cAra~^Lu`N(=N-n}cV0?@!EI2UF$buelPzR!xNjR4x z5t$;NjYbc_8lGfaX|zhlr!Y zd-pDAi{zA%I|N0$!SK!|R&N7Mas_7sv=SdNcY39@NVM@0(Ukm(#)|J6CC_9Gdh}5r1@?%mR3wTMF?q~GO`b+^ zyxtE_bm23>qv#AgB?An&kxat`WuUAB#zTP}m?*b?^LC7C+9&tR`$9WMX_v-_WX;U1dY>pO!SFnUzhgDw^P8(iL|BJIA8SZ=Ni_R6*@)m;ORimPBFs15 z5J|k;H|`B0$@L8b2~cH9P;>y`C7a+_3h&@4l`~~<%1;}oyBoMS&;_9{^55CEkKb9j ztqqtB-*pLK--2d**Po$d{IoN(PHK7Wg*}7Z;Scsp+qSgxqLw?%dDnVr-?zTK{Ec(s zp44+UuN~U*huUSe+`Vc&vwv;p_1wwb+t!n}5&n)9StlN}2JGp>zX|^q{M*bu>41l< zzwm%c9jW9^=G}(OV`iUpapf@tKi13}xt}-lPTtDftd)0j=Y`MO0FD1n_3yGvFC8

#)uMf@-R2ylh|*L;1OvzUANZ=$ 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1_api.cpython-310.pyc deleted file mode 100644 index 1b10e82b7be4f779afab462ce3d79af2f4ba8ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18399 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1alpha1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1alpha1_api.cpython-310.pyc deleted file mode 100644 index 0780648ed4914b61756efd2aa6f9e7d3a800ca78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12106 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 amo)P4lfR`vF63&}a;}`O<>t+k*1rLECv@rn diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1beta1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authentication_v1beta1_api.cpython-310.pyc deleted file mode 100644 index 31892034b3291ab61600145d17440e9758fd1825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12092 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 d7oD{5Z~L$IcWd@ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authorization_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/authorization_v1_api.cpython-310.pyc deleted file mode 100644 index 2e340a5335e34e9fa92ae7d3408e0b161ab22bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33093 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 G3;z%D6%0B6 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_api.cpython-310.pyc deleted file mode 100644 index 89ac40bab8e65a60b5278cc855cd4776b937fc21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4645 zcmeGgO^@5gm0zMLt>oP}uIr#aOdAAVwQDJEP@rAdPTZ{P1OYaNBjg~oAV!>#L@&jm zXNK$5f_tfb>7o4rJ=sMsIre|_7x3CsPX&7Dp%?ePA*EfdH+3&X4he-J=i|M3^FHQ% zNOZex3!XpPk0yIpEbDJLIQw`o_z0SM2rp)hEM_w&vFFanv9a$a?#MM?Z{)$(OB!>3 z*cs|R=T&7%e)i&dOK^Rw& zj58gJlw?vI#*8zvJ>@BvR6}>XAfIPErCCfKRFguInbw)w9So+ip5^0yB<2HA0cjx; zwH(~6w-K^O$h#yJPv|bW|FidRRn&(wP7b+LNLoyYh9Q!=_wZA~M3m2Ys&|Rx38#wR zyw(5dFU*uKc(2$Jesxt4$`!GcDYH%N+h}FVLZ=-)cY{kx|hWtCoxdz zIb{b1!$rpLODSa8h0&KZ$*W<6o1A@I7<>dx{TN={8rh&QhuNT@7IT^R+y)gjnE%`w zHCU4c@b#GkYG{|2?&Vsjh$eA51scb{+y8ucf0qnru_94Il_Jog07G8W0E%U$0V9b= zeDX#C7{EONve$&OSQ{xKeQX;4!ykQ(Moh6T7er zD}0l=2d@#-9NQ#JS9S;tEt_EO! zfS68iW`e1~Ax{qnNjx583q2F*2mM>`4^*uA&5T9|bjsD>U}eLDir4_q2Pm^zt|5&3 z*`f@>Fiv9~hCc%8%7<5A`*zzt{{FfW`b)UT2AJi8+~cME44RPu1Fo5K+bXQb7V~0| z$e-;$*r3%0{Ri+r?!1x%$m~#*XBXfGd z!8nLoq|r=@ROE_$G8{gHEAk}gO5;^!d_wa?_sLKgctTU7UEGU)9pVnj%pD^c8lV9S zVb425ne!F)-Me?eb|j~a+#x98HHNp>v3hH0k}Eh9pjG&Yx!tQ=0G?|%qms@~>5?({ zkX^!$cmx-A#ogKCCyNz<8avFuQ3%SyNTk|0j(9?TMH9t$jLGLR0jv6;j{$Bw6i;C%W(%<56@D?vnuqXe8G#K^d6tfbmFR2PUem-@F~8n)b>FnX;pO_;1qsn)Do}I);4@p`SW5rkDV0-YaH`h^PIuREZ=ef8 zUle?A%Rat-&U>wauDP&FfbteJ(i$>uT-fip2+X#QhimekLS`+pR;M;<4 z8@?ONJL!Onnh5wicZlkHdwpp7S4-+Z2&ZW zJN38AF1>Wj%qGnEZ0q-%;CA1le*u}SasRDzyXUOxoA<&OUI|R%YLAQ8WaT|)7)+F= z8Uh*k&;P+?Rlba-j36$gj;s5)^q1d-fhrmJc7*{GU$#$!!A@;fkPR@t9Ycn{v$U9P z%m6+y*0UE!x_6qYRK^AG|7+mrd1Y&rEXgi-<#OwM@&YsG;=bGjz~c`eKo$?-HBb3b z1~C$X*#TcX6%vA)oSK4(+;~sjfbhKxdu#r2zvmur(JV{i$mE}c$4aE@GYdLTj^8~C zbC|OJY0lk;8c~aJJ}LcsQN%Mn+V~}>lFOku;OX&YOvcsOY@72{-U^~_CmG`Rc!5pmA zKj`}a6}<92-|?1kt8ZWjP(vZU|Ig!}{I^`>TyT<2I76?AWm!t+JPgZr7|sRD6YO`w z@Cj6-^-41g;U9o7lpVm4Tlhj&&aj6SrNmrGVqy0KXbPtS%d^{l(CAz<^SzFI4`z|l zB!^@TC`l~rN(U_VI&?qPWG{itGcGHy$FOKq3J`4TH8zm_w=iB!Vtdbq-Ais YV)riAnF<;5oK8D%0=MIA*;oAk08`a5Hvj+t diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/autoscaling_v1_api.cpython-310.pyc deleted file mode 100644 index 3d68d8480aafe532c7c61264f0d2629b788e9451..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111480 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 W2#frN|O#azbSp%RMz+H8Vwa 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 YSv(WM<6UNCXler4AD$XIkUf(7|1Sa$2LJ#7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/batch_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/batch_api.cpython-310.pyc deleted file mode 100644 index 274a3cd50c1f6f9dad7afd49a13dad45ab1fb321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4609 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1_api.cpython-310.pyc deleted file mode 100644 index b71c23b57d621a03e73495e5ba5cbdec9d25e8cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109309 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1alpha1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/certificates_v1alpha1_api.cpython-310.pyc deleted file mode 100644 index 886aa7ef10ca8a1cf3e0090dfe9a77c502d6d131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72263 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 wCys(bO!g6DVkvX(-pGTmmo(=7 z$Tw?^q&W{p!MrtU+18%LeAawnu_kXncSjq{{nF|M$A51Vcs|d^T&7%e)i&dOK^Rw& zj58gJlw?vI#*8zvJ>@BvR6}>XAYWuWrCCh&s!1WqOzTYT4hGX$&+>6U67zwmfV2>a zS`Kd3+X&esC6Zk8FrH^Z>V24N-OJ+pNeona zPT7IMaFOwcQVLmiVe}PE@@g32CTAZP2A@DvKY$mvMm8wSVKykJ#a!mSut7x)=D)B; z4c24BG93^7UT^Tpj=ieFrs+O zCvTO20em1p_?mDQYa`~0(wwF_O_D{wvW3V2Zk7-BvE7HJuEDDSCUZ+Rwe{ROu?xGf zLYVo|`r6*_IT9sOwrLiJ(NdzG;>kn?u<*4d(fI!%1~W0|gJ~W|Qbb(qcyRDzH30hq z#B_Qy6HE;bd3rcV;_)C`=$S}A>ficspkmE$W;8mWQ?3RFDKM#|w-iafi>;PDCq5Q)=?kaJ@LX!w*|gn_{L7}J<@5C$W2dceUv zh+3r4Oo~+GihMd8K7w2FH0Mg=ZDo8y^F;T_P#AbZQ=?zpi~cLb9g>-AMlv)(0~W%b zcZM?OE9|>>?}GJ6P8qpFP{eBtZ?9wZ*3cwZa3(;j@DX#nS9t+E*KS57ouASrV{jw8 zgdgz;?(B-Yv&T;sD*`okn1Qbll!cK2+U ze!?S7p2bPB+7C~3;WNgg=o~yK0}Rkeu3>`0eVz^&j|6sLqT2fH+cBzXpFF7ah4&t% zU0p^bzhtY{ZK&fp2a3C-?hu7n2q=Ov0fT^FL-xsM6C%=6#a+k@PNw-B0>aAg?-1}0 zC<+3cYN2Ve-16)dcpuBZM+IbVP+FTjz<=v`HcLh8wufiQc za|kgWhN#X^q{(96xI2h2*Visch$d5kq5}Z0*#gH>`UlUboGOD;y*6;VyM}uMT@d=B z;9Fbv@psR=uQk{;A9e|F-hpO(*q@+d{I@f;PTazMX-^@y_`Utgwk_?vbPI<$?^&%@oFggpcJw&2@_ z?*{WuI^ZcAFMXiWKq^Ix`L`i6nc62^TzLY)k+q6u5frVWQ?!c>)-Jk*^DH z{q3?#uN*V82{S(1`pqWz-FN68K`3k7f8+e_IkWoTyWtD(1SWE|%f)-La-TDdCQ4Hc zkqjK@f8et!XGT*-5Es(N)rDL-%>T!MDjWD_#Q_swwojwMPHk3@4luqQLzcg@w3uy7 z0X{X>^B|6N?=)Abj0@iX)yUEF%GN4dl3no1<<|M^1!m3#ez^&N#~<%OA`kI3Px(;> zK@y_b0be|Ws)9fmF+~%(@qxMl@p~Ef*8Jms&pqCvS(e0+Nk9irlt|ZS7IdB*zke3y zFlGJIw7U;=q88(PQu_Czh-Z4V@l#GEmqT&D)8lVrKCadh@;>DG{a6f2ckkhF)IL>` z#MopcATL92DBp!Q)Jfi0u*GO26H13BH&kU~5+_`Zx=TM2YADyrF4Ri1u+D_kx$Vqu z<>g2~&^PHsSmoWS*DC!)Kr*08pC3W8$VykmM`a5N4GC?oBnDeky^O9vAp_`PD&0ex$oGH*@JNAyYHiekEM6{_ zqi#*HUfjULFV{9tX;gCAK#A3>5(~C-35CQ=;A3d&F}(b1p5r;b?Y+L*3T&tPz4l(W zJ(z=)`Uia3T0)+^00guesAP<8-EZs7}gIl~`TmlCrki8bDLpedXREYEKHL8Eic%=bF- z1DHihlN{1Epd_)xD;+T1>(CipKV#!nY1zkmuIic^_aYE}gm(av)!JwpxTjwg7KZRe cCoO~96}xw_;#A0x=XBbE6Sy5`%f90O6BVI0F#rGn diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/coordination_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/coordination_v1_api.cpython-310.pyc deleted file mode 100644 index 4e24055f0bdecec6e6878601885c9b8dcd2d9010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89519 zcmeHwU5p&pm0tJ!^z{4>|0$A^N<&GUu{blNEU)CTs5K?g5-o|O$uX5M*7nqN)yx#x zUDdkPJ;Rx8CV}lWkO1)-Ss+;FN%k%RFzcsa*FX>iehPLM$U|ZTNYdCmC4NX=Hn4%f zQ67}sSEeWh%mMsQ3aK15QR=f zMH_+Vd(O<7ANtCz;^WGebG71!ZY6MD(}|IC)~nS@ytuHi7F5@3EAz#uybx)kY7~`X z`(@5#6RBCpIqiheyY8ZM=}YI%>$fkh`_6{1V!k?Bb*lKvS6#ez+3})ct?Y-@MMwE1 z-;Mpb^YhPsS;}lmAw^qEN@8B$eB*r8FRqXLPqb!cHrtqVSK_EttNMkYT!~cm3etuz zR)SYb0p2p(*BHZ>rLBs8NvTLR#_{c@TdL`=MP}0auODB&iof_@;^Jp+Wzk`MUKSlR z>-BpB-_4?n2EE*OGq(o4Auo@6&Kveda3AtUy)oSL-nch``>;3ZP2oP`9qs3febPJWox**}d(?Xj_XFPJo`d^A?+I@j_e0)k?@8Pb zdrx^!<9@_D1h3?vK!XiQfX^mkH%sj+SC5yXa2o{ zzxX&Vbu@D=qlT)P?_};}>)CpyfRr1V``IhAeTse37;!5>p=kSbAofeEDvuxTXB4O3 z`)Xl5D*Fp-wVqr{1~!s5D$ z!l)KIuP-fK!*qSO=Eqeo8=k-F)=JfRXDJeT#|@>MnU}lMgJ+$JE@_1$QOF9&^TLv< z`N`8Sz4Q_W5vu4p7aTV84%MAW>VMW*iM*||9U0EH<*57^#YK)f>-jamIy0+RDi(RM z;wrb?%mFz@rA5cT>ld-EBo%M1S!pYIfq6QvDkmw_q7$v$_KQ_XLF;&&cI!@D#A0^V ziEG7myvj%BGROaf3{UUkk? z(ZpxYa(0F?MWb4^Qmb+`&{VhuA-05h=T+Uav4ch8%&J?8{WDH2Ecxg$F5Z0Xj z7`ZDY$=A?wW^%#6co3E&VKAZ+UOgYFwS~%^wS`(36eG`HIDI+3#=+Qggy_bQUX}hg z?IDdW3Fvc-q#9=thbzV;xDb@lS&ue3q)}TBrPGrW+o7Hgc4eEncJ;>6!nJSW@8Z%c zug}_gvAJsDoiN&zw(x3|k_>&_8)!T!Ku51%UJE1kzpSk?!U9P_t8FE@NrhNebPYy} z69*;q7FyI(QKfEQ4OsZ)P1TK8Oi$&13s+=iyZBXW zI8d|<$TEJ7n~v;N4z>(1YhRov z`*Gc_#b#q=DU$rSk@WnBCc!qS>%oN)8y^x}u*qu+G9Nf>?daS)JI}4U$sWmhL*Aup zr6N~DPN`50%0Aw>=$H>!kHDAWjk58RD>sz$+@+(i$p-bT3=_jz8RtB18FHM%?pRIs zk!nJpgANS2nMUDRY2R5} z<+!DFbWbcghKuRW7LCA#$S|U4o+5@9MqoSRb+-FKowHuXO#P7)JG%M$rN&Wo497x& zTTp?0S>VLRdGYBTxXc2_j3y7l)o6A=4TDK<3@3bEV}Pt!BXqB*X zelhdz5z=4aNo4SLPF?T@>jN9v_{&Hgd<23B9M>*XhrA(qM$=sN@(l(&vd4&_OTw`s8Ia@(nbx{ z9|+Z$PBB#DLiNW;8#h#cEL0OZ#ZXNO)t@14(op@GP)+F+O@%U#qI_exk9)a$6H>>F z`Zu6K9q&!Becl^JOCMlM*GIjBFJ`<$YuS5~(sCo-Ved$NxIR)Jtxwd)>f_$gI^O%< zsCNw1ydO7rNCAG-Cn+b9lJ`#ilS!QU9(CVO&wS>H+c6u{BVc+2Opky(esep*CYc@q zMbw=h0Xvv*utGRq>LXry1jOMlJp#51Fh0p6U{98ux*;QaBb$yBjy}3kd_d`06*6g# zcrw+Zhd6n}h*Z-v=;!hbDu>${a}tF_Ud9yU5S~8+;p6OCJ6vWcdw5-> zRvJi<)2_ zQ=J1IDP{y%d4)O%!tKkiL8%9^KrQs|R&ch*IsA^lwFw;~mWwq};W}rYiqB9$Xin@q z99yLZSGK?LR-k3(+==)~syHBPfa(QmYvn8_r|M;AlNtb?{wXb4-XY&*X_f6a_sW+? z^nGV}n5}(8T3hQ0)KPvJlcqI-cXfTztf6A@sl@)@Jh1+oywx?{l<+Pgbgp(U*NlCe>1O#}D6Mq%JaUQ%251$2lKF3mfMb zlGckCen0tqZ$VUUabtj@?Z%K9@ahrPlH)<0z-39D#P$A&wCAnSN(9-J^h?|rT!lnB zzBO*w<3bgh^u{=~Sp_4_iaTrhUP(;+ajiXxqT8M#KC^RMhY7i8S9NLhNABGwj?uP_SY`#O9u`$Y_Xns{+U|p%ZZc2>QB)(q4U%ZV=?y-E|Kt7ip_~7VpKHI1N z`(WUMk%3%xs&6FQ_d&kT-Us>y`tsSa>_Fe)?7?j7AAcD@dOi!~bYCu;{~$MzLyE~S zx%2lC{PksXzubOd-!iF=LwTE?zaN!I)Y}|rP;d7&)!VBO3f21(<@SGg3sz z3M~h}Ig!R>8QnER?pR6nmIrQF1^xziy)v|irvHExuxdc9gPC`31Yyy~nGQm7tWwAm zAB=v+=vvPL@1Dc=B3PJ{Cv$f{t(#Dq9QaFC(bN2`EZ5_M#mj(-4CX zf$kq%gU#GN#wSE64L(9P3pOVn0jL0N0}cf|OaRmy_GOEJ12zfzTWJ6B>uRuC^}%tJ z(LF#kK4bFgSDD@Ol!)iOO~RDW?8GLTJ>UjpM>U-LO)Q|HOlnl+UY}H1_n{L)SxHF`s082u{6z^s2T}isz8>$bx=K#@(B1I2 zw`a3R zzEWV(hS|XlPP0lT6ObP0>5?&DBFd!d#6T)y%AnGl>j8Af81a|{%?3&6lYwlC&m}O1 z+SO|P6K%WZE4{M@Q{v+jI$p27;Bql0p#Db1Rs)6icQgj|?wEFAu~Z|jGJz84bE}{p zh>{@s0ePTPP%(jov}8POYdk$~Kv>d0tQu!PT&ob#$TlWFyy;eTwF&2$cV20k-n#Rt zi6=?Y5~8NY(2((Wli(N(Up?vdxf@vn&c!;KLCm?zSC_%7i>A2^ZqwAJwSb3J$Q&8qha>0g#0t@=y#+6E7y<01yGYpkc(CA25)?w(7mXsMni&lbH?za%n*a zg;6*c`fFHHv4j#l26$2{ifG$c5z;M2%&=!cxeS~r<}-ky)OojWU|~?wO9!?v;tO>x zi0VQuk{zbG3-Bz0WlqmTY;GO+HEd~^z@|cGmt55o%Wfp|j+C?PyTFq5C}XFzh+SK9 zSNzg%t7|2*2kY8WP!518kQ-MD7aRQDpj<0kaDa>@y$oUP;b^1QTiVans~8VR(*D9^ z$k7Wsq--cHYk|hgfHh&-vfVDNsp^RP};9U{a;cc#2U}Tjgt^lhf`$lhcl0DTG z1kMHtL!nDa)<=&*Sr^F_>AG+M2hU^B6RZT9K=>M4H-A&sYP^nbFk2R0>XwOhVm7*# zGqnnvM2}7$IcM$4jaP#Z4b$?pory#T;RJ{M09g`4!e!F3S7xdRM#yql*n+T;feZrtMGykL(lp4GdtzskAYCe51PoR1nd0tU7^gnw2ZAM-dn~uF}ZI>=E)7-7JZ8 zhJ}yc%nerrAqq4F+%4kT2RC9`1-mRko7kYWXM6Y4{DOo~gzpM#DGby=UD4NVHnh)DtjXa18 z=v}x5XrPQ|&X0tDvcqjozb^nVj7TxT_d*OUaP0l^5SEuB?}9hWtkBC>Dc*Q2`#QyZdxQ1@m)d8LG5w>!e zt85QF6p)o+^PIShHo+V#t^@8Ba~xr!V++D^sMhR3MQ}tqd*tVno5V0i1tC(31L8tW zv&nF?O~|oct6=>=;jugE?vVE&LHdJJh~uB^iy6WCVO{D?)K||q%uKypu}xS6Ot==_ zO%B7PMh6#bX4 zZ7~Y3MSzK7ipVCX$GRPZ$joHG<>&nT^O)iq$;>h*ud>a>HB=XadmQ&oaDWQ}&(<5} zwElG()eV6_#`2czi>^oZv>GiazZ{WYPq;(fglBNNv=0H;i%nqOxrEb;tfy!kU2yQl zT{V*hSf5@s$Ic~b1t*8DcGSoBq+tpbX&K=dWcaGDD;9EL6l2La%KVjyMsVc8Bj6qClmU?%EaMwQ+0=96E^E$d@0 zrk3#Ab7mDSB5Tdg=$FkqTDU7XX<<+D24@d0t6!LbhK6_t%mwrbk>9kR&E9$1vW3d8PA1VKJeb zrLs*z4pQgQv-@qU6wEvp6<^!A1kG!gt*Qc=9J@BoJbbZz)~*30vnwh09T|hzAobYh zZs{l1V=dBk$jM=R7Gok{rR46sAZy(mB*m1h&taXVC?j4tZC^NN3ad>uuw`RI#^T$? zh}U2sQ0>Jh+DvSX0piEutgGH{$&oE#2V$8B_Su_e(Zl!@wSmm!<{pKz0KADG*Mqfn z$TP5}!2E(UfJ3pRMU3$t2KbY)xutva)mvy|YQ;;`@{U_g|vJ_J|AtqPg91Fs* zVKH82>SfJNULq40U*Ph%+_C~-Hnd7xmgShNsnCL)(r7CTdV@RGr)Vr%u+6dS=o)6e zNI+oTgc${Cn4=58nFhU$R}*<0)~*_MVGLfX6ovn@+niZCnrj=xFk}%qox~!@8i}p|fm-vwGk|)}&7pklZ=T9kWtqQ}O`bViDA6KHU|u57jJ(ieXxGHSE&G zNzIjot2io2Q=uJRalyF~Rj-y{I6;7B|39c&&gdy-KhBbv!D4a8d=wyfJ#X7qYXDOS;FV(i8o z0C8`Y#cZ^1g5$U<0&%XaWNx|&$)d-X zGFWWPXG}E;;cVxL#0`zG;&Xh;$c;q;v12E4QnA6n+-vEo7D-^Qmb$U-#$ZiLh*8Ug zF>T*+IJsyl(b-TJrl&C+p-Jx;s28Ts;fERQ&HM07}^ZlY8-}T zEI=SmBMeCdkRn&)OG>Kj4V&~4>34cg!PB8Fx|M%IjIk_Pa zpJX^BRpx05OA|PHT0djbaTLm$+BASJZGBjy69HMk!sNVWo_Eu1cWBb@_qX5{h{)-{ z3N)to&hn>tOdFa!c`&>ET(?qx?=0FB`h+JWHYdmXjm=5Fu{jxl^+Ko3Nq?Ko$>2R$ zoWSbB+MEm;o0D9`D4zH}VFagk1{kCbT`t zFzhs#zKnEji;~6XVc3%(ohil!WLT(TqzxMzkXWcjbc&%G6{_zc&03v&PpHOpilG`8 zsvjcFTAln*s3vrZp_&w`pCHXzo%}?orgVy-Iv`X(L)rmTuAd3jL7if#4hhxIk#@*X z{amP!&J;s+Sg3x1w8Mt#7ed9>Mv9?2DpbEl+EGLGYoR)(Qw-H{QvD#SP*?A`rju`M z*++Dmp*&$Ir;&Ohp`4aHPwF&7dCE{ekJM8Ma)!+xh9_Bv-^ox}T#xzBoEfZYyLoxK50bnT-NKDhu$U>jr4`7TqFacHPth$Yx+O)or0A9u-IAhP2*xN8 zX_KN`x*-ZFx`jBD6x{-)Wr}V|(Jd*uB}KO+F3fv-xJ=#YBxsMW4}{GnmUV=GECF2A z1ug1yk&?P}m4;l@05!A*eZ|6^jt1F$n*HfaYDXY+^U@ejRG8Z1%Y@iEB&L0h!@aC1 z8x!pYfQ>;xv^5TB%zlfVNaG-2fz}wr*gQ0*EH=-=!W&0BQ#4S#afs;44zzP)vIBJ| zE?X31XlSoJOAqd~XK(eqap3cJpAyQah#0v{rRMEA96o5oz)e14vZje1RDA}09KNFLFB zHE?3>{b%QBDzr*VD)A9TY|)l)X(Se4-5=&iEX2F_Vg^!|3baF@-DhGl{-7=uV4jiM z*fPiutsAa28Ai>6v>36aHny;rN^NX+u(3^zU($dp3^vm{;L0a!{POe;d~*j2e&2*w z86Z=pkLkVaUXJaMTZkAa+SujM-ceO{c&?4}Z;PrjfgqI+Z&Vc%sboz@DnX=`d|RZI zI?`>VmHLj6R{juF*5>68cZ{_1V^CR}mmlvKY2`0KWo=&mqC3)xcR=E?{1vFI&C6d2 z)j^$-Sa!6>V>u*G{TI-{;-w`X%VDwW81;_8uH$G+JQhS6E?0@fRh$HM3< zyr1$OHSt&;LrUIzTh_;v^x}8YfNB_Tj+-fj&H1goQ4s^nE^A4)lM9*P(_hqTeZxEAZhoTxi zE(54&#jUi_HHLXb81y#Mp68Lu>G^yXai{(z){^iB}d7 zHr?LRTu7YJb&}g9NBjvH$1R9z50|E{_@-J{QOH0BjNODxBpx#ToEtxk@XZD1w4jGL zIeBwyjN!Hi&sqxkkEUq*)*>gYlS9%yp-8$zBE{~GrZd>{1&?v05LnjGFTD6-074{^7>A;>Dl zJI(DOFYgT_9yh(vj4^^VVquTh``~G36cS0^$IN})n}Dp6DU(Rac~c^*JmCIYfLOX( z;Pbckb_}skeko4RTjJFd`#T(u#`_54nVz?j)w=D&hdXa|>ft%+$8f@oN#q6+}!#1Mkd0F7)952KYN?1enMSgmYmoMRR zf1+ix`z@Y2ipcwMZjIORA$Oc7h2EzQIYTf&U>`#S?i+CV>^?Tyjzza^-)%iVs1=lP zcF_Hg2oOk*p#_Op$(WG^*Z>xigKOs@AmL;95V14b)2Q|I3k={Lgr9j>p_jY1#3#Oi ziEtjh6Kxix)eF|gF5GcT^4oN3{<1Mmq90p1gTcwTI6F6foOM7k#_*Yb`Rdg--nw}G z4aC8+p-!~R`AEQJK^f)+;)OSPkpQEDwGdwCaq@!Q#%jq$7!UM#lZ0+20LD&&Lg)x0 z2zcNHG2(VGMnf}oRESrgA(w>ptv*{QV1PsujV+a+sBWB+l{t9UT0)nW!ufce#7^t9ik+i{q{kRD{=1 zcg7$pY3MDZD@j9d*?7h{2O~mNw=sGedJAYQ38ogBcu!VhkUA$yofD;@x6;sCQTRCt zy(L?OFzE>DDl%RM8?$lwfDosjF3*S5HCPc(uNK%tfvuLTlBCRlb-?iG$cv2r|^0V421QVKVLH$)c8FlIVmvv+q1MNBybo9aF~T|E#0n9x2fpbpfMZB*Fs|miAmrweQofV{+{rd(}2ey zG*|~b<_O?12=&zpk3lG}K7{Og6~7>qmzS$$@j3tApf{vbOc1ENP`!;b8`$e@p&HgH zhH6BpZX?YaIo=kkQJrF_#)Rq~(#Fgi?+F!PHcT;86GHU^q)iyA9|#rFnPR9Wh3Zd` zW{n*GM5vI?6hk#7R6j-9l*#L-LUll=7^;Ip_18!{XsG^Ls0b=TilI6zRDXjs8`$e_ zgo0{~ zQ^hbsni^o~t~0n}1xfY9cj8n}49_B|p4gf3?=rZ15}eiq-(989tIGHTX(TVhJYTw7 zL9}bn(NT!oBd3duP?`&7pLbF{ajGY7SJeoJq(fQrN+|#aM=!(@6%8jmO_GF0D=}nw z$KlP%(&+UtJDplmR$RIr3Uggb6rovEnMX%oC-P>WRxibjt=a;@x`0M9sYTSTr{b(?cJPx2S>{2ftAiAK)goDd-# zY0GwfUDh3d81Rx#K88V;U5Q&SHsrd)1@~1%lzT{4Ylx_>qv}caFmD6eDyRl-$pN4& zjjV)L0pg5(fsRWfE2Vm3z!GaKG0~PlJ=&RhN3hedy(79)u29E?Ya)SttUCKn$s zoVMJ;+=j1+mjwVA`;>_okdjdIj35#5HtKgB542Rsv%+cPNy7HtE1MO^R z>wp#6kJtHuIlwTwSr&8VdK0|*)r!%zIkXq<&JgdEW!Bgy;47SC`Kp3L1j>QTr?Ga& z$cUVYf;@9NsZ^>bPW8m$8n#ulAbbk+#QNx)Iz&nhbSa5&OL0UF7H;m`Kshtww`kUh zRueH(n^A7-mk(#4o2aWl#iqHlqm3gyO#s!a)LS!Piv(g(5_v_UyD*-Lginz`DLN|3 zpojun?0m02xSj8=Ix%${Z@tnu)Wa@Om-K2<+-pghX*b(h@NY7W!C%x(UKr~|z0C`w zyQsgz%N<_l$p!v#Gin`| zKO!38@8d)6H2fZo?`DB)!@=xzXQ-G5wpM=W0dWu=TGS${k^Jk&Ct7pMQ2r`DATrE3 ztDsJ7mG_7XBZotrR<#uTvt+T{*#Z(OCa$=XI>iF5~4V*$iW#G`gTah%x|Kf zqhu{kRrKu|G_)GL;~4#y>pXYk%Z9A+8O`_wSepnj1?X8 zFcxsnfCN5%Rv&FxrkB5d@-_*u(S#z2Kp@Qissk zDlY@H`*G@W4_P5nq2O zR1-SIP)!QePmpGfp?@M&Q#!>^9T2LYAck zLiG!zS!3v52o+nq)fk%X^=qVAW9VNC)iIr7@;c7EU<{4AwirW?3*{p^%}|~&l+#E( zq1zVEO$#M{W16N!FOHzcMsXkWayr7pd&3x0C&g@f#5)DE=|^EUJt5;_#CyzpTp~X( z=EG=x%ya5!VZ^0<0>;t2Pn-K`?@5?VGvz6y40%tB+4LFrm#J2|63q8pBRUlPsgk

7GSG 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 MPT+Q&E&G!HALFwuZ2$lO diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/core_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/core_v1_api.cpython-310.pyc deleted file mode 100644 index 52638358439e2050c5e00609f9d7e20cac387bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1555002 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 EKNu>(>Hq)$ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/custom_objects_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/custom_objects_api.cpython-310.pyc deleted file mode 100644 index 216503a098532b0e3ef83114c746122d1f356e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209196 zcmeIb3y@sbc_!9981(eK2k$p|0gwbn9Lx};D3K$A5=c-a1(AS&At}Lv8W(-;%rwz` zZ}Z%4fHQ8`E6YmOan{jFmZkNsZAyMEtlhPp)o#|=Si6aZ23&Xe$7dMwO7c%_Y=Hf^x zdm&pIy)c?iJ)064G4jhPG2)GVVbg_ivFUtjHoN}UV-EhEu3q+}?^V2TjK9AaIKm6_ zvQVxR0^cdi;A%m5!a2I)`JQwu_;`8EIaBt0w_I?ZRhfZwRx6cqxVW&eQmCv}FVE+L z(n6q!DnU>Tqc6vFF@c@~()e!^zI+US;eVS> zrM%RIG&*cZq|rgIiA`eom(%E?%_8&5sSBIMh{)oa5u;)Z*AX!;CUDJ)Nil`%sF)Tr zxQ>Y}Vk@rWVw>2G>x9@LcH%lIc8T4%PKiBYFRs&KpV*J4?#W69D>mIQn9>R66I4&N>b)R@d zd=S_D;!*J-Tn~s3i^p)iM?5YTalKc3L_C43BTk4XaXlzLDn5qmA#qYXh3jGQv^a(9 zec~DMaa`{g&x+@8eLy@fK7s2Iaaw#5*Q4SE@glCX;*2

j%WA#5r6a6z9bfu5;og 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 FOX%HiU|LIaL;Ay^PW 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 ZyJGh)7Mcnfa-D9+cl<`z*|M*A{{~nMF7p5Y diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/discovery_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/discovery_v1_api.cpython-310.pyc deleted file mode 100644 index ac739a89014f954bcca7117e68eec0cc45799e78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90582 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 L69Y5(lZF2e59654 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_api.cpython-310.pyc deleted file mode 100644 index 45e7368956bbe6bf6ada107bbde6d081a8907eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4622 zcmeGfO^@5gm82+&(n{Wqw~tR6}>NAYWuWrCCHCRFguIxz?H59S&!ap68Q6D3YP5fV2>? zS`Kd3+X&ewU zw+27^r8#qb3UjpG)k$jdrxXX8hx5+gL7G}c5y$^Hkds*~J908TS zQ+8o6T4a1rN+HW0jJ~3AUJXOs=d zw7#+T`;J6elpUHyLAaEqt9U$>J}i7=NmToPN5i>D_;8j-p%fw4IvO7QLJdLl05P52 z%mhdup(hq_t zjdT$F1PCh+KECbQ9sBt5O7w#zNNB_I@b8cIO_1I!=1akPZ{RbPa zu}S{{T+g^hn!!wpJiAD}(cl1xMCnw>gc=J2HK*hv3sb9YG|3g53D7Eh#N6&zHjn4p&8VcwDP1xFr?E@;5f8ya zSKOUFe!N%_sIh|#JcFPt2t}%mr--KH*ECjq$0&L(W6-4!2Pm*dTxB9voQTO|9%}M5 zisRLOc%loR2_8k~;4c|qz>VY@CMW}i9WovY?7&2|^_#b2RMP>uU)>klI!e1TKqS9p ztG?SnM+patyQJFLE?$P7-Vc>?Z#<>hw>_yiOM0Zz5h zG+u7`W@hR`0c}k}ni7z^z-=g~R3yo^&OyWa;ML!})izvU3bz7LV8_U}zhqgRkxq3J zyX31|;0zz2$-TZa$N^(WZ9V8#!Nxk9n%3v>Tt5)3=@Tj~BHiGI9VDt;{ zIs=i$i+$tbAf8-bGmrpPrUFF=0G_f9j-~Vto>Dne2B-RL;B;>d_XfHk^hN#;w(R2{ zo;t2Is5S3(383GCX1v#5p<}$YGqX+_MdO7%gB;>d_DkEgwDY1-ILvv+dTHOceslS2 z=fpi}7H-ivwB?Vr%Nm7y)p}{vG&lF!!Vj zKC=1311e3VQnZR*(oVz8yg}zq8bsZ4CaO8tu6s zg}Q&5rBuoV-~VaM=(}Zml_$v_c;#~IeBJ^x=R&^R1i<5u9zfa-ku^{GQ3l}=;@AOS zJQWh+nVgy8h}?Kj-GIowjCgDQalhX<-lAC+N1;hQhmVy=*JlK{gr;^K&IN<5=70kX>oqi7>pC3eGST-K)jmDkR>ya3h4Da$X z^hWY+_(CP*P6S(wH!`7gVDdp#Hm6a{)ws9xAc2O0tn5KeG!N?RN1fZw>{eb51q6DN zLIhQ=t@`cKiv=VAs`U5~B#5kRsOYF{LqQ>-B}!s|HC4*^3KT4W9#oDdpcS(|rVp6n zmkp3?|B?yd=5oecX6xXP%H`QR2wU^ffQu>{hcuS&014oc0t40BxC@!PTr5Yunqs}U zfrnqNZJyGoDcL}%p`?e3Y6XJXSJbwRM5|ML}Nw$D|zlD`pN)sLgWhV#{!SWdU-5_`Z zwP(H33IZtggFtoxM{eN@-5fycz&~c&CK_^@;#VEO4A&Y zG@vB0per3v*Xz(3Uq7SQRq;5$>aFUUD)u4}euR1tscEe)P2AI~$_PXFqLY^X?TX#I VSYIk+$aT6M-|-t=XUo3g{Ri<)CrJPR diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/events_v1_api.cpython-310.pyc deleted file mode 100644 index a30c159fddf37d35b2e149a452d67d723bbba7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89481 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 Y2*pf9PmMzZ6Jx0G;Kaa8_Hge11EFo#>i_@% diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/flowcontrol_apiserver_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/flowcontrol_apiserver_api.cpython-310.pyc deleted file mode 100644 index 11b82668020c11a0dda04ab7295d220797201d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4708 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 D2TRNs diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/internal_apiserver_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/internal_apiserver_api.cpython-310.pyc deleted file mode 100644 index dfa7aa64a04cd7baf1799133d290c3ae245605f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4690 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 PM7dBNnJVndA1eKSQ}b}c diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/logs_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/logs_api.cpython-310.pyc deleted file mode 100644 index 68f1fd7ad13f6dd2e1994edadff2993215bb7df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7580 zcmeHMPjlPG6$d~N1SwKd9sf(4G@Cf7#a1TcWIB^-WH*28I%!e-y||yCAEBQC*PeRKp@$yo{@wzlC|a&P)5&y_iX7}>7rXE6 zdvEu>_XFZaqh{du2lM9Exwj1CZ`7Fm*=W3vOWi=hjjq8>ZiVL1>RKkuFq-(ot zqqf8H(CIq*Svjl>-L5;VcB`gw&EO8NJTQ1g)b5wM3%vBX(RBCzQDgXhI^GmA5{XbX z-QI{97pfO4RwVt@H%RjTQJLFR=FPc6`1Y)cH^_o)iu@`1d8=S zUnzzgf1JeZDN~Ssrl!y;xhb}us|h{uN(>_;OzdrY0{b=lm;chG66Fm!3O@4Gw z*GIV2SrjRR9UHQe8262RGc{AgL(k{NV{@ZvNzzPK^GAW#n`qWnBHWTL9y~TA9fE)M z+k<#0+Wm3RlW|WZNzmSYPqncRF)`|27{y$*cSN+)4uj41Xg3+e(YvjSZ?{#DhzldX zx9#_ZYHv?Bb313&#`Jawg?hMYjdnBF^MWWyJns##RSpW*bj+H$w_K>bH5qV7W)gzV zKhicLTK=;puCkFn zGHgWKNDuQs^HN8S#dP-N%a^eOr0_Yr#7JH9BCMceEM^TdB?E?2LCyl5Y=yKH zNWl-*RZR0na2>JFy?eMx#HyY>mLay+yDifBO`%3{qy&pMZ;M{S?gn8v zT?Pqq4FC`-xb^ z_VAKmD8O-z6*o-LNdm_$IOv4@NHMa-KG|Y%bYS}d}NwNVm&OSC0=^jcw}BNes$uP z)_!^4Nz19dW6C!Yo7-vmv~l13jhQ-WDJ`!XcTUpyOXMWWw;j0-r&-!D)qChQUp9Cd zL1R6saEImu#(o8ttH&7fr}>x^?RBGX>{s!uhI#>YotO6;yn+=jYRWEmc{O#@YFbMh z=|YO<>0(-Xi1_*l98oV6b)7dJS-NKtJr%z6yCpd6W&aCkZC;z-0Ea!dvA+KP`^Y0j z31Q)@>6lIZ?tmhhO8f*-6rT45oL%k(5w97|MH)Ii{1Z=m96<6+w=#u5=u_BE1X=igH2 zDRU}f;JgRi*!%crfl`z}kf6kd(kg^&WN<)?lHI}-O22Ngy8{vF2uh==`%vcH~P~wiZ&J#9c?8LixCs*_$!n?JkUBm3W%7%F2{j zt8Qa*?!5#sEo%T94ZI@dQFG)pwd_PMMvT{agNK}G=qIXK%bYMq>{pp1?jbAWSxE)= zvMPXu#5GisLaIh9-P1X$@Dw1ix8sKa91e02S;mOWr38X-Mpi=3+g#F7T-#AwgyJnOMi1PC?UO(9odC z0z3gg(vZoVflPQ$Gy|FJeE=qcLGpD#rc!Dbkg1$nsSU{V61`WtWB}$kxGJFOqOPK@ zpdz&2C!J;HM7wgXe%i)c$}l&H>tp9IYWMr3QEc)yus>#YWe# z&6?wu-Lr0|envlQ*5x~RLVUNzcrOaRlCt~E0xBfabYD66c+<*ZRts3F_-LfRA{{kE s-0KPbrLur&8i_giJA2LesMTifdM^BB0vmeCwpFjWmRqV@%jQYv-xu6PtpET3 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/networking_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/networking_api.cpython-310.pyc deleted file mode 100644 index d9877c45332d464035508d844ce052a6e0f1fe7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4646 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 NDi2Q$?JpiG{r^c_gAo7# diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_api.cpython-310.pyc deleted file mode 100644 index b20cfeccc8147662108bc6e21d53bc507744fb9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4610 zcmeGfO^@5gm82+&(n{Wq;}{O=!?bDORj`)g1Od{8?Zl1UO%PyXI6@9W3u43>N%WE& zdSo_#>X`AqAdIU} zMwyO8N-`-9BgProp7E4Rs-ZhskZ&@c(kvo-)ufPQu63q%hr?N<=lNt1iexA%AT30! zmV=x1HbV9Zd5@&x3Ed?RKKbxgMSV2qGiR<(VUD)DI!R6bl;S}1aNhYVNYm=ui;O>zQpmCgqwi>(SHloDIr}tV@HsT~0erYMw&B7YX2S)wS%bOHZMdQ)^PXGd zCTlSt{vLDS8aicbUoZ}vAOB|mo6&<^GMYz?y@>q%9h~N>QzL9eS zcwd0fHQ_AMM!XfJgr+%-<(6z|>zQ?87j|I(*JWdoQs4HXL%G#5pu1g;lZbB2zm#I>Fj1E zm>M4P^l%tQlVP^dbCG^Lxb@*sMVjBtXm~(pTn!Ia$~&xx4FP?afO8*U${l4ESWuZL6>zTg;6>27k1FXTt?H z>ED3k8P`ZLm`Ram7b!NH8UT?foeG&yV_Tr$lw5>?!1x$dNH{RhNJ0-dr~^@pG@MJ3 zid>N|N27;e4Nr2eG+HI&Q<}$mKt{sA6PlX)#J%XhL);;mF(;Ct${DZ#_PjHaIbUJl zy?Yn5MRLl>9fG1=V|aTVtG|XOxq>qRT7{38+x^Pg@m#wZl{7h}OD5nhb_qY?A=u`M zyR*lS7b^lac94Nj5R?U>NVV}1(Ukmx#)|J4CC_CHdi3!C1@?%mOr(kvF?q~GO`b+^ zyxI>>bm23>qv#wwB?An&kzB(BWuUA>#zTP}n5edX^LC7CIw1F}`$9WMX;;RF1%782R>>EUPopscvGI ze0K{R;U1dY>pO!SFnZM1gDw^P8(iMHBJI46SZ%Hh_R_X$)m;IP%Bx@_s15 z5NW*FH|`B0$@Mh@2~cG!P;>y`CEMUwO7Gw)l`~~a_ttQ4pbJ7@O7a&;2OW z{nH$!QZD%ZS0hH>E!(RsN%p`ims{tv7MM8~@Z}}|9)Gq62|L8qJmp6j1V@Ns2Ym5V zNQh=~W{M(m<9&4l;`TD$t@+3Oe&cwHW?3ACCh;6TRw7-WSGc5W zKrJTuwDj(UA^&HbJExZ;F(w(#z<{_z@(BtZb<0sBA+aA)zHoVsJIp$@mHsDu5nTZYH1=t3IXv3Et*v##?6V;E>AY**geZ^U;87DjSD1mhS=y;E@6Y)!MiVS-V^;N4=V2y|{sg zU#@MQ(x~LJffB1%B^G4o5(tSIz-Q3ZBlvjNT*q}h+kJJl?b}ZEzH(o6T$qEE`h~s+ zQ2r~=^&EEzxBC0G4^4izixu_&tK)m0=3M{1w4}!821c_jIjQws9Jb{X{ zUTFmZl=nd(yMQCN@Pj;@;R~xqiP@3F8tzBX6i)e;Yj-@q*}Z1w`(61y%p#>}4(S4yfvN=!~zQ(dnvW9AMp6bxrMh5ePp*ork2fR+c92=~V@UA$-wEOaFGo?p>@b T6*A;H-Hz}0jjpq0U-AA0(t07E diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/node_v1_api.cpython-310.pyc deleted file mode 100644 index 9c2430a426eb1d1553b5881cd3830886b35bf022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71131 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/openid_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/openid_api.cpython-310.pyc deleted file mode 100644 index 39746a334b068b7a68e85ae12eca4867c263decd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 zcmeGgO^+K%wY%MJw>@@dHoF^T`H%|OC1aSeH$+IwC<&Y03E2>75+xQO18SAK%68AR zyE;|XlkuqMLUQ2%KY&w$xa?oyC-jvQR}LJwg!ii3o{tR52x-NEZL7Yk-mCZOeOh!n zEepOs*^kG+df&4ChJ%xz3xiLgs7FvSYiKc>Ik7!+hK`N>T3j2}OzRF^Xx+Fz^M;;T ztH+I*KlEqKVbiwmS!`o?iRy#o!NFv*nF^-* z`#jn2$I+;t&h=CzH+t7U?yE@i&6I|Fbi!4CZz;b05?LRP8)1uB0Nq|XFZ>{gl1K-^ zcLA~Tpz>|cZrO*Im#ptCwuCk;FFvFhweSHHLpK9jnRC<1tzC<`5%A$J_8)C{#yTCr z#tGMf;&ML+?h(l@S1t3IM49fCwM}qXzf4$W(XUBIU zBQRH6gdgw_Y{QcBlcdG-C4%a7kb+GTlm+-0#zsYB@-rGMzF|}>lQBr~jUF=dF;}Tb z6enV|%R^0`MRB}@hc`O+8{t)S29}z^33#nc!vtlZDt*R7fgPAALBAawqnh@}cKMcQ zW$-0R)kpLTvZ{9vbTs3Daf?(P5K>TBz&HlWuhCppJA35*n26-~QO_j?CzEUjj%Vp# zHV9ZFWCa0Awa_$PfP6bK)ujNpCLv7-@LeDn3gQ+?vaU0bzApHaw}V1$O5jz%|7;lk zb{8b86Wl3ZVv8s(-vkK^K(|$?6k2jHtMF>4C1~T#gC$gDPA?R$lG)|vL2(5X2jw6@ zha2EK1|o^)JI1Pl3;X24S`(lgm0+S|EWmI#!Oj)l-ZLsE%D^kD6`bx~816N+mS{Hp z_t)&h8^<>G!Vpdw;Y$GN9Vo^K{}npM={OVXsFv4W+7k$c{%pUpZA&{ZYq`Um53E=A zw)NY~zj2P-qk8VznZcN4;>iG9?;`CahjteH1*KX2ykyp^x8R^G{-mp)s8-PpFP zw!<#Ha?H#s%y?|=53Ard-k~4XzjhlZHRF`O`HJ1f83p*?dy#WB8{^%|W1zM#t^X7q zrP5S`lLq^L0h3$WVwy05XCca7nw5pU|Jsd}fzJPz8#DfK9h})lB~K8>Fuoo^7PPSt zm30hVzA$359fi7k9AlMI1@%|z__}V^0wNL_=tW8t z@a}{mPxWx+GfpL!0}RX$SF7ZtzkeNftD<)A?x3gv_a%BcLz=t{y@7leYDf^>kzn)T zN-C5NOt7ko`Z$WY8g>?zA<&Sg79B_xr;vb{&`g~HXP_0ALjl2viEjdk-DXs)ZnN-W z0YQo?JbnPtD}&oa2SpR|ED2?%Bsz1Gyba%jJPwWrr2)Yt2MP2s#KCNv5KyiS+mLd|`C`M@Rz zFDuBgYE^!Km&cUzIGB+bQ~VT)dJL6!)pcCQv)$KMn!fFnzt`^TmJ4&RQvIOsIj-%$ z_FQbMeaqIjeMl+sy!Vg8&;E;`=ZrU!4Y*pjfyrw^XFLdsRuIet%VO-egWxHo>(xpl z2;kq5Adqc1BiFD(3QtgN=*KutV*2|{C<>>1%e7mcUvFPE^WC=mKFlJfaRxyqV3L>v z7Y>N;x1lrq)^WbwEA#ChJbRVro5cUTE&Kq*1Y+t+lpyATIJ3-u4C3={TKG3ha&Kcw Tu8<(tX}5gGueF^u`#ta9aA~6Y diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_api.cpython-310.pyc deleted file mode 100644 index 0c6e969feb10beadf85b3ba153335f76289cb80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4615 zcmeGfO^@5gm82+&`toiZ*L6@IrVSFWinSCsD9{SF6E}7@L4b|n2ssETh!JNb(MxgY znc;f1;9hE9dT4(@Pj=Buj{P6~1-$muQ-L0O=*4|+NNHE=4ctr7LqcN6`FL;Myf^Pt zbh|AJoZI8@E~QORMJ}|Eopd`8=C&nQ+Zj%Z&F0VO)hW zN_8X>l1gzHG0w=&j3-=D4c*C-e39~mrV-gICxs+)ty47|3}%s@XOn&?76VZNX(3{@ z8r-b55wb_fyCe}$=#V`4`3JX3>Z3U)hg>QoEv7`n5J}y8_!(g$%oaS+Ln3+1sp2

o0xCVH z=)hpKO!)&Tg)F)-`ijO`ISg@=vri2MA45|=g%7vJHe8s)Y`CB%t1$6mb+TVf*9X?SCJ}i7=NmToPM}xUo@WCvLLMcM7bu>8mg&Kh70b(+{ znF^)`hdenP#L;AsF7;d_ANFs3Fi?@^H&YrO&>2^QgSGk&N@4>*AEZX40d)K6vhaf- zN+KNuKLNtZgO6`}cFR7#ycT_b1rpk@yn2vlw8GD!8NM0t%ADI)Zaub`8-X1DZ2!TA zYpm0M0M|3Fk!CQHB1&;_=m7_nAZnR} zb14#$De~!P^bl;~Nye2%+hlx7vsm}ZNEmoR6LY7y7yUNGU6LB3A}Ok!0SjQyJ0qF# zHTK=RcR^z$r;OYoDBKN(cQ&zl8)%X%I1`|i_=vgFD{UUnHB70bi&MH}0#0K{_z@4m zLf71#J$}4g6R5C*6g-2VEC@xSji-pFMQJjd$V;*Yq zG>YT(et4n_p9vmCXW%axV8D%J8YU6o;hh5QSy~6hWDQLBOvd`{c7J5y|PrUC0bhCfNeq|Juv%67UHq3Id#J zp=rF@^3BXthXUG~gft-_cY)hbP^n0g9i4%O^}wsYd8-|`zyxjuqQI_^Z*Rr2IwPI( zCWhpzTi^`$(Bxj<8RUR5q_Q4#tKj3{@-`J|_jSZ_b7inswpFR_8hBJ(1sg$i2r&8u zc%6Yr;^n?^aS%_gZx~2`DpP`@0{~Ci1jkZ%2T!S-DT7mf+Bn_az`cPk2z`|L0pc(J=SLhgT?aZu`T3&l$&mf2Rll{`RE$zIh0Y! z+BtDg>baZO4sH2k?Xp_#UbUXtzqRvv?&R)m>&e>)f5(cf6AxMg_VnT3gntYEZRVbI zz(>|!ctE9&RPrYCZbJq#vroFX@)&|3YvzsI&zpHCZ{=;)%DcJq!e?!O#($^!ciE+v zj+xnl8INuMehWPATl6m=jt%a=a~}7cLjC_8@P*cZ30viC(L&aabB=LDX{sTHf$RJ) zyjAJOXu=5MLYlZX#g(i4J_3|^z;`PGn9#Cw8V7bOwSq)|@tp{=`Q4Sq>|pT!)M(HB zDAc{vETvQ~`2J60M$avp>pV$z!7CTr=kperIT!Nf762Z9vI@MST43S(w9w^-q)R zKGcI+OtNX=-3vpW>T&y5oJuZ7;(#Z|UCh2!m3|M3+TMfFxOI9j62p;UT3&|UNWKkU zD1qFGV9Rkk6-oyt5mZHe8pT|VyDQfbXsE=BE)+xaph|nxx$Vqu#pO^ygg3cEP$t=` z*DSnPK;&12$B!U0WJOIyM@17V2?=eXBt}+Ko{X0ts|a_M8+4i2eYoxO#y6(2RYp`vz3WBCq{03InYP_B(Tkh06=YSgVLR*P*s{Az9M zltw9+HcG5ol~|FT%N`^K|Bs-lNAU5kxsL02w)^U8)3=@SedWGtxiAMS)eC(Op!`>! z>pAWUZvFRdABrZ#_x^eO{z!+6zSoiO!7NgmW{{l$C5e?> z;eeiAhtBx=8HFyZ#y*y9W!IFi7lH62RCvfqD|M;ko?cl$7{V8wwD512?B2z~QXxaG P(`osRU+XyA_7(3x)l?+Y diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/policy_v1_api.cpython-310.pyc deleted file mode 100644 index 926b78505b0b518dd8b36834898c7ac534db02e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110572 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_api.cpython-310.pyc deleted file mode 100644 index 0b28347da6c4d014860684b0b3eb8c38a671916a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4690 zcmeGgO^@5gm82+&(n{Wq;~Ea?0@DP6SH)V&HYm_6Y$tB)Zh`&Eq| zH}uR}J#I|>p+9X7o3^!UF^@H#Tdcub&uYUpR{O&0`tyIc2t1!(R7hHkiH0GPy8q}?!bF%&d7^iSJ;W^JIj+)?`lB^%m$ zW}Vo%om&CSd|`cS?{yuCVkufQje>9?R#)+OEPYt`){^J}|H=9XV#@oIEDEIvxzL2mss2@k8emVnDCGYpP-|MSL^V=y659x%f{^8P+`z5hHp!X$6 zHvqw%iZ_7iUOFrMAc&Gk2f^EL2<5@cw>`UM&wqB2MtTeA&<4oGgQ7q`{S2BB2Lll> z=Z=+Ik1gg#AfCV2f3!i-b^1>b#)NAmA55gk(u*7bT@rvul#GR(8goELpyVP91jff$ z$&>?+j7;ev2TLJpmV^gVBqCGflfmE-c+HcHD~;aE_?Tv~?va5o@PsBt)wmb^F2pU8 z8n+`UTB89AV9&b)neip|y?gh-kR+#!+$AXI6^1ugvAQd0k}Eh9pq2QDx!EnF0-kFp zrIJoh>5>tIl^w#5c?dqdh8p$+FPzH9~XFL?xfr)bK%eP}x z(;j(H>I*{vO1tz+B)?#*(ruulDF=!>r0Nib-UJlEn1DgRuONHm(=idrsp2kV1}Bqj z3JGGF2et@=3KRtaPPNc9UTk?eGu5Ghwk9D>2*_RFHWW-Ml4Mh7U}0S__sh511O+Cb z6^NEwM!wwz%j%4DN=@vLFSj8^?xM@RzB9-HvrOeZ7;Pc+f$~-jY3p^wa&u*{7rs@Q z?h<%VTn8UPa|kd$2B^+JB=Ky|L_WwkH&+}aK$9s!F#tdSZ9-rvyu+tdPL#nZUu!ts zS;4)9AqZoU|C0@S{`Q42Yz1K@kX-@9H=vn7_BZI5c{y9UwA;Jj#Tm{^X@>oGOCTr%6+|QeNJ8$J{td)0i z=Y`MK02;sT>f2#gUOHxG9cDbX@rQK?zHiXKf@D^>|G@>{bGG&WkHr@{23B`f+(l}*%0>(EZ zDE+q<7PEz;o)#>nal!k4nm)R2(Oi~HvI9}M*f?Lpz|6VqFV_KZ{^2eZ z_K;+=gdeAnDIujD^4U`%A+^bgxk-^*@2Xpn#23kLB|h$TYx517rg0RSDzyJtiDY$V zMyK)oowG1U3G1Df;XSxKYB9>jg?B#;d8&tNzu{DJIS_|DnG>wfl_}7BD+PKFs{dXj z`bBN`;b7Q0Rh7gHW#k~QLT@17gg0EF+>v0j;aVz`4osP-iuyQ;xf*sB(In7tlPfw% zC#Z@db#6PeTX8iMkpE3(5tJpk>NX267El+c!sEwKH?pFpqT`|o*AEG8swC!JbEg?z zgX;~T2W8L+Xvw&bRRvc5MGd6fy<+mZQPgn5Y#kg?xj1_ZVJkjrptPcPL}U3DkN_Sj zFi@@y+fdNU*<#eGC{~MWc=*NI`YDZ4E^8>UYE|Mj?p$plu^#vkn%ak#cf)mD$Ftp6 z*PFiWl)qQ*tCkCMuu}b??*Wwm%5y!(UBE5BzU{;93h}*v&9^VFPtGMQ*?^OD8+dI? z=#&RR(F%g8U|Ed)b`U&)OKY{#2m<)KAP8g|aO4KQkfAe7;>A;96(#ZF_fu#Jr+mw` zTb^HU-!SvtwtN?6k_wv@+!~0#?HP_#ZK=?7b0~D{7 n<9 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/rbac_authorization_v1_api.cpython-310.pyc deleted file mode 100644 index ca2eb0cf4da15451c09ca88b60b1b440a6466da4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294642 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_api.cpython-310.pyc deleted file mode 100644 index dbf8f96627a8f7a12abf43dfc3b1789b6a14ad5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4634 zcmeGfO^@5gm82+&`toiZ*RW9^rVRqGinSCsD9|iyCvLpm1OYaNBjg~YAV!>#L@&jm zXNK$5f_sU5>7o4rJ=sMsIre|_7x3CsPX&7Dp%?ePA*EfdH*hXN4he}N=i|M3^FHQ% zh;FxK!SfgU(Pa0EW&INeXCD^^A3;+O;lr$v#cbxp_S_jcHuh_AZB#RVcjUs~jq7u7 zXAfKl^p=m_+%1I%~OzTwb37fwT~@ zS`Kbi+X&es~8$=Rm{gO8x8U%`i4BO4UvFdG!qWHshKw?Rd9<~_GY zb=F`${5|G?8d^pB5mzFUAqN7-f876kxVuA!vq+IJrb-d$&`b;Rn)p#BEAbmKJmQl# za&G`12oSs`oJHD*xTG|vNk-#%(J$>FbbyoPgMDltLsQq_lLLd9B^%m$W}Vo%om&CS zd|`cK@An*u(kNOqje>9~O;_=FB7Io+#*%3G|2r7W#GDVNSrkeUa;>Am!Ee<7Y!48V z>8(^SH8|wS;UJF2gLI*1B6+`m`@MmRG{2S7@PJOa8XT+)cu*1>0Qx{yLJeThPZxzB z1W^*{AowMaRvvtO+p}Bt@s%^;?=OKu8vvFM@{M=#GiZi)2K+MTj+I-FE#^ibi@(`_ zwn3S7`fuQT$~96Arcz|-MMjR-4uD9MOoW_MbI-uoDY*y(f$=dWG3OuzM&|T@gIN%@ zNWz&EiO3ZBWH@{XH{(ghmBt&&_=IM$?vtS~@PsBtuecZeHpFd`nyW=pG(7_rz@B%9 zGUF@kd-v{v)ksbmxl2&IYYcC#WA)b1Kr3)2Kr8VPbE{Y0d_31qN+q42(j{YX9Xo^{ z@euCmio3JNj~6Qf6?TwE3|Jc`c1Ycjw9jbs`oC{4n>I?5XO1r#- zNPfvyrQ1M9a}E@DNYx<0}JbcZ-4VvTcE%Mv;whU+sL=KWLce& zPN|6<^5t!ChMgGq= z?c?ibUDq1in*X{4@NYpg{_7vmF+SUwS|_!<_QIY*F7a3UrEOci>AaZl>Go7WC)`3vo`TJB!8p4ng9c|CV>_m1`CZG^vTMb?Q2tpR)b@NdGu1^+g4 zPdeZw>n}W@Qb#IzlX-U_6Pem4U0it#!H_lcM(*d$ypy-`Hf!bG+wkxxORDkiV2(tR^rNwMv`2WOM z&x0t`z0*9UG%omluTi7t7R^vRk3ZalS zsdgXgLM_JGr10*CAy4(F{X0%2mqT&DljEzHgR4~%-iN%tABjOx+uI$ETBiz<7?%w9 z@-p;>@@@D+P2`RRTa4PNP&zO@9??_^5%ZirOKK<#iwdJW^nwTpM*DdzXvls9RC2 z7Tb9E<=Vz6jZ!XclvuSYu|PYQNJz{AK7^(o!NbLkSG@lN(VQ$x diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_v1alpha2_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/resource_v1alpha2_api.cpython-310.pyc deleted file mode 100644 index 5aa5f3bbe8dad93645a766cd4ba9438130d6cf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354339 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/scheduling_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/scheduling_api.cpython-310.pyc deleted file mode 100644 index bd841dfde4c93a220f9fad76f8f967337a88593f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4646 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 RW~Qp8>ex)_K=DZB{{!0GG2#FK diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_api.cpython-310.pyc deleted file mode 100644 index 49f5137d69a33dbc0baf52271e9133e270d83b67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4628 zcmeGfO^@5gm82+&(n{Wq?HCT~!?Z!*Rk4=h1_j!M?Zma+O%PyX*g_6M0%F7&N!+D4 z^vrO*T5vD5FFmwBpeMWNCCC1c{sLZm>Zw2vJ@n$fH>9N1dIR@T^pKJmaz5UhH}B2+ z6rE1Xg69wRlktPAmi1R0oPAsvdghd93l$Vh!GUQ5$Zs+Ec6RpZv2$;Q2BeahY(wM5|T=B6fw@o_Jk)~QVreFoP3q?gr*VMD<_2{Q>|0A+wV^zJ;cCkrEO2nDwK{QK+)cY{kyq`u7;s~g8 zouUnc!93-Uq!hB~!02llXXP-&P0l_w7<>jz{S-dj8rpDS4zuBcnykj$mo{8cop~>< zVVyOY4}Xt2a1E`Z^;8QS8|LdSX6*JzSWKk$Z$hD68hrdvLP(46Q zCbv?-RR4%4NBuY&_0zeYisX~t?T`B^()?CR!$T07>K`ukw_g(L1A1STG7X^LOXr0j z1W^*{AovMTRvvtO+p}Bt$(5DxdkdJ*hV{jRT%#d=3C(cMfLrF=v2yFcVr~SI_>=v6 z8*Z{r{|83z$CGNXqal!B;v z5>BN^M5f5+gTZ4ki)R^E8qJgOG0kG#BLiXJ2~Etc;$HOo5O+vw?24qQcm^zhJ?{== z#+TUl?%e~Ok(@Gem!Ndl7~WpT>aL+luHa07R^lV(cDFQpJlAeYC7rG4k`efgUBZuf z2u8Z(?(Fg7`I10|9i-qK1Z6=e5^bDCG$y~MvEn;M)iW7`Hht1Vfj!|W6^Y_Rj1G9H z$@3_Vm;2#~E__CK6rF*~WPkxTl4+Qr3{~!L=w;Ujgy0ra%0Uv0#un26deHg$|g9L!aICU=z`D}`R{Mp zC)dw-t~IbV_jL)t--Bk{*I%Gx9JVvDPHTDXl|6wx;*a)g+qSgxs+K#<`M`Q@KeWER z{Ec(!p4M|WuN~R)$J%AJ+`VSKuzzFc_1wwbJJz!+2!Gd#tWytK1NQXc--Le){u|6a zZG)4nzw&@e9jW9^=G}oTWMZFoaOD63A#3K1+|QeNJ8$J1td)0i=atVk02=@8>fd3P zUOQ%H6J|WN^}9`Qx$n_GgFM!_|G~N3a~k!(_rMpL114>iw?z|Kdd?{Z5~ZnzAO^nk zKX6y2AEOB)hzqIW(iRuK^8X>AOay*dA;83z?NuPysniNG0mio@$mn+#8ncbj|8t`~ z52H|bS7}PAT=4y`292&;G?$5z?0{D;w$3LmFmo>E%S`}0`E(C5cL=Rn!jDskj}XWX z`TV(%5YXhr6iDReN9rbo?nTI3^N;)8+Q}A8(>MxE?%6+3B3YlA(^-7-;aQlYg!NW= zb`NSoEk@b6@a~5pPxWx)SDZ>N2jY+?C+}kd4tac;f%hP%??s|t)b<_?hOO28NDNDc zd3hOn19=6$P!72x!REt_R45&oj8GNzaTIek>?~YJprI-&I#3r)gDU?~=e9Gu6_-N+ zq244BL78o3Bel3O1W z2u$*e8i=-g$%JroJHsurb#O%G;_NMit@x2GH*|uo_F~j0Zu{3WAwnS&aR5 z5Ilndv|4Ed0Tlc}AlrZ=xA22(oM8=%NQr5Z#Cq;W&=gMjmTR{>zuvxX=DThA5zHc` zaRzxBP?A{F6%Huu4d@JSoYCyEg6v@dS9VP)dl3jfM$L!pw9=P4?&+14gdu#f8I_;M4__emPWncCF4W+p$kpKVy diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1_api.cpython-310.pyc deleted file mode 100644 index 5df1e8bbc43d839a812ef8e223a41c1723fd18bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355681 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 oA07 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1alpha1_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/storage_v1alpha1_api.cpython-310.pyc deleted file mode 100644 index 2efd99d971850344f8869e19850718df733a7a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72527 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

SFS9=f(D$8i{MfW5iAbBp#*= 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/version_api.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/api/__pycache__/version_api.cpython-310.pyc deleted file mode 100644 index d079dd3e2d5976cc9f9e580885335f05bb20fbdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4503 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 TWeD=UPCN9%M#o!qKM4K}Y9Pf7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_api.py deleted file mode 100644 index d1e03b1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AdmissionregistrationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1_api.py deleted file mode 100644 index bd78388..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1_api.py +++ /dev/null @@ -1,2196 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AdmissionregistrationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_mutating_webhook_configuration(self, body, **kwargs): # noqa: E501 - """create_mutating_webhook_configuration # noqa: E501 - - create a MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_mutating_webhook_configuration(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1MutatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1MutatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_mutating_webhook_configuration_with_http_info(body, **kwargs) # noqa: E501 - - def create_mutating_webhook_configuration_with_http_info(self, body, **kwargs): # noqa: E501 - """create_mutating_webhook_configuration # noqa: E501 - - create a MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_mutating_webhook_configuration_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1MutatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1MutatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_mutating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1MutatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_validating_webhook_configuration(self, body, **kwargs): # noqa: E501 - """create_validating_webhook_configuration # noqa: E501 - - create a ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_webhook_configuration(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ValidatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ValidatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_validating_webhook_configuration_with_http_info(body, **kwargs) # noqa: E501 - - def create_validating_webhook_configuration_with_http_info(self, body, **kwargs): # noqa: E501 - """create_validating_webhook_configuration # noqa: E501 - - create a ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_webhook_configuration_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ValidatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ValidatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_validating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ValidatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_mutating_webhook_configuration(self, **kwargs): # noqa: E501 - """delete_collection_mutating_webhook_configuration # noqa: E501 - - delete collection of MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_mutating_webhook_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_mutating_webhook_configuration_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_mutating_webhook_configuration_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_mutating_webhook_configuration # noqa: E501 - - delete collection of MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_mutating_webhook_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_validating_webhook_configuration(self, **kwargs): # noqa: E501 - """delete_collection_validating_webhook_configuration # noqa: E501 - - delete collection of ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_webhook_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_validating_webhook_configuration_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_validating_webhook_configuration_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_validating_webhook_configuration # noqa: E501 - - delete collection of ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_webhook_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_mutating_webhook_configuration(self, name, **kwargs): # noqa: E501 - """delete_mutating_webhook_configuration # noqa: E501 - - delete a MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_mutating_webhook_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_mutating_webhook_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def delete_mutating_webhook_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_mutating_webhook_configuration # noqa: E501 - - delete a MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_mutating_webhook_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_mutating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_validating_webhook_configuration(self, name, **kwargs): # noqa: E501 - """delete_validating_webhook_configuration # noqa: E501 - - delete a ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_webhook_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_validating_webhook_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def delete_validating_webhook_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_validating_webhook_configuration # noqa: E501 - - delete a ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_webhook_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_validating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_mutating_webhook_configuration(self, **kwargs): # noqa: E501 - """list_mutating_webhook_configuration # noqa: E501 - - list or watch objects of kind MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_mutating_webhook_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1MutatingWebhookConfigurationList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_mutating_webhook_configuration_with_http_info(**kwargs) # noqa: E501 - - def list_mutating_webhook_configuration_with_http_info(self, **kwargs): # noqa: E501 - """list_mutating_webhook_configuration # noqa: E501 - - list or watch objects of kind MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_mutating_webhook_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1MutatingWebhookConfigurationList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1MutatingWebhookConfigurationList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_validating_webhook_configuration(self, **kwargs): # noqa: E501 - """list_validating_webhook_configuration # noqa: E501 - - list or watch objects of kind ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_webhook_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ValidatingWebhookConfigurationList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_validating_webhook_configuration_with_http_info(**kwargs) # noqa: E501 - - def list_validating_webhook_configuration_with_http_info(self, **kwargs): # noqa: E501 - """list_validating_webhook_configuration # noqa: E501 - - list or watch objects of kind ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_webhook_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ValidatingWebhookConfigurationList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ValidatingWebhookConfigurationList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_mutating_webhook_configuration(self, name, body, **kwargs): # noqa: E501 - """patch_mutating_webhook_configuration # noqa: E501 - - partially update the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_mutating_webhook_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1MutatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_mutating_webhook_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_mutating_webhook_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_mutating_webhook_configuration # noqa: E501 - - partially update the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_mutating_webhook_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1MutatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_mutating_webhook_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_mutating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1MutatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_webhook_configuration(self, name, body, **kwargs): # noqa: E501 - """patch_validating_webhook_configuration # noqa: E501 - - partially update the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_webhook_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ValidatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_webhook_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_webhook_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_webhook_configuration # noqa: E501 - - partially update the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_webhook_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ValidatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_webhook_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ValidatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_mutating_webhook_configuration(self, name, **kwargs): # noqa: E501 - """read_mutating_webhook_configuration # noqa: E501 - - read the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_mutating_webhook_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1MutatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_mutating_webhook_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def read_mutating_webhook_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """read_mutating_webhook_configuration # noqa: E501 - - read the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_mutating_webhook_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1MutatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_mutating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1MutatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_webhook_configuration(self, name, **kwargs): # noqa: E501 - """read_validating_webhook_configuration # noqa: E501 - - read the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_webhook_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ValidatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_webhook_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_webhook_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_webhook_configuration # noqa: E501 - - read the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_webhook_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ValidatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ValidatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_mutating_webhook_configuration(self, name, body, **kwargs): # noqa: E501 - """replace_mutating_webhook_configuration # noqa: E501 - - replace the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_mutating_webhook_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param V1MutatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1MutatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_mutating_webhook_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_mutating_webhook_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_mutating_webhook_configuration # noqa: E501 - - replace the specified MutatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_mutating_webhook_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the MutatingWebhookConfiguration (required) - :param V1MutatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1MutatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_mutating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_mutating_webhook_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_mutating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1MutatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_webhook_configuration(self, name, body, **kwargs): # noqa: E501 - """replace_validating_webhook_configuration # noqa: E501 - - replace the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_webhook_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param V1ValidatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ValidatingWebhookConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_webhook_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_webhook_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_webhook_configuration # noqa: E501 - - replace the specified ValidatingWebhookConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_webhook_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingWebhookConfiguration (required) - :param V1ValidatingWebhookConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ValidatingWebhookConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_webhook_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_webhook_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_webhook_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ValidatingWebhookConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1alpha1_api.py deleted file mode 100644 index b7f5a82..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1alpha1_api.py +++ /dev/null @@ -1,2610 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AdmissionregistrationV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_validating_admission_policy(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy # noqa: E501 - - create a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_validating_admission_policy_with_http_info(body, **kwargs) # noqa: E501 - - def create_validating_admission_policy_with_http_info(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy # noqa: E501 - - create a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_validating_admission_policy_binding(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy_binding # noqa: E501 - - create a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_binding(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_validating_admission_policy_binding_with_http_info(body, **kwargs) # noqa: E501 - - def create_validating_admission_policy_binding_with_http_info(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy_binding # noqa: E501 - - create a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_binding_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_validating_admission_policy(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy # noqa: E501 - - delete collection of ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_validating_admission_policy_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_validating_admission_policy_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy # noqa: E501 - - delete collection of ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_validating_admission_policy_binding(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy_binding # noqa: E501 - - delete collection of ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_validating_admission_policy_binding_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_validating_admission_policy_binding_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy_binding # noqa: E501 - - delete collection of ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_validating_admission_policy(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy # noqa: E501 - - delete a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_validating_admission_policy_with_http_info(name, **kwargs) # noqa: E501 - - def delete_validating_admission_policy_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy # noqa: E501 - - delete a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_validating_admission_policy_binding(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy_binding # noqa: E501 - - delete a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_validating_admission_policy_binding_with_http_info(name, **kwargs) # noqa: E501 - - def delete_validating_admission_policy_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy_binding # noqa: E501 - - delete a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_validating_admission_policy(self, **kwargs): # noqa: E501 - """list_validating_admission_policy # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_validating_admission_policy_with_http_info(**kwargs) # noqa: E501 - - def list_validating_admission_policy_with_http_info(self, **kwargs): # noqa: E501 - """list_validating_admission_policy # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_validating_admission_policy_binding(self, **kwargs): # noqa: E501 - """list_validating_admission_policy_binding # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyBindingList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_validating_admission_policy_binding_with_http_info(**kwargs) # noqa: E501 - - def list_validating_admission_policy_binding_with_http_info(self, **kwargs): # noqa: E501 - """list_validating_admission_policy_binding # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyBindingList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyBindingList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy # noqa: E501 - - partially update the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy # noqa: E501 - - partially update the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy_binding(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_binding # noqa: E501 - - partially update the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_binding # noqa: E501 - - partially update the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy_status(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_status # noqa: E501 - - partially update status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_status # noqa: E501 - - partially update status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy # noqa: E501 - - read the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy # noqa: E501 - - read the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy_binding(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_binding # noqa: E501 - - read the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_binding_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_binding # noqa: E501 - - read the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy_status(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_status # noqa: E501 - - read status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_status # noqa: E501 - - read status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy # noqa: E501 - - replace the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy # noqa: E501 - - replace the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy_binding(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_binding # noqa: E501 - - replace the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param V1alpha1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_binding # noqa: E501 - - replace the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param V1alpha1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy_status(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_status # noqa: E501 - - replace status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_status # noqa: E501 - - replace status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1alpha1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1beta1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1beta1_api.py deleted file mode 100644 index 3515694..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/admissionregistration_v1beta1_api.py +++ /dev/null @@ -1,2610 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AdmissionregistrationV1beta1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_validating_admission_policy(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy # noqa: E501 - - create a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_validating_admission_policy_with_http_info(body, **kwargs) # noqa: E501 - - def create_validating_admission_policy_with_http_info(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy # noqa: E501 - - create a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_validating_admission_policy_binding(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy_binding # noqa: E501 - - create a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_binding(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_validating_admission_policy_binding_with_http_info(body, **kwargs) # noqa: E501 - - def create_validating_admission_policy_binding_with_http_info(self, body, **kwargs): # noqa: E501 - """create_validating_admission_policy_binding # noqa: E501 - - create a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_validating_admission_policy_binding_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_validating_admission_policy(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy # noqa: E501 - - delete collection of ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_validating_admission_policy_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_validating_admission_policy_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy # noqa: E501 - - delete collection of ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_validating_admission_policy_binding(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy_binding # noqa: E501 - - delete collection of ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_validating_admission_policy_binding_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_validating_admission_policy_binding_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_validating_admission_policy_binding # noqa: E501 - - delete collection of ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_validating_admission_policy_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_validating_admission_policy(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy # noqa: E501 - - delete a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_validating_admission_policy_with_http_info(name, **kwargs) # noqa: E501 - - def delete_validating_admission_policy_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy # noqa: E501 - - delete a ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_validating_admission_policy_binding(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy_binding # noqa: E501 - - delete a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_validating_admission_policy_binding_with_http_info(name, **kwargs) # noqa: E501 - - def delete_validating_admission_policy_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_validating_admission_policy_binding # noqa: E501 - - delete a ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_validating_admission_policy_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_validating_admission_policy(self, **kwargs): # noqa: E501 - """list_validating_admission_policy # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_validating_admission_policy_with_http_info(**kwargs) # noqa: E501 - - def list_validating_admission_policy_with_http_info(self, **kwargs): # noqa: E501 - """list_validating_admission_policy # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_validating_admission_policy_binding(self, **kwargs): # noqa: E501 - """list_validating_admission_policy_binding # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyBindingList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_validating_admission_policy_binding_with_http_info(**kwargs) # noqa: E501 - - def list_validating_admission_policy_binding_with_http_info(self, **kwargs): # noqa: E501 - """list_validating_admission_policy_binding # noqa: E501 - - list or watch objects of kind ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_validating_admission_policy_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyBindingList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyBindingList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy # noqa: E501 - - partially update the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy # noqa: E501 - - partially update the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy_binding(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_binding # noqa: E501 - - partially update the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_binding # noqa: E501 - - partially update the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_validating_admission_policy_status(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_status # noqa: E501 - - partially update status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_validating_admission_policy_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_validating_admission_policy_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_validating_admission_policy_status # noqa: E501 - - partially update status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_validating_admission_policy_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_validating_admission_policy_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy # noqa: E501 - - read the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy # noqa: E501 - - read the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy_binding(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_binding # noqa: E501 - - read the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_binding_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_binding # noqa: E501 - - read the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_validating_admission_policy_status(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_status # noqa: E501 - - read status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_validating_admission_policy_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_validating_admission_policy_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_validating_admission_policy_status # noqa: E501 - - read status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_validating_admission_policy_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy # noqa: E501 - - replace the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy # noqa: E501 - - replace the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy_binding(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_binding # noqa: E501 - - replace the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param V1beta1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicyBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_binding # noqa: E501 - - replace the specified ValidatingAdmissionPolicyBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicyBinding (required) - :param V1beta1ValidatingAdmissionPolicyBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicyBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicyBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_validating_admission_policy_status(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_status # noqa: E501 - - replace status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1ValidatingAdmissionPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_validating_admission_policy_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_validating_admission_policy_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_validating_admission_policy_status # noqa: E501 - - replace status of the specified ValidatingAdmissionPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_validating_admission_policy_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ValidatingAdmissionPolicy (required) - :param V1beta1ValidatingAdmissionPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1ValidatingAdmissionPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_validating_admission_policy_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_validating_admission_policy_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_validating_admission_policy_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1ValidatingAdmissionPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_api.py deleted file mode 100644 index 7c3d0fe..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ApiextensionsApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_v1_api.py deleted file mode 100644 index c7e143d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiextensions_v1_api.py +++ /dev/null @@ -1,1583 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ApiextensionsV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_custom_resource_definition(self, body, **kwargs): # noqa: E501 - """create_custom_resource_definition # noqa: E501 - - create a CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_custom_resource_definition(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_custom_resource_definition_with_http_info(body, **kwargs) # noqa: E501 - - def create_custom_resource_definition_with_http_info(self, body, **kwargs): # noqa: E501 - """create_custom_resource_definition # noqa: E501 - - create a CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_custom_resource_definition_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_custom_resource_definition`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_custom_resource_definition(self, **kwargs): # noqa: E501 - """delete_collection_custom_resource_definition # noqa: E501 - - delete collection of CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_custom_resource_definition(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_custom_resource_definition_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_custom_resource_definition_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_custom_resource_definition # noqa: E501 - - delete collection of CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_custom_resource_definition_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_custom_resource_definition(self, name, **kwargs): # noqa: E501 - """delete_custom_resource_definition # noqa: E501 - - delete a CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_custom_resource_definition(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_custom_resource_definition_with_http_info(name, **kwargs) # noqa: E501 - - def delete_custom_resource_definition_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_custom_resource_definition # noqa: E501 - - delete a CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_custom_resource_definition_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_custom_resource_definition`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_custom_resource_definition(self, **kwargs): # noqa: E501 - """list_custom_resource_definition # noqa: E501 - - list or watch objects of kind CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_custom_resource_definition(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinitionList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_custom_resource_definition_with_http_info(**kwargs) # noqa: E501 - - def list_custom_resource_definition_with_http_info(self, **kwargs): # noqa: E501 - """list_custom_resource_definition # noqa: E501 - - list or watch objects of kind CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_custom_resource_definition_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinitionList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinitionList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_custom_resource_definition(self, name, body, **kwargs): # noqa: E501 - """patch_custom_resource_definition # noqa: E501 - - partially update the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_custom_resource_definition(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_custom_resource_definition_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_custom_resource_definition_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_custom_resource_definition # noqa: E501 - - partially update the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_custom_resource_definition_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_custom_resource_definition`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_custom_resource_definition`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_custom_resource_definition_status(self, name, body, **kwargs): # noqa: E501 - """patch_custom_resource_definition_status # noqa: E501 - - partially update status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_custom_resource_definition_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_custom_resource_definition_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_custom_resource_definition_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_custom_resource_definition_status # noqa: E501 - - partially update status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_custom_resource_definition_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_custom_resource_definition_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_custom_resource_definition_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_custom_resource_definition_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_custom_resource_definition(self, name, **kwargs): # noqa: E501 - """read_custom_resource_definition # noqa: E501 - - read the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_custom_resource_definition(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_custom_resource_definition_with_http_info(name, **kwargs) # noqa: E501 - - def read_custom_resource_definition_with_http_info(self, name, **kwargs): # noqa: E501 - """read_custom_resource_definition # noqa: E501 - - read the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_custom_resource_definition_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_custom_resource_definition`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_custom_resource_definition_status(self, name, **kwargs): # noqa: E501 - """read_custom_resource_definition_status # noqa: E501 - - read status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_custom_resource_definition_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_custom_resource_definition_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_custom_resource_definition_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_custom_resource_definition_status # noqa: E501 - - read status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_custom_resource_definition_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_custom_resource_definition_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_custom_resource_definition_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_custom_resource_definition(self, name, body, **kwargs): # noqa: E501 - """replace_custom_resource_definition # noqa: E501 - - replace the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_custom_resource_definition(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_custom_resource_definition_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_custom_resource_definition_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_custom_resource_definition # noqa: E501 - - replace the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_custom_resource_definition_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_custom_resource_definition" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_custom_resource_definition`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_custom_resource_definition`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_custom_resource_definition_status(self, name, body, **kwargs): # noqa: E501 - """replace_custom_resource_definition_status # noqa: E501 - - replace status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_custom_resource_definition_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CustomResourceDefinition - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_custom_resource_definition_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_custom_resource_definition_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_custom_resource_definition_status # noqa: E501 - - replace status of the specified CustomResourceDefinition # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_custom_resource_definition_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CustomResourceDefinition (required) - :param V1CustomResourceDefinition body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CustomResourceDefinition, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_custom_resource_definition_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_custom_resource_definition_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_custom_resource_definition_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CustomResourceDefinition', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_api.py deleted file mode 100644 index 6da75af..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ApiregistrationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_v1_api.py deleted file mode 100644 index 6115600..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apiregistration_v1_api.py +++ /dev/null @@ -1,1583 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ApiregistrationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_api_service(self, body, **kwargs): # noqa: E501 - """create_api_service # noqa: E501 - - create an APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_api_service(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_api_service_with_http_info(body, **kwargs) # noqa: E501 - - def create_api_service_with_http_info(self, body, **kwargs): # noqa: E501 - """create_api_service # noqa: E501 - - create an APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_api_service_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_api_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_api_service(self, name, **kwargs): # noqa: E501 - """delete_api_service # noqa: E501 - - delete an APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_api_service(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_api_service_with_http_info(name, **kwargs) # noqa: E501 - - def delete_api_service_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_api_service # noqa: E501 - - delete an APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_api_service_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_api_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_api_service(self, **kwargs): # noqa: E501 - """delete_collection_api_service # noqa: E501 - - delete collection of APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_api_service(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_api_service_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_api_service_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_api_service # noqa: E501 - - delete collection of APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_api_service_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_api_service(self, **kwargs): # noqa: E501 - """list_api_service # noqa: E501 - - list or watch objects of kind APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_api_service(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIServiceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_api_service_with_http_info(**kwargs) # noqa: E501 - - def list_api_service_with_http_info(self, **kwargs): # noqa: E501 - """list_api_service # noqa: E501 - - list or watch objects of kind APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_api_service_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIServiceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIServiceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_api_service(self, name, body, **kwargs): # noqa: E501 - """patch_api_service # noqa: E501 - - partially update the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_api_service(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_api_service_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_api_service_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_api_service # noqa: E501 - - partially update the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_api_service_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_api_service`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_api_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_api_service_status(self, name, body, **kwargs): # noqa: E501 - """patch_api_service_status # noqa: E501 - - partially update status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_api_service_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_api_service_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_api_service_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_api_service_status # noqa: E501 - - partially update status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_api_service_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_api_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_api_service_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_api_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_api_service(self, name, **kwargs): # noqa: E501 - """read_api_service # noqa: E501 - - read the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_api_service(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_api_service_with_http_info(name, **kwargs) # noqa: E501 - - def read_api_service_with_http_info(self, name, **kwargs): # noqa: E501 - """read_api_service # noqa: E501 - - read the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_api_service_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_api_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_api_service_status(self, name, **kwargs): # noqa: E501 - """read_api_service_status # noqa: E501 - - read status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_api_service_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_api_service_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_api_service_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_api_service_status # noqa: E501 - - read status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_api_service_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_api_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_api_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_api_service(self, name, body, **kwargs): # noqa: E501 - """replace_api_service # noqa: E501 - - replace the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_api_service(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_api_service_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_api_service_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_api_service # noqa: E501 - - replace the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_api_service_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_api_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_api_service`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_api_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_api_service_status(self, name, body, **kwargs): # noqa: E501 - """replace_api_service_status # noqa: E501 - - replace status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_api_service_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIService - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_api_service_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_api_service_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_api_service_status # noqa: E501 - - replace status of the specified APIService # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_api_service_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the APIService (required) - :param V1APIService body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIService, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_api_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_api_service_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_api_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apiregistration.k8s.io/v1/apiservices/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIService', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apis_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apis_api.py deleted file mode 100644 index 9faecca..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apis_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ApisApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_versions(self, **kwargs): # noqa: E501 - """get_api_versions # noqa: E501 - - get available API versions # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_versions(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroupList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_versions_with_http_info(**kwargs) # noqa: E501 - - def get_api_versions_with_http_info(self, **kwargs): # noqa: E501 - """get_api_versions # noqa: E501 - - get available API versions # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_versions_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroupList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_versions" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroupList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_api.py deleted file mode 100644 index 4709241..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AppsApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_v1_api.py deleted file mode 100644 index f7c095f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/apps_v1_api.py +++ /dev/null @@ -1,9479 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AppsV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_controller_revision(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_controller_revision # noqa: E501 - - create a ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_controller_revision(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ControllerRevision body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevision - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_controller_revision_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_controller_revision_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_controller_revision # noqa: E501 - - create a ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_controller_revision_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ControllerRevision body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevision, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevision', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_daemon_set(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_daemon_set # noqa: E501 - - create a DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_daemon_set(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_daemon_set_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_daemon_set_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_daemon_set # noqa: E501 - - create a DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_daemon_set_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_deployment(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_deployment # noqa: E501 - - create a Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_deployment(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_deployment_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_deployment_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_deployment # noqa: E501 - - create a Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_deployment_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_replica_set(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_replica_set # noqa: E501 - - create a ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_replica_set(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_replica_set_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_replica_set_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_replica_set # noqa: E501 - - create a ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_replica_set_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_stateful_set(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_stateful_set # noqa: E501 - - create a StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_stateful_set(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_stateful_set_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_stateful_set_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_stateful_set # noqa: E501 - - create a StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_stateful_set_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_controller_revision(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_controller_revision # noqa: E501 - - delete collection of ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_controller_revision(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_controller_revision_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_controller_revision_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_controller_revision # noqa: E501 - - delete collection of ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_controller_revision_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_daemon_set(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_daemon_set # noqa: E501 - - delete collection of DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_daemon_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_daemon_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_daemon_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_daemon_set # noqa: E501 - - delete collection of DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_daemon_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_deployment(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_deployment # noqa: E501 - - delete collection of Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_deployment(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_deployment_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_deployment_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_deployment # noqa: E501 - - delete collection of Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_deployment_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_replica_set(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_replica_set # noqa: E501 - - delete collection of ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_replica_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_replica_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_replica_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_replica_set # noqa: E501 - - delete collection of ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_replica_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_stateful_set(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_stateful_set # noqa: E501 - - delete collection of StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_stateful_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_stateful_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_stateful_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_stateful_set # noqa: E501 - - delete collection of StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_stateful_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_controller_revision(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_controller_revision # noqa: E501 - - delete a ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_controller_revision(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_controller_revision_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_controller_revision_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_controller_revision # noqa: E501 - - delete a ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_controller_revision_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_daemon_set(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_daemon_set # noqa: E501 - - delete a DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_daemon_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_daemon_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_daemon_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_daemon_set # noqa: E501 - - delete a DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_daemon_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_deployment(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_deployment # noqa: E501 - - delete a Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_deployment(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_deployment_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_deployment_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_deployment # noqa: E501 - - delete a Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_deployment_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_replica_set(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_replica_set # noqa: E501 - - delete a ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_replica_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_replica_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_replica_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_replica_set # noqa: E501 - - delete a ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_replica_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_stateful_set(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_stateful_set # noqa: E501 - - delete a StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_stateful_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_stateful_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_stateful_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_stateful_set # noqa: E501 - - delete a StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_stateful_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_controller_revision_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_controller_revision_for_all_namespaces # noqa: E501 - - list or watch objects of kind ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_controller_revision_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevisionList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_controller_revision_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_controller_revision_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_controller_revision_for_all_namespaces # noqa: E501 - - list or watch objects of kind ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_controller_revision_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevisionList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_controller_revision_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/controllerrevisions', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevisionList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_daemon_set_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_daemon_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_daemon_set_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_daemon_set_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_daemon_set_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_daemon_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_daemon_set_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_daemon_set_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/daemonsets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_deployment_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_deployment_for_all_namespaces # noqa: E501 - - list or watch objects of kind Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_deployment_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DeploymentList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_deployment_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_deployment_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_deployment_for_all_namespaces # noqa: E501 - - list or watch objects of kind Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_deployment_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DeploymentList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_deployment_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/deployments', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DeploymentList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_controller_revision(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_controller_revision # noqa: E501 - - list or watch objects of kind ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_controller_revision(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevisionList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_controller_revision_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_controller_revision_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_controller_revision # noqa: E501 - - list or watch objects of kind ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_controller_revision_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevisionList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevisionList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_daemon_set(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_daemon_set # noqa: E501 - - list or watch objects of kind DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_daemon_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_daemon_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_daemon_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_daemon_set # noqa: E501 - - list or watch objects of kind DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_daemon_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_deployment(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_deployment # noqa: E501 - - list or watch objects of kind Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_deployment(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DeploymentList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_deployment_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_deployment_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_deployment # noqa: E501 - - list or watch objects of kind Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_deployment_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DeploymentList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DeploymentList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_replica_set(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_replica_set # noqa: E501 - - list or watch objects of kind ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_replica_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_replica_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_replica_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_replica_set # noqa: E501 - - list or watch objects of kind ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_replica_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_stateful_set(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_stateful_set # noqa: E501 - - list or watch objects of kind StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_stateful_set(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_stateful_set_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_stateful_set_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_stateful_set # noqa: E501 - - list or watch objects of kind StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_stateful_set_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_replica_set_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_replica_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_replica_set_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_replica_set_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_replica_set_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_replica_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_replica_set_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_replica_set_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/replicasets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_stateful_set_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_stateful_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_stateful_set_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_stateful_set_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_stateful_set_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_stateful_set_for_all_namespaces # noqa: E501 - - list or watch objects of kind StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_stateful_set_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_stateful_set_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/statefulsets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_controller_revision(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_controller_revision # noqa: E501 - - partially update the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_controller_revision(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevision - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_controller_revision_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_controller_revision_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_controller_revision # noqa: E501 - - partially update the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_controller_revision_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevision, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevision', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_daemon_set(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_daemon_set # noqa: E501 - - partially update the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_daemon_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_daemon_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_daemon_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_daemon_set # noqa: E501 - - partially update the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_daemon_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_daemon_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_daemon_set_status # noqa: E501 - - partially update status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_daemon_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_daemon_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_daemon_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_daemon_set_status # noqa: E501 - - partially update status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_daemon_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_daemon_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_daemon_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_daemon_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_daemon_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_deployment(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment # noqa: E501 - - partially update the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_deployment_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_deployment_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment # noqa: E501 - - partially update the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_deployment_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment_scale # noqa: E501 - - partially update scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_deployment_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_deployment_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment_scale # noqa: E501 - - partially update scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_deployment_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_deployment_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_deployment_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_deployment_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_deployment_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment_status # noqa: E501 - - partially update status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_deployment_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_deployment_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_deployment_status # noqa: E501 - - partially update status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_deployment_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_deployment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_deployment_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_deployment_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_deployment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replica_set(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set # noqa: E501 - - partially update the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replica_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replica_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set # noqa: E501 - - partially update the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replica_set_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set_scale # noqa: E501 - - partially update scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replica_set_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replica_set_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set_scale # noqa: E501 - - partially update scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replica_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replica_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replica_set_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replica_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replica_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set_status # noqa: E501 - - partially update status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replica_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replica_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replica_set_status # noqa: E501 - - partially update status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replica_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replica_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replica_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replica_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replica_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_stateful_set(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set # noqa: E501 - - partially update the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_stateful_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_stateful_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set # noqa: E501 - - partially update the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_stateful_set_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set_scale # noqa: E501 - - partially update scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_stateful_set_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_stateful_set_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set_scale # noqa: E501 - - partially update scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_stateful_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_stateful_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_stateful_set_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_stateful_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_stateful_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set_status # noqa: E501 - - partially update status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_stateful_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_stateful_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_stateful_set_status # noqa: E501 - - partially update status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_stateful_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_stateful_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_stateful_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_stateful_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_stateful_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_controller_revision(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_controller_revision # noqa: E501 - - read the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_controller_revision(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevision - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_controller_revision_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_controller_revision_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_controller_revision # noqa: E501 - - read the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_controller_revision_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevision, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevision', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_daemon_set(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_daemon_set # noqa: E501 - - read the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_daemon_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_daemon_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_daemon_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_daemon_set # noqa: E501 - - read the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_daemon_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_daemon_set_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_daemon_set_status # noqa: E501 - - read status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_daemon_set_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_daemon_set_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_daemon_set_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_daemon_set_status # noqa: E501 - - read status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_daemon_set_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_daemon_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_daemon_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_daemon_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_deployment(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment # noqa: E501 - - read the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_deployment_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_deployment_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment # noqa: E501 - - read the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_deployment_scale(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment_scale # noqa: E501 - - read scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment_scale(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_deployment_scale_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_deployment_scale_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment_scale # noqa: E501 - - read scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment_scale_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_deployment_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_deployment_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_deployment_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_deployment_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment_status # noqa: E501 - - read status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_deployment_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_deployment_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_deployment_status # noqa: E501 - - read status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_deployment_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_deployment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_deployment_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_deployment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replica_set(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set # noqa: E501 - - read the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replica_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replica_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set # noqa: E501 - - read the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replica_set_scale(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set_scale # noqa: E501 - - read scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set_scale(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replica_set_scale_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replica_set_scale_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set_scale # noqa: E501 - - read scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set_scale_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replica_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replica_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replica_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replica_set_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set_status # noqa: E501 - - read status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replica_set_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replica_set_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replica_set_status # noqa: E501 - - read status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replica_set_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replica_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replica_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replica_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_stateful_set(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set # noqa: E501 - - read the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_stateful_set_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_stateful_set_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set # noqa: E501 - - read the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_stateful_set_scale(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set_scale # noqa: E501 - - read scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set_scale(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_stateful_set_scale_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_stateful_set_scale_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set_scale # noqa: E501 - - read scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set_scale_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_stateful_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_stateful_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_stateful_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_stateful_set_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set_status # noqa: E501 - - read status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_stateful_set_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_stateful_set_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_stateful_set_status # noqa: E501 - - read status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_stateful_set_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_stateful_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_stateful_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_stateful_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_controller_revision(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_controller_revision # noqa: E501 - - replace the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_controller_revision(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ControllerRevision body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ControllerRevision - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_controller_revision_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_controller_revision_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_controller_revision # noqa: E501 - - replace the specified ControllerRevision # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_controller_revision_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ControllerRevision (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ControllerRevision body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ControllerRevision, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_controller_revision" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_controller_revision`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_controller_revision`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ControllerRevision', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_daemon_set(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_daemon_set # noqa: E501 - - replace the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_daemon_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_daemon_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_daemon_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_daemon_set # noqa: E501 - - replace the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_daemon_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_daemon_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_daemon_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_daemon_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_daemon_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_daemon_set_status # noqa: E501 - - replace status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_daemon_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1DaemonSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_daemon_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_daemon_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_daemon_set_status # noqa: E501 - - replace status of the specified DaemonSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_daemon_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the DaemonSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1DaemonSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1DaemonSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_daemon_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_daemon_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_daemon_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_daemon_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1DaemonSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_deployment(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment # noqa: E501 - - replace the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_deployment_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_deployment_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment # noqa: E501 - - replace the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_deployment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_deployment`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_deployment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_deployment_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment_scale # noqa: E501 - - replace scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_deployment_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_deployment_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment_scale # noqa: E501 - - replace scale of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_deployment_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_deployment_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_deployment_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_deployment_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_deployment_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment_status # noqa: E501 - - replace status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Deployment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_deployment_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_deployment_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_deployment_status # noqa: E501 - - replace status of the specified Deployment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_deployment_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Deployment (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Deployment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Deployment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_deployment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_deployment_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_deployment_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_deployment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Deployment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replica_set(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set # noqa: E501 - - replace the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replica_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replica_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set # noqa: E501 - - replace the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replica_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replica_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replica_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replica_set_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set_scale # noqa: E501 - - replace scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replica_set_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replica_set_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set_scale # noqa: E501 - - replace scale of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replica_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replica_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replica_set_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replica_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replica_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set_status # noqa: E501 - - replace status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicaSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replica_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replica_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replica_set_status # noqa: E501 - - replace status of the specified ReplicaSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replica_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicaSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicaSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicaSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replica_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replica_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replica_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replica_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicaSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_stateful_set(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set # noqa: E501 - - replace the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_stateful_set_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_stateful_set_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set # noqa: E501 - - replace the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_stateful_set" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_stateful_set`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_stateful_set`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_stateful_set_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set_scale # noqa: E501 - - replace scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_stateful_set_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_stateful_set_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set_scale # noqa: E501 - - replace scale of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_stateful_set_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_stateful_set_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_stateful_set_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_stateful_set_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_stateful_set_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set_status # noqa: E501 - - replace status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StatefulSet - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_stateful_set_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_stateful_set_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_stateful_set_status # noqa: E501 - - replace status of the specified StatefulSet # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_stateful_set_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StatefulSet (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1StatefulSet body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StatefulSet, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_stateful_set_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_stateful_set_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_stateful_set_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_stateful_set_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StatefulSet', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_api.py deleted file mode 100644 index 89e9d78..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthenticationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1_api.py deleted file mode 100644 index f93602f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1_api.py +++ /dev/null @@ -1,410 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthenticationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_self_subject_review(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SelfSubjectReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_self_subject_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_self_subject_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SelfSubjectReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_self_subject_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_self_subject_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1/selfsubjectreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SelfSubjectReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_token_review(self, body, **kwargs): # noqa: E501 - """create_token_review # noqa: E501 - - create a TokenReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_token_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1TokenReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1TokenReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_token_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_token_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_token_review # noqa: E501 - - create a TokenReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_token_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1TokenReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1TokenReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_token_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_token_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1/tokenreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1TokenReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1alpha1_api.py deleted file mode 100644 index 72885ca..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1alpha1_api.py +++ /dev/null @@ -1,276 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthenticationV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_self_subject_review(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1SelfSubjectReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_self_subject_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_self_subject_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1SelfSubjectReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_self_subject_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_self_subject_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1alpha1/selfsubjectreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1SelfSubjectReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1beta1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1beta1_api.py deleted file mode 100644 index 29a66fb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authentication_v1beta1_api.py +++ /dev/null @@ -1,276 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthenticationV1beta1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_self_subject_review(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta1SelfSubjectReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_self_subject_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_self_subject_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_self_subject_review # noqa: E501 - - create a SelfSubjectReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta1SelfSubjectReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta1SelfSubjectReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_self_subject_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_self_subject_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1beta1/selfsubjectreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta1SelfSubjectReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authentication.k8s.io/v1beta1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_api.py deleted file mode 100644 index e1a2b92..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthorizationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_v1_api.py deleted file mode 100644 index 31ecae0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/authorization_v1_api.py +++ /dev/null @@ -1,687 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AuthorizationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_local_subject_access_review(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_local_subject_access_review # noqa: E501 - - create a LocalSubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_local_subject_access_review(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LocalSubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LocalSubjectAccessReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_local_subject_access_review_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_local_subject_access_review_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_local_subject_access_review # noqa: E501 - - create a LocalSubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_local_subject_access_review_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LocalSubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LocalSubjectAccessReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_local_subject_access_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_local_subject_access_review`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_local_subject_access_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LocalSubjectAccessReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_self_subject_access_review(self, body, **kwargs): # noqa: E501 - """create_self_subject_access_review # noqa: E501 - - create a SelfSubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_access_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SelfSubjectAccessReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_self_subject_access_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_self_subject_access_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_self_subject_access_review # noqa: E501 - - create a SelfSubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_access_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SelfSubjectAccessReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_self_subject_access_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_self_subject_access_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/v1/selfsubjectaccessreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SelfSubjectAccessReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_self_subject_rules_review(self, body, **kwargs): # noqa: E501 - """create_self_subject_rules_review # noqa: E501 - - create a SelfSubjectRulesReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_rules_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectRulesReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SelfSubjectRulesReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_self_subject_rules_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_self_subject_rules_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_self_subject_rules_review # noqa: E501 - - create a SelfSubjectRulesReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_self_subject_rules_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SelfSubjectRulesReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SelfSubjectRulesReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_self_subject_rules_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_self_subject_rules_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/v1/selfsubjectrulesreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SelfSubjectRulesReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_subject_access_review(self, body, **kwargs): # noqa: E501 - """create_subject_access_review # noqa: E501 - - create a SubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_subject_access_review(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SubjectAccessReview - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_subject_access_review_with_http_info(body, **kwargs) # noqa: E501 - - def create_subject_access_review_with_http_info(self, body, **kwargs): # noqa: E501 - """create_subject_access_review # noqa: E501 - - create a SubjectAccessReview # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_subject_access_review_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1SubjectAccessReview body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SubjectAccessReview, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_subject_access_review" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_subject_access_review`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/v1/subjectaccessreviews', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SubjectAccessReview', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/authorization.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_api.py deleted file mode 100644 index 6e0055b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AutoscalingApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v1_api.py deleted file mode 100644 index 566f371..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v1_api.py +++ /dev/null @@ -1,1833 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AutoscalingV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_horizontal_pod_autoscaler(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_horizontal_pod_autoscaler # noqa: E501 - - create a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_horizontal_pod_autoscaler(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_horizontal_pod_autoscaler # noqa: E501 - - create a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_horizontal_pod_autoscaler(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete collection of HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_horizontal_pod_autoscaler(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete collection of HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_horizontal_pod_autoscaler(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_horizontal_pod_autoscaler(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_horizontal_pod_autoscaler_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_horizontal_pod_autoscaler_for_all_namespaces # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_horizontal_pod_autoscaler_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscalerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_horizontal_pod_autoscaler_for_all_namespaces # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscalerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_horizontal_pod_autoscaler_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/horizontalpodautoscalers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscalerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_horizontal_pod_autoscaler(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_horizontal_pod_autoscaler # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_horizontal_pod_autoscaler(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscalerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_horizontal_pod_autoscaler # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscalerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscalerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_horizontal_pod_autoscaler(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler # noqa: E501 - - partially update the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler # noqa: E501 - - partially update the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - partially update status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - partially update status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_horizontal_pod_autoscaler(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler # noqa: E501 - - read the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler # noqa: E501 - - read the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - read status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - read status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_horizontal_pod_autoscaler(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler # noqa: E501 - - replace the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler # noqa: E501 - - replace the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - replace status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - replace status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v2_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v2_api.py deleted file mode 100644 index acad325..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/autoscaling_v2_api.py +++ /dev/null @@ -1,1833 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class AutoscalingV2Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_horizontal_pod_autoscaler(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_horizontal_pod_autoscaler # noqa: E501 - - create a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_horizontal_pod_autoscaler(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_horizontal_pod_autoscaler # noqa: E501 - - create a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_horizontal_pod_autoscaler(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete collection of HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_horizontal_pod_autoscaler(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete collection of HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_horizontal_pod_autoscaler(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_horizontal_pod_autoscaler(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_horizontal_pod_autoscaler # noqa: E501 - - delete a HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_horizontal_pod_autoscaler_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_horizontal_pod_autoscaler_for_all_namespaces # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_horizontal_pod_autoscaler_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscalerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_horizontal_pod_autoscaler_for_all_namespaces # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_horizontal_pod_autoscaler_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscalerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_horizontal_pod_autoscaler_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/horizontalpodautoscalers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscalerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_horizontal_pod_autoscaler(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_horizontal_pod_autoscaler # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_horizontal_pod_autoscaler(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscalerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_horizontal_pod_autoscaler_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_horizontal_pod_autoscaler # noqa: E501 - - list or watch objects of kind HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_horizontal_pod_autoscaler_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscalerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscalerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_horizontal_pod_autoscaler(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler # noqa: E501 - - partially update the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler # noqa: E501 - - partially update the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - partially update status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - partially update status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_horizontal_pod_autoscaler(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler # noqa: E501 - - read the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler # noqa: E501 - - read the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - read status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - read status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_horizontal_pod_autoscaler(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler # noqa: E501 - - replace the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_horizontal_pod_autoscaler_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler # noqa: E501 - - replace the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_horizontal_pod_autoscaler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_horizontal_pod_autoscaler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_horizontal_pod_autoscaler_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - replace status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V2HorizontalPodAutoscaler - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_horizontal_pod_autoscaler_status # noqa: E501 - - replace status of the specified HorizontalPodAutoscaler # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_horizontal_pod_autoscaler_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the HorizontalPodAutoscaler (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V2HorizontalPodAutoscaler body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V2HorizontalPodAutoscaler, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_horizontal_pod_autoscaler_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_horizontal_pod_autoscaler_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V2HorizontalPodAutoscaler', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_api.py deleted file mode 100644 index 3402c4f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class BatchApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_v1_api.py deleted file mode 100644 index e47e4e1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/batch_v1_api.py +++ /dev/null @@ -1,3524 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class BatchV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_cron_job(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_cron_job # noqa: E501 - - create a CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_cron_job(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_cron_job_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_cron_job_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_cron_job # noqa: E501 - - create a CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_cron_job_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_job(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_job # noqa: E501 - - create a Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_job(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_job_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_job_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_job # noqa: E501 - - create a Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_job_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_cron_job(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_cron_job # noqa: E501 - - delete collection of CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_cron_job(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_cron_job_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_cron_job_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_cron_job # noqa: E501 - - delete collection of CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_cron_job_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_job(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_job # noqa: E501 - - delete collection of Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_job(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_job_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_job_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_job # noqa: E501 - - delete collection of Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_job_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_cron_job(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_cron_job # noqa: E501 - - delete a CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_cron_job(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_cron_job_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_cron_job_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_cron_job # noqa: E501 - - delete a CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_cron_job_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_job(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_job # noqa: E501 - - delete a Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_job(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_job_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_job_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_job # noqa: E501 - - delete a Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_job_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_cron_job_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_cron_job_for_all_namespaces # noqa: E501 - - list or watch objects of kind CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cron_job_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJobList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_cron_job_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_cron_job_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_cron_job_for_all_namespaces # noqa: E501 - - list or watch objects of kind CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cron_job_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJobList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_cron_job_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/cronjobs', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJobList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_job_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_job_for_all_namespaces # noqa: E501 - - list or watch objects of kind Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_job_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1JobList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_job_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_job_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_job_for_all_namespaces # noqa: E501 - - list or watch objects of kind Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_job_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1JobList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_job_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/jobs', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1JobList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_cron_job(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_cron_job # noqa: E501 - - list or watch objects of kind CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_cron_job(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJobList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_cron_job_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_cron_job_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_cron_job # noqa: E501 - - list or watch objects of kind CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_cron_job_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJobList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJobList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_job(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_job # noqa: E501 - - list or watch objects of kind Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_job(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1JobList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_job_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_job_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_job # noqa: E501 - - list or watch objects of kind Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_job_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1JobList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1JobList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_cron_job(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_cron_job # noqa: E501 - - partially update the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_cron_job(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_cron_job_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_cron_job_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_cron_job # noqa: E501 - - partially update the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_cron_job_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_cron_job_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_cron_job_status # noqa: E501 - - partially update status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_cron_job_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_cron_job_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_cron_job_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_cron_job_status # noqa: E501 - - partially update status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_cron_job_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_cron_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_cron_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_cron_job_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_cron_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_job(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_job # noqa: E501 - - partially update the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_job(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_job_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_job_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_job # noqa: E501 - - partially update the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_job_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_job_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_job_status # noqa: E501 - - partially update status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_job_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_job_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_job_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_job_status # noqa: E501 - - partially update status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_job_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_job_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_cron_job(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_cron_job # noqa: E501 - - read the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_cron_job(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_cron_job_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_cron_job_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_cron_job # noqa: E501 - - read the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_cron_job_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_cron_job_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_cron_job_status # noqa: E501 - - read status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_cron_job_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_cron_job_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_cron_job_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_cron_job_status # noqa: E501 - - read status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_cron_job_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_cron_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_cron_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_cron_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_job(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_job # noqa: E501 - - read the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_job(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_job_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_job_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_job # noqa: E501 - - read the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_job_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_job_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_job_status # noqa: E501 - - read status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_job_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_job_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_job_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_job_status # noqa: E501 - - read status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_job_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_cron_job(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_cron_job # noqa: E501 - - replace the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_cron_job(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_cron_job_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_cron_job_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_cron_job # noqa: E501 - - replace the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_cron_job_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_cron_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_cron_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_cron_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_cron_job_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_cron_job_status # noqa: E501 - - replace status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_cron_job_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CronJob - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_cron_job_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_cron_job_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_cron_job_status # noqa: E501 - - replace status of the specified CronJob # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_cron_job_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CronJob (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CronJob body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CronJob, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_cron_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_cron_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_cron_job_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_cron_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CronJob', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_job(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_job # noqa: E501 - - replace the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_job(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_job_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_job_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_job # noqa: E501 - - replace the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_job_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_job" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_job`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_job`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_job`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_job_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_job_status # noqa: E501 - - replace status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_job_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Job - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_job_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_job_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_job_status # noqa: E501 - - replace status of the specified Job # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_job_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Job (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Job body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Job, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_job_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_job_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_job_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_job_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Job', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_api.py deleted file mode 100644 index c021d0f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CertificatesApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1_api.py deleted file mode 100644 index 455484e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1_api.py +++ /dev/null @@ -1,1997 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CertificatesV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_certificate_signing_request(self, body, **kwargs): # noqa: E501 - """create_certificate_signing_request # noqa: E501 - - create a CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_certificate_signing_request(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_certificate_signing_request_with_http_info(body, **kwargs) # noqa: E501 - - def create_certificate_signing_request_with_http_info(self, body, **kwargs): # noqa: E501 - """create_certificate_signing_request # noqa: E501 - - create a CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_certificate_signing_request_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_certificate_signing_request`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_certificate_signing_request(self, name, **kwargs): # noqa: E501 - """delete_certificate_signing_request # noqa: E501 - - delete a CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_certificate_signing_request(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_certificate_signing_request_with_http_info(name, **kwargs) # noqa: E501 - - def delete_certificate_signing_request_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_certificate_signing_request # noqa: E501 - - delete a CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_certificate_signing_request_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_certificate_signing_request`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_certificate_signing_request(self, **kwargs): # noqa: E501 - """delete_collection_certificate_signing_request # noqa: E501 - - delete collection of CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_certificate_signing_request(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_certificate_signing_request_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_certificate_signing_request_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_certificate_signing_request # noqa: E501 - - delete collection of CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_certificate_signing_request_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_certificate_signing_request(self, **kwargs): # noqa: E501 - """list_certificate_signing_request # noqa: E501 - - list or watch objects of kind CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_certificate_signing_request(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequestList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_certificate_signing_request_with_http_info(**kwargs) # noqa: E501 - - def list_certificate_signing_request_with_http_info(self, **kwargs): # noqa: E501 - """list_certificate_signing_request # noqa: E501 - - list or watch objects of kind CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_certificate_signing_request_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequestList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequestList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_certificate_signing_request(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request # noqa: E501 - - partially update the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_certificate_signing_request_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_certificate_signing_request_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request # noqa: E501 - - partially update the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_certificate_signing_request`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_certificate_signing_request`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_certificate_signing_request_approval(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request_approval # noqa: E501 - - partially update approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request_approval(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_certificate_signing_request_approval_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_certificate_signing_request_approval_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request_approval # noqa: E501 - - partially update approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request_approval_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_certificate_signing_request_approval" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_certificate_signing_request_approval`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_certificate_signing_request_approval`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_certificate_signing_request_status(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request_status # noqa: E501 - - partially update status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_certificate_signing_request_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_certificate_signing_request_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_certificate_signing_request_status # noqa: E501 - - partially update status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_certificate_signing_request_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_certificate_signing_request_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_certificate_signing_request_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_certificate_signing_request_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_certificate_signing_request(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request # noqa: E501 - - read the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_certificate_signing_request_with_http_info(name, **kwargs) # noqa: E501 - - def read_certificate_signing_request_with_http_info(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request # noqa: E501 - - read the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_certificate_signing_request`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_certificate_signing_request_approval(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request_approval # noqa: E501 - - read approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request_approval(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_certificate_signing_request_approval_with_http_info(name, **kwargs) # noqa: E501 - - def read_certificate_signing_request_approval_with_http_info(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request_approval # noqa: E501 - - read approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request_approval_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_certificate_signing_request_approval" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_certificate_signing_request_approval`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_certificate_signing_request_status(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request_status # noqa: E501 - - read status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_certificate_signing_request_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_certificate_signing_request_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_certificate_signing_request_status # noqa: E501 - - read status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_certificate_signing_request_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_certificate_signing_request_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_certificate_signing_request_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_certificate_signing_request(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request # noqa: E501 - - replace the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_certificate_signing_request_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_certificate_signing_request_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request # noqa: E501 - - replace the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_certificate_signing_request" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_certificate_signing_request`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_certificate_signing_request`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_certificate_signing_request_approval(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request_approval # noqa: E501 - - replace approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request_approval(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_certificate_signing_request_approval_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_certificate_signing_request_approval_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request_approval # noqa: E501 - - replace approval of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request_approval_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_certificate_signing_request_approval" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_certificate_signing_request_approval`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_certificate_signing_request_approval`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_certificate_signing_request_status(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request_status # noqa: E501 - - replace status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CertificateSigningRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_certificate_signing_request_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_certificate_signing_request_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_certificate_signing_request_status # noqa: E501 - - replace status of the specified CertificateSigningRequest # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_certificate_signing_request_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CertificateSigningRequest (required) - :param V1CertificateSigningRequest body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CertificateSigningRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_certificate_signing_request_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_certificate_signing_request_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_certificate_signing_request_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CertificateSigningRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1alpha1_api.py deleted file mode 100644 index 28f5259..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/certificates_v1alpha1_api.py +++ /dev/null @@ -1,1169 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CertificatesV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_cluster_trust_bundle(self, body, **kwargs): # noqa: E501 - """create_cluster_trust_bundle # noqa: E501 - - create a ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_trust_bundle(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ClusterTrustBundle body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ClusterTrustBundle - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_cluster_trust_bundle_with_http_info(body, **kwargs) # noqa: E501 - - def create_cluster_trust_bundle_with_http_info(self, body, **kwargs): # noqa: E501 - """create_cluster_trust_bundle # noqa: E501 - - create a ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_trust_bundle_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ClusterTrustBundle body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ClusterTrustBundle, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_cluster_trust_bundle`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ClusterTrustBundle', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_cluster_trust_bundle(self, name, **kwargs): # noqa: E501 - """delete_cluster_trust_bundle # noqa: E501 - - delete a ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_trust_bundle(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_cluster_trust_bundle_with_http_info(name, **kwargs) # noqa: E501 - - def delete_cluster_trust_bundle_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_cluster_trust_bundle # noqa: E501 - - delete a ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_trust_bundle_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_cluster_trust_bundle`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_cluster_trust_bundle(self, **kwargs): # noqa: E501 - """delete_collection_cluster_trust_bundle # noqa: E501 - - delete collection of ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_trust_bundle(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_cluster_trust_bundle_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_cluster_trust_bundle_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_cluster_trust_bundle # noqa: E501 - - delete collection of ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_trust_bundle_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_cluster_trust_bundle(self, **kwargs): # noqa: E501 - """list_cluster_trust_bundle # noqa: E501 - - list or watch objects of kind ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_trust_bundle(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ClusterTrustBundleList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_cluster_trust_bundle_with_http_info(**kwargs) # noqa: E501 - - def list_cluster_trust_bundle_with_http_info(self, **kwargs): # noqa: E501 - """list_cluster_trust_bundle # noqa: E501 - - list or watch objects of kind ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_trust_bundle_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ClusterTrustBundleList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ClusterTrustBundleList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_trust_bundle(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_trust_bundle # noqa: E501 - - partially update the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_trust_bundle(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ClusterTrustBundle - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_trust_bundle_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_cluster_trust_bundle_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_trust_bundle # noqa: E501 - - partially update the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_trust_bundle_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ClusterTrustBundle, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_trust_bundle`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_trust_bundle`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ClusterTrustBundle', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_cluster_trust_bundle(self, name, **kwargs): # noqa: E501 - """read_cluster_trust_bundle # noqa: E501 - - read the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_trust_bundle(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ClusterTrustBundle - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_cluster_trust_bundle_with_http_info(name, **kwargs) # noqa: E501 - - def read_cluster_trust_bundle_with_http_info(self, name, **kwargs): # noqa: E501 - """read_cluster_trust_bundle # noqa: E501 - - read the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_trust_bundle_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ClusterTrustBundle, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_cluster_trust_bundle`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ClusterTrustBundle', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_trust_bundle(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_trust_bundle # noqa: E501 - - replace the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_trust_bundle(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param V1alpha1ClusterTrustBundle body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ClusterTrustBundle - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_trust_bundle_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_cluster_trust_bundle_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_trust_bundle # noqa: E501 - - replace the specified ClusterTrustBundle # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_trust_bundle_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterTrustBundle (required) - :param V1alpha1ClusterTrustBundle body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ClusterTrustBundle, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_trust_bundle" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_trust_bundle`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_trust_bundle`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ClusterTrustBundle', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_api.py deleted file mode 100644 index 0e721a4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CoordinationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_v1_api.py deleted file mode 100644 index 244a1b1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/coordination_v1_api.py +++ /dev/null @@ -1,1392 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CoordinationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_lease(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_lease # noqa: E501 - - create a Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_lease(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Lease body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Lease - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_lease_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_lease_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_lease # noqa: E501 - - create a Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_lease_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Lease body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Lease, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_lease`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Lease', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_lease(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_lease # noqa: E501 - - delete collection of Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_lease(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_lease_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_lease_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_lease # noqa: E501 - - delete collection of Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_lease_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_lease(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_lease # noqa: E501 - - delete a Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_lease(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_lease_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_lease_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_lease # noqa: E501 - - delete a Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_lease_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_lease`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_lease_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_lease_for_all_namespaces # noqa: E501 - - list or watch objects of kind Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_lease_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LeaseList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_lease_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_lease_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_lease_for_all_namespaces # noqa: E501 - - list or watch objects of kind Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_lease_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LeaseList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_lease_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/leases', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LeaseList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_lease(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_lease # noqa: E501 - - list or watch objects of kind Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_lease(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LeaseList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_lease_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_lease_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_lease # noqa: E501 - - list or watch objects of kind Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_lease_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LeaseList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LeaseList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_lease(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_lease # noqa: E501 - - partially update the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_lease(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Lease - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_lease_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_lease_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_lease # noqa: E501 - - partially update the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_lease_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Lease, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_lease`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_lease`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Lease', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_lease(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_lease # noqa: E501 - - read the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_lease(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Lease - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_lease_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_lease_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_lease # noqa: E501 - - read the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_lease_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Lease, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_lease`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Lease', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_lease(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_lease # noqa: E501 - - replace the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_lease(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Lease body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Lease - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_lease_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_lease_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_lease # noqa: E501 - - replace the specified Lease # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_lease_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Lease (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Lease body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Lease, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_lease" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_lease`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_lease`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_lease`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Lease', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/core_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/core_api.py deleted file mode 100644 index e0e966f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/core_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CoreApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_versions(self, **kwargs): # noqa: E501 - """get_api_versions # noqa: E501 - - get available API versions # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_versions(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIVersions - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_versions_with_http_info(**kwargs) # noqa: E501 - - def get_api_versions_with_http_info(self, **kwargs): # noqa: E501 - """get_api_versions # noqa: E501 - - get available API versions # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_versions_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIVersions, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_versions" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIVersions', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/core_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/core_v1_api.py deleted file mode 100644 index 282d9b8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/core_v1_api.py +++ /dev/null @@ -1,29863 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CoreV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def connect_delete_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_delete_namespaced_pod_proxy # noqa: E501 - - connect DELETE requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_delete_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_delete_namespaced_pod_proxy # noqa: E501 - - connect DELETE requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_delete_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_delete_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_delete_namespaced_pod_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_delete_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_delete_namespaced_pod_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_delete_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_delete_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_delete_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_delete_namespaced_service_proxy # noqa: E501 - - connect DELETE requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_delete_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_delete_namespaced_service_proxy # noqa: E501 - - connect DELETE requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_delete_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_delete_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_delete_namespaced_service_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_delete_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_delete_namespaced_service_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_delete_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_delete_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_delete_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_delete_node_proxy # noqa: E501 - - connect DELETE requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_delete_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_delete_node_proxy # noqa: E501 - - connect DELETE requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_delete_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_delete_node_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_delete_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_delete_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_delete_node_proxy_with_path # noqa: E501 - - connect DELETE requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_delete_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_delete_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_delete_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_delete_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_pod_attach(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_attach # noqa: E501 - - connect GET requests to attach of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_attach(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodAttachOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true. - :param bool stdin: Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true. - :param bool tty: TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_pod_attach_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_get_namespaced_pod_attach_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_attach # noqa: E501 - - connect GET requests to attach of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_attach_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodAttachOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true. - :param bool stdin: Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true. - :param bool tty: TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'container', - 'stderr', - 'stdin', - 'stdout', - 'tty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_pod_attach" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_pod_attach`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_pod_attach`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'container' in local_var_params and local_var_params['container'] is not None: # noqa: E501 - query_params.append(('container', local_var_params['container'])) # noqa: E501 - if 'stderr' in local_var_params and local_var_params['stderr'] is not None: # noqa: E501 - query_params.append(('stderr', local_var_params['stderr'])) # noqa: E501 - if 'stdin' in local_var_params and local_var_params['stdin'] is not None: # noqa: E501 - query_params.append(('stdin', local_var_params['stdin'])) # noqa: E501 - if 'stdout' in local_var_params and local_var_params['stdout'] is not None: # noqa: E501 - query_params.append(('stdout', local_var_params['stdout'])) # noqa: E501 - if 'tty' in local_var_params and local_var_params['tty'] is not None: # noqa: E501 - query_params.append(('tty', local_var_params['tty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/attach', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_pod_exec(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_exec # noqa: E501 - - connect GET requests to exec of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_exec(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodExecOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str command: Command is the remote command to execute. argv array. Not executed within a shell. - :param str container: Container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Redirect the standard error stream of the pod for this call. - :param bool stdin: Redirect the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Redirect the standard output stream of the pod for this call. - :param bool tty: TTY if true indicates that a tty will be allocated for the exec call. Defaults to false. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_pod_exec_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_get_namespaced_pod_exec_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_exec # noqa: E501 - - connect GET requests to exec of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_exec_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodExecOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str command: Command is the remote command to execute. argv array. Not executed within a shell. - :param str container: Container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Redirect the standard error stream of the pod for this call. - :param bool stdin: Redirect the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Redirect the standard output stream of the pod for this call. - :param bool tty: TTY if true indicates that a tty will be allocated for the exec call. Defaults to false. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'command', - 'container', - 'stderr', - 'stdin', - 'stdout', - 'tty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_pod_exec" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_pod_exec`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_pod_exec`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'command' in local_var_params and local_var_params['command'] is not None: # noqa: E501 - query_params.append(('command', local_var_params['command'])) # noqa: E501 - if 'container' in local_var_params and local_var_params['container'] is not None: # noqa: E501 - query_params.append(('container', local_var_params['container'])) # noqa: E501 - if 'stderr' in local_var_params and local_var_params['stderr'] is not None: # noqa: E501 - query_params.append(('stderr', local_var_params['stderr'])) # noqa: E501 - if 'stdin' in local_var_params and local_var_params['stdin'] is not None: # noqa: E501 - query_params.append(('stdin', local_var_params['stdin'])) # noqa: E501 - if 'stdout' in local_var_params and local_var_params['stdout'] is not None: # noqa: E501 - query_params.append(('stdout', local_var_params['stdout'])) # noqa: E501 - if 'tty' in local_var_params and local_var_params['tty'] is not None: # noqa: E501 - query_params.append(('tty', local_var_params['tty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/exec', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_pod_portforward(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_portforward # noqa: E501 - - connect GET requests to portforward of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_portforward(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodPortForwardOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param int ports: List of ports to forward Required when using WebSockets - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_pod_portforward_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_get_namespaced_pod_portforward_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_portforward # noqa: E501 - - connect GET requests to portforward of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_portforward_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodPortForwardOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param int ports: List of ports to forward Required when using WebSockets - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'ports' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_pod_portforward" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_pod_portforward`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_pod_portforward`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'ports' in local_var_params and local_var_params['ports'] is not None: # noqa: E501 - query_params.append(('ports', local_var_params['ports'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/portforward', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_proxy # noqa: E501 - - connect GET requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_get_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_proxy # noqa: E501 - - connect GET requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_get_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_get_namespaced_pod_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_get_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_service_proxy # noqa: E501 - - connect GET requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_get_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_get_namespaced_service_proxy # noqa: E501 - - connect GET requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_get_namespaced_service_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_get_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_get_namespaced_service_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_get_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_get_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_get_node_proxy # noqa: E501 - - connect GET requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_get_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_get_node_proxy # noqa: E501 - - connect GET requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_get_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_get_node_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_get_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_get_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_get_node_proxy_with_path # noqa: E501 - - connect GET requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_get_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_get_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_get_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_get_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_head_namespaced_pod_proxy # noqa: E501 - - connect HEAD requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_head_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_head_namespaced_pod_proxy # noqa: E501 - - connect HEAD requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_head_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_head_namespaced_pod_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_head_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_head_namespaced_pod_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_head_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_head_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_head_namespaced_service_proxy # noqa: E501 - - connect HEAD requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_head_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_head_namespaced_service_proxy # noqa: E501 - - connect HEAD requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_head_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_head_namespaced_service_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_head_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_head_namespaced_service_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_head_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_head_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_head_node_proxy # noqa: E501 - - connect HEAD requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_head_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_head_node_proxy # noqa: E501 - - connect HEAD requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_head_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_head_node_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_head_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_head_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_head_node_proxy_with_path # noqa: E501 - - connect HEAD requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_head_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_head_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_head_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_head_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'HEAD', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_options_namespaced_pod_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_options_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_options_namespaced_pod_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_options_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_options_namespaced_pod_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_options_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_options_namespaced_pod_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_options_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_options_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_options_namespaced_service_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_options_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_options_namespaced_service_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_options_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_options_namespaced_service_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_options_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_options_namespaced_service_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_options_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_options_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_options_node_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_options_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_options_node_proxy # noqa: E501 - - connect OPTIONS requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_options_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_options_node_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_options_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_options_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_options_node_proxy_with_path # noqa: E501 - - connect OPTIONS requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_options_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_options_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_options_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_options_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'OPTIONS', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_patch_namespaced_pod_proxy # noqa: E501 - - connect PATCH requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_patch_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_patch_namespaced_pod_proxy # noqa: E501 - - connect PATCH requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_patch_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_patch_namespaced_pod_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_patch_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_patch_namespaced_pod_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_patch_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_patch_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_patch_namespaced_service_proxy # noqa: E501 - - connect PATCH requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_patch_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_patch_namespaced_service_proxy # noqa: E501 - - connect PATCH requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_patch_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_patch_namespaced_service_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_patch_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_patch_namespaced_service_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_patch_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_patch_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_patch_node_proxy # noqa: E501 - - connect PATCH requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_patch_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_patch_node_proxy # noqa: E501 - - connect PATCH requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_patch_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_patch_node_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_patch_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_patch_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_patch_node_proxy_with_path # noqa: E501 - - connect PATCH requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_patch_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_patch_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_patch_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_patch_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_pod_attach(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_attach # noqa: E501 - - connect POST requests to attach of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_attach(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodAttachOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true. - :param bool stdin: Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true. - :param bool tty: TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_pod_attach_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_post_namespaced_pod_attach_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_attach # noqa: E501 - - connect POST requests to attach of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_attach_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodAttachOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true. - :param bool stdin: Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true. - :param bool tty: TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'container', - 'stderr', - 'stdin', - 'stdout', - 'tty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_pod_attach" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_pod_attach`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_pod_attach`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'container' in local_var_params and local_var_params['container'] is not None: # noqa: E501 - query_params.append(('container', local_var_params['container'])) # noqa: E501 - if 'stderr' in local_var_params and local_var_params['stderr'] is not None: # noqa: E501 - query_params.append(('stderr', local_var_params['stderr'])) # noqa: E501 - if 'stdin' in local_var_params and local_var_params['stdin'] is not None: # noqa: E501 - query_params.append(('stdin', local_var_params['stdin'])) # noqa: E501 - if 'stdout' in local_var_params and local_var_params['stdout'] is not None: # noqa: E501 - query_params.append(('stdout', local_var_params['stdout'])) # noqa: E501 - if 'tty' in local_var_params and local_var_params['tty'] is not None: # noqa: E501 - query_params.append(('tty', local_var_params['tty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/attach', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_pod_exec(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_exec # noqa: E501 - - connect POST requests to exec of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_exec(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodExecOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str command: Command is the remote command to execute. argv array. Not executed within a shell. - :param str container: Container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Redirect the standard error stream of the pod for this call. - :param bool stdin: Redirect the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Redirect the standard output stream of the pod for this call. - :param bool tty: TTY if true indicates that a tty will be allocated for the exec call. Defaults to false. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_pod_exec_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_post_namespaced_pod_exec_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_exec # noqa: E501 - - connect POST requests to exec of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_exec_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodExecOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str command: Command is the remote command to execute. argv array. Not executed within a shell. - :param str container: Container in which to execute the command. Defaults to only container if there is only one container in the pod. - :param bool stderr: Redirect the standard error stream of the pod for this call. - :param bool stdin: Redirect the standard input stream of the pod for this call. Defaults to false. - :param bool stdout: Redirect the standard output stream of the pod for this call. - :param bool tty: TTY if true indicates that a tty will be allocated for the exec call. Defaults to false. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'command', - 'container', - 'stderr', - 'stdin', - 'stdout', - 'tty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_pod_exec" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_pod_exec`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_pod_exec`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'command' in local_var_params and local_var_params['command'] is not None: # noqa: E501 - query_params.append(('command', local_var_params['command'])) # noqa: E501 - if 'container' in local_var_params and local_var_params['container'] is not None: # noqa: E501 - query_params.append(('container', local_var_params['container'])) # noqa: E501 - if 'stderr' in local_var_params and local_var_params['stderr'] is not None: # noqa: E501 - query_params.append(('stderr', local_var_params['stderr'])) # noqa: E501 - if 'stdin' in local_var_params and local_var_params['stdin'] is not None: # noqa: E501 - query_params.append(('stdin', local_var_params['stdin'])) # noqa: E501 - if 'stdout' in local_var_params and local_var_params['stdout'] is not None: # noqa: E501 - query_params.append(('stdout', local_var_params['stdout'])) # noqa: E501 - if 'tty' in local_var_params and local_var_params['tty'] is not None: # noqa: E501 - query_params.append(('tty', local_var_params['tty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/exec', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_pod_portforward(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_portforward # noqa: E501 - - connect POST requests to portforward of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_portforward(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodPortForwardOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param int ports: List of ports to forward Required when using WebSockets - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_pod_portforward_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_post_namespaced_pod_portforward_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_portforward # noqa: E501 - - connect POST requests to portforward of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_portforward_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodPortForwardOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param int ports: List of ports to forward Required when using WebSockets - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'ports' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_pod_portforward" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_pod_portforward`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_pod_portforward`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'ports' in local_var_params and local_var_params['ports'] is not None: # noqa: E501 - query_params.append(('ports', local_var_params['ports'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/portforward', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_proxy # noqa: E501 - - connect POST requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_post_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_proxy # noqa: E501 - - connect POST requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_post_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_post_namespaced_pod_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_post_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_service_proxy # noqa: E501 - - connect POST requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_post_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_post_namespaced_service_proxy # noqa: E501 - - connect POST requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_post_namespaced_service_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_post_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_post_namespaced_service_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_post_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_post_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_post_node_proxy # noqa: E501 - - connect POST requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_post_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_post_node_proxy # noqa: E501 - - connect POST requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_post_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_post_node_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_post_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_post_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_post_node_proxy_with_path # noqa: E501 - - connect POST requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_post_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_post_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_post_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_post_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_namespaced_pod_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_put_namespaced_pod_proxy # noqa: E501 - - connect PUT requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_pod_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_namespaced_pod_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_put_namespaced_pod_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_put_namespaced_pod_proxy # noqa: E501 - - connect PUT requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_pod_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_namespaced_pod_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_namespaced_pod_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_put_namespaced_pod_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_namespaced_pod_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_put_namespaced_pod_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_pod_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_put_namespaced_pod_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_put_namespaced_pod_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_pod_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to pod. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_namespaced_pod_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_put_namespaced_pod_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_put_namespaced_pod_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_namespaced_service_proxy(self, name, namespace, **kwargs): # noqa: E501 - """connect_put_namespaced_service_proxy # noqa: E501 - - connect PUT requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_service_proxy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_namespaced_service_proxy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def connect_put_namespaced_service_proxy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """connect_put_namespaced_service_proxy # noqa: E501 - - connect PUT requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_service_proxy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_namespaced_service_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_namespaced_service_proxy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_put_namespaced_service_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_namespaced_service_proxy_with_path(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_put_namespaced_service_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_service_proxy_with_path(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, **kwargs) # noqa: E501 - - def connect_put_namespaced_service_proxy_with_path_with_http_info(self, name, namespace, path, **kwargs): # noqa: E501 - """connect_put_namespaced_service_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_namespaced_service_proxy_with_path_with_http_info(name, namespace, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceProxyOptions (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str path: path to the resource (required) - :param str path2: Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_namespaced_service_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `connect_put_namespaced_service_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_put_namespaced_service_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_node_proxy(self, name, **kwargs): # noqa: E501 - """connect_put_node_proxy # noqa: E501 - - connect PUT requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_node_proxy(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_node_proxy_with_http_info(name, **kwargs) # noqa: E501 - - def connect_put_node_proxy_with_http_info(self, name, **kwargs): # noqa: E501 - """connect_put_node_proxy # noqa: E501 - - connect PUT requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_node_proxy_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_node_proxy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_node_proxy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'path' in local_var_params and local_var_params['path'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def connect_put_node_proxy_with_path(self, name, path, **kwargs): # noqa: E501 - """connect_put_node_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_node_proxy_with_path(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.connect_put_node_proxy_with_path_with_http_info(name, path, **kwargs) # noqa: E501 - - def connect_put_node_proxy_with_path_with_http_info(self, name, path, **kwargs): # noqa: E501 - """connect_put_node_proxy_with_path # noqa: E501 - - connect PUT requests to proxy of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.connect_put_node_proxy_with_path_with_http_info(name, path, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NodeProxyOptions (required) - :param str path: path to the resource (required) - :param str path2: Path is the URL path to use for the current proxy request to node. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'path', - 'path2' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method connect_put_node_proxy_with_path" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `connect_put_node_proxy_with_path`") # noqa: E501 - # verify the required parameter 'path' is set - if self.api_client.client_side_validation and ('path' not in local_var_params or # noqa: E501 - local_var_params['path'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `path` when calling `connect_put_node_proxy_with_path`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'path' in local_var_params: - path_params['path'] = local_var_params['path'] # noqa: E501 - - query_params = [] - if 'path2' in local_var_params and local_var_params['path2'] is not None: # noqa: E501 - query_params.append(('path', local_var_params['path2'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['*/*']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/proxy/{path}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespace(self, body, **kwargs): # noqa: E501 - """create_namespace # noqa: E501 - - create a Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespace(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespace_with_http_info(body, **kwargs) # noqa: E501 - - def create_namespace_with_http_info(self, body, **kwargs): # noqa: E501 - """create_namespace # noqa: E501 - - create a Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespace_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespace`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_binding(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_binding # noqa: E501 - - create a Binding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_binding(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Binding body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Binding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_binding_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_binding_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_binding # noqa: E501 - - create a Binding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_binding_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Binding body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Binding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/bindings', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Binding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_config_map(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_config_map # noqa: E501 - - create a ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_config_map(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ConfigMap body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMap - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_config_map_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_config_map_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_config_map # noqa: E501 - - create a ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_config_map_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ConfigMap body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMap, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMap', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_endpoints(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_endpoints # noqa: E501 - - create Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_endpoints(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Endpoints body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Endpoints - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_endpoints_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_endpoints_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_endpoints # noqa: E501 - - create Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_endpoints_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Endpoints body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Endpoints, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Endpoints', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_event(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_event # noqa: E501 - - create an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_event(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param CoreV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_event_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_event_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_event # noqa: E501 - - create an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_event_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param CoreV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_limit_range(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_limit_range # noqa: E501 - - create a LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_limit_range(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LimitRange body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRange - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_limit_range_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_limit_range_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_limit_range # noqa: E501 - - create a LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_limit_range_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LimitRange body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRange, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRange', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_persistent_volume_claim(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_persistent_volume_claim # noqa: E501 - - create a PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_persistent_volume_claim(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_persistent_volume_claim_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_persistent_volume_claim_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_persistent_volume_claim # noqa: E501 - - create a PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_persistent_volume_claim_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_pod(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod # noqa: E501 - - create a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod # noqa: E501 - - create a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_pod_binding(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_binding # noqa: E501 - - create binding of a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_binding(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Binding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Binding body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Binding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_binding_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_binding_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_binding # noqa: E501 - - create binding of a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_binding_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Binding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Binding body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Binding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `create_namespaced_pod_binding`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/binding', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Binding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_pod_eviction(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_eviction # noqa: E501 - - create eviction of a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_eviction(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Eviction (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Eviction body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Eviction - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_eviction_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_eviction_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_eviction # noqa: E501 - - create eviction of a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_eviction_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Eviction (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Eviction body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Eviction, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod_eviction" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `create_namespaced_pod_eviction`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod_eviction`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod_eviction`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/eviction', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Eviction', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_pod_template(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_template # noqa: E501 - - create a PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_template(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_template_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_template_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_template # noqa: E501 - - create a PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_template_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_replication_controller(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_replication_controller # noqa: E501 - - create a ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_replication_controller(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_replication_controller_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_replication_controller_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_replication_controller # noqa: E501 - - create a ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_replication_controller_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_resource_quota(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_quota # noqa: E501 - - create a ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_quota(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_resource_quota_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_resource_quota_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_quota # noqa: E501 - - create a ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_quota_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_secret(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_secret # noqa: E501 - - create a Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_secret(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Secret body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Secret - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_secret_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_secret_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_secret # noqa: E501 - - create a Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_secret_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Secret body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Secret, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_secret`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Secret', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_service(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service # noqa: E501 - - create a Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_service_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_service_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service # noqa: E501 - - create a Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_service`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_service_account(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service_account # noqa: E501 - - create a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service_account(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ServiceAccount body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccount - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_service_account_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_service_account_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service_account # noqa: E501 - - create a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service_account_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ServiceAccount body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccount, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccount', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_service_account_token(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service_account_token # noqa: E501 - - create token of a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service_account_token(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the TokenRequest (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param AuthenticationV1TokenRequest body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: AuthenticationV1TokenRequest - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_service_account_token_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_service_account_token_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_service_account_token # noqa: E501 - - create token of a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_service_account_token_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the TokenRequest (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param AuthenticationV1TokenRequest body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(AuthenticationV1TokenRequest, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_service_account_token" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `create_namespaced_service_account_token`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_service_account_token`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_service_account_token`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='AuthenticationV1TokenRequest', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_node(self, body, **kwargs): # noqa: E501 - """create_node # noqa: E501 - - create a Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_node(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_node_with_http_info(body, **kwargs) # noqa: E501 - - def create_node_with_http_info(self, body, **kwargs): # noqa: E501 - """create_node # noqa: E501 - - create a Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_node_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_persistent_volume(self, body, **kwargs): # noqa: E501 - """create_persistent_volume # noqa: E501 - - create a PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_persistent_volume(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_persistent_volume_with_http_info(body, **kwargs) # noqa: E501 - - def create_persistent_volume_with_http_info(self, body, **kwargs): # noqa: E501 - """create_persistent_volume # noqa: E501 - - create a PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_persistent_volume_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_persistent_volume`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_config_map(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_config_map # noqa: E501 - - delete collection of ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_config_map(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_config_map_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_config_map_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_config_map # noqa: E501 - - delete collection of ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_config_map_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_endpoints(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_endpoints # noqa: E501 - - delete collection of Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_endpoints(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_endpoints_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_endpoints_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_endpoints # noqa: E501 - - delete collection of Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_endpoints_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_event(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_event # noqa: E501 - - delete collection of Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_event(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_event_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_event_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_event # noqa: E501 - - delete collection of Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_event_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_limit_range(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_limit_range # noqa: E501 - - delete collection of LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_limit_range(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_limit_range_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_limit_range_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_limit_range # noqa: E501 - - delete collection of LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_limit_range_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_persistent_volume_claim(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_persistent_volume_claim # noqa: E501 - - delete collection of PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_persistent_volume_claim(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_persistent_volume_claim_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_persistent_volume_claim_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_persistent_volume_claim # noqa: E501 - - delete collection of PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_persistent_volume_claim_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_pod(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod # noqa: E501 - - delete collection of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_pod_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_pod_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod # noqa: E501 - - delete collection of Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_pod_template(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_template # noqa: E501 - - delete collection of PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_template(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_pod_template_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_pod_template_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_template # noqa: E501 - - delete collection of PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_template_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_replication_controller(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_replication_controller # noqa: E501 - - delete collection of ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_replication_controller(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_replication_controller_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_replication_controller_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_replication_controller # noqa: E501 - - delete collection of ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_replication_controller_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_resource_quota(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_quota # noqa: E501 - - delete collection of ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_quota(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_resource_quota_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_resource_quota_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_quota # noqa: E501 - - delete collection of ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_quota_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_secret(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_secret # noqa: E501 - - delete collection of Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_secret(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_secret_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_secret_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_secret # noqa: E501 - - delete collection of Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_secret_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_service(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_service # noqa: E501 - - delete collection of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_service(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_service_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_service_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_service # noqa: E501 - - delete collection of Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_service_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_service_account(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_service_account # noqa: E501 - - delete collection of ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_service_account(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_service_account_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_service_account_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_service_account # noqa: E501 - - delete collection of ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_service_account_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_node(self, **kwargs): # noqa: E501 - """delete_collection_node # noqa: E501 - - delete collection of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_node(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_node_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_node_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_node # noqa: E501 - - delete collection of Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_node_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_persistent_volume(self, **kwargs): # noqa: E501 - """delete_collection_persistent_volume # noqa: E501 - - delete collection of PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_persistent_volume(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_persistent_volume_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_persistent_volume_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_persistent_volume # noqa: E501 - - delete collection of PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_persistent_volume_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespace(self, name, **kwargs): # noqa: E501 - """delete_namespace # noqa: E501 - - delete a Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespace(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespace_with_http_info(name, **kwargs) # noqa: E501 - - def delete_namespace_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_namespace # noqa: E501 - - delete a Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespace_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespace`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_config_map(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_config_map # noqa: E501 - - delete a ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_config_map(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_config_map_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_config_map_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_config_map # noqa: E501 - - delete a ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_config_map_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_endpoints(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_endpoints # noqa: E501 - - delete Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_endpoints(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_endpoints_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_endpoints_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_endpoints # noqa: E501 - - delete Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_endpoints_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_event(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_event # noqa: E501 - - delete an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_event(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_event_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_event_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_event # noqa: E501 - - delete an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_event_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_limit_range(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_limit_range # noqa: E501 - - delete a LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_limit_range(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_limit_range_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_limit_range_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_limit_range # noqa: E501 - - delete a LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_limit_range_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_persistent_volume_claim(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_persistent_volume_claim # noqa: E501 - - delete a PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_persistent_volume_claim(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_persistent_volume_claim_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_persistent_volume_claim_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_persistent_volume_claim # noqa: E501 - - delete a PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_persistent_volume_claim_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_pod(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod # noqa: E501 - - delete a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_pod_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_pod_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod # noqa: E501 - - delete a Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_pod`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_pod_template(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_template # noqa: E501 - - delete a PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_template(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_pod_template_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_pod_template_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_template # noqa: E501 - - delete a PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_template_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_replication_controller(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_replication_controller # noqa: E501 - - delete a ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_replication_controller(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_replication_controller_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_replication_controller_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_replication_controller # noqa: E501 - - delete a ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_replication_controller_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_resource_quota(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_quota # noqa: E501 - - delete a ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_quota(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_resource_quota_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_resource_quota_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_quota # noqa: E501 - - delete a ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_quota_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_secret(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_secret # noqa: E501 - - delete a Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_secret(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_secret_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_secret_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_secret # noqa: E501 - - delete a Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_secret_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_secret`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_service(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_service # noqa: E501 - - delete a Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_service(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_service_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_service_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_service # noqa: E501 - - delete a Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_service_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_service`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_service_account(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_service_account # noqa: E501 - - delete a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_service_account(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccount - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_service_account_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_service_account_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_service_account # noqa: E501 - - delete a ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_service_account_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccount, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccount', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_node(self, name, **kwargs): # noqa: E501 - """delete_node # noqa: E501 - - delete a Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_node(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_node_with_http_info(name, **kwargs) # noqa: E501 - - def delete_node_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_node # noqa: E501 - - delete a Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_node_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_persistent_volume(self, name, **kwargs): # noqa: E501 - """delete_persistent_volume # noqa: E501 - - delete a PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_persistent_volume(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_persistent_volume_with_http_info(name, **kwargs) # noqa: E501 - - def delete_persistent_volume_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_persistent_volume # noqa: E501 - - delete a PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_persistent_volume_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_persistent_volume`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_component_status(self, **kwargs): # noqa: E501 - """list_component_status # noqa: E501 - - list objects of kind ComponentStatus # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_component_status(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ComponentStatusList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_component_status_with_http_info(**kwargs) # noqa: E501 - - def list_component_status_with_http_info(self, **kwargs): # noqa: E501 - """list_component_status # noqa: E501 - - list objects of kind ComponentStatus # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_component_status_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ComponentStatusList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_component_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/componentstatuses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ComponentStatusList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_config_map_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_config_map_for_all_namespaces # noqa: E501 - - list or watch objects of kind ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_config_map_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMapList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_config_map_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_config_map_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_config_map_for_all_namespaces # noqa: E501 - - list or watch objects of kind ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_config_map_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMapList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_config_map_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/configmaps', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMapList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_endpoints_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_endpoints_for_all_namespaces # noqa: E501 - - list or watch objects of kind Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_endpoints_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointsList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_endpoints_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_endpoints_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_endpoints_for_all_namespaces # noqa: E501 - - list or watch objects of kind Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_endpoints_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointsList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_endpoints_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/endpoints', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointsList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_event_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_event_for_all_namespaces # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_event_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1EventList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_event_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_event_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_event_for_all_namespaces # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_event_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1EventList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_event_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/events', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1EventList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_limit_range_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_limit_range_for_all_namespaces # noqa: E501 - - list or watch objects of kind LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_limit_range_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRangeList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_limit_range_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_limit_range_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_limit_range_for_all_namespaces # noqa: E501 - - list or watch objects of kind LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_limit_range_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRangeList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_limit_range_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/limitranges', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRangeList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespace(self, **kwargs): # noqa: E501 - """list_namespace # noqa: E501 - - list or watch objects of kind Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespace(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NamespaceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespace_with_http_info(**kwargs) # noqa: E501 - - def list_namespace_with_http_info(self, **kwargs): # noqa: E501 - """list_namespace # noqa: E501 - - list or watch objects of kind Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespace_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NamespaceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NamespaceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_config_map(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_config_map # noqa: E501 - - list or watch objects of kind ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_config_map(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMapList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_config_map_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_config_map_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_config_map # noqa: E501 - - list or watch objects of kind ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_config_map_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMapList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMapList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_endpoints(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_endpoints # noqa: E501 - - list or watch objects of kind Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_endpoints(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointsList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_endpoints_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_endpoints_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_endpoints # noqa: E501 - - list or watch objects of kind Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_endpoints_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointsList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointsList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_event(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_event # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_event(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1EventList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_event_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_event_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_event # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_event_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1EventList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1EventList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_limit_range(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_limit_range # noqa: E501 - - list or watch objects of kind LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_limit_range(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRangeList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_limit_range_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_limit_range_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_limit_range # noqa: E501 - - list or watch objects of kind LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_limit_range_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRangeList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRangeList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_persistent_volume_claim(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_persistent_volume_claim # noqa: E501 - - list or watch objects of kind PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_persistent_volume_claim(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaimList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_persistent_volume_claim_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_persistent_volume_claim_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_persistent_volume_claim # noqa: E501 - - list or watch objects of kind PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_persistent_volume_claim_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaimList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaimList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_pod(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod # noqa: E501 - - list or watch objects of kind Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_pod_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_pod_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod # noqa: E501 - - list or watch objects of kind Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_pod_template(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_template # noqa: E501 - - list or watch objects of kind PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_template(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplateList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_pod_template_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_pod_template_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_template # noqa: E501 - - list or watch objects of kind PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_template_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplateList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplateList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_replication_controller(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_replication_controller # noqa: E501 - - list or watch objects of kind ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_replication_controller(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationControllerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_replication_controller_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_replication_controller_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_replication_controller # noqa: E501 - - list or watch objects of kind ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_replication_controller_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationControllerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationControllerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_resource_quota(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_quota # noqa: E501 - - list or watch objects of kind ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_quota(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuotaList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_resource_quota_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_resource_quota_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_quota # noqa: E501 - - list or watch objects of kind ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_quota_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuotaList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuotaList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_secret(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_secret # noqa: E501 - - list or watch objects of kind Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_secret(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SecretList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_secret_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_secret_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_secret # noqa: E501 - - list or watch objects of kind Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_secret_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SecretList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SecretList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_service(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_service # noqa: E501 - - list or watch objects of kind Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_service(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_service_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_service_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_service # noqa: E501 - - list or watch objects of kind Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_service_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_service_account(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_service_account # noqa: E501 - - list or watch objects of kind ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_service_account(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccountList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_service_account_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_service_account_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_service_account # noqa: E501 - - list or watch objects of kind ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_service_account_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccountList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccountList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_node(self, **kwargs): # noqa: E501 - """list_node # noqa: E501 - - list or watch objects of kind Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_node(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NodeList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_node_with_http_info(**kwargs) # noqa: E501 - - def list_node_with_http_info(self, **kwargs): # noqa: E501 - """list_node # noqa: E501 - - list or watch objects of kind Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_node_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NodeList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NodeList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_persistent_volume(self, **kwargs): # noqa: E501 - """list_persistent_volume # noqa: E501 - - list or watch objects of kind PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_persistent_volume(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_persistent_volume_with_http_info(**kwargs) # noqa: E501 - - def list_persistent_volume_with_http_info(self, **kwargs): # noqa: E501 - """list_persistent_volume # noqa: E501 - - list or watch objects of kind PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_persistent_volume_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_persistent_volume_claim_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_persistent_volume_claim_for_all_namespaces # noqa: E501 - - list or watch objects of kind PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_persistent_volume_claim_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaimList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_persistent_volume_claim_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_persistent_volume_claim_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_persistent_volume_claim_for_all_namespaces # noqa: E501 - - list or watch objects of kind PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_persistent_volume_claim_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaimList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_persistent_volume_claim_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumeclaims', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaimList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_pod_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_pod_for_all_namespaces # noqa: E501 - - list or watch objects of kind Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_pod_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_pod_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_pod_for_all_namespaces # noqa: E501 - - list or watch objects of kind Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_pod_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/pods', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_pod_template_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_pod_template_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_template_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplateList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_pod_template_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_pod_template_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_pod_template_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_template_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplateList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_pod_template_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/podtemplates', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplateList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_replication_controller_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_replication_controller_for_all_namespaces # noqa: E501 - - list or watch objects of kind ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_replication_controller_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationControllerList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_replication_controller_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_replication_controller_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_replication_controller_for_all_namespaces # noqa: E501 - - list or watch objects of kind ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_replication_controller_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationControllerList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_replication_controller_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/replicationcontrollers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationControllerList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_resource_quota_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_resource_quota_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_quota_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuotaList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_resource_quota_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_resource_quota_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_resource_quota_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_quota_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuotaList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_resource_quota_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/resourcequotas', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuotaList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_secret_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_secret_for_all_namespaces # noqa: E501 - - list or watch objects of kind Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_secret_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1SecretList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_secret_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_secret_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_secret_for_all_namespaces # noqa: E501 - - list or watch objects of kind Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_secret_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1SecretList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_secret_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/secrets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1SecretList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_service_account_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_service_account_for_all_namespaces # noqa: E501 - - list or watch objects of kind ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_account_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccountList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_service_account_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_service_account_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_service_account_for_all_namespaces # noqa: E501 - - list or watch objects of kind ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_account_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccountList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_service_account_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/serviceaccounts', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccountList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_service_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_service_for_all_namespaces # noqa: E501 - - list or watch objects of kind Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_service_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_service_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_service_for_all_namespaces # noqa: E501 - - list or watch objects of kind Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_service_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/services', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespace(self, name, body, **kwargs): # noqa: E501 - """patch_namespace # noqa: E501 - - partially update the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespace(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespace_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_namespace_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_namespace # noqa: E501 - - partially update the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespace_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespace`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespace`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespace_status(self, name, body, **kwargs): # noqa: E501 - """patch_namespace_status # noqa: E501 - - partially update status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespace_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespace_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_namespace_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_namespace_status # noqa: E501 - - partially update status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespace_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespace_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespace_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespace_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_config_map(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_config_map # noqa: E501 - - partially update the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_config_map(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMap - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_config_map_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_config_map_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_config_map # noqa: E501 - - partially update the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_config_map_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMap, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMap', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_endpoints(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_endpoints # noqa: E501 - - partially update the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_endpoints(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Endpoints - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_endpoints_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_endpoints_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_endpoints # noqa: E501 - - partially update the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_endpoints_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Endpoints, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Endpoints', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_event(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_event # noqa: E501 - - partially update the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_event(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_event_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_event_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_event # noqa: E501 - - partially update the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_event_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_limit_range(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_limit_range # noqa: E501 - - partially update the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_limit_range(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRange - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_limit_range_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_limit_range_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_limit_range # noqa: E501 - - partially update the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_limit_range_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRange, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRange', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_persistent_volume_claim(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_persistent_volume_claim # noqa: E501 - - partially update the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_persistent_volume_claim(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_persistent_volume_claim_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_persistent_volume_claim_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_persistent_volume_claim # noqa: E501 - - partially update the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_persistent_volume_claim_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_persistent_volume_claim_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_persistent_volume_claim_status # noqa: E501 - - partially update status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_persistent_volume_claim_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_persistent_volume_claim_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_persistent_volume_claim_status # noqa: E501 - - partially update status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_persistent_volume_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_persistent_volume_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_persistent_volume_claim_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_persistent_volume_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod # noqa: E501 - - partially update the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod # noqa: E501 - - partially update the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_ephemeralcontainers(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_ephemeralcontainers # noqa: E501 - - partially update ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_ephemeralcontainers(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_ephemeralcontainers_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_ephemeralcontainers # noqa: E501 - - partially update ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_ephemeralcontainers" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_ephemeralcontainers`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_ephemeralcontainers`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_ephemeralcontainers`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_status # noqa: E501 - - partially update status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_status # noqa: E501 - - partially update status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_template(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_template # noqa: E501 - - partially update the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_template(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_template_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_template_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_template # noqa: E501 - - partially update the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_template_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replication_controller(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller # noqa: E501 - - partially update the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replication_controller_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replication_controller_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller # noqa: E501 - - partially update the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replication_controller_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller_scale # noqa: E501 - - partially update scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replication_controller_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replication_controller_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller_scale # noqa: E501 - - partially update scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replication_controller_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replication_controller_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replication_controller_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replication_controller_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_replication_controller_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller_status # noqa: E501 - - partially update status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_replication_controller_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_replication_controller_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_replication_controller_status # noqa: E501 - - partially update status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_replication_controller_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_replication_controller_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_replication_controller_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_replication_controller_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_replication_controller_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_resource_quota(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_quota # noqa: E501 - - partially update the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_quota(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_resource_quota_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_resource_quota_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_quota # noqa: E501 - - partially update the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_quota_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_resource_quota_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_quota_status # noqa: E501 - - partially update status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_quota_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_resource_quota_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_resource_quota_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_quota_status # noqa: E501 - - partially update status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_quota_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_resource_quota_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_resource_quota_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_resource_quota_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_resource_quota_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_secret(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_secret # noqa: E501 - - partially update the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_secret(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Secret - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_secret_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_secret_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_secret # noqa: E501 - - partially update the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_secret_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Secret, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_secret`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_secret`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Secret', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_service(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service # noqa: E501 - - partially update the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_service_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_service_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service # noqa: E501 - - partially update the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_service`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_service`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_service_account(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service_account # noqa: E501 - - partially update the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service_account(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccount - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_service_account_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_service_account_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service_account # noqa: E501 - - partially update the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service_account_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccount, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccount', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_service_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service_status # noqa: E501 - - partially update status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_service_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_service_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_service_status # noqa: E501 - - partially update status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_service_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_service_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_service_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_node(self, name, body, **kwargs): # noqa: E501 - """patch_node # noqa: E501 - - partially update the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_node(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_node_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_node_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_node # noqa: E501 - - partially update the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_node_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_node`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_node_status(self, name, body, **kwargs): # noqa: E501 - """patch_node_status # noqa: E501 - - partially update status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_node_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_node_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_node_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_node_status # noqa: E501 - - partially update status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_node_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_node_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_node_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_node_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_persistent_volume(self, name, body, **kwargs): # noqa: E501 - """patch_persistent_volume # noqa: E501 - - partially update the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_persistent_volume(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_persistent_volume_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_persistent_volume_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_persistent_volume # noqa: E501 - - partially update the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_persistent_volume_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_persistent_volume`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_persistent_volume`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_persistent_volume_status(self, name, body, **kwargs): # noqa: E501 - """patch_persistent_volume_status # noqa: E501 - - partially update status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_persistent_volume_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_persistent_volume_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_persistent_volume_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_persistent_volume_status # noqa: E501 - - partially update status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_persistent_volume_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_persistent_volume_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_persistent_volume_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_persistent_volume_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_component_status(self, name, **kwargs): # noqa: E501 - """read_component_status # noqa: E501 - - read the specified ComponentStatus # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_component_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ComponentStatus (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ComponentStatus - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_component_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_component_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_component_status # noqa: E501 - - read the specified ComponentStatus # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_component_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ComponentStatus (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ComponentStatus, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_component_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_component_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/componentstatuses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ComponentStatus', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespace(self, name, **kwargs): # noqa: E501 - """read_namespace # noqa: E501 - - read the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespace(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespace_with_http_info(name, **kwargs) # noqa: E501 - - def read_namespace_with_http_info(self, name, **kwargs): # noqa: E501 - """read_namespace # noqa: E501 - - read the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespace_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespace`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespace_status(self, name, **kwargs): # noqa: E501 - """read_namespace_status # noqa: E501 - - read status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespace_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespace_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_namespace_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_namespace_status # noqa: E501 - - read status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespace_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespace_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespace_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_config_map(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_config_map # noqa: E501 - - read the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_config_map(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMap - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_config_map_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_config_map_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_config_map # noqa: E501 - - read the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_config_map_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMap, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMap', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_endpoints(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_endpoints # noqa: E501 - - read the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_endpoints(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Endpoints - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_endpoints_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_endpoints_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_endpoints # noqa: E501 - - read the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_endpoints_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Endpoints, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Endpoints', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_event(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_event # noqa: E501 - - read the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_event(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_event_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_event_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_event # noqa: E501 - - read the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_event_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_limit_range(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_limit_range # noqa: E501 - - read the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_limit_range(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRange - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_limit_range_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_limit_range_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_limit_range # noqa: E501 - - read the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_limit_range_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRange, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRange', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_persistent_volume_claim(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_persistent_volume_claim # noqa: E501 - - read the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_persistent_volume_claim(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_persistent_volume_claim_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_persistent_volume_claim_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_persistent_volume_claim # noqa: E501 - - read the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_persistent_volume_claim_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_persistent_volume_claim_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_persistent_volume_claim_status # noqa: E501 - - read status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_persistent_volume_claim_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_persistent_volume_claim_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_persistent_volume_claim_status # noqa: E501 - - read status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_persistent_volume_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_persistent_volume_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_persistent_volume_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod # noqa: E501 - - read the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod # noqa: E501 - - read the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_ephemeralcontainers(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_ephemeralcontainers # noqa: E501 - - read ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_ephemeralcontainers(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_ephemeralcontainers_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_ephemeralcontainers # noqa: E501 - - read ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_ephemeralcontainers" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_ephemeralcontainers`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_ephemeralcontainers`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_log(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_log # noqa: E501 - - read log of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_log(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container for which to stream logs. Defaults to only container if there is one container in the pod. - :param bool follow: Follow the log stream of the pod. Defaults to false. - :param bool insecure_skip_tls_verify_backend: insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the serving certificate of the backend it is connecting to. This will make the HTTPS connection between the apiserver and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real kubelet. If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept the actual log data coming from the real kubelet). - :param int limit_bytes: If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool previous: Return previous terminated container logs. Defaults to false. - :param int since_seconds: A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified. - :param int tail_lines: If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime - :param bool timestamps: If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_log_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_log_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_log # noqa: E501 - - read log of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_log_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str container: The container for which to stream logs. Defaults to only container if there is one container in the pod. - :param bool follow: Follow the log stream of the pod. Defaults to false. - :param bool insecure_skip_tls_verify_backend: insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the serving certificate of the backend it is connecting to. This will make the HTTPS connection between the apiserver and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real kubelet. If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept the actual log data coming from the real kubelet). - :param int limit_bytes: If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool previous: Return previous terminated container logs. Defaults to false. - :param int since_seconds: A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified. - :param int tail_lines: If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime - :param bool timestamps: If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'container', - 'follow', - 'insecure_skip_tls_verify_backend', - 'limit_bytes', - 'pretty', - 'previous', - 'since_seconds', - 'tail_lines', - 'timestamps' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_log" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_log`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_log`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'container' in local_var_params and local_var_params['container'] is not None: # noqa: E501 - query_params.append(('container', local_var_params['container'])) # noqa: E501 - if 'follow' in local_var_params and local_var_params['follow'] is not None: # noqa: E501 - query_params.append(('follow', local_var_params['follow'])) # noqa: E501 - if 'insecure_skip_tls_verify_backend' in local_var_params and local_var_params['insecure_skip_tls_verify_backend'] is not None: # noqa: E501 - query_params.append(('insecureSkipTLSVerifyBackend', local_var_params['insecure_skip_tls_verify_backend'])) # noqa: E501 - if 'limit_bytes' in local_var_params and local_var_params['limit_bytes'] is not None: # noqa: E501 - query_params.append(('limitBytes', local_var_params['limit_bytes'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'previous' in local_var_params and local_var_params['previous'] is not None: # noqa: E501 - query_params.append(('previous', local_var_params['previous'])) # noqa: E501 - if 'since_seconds' in local_var_params and local_var_params['since_seconds'] is not None: # noqa: E501 - query_params.append(('sinceSeconds', local_var_params['since_seconds'])) # noqa: E501 - if 'tail_lines' in local_var_params and local_var_params['tail_lines'] is not None: # noqa: E501 - query_params.append(('tailLines', local_var_params['tail_lines'])) # noqa: E501 - if 'timestamps' in local_var_params and local_var_params['timestamps'] is not None: # noqa: E501 - query_params.append(('timestamps', local_var_params['timestamps'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['text/plain', 'application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/log', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_status # noqa: E501 - - read status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_status # noqa: E501 - - read status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_template(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_template # noqa: E501 - - read the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_template(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_template_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_template_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_template # noqa: E501 - - read the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_template_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replication_controller(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller # noqa: E501 - - read the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replication_controller_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replication_controller_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller # noqa: E501 - - read the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replication_controller_scale(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller_scale # noqa: E501 - - read scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller_scale(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replication_controller_scale_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replication_controller_scale_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller_scale # noqa: E501 - - read scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller_scale_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replication_controller_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replication_controller_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replication_controller_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_replication_controller_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller_status # noqa: E501 - - read status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_replication_controller_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_replication_controller_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_replication_controller_status # noqa: E501 - - read status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_replication_controller_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_replication_controller_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_replication_controller_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_replication_controller_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_resource_quota(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_quota # noqa: E501 - - read the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_quota(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_resource_quota_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_resource_quota_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_quota # noqa: E501 - - read the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_quota_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_resource_quota_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_quota_status # noqa: E501 - - read status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_quota_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_resource_quota_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_resource_quota_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_quota_status # noqa: E501 - - read status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_quota_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_resource_quota_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_resource_quota_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_resource_quota_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_secret(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_secret # noqa: E501 - - read the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_secret(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Secret - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_secret_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_secret_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_secret # noqa: E501 - - read the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_secret_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Secret, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_secret`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Secret', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_service(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service # noqa: E501 - - read the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_service_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_service_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service # noqa: E501 - - read the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_service`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_service_account(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service_account # noqa: E501 - - read the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service_account(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccount - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_service_account_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_service_account_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service_account # noqa: E501 - - read the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service_account_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccount, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccount', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_service_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service_status # noqa: E501 - - read status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_service_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_service_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_service_status # noqa: E501 - - read status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_service_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_service_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_node(self, name, **kwargs): # noqa: E501 - """read_node # noqa: E501 - - read the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_node(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_node_with_http_info(name, **kwargs) # noqa: E501 - - def read_node_with_http_info(self, name, **kwargs): # noqa: E501 - """read_node # noqa: E501 - - read the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_node_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_node_status(self, name, **kwargs): # noqa: E501 - """read_node_status # noqa: E501 - - read status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_node_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_node_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_node_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_node_status # noqa: E501 - - read status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_node_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_node_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_node_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_persistent_volume(self, name, **kwargs): # noqa: E501 - """read_persistent_volume # noqa: E501 - - read the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_persistent_volume(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_persistent_volume_with_http_info(name, **kwargs) # noqa: E501 - - def read_persistent_volume_with_http_info(self, name, **kwargs): # noqa: E501 - """read_persistent_volume # noqa: E501 - - read the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_persistent_volume_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_persistent_volume`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_persistent_volume_status(self, name, **kwargs): # noqa: E501 - """read_persistent_volume_status # noqa: E501 - - read status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_persistent_volume_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_persistent_volume_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_persistent_volume_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_persistent_volume_status # noqa: E501 - - read status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_persistent_volume_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_persistent_volume_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_persistent_volume_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespace(self, name, body, **kwargs): # noqa: E501 - """replace_namespace # noqa: E501 - - replace the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespace_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_namespace_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_namespace # noqa: E501 - - replace the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespace" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespace`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespace`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespace_finalize(self, name, body, **kwargs): # noqa: E501 - """replace_namespace_finalize # noqa: E501 - - replace finalize of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace_finalize(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespace_finalize_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_namespace_finalize_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_namespace_finalize # noqa: E501 - - replace finalize of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace_finalize_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespace_finalize" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespace_finalize`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespace_finalize`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}/finalize', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespace_status(self, name, body, **kwargs): # noqa: E501 - """replace_namespace_status # noqa: E501 - - replace status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Namespace - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespace_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_namespace_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_namespace_status # noqa: E501 - - replace status of the specified Namespace # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespace_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Namespace (required) - :param V1Namespace body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Namespace, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespace_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespace_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespace_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Namespace', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_config_map(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_config_map # noqa: E501 - - replace the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_config_map(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ConfigMap body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ConfigMap - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_config_map_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_config_map_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_config_map # noqa: E501 - - replace the specified ConfigMap # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_config_map_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ConfigMap (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ConfigMap body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ConfigMap, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_config_map" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_config_map`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_config_map`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/configmaps/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ConfigMap', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_endpoints(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_endpoints # noqa: E501 - - replace the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_endpoints(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Endpoints body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Endpoints - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_endpoints_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_endpoints_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_endpoints # noqa: E501 - - replace the specified Endpoints # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_endpoints_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Endpoints (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Endpoints body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Endpoints, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_endpoints" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_endpoints`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_endpoints`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/endpoints/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Endpoints', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_event(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_event # noqa: E501 - - replace the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_event(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param CoreV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: CoreV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_event_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_event_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_event # noqa: E501 - - replace the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_event_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param CoreV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(CoreV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/events/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='CoreV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_limit_range(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_limit_range # noqa: E501 - - replace the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_limit_range(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LimitRange body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1LimitRange - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_limit_range_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_limit_range_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_limit_range # noqa: E501 - - replace the specified LimitRange # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_limit_range_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the LimitRange (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1LimitRange body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1LimitRange, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_limit_range" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_limit_range`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_limit_range`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/limitranges/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1LimitRange', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_persistent_volume_claim(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_persistent_volume_claim # noqa: E501 - - replace the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_persistent_volume_claim(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_persistent_volume_claim_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_persistent_volume_claim_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_persistent_volume_claim # noqa: E501 - - replace the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_persistent_volume_claim_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_persistent_volume_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_persistent_volume_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_persistent_volume_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_persistent_volume_claim_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_persistent_volume_claim_status # noqa: E501 - - replace status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_persistent_volume_claim_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolumeClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_persistent_volume_claim_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_persistent_volume_claim_status # noqa: E501 - - replace status of the specified PersistentVolumeClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_persistent_volume_claim_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolumeClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PersistentVolumeClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolumeClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_persistent_volume_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_persistent_volume_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_persistent_volume_claim_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_persistent_volume_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolumeClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod # noqa: E501 - - replace the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod # noqa: E501 - - replace the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_ephemeralcontainers(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_ephemeralcontainers # noqa: E501 - - replace ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_ephemeralcontainers(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_ephemeralcontainers_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_ephemeralcontainers # noqa: E501 - - replace ephemeralcontainers of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_ephemeralcontainers_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_ephemeralcontainers" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_ephemeralcontainers`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_ephemeralcontainers`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_ephemeralcontainers`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_status # noqa: E501 - - replace status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Pod - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_status # noqa: E501 - - replace status of the specified Pod # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Pod (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Pod body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Pod, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/pods/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Pod', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_template(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_template # noqa: E501 - - replace the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_template(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_template_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_template_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_template # noqa: E501 - - replace the specified PodTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_template_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/podtemplates/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replication_controller(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller # noqa: E501 - - replace the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replication_controller_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replication_controller_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller # noqa: E501 - - replace the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replication_controller" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replication_controller`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replication_controller`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replication_controller_scale(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller_scale # noqa: E501 - - replace scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller_scale(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Scale - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replication_controller_scale_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replication_controller_scale_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller_scale # noqa: E501 - - replace scale of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller_scale_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Scale (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Scale body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Scale, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replication_controller_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replication_controller_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replication_controller_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replication_controller_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Scale', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_replication_controller_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller_status # noqa: E501 - - replace status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ReplicationController - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_replication_controller_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_replication_controller_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_replication_controller_status # noqa: E501 - - replace status of the specified ReplicationController # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_replication_controller_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ReplicationController (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ReplicationController body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ReplicationController, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_replication_controller_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_replication_controller_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_replication_controller_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_replication_controller_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ReplicationController', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_resource_quota(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_quota # noqa: E501 - - replace the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_quota(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_resource_quota_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_resource_quota_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_quota # noqa: E501 - - replace the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_quota_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_resource_quota" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_resource_quota`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_resource_quota`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_resource_quota_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_quota_status # noqa: E501 - - replace status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_quota_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ResourceQuota - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_resource_quota_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_resource_quota_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_quota_status # noqa: E501 - - replace status of the specified ResourceQuota # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_quota_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceQuota (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ResourceQuota body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ResourceQuota, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_resource_quota_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_resource_quota_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_resource_quota_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_resource_quota_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/resourcequotas/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ResourceQuota', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_secret(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_secret # noqa: E501 - - replace the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_secret(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Secret body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Secret - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_secret_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_secret_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_secret # noqa: E501 - - replace the specified Secret # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_secret_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Secret (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Secret body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Secret, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_secret" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_secret`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_secret`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_secret`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/secrets/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Secret', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_service(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service # noqa: E501 - - replace the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_service_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_service_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service # noqa: E501 - - replace the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_service" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_service`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_service`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_service`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_service_account(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service_account # noqa: E501 - - replace the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service_account(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ServiceAccount body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ServiceAccount - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_service_account_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_service_account_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service_account # noqa: E501 - - replace the specified ServiceAccount # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service_account_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceAccount (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1ServiceAccount body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ServiceAccount, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_service_account" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_service_account`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_service_account`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/serviceaccounts/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ServiceAccount', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_service_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service_status # noqa: E501 - - replace status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Service - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_service_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_service_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_service_status # noqa: E501 - - replace status of the specified Service # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_service_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Service (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Service body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Service, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_service_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_service_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_service_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_service_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/namespaces/{namespace}/services/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Service', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_node(self, name, body, **kwargs): # noqa: E501 - """replace_node # noqa: E501 - - replace the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_node(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_node_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_node_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_node # noqa: E501 - - replace the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_node_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_node`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_node_status(self, name, body, **kwargs): # noqa: E501 - """replace_node_status # noqa: E501 - - replace status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_node_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Node - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_node_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_node_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_node_status # noqa: E501 - - replace status of the specified Node # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_node_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Node (required) - :param V1Node body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Node, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_node_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_node_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_node_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/nodes/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Node', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_persistent_volume(self, name, body, **kwargs): # noqa: E501 - """replace_persistent_volume # noqa: E501 - - replace the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_persistent_volume(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_persistent_volume_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_persistent_volume_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_persistent_volume # noqa: E501 - - replace the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_persistent_volume_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_persistent_volume" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_persistent_volume`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_persistent_volume`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_persistent_volume_status(self, name, body, **kwargs): # noqa: E501 - """replace_persistent_volume_status # noqa: E501 - - replace status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_persistent_volume_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PersistentVolume - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_persistent_volume_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_persistent_volume_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_persistent_volume_status # noqa: E501 - - replace status of the specified PersistentVolume # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_persistent_volume_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PersistentVolume (required) - :param V1PersistentVolume body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PersistentVolume, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_persistent_volume_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_persistent_volume_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_persistent_volume_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/api/v1/persistentvolumes/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PersistentVolume', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/custom_objects_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/custom_objects_api.py deleted file mode 100644 index 31b887d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/custom_objects_api.py +++ /dev/null @@ -1,4509 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class CustomObjectsApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_cluster_custom_object(self, group, version, plural, body, **kwargs): # noqa: E501 - """create_cluster_custom_object # noqa: E501 - - Creates a cluster scoped Custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_custom_object(group, version, plural, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param object body: The JSON schema of the Resource to create. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_cluster_custom_object_with_http_info(group, version, plural, body, **kwargs) # noqa: E501 - - def create_cluster_custom_object_with_http_info(self, group, version, plural, body, **kwargs): # noqa: E501 - """create_cluster_custom_object # noqa: E501 - - Creates a cluster scoped Custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_custom_object_with_http_info(group, version, plural, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param object body: The JSON schema of the Resource to create. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `create_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `create_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `create_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_custom_object(self, group, version, namespace, plural, body, **kwargs): # noqa: E501 - """create_namespaced_custom_object # noqa: E501 - - Creates a namespace scoped Custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_custom_object(group, version, namespace, plural, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param object body: The JSON schema of the Resource to create. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_custom_object_with_http_info(group, version, namespace, plural, body, **kwargs) # noqa: E501 - - def create_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, body, **kwargs): # noqa: E501 - """create_namespaced_custom_object # noqa: E501 - - Creates a namespace scoped Custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_custom_object_with_http_info(group, version, namespace, plural, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param object body: The JSON schema of the Resource to create. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `create_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `create_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `create_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_cluster_custom_object(self, group, version, plural, name, **kwargs): # noqa: E501 - """delete_cluster_custom_object # noqa: E501 - - Deletes the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_custom_object(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_cluster_custom_object_with_http_info(group, version, plural, name, **kwargs) # noqa: E501 - - def delete_cluster_custom_object_with_http_info(self, group, version, plural, name, **kwargs): # noqa: E501 - """delete_cluster_custom_object # noqa: E501 - - Deletes the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_custom_object_with_http_info(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'dry_run', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `delete_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `delete_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `delete_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_cluster_custom_object(self, group, version, plural, **kwargs): # noqa: E501 - """delete_collection_cluster_custom_object # noqa: E501 - - Delete collection of cluster scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_custom_object(group, version, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_cluster_custom_object_with_http_info(group, version, plural, **kwargs) # noqa: E501 - - def delete_collection_cluster_custom_object_with_http_info(self, group, version, plural, **kwargs): # noqa: E501 - """delete_collection_cluster_custom_object # noqa: E501 - - Delete collection of cluster scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_custom_object_with_http_info(group, version, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'pretty', - 'label_selector', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'dry_run', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `delete_collection_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `delete_collection_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `delete_collection_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_custom_object(self, group, version, namespace, plural, **kwargs): # noqa: E501 - """delete_collection_namespaced_custom_object # noqa: E501 - - Delete collection of namespace scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_custom_object(group, version, namespace, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_custom_object_with_http_info(group, version, namespace, plural, **kwargs) # noqa: E501 - - def delete_collection_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, **kwargs): # noqa: E501 - """delete_collection_namespaced_custom_object # noqa: E501 - - Delete collection of namespace scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_custom_object_with_http_info(group, version, namespace, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'pretty', - 'label_selector', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'dry_run', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `delete_collection_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `delete_collection_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `delete_collection_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_custom_object(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """delete_namespaced_custom_object # noqa: E501 - - Deletes the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_custom_object(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, **kwargs) # noqa: E501 - - def delete_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """delete_namespaced_custom_object # noqa: E501 - - Deletes the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'dry_run', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `delete_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `delete_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `delete_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, group, version, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(group, version, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(group, version, **kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, group, version, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(group, version, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_api_resources`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_api_resources`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_cluster_custom_object(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object # noqa: E501 - - Returns a cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_cluster_custom_object_with_http_info(group, version, plural, name, **kwargs) # noqa: E501 - - def get_cluster_custom_object_with_http_info(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object # noqa: E501 - - Returns a cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object_with_http_info(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_cluster_custom_object_scale(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object_scale # noqa: E501 - - read scale of the specified custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object_scale(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_cluster_custom_object_scale_with_http_info(group, version, plural, name, **kwargs) # noqa: E501 - - def get_cluster_custom_object_scale_with_http_info(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object_scale # noqa: E501 - - read scale of the specified custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object_scale_with_http_info(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_cluster_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_cluster_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_cluster_custom_object_status(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object_status # noqa: E501 - - read status of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object_status(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_cluster_custom_object_status_with_http_info(group, version, plural, name, **kwargs) # noqa: E501 - - def get_cluster_custom_object_status_with_http_info(self, group, version, plural, name, **kwargs): # noqa: E501 - """get_cluster_custom_object_status # noqa: E501 - - read status of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_cluster_custom_object_status_with_http_info(group, version, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_cluster_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_cluster_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_namespaced_custom_object(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object # noqa: E501 - - Returns a namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, **kwargs) # noqa: E501 - - def get_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object # noqa: E501 - - Returns a namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `get_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_namespaced_custom_object_scale(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object_scale # noqa: E501 - - read scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object_scale(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, **kwargs) # noqa: E501 - - def get_namespaced_custom_object_scale_with_http_info(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object_scale # noqa: E501 - - read scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_namespaced_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `get_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_namespaced_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_namespaced_custom_object_status(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object_status # noqa: E501 - - read status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object_status(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, **kwargs) # noqa: E501 - - def get_namespaced_custom_object_status_with_http_info(self, group, version, namespace, plural, name, **kwargs): # noqa: E501 - """get_namespaced_custom_object_status # noqa: E501 - - read status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_namespaced_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `get_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `get_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `get_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `get_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `get_namespaced_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_cluster_custom_object(self, group, version, plural, **kwargs): # noqa: E501 - """list_cluster_custom_object # noqa: E501 - - list or watch cluster scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_custom_object(group, version, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv. - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_cluster_custom_object_with_http_info(group, version, plural, **kwargs) # noqa: E501 - - def list_cluster_custom_object_with_http_info(self, group, version, plural, **kwargs): # noqa: E501 - """list_cluster_custom_object # noqa: E501 - - list or watch cluster scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_custom_object_with_http_info(group, version, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv. - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `list_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `list_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `list_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/json;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_custom_object(self, group, version, namespace, plural, **kwargs): # noqa: E501 - """list_namespaced_custom_object # noqa: E501 - - list or watch namespace scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_custom_object(group, version, namespace, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv. - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_custom_object_with_http_info(group, version, namespace, plural, **kwargs) # noqa: E501 - - def list_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, **kwargs): # noqa: E501 - """list_namespaced_custom_object # noqa: E501 - - list or watch namespace scoped custom objects # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_custom_object_with_http_info(group, version, namespace, plural, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: The custom resource's group name (required) - :param str version: The custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: The custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str pretty: If 'true', then the output is pretty printed. - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv. - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `list_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `list_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `list_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/json;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_custom_object(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object # noqa: E501 - - patch the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to patch. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_custom_object_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def patch_cluster_custom_object_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object # noqa: E501 - - patch the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to patch. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_custom_object_scale(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object_scale # noqa: E501 - - partially update scale of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object_scale(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_custom_object_scale_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def patch_cluster_custom_object_scale_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object_scale # noqa: E501 - - partially update scale of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object_scale_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_custom_object_status(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object_status # noqa: E501 - - partially update status of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object_status(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_custom_object_status_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def patch_cluster_custom_object_status_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """patch_cluster_custom_object_status # noqa: E501 - - partially update status of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_custom_object_status_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_custom_object(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object # noqa: E501 - - patch the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to patch. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def patch_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object # noqa: E501 - - patch the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to patch. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_custom_object_scale(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object_scale # noqa: E501 - - partially update scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object_scale(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def patch_namespaced_custom_object_scale_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object_scale # noqa: E501 - - partially update scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_custom_object_status(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object_status # noqa: E501 - - partially update status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object_status(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def patch_namespaced_custom_object_status_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """patch_namespaced_custom_object_status # noqa: E501 - - partially update status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/merge-patch+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_custom_object(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object # noqa: E501 - - replace the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to replace. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_custom_object_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def replace_cluster_custom_object_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object # noqa: E501 - - replace the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom object's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to replace. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_custom_object_scale(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object_scale # noqa: E501 - - replace scale of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object_scale(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_custom_object_scale_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def replace_cluster_custom_object_scale_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object_scale # noqa: E501 - - replace scale of the specified cluster scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object_scale_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_custom_object_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_custom_object_status(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object_status # noqa: E501 - - replace status of the cluster scoped specified custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object_status(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_custom_object_status_with_http_info(group, version, plural, name, body, **kwargs) # noqa: E501 - - def replace_cluster_custom_object_status_with_http_info(self, group, version, plural, name, body, **kwargs): # noqa: E501 - """replace_cluster_custom_object_status # noqa: E501 - - replace status of the cluster scoped specified custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_custom_object_status_with_http_info(group, version, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_custom_object_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/{plural}/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_custom_object(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object # noqa: E501 - - replace the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to replace. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def replace_namespaced_custom_object_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object # noqa: E501 - - replace the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: The JSON schema of the Resource to replace. (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_custom_object" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_custom_object`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_custom_object`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_custom_object_scale(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object_scale # noqa: E501 - - replace scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object_scale(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def replace_namespaced_custom_object_scale_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object_scale # noqa: E501 - - replace scale of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object_scale_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_custom_object_scale" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_custom_object_scale`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/scale', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_custom_object_status(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object_status # noqa: E501 - - replace status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object_status(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: object - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, body, **kwargs) # noqa: E501 - - def replace_namespaced_custom_object_status_with_http_info(self, group, version, namespace, plural, name, body, **kwargs): # noqa: E501 - """replace_namespaced_custom_object_status # noqa: E501 - - replace status of the specified namespace scoped custom object # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_custom_object_status_with_http_info(group, version, namespace, plural, name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str group: the custom resource's group (required) - :param str version: the custom resource's version (required) - :param str namespace: The custom resource's namespace (required) - :param str plural: the custom resource's plural name. For TPRs this would be lowercase plural kind. (required) - :param str name: the custom object's name (required) - :param object body: (required) - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(object, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'group', - 'version', - 'namespace', - 'plural', - 'name', - 'body', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_custom_object_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'group' is set - if self.api_client.client_side_validation and ('group' not in local_var_params or # noqa: E501 - local_var_params['group'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `group` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'version' is set - if self.api_client.client_side_validation and ('version' not in local_var_params or # noqa: E501 - local_var_params['version'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `version` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'plural' is set - if self.api_client.client_side_validation and ('plural' not in local_var_params or # noqa: E501 - local_var_params['plural'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `plural` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_custom_object_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'group' in local_var_params: - path_params['group'] = local_var_params['group'] # noqa: E501 - if 'version' in local_var_params: - path_params['version'] = local_var_params['version'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - if 'plural' in local_var_params: - path_params['plural'] = local_var_params['plural'] # noqa: E501 - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='object', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_api.py deleted file mode 100644 index 5077748..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class DiscoveryApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_v1_api.py deleted file mode 100644 index 363c237..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/discovery_v1_api.py +++ /dev/null @@ -1,1392 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class DiscoveryV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_endpoint_slice(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_endpoint_slice # noqa: E501 - - create an EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_endpoint_slice(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1EndpointSlice body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSlice - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_endpoint_slice_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_endpoint_slice_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_endpoint_slice # noqa: E501 - - create an EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_endpoint_slice_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1EndpointSlice body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSlice, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSlice', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_endpoint_slice(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_endpoint_slice # noqa: E501 - - delete collection of EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_endpoint_slice(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_endpoint_slice_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_endpoint_slice_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_endpoint_slice # noqa: E501 - - delete collection of EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_endpoint_slice_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_endpoint_slice(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_endpoint_slice # noqa: E501 - - delete an EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_endpoint_slice(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_endpoint_slice_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_endpoint_slice_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_endpoint_slice # noqa: E501 - - delete an EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_endpoint_slice_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_endpoint_slice_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_endpoint_slice_for_all_namespaces # noqa: E501 - - list or watch objects of kind EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_endpoint_slice_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSliceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_endpoint_slice_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_endpoint_slice_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_endpoint_slice_for_all_namespaces # noqa: E501 - - list or watch objects of kind EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_endpoint_slice_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSliceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_endpoint_slice_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/endpointslices', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSliceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_endpoint_slice(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_endpoint_slice # noqa: E501 - - list or watch objects of kind EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_endpoint_slice(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSliceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_endpoint_slice_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_endpoint_slice_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_endpoint_slice # noqa: E501 - - list or watch objects of kind EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_endpoint_slice_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSliceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSliceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_endpoint_slice(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_endpoint_slice # noqa: E501 - - partially update the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_endpoint_slice(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSlice - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_endpoint_slice_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_endpoint_slice_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_endpoint_slice # noqa: E501 - - partially update the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_endpoint_slice_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSlice, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSlice', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_endpoint_slice(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_endpoint_slice # noqa: E501 - - read the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_endpoint_slice(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSlice - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_endpoint_slice_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_endpoint_slice_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_endpoint_slice # noqa: E501 - - read the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_endpoint_slice_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSlice, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSlice', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_endpoint_slice(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_endpoint_slice # noqa: E501 - - replace the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_endpoint_slice(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1EndpointSlice body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1EndpointSlice - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_endpoint_slice_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_endpoint_slice_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_endpoint_slice # noqa: E501 - - replace the specified EndpointSlice # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_endpoint_slice_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the EndpointSlice (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1EndpointSlice body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1EndpointSlice, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_endpoint_slice" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_endpoint_slice`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_endpoint_slice`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1EndpointSlice', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/events_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/events_api.py deleted file mode 100644 index a73b01c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/events_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class EventsApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/events_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/events_v1_api.py deleted file mode 100644 index 5fd0944..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/events_v1_api.py +++ /dev/null @@ -1,1392 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class EventsV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_event(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_event # noqa: E501 - - create an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_event(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param EventsV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_event_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_event_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_event # noqa: E501 - - create an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_event_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param EventsV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_event(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_event # noqa: E501 - - delete collection of Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_event(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_event_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_event_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_event # noqa: E501 - - delete collection of Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_event_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_event(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_event # noqa: E501 - - delete an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_event(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_event_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_event_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_event # noqa: E501 - - delete an Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_event_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_event_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_event_for_all_namespaces # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_event_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1EventList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_event_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_event_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_event_for_all_namespaces # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_event_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1EventList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_event_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/events', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1EventList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_event(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_event # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_event(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1EventList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_event_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_event_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_event # noqa: E501 - - list or watch objects of kind Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_event_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1EventList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1EventList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_event(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_event # noqa: E501 - - partially update the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_event(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_event_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_event_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_event # noqa: E501 - - partially update the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_event_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_event(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_event # noqa: E501 - - read the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_event(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_event_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_event_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_event # noqa: E501 - - read the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_event_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_event(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_event # noqa: E501 - - replace the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_event(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param EventsV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: EventsV1Event - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_event_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_event_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_event # noqa: E501 - - replace the specified Event # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_event_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Event (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param EventsV1Event body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(EventsV1Event, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_event" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_event`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_event`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_event`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='EventsV1Event', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_api.py deleted file mode 100644 index c6cc89f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class FlowcontrolApiserverApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1_api.py deleted file mode 100644 index 0f3d2aa..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1_api.py +++ /dev/null @@ -1,3024 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class FlowcontrolApiserverV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_flow_schema(self, body, **kwargs): # noqa: E501 - """create_flow_schema # noqa: E501 - - create a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_flow_schema(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_flow_schema_with_http_info(body, **kwargs) # noqa: E501 - - def create_flow_schema_with_http_info(self, body, **kwargs): # noqa: E501 - """create_flow_schema # noqa: E501 - - create a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_flow_schema_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_priority_level_configuration(self, body, **kwargs): # noqa: E501 - """create_priority_level_configuration # noqa: E501 - - create a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_level_configuration(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_priority_level_configuration_with_http_info(body, **kwargs) # noqa: E501 - - def create_priority_level_configuration_with_http_info(self, body, **kwargs): # noqa: E501 - """create_priority_level_configuration # noqa: E501 - - create a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_level_configuration_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_flow_schema(self, **kwargs): # noqa: E501 - """delete_collection_flow_schema # noqa: E501 - - delete collection of FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_flow_schema(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_flow_schema_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_flow_schema_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_flow_schema # noqa: E501 - - delete collection of FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_flow_schema_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_priority_level_configuration(self, **kwargs): # noqa: E501 - """delete_collection_priority_level_configuration # noqa: E501 - - delete collection of PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_level_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_priority_level_configuration_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_priority_level_configuration_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_priority_level_configuration # noqa: E501 - - delete collection of PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_level_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_flow_schema(self, name, **kwargs): # noqa: E501 - """delete_flow_schema # noqa: E501 - - delete a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_flow_schema(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_flow_schema_with_http_info(name, **kwargs) # noqa: E501 - - def delete_flow_schema_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_flow_schema # noqa: E501 - - delete a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_flow_schema_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_priority_level_configuration(self, name, **kwargs): # noqa: E501 - """delete_priority_level_configuration # noqa: E501 - - delete a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_level_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_priority_level_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def delete_priority_level_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_priority_level_configuration # noqa: E501 - - delete a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_level_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_flow_schema(self, **kwargs): # noqa: E501 - """list_flow_schema # noqa: E501 - - list or watch objects of kind FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_flow_schema(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchemaList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_flow_schema_with_http_info(**kwargs) # noqa: E501 - - def list_flow_schema_with_http_info(self, **kwargs): # noqa: E501 - """list_flow_schema # noqa: E501 - - list or watch objects of kind FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_flow_schema_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchemaList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchemaList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_priority_level_configuration(self, **kwargs): # noqa: E501 - """list_priority_level_configuration # noqa: E501 - - list or watch objects of kind PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_level_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfigurationList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_priority_level_configuration_with_http_info(**kwargs) # noqa: E501 - - def list_priority_level_configuration_with_http_info(self, **kwargs): # noqa: E501 - """list_priority_level_configuration # noqa: E501 - - list or watch objects of kind PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_level_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfigurationList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfigurationList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_flow_schema(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema # noqa: E501 - - partially update the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_flow_schema_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_flow_schema_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema # noqa: E501 - - partially update the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_flow_schema`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_flow_schema_status(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema_status # noqa: E501 - - partially update status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_flow_schema_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_flow_schema_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema_status # noqa: E501 - - partially update status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_flow_schema_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_priority_level_configuration(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration # noqa: E501 - - partially update the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_priority_level_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_priority_level_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration # noqa: E501 - - partially update the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_priority_level_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_priority_level_configuration_status(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration_status # noqa: E501 - - partially update status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_priority_level_configuration_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_priority_level_configuration_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration_status # noqa: E501 - - partially update status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_priority_level_configuration_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_flow_schema(self, name, **kwargs): # noqa: E501 - """read_flow_schema # noqa: E501 - - read the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_flow_schema_with_http_info(name, **kwargs) # noqa: E501 - - def read_flow_schema_with_http_info(self, name, **kwargs): # noqa: E501 - """read_flow_schema # noqa: E501 - - read the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_flow_schema_status(self, name, **kwargs): # noqa: E501 - """read_flow_schema_status # noqa: E501 - - read status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_flow_schema_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_flow_schema_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_flow_schema_status # noqa: E501 - - read status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_priority_level_configuration(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration # noqa: E501 - - read the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_priority_level_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def read_priority_level_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration # noqa: E501 - - read the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_priority_level_configuration_status(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration_status # noqa: E501 - - read status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_priority_level_configuration_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_priority_level_configuration_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration_status # noqa: E501 - - read status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_flow_schema(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema # noqa: E501 - - replace the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_flow_schema_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_flow_schema_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema # noqa: E501 - - replace the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_flow_schema`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_flow_schema_status(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema_status # noqa: E501 - - replace status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_flow_schema_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_flow_schema_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema_status # noqa: E501 - - replace status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_flow_schema_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_priority_level_configuration(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration # noqa: E501 - - replace the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_priority_level_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_priority_level_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration # noqa: E501 - - replace the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_priority_level_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_priority_level_configuration_status(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration_status # noqa: E501 - - replace status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_priority_level_configuration_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_priority_level_configuration_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration_status # noqa: E501 - - replace status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_priority_level_configuration_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1beta3_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1beta3_api.py deleted file mode 100644 index 18d08b9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/flowcontrol_apiserver_v1beta3_api.py +++ /dev/null @@ -1,3024 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class FlowcontrolApiserverV1beta3Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_flow_schema(self, body, **kwargs): # noqa: E501 - """create_flow_schema # noqa: E501 - - create a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_flow_schema(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_flow_schema_with_http_info(body, **kwargs) # noqa: E501 - - def create_flow_schema_with_http_info(self, body, **kwargs): # noqa: E501 - """create_flow_schema # noqa: E501 - - create a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_flow_schema_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_priority_level_configuration(self, body, **kwargs): # noqa: E501 - """create_priority_level_configuration # noqa: E501 - - create a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_level_configuration(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_priority_level_configuration_with_http_info(body, **kwargs) # noqa: E501 - - def create_priority_level_configuration_with_http_info(self, body, **kwargs): # noqa: E501 - """create_priority_level_configuration # noqa: E501 - - create a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_level_configuration_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_flow_schema(self, **kwargs): # noqa: E501 - """delete_collection_flow_schema # noqa: E501 - - delete collection of FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_flow_schema(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_flow_schema_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_flow_schema_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_flow_schema # noqa: E501 - - delete collection of FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_flow_schema_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_priority_level_configuration(self, **kwargs): # noqa: E501 - """delete_collection_priority_level_configuration # noqa: E501 - - delete collection of PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_level_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_priority_level_configuration_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_priority_level_configuration_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_priority_level_configuration # noqa: E501 - - delete collection of PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_level_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_flow_schema(self, name, **kwargs): # noqa: E501 - """delete_flow_schema # noqa: E501 - - delete a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_flow_schema(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_flow_schema_with_http_info(name, **kwargs) # noqa: E501 - - def delete_flow_schema_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_flow_schema # noqa: E501 - - delete a FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_flow_schema_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_priority_level_configuration(self, name, **kwargs): # noqa: E501 - """delete_priority_level_configuration # noqa: E501 - - delete a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_level_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_priority_level_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def delete_priority_level_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_priority_level_configuration # noqa: E501 - - delete a PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_level_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_flow_schema(self, **kwargs): # noqa: E501 - """list_flow_schema # noqa: E501 - - list or watch objects of kind FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_flow_schema(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchemaList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_flow_schema_with_http_info(**kwargs) # noqa: E501 - - def list_flow_schema_with_http_info(self, **kwargs): # noqa: E501 - """list_flow_schema # noqa: E501 - - list or watch objects of kind FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_flow_schema_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchemaList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchemaList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_priority_level_configuration(self, **kwargs): # noqa: E501 - """list_priority_level_configuration # noqa: E501 - - list or watch objects of kind PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_level_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfigurationList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_priority_level_configuration_with_http_info(**kwargs) # noqa: E501 - - def list_priority_level_configuration_with_http_info(self, **kwargs): # noqa: E501 - """list_priority_level_configuration # noqa: E501 - - list or watch objects of kind PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_level_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfigurationList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfigurationList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_flow_schema(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema # noqa: E501 - - partially update the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_flow_schema_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_flow_schema_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema # noqa: E501 - - partially update the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_flow_schema`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_flow_schema_status(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema_status # noqa: E501 - - partially update status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_flow_schema_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_flow_schema_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_flow_schema_status # noqa: E501 - - partially update status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_flow_schema_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_flow_schema_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_priority_level_configuration(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration # noqa: E501 - - partially update the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_priority_level_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_priority_level_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration # noqa: E501 - - partially update the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_priority_level_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_priority_level_configuration_status(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration_status # noqa: E501 - - partially update status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_priority_level_configuration_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_priority_level_configuration_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_priority_level_configuration_status # noqa: E501 - - partially update status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_level_configuration_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_priority_level_configuration_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_flow_schema(self, name, **kwargs): # noqa: E501 - """read_flow_schema # noqa: E501 - - read the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_flow_schema_with_http_info(name, **kwargs) # noqa: E501 - - def read_flow_schema_with_http_info(self, name, **kwargs): # noqa: E501 - """read_flow_schema # noqa: E501 - - read the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_flow_schema_status(self, name, **kwargs): # noqa: E501 - """read_flow_schema_status # noqa: E501 - - read status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_flow_schema_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_flow_schema_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_flow_schema_status # noqa: E501 - - read status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_flow_schema_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_priority_level_configuration(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration # noqa: E501 - - read the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_priority_level_configuration_with_http_info(name, **kwargs) # noqa: E501 - - def read_priority_level_configuration_with_http_info(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration # noqa: E501 - - read the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_priority_level_configuration_status(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration_status # noqa: E501 - - read status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_priority_level_configuration_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_priority_level_configuration_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_priority_level_configuration_status # noqa: E501 - - read status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_level_configuration_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_flow_schema(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema # noqa: E501 - - replace the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_flow_schema_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_flow_schema_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema # noqa: E501 - - replace the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_flow_schema" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_flow_schema`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_flow_schema`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_flow_schema_status(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema_status # noqa: E501 - - replace status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3FlowSchema - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_flow_schema_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_flow_schema_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_flow_schema_status # noqa: E501 - - replace status of the specified FlowSchema # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_flow_schema_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the FlowSchema (required) - :param V1beta3FlowSchema body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3FlowSchema, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_flow_schema_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_flow_schema_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_flow_schema_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3FlowSchema', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_priority_level_configuration(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration # noqa: E501 - - replace the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_priority_level_configuration_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_priority_level_configuration_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration # noqa: E501 - - replace the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_priority_level_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_priority_level_configuration`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_priority_level_configuration`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_priority_level_configuration_status(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration_status # noqa: E501 - - replace status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1beta3PriorityLevelConfiguration - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_priority_level_configuration_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_priority_level_configuration_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_priority_level_configuration_status # noqa: E501 - - replace status of the specified PriorityLevelConfiguration # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_level_configuration_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityLevelConfiguration (required) - :param V1beta3PriorityLevelConfiguration body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1beta3PriorityLevelConfiguration, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_priority_level_configuration_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_priority_level_configuration_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_priority_level_configuration_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1beta3PriorityLevelConfiguration', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_api.py deleted file mode 100644 index 452fad7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class InternalApiserverApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_v1alpha1_api.py deleted file mode 100644 index ec48ab5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/internal_apiserver_v1alpha1_api.py +++ /dev/null @@ -1,1583 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class InternalApiserverV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_storage_version(self, body, **kwargs): # noqa: E501 - """create_storage_version # noqa: E501 - - create a StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_storage_version(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_storage_version_with_http_info(body, **kwargs) # noqa: E501 - - def create_storage_version_with_http_info(self, body, **kwargs): # noqa: E501 - """create_storage_version # noqa: E501 - - create a StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_storage_version_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_storage_version`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_storage_version(self, **kwargs): # noqa: E501 - """delete_collection_storage_version # noqa: E501 - - delete collection of StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_storage_version(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_storage_version_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_storage_version_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_storage_version # noqa: E501 - - delete collection of StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_storage_version_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_storage_version(self, name, **kwargs): # noqa: E501 - """delete_storage_version # noqa: E501 - - delete a StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_storage_version(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_storage_version_with_http_info(name, **kwargs) # noqa: E501 - - def delete_storage_version_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_storage_version # noqa: E501 - - delete a StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_storage_version_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_storage_version`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_storage_version(self, **kwargs): # noqa: E501 - """list_storage_version # noqa: E501 - - list or watch objects of kind StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_storage_version(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersionList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_storage_version_with_http_info(**kwargs) # noqa: E501 - - def list_storage_version_with_http_info(self, **kwargs): # noqa: E501 - """list_storage_version # noqa: E501 - - list or watch objects of kind StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_storage_version_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersionList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersionList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_storage_version(self, name, body, **kwargs): # noqa: E501 - """patch_storage_version # noqa: E501 - - partially update the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_version(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_storage_version_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_storage_version_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_storage_version # noqa: E501 - - partially update the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_version_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_storage_version`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_storage_version`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_storage_version_status(self, name, body, **kwargs): # noqa: E501 - """patch_storage_version_status # noqa: E501 - - partially update status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_version_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_storage_version_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_storage_version_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_storage_version_status # noqa: E501 - - partially update status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_version_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_storage_version_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_storage_version_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_storage_version_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_storage_version(self, name, **kwargs): # noqa: E501 - """read_storage_version # noqa: E501 - - read the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_version(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_storage_version_with_http_info(name, **kwargs) # noqa: E501 - - def read_storage_version_with_http_info(self, name, **kwargs): # noqa: E501 - """read_storage_version # noqa: E501 - - read the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_version_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_storage_version`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_storage_version_status(self, name, **kwargs): # noqa: E501 - """read_storage_version_status # noqa: E501 - - read status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_version_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_storage_version_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_storage_version_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_storage_version_status # noqa: E501 - - read status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_version_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_storage_version_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_storage_version_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_storage_version(self, name, body, **kwargs): # noqa: E501 - """replace_storage_version # noqa: E501 - - replace the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_version(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_storage_version_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_storage_version_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_storage_version # noqa: E501 - - replace the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_version_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_storage_version" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_storage_version`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_storage_version`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_storage_version_status(self, name, body, **kwargs): # noqa: E501 - """replace_storage_version_status # noqa: E501 - - replace status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_version_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1StorageVersion - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_storage_version_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_storage_version_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_storage_version_status # noqa: E501 - - replace status of the specified StorageVersion # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_version_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageVersion (required) - :param V1alpha1StorageVersion body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1StorageVersion, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_storage_version_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_storage_version_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_storage_version_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1StorageVersion', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/logs_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/logs_api.py deleted file mode 100644 index 43db464..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/logs_api.py +++ /dev/null @@ -1,244 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class LogsApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def log_file_handler(self, logpath, **kwargs): # noqa: E501 - """log_file_handler # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.log_file_handler(logpath, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str logpath: path to the log (required) - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: None - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.log_file_handler_with_http_info(logpath, **kwargs) # noqa: E501 - - def log_file_handler_with_http_info(self, logpath, **kwargs): # noqa: E501 - """log_file_handler # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.log_file_handler_with_http_info(logpath, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str logpath: path to the log (required) - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: None - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'logpath' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method log_file_handler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'logpath' is set - if self.api_client.client_side_validation and ('logpath' not in local_var_params or # noqa: E501 - local_var_params['logpath'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `logpath` when calling `log_file_handler`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'logpath' in local_var_params: - path_params['logpath'] = local_var_params['logpath'] # noqa: E501 - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/logs/{logpath}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type=None, # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def log_file_list_handler(self, **kwargs): # noqa: E501 - """log_file_list_handler # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.log_file_list_handler(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: None - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.log_file_list_handler_with_http_info(**kwargs) # noqa: E501 - - def log_file_list_handler_with_http_info(self, **kwargs): # noqa: E501 - """log_file_list_handler # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.log_file_list_handler_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: None - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method log_file_list_handler" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/logs/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type=None, # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_api.py deleted file mode 100644 index 50f43d8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class NetworkingApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1_api.py deleted file mode 100644 index f361ea7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1_api.py +++ /dev/null @@ -1,4110 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class NetworkingV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_ingress_class(self, body, **kwargs): # noqa: E501 - """create_ingress_class # noqa: E501 - - create an IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_ingress_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1IngressClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_ingress_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_ingress_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_ingress_class # noqa: E501 - - create an IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_ingress_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1IngressClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_ingress_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_ingress(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_ingress # noqa: E501 - - create an Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_ingress(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_ingress_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_ingress_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_ingress # noqa: E501 - - create an Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_ingress_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_network_policy(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_network_policy # noqa: E501 - - create a NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_network_policy(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1NetworkPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_network_policy_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_network_policy_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_network_policy # noqa: E501 - - create a NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_network_policy_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1NetworkPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_ingress_class(self, **kwargs): # noqa: E501 - """delete_collection_ingress_class # noqa: E501 - - delete collection of IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_ingress_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_ingress_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_ingress_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_ingress_class # noqa: E501 - - delete collection of IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_ingress_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_ingress(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_ingress # noqa: E501 - - delete collection of Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_ingress(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_ingress_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_ingress_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_ingress # noqa: E501 - - delete collection of Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_ingress_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_network_policy(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_network_policy # noqa: E501 - - delete collection of NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_network_policy(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_network_policy_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_network_policy_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_network_policy # noqa: E501 - - delete collection of NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_network_policy_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_ingress_class(self, name, **kwargs): # noqa: E501 - """delete_ingress_class # noqa: E501 - - delete an IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_ingress_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_ingress_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_ingress_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_ingress_class # noqa: E501 - - delete an IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_ingress_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_ingress_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_ingress(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_ingress # noqa: E501 - - delete an Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_ingress(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_ingress_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_ingress_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_ingress # noqa: E501 - - delete an Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_ingress_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_network_policy(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_network_policy # noqa: E501 - - delete a NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_network_policy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_network_policy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_network_policy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_network_policy # noqa: E501 - - delete a NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_network_policy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_ingress_class(self, **kwargs): # noqa: E501 - """list_ingress_class # noqa: E501 - - list or watch objects of kind IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ingress_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_ingress_class_with_http_info(**kwargs) # noqa: E501 - - def list_ingress_class_with_http_info(self, **kwargs): # noqa: E501 - """list_ingress_class # noqa: E501 - - list or watch objects of kind IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ingress_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_ingress_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_ingress_for_all_namespaces # noqa: E501 - - list or watch objects of kind Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ingress_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_ingress_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_ingress_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_ingress_for_all_namespaces # noqa: E501 - - list or watch objects of kind Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ingress_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_ingress_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingresses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_ingress(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_ingress # noqa: E501 - - list or watch objects of kind Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_ingress(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_ingress_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_ingress_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_ingress # noqa: E501 - - list or watch objects of kind Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_ingress_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_network_policy(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_network_policy # noqa: E501 - - list or watch objects of kind NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_network_policy(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicyList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_network_policy_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_network_policy_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_network_policy # noqa: E501 - - list or watch objects of kind NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_network_policy_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicyList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicyList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_network_policy_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_network_policy_for_all_namespaces # noqa: E501 - - list or watch objects of kind NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_network_policy_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicyList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_network_policy_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_network_policy_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_network_policy_for_all_namespaces # noqa: E501 - - list or watch objects of kind NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_network_policy_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicyList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_network_policy_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/networkpolicies', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicyList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_ingress_class(self, name, body, **kwargs): # noqa: E501 - """patch_ingress_class # noqa: E501 - - partially update the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_ingress_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_ingress_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_ingress_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_ingress_class # noqa: E501 - - partially update the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_ingress_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_ingress_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_ingress_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_ingress(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_ingress # noqa: E501 - - partially update the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_ingress(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_ingress_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_ingress_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_ingress # noqa: E501 - - partially update the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_ingress_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_ingress_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_ingress_status # noqa: E501 - - partially update status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_ingress_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_ingress_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_ingress_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_ingress_status # noqa: E501 - - partially update status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_ingress_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_ingress_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_ingress_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_ingress_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_ingress_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_network_policy(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_network_policy # noqa: E501 - - partially update the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_network_policy(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_network_policy_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_network_policy_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_network_policy # noqa: E501 - - partially update the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_network_policy_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_ingress_class(self, name, **kwargs): # noqa: E501 - """read_ingress_class # noqa: E501 - - read the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_ingress_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_ingress_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_ingress_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_ingress_class # noqa: E501 - - read the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_ingress_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_ingress_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_ingress(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_ingress # noqa: E501 - - read the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_ingress(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_ingress_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_ingress_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_ingress # noqa: E501 - - read the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_ingress_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_ingress_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_ingress_status # noqa: E501 - - read status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_ingress_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_ingress_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_ingress_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_ingress_status # noqa: E501 - - read status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_ingress_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_ingress_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_ingress_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_ingress_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_network_policy(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_network_policy # noqa: E501 - - read the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_network_policy(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_network_policy_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_network_policy_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_network_policy # noqa: E501 - - read the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_network_policy_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_ingress_class(self, name, body, **kwargs): # noqa: E501 - """replace_ingress_class # noqa: E501 - - replace the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_ingress_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param V1IngressClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1IngressClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_ingress_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_ingress_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_ingress_class # noqa: E501 - - replace the specified IngressClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_ingress_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IngressClass (required) - :param V1IngressClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1IngressClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_ingress_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_ingress_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_ingress_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/ingressclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1IngressClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_ingress(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_ingress # noqa: E501 - - replace the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_ingress(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_ingress_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_ingress_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_ingress # noqa: E501 - - replace the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_ingress_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_ingress" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_ingress`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_ingress`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_ingress_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_ingress_status # noqa: E501 - - replace status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_ingress_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Ingress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_ingress_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_ingress_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_ingress_status # noqa: E501 - - replace status of the specified Ingress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_ingress_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Ingress (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Ingress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Ingress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_ingress_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_ingress_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_ingress_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_ingress_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Ingress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_network_policy(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_network_policy # noqa: E501 - - replace the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_network_policy(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1NetworkPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1NetworkPolicy - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_network_policy_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_network_policy_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_network_policy # noqa: E501 - - replace the specified NetworkPolicy # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_network_policy_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the NetworkPolicy (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1NetworkPolicy body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1NetworkPolicy, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_network_policy" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_network_policy`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_network_policy`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1NetworkPolicy', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1alpha1_api.py deleted file mode 100644 index 913318b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/networking_v1alpha1_api.py +++ /dev/null @@ -1,2610 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class NetworkingV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_ip_address(self, body, **kwargs): # noqa: E501 - """create_ip_address # noqa: E501 - - create an IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_ip_address(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1IPAddress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1IPAddress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_ip_address_with_http_info(body, **kwargs) # noqa: E501 - - def create_ip_address_with_http_info(self, body, **kwargs): # noqa: E501 - """create_ip_address # noqa: E501 - - create an IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_ip_address_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1IPAddress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1IPAddress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_ip_address`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1IPAddress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_service_cidr(self, body, **kwargs): # noqa: E501 - """create_service_cidr # noqa: E501 - - create a ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_service_cidr(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_service_cidr_with_http_info(body, **kwargs) # noqa: E501 - - def create_service_cidr_with_http_info(self, body, **kwargs): # noqa: E501 - """create_service_cidr # noqa: E501 - - create a ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_service_cidr_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_service_cidr`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_ip_address(self, **kwargs): # noqa: E501 - """delete_collection_ip_address # noqa: E501 - - delete collection of IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_ip_address(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_ip_address_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_ip_address_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_ip_address # noqa: E501 - - delete collection of IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_ip_address_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_service_cidr(self, **kwargs): # noqa: E501 - """delete_collection_service_cidr # noqa: E501 - - delete collection of ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_service_cidr(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_service_cidr_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_service_cidr_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_service_cidr # noqa: E501 - - delete collection of ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_service_cidr_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_ip_address(self, name, **kwargs): # noqa: E501 - """delete_ip_address # noqa: E501 - - delete an IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_ip_address(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_ip_address_with_http_info(name, **kwargs) # noqa: E501 - - def delete_ip_address_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_ip_address # noqa: E501 - - delete an IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_ip_address_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_ip_address`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_service_cidr(self, name, **kwargs): # noqa: E501 - """delete_service_cidr # noqa: E501 - - delete a ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_service_cidr(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_service_cidr_with_http_info(name, **kwargs) # noqa: E501 - - def delete_service_cidr_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_service_cidr # noqa: E501 - - delete a ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_service_cidr_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_service_cidr`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_ip_address(self, **kwargs): # noqa: E501 - """list_ip_address # noqa: E501 - - list or watch objects of kind IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ip_address(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1IPAddressList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_ip_address_with_http_info(**kwargs) # noqa: E501 - - def list_ip_address_with_http_info(self, **kwargs): # noqa: E501 - """list_ip_address # noqa: E501 - - list or watch objects of kind IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_ip_address_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1IPAddressList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1IPAddressList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_service_cidr(self, **kwargs): # noqa: E501 - """list_service_cidr # noqa: E501 - - list or watch objects of kind ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_cidr(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDRList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_service_cidr_with_http_info(**kwargs) # noqa: E501 - - def list_service_cidr_with_http_info(self, **kwargs): # noqa: E501 - """list_service_cidr # noqa: E501 - - list or watch objects of kind ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_service_cidr_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDRList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDRList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_ip_address(self, name, body, **kwargs): # noqa: E501 - """patch_ip_address # noqa: E501 - - partially update the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_ip_address(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1IPAddress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_ip_address_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_ip_address_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_ip_address # noqa: E501 - - partially update the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_ip_address_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1IPAddress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_ip_address`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_ip_address`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1IPAddress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_service_cidr(self, name, body, **kwargs): # noqa: E501 - """patch_service_cidr # noqa: E501 - - partially update the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_service_cidr(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_service_cidr_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_service_cidr_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_service_cidr # noqa: E501 - - partially update the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_service_cidr_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_service_cidr`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_service_cidr`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_service_cidr_status(self, name, body, **kwargs): # noqa: E501 - """patch_service_cidr_status # noqa: E501 - - partially update status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_service_cidr_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_service_cidr_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_service_cidr_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_service_cidr_status # noqa: E501 - - partially update status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_service_cidr_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_service_cidr_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_service_cidr_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_service_cidr_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_ip_address(self, name, **kwargs): # noqa: E501 - """read_ip_address # noqa: E501 - - read the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_ip_address(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1IPAddress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_ip_address_with_http_info(name, **kwargs) # noqa: E501 - - def read_ip_address_with_http_info(self, name, **kwargs): # noqa: E501 - """read_ip_address # noqa: E501 - - read the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_ip_address_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1IPAddress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_ip_address`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1IPAddress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_service_cidr(self, name, **kwargs): # noqa: E501 - """read_service_cidr # noqa: E501 - - read the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_service_cidr(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_service_cidr_with_http_info(name, **kwargs) # noqa: E501 - - def read_service_cidr_with_http_info(self, name, **kwargs): # noqa: E501 - """read_service_cidr # noqa: E501 - - read the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_service_cidr_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_service_cidr`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_service_cidr_status(self, name, **kwargs): # noqa: E501 - """read_service_cidr_status # noqa: E501 - - read status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_service_cidr_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_service_cidr_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_service_cidr_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_service_cidr_status # noqa: E501 - - read status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_service_cidr_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_service_cidr_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_service_cidr_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_ip_address(self, name, body, **kwargs): # noqa: E501 - """replace_ip_address # noqa: E501 - - replace the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_ip_address(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param V1alpha1IPAddress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1IPAddress - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_ip_address_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_ip_address_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_ip_address # noqa: E501 - - replace the specified IPAddress # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_ip_address_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the IPAddress (required) - :param V1alpha1IPAddress body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1IPAddress, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_ip_address" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_ip_address`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_ip_address`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/ipaddresses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1IPAddress', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_service_cidr(self, name, body, **kwargs): # noqa: E501 - """replace_service_cidr # noqa: E501 - - replace the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_service_cidr(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_service_cidr_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_service_cidr_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_service_cidr # noqa: E501 - - replace the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_service_cidr_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_service_cidr" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_service_cidr`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_service_cidr`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_service_cidr_status(self, name, body, **kwargs): # noqa: E501 - """replace_service_cidr_status # noqa: E501 - - replace status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_service_cidr_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1ServiceCIDR - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_service_cidr_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_service_cidr_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_service_cidr_status # noqa: E501 - - replace status of the specified ServiceCIDR # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_service_cidr_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ServiceCIDR (required) - :param V1alpha1ServiceCIDR body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1ServiceCIDR, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_service_cidr_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_service_cidr_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_service_cidr_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/networking.k8s.io/v1alpha1/servicecidrs/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1ServiceCIDR', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/node_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/node_api.py deleted file mode 100644 index 235efc3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/node_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class NodeApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/node_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/node_v1_api.py deleted file mode 100644 index 2b67b66..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/node_v1_api.py +++ /dev/null @@ -1,1169 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class NodeV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_runtime_class(self, body, **kwargs): # noqa: E501 - """create_runtime_class # noqa: E501 - - create a RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_runtime_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1RuntimeClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RuntimeClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_runtime_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_runtime_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_runtime_class # noqa: E501 - - create a RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_runtime_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1RuntimeClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RuntimeClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_runtime_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RuntimeClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_runtime_class(self, **kwargs): # noqa: E501 - """delete_collection_runtime_class # noqa: E501 - - delete collection of RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_runtime_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_runtime_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_runtime_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_runtime_class # noqa: E501 - - delete collection of RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_runtime_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_runtime_class(self, name, **kwargs): # noqa: E501 - """delete_runtime_class # noqa: E501 - - delete a RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_runtime_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_runtime_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_runtime_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_runtime_class # noqa: E501 - - delete a RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_runtime_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_runtime_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_runtime_class(self, **kwargs): # noqa: E501 - """list_runtime_class # noqa: E501 - - list or watch objects of kind RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_runtime_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RuntimeClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_runtime_class_with_http_info(**kwargs) # noqa: E501 - - def list_runtime_class_with_http_info(self, **kwargs): # noqa: E501 - """list_runtime_class # noqa: E501 - - list or watch objects of kind RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_runtime_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RuntimeClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RuntimeClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_runtime_class(self, name, body, **kwargs): # noqa: E501 - """patch_runtime_class # noqa: E501 - - partially update the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_runtime_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RuntimeClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_runtime_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_runtime_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_runtime_class # noqa: E501 - - partially update the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_runtime_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RuntimeClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_runtime_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_runtime_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RuntimeClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_runtime_class(self, name, **kwargs): # noqa: E501 - """read_runtime_class # noqa: E501 - - read the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_runtime_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RuntimeClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_runtime_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_runtime_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_runtime_class # noqa: E501 - - read the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_runtime_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RuntimeClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_runtime_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RuntimeClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_runtime_class(self, name, body, **kwargs): # noqa: E501 - """replace_runtime_class # noqa: E501 - - replace the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_runtime_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param V1RuntimeClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RuntimeClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_runtime_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_runtime_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_runtime_class # noqa: E501 - - replace the specified RuntimeClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_runtime_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RuntimeClass (required) - :param V1RuntimeClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RuntimeClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_runtime_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_runtime_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_runtime_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/node.k8s.io/v1/runtimeclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RuntimeClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/openid_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/openid_api.py deleted file mode 100644 index 649530a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/openid_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class OpenidApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_service_account_issuer_open_id_keyset(self, **kwargs): # noqa: E501 - """get_service_account_issuer_open_id_keyset # noqa: E501 - - get service account issuer OpenID JSON Web Key Set (contains public token verification keys) # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_service_account_issuer_open_id_keyset(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_service_account_issuer_open_id_keyset_with_http_info(**kwargs) # noqa: E501 - - def get_service_account_issuer_open_id_keyset_with_http_info(self, **kwargs): # noqa: E501 - """get_service_account_issuer_open_id_keyset # noqa: E501 - - get service account issuer OpenID JSON Web Key Set (contains public token verification keys) # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_service_account_issuer_open_id_keyset_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_service_account_issuer_open_id_keyset" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/jwk-set+json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/openid/v1/jwks', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_api.py deleted file mode 100644 index 863df45..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class PolicyApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_v1_api.py deleted file mode 100644 index c017796..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/policy_v1_api.py +++ /dev/null @@ -1,1833 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class PolicyV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_pod_disruption_budget(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_disruption_budget # noqa: E501 - - create a PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_disruption_budget(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_disruption_budget_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_disruption_budget_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_disruption_budget # noqa: E501 - - create a PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_disruption_budget_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_pod_disruption_budget(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_disruption_budget # noqa: E501 - - delete collection of PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_disruption_budget(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_pod_disruption_budget_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_pod_disruption_budget_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_disruption_budget # noqa: E501 - - delete collection of PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_disruption_budget_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_pod_disruption_budget(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_disruption_budget # noqa: E501 - - delete a PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_disruption_budget(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_pod_disruption_budget_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_pod_disruption_budget_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_disruption_budget # noqa: E501 - - delete a PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_disruption_budget_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_pod_disruption_budget(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_disruption_budget # noqa: E501 - - list or watch objects of kind PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_disruption_budget(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudgetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_pod_disruption_budget_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_pod_disruption_budget_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_disruption_budget # noqa: E501 - - list or watch objects of kind PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_disruption_budget_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudgetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudgetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_pod_disruption_budget_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_pod_disruption_budget_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_disruption_budget_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudgetList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_pod_disruption_budget_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_pod_disruption_budget_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_pod_disruption_budget_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_disruption_budget_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudgetList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_pod_disruption_budget_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/poddisruptionbudgets', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudgetList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_disruption_budget(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_disruption_budget # noqa: E501 - - partially update the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_disruption_budget(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_disruption_budget_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_disruption_budget_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_disruption_budget # noqa: E501 - - partially update the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_disruption_budget_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_disruption_budget_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_disruption_budget_status # noqa: E501 - - partially update status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_disruption_budget_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_disruption_budget_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_disruption_budget_status # noqa: E501 - - partially update status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_disruption_budget_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_disruption_budget_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_disruption_budget_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_disruption_budget_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_disruption_budget(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_disruption_budget # noqa: E501 - - read the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_disruption_budget(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_disruption_budget_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_disruption_budget_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_disruption_budget # noqa: E501 - - read the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_disruption_budget_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_disruption_budget_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_disruption_budget_status # noqa: E501 - - read status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_disruption_budget_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_disruption_budget_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_disruption_budget_status # noqa: E501 - - read status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_disruption_budget_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_disruption_budget_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_disruption_budget_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_disruption_budget(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_disruption_budget # noqa: E501 - - replace the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_disruption_budget(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_disruption_budget_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_disruption_budget_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_disruption_budget # noqa: E501 - - replace the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_disruption_budget_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_disruption_budget" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_disruption_budget`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_disruption_budget`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_disruption_budget_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_disruption_budget_status # noqa: E501 - - replace status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_disruption_budget_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PodDisruptionBudget - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_disruption_budget_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_disruption_budget_status # noqa: E501 - - replace status of the specified PodDisruptionBudget # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_disruption_budget_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodDisruptionBudget (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1PodDisruptionBudget body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PodDisruptionBudget, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_disruption_budget_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_disruption_budget_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_disruption_budget_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_disruption_budget_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PodDisruptionBudget', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_api.py deleted file mode 100644 index 8fa0de8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class RbacAuthorizationApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_v1_api.py deleted file mode 100644 index 2088e11..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/rbac_authorization_v1_api.py +++ /dev/null @@ -1,4696 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class RbacAuthorizationV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_cluster_role(self, body, **kwargs): # noqa: E501 - """create_cluster_role # noqa: E501 - - create a ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_role(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ClusterRole body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRole - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_cluster_role_with_http_info(body, **kwargs) # noqa: E501 - - def create_cluster_role_with_http_info(self, body, **kwargs): # noqa: E501 - """create_cluster_role # noqa: E501 - - create a ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_role_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ClusterRole body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRole, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_cluster_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRole', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_cluster_role_binding(self, body, **kwargs): # noqa: E501 - """create_cluster_role_binding # noqa: E501 - - create a ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_role_binding(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ClusterRoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_cluster_role_binding_with_http_info(body, **kwargs) # noqa: E501 - - def create_cluster_role_binding_with_http_info(self, body, **kwargs): # noqa: E501 - """create_cluster_role_binding # noqa: E501 - - create a ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_cluster_role_binding_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1ClusterRoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_cluster_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_role(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_role # noqa: E501 - - create a Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_role(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Role body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Role - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_role_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_role_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_role # noqa: E501 - - create a Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_role_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Role body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Role, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_role`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Role', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_role_binding(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_role_binding # noqa: E501 - - create a RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_role_binding(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1RoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_role_binding_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_role_binding_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_role_binding # noqa: E501 - - create a RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_role_binding_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1RoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_cluster_role(self, name, **kwargs): # noqa: E501 - """delete_cluster_role # noqa: E501 - - delete a ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_role(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_cluster_role_with_http_info(name, **kwargs) # noqa: E501 - - def delete_cluster_role_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_cluster_role # noqa: E501 - - delete a ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_role_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_cluster_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_cluster_role_binding(self, name, **kwargs): # noqa: E501 - """delete_cluster_role_binding # noqa: E501 - - delete a ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_role_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_cluster_role_binding_with_http_info(name, **kwargs) # noqa: E501 - - def delete_cluster_role_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_cluster_role_binding # noqa: E501 - - delete a ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_cluster_role_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_cluster_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_cluster_role(self, **kwargs): # noqa: E501 - """delete_collection_cluster_role # noqa: E501 - - delete collection of ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_role(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_cluster_role_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_cluster_role_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_cluster_role # noqa: E501 - - delete collection of ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_role_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_cluster_role_binding(self, **kwargs): # noqa: E501 - """delete_collection_cluster_role_binding # noqa: E501 - - delete collection of ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_role_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_cluster_role_binding_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_cluster_role_binding_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_cluster_role_binding # noqa: E501 - - delete collection of ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_cluster_role_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_role(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_role # noqa: E501 - - delete collection of Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_role(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_role_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_role_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_role # noqa: E501 - - delete collection of Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_role_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_role_binding(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_role_binding # noqa: E501 - - delete collection of RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_role_binding(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_role_binding_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_role_binding_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_role_binding # noqa: E501 - - delete collection of RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_role_binding_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_role(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_role # noqa: E501 - - delete a Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_role(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_role_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_role_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_role # noqa: E501 - - delete a Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_role_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_role`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_role_binding(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_role_binding # noqa: E501 - - delete a RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_role_binding(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_role_binding_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_role_binding_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_role_binding # noqa: E501 - - delete a RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_role_binding_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_cluster_role(self, **kwargs): # noqa: E501 - """list_cluster_role # noqa: E501 - - list or watch objects of kind ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_role(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_cluster_role_with_http_info(**kwargs) # noqa: E501 - - def list_cluster_role_with_http_info(self, **kwargs): # noqa: E501 - """list_cluster_role # noqa: E501 - - list or watch objects of kind ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_role_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_cluster_role_binding(self, **kwargs): # noqa: E501 - """list_cluster_role_binding # noqa: E501 - - list or watch objects of kind ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_role_binding(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleBindingList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_cluster_role_binding_with_http_info(**kwargs) # noqa: E501 - - def list_cluster_role_binding_with_http_info(self, **kwargs): # noqa: E501 - """list_cluster_role_binding # noqa: E501 - - list or watch objects of kind ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_cluster_role_binding_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleBindingList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleBindingList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_role(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_role # noqa: E501 - - list or watch objects of kind Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_role(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_role_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_role_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_role # noqa: E501 - - list or watch objects of kind Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_role_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_role_binding(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_role_binding # noqa: E501 - - list or watch objects of kind RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_role_binding(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBindingList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_role_binding_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_role_binding_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_role_binding # noqa: E501 - - list or watch objects of kind RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_role_binding_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBindingList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBindingList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_role_binding_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_role_binding_for_all_namespaces # noqa: E501 - - list or watch objects of kind RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_role_binding_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBindingList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_role_binding_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_role_binding_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_role_binding_for_all_namespaces # noqa: E501 - - list or watch objects of kind RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_role_binding_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBindingList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_role_binding_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/rolebindings', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBindingList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_role_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_role_for_all_namespaces # noqa: E501 - - list or watch objects of kind Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_role_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_role_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_role_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_role_for_all_namespaces # noqa: E501 - - list or watch objects of kind Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_role_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_role_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/roles', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_role(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_role # noqa: E501 - - partially update the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_role(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRole - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_role_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_cluster_role_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_role # noqa: E501 - - partially update the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_role_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRole, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_role`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRole', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_cluster_role_binding(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_role_binding # noqa: E501 - - partially update the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_role_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_cluster_role_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_cluster_role_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_cluster_role_binding # noqa: E501 - - partially update the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_cluster_role_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_cluster_role_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_cluster_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_role(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_role # noqa: E501 - - partially update the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_role(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Role - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_role_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_role_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_role # noqa: E501 - - partially update the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_role_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Role, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_role`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_role`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Role', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_role_binding(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_role_binding # noqa: E501 - - partially update the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_role_binding(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_role_binding_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_role_binding_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_role_binding # noqa: E501 - - partially update the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_role_binding_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_cluster_role(self, name, **kwargs): # noqa: E501 - """read_cluster_role # noqa: E501 - - read the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_role(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRole - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_cluster_role_with_http_info(name, **kwargs) # noqa: E501 - - def read_cluster_role_with_http_info(self, name, **kwargs): # noqa: E501 - """read_cluster_role # noqa: E501 - - read the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_role_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRole, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_cluster_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRole', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_cluster_role_binding(self, name, **kwargs): # noqa: E501 - """read_cluster_role_binding # noqa: E501 - - read the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_role_binding(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_cluster_role_binding_with_http_info(name, **kwargs) # noqa: E501 - - def read_cluster_role_binding_with_http_info(self, name, **kwargs): # noqa: E501 - """read_cluster_role_binding # noqa: E501 - - read the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_cluster_role_binding_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_cluster_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_role(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_role # noqa: E501 - - read the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_role(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Role - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_role_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_role_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_role # noqa: E501 - - read the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_role_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Role, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_role`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Role', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_role_binding(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_role_binding # noqa: E501 - - read the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_role_binding(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_role_binding_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_role_binding_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_role_binding # noqa: E501 - - read the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_role_binding_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_role(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_role # noqa: E501 - - replace the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_role(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param V1ClusterRole body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRole - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_role_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_cluster_role_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_role # noqa: E501 - - replace the specified ClusterRole # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_role_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRole (required) - :param V1ClusterRole body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRole, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_role`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRole', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_cluster_role_binding(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_role_binding # noqa: E501 - - replace the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_role_binding(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param V1ClusterRoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1ClusterRoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_cluster_role_binding_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_cluster_role_binding_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_cluster_role_binding # noqa: E501 - - replace the specified ClusterRoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_cluster_role_binding_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ClusterRoleBinding (required) - :param V1ClusterRoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1ClusterRoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_cluster_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_cluster_role_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_cluster_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1ClusterRoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_role(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_role # noqa: E501 - - replace the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_role(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Role body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Role - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_role_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_role_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_role # noqa: E501 - - replace the specified Role # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_role_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the Role (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1Role body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Role, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_role" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_role`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_role`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_role`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Role', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_role_binding(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_role_binding # noqa: E501 - - replace the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_role_binding(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1RoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1RoleBinding - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_role_binding_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_role_binding_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_role_binding # noqa: E501 - - replace the specified RoleBinding # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_role_binding_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the RoleBinding (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1RoleBinding body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1RoleBinding, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_role_binding" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_role_binding`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_role_binding`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1RoleBinding', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_api.py deleted file mode 100644 index 6be0506..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ResourceApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_v1alpha2_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_v1alpha2_api.py deleted file mode 100644 index ace3384..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/resource_v1alpha2_api.py +++ /dev/null @@ -1,5801 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class ResourceV1alpha2Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_namespaced_pod_scheduling_context(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_scheduling_context # noqa: E501 - - create a PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_scheduling_context(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_pod_scheduling_context_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_pod_scheduling_context_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_pod_scheduling_context # noqa: E501 - - create a PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_pod_scheduling_context_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_resource_claim(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_claim # noqa: E501 - - create a ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_claim(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_resource_claim_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_resource_claim_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_claim # noqa: E501 - - create a ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_claim_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_resource_claim_template(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_claim_template # noqa: E501 - - create a ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_claim_template(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaimTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_resource_claim_template_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_resource_claim_template_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_resource_claim_template # noqa: E501 - - create a ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_resource_claim_template_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaimTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_resource_class(self, body, **kwargs): # noqa: E501 - """create_resource_class # noqa: E501 - - create a ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_resource_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha2ResourceClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_resource_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_resource_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_resource_class # noqa: E501 - - create a ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_resource_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha2ResourceClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_resource_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_pod_scheduling_context(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_scheduling_context # noqa: E501 - - delete collection of PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_scheduling_context(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_pod_scheduling_context_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_pod_scheduling_context_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_pod_scheduling_context # noqa: E501 - - delete collection of PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_pod_scheduling_context_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_resource_claim(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_claim # noqa: E501 - - delete collection of ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_claim(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_resource_claim_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_resource_claim_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_claim # noqa: E501 - - delete collection of ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_claim_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_resource_claim_template(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_claim_template # noqa: E501 - - delete collection of ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_claim_template(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_resource_claim_template_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_resource_claim_template_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_resource_claim_template # noqa: E501 - - delete collection of ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_resource_claim_template_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_resource_class(self, **kwargs): # noqa: E501 - """delete_collection_resource_class # noqa: E501 - - delete collection of ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_resource_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_resource_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_resource_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_resource_class # noqa: E501 - - delete collection of ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_resource_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_pod_scheduling_context(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_scheduling_context # noqa: E501 - - delete a PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_scheduling_context(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_pod_scheduling_context_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_pod_scheduling_context_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_pod_scheduling_context # noqa: E501 - - delete a PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_pod_scheduling_context_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_resource_claim(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_claim # noqa: E501 - - delete a ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_claim(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_resource_claim_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_resource_claim_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_claim # noqa: E501 - - delete a ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_claim_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_resource_claim_template(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_claim_template # noqa: E501 - - delete a ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_claim_template(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_resource_claim_template_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_resource_claim_template_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_resource_claim_template # noqa: E501 - - delete a ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_resource_claim_template_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_resource_class(self, name, **kwargs): # noqa: E501 - """delete_resource_class # noqa: E501 - - delete a ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_resource_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_resource_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_resource_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_resource_class # noqa: E501 - - delete a ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_resource_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_resource_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_pod_scheduling_context(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_scheduling_context # noqa: E501 - - list or watch objects of kind PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_scheduling_context(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContextList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_pod_scheduling_context_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_pod_scheduling_context_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_pod_scheduling_context # noqa: E501 - - list or watch objects of kind PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_pod_scheduling_context_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContextList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContextList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_resource_claim(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_claim # noqa: E501 - - list or watch objects of kind ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_claim(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_resource_claim_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_resource_claim_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_claim # noqa: E501 - - list or watch objects of kind ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_claim_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_resource_claim_template(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_claim_template # noqa: E501 - - list or watch objects of kind ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_claim_template(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplateList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_resource_claim_template_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_resource_claim_template_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_resource_claim_template # noqa: E501 - - list or watch objects of kind ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_resource_claim_template_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplateList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplateList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_pod_scheduling_context_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_pod_scheduling_context_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_scheduling_context_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContextList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_pod_scheduling_context_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_pod_scheduling_context_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_pod_scheduling_context_for_all_namespaces # noqa: E501 - - list or watch objects of kind PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_pod_scheduling_context_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContextList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_pod_scheduling_context_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/podschedulingcontexts', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContextList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_resource_claim_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_resource_claim_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_claim_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_resource_claim_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_resource_claim_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_resource_claim_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_claim_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_resource_claim_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclaims', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_resource_claim_template_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_resource_claim_template_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_claim_template_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplateList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_resource_claim_template_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_resource_claim_template_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_resource_claim_template_for_all_namespaces # noqa: E501 - - list or watch objects of kind ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_claim_template_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplateList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_resource_claim_template_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclaimtemplates', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplateList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_resource_class(self, **kwargs): # noqa: E501 - """list_resource_class # noqa: E501 - - list or watch objects of kind ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_resource_class_with_http_info(**kwargs) # noqa: E501 - - def list_resource_class_with_http_info(self, **kwargs): # noqa: E501 - """list_resource_class # noqa: E501 - - list or watch objects of kind ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_resource_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_scheduling_context(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_scheduling_context # noqa: E501 - - partially update the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_scheduling_context(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_scheduling_context_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_scheduling_context_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_scheduling_context # noqa: E501 - - partially update the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_scheduling_context_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_pod_scheduling_context_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_scheduling_context_status # noqa: E501 - - partially update status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_scheduling_context_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_pod_scheduling_context_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_pod_scheduling_context_status # noqa: E501 - - partially update status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_pod_scheduling_context_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_pod_scheduling_context_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_pod_scheduling_context_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_pod_scheduling_context_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_resource_claim(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim # noqa: E501 - - partially update the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_resource_claim_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_resource_claim_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim # noqa: E501 - - partially update the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_resource_claim_status(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim_status # noqa: E501 - - partially update status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_resource_claim_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_resource_claim_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim_status # noqa: E501 - - partially update status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_resource_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_resource_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_resource_claim_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_resource_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_resource_claim_template(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim_template # noqa: E501 - - partially update the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim_template(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_resource_claim_template_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_resource_claim_template_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_resource_claim_template # noqa: E501 - - partially update the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_resource_claim_template_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_resource_class(self, name, body, **kwargs): # noqa: E501 - """patch_resource_class # noqa: E501 - - partially update the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_resource_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_resource_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_resource_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_resource_class # noqa: E501 - - partially update the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_resource_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_resource_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_resource_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_scheduling_context(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_scheduling_context # noqa: E501 - - read the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_scheduling_context(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_scheduling_context_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_scheduling_context_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_scheduling_context # noqa: E501 - - read the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_scheduling_context_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_pod_scheduling_context_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_scheduling_context_status # noqa: E501 - - read status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_scheduling_context_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_pod_scheduling_context_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_pod_scheduling_context_status # noqa: E501 - - read status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_pod_scheduling_context_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_pod_scheduling_context_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_pod_scheduling_context_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_resource_claim(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim # noqa: E501 - - read the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_resource_claim_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_resource_claim_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim # noqa: E501 - - read the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_resource_claim_status(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim_status # noqa: E501 - - read status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim_status(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_resource_claim_status_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_resource_claim_status_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim_status # noqa: E501 - - read status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim_status_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_resource_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_resource_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_resource_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_resource_claim_template(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim_template # noqa: E501 - - read the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim_template(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_resource_claim_template_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_resource_claim_template_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_resource_claim_template # noqa: E501 - - read the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_resource_claim_template_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_resource_class(self, name, **kwargs): # noqa: E501 - """read_resource_class # noqa: E501 - - read the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_resource_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_resource_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_resource_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_resource_class # noqa: E501 - - read the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_resource_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_resource_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_scheduling_context(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_scheduling_context # noqa: E501 - - replace the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_scheduling_context(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_scheduling_context_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_scheduling_context_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_scheduling_context # noqa: E501 - - replace the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_scheduling_context_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_scheduling_context" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_scheduling_context`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_scheduling_context`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_pod_scheduling_context_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_scheduling_context_status # noqa: E501 - - replace status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_scheduling_context_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2PodSchedulingContext - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_pod_scheduling_context_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_pod_scheduling_context_status # noqa: E501 - - replace status of the specified PodSchedulingContext # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_pod_scheduling_context_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PodSchedulingContext (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2PodSchedulingContext body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2PodSchedulingContext, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_pod_scheduling_context_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_pod_scheduling_context_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_pod_scheduling_context_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_pod_scheduling_context_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/podschedulingcontexts/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2PodSchedulingContext', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_resource_claim(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim # noqa: E501 - - replace the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_resource_claim_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_resource_claim_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim # noqa: E501 - - replace the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_resource_claim" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_resource_claim`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_resource_claim`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_resource_claim_status(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim_status # noqa: E501 - - replace status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim_status(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaim - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_resource_claim_status_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_resource_claim_status_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim_status # noqa: E501 - - replace status of the specified ResourceClaim # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim_status_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaim (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaim body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaim, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_resource_claim_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_resource_claim_status`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_resource_claim_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_resource_claim_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaims/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaim', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_resource_claim_template(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim_template # noqa: E501 - - replace the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim_template(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaimTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClaimTemplate - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_resource_claim_template_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_resource_claim_template_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_resource_claim_template # noqa: E501 - - replace the specified ResourceClaimTemplate # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_resource_claim_template_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClaimTemplate (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1alpha2ResourceClaimTemplate body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClaimTemplate, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_resource_claim_template" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_resource_claim_template`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_resource_claim_template`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/namespaces/{namespace}/resourceclaimtemplates/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClaimTemplate', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_resource_class(self, name, body, **kwargs): # noqa: E501 - """replace_resource_class # noqa: E501 - - replace the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_resource_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param V1alpha2ResourceClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha2ResourceClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_resource_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_resource_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_resource_class # noqa: E501 - - replace the specified ResourceClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_resource_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the ResourceClass (required) - :param V1alpha2ResourceClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha2ResourceClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_resource_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_resource_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_resource_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/resource.k8s.io/v1alpha2/resourceclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha2ResourceClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_api.py deleted file mode 100644 index 31b9d8a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class SchedulingApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_v1_api.py deleted file mode 100644 index 471d37e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/scheduling_v1_api.py +++ /dev/null @@ -1,1169 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class SchedulingV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_priority_class(self, body, **kwargs): # noqa: E501 - """create_priority_class # noqa: E501 - - create a PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PriorityClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_priority_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_priority_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_priority_class # noqa: E501 - - create a PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_priority_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1PriorityClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_priority_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_priority_class(self, **kwargs): # noqa: E501 - """delete_collection_priority_class # noqa: E501 - - delete collection of PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_priority_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_priority_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_priority_class # noqa: E501 - - delete collection of PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_priority_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_priority_class(self, name, **kwargs): # noqa: E501 - """delete_priority_class # noqa: E501 - - delete a PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_priority_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_priority_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_priority_class # noqa: E501 - - delete a PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_priority_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_priority_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_priority_class(self, **kwargs): # noqa: E501 - """list_priority_class # noqa: E501 - - list or watch objects of kind PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_priority_class_with_http_info(**kwargs) # noqa: E501 - - def list_priority_class_with_http_info(self, **kwargs): # noqa: E501 - """list_priority_class # noqa: E501 - - list or watch objects of kind PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_priority_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_priority_class(self, name, body, **kwargs): # noqa: E501 - """patch_priority_class # noqa: E501 - - partially update the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_priority_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_priority_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_priority_class # noqa: E501 - - partially update the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_priority_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_priority_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_priority_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_priority_class(self, name, **kwargs): # noqa: E501 - """read_priority_class # noqa: E501 - - read the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_priority_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_priority_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_priority_class # noqa: E501 - - read the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_priority_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_priority_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_priority_class(self, name, body, **kwargs): # noqa: E501 - """replace_priority_class # noqa: E501 - - replace the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param V1PriorityClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1PriorityClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_priority_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_priority_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_priority_class # noqa: E501 - - replace the specified PriorityClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_priority_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the PriorityClass (required) - :param V1PriorityClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1PriorityClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_priority_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_priority_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_priority_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/scheduling.k8s.io/v1/priorityclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1PriorityClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_api.py deleted file mode 100644 index adb4341..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class StorageApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_api_group(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIGroup - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_group_with_http_info(**kwargs) # noqa: E501 - - def get_api_group_with_http_info(self, **kwargs): # noqa: E501 - """get_api_group # noqa: E501 - - get information of a group # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_group_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIGroup, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_group" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIGroup', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1_api.py deleted file mode 100644 index 4aaf44b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1_api.py +++ /dev/null @@ -1,5914 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class StorageV1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_csi_driver(self, body, **kwargs): # noqa: E501 - """create_csi_driver # noqa: E501 - - create a CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_csi_driver(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CSIDriver body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriver - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_csi_driver_with_http_info(body, **kwargs) # noqa: E501 - - def create_csi_driver_with_http_info(self, body, **kwargs): # noqa: E501 - """create_csi_driver # noqa: E501 - - create a CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_csi_driver_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CSIDriver body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriver, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_csi_driver`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriver', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_csi_node(self, body, **kwargs): # noqa: E501 - """create_csi_node # noqa: E501 - - create a CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_csi_node(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CSINode body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINode - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_csi_node_with_http_info(body, **kwargs) # noqa: E501 - - def create_csi_node_with_http_info(self, body, **kwargs): # noqa: E501 - """create_csi_node # noqa: E501 - - create a CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_csi_node_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1CSINode body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINode, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_csi_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINode', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_namespaced_csi_storage_capacity(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_csi_storage_capacity # noqa: E501 - - create a CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_csi_storage_capacity(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CSIStorageCapacity body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacity - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_namespaced_csi_storage_capacity_with_http_info(namespace, body, **kwargs) # noqa: E501 - - def create_namespaced_csi_storage_capacity_with_http_info(self, namespace, body, **kwargs): # noqa: E501 - """create_namespaced_csi_storage_capacity # noqa: E501 - - create a CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_namespaced_csi_storage_capacity_with_http_info(namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CSIStorageCapacity body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacity, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `create_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacity', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_storage_class(self, body, **kwargs): # noqa: E501 - """create_storage_class # noqa: E501 - - create a StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_storage_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1StorageClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_storage_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_storage_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_storage_class # noqa: E501 - - create a StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_storage_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1StorageClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_storage_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def create_volume_attachment(self, body, **kwargs): # noqa: E501 - """create_volume_attachment # noqa: E501 - - create a VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_volume_attachment(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_volume_attachment_with_http_info(body, **kwargs) # noqa: E501 - - def create_volume_attachment_with_http_info(self, body, **kwargs): # noqa: E501 - """create_volume_attachment # noqa: E501 - - create a VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_volume_attachment_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_volume_attachment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_csi_driver(self, **kwargs): # noqa: E501 - """delete_collection_csi_driver # noqa: E501 - - delete collection of CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_csi_driver(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_csi_driver_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_csi_driver_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_csi_driver # noqa: E501 - - delete collection of CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_csi_driver_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_csi_node(self, **kwargs): # noqa: E501 - """delete_collection_csi_node # noqa: E501 - - delete collection of CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_csi_node(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_csi_node_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_csi_node_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_csi_node # noqa: E501 - - delete collection of CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_csi_node_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_namespaced_csi_storage_capacity(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_csi_storage_capacity # noqa: E501 - - delete collection of CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_csi_storage_capacity(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_namespaced_csi_storage_capacity_with_http_info(namespace, **kwargs) # noqa: E501 - - def delete_collection_namespaced_csi_storage_capacity_with_http_info(self, namespace, **kwargs): # noqa: E501 - """delete_collection_namespaced_csi_storage_capacity # noqa: E501 - - delete collection of CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_namespaced_csi_storage_capacity_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_collection_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_storage_class(self, **kwargs): # noqa: E501 - """delete_collection_storage_class # noqa: E501 - - delete collection of StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_storage_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_storage_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_storage_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_storage_class # noqa: E501 - - delete collection of StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_storage_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_volume_attachment(self, **kwargs): # noqa: E501 - """delete_collection_volume_attachment # noqa: E501 - - delete collection of VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_volume_attachment(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_volume_attachment_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_volume_attachment_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_volume_attachment # noqa: E501 - - delete collection of VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_volume_attachment_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_csi_driver(self, name, **kwargs): # noqa: E501 - """delete_csi_driver # noqa: E501 - - delete a CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_csi_driver(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriver - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_csi_driver_with_http_info(name, **kwargs) # noqa: E501 - - def delete_csi_driver_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_csi_driver # noqa: E501 - - delete a CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_csi_driver_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriver, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_csi_driver`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriver', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_csi_node(self, name, **kwargs): # noqa: E501 - """delete_csi_node # noqa: E501 - - delete a CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_csi_node(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINode - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_csi_node_with_http_info(name, **kwargs) # noqa: E501 - - def delete_csi_node_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_csi_node # noqa: E501 - - delete a CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_csi_node_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINode, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_csi_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINode', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_namespaced_csi_storage_capacity(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_csi_storage_capacity # noqa: E501 - - delete a CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_csi_storage_capacity(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_namespaced_csi_storage_capacity_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def delete_namespaced_csi_storage_capacity_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """delete_namespaced_csi_storage_capacity # noqa: E501 - - delete a CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_namespaced_csi_storage_capacity_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `delete_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_storage_class(self, name, **kwargs): # noqa: E501 - """delete_storage_class # noqa: E501 - - delete a StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_storage_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_storage_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_storage_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_storage_class # noqa: E501 - - delete a StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_storage_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_storage_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_volume_attachment(self, name, **kwargs): # noqa: E501 - """delete_volume_attachment # noqa: E501 - - delete a VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_volume_attachment(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_volume_attachment_with_http_info(name, **kwargs) # noqa: E501 - - def delete_volume_attachment_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_volume_attachment # noqa: E501 - - delete a VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_volume_attachment_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_volume_attachment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_csi_driver(self, **kwargs): # noqa: E501 - """list_csi_driver # noqa: E501 - - list or watch objects of kind CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_driver(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriverList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_csi_driver_with_http_info(**kwargs) # noqa: E501 - - def list_csi_driver_with_http_info(self, **kwargs): # noqa: E501 - """list_csi_driver # noqa: E501 - - list or watch objects of kind CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_driver_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriverList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriverList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_csi_node(self, **kwargs): # noqa: E501 - """list_csi_node # noqa: E501 - - list or watch objects of kind CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_node(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINodeList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_csi_node_with_http_info(**kwargs) # noqa: E501 - - def list_csi_node_with_http_info(self, **kwargs): # noqa: E501 - """list_csi_node # noqa: E501 - - list or watch objects of kind CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_node_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINodeList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINodeList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_csi_storage_capacity_for_all_namespaces(self, **kwargs): # noqa: E501 - """list_csi_storage_capacity_for_all_namespaces # noqa: E501 - - list or watch objects of kind CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_storage_capacity_for_all_namespaces(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacityList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_csi_storage_capacity_for_all_namespaces_with_http_info(**kwargs) # noqa: E501 - - def list_csi_storage_capacity_for_all_namespaces_with_http_info(self, **kwargs): # noqa: E501 - """list_csi_storage_capacity_for_all_namespaces # noqa: E501 - - list or watch objects of kind CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_csi_storage_capacity_for_all_namespaces_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacityList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'pretty', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_csi_storage_capacity_for_all_namespaces" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csistoragecapacities', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacityList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_namespaced_csi_storage_capacity(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_csi_storage_capacity # noqa: E501 - - list or watch objects of kind CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_csi_storage_capacity(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacityList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_namespaced_csi_storage_capacity_with_http_info(namespace, **kwargs) # noqa: E501 - - def list_namespaced_csi_storage_capacity_with_http_info(self, namespace, **kwargs): # noqa: E501 - """list_namespaced_csi_storage_capacity # noqa: E501 - - list or watch objects of kind CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_namespaced_csi_storage_capacity_with_http_info(namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacityList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'namespace', - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `list_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacityList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_storage_class(self, **kwargs): # noqa: E501 - """list_storage_class # noqa: E501 - - list or watch objects of kind StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_storage_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_storage_class_with_http_info(**kwargs) # noqa: E501 - - def list_storage_class_with_http_info(self, **kwargs): # noqa: E501 - """list_storage_class # noqa: E501 - - list or watch objects of kind StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_storage_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_volume_attachment(self, **kwargs): # noqa: E501 - """list_volume_attachment # noqa: E501 - - list or watch objects of kind VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_volume_attachment(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachmentList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_volume_attachment_with_http_info(**kwargs) # noqa: E501 - - def list_volume_attachment_with_http_info(self, **kwargs): # noqa: E501 - """list_volume_attachment # noqa: E501 - - list or watch objects of kind VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_volume_attachment_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachmentList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachmentList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_csi_driver(self, name, body, **kwargs): # noqa: E501 - """patch_csi_driver # noqa: E501 - - partially update the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_csi_driver(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriver - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_csi_driver_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_csi_driver_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_csi_driver # noqa: E501 - - partially update the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_csi_driver_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriver, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_csi_driver`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_csi_driver`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriver', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_csi_node(self, name, body, **kwargs): # noqa: E501 - """patch_csi_node # noqa: E501 - - partially update the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_csi_node(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINode - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_csi_node_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_csi_node_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_csi_node # noqa: E501 - - partially update the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_csi_node_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINode, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_csi_node`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_csi_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINode', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_namespaced_csi_storage_capacity(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_csi_storage_capacity # noqa: E501 - - partially update the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_csi_storage_capacity(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacity - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_namespaced_csi_storage_capacity_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def patch_namespaced_csi_storage_capacity_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """patch_namespaced_csi_storage_capacity # noqa: E501 - - partially update the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_namespaced_csi_storage_capacity_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacity, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `patch_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacity', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_storage_class(self, name, body, **kwargs): # noqa: E501 - """patch_storage_class # noqa: E501 - - partially update the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_storage_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_storage_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_storage_class # noqa: E501 - - partially update the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_storage_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_storage_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_storage_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_volume_attachment(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attachment # noqa: E501 - - partially update the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attachment(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_volume_attachment_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_volume_attachment_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attachment # noqa: E501 - - partially update the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attachment_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_volume_attachment`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_volume_attachment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_volume_attachment_status(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attachment_status # noqa: E501 - - partially update status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attachment_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_volume_attachment_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_volume_attachment_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attachment_status # noqa: E501 - - partially update status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attachment_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_volume_attachment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_volume_attachment_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_volume_attachment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}/status', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_csi_driver(self, name, **kwargs): # noqa: E501 - """read_csi_driver # noqa: E501 - - read the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_csi_driver(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriver - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_csi_driver_with_http_info(name, **kwargs) # noqa: E501 - - def read_csi_driver_with_http_info(self, name, **kwargs): # noqa: E501 - """read_csi_driver # noqa: E501 - - read the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_csi_driver_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriver, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_csi_driver`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriver', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_csi_node(self, name, **kwargs): # noqa: E501 - """read_csi_node # noqa: E501 - - read the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_csi_node(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINode - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_csi_node_with_http_info(name, **kwargs) # noqa: E501 - - def read_csi_node_with_http_info(self, name, **kwargs): # noqa: E501 - """read_csi_node # noqa: E501 - - read the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_csi_node_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINode, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_csi_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINode', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_namespaced_csi_storage_capacity(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_csi_storage_capacity # noqa: E501 - - read the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_csi_storage_capacity(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacity - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_namespaced_csi_storage_capacity_with_http_info(name, namespace, **kwargs) # noqa: E501 - - def read_namespaced_csi_storage_capacity_with_http_info(self, name, namespace, **kwargs): # noqa: E501 - """read_namespaced_csi_storage_capacity # noqa: E501 - - read the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_namespaced_csi_storage_capacity_with_http_info(name, namespace, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacity, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `read_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacity', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_storage_class(self, name, **kwargs): # noqa: E501 - """read_storage_class # noqa: E501 - - read the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_storage_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_storage_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_storage_class # noqa: E501 - - read the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_storage_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_storage_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_volume_attachment(self, name, **kwargs): # noqa: E501 - """read_volume_attachment # noqa: E501 - - read the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attachment(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_volume_attachment_with_http_info(name, **kwargs) # noqa: E501 - - def read_volume_attachment_with_http_info(self, name, **kwargs): # noqa: E501 - """read_volume_attachment # noqa: E501 - - read the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attachment_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_volume_attachment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_volume_attachment_status(self, name, **kwargs): # noqa: E501 - """read_volume_attachment_status # noqa: E501 - - read status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attachment_status(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_volume_attachment_status_with_http_info(name, **kwargs) # noqa: E501 - - def read_volume_attachment_status_with_http_info(self, name, **kwargs): # noqa: E501 - """read_volume_attachment_status # noqa: E501 - - read status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attachment_status_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_volume_attachment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_volume_attachment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}/status', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_csi_driver(self, name, body, **kwargs): # noqa: E501 - """replace_csi_driver # noqa: E501 - - replace the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_csi_driver(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param V1CSIDriver body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIDriver - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_csi_driver_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_csi_driver_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_csi_driver # noqa: E501 - - replace the specified CSIDriver # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_csi_driver_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIDriver (required) - :param V1CSIDriver body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIDriver, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_csi_driver" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_csi_driver`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_csi_driver`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csidrivers/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIDriver', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_csi_node(self, name, body, **kwargs): # noqa: E501 - """replace_csi_node # noqa: E501 - - replace the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_csi_node(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param V1CSINode body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSINode - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_csi_node_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_csi_node_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_csi_node # noqa: E501 - - replace the specified CSINode # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_csi_node_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSINode (required) - :param V1CSINode body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSINode, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_csi_node" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_csi_node`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_csi_node`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/csinodes/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSINode', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_namespaced_csi_storage_capacity(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_csi_storage_capacity # noqa: E501 - - replace the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_csi_storage_capacity(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CSIStorageCapacity body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1CSIStorageCapacity - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_namespaced_csi_storage_capacity_with_http_info(name, namespace, body, **kwargs) # noqa: E501 - - def replace_namespaced_csi_storage_capacity_with_http_info(self, name, namespace, body, **kwargs): # noqa: E501 - """replace_namespaced_csi_storage_capacity # noqa: E501 - - replace the specified CSIStorageCapacity # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_namespaced_csi_storage_capacity_with_http_info(name, namespace, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the CSIStorageCapacity (required) - :param str namespace: object name and auth scope, such as for teams and projects (required) - :param V1CSIStorageCapacity body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1CSIStorageCapacity, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'namespace', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_namespaced_csi_storage_capacity" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'namespace' is set - if self.api_client.client_side_validation and ('namespace' not in local_var_params or # noqa: E501 - local_var_params['namespace'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `namespace` when calling `replace_namespaced_csi_storage_capacity`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_namespaced_csi_storage_capacity`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - if 'namespace' in local_var_params: - path_params['namespace'] = local_var_params['namespace'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1CSIStorageCapacity', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_storage_class(self, name, body, **kwargs): # noqa: E501 - """replace_storage_class # noqa: E501 - - replace the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param V1StorageClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1StorageClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_storage_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_storage_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_storage_class # noqa: E501 - - replace the specified StorageClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_storage_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the StorageClass (required) - :param V1StorageClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1StorageClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_storage_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_storage_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_storage_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/storageclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1StorageClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_volume_attachment(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attachment # noqa: E501 - - replace the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attachment(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_volume_attachment_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_volume_attachment_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attachment # noqa: E501 - - replace the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attachment_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_volume_attachment" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_volume_attachment`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_volume_attachment`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_volume_attachment_status(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attachment_status # noqa: E501 - - replace status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attachment_status(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1VolumeAttachment - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_volume_attachment_status_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_volume_attachment_status_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attachment_status # noqa: E501 - - replace status of the specified VolumeAttachment # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attachment_status_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttachment (required) - :param V1VolumeAttachment body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1VolumeAttachment, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_volume_attachment_status" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_volume_attachment_status`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_volume_attachment_status`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1/volumeattachments/{name}/status', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1VolumeAttachment', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1alpha1_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1alpha1_api.py deleted file mode 100644 index 4e9c1eb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/storage_v1alpha1_api.py +++ /dev/null @@ -1,1169 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class StorageV1alpha1Api(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def create_volume_attributes_class(self, body, **kwargs): # noqa: E501 - """create_volume_attributes_class # noqa: E501 - - create a VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_volume_attributes_class(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1VolumeAttributesClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.create_volume_attributes_class_with_http_info(body, **kwargs) # noqa: E501 - - def create_volume_attributes_class_with_http_info(self, body, **kwargs): # noqa: E501 - """create_volume_attributes_class # noqa: E501 - - create a VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.create_volume_attributes_class_with_http_info(body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param V1alpha1VolumeAttributesClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method create_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `create_volume_attributes_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses', 'POST', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_collection_volume_attributes_class(self, **kwargs): # noqa: E501 - """delete_collection_volume_attributes_class # noqa: E501 - - delete collection of VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_volume_attributes_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1Status - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_collection_volume_attributes_class_with_http_info(**kwargs) # noqa: E501 - - def delete_collection_volume_attributes_class_with_http_info(self, **kwargs): # noqa: E501 - """delete_collection_volume_attributes_class # noqa: E501 - - delete collection of VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_collection_volume_attributes_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1Status, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - '_continue', - 'dry_run', - 'field_selector', - 'grace_period_seconds', - 'label_selector', - 'limit', - 'orphan_dependents', - 'propagation_policy', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_collection_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1Status', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def delete_volume_attributes_class(self, name, **kwargs): # noqa: E501 - """delete_volume_attributes_class # noqa: E501 - - delete a VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_volume_attributes_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.delete_volume_attributes_class_with_http_info(name, **kwargs) # noqa: E501 - - def delete_volume_attributes_class_with_http_info(self, name, **kwargs): # noqa: E501 - """delete_volume_attributes_class # noqa: E501 - - delete a VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_volume_attributes_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param int grace_period_seconds: The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. - :param bool orphan_dependents: Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. - :param str propagation_policy: Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. - :param V1DeleteOptions body: - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty', - 'dry_run', - 'grace_period_seconds', - 'orphan_dependents', - 'propagation_policy', - 'body' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method delete_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `delete_volume_attributes_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'grace_period_seconds' in local_var_params and local_var_params['grace_period_seconds'] is not None: # noqa: E501 - query_params.append(('gracePeriodSeconds', local_var_params['grace_period_seconds'])) # noqa: E501 - if 'orphan_dependents' in local_var_params and local_var_params['orphan_dependents'] is not None: # noqa: E501 - query_params.append(('orphanDependents', local_var_params['orphan_dependents'])) # noqa: E501 - if 'propagation_policy' in local_var_params and local_var_params['propagation_policy'] is not None: # noqa: E501 - query_params.append(('propagationPolicy', local_var_params['propagation_policy'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}', 'DELETE', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def get_api_resources(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1APIResourceList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_api_resources_with_http_info(**kwargs) # noqa: E501 - - def get_api_resources_with_http_info(self, **kwargs): # noqa: E501 - """get_api_resources # noqa: E501 - - get available resources # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_api_resources_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1APIResourceList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_api_resources" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1APIResourceList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def list_volume_attributes_class(self, **kwargs): # noqa: E501 - """list_volume_attributes_class # noqa: E501 - - list or watch objects of kind VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_volume_attributes_class(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClassList - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.list_volume_attributes_class_with_http_info(**kwargs) # noqa: E501 - - def list_volume_attributes_class_with_http_info(self, **kwargs): # noqa: E501 - """list_volume_attributes_class # noqa: E501 - - list or watch objects of kind VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.list_volume_attributes_class_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param bool allow_watch_bookmarks: allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. - :param str _continue: The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\". This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications. - :param str field_selector: A selector to restrict the list of returned objects by their fields. Defaults to everything. - :param str label_selector: A selector to restrict the list of returned objects by their labels. Defaults to everything. - :param int limit: limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true. The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned. - :param str resource_version: resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param str resource_version_match: resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details. Defaults to unset - :param bool send_initial_events: `sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \"Bookmark\" event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\"k8s.io/initial-events-end\": \"true\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched. When `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan is interpreted as \"data at least as new as the provided `resourceVersion`\" and the bookmark event is send when the state is synced to a `resourceVersion` at least as fresh as the one provided by the ListOptions. If `resourceVersion` is unset, this is interpreted as \"consistent read\" and the bookmark event is send when the state is synced at least to the moment when request started being processed. - `resourceVersionMatch` set to any other value or unset Invalid error is returned. Defaults to true if `resourceVersion=\"\"` or `resourceVersion=\"0\"` (for backward compatibility reasons) and to false otherwise. - :param int timeout_seconds: Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity. - :param bool watch: Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClassList, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'pretty', - 'allow_watch_bookmarks', - '_continue', - 'field_selector', - 'label_selector', - 'limit', - 'resource_version', - 'resource_version_match', - 'send_initial_events', - 'timeout_seconds', - 'watch' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method list_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'allow_watch_bookmarks' in local_var_params and local_var_params['allow_watch_bookmarks'] is not None: # noqa: E501 - query_params.append(('allowWatchBookmarks', local_var_params['allow_watch_bookmarks'])) # noqa: E501 - if '_continue' in local_var_params and local_var_params['_continue'] is not None: # noqa: E501 - query_params.append(('continue', local_var_params['_continue'])) # noqa: E501 - if 'field_selector' in local_var_params and local_var_params['field_selector'] is not None: # noqa: E501 - query_params.append(('fieldSelector', local_var_params['field_selector'])) # noqa: E501 - if 'label_selector' in local_var_params and local_var_params['label_selector'] is not None: # noqa: E501 - query_params.append(('labelSelector', local_var_params['label_selector'])) # noqa: E501 - if 'limit' in local_var_params and local_var_params['limit'] is not None: # noqa: E501 - query_params.append(('limit', local_var_params['limit'])) # noqa: E501 - if 'resource_version' in local_var_params and local_var_params['resource_version'] is not None: # noqa: E501 - query_params.append(('resourceVersion', local_var_params['resource_version'])) # noqa: E501 - if 'resource_version_match' in local_var_params and local_var_params['resource_version_match'] is not None: # noqa: E501 - query_params.append(('resourceVersionMatch', local_var_params['resource_version_match'])) # noqa: E501 - if 'send_initial_events' in local_var_params and local_var_params['send_initial_events'] is not None: # noqa: E501 - query_params.append(('sendInitialEvents', local_var_params['send_initial_events'])) # noqa: E501 - if 'timeout_seconds' in local_var_params and local_var_params['timeout_seconds'] is not None: # noqa: E501 - query_params.append(('timeoutSeconds', local_var_params['timeout_seconds'])) # noqa: E501 - if 'watch' in local_var_params and local_var_params['watch'] is not None: # noqa: E501 - query_params.append(('watch', local_var_params['watch'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf', 'application/json;stream=watch', 'application/vnd.kubernetes.protobuf;stream=watch']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClassList', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def patch_volume_attributes_class(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attributes_class # noqa: E501 - - partially update the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attributes_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.patch_volume_attributes_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def patch_volume_attributes_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """patch_volume_attributes_class # noqa: E501 - - partially update the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.patch_volume_attributes_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param object body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch). - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param bool force: Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation', - 'force' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method patch_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `patch_volume_attributes_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `patch_volume_attributes_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - if 'force' in local_var_params and local_var_params['force'] is not None: # noqa: E501 - query_params.append(('force', local_var_params['force'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # HTTP header `Content-Type` - header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 - ['application/json-patch+json', 'application/merge-patch+json', 'application/strategic-merge-patch+json', 'application/apply-patch+yaml']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}', 'PATCH', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def read_volume_attributes_class(self, name, **kwargs): # noqa: E501 - """read_volume_attributes_class # noqa: E501 - - read the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attributes_class(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.read_volume_attributes_class_with_http_info(name, **kwargs) # noqa: E501 - - def read_volume_attributes_class_with_http_info(self, name, **kwargs): # noqa: E501 - """read_volume_attributes_class # noqa: E501 - - read the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.read_volume_attributes_class_with_http_info(name, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'pretty' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method read_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `read_volume_attributes_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) - - def replace_volume_attributes_class(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attributes_class # noqa: E501 - - replace the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attributes_class(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param V1alpha1VolumeAttributesClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: V1alpha1VolumeAttributesClass - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.replace_volume_attributes_class_with_http_info(name, body, **kwargs) # noqa: E501 - - def replace_volume_attributes_class_with_http_info(self, name, body, **kwargs): # noqa: E501 - """replace_volume_attributes_class # noqa: E501 - - replace the specified VolumeAttributesClass # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.replace_volume_attributes_class_with_http_info(name, body, async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param str name: name of the VolumeAttributesClass (required) - :param V1alpha1VolumeAttributesClass body: (required) - :param str pretty: If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget). - :param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed - :param str field_manager: fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. - :param str field_validation: fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(V1alpha1VolumeAttributesClass, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - 'name', - 'body', - 'pretty', - 'dry_run', - 'field_manager', - 'field_validation' - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method replace_volume_attributes_class" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - # verify the required parameter 'name' is set - if self.api_client.client_side_validation and ('name' not in local_var_params or # noqa: E501 - local_var_params['name'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `name` when calling `replace_volume_attributes_class`") # noqa: E501 - # verify the required parameter 'body' is set - if self.api_client.client_side_validation and ('body' not in local_var_params or # noqa: E501 - local_var_params['body'] is None): # noqa: E501 - raise ApiValueError("Missing the required parameter `body` when calling `replace_volume_attributes_class`") # noqa: E501 - - collection_formats = {} - - path_params = {} - if 'name' in local_var_params: - path_params['name'] = local_var_params['name'] # noqa: E501 - - query_params = [] - if 'pretty' in local_var_params and local_var_params['pretty'] is not None: # noqa: E501 - query_params.append(('pretty', local_var_params['pretty'])) # noqa: E501 - if 'dry_run' in local_var_params and local_var_params['dry_run'] is not None: # noqa: E501 - query_params.append(('dryRun', local_var_params['dry_run'])) # noqa: E501 - if 'field_manager' in local_var_params and local_var_params['field_manager'] is not None: # noqa: E501 - query_params.append(('fieldManager', local_var_params['field_manager'])) # noqa: E501 - if 'field_validation' in local_var_params and local_var_params['field_validation'] is not None: # noqa: E501 - query_params.append(('fieldValidation', local_var_params['field_validation'])) # noqa: E501 - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - if 'body' in local_var_params: - body_params = local_var_params['body'] - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json', 'application/yaml', 'application/vnd.kubernetes.protobuf']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}', 'PUT', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='V1alpha1VolumeAttributesClass', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/version_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/version_api.py deleted file mode 100644 index 72c6134..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/version_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class VersionApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_code(self, **kwargs): # noqa: E501 - """get_code # noqa: E501 - - get the code version # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_code(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: VersionInfo - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_code_with_http_info(**kwargs) # noqa: E501 - - def get_code_with_http_info(self, **kwargs): # noqa: E501 - """get_code # noqa: E501 - - get the code version # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_code_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(VersionInfo, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_code" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/version/', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='VersionInfo', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api/well_known_api.py b/venv/lib/python3.10/site-packages/kubernetes/client/api/well_known_api.py deleted file mode 100644 index e2dc840..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api/well_known_api.py +++ /dev/null @@ -1,142 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import re # noqa: F401 - -# python 2 and python 3 compatibility library -import six - -from kubernetes.client.api_client import ApiClient -from kubernetes.client.exceptions import ( # noqa: F401 - ApiTypeError, - ApiValueError -) - - -class WellKnownApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - - def get_service_account_issuer_open_id_configuration(self, **kwargs): # noqa: E501 - """get_service_account_issuer_open_id_configuration # noqa: E501 - - get service account issuer OpenID configuration, also known as the 'OIDC discovery doc' # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_service_account_issuer_open_id_configuration(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: str - If the method is called asynchronously, - returns the request thread. - """ - kwargs['_return_http_data_only'] = True - return self.get_service_account_issuer_open_id_configuration_with_http_info(**kwargs) # noqa: E501 - - def get_service_account_issuer_open_id_configuration_with_http_info(self, **kwargs): # noqa: E501 - """get_service_account_issuer_open_id_configuration # noqa: E501 - - get service account issuer OpenID configuration, also known as the 'OIDC discovery doc' # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_service_account_issuer_open_id_configuration_with_http_info(async_req=True) - >>> result = thread.get() - - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: tuple(str, status_code(int), headers(HTTPHeaderDict)) - If the method is called asynchronously, - returns the request thread. - """ - - local_var_params = locals() - - all_params = [ - ] - all_params.extend( - [ - 'async_req', - '_return_http_data_only', - '_preload_content', - '_request_timeout' - ] - ) - - for key, val in six.iteritems(local_var_params['kwargs']): - if key not in all_params: - raise ApiTypeError( - "Got an unexpected keyword argument '%s'" - " to method get_service_account_issuer_open_id_configuration" % key - ) - local_var_params[key] = val - del local_var_params['kwargs'] - - collection_formats = {} - - path_params = {} - - query_params = [] - - header_params = {} - - form_params = [] - local_var_files = {} - - body_params = None - # HTTP header `Accept` - header_params['Accept'] = self.api_client.select_header_accept( - ['application/json']) # noqa: E501 - - # Authentication setting - auth_settings = ['BearerToken'] # noqa: E501 - - return self.api_client.call_api( - '/.well-known/openid-configuration', 'GET', - path_params, - query_params, - header_params, - body=body_params, - post_params=form_params, - files=local_var_files, - response_type='str', # noqa: E501 - auth_settings=auth_settings, - async_req=local_var_params.get('async_req'), - _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 - _preload_content=local_var_params.get('_preload_content', True), - _request_timeout=local_var_params.get('_request_timeout'), - collection_formats=collection_formats) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/api_client.py b/venv/lib/python3.10/site-packages/kubernetes/client/api_client.py deleted file mode 100644 index 1b06493..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/api_client.py +++ /dev/null @@ -1,647 +0,0 @@ -# coding: utf-8 -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - -from __future__ import absolute_import - -import atexit -import datetime -from dateutil.parser import parse -import json -import mimetypes -from multiprocessing.pool import ThreadPool -import os -import re -import tempfile - -# python 2 and python 3 compatibility library -import six -from six.moves.urllib.parse import quote - -from kubernetes.client.configuration import Configuration -import kubernetes.client.models -from kubernetes.client import rest -from kubernetes.client.exceptions import ApiValueError - - -class ApiClient(object): - """Generic API client for OpenAPI client library builds. - - OpenAPI generic API client. This client handles the client- - server communication, and is invariant across implementations. Specifics of - the methods and models for each application are generated from the OpenAPI - templates. - - NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - Do not edit the class manually. - - :param configuration: .Configuration object for this client - :param header_name: a header to pass when making calls to the API. - :param header_value: a header value to pass when making calls to - the API. - :param cookie: a cookie to include in the header when making calls - to the API - :param pool_threads: The number of threads to use for async requests - to the API. More threads means more concurrent API requests. - """ - - PRIMITIVE_TYPES = (float, bool, bytes, six.text_type) + six.integer_types - NATIVE_TYPES_MAPPING = { - 'int': int, - 'long': int if six.PY3 else long, # noqa: F821 - 'float': float, - 'str': str, - 'bool': bool, - 'date': datetime.date, - 'datetime': datetime.datetime, - 'object': object, - } - _pool = None - - def __init__(self, configuration=None, header_name=None, header_value=None, - cookie=None, pool_threads=1): - if configuration is None: - configuration = Configuration.get_default_copy() - self.configuration = configuration - self.pool_threads = pool_threads - - self.rest_client = rest.RESTClientObject(configuration) - self.default_headers = {} - if header_name is not None: - self.default_headers[header_name] = header_value - self.cookie = cookie - # Set default User-Agent. - self.user_agent = 'OpenAPI-Generator/29.0.0/python' - self.client_side_validation = configuration.client_side_validation - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, traceback): - self.close() - - def close(self): - if self._pool: - self._pool.close() - self._pool.join() - self._pool = None - if hasattr(atexit, 'unregister'): - atexit.unregister(self.close) - - @property - def pool(self): - """Create thread pool on first request - avoids instantiating unused threadpool for blocking clients. - """ - if self._pool is None: - atexit.register(self.close) - self._pool = ThreadPool(self.pool_threads) - return self._pool - - @property - def user_agent(self): - """User agent for this API client""" - return self.default_headers['User-Agent'] - - @user_agent.setter - def user_agent(self, value): - self.default_headers['User-Agent'] = value - - def set_default_header(self, header_name, header_value): - self.default_headers[header_name] = header_value - - def __call_api( - self, resource_path, method, path_params=None, - query_params=None, header_params=None, body=None, post_params=None, - files=None, response_type=None, auth_settings=None, - _return_http_data_only=None, collection_formats=None, - _preload_content=True, _request_timeout=None, _host=None): - - config = self.configuration - - # header parameters - header_params = header_params or {} - header_params.update(self.default_headers) - if self.cookie: - header_params['Cookie'] = self.cookie - if header_params: - header_params = self.sanitize_for_serialization(header_params) - header_params = dict(self.parameters_to_tuples(header_params, - collection_formats)) - - # path parameters - if path_params: - path_params = self.sanitize_for_serialization(path_params) - path_params = self.parameters_to_tuples(path_params, - collection_formats) - for k, v in path_params: - # specified safe chars, encode everything - resource_path = resource_path.replace( - '{%s}' % k, - quote(str(v), safe=config.safe_chars_for_path_param) - ) - - # query parameters - if query_params: - query_params = self.sanitize_for_serialization(query_params) - query_params = self.parameters_to_tuples(query_params, - collection_formats) - - # post parameters - if post_params or files: - post_params = post_params if post_params else [] - post_params = self.sanitize_for_serialization(post_params) - post_params = self.parameters_to_tuples(post_params, - collection_formats) - post_params.extend(self.files_parameters(files)) - - # auth setting - self.update_params_for_auth(header_params, query_params, auth_settings) - - # body - if body: - body = self.sanitize_for_serialization(body) - - # request url - if _host is None: - url = self.configuration.host + resource_path - else: - # use server/host defined in path or operation instead - url = _host + resource_path - - # perform request and return response - response_data = self.request( - method, url, query_params=query_params, headers=header_params, - post_params=post_params, body=body, - _preload_content=_preload_content, - _request_timeout=_request_timeout) - - self.last_response = response_data - - return_data = response_data - if _preload_content: - # deserialize response data - if response_type: - return_data = self.deserialize(response_data, response_type) - else: - return_data = None - - if _return_http_data_only: - return (return_data) - else: - return (return_data, response_data.status, - response_data.getheaders()) - - def sanitize_for_serialization(self, obj): - """Builds a JSON POST object. - - If obj is None, return None. - If obj is str, int, long, float, bool, return directly. - If obj is datetime.datetime, datetime.date - convert to string in iso8601 format. - If obj is list, sanitize each element in the list. - If obj is dict, return the dict. - If obj is OpenAPI model, return the properties dict. - - :param obj: The data to serialize. - :return: The serialized form of data. - """ - if obj is None: - return None - elif isinstance(obj, self.PRIMITIVE_TYPES): - return obj - elif isinstance(obj, list): - return [self.sanitize_for_serialization(sub_obj) - for sub_obj in obj] - elif isinstance(obj, tuple): - return tuple(self.sanitize_for_serialization(sub_obj) - for sub_obj in obj) - elif isinstance(obj, (datetime.datetime, datetime.date)): - return obj.isoformat() - - if isinstance(obj, dict): - obj_dict = obj - else: - # Convert model obj to dict except - # attributes `openapi_types`, `attribute_map` - # and attributes which value is not None. - # Convert attribute name to json key in - # model definition for request. - obj_dict = {obj.attribute_map[attr]: getattr(obj, attr) - for attr, _ in six.iteritems(obj.openapi_types) - if getattr(obj, attr) is not None} - - return {key: self.sanitize_for_serialization(val) - for key, val in six.iteritems(obj_dict)} - - def deserialize(self, response, response_type): - """Deserializes response into an object. - - :param response: RESTResponse object to be deserialized. - :param response_type: class literal for - deserialized object, or string of class name. - - :return: deserialized object. - """ - # handle file downloading - # save response body into a tmp file and return the instance - if response_type == "file": - return self.__deserialize_file(response) - - # fetch data from response object - try: - data = json.loads(response.data) - except ValueError: - data = response.data - - return self.__deserialize(data, response_type) - - def __deserialize(self, data, klass): - """Deserializes dict, list, str into an object. - - :param data: dict, list or str. - :param klass: class literal, or string of class name. - - :return: object. - """ - if data is None: - return None - - if type(klass) == str: - if klass.startswith('list['): - sub_kls = re.match(r'list\[(.*)\]', klass).group(1) - return [self.__deserialize(sub_data, sub_kls) - for sub_data in data] - - if klass.startswith('dict('): - sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2) - return {k: self.__deserialize(v, sub_kls) - for k, v in six.iteritems(data)} - - # convert str to class - if klass in self.NATIVE_TYPES_MAPPING: - klass = self.NATIVE_TYPES_MAPPING[klass] - else: - klass = getattr(kubernetes.client.models, klass) - - if klass in self.PRIMITIVE_TYPES: - return self.__deserialize_primitive(data, klass) - elif klass == object: - return self.__deserialize_object(data) - elif klass == datetime.date: - return self.__deserialize_date(data) - elif klass == datetime.datetime: - return self.__deserialize_datetime(data) - else: - return self.__deserialize_model(data, klass) - - def call_api(self, resource_path, method, - path_params=None, query_params=None, header_params=None, - body=None, post_params=None, files=None, - response_type=None, auth_settings=None, async_req=None, - _return_http_data_only=None, collection_formats=None, - _preload_content=True, _request_timeout=None, _host=None): - """Makes the HTTP request (synchronous) and returns deserialized data. - - To make an async_req request, set the async_req parameter. - - :param resource_path: Path to method endpoint. - :param method: Method to call. - :param path_params: Path parameters in the url. - :param query_params: Query parameters in the url. - :param header_params: Header parameters to be - placed in the request header. - :param body: Request body. - :param post_params dict: Request post form parameters, - for `application/x-www-form-urlencoded`, `multipart/form-data`. - :param auth_settings list: Auth Settings names for the request. - :param response: Response data type. - :param files dict: key -> filename, value -> filepath, - for `multipart/form-data`. - :param async_req bool: execute request asynchronously - :param _return_http_data_only: response data without head status code - and headers - :param collection_formats: dict of collection formats for path, query, - header, and post parameters. - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :return: - If async_req parameter is True, - the request will be called asynchronously. - The method will return the request thread. - If parameter async_req is False or missing, - then the method will return the response directly. - """ - if not async_req: - return self.__call_api(resource_path, method, - path_params, query_params, header_params, - body, post_params, files, - response_type, auth_settings, - _return_http_data_only, collection_formats, - _preload_content, _request_timeout, _host) - - return self.pool.apply_async(self.__call_api, (resource_path, - method, path_params, - query_params, - header_params, body, - post_params, files, - response_type, - auth_settings, - _return_http_data_only, - collection_formats, - _preload_content, - _request_timeout, - _host)) - - def request(self, method, url, query_params=None, headers=None, - post_params=None, body=None, _preload_content=True, - _request_timeout=None): - """Makes the HTTP request using RESTClient.""" - if method == "GET": - return self.rest_client.GET(url, - query_params=query_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - headers=headers) - elif method == "HEAD": - return self.rest_client.HEAD(url, - query_params=query_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - headers=headers) - elif method == "OPTIONS": - return self.rest_client.OPTIONS(url, - query_params=query_params, - headers=headers, - _preload_content=_preload_content, - _request_timeout=_request_timeout) - elif method == "POST": - return self.rest_client.POST(url, - query_params=query_params, - headers=headers, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - elif method == "PUT": - return self.rest_client.PUT(url, - query_params=query_params, - headers=headers, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - elif method == "PATCH": - return self.rest_client.PATCH(url, - query_params=query_params, - headers=headers, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - elif method == "DELETE": - return self.rest_client.DELETE(url, - query_params=query_params, - headers=headers, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - else: - raise ApiValueError( - "http method must be `GET`, `HEAD`, `OPTIONS`," - " `POST`, `PATCH`, `PUT` or `DELETE`." - ) - - def parameters_to_tuples(self, params, collection_formats): - """Get parameters as list of tuples, formatting collections. - - :param params: Parameters as dict or list of two-tuples - :param dict collection_formats: Parameter collection formats - :return: Parameters as list of tuples, collections formatted - """ - new_params = [] - if collection_formats is None: - collection_formats = {} - for k, v in six.iteritems(params) if isinstance(params, dict) else params: # noqa: E501 - if k in collection_formats: - collection_format = collection_formats[k] - if collection_format == 'multi': - new_params.extend((k, value) for value in v) - else: - if collection_format == 'ssv': - delimiter = ' ' - elif collection_format == 'tsv': - delimiter = '\t' - elif collection_format == 'pipes': - delimiter = '|' - else: # csv is the default - delimiter = ',' - new_params.append( - (k, delimiter.join(str(value) for value in v))) - else: - new_params.append((k, v)) - return new_params - - def files_parameters(self, files=None): - """Builds form parameters. - - :param files: File parameters. - :return: Form parameters with files. - """ - params = [] - - if files: - for k, v in six.iteritems(files): - if not v: - continue - file_names = v if type(v) is list else [v] - for n in file_names: - with open(n, 'rb') as f: - filename = os.path.basename(f.name) - filedata = f.read() - mimetype = (mimetypes.guess_type(filename)[0] or - 'application/octet-stream') - params.append( - tuple([k, tuple([filename, filedata, mimetype])])) - - return params - - def select_header_accept(self, accepts): - """Returns `Accept` based on an array of accepts provided. - - :param accepts: List of headers. - :return: Accept (e.g. application/json). - """ - if not accepts: - return - - accepts = [x.lower() for x in accepts] - - if 'application/json' in accepts: - return 'application/json' - else: - return ', '.join(accepts) - - def select_header_content_type(self, content_types): - """Returns `Content-Type` based on an array of content_types provided. - - :param content_types: List of content-types. - :return: Content-Type (e.g. application/json). - """ - if not content_types: - return 'application/json' - - content_types = [x.lower() for x in content_types] - - if 'application/json' in content_types or '*/*' in content_types: - return 'application/json' - else: - return content_types[0] - - def update_params_for_auth(self, headers, querys, auth_settings): - """Updates header and query params based on authentication setting. - - :param headers: Header parameters dict to be updated. - :param querys: Query parameters tuple list to be updated. - :param auth_settings: Authentication setting identifiers list. - """ - if not auth_settings: - return - - for auth in auth_settings: - auth_setting = self.configuration.auth_settings().get(auth) - if auth_setting: - if auth_setting['in'] == 'cookie': - headers['Cookie'] = auth_setting['value'] - elif auth_setting['in'] == 'header': - headers[auth_setting['key']] = auth_setting['value'] - elif auth_setting['in'] == 'query': - querys.append((auth_setting['key'], auth_setting['value'])) - else: - raise ApiValueError( - 'Authentication token must be in `query` or `header`' - ) - - def __deserialize_file(self, response): - """Deserializes body to file - - Saves response body into a file in a temporary folder, - using the filename from the `Content-Disposition` header if provided. - - :param response: RESTResponse. - :return: file path. - """ - fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) - os.close(fd) - os.remove(path) - - content_disposition = response.getheader("Content-Disposition") - if content_disposition: - filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', - content_disposition).group(1) - path = os.path.join(os.path.dirname(path), filename) - - with open(path, "wb") as f: - f.write(response.data) - - return path - - def __deserialize_primitive(self, data, klass): - """Deserializes string to primitive type. - - :param data: str. - :param klass: class literal. - - :return: int, long, float, str, bool. - """ - try: - return klass(data) - except UnicodeEncodeError: - return six.text_type(data) - except TypeError: - return data - - def __deserialize_object(self, value): - """Return an original value. - - :return: object. - """ - return value - - def __deserialize_date(self, string): - """Deserializes string to date. - - :param string: str. - :return: date. - """ - try: - return parse(string).date() - except ImportError: - return string - except ValueError: - raise rest.ApiException( - status=0, - reason="Failed to parse `{0}` as date object".format(string) - ) - - def __deserialize_datetime(self, string): - """Deserializes string to datetime. - - The string should be in iso8601 datetime format. - - :param string: str. - :return: datetime. - """ - try: - return parse(string) - except ImportError: - return string - except ValueError: - raise rest.ApiException( - status=0, - reason=( - "Failed to parse `{0}` as datetime object" - .format(string) - ) - ) - - def __deserialize_model(self, data, klass): - """Deserializes list or dict to model. - - :param data: dict, list. - :param klass: class literal. - :return: model object. - """ - - if not klass.openapi_types and not hasattr(klass, - 'get_real_child_model'): - return data - - kwargs = {} - if (data is not None and - klass.openapi_types is not None and - isinstance(data, (list, dict))): - for attr, attr_type in six.iteritems(klass.openapi_types): - if klass.attribute_map[attr] in data: - value = data[klass.attribute_map[attr]] - kwargs[attr] = self.__deserialize(value, attr_type) - - instance = klass(**kwargs) - - if hasattr(instance, 'get_real_child_model'): - klass_name = instance.get_real_child_model(data) - if klass_name: - instance = self.__deserialize(data, klass_name) - return instance diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/apis/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/client/apis/__init__.py deleted file mode 100644 index ca4b321..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/apis/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from __future__ import absolute_import -import warnings - -# flake8: noqa - -# alias kubernetes.client.api package and print deprecation warning -from kubernetes.client.api import * - -warnings.filterwarnings('default', module='kubernetes.client.apis') -warnings.warn( - "The package kubernetes.client.apis is renamed and deprecated, use kubernetes.client.api instead (please note that the trailing s was removed).", - DeprecationWarning -) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/apis/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/apis/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index eb7afde2c260e004c4a708cd0f1e2d2c35833e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 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Ĝ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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/admissionregistration_v1_service_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/admissionregistration_v1_service_reference.cpython-310.pyc deleted file mode 100644 index fa9bbc045a081c4578bf53c5208040b7f61077de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6833 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 ZM#i!?$rmSd^5Hs_Y6VAOrjO diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_service_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_service_reference.cpython-310.pyc deleted file mode 100644 index 901d125b22fe923cc04d34f6cb3342c63f31fd9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6584 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 Tt+ENFgtq0lj_Fus>qPFq@ZHub diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_webhook_client_config.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiextensions_v1_webhook_client_config.cpython-310.pyc deleted file mode 100644 index 1ee5a11d54a8ee681452951000b288b1e3c81897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8061 zcmeHM&2JmW72jPhKSWFZO5)i0@<0hvGm%KkN!muSp3(a!iELpWu|DRQc-w%7sLdHT1RWtP@Qc4k$?LUN7Iet(XtqZAW>12gzRB5S&t5;Z%_`QyZ^*oaz5?qPdx%#=+ z4bC|h2DSMSCi(I^E7rB}+tts&Icu?Ir&E`bcqLrzfha8JQ}gcMh}C~VtFXXgi`d&N zOjv;v6!5rzC^W&?pcItNcQJS_mGVQ36t}d9iH+)mxu1yTc9N`JibAk2Bf9^~#rLmYo@dwFp<;f-m16kdJ)N*U z`%KIq?Q`8Q{F+$#NCUtlF6 zMeK`OA)WBKx7>?^NTg+zb*F`%jG7gn|G>1%681`#Q7rn!U7JbY4xUSR)F&tgZeaH? zQd`^BmOF3^+Aa-D2oI1^lbU;fNG@yMxge>z(K7%z(~|)2L;qBfxQHU z#2z^Pi(};Mvj=RJan?x!5kcct!WiNk#zS#mtW8M5I6WC9K99V0E|ur+7TC1v?eL@G z4H@Ek#F42WBpvRAG1rNdME?$NYQ@x5B3c=1mKBV;XUQqN{`HGSJL!nVYA^I<;tQ?A z#@hE)13;nn@#<_h2~=ZU#OsYHTyAtXbvub)sn4Bls8Ea9F89~?s!)x!k#%YKM*JFv zVATMW9TD}`=e&(fNWE-WPHMfonN~b6j6>~t4dA7oK~Zr^HvY2GrdkE{ie0tcFZ(Zl zHRJ0;h`tSI!ykRqLo)I?$g69Xh&m)9V3!tHChBaX9r|sy5k?VP7Obbx2`ydcQ5e7)8=P|9eMd2p0wI|%qz+d? z9|P*_$_nensw;f7h+u}PO{GPLY1vbn$s_?`u(o7su_-wKF0-ZT55jz23f+@2Sr7p- za=m;Ao)A0eH!t;OSIjfm1Y<#{t!B#!Y{)%ZPU2+*G%F5Mm4tf%&*!8srHTH`0XAfW zu}_nRKl&!KZ_Gp;A0z@dY3q_;$F5iHtEIpK{ zWPXsS{y!FuE|bz&x>b8=Z|k|O z3l|1sBVXCNP`mg-|5sOHqg$k5J;7EG+O$T}(wbo%(i$itM^_Xj8?4K%WIJD0@l>3u^FWg*j}lP3|M!t4%stLS==_eX-)Bx99x$m7{f5S5 z%pxp}#TFw&0}Dg(w>(D07}Llle27OGGgIlmGzN4Z4`0tI*<)k~gz+=9nlT{5xZ!Uj z>+ub^P~FAQOa*fwnF4+Th-2nI<0|-?soxj}mL9~`MR@{r4kgmWX!|f%44GS<_$n#n zFGH+Hf{1|UVT5o<6oFX{*G1;%DeN*Qp!^t;``8(Z(Uj(Kz-7RGeC<855FK`=rTn(& z2poXgiPH1kMCt}CL%UV0v&*-*ucJ+PSwVQVuuzN4MJwNs*2t)gyfpkSIo1{dYcbVM zdQo5^X-V-gnHX+-JtAZ#dvT1Aj1VIy?nkgtLcT$vf@#=U2L2yl!WjKLsGAjN0oDmu z+s3F#p^|7F5ypDR8O3KZhCzFKami4PfN&>7Q0$DTuhwT+i(tPZZrh{oY=^ehwc%%|za$|PoD&s)_&7F_eK^iZan03E8wc zs!zWG9E6eJ+@-Bz`UXz#EE@n(o(6yga&SNnL88eB@Ms3KLW)+98xRU7N=AD`8yRm> z)J9v-6|xg56$0N3DJV*v{S+Lgu|vT$fI(rGj-SLoxg2WAXUZ1WR+Hdv*kTez+i4#e^7xP|h-7W|-On{*Vuf4gB%t7r6 zqaV(W4b9ll=j{%l;nxnqy6)@O=(OCW&f_ThFOJ#t{k$6Re4s~@PXbEK;iqAsN3QH^ z61L;TXyPN2{KzCfGRedA>LZine3ANj6IQA>@sR;CYdskE7e~0C!i53wKL$Dqrwlcx3?(bLhcUFci=PqM z2B0)wPoWAjTqILFW0c5e(f2z%inf2!KJle%*A5|x9^OhPFkaFel}_c?A08dmR9apY zni!N;Lj=imfbm7@MxoMap~JiKX}~h;r!KKHEgC4bq7lxtgh;O!>C`nKY%eXE?8rD~ z#QdKVX45EK=W(Y>Ia%ap9eeWMRrhdSD>;*2R7@Ggk;(lX=dN{^ zB+u^GcS~L#luD5YtoNPkj9B7wq15dnbk%9OO9wixv(4Bi5s;RE5?DT5~ zlOxR9LkB@HI!xJjNVr834hl}bLuVI*6V5FNxLX;5EhIxJ6TV+8N4avM()0d=5eB)6 zbHI#vHg8W{N2+Mhdk!B^MO#A^RhiPAKo$%i*i^33m7=pt;U#isI3g@3h_#dD8^T8n zP3IbuB75gvLB2pV5Ol-nds((BEn>WoV{(<2JWt&8ygy^K$;?+B*FJhMu4gm9FvE20I!DF*IS!&C7M}N4>Us^ufutszQ*#&bs~w{aj(G=AaQovy zbbAqfPkJ7$o%fVI4|k=I1k%Fh6sc^u+|$A%JwJlBw31ulO_MvP6e6WCcP@xB**8*l zmau)5itkdfLz4L--7}l`1U}R}ii+jhPRXe_(D~9APC0v5OU`jvf-16%hw+}k8{br~ z9IBkGxD|J@Y~a)?lAy?0DjuVPp=h4oxksvJxlmj%@4CFruF6W8pk-3E52o+|8Oz=z U8>{Fp!F4Lt3a*eQoyQCR0rJf!W&i*H diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiregistration_v1_service_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/apiregistration_v1_service_reference.cpython-310.pyc deleted file mode 100644 index 635e453e353f5623f845d15ddb108d4c85afb4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5553 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 I)jD4IALKVbjQ{`u diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_endpoint_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_endpoint_port.cpython-310.pyc deleted file mode 100644 index 53afcc8717c7384644d6af3989170e01da8dad58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7785 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 Yg|X*pym0AQk)an$#Y|D3&=<1*2ReZASO5S3 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_list.cpython-310.pyc deleted file mode 100644 index 8de5d059e82bf50a1f047d2895661632c34a7088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6644 zcmeHMOKcm*8QxtkUn|P5$g&+L@zxH4GO$Q1M*2`)BY`6uh8rfZ3?JA8tJTg(TzR=m z&klu%pn;^%PY|L=dyuV{YW((wC@es}ZtuWH)gsWJXD(RdF}d<_NDni|uY5$H`_y^W@!-nnKD z?_6NE^Ub`j-O`xJ@{cu^=Y_pov&f7!ty<{)!?N+a)7{`ALQS+j9JxT}3C<@|X zV`;EVB&xQ3$qu83?uxzo?v>?q_j@gF?{E>**3qUd(WI^3|M<4eBCp%#pWRwiHAMIF^+-q51fpc1;sweX|qHxpS>f%t?&ZF+}UmlJ3@WfxD z;2K!05qq1tvc?RS!vm&%ZZ=I;U`1A9W!1{FOKgr+9_!5lFS2=d?6J0|H%q*^tlt-Y1y_vA>xdzYz(3e|dEWy!?qD%ib>4kEren8E{~m(4rnjguHB9p51@sceh5hW;ZOw{ z)j2_=CTD}la|36`6|v)ugE*-;z_4ky4m1dUo}Hz_%eANta9 zmO(>oqbL~#9e-(wTG}pAO}BLOo8H+8Ue|_8csiyJe^jT3@bEQ(qpxjikd^Kx=)T2e ztk65g=G0I@XC~L5X5h%=LW>5-90)mGasX(EJoZ|=?Plu=-Vr>;>6M|PZWq>ZW1D-j zX0LHU6YaPabpvJt4rof)NH5w7{a&^j_J|ba0c<#c=7$n?-wo^?H|X-qSd!UocNY_B zUAr5Ot)Pa)HTy$|0uwi*k;cQ^*C6hiA3;#_aUNUgmH zq*5fVRKL0zO4#TM-UV*TyMv5k7U&&fdK+rjiPsY@^FfxnFnJM)dyMc0M9t84e*#8OX!9!yDHB{~OgG#+_P@_2A) zT%;p6MbuWS@Q`&PxJcDVd1lAmjkXW>FZjbQJSaKTntj6!2aN7^z)Q|*_U#b8Z64gf z9p(S-GYKg15^?nTRQg4DpP_NOyQ~m4rs*(6+Fkmnba-J>hlzxlDl8T;v1+(~9`}q# z5HN-h3&eRL48`y*wq`sfw5ob_5%Z&7X zoB6=uP3F1nNalT>3L;;0nMsuxT}!j|5kbz=fu?B&T|a+`C#I0FP&#}i8PfAC{pfw3 zIk4fBnVhgj8nTkgc{nAN^{_Q_furR;g#`_P+*Rg7=+Kisg!+DsM=`=GKP7kymdLeG z$Q=I)g|9u*rS=53>uqCS|3Lfn$DbIFj7K?%yLI2#Gai}J?3*&bXNZe3FAJ0dd#v@% zJ@|ciedC(;uq2DPgXb`!);FJ&_9+Zc`)Otw{qM^%W}4~DC)U0;J{$M;!T3JK5Bc6( zchyZKy||_Kb!5sqxOw@wzPRM3nD5D_&IOC6x4`^XR)}q#{PFmf;inVJhcMxAk zC7q=fo=xam8KLKp_X4peL3Hk%BK@2qdlTtIMY!4ciq5DO6sq%NwXbd2|WoiHj7{ zgEFwPuT%Me(%Z(Eii$3>7Mu1)BwK@65c-Ks2I4q3xOtEhgmFQuD;6H4m$oF2@mx&6 zBPlozf9N=W!f2HqvJ6u{F@>M$u$MkVPMzWH3>34@pi-)Ij(g%AI>1#bp7yasa>yO$ zOZxOZ6o-YM4yfiE^sAmCL4^om9Vf9I2YBlSRIfM=?KJpObR4AQA*?sCWOJUBic&t@ zAw4{azN9oTiMuL&k`!Vj2fqf?Boha@D5D&w0dN}8z~ z1*2p@H4VM+uTjk^8VgWb%hHXx!FztJUAFX+RXSTTOJ=301Ya$QAJLvQ6p10YAmwjf v7$qfZ=_LUF*BJYsL7I&%r1y&yKvRf@flgU?oor%EVY6vqe`F{t#zOADy*u!C diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_series.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/core_v1_event_series.cpython-310.pyc deleted file mode 100644 index b701149f5f3be3679464bd9351ddb121d0c9f743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 zcmcIn&2QYs6(@(>U5fg!{1IDn(S}Wmpqo~^QG%ka;2H@W$7l(Uze&BQ51! zay=Xh(PDL}gdTz(+H28+)tmk$UVHM{MFSLQ(%+leT`8iJ8a2vY&iBWg-}}vbkJ;j) zZ{hii{bc8F*DdSsR5|~+sC!W}A0iItL+d`&7iQL!qP8M*H$1)kJBuj&#%=Qy5c<}vQkqQ|p z6t@q8$3u}u!z6fQ8Z#O6lp5w6?e=b>dc}4t&Iaww3{qLv&!?5O$ugO22Ep4wnmvm) zf`>nPZ{6&^)f2(KkU4Fg?F0%{+UlcU{XF1VTnt32HUcU7BFe?udh7k4YMCceXwf!i zl1#Qg+p(oY-1A=mIjhsO%f$y-x|8e{I25*vsrmflpzIW zReBs`QOQ6wSy_v-0!=p{mkP7(T*!UFL+X@upxa%hj>nVsEi`vxV*2!0`kx5o^%I=44*cK{|EwJKl+ zYe5tYGA{bK3p+^)VkPO6h@ECbk}%~;KZ~P&xF5+pjL%c4tfNlny%|;y44o!)y#`4d zsZ8qg%LdkKx}}?o{?1v8^w4~2$pvKp+Hd!=foSg*Ni4HiD3!FI{v>Z>Dcr+!cWs#Q zybV6=xBJO*6^V8!Z1k_6^3h&BEOBqV|5!pol@DeecSzNbhiRyYdSTyF>U%#nO;)nOVa+> z+Owbtd-U>=P`P0h!DkErSX^EBGSflEtWykN&1hm4$Ay$4jRh`3ibb)GIaE*#1KbKS zEu@{GCnBk~MFc*Bcvr2wA%!YrN*7E7TDz|<9!W;ehExYbu>pCMzDv}0YRfrbfNUO_ zR<%hMsY>vWrGH6;tIv(@RH4wa#MD21s7$X0nB0lx|CH@7HeVHFW06V7|0Ar!NJaw# z=<8uyg|;J?arh=P$P$#7!TSj98eZSOlBV(+Eo6`WF(YX8UcWjWX1XUsXQoZ4ct+Y_ zY9wEYkFO&Q>6e}4Ll~k2Cu?EcX7c+uZ zCw~LTXKZ~fSPdVmI~#IV+rL4g3#v0P18Bq43eFw*h6cdUm5{wiS8DqmwckSWHL}*w zKm^wg@=quv)}gJe=Wu*`?8N@q`t8qt!w%V@qu?sX?1&w@${o9^cEsdcs;1x$IXkw- z?h!k(VJ_G`>zSt-W0yM^(HgtYy%RDcrk!Taq5UH@hncRK`P@IT&d(mh{hIM(a2HQNkFKJ;imbb0Z532N?tl7G!U44EZg~>cx z`f5?%L9Y>Y6~Q9Jy$-RRRW1Cg7JLUWxE9^*yr5HRS*0%BK^0QF@Y{n6g3G(;JHVTh zwioQ%U%7U3zI5{BvvLmOCC$mp#YyNJ64mmuu`3keQTj=qq`8XV6-&3D) zE=_86w(xJi?y}M9m1tLBrSMNPdkF=@>gVjlIw4-!qt4at@M#dG9A#5!+VY1OdYPrAFpLfrhJU~aEsMu454p^+ikYQrq^0=|3gD)# zaEJ9k-SA%bKl*v?cBPH9iX2+<-b0`UwH|0k!8{4R-1t7{lf zjk_&t7%$`nk{~b+#j`N{9HVvU=QGz{z7$h4@P9sqqfhbfj2c&+LVwH9Nw#E*j?kur z;%$>q5Jp0$A`Jgbt?whbi~?pz)9G|N&1F(n8VxX~^urLWEBaJk2t(Rw($fe-e9=Oy zZ(_;rB3-UzyHFye8%abjy@`1|&|zR%&k^(kQtcV&wi&WeST5Ho`GAr$*>y=rk)#~* zEjb<0vs|0inaAw1471 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/discovery_v1_endpoint_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/discovery_v1_endpoint_port.cpython-310.pyc deleted file mode 100644 index 290a971d2b6c6209a112673901712c0d62dd5eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8723 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/events_v1_event_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/events_v1_event_list.cpython-310.pyc deleted file mode 100644 index 61352e2f3c6b47effff5020801999283b934fe8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6750 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 B-p&93 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/flowcontrol_v1_subject.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/flowcontrol_v1_subject.cpython-310.pyc deleted file mode 100644 index 397ec0f41fa6a7d89090cd8ca802b587f233ea42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5709 zcmcIo%WoUU8Q)zlUn@$M9mTf%h_{X#ltDyBaUZGR8Zi>v2nx`JW&1$1SgklCY31cE zJu_4+g1S^b6g?F^77bt>3e;$?J@n995B?kWno~|a1n41XoBqC8a!FH^1vMz8nVsi1 z-+c4?9y9UmtYhH!JM;d=7iSIQ3#yF&Y*ao%k~fesqiHacS)ti9_19`z`kQO!@XdvG zJKxNk#$AKiEdR`4d0yDhHH*wzHL8W)KOGmppLW-|h`8d?(e*~`GA>&p=%^r$+>VHM z0>+v9y-gl*;VTr^cinp(9{HWXy_+`1!rfA;BUkG6%|LB+*K4h~U60d2Dvm=rtSk-4 z#G>lDZ@W?a#9wi5|KR=QboB>Y+}+_q($evUt5Bt-ZvE_2m&L7an@4KJ6+Gm=h*JpRk0@)44JiHsW% zu|eW(=E?@MSdK)>3ct6THY>6cD>Fye^6VO`u-Rv3v%rgNj-7gD?3>LJFKw6Ed{!&6 z)9j4yakzt?H?mrhEwDFr&kUbI&)KY2Warp<-BaNe^ehf*>;k*^%xKQCOYAbfbL=g4 z1>aN5W#7Sfo?T^c<9nLT;Ml*LEZhm>&suS$L>xX^UhS@L^OoxUx^eHp?G^XIRv_J0 z=u7FM;CEH*9y)hAjO^TN`T*|pjbr7m2YwRc$d$`kp!DIUOSS!|>xbcPN~}5eX!)*) zyPW}VNlq%!JO^I6*a=$vR;v|vBQ@x4&OTaxD7hF^t9Fv#q{)f>IEYws3SBhG^V3<0 z-9?L_!xaT&&AGvV0aZ~#W1~e~!ylC`q>qv0HnM)6nO#E^m9cN^<@@=*;X(h910Kks zd&q5_VM)0HBkh8EvjlEu_X^TMiL$Mi84mLFvKZ*zJ6NYirc)t*$rAEZgHi8`r{8} z9pqt0qRpjF%w&CsM?3W}Sg&_>)m9u`uPwh{mx1C-9l!P1-{i9XI5SuERv5q>)U_C7 zePe`bZ)e$)DXwds-K6AsK@=#@TLvG}MOLy3CjQbKrLMO{G0)47Ik9eO?hIvlIr2au~rQ-{~oyy`{i{-UaX^1z#bk$0QqHP9Yc|tPx(4-~fl#fJ)I75WY z-q#r>Nbybv34M;p)@bS)6rKew_+#mQwiUFt+&JPxml?xv3U?#mA=7p|ilZgo?x@|G zd!Ik)1_JhCiu2XN9f#YAc^tAhL>mlu2C=FsW=MDonFO^gHNdnbM!VDiEB6+s0*u%> z5?}Hv=9BJio1&uatsyGPV%EO-OH<-{6c-SPVyq3-`H^%T;?Pm1W{Ih#1Z zO!6t9#|7W$z4vLf)c&y07Gk4TifmC+0?#z65$_w z2&U^eDRCYVk=sJRA<%&i)q~D((r{24N0L;SFT=W8$EwK7OhqP~(#f)wb-szLcWo-%CwM&)`2rUOiWFXExSp8#dchsGtP|5y zL{2omp62Vpc|;_a39ca)^^Q`rt3!Gn?jqOv?+?v7hX>guf)ch}M-Z$_Vp}DskUs4>c z2?|}hgen-faRF#g@Gh>P@6SluvsBEp-`Hk#1~J9q=|$ScaExXBfX zByj>6L{j-tizjv%NR{N;en(s$uAkT>#3Zk&RP)*pB?ZA{H<ONtj-e*Y0$ZGZOdb z#2E!7wzXh6bf>`G!ZIuWaqPK4tzcFD?G$XQcj5p3mQ*a71&l=K2VV*HV_&5HQk>ZJITtJ00!I^Ztqv znw^q$oaj+p?XPCu)&~fkj45QzU|G#E2gV49JD$8ZFymwcHtsYm>Y5 z>`;gZ8U-q!3KZzED0;AgUJUfsYY#c}P$2)o9@|sS0eUFfroV5NPl=M{xR;c|&d%(- zzWKiI_dQ1O;-YKd_dD}W^KY*h#^0$i{j<^d2v2eu1vlyjH@Vd|>!yBNbxXf<^&H;0 zw%y6s^QLjr;5N@cHh5kXc60S2w>FGQq5lt;;diUo5Hb=t%@)CC+oArVy@&#UgZ0wqKM>zLOd~w_=@?-qC z?s0{So)hC%k)PzJbkBlVK+oxMtH{srv%04&%IH}dwfH%H{;^SCL}k+T15tM{;wBA{1qeqLsc=xN2h<+@sBYo;7*EnbG01bXhvCZDH6G;$ z`GMg9I4B`klmHD%TbCG#dSQV6o+;UYTE&5d(i!AXmIfGyp4z}h%jM<g z%T}1rIx!b*z^WNW(9tj&>GXPKK@x%K`F0%mZExF`i5E<3W$JnpX5>B1jl8GX;p$h$ zk3}95WIJKxt5`}>-94PC6jD18?dH5bS;F{dhCGhfKOfdwaYxj)dSM{rKqwW~9(<70 zusjHfwpO|^PiosD+OD<3MyHD9RjvB&4i>T zp?%)=s+VN?SMBbkj^~9@s61~K1SD^uaIAufzpO-U*ft&0HSMqZOEWC4j;04DrjCA8 zr-y|9C27LIxNkr}rvDRszA03q^>EDH%-lftXV;!*q{wUn3t9nLD{k{_DT0UA+L7gw zqA8?^0?2%HT6Rq|{a%|kkJ<7vYr=AF2)P{w;%X4Yy-1CQCe_)o#J4JN*@|V@*A}Y^ zxm3eATjWQHkj#%b%cvUehehTXS)zYU3e}Sl0bj5eWCG2n-^k_-a;u?%YxcM89=EhN_nK>Dv z^BXU}t}p%0L~<`D$o+C$m#4w$ij|2`8x%4Rdt`YVpR_Dp_dxK;Q?!ujcc)=ThU^6q zcWXE$)_#jM1gsH4ff2;2?4IB5iDYbM5v3?{Y7rDy>H60_K=1wE5t;* z<}XbRPIyw7+MF+@!FkA$Cb+!ye=p?>xWtSMvxl%{kMYjr3`x&{YyZ+G5wtMmOzWa{ zESt3S<|WqYB}%JqL$J;DI1-x`Tl@TUDf7)_hFm*P#PnY2%)nTPE7vYJUtAEue|0&xu)Ff0o( zV(5o-pufit(YIgFz*kW`PxJgAPkSMvLI==aLj$Mgi77WU)JPclp$i#ms75)wQ4~ij z<83b?*b7?BPlj%ZAsU=|KNp2p+7<#zRLHkzVI8qB^jjI8Q0!&%V>l624zm zCCs$5nNQrO#`J8YFk;Air zCn4=q2zj`Py-Nd}?kPG3luuggX;H-<&3|U4#g?D=N=f-TX5fy={B#c|Q|EHq?=-l7 z<&U&5TtOw9qnACH%(up5Ucem{NIeOXa~Cw>7c|jLT>WXX z?e#C{gnB`#Ym|3`VjF3EXAjZxP4xW{qAt3E6L!iF83RE;@7sm02W_-TYK?X`$Q2D3unw$oM7WOBbf$kk_oF&QG-+z#Gbzaud=DP-_+U8W=6{<0+;tNbe_4U zD;cCM((^vU2u+7$?Z0-(hU_!i1RG5WsT5#iD!?WwQceK6z{Y_|O%pFvATZO2v{D2}Ro6(G*oIMnDJ&reqQz>(8A&UV zyY$RZwFv4`87R>9Q1n>zU>)@@?X{>(&p5~Kunzq%bvpyt~%4!h&I7rfG z(Pr@Qqk9|q?%M|W8r>$N`BziNDqAemN);DS&{><<^vozU@_j?cu+qGzT`fP5c7e}H<4ukzcdukjL0_jYz`OQ$m07hi5{r$-`rDxUR(()~X+ zzSw@a8EhZKDrmJMr2;gfo=$@+#v_f6jaM^Td@A-{t2{ID^AvW|f#9(=7RtBkL`g4d zw@-3nnWMDKoH)@{mU&T+$0BKo>@D%U8|MlSm1w02SF#BGHm^@UY~|yP7J+^AP@CcX z46phniUAbv~8IAn11d>%ZbCqcCO-7`L;R{PvQ2nc4KS(>GzTb;mGHnU1)ohz1jMNN(b(bZtv0Np>qb-%$}trlZ-kmq z70Mh|weCsgg<+h;It(GK#?C4_*KNeaUaE(-%hXdew_7<~(35B=ua;&6i0zis{;@SAaFw7W{$59z&o@V@##;Ud~Lzfq}TtH=jlNXEBB{lyX@7ILjVtJmuMr^fc+UTJ+y~YFA&>(vq z+Ojf$-@y|rnsIh!|K2t}2mgaDooEBL+=0^cZGh&3|*#Cz0x{-`JW4`_?R=jG& zM*rTEUnIKHhM$efF(xmOJ<&B z`VixaqP6e8;<^P4kyo1_{ueZ2>(tiPOQcDM?A-p``t2`%!%o?$qmfVz*cm%@wL5Ti z;f%>OUC>CLID26Y+%trFz=7Sjo_V@7aJhpSwSoK6J13arw9o@nJy81#4s_orbjjf@LLyf=FvADWSoQzG=2lNhQ8Xyj`R`T6X=H)i)XZWdtqI#_pZ8v$+`=J#-6Gwi#KuSiluP@2{)biuic z6t8oMdAW*jeY_@)SL~H$?@1wHO=YEhp-Cs1AFDV~I-<1Q zZO2MyPABS0Qm)xQb4iO?!BD9d%yE(xrBFzaGS`r>!>nKe>t)VJ-$%q5bx!!Q`?YC&A$LOVj4Ndq zoFf@Fr{(A*G2p8@S+U#2ES;6QIEXuu&h}ExP03^>yHbTo1>;Gsj@0fUnby{Rt zr_3MFwFtUkdi4>d0EUg7AWAsec?SvK`7)OnF7Bv}FTg}elqtQdykSs4Bav&~(>XRf_GSGW1(|5y^oNb>#|Ci5gQmtc}+ zTYf-d(A{VT?8~`KMaAwUYpvLFr?jvUrJ$! zpG07`cR;qeNDde8_OuAeO9}XyHw>F6ChyOR3U@}R)|?sSfjMw~LajO#8&pj42-7mx z1~L)_8dXE#S+32B%wu-(8`LQM0$YOn`o7H;^V(bRRz25qD5 zU3zvXL<9vCkPbyJ?Xf6wkbo9}do23b>@}yH1LRO3O@D8eTrDXnR@#+zX5W0gdGp@y zy?Mj9UUv;Ve>ER&eR0h&z96FbSRj6dH@Sm?8y$n2ob}9(scY6@x-NA}s7pPoU+$Dm z#c?m05^EDSv21wW z54|XU9&C6Y{`~fOw)*28;q3{T(9-dir$EwD_a6M(<8gP`7m?cVr09tt5o_zscYdK| zo=BlZ+sGxEEPuLUQ;F`5`z17Iv>Rqxe?N}4!tEh8h2^@`Tzqm>{{yYUfQk)LZ>Ll> zIO8Q!>1U;m#cf{Uj{Yw5H@M3ej?9iND!j()N5-MqafI`%$`^C0!mseFy2lkRdX{pk z!k76q-LoJT&~trC@mKhbBcoH}H~9+cI$z~KK)uLc<+o5@;ji)6QD5a%7}iVOC+qjN zw!$b>`=dX$KY9G&hWB_UOuTL{ND>bp!BEBC8GDkFb9*+mVjqgFm+Dgw{2+!Yl_z+p zw9&Gq`av`ddcFOOS!eOddOPM~DqE-iWc@+Rb8;yoBNa}Y8l|)zVTK<}wv*NdF+Zi2 zG=&LyQ>RAbr}H}t7?2ZJh$wJxcgqEP(>KHWKHlVaD8?2yhlZ>ua8&YRT*O>sI_qkl*7$O@L8CNjec}$CU4CPygnrF z!TDf0AUTYt$Zt2Qk|ax4dT}@C`Fnv({B9Au>7qZYrn*0)r{#>CQB<9WZ9cPOU`rw&t2;1${3JSwr>jerqT0i`Moq?8>++lnPtB?m;{-aoTx$ zIBWjmjLiDQmh*VbIajWQsqr72qlC76MT?r*UdOXJ+f&<9yz)AVmsVF&D>q;S%Y*&#cy6!HdDK4kJuRaQ3T=10gY4%wlJxXSJr&mC1ko>9Vx=GZ!R zPAJ}H?KHEB_Is*|nN~LQ*gY|dvyqid#*ZndD39KLsL!43_{tIrWbgwaRVa}6;osw7 zSDnFq3EO!@`y%xyoQ2%P+SM_3cY=;Fos6uVR#fcM{1+^(>;y@ml$19y1KG6s>6|80 z=T0x^Z}Q;oABZuXDmRSLTLsKbm^JU{ye7Gek8FbGd9jRd=Q6G$6^EQlkhip|rC!w% zZ{dccWwzR1(jl)IO8vD065?7&Li%$O%U99&C%g%nxn|z@)-oFlX(8;W_!NXfs)o4kp_V%M2VX%5mIX4d}WT8k6PX0>lz+hU{TvuZx0PdXVj zmKX7n;rN)H7$<}zbJQ#%DNzzB9WGu2h>ILe-&DRYA|a)dv>V_5Y$}Aq=90#&|4bYtSJ7&F9UpKNQ^8e|3MKUr3JM&XRPNFxn-v^V z4uuzPd7H7?@#4*AqKhOmkirwsaYy>-MM;urC2`k^dy(ZYX&K{%oWnzE`@VSY`^Olq zlUJ8n=G9p(W+VP*@k?6#pX4aGNPK(t40!p)%)KKUD=IdvvcZ(rxZ zsh!|{0xjx_ggYXMV;n#`m0%&Kr$v|?B Ypa{8{#_m$6OK60}us$wFHFmx9U;lrcumAu6 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aggregation_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aggregation_rule.cpython-310.pyc deleted file mode 100644 index 1274eb7173420da7b49c2551cf2d89f41649cbd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3985 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 KhtFGw3jYQC4uFgR diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_group_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_group_list.cpython-310.pyc deleted file mode 100644 index 986e1300a3dd4e91101f5d7bb355b626561ffea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6030 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 BT_^wm diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_resource_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_resource_list.cpython-310.pyc deleted file mode 100644 index 58c6d40a23697f8f1e376bb0ea923cb7f90670ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7129 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 VGTFz74jiUYunNdMmyA=H{{wHAnhXE{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service.cpython-310.pyc deleted file mode 100644 index 4306d0c128580ec54ebdafc55c0148dfcdfa2fa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6972 zcmeHMO^n;d6(%X_kE`{+ops{GjGa1G+Lhv_KhD+(VmOWw7?BIF;e*hE=5l6tX;Y*; z94)efd|IQ29*P`;wm`k;$%ou~=%KeH*Z=t{; z=kM{&`}tcSHAvZcK!`E@d}eYBtwGx!zl81WBiv=s_|`qI6VQ z9Fj>y-F45qaq`e#ac7<2& zSJ}~Vt;~+Gd=5R&jcaALz)q{48n2<}`EjkxUSMZb&pe+; z&x@lPdx@QWY_tzCm%WVVVRnw4$MXn#g?$gtqwE5E70+X=2BWBFwY!%f>}4)C!hrXG z-MV$>`jUHRJxtvo^3&ACi{F!pyT=+xMPqAdD7D}CdK+PFoHfom# zHfnPNP(khLpom(HnajWfsL|@z^Kx((UEl2_j7Mq&<<*LqZ^yL1>YvPuzcHc{n4mGb=$&q|oiEAK2F85@x-i6x$Itid4ePBsLd6ayR^_$A18l%U!7arc{wpCnJ$l8~ESzT^V46v9#4Q&Y@A&v+cc zLs_*hj!~7o#;r(OxTRiIY%s-O@&+u$Ay}!jkTyNm-KP%tRe=f(V)Zr+K^~Y#(F7 zE)$&PFE?oh9Sg|VfyCO^;o?I)p(Z-V-M+qj2d&!s(1Ix%UUr7U`$tGaC;<@QLXTV( zNk>uPG3zFP6;;s)?xww!P6)gd{9zBMLm<>}ulX^ZDOR}K>tdhhtl_>NqqW1MYktcA z?>Ix6OBYF;2Sb_z3!WU5t{D(hBV#x_Ca#DDOsHG_ zpYv!ko8284x%r)COxuADVi_7oNXQyMW{Z2mEwydHI;J7V^GcB#In?2H0y(IygIkq|1dtJj81|F1CH^AxNE2VMl{B&9B#Aus9;PU8|^$TW|}k5$$b;I-fb%r2euI} z`?*B_9BtwMsthKpQ#Q!f3KEtFd2rX%U~j}=|fn`R83Rp_8aO%I%N{}h?9MF{Lxs) zvl-v3UmB}*JA2lCdY!S_mUszE8R=GqrW3lQwvTDeFQV92v)enGRWb0l((S=1e64mB znY?}v({iSHGDYQoq)w&Z1N*<6%XXk$)&)L}Oq-scciUq1$O@7427L z6*Fx;^NF)<EYrHk zAS5DZX5!n`0amw-jseBdRx2yZ#H0C7t*pH6r@oXzxR`<5pZVd0B(utu$nUH$|LwnE zL`pH$DWiWOubjq^T;qz$l%#LtMNd&wXLET0#59+ukvasYN5OI7wBq};;&~MrS;e*8 z`U0mcLlG3}?PXNKu#K3uGr_ZX1%035PD#-<^VC1#W~PY-_L9kURG38>P2;I$VxcD_ad3uiiGK9 zMHRPCa^`}_pKzx{&9+Whj)}wwk|dT{`>$gk8rDiy?LSV*w)!Wg33`u2Df_MLnb2O_ z@)K*@*d}W-`;ELc4P%jU6f(|gP$;5ItzO7V-7X>)nU%Y%iRk!Ji+u{pWF_bxBtN4i zk!>8Z`n#b<_wV7D#wv~pl3||)*(Z2icn>M_d+O`=R957kX60Vp6hFbxX;4QADO!)` zeU1@|jfypKav6=-gL&jKiV@m7V2q}O%cNyW7lJJaabQyUfc_e=a*io_NXD$XD~Vhm zhHLOjBxn$7`O$k%3*!64Em2p(d#dBotcdYkOjt!$@;v^~^Zts_D&^%^ws~Yyl6uTD zFQA|n@Y>iGW-UM^oM{nv#AV|CO)7Tpqr`8_J@0SSMSr+V=v?>KOD%QPkCTF81el(e zIi3e2>qYcl^E~>_u&3;K_$LE;s)JyAp4^C%SllDuJC3%jGQ_}5l@mf{8p%$`l6-t3 z8?EhC*~?F<_h(eRMa9lS)SC(bNlBDDNN=O47`ADZtcnGXq+jXZR(0pysaOl}SI04} zx!kjgI@;{qv*J`1Dt5)Lm6Z|HE8;4B|3@e?OK|ZjUfO4OvaSssv*Z7v+Ko<& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_condition.cpython-310.pyc deleted file mode 100644 index 51de99827053b64d26bb17cc371d7d1947dd4954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7011 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 nkw$)^(Gl#NMx2J%m<_+>BI diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_api_service_list.cpython-310.pyc deleted file mode 100644 index c9169bb376d6f6ab649f26515f6b0ad262a14939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6711 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 F_z$_yKve($ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_attached_volume.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_attached_volume.cpython-310.pyc deleted file mode 100644 index b8fe5042e8b46161e6d08aefe13c991fad0bb933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4423 zcmcgw&2JmW72la%lFJn-%ZV*ZMbK_jAShFdv=X#v1=olXJ4R4|32eg$qU~zM8Hp<| zcj?)o8nM)+(xE7ND9~HcgLTv&(R=@fz4nxIfF24Y?eEQ!6fIG15)@r(-+b(Rym{~U zK1ON1?pb*L!XEE_{|(Ff2Q}s&2aON#W_Lk^)v*KzhBy?q>r(gpW25l_-t3Pc(t?OB5^u+@ zT7u(e|CM(f60E6}#JZ>m_k?xIvLdR&JF$*g$Cd7WRV>X~6;Ts)^Tm@MzAR5$;+j}F zu{ulQx_AR+O}r^?psb6VVio1GxFyz5UK3@g?mPL)v(5WjhuxkO&(auT8U3OC$=Uy4W@!(BvI(7hWafJ&51q1A3w6z!X@ z#c4N;gM(0IL3bV;c`cYfOerv@sf&mVr5`1sPL(QQ33IB3lRKG=ch7rN1>eprwS?kd zy46ejvb8six+?8Tt)tfSpJpvA1&d1dHU_E4S_d*YXvNV^YjCK0Y4Uz^^G+*^wA>hk z-RI$+%v#T9hTH1K5e%bc&WEX+K{x?NaA45U9319u5JX9&gJ1(ZWGf&pFEjim)MKOd zi&AS&=X4pyPamq&OKSRpv^ci*Er^|k@HN&WsWStOIe`_X3_xDmV37|Xuk^q`hj0RG zA1ImOeDllt1SW>C&L-Lv?zM z=-)<#M8D5eZ4A4BrPMS$(=q!UGd2PHfLiR3K`l?dky;98Oegt2C}I$*us^SY|A9^} ztE4@8|KsE!j3eQL4yC_~ptU_G=AAupsw9qUGnp9a7<(We@`U=yD~)bmvIb(}N;6Q` zF{xpX{x(DS>v=wh_P3EufmPa}0O{-Zy5M^X=|Db<(0O|SI%)OS!BQbbwA7nKNVrq* zkvuQ@9P0Zu_1^$_1$G2g`f8%?pHPXcBc`pFh^qVils&M1_48lyBYtFS#NRPL=0}cp z#*Qu>bM>|^X~bN?Ppq+X49^3!mTC;wdSw;VSUByhNnEBE> zwdQA!DW;os#^k|Dqjw$~XI(^qB8($39Z01ki8Kd)zKFW|m2**uvhfnKvQ-cbZz&k| zu8wiKQ+yax*y8QHqSJuppYgoX3o{ssQa3RJNh15~f+TbIZXEV^M0iir!sLxttX=dfCIellw={oXEaC;qG+v|q+b;I{A(s#qT)BclJZY7A?Mtuh@X^{;!oDO`$|w!4$(BmkZag^c`(2zomU2k9{o@kqF>;{!E`XK^Ex07}2oX?RH~@G(`?S2y!n7fVg2y^;!_nMw2gSR~Z&QQyMjIoZs+?_baLz8Ca&@j9&3^Vqa>>+YKCxK6EN)Y@u}d|nagYZhW#IJD`ndN diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aws_elastic_block_store_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_aws_elastic_block_store_volume_source.cpython-310.pyc deleted file mode 100644 index 0588d5ae0905ab629d5f7a1cbe7244f2c40782d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7885 zcmeHM&2JmW72jPh$>mCN?8I^Gq)9ePkeaDYMom&Ag6qbK<-jPy1d-taM2hu_GnCd| z?$R?u#UkjUsC>$)mtKkfEoZRFo7m-4AV<-5i&(o+M2OpTsOaxm>_2p`_xf!di!A7H#^_rQfq_QlL zlf>z9H<_ph!OKCKU5{3SwYOehF{5AF;=wi-l7`N@fkKjoI`{F#fMuOQkEd!i5Io_L z+^XM|H^pUqH#zMXJh-)AQi;42rz&?hfTX&cSGzJ)JAIzl`jJpEX)mt{9lbyV_t(OwU ztX=8KOQt=aW9$6s_ z4IyxV5Jra3)gfvkUKyc$V2fZxsp<&zkoxY(LCPDUK2nWQ38~u1Md&jdI&p?SdazD{ z(?JyUGR70wXE#m(_BfpwN2|UdXy*BG=rc;f?MTS5GYjwB3nxQQ(a4I)HoCRgL9xolo5c&gb+V(>sy z3jUqIE_^pu3%>J1q7Z`vGHd@#3=328;@@f zzxQCpG$ws^Z1gwzQJfya(w79Rk#*IAuI=bB6!igDQX_t>6T@||u{nm@k2Z|}%BvnYk>WdPP7RgK_M+y@({av->=vtL&jK@R%; zOpNyes|CZONpeFc;O2Y^r0 ztXsYeq>O>0aiU>zkU&=jR|Am}4MLuVavniZq$B#R3R1{w09w-|NO^Z{u?URdbr>&g zHzs(Jl4N~rc)lbPuhfRG&4H5fd^^-+@}oFC8k1zhnx$}rAP$N=6sYK?(H5WdB^e%RTtQRY=*(qHe+iNsPlxET~Gt!ZF+)Enu_$;wqz}a_P z)MR|SDOt2~N^`4WtsULxbWV{BmRG=h>)2eANF+OE&~X>jdR_E8>5!(f{Q7cm5_!bh zohS`(1l}f+=5#~{@v5DG_xft5-k6KerUU6?HU^l3RQB{twobnZqv4EJXa!WZM2I<7 zz(xZ|^BJASKBfF;5DZVvF>o>41NlrGM_*vEzX4|jixtft24_POzSznDTNDBN^ z$jdNPk$f2G9|SSOQL_kZiD$LS4M!2C_U@aMw@LXY5Im5f)GR|4r{YJLdtnQcdq=Px zB?H*3K=4_dBmr!^V{EvnBI$sP6BN$&m-RK~LpqtsukYaVI3!_cVoDTrk1M1DrZ_}O z+K(ydwjrr-Zl)-v`#`2hXPKgC_AvUMGDV@jZ;FPE!4|7F23sT_MhIVRu=i-XC7y#W zC#MR1liYKvpuC@vzUQ*opU+yX*+6mWe}u^wm^7VTJWm_%AdRoXV38O*q_Ek_7&j~2 zoN!CN26vRXV3N(kvl5&<*NcYmU#-2jK0X;>PyV{@EssMid(C(D=2ExC6Qr>Hte37B zpHt!7)?3W>K|beRDZf&8 zwd1IL%s6;L3CA;BS?EK1XmkHE?VoExz#~PVn=lFCZ13JrdB4IV$@g-&=Gne;&k2CM zyHuooeZNE`wr<+Wx(&bGRp*X<-umeeKXq<8H%kiMx{r)p>k&oQ;U?ccFxTf-wbu0J9K zmxr%@q8$*%p<`TsW2&kj(SrTFYCi;UcnZD8)fe5F6=NbYn#|RGZOx9X=cQ6u5;A!;evGG zh;;15|M>2qajN1h{@bs(&Rl+=vH0(kGkr+X*r&6X!ToLLj&+BSXAc{*$b(taiB#}D zmVsSQ8{=d%)Ud3V@=CvtS}L#hVd%X`8D;FVE94bS30?ky7D_le7&-72aJg|5l`ICyrw$X*^L9$4nwJY7!t-oiv8+q()(-u-z0T+OAfdp|tjL zm!2Ie7D4wA`O*LddMi-$VE5)r@4fZXd(VsB+Dp(w4=I8mXp??#mRwPkD9M700xjj8 z-T8m>-uvFXdE=;BbqxG|ZC-8vVa_oALYeWOjm*1v;&Vv2(KNWpt-x%W`fW8W{mwOW zc;^DUlW*ot<9&nMJb%~Vc~RKRHH+N3X4DG(&mD%}_j)TrhC+$h(fOr_aS^wq-&KAT zvaXEQeJ(gVyDCB4WNS)wcb7g~D*`6Z z&1N|bb%S__@SpFDGQiT5+)^aRF)|rzRMXTwNhfoB53d3 zN>-POQj2UU3dO7JD)7PxFvHIu zN^rJ5ZRABMR8NLvW5j404eE!bmB^&uq9o8SGFS_3Td3@TDXU-*UXSCY6(vocpe*rj z3D0Mw{DpG=g=yRw*ZmeX9{uQ>9xV#eUJc_R7(EB#xOOOUq?;$L;6EsUt|z_DXaddp zM<|S)vRINQ!JwLzibBJmfIA_NAE8Lg!*Ql6y?l}eGW%a;x}I61hgF_TQ)mR*3`Sb6 zzlR8e4i!eI70U zQ}xbhNp(BR?n~N)TvIVX5W6ULf8lbt?gc()NPB{{;XW^CGcCW$Iz5<7a&%S%TP9<< zT(kA&m7GX788?Pcj(rznXy-L?KBSQ@Nr|13ggk$HxhKc{p`mMfXgyEQ2BhZi`GJTxVkJ6^tO3KRs1x-`;c1)pkTr6naHOTvYPibM@#^f-?K+zix78bSud=z@?U-Jn!n@8cce;V!@>Q^b zeW)#@gcFacF+oejLtO+~?4k9);fk z$t`fSy&x9sEY&qWqWA*9LvaTRJFqnY#DC-m0eRpp?913@vq}I>Z?phn8tJ@3fR7Kh zOVWHgg!r(l$=E-1Mk$J!VHq3cW5nIv;6_ofKT_r12e^!|eKGgaIOei$`>tmTc+^L; z`M)HO6b%{WDI~J&z6;qK7u)2rB%cT8N5CLSOh%5V>`zp_0~mRfQfz}FLh&z=_{JSm z8TSz0yrPG~$UCq$tvj}|2e!&@T5?Y16#~25x@!#VO`NcCzP8R8 zw@RvrU~mpC>I3^;={`l7(sJrqM)`SFMo&BKdC$3TjQ2(WdDwnHC-r>)%vBwFOT&3- zP#D)j*bbF1ux;WWq8%-@WB<-!IoD`iCy*#a1-Oa1%LAHJ{G7mXLB2eTy1(Ix zN#+&v#Mic2o578Re>*9oJz1zuoK%NbSNd8aPKv8S5myq&hmR2}FKpqmBJg9C9xF^Da*9A=vzWs z&vki@7V*fGj`7Y|GD~0P)!&-4E{nd_>2t!1FT{m%D3WfIq`mVSx%{i=aK)4#%(mNWXc%)*yW**XQlJC1414Byp>_o#gMF3prq zmh6&UDQab@mE%WoUU8Q)zl$>oZ&C|2`j6YK$|JW#eh&R5Bgc~h`o80P}EmME3mZiUiRsr8a z*X|WtMbo%xaGMt&8@wn=n}t@HTT4c*H2jOp@O&~@5i%4?#I7zkBgRGCmO)Bh*`Vq$1y|3AE<~uqXZ~A*6gGrh0nbx>~178v1m)7ywLB7WG+{T`+i#_ZoKA8p<7!Hjk<+FEjR7g z#F*C6?Yth+s^}rq)@+v`^T|Vb3-3pG;~yd!6}dSuWLX)T#-rk>I5Iro4=L0GDX@ps z)+u@-UmBr(U`jTkQh8({bw=oix(lNMN|lj~)a52bWDT$EDsAcX1% z;RGtp+Ki+PC#Snn+wXeozKp$gUfC1Z+va4|%W*F`mM^8eobhtZoaF&ohh7l+Dw2|z zBg>RHlvI$^N{JndZf9DXB=h#vkaPI_?I(@3s3#h$gP<*=wooc)Jor}J!1ORJ;p%)p z;&EeLgzJrNu+r#nsI@43ufFhZBMy|9hnOGut0HbZ$Shc+-3_424b2z~UGRL;bgu(d z_xhQxd+S=+y;y5|y}yw-o)?6H^1KD?D~91U9IIsFFHMn4%MNm`IlQp1eCm@4+a@NP zJd~%GH0cZC+{n0ZK;ou<71cL|iZu>0(WE92*xP@-X~vYy`$Y9gP5eQZR)|=~@5X|i zr?$qY63ndC*_|;)*qV@neHwJTtP{Z)=pAK^F-a+0C1p!3#&@GZsN(uw%P#_=0~wMn z5qd8gyoaZYNTO#^s*S!_WMmw)EuqS%rknv&@i~f**0D4>Mn&THHN0OCG)k4>*Y;;B zF-UK?O=Bhx<>}Q@Bz@MXh9@TM`j;TdrT;{dsUswMXn8VQ|0~(`ed+hMrS{^5I7Nm{ zc@iA0S*ZxMbs<}^OOCftrRC_ldjd?JpovVso`+V>(j8t2GlkpsAmkwFutMI5CQe&W z36S7lGqP%?tP;;( z${4RjpixAo{(Dq^3dwMOe+=bzyElr?VKTCX_p!3}m4>V;i(8xKk4=p(_)4Iw;9tn2 zD>wCX2y+`>>3Gfm|FZZ}B<1#-VkuYg90crAl2ne6WQwM|Ae+PYJ`UIYZonDRfgp>{ zmUF8vzr%WiSm|TfieSslC=|;zTYKr`RO(H=80UYSAux+RC@1bcn(MlhaQ~zy6R_%2 zz%H;-T?eoBc5@ZSbgg{>EA{}aK8zfmPnmjei#?q&C;QwI;?Ni#d)kRfh&8@b^Kd)j zyQG)xYKN!Hi72MU5Kg7oQ8~ddqu)UA~NI;V3(M zK>2wIo`&aij{g(EJ_CNeyJsxG^U}RbkupI~F$3~-&GOWz>T~)om{Q%3NZO~7><7@{ zm)S{m`(E%Oa7j0|yfxN`ceX^;sh6A*Fd(vbLMOZT9ezt0FQ4pJXYjv&tnzN$}fQ7Qx7#o^m`^ffDWGHF-Fo*3Q0~v)g znwT@1kPhOVniRYFIZ>@Alsb17MNnbm4&2*Ch@?a5Z}G+?{i=EDpSD?>K_n{pEUBPB z-J5%HGCK}4dZfB>QeG8`_>;Inj5ELTLjJ+bu^rk51;xo!8(i1)w78`BnT>!jr(Dq$lwVVTu`xb~58sbp3E?v`w8SUWKH zpJ6ivoVDf?fKsi0Vr>~)q<7}9p4U4ZEhsb~MITfk45LqrsZ9`Rtg2Q>O8q{1sifS; zS+wV?R2EZ=X;OkhV9MVSouoxatl{|s(SbqFkU38Ub()!{Xb}fmn5&ebSrBq4D z^Tb2X`vZFG)4FTf=G=jJo(?=TRRvAeg-n(9qDse#iL$%$8${AKDcO0DAtFNId4Hm& zMI;ANnRH04*rca+oWx7lc+W$W)Ppe{Ab98{RnMcf$1P>g!|xH$gRf$d)-1s_SQ#kc z5yp?BE^)>NctZ!Ck`hJEz;t~{(nm1ug-GD3qPg0YfNkhz~RPRzHo3d%RgOr6=$lk_uU$ia9br4XkS|Av&JM7j_B;hb(H%((I*_KknY_-$bjMUa>z1>d-ozx6cX&Ps<%JOuYRJIs< zizVs9aFyM7|MH4i{qB}v+d^ivbh^P5sqE?v{u?RD(m$4U>3OGT~D zPw>}t&w^M$&+D@qKgr*CWc8Z-6hDo8k)Ppbkssr4@^i?K^KbF<$d|YW!CuTy-&?sp z9!c?06pMRl46fZtN3t)*zwO?-dt;T|-HI~SkHaiuD1;-GvKNF)95001)?B_VHeShG zJ@CU6a#c+5NNEY0r3PU#3gdXkOqRRrP>Z~hDcP#z4Jkq%q)EJ!FJz)Gg$j~zAaXz3 z3Z>BHo=0PDVMxz6L%JBzYv>VF?DnfA@ln~q`vKnUXGkV4w?~$&D{If%btmq`3IH0U zkSS6C1}VlMtxnK0vgP>+)oK$5X?;>b>Tw$!cE<0`;V@ffAseJz!~oGolt3e+WTwI0 zRzng=`I$KFhjFkS$}H%YbujmXeMU5cGA9;-5-S#YLQ~&GpTKAzCC7h_}rdN(6{mN?4dHfB=cv)l!#O-Iq0kpPlSQWXQ&pQoclW$k&(uL2($h6X!n1Bn@$xIT@XJyfPwW0RKAID;!AY=z&2 ztnM6LR>pr2?X)P_iT{^$hM^1x`*QhjiRln2b>(Z|Udu5;(q@3*eLzxV{W9XW@6Uyc zJV6uL;khzUO7`cd%2g=RzNsc(L;jqRWvBT}7urI_Ui`{`)gN0$&`+b4} zBm2(6gtJe?&euZ4e?U5^5Ir+oz(W~7? zOPGR;*L_AX|Pdh zcqQEjq;Et8VHtFkWz`+O`*E@z#t~;oM}jObTPv-#_I)-OWlF~?>w>Ly(?qPbTJUYRsae#N59}bKQ^k1E@OrH3i}mBSRiSn6f^E-46; zrzs(+%(R*WanR0D+nCzVAbC!oDdr|8r2YEuP>8HuTUn10Mc;Rx*dJQI`tdKFU1ztV z5KB*-J!jWdh{RQO&ykl@Rn_S5`UsKw9t<7KoO9KB=&3p)_Xh2+Nb{I+N}kg=%UZ^2F6neJjn9J=`lPY zh0XH%rclI{+>bK&dle>qk-Kq}sk|}>hw>ce((C6g@iDLJSz1*c;^Z|cGQ``ttEaGo zysAz6LCT2Zzah%VkGjrD$G3gk#R0>yoB#CPW7AsAX@2F`TxWdo6+C}|xpX(6wVW)z z(eTI46YB}-m_2TnbqqF-VtXlupdCjf?M4jhg*htX{979iF-qn2A)M48R7L`aL>YMv zYJe#pV_mH=$DHwnmr#$PFA!gZ-h^Z*utf?Cvd?@(4pI}crh~0DL)98gH67FrGu3pI zqpbzOpJo(!&dZK%X7CI4n&71wdI1G!tE~X9tWHr5Ct^{h;W)+v-GJ6mGdgb3wc0o@>&pxhe7aXjMgsOcU*hv zCHytRzwurwdN1EAlx5yt^j!+==dN6#ja;GR`A~yMPec&>mAc+XGG8goz?R#^(>g)& zqj)?BaQ6_v9*%Hc5AtRZ(1O#RdJy394T2^(^%eej=%xiR_ z1%Hb>38T+ii7pd~?@{stO7{1mOUJ2=#6^BPTSekouI71*SLte=!M=*-Ixe(L&{#d(rB!Qa-+XiZztVGq6f(&iPCXp zX|zltYMyt|i<2k8ig*3(%gcKA2OHem{yq)z2SZV&Kb>`nay8I;!e2U$Dy!Yo0_M8MO5C$ll~C} zH^5?p*xM>p3})e9Ag2DpZrQBF%FJOERV%WKY>ri*nynHqvw3#nsj*|W9PT`-u#T$V?o>O_P%wAxpRnHusL(iGKR%U0}i>jx}tLQm5uCep%rKd(~o_&M8jQ0ul z3VRjrlk7F-;l04V$u8i%$Xtm1TUq7d@(;q8h4K2}C(XMLuCI6xHp0|vM?so;_z3zk z@eT-^B#;ZcuDE`WcaCJX8u(!XIZKbTP%4S)t-3+n529#GFP0TjDO%Ns%Xilv@wU9f zWzbq2*RT^8JZ|%voy|e*{E>=e_G6qRbGjJK0vTi_8HjZ*TP_AY)M_M35T7Vh;h<=? zsXqSEw}s~#p0tBvSY&1&!=cq2a@{P(t!3VOA(@RbnK*OGEVcP2mlxRvuy; zYOfD1)SMy4qgEdlP^%1WlrA$N1#56Amx8zC1ztB{Jc8kM!Wdc{#$&B-*5(8en4OD~ zb`bfSfk^%KwBBY_f0`pjU$La(=R7Ik}1> ze{P7Ac>OJEY$RRYSnr2zk+iv#VdL>TX#>lHmUw-sm$0<4$>YsN6s|RTTXG|b->NTP zZls~)OTD1|I9TUt<8h8Xjdm2mwi}8Mn7Zt*X&tTiwlc@}!#I?_zl^=pS5Y`t$;4lm z_@cT)Z#=F!IF&QEKAze(F>U;#Z+b}VUy=?CjYkH=Vg`Rk^Gz;OrKeMT)nEkcn5=vl zd=a3+QbwvblBZs5q_U81+TP&ZAYW1Np5Q4CuV9Fp17M%Bg1UE~3!3Pq8%aN69wd*d z1Om2`^*9{lt6`5s(HsGxQwa@{K=mNjqnxNY>@`{to2RoFw<0*^#)L=Q`>%LUY^UFfkXt>z;sHt&@KD=xQ_z))*9p9o`s!kV zs$>M$@q9@}R;monOyoO7L7RHVKl-LeDGx2JEFTv!*>&(IDA4`mDUiPLh{mr~=Buhq zFAza@T3P-V?K!ACP4NN*T(h+9D8wZE+owPup-Cx_>&}E3af%i)gWpdB3_*2{0~5`g zWgxd{INi{s;DA|e+_32pfKU^8O!uzee}GnPZfL<2jVF_#F!wRE5G=szxzHm!BI&AC zc+7eUa70x!JbP(>ts4Rz1%J{9%n<6-y=y^C*ZUgx`aRsjoYlQsFq=adLFRFD?zziX&%o!VbSaTHJt zexAD_V^8iFNRi)qd+yTXFOZ*abdio7@H=p@^R;o6R_PdrX+QbdDIR^FI@6xmn2Mup zVDM>ve~zada&mWK1uI&XFNO@}Afz^xo9 z-p_LJYVZ7LI;Rdi?I<00`Yh4ru~jbLnknXSh(qN|A=Hnl6UhlwrWY`t zyzEC%9u+bfqAC$a@0dR_l>>!P2@X_Y@UvX{Gf#F<_Ijw6{LE>`llwt_GzaxtF`VR( zjV{~{(jBXMo7FeGZXf>k=mK1ACNW>F*(z9Soz=IdpCW;R$PEi97e8|!l2d+N2t;AT z>9JlBbN7P=wS9^wCG=Qu9MiS-=oa}T)J5KC`co94v29A@8KTig)~@-X@x%8%wzjS9 zfUNr0 zLHh@?f|<6S`OMulre`D09gQE7NQ;9@_mpF=;~*XBBCXUzAQK`Q2*{yfVO#Dw7w$o$ zfagA)i!MhA^=SmcG z*I01%SF|u0>se!PaY~Q%TJV5L$^f~O%#OlTW`%Ch6BI+M{WF_5mlf42wW7MbvJ!m9ek3znEn)gu zQH6;6DI*^Lk|-nFwyo2ai`d&n1a6ttf4cUGQLSWE|KXNwYk+jlDDhMuN$dbSDZQyQ znPN4q#m}r=W0&;E9Mq@vXygLt&Tk$)lLxGntX9ZMy&fE8nU#C6*=`^;&kwn{kU2_x zEcqKc4{5~-YY)1q&I9DqKt(QDDb&&+wFIH(ZV*DKtyfj(y{hS01+>12p@%^$WjW|D zzW-Z{P&7E!^!+*RK7g@gCW;D@D$K-`Fq5=QcnX@pzM)CwW6Js>@su-B^bziNytPDb zjN$`WB2obG?StsX^MZJtNTt;k+n(zvC@W$-7yFbUEBQWu;`_hDXq8cME!$k!!$Upb zD^p)k)PMI#>Q$zZPVhi{k4S%;ioKUL5gT*g{{wZsgJN3Lx~o=f(yw-k#1bQv@%_y8 zedtv`qVKBj(;lOqvhO214FP={i?!y-Y$!j%eX_Mhv}Mi+@U~ROAuFZGnSqIf+>_j- z)=s4$Z&Anhsd$%)3H_5mg9Jk{MtTEXPKqHPrlr;bsA>rx~4TZ^{$|f zHXCoJ>YQ_I$F7!@uxpNZkM_KbBC`Y+7xB@0ZIY|2>uU`u{;Bl2&Qg|ioT-)O5TXIU XnuS*h_fm2rZOd^TB=D-%>B7GO*aetn diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_bound_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_bound_object_reference.cpython-310.pyc deleted file mode 100644 index 8bc77d5196bf4edb8eae3e045f7b540d041fb7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5711 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 C=%6>W-? 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ceph_fs_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ceph_fs_volume_source.cpython-310.pyc deleted file mode 100644 index 4a2d70b4b3eb46aa9070034c1ae207c7a1cf9e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8469 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 qsEv#N+@*SY7g$O)FjcoHi-D0(nM`h@7SnB@IDJ zl!v2*SCES$>r;UOy%i{Wuz_BD>9If$IrLBNZ^n&oOv_z=6m1FdrYUNT?4PC*%c(rXc^38R&2IR zb+=lUx))jn+zYYYF1CuM@vgyaR(xo%A}_5MT4iR<8?{pJAFhYrjqV~B370%`Rlb>e zjAx;UIxti3d%v~9y;UwU>N;KWB(l`i)$hFLu{7+q zc_QaL!DAj|d}g-(wb#{{2cu9!n;VT}(EUb_b;-jO_Y-K&Xx7Yp`dXSSMax}G3f+ZN zJpL;o^A@h`uSmE76&s}9R-s}r3;zNsm6d*8Y}u^L99Cg2n^O5Adx=f60}stsiI>?y zcIct8Znhlm+^Mj`qg;>~lT zT$!C>&#O1nd>U_F80OfE?DRvUb%1&74DJWnS#}QhL+m{J3hsy51$GhlXIK@WsO6__ z&tBs~MoUqMwVscblPFof$?tV}CVM|>esJshoOf#_%DgZRvdqIn(3PpT1st?uBXHE! zD&6EuyDpBZ_;w0hNRP8fDg@}R+CkC{;&@F9%L|zlt?KRB4;Jt6P`=M)&^kR~?DHKS zw$4ndAOqRWYQ=mCxb_Da%beGe!!OA%zJewN+YFDe9x7+()ghDbDpN z=k!qAvfDEAm{dNq*HygM%f$vB63w`&Vw|t)>iNG1a){bUf{J;#$(XI zQk1~9qGV``&Dyk}spKc(Gz?;YH4vE}j$2b+^~cp%^pzef{z#EUUum-J4^%nLA|jo3 zlms#rq6q2RskBzc67YCw#|nb@^NAr2B*!LhweIOx~BbE@BDr+Bw-?(F7oz39yD1MjAOc~SIvS@~d2~X;4JC>$>0|q{T{s16a{J?Mkmn>Z2 z?O@c0;2ps;C{M916$hYrWxRE7o(pQ|Wh-enW*(q~tOU`ADF~=Hl7>D~HH#SJlu1BR zV)F`OZ#9U!{1QYmuN|zRA(4XDO~xdsDp}ooKNTDem(mR~!k$$JFzQj-z`oV)V#U_* zlt>XRg55;cV0@LwfW`7mAi@=(Ba~gi8&Kwq8f-#aNLFvNbC_h>6(P@dQrw*2Xqym? za_@7l1}y~r=7e19@Hr2hs2G&Wo|s|^D8TIyZpt8Z@(g9kz`l*^Q?lbyrFU@>2F6Ai zQvKnNp6ODMBg0daG@zH@Z-CwWeqpDN12m5>fwo_ubpjEz$07E`Vs0zsn&Mf2pk`^r zDGnzd-UPevqDaBcb$28%ag+p^!C%Iyi}sKapG?B*PNsK*1kjO%3p<2_za7}BN>DjA z!iz$V;wswA0xCa_q&IQ5qM_|bQQ`#J*Q_8PC#F45W`mJ#dy4_mQCO*O9eEMzxK?M;`>-lg{vxFQi796pv1J6oVZEL`&1UHCMEqrgHl zP5461Rt|0Jm_9$i#bg}rHkvCpDtB*_<8xgI_{_9ML;R{3#3uYw*-vq0#D9kz$8@b- zG5os?46BgG7m4D13;bVjtU4JX8EkkEliwD}6tVdQy;Mj(JL!C>V-`DNd2r6?{dNPX zd!OqzSXGS&Xx+P@{p0m%oi)X2Xk`d2($Z#MlFEKb=sXZppTK=k}oYEefU&Gz#s+#v195tjESc=xc7#?lK~Tc?bJzC)&~8l6Ro|y>2XD&0j}LWN#Tw+drpY2H zhRS_1<0B}`odLV9sTd@_r64X3P1829>HCSsx&qfX>Fu{Dd4rOTd8sEAC7>mw@KbgZ ziDTHNRk9ol#!dgyzpTo}v+G#LVfwCXT2o{93i2qk>0Z@$$8}CPwqsYz3L-T}T&4cM zjwH7P7Z>r+I=%6Mpsvqp`20EcX;FVGDd`ZBhT1k00Qqa3zDXRLQ8dK1&_BKpRIQ_h F{{jyZONRge diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_condition.cpython-310.pyc deleted file mode 100644 index 88afc3fbff6386347b40b9f2fa3f90bc64fa1aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10173 zcmeHNTW{RP6(+gdi&ht3;y8A$6D4u7iL@J~4Ui~~8^LjcAb?UhN{TMpQq;~!qRl1O zLsE`}^-E>6K%NTpttbln(S7eP=zD(v(Y~~O3Hq3#D1zR;GsE4bRx4|5DMf*17aVeC zI5X#*Ip3KxXBbXTR}K7rVP0Kds2RqeD3kx$$h?Cqx`>1uO@o`<^3A5H?pD)M_d>IP zd%?Hc#b(ho-Z!|-i?zB5d0cSz(uN3xbYncOZL^O$B5*q%dtVoZl5NIuCt7SYHoSNpO(<)OJ;#FZhP%kFy#DHf9(`p~uq`1Y8aiBOF|st&(sw^#JZvRx5yXp33SYR9 zm|v*B_NJmaqe79k*ry~LelTJ^7OlTr<<@%VDtYZ6sg{!?mb5|0^T&4z9>H z4MP|Zu|eW(7A6dC;a|x9_Ag6Kh?kdmnOFD(uW~9W@|XD(pT2E2OQOtY_=(%buGy@J z%C!l8vY#vSQ~b25sfsFU9_i=G{0x6o)l7;>)ST_-%KR~YPSs3_Db$?r=gRzX{)DQT z7SpJCvY#vSr})#VW=71Q=9ylOGyd#tqj`eQ^5<|r$)D#h;C_l<;4k8Sn!m(rxIe-t zp)#+e&wsjbS;*L1_gc_|kG+k+3pTEb8;OWwNRxXc$(_%aKU%r6$W}JJh_!q-iWnZ; zBo5g=9ioZt>rh=y=2fwN=p3pS-wmNYF%uY7DT*Gd?FNbK``fy+w8BAX?6pN&h+$O%da)N&HZa*GOkKYF%sUB(st1WC8d&BT!9*w{60mAmDx;Q-l4 zp?FAvYNWPGiz+Rt6s=HR>EhkQloz^`o9Lnqa`RmaxoQ_}k^6SHfZSvkeIWN%*G6ut zTSPkDEg_xZCMMe2SsG`e**tSuJLJNL$yoOS;Li(scwMfYki=Vh&JSCz?`*j;a$0%B zrH?uz=i-zu&QC_g>CHyj$)=<1Wb;vU)PziPkE~YP3*0!AvV@@}L3q?G)GDbR34i_m zZ^4`v#zx|`WY`jM>@}{x5j8L*%wVuF-wAot*b>23!}r!2o$Yut z48B!gc(nm76Z0Lnbsf4CHLmxqZKLITux1Sip$+iAsd zyugbc=XFpPy@aGBJxS%vP|RWhsQ&ipv@TJQDWg5~S~=$S53)-OrCUE`Vo zWij19p!j_eM+$|brc|497=f`yAGI#fO0^$xWLId3AP8#{&=Zq-nGH}5)m)chn}va3 zT5lN4kqi5=DP)~}u+EYo67d|nxhVo@bs%oCzRVdZn6hD33aVsw%9Os2B3RB_Lg)0lAF9>GlkLMM+>mULkm*OvtM(!|c2W6km?J!w%7y&pZ( zrSy#qs4{DCc*sDxe}v9`e0(~my$|B`|5?jAu5{ZY_3P`_yaN<(S)Rkh*DS4f%BGVw z9#X#Vqev-VwR)h%l8;eGrn|7uR^`^2BcZ5|7Sf=B7qG`hWiBnf!SuM=43NR-o30UV zF)8ML8*p5dQ}6V4VWev^?lp!@M1co~M-fG)?`4A~_U0 zwLEq*hwMlU^dZyh3?PVIFTierZ6@&KvDI_AyXFhld*ddymsm*gmXEjA!bJQ2nV+N< zU@;`7{wRA8)ay_|68IZSaff>DPe8VCVu#Tm42$InlI$qVkl){>N`;xZv4+m*JrpX> z=ArUXOb!szYyLG)iv~jVsJO4&M`QSyKvT>p=O%0txuB#Cd7`qP&9=TxcG|CO=S zUz2;N_9NOga0?%X#ewo?t&d6cTE}&tTE!oRx`XV`C=GuG67FfZ3PKFoek%JF&B9n3 z{=K}0XFI5)fU|EW^L>ed7c{4~Y8YWfCSs1g=lT(Dp9I%~@MchFOC1VK(*EjQ5qNZW z1CF;m9~-p3D;2S}yRCvmYl6+HK4xkAHkK_DKuJ3V%G!e>vuj(;Z=U6+zzJOwyP}kLE#41*6wu(ZfXLYm) zaUm`cN<#-KXq{F+rEacBiI5j5Q4jDc;5Y<$D*FvC6}&k)Q8BC5p)TL2ggT7tP0lf&pA1^%{LGy2w_RMll07$g`(@O(eKsovjz z_C)T?o-M*aOOI*^M(ht@^-lwgBdtE26#SMdmDR6}JlJhk$cGYWCpl z4ea@#?Kc1(&y0Kn;QtPQ^^#8dsTcHtrXCf((sJr~W*?7yt*Sz)9h};^(~L zWgQ=4C~oZKFNkr~p;S*VAPYupoF2A^c#(AC_ZM6dDZrF@_TRQyo5cCH_gOlD_a(K7 z(&_B`2X#CerR5C-%^;$*>P3jK#V!`l)b??Rl@{7=M-sJa{M06)rbX3Dt*C;BbO;{d z=qj~U7p9XImH#?S8HxY*L>XzfZJn{IICQje0BM<1|Ek(ES*~PF{j*xKt)1~gU)enG zlQew{qx7GG(^~iMSa*%PqRk!@o<8YGi|Slgun(Erj`R<-wRnWe9)6V`cHjB3@iCJ(t!>-x%c8> diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_list.cpython-310.pyc deleted file mode 100644 index 536b174b321bd24922d571226e206a3c1e1b9d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7267 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_certificate_signing_request_spec.cpython-310.pyc deleted file mode 100644 index 9ecbe58027d89da463bbe828cc9eda5912db79c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17933 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 UWeTQ}2zH%9v0xXRDd$Ay-)Zvd6aWAK diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 546db0e672754a548f53cd6c1d949002a5b7d8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7017 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cinder_volume_source.cpython-310.pyc deleted file mode 100644 index 37f2aeb1436a26fdfd1f1e21c467c6269f1d5395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6719 zcmeHM&2JmW72jPh$>mD&R~*MqVtZ=mi)}!V6>qF+wg%%yIygI(%Q>i zdS<9t1bwM|D0(W;ThW7cG0UDYdKIxn|WX!@v3r&rb&HLMB2B<(qOVWn8F^jQToC6V{jM zR>TEouWg7#$WY^ReVbkBizMtv?327Qm26Y%zFKWIHzK_`SZ{RFUNg-*=`@Yiq_8}m zCY5!@&a))F6RxtgcivdZSHHd~*p`rrmQK4&qex4A^x0*`)6SqL61~c#h()Nx@=D{) z_YBQrDhz3>1tsIZf8pu)1(`146rFI*P-g!r;Ngfc-7ZPgasB` z#NKwPW^sp?z*2{of9JMcUg1^l@tP@>`FXy;7w_Bcim37>e(1inW4Arw-Kz1!MXAb< z@S~>17d~2!6{RYFh95UA3t|B+&laUBKf#|fEsJ6iEhi@>eu_VT-)b-M7x;_F5AoCd z4D!SLEN94%@E`DV$d7U#Vt*++eq-fglyD($q%jzJEgi^?82+kt<@(wxyS^DI)`>%< z7(T**PT6B}Ct(zFZx{hw72PND-E_Q^LgbnW9%&=oe5qcT48l0x&L_)CO3Tb$2W;9W zZmj$??S%1_^;@E&v5b%+>4>_URl6$C+kKJMqzHMCCh>OWE76fc2U2vi+LqZ~5b<`U ztFEJG+oPUW(6L?1J7T`Jm-oATsnw}K(36M09lRIusxFdIncD+PR<*Tb-7AmEBP)Q? zAq6IoLgA3QCPhztS4LQ39w($wW0;^#w_^W+!9fRj?IG6?A67oq558T|T%o;nzYi!!SRXa%_o5 zWCD6o66#b+Vuq|z;!#pVQmn|NH&)HDOb%ck!&^NXua9r)|+YaR%7Ljri!#!?uVV*;f7Gn+l85GcH#(TplP^) zp({bhz3OVgOlIlWm|^nJ zH@$?9Z;3x6>y`!i+2NO{{zPbH@IB^wZp)xia~GIr2+1_(uq8z#JJ^k4p|+J4Jw~`^ zP|aRCNOXgJI#8Oe3m{}~A2sOrQ#rQTG|6U)t}u*b^O6mg&(~mUcf(#E)335~;;w%C z-0SSz-L9f6(a0O@GMb}Kq~mSi4oWBiKoEdM^8qaCvO%Kyq7!u^!9i0h1$9lQc0r66 zX+ZvsC~fw()tz`b7v6H8H?OXJbm`NzMvw2uk5%aQKqh3Rz>Zw~pNg}@RC-n=ad4Hv z&KRpibq{U105KvvjLcv+PmWTNB)o?AThg;iZTR9`L5^waP^Za5-}D-wkYX5ffODIa zJ^Veua_y11NbMBrSOy60AEpMvPe`Bew@ApP|YC z#rOBM8S)vL$PW3ewJ0p}Q=z(m@Z@--BO)BcWP(!G4PzzPYt+{KLc*rj8|>=%9Auj~ zPT3bx9J6i;FTmKDqEV5thLONQle-F^lDSdegKiVC=0txgJ`e`znP@jT5Cw0b*NY^n zXA5x|!5QVIlkIb=KY?U;X0B=%B<-u*@;Qu#O8ht+h@!L0IUn3LmU zIx+{yw0!VP2P5POTx!YZ!H0?EHg4=5%uwCE39tOxlTZ`>Xx4HUuJcoEp^)L^4#Ea1 zcdT&bPIT1WHWoQ=B|DruOW%V9{%-r(i`-fNs&30e;O<Xtmo9i+rSRoh6J1Pvu;`{R&Ieq+^j{TLu1W>%xh56G zgST?9BFze|HC(xzY=v>e8PWl~ZbW)+7R%gxo%QJML05WQ1#Y&|MBJ>q=Kj|{k>Aq- z1uWxAiaAW2CG&64Olwl&Vo8XY=p=z)uiH&^zrm}>)jCr1Y~OiAFDXVtP2^mwUn7aE zd$zV7;KqH+*|jfOKYRak=bm$~q;bz4IXlihSGyxumv z>yD?ZBbS%ZqcL(Hc)R4V=k+wQhWd|m4I>f%p^*>#U2AqU?(*aQBLZ7__{vptYsoKh z`4t{PHC(}TBoJc3KjTqHKe8|2(<HM8$e z?JEVfrw}It#YaJT>6D@Wl%c(g@S~yLZGA%D3q&40 zs+Y1#zmHxztM;MHy-?@upW{7b6_A7}|3q6OtQ>NNFYJdE^m~kQ8e=G@qZPOXlMKx# zKPD?;sJO|(gyTCe;EZ?^UFV$<6wIN01;JP7VaV~EeFHXm&&N&*QYk|ai5)6sYp9f} z(y0LQz|@gV>1~RSJ2Q$aVfhf?SWopPOHCvaT8o>LxP!3e#}7;LRic_^H_UvP-w(4g z`Xf~GsGpHlf zX|oeJ%+l>8=K5+6N$+xbT<$p%4hQQeOzd5@CmR?L^V^^v#; z_3C3Jp5@w3#qk{ItYcUHKK=5m&T(k7@7vD8OkP77byV*yc_%&Ba~G=y0(DQmPiww` zBy*&Y=kd`#I}Knq@`DjSk<9%3kOy!pIl6Kv%^?~FJZIqtWG)rmXkEwiJp?iro#Ul{ E1ILjD(f|Me diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_claim_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_claim_source.cpython-310.pyc deleted file mode 100644 index 5343aca83365f59ea0c9f9463cb2ab2a8cae692d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5651 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 WO9&|_~!Z#@KHFGX7v$T>g{E!y;ZGa^^nm3CvJ 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 SF&)~QhGkp$@KH666#fm`_JCLb diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_condition.cpython-310.pyc deleted file mode 100644 index 606defa00d2552f3bdf5aa30ec1c7c57633e9801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6222 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 BMVSBq diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_component_status.cpython-310.pyc deleted file mode 100644 index d92126d25754eb22692c8ebd4e247174c5cdd32e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6704 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_env_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_env_source.cpython-310.pyc deleted file mode 100644 index def58165e57712ffd6ce134b30627e719f80f527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4431 zcmd5=%Wvbx87GI7MA7y>5@%y?nuf_1K^4?uoSyA2I!$clm5P;B)_C>yX~QrIq%2!_GhP#@-5%riB)gdX-4V5Ps>FrP5b$@voSd)l?~6k<0a|iaLc>@ z{kJ#E+aL9Ww=ZN)SEpT1p-Wf2|MQ=CJdK6}k*F(6d%DiQVEFCjUj)i8^d57ML??+n2du8U~+{9~c>9^U+SD1-qK8zkPgRW~@}7PtSz z+7K(R>Q;r{<_@nPo9(KoahES08%Ji_5zcO%FVA{4zQV8R8CSTNxjyaj8~o<6(O%*& z@E1`p^Hu&5>J@&Azl{1CU*qejuk#vI_e!z)i_MbwPr~eevcH`UWh6#lv_5@wf6IH+ zi*qmPhk5Ry5e`-AUC|v0bf&we7UDzE{g<-S3qMSuHsuK(E3KgNszI0x!+!suJgl&C zB@4R))i+pSC*eR8PO2dl_GJ|kl{FNthyXo(sLk+xfH(gsiZNh3#7box8Hd)`8XEzC zjuLu6iCL8P7-K_I-X2r0GR7Qwcg768DmS-bB9IvyZO)UKx8a4}AmySD)OX_q5Q>v2 zEP^B zLoTEG`^fL51L5xs<4C5FP%8HKewh0>3TBqqP&lk= z;-^b$JEm*e-;7?JC&K1*cVuGc^r1Grq|2{J-(zFffF8{7I~aZ-RIaf@(kl%eP@Q}F zJTF0ht2Nsx;1Ie(g4w3`Nh$?2*iFx%d?u1+oci!0xepyiB2#cm@HP9fc;Y`v7V zjgqohp)QG(V!&4f&}x0OK38}|P(&-H54GvlYN1f0jb>sZ;W|{a{qL)$blF5}>;FU< zSt!GSR>Oa*kgNJ=$s3SYgO%#gE{rVql1?6ANbAIP7utioP6wHzzs}5H>OG#%6t*)F z#oYt%NlzePN^MxP@Zb%Gx$-(<=HKQ-T~gr%AU_v9bP7FFFq88?k7k0KL{f7F%M=N= zY5WBg3!Kc9qJ?OdFJd#?{9k4Oo^E-zP|ra8zY${z!Rg&445z(kQ*z10l){8KODJBD zW=p=Lxh=6s^1JLGXzbTCzKY@k5-S)W^y(=4do*I>&{W1#M9*DzVt#1+>c_uihwRW& zh__>Q#13s`k8M>sV)6}DQHZIW9UEi&h#i@5AMCF2*ip5y%`L2Gj_s$;3AvSWoOaeR z{=TYXr(N!R>YfOzoSPEva2cZV8HSf^utJ)4#51?;>T_)Z48u ziBV0i)UB7%1>rXGfWal&>^T3*z4 zgd&j?Zk)$Su0jOM!tTepDl8-qat&wc`wN?dSXA^Wjfw_iQI#Se_Ell)Bg~+v?1%lK zxJ(%dWS1y=1BK02nM)}Kk`87rf9=}WCcP?K{)bz&+2~u(68II#QYNYKeGQEg+fUhv zaYE=aN6qu-LdZqnM+%XFaO4pBW1uutQD%k>tEgrfR;i+vbyGPARVn^CzO1MM132jRD9-z2}ir^G)(zDES=|ADX}BI zg5bAUp~-RB0{=Q)dBwkyNoj(w7*@1R(Kg>qHHYPDL88>BVL+k&8Q zg8R2RvbDG~RD!a5NuV#BiNie5sbW#h@l652>R3U> zSE7b8ez{4-yHuQ!uUk6PBo$G#$%#wHuuWEF4l}D?qekgg*mYR0>zZt-tequi&9NPO zxu(_IaO4l@?6*)9ObYob8tvE4rRC+93jSqq?sL5S@T!)`DPb~)I5_80K=;TM=Cs0Q Nj_a5XTV|`)KLJd8aI*ja diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_key_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_key_selector.cpython-310.pyc deleted file mode 100644 index 3fe9bd031457602d87dd01fbfc0940af6875d663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5285 zcmd5=O>Y~=8Qxtk$>oZYrNmJryS5ie5rl0;T1iv1f@>s593wEo6qaG2M2ppuGn7^$ zch|E+Ibx|xC7?hr?Wu>NKrQr8xQG0J0{sE~3w!M;X9GP1NYm$?At_lRZB^}|EA4#k ze7xW9GmK|vT?5bW&HL@YUN($>Q0L@hqw_xA^cD(cGz?}kt7A4yRa*^9)wxCvb*^J~ z^NqY|+%=fZ@`nb?^TI){QDoM-Q7QEQ>3VqX^_pBnT=LXa{d(*%p0-4o$S{t)M8vxx za;w*@w&HFr){|r$chXU3Ww=c& zDxUYI7sZc)HSf-QH&^xP54O0s%SB2@$8ArdOGkb1lTSPrw|ZS3$u&>#4i8ekvRZxT zM~dbl6^gXAF(t#}k58;h-r91%gyf8R#mr_ujH7nA*#lEJu0_KqpRuU_f>CZj#0H7C zkt-R@!e5Trf5II$7p583WrBY;e6Q)tgWw{-`m)TL!<(U&Jy9+v^0I`cA z6%LAeE01#YP}{=$A>Q;Mih<3{9;Qpn1eDupt3N)m!2uS zfrVaifEnmj208Q`X0F4rAWN(N?qpedD_-DrW5zr1mUbAy^ulOls`W}q5Ovv7CvF8D ze>V`R-#Te*ne7wHd0+8d@<&WVwITUlH;e*k?34^D`OHpvr+sQzlyKHlL(HN2YEavX zyS%p93tJ*?aVf*v&JWWXHif%Jn=47o(%LSMc59umSxffhRvf)sUAK)nqSod_Rmr>H9U%l3qdKSOpV*xC5=BL(-;`r1~g>$|9+RtR2dqm(Ln=dJ!S7nF^8fc z#T{A>U(ozir_EdwT=qmnZlsr}Fm>(|=`ecMgxpK`ng=&fPD5iAQ&9AOYKmD@N}sy8 zL|tO~eZ0@evN4S&q}i1|L!NzZqNythqA}LHZs%(&f55%*X^ZJ z1*j(XHtKQ2H!8Mrp~j*%bw5SIgVSQQ$_$zNkoLGE1U!-yRI#*zRD>e0JEf(27)t5m zd}I}|b=Bcrdx&24yjS|jq(+MB96my2A0A2K9*Ciw`QV}>OD z3KgehPs!q^H2x}z{?#e|K?F^8kY}V{e`f7l`#A{=Ij|0_eOm&F z%KU*P-jI1&psU#-km>=lEkcZS%Xs9-B9LniGpYmoiE~7uM~~CW62?D}C9Jgd$|vrT zadI_q?r{EqvUa}z)_rB48V+fAiVIxAg$y~MKK?xxw&Zhs5vt1JUB{b}ZAc&lX5#G9 z0Nfqn!+?;MRnLkt_G$f7D=TgVX&|K#%UFTSl==B7NoLNiPS9<#;P!85V?rQ{M*rrN zpgi2TdP^bZ^fnrLvD$w+y>E@_UB;~pG%tYm+_K_eSyA7{WmnN}*S{oI)rLZ~2%my< z8_2hNih6Mk-+qTzFB=W^ii>KhH{-FKA7g%?|IFK83|JD{gX0Ldo1P4Wm>B zNU53K2~(Nn0GGwp(fOH8V$AYtmr7olV^$D6?R8{kt1V1F%PZ`1nlcjjuZS|ja<+BZ zatTfYR$FHIU#>kj>=mr?*KWbK`qy79@-wofd#|!_isIV7pIAr65m}houb#9pfL8zn zK#c^X18XR_q}`S4+Yv5zg(Sf&nH3X&ux=o=0w(0|tN<&(mVYGX$X@2G{C)A+FU(3#vGSd~*MJ_I)~U_@(Ik zfWFW&c~WDR+%9bPB&Vybn8#S=45R0sx_xDZ6c=hpSAiUrJ;)ig1>L09_o?^+6~}C- zmb$@_vIr}sYbYGUHZ9zTE%&py&h&%Bkm;PCzpzTQ;&jdmdy0ye^QvI;LZlt;@N8 E1B8!E@&Et; diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_list.cpython-310.pyc deleted file mode 100644 index f7ad1a138f88bce4c0d6348bb80607b9e5f2fcef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6680 zcmeHMOKcm*8QxtkUn|P5$g&+L@zxH4GO$Q1M*2|QAc12WhHECU3?JA8s}*M?uDsl( zXNN*W&_Gf7RP@kO4@C|ZdeW`e9(qVmx%ALW58K{)$~iy}McefIXUG*rQSzhcEfjWk zW_BL`{Qvhq=2tvB>lpa`#=N)ow^t40@6;Io*=W3vC%J}#8BK$k%nHq>soqx8QtwNR3tytTy5)Y<<&obF+*`Uc7H(V0Zn9LbuLrW-TdlR?PCeFxWE_Xd zsIf3yCKgrKz2rvmBY(-g@$QvHz5D$(cQ?66XzO^*m1xpdAAEeUXP=-V7-S!VY?P}kN@&$ypJdO z5(PKFVuRS*%#{shu^b*S^>e#vvjQu!5-Y1#o?T)ytn$Qc7I=}(vSUw-ZL?Y8rHwK> zp0$eX1Usp|INZUPQ(3FXUSV_U%M72vm(y9R$mZD@^`*iq_;PmCV&~YaPmJa)JI`Lj z`xtwjy@B^}c7eHgpJ3l%7x6yH9EknR^!S5Ceek<}_a{Lj`@d*>bpOVZd%qndZY%VY z#6`vL$=E$0a*{(P@|xoPJ-+r#maBmu#*nsjISZtctKO>PM?F6bxAbCZE|H>tG6Y#a z9V7G8rt@HtXuZp&U$xU2K+hY(B+Unscaqe87(^^BbufbY(r-E#^FSj>6d*xSq@skP z(W3U~M|BI&bv(%iib0;4Jq(w|w(&SW$PWw;+JzFrM+wbBX{!<=Q7;Vey=Mw{K&|4y zLRlJM9QxiK&xUc!54}xaBwlMA#A(GFXHCJ=yvcitIb|>7&MXT^$2&pf%UB4)`UID%h15=X zxHj#ZC}aGtA&%qqPg!rr9bRAW1uYS`xRgQt;SZ8JmIo=(`a(BmNqv(?oAoeQt#`L% zJC3f_7O&J35Vz3vTMzwpp41;^cBtM81L%2Ou>n&ThiCLUe%B*t)Vf<~$@79Jke;^) z8WI;p$tsxm(OitSAp*!vVA)lCb-J=x+L9k6*@;%X05P9_OG0jS`H~A`qf8U^ z?V5sIFJ8y+Qqb1L32Ksp+`#iS>0hDTKR+q!F=|>gX7r;vJqk{=fie<9_4oe*NG-nz zq_meLdcOtH%Yvxu3%@fCpZ^_C2jSEZuRz#UOQT8ISF)B9kop*13Q~@9s1XvUXd$!z z*Ua`Pqn=rZNhBVoJh#bBl53}+ip(gja9w#1L;}$6Dd89aZJ*M;(AG4Yej|0GP4~I= zO!=y&m?7@WWh_$6QmRKb_!H_sjiP^g^0c`;FT;pVvpguGyh3lg#LRsmhZ#SX>Wrb zOwsNXokLd(eHeLG@``YJT3KJP`BnN*3rt82DCqRd%3&@|1UE9x)t zBosClN(ZkkBYK{tAN|iWmo}PmC?}jf4O!B19!=4*9<>f#;AnYIVL?M6zm@qAI`pIu zp}t?^QH*fP`vgw`6}c7)tCL@$2#m+3G@jxHzG3Z{9~z(j_!H}~^*ASS{~lP|)?-`R z16$^|EpbuiWr6Z!PmF=RjYt4-fOXAyRFXy9({mV68`w`vI~1zxewtZE{|B;+nYNz! z)Y&n{XX9=^96z9lBHw@Op1Q5*fJ@)$kxlF3b{61@!1xB4LV>0 zNqH14Z=eF@F(s5IDN>LR%D~EjN##RIfm>rLDtgFlthuYPY!72W=qIurh~xb5=59_9 z#s#geSh%Y%c4;2txtM@QTJSvn$n(CyXq7^8EZaOWg`axZOP?X9&hT~yio?#J(ynxl z`{Ersz*Q>t`&c45;-2>rE`#oF%2Av=FCMo;ZoVv@|q{TPnqp77`>7!BDd8dl_4eS_K(O_lb9@_&ybT zr`WqNl8`8>Om3nm8MbK^tda%Qw9LZ4_G(VinuF3hj%m#d-?L-wvSXH<(%F(-vMWU; z_-aY~i1w_ZNG-tyDSz|AUgEN*F9G=9$JqZBbjG%z?-v?CQ;3Fv)+~IFY+^!Tvu$C2 KWHBq&T<*WZwfY7C diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_node_config_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_config_map_node_config_source.cpython-310.pyc deleted file mode 100644 index eca33f00d6cfa1dd69fc3b6f4d3a75641e580bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7974 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_image.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_image.cpython-310.pyc deleted file mode 100644 index e8aeab570a07df74c92e826a1ad75ed7cde7d69a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4430 zcmdT|%Wvbx87GI7MA47+CL6Dv6fNNZL6yeTIzjpnwu_|MWRV6?g55!bgkUJ71&$~iy|1)B8t4JAvlWi;8IGBW4=_#VG+zHgi@ zEx88L-^}|vf4y!P|Dwihve9@8Uw#`IH#!D4IZMorsY}*jy0khLN-ME@l}^Pp?it+X zl@o(kMD^I})Hr)!G^)d|To37k!M2d8P$GAAyPbJl@;@OH21IO-cso|z;EY?` z{yXbHth}mg75*Z3c>ToeR7H)ueBs16Ham`R_Ue4`yj9~%d|8jU!o|q7NsF)W>nBEM zfj`HeN4dyv@E1@n@l}2knN}B8dUdEvGThu5U;`*DtW&b?uy~(?GGQm+wvZE zm?VegX2W_C z=j!8J$w!41r>en2yMKvh-TL`8MLU%ElQ7=wIl}XL7 ztYV*rUD&xucBVbDhVC;%E};0gYId`pXzmW;NM?~xDsJxoGH+rl*ju{0+0S_1JP_$Y zGl{pG{X^Bw(l`9ATg^OHVzVDc`+!5<+&?$#W|YJ*o2KRuOSg#l5;{Rl*zx;^g%bpE z8ml1K1P%ErGKW=7{B%xr$8=5mo8kIJ+4+-|k%?84M0NT|fnO5WBV*5i@Xhcpy6*{< zYxrofm4*(uUfO!z4MBHSo6tnp&}ZE^>S8A>)~pcd_tWgN)c1tH>w6z>Oy%H~rEmD)Li(JH)gxqRnd%vjrL1_YSc!^nH*GWDr zbA&`U$ph*~Y-9{yx&-PeDOVy}K8K}n0{=J%^K{YG@|z<1StV8?Yp#*~%W-s&dTahN>tySk6w2k$udLP23#pw(;0ewUNy&%Hu6*jA8ndfMaOmay5jpP4@Rj@eLM?qq>8}x=;x<f4>+d6p2@1QbXMmt|k=_?p5DP2dn32Lu{YHMB7zOL!s zK@_hkx7%M3lbTeiYvjK{w2g?McY$uXjZv28w-V%$4`nn=1W?W7fa*d zIUtbbMQv9o5=Y_2d7S1dOe0a)oY zC8nRUQ{$9SWe)vWRKf2f%EA+)526t^>9@h;cGQq-SVgtp$1GLU`a7BIg{l<&oC~X{ zLjTzE55yK>WSI?b&LbOhE>TVMHPz(jfmMUB3VPSx!*lCXO~I#Lm~zz1M#Gdp!_;{< zCk1%KQxNv78T4F@&ZB-X9wbO5PXi=I;eD+ zZLZ9dXgTkhnXohyub$)LDkk((h!}Y&DQ=cNWfaAi8AW15b1H)1FVwq*Y>xiR84au5 zZZ}p)Qxuy8LE#1g5I0Duz8C~_(0HU41b7ZZrKF9{64_O}Jy0SbV_c$Ro$AI#PNm312W=_mGhHbJcbC_BE8YObK!mhzeUDsp_ zW$7$9YmV*Mi#4s*h9iGYdpD33ObYoUR60MIiOb9P3I1a+^BON-T-6dWB|PR3hfBB= V&>gz=a-!E}j_a5XTVyw^{{s9YY(xM6 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_port.cpython-310.pyc deleted file mode 100644 index 46aae9f2019a2e54293f50537d949997e5337f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7296 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 NaUIjKiq?V5zX4IrYwZ94 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_resize_policy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_resize_policy.cpython-310.pyc deleted file mode 100644 index 4a0fd89bf3c7bacf7960b0557c7d13ec9fedd08a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4892 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_running.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_running.cpython-310.pyc deleted file mode 100644 index 1d36a913a59859075817005a039b6c7eff62f47e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3646 zcmb_f&2JmW72lm*lFJn(JE`MXmt^3!X_!J}lzt1Y5jP)3P=F~cAqS$tX0iHffRbu_}&IAq9W;K;}}#2F?9r{`pwu z@i^rVtHDC?p)q5<)9oIlW;ogJB*my(RFh0mWO~urnr~C6Hs?R(dGRFP;h+5G{q5@X zy`khsQfWH67;u9w9rfTZpK(znlab8L4p%ahv6frgoe%zCWu8l6MccWQWPbeBi5(-8 zVfZbOb9!yJT>q%Z2kF5CO5wPKhL@9v&WFf4M=3+tujvRTywvUcsD0Em@rJ02 z#+lo%%Z3O<^UOJQ`+*D&n<8BF#F}WGIsH(qiw)Fk;)b}1x+Pu{ucKZUKM}W3Z-^Q$ z=XUw#7uyie#3?}EHGuumB+t|QVEVV-=X;;*@V#NGd6LCib2Q?KDfqPuBGfJ~sAG|O zBnLkTke&E(fx9tWiqzO!sE!)N`6SM=<7%@q)FxJ7L=>Ac5D?O&BiV1xM<1A8LLe>@ zwHfk9$ojV^W`J|zsD^P)of9@=GbaL%QDPjWH$!jYs?8boeBthb?Er^Of4u@6zQtoc zDum3y;Q^o%Jk1vb>a}Z%jxX7EK{Idi>?&Hjih7-qco3Ap%htO+bex7 zvw`iXIz}!W)kO8*S$9~BWcOf_CaOrJF=_Yl?{ya&z)JFit#KiA_ekbP-7MYjj*rc- z$bZ$@e!r_zBe%wJ@;E+_y8HOj7`sW9g6v(Z4VG?`s1+SZNFyUv5u!6bE`uma^VCGq zFCmM*i6UTi7k?-N7P|hkDPI9uXR$PKv22m3P1#-*={a)_9YF6+zk4W+wv4!fsMKC+sTQzkvkG&v!xsVnCyZO*!|;1lu3?-Q zY(f1y8mV*Q8s{l|${{; zQx_M)?m15a)0p|f!;H?%e;S&@Z4EmJ@XgyXXMXn({~Xrd)BAw`)E|F?E$L= ze&+{$kBFgEqaUkJRjVi-br#Y-MPh{z5sWzoIipPpPsy)B- z3CFT#cfor?UZAWisVA8!eY=Glm9?Wdo5<%SBgA{i`YsBe-GX0+XNH$%ZtH)czcKIC zS?jy7?z8FJKY;l)aLF<(%ju+w;ZNDQb50y{r=4YvX`}EeA&?qFc04mS0$K!ImVkKb z>fIT-a`E#n3btk3a8nU5vz&h>45JSX2^^ELz&>kjFsf_34*6jFFdtLg46C6(u>Nol{L(l z>Ke9DB%ef4j@kbrPKV5QZ@vWIYWged;#pnZyClmhU2Jej`s^vPW%UaxC={v+dcDdz z#FkMsq0#qHtR_V@5x%O|zCqDU9*?lF45J8SoMhB)MG+l0|I&ye{2stHzlnYO>tuQ9 z{sd7Gnd=%I9?U)Hv3-`yx<*h2bjda<;{2RiZ7L{gT9VyrK?>L_dIJq>vVr5ftnLT? zGr#6P3w_pt`G%nztOa)h47VC~emhWIT1!@5G9?vl(0}_Xvg=fl9eyD#{radP(|X00 fiW*m7UJ3-~T;Xw_{Gg_1(Pu#zAjoU6Ti*WxaY(P| diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_terminated.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_terminated.cpython-310.pyc deleted file mode 100644 index 1cf4c7febdb2a8e6ff24dfed362af5d9849a1a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8724 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_waiting.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_container_state_waiting.cpython-310.pyc deleted file mode 100644 index ad065fdc255bd856d978e0f61bc7dbde785ae1af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4378 zcmb_f+i%;}87B`ZiJ~t_+BAuap(R?NsJ2>)dl@z(3tIFNY{S$c4mLp8#!@;*5*>^Mog>+fZFOA`N<257%Xj&Gmy@ln z`4*nP*!TN4uUXdLsB`vl(Rmkdeg_4&Iu^G%OYDxVYt~`9b~+AfCviuWPQ|wFS={B7 zLyK2L^}y-WINPxr)!A2mfam9vu8^rvBKLK_odsOvJsFQxoTb57W_vLgJa~N|QXwOS zW_KEVJQis*j)Qw`}BG zeE81oEpz&Vp$PVb%<1T?A1HL`sP}&P(|~8a$w;JXJCGs~Q7$&Ons5GC(>$j_leT?A z$^7`!6Prr(hW;0joYijF<=XpM+K&elFoolKG<^1P(0Lbc{znwTf`}~=Z^x-yoZ;vE zm33SatZr5K2Cs4N(C$=4jn}zO9n3y&fBfLX z?cl*M&VybO<#~WcG*MY_L473C6ZJK<9Pf+%{}i8|_(2BEsX*{pX&srPMo~J6l4NQ& zE1g`)1}keLk>}AslvN3>WvQ${p0bLf-6J?J9%?hZ@8ivXhN1w7Czh-!>%iJ~3a79_ zz#JvCfD&I(x&_82wtTUmUZub{^j<9(dR1=kz(61|HhX)C#DdKr3Pu?h31HucJb4hO z3(U0}HAy6ux00+ECE;Eq^RRaoHKi9W*sFzxKPW9G`x(V)q%wKRZo@6zTqOO|5n03L z$Cg|{_3xrJ%toR$n8ZDq^@LJ!>*0^`7Pf++rGw3J#`D&mNcUPv+-;4gYM7;OHMefJ z@>q$@anySVA?K}!C-&UxB{A%!rMbh>Eh61uCd>&m;im>Q&G8g`gmD_HFx&(!`3)2v ztJ?VKlG>i_+wM2BV2L1`iw$}<7B3!Z(@RSIl5}2JyA~8;&;E5!s9b|*EyvXd&HaBkGHiZp$l>L4z4VYqvv|c23&&Fr=mJ`%9rK z*J&er_Ky?L8e4yA%)Z{0vFJB|S#pWb2&_*>6RDS;C0MPK#IBx*O$$&Xm8^M(#*wF3 zvzM0P)DX24rt&$ghJXJ12{^wa7pK^KX0kM(H0K*ken(o)xe_B!Nc1vDUf28@NRkN8 zI{+H{9gRPa;t4c0)^C6E8@A8(9feR?umiU5Dz|V| z<$%doR7D{ia&~AH?g2Zn;ThN+>yf8wh07hxXcq2c?}$8x8K;$XjK8PqSm~OTkNqR- z?CJvH*UT>{%vNTv-Pg`@?$~u$MFu$*QpEy^2>t<&d+G_kC_XrN2~0ZjC`1Wv{1 zbMuZ4_4!>i=Bw#|o z@XWfyl08>Bo7TBFd*d zQMyT-tI`=oV|f#M>GMmMQItcBqpFhf)1v2RPk%;XE+ zmds1j^b#6CtF2&Od5v;oPzcc$HkA+QV#v-Iv7Cq??g!mW4TG$^D|$%TA}Ip#2#Nkj z$BqoJpQPQjNRLgZEi0HWI*`$k$ANYF-@8%lA*fvWypf zks*E_NXmU>lZq$v1R^~ZVfbhIw1r|hD9pr$({8sLS4n+oG{VZ#4@01Fl2Cg!4C%c2 zms%L&Y70G+ZaQmZdU1Dx?40a%4P&J@ccD|A9hTJ`mjj5G{DMKUhR+++y-mfNRGf04 zTRLQuqR4o2;?c8Qn^l>|?CRI3QTi2j1%~YVHd`^Zx8mLMT+dytX(cy2`9s>ffudwm z$nT-idHM9p(KJ^M-2Ttptj!gwYVc#gatU#8*G52h$us6eugg5&vpu%Tt~>t)wvTAEjzJX6$ICZ2#v46Mx_9?Q-F8pL+$Fuev7V zUPIVj-*z3dE8KmXab{lF;|>>=kJsG;^Rq5@tgdZ-q6%GMwtT$bgN=3+RED@vyMrs=p3tPS(#l}ne^?6+Io+~>lhsokdOBTG|VzqMsDx6$ix z$KNmoZ*$Az7cZCJ`#{1RLLouhh#(24k7q3VywNKB6g#I?OM0-f={ik&uZKlpx&{>| z|BA?bgrE1Nu4!Du7HhP%jQ7*^6#$J~- z%X}F%Z$!BqGuhW=O_3K-b1ur|*qiJdvSx*^pysV8mt$|U^Ri}@ucGEcl*_Radq>tB z;YU#OZj{Thb#_tKtnoF}l%rgZRoEq2bCe%N&E+VUWACx|Wz8{u3^m`3ayfQ|{f4YL z&X1$!Tf-dtHv8bQRy)Bq*l*%_l3isV;(3Z)W8cB^H2a8M$MXz30Yu&mj^4S9qx3Bs z2)g52e$VUwp!(VEn;YismhG91w&i&yUaX$)niFVDxD}ysS>n?+Z_Y&{+3%sfc%f=+6u?p)sHp4$@*zRe%> zY{3cVy&z>ferY*4j&a=vQDI$#&Ag!47_PoxNhYq11A6%B>r%nO796w$rEA;;3EcAxU#}* z5+5Dgv3ysE9N-msN(e^;i8rxK$tY%sBUBb4L}?{Rd%WFz!S3Q1Mti1-H}Lq+UZv%B zcxA6=H-y{ZzHe9Vf7`17NJube?_$?wUS*#<`<1r6Tj?J7E!TO!eECwvvweQCYc=kJ zp1jKaNKjT9Z5u>ck;jCtmlL~7d(iXB-Gd-suiK98*X!Q_5Z=c~@DE7>_!I7Xl3z{16(x4T zEhlH1Ca_6`xIW}b5p#fu?gCGUb1A;)cDg;Eqgb&v@Zw<~vkB$FmwbANqNHGu(3Xh61awR_wIFW(&YC`U8n?LiM1>Y2SRbO^84XmHPK_Sz4_M~!Q zImk7^pb|~m2eJVW#MvVy2+WtsZUEcv1C%KW3$1@caK9%U5;r_vSWGmFZz+vNe;dL- z=<*G7RB}j>L)Fi8aU5rg$Ln}VELVw1S)w?G-&e#cvP=E9CQmZj{TRpwwI2S_JN+d3 z5XnmJ7;-J^CqSW{7egVX<{s#y8J5f=ukAOiZ^kzB|~A6WYokk$56>d zkwm3JVJ3?a=V&0^`hz5MNs64sNgzVeK{Kj11#}U+gJK4TWjAdOO-+$B=)Wo4j(I0ENg#CF z1j6R_mPvZ!1!7+O3#-#@bMss@B0E=Fj9ElI0OR6YMC3z%LoNY*GTJrpgcEdz--r%U z9;r!LlEUAom$#7gU!PN>z)w#SxP)USWq(Cn zoD{`-x+qG!2wJ*tFyoQ_N4nGiU}-^#Oj+a-i8O$Di;IbV>m_K6E&N~Wa1H2)BicsS;UTzb3NBSM5r~LYn;NVOywG+-~X5@CD)i@VGco=$v8v_ z-N6=qcY-Y(zJM{#@aueZ33A4o6BK>;4m=N0Uz$bKnBp+H7VpsEzDo(=z>s>SCuWR# zsqF8m;X0Cebld;i$d3^Fj-Eqli0F32etwam#xZ|P@bPFSXve2%dDDa^Ii-GrpE8^C z{ny4ufmbJnZ8j+=?YRHfk$8+d9kMrtm=rb?D#hItGR65rhB+La#ugNBOI2LN!iR_< zy>nxTL1q6u+?>MFJk+pmC0Y7V5tLq@F(9z3V?alTRVDoq>XK#NsP5E1z5emdPh-Cl zxoAl1>p3?3J!U*bLai*DH!Y}(31!m3VB`mqGEi!V*2oAJJcPI_AS*BKMY=bj+_W6> z^+Rg*x)6+<%>;Y|pJT{=1)AR(9KlrNC1>itQl;eKxJ1|-+E+WuAxU7&M%s{n-%RrF zIe^CqTm7{?Cq-$rP(@>NmOO^25!abwob}hIFl!oqK}JmnJ)}qJC?BIoD*Jaj??o83 zwFX~a#H*!Ge{miXk>fVq1(+U8EOL=}=I1RA0wmvUg5-!^8$BW5NP#!Ci;FiRR2%MC znikg?psq%XH|{IlOR1-y+eB|I%Yp3(<1KE9%jaFpbf5Dsyez!YBhPHv+-gF9oor^o zk{g1@)&Un_0ik_DJlY;B!Aa0X?LJysa7=e$2Mep&v>S`@64m*I%}Ban zjE)m_|e?fNprw(FY(v%cZxS>+e{&`^*J!388qFW% za8#PJEmd&|YaSv8ZNxZoP}xb^oC;p%>aPEk)LpTd__q6nq^9gI;~mVF+h*z}!|8Pp zb|uHd&4Vh7HO>~K;LvTU1WV(Ma*ZeAg(Bt zQ%$Hl|09M<5>DLp5Uhz=$+p_;mv{ozZZss2&NsA)M=&JfE(`7S;T$H3Gu8f;DZ2Z} z)Cd-je`cRJX@}NU$O_%^uu-%v|g7YM|VN_TZnC%H%+?Kp(qk?IZTU6Fg~Amx~{N&P-l;9@!>WvW>kb5wKyt`Gu#nP4?4fLllvIi#$IHQ{?}%aJ_Y%bPgt2JQ*NduQ1b}C|HDYbnzx8avqbiY zj{AA`G1>v;=$p9#Rqfe z(0>2J-!mQ>4^uv3k_W~k<6+uQ57K_-ks;3c86OeP%y_H~(vNUkkGp!~s`eo7=LYyf z0WHdd^ppHkisDn{)N={t*Zn2*Osk$x3Qx6UZ^S)^?FV%0pXtB7E#n-OwW4B_A>_MU z_~Z|S)Ujm1;)H>f!g6+KU3C5ABf@~`m>Y4@PxPm#7*JrUQ4MmwTc?1>XGV~NOtgGo zi1*P0pK9n|jO}EQzuLAsyUe=Q!FGC(2ihsE|L)k);Bp}xvwT%XOncYxqWa09XM;+T zMuB=3pL+n@qX0W~Rsw%k0^Y<|G!pc5^{0SAlLHF*_DuzK8u7!OF~G&QXkdbwPP?d| z`ej;2Tz|^5zX+DlUQiz|SP4H~smsfUAh*Xs`o0JXHXN$JWcV+Gbldj)Al0$D;>vLT zAWb`nZvbeNQbq;`1z9MsaDN7AIfPyhGSY|}hm7``6J+P`k~U5l1&TRF?6IL2|ErK* z4Rcwe_=`d|ZS*~SsUX|!q7}YV=&HCswf9r3ydVpZFyup87h%b&(LXa4OVDTnZ0aDvrcf%N zt48PwfX{rF0xBd3ccltD9-J0cum9l?mb@`No?A7WV1`6S5*iBn z1#ap-$jHM-4upraodccH`}B2}kswx5v7rG=?bhAB#~V=Q$r*q^X{-I+XDM-wK&H{< zHa=7Fpg{)OFc)J;f++twe^9UgG1eeMJPJlyUz@t8s^JT-A|+SxPJ|k>Rw2K?p_SYg z-=igbO3A3aC7>N%um3547N4Ph8VaZ;rD8SlS2|0lM%Om=I=+Ia1O0k!dN0=NG-X(m ztJe`FhU2A=@@gwYWj6dSyiTO~b(979kWU`S;Orm^69%OI{GUZAJeMf;TeQw9CATPv zS1jL5Dx)K%cpdLcBzY~Z8(AZ7fSkwwvp+MAjF(Y9`?JET@fMgsp`aVfW6zZ^PtPUP zqm67gubjp~`+OmPCZEoyi#Z8rDKBml%%30$48g?)UTSY7V)0aP5beGKzvY ztIQ0iiA2qD&N^ZAz?*Zfedqjay84|J?yPbV)6&tBBT=QLF8}a`!=iSt!$Ude2p(`R z<}t2N&%xh(Kh#gjMY;NPtk-S!Budt))%@m))n`3#c%#O1Y>P?kb@#fXMR%R#JDfMQW zPvgz$tj1nruRqpW`=G z603t=s&0wl)><|?-%SxGEJ#{Zs30vAQz)A4GRo{n&jzk5xZ*yFL5b--O_Zg!u01LZ zN(0S>Dxw5ZP(lq+nyM_S68+Iq9-voG7iR}lvj*sm+B*XSwaNgaP@5eTP_qXZjoO8Q ziQ3elh_cFb$ja!?PLh=~<9JRdVmyEzFZm&q!VfbgYSyL&(VrX-qP7>ftDcD6_NW>p zRdk4mK{VDBcEyFFmC^P z*jR}=ys_N#+ahXnDgDO%3vmMrfxK{erW>)ivC6~MM&K_tx@&SJ3g4^Go^Qmy;2P{gi+7tYU`LM`_VI9grYCW%nY=98YHTFpQHIYm$5?sh#XQ|2%Vd_$RtBb zrX8v{MD`F0>AXYD05IbA3h#LNIKXJ^H7zr z#qDT0^!xd2SR+#82k;fK1o$NUix)VnUeM$3VoK(8yfq9Y1$KJj$PB7WTz5W>1joRo zXv1v4t<(X4x*s**S~@*QXbn%0puY$^B;p3+t2}`CmuEcDUI7Z)vL|>0T%1wFhGgaA zdWW6GCZnEc^LQ)9%?XaNAsIaGyr>vR0`!{`a;?kf9GER-6XjoH>P0ct z^@P_MMbk@y*JgAz#W9GzW~AU!_Lywy7{Y#pCWSED-qJdWqcoA;|9ftf$Q|ScV^7xT zDvg8*qcdI1h3^H*YHT(-ssn5gukT7f_e>GNn0}dJrWS5gH}?^@j^`{>%u||42LzAW zPoU_Zn7DtUXG?_?uVNrv_h-2d?o9rM^1VzJrf{UyQylJ0$CxxyCW4JA0LQr46sOcq zQw*wu)ffh;Ex;vCqSy(6-k(N2BOOLw41_mnB%NK!9OE33dL=lcq35F}!r%P0+jr2K z`U$jPNV>s|uJBWtPb7Z^cg028b4f%UH46_}H-ZCHmGu1K#J$Ci4-YT+gC6`Nxy!n9 z#S7`+yU3kh7lPod?%W8`+Tp75e4L8e z#_S8VtrK*1V_*88uRYSG_5^9Id&X1!s`ir)er!B49u*{# zSp#F;cw|a*V9MgUA8fM8i}%D{{ca#*grR~qWM(i(##mL+FfKXeCVM^he0T%d~RPjEocQ? zw`pG#1WCY@=~%lm!0w*n#eh;aMl&hP$ffbmjHJBc#h#QxI2eHpv;J_5pNVxb@H&gk zyYvT|nC$aWtzVxQM+~Q}UsS2O_!1t{p=$Q6sXd2DQ)*8jQ4NX@g7U%%MgIv!`x5g1 zih8s81#MJKDAdy%sDf}4>66YF?SfKapW;$jsOm@mYwEQrq+|VuNd^4{jfs=#VcOkQ zCxoQDjFc-_lGw;3hcIwqnsC7EDZvYL;42#SKXbNAO-C6H`s0 zyGc={h{h>%Fv;(UGMddaju^IX>n3t@hF<;3Hunu{C8PQuyJQ;uQ`<3o6KCn0i^4aB zg(KJds8*g@RtKkd(SzgdQ>}ccIH2Pp0gj;K-8_Fn}rl zNLwSU>@)f&w;~<=Hc?Jv6y+3a0k<0A7BnCKh>VD$VnHS37E+QHVDP_-u9FNt< zuKQ>7P~=#~7DtP$=O(*PDy0Y_M-7nb5-Js!$;N{`Fm<3)d7nN|86%1-ddLSZIg628 z8OCAITI2{3LwUhR&kEw3L^aK>nE5PCeI!Nn=VA;kNy&Bj1K0fvdaLZKZJ7FjtvH+Z zec_E1)JERPF|yT0)MpRc%pGxocJV$Hhx3Ax4@7s!UH5ZprO$s`U?J^QD>c=xc9;Yg zB9e67#CBbPuouvC)pcpT;hVDS;`Q=tX;L@Jt8$lg^c7m&8rsY?m7YvWF>>GAsj{OaIcpjmpNe zZ5hX)*S4)2QxonLwBsGUx2CP*mT8&QvI0fT5|?THZ=*;I!Nps6XuZDiaiE^MN_@2( m`68&klnC;0DY7O|4||?6^b%Rmm_A^bhGkp$Ku|S~6#fS-uo+~Io zKN?o%(rH3bwe2f*5I%Jm?7KIw%_plrYIA#oi-?vES8a(ZE%n|<4{R2;dL16f1zT{R zyAhw8uU-G1qB*5Pk+zUgk}f}5u_k$|ZG8^TX^pBL&)x}xRd20_O<}nfHIF}eRNh63 zK10SeuvjDZHgjc-87zkcrvA!onykQzti;NymSFBZ4(*VLB^ui(qsVU3+*=bvfKS@t@6 z1Mg$(0=tO!adwH>c%NWzvdeg%WEPJ7YJB$bJT@*x==)qO@(que{X;L3{hu~Id~|og ze$@6NyXCu4WTW8rWN5#1_H-cG+1Jz|Eb`R@d9OOYAL7`h&6y|F0Vhj!+@R3YF?|V=jN>u-Hz#eEc52VruH6Y4_aUIG zUI4Uv!B9FH)fquF$7lVp<@(NsDgj_o8_w0zG0*U!G9`k_7lfOE zwyxnAb@y**zRzW(5I)BEM5{rrrYy`q^w)BUD@Pq4|M9FOaYnu5WL+ zeviL{DVg1IH!+arwR^$X45~|1vp)z0$H3Kaq#j@-YCuBG3+pfxogPkU6D1s_w*q}5 zqB`Rn+y@TU=3LQg0}d_O6TA*i&M9I8(%Dh1!>(YHVNbMpG>vf!f@5qzijCV}=P2kD z=vfeQv&$E3s3@h-sBKplWV!J=hL?hWlAWL`3DI4oFGxlU<^I*Fr$0tti#iVs{EU01lBab*1uq4qM;8sZfkf7M8UrqnYj+dXLe z2u%uYmNivliBmL@-v2UFRLUk~8e}R+r%Boavb*Fokl#jHn5MduY3QM|aX3jm8ZCrm zdWJGeR800DGSRK-Vul!aI^&|^rxIM!=^s=3tH}Bnr*cFQJ5^w#%NR|jVOp#(zAj3C+*~s<(o=Nc`w?C5Kug&}f#%kRJz=tGZ4;m8w;{+1u9^wER{kaDL ztcAxCvtqB}KC!G;Uw+5#^nfFB7+1Kx+z11{Ts4)K(L9rQ15Shs3OpW+SEequ9+Ppp zD+JsZI@zJD&|&V?%+$7q6j9+s8E$}aki58m9=Gk}J{?_R9@1#?vdNghB}y5P*=}kg zVOqSq^aw^av2A5Pxj+%uBtQ*3Ft4hK=JL;`;JoqVs zKkdQ7lfkdqcibT5c&`hla#ph+1ZeGW{|;_m|96{C(23@VwTIIcM>>QIsFTfkh0rod zC(yN_M<10=xG+^G5K&WAf;fX2s)qZgam#(UZHz?z;Wy}+>WxrnVm=iPw-Fq;vYe&204WqW0e_oy_9B;1M5rzP<7@x{zlJ z!5yBZElv_6x_JK#DI&MFP}=9}HKgz$Ve0=nv!25t2Q$eUiPJ&?is9G<7{l7ZGwlzK z3EXLj^Vs^(IuSqiS|@7z1(M>CRek{_jrAzHOLJsT3j{d&($qzm@ zwv4TuM8IKSY#UpqGzX^4ZyVyW%*z6W3ZH2Ma~p05oDk!d_Ov962u$SAqc$*~mv-ou zk+jpuGTPshWsEeFk8EO9kxik6xTZ`)Il{kb+>;eJBF0Ps$?rSdDJ?6FK z3;TjX)N)8mv@g<<60Q@|v37ZY-RYK7?(zm-vZ4sk+IeG=5?&Z#|| zQ}nMQ{Hk_fHa@4#stJWEy@4u-H_7+eL%+C$Z@)oOo=QbO^OdPrXAmdzK8?%hFO{$L)#>!}Vj67^wn1)x1(#aRL5D&zG^O zCeWQYuWs~v=^}>j5MAWtn#O6vqEHG#Du!P9(lU>wwSrOkw^cBW{`AO4%JP?ZOF?gi za=Kb42!C$uXgh>4y>EYv?*jX;Mgw z_U1T$Ko3Py$=FA84tu|(IZ412Q5R8wfawwf78U6h0usU8flm1o`lrAc6JyasC}-7P z31vHVKq12j@4$I<{d>DPLGTweyJG5Ya!ZZ#=+DI-~=C-&oT z(*MYt$*Ik}o#AELW>j>VHuOkbr=8rO>_zKMvP{- zwBy8<;{cOApUM@-p(WEVMaRMa9XP(Ln7cVk5=fCT?vT))L|a@+73ro5F2#ii;Z?Ah zEW#+TogiDGiDIDQCS~8DY_y%xWtWbPeA?(9vXW-%M!_fKaIxzkV)d%h2)x( cKxzWfQ0oZ`Z<7Lz$Z0nXtdG!c#W$VENE{Fc4yZ32kdXGg5(f}0->bIUof(@Mg1Bv4 zUDdCCUcGvMRqr{f*DVdtPxM>szj;B^{z5?hF#)`TH@<{|X>E<^%n0@a%ZuGrVU`o?m)`t2^aH@S#u>1f@S0BNZ!-+JF>kvHh^P_Ed52i%SM z(sJ|5Zz-C`R4CF`GD^nFPgiV8?sctCz&UNTp(pjLQMm4J46rFI=TUS1DFJu~Z~Rvj zTmy?WVsE=p)tG@_ftbolKP|RRR%R7eWfogdaFJbLb#~~H-Y)SnJIsze(zf+>g;(xX z+0hItvt#VI>anQ-YAMQX#_8wIr`DCilR5H26*Y_2L8u)GmEs!>6zEtu~m+HCUzzu?} z6j@S;rD)ggEZ^+h>izMlo4{hB{+yO3eFy$dXDAQ<*E> z#Eda3DaC4V+rrR0son_^yeLyqp`wan)gyTF(6@p2D&F|JC`Kiw4=_h++uFm@s5H_X z7$i#Q3rZLxN>i0ZRbo6^$|H;#=;GXnpvnlN0lhvl098kr1!#Fx0A!6Y8_>m(320#i zEP$?zihycNUxOQf^o-&8j0yIV?b^MF@c`z$?uW1qKb+XoYNIY_1Ic0#d2Zlrx*~SG zyfq{>C(pd1qqtXfGWHc6#lNyMW?-H9*bWwQz*=29U=VzCtPd4qT6jTa0h=021C2F*hV1$L;@$_r!L3R)pN@^A#KJNjWoWd!ma4NEp=-R7#W6 z;uwKs88`5LN(NY}4o^_DiA?r68Jt=&dzYHn!3l+>S0hr-+^u7%tJte%T>M`@k5F-!aDGQNd3Jx?q7o7jYk z{cK?PQFeY#rp(y6HMN43RF;#$sXQmpjH&-wrZcy^DiHo>=YWbvb_ti-wkI36s{4xf zqfESXbKjrJ+;;QVq=QY~E7oyTxrVj#ay^6{%#oE87uP`E}DCm?n zJU3OLF|Ot%mC1-N<0BofP|hduJTRpso<=$kWF7^%h0}`Y(~97AWJwjt=IST7BWVhu zP+zYA1hpoD&)zPA#jEK1E#8=f|X6lUvlPbmwniD7WadOg8H;1IWfwUC( zkXU}~hcJuK zg2>1X-g{CIUnEiqyJFjuG=@xy7|+EnWk^bn!yh=#pDtr{SUg8cJ+i|odm9fX$QVAR6iIIH-7s;r1<%UxoRci8e z>iq^4Z&NYdh5Ay#8i|J@{P-4%ie~CY$*34GLHd>cVN|EzR>fF^fm)VsEad7cV6>UJ zx?)upD`v&4m6iA#6>){u{|bu45L~>5kM@~q8nl@P*Z7kr_XkLt5iX^1d#Xk=HUNj5 W^7Jx!!kB_m)4=*jjMj`3g?|HifAbRn diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_list.cpython-310.pyc deleted file mode 100644 index b4be94da7b6007a352160a4c432868c6f1ef1730..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6610 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 Ga{mP{I^LN8 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cron_job_spec.cpython-310.pyc deleted file mode 100644 index 1f09ab1c0bfee2320c412bf045f087a8749a3e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12035 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cross_version_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_cross_version_object_reference.cpython-310.pyc deleted file mode 100644 index 4f188a9ee53ea380e8f7b4c7de92558f6a6762f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5794 zcmd5=&2QYs6(_meT`sk2%ZcOIX`HZjYjg{1X*CVfsIJ@8aon`1T-b&Wixw2c8A-Hv z$@R>v94*$D%7>z--U<{wSU?YTFa3Xb?I~viJrqdV-<#PluVu+{eaK3j8Im(^-q&y5 zd(0aR-@@-N_RWpz+m`h&x|#jCxcM0_c^M6}+7`2!)3MvO?wz)y`%=4vzSMEM<#yS& zu3OAy~gv$&TA*UiIR1Y1h=Azyb@gd@Y1r`{q`0Qwz-hBb-ocO+|pK`{O0q3|$ZFTwTkI72278;GMt_W*Veg3Inz*(xa9nDtVIP1rq&W<5gl%x{PQn3JEibi%X+T-q8Yl(?qjC1cCCl*&>dP4;DHv_Lkno2#T>NdA>Q| zm7#;SIxL~}mcUl?y>)PF2t>7p~-;jk(9d!>lKkXrTMgZn%|qdAQk6 z6OkuesWiOzBN>7yHqADddO4HfHqW-hPP!iUcGOm$eb8FI6v|ZbrCyxei#NFp?@bPf zFzKWKV5kMg(&Y$*r5qbB%C)0KV(e+H-cI2~QJSSHibAj?PoeRgij6uv)QqO$Je=%+Vf^~Yz`Ip`@y^IcQnyqIrT=u44qDd zkhueEB)@tQkrlyJUu1+pP87%bdo|vOE&8npwbSD(0RW}pN6((vq6V#?tE1CiVVYxf zOCI%8Tu;eKE44xMV4cixn$U{zkH&Oq{89AMSVCaZ`1$(Qt6RZ@1QO)+=)D(nWyA9 zf~<}g>c_#abHQ<}ZRFE)A3?r_v!s>gAp(834}|Yvlqr#}BajFgGQQ0_I7v2_Vv%g& zKuO^9JcJ>aFb}5=#a!9yvh$=gxkOvbmqN^x$)m!UJc)k$L8WO6@?G%;HFGASljROQ ze-q8%+`%v*_FjmOr{_R{4yn6eq7s4HX>yY}yGjT=NK;HDJ+0%o2-=LjNCF{2lK z(+z7NNvs+y9zoJMXECOQarXh?;Ns`mcHBu>fVR(r4dkn9wAI?hpxc*9Co1baSX<3A zzSeYg7%fhja2HABzX;w~t`o(=ze7Z>34y3gJ~KwQ&QJDnofva;bXu%=w(lH@@So2j zoKk`R6XBY~$PuRG4ng=d>J!M3drQK1!g~s-JObW!${&Oease%FEE+7+n%H|Gpv6g$0bD}D&e|?OXu7QL5JDcyEcS$dw4OVJlR<-sw$6Y{S&9C zZpAWIN{G`~hWgn4VosBVcexXH*I9gpbfpuPQ`X?4gX7_de(SO>g5(tp3=O@_i`l+_ zEezXdP;Z0v6A+^-Gdi6BK%M#z^2I@9546A>PHiKjV^Q`MQ1T zzpmX}Kp~obQPePB&>C4ZMqdviot_lcO|D2cg`dhalPbnhSh$^3s-o15d*U6?()$-K zX|pJ6D$TOa`-+O-vfojKt4Y{VQPy#2o-@+>ABZ!`5?tq`RIO3-6 zMe$zg^)O2n)gIz%H&(_D`y^6D1AEG(TP0aMByNX})1X+~gM-&x)6yeP5cW7LXBHDKJrW!@aYGC?rgMPa~$fVkZ zM+E2Ncvg6$b9P5p%0)%u6AE;#(>xt#2(QMi=;Ma?fSM1fnM$Kay4ohwQOuGnXgtfc zor>c*fOh38r)qk?;w%F2zHd7VqrPE!ui>5cT+gjnwF@*o@iFal5l!I;F5btW{r*hO sW>Qytg`N4rX+B0(jCUDV+J{jb@c&;lOn~-@})hx^uGhKa%qd_W%F@ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver.cpython-310.pyc deleted file mode 100644 index 2149b694999c3235f50a2eb7c455a578ad4f495b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6436 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 VuMh$z6i}LmWm~x9s~XFN{{XoApEUpg diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_list.cpython-310.pyc deleted file mode 100644 index 4f0c631c7cf27e39ad538d7ca749255c1113d733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6676 zcmeHMOKcm*8QxtkUn|P5$g&+L@zxH4GO$Q1M*2`)BY|TZh8rfZ3?JA8tJTg(TzR=m z&klu%pn;^%PY|L=dyuV{YW((wC@esANiuWH)gsWJXD(RdF}d<_NDni|uY5$H`_y^W@!-nnKD z?_6NE^Ub`j-PV}N@=r9D=Y`!|v&f89ty<{)!?N+a+g;}(2KI%Bq!Tm)IPuJkgs4US#v^*b{A6ZYWdS4?h3Ik7e%{jgRi%T(R%B{Mhya zH;!#o+^&r5Ln0?RWFoIA-rwUJ&t$n8_(23|OPe!aD!HaxwcW7m2Ek6cSdxpS=$#Be z)=$UC{IqF3SSDIOPn>TTz?WH@m(kB9BYy*B|~Mu48$S5^gSaA{N)TdAMB<{PlWg zN4BEyYHj&SJqB@09oKv4Zt}SPFtbB-FYuw~b;SluU3R?KcbEdKL(r&oc9N3g_@OTy zXBjlaHj0u_(D9d+sHN=^)pScYzv-Qw;B{@dgr{Tr@JDre2oGNqIQrU_23hHDg6`W~ z#tOY-Y)%aobY^n>X$Fo=F0^QX%z=>8B?o|p$YZa?+ite5;2ptZutXUu>ULor*SEMQ zYxXJ^G|`S*Q8!>V;DDxtjr5|;(C=ldVUI{r9>9hJXnrVR_uatWc7razj3t@fc6Tt5 z*0sCg*a~V$T(dun1jodUXr%El_ce&S=0|my{B{>I*+DIo!e5685pkXIZ5}|_n@g_n zT9COXyMoujz$Ha&NY*#5wb>;cGU^JC$Fmr>A~@!TWUILS5)vTh({Dw{oep2IVQiFX zqP~4ykn6?k7+wn6X>o#@q#!r(d`bSyfkHhDG$J1drHN-0rcGXDHr0gqM%Lzz*j4lN!%bIC~#3@=x z@BJ;aJ<6zO)?pHfvy>;D1v5oK6`4_5A&UfN%{riRFSId%lzu~Hqb(0O^-T4ux|k#0 zEMyE)tWt_c7WfnDKaHYydh)P}qL~U8U&JJ`-&?w9^h$ZDHc$xxkHcK15r8^dE*V#NH2FEC&EoWy!SUgD+@2o^|ILtvA5CT%74ZQ_Zk za-t0HYdj0w?w`heD+Mbr4DY)%i2_%$>WDiA=gxd5brJIK-CVs7CzpB}^k7QrO3^uR zv+>BQl1GHY<02ioA)>Zgg@>#Y!G)?u$}>CeuD5-J2ZBH9!o!lot=Tu+aKPwp2fXC0 zX5R_X+vdRy++qIjK9ztHFA+zd&#S%&?=v(`cc&G?#x$L#NW4oQl};~A>NJrsQ>Dcs zCRPpikK>;6NTNq7d-q$2Obff72O_E2B0i^9>qw3tZM4RNu7)_L#F=_Ybwiu*lGOJz zJmL(BXPJ@SZ!;e`yy-l*9m%}W0gv~h%S@`o=-QgCj|g*~4m3?O=z97~JTZlgh0@_G z%aERD=|}JL%%KgZ%;bbM(vX!@&ci9GtcR_c3mh%)DJ*CR5+(LXEm2{R`cs8MLWrUtXUJS&Z1kt&3iu7}e>|cEP^j8#Xo6;w z0+R`{#RYu(9Uc`%RP@DfOuagX1d;z)QpR|pf|+D~kmYlf6-$bn$p3&FiRH(B7)v+w zcw$nVl;qlON4!4VKQW1aD(6wnEAx{S5EXO-nV4z;-AVH5-aAPb@p+HvqTtdr77UBh z3rI5#lxO!+>=>?8#UA4~q8PDS`QX7m=PP>msnh^FC+Xwq1~ z6s%F?p1nl@ry^iYRoxR8(}4)!4AtBiS0ng3wQ7IuOUX!L9wAAdCxIU9oUK zz0@UnjOStk9!bG*_#?;p0;5&>$TCd*#1wv}!(RFfIdz7&Gf>PrgG#y5Iqr*h=m1x# zIOt=EuyM6{Uo@Lwa};eMxCx5_eR3B`L&69)h7{+eg{j6txO6lWffjD_5P E0sXu4p#T5? diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_driver_spec.cpython-310.pyc deleted file mode 100644 index 60188c3ae8f91416501e0e50dcce4b2bd9a1b6d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20622 zcmeHP&5s*Lb|*O;l0(ghzAQ`ju3aAQTB0*UT2>sy16i>kS&oqPNYH3yfLViTvWmm@ zG`s2UrbaWNPSPRBDL`&PfJjH}ACPO1+;b0jO%B=99u^1|36jn4y{c|Do1}&^7Mlc^ zk=SH^RQ0Q>_wjqLUX{19QqJJ-ue0~s-JfPM|3W9pzdTMp$0xXogUr-3GAnaVww~qh zTs_C%3-twjFF5(`Vtp~2`7$H(a`9P4E~>)Qg?drub~2U1;lGy!{{E!jRKBZ16_ojW z+Y?d+E#K~iw&#kT?>(}mlH$^?a+Pm|_}M%VcY4aTdbapdU-W#@3Bz8nRjcjVVW;1$ zw!Ci5(+`E7=LFHorm4pBD?+?4T<<$;OMLOkN0;^6?{}1Vr2K$h?X^XSQ+n0)ySIh( zTK%qa!!6+}M_GZ|yj=bGQ>NKa!K7`)l$h6#-dGJ)t5g03dM>kF$qrX;cy8O??W0k6 zU5hR!|CVs_IX=PX*-S=d(8U?*-ul8)M&{%KKKdWJRu=xIRL{$zEXgHVmM7%0T#>7M zby5DlJSk5-%hn63C{N2X&oWQ5^^z)myCl!XXGQsjJjZv+s*F2t#%D!&US8lkC)5et zc`H6E%D3eY_|CFg#+@I=XGQsre3$R6s1@81@mW#6C)fGTs#?XJ_v5po{E_@I-&s>@ zxbs1LR+JazCBAb~oy46=bS6KPzxOOtKP5NhCcaP0s;uGrjQmJm#`jtIvAlxsH{=@F z?UUi!gUdH|Zr}86jPFiQwGRJc`_BC@w#5C89f+1=1%bd1s~>t|g4JmJV^*v3nBPyj_4-ZJ*BPz`s^Qpf|FL=IWT4;PXjwh0WrqjD)sV>GH-U~|cBWl1iC?9>47!&zfc z!r5t=-GRadH|GvFQrs*yg(YYV9H`H>?LrsXZlt@mD`$M_g5i0`Ygta?k>v-CR#N*6 zPd3ubbh44=rqf`nG&`M%xG%|1YmF2`ooY;Q)LJ9OQg1e9@YIU5$sTlV*8*Gm1vJDj z(xF5LQj9DyFEvdRn~M;O|Yt= z?>Ub0?`rk-fK}C{is&kgldNo@R*5%TS|5)9Nc1YHNUaJ8h^a^f9k1_50oid9{Sgsu zyP@*iR!fQfj!gwSs4UdP3%3j3p?f?h_*tD(TH8Vi7YIDThl??^dR89mec1O zBnEcd#w|3mZ8?G3nEu{<8^h34BG|KgJteE+4se>kZ-XTWu<0fw7$$n2hL0ZCCLeFY zkb)q)+wF%$6YfkRLSo-7U!e&uVTGvrNbSjaWr6CUzb!vJ=&3D12A}Z(U3{7K*C2fO zdJ|u)gY@A7oswME@%a_$@WRsJyJ@l0EsjZQ(R0xs{iY8~IO$0?R>q95l<&N*lxwI= zbn6#K*8W(okLCLRmt6NO-|8AJj>YG z`|!|%j@@H1fW7Y8LDG{p1&vW_Dk{UqjFd9`Ddm&qClzi?K}+1)Nw^Q%R0IMxQCJfG z6x?Qu@NQ_?PVh>-ep9urzC$R%!<#JmwGW_n$8D*vVH|Jm+=oiuFxH!`g?elOZz`b( z2pGCi6tALI;Rd=T0UQiI0J^i=2Q&L2h(Zdw!m6N`b9({Vi9Dg*w&)V0crz-3$?{z1 zfGnTY>j6)~dbNT2+X3+!S+WTE$EKA{`b7YWR!hOZCG^R##%Vy=VDJ4r(D!&nknCfM*1%Kwh8zk|c1*-KF~)9m^0qIf08(h?iHRN0tWaz~CcOK3366z%JiPNdcyOf7Q3nb_$9Fj{DlR$p9$X+#Zd+X_Y5e%O`^{aK>!7 zgmg-FI5`fcQ}EU_C8jspaJs#HDmqRl_w1-wF*2zx0!?FM#SvKwbc(LM+X)3in)@4~ z+1LJh&qsXgvF<3;ia-F+!#ct#RTE>XB2-hgy&B$9b-^?1TlB&zvCk`?3lO(SKFsGc zOZ07tiXoe5@Fl7rTv?g=wCZ&bqVO#T�Vu1BEC01LDqagO*g^g4pEkwYFSgPGrv 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node.cpython-310.pyc deleted file mode 100644 index c1a7502138d4b472c35723741e0fe0d2204f93c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6370 zcmeHL&2JmW72jPh$>oZYWyf~xG#^{Lb;`mbt)xK{!7&mzwqY2d1IzG%NU>V&45hWn zU3z9HL&ks!acER6f8XucBZ^%U~w6I%dn%Z>weLccE3l zyU?+_#a7WYZW+vG#is@<^3qPBRc6+zQ7aAp>U#Ly>92DUbH$~r>&?VtT!td*sVIrP zo=CPL#+mo64IXn5D15GOdv|+04tkMyD{D-Ix2aT5t~44Ok=pF9*TbaSNU}jHNjh>| zSsE>qh??hJ^y1`ku;Sf#=gM-n`~6MsZE+!K>!j@|RB5XZKe_F(BH{xbgjrPvN=|LYPL$e%;wp`Q)9<$Iox?zVJGrh znJu!Dy2s@%dQRoFGJA=g);)844n1e`TA7_?FYBHvucGJNxW>-2SDqTJdG;zJJ_z3zc z@eT-^B#;ZcuDO1Xw~u7D9{5oLIV+E|NNI^?TXloDA9Om~**gQM$|o|E zp*J4a9GuE|TOUsiO-vjA=$jsr`WK`EL*tAE5l9R4e}KQ?+Gq(dW}ES902sR`q#ZxE@+}BHgqsj=sQQ98z`7+(Y)qgk>s@vc zhfMk+iIMnvS6y!_sTEI)|Z&oZ)m8{?f zo-fG8N|nKxiF~Ih2&s4cqi=e&^3c-S@Zo{Utb;#7fmV;FK$)u}8oyGRFRL=WKm^@s zW%*yU=b-X5#Y+%y&B}B~LnZ;>J_Y&&OE4ai`)JL~4K0|G;mKqu%zX?k1PicwF0zqrk#zMcJZ8NF zIHD^VK6|pi-i?5cfdveurSn9I3(STo<%fXhb1*@+q~SK`~gENR_rd6iCEbj0SxCY8pNcA#{Qp zcfL}HS)S%N3XuT^aX3SaLwLQ<6f>28Qp|#ib6SKMRFD?z_cheELG3T2I0`5RKgq+8 zaUgdLq{zMA9$$L=1@iNa9O-l%p05p8TBT#m(tZlFC7#TmI@6KZn2MupVDK#WpW`Vr zPVP>uU?r2~cyK1qac#!b|18s)M{Wva;kh5sxx_v{Ky6Rx@Dv)jl_SObEEg{Y=SNdH zb=>JN>3EY5iglFwtzz$7t~FE4gZPIp5m}F1-C8q=`C84^c~R?Z<{y2DI})U5n688Q)O|qV_YEPCa1n3Ekp!`GKRi&| zGdz-TV$pF-*V>~+6n#(^#hvoUC?eyDsf_1HJ0DuR=10c&-v88kVm&D+B%4EP$9iHb zduXfTjwLRrqAJmy&{Jb*?|}VazID}j?5Oh4W(AC>5AEm9F2%B0JI$=1{X-SP9k(r3&JZr*W0&;E z9Mq@vXcX+`VQ!u$Q>?3%tX4=%y&ghhm6m(3*lwUQp3iVmX$gYIlE0?&kX9^MgT+1c zqVoW`G*FXERtmK=NG(C=xtoL!dh0cvWUpm(tN~2l!q8b@O7|Ib7~lU5MraxwYuZze zyAR+hnTe)?qzW@J70g7I2}3~>*f%t(d_)(!xM9kfDEdh3+unMjHbM8p^E}$WxZ(_05JedvMgm9m1?IhY#X9RfL`fedDNnDSCiGP3k)yZ(SYBKh1Ur8Bn6DN O<+u*6>Z;c1!oLChAA%kL diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_driver.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_driver.cpython-310.pyc deleted file mode 100644 index da1af5aef3c97d101402f328d03e99b513bf63a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8307 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_list.cpython-310.pyc deleted file mode 100644 index d44ee27f18a1a5307dde961683f255c31bb39750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6606 zcmeHMOKjZ6878^h7q#+JR;;|t+CkbiqFpOS`cPdXfg>A+n@wODK5P?E6lbKR%q7>u zSs_}ifui!M=%J^gC<@fN6woc#9$KKMrpNZs1Ft>h9H57yZTkJgUG753?#6Fl*0jGd-&+Oa0N*Rs9<=d?yuPiAjK;fBB2#i6jBN8RJUJR0xfi9bid zHLzGC_BL~6jTtP52Tc97*)&;!6O>zD%-*_s+)xh^7$XeQ*`BF(W-Ky<|T{j4J(#4WoEJg2R0J46R z5&22ey1zt}e!!($HIo^@&KW=?$@`MGA+A zA~ZQ4M4lTs+pdTmZydf!#TjQz!AUujcNA;NPR5&A=96}}{m_+>5QOq69#sp88S`M{ zuy3M_@%x%MiPt|xy%n{2eY5L(BJ#MDe*M9B<2sfHDdFZ~Ct`7Zn}^%=z+bO-c4R9G zuhy2X)MF60*m1oF?k11x4>Ai>_W~apURP|u)FsD@eJ2D{90EnHvy+q@#}9q!I7^@) zwo#Off{wqmL@jNXsHR)G`BiUzg3q<#0-lb^!ynb@AtZcBu;^=B8lV=+_K=98DFNT)n^A& z>Jy39ui^8e@aee1ZI1)ze?`(kAT`8U2)b&dI8qjs?Bf)eK0=oQlVu%gdc+x8Nbmh6 zvpC9(XI5bngGZ@MItQkS!Y4AEG=JdpkD4=~X3w!Hfs=ki1*7f8oOh;dRb9*wPv$bl zC>AMIBYXQX^`Ar0J3DzuMaz*Y7GJ~^vejF2oiHbCsv8(??SE>hJ3_G6d{VCJC z<4!lyxEEq#3N|%0h1qd?O^G7qBRH7?>?lSydW*M17-yfQR@~k|@V%z?S$oTFcOh*G zwAQ)3)`&vBRyCE+ZqBE^)rk?!BYwbqf6KXbOd-WV;bn3{IW-N9rP+-(6X~2S=8A6ZBw8>MqeaaHa9c zbCTDCQ{y5XxgnyqT7`$K6TwZYM#?ce?yk3e1OS3R?81wZQ?1!I+;G6=ZU>y?tY+U1 z(c9+14ctxs?|zd&5-$=zpUrbVJLfYT9_}(Lgp0$pm}2ZMeNSl3`y-WD%wt;B zaQ`sw9giV+q@;Jg2FGDR)w6&jHC4pr)KVS8@8b>Ccu3U{3rdu!CsentDNjg!KgJ_o zLh&@?(fdv22Z#5UXS5!f-uIie}*TfaIjFCzJ?5G zd74)AewjJ0;glnIV2$)*IhF2kLMq{5>xk*cOZkw)Hv}?NnZKapPWub$`vo4w0;@bB zZVHpgjZmN*{~U#{J<_H21o!AIV^4oy`{V~78;^`fIf+|z-`F)CnbPc=GQVqxi!v_@ zl<9h`_03)QdU$%{n)a|Hi@0s)FrwBspOp3}_)hz2W*PnO$uee|>C7kAo;E%kH}t{y zKE(|A-kW#T-6IX8(z`kGVIADHd|X&ua!SniDas6$LaR) zp-(qUqmdM4xf^j#~C;GT+R|TtIFMq@D)Jxdlb|f+BhYDMLlJ+4zD^s1_8e_9~j7*rX6- zifC~G-#){m0)~n{|COm%XOQOcKTXOQFI3o)%nmYjjZ>wM$y>o~1`2a&HJFD|y2wv#*z1vO4I)11C2|&s*4*Iceohd&1+A{wx1V0q zl03$9F$IjI;5huDg&zEXM)Px&hTIjzjwlz7!n?$#w|p4J_E4 zB~_xt4tGfVPNOd=4b0$PEpR8Bj<=FZ^p%vx>$XRMoO{V`lK49cz~@y=0Znm&}q`DJr2?OXB;qXAMPS z2rfwFn-@k&$66ZZ<3AQ-{|!j9t%dXkk%H$CqG6O%7G5Vy7*l9$8rUB>$cizS`!A@% B)3*Qs diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_node_spec.cpython-310.pyc deleted file mode 100644 index 3cecada57f3b9acefeb0537715b1da81293f7cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3788 zcmd5<&2JmW72hwC%M~fxjV#!Qw$r3dLpLI$6fIi8HDcI~Aq1cc%SZt>$!fVXlvW~l z*E2)GBB)EHQ%^njWF7S{?X{`@FGScYw581O^ zq*0!*r{!cO*{;^P+URt461_X_x8rQo$;wSS%Z6$`Seuc_WQ(y6Sem_zHrSJ2eX?HO z{$f|K10fY%oeh}Akgj_8`%T8PcsvrR-e6J;MWn>qdi&Gg8lGod7}hoxoXoC&dt+OR zcsKYKlC!!kyJ$Yj(m}E_#-nguOw;E-7lY4GREkPi5V1w#?YVV}JKRm|o`=>!Tj49b z!mB5CuPSQ1#{CoP*zWnl->dWbe8dC3bYk@a-r!BNOMIE%K-=Iq`7N|f{saCV+GXxR zIk$`Em+OzVHoF-YTe*lQf9^he@nnO&*i96RhmleYooK8xc10~DtA$$HMn2EQ;5)@) zHa^av5zPcow2^&z)hJ5G(QtTJ5-Vz4CZwau?O~$y9~X>1Hq&2sW0KtbqrQXk2u0mP zHH8evmaJ*(*gA5i&eRG4UeuUJ?M|uoxD6>dlY0x|Bn7s{A~u3ZhJffGNulo~o#Uh1 zsz|!1xHHV+Xc!(uQibt(4Htem;~dgX2;!q8jdUg@Syjs|JSBz$GmsU`oLSOG^H15? z%|@cLGfrZe#X{?(v;P~_0RdP*y0eyNTy+jade9jr{Z4+UceC`D?e$MOD$!yskK+Ak zN2t#J!q7VLFaeM|<|#P39>yvOQ#>qGcxF341gl|^COQm%0S;6HmG4w-{7?tZWc7kv z+Vjn^jg9k<`c#bMtLRLvJquE`qfJad68lDWnND4MilT>LC68vMV5cs2% z^##0(U}BW(!}hy4+>k<#WlA<97VH|A@?DRl_tCc@^+9crKy|<0FQIudg<%h)Z;F8w5Q%{|I}K{)5$vKAL=?zBGl2z*TJcE z{`AzF@1GJ3E0YhO8>=f_OX;eSLF7W}L;z%jGoHly!n?>xxhPvGY890Rr=e$ z6bn;wTu!&B=`5u4XHHSujZ~zyluevKG`C+}l4s%HA4a1-j~@Ji2$M;zT9cn&G{70X z_I(pH)B|+NGluND+5B+9=3Qh1VD%PQcJCU-?;55DNU{vuUiVvip&=+uZy7^y>>)gi zE-@`{VeK0f1A>OV`o^U3i9s9TpV>{>z+^oSzYA`D7Po|KjpKBUOOF#_l! z(omXcz=j}R&2#M1MJ+FbQ7QK&5Wn=Gq6(HkatBKW9m~#S43y7-rc0ck)kxW{#c8U zjF0}%75>Z%9-54xs4Aq9kR;hu35}mp?<1-xNj}FhVN9A_g4A&v#TcM(dA3vaeD94{ z@!kZUvjk%d0^4u;cYI7YYDRr6U$%+BPf!((6mkWf-jCnrqU|zp;s4sX|3YOVT`iGO f!oaZcwjze$U`u&CAg^YURL}7P-}aq`v*P{-;F8K< diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 7b21bcb6242c304dc4f6de2ae8610f762e8b125d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11876 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity.cpython-310.pyc deleted file mode 100644 index f6704d25d700c897e5bb2531749bbd84e120c9f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11361 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_csi_storage_capacity_list.cpython-310.pyc deleted file mode 100644 index 2ef7d7bdf3d34d431baab0dbf58ad2e1bd1db562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7013 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_conversion.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_conversion.cpython-310.pyc deleted file mode 100644 index c1bc39a4c6ac56eeeb3af3ef9e6c179221709742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5246 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

* zF9*oltr51Pidtrf+O3S8(6lQ%);kw&MmTi@thd=%Mtp3MR9L*=G;wHD@eM5fi}g6- zixpEHTpLHT{eqhy-iBi}nyV92YTu^NID8j+R+DwJf3hiY%d}nYDakKh=g?Bj(ks-z65wch1kNGj|rE$U<6( zXtxk!2sq9JbSz+jFP|G1_KI2#*8+`;R#FMZVmkURbuqf9c+sWsicwFCGIpu`Gb1go zdWk2c5Dr=(x~xCkV#(CH7<$bm=3V|Z38n+|QLXdV1Q_;&S1+naTXGo>nE=(tc%9Ef zbf)tOgsP$ULFk`5p+<2+jbIsH0Mr=F`o}a}B~YlRGsr@H6QPdgmJx_o@a}iG6uXr5 zqo103WeTC#;9*)qeL-!Kbh;OKch&wdEv_Jb3d5v!kOUE2EAn}2hCw3JT+?d_S`k$L zsY#|x^GZr3ul93k0Y|cSC{t63(A_kz!Z}+tb0Fjwq!~#wjU$Flu{1>0488mx+uYa7 z6^!z~?Sg4^&hBjXZT6*aFAD2K!Wqt=7*DmQgfzWV9Y$L3s5v-f4nkja(o`_4_BQ>grP7}k2_RV`Bt!G#@6+<6 zbXin^w8c!ZMeGN@hN`2;l%kt7I@kRpYAB^FW8#*wUw<2`lB+4T@V$#*t4p|AQlxDF zl!Sr1I;HpNqm?n_(4viK-m;8pa(TBl_=*a3;3U&3X9Hyy^5O;9h)OKBfvmMfN*>$Pc-kYN9;`vx2 zkaCwi_%O;+tH-PBD#VDdBnY{~&a^;m`7)B>Tp{aidi!-sE>W^MEcK)!0W^UWU`pnZ zSemID1;aAn*Yq#^%P4I=+m>+*UT@pFF*S5AA&)YX?&a)m+17E(w9Il*0iL|ZFB82c6!9<(^pDto**KE> EFZ)zJnE(I) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_condition.cpython-310.pyc deleted file mode 100644 index d934daed6b88d9370b5db530fa4e980b31c53fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7727 zcmcgx%WvDr87C=9qG&1ac$4fSOtPDeQd?Sgv1ryvf~0vNSirkT+&u^_Xi77-8B3%x z964)4xvX<(4@IvndWcU&uKf#o+*_{&(L;d(E%qFshZcSOz8OhY9H~*9hXf8eGn{Yc zd;Gqc?_*plxdwi}G4CuFP8!BvsWSYtQMrOExrl-pHG`SVYMM1u-L0CX?wMK!_e|4n zWouc}xMeV#Wgi(V%X3?qTAo>VjdE`DAFhYr7o9p65tlr1Red4$7*84^Y|Ai?ytatf zL&lkRZiPo&1QL(+4e!e~kAimS-O`P*@K&X4C-c?nN+?%5^-3ddRb%~qZXS^uBAIy6%`UnmS(gB&syk)vs=QEN*mKJd*RC;7uMRe0Hw# z!_U>4d#g}On;)#CH~r3x70DZ`?)Q+Ku~0VC(zQ5R4p%y03ez>HdH9z@E{hnYA3xvl83)$k;M#4tMSq*#1E+ z&knGIs>kIndJYY0d3Kl`Q9V<93Oz>$wLF_<@2H+4FQVtzpq6LH*$LHC;wALF+pn?r z*!z!++CKIHJBj;#=CM<_A7H218Qc%D57|e!A7UtATFjJHh;13<>HNbZ*etDyhbxf5)ThSN5keOjp_0^#*JId+ z^f+c!mY}C<1yLtxHa9e})M2nm8Mb(uNu(%e(<4}r^rZ-*M6K3Wo%t3|l3<0WIRV>= zqcoSuKz5SUmK$weJ4AyP2V)jNPvoI@;ZRYaf`GZupvL}>o-JJ0a3umoH^@m?&X4C;>{8wkor##QSK;ckx!o6lc0rbGmpNwewvIwL%x8P@C&!P;s%rz+S8X&yxR$CC5r)qB4Fv*lrBUE3v1xmPXfzHg?Tys&eS(MYe~N`Ar%^ao z&ct7r^kh%UXYc}dwnOO{0?_(-3pn z(n?m&i5$!>O)sKJY1(zif>9hLLS}Gw7=}IX_$r1vFvvbF+G)Mj4tBv=xLg+0o7@}p z!7(*(nu%86=4B8z@oqit$R0)q+uLNA>r++du)X;WvM>7eVTK)gz!0ESB3ZvP5V#V( z!WZqVOVoZ0#pVwtL050JV*w?OgA`!&!7z;W!r~5c`lH{hN;GDAb7`3LCw?88(a0E9 z%z}7ViAsY)oq~3Og4)(_i4!PZ2#NE8#Ve|oYDp;JK1QvR+FGR(u zVN~pa!5vWa2EP@pXlUpeH8S?F^j+tVfo?_t<2?w!zgwutU>7i`?ORgNM8G&P42<5v z=oKJ6@T@&jPyyNdFySHVuK*#DSLfcMAmH2#nh9<{iPoa{K{VM0F-#egO=6DYgxx!a z4ZESTDfW{nM*)EXvR_i?&VMbkYqyS2?8n`le%9MnHxeNXe2Y}qfUk5yHH1Mzs98kq5}oT zbgdU|O4VWP5kIeGOHzb-`rIM<4C)p!7xE=hquF8Hy8#i^n_;rbv1Kh_%Sx^`8oW(e zwjg5OA{Q!h#))n+NbXGfMgVyLQXUCNidKF{oeGfWCUFI{)Uj|B?}He?_TeztUYfZb zsHvfETQM4gG_^+HORxWB@HaC8e>CC$L!bD7RE9jWAxN`*jFB>TN4(VbdusPkJcF(* z8Ypt2s5SW&iqLpyO5-tdS@*1M^Sbe~OFy+9S`RZ48LY0gWj(Z|-L++Q%Mzz$Rw4(+ ztVc%I-h!`%r?oB`_Z^w<+AM=NDqZ`rvrUn(Zl{q2v|p74jI{O0$L_WcglFa5eyCj)97n?z=&VtL|5n+n=r;W`^6Cp;=Qn{$| zbjf8rXi93b@ryq@Sp0FMuED@TFp@d0*g39PS;iLu#f-i1J@Ksw3iU+$BKWY8Icx1= zMSO(5KjKPA|3!29zqVPPLLN5!CN1E7L1U7%)Jw#xgkX~9R}h*)La7@jVFdpdHF#>n z2g)?l3fkffXsP*An`D}16_s*Ug(H-{O*&1P+KPnfr&+b%>|Pm3{|~rSM$Wd5Sgz@s zHu7(lS^SS{@9WiaR`K6%&bB5CF?(8mPSEsGMp-`{+_mLDwziFJvORONGHiP|;81if zcpH2mf50q5?ha zIYx+tVua4IFmi*894s8WiP&jLEow>aOG|o%OE{zb2(OOX5-2lDZ2JD6@rGKRV@;a* z)B~T}9SDwUedM`}HK|;q?_1Uo=yAgJ!ey_HgrgVN@9_rGq=Dcb zzmG2oH=kt03^75}m8hTSd{CNI3CdljmF9e(-}n8$;B9r_a4p+BFrnP_&^_~&QGA^r z7}Pkv)K?SYZBcwqOwCjA?4gO+h`8_now_cen9OkWpmJ_O{mO?)%Mp$(zMs0j4+HKr z>AC3pG<~lp@B8?82Xi=&d1@s>ZdmU~?i1XPpe=QJ-grZ0R`G2HIejiheJIdaP)2uw zmQLS6#bqjX_)||Rk3=e^#9VR*g=5&Jm9rcRPJsToe_4f{XVZv+F_EVN87 UlP^vvBW+ub>)?|@(K?d(AL%eUH~;_u diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_list.cpython-310.pyc deleted file mode 100644 index 8a29d5b2ce25622fad4b5acb63f193c5053440cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7226 zcmeHM&2QYs6(_meFKXqlD2|;Eo3&lHYec(NjI^oZ8VURb!_6kJ3?H@$D2g+ZD09j6 za8`&GYoMrfDthRthoT4Ts9Ucs&_izd8+a{h;+H;vl{vsr%2V0m8H%r%S5S}>}G?mrwC&)v=v7crMSbyU5PxQwTP2-`ADVz(`l z^^kGq{&0oIT=){jr49GvHjn*w=-$?iiEvk?Y^U?}`bsEQJ4>}7Y1I?mNhV2@4l1+# zX%bO&-ScjoJo4w=o9|wp)2rWKcda&xGV`eEgs8xSMZ4YDW9FI zz4H@AbDs)D+We4`{_>+0Ymx`6&R39}(Wsi)^z|fO4p%y03d;r5JpSZS`2Z>X5*arj zVuQrn%#{shu^bYF`g^-+vjQu!5-Y1(o}Fh?tg>Y`3%tmt*^w<{(`=S_X|2qT4r@hr zj2%~B9PZ%DiD9kCUSTup%M_o&msf|iB0I@mQ(r2)f-k2AHFlc4zGXD0*&FOlypOQA z*crT!va`&^`xyHkJBRmi=3v_|WM>}CUGJnaY2D*#(h&i_!I#50BpLiHOl9|1jgRl& zoOkc9hN&Aweww-{_#K(J&me%dWr%>9+KPL8dEySJjyDo)zH~VYrP^k_RLhS$eiUu! z$+BE3Mc0i$*3b8+`m?6^}$1B3+Xyix`wQmXJ!Z8rLk!|&iC>?!-MW22Q-jF?~vOnM^BUs zJ$&z&!tGJ5*t3wAdgzC?OT8Rw}T` z*hAnyj0gJCs7?u@JUbO7fggG6zDT`b9PwGj8<$kU)1u0IN>*iWD6DA~l0j&Nu`d%L zNHKN^ty;+Jlt;^ZeG_H$-!a5dy#BRSUrk!PzS0Q;kpx`Iu>SD9w2tXPO1v`LPFPxB z=kanVtvZTrDPe}$*@heM-P526r8p{~S$p>tlK!0m}Xx;-Tt z1#gdlRBLZ!CC?+od)^#qN?l|nt6<`%bCh(wL?zQP?Qgn2c>Y$@1~UdGW*aHibWx4BFe^v8BV8$Br8gyr_Kon+0Sk$qVAA)#03YXbn12CKZ~50??V z4M9PG$_7%i55v2(#sgV%7r3B-Zn~OuBIW`-s7jdMAX$mS?r=7&ktjwY91nnH7)u-} ze&nwEQHQ^cDVf{yH!zUqbvyCc45~|7b3aN1$H3)eWIb?_)BuiJnACBav^vGV6R55FO_ z7xc^vxzXnHF6@}HdepXK3OeNRI)azd3!NRKDrwhEq_0VN3+3*m2}l^DHJ~Abhsu-` z_Gmq2fBKfi|2y!va0vYA)0(*X4skDwxVA6+);QL_b?`lly@q%NP^elOddiZMUEYPi zPtc_B=Q#V?GjW0@GW|2-mQ0->L*p_5x%;W2o`h^Q3<3+`e!?Yi_w!l$*6Lu2eHi)( z?DPy&nh1QJS2EQ1swt*O#xp}fE0HU0r$gaWYJU}3_re5;Df0K#^7I_$pc7`z6cy!l z7@{IAW^J0kG?n(l>%i%g^Jm7j|Ak~S()(|Dm$WjdNwpfh5LvsRq&Es%r4``7JJsmU z-idJ{g-jn^?lLYmi;9xPx7`*T3+1yead)wi#C)-8E9a(pQad4DiklJ~EsR&kY34kj z1MsF0@R|q$1HGeN-);A)Z3QW%!m%>k4r`+B{cT+L$ZI>S>fNO|$la#{3;tMN3_~x0 zn&?h;@8-gN9OwG}fEEnVP6HbI4n;chAL#7I(aweLxh#^FnuW)#oxoX86)i$H?JTuI z_(g(0>cE#E*P`ZL_hY&%K<=G3M9W#ty%VFg#iQ%E2>#!_2ZB*LO9DQanK{H(457QX z<4_^w>}5#k{?eh3%8;C&U`U9-eeH-iiFvA)|Cezq@ggjZjKtmV@U)jVdJsHmgGgf6 z_V7hE;Q8io+!t+#(`vJ|KcFtbyZixa`vsDC4cR1%)cs<3sTtfJU)CfIkI$z(^Fz+M zTf0VagW+;;%cqImy_AgN1HVQ}$+0e!CSD2$)J{^h?w^Lf_+ZFE#paBZZC*oWFoTB8 zpmxyto)4WplKSjn2T zZQd|G`{}3FW9xBFB2v<`Hm%3Dw0pM9Z(8D<%*z7BJGYFUy$LS|K8|(OcvO-_L{xI< zQR~@HO51ev(d{&{jP?&@86#~y@`YKCyfSQA z0lrEnl9{b0Fug3V;tsp%BC&51UF1pI){Ny)@CQL4%dGs@v5)j?1*`HOr(j#%iw6_@ zGZLmKzCt_&05sa4Slh-n;mz#U#_`to!-j6vFit~mm;z%pmlfJ=cxy5%w&Ae0e5to# z4-1wRfCWtXM`DuDbHwU?e=-vo@eB_%TJb>Y4NOCDiuzNx$Y)mcEUL)Qq9$$;*PzSj zx|d<4fE;n?d4EO^MOew2Xk764#0h`Hx|NuPd%Y$8&0|7yNLPxS=t zY78IU^D@WtfYnY!<%;Lg!u>Br&%+-(*vbo7p*cO%L*x? z#t=818l$MaM!doo#dO8Hl>L~p5mTdEH*F#L$>}X*CBrtYf>pAh<(66a_o(C)tr_UQ zA`?O{aS!M|?$c{A6j-u5yeapeWV`Kk3=`ejk fU!XL+_8=OjUyJY>nb(vq0=9+q5vs0OGr9i(j&t7+ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_names.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_names.cpython-310.pyc deleted file mode 100644 index 285a52c4b6c909a75d98f054d782762bebf564e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9472 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 O8WpR8v+bI3xbPnw98yyN diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_spec.cpython-310.pyc deleted file mode 100644 index a6e4cd54b7c81aefb1ae3f8e5e5fcd7f675af1d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10926 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 BZ?FIW diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_definition_status.cpython-310.pyc deleted file mode 100644 index e72080f9cbfc044caeb8d50259765bbeeed57606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6454 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 B%Ao)N diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_subresources.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_subresources.cpython-310.pyc deleted file mode 100644 index 41122f1849138d8df4c185eb41e8a128d8b27ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4964 zcmeHL&2QYs6(@&WE|>bU6Wg)fpdHw4+D)QeEB!ztxJCjeHqru{)-oDkk%HoKMq1ij zlAal=(P9O(kPbyrpgk8oSV#RGJ@+5rHK&{l^iZHl-kaGk%d%7pIfl}Fkuz`Jd-HoA zv-#3eV8Qcu`@z=bS1s#v9Lzs14BmqxZ$rhbuElIdQoC#GmUM}3ovs6|le&Xiw`N=S zE#|V?fyHXv+jqKkMmDUbH~ddP;rUhB<09jV%RrAiIb~eNA}LgoXS5LcPQo~&KicLQ z7m-58)-dZ!eKkRe5!-d4H^DU}ih+Dn?>yIeQ<8r_=wN3?3c_jJjTI-#6HP2%%G;8Zq zPR85Mc5Epg_k%A$b5^HmS4(&EY%AF=K`7WR#@F+Y1B3UV$iG0vEl{zA>g_rWixK89 z_aCGSYGt18)!23Bv&Mnl^?02HY~jG#x4S;~A2rzGbW~?cY*~K^cmQ8kCL?x%T|BV5 z3+xs4DzuC261xoT61&1)gLau+W!IoxVRbmV?^LhM zQCHT!wdahSkrjeDKn*Rmwt*DbWVXFpnRsB5sack{XTPBLH7E$~-+UBzTcxw9XI8DH`+FCYPx)#P7Uf~2(p_~I)tJtml zFif&Uh2bhNB(Ff_6VHY}U1Q(31Ka&-_=D3F+L};_ZJ;oDu#W{#_}>VCk@d)e)3JyD zy3du=VAF~;E&{-P>K@1aj0P{dzIDM>DKfMaPR~yeN#V0D)NaAoPh(~S0Y2UT$QC|G z2Ms!XeYB=p#38~Ty}U$FdH(RmsX}V@W1Kp9u#ZJ+5jW7tpWytT8|TnuV4SoTwunSD zFk1V@6!?<*>xdN)t4WOdw7Wp_IHtpU@Jj12XuJ?*Vi^h9(F!PR1~Ki1&WAA#2&jym zgO^}Q46)N-*Vq<>G2^?b?B`|5sN`aYgM-;@n^l{1&gfe7lRnQVMBQG>**aZo!TKj9 zmuL^U@xR(+XJiX-ERooSHLS>!OwnXJ%LS)#Kgz)TC(AacyQwG}Mw75>ymE`abM{6j zGJL{rQ3jp}{1eR~t_$Ef$~5C=aBxDJpb_|t^`8H%CPy_fUnBUukv0%i7pBP47}F+- zzUenmjEOdeH%~WF&EpGgR9pl~O%i#4!I^Qsgj_S@{1$a{82^S*H}-q_T*i*?CC=zr zESh4^c)nxM>xfr0B#eJUupN&P`0i6E#=iy6_&4;2_#OSf{2Nq>wP!2qDdazo$f5m# z^}AnuO7_T}qab4%k$tk~DtF|n+CC9CR82uv#K?g)a`(x;4Y7mVwx0N^K604@Gg>3} zsegzu#k|Lr4S4^)YQRd@tb7_ATJx(%kcFA~Bh0pH!#5u22yEP8M!bsaG-3UT$p$$$PbtedpAZP-64D!VYWazRbAyFu0JAGy&uU)DIwri1)jdL zKRc$&%DxpHNbJQg19y2m^2p-<0?#GG@BcrF ze@?@AH_&*;cy6%%lpI=zh&FrJnn#;d0z;AD1qcASuf7CMf}e(B)2X}yf@r3yda;#@ zL8QzvoDd2s53m3v{{Z`H>@1TrqJf$JoCJtFEdgeRfM*Nw47^{x2Y2jE&CMo_G6sD! zXxgF)Q%{Odn53h8VR$fM%O__h$U-1_iPC#VjzD?>scYpPnQX4A=^Wu0ir@kj@+V>VCz!1- z1_5#H3ukHCtU0$pjuz<6DRy2YkiH9}P!GjhD9zhgJ)4gr{}~U%zv8DhRA*qs%x*fJ zPN#VRPcw@Ku)GSw5D;3X*k24o+;se<9)|Ec2^{6_ zNdPSrf5E@%yS}?v*T>!T#ZQp-5231v;Nm)Ty5E~!N?Ybq3O^;y{Y;~;*aGd`VCDqQ Yz>^#8+(CaSF;jDiANaOU7Re>&Yp)MVxBvhE diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_validation.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_custom_resource_validation.cpython-310.pyc deleted file mode 100644 index c90bd3aad8b9f6b385c9921b1971b03399330e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3636 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 Q=H=!x&-ZMPHP}t(-}8Qd0ssI2 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set.cpython-310.pyc deleted file mode 100644 index 842253cfd7a8b8862b0e5719f41e0a24028e3c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6931 zcmeHMO^n;d6(%X_kE`{6>~;Rk*okAMT`Al2$JshY4BIgRBXZ$2d=OgDT+Zx@Hbu(A z(IP9zr!{&g(4vzdGqG|&Ag{*e%{jX{6fFI_Q`Xa_74K`j|t#yyzwOzOlxaQXGWm6byXW}L)C?L z0d*lTyTx`<*KTOcWW~oCEArA-pe8!o5VV#FuxDubMoA#|958a+`-$)xHVRxkL#mmj+x-UEZ)rJ>!n^8JQMo|!t zfyEJ;NYrinoE=6F-DUgww_aaLSHIKY_68R*Egh}d5+E&g<$LeiEb{tY9?E4~@PNB9 zUtDT@<4r~Lhzdp8az@E$`JELTl6xKNBXCY@)%9flY80;d>wRnr%X!qCe@Xz}#vA_= z1=ql0jo8~RR5fPcS0JXc(l3i`la*P8Rhh-+6kKE%*gQM*SZ|kjnH^?F9&1~AyTU8? ztL$h7mDw?NT=iJoLeGf|Dzj(UN!2sQ=g@O1gUW1yomM?HUPI5b8B}J^vFBCKJfBC; z3uB1A$j&_0+J~6UUP67Con_}xA7L-ES5O~i=h>^MkFgq*qMpp%UApG-ZWOL?IrvfQ z)}8Ci_MMI&+g{+tv5gP6FC%-8GLVEaWoRg=+~#Zh3PTON7C{fB&6zKi#M7m^ZrFE& zU^7LQ6k;jbwYy8VR_}99zQ?88KAfX!Q+R%4ZK(J#y>anMOTz*nYlzu^E)GpV zb3?=Boe^n=AV9`+=EIT6>&NH8!N7oNs83|DY_GzrFm%(}-tj!!C$PYf% z#8FiLj+&jQ%bV+c-xHC?rSzK*F2+qP1meQ=#a_hX<^~Tpnt{LC>}|?U6u!||dc7I@ zk}vjL?}59{Rq+KlG*Jyn*H83n(f^NyjfO z=}V`U3f0+b>E@?{6FKHL#%MepD8>(c(@To;F{#;5yRSiTy89P2-{3MU+>Iz|d zdEC?7CpmOj;z)-_5>L^MECBM4y$?i~BakfQCf<+95KGm;sl1GHRCv@se(0NCr9xyW%6E+H-~AKR2=4n}YLuS4MCVtE z^F=L)x*SD7!TLwi-IC7ywh>qe?U%BhlLoKT~?Xi{oqSu-7uI6;VX_YZkjLry*O z2YLOQWhysm0^J2j(cytpGlzALTnRPN-R<`El{;un4G%4tl6sb%p)mZhlOYEI`{yDZ zxhA5n!oow=i{Mcdka})A?yq)zsJP${`*1kqe;W2xH>8WiD!2PR9PgYp>~}-7c6o5s zjrsrG#gO3QMdIecoXkP_PS#1!4DV7SRXCaHgVGG;Tj+3ErS?-O21oLerKM-O6tRHu zb;JE#-jU2CcE^L<{7NmRojeCoi`0b>k5k_M$o-%d+){Z?ar&1jcPbE8srcVBB=}z5vOCV8@oee5tnGiFzZH>2Y zRreM22brMhZhsIub6d_|q7FKJuYj`{bOjXTWqb(xm?~q6(tbjn&!gDw>xhhfrTgPd zx-+TXD_I(vN_FO>{Ukblr!Da!wlO~NRRlUARBHQx_WJ^geMS1~9g(U~_saX{3HDh25KCjueMS4T9nsFFeTs0^;E{M|PdvDQckj6+&R|z# z5z{UwLj!924YltPG2H;kdDHzr{wWGyd!$S42{H)xjcxs!_Jg;+Z#*&{6(sToLu1Q$ zWJ+^r%HozG&dQ=h=7AZHwV}CXZ0U#{j7!?XiYz0)P{4@B(0o$arkEmarUy)VJ zG}D<+tZgkn8##&5_#tH>ii7jFRXCMKA!!Bz$;2MQM;|emOP5FHdvcHJ7OtX&;qciZR~QmAaSlCq2(n*Y>D${ja$r4+)(3?%mS_a``+R4xT>ca^!9e~%F{ zMNTKR!7F)H8ewZ(QkjtWGCtB73h8Vj&jVLV8uTZ=^3l_}S!_?M&v(F5h5X-A|P zhm654CzE#XA()0Lg2@p>IWD5=qH%_(R9}8%C>)mSvdwkqJJgL%uNm z1x5dBnIg=hUuBYM4|l{xBK}P(cAuR@ZpaUg(1*B95zV5T&TNLuPjzZAoS1{Wev~2RUctF~LbP?}YK*O8+scJKt8tSb(WomTt`D z>MCHgnYp@RRTe5{#jKT;3e+p&3a$T56p10YcoiS*Gdl^@MjDpmZ=c*>Drs)Hlt%oi cDoxn{oO8<4%j6Sd3T90M>m$KhGfou#2ctL@djJ3c diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_condition.cpython-310.pyc deleted file mode 100644 index 3117c52ba1901e9d9c91fac7b23c785778377cb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6887 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 B(h~px diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_update_strategy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_daemon_set_update_strategy.cpython-310.pyc deleted file mode 100644 index 03d29b5802f2c081d613ac4c9199bbbf1872609d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4475 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 avH(DID$^?jj4=herh)Gx30pHx6#fVDwJr<* diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_condition.cpython-310.pyc deleted file mode 100644 index 2c806fd862a115d70a79bdd613b648afe5186780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7763 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_status.cpython-310.pyc deleted file mode 100644 index 03785b90d0bee8808e8b96002100b40e23fddaa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10628 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_strategy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_deployment_strategy.cpython-310.pyc deleted file mode 100644 index 9280f41960a36f9af4fc2dcdbe0642e63c160125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4359 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_file.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_file.cpython-310.pyc deleted file mode 100644 index f16df41b2d0466d787375a87802eb8b45d868019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6999 zcmeHM&2QYs6(_meFG{lIZ##A3v6IHxK;E_LxON2Bh!KClZM+U_!$lV@D2g*H(dLrt z;jA1l)|beqoOyaZ_RyY+{s9FF@Y++(0eUFfroT7brKFYCvfW-m+;uC`xMQN?jDs$_$Q7iTT>M&eC=q(8u2_+Io*PAipBJpL=RY4rF zu8da$E;xH{Swup53a?9#*v+npyl%j*WsR|9D@t{fg+^mJP%FKqx*vBMaW+WBahQxM zr-o!=S!3*N7R3*|1$O1^>G^E-J1c^%3YpNCDG*)DD(=SQMu7sd?j7MCBvg$sbV& z10ps^ysbjj;1(~CNO|cOcFX2vUg1^l=vtA#!>9So6SGwkWxk8=eqyYdt%|7JtMb{r zR_1&7Uftse2R-}pTAAU6Z~yF_wXrf`?u3Wcjqt152J^kv|TehC|Bj5VE-h*4By`$*$z{@dqT`|D}rS~_Rs^djHFAN`L#99aL z&fi?RCwz4^5Fx*f4fj$iucslF7ORWfj$0DYX+3wzun(gmKReIg7{N9yeCvj%Y0R z0$;|yP%3ELKc6%}9{3V1pX$auX{?H9wGjqOjqW405=Uq1^QRk0pv0-J=im31MbfyR z!&t))1HeQ>O9P+IyL_nbE-1RITH&#lP}IAR(u(T_QJ`FR9?T>RMa3$a_{&PXQN2Pf zC>_)Orq3qqL48EZH$i4}(L3FwFJF_O2F5)DdujH6e@&=Fn?SCR8Ro(4CQUJpncAWV z#uubeJsFYt3ijIch!R~3Qa$R51+cM=73On3H{}!-gvV|?^mb;&9;(t>ui*ZgRIgO& zAD^_QoLiqpjxKtqTg#0UMqA6s4t{g{)n(^oM~q%y*OOjnT~7ZgvAvAcnsPr@Q?oLm zY11J?7?a#hG-=5>)rsmP_Yon}`yu3%>k_H`E31*-bQCxBq3?wY8cWzx00r$O023Sn ziBPO7WG6`IbWRvfXhlZ_S<)Qq^b*CE1oLoi`^pR1su%VITGT@!B6b=V`Zzm%?%X*B zcfkWr`9WvvKt1a0{Cu7L=+cc(nCJVV3oe#owKAkkWHx=A%(3s^zS)Fd@Sqm}t;Tv; z8}n(g(0c0ZdRrerNf!)2_xPN)!3-A&J-uG2Zjclo24P5RA_>&9bFmXFujq9GT?s+M zz*iVYyunwIEY<=ftM(N0+HD+LLkkau=3$P7!F^b0a!tm)?wnpNc{yMk(=s3O!;BfR zoM)1Kecbd%d$!5)UuXB%31#YwGj^kiPm^*U$Td{!sy1*sGF!Ma1F!avPBL&}YNBn+ zLm*MJyicISxlzB=GSzy~lG z(BMl!L0FyLAjBn4noxHsfm@?6UJ@)R5AZ~&a?(b!HiCCZaSxYLxk3E*f)HX+jM2rA#!p&J5+KS!jRDQB=>+aePA?+>W+ z4HT2{h*+A4N686%OFr5?Q%-A7-H_AD;?|n^xv6~+c=Yh!3f@ELLylN4waj(I`d`<8 z%(zJ?nQ_0AcwTJW8f9w~<%*PuWk|V3&Kc>`xLZqY1KbIDZnIUy1lCT-(f?Bp8(U+kR|b*X z5;mFHzfXAF=q3c%`Sfu6caeOya}6j0{DL|UqUgUr$uZc<^hC29x(WS1=N7m1;~ho0 zH3Ha5B-7We?K={GvG(pH&89@UFIPO0-?-vY+s~-|Fp5noN0}3oz*@5&+sYo;s<>v!6RN06lr(%|4D2<493alRU_7X( zGLjGljHnOnrL+9}rj;`|sY;@o5(C(or8$ zY7y~-3gEDN_-7ox^rm%D*j&JUo7P2|q+og6#N5>ZR`(1Y0}7?BW?ELUOW!}Y((;Oz zcuGn6CcZ$L&-`pml4<2a=yjI3ckx$5m`?wLMt^>ik`5`?FX-e+auF}t*Ls4<48NN* zd;|$YFue!N7mny99MSBzk%!d_u$y1eS~Wqb-`+wMyxVjrkFhV0qwh=H8iA(GgWuR@ zZ3m?I80l!lm@L)^b9gOv9gA&x~iJV`jg;QO9sxAbo_mstewc57J0K@^7>P)(UB< z+r=oAmb*AWI-bgQU>ihBOHc!l{57qPG-j98f9nO@W9Sy<=`+oIc7!}NNP)rj;j8-a zB1RT@7)>;8ed zK14BDDYAjJVw0}gUfMwN@Ldo;HmvAi0X7V%VltvMLr# z*fL9hUw?DT)_xdw)iEsxPu$kj@HvyUSDeb>ie0g%%UTg?6?u{7oJWybQpk7k(mJ-D uxUFa28Gbt2@Uu*oxGu$7$1;W5hG{^0Cc=w^o(ZKaYzy-vc{^?GFZ>JEt7E(X diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_downward_api_volume_source.cpython-310.pyc deleted file mode 100644 index 9ad6bb00ad84344d9a5acab06f4a031444ea7211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5465 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 Y%(WWcfDVm-f@IbzmWyT)1KXGR4?ON73jhEB diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_address.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_address.cpython-310.pyc deleted file mode 100644 index 5f7f3ca27ef9ad00f475c3ebe5706d87f3f7bbbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6070 zcmdT|O>7&-72aJg$>oZ&El05>+ljYM5twd7O0wfPgzLsgY}aT@8@7=Hkz&2#jHH#x z-SzBHhzJ@eDxZoTdg`I*!8-a-py;iK9(v2Ax1RReQ_cZ;DB7mqn<>1%v&}_JQ-|x0M3ttxe)qP+!dAD#16g+jZ*wo^ zODomYj}^}YE);9^jFZ9iqZzA`w>IssAvvv4(UaLv!(iRt=weZru0@~6pFAp`AjMxH z;~GS)k$9WAlEw`6%Q5q}W)q@i1y*F1s^!@^X0w^6db7ZbtjuPgYP)*V;?`D)9m#4% zc9b1cEjG8&GMCkg>^OT%waoAtw9IF8sg~W_` zdrY3AHcb4?t@>mS|PX4v7ijjrDkVT()Y*B)JoYZxBpA=p@oLKfGyd9Yn;`)jpm zM{b6}#p=p(E%qf}ioDh%Z-d9RN0}9>wc0+kyr$%Ut}8Adpw;zKxK^W`#ByCf@TKdn zfQi^aW*G$?zcfcFty@&mZQcB~cWOf3)!`s59Rmy>DpMjVdBW>tLi?{pI4Qw~cnb@x7^wi20V37dC&jz?q@-xu2f|Gpr-5|u$G~5PH9yK= z@_Hz{eK+ek#8=h%iMOMS@EUj8VHmAJ0iE+Js~=UD=~uhrz?IkQE0qtNwjVrNQnm&J zmp`tqet1cdtXw9Vb$(^JUazezgA&y-;!d|M{gxL?=ltrb>Vk1sFR4!J%d6Dsa;5r8 zNPnHB6F}&hhVhCnW@ty|vu#luq!3OT{sn!18(D9DQpA3AAhP3g=tJgVOBZG33N%rc z2o84jpX&mcChWW zedZwVa%Ua5d+0|GKX5u-pp8Ncp!#7W4EV!}sk~J4MCwi47%?ndCOWHNFR?$TA#Ml( z_eaneYA>N-zYU~s8%Qw~j+Nj}jF)Qg$#D(Nyl|$ElPKFKhs-?RQDL~(t~(6`2Fi@V zt-=Yx>5Q~GjoiF|1kjBUHz0Ili0K7fJkRK2s60XkYV;s3#$Qbf-+=vW8>c&*GD&%w zGE)4}rADQUrzgdf@p7O}iWBHxF}%5Pjmx?nvI8T<`ya_X)tZdeRC%)MA)N2SPA2>* zIwTgAbW&HPqP=~tioX2}Nt{IXGMM-Nka?+5bouIxjwJpq5A7gHV!s`vZ@)%T(y>b~fPFN`O~ zlbpn%sBi2VPfTg{O_|>{#5tLl1-iF*s`brX_)d6ERH0~>#~HNX4>6p9J$LjXb(5J(J(MXCibgBPyBPniru_vVvr_lp94f>b+WSLl3 z+g@jldDouPzy!AwTJL*P;FgYAy{asCd<})PpBnmLR^QK9UBqn#*qsC0xkbhNqGEg< zmq3bjv+*^pQVl3n=?tpi+QbR1vyX9c7Hz*rQqHifpZM0)D>FE>`(Gv{&oD^|7CwU~cANxTpJsjv0v+c(+$#uL)yfd6XF-d|+UX4=8D>Ic8a7TfdGBMQ< zx|`&c|KHCU$$F1CqoB+*<_(+9eK`LadimeBd1O#480CN21=Hv)9w_YzvC^%ZLN*g;J%G0xbC6^SU2vjmDMu=fLo=jyw#UdpI zfC@wYk=8{hIb!q{rt%G<3AU+&Vw*GNH{<^ak z%1tL!mqO4~fvDy&u8nR!&k4f1pwX2WpQq=rBoBHn_JJfRxGsO}x_<_>I@{ZZsUMpv z)0FUySCLbzxR62PpjD^~F*oVJVZ z##|S-KrW13w@u};>(X3rHLW~O@ z2$d}T*nJRbUJ9I5DqW`R3T2~pjLuuMQ54<9H<4MIsT&2uGN7b}UijyzWEYKjsIP77 z#?0V7J612*x@B7nmT8&gqT2k5CFo9E)Q}~H;DXFR^X%wishS=Ia5Fu2>ziJw6;fQK cAezE7%ylZlYh)i|3SUhF^W&1KY|Q8W13vHodjJ3c diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_conditions.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_conditions.cpython-310.pyc deleted file mode 100644 index 4873fa7b9d40e96df6577bc10d91136c6e3da8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6608 zcmeHM&5zs06(=c5;%ayO700n1JDEB~P!(Ru+tfg_aE%&{V+0L0h1Vzwp)EskMiOm` zq=%!;t{?*i*6pE(wwGRtqV@LBzyBFr;?>oLf#(nAo!-^+hVc(7%sw^>Kfs$_L&A-Y!A)+3X2;ZDt7GYJrBlJT657LR zr)nCv4Q})5BZF5(ZLiX)b8E|J*2bST7@i-Fx8fN z7n-$=DJRAB2Q#*m@CS`gAUR{RX=bZ8;?6l_i5) z`d9g5rDKz5d5u%P$}e(Qy|uya4uX{Vp_ir%8E>Rwc4TKs+|!+HX%XKMy|0w4?)XlO zO;t=_TD^VwR6{Qsd11Jl6U*!_bfQ_ws#17-H>;;YZU<36TUJ62g9sZE^<@=umo-Z2 zNH%>cmk;GFyf^WtKSwgLxj8~lW$YOb?TI}xT-XFsY#CD615)%sTAiR}WXg*ZD%B?F zfzmf87E1LAdZM&8si5R=a|;#*p<3hhc|v7t%wxltix5WB3nFM>5S1Fc*<6yuV|F%- zeJ^ykJ(;@xtj=XMHy428mJ(QTXGDOV4#*U>NMdhb@?vDar#=cN0Xy5-{+6GZrZ`5B)VxG3QMYP=xgKj(7Rf9NstF?Zmod!y*C7yrZ z>x;B~e+m+9KMY`mZM|p=U3W#HYP7UM*ILPL=D2PU1aom_~JbAwn`eliSgw_d3tH@KPCN`821e9k?H*w;=V0ZsufR5HU|+X`dsq!5Qs1_ z9~xjeJ^+u%d8EuBQ!bWlCy^rYB(@wTB!w@6ZNZfEdcDBE%sk(ZC5MQq^&^ZIfHjux zrb-NHFbu-$>t;Y)NwvjpuqX)Gwik{BG^w25i`Xc-AH^Rjq(tWoCnojx0II-i4L}A4u(z_7Fa_EJc9Lxit(-i}6I{*O)p({uNVkZd$KTzQ= ziyXizXjJjcv4mM+Thk)e<=Mr;5 zLcP%Iw-#;p1_U*d5n-b!7Ou}8aQG~0LmETRhE%(W*kFWh8VafMi7A($qWG-fqm438 zj!}_d>;~RX2`6execbq#0URZaY2b$=gH8l7QuIB^LxQowIh{p84b9Y0!g<;%ysh$JEa4eQ zsu3&3c>$m&IQ0s}E63(%4(6Si0kGer^WpMQz=!vN;{`_zdCa*LPmkkg!@W`-|4rm0 zWRj<*JFfR$;~t&bKcV`Ukc=| z;B(FQ`DXe)yR&xlx!f}t@le3yD;PNN4he~LC`9dCi_i)ha@l_n#y>LyZ1e7-+agT+4p~H zJ+vNH6mHxTYtMRUE8O2zb~in=Z-_8C`DcuAYwihIkZoPl@rCp{GWk$VeKEIhPPsjYP!>2o3C=6$H2>!` z?>$5aHTU-BCj`Elpwzi@D1vbt@qytX-X-1ge~&k%4PPd{D@>J zRH*fvoSR&?A6xszK53UZZp~^}swCZc5jp_la65JEF*j6^N0Ja0t0f6~sjQyBH5_^> z7ylfj&1zr?B>zN9BV9RWjbB})E9iHGa~h*Lr=St^)*!tF&u1w#@S*17L*_*s`Ml6H zWeZ*B!9In2XkD)R7xd8VIM%|zPTunf^pi}HiKlszwk`68sL2|x3-lX>lwWaOnyqN5yDsAI*xzq}Y-g2>E$EJvaLGcCqb_p_ z#N5?EjjV`(VuuZFGIToz7_PJHh zzm1x83O3wmnAY;sUuW4l>)4LHQrC2vj(nSFUPh8xQpnel>AZdr(`@B2P5fsu^M61d ix~=89lq=30MgiBk#I6%KrWE6`EvMliyt!hXuKXKzghK`Z diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_hints.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoint_hints.cpython-310.pyc deleted file mode 100644 index 28535538c23a06dedb17021cef52bbe1ba076b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3645 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 GrT+lG+!bvA diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints.cpython-310.pyc deleted file mode 100644 index dc272b47f601838665b807b620bc1d47e0025185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7377 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 JzU-W+{0GkL0(1ZX diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_endpoints_list.cpython-310.pyc deleted file mode 100644 index 72224504a01cdf9d0c6efb373a5950d24a6ae718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6651 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_env_from_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_env_from_source.cpython-310.pyc deleted file mode 100644 index 5a72341a6b4aad1f0c7e012dae75a1db2ae90a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4934 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 aMQAwZM1^>Su4@Yx$U{T5%+dh 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ephemeral_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ephemeral_volume_source.cpython-310.pyc deleted file mode 100644 index 6b89fcae47e9b061301e268a2ff53631fb17eb20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3669 zcmcIn&2!tv6$cg|3BsgoH@0eD5;SQuVLBqCeplmq;&B{LryV9^X?$SYK_Ki>gbf1l z?otzRpp$g!spp=oqyCNl8926==G>VcI@7wpw;&Z+qTES4g|uJ5e!Ta4zxUoU?{<9) z&mZk4<3Fug)?a9F{&6w*7)9Mf#jTOWZO&4AWSf?am}#AngVssiX=Bu|t;ZI3dE?mP z4bePuMlH^^tzL8fcR#@MtJ$uQnb1P{W<1OTE>tX&LMM3^6f)mWxZuGDdm;=JlL6*OWwt`1L z{%Es4eP<$qeIXScosR>JAszML^Irx$k7rYn>8(JDR76T_Z1#Wfb0hOY3M1OqnIwzj zzdo_AMLhAp0&>={XII^ac{Wb=W>5;p#q|38<6!VHipo$43lLib@5pIeoN*_yM=n|y zZG+$DP2M`TM@`Y<9&aC8NA}1Q-m^CMmm_|ScaE)*&%1mL?KOU#-$2{pH~F{FcKKWU z7TPu5fN|EVZ$I69R7}Jakf%@c6q;}6GZ~Bd?}wl5JlYC&CW#8-G*T)+Cz|OzxMUzg z?aV-ZgVYl-{*M5eiJ#=KjSd7)w6Q{c)HKRwQJNmqn^m{>jbtG{Ceu)hX_0~;qj#Qe zeoi)28s@5ne@HWSmJ{Bp*S+>~7!%;jhx!cVA&UA5suIx8EZNf5k#)#QR$3uAj~ee$ zJ0(UlTiz{c|Q^Wj09CIEe4 z6vNWZP%K%rlvf!Z^^1eb3&SK!bQpdgvZx!VJl3@FhuUMl?Y^1^SD@ElE{$z0TRzmM zVyxCgr?j3~u!24R^JAfvA<|0JYF`JDuR88xtS}s<@U_H0+C}C9lz<`v@1PZ zQXdpz3nIOd%x99E+LBa8(?VnHTUTuw5)XcgqKH;aZ@zJrrYm)bY1Q(fJ{5y9r3=IP zCEx$L{l6jY*MZm|P((7Cu159$0r)q=dnm6#_a3X^CVW?6{s8X{=6?G%s*)FyxeSPZ zKqs*dZEd|o_;|)n>`$!U{o=RmkR3YODG_{**rBW4($$S4Cg0T!-K0c&Y?ba2JF;N_ zcF%g@=~n4-2Q&Jm`_elh!_@C-WgG7w=r&d&Z_vt@{)u&db?GkWmlV1h^Y@<^Zr6TO zhbpAwLP(tm#C-e*Jc;#ddXf7%DBCD%9hHU?avNv2OK5k34<)%I8&)lyhqV5bRjo;+ zBCVzDVg*v8{pAHLEAL(!O?P>8e}^_E`mI~@&8tYf*tvhtgim!JoqDx7;A(;2KNI*a zk}QP23E`c)MuodZ{4wq>Mge#D73pd=l%|LK63Ol&G)^ywFK^=8Z%`E3ykoDwa_!!= z%2COeRU7jqtx;8Xab*aJiK=St2~DU}exj00=_rdu<)+AMl{1YBc^!M1^DCEdtQuw) zqz(!IRZ|KzOLgU%E$pyr>__QLT$GFu|22ww7nRFyA?_mbA__CR^Dp0BTa22l^H0C& zvN@9L%8NmNf%zqH$ukVg37?wbFWHH8LL9T_{qr1CS|aP{WEiu?=5N12dQ80}{8^l%bO{1mL|}-0=Tlrc zzc7M)5kwhBzaI2#`5uX~N*?4pQY{Q8ONl)8rVLk4z7%`Oy$qmlqXYM{HQY_m$glU->TU zzh*>bnf*;}X|lx14_iKPJY8 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_event_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_event_source.cpython-310.pyc deleted file mode 100644 index d7e18469410d1b5b9181eb22bf66902938f8fdb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4143 zcmb_f&2Qtz6(@(3MA5SMBVO-1C|V)`(kiW`b&3|Pv0WtCY!*!crC2X|5SlPFXJpY! zk@9fl#sYn*jUIv?+H29n`sjb8_nrz6=&7fi1N2ZJNq=uB$(CiOizbvf-yd&&@Auw3 zrpwE&f#)yg)85fd!}u3fE z+q`mO@QSD&TiqIG+eWiG{Rq|!9brj?D!GO28O-s@hH z?gv}mG3oi4Md{0JSk!kWMX5p_14d|%o8cJ zXj?N$CflFy*is_wyPp9$qti5t} zyf6;3%tIjy#%>3{oLkbu5>7gn-PWhW)Jor&B6Brfb?? zjo0QdYfYzxCZ142NrS3Haq`Qb6OXF(@!k0Y&*TWHfBI0FUJWI!swq7s@ISU+7S7Utl91mDfWtrr zgLCM<8Ip@YcH|8lwaH2xwQnH9xCG`CG-)th_gebN6RUjlq!jH|vgvE~y=2!VMnLH*BCYE4ltdy}E?XtFeMIfAAeo~P(T;lc-Sa0DBIC$Z z#tYmjd+gMF*ZA-kzhy`4$Wpk4a(2v)Y-Q)RsvI-nWtaPd6-Gz{B zD5Q!6?s)t?9))V|T;!Q8yhIS~=@tAlH?em;$LUVdk(0M(ouZ~vpXQ&jqSgd?B^OH+R7S4k>80_%ip`?Y$X{{OK@6U5@vR>2d`{4WcN7z4snIEI!uTf9wSb zN4cytP5DC%y~;IGphE}p{XbxYmcwC-K}|Vi!Ap|aXi2_{0{Cbum`zrra1wF>#@wXz zIekH~3&tr&!i##|POAD|y0a%j1VMomp4dlh{N9-*J*+2bbq(KHdGQq$j2H3}F^a11 zi+$h!6r*);I-}rBCqYj1JeGKu7#^if57{N7T5m5VJ*(j!R!}n>INl(r9@x2F4k{-ItWJuA@NC}^;Zy9Zc zGjW55I_xT{8KP)FNmgDmR1@S!RJ~8hTa=v3txGy;Bc+fjW^^*guuWEF4l}D?B1h_0 z*bSJa>zZt-%$+6Yo?|<9qox(wbmUKI?Ix0fNg=<3Lic;;v3aYE&GAWm;d8V6)~J?T dDT#4~aB#ULKo7~!WhAf79M>@&)?lmFe*tU>2#){& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_eviction.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_eviction.cpython-310.pyc deleted file mode 100644 index cd3943e238c0110d6d768a49618a66fc6909dd0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6382 zcmeHLOKcm*8QxtkUn@#}#!jmohtdCiOL7~;wwm)*4CKLj6iSeDmU7O$_woR@eD^c9ovG4SF==Oa3R@xW|yCY>UUTZeDeA(%5G`y(WjM70eih_7tSs5)8 ziMnlHvcu@HyJp{b_wChm_j?^~Z*vjT*3qUdQKhXu{QgHai@bi9hjPspJm7B3S5_O} zdSB5zqC%0jmQga=ezIdja<5~32F_`%x}Gdvi^5HRtB*rrJCB<4zalCh;EVr)glk~2 zM(k}Dsv0v`0Uwz9OS5gV5-YO`tEyU&U1AHY_C#-&c$qD-r6<~+-mdVfg8s*3T|IU_91DL z2r_9m6x;9e&1Z634ZI#f(9-72mrA7RR$VvjyFsv%E|wHxDcUFQuU?0ACBLKK7q@Ho zSMO{*T^gH3zze6i`44Jws}$6eCeC4bk7%g*~KN zd5CeSy*V^cs|+z7wZ^c3T6KtdsC{>6qGmCD9oh^L8G|<`BC=O(*X~9j9%{MihrqZW zj&-6{Ul2rXaz2PWH*mIH5j$QU)k)3CGwg&j!?B{HSXOm1o-Hz;w7=_zu8f2rEfB<& z3CHTC#Ef~cIj>JtG4wzaCy@QK+w4SL-rVZ@o`^gyrQdw?Ufjg;pefv1=|wDVZu4-v z8TcE`-j3`<;X94hx0|sq`AX0A9=TgQZa&H^RMQK5Sb(PD2d1t%e1zmiZzriZjvxBc zaaOT;d=W{-DCzj8DN0nYP_8~pH@_I1nXtMsp6}_HJN{9bK0?Ij#E7BxP=l0o_it#v z#bvA@o#S$9xS&Y6rRUi?vcAx&5kN=cO;;NM9Kw#h4)40zl7jaHkHG_Fv#8mHp;QXe zu-CbuiFVwH`T?^61XLx=r5A05{vcZodqj%p0OmZF0F;Caa07eW4f_0>Sd!UYcLx(m z@$7z>TR{zp8}`SM;F!1>O)LN`e*^Mu_)!zqzuSi_c2EkX@Hb#mMBHS2n+K5Y)`}~< z4utH9;22PLHqIush01 zQQLto$N?i;LZ)DxCMT&%%5W3k=cII{>fl^X!Z{i|>K^~7OrOFJt*z|BNYmZF0z>P^ z#8B!XiOR20^HovPbA{W@&|&k#DVH&&P#AD!(2ty!SMp3P3I&aPC4EaxZqQq`#p zmUCoJ6Lh5Zh;x_^?|6_Y%=E;09I+-!vzE$!dQK|->9%?6%y2g42RM=<;3$T)#Cb(> ziU#FHXV5@xTVu9Z)n}o>{ZroOkn27Mv6*~s(|8K-$mGERr}iFZe&kcAi6ZX1H`ec= zHMPKK!Iad+OoqY(jJ*wc3OE8T(vh1Y>Z(joK+m8DiT^}A(@W*|49&$tt z`Ti z$KFE$Va8ri+b)6QMI_I%7K2}8zGEETAIDr|_F~FwJjV*N$j@Klvc=&n7U>}KoCV#> zeng$iNTx#cF%{2JgTc=-Co!Hf@92l!!+3Nm(s6Cx+%FgF+%vbtD>%?tzI4jj2$R}= zO6_?3nU*ib667r?j*NeT#MgFpsXfIl^P#b?U)MhQ-VcpkW49o2w;URK#;z&Np(%@d zhPWt;vP3UKPqd-AXYA>SL5(Zg)ar(KNo1(YTCj58=(;^|0c)xK6O&k%6xAyAq6$fp61;prkcp|5(4C~H?sv145tDyK zlwCw(8fOhl$K@H9XhX04$1;~jwUSZ$w^cHY!RfzoP>YE|!eJscC}I zdx+lg9WEvn1u`{4CMZ3B6OW${)ZP!&&G|t}$b-5r-oem$29BO8=roS=hcOWqW6I8r z`w!VUQWeEELK0L(mr#|sObw*Bpm7 z8TFJM2anMZ5t)MaBIypjaBznd?iAXR%E;{Ps3(J@6yxy=Y$U~=yrZQERT%j;b-YK( z8YPnhsFJ!sk!UC)jBg^TXr^wIjEVsbH1yKHCMBzEya3&_EZtZ@UPX>_zFx5^=PPE# ztd*6x>lJa8_M}I%#1LFuMxlLS^61t`V|Tph=U&UxXU9@{El6QAhiDk#l!aHx_{9|R Ong;gALtM=`Tlg<>+M{Lw diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exec_action.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exec_action.cpython-310.pyc deleted file mode 100644 index 888bdd7065e82a24312583a9773fa3a61f555c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4146 zcmeHK&2QVt6(=c5qGZ`gcAX%(wA0;f9PP$ZyxUL14K~eYgQ9@8NP-;H1`N#^S+psV znHhQ`K|a~1o_g*nKKftcwWmE7=%GNH{@ze>qQY2o)r z`^n(>Rm=JlH5Pv^8ebx*Eo9v4TioVOZ1-(bI(^5Km3{?fC3Z*Ee$}=fTioT z?Xc3XbLXkmu1)^ZWcd9$-xe|vTBxRJ_fp1%3T2e(C{0)<)BT7G&hG4pM94s+x;PFcKfbq7 zp8jko*uId8j!p+mqe(|S_|2~vPs4m961~Z!h((~p`bOvTpBv0G6b9PnDU#Xo?@sJ! z5e}Q*L2_2FZ5PWA(_|3s9%x#T{OW?7oZAL0RRi zyvl1wcE2X-yw1HN>(K6d!rN`|#=OOweCf#QH+hRMqg>)E{0hnzzsj$nT;?C}4^ggg z7s|O_w4QG~dM&~SAz_>RzW2?uN1N=~Fj6dx1Em-$L9SDFK`SJxQ>}E2c%F#Czm$rZ z_*DvpXeM~1jp)mxMnRGXaXc?MmS)5f4m5R?%}}Ne{(e zv+gh*iSAAwg)$9=)=_uwXR3=0!2e`tJxjUj?u%r<8%NvSY^;ZA@6r7&=k?vrZ)^(eTG*_1>F7?yWU^V?MJL3oTuQiRaKm<`}U7WX28%M@h1v({Z} zlcvkj**0s64Wd}6vC?AHfnmHufrTm>W%1bHSmSpY*o;nMw#<_`s(`7Xh~v9VrA*5J zl!u`OaoJ0gw9Ji46d+93?lPgnHv2YB)--atheK1AD*;l@HX5fnO9W_XM3BW%7-^sY z9b=Z}uqYff40JiY!ydf`E~NvVE0X>_!lSbr=m?MbS@L}8Sg}6JSvv|GbNLL>9;BMI1`(|F*9=GA!y{pmc%C%bri-*%B(?6 zvZkLRDKf`eW3qbYuo+cC8l3;APRTHpo~5JLEWe*W+CGYe!e zn!Aqwf~N0dX-_VJN^PekDY5c0rv4KBhN;cw8ShCi0Fm5q@(-v))`6|9H+Z3Ton!ke z>%}jA=Nvc(6T|IQiD;^*?+CbTEsJKP=#dDLP!ujX$)Yj}GI<4inez*mgjZC}E{IOZR~9uXR37WX zHCxzzQQZ&XT%1QnV(uZSkC3^}Djt12`v?IXyY=^`yE1FloYvo(HP<=kV`qZCAW^ab z!)Fpo$>lfBv2{#rvL~HIHsSH3=UIvjfDx>i2zefm8>%5-s%05w>7t(D@g4=b6nhJs zpSw>{10-xYz>wj_iZl7}JU1|Y0WtB&Af`wR{IrOlzHNz;AgrSM`2Ox3hUZ)eq{Z^^sqp}SQ# z%4>VFLtFg-S>Z?_S5fJI|6R=ADPw+o6)${omLDv&k{2ZjE&&ABTFT=-IW$Ggb{((j L;ZvaHtXBR3XMj(e diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exempt_priority_level_configuration.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_exempt_priority_level_configuration.cpython-310.pyc deleted file mode 100644 index 43281f1c54fff42bf6227c65aed1411b676ca47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6876 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_external_documentation.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_external_documentation.cpython-310.pyc deleted file mode 100644 index 2d745c0d1f6b25fe922e9225ab8d3e02b838a319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4087 zcmb_f&5zs06(@%jMRB!jJ8^7pS|mga1XYujyh&TM3)e^xf1oX(q_)w6+JND5Ml0GB zDGx^rugdMAyXc{4fu4FOdhqtPmmd1(@S0Q30eUFVB)>P5wDPXy7)H3uHy@mN^FDs> z%~Q6z>KSO#bWncz!kB7BUq|D=XLHLnmtF5Wpon4Xcc9M9zGul&wEPcPdd99PjN^Fe6 z=wY}c^3KC~M0cVjM#OZqdf2)dh$(7G^M_4 zdZzvL#9v~__KZPfV)N{wKE34BFUjYH@xXvX%*lW52$gH}EEuo~dSG_hA*Yjuh9l*% zEh*Gkri6X*R0h*&FM775+8c>2A0VEeacoK#Dxje(t({hpCJhPJl$O6F#5nHc z>M|V`^o?lk?4drr+E#RehV%@;|GxJ!_VTK{sx=ygG8``2=DRc2SzC4GIcU&gm8o>d z6Ua~5>o%sey}ZU!*vK_vWKRAy2Ml8DI|9l}aMI{l4v+>ZiL3hzJP7>1ruhpXlkY79 z2P9ew3i%4QBA5Mr4uuzy|11Qst8)E|Y(EuobM>F)@{3x&%H^c*=@6m0-_rc6AWu1* z0774N^8Xt;v9WI|;|Y@b19oKIG(P?L@7O-uw-l~{f*r7ZTiJ!JY6ncdrD_VPp0h)v zun*XQiMV0cjYqDk7dE%BqFvZe+#`yoYMypBF#n-yV5eQ}eBvD$i@OV4E!Fyhu8`W~ z?Yla~R7tD4GEg3kgjBJ>EsKAj$B}wUFUoxu-g|g;R#nJ=+{D?90@@wnLqYkFb<4WS z0@{Df%K9M8L#3pA4ckzvn2%3cvUIN};c%OWH&S9uS>uv1*<1#yDd+ZeeU0Te(5ZIo z1C|T?HuzQoucPRJ&=(-QwXRiI*W&k4OKJt|?iZx1W+-)!?hwds<8m6F5?`+4+Zb<7 zK5v?rzP8QQ3Mz*9aoNCnNqh2gby~s>fe^?+8U!DZMz4(_DpVBuYDpb5&Zya3n8- zmp;F=$&O`Bb7|Ey9!p1xe4MD#)-24RtnG%$Se%xOEZ!%{-U6}NMds19hl`Mz&96Lr zZ8~yT^Z%Y>v&oy^V)HY`r7}mOoYGo_@F(oZI3kRhllCIUaQEQeN4-0O?6}DFWj(8l zH2_;y>5N8LrONuKpUGjUDi1s(1C?^nN6W}u~$Y*|-a`dY~%are6>9aB-l^mp65d3i_k;|S}UQ~KgYh+@|V`d(z^U`4whxQ=qjD`xi6`%lWihT z-@_z&DuUpz^l1}hIVh@yEvwt@w$79L(r}2Kr56N1<2a#yGYIIs>6dyyl_va5zUi$} z=*8P(B?5}qRm_#{G==Wz`l)ns)V(k-<%J5#8b0sR@EVc#h@5Dkd%FB0M^W(Rq@!!t zCUcm}Oy?`Kpk9rgLm)RilX+F^dhQk1cI{?eJGte`pAhdBNXev--$$qS=1Dc(uBvJL mv|aewSp7V3D*RMnd4_OE*Oh^8P-e_YUYp^3(`8L|(fS7NJPnlq diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_fc_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_fc_volume_source.cpython-310.pyc deleted file mode 100644 index 848c4e73c56c5a2d664150b893e2762b2746bdec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7125 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 NrAi3_;(6zA?q9lFK!pGR diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flex_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flex_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 8d0cae1004b67ead515c7864920747567d6c9fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7468 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 uZqVxp0Cjm4ki5SBeVF}u^# zKd-xAzkc8A*H78fl5gSpxqZ3&r{^u}&s3OwTom5ME6*cgR@-7Wa}v94>#x&x^taS5 z;af`FUb$Vit@kbFvhrPvm3d{e)UGn;idC-+|KHiAoio<{vRc;8fJB3M(ZFPEFm)mW_!RvMkG*USu&%CbaG z3TMZ|WTGAfF9&IMD_RaNy#C5LGyByw9;|aAY3i&SC=_X`cfR{Uz_QMu$5XW&2%hjr z^0Vg}U;T#WdCY}oZMooNJpFXWhT@$y|5HfLYSrz0>D?^t#;XG?3e$C{diJTH@HSrg z7bM(*h%FLtyHvB7gTE39l~q12w_R3c9;-2*E$DKYonlLD-(9<1;Z?Su9k^?4+HH?} zH)`x)QL3^->?z&ia~~~-i&B+6&5r1n1-^imXNppl9c9OK%OYPy%dy{`Uy+_#R{@*;nvA#1^3x_59Gaa~BhS`&yPj z*jKWF=X~SPrhP#WLt5k(2>4(LiOvHl3i2Ds-ZuH|H|%K5d>K?R(} zN^iWGsu!h$C`mTVV0lR@G2F-Ejyi?hnE**WcUPcd?IYLDeJATg$)%MWyrVEJ7d-9o zdO5E!5ksr;YFCD8qtEkdrnOtbmdhL3y%sO5ncja zyJqMxeydYO)8wJNgZEv$@`p%96=n}CQB~Hab*D0_jI0naMG7rK3Wy?gbz0Ub=uuN0 zQRLBij ztizRxn>XK(O-uyCl&+rbXG}KNdAif0tw-|hC(Pc78?DH+zZ1vja3-F3O3|PB%V{T@n=%XA@3obzP{~# zK74Nbel#Xyb!?0?c_>dWsnSEz#gTQx!j{^@zrN3v)aWq#V2mW-IA`d2_LVIDxF7>{?}{zrh@NFZ$Xq5sYimGt zbz3ZA^$%=u5FfqmCV7gAB$#jEeMmZ6sSS_Kk%3uJhbSfw<>}QpJ%J1f_XcJf0iD3> zqJnkbw0~r490GR`d};W}mE8;89A&hC|G238k%)TZVgFr$Z4PBne>k(KZ@6==U=*_Ks+fwG5?rI7p_8tF=q2sDMai-`ow_kk7~qxwBLJ3& z0^B{|H8P-&9D8`H-5^Rgc88TopS>SokNT#?Sq9kbgWTrAhCIw6HSP$TF*{e=ro)*h!$7IdQoKG!KCY(Si@B&_$W>i za>_b5k#N8ijgov{95Ha@&9&`AI;`aG^quC@_n$AYs=|PbT{gOX&FcAn67am^fjs@6 zQKQ!L=jR*`1v^jD^yu{Lu~2k-+$yH(PULi#`=8higO6eb1|dc9aSM99U4LX(TH*!B zePY=4jcbcxr@D`6Z+3%>;jas?YkJN50<2EA;*rb4p2pg$jq{@bv-){}mN`#9$@lmL zUPS>IQUuWw=@h;qVHS20Ii3;zL~FORGX#>Oh)y@FSg z>L^?rnT@$?BdqQ|8b)+OcUpN>Wg+!{;N;b{NJdHtaU4AmakOu5k!9|kPomxmi{APz z4NPix#2TKNqjuv#8|QUsM!toN>8Quvnb(sAug4I!1iuHtcj=hs{+Q;xi)gUs-EDnJ z%hUr3oeNL|+b&L{-WJZq%V_%@UVU9#w2yr5+Vus5=i=LW4fJ$^^<=&@4#MiNo6M`L zT#-O>KbCPSRfPCl?k2HRd8rrm#Y-4a&!4*_!n~|Ush9PwF|PNauvc9Em z<&1>=8{&*E_pWo;@oj`(5RP%|#ee$lzHzDIEPm!!TxaezWi0M(a;5mY)@}0Tj9%Y! z?pyasv+QAGR+h!>VN}3(AHGq<>03}(aSPPhgKu0#EH|d88X9lnWF$s9{E16mg zG9BgxTHzY;TZj=~d{7dniDw#J3-W;pH{@l|bFoEF@=6%;TVeP|Q0pL@@3{7X`BF8M zdtOFKFXMEf9Xl;UhreklSH;(94R28L=s8VXr#uWlp{8#lnX3hcre103r~VXe83p>n zF!#d{HgAwnelZMbwsA`}4DlNa_VyHpZ7&hX;+28oAtCcH>T+*vCpUELEw7O03AxS* zhEHBh$CYY)XoBxen&HJ!jE5T>2NAsZBco diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flocker_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flocker_volume_source.cpython-310.pyc deleted file mode 100644 index e61283a1e807dfb534be9ec709fe41c7c8f72fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4666 zcmd5=&2JmW72lm*lB*Rd+llR1Mv^WZASm04v|O}k1=md)$3|L!DJ&-kqU~n2GZa@^ z?ozX}LPSuPO6Vczp}iJ8SVtZD5AC(5oCEYwphNENW5KZ$>0n> z>#wY9lVEkJ!dH2XJI7|XDr$U*yT`_n*>!}ov&5HYwHmMUhVF5Ni=LHfjbG!}kB#m! zzrkNYUgxj!o5&md7Qc;rg}=t{Aiu_|P~F|)*2n8l;xyb9^5ZmyR5sIGhGO(t=fmgk zZ+Or9QRanlkYyeUL9SBoitI zj3eXF8e3z-2mV2!9#Hgx+GDikro20*T4jtr)ZQ91)T-Rvgyle#Z1iBRD7`f=@CGRt zF|45%C4g3xOrh9m)+8}h+<^{)*xwIi=7;COR5bhx=RT|IgEx3Y7B+~IK&4Vvu$HWX zH0{F9MBF=Tku@}*8gd!gKS%9;IuPycJPKtR3Z1+ zt35nW{WSSuYyEyZi=@9B8T6!LQCkVZB^h@1MCNtc&F6;N}Kc>|#WYW3D0c?4Sz&WJqG zbYu_iZeo63)=%>oE>U;@Kn71aS%ZtA6rpyPbKD%Uv>}DcWkTjUTUuMm%N>!HqO>8^ z!BA}A7*ZQ4wVj&MfmD&vt)f9xk~&ohc65z=L0GOXjqc4C>EzU!wUCBR6P4-H+M^A$ zrA_QA_&GGV`7Jb9-UGz_WMi$X{}-JN0~rjaoN1B#*YtN)eI0oXQf;zQd)iBoAGoB# zr)bhDblruV6In2!fHc=7zY%(h{5?!8L-IMNCc_U#!oix7NrFivqU1kK9jSSxV9H^P@B|#1LW(hh1gnXEfS#} z^cviqXCvR>Kv!(!f2Dwn@Fz|$!v7oaeo48dDxi#c@V}|WRKlO6f7ydk+wZ9TRgeqd zCu5;r@=e*FKqBMNRK^R$0z2%)d~E#oXTM>G?9ft(9>(m59oots+p2QJretJogh4U~D23tIMBxzyt>bH$id;WzmS-162M?cvk z6ee?N`NizMjoy;oRYcHW`36|GR`mf^HS;|@Of>s;=W{x#=2z+xMI7MVMkF)1#JpTZ z-vPdiG+sAve`TA^Wdxwnr^OP+OPZ4vjmdk!C!}RXZ5y{dWKy_M7A2Vql28MWeB(N|EKUDr~)k=@*s#AkM{Q&PX6T#MwO%o84qC1xW~- zm|6eQwO1y!Dy#p?t=eq##($Lf712^;tPxJ`y+rp5c4C|mzRXeUJiZVXAVkE|31LYF z@2lTD(-265uW1$4;Si%#Q5zz}83d}7{~TXfQ~?4k`FlDWp=E`QUSG&N23}#ECTZ3w zKml|Of-ac8^8~@wCz_23iPE7@~%4+mX0Dlnc*d)43k7stycqLtEJ#Q;jeJ|bG5h0@1KnhRn;W_l=)RG?7 zleD@P=V^JJ7Zr>b@)BT*s_%nL=; vbN1kBl@BibcjVlE9?G|5wZu*dlsU}7MVA74ME)=%er@Ksj_I&EyJ`I!x?IU7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_distinguisher_method.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_distinguisher_method.cpython-310.pyc deleted file mode 100644 index e61695cb276257ceb707062e9f79bd935155355c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3829 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_flow_schema_list.cpython-310.pyc deleted file mode 100644 index 8952f05dc5c12ad92597c484dfa2a64f5bcb3033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6715 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_for_zone.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_for_zone.cpython-310.pyc deleted file mode 100644 index d948c807a01fcde05d4307c3e114de1d1ceafeaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3438 zcmbtX&u<&Y72aPYmn%}1UB|UA?I3B~FpbElL5fyzjTnhz1O@28HWGknyISrH#g&%3 z>zSbt5!9v9si&TMvX1%_dg-Zu#a?^Lxj+vETK9XiBqd8u4WvuW@0mAmzW2R1qrBY? zEPQ{qpN#(6wyeKXHQRb*agWzd zEM61!V|UQt&Qq&XpZzmn_c057XncaCGGxL6#1_FjaGMr)xSQAm52b^$ z#&7Z(ub2d*BOyugROs77zH^i8Tm#i?>m(@pXO;Ws7g{>nPj&2LA!d zb?(79Z+-h!M)mQ5@pjUO%E$!rI$q$QMyXYeoO!@KdL)OpCYOEk<9_s)RGNt9a~4v z+?iV;IEozo$lW>R9=CB=XLfgWShmR`Hp#h2!NO6J!K6vHq(Hw@le9^BJI&)L4G$uz z!uX;Q%UVbZ0?mXdJV~-h=Tef_bllQYA|08AtfS}5l1&u*t4~L&Vg*{HRXJ z0QEL11k|1_TXPT*)NE;Z@3H*{+fWe!6Ck>?zdU^dh*g{-RsTQOibzHiBjbBPcNMw* z?1L||gD6cnLp~J@q+>gzD6EQ7B| z$U`aNKV*@PQ(1(3>2+p#fPO`M+-UmX@hhCIp__(`DgJ~?VjbDqdVv_Q=bYM~S-<=B zZ=ECO$kpx~k>l7o^0YVibnV!YZ|j<_)2()5&Anq74CZp~S!GK{9S*@8%q*JH^19eADTd4V{Oy{>&*G<48qXOSz5}xQFa-F5y}F_tI!G z)tU+-!Tf0@H8+g zd;M?ebVi^wwQFcXTMt2Ra!Fx%17p8OG6ZPZw_bX7XARdx@=e*qd`W9m*$`oLoRdm_gD6iLCv zb398vKXc_BQkA3|*v_gbRn{9uI5Lf!0YxJO?C?AGp5QZStG^Khg z3~7VKNFxmKeunXW2uXuB`AjmLY7vs7tHZf&s#5U) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_gce_persistent_disk_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_gce_persistent_disk_volume_source.cpython-310.pyc deleted file mode 100644 index 319db4a0e6ef839e91f482f8727015428f857c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7944 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index b11ad12fbc7c863e16c7d44fdea20315e1bfe4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7506 zcmds6%WoUU8Q)zl$t5NE9mmeg8yj`Q)FLCdZX3mMW7x7`6rl~<@PTN$T5^Wc+RI&f zW~f92jRKW{0s#u-SQI^2KrRM)>$Qg-dMMEUV1XWro^lS*L(w+Yg|ZLI&QlPMOy0OjcYE8TfGjC)S@eR$bHG@ z7piC9)_WfALT_y`+sSbG@rqT&TdU>Iz&WE{F_XDVanuf0dLRnRwWxaX$)oTdUilX! z+yILWVs9f?GMJ_Ra?Jjn-2iJ@ffbpfOL=yZmD$Wgvr*thHp}K78XIQA;m+L>+n1G! zY(G1oTgtqQmV;TT$PTf?x@CsXpyfzbDzX>YQQb1jXVLQFsKk!3;}4C-9D9kqjPE}7 z3VRjb{p>Y%0^bA7Wv}CVkd+|zQ_1Uh7OsXpskms%8^mg4BXuVZ!QESNPqcXd_Krf(9WTd_zj8SXl$Lb5RL75cei*K& zlO;K+L}E9gLlrwI@rZTfAW||poMpYp?{L}mTRgG5zFJL6g8R&iqi|gmAiKt)tZRML zQ#jP%P{-@&S8q|r(L;F)?@t7j~43JMa2#CuTf^iME3X`W{3h z`>0oD1Z_Gw7RD_<^wxYKz1F0LCuJ{VL~>-DpWt8K(+n(o83&Eew?6DyZ;PbCv)mGyUudVcgmWW$isi1c6$Fhd$0VUDOd^cvY zw#K8iS{O8I-F3AZN8hh5yj7Ed;`0#jJ%5GE+Pw_1YOOGU?$$If zFKN=}q*eptt^sMAK120YuB2A{Oe`tp!Ps_QZyI_Mo{#6kG=!g{3YW|THNJxOC_f0L zo8f?~;%*$qE9+JF{aA3QRXZNrF#pK!bVDwykXAK_YbifvEn{}==F-K>?=Mw5>{JVy z17Z0j%$w4ZT zNG{|3oGhnM>VI!%zK_@`TQp|$P@Y~b=#$8hpzoSub^xFNbj&Kaj1BXbrUnK829zM@ z{~Sti>#Hb1>NJVYY+D4?|EFT_`oiywcl!M0|Frn){e^4MnjZ$tMcU(T8%LGpj9JTP z+zwo!c0*0>F4yCTFIQ}hTFKEAT|9~N58xDY=z~I1zC$xD2?01H-KtorZjmxgQ?To( z*T#RK1URv_1qgANCNurNO@)RrN`bqn;38}`8OE#6gY8!6lr5EL&#?jxAehc`NpP542oTg9vW zV7a^_M7=u+QFLT{_I+oVq^B9`$@pNBo;6%*{Q42$t5KFoWcsmWjzlmG0_bX@s8K_} z>75~fwz;j%i=&tdXN|LymcB>A#-^~4U0CDTGAfr*@Nly&rCT#&~jgPbPz9+ z_>NIRQXW|z33lrNf$Dxi^~aIyXm_7X+Ff=>dk)4ox(K_g9LN6;gD|9%Qj6{jeBzog zv_^PvoR&Ip)f5i;5D_25WPCPHS8f*Sz)Ajh*)Tm8)7q^RSv)kMA%b2fX`5#Z(b2e-bsxUTc8ck7C_Z3NUcDR%ucqFPTVbnXO-pu$E3tFwg=L2-gV;FTo(S@Y-@wpp1$ zz%%$LDWSihF*2DO#<4v**vX{0g5VAKlavFAi<$BxihG8L;wHI{-xV(A((5NSaWu*6 zSt@z0nMpx#iAz{w>nThx$?I$J)}0aWKgBC)i?(&dDpMQ`@i5Dr{cqXcH!Kyb+5eOa zw$-ofn)^?&nSRmGnol5_YW*W?)7T`vGyBy^y+d3FVM4f?E~r4tN+HX=)j<-$e;-{8RXER-Ug{R2sn0y z0uFjh%dU^B?Q*)mWdx>vfUeWr2E`|dNYDEddg#45*6w1E>9D7q2brPX9SIg@XeyYY zEK(Q>dj-1(CZ+f2haqdi*aadcLECM{bi!}moDM;TsEz_;dkcAvNPixb8N?+Eo$YcIN~R? z=2;|(CAjzwGK~}CKz=n1wc%I8iC^T>pEC-n-la-5Wz%p6DGM(U-bxCr*p^dvOvjqF Hj^zFaDHuNQ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_glusterfs_volume_source.cpython-310.pyc deleted file mode 100644 index 0fb26b11effd55e067010b711cf3a26441d8c23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5933 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_group_version_for_discovery.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_group_version_for_discovery.cpython-310.pyc deleted file mode 100644 index e1102fecee309ca3500dd78fb03538c74a7e604b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4880 zcmd5=&2Qtz6(@(3L~|vtH`zGrpluij2%o^lS5LxHCKy`f~wpJ}#5QQ92N_q?y)dvBCC z8oq_+&-TO3zrJi)f1}3q2wPtab zR}L*+5!C~yTjT7J)vOM`@&i1d4mO0$gciy-?M@zWp<{?k<<7Ki(F>u8@k3&Nl;%CLQ(R&p!!x9uImV(<^}#sfd(VT5i4jGeh&33Pak; z2_@s>Pfu)V5pVlnKyp^6X%~%;@@zBN8h|Mr7gP82e6{>r!c3NC#9%9&gFwd#W^ImH~f9) zv&X9|!Q<^j1#ucF6`&FgbRJyLAc^%vgDoSlntUZ z-77aM9HnKG6^$(-HXJLqsEsS#y6GP?A*+ycCngJ@JXB|RKfgyo}zVo+ifr8}asGGZvJ+=jr|@F!ObELaMnpqF!z!tghf3|5q66RYbqYmz7^ z?xcAfrQvQQRTxj(O)(pu<<6V%3GG2CGU+8*q;n}N*vBy0bPHFBbn~=F)-ZN#$s73m z{WtCHyeHaQgCv%DEVNGAPk*Y~*b0ctwwC%iSM6Pq?Y7foqut-r+j;iG*7Du9O0-z& zNAc5WOQ`nK6JWRFGy!nhhDj`4K1*@9nahw!HTKi$?-gDcCRw7xa0&FNITRkN+V~rn zzCC>NYJs*Ut7980ClA%>C0%|=svcQ87Ib4rucLcSXl2akj4VqR0Q0@(u*5ZSRUDLfc6DT_Ka$*@-Neo2;Eof*D;jkwOpH>L%XhwAhi z1uddN3fi${eFTUBbaf4{cVPe4Ht+(}pgbq~E|mA^g_T!2ed6$cqON`h6+&_?g#sr za8>wEXtz}<;aSKwnyj=9<7LQ?oHLMBbQ#>u&3LxYuEeICrOoVUbsCjpAiRK8pP2Au zi?dLi^iG2haer}wyjB^<-~tf8RJ1F`v4;Fv31*GZvXKfRP4&|R-ZI-Vlh&pJWb5BT z@PrtXczi3bLl#WW71*62b=*ABiP4ThF8RSn)K5NkxOfe2$FyCESa}OO0FUoa3^WF%kbL11h3^LNAS)jOUN2B-XyIt>?&ScG!{q!20F;zhL`p-_gi@M(lv?yV@POx^lqeqONG< zJDeR_BliHV8jhOXvz~dnHgdUx8Lg4~+&i*P`f241`aje&Sm~B4pZiDF^y(4iQ)ZtL zx%|rTt%oM+mGCPQC)^VHLTU=I5&i?7#QF?huu99pOUAC|QD}r0ZsY8k5x6_Tz=*N| z)+uT_M>Z1cV^-9*BNb^aKTZ!O?j0);*KY zsr#su8<;b$runTCnir7%gYH|P-&rtREEo+rk=1W?mipKad6OzHIqP8V838wH9m1IgsSu6@SO_VO2 zUeuSbVlQ)k;gTqeirJ-EF(IO;N}&d+E?l#P9TpW6na)#2LQjb@N(NkZoB6hHyGR3> zUH{s5XUDB7tN+8Vy6jr_H5U5?`BH{&Y@MP`Y3I+`k#$6tW)EA_mWF(YT)Px~kPr87 z!eAMZM47)goub z$rf2MD8GX%S+H(sSvOhcdP&$iGPxgM>SfV@(r)4|41b3ihA5AHL!w>IzYrA&YKE-u zp#rGc8cC-BLnOw zX?G*o<1*(cDwr?iIr}N9VJM!3AzhzM;^8ybp1WSk<%$<($1&`D|HNvpV#i!uiKWMq zZaA_<#o3&RsLws<=m#z>2#WNq{l4kVR7MyAspl&rFuOK>B#X&Ee!F4 z1{6*j>NW_8$;Lp7kl@=uU*V0N>YmB(i>ks+5JDz5QChXJqj#uzmx_0(IAy}rOp-zB zA}lLn)3aQgRhh@^>eu+9^ee0ZT>HK~`FaiSj^}!Ay=GM1^d#NAWfMigq>$f1rThBn t{jyc2sQAri>i3lL+FUKIs5F^Nh=T(!1$3Vrr6PJ==J}rOu{yi${0oQP9B2Rl diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_grpc_action.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_grpc_action.cpython-310.pyc deleted file mode 100644 index a6edf1960cc7dd792601832fb9aac10cda730d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4635 zcmd^D&2QVt6(>iOL^HCJY(AQF(T3OpL9~sfxQi66n+BU^lQbxx4dP%ALJOMWj4j3# z$;^z5SWtkX4p5-&q3E&bAwK3`;;}vLp{E7*P@ud0y`dz_vc0=qpr_L2<9zYWoA=)D zy+>us%btbnulCce7w=fsKd3W*Ip}o`mOTxPp57u>(G zEm9#vjb?Ap|2P+En8*I3axjyAU+Y}0x7*vX?hkvdC>yl1a*@umL`^%Z6E>M_`u-36 zGwtS5)ZFTR-W1nZya3E5>?n{w~P>I#G){lN_WS&T2 zL|dOpGTHuc$CegR-}@ArvpP+?SiYa7Tk-Y~hr)Id4bNW{bUwtb{sbZ{sMsR)b}LI3 zXS~9lzp*aV%4?=o<=^ElUwUnKYog9Qe&)5cZ+BhcK40RES+CBQ`HGqGgol~4(;h#^ z&%d_1XZSn(0-gJr!GDt249kqYUQKzTmMohAFoigy}F$lD(2y zQHfJsRFsxYRycVkbx~JB?#7XjHRw^+K{^q+@${lL!+jsO`US`s&O5|PZS7mHD&xx7 z3gF(L&^{<;L7g$t>KJ1~TV5M8^lIGR03e_tHfqjm$Y1qCe~@vJz_+*J6pj+7Q^)Ew z>yq{_t|VC$Cc$nfRS?a)Mo|sSN!(y^6xbyuhz#O1)R{ayS<@*TC6cYf5$S^UTT3?Z z_*dTUX9LmR9>$T(BB6EM-ua1YgB7rpZm;GUSM6Pq?zWS-*UtBJKTAJot=(#?Sc}y> zjCR6pq1rn$$hM;-1|-_%YK^rAN1WTwx^lw<3;1y$Rle?Agg8IK?>m9T{a9$|SB)+zctp*Pau z05NEa_iZ?~KT&kc@04?cq0)X&kl83E$S~a&{+bUL|MBhHAKY%8#(!N3J(MYdL-^lV zJd%vAb*cAqv5sA}K>&?4ZMlTgzqREVJd9mSvP@l4%+GLtMjlmL8l69)1ri{lndwDs zx{dF@hXyJ2xh)%GcswxB(2TQv`**hSc6dG%UK#y;_*)=jhJuOj{&zswD1#(L zZgTK69Ed3(ru^XSc@jo55E!8RQiO@_-|vfP=c#xx6oAPMCB!TV&ZT1t4Q)euN!Du* zLZyXlBdxakhRJF~To8v^1KtFp9#j5>JoqPNt6W6!RxJ2UBOwB5I84X}{ctyib+Bw2 zTu~s9aNi7-)8m6|5x@cL&8KgWmNb|J)LIeGBC_rxg#&Y98>&~T~D%g zfN@2E)$@*Ew~8TxwTZWXMkBUf+1h%8TH-l7us^bX^YdS`SL{_qqv{y5efG-H&e+k_ zeJ0=2RgDURv)9(x*+*1{Pp~`I3s=|24zFNEYwWyn56D-_ae8wJ*-QnpGkQY^)w_s4~Z*Rjoep_%v<a=t5uz zWzk?kW_bm3Bitr_H|)z_I(G96O49gcv4r)K-ciN!No!FuQu7W;Mw#AW7nw)Z z7pgI4H@@(kl}WG08vpic4qJ#*6Gb1>DAmu#pI6W*efbSLunx$Z>``mpn*bz)cYHtP z5Eyl%NsiMrV_dCSDQbC+RjAu@)kaapdLb9QqNoLdco77D#A;Jld(5%VEo!n{^Q{k1F$Z{m<_o7Cz&Mi9^@lbL!D zpa_8(zXxvJWx`P08)^{{@W`nPcM<^iOnqI{6h57xNE7`DRHb+PkXmgbYeWu90Mjz% zIhllFhiZYimSeLTbD3TH0#8t{%2t3#&$HQb`E<{?S6s(+8g*mNrYmm~?;9WmlS00W xM)%s`2U)8uK=Jd(+)oST=Vh(*l+rCu5Dvk%RM1@taf((r%=KK`Wes+*@*nVLoe2N{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler.cpython-310.pyc deleted file mode 100644 index 41cbfcebaa9eb1f60cebb711a9c438db266b7cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7506 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 J^@?#U_a9k-2+jZi diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_horizontal_pod_autoscaler_list.cpython-310.pyc deleted file mode 100644 index 55c544dbdd6b76bb7c2ee18c25da5e9f07bf51fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7195 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 QVOyng371?m){)$Q0NsItu>b%7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_alias.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_alias.cpython-310.pyc deleted file mode 100644 index e6966ea911defca92c388ad4a4a1defbeedf0a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4076 zcmbtX&2JmW72lm*lFJn(f60!O7VRQIgRregD@BV|aE%!GaMA)yU>iNKO*c!e5kXxlp@*P{_FD8{9d++N(Ep&P9`@Q(&H;KT(4@aND^fHip-w&0zWJVc^WN`$ zFk4;qEtEgo4+oo9E$g4uSu8F(Z{t&ULAcemxXoE&cWqO%E;F^$bx=ErJF0Xmw)Mc` zF0UL}ydtWHPPfL{Bdb}R{L2qeemU+5nF=kGZ~C1q;6n9foa;DCgIs2NF&8{|b4R2? zMjFlDe(+H)(kPFE2jyTUgQ3>B+HSXZVm%!9TK#O)&dNnP%Mvx~Y@QyI$z~9|9;DgR zXghfC$9J~M+aC`_uqULVtFu9%(WR^IfBa#x+>(K6c!rQI$#=KYKt9;GO_`=7`m06Ep<=2j^ z?h3!oZ=i1Qb$%1|D!;{FLA}Or^9|HjcnzxiRsY@OT)j zpr1ra1!zQLodxGqMsl31tYu{PPz?U3$jribGiXZ(g2&qErMzksrQ;|`_RGU2^(0pM z*GkJz3J0{wiuw?YrqM{Kg2lP4K$x-$(&-bHXNB4f-#hr!FF>Y1@Ys?yZ5>(%&eWM& zAutXK6@X$E)SY5%Y|B@t)T>M}hu-T`hF+E1k6;}T7n{7fAg*9Dh=NhZMFN};;uN5X z(;3J*&6*@OirY!nkCJdNk}B*k!ldxSvj;h0oI^)3nae0nBb~{!2R7ZpRU#RjjmR2~ zKC$Eqs()wgVKx%&opIckSzl-!x1an}wQ&^eD&5)4Gp^cuBHe2zaj%{4>tUAusI_&c ztzs=U^QiwM+7YV#WNyCgeiFkx+U9N8x@8y*Bf>~4-!Hr{jMG?$;U=zEw?I5rwee>t zwLROn-LEI>3({)MHuY_6m=$W%N80+5lsUC_ElAp){NsVp%D`hTrP7W8$;D$YvVHPK zglYqpU;v*&<{$O4JrR8PaS(AXg;K4{wr)$I$1){D5WzRPoi3)bE%kmbwu3o_4en{? z#FieOiHh8_QD8|L)Fn)lKmL-SQ>{;KF1~cmNuOqCh1&EP3DTJc!85%6{n3j_vGke5 z;LFG@k7P7Dli14$@G|*zi+_{2L+c z3`w&9LmCPOaUuekkKBJTfW6qQq#7zSWWgmaVyaFuK$t&=D6*+XG=2?avbKn)IKLD~ z@;X+--TieApG&wr!_7-bql8VImw374rX^!7r2%=AKv@(=N3I+0ONfvFmd%XDeoNyw zK%N5#0g7f#^!Othv2|c;>lvcLE<3j0wLbazZ`c7la5Un`lpV4ISG!YJR}PtcO;asdSEI{6TJ&3#ns)aEl8Jeg|z>K6}4fcBCVyoiEYSp?9Y}YS$KDoXw>7;JxK?XAG&2tzPE_7)6-gaO&nDB z&^X;ehhEO)8<;Jb+(4EDMz4WkXTz|)VOSm@`7}(soiFHphD&K$6qCTOivTxTVp(or zZXcf_JvZ!IU%Pg51vy6iSy9J&NqbbWdYbcvgfCUpc7!HL6n?DYROu+~i^3)MUO1yD zm#^R~bAREI?23vxrCBi;EUE}M<3ty(Il>N$%3hR=#WH6kkX_>JH4vArGoQjJ0xPo{ zU-|CZX|Ku}|M9CXo7}iS&gTS5`H(>~xw{g{&)BhbOjxoftwk)sh>$NJDbB$!JebL5 zXTHqo)my=DW)9Ey?l4>YF3qvHrA<#8WsND!dy5n@F7KZq-1|5

C}L*y+YXIz_>NxeuRWPpm^ zFZ8W;yJf&q8YYJnMbWa8v}rcJv_$%`RTq}(F7~5F8uU927EpsE=t0#C*@Z^Um`=?>keht_Bvq zZ|pn6pW2r7Ej5-u7mat3)OBRs8d%)sEVBo;DcOLT(iu1?oy;9K1`XS~X>pe~jx62~ z-k~#Sa(371c+($(5Z^y0+d}3-3l*4lzX-WdiA+nK7I|38VlU-_hp+F5T*z3Xy1gHM zT8ca_)9_~9S;%mtb*Z*`y`5B#CfnVl825^Lk}ir&%^Mr1VhY&_!XTVtKYG!)enk%nC?t)C~TKd_wwhU@h+0ekqHYBTLkaGX<3|cC$$GIN`|t* zFY^ZXj_iRan!L&VBkRx}_`=_9@z%V>1HN)(4FcZgt0-6a8oz+D%`fsxC|CJ&{CSjX z+=X#osQk}1KPi;Hb$j|%|I>RPZH4znsS1-URw_g#p6DVxXAy#FVUezZ=8hQtS47Oj z4+|JWhk~ctz+P`Pj`K;JW&5?Tilt@cC@uR5p)>!e&X7JpQh!A@15Oi5HnnwV9k3aj zSrG_|9R0|h8CnxtuFt6Da{Df5j8n7etMgNb8(|!d3obISahT>XZJN)i(C;)P?N?pR ziX_gWy;!O!SvF?nL}>|3QzG&>&0}3iNxsu@Dp!eYXd2Q(&xs{lD1OX(qhc(2JCih# zMIy9Ld-wmYdJq7f=Q|r^!BuZhQ>hjkWt`lPcZBNQU$|2* z$x_g@XHJ2oo6!gcg7Q&w9brc6~-6md zbb@CI*pfm|WKK*K;s3BRZA#yk)cd8_3PCGFMCv=SWfMn2;iE7Hsxyj?#&&;0MG*X92 z>8HW-KKczjLGT1?8t5mo7(~8CCAAK0Z9Rk|?y_V1L+kT*{>cv5fuo%n-1v|kxZ0h$ zx^c+lHQmr2-7iPh%spg>Hqd0(tp~nt&Rp(bMt9~u^p6SUx}R3I(EpxpVI{&Pt$Y|9 zTg$6w?tK1?ffmS4~|+wEl!u%~7mkt)*PU3fu_xmuIl7{Oegf-sbU*&qy$F>54VIw&2^T zsP1(Wh|~>K>gh(}vo(Beq2W3%6KHt}+B)k-=XIm+5O=iE*zJEuhcg1Dsa-%5%DRX< z<1_lo=P>p;k|HCw?JJL5yR(9joqk!hFkjLdRjr<0jSApMhb#3IcMb|QcN;kxkiK?RgJwkn~1ZT5yX8Ybq$%zE+fbx z%pv44yZuYxuAR0#*8Vy0TsFOU7UXki688;{Np#KOhwRuoCKlP#?lOxITM)zXa44ZH zg0i{s=MM}+F4jx=F?LSdMI0i~ zz)6cZ2|cfVjK|X#X6G-$IOnL>jgBo}p}n7`0Im-@OBC(SRq)vp7e+mLE*O%F7|32k z1ukN1xQJ@f?F*Fv-pr=_K0OfGk|W9qLi#Y=F7zlYws%E>3nrE#6c6w^`1r(;>!c}3 zH=v!=(Wz=+zL4k8iz4wLigL{Uo@g2{*S@%nU_JhSEAJTP-&olHS<0K|4jtg0B!85D zq>SDIbw>9^k&khe&+(+=XpHF%qoZ?5NeW9y&Xj)|8%4oMR>!) za({rJ!78~+x;@b%A|G3!-Tc!yw{Nbv%2RlT06*e)&4pK~)}f5v4NJ-zwMk=RgcndT ze&$=Q%{BU^X!MvIewecULw@?Tnw8rBG1usRHm&^RX$1|tRE<3*h{*EPV diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_path_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_host_path_volume_source.cpython-310.pyc deleted file mode 100644 index 3f4dcda5eb411df454e3779aa4ab3dd0bd04872e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4814 zcmds5&2JmW72lm*lB*RZD~Y4nX%i0|APrNCw3-%ZRo6%wf7A%V1eW0gkz%#t45hV} zyY$RZi3sXa87R>9Q1n>zU>$wzzq8k#at@F~fhPUESy7^8F?C&_D7wVHotd4F_w{@4 zE%Swi(82X*_ipd6FFVfPs55=}=)8|xUjq?N#}TezsoQbwlXaMVdL0i>FZKJCPQ`U@ zJHi*0M~Vem(3AXMus-v$%j_af0rc{|UQirzR&bg4ftCE39@{A8uzMBXs_&ZxN zlPWf7Ztn3<1~Q8W3BO$q=8A6{Gtg_T)>dM+hnvlA-f!jQB$MZ zTRZ0D==hTpn?`oG!!MyZr`>Rig%9(rmuw9o6priC@bu-O^FD6<2N3B%#SW>r0U3E@2~zU*XGmMY~RmQsAWALs;(UU zuKmfqn``{ucA|MVjkV@z#6y$wXRJpmJ+@xcs`0Mu{Y&lHi8pc>&TuIbV@*^Z)sM4b zoThu_W`(DXYOul|fXTu)djqK|(4?w@w7cZUlZ)C6_lLOkFG0p|-=U*w#yN2Iy|FiT zA~-lG^bd-+p#GR>WsI?*t1gWhdR5`B0}{{?8@+e7j`#|Xc|R92g`fA53{I0|6DMmo zYKk~1E~I%kPNUse>8LyHCPgK(0#zcC2nI?BEBz#kO|DJ^Z1{z*W!gI#Q8n!Q#8LBj z{C(Wo&ik^pHB7oH?@D8m*3M6L3tItH+1AP+7rM18v)xvjY_BPvD zLEPPmx1?_E9AmfDO%q_FWd+01)o2_3VOfoKt%pR~x=3@dR|HX%WQmEQ74V|Zg9NPV z;&(&?H+21PN0-i4U~{s%>tf~PqBh-R!>`E1W9NYbJGk){hHp!wt*4OgN?^k=XY7Ag zT%bsGvQ~1DDA|R^_c#ItMF|qO$?udQ!_Fkn=X$T7CfUvv4p03&NmJg-(=`9wE}<73 z(4gf?#;HA^$v@7OgiG}D6D*wQxtZiG1R~vnQ*`CPz-HhA#%PsV)^8Cb_WU!V8%eRI zq#3G=Kq{w1dTw>l9(1iKa=37ce33$O#}xWO1QS-8>G68E4)9{#>VJP$v4`0CN~7}=a(=4S8@CT@{pg?bry~R;5pLxIU=WYPb$Ah z<4YhjF-#22#xO+(i`AoC8NV@&)#nlB1grlm<|x5N+>~H@9w|;`n$jRJNx92(WNj-{ ztgtXe7?QYn;a@U>>kT_lEQ9Uwp>)*}i8`>WtX| z+xLw>_D$u0smrEfP}T_c$QkOu$|8a0g1}(>FT5wAM<+=1wD9v3A}q3tppb>_dR?kS^oX@mn5p) zP}vq0O<>(eIo3bLy?PDrM!0Qsth>wK`fg($<#6&vF^Bnz*63p4=<~$Zk-DgDNkd90 z!bB&THZjVJ!cP-z3a=jz)T@*83!l_jRO~K|iVf05RY{G|SNL`dH!3PNC7kAr6uv{8 zQ4;src@|Qohsuw+^>0Fd@u*j2^?!s_pN-!9Zk0cyTPozOk5kMq{rfRHbPmbG+);Dd z!vHQ6x~RJbU>%jKO+u4TKI?uBuc!_Nm}QFE0P(&bo6-PhM8%>CFTj=uBpmt6A{)Ii zn|aK9hId+Jd8gzD?{&y~!S#h(HmwpL8$8YgQmkca1I1PYQ_l+0RAG~3QS@8PunYz4 zJL>6j?lbY4pk-Nl6AeJiHGr0`QGEplq1drYbca6Y*%W{kih-oZH*>1BHy@x-26|D{ z%7^$qyY<9Vw4b8gtwNuanZBrCzEr1trl>}dd>BQ)$81~Ihs<}EW^1>c{lcPnR+M*- zJ!O_C_Vbg(xurq6<9lfbV5xxRo*&G@f5mXm2Rs=`EbI+FDMOEV?56ZQfgJ4+t&b!oV z61hs`L;%~eRXdr9z^`dq;P@`9vVghOZ}0>SD{K)M4nvnMl+R#3xDfb(U$0pcHv;uz z+WQ9}1yfSJjz;Iw)F(|@5aJ)3seePtui$FwJ*BIh!5jj0si5l=6gBbdvmgxIfYsS~ F@1OtE^iTi* diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_get_action.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_get_action.cpython-310.pyc deleted file mode 100644 index d3662187e665c035752ae9ec0e9b4f191fb830ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6869 zcmd5>&yO2P74B}g?RJly-#eM?hD~n*Ar6VXLzHD1vQb7!HVFuClnIeAtU5ienwd`Q zZl}6Do3R`YOioXv$D>KQyU zO}mw?XHDap!EBa&Y_KfPZD#6uW-S@zT=yTYhwFQtWiBEvdE%;kE%q2s8X|1VFpj*o zh}T2LnRjZHM_dFFuge?W2W=h&?a;fX3uED}N!d;os@2s{u633xjkr~fbt4(a&18@{ z+aD$tWzRd|Me&1R!Ml3??Row6+iTog=OUp`$19#hmOiz3^M=RbMyJIix!?)jcKFhw&imde5tmk;1?O}T#8=Gd`;m*AR z+c(VR*?x9F)wtY6&B0+V&knKIRLu;ZLCx$imuH9BoT@4EB5IBdb9weUdqdTfcnLK} z2RZf?_U2=wzK0!S9-e#ITkJTV``8KgRXq2zud$PO9$+&d#i?}fo%!pxZ{NJeHe(t!R@OH-tDz8@fyt_Nj$s+9T|HQgrHR#5~8A3<`!Rh>4K<+S7LBMdYpw)t-AhH zD~LKlv$>%MOEZZS-2=@qkw4O6UgrVh;=?o-FW=)0S~g0)5->ENPw3-@K*$xo2lr>&5Gfdf6zYf6R%uqHXpfS753M?;IMJh=(?e_IPWLS23O)2fZoZd6&h6PqXL{(3 zviEvfL&Oa(WmvucZc@dEU}&P%v+bBA)pZ`NSDWE-wY?$N;^hyX#SNkhkKbRg&5xLNUj7XIcPi1vYc!A6Aqj3$Cm7zK(cti= z;OG*G6?YRZ;Qa24s=N925UcGC?jD-@cAO-a=pj`qPEHtG65(ZB?EY?OUtcKk76HEi zKAK;wV5ESVrY1juD8;HVLSm5GeS@s9hw_YS$d9(XNj}SJY|Y z^rpLWPYpG}EO-VofI|pg)pYX~tf{xmX}?$YGl*8XH&2{==luC|=h2RaAG8W0@5W+n z(O~r|LP9uxr=Fy(^EV1Lxm}uVlQF49Ye`q|2b7oVJM`S%FyIEI+8zj4?c%- z%nebL7PB_ZpPI@|fI|*nEfaX7_Vk4dwngLr&n4<>2w>@J$g3=qwzy-fRO_C(5v>Q! zkaFTD@IY^y)y5&xPhmHy0*dmUPcsT$PxH@bfv+W419 zy`>&s27H>_S_Dn+mx!~QE#OU{G$0|NHtrl#*>9+PVhhNkl$c3JkmMIgLgSGsjVA~J z+_RpVSBwwe`?2-NdX$kk`1h<$>ya((o-MPRmN+i65}^ZTJvMswCM*-|l6Ap&;K+Q> zW*M}o^z0|jQ##h@a_U(?`JybKCqh)z^NIV^810SVLce{FEL^sG@|HTw>C>nVBjBXi z=0b)X;U4^ZENsXLwaQ>ROEfP!J4jelX5!n09%lCx6+JrZTD3GUW1spzv(o%pkOWc+ zaSS~Wg)<+HA(=WCnn7!s1s8u$1JmJc*65bUso5W~azTYOl8boJz0|z zS%nYN0@@4elcc47RMICSnxuI|BM6Pu4HG(V2T_BkHaW9trWLfsTNqG%KeY+JG^<7_ zXVoDs%?Y01pr6`m2-8oq%Jhy)Mo9mbB%=+_whmb?g)k7zu*~9rTzgMHm$Qohc5}AX zJv;^L2~a5-tyoPSq-OLJ>#6aSIAwM#qnv_4BEyJd8DvIOMp^lR2VEPc$oH$R4XZVZ3yc38AUE5}KSg5Y-@}LfpCc)rLg^-1UNp zVe?Yb+=c&f9!mAF^M?w3LPG`ja1suh??20k(yC9V&@WTLEOvT}7OCsA7Q<`qgG+E^1aPutiHnQIq5r634Jj zD`zV;A#^3S~!J!sy~0lGGAhkSVMm x+X|Rgv@eF=Zbp6=QGsJYdzj|a)=CVehsD-_UL+%#Q2fre9M?hMv}hg5{1;~;ygC2? diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_header.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_header.cpython-310.pyc deleted file mode 100644 index 964826216046e14855bf2b8fa81cc016fc0e5a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4368 zcmd5<&2JmW72lm*lFKzE%eJgoMbQpYzz9=|v|6NS1=mQBI8IQ232Y$;BI#$1TVCCsj^AJ}U3x)sH}g({+R^Sn76N`(<5bzh2kF*Gv6DrCV{G zr;hMNW#17MS>5xxHNl=c&Fc7HA;mk-)`ImqOBs;8BuBR08ea{eQp zQ|HihMS)O`B!P zVEB1|WnG^XYfBZeC~6|uce_}T;x@hwaYxMKJ0tFj1$<}48{!_mH$@eu`(DxbZ26b7; znym1%cp!_)cASo+sz8CN3exEjey0zW8Q%Bt>Yss3fZCCxYR1`fcD;!=aU$Rv6lw=W zFQ`8uTA47=s&JtWHg29)2VdebALK%&0P;qX0ToF$MNy|&Q?zDrFU@;#8g0i)N4?WH zC@PVay^1~v4-+Kh4TB_$O|DM%()0^o%XH(UMb*Ig&`~$=`S-Bh&j+%-IZApe?@42l z_KTnEHdw)JvdyJoE_8caX4~yFS#J+_Oh3Fc_q3i`)A2nQW2X<5=_R9l zO*Wf2TMm@$#vIL0rP0>*q@vP60ktz+FY{`OGvwK&uzVwtso=z-Rf6_6Nt*I?$$N2@ zX9?_*jA6CWkb=O-3`gbx*ExFO^DtNvXU5Lfd^&NI!4EV7jo@)9pe6y2lyj9xD@vM? z%E)u1W%!+TM4O>!MVXzUT;Tw`bq{K5x+;Lq4qZiI+#;bQ4XTnKtl<5c5Lm5`Z=F#b z>7z$I(}&9RT2s7<0-0jVRgDR}0)Emk2t#}B?_BE<@D7;Ci|@ir&%fPFWw<4o{~rxA zj8#0aCV5@sT(nJR{NUpZKAi||J)3Xf)LJ90uRY*{kp`v^-GIWiPM*oNrf>bZSSbB2 z(l`YvBqYKf7e)9Pg@-3fAt;c|o2<0C4R#a)&Kdp*nyf?3)dM$VS2~@VC1&pU@5jDY zN^4KU*LJp&$0Y|YA>fQ3eD~F8Dm_;?LY;JQ^H>p9CDsinsywH5ic#a+XPm&Uex(;E zq(s2@_;1Gmzed_?5PrQjO7Ph+CHk&eVUL`bfvHV=;bBB;;=c+Goa1(ySx5VOrjD6@IrCL` z;GCX4p>y2wnNZxSjPF0Q!MKdxk9BN}Qg<-}d7%5{IZYP9qck3@i}l=qLNTtpfPNpC@7Z_&!VXl33&c5bEiJ73WTEkk8Xv_%N) zBSjdTlUXgI@3(k08M@&v{MUDzH;|4cUlw(YS2RZ#Ge=2rL;%%AZBrUjMG+=C$+U^H zo-F({(WdYQ@ld@1UUvP$C*>6t%cWVdp{}SZsYj_Pe9OX(Y>szcE>dzza?uIqvw0S} zq3a_rVQ%A_(4Rf3RaxUdVby2j`ODONL7$X6S~OF%ERp<*9XJPsC3oC9jU}AVNVsrm z7(!fRP&Rx|FBcYQO|Pg9hZtpw+7PG0AU37aFNt176_y9fecBQsW0sBYoEI7W7bK>! zR$@9VfKG?d30d!bNXL*}eT~PNK)I|Smv|dPFAJfR>(PFq==T_5#R%Ai?5-SfA()cG zSV4Y(0vyIQa2Q>q^Z{Z)i4<3%Vq-Q*Nn7k|!H{JvV)xuW!j7Qo&eBE?*-5|M1XL z9Q+hgE@lu^bMNy3+`7(;=YGn__kooT1c}5ddiuhZ!?=g2ygRzy(|MiCG;N~zq4B3k6Arxr!H z(87#lh3*V_P_jNUG9tH|L0b_Vg})t}Hx^ZmO9T{2?p>nOqT|O@Z4+50a*}wQoVR2W z@6Qqh`(74AeWs`z?@yDXG4XLidL! tSCdwmBH_+|>ONgwv#KRhN?2SX971iWpvM&8H01|A3&Ow+ScA=b{{x~!KjZ)a diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_path.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_path.cpython-310.pyc deleted file mode 100644 index ba10a709efe7650b181de5e672ad88db9b6e47e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7208 zcmeHM&5s*N74L4h?RIA-ne1k>$%fr64btv9o3WD(pzJ6FLN*D*$83}gIar{cwyQkT zNxR#rE>AL+b73M591s^S2%!Wdq=2|^=O5`Sr#-L40cnBXt8#lj>@Z|Ga7kNT)m>fn z>eYL{_v+PiIzR7QxPEQl?)qjHojX>&GW@&GaD9K!7BUe^WWIi1O&J$iM@D@Wr3vfH zbSvV5vkx{zB4nuW*xqKJ_C*r*BX-j?rjl(c)z6lj&5cNH4%&@Q+H0n!lSyF z(Z`zSF&CP(33&rDAC#UKZE3~)w-R}UrUp2v@yVv;t9tMU2CTa_Q>$MhFp z`1rCgd8_i{{5AdMh&X~TuNQCp1b^d+)tcic`J1Tc`6+%H^-=y7KZE)h{|bK_^#b>x z*mv{ecQ1T*ZSB@dvLQv5-3ry_@aLW-hJ(5Pa9M@s9?Ow|jMK^Vu|hFELi?u9XH-w8YSMZ)t^rewX8SKH%vw-284 z8kK?C?h9Fl3S&P_B|9Mm)iqNR+Y75J$6U#$O>R1D4{}> zun&~zgR(rLvNFP#fi2m{!CQ4yLg{fE0(FLsDS@&j7P4N-MGR}{MhT!7B?VMh>orNt zpYp7^C6cXX9JQPMZMB&u7aJGO zH?v5Ir9QL}ZiuXTf8rXNoj8K&HT8-y^g=-99)K1hOtaqTZ(~(xic}CZ!9{iwh38ak z{7i}3!<%mp-b9(b_vf~pL#0(@ilg*O(ES$fj386- zhNq_&FlMboJ&KE->DHoI!~==u9;O%p=Rp3Pa=5c&|J2s#2HqjI((w0p{(G_c#wF_| z_Cp!=3K9LU@;XFZtHb6>vK7V=XDA1Pb+Nsyk7claj`aqa(r%_L*!pUki1oUw;h� zFby*7Sg<-!(5^lA?-HHsQo@=@6LrUELc0~Rm;>rqK~qL>Tkt&FcU}ldxj@A1@UOt= z1dn9SF9AjkAryKT;M)sTXA|xu+z6ut3#BcvAQ>j`GT2#Rci03U3`C|H?Aky|*k-)V z;B-6a0#BnbmUT9vw2s1V%HUAofYXPd+m&h0_~tZ$3!tqpjM*Yhv51MJBHlyxquW1V zAqI|}8@Bx0H?FaZA7A=LgWW=3FiL7@iw(^55PLqxyx)AEg$XadAa)QLW?&CDMZyLd zaZN+Xdz&Ffy^Gf$fz3q*Eic}ZnDEhJr$~U0M!gUZTW+5d+yY}S1f2i9yj}UX8+tAzpm-HRlsyO0! z3HKn())*ytg%v981`Xk{H_>he7HOSDs51op#0`xy z6U2g!0Mr?00P`4TQPyBr_jdqg@_V2`{*$pdg0q5Si^H~v(Vp!3)yeeKlU!IP2t$ax zi0atQ>Tnr!wAl29WLChUE)zJgY_q=Zk`#O`J&ZDl+N=;0_Y0Y_2}z>RV5_MTU?x;V zidaB&jtF|Zy73uEPlm;WEE}}pxJW*%ptx@UR#vb~gU->WfPoa1BVZ+^u@6K8YHxPa zwAl`2u_!>MXhQSw9BU60#E)hgYep6w@V!n-Ug`A>pBi6x`l1tcqs}s0nTfkw;KvXe zt9Q_6IDjy{>J<}8UZb-~;{ahCSpZEX1%#x1JvJst!l+5??kSLn9CxEtbK2bye`9CF zGzO5=LnGM0g{*wWbfFYlijf3nF*Y0Y`zdxt(Aqa{#sL<~*&kMt7GBb>i3VLoV7Ygv zLM(ZNT+ghXijD_8`bd%Y@XYLeO7rr<%}Tz8q4iRD7OrXE7IoMX_U}`#oDpHYFydFv zNNKZq<&6Fx&S*Cv(l)#s6&+^MFA*9IarD*at-U9@kY6jpD{^HA z!z*fggxj3VYEvgOI?Yj7c8&V{5=CS^ww3i1*`0gNGy4{w-BVczfTMs-{MJB0)9*vRv)O$vOylJPAHMCzu4 z$fy1@Ywu{}oyPq~6#AEk@7>lJ2NRZ<{1Gy&$Z)9$JFVW=c+^o-p<@ZlxkKwB*RF8Z z=Qif9jj+0B_%NcRh_jkkRT|Lv=T2VT46{%vDc{5hWIOFg2jrQ1m*cS4=HZoJ5Mesq zoV11?PVX9HnvKgko0VO`gBhnuznIncCaj)D#uV%x2iv97n)%b3@h%e4nss;eGfMMl zf>J-7!YjCTk&x;gU|gQTw_oAbK$x>n{>!!NN03B}9_2Okmoz5J=g0Y94f8CoZcrGk zWbQ{eiDoKHIwE%|F3d~4urE&+^XD!}FfVH=^|HxQ3o1UO6RIxE1T{30zX2!4kinitQR zol7*`rotRDBhAe_cz_w%3TBj5>0A!pAkL9Z<$d~t#Mxu45?LsO=k1hIJMDX-gWMwp ziO9i(@r~ytN&1#VU5oL#$uH$)^cV5~Nb*V$hzCLN2lUoCP2X|tg_$xn9l!J{N_rJ% zC(wA&Ds;-8R8%)1~gN;;J7fZ6#q3gK|Fz0J}j< z&vQXQQ;ok=g8={QK&=ckTk~XH5e^JS$%~Ra5&FX8}fA^KEAiwU7FUsl9pc zl;?WxTve;O?#W9u&xa^-M+!-xYQ4LgHE)=7B>oHA^FNdMXP{zGWFRwxQ8;HKu`A>a SGs+vgj^}%}=gc`LO8*Aut=<^` diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_rule_value.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_http_ingress_rule_value.cpython-310.pyc deleted file mode 100644 index f50d51e4b6209d8b4e8c2cec780a2731ba8527ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3758 zcmcIn&2JmW72lm*lFJn(+o_}4K$~onHVD&-v>LQ%1=om?IIdBEHf+HG*e0vx&X8Pb zxl7Lsg@~Xol}>=G^e^qTr<@D)P@r{wZzZZ#jRxmG7lV&b)NNGU>RR09EVa9~X<3(<*6BKEozxvwx)s~HZ*iAbjxAmh z)gz}{g#b1n&k}{w&%G?)~D{ zW_kPePz3uzD!MxF2O2}V>h7Zl0ng*fNMw2|kRlb45*wSXpa0tMJmc@H3PX-eRh3jIPKL0rwe1xJhRKkLaEmCjSsau?JC$YOOT86g5 zuk#A89^2ijsPP*2j;$lR>j`hS&g+X2_xZ}P)%AIUucBSyYy1k@2EWR$p`byun#Hi z%swrnsK=uJAN6B4ev-p9IuJb3#t7wAqbQq1X?jo+D=Oni57qShX`=M+U*Y!=7C!I9 zq{78VeTMQeiuwT649c8XvZk#g>yXXZ%nISfs48|q-w4__gFrjB4Eh=Nhh zMGB|wCmB2-$rc{dX;viNSlmeSI7-9)NUAVCZ}XxW8WEuVgj{}AHV6O_*>Vtlt_R6kdphM2F!| z!Ha63@>tcz54F#xZ(pvc*5Xuba*+eM1F%Npsk;u4eEhD-mg`UWaa3JP{ zOtkpc>=9@5ZApDF7F)p*7dBX+eN9`Eeok#!Lu34)tm-r*fB7YfB6q9Sr$1PtBO`K5 zn-(ASsTd2qgAQ3>*OrYLumE&4G(yag{YTrN0Z|>+aUurmJo&GzQ$|;kExN%X}Si+-SrY~p+a6G zTqWEjfWm)D7`rDWA^;h?$x36BbuY8{UCb-mc(v{Udaodh;sq@kyZ#xS#5%OK^&By6 zmz~(3SfBsq5A2W~I@*~b5+1QbSGzM;SB{u`M^|)}^7yeebB|zs*q+_Co_V@9bGd^Z zt(p7WJF(8@>0}-AcXb^nk(TJ>bN|FTe|qLF_Rq+RD%1BK8xWNkFM}wu{a8qy2*8yP z%ad5YA{Rvq2jvNhT1TbfvE0Vp^%JX-#g>?CQ>+fz6Rc%n?{10 zhWkEVMuva4^A(9|2ujn#Ym8WT5yMBXaWAi7?F$s+4Gnw!g=;rg3P&Yh7Io~GbVe1c z^9M;t?yZX2Kxk4*;U_A|l#a4k6fOm#!a+ckR~GjdE~&Ao7%IqV6oHB=Qo|(Gg=

  • IH{-f z@8|5qIw23Ur>*lIrnE#xL!2Ljb)-83y2T^UxF1q(bv(u{UDU<^^C;4#0aif#HOY!9 zyZ|HzSTg>y#-=}9&OCNr;QcJ_QdWoeTI9Xp`o^awju0O^L6mXC6vNaGlEAyf$z|*y zEt6znxVK=)`=(@E?!Ax-2wFy+Z=nNd*&5JNH46J+5Q?4IRPWIPo}B}*oQNRl2fbVm zgS@wkBn$LP5g?~V>8GcTyg_^ub)(SJGO`sF>=*KaX2VcC3&R|{|4uQ?XRdv9xpvFl z|FbBL5#@t3Pgy34d5)4e+wvzQ2Z8w#&NC5)`?S^v~9fugGLFobRifTh>` zn0oJ1MX%p;tdsjm^Nt_`y@_Jb>RGPMs;=k0a4YT$-(@R6uJ7C4s&~V~bfabr+Vo_L z2>b|D!K9Ga(doYZ@^#rN(;fbio%^>_K8&lSuau5q*mzkHLkP>IKJHKmG>=V}dA?_R Jtii53Ujx5j$f5uM diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress.cpython-310.pyc deleted file mode 100644 index b78d4b1861244a7987f250ba493f3d5fed66234c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6848 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 TJYh^hscB$+Bt~n-iNe1Dh&}o7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_backend.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_backend.cpython-310.pyc deleted file mode 100644 index f1cb0b1b0ea8daca47bd5cdd80b4e93f8976cc6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4092 zcmbtX&u<&Y72cg)lFKzE%ZcMiG1@E=APC)xv|0pc1=mQL*hbodZY&`Ow#8<-GZfb* zcj=j-5D`=lmC!@c0zDT!Shwobp8Ch^wWpi|^iZHlzc))#v_!>jyVAV*{pP(l-+S|z zt*rPKzCYQIy7$&B>mSrv{9JV2M^Se`xYf3}%~{`W+ooo1W@@MHpmzH1pwuqe)&q;X zymV~wk|-ZJ?Fwf*R=qs_ryt<^>8K-QDzs3(>9?|g3l+;`sFN%WhBDhvxZuINdmzqM#Cg{Pz+`==xIGv+s)=)qI;uGBhCiRtXQP8tgmLB%_*Bq)`Q^fAkCge z+rho}Zf_N*@AgEnFQlTQvu>c#rK3Lh`Nsjz;?Y2)dOMJ!FCry2w;JF3p^$%?j)tV3twOso(t0g4*~#Vn{h!Pv-_Z%n9HnqUsSwu&BU(eIv($THZUT9QJ;zjU*g4McNql*BTNh1N;)$q!T$ ztl*F7-sUjls<|)H{boPuG=~Sem!;otY~60EM2pQK;1cZ#)qFB{`)1rv;8sneAGU6V zU_;OfI|a5H!-L!lF`DQw+=LA328hSXHvSBywrBgc`}KI^yzLsZow1Ewvya+T=mNha z^(NM13&yv{e}5pfGT55gtOx{v^99!DBZz@01+{G{^hl=U4+7z$K-Ek0ArACyOAQ!r z0ftV z-co)MUX516NJfLXRsLTay}XH9auq7nSz#gL*`(7sGu_9KF_T}t6ftsz7}?{$&9O3d zs+Ydv1#>Jy<-cWPVDcPNreS&Kx!AUd5|32AI@jA+z+i-;+$S`Sci$SXUjX}5wo3sb zuVEje*I(wac%e2IQ8C?8fZ~Pw&-vfn8Z%6MvoTuoRU>hM2U7pM+tAoAX#5qB=g>ei z6gJEQ@JBQf>(JKLGX(a>?8N@a`qhtq$qw0}qwy3>*bzH)wL5Wj>4?diaG>#3(J6PG(!(U`c;yc6=aVw`qXG5&$BVy9c|eCD56i@PUyUW)Y-dPYj) zcOID_R0Ol)^*}Z?6jCPwZ!`V_p2Ye&y(lI+C_5-7%xXkNZsY9g1lpZoVnT6}wepJ2 zLfU`I@=7mKk=9aP$2Md(_UGp;nR|Eo(V)YlyD2fIm~z7!-@1UYDa*zk^OUK(XcXHF z=gTF12Mh~IH;^1b+G~*7*)Xzi7`eO1IgR9Q>kCrSFqEeC8oChL#rrfkC%0V3+z3U{ zW!LN*U%PhwO75uS^Sp}nlJ=;4Wt!@R1U!{j_Jk&L^p(tgw*iSv??sk@0CM zkgGd+c{s!>omYn4Ob#Mln0`qJ%F7T5EPqXE5k^+o_$*zU=0c5P%>}7v@06kd2dr9z zRmi)3A3qL0GZK6jL@7tR=+td_3rm;9LP|GCr!f4@OcakTc{FFMF2qD~A!EXCqXA&r z8ZM+Nl;1%#7;|D1eL_Ek*n*?VkqDA*(8+W!$V}o2FO?z?Pm$l=KXv4rBr$O}Mm#Ov zvb==#LY_lNUJgU?Gz@=>)h5O9nQN~tvuLsIe^$aVO5B>`;xZ*n;!cX}%I}f}l*%oU zITc~}2b#JKvgH25kXF>4R;yKCqnk>j0S0nE41u^&pW3xBq=Tk2l`zDQH(b`Yz_GnT zewB1aT7=|`HH_unG%y~ROerrbvZ?NY12?H_>Rnd6q3VifkFb lZx?<$7Wsd~g2F<90zULs^w2}mOMn2q_E7A#r)gz3rR~S>#hPxOTGWY8!k(NUWdnO*%dtEzT}Hb zjqkjxc^-11SzFFI87{xOVngwu?R*Z&87p-&oxhUA>)}QZo5FGdRgeFQAl}0#KSRO| zh}a@{{C`4Q$o?XRZ`cb9I&8-h!DCGw^0|7_*fovX|4opvbQfNES6{GLkO zDUFjFa*a2%=x_7&10}9Ievm-f%H=FnTCLeq9Y5~*QM8p!mKLNEt=iqCTWj}upg!cv zZynvs?rN6@bvvDd@p(f-N$m$=%+g8+-I=fa)RySfa?s^&W=f(26^b$?6(lPG(W4)g zEqqt-Nr7ZgWM&WDm9cF+Dh`SR!-IPvh4zucwUF96MNgDV1GM){;SPu@56}YY`mDEN&CgcpR z;5rl2&q6uEUHH<_I)@t0W*piy^euxn@A&z&f_Jfb2t=b5Rr`QQ?I#U)l?xi^%68I= zmVkN>g0Ev)I#y5EcRc|c%B4|V7f$9m~g!~pY zvoS%iY;@QKY%=MIfXn>^w=6iu#)MeheQ^bl?CG~G)K-@-yFeU`PgM8R6m)M38>5HM`il7Ez$fMCWemh{}uMM`U3Wpos-1v*B10u zEvV}YzcX$-|Fbbo+tP|S236Os%#<{;5>8Io(~nT4?a6WW#UF8$CNllMj3W;LdX5bf zhPa>S+@vvdxRcQXOf#>Cvk#Gls_4db`|9c))MkE&8Vt#RX16PFV1zk@7k~pUvYzWA z>F8N_%(@8xMiUv9yRx^|34xu0KkNa22#y-=6+fn%!5VjaU7X*XHQXC9YCAl-;!FO2 zM;y|fTqJ=$ALhJ(=*dm#w-4CNkwF~KtwP&}h8j9?KBD>)NczVn^h*rvi!kCOhSV+p z&*QlAES7fx<>uG+G3!Kn9{b1;g~Xge$+HAL;hvd=z(!_a$Z4(23`58$CeI|QYg7Fx zBnKf#|2O%?WpojIUI@vL$UUd;3(k`7ba?cR-}CbYaQN0}L$ln1Ztx0Ub^=$Xu5u%O z4swqEC;5px8nT}toL%==&XhbFktupa?Kl3}%AP5K6@kbneO1LsI~)1L*)hgPBd8trA5c(R?7wkaU)8h7CW~hA zp43HX65@XE(@lhhf!eb#99u>K-zx2k&N7AAi7FB&@iA#%vwpyD)DIiQ!6dE zed#MD#48wqw;l822}!1vOOfAMWB%pe(!_KhKWX$YPMoa62^*JmU@b4BkPXuF?$75N zIiF|nI0Rmgfak&)&G{M4^*Y|%G~f2h=d?vVq0psQL4su)QBh}tYw;S|euqzzs%z%S zFKx3vhi8)Tne)!bo>7yzwZ{Q^a!bqJ^hOtzB9PreRLaEY1$M1@Bm`ksp z+9bZTsAs7c^)Zu{aP#X$Dz)_#rk56V*?AptQ}*AEXwRR#w}`ii_Pz^d1OqNSZ!|gLR#u} zao1I8xx1c-j;}Jo&p2Ju610yg|3I4}`&h90C#IQ3k13u<(VZlBg_Rm)rQr7TH9U;o z)9c^UvGu)-nR|6pyoIi_;Eoys3-DU21rTl4VMEH?bQ!kcud3kk^n@4BNCy zR>gu>T4w2AyCtV=oq)eOj%m$}7&-72aJg|5lX$qS%(5*jqaY%D^J680nAd8VMZRFw!uAW%$4*SgklCapmPM zJv&q*f(DApr=o|RdMJ9Zdeg1f9&+f-_udvoQJ|OR9H57yZTh_#az#;;6}#;%6n1uI zc7EQx_r0Haif3mX1HWIJ_tvWC4dbuW82{O5yo)Efj)ECYgPF_<&8Df|R?|}NTr-Dv zF0?!OX5KXJ7|dq*CkD&&!gj7%WY)4#E%g8HxcGh0Tje6+k|&O8H)5CZq$Pr`4C2V` zig+_%oVnj#=MfjaM0It`{iw?$zZd_Qw_{E6R@?akoHH6#Go8H|M{B`)4~N2bE$SZs<X00MS&CaMV6<)!Yv!fQ9XXl<6%~^Jyy@vNO z_By+O_i=WSxp<#o-(r{WKFJ)2{f+e0gT=eiy5LE2GxU?>M?oU{KW}_=|JIUwza1oQ zi+WvD{GN>615zhZWKypw_TS@cM{->ad_RW3rOR0$m1y-=9Y5;%VYsCiOLK`7{kafi z{dhm6pEjKbi$v~+T>4czodE#7Az0FUAbBTA?T10c(ozQ_m@oaNgE0>@okwlkA76Q@Z7|cY@itAnc2f|X>1#h^Mm}r@StNT0RfcIFO;?_F%tE{0N;D2a0k>X z4lI5T4z>${zp@et~`7DT{y5RG)9 zQJoP)ZF)A0TYl(m`XcdK<7iGR-Z*y(o@P(pQ~W7=8G~k7K+4_;B45Tr5a=fuRV}1; z!o#&`-$WVXcMWkIuYdfc-i|xGzTOL3B5rXhgZjhoC3P$hQlj;RZp@PUCXY7jVX#{7 zZpn5WU8^l#ttTLEq3gFE`s+NYKgX!>gB-7oR%w}7Vf3RqJp_y|2_*w#!+_9C|1api z!)2n7JjQHox1c{$wwPw}$OuEJhA16MTdz6h-AzC2@he!8xgCEC z6KP$y7mcl;h9ouj!&q=kT#NS%031LKa<2t(9ZsOrgJiZ)i=+rvVNpaZGl;_k}{f%s3qB_X%Ee949R zQO1h;c1=P47_Vb^DVXcx1T{%nZsGZobg@wGUzj5CF`8O5Z1kf#JqlN}hcX*OgW&%O z*jj!;Y-tBdRDXk}mqk<87k+0PNBqY0#EkjX8UYI;693&Td(Y84)_ZVZ>J8k%ix(p&8Wh$sYq)PqMR2VHY- z`q7Zry)M|vSq(~w-VP6M`U(HP`(T1gvOrAzdS3Vi*`L93y8EpVLZ<0D1@b-msC50z z6kR7m4pnt=8gr|b|7_gT9!2_|Du3_|R;I;kUk5ANkP)l39XpEY&o^V^(ON^yE1_zy zs&0A{UX}WOibtG5agQ@;sI}dkV9p#Xg#)ML%jiZ;j`Re+n-e;v5b-@-TGz zNe@GPzrv$9;*|H{fMPLnJQSBFzeEujk4Gu(qwo zwzLPf%x_!blFZ8jCE%VI1A7}m140Jty78zai@5sdFrqfFpO$tg*4Oe)>Cu6j&JiF@*Tp3-z)i^~55|I)+;=XRIU|Q>na)MF zPa@D^CiX55aJn6Q7|^}eYNSOOdo+L7N{ekj@ud_3xkyBrsrlIiFVoWX(C@4=|HdvY zOb|P5^sh{@#=}Kx*Hy|Qxq*tFsMbE5);BX+=aF{pwkdL%pj=$Ux8LDWaYn^F{grK2XOMjgK1<6OFI2RX&JMGPo-%D|aUGc@ zFeG(?B#08}M=hS(6icPKj^7opkM>V(VxdZHys|L(xsD3%r6sisG}kDK1qstf+j&iY90Uw}h)0I?W(bx`q-7&cQuynVaNzwMFIuko*&-c z%?Sd#pw$&4clG@+&0{~}jf(vqn5d4p=RKoO-$5}I1$s<1-=JUh6iF;Xyz6|HoXR1|+Ew^5V~+q4Q+$%3X@X5pWEHK%CJL5Cg3v}T6y*|B!nF-uPAY{@R! zm7)@VwIqH(d)82-mf(VHLG$8XYP6oalcN9BcUdyRtCN^m|{fHIEh~YS{5I_lRBL||zYQ-5zYmvM3 z>`;ve8U-o=1$ruSDvB1cj=J{`=&`q6i$xCs0<_4r0eWbWroT7CFH4juSw6I-w6i<2 zGjHCT_kM5Qyp2mG*TC;L=G~>avxe~{RYrd{D(~Y;uA^W^&0r?88fMK@cdKTpd#0Ab zJ=3t8*;>{#?ikEw*-e9Gd2S<9%QNeqQOs?WzB<4IkFEg8m< z*Anqs$T;&ZF7t?sK;m(6-TS!3qo5UfcXVScycH>1$!xW{9LkmUVx=B8tFi7RNmOa7o1e^iEUvekJd(4X;0+!m z{PNYxcdsd)dt4~iW(S<~rXS8&k-Wa*eub4Y=F4VUx)n!D;c^>7VY)gskN$F~ypJpS zD++F4i49ubTBcwyYw(x(ZMJ69^0FMuGlx+<%f7>0HnnNiay-w9th8xtm^Ftx4+`wa zpq6Jx*)jFTf1UsqTOz|naIW?%|*$Zr1y(#h{-n=-d<=JU=M!hNV65hPj zud$ceE1O2`2z!;ihWk-=mU*}zW9Qfm?#J1A_B!q-SOG?HAwBo$)wyU{@Fcm_2$JNJ zKm<(~he+=7B`$bW=bc~9e|-P;tapDUOuRaE^6(I}W$f)T5z^bhL@G*GpfgcLs^bSS ztV4R7g;Lppo~ju{?V!D9=+eL4@xze>!o9bc|YS+41)QZf!2XI3tR_De< zop_hMz-z{gHvrzHFai?7sE?faa!HUN>FGvX4;ubjAQHbmYWu0{4;L`&s};=pY6)F+ z(`%UX^&*y7NDiVIMuCil$b$B`F`Jv#{Ub=!tGj@v(fQC*3fyt>>D>msgm zDZ}dOJ4qE2fwgG)aw}#@b&W@B)ke5jZLQ0dIC{Hs^-47fCBF z;V!CbSupgf4>DxfzOp30H85>o^liJ+T2CDx9Yg8+Z-cGmbrg=3Gx4WOdNO-0rbExB zYuev--khkUN}q7u1kwJFp6Mbp`J7?cttPytyS0h*tQau>{Yg#p~fx$k`<|cu@5| z0t~%oJCUG6#z>^=vEW2O&sgz3#FRm_?!|aXlZS#qlR~b0a=pcqOHa%u_``N6IM^7o zZ;)8Cg3Gpu$TM-0Q9FcZUoWCbzgaNU;;^rsUPYz{eiDF4J_Yvs z!Q0_DBNL?GIH;9PQKa>o9xS3-P6agbmkZSXB8tw1$uJ`}_eR(ZsF3@8fGO3kZHS^o zthZtQ+*HWJ9uL=?>HK{Fy93HSMBH=Ifi`d=rfvIx{Os_hS_{y_7_;tNnv2$gM#wyr zZLao<1)6T*lJ@ho9l+Nw%*PR5DBEgxPp9=R>?b%xAo9R)6>X>Pr$pqo5C|Yhy?wl> zuxtljsBIOO+8&P;u;E$XV}gMx*D@R0W&2m*jUU^ zT)R#$_lp@~b5G2Omq6+XL>y46AtKbk!>_PL1QFASI3PcVMFdUvG(?D(Y3*O3f>hME zdvy}oVfWOwNgZEBG0EbCpN)o##DxmlpOfWlS|iFCA^y~mQJoSIA2x6zNwCT27|#3Y z3XeQ>nxN){R52nW3GjlI*LSGI!n(Kv80>;Rg75`+K4x*lR*2{Cj4BjyTwn;a(`zzc}i zlooWjr*a89U`%blBh8;dF%iahM`5fHq7q@x!uBBG({u!HVaLLm7#SPNttmj_bca)5 zjQl}eL&?LTY-mJkBpXDB6`l5J2J5ud_i@_?p?4A4hoIe%Wg;>H=l!AckkU>-=223? zIAl`lXPaIsWWF)kI24}~QTd}$R322cAtLq2|3=kmuqpmD&<-l(K|qFN_+YOjh3!0Y zQ`_&UeHX~+1V#}gouQLop$LsfrZgTS8~4E4GCweW^4^cFN7kc^L{6@2ZCHohP!L3wKrOLZ@SN9uJB478f$)$gSevV_{wHavm9obC2XAyOub+FcWhZ zx{z)QFS?XSvgXsgjC~rvZKe5@APJ-t!ovt8!OhQhtYqq3Zv@Rn7TowF5vJ_Jw9$EY zGAep=RIaNmV{!uznvR-kZ`Lnh2F>~zB-X+Hafp#Qql7u51X;rO3MGm?{}n)GD1t&g zokJB;*vJ7kcL*XVb@wM+32DD*PJe5g+KTipr)e;u9M5id5|55=2f z?Js|;hwXCx1VhCgg#xf;Qv!xbo{|ON70cZ1q!0RfVo8}Pgz-f&8(4jG) z%fK8_ z?!9(r$~o=Wj$OHon56iMv&SSC$oY2vdk`n{TLJ=&;mf!@S1xd((h%ug>ZZ1a} z&WyU7D=onV0_+}wAV6{sa?l?4SLBjkF_#>2@;N{b0b=K?9=`VF*hUUHWQghMXH|98 zSJleAfu5G@o%gndZt>9ZpoI$l) zwXFvhcX;){;#E=GuXO92J+_*)(LX#N&o72sLZ(6s<(YOT^SMxwjB_1lsh`ViC+33t zKiC$jkfBC(YuEoc7ipNs{)4hJlYU?8Ty3`7+p+Esw^~s)XlLalon?udHZ~??GTHR~ zxBN7F9&Y*{zIXFh$^A)R_&Y)>Vx9GTjV7_W`|u;5XVGvVQoZR*k%&-Q0?si5&bUiCW^!h(t|Qg64? zusGut?)-^$p;lfqwJN{PUEVmbyEReg9$z}J_U*1K+@}q`JZshY3STuNp71boVcOys z`K1G^yTmW^*YI8DSNQAruJEh;4SZMmHNJ-L1zv~g-YhQv^43S`wiHU;OG2d{=OP;Y zw)63m4>$cM{aE=C_4=rUL!J4jEJx~`S*~SN_(=5rqvp)S4>A}{`+~>Xn5Sel2-9Jh zB)cWCqN23ye($)D4?`IafHSGUOGuGMqR9#`%2F+}BoVUk^4Szwh0B$ixJ55cfw4H9VzSe$OOmFzmSjRoiS5OK$}r zL(mG0X#)iM9DC)olDsNp;uuZ0C#7o2Rwdny!s(teZYmr{NGdP?TO(?$2)sMIV+<|6h$fiK!G{!7U(*02T zs-F!L?)Sr#CjzslF4ZdC3rNpiD8GlW$K##>v-a0}Nw||qwT}595lS)VZDJ+`Geu12 z+*k{%$t(2jMRG?uZ4-bI=%;GdeM?qL2uK9V2RDz+?|wU7O{sTtvFRiD zm{3K1N49iS+X$W4PS1M8ZORsVYFf# znog0&cuR+N&vfXyxaT^wyaXCZ2>v|t;rXI33rybJi8sv(1lMWSQ(|P^{xUizVr8i* z=&HoXS65X>UN##k5k$&483C#96TBsY8pjYsh@)`|aq15!Vr$RV)+;1YPuZdUf%VDH ze#Q3KUPUAA8nb=2=V)i_=;}U`>$<9uT5)z@jh%hAZzDXi+tzbe*T)X8U`A`~ymAjI zY?l4BvVs1)x`CBWx$>2FXf3WDBb6)Xk11uVj^2J`PLDEEDDyO2S#lwDEO6MF^Dd6` zv3*g_QNe3~LWzt<=D}_7Zj7_m|+xp)f(M6ZY|0wTN9$K+a_&PcTg!88rtW}`u0rLHQYfU?Q0yp#YxFX*?p319fiZLFprWOQ4cx=a{s zQ*D3W9^FFfKbMg)irw3Yz3fMvdP=1+HXkxRR>VoeIK1p<|oMXY{WFTX0x86n@XI0Sv<#8^8Qgp50OSo5sxJotv6_t3g8=`Qz_8x}&F%_$SiCjVA|SV1L0{ocg5<7Afs2~L zMG{IS_b*Xv@bV5dTU6YnVlMprz$NpLqbr)`T8_UlO>!nfhs zuIFBJ9oJc|8`Cyj`D3E}eG~i-;>O9o=rkF5|K#f{qH}$nA)D zD`1?t-&yAo7rsJub=&>8!y~^FxVO^IShyQXb>vdLz8ANot~jrT4urn}$U;O-U|lD3Z5T!kiW^}#2%T^6^xZ62v5SMZSgk}oXQ z-u;25c|e6GZ7HKEMqn&Pbu=Sy(TXjIK)_Iezx1?ycL3fr})d;FJ2<9$5xDGF|Y z#RjprnJXL2VmUlu>Tm6)%?hl@O029~d3KS_u*zezS>Q!B%Z@!ZcFbmpmp04nc-AVi z6YQk^;&2CFPGzkkJI&7MFEe}wU(RN&BAa8c=r0vs!IyKx7Mo|UJ~o=O>^1f}-pAM* z>`lCnv-8Zw`vm(IyMXse=0NOkCA0SzZ%6BbOZnqKs@~5VAK$yN|(ewc8o{)e!g#b&@7Y?JW6O4N?Vs0iF%=r?_E>4eQFi^7Rpi| zAADcdu{=nL))zW4ll3hgZPmkIwcgoQ8*y}{ zws^TNLEJ*eZ$0qWxvW3PEKt1_2GH=jW&@@!dRT^#>JcVto$aLLp({|Hw+I5Hi=t!| zO#G!KYH7PfHPbQeuX}S7Y_1I#XqlKi{861A0>W2>ioUUFKuD(lH+0|PN@~!KaX7V3 zP?gEm53*@wWuZC)Kn|pvE;zt3WG!18yzOVJ3f{rF!3%AhsN07@T;1d?RdbiQpoy;B zh`S+kfde!Z%wj8EkAhyd8uo}a-67025EeuVrrr3txkrYe8Ixm2Y<;k8RWLz0;GY)U+I`WAXx~kg?u0MMe8!LsXQ-tR3@brq(_9Vi@vV?`fuZN1bk@ zaxcfl6mEKM3bdm(o03J!NU$=6*kPP(^cHSMFwX%??YO&!=zB%)v+|DH?n2%aX{~a1 zr4dJbrD|)Z-JDCEt0xi8BY?ns?OPJ(K6!&1LLeF-5e@+Kci-Xjdg6uAR)M|WcQjKZ*L$z4UVOrJl|2*y= zk05xYrFXso$3bD$^ME5YRmA1gQXRqXqYc$~P}LCgT9m0T)Yq;lUr2pF#Uoxp@hs!f z`(5Sut`nQ&|`w#c+1jP9Y?>WCg^=`aWB1Kl@&fk#q6SSU?jM256HODlT6 z&OFy}${{>(MtZT7N_RLRmGH22$n>M7e8Axw0x7D@U(j)<{RQ>?3Xf)iQ=Skv1xn;b zC{&ieL=hN|Ol3U5MS9cPH9s^y`_ZS?BkNI4;TqkycC1IXvir8m?^xo3%BupUx*i*S zdk4-QuHL$8JS?dquG=|`sP*k9rCkcY(|(#+M*jz@jG1;i^NF)-jL*gueK5XHK|{Xx z_FaAZNJFXga*l*p2e+*NR~Da~5(`>t;#{y{Mh?$1or?^cLV&_d>|O5Tbi4S_r@N)q zNQx@Id{m|l|CH`!^rh|9Y~7sZdZb;fciS%9R0Wmf*< z*vAH~f>rsqQ?RYx*#r5!kD-*F)p({WWs2n|)~>NjXfk`XaWoBrnJhNRF8UP9XsA_l zNukq0$fJ^C2SHxjS1H#IFg8g6qQ{bdq%#pVj#<4k`)J01eI(OhO)}{!01CEfV$a>A zuu^ZoqB8|6DJ?6AgMQUhB%%mGs^=w+=K*Kkkm?oBqkRTnik^pTI|TI>7HrOvDp6{O zd!&6Q(U+74W^h|4N|J&^_7BV?dp=6GrfAh*p>&;ikBaY6F*?KO7Dxi3$Wh)zQ8H}P zDp(~83Tc^ze~oHR(K-WFbsW>08N6r5+GWQqIi+(YyJT02TIki1_#y3CLy=g53sU*! w`BB!fmWKKGm&Mq>1JZPBA-zGQ;5mS380D0O*T@n|3XN?G`y&fkvCicF3)jQrc>n+a diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_ingress.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_ingress.cpython-310.pyc deleted file mode 100644 index 11ddb089ed8b0f2dd77cb317cb5d9bd7d6e7f1c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 zcmcIo&2QYs6(_k|E|>bSdSHx?s7OYoR9bM zdynr;Iy2)Lxc+QDSpC;U!}vEf4qi4IKgFHjM8S-f!AxewX3JDht7WNYsa3+W6x-c$ zt85x~4Q8|Qj={>@*)Fvz%vv#OPXE82kL%~XHWvw(Joi+)nfi?99T8+(b{`+~jg4xEOZzf8YG*;rq+}!}TclJ8_ujJ}O~Prv4!fli0@^t}9VL z;H#%fSPi_BLb=lCERsr%daG`j^ujpa)Qc6RT#Eie9Od#?W18=$LaxYA_VSNwrNUiL zbD4x)URY69lry}{MHw0q4iyy?%?`Ck7u7A?@8QmWgJNJavxkw=*fzH8fjuw+SPM!h z6D2GKCB~pE5AddEiq{9!at0WI)|&$ht;zr+(OMjo&~ll%0^5VQt^SQM=|_m$U-U!2 zn=&55tX8807>$wD*- z$wniN+Kp^euBXX6^`+~LJd%7d3p{B&tj%SGEYJ=6ZO|JF%@u8-F0m{@0YQJro=!)Jt; zf$_+I*357Y-FLan6*xyS);ZxA-Qtaab8mF$V$FEUgRW^T={16!IaultMi3SmcZIw2;~VVhs2w`+88v z{4{v_-1a0(9_|F)| z&&$U?fWIBtYUD*z7B5jGF8Yck1ndyOYckZgl&kx&aPX{S_5PzDb@WmA8N{W&We%7DQLBBY? zV+jwv^RcnfL7zQEaytsu6dtAYQla|liKtdIp9bvkHK=8b?K7~s4{tr`TU3Nby4psA z{S0KDjQ7)((G;&h+#{b&;-CD8QeU6?4_N_uc(M_)g8YvtB4f*x#xumCkE~tuj`8tN zer;`8TP2AIbYN{;Ted_zE6dxKxGKxiq1OcwtyxWun{+RCwLGP^Zp5UPKuv4FMVm7wJD@U(bJ-e@q*^$#mq33 z4an{0MP-d6Ka!&GqC84+N$Fi-6F7@fH_XJVSWE3+*d)xNtX8R&m1`~>#N@qL7PeZ# z42tqb829)jWhD0B5oK3V*w#hMqaYl?xMfa%;n}mpmSatS?m4#AfAe_+e@McVWGlSW zM_6P1nYC-|657mu{UF*9ry_ht@}GeLBpTXx4-W|x6p=1ES%y)vsASr`Yc(9<8Vd(l zz>*EMWX04o1;zPRSMUY!IG7`}_xp{y$OFeBy@*LtQs&rl@1+QU00| zBH}Ly{x%}ZwN44MM>7t2ZZbI~+BZ;v$(a%+mscoh1(^`?z@+jq9R^tk3|sWLAFcZB zRIdAJ`w{OTQK1}#KSAdH!CpyRBkE~&CEPt7pB80|=VAgyNLK^?BnbYF(JKA&EZaPP znxyrd7iOrW82a8AJI67kjwgtzhvGVMvqZ&LV-})6;X&|Edi6sTr(i^nuGvjowK-BJ z9bE)L;ROL8+KZ_^9R#%N@J%HMaIyt0eh169X2>X`c2DwvEcqPz3U}yXH&p^wI7n*X z8TQXVG{zOCD32EJQ1LDm`^=~s*_cuseR}d`6s}>LmSedVtlIh9s_3WZSQlXHo@ZK9 zUwyh$?!0Te_H;$9Q**@)TJ!rT3QKTt1(nv7{WF2OJ`=!c;DM7iedOV2Y-u1JK`7k2 Xme?(FqB-TGw&i**4h5#Ii>3bqGLwkq diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_load_balancer_status.cpython-310.pyc deleted file mode 100644 index dd25ee518c85d0617b2c28ee6fd704e09deebfde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3790 zcmcIn%WvC88YhR8MA5R7v}urFfnBcC7F7yMb&KwHjcm|&P;{X#;-Ck$0ZVa45*>Xj)NBM2=nATzQ^x-C|_OmEtG%R z_lDoBS=PU4a=N&fyo;)Cqv2NH;x=cg-M3B8`pooB-$C!B?xfbQ+16c)yS#R2@tUX~ zIQ<4^+g7_i``!;wKAjGP%!C%oH}hT|aG_$E6gtVXppf})!UYdr8;MNFNMktI3qC7E z78OZww_40)FxI+ITixy`(c|f$6X%m|UTxBOo~q?!V{uI`+d*(M$nr9D__fGPzd%Nh6i%AwWwd5f>2U*T)~68aXu%&(wdJMdoZhO_cuPT(TFOJm|$F z)McSDL;V0%{Rzz+;+n^Nas?L zDYl)`RU#dliL7De*peQ)AO6uD=M&K#O_NyWvCul{K72=YaRJOG8*LOhSKVEa?RL{- z&@J}#IM3edY`)P|i54406hDkcLUkXWSZ6m*6QI9qSi#ZFC0$_(fP{kuLPBLA(kb>p zIkqG^3||L9>M|OS)ouLHdd#=oC$pC?5L{<@JhpLkS!hhvD6Njc+}g3A1UtHg<-0;F z1C@o$DjNnkFM8)ZKR}*oc?V%TAaDiHjE=xlHahuOBijU4t8|r?qlzWv|6px$tKp{(@mU2 zV4{AAbyKPSIgo4tC^*g<8om5)TcFND;IfYFiN@g&wi;fsvlLET1G*U)IV z0B+;$<{aD|;lrF90_&9xoriS(n3aujq#~`QT*V2*Ui<5(WLbK*(`Yi_(VfrfV#4k< zYxednCoV++`VrMk2DVK23=k1n>qUWGx@;8i?vqGYT4>?&r`Rj&APH9v@yQ@(jm_4d zgB)x>!@!BdqzDc$TLfm1e*I%am#+*lUjVzsCUPW^0(6YEbe6Dk0*zP3=QU>)9!zmQzHxVKB(`ILHS(B1WK$qzJ?# zByb-eJMuaaPq!P<9#@{OtYN>9XJj0P;!zkW(A^`Y4jR3x2Pcuo@z{5 zK&pBP)tIqoxi+i2p8LeDxleqTwP4b|Z+k1=bq~v}hEZ+XlO4M1k7!CJg}jPE{|`SV smYpiG#6PxE|AwlpxL%>Ag2*`p!D(0WxI?~Ckr}wm^F5@OEq2xUKdL(7PXGV_ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_port_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_port_status.cpython-310.pyc deleted file mode 100644 index d9946d909aa139b6438e7d4401370d9a17a00394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5824 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_spec.cpython-310.pyc deleted file mode 100644 index 9bee94769de969caaaa03a3e4b9c4f3122b4bf4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7838 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 TP|;D!bt=^gzJV+`#|!@gmlU!i diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_status.cpython-310.pyc deleted file mode 100644 index 5f0bc3bf4e919a064c63364ab0a9add8be8827ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3465 zcmb_f&u<&Y72cg)lFKzI+pVL@2%2t^HVD&-j9Row1lNe0A4U*^DJ-D}CdFpCGZfce z?$R?uAtI=gbn2<+o~)z(ha&$*fW7vVbAcWTwC?w2Nt&W$qzyXM{M?y0?|t*VH>14S z^ev>n*bfKaG%f3I)LBg~I`1Q^J1Dr-v$)M!YWHkYvmP_G({oTesXMClDz<(qyt54cdVOvXCNvtTUq!-NYSym=rpAtQ}u z|0wuuEV5{v1oz9qTn0m}$7;9JIY{(y(r?H4sFRnIbe^Yb(b=Ah$z>}DUJtVTNwgb$ z^y{~G%H8*eA~+OM(boAO(CE@u_kRCL!1H)A5}Do&q)0`i#P&}6m+u*!=UN!mc9)vW zw|~B4TZ?$;e+%TSZp$v3ALQ8}IhepGY!}n;YI4wdA6aE6gawE#g16_?EzY=;*gY4u zi@L&J;#FQdwR=@j;~uY{S|@hT6W*gb_ZK~WjWy+;5YdXP&fGx z`7P8Nyn@5oEUy1y=acL}3Z?dRq$g_nr|xI_AMFPF!$bvf8YvZ^5lwU+Tsjy+Yk4qj zgU~}U_)cKV#1C_vi4Fu$v_ZezY7}LYC{2$_VMQ~|BOdmnG|FNjdoM3_eSq=b&4)|9 zdkvbq80*G_>LO8_A%B3ZeuH8Ld?%KyY3sx~W-~UkLJ%7z#!)&m^d`2vJ)@q>?LE*R zXtC)pmKv112HQatjB+kgka>_~U`CQHnAB}mByC%4rFk5s;bA0I7_V}n*a$CL*yIVh z#3;!kol8kx*m4S2iF9B(vVxIwOM0mOsXD`aBsvF^B$jzBv`#vY-&Gw5fX8G9+vA+8 z&Y{Q-J89DIjF0p%&wkb3dAp+$Ew;x|{5U!gs`Gg1n4LIHK>Us|2upWDh#_i(%5bAS zJ}SHrgNY8qpF;(81BJ(`Hhw5Q=G*SG>DC%Z?ZuMV#`Hy^Hf3`tRWxSSBMTtg)35If ztqdtHfK&P@$haoZt)h7U7x8P+XoIuB|6IV)xRAg%(YwB3P&Yh6?M#)v_=)p`E?u; z`&3ao5Qtq`7Jj0V3~>xMN#Ul6(uFgM#_~F3nf(iw@GB}t3L-Z-Z&5|`o20sMjR-p| zDu+=z5$l=}(hrc;YbacH3vm#U5K)oYjeq;@#=KW$jeq%7mrZ~40<15AN}ga?O}Lbd ze#*|QGvbszZLe}lX^Ci!H_I40BZ`~H#^P;b2#1@bIv!(|E^6aJE=Q3rk#9iwnn^_! z#}APlpA17b*mUy>tuf`2(#se{w-ktK5mBM;*2j3heQ6ZHeZM%Ots1C%qH%E$ClWh+i9Cn87&K|j~S zAn!jCF>a(tiag84#T!ZHlSlQ2v%`|reEpSkvpEAT9* zeQz5aW5ZiZQoP6p^X?)$_T|sW0CLzXRL(>gD*DtyaryAWkR~AZbX(WyRggs^^b0=> zLAFUs?M4{VHuEpFFvQau$4QZ_*CdZh`V%ceaznb#3U3|}kIXGuR2AMdK$EQ9=A#Da`#!NAeP~aYfH^ZB}(X_nBL9pZP9pz%A>(?fKr8hv7!e9AV3oZ4&h= zih@ZYZ=uoq$@7O%yL=eopN*A=eEGJkmh330aD_q$wj~~SDZVM9xXZ9V9!m{&%lQwC CG;$UI diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_tls.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_ingress_tls.cpython-310.pyc deleted file mode 100644 index 30a13922b5a1b049f0d12053f45bc0c7e16281c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5169 zcmeHL&2JmW72h2$$<>PTw;ekz+JyrcWowaEk`}Gt8VTaqRa-EHW%R%{U9WbA;@Zny zdS=#+2>MbPJp?_phhBmLwT}Lm_S#d<0eUEqq`x;qN|Y=iA3$$eVrS=j-n{pFUo2Ku z0te40?!Cb$7aZr`)L48xG~U6hZld5$-{CH2ncH{Gm-U(X*7`MkYneBy_v@~6*Wn(o zKX-UtGFSJuJ66Nipgcc9JfNOwAjsvuz654#PLXym%b1 zhwuON#+p6-{!oNZgj95NF$gu9bkw`Q+X#7)lp~Sr^-zjT#7eBLb>94ip?OAyA#Hu1 zlG*VGCw8<*hQX)coYQN&)yjKCK1jDqTnfh})V=uB(0B*0`YQ_IfW;26w_jUwIO8?$ z{gd^iHl;it?p11fJe)hT3 zU*_ldd3;;^0>6mw3cti(!}k=w%&*{knl~Z3?^UheuWjVpQYdx*x0{oXdmr3?e?7cE zOjVd&6`2tu_hr^G%)2KBU&%8w@pb`m=}_=g8^PG4MsZ%oS+-+0n=ECi z(tl7|epuB|wpmpl7D}sXS&2jn9p&*z$U0cs4{T2l9leBrJ%6aq@VIb;2oQ^7kL-1hH*G5 zxX6I|L7D?XX+DQsuicbHM|C+Xk~oW=#8O4cB50~cWN+7s7On@erKCZlG>>&5&241^ z8@0X4Qz9E2^vEW6!~-=~{$s2sM$;RA;wC!;QflQQLLYNK-U9@=Cl_yzA#tAYbQvqcN6CrgvNE2A94pai>B+g0! zm7pou!|X6BvCSyf$x5G|OnJp<}~J;(C}4!b}WwSmtUh5|A!<=Oj+7 zLxW10ldg*y4~&)k3QiIe=~R= zG?pgk4vEdkBB7!ALv?x$6lg=Ek~0O2{{c8`ehoNSk3iIY2LR#%J?rCG#v{v+Z;gVJ zK+uz?A*(jC7$Bh^2ZX!mH$Vu26ZK!7qK(|x1q${xf5Ae2GyOmC6Xe)P$w*=6@qrz+ z%1at5q_Ml!8fY00U<^WvWD2Rnx8HuN6W&Qh2Acs}Kzdi0Kqt;fz2V4;r^bxPqBLr~ zg+PPT^3C3cVY@jx&War7Wy3}&^C7Y^)Ke0*uXHiTpAF?Y8G@NK%C(RKB3K=@UDWp{>OYU-kmVvv zN2BDf)Zb8~&NEj#FAzsQWP9#y=fhwAkv(J2Y8sK}l&8f$0n9-SfFZ?}nfwrGkE}{Qjy@ZvXUHKx|a~4-m5zX59Q;J&a zlWX^k=eOq12CPWU#uV%zxQQt?;;=P`?nTj94KFE}3GOsvGVbE+r73Q=hk+?YXslN? zbrI3}m#k_IV-;&HJ}=q zCA90wR9?fVrSb~0EKqtD6xXg8x~~|T2S{EG)n4yYx}YIbni|EgAlO4RJUT+Nyn?YE zyovRG5!k0G}ll}fhh3l5I#Zc z2X44=J{#Ml|H_!d$bL&y(M0T^8k zl~GMfA3+wFICZIfME|0&1;vyloX8;DD&Xvkt%rg?dh=!@QR^ z&Z_E|FXRzaAhC?Z<0$$VvrRG;FwZ@6l#_POx4uBlT;Rw1SUBkdChMn5+?SLm$_^Ej zvD$)C1fn+=QS^7}T|;q1=61AQ>-Bo=Gb9}fqoSw^q6i2>yn}ixis+EpNHdD?j}OF1 zQs}Rc4y9YA77;1l3LWXs4B(E*PpSrGVqhdGxJ9Qy$8~DnpyEv`4#+k&lirX>NDCER z%y&GOHJH!b#uxaa4C?GOG%^TWwrs!tvVYn4e6Q6s;%xi!XS8=4Ma86$-$$kY!-G7$ rWAkwQDYo#3ll^OiB84Y(9%c9&j? zlxId;uOMH#1`4!26g?I_c#r;#;b0CaI0r=o3qsJ*`{PYW=f~$pmb7qQ0Y}{>z>73 zUU_cuim2{7y&7i^t!8!njUV9o<)|-YCbUq#X?OF03l+;`sFOSkhBDtyxZuHi8zK`j z(x~=#g3pE`i-t*Xuk6fau&MP>b=vKXL~oAztvDaF^Ky{R^Hj|m%hP3Y*$jergDig% zb%Hw|tgM#1KiU+*wvdXp&esEtCT;b}=l27i$D@JBbSID^6_FCltF3Dv8J?$H7}h#- zPNv)M@7U5J-t@nMTHEtBM-;`KjmDuHEy5_qfg*^Hz;7@I~{*7e2n6p0)TAKl9w` zo#JQtTPPd+9Df_-0zc1xfO3&v;1^Mz<~6A9oudB5>iy3@P4jqb{QK@_kM4AWN1KTX z;xtk!KqVUKJUFH>lHy!pEhD)HV*QN*GXrnu(3K7ZPqfiWxz!-bMp2sXl#3OP(sEo+ z6QzHJ+LujMxN*W|Q47V>SPZqSK$JzbY;9(B7Z)JXC=ItGslxc6brhA*oaAgcUoo5>3Q9@{FM}kDbS}*qWfiM6-NIEOUElAK z9=cyzvVr0sgZ5@V5bcdo63aXmS|{zT>#B{V0IY0dd6;w6-WJ(*J5BoS;f~(Sv!AwB zSK2DkVtE+FThWG4?X5X}+i{uzA8m6=OkE9=Vb~`lX$^M@FAS3`(P6lZ&DA*&k5z5_ zO{r)5w)<*)c7DFrY(i{f@a&;Fy`-nF>68=eu?1P%<5%~DR;6t~=Oub!iu>!Ggm>~l zBv@m#0gMJG2fl|=C>(_v_dg+Sh(| zIe;s=d~IcAwZr?@JDv82=sLmA(7qih^hjoe9Z@o2JkG!4nWoXxk$Pt+I>fL+2lX{= zS%*Ac+VT_%qvMh+P?IeG=Xk#+JFC{mi~Dk+^T*UZd#FyY!NO%!NXCzC*_Z$Uz(hkc z&UWqJ+Q#~U1jyeR|NY?`mf-?8t6^KOvItq zIr?7D{yqTze-&9Gd@6$yl2SwTEApSde+ZBS zVwz*z>Yq?atY@~iULb{d%=YZt)|bEdHG9UMIU32vgzd6tu68G`uIw^-Sywa?3(lTf z6L%NR7y4&6tS6qXO9h^O(1jdY?kQ1+r zuRJg@sf?p#x`GURD5Op(;Nd^uNvsc@i^8#k_aR<&9z-Kxa2tEqCpg_6K1?V?vu;t- zc}VkLvZA&bsYq)nDHT9AY(G6B%fh>nMuR?&ZYo-s1bW^Yzq^l<=~}HDCTUVPQ7Olp zC120tl{t$Skx7HiGho-bXqdie7+%K(#jxylzoOHb1*NIIjV8Etkpm5mFf1?N+ZeC$ z$PN4aE7xwGLQX!Z6W(&cH>*$U7WV6 ztnp93>av60Xe#An;-rMxSn?t&r4_$md)6M=kv(o5w4y5x_6<1uz=pkbF%V3?&vW(h_w+@*kRwq8So z;;5Gmq*L!>=t-`da#_j|!|-<)VR-P^;mo!Ce9VOtObi!4Mg=gjHDID@ltF;tU73A~C%FFHed)+c#44?B#P+gG8;T0X3wgvCiYjgn zPr~pI7;Q3WpSkwZAsLnfzBl)d;r{(Ma&Inlbb?3nDzQ#CgAT^=KCOTpRCO5A zr>4{GcAHD2lq?#cqwvEJRy9hg-Uvh5Vfv*OhPcK0R2tZnerB62EjD_!XhNMpjE3DGlNT Z=HOaO0o^2@rf7uAJm0fD)?nwHe*t*ph(G`U diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 7ddd0238812272dcc6749978e49909b591d79f02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13741 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_iscsi_volume_source.cpython-310.pyc deleted file mode 100644 index 97eb373f49045bebf2ec2e9fdf6d0395cb94cbaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13129 zcmeHOON<=HdG79+o!8Fp@}(uIXN$B%j>MfIB~g~vG%bddm9^#JMqCidBu=w;s%E#T zneJhA55*k}5g;VsAcw?;2bX-~ZQNe-*ujg_4Hf=lUnDAAMEReom3mUlx%M@c35{Fs-36of&Ptq06_? zFyuSa$l#r6XFGF^IbHimV_7!$SYvZM_bAiIGvk(4$@PCzGV%L%Z<7m`2iz~oc-=D@ z_nX4$29D>NUE$q#7-#1BE$(t*2l(9FF>iLcYj+*U{JW(;tv!?6avscXzFJHW*df(XQ=6x=F>e_3W0ix8^we>ZVdCgvj zyTPg{c$?ckU%6C$>wQUcM1>@6HK8Qxe%NC*;LYvQFTpvjUeUva>z>gSd5??~j z8%ZqB-eebK&JlhDIV(vl&#J5@bB^+($hnxr^6V0OOXeKo$B^@O63er9*kze>oF7Nd zyK#(tmA&^^Yn)*3vsJvGV_#!e@LpzLXIJq)$-cop!21+C4j}(Yc>MOIwOiM3t=;z8 zK*%kxCz`zf_w}0_AFi4k+m3HG+qUnU_^^9{XYK+rp(_D$RU+yW-r5sLvfvF57!FL% zoIs*gb=9%mp51QmsK&zVCPX02_<;yBjvMrgZO0G(64CEAmTzDB*lXJDo11reGeEao zaJR`T^WpL4w%xTr@wUYrzv)3NcEY2>M4$U4CSktiTft73hl`Hu1dbhe!gB2nM_2dU za0yj?$3m}MwCpBQ+db6jdLppfepnRTW|rr+cfyj-n}P?H;H_{Wu*DX>Rk4Qb^%^L- z5fjo_B0?zXmLj8(Yxx_XqOp)rQ3nxX9um}8ltiq>G>8QxibcvPQ2#g4eWR$l2L~Eu z)%&`nvEHQ8@sGX@JlFB~KSMAmGrgyYe4stj9+n5?fo4G$B7~?SgdRkgmEoKWb27}! zupq;t3`;Vcmm%6jt%U(v>gnS0fMSaSw20W1fq~f404*bSeUL%y$N)Vc_N_q{v7>`I zgvSQx327UH9Ad`@d4wkh=n-juJt!dd+yFfz#s@{jmIt5!vG$;Z*vY{>!c$BKz>WUJ z6o8v6rfqgS#@o=>EysoObKF>2)+?t4u_-*&CU9BzZQ)zZQFRxdu!c|?;_KK*Y7DS~ z6(ej3I2wak)*_4@u_i&5wFqT}2tR&U0;*!1&08ZtTeQZJwm_r^r{lPUW0A)gM1g`L z1++FwLonYH@->zP|So58LuXOF^r}h^2Yo8{oY^~XL zu!_~>)S>F7hG!&%kW7b^y*Vs*{ZFs0lWN}vU!A60&8Ky;3Jup2F0Bh(_Bf$n z4?;N+O}|w^>UY&7B`?4K0|^9+9wymRJ)dFDaOrfyV?!O8bnWs4gnNNxbe#>wZG{P};u` zmiDE5zCWsb#&;=)(m_cRw2O^ZQL_gr>_qnGTD%o9sR$H63(_3zj^av*xSOBBErw>W z7f-gqrtfrm?Z9@q*Yn#u7fhFb7PXyh*Uc+xe`Kni_|?@bk=}FB=T)@YZj*|^#$9^m zT5!aX5`)%o;ZA^ipgJ)ni5QQmh=g$IIXDQzk||Et6w5S$X_|uU)gMr%)D&mZG{rbk zdn$~7990I@$^Yn{vpk|66<7~a<-LpkEhLK*aV^y1f&W18<^r)$mQ;R zLdYrYhXjND2zmeClT9bw4hNwzK|R%r?21UR)MoO};I5PFawNJohJ;Tk zl2XydN#a79q>u;g-zZZ`%E?qox#vz5k1uFjLOb`nx+qJJmL|#p9N3Tazt!cA5uPmU z7&HAJC)>rnxH}>;Uy`2@An!#x^1V7f0QCBAuDSOysmw&!gBc0ccn9s@xnOo6($Z@S z&3UKpx%^HgE1f>!vU1K?K8`%#G(&CaO$bZ3sf`bXfKQ4hDuy)8&E(#m(td(Rx=fA~ z3wp`e({w&Rwt9_wY!8R?@s%cm{BT*38cy2IJ?tt>8&V;iDuJ+Jqr%BjHE-~ijpYeO zxM!Zjo`)jm%=1CBTiNHLa`sWr-j$cvcbbSv> zrsMWa)E(32d(k}vDwX^)+){u;D+*+Lbvzqbqx`C;YIC$dOPh-e#Kjc~h}khLiNBLN zo6>$u=~V=KYU@8A)z-=|_YZ~6xNfYTN71=1PruBMaZ(6x25fp&n5-9$y#(ChP}*zj zCYCh^$ApZDRVqPl1~OaKH^`Djq3K=n8j=o&3g79%O^)M9bL0BDEa{u?y?YT2GV|@X z-o3a_{jLZ)(8wocA~^?5Bm>(0d76kc$)FR%dGKCIMyhuqqG`HxM2^ArQLVn8feeKt zF8%v6X-X_3x|L|ggOGPDFp{*Da<+Kxp1QiYhzW|tj3#SR%qVS{CU8I6-(DIOv*i5n zP=XepGMkVau6E6^2b<&?Zrv?jBZ}$*0l?XB0Gs6%{sy@tFA~aDD8U8s8VrHgQJ1631-GFOdMns$sDQ{)|G()t7K(z z42%4Zm>h>5`y|RoUC}VcU&4f>Dpk5pQYXQd#`vpgfF7f1I;NFbZjqz?Ym$9E90T@FcaY7*uZ#XJj@2!K{l9sWQa4tT!2es z%y_H~vX9`PgL}@nqTMS5d0a5dphR_$eNuQz7d=!u)hr_YT2MsItg88>^i&(IjZ0}! z`2jil=K8OHA}_(H<5hKq4A*>dIn7{~TFPKJw`g4C)eqoQWIFoB<+UgJ zQ)CS2a*$CE^MQvOi_PGf5$3mT-wpyH-bM{vxz!&`a55}hY1^GmW?%KdPPuR_YyFi} zIa94xugEKH{#AUanzHff#FE9Yh&_#qyCC=|2+y3B#liK_S21 zQFLcDXOyIqpBq5)Z>U*-B+j9@2+7I5Mz>3$wBb-3sTVb90h1;`SC% zM!w&yal$C!=2sT?zYM+npQY?#6w4Xq-1D-N+!&8yC@alPAW|DjvXlOr&zdQ4kV$;zoC(liLq$( zpPzyh6x&5ORgr|#wFZDzBhZ56Q{N=luq5J++ymcH6y3qXu!f>(3j^KGqhVRrqnMh4 zG3{=hD!6NDAaRoP& z3oz`p>AP%M)M=EHw=CShz$DXuv}i1lyg8e_fLkP_uOclhL^^Xv-sTH)w0p$04|$J9 zo@dMRE;|Y}RJcyTIt9Zq%P*7CXjy0mDVgE}acbYp&x_rgT}WSr_3(GJ?8_6iGyQ-y3HTh2>5D+RGZG=GF3Gz1r` z_-MQ`a?3>>x8OgEjQmFob#XbTkgZ^x!U!xJYUZv20-8^L<*ZRC74(8pHcn*z8!fcJ Ar2qf` diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job.cpython-310.pyc deleted file mode 100644 index a7564e58cd4bbf242f3ddbbf012b328c6aaf5fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6684 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_list.cpython-310.pyc deleted file mode 100644 index 208c0de8e272e752631abca86ed3112d2090a4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6469 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 ZFZ&$WCF9a+?R>6SDrSqhncSg?{{y)o*2@3@ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_job_status.cpython-310.pyc deleted file mode 100644 index c17ba963ac4c44f951198e96089f3bae2fb217ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15096 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_key_to_path.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_key_to_path.cpython-310.pyc deleted file mode 100644 index ddc7be8d4bc25aed9e02f7deaeb1bad4987719d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5869 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 E1r#v(;{X5v diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector.cpython-310.pyc deleted file mode 100644 index 5edbbfa7215aba9afb46c76f43268a889d223442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4979 zcmeHLO>Y~=8QvW($<^x9j^oHl+e{Q7FjI-NS_DW1*N722M%sWWEVl=?>3YQ(iEA%+ z>6xKwvDBp!dI)-GuSE~mQGcUA|HNK<$~iy}1)Ah}XDNv$B{(jEp1RV`&iA|@&-*dV z=H~+k&tKj9+rPZxIRB)^_~W7R0bYF*g>YJqa0N@;mTSMP#q77#D&bp7yl%NwcAa~U z@I?905oK99D7C7BZ928e;9mj9^Yi|eRH-yl2e#eJxRAQ7;+~1Kl=oD&8w)A;^&Oc? z6&X~w_V}kgnMS>s-zz#Z#XH9I^hTqx6Pr$dtKQDKjjWhtvMkXjjkVD>nW}OAHczuB z(FVW!-i`I*^amZuccs#Fbhgb6nsn6dUwq6(*6w#@YBso%iHx*dTd)7fVO zB-ZBF6BOQ;Px`Tvq`=Px3nFft>)NPQj-pm$`K4}T+MQ57?J22A`#PU1x)S13x0Y<{ z?%8;2*7jI2=w_P?-mNIh^Kwe$+Q&eqO|6k=;0rpln6_sWOV1mwQ?!+h;whg6?BSkr(;5ZgjG) zZ0z*ow#wSln7HxyecixTFx_-#t(OVi*p=ySBZ;>fy*<;((jV8?Z!~mlROR>b@Je-q(ZW z2|3nJ7Peh1I(ev0FX{42Vs7X>a-at{dLP~Qq|p|LQz9(92aI6yl=Hj}`N2tiSp%|A zrmZZW{De<7U*TW+v`R(Q%De4!UwxOiytCTEO7Dta`|JxEzbknn;%wA7! zywLEh4by^SS5+ZPd}i>mXeo+WY7)LEzI;i@t;`JGnv~&`wA(cE*-6g~p`j zX(KoK$Fvz0Ugz6_@Dx;5F`rm>T^LU{>d_{@e=PS_ccY{)_jxah6)fg9*Kk0Id~OV0 zlj8mOHnan5n5+#O!1ZuMv?%59Hxx-|_enUc^51nbEjbS5+p$dGjWu6EYh~4LkE{Rz z9|;R}f1IK>N`)P!KOa0##Sdfl z2?~p+c(BN@7EQrollqrX48C{1Jr`76Xv*pm*49|`_h|!u0Y4MA`+taxXS`Ok<4&d! z=D2@(fp{lkjKvDUrEo15prxr^vFa=w3E^Wh3Q*r~ssA#H=iCU5P$;(f)t^y`oqg9h z&yY7gVn^;B=d+*whV8Tcl0l|5WCv{DGv3fMNixsz1znWj9K((l*C|e-<89Q>02vhE$K8`6|ToA&L_tA|7vB+K`i(p&C=Bh^Fb5XmbAmszX2pxyv6R%009MJhVaX zVL{EqnycQ$)bk<*rSHU282%A6EG0fWFI6ulO$7@wA4|&*Pys4k1M|^Ux;lX}h;rys z`IvrzU}HwA`jW@nd@C~@o^3tCZGr-^q{ts7A03y}n?x|}Zbf)pBtUr?^QD@AM_vg- z`6LWK$839L2$<(Cog>d;+JDVM$@1{-DJU-D!QPmOj|Xa%7@&*MIV7ht4F5tyH&9F~ zKMZL?t<-EbYfGf2H0q)w55f>=>nBv73qv|*G*S&i{AL1uejgjQ=EQh!CfZ24rIeOnykU1{Ld6*sS8Lu=xckhFpoRqwpQiWfkT#xAGOf zD1$OvgnzlDHqk;l`-xX1j!cYQX;u9Ut3v!*x* diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector_requirement.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_label_selector_requirement.cpython-310.pyc deleted file mode 100644 index b3d8e7f337afa93f0005e28239d4ce1d2c20defc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5908 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 N^F7;hW}VZO{{RyqF-!me diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease.cpython-310.pyc deleted file mode 100644 index ffc02397e9a2172f946a7ed5e1c96eea0e7439fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6190 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lease_spec.cpython-310.pyc deleted file mode 100644 index 0e679a25534fbcf3c7f9414348fa8e4bfa44f243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7092 zcmdT}&2JmW72jPh$t6X}vaQH+9LF0wam*AZqoyB@>I5<3#0XL_g(c)bv{h_Y(Wsiq?1xdf5p4GGQCO};&DpDf$_KdP zKcnCVL~M|Fo4Jy~ES7^vZ9Mb8$~SFRU`6Jz5-Y2Ep1sK`Y|b2hCN*~{#l>Y3%U z=y_#SW9Qkcdq#7PU0^PrC)jK3BA)Z?5_=ublk5$48P8K}2B5f-%zVE5LlW+4m$&*q zYkao$(Tcma6~u0f;7r!SX_W&43Ln#<)N-MYd#*xZU18+vafpj?wq|&%vs^f<} zzun%^#1e-Adot+oBo|AOQ^Pd3)o~0iuFYj}37ekH1It zt*FE6o4ueVq867jsNcI5*Rc@XT)26)8?m^)&BN__J6NxGcjQ(SzEfL%yAJ&Dt6jf! z&)?*6{a)%#>#cSG6xNjtF?D(PSuqT&*4;@Q&kMppdfq!&KE8s&u?i-Bx}-OgS{!<& zciFU`^cOOEs*T9BOpq8|^iDTn>}zsl1LLj%9h?2X-r_P=R+iO|_O&qXEahqbnRbkf zaVUS_lI^(WQ4}5qGZKJGq7{wLAWlx0UY4~Wgvc%)?MJ&;^BIHh& zuec*WpJQrBGvrUp4)|ol70|s_>cC8QJA5}Qq6Z;SqL8wwJ*RXDV?qnaIvkW zoCBHFJp zI8I@pNKAwp+UJf!8n|3vx-CCs0Xe?d-9Rkv51ntwv27z-d*D-K6;WR+b+B$AYdW-p z-|ryi>k0I2l7V0_xpde9foFJGAeBZm$FqqS7eK1Ap-)G!m&ydDae@>w%`_+i z*r85k8W*#sF`b#CEX3c0MpGl1PGhP@$F}nSr$cRi(?3>Q;q<<#f_SzuW)<5I=b^gM zE~0|D31g(TJyP$njInUg7&9^DahOdpr@l86+>;H`*);5RaC%mx#*sf&M;5rw(*5Vwrmdy02BA+mnZ&b)xU}yNs zVmi}2mEGroGZHu{oYk>p0?yR-OA`I_!+CrhIu4g9j#CHztiWAkHH+dc1o3Jo=yhq6 z!JY!_E1NhTpr4Q1NhD7T=ueW^roov`e!r$p1?R;qoX1=oiDNU1PM?k417dE73lQYUACq7w&ra0#8)`oQ;5=IC+)3x7nA}TXJT#^82&sy@ z*1mbu_{n=ewjNp!a}o)PfwgNrw52_;Wq#KZ7iC@|#lfsSV_@%EyC%+7)^+2)Ba296 zE8?uC%NXya8N9BDZI~&Q5;rIciJM#U@x7DdrdvcxXK(@2X zg$xi!(Ye)SK}#M8`f~W3Rr)SEt4JKJnTfSa1AN^+ItFymwi-!MMjp+7Y$Zh)kT0bW zE@mL}Xnrvv$;7$d_B-p$fB$zxm`;|9M*od0dWY0%*Hy|TejhJ-h9Y`6lb1nDGkF$y zOE7v84Cl@&w$Cb-H;@iiOxumGfO|s`6zc6YRKc%}97kt@W$`-tzQi4qo-5|!6WgrL zAUPL&k(4lA(407#9cE!Y3cll{xXC3+A}I$k1)6@?;)&f3VwvPRepg%sEwz4PlkAeb zqEgMP06i%P9{1WZu@wo^OY+-(yT>Ovb3x>{xMQMbTMJg%MBW5B6w9pqt8C8=YXz(F z&vL=G`lqMJ`G7zv^RCcL=Q54tN7lZvPgpYhwJer!!a&Lh(Q+63A{Cp2zQd-XAbp<-^LBZO%`~Q4e`x{&R}|w^AS+#=lB+(>JV%YsCD!RGdx= zI^q+%A@{sLQ7iq^^R&WsXSL8!SM@Y$C-gg*kd!?So~+lV_loDyGQ*yt=iwg|sIdxq z%~`UbV7(`~M`rgDE$R%t-;Tg#xEQa&@_l;y0Tu62G5!wq zrt%e}B3dB6jlwZ((<)ew1!JUN;U89M{9bmfC75ctY+5tVemXPGl4Cn|rKliKb;J!? z|2rrWOK|ZfUYZxi>DZc1$KrpfOqN0M1#<^nLP)F=dTy%PBiZ&sMC3 G+`j?%T1ayM diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle.cpython-310.pyc deleted file mode 100644 index 28797aa3ac85c1515a03cd6a03375358d2de65c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3963 zcmbtX&2J>d74NF<>FH_Dc)yHe6A@aVpdG+7>qJP2wON6H-2|cm)~g(bL`}P^#?!k! z-Mv*c79O>8h^-u=AaO<<*2y9Aztq>9I3wkN1mwNy`Do92VS%>m)pynV_`O$e(pJkg z;QNf+9c*4UjQ?V%`dQF<9g4gOgc*H<5k_OuC%UG6s%x`vLT$#@sMfC$^2~)cH5~7C!gSP4%S9?pV>#<=O^-=M+w)%ZlJsG)g?ar@$t9hPsp;_CRb27bt zabrjEaOi#knlpNBQncPolR>mU2BF}(5QnRu37yxW$bSOi2B_FT_4dt%!6^KhpVPjD ziq)+e+hld-oRGfF>#V`t6XTfl9q!z3u$6hQ&YG;HXI$>W%<8PiF0soeMt_A}VOODU zvTJM&>K1#3twX)ae#SPSzQk-W-Lu8YpSJ%P4S0AM#(eUR-h21n-tq1YBk6^4Af*S5 zV60N_F_WPl=O*iD-QDGb?^T&z_*M$mQXXfK(sn7Y8U@KXh~vZZu>REwW4{j)7IV?2 zg`1^P`BDW!6;38NG}El#z|mbC?AKv%7sh%a0(|yin?iXLihKu14zL~@qOOc%gWyk5I5kd0y^PQxJf4+0_mu!@~x#ji-%@aH17ScI-LijqL3LZCpR2Bd8jmgMnZ zF(PajJ~ITm|5r(On2vaNe;kD(4Y^WL_rY&u7mfm-OZK<2l*#S^PY$|qwAalJ)i6zd z-Pyj;m676GSr9%5_POjnn7ej2j3aQJt`-rtZu{{JKAr5aaC|>XBIWyAaJyUw;!vBw zpQhM$h)b+*CuJJS22|Q0C0W5Pnh;~}mxu`4 znXFeiU+@&-^z6en7OfLButw$#hyU7rO1-#ch}2?afe1zw9sDGne6LD+VimY<(^4ZE z#VE#-T5iLTR*TzsA|yl$4igzFhD2%0LS5x zHqN`n%=w=P0dWQPKmhuDVfgP7-~zKxmrsrUU7MGDX)gU!nEaaNvNSo0yX*-#_92d6 z1#-^dID@XQRnmj7JcU@6%KAmhqS0{h1!oBU3>H&*?EevXqrus&-7p3#z6d zN;7(5la;q`=nk42$6Cl|&w6Ur_W9VHb+H%8#@Mh?=Q!bFa- zj`oVWN`2gaMvM9|kbzP{tid)&JIKdNnk<}~aWL9r!L0-j#z?VlOnzAnEYs6EH}wl7 zZ$YEnp$~mBlP|$pC6k+wv;d=5fMIh}v%RTV9zZUrnYMagpnUp3p6ezBN-)-4kRHjtT>XY zFh@Zq@Zr(-7Z&QSsOeMMHI2c-7F>>FRap86;up1pARhB&&QQw(N38ZHrE>U7+X36pA5FqZ#91iR4H0)Hp>fkx8eDC8-2F(U7A;9FXwl z>f~~k%W9yt&BD$ySfz@3Hb})NP^H!{2sDKariUZ{iV`6*R_UagV|B{u#~7YHHxeTl zfYU&50;?OhAyxlKU;dE?`5Cm!PMe6AVd+J|4$}h^$M^p>c5K@OgaF0KPZ1eV+DV|4W z@pP@av+`*wYOtP*B}f#u@AHSg|94oeQxcb2(m!efaGJ zCVCDI>$lK-qP?-=KKfh}#xN(>q3=+qH-#-B2O&v7KtR(`sb*|}Zfqy)tU%t4qf6?6-un?%7a3ilI-HtCxAe+Tx~_W%F@ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle_handler.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_lifecycle_handler.cpython-310.pyc deleted file mode 100644 index fd5e56cfed62ca484d989badb852d9a02d4f092a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5375 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_item.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_item.cpython-310.pyc deleted file mode 100644 index b909a25696c6b0a6b2a3ae63c791cc9f2e47e152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8161 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 a7#MTS%@8XeHQ81%vFq2uK*);XrYFhf8 zYv%CIg?2mN%$vqdgV`+q$Y6P1*v&PI%vv$3h3?-S7r)!d8W#~)Tspelh+W2IO9UMi z#F5((@piyCbHBa8BQAV}>e`O`QHMuYH$5O)7+;*leRphq`&=W$C~1;P3KE+&S+H4boN>ttp^(k4u$Pn)II*oqwy{t z`2`AYfW-!}x0x#&%wjn_VCt{!rp*eh$V#lNTX}Yo&9KTNvsvIpHp`AZGIq^oiI=v@ z?D()%WOM9<{^D>4Urr8NMfMUqrN7MZ8GJcCY!%r&JEOl;cm-e14q9x1z5K{%&azk7 zIlPatSJ`WLA7|&8i}xJ+7Q2A=3FbiTucveOmOcpDfx6>I8~lSns_xGkAKksa?B3lB zq}vL8DP2_jM8)m_nUf%fGOuao-{I>=@>~ymKZdxK%UPhbV6&~-ew6rOxRWiG=A;tc zlOf3Z@i?8IHXUk8^&wY&)lO%id|qEs(tMzJTc-B?AYy5$jS)Slqu7|-| zy|be>2h6yxW$g&y6X>NO#AEZ!X&qAgEd+v<_~^Ur-xMHE7Fgiv1LG9rvF!T z-{eYa4IX23hE}kf0~<_(IRajoQeQj!a?aN5D>bApTbsP?4;L1^Be(=tG+a@)4~$&f z;w@EkSGb^wuH1~1kh#zZG!>At6>mgAceon%h&AaUkQ}-eL<;Edhwio?Cj3n-$=tTT zgNd}Rn?z$P=pnM^ei#dmiR;d{UNW2!rbpU@mfmC)-iYWvH)FdOhj^`_~!9uxv?trw%=xNcQ!H??nXpN#BG*t9K!2b)h zYUR1KD!VR;;&1fmMfIrT3%@hNviuS-a*>O>OgV3viR<{O^q0{1GP|S^NL3 z+%jX*=g7?Hh$BrXKqfi}FEgO0$ga^{ycOXt3Rre&x$B5NR`qVHZ@TRS%1mzN8h2M4 zal}`vw)Rz;^O;ZKNrW@-n=oHrq^Wa{uDb7isy|4U+>2MPQJawBT)H9zWeI_ZF!oYmZ05qjG^ zyyi>(KlcD z_sE0Eci*_91F2hJJgE`R_cTg-N;Qjqarb=-Xei zc2%cOjka|I(Yv<4e(Kh)g z6LgF7`1U(I+M}qL^IzL$bp~0m;Ip)h@k0AG>1;oj>1i-aiyO#sfgPz6$RLu+hx?t{ zKw9wsp#KD1m}R zie*;*?byfqt%6ngms7B#nZ;hF$NRYT$ch_RIISBDwAITgzb$)o`NluWO3tC+>@kti5 zrg@C#VnRdGg6HuEp7%$L)+sW_vdy_^9L>hP@F8;g5SNB}ao8brZkY~pSG+|hxI)GL z+m>jKxaWOApT3J?iu|(?)qI0~)srNv2p+BHrH70;us`d^Bkhd3DGdL3&v zXUVcC@5Mbb#uMmEOMPJ6(J7>~Adw^mO9|meY3WRJwboEZQ@l;Z_ox^hV-%;7n8?SJ zH&B!e+q4Q+$%1`aX5pWsnp3n+!EznPv}XG6*|B!nF-uPAY{@R!m7*4XwIqH>d)82- zmf(UApm}~Q?9XBX{EKJo-zQmCx{!q%nF>uI8Ze!)kWv_iBq!Rous;&D73);)Kk8CY Awg3PC diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_range_spec.cpython-310.pyc deleted file mode 100644 index b8d1f10b60433c8d5302bd2817c1be29ecd3647e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3674 zcmcIn&u`nv6()z2MA4Fyv{~1=wCrxXSf#bJZqcGO(qMz#Y!Gar6iKiJ)NW~tGm>ai zq%t!y)`EPgeJW6(=bqxD|0P~~+H-*(7HHG&4JAiwIcU(LwC5*>Z@zi&d+&|%X4ALu z{MCLs`17V^{f!2zkBh-aDC!<6ZuKl~bC%jY+qA65OzZRvV>R9!>l0I3IWNa*@vSR4oTP3o*HD1;KkkmcNMhf`>o* zaJSt3`A7suLMqxi9|Rgh+Umh?9tS*+r(==ny+DdoL`v-JwtwqC zdMXD0Q8Q-YCpnCw1Hlt*)L(8jjLAHr z^(0%eq}!@U+N;=3^EgVwqe!YSUbS;k3rp}&c|trNCt0L(Dao~3PT?w%4$MGSFmqu^ z56#!p&L|&?&TyK6p*|I3fhsz4>%f9`?a0COBcYWsb*Y!q@4&4!+1EKNg%CqjLr3yg zq6En>vxdIJi6HMEh}dit=^&CK5ZNG?vEc1DiQSVzPi01wC#giZx5h@W=-HF{cp~-; zsCAwi!qc*rElDjGwydEs7B8zh4T%{)M^VJAYJK*dHO-XhVtT)Ps87Y{{9SZN=LfcI z%)xcAzo8L4PVGP1hV6*gu!l4I`q|qWql}jX{{N-^NhG83Lh=8b5#GuM-C6r_b`+%v z4^U4<0D1)brDpek9E_)+6-B1L2==>qCiYvd@zCB@=}DnNo`S_H9fSRj!9Bno#~^pRU(q3r zKxuloR}p9zfq8rdx4eaSe?T!jXxLk?T)VYVI4b$FsAIjPZ&cA-TrEN(wkm2vp-CNu zpQt2LI?7^ExD*EqXB8aK ztf9V)t(2a@Rg1U^yxX5r*f0q8gDB(ZmjlH3_XxvvK#*qXOksGqgyLPFT+3B!fu3B* zsPMb!z=doL7g99}>VO7i&TXm>>Eg{+991IBC4-=!>(OO`G`aBwZd;#TIC7g1lXRoR zi!y>06|5I>O`BmTUW8$e)qkg0Af=5IIdfHXndf`9#~SRm^KSvMtF8b5 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_response.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_limit_response.cpython-310.pyc deleted file mode 100644 index 78d9c2f9f0415537407103e4f281980fa79f7078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4662 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 Di?WJ& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_list_meta.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_list_meta.cpython-310.pyc deleted file mode 100644 index f4ca42ba4c96a0c1bafc5fb01cd8e1cad5eaf9b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8930 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 z�Z*sL%sd&O6hN*~1)RqHZ1&=69Dc3;8)q4TbES{aOl(DLR^?_>xc;`8iL65(_^^ z#~0`1CVl%UQR_p=%^JdVrQ9qdnhybE$(8SmA!05hR1onP2am~EM+{DE``~7XE+bpU z=CziN+L~ukf*6xTQ0hKnX+ctia5Eza9tG$Uv5O_ZK|y*R2;N7b-e-Wtf_e$7^N}$6_DlM{k9sKuMSeX+ zywYEw2(6p8vhEsmwAk!+}7M0@1kY22kKn)yyMm+<{PwS<|jnR%yq*P5P<1jTs#h!Pal zy_YWN$g(jPOm+e}!=aFhYzQcCpCQ()_E|GxfPJN=f-FW*~oO--Z&HagDvi#{Vgp_vBKll-iuR0XS`VZj82lI zXHhW|^qTjF@ud>RlSuvn&clGWa#BNmQbXKBPF2I~ZhlE=0KK5pwdc?TxGqeD!5qZ$ zdG!4bPfFLkVjut7wOh+bg@rfrC5)FeC(T#KsZ5WAW182uk;woe@@9z0a;p3|5V=c{ zkGwMQhw>EG();Hwp)RlLRa#YTc;+?e;4D(PtCz67ysCrE^N)ln$O4P822y)~e*S;Si%#ULW=niBN$-`T}W|*KqS#^7nKgqKgC0-r-q*(Yp^` z8mZwW1p~^oh%y1`iSvjYT-JME))Ak}29V1wTfTvziv%jAo#-^4_eYG-Ks21Ww36xH zCsv77G#ErlU=>?|Rnj_T2murjII^j{N@;y(iXkN>YkF)8xtJolt7AflxcSlfdlmT# z!Ah%Z#N9KI#Js9=H*@rm*E~;L^SnP{v`%j|9oIfIi$ycy8-rib;J;c@!TrFe5RX2> zCHW@7{sSszEdqiz7M}MP>UtZ+%x#;#R&|qpts`_Zu|L4@yyu1;;_HAKI_z;j7aL!p{RzE7~dMa2dclLP3Q z4*t;9P>eS{kD_6@wo`K&4mi-UYyX@Lb$#8fhCEAq zuA|5uDJ1^Y#Oj`!WKi42b;EygOeK&_ez|6RH$yfHfQAq@C_GETFQp8S>ol4TBvn_O Hqm};xh}SgM diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_load_balancer_ingress.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_load_balancer_ingress.cpython-310.pyc deleted file mode 100644 index f12ed51a928beb5feb70b07c59f872419d34876d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7081 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 b6e|dVE3V{mpB$ee#JkM%J*1;8w(0x_BMam# diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_object_reference.cpython-310.pyc deleted file mode 100644 index 315acdb31dca4103ec7acdf8467114c88d4238cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3687 zcmd5<%X8bt9R?O42||?YB#vuMCkZBL(=ZtkRx^ERTu;(GJe{_5$M)pFX$FC?OA!(X zz`IL1VyTmK>Z#|RtfT%VTzks7Gd*;sb-&+&lo?A*r^zL-_sM;H`~99O*4KRt-{0&9 z!(hX*{!WAC&&A*a6mwwf<3&57WH~9);@?nqK}K3_d_nIVxd+VvFbMa$4O_zm9R z%~N~O6fNH3-l=tB4?N-Rw|RRp;yzzHwFW-#@O89ne1l&@+u_&wOK8{m%ls9z8{CC( zUaf9^w*C7eiL?8=`y$Z~#860)Ct~`S{{2Uv>;#WSsS1)TRw_Uzp6DXDBp)K}LOwl1 z6wdjd{FsFw7Z8mO1W&aQLVeXZ&L?q}9o2_bZXSeEZ8ZP- zb2uu-BHWv#i7XPKbs8T0QiV7Gc98FFl?7Mfp~w%zEZq&uBRwke_j}v7LzQZ=RmRCd zyeCw6aA9s?lBH1R(7Xd%x1$Z^Of9||cTt6}k64WBd8ON$Uzu0lvF5v7LHfG;>q#gp(!ArFYE#Ti_0jhsLN$U6Btr8uSZv6e(k~ zJ^kSd0tr+?YZf2%sTkqVQN}FhCK0~|0X_VG1XMd#!rT9zh@^~VJT}7k?qaztmA>qN zvo5QJLPmX+WPXErBN^ZSnq@RFPX=Mg|0_DFb!=q8F>KKuUfi@X#Y8@TBBIST1$ys1m2;tzkGqq%Da=r<6R!#{frJK zwY_OgZ?91G`N6$A#?z_0=+v9d`K$51eSvoqu@{(M0(NK9ykOIyA0nkO_}%_j^i*@8 zG`(vW0=f$~JbnSad>Oxej-p899sA}p*Y2(%qNQI}ZLF8HM^)?dOd=v>Q&nqEXdSsL|&q5N}(p1u3U439aW9PIGczUkrCm2 z6!j)5m)(Gqhnt7XXLjd5zPm9WHCgB1e$!>s*T0$aOWcxO7#*jJYW;r7&a5-iFniit z)-bp{xL!E%63`K`OuDql&W!pYYBtLft8~>WhlL!+x)#7X4u9cgRTEl(BZv6O=*tG1 zzP1`XR$jt>;T(xjXs<=u3)HthMIQQv!SO{9=N$cd(6!}{2+37&5L)SFQMA7Ro9WZ!f vDIKa4MEohW^k+()+BR!lsTJcnmluHGmTNxlk_%K65MAc^9+JflyW#v7Oscdx diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_subject_access_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_subject_access_review.cpython-310.pyc deleted file mode 100644 index 5e067d559f226f93f95e923a4a04aa320c481c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7637 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 HCkp=qE88aq diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_local_volume_source.cpython-310.pyc deleted file mode 100644 index 72f37a00165ac723c77999e062e7997ca2e74ae4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4930 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_match_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_match_condition.cpython-310.pyc deleted file mode 100644 index 1735ac2b78825c0171f83cc3f55088927f4ac39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7087 zcmeHM%WoV>8Sn1td3a*yv746xK`D{ep5W<;vjVYJ2x}$YXvJoNoM;cTgm$~TW~Sqw z?nza(V-FJ{;T#a+fW!@PNRIh)xVHAjY0oQhKw{zdRnIGa1OiB0(xa|^ReklnUz02> zR1F+|G&kG7`i^1zg&t-P8xJ4jls7R1M#~7yz>3V4sjpVc($_+(fNLSLd&O4KH0~OK z9TcA%L6MgZ3axTrJuqse!C$Kk$4}F3E@G~@tm@}x!U8UR5%yJ>#H=rp-7w$*Tki0f z3s2#8d!OC!^VsW$>~8)t5v;3JU#>M8oltetZO2b~jU=C>k|dJjhx!OiB5I6XWpVPv zTVoqPxW1b2{;{IthowZ;UGxF>mi)w%JJ#(9K=Ms00^ z$!PoOj*jAfxB3-0XEbYOws1R%+hHdKQP|F>*Rw|f4whD7bVBuHz zlhv|`vHGqUEC%JE^4x5dcsZC0s?UuBvsK}h$8*7{$x}I)4;J*7DzD

    G4x=COG@t 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_mutating_webhook.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_mutating_webhook.cpython-310.pyc deleted file mode 100644 index a182f5951261a735eaae88a5381e94ba9b267875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21386 zcmeHPON<*wdM0}~Lk{Pm(ZhOq*DjAAE6Ot*k6&v~B(D`q_Ie}Jjz*RdIs(%r_-tTQZgf_AEe~8nz=t!&Pro5RhVi2TVCMrH(FcD zwUw{DJU^ElA(dBkt)_1|wrIM}t|gTe=eCutT+_$Tt$p!fQ`u(I67T6u#}zxi-}E-t z*0wEwr?pkAI*m0)zvMek-3uR9gJvAJAjGr6cJ7)R;>v3;t?S;e?{Z_l0z-t%kDw4dJS~GCj4rUVQmYhB<(OLEDHR3A*p~SoBqOC;u~GE>$X|y9@6) zcFo#uVNmFTdIwTP1Q(Nk8wC|9`Th&qCj)#xcJi*k)imedkTUW%Twa$Ua6B}dg!l)Mr>W#y~# zH7+@(j-llB=qW3|E8pOf1P;w!Bk{9J$4^rhP)dN@-fHu_9tp<$8qko|Dg2Y^(!0V`i|v^ zYTfiafgfhecf=5p6XiujUSw*!rfLTg8NYbh0e$;INy}$S)?GDByJgnv`?|6AY~Aww zPd(qgSw4SBHY|^5-&Nbl)r5ItJplWix&`vrMBAN0ar-3K#rRCWx`P6AgvvL|M{cZN zHMdlK6O2;z9k+cpc=1}Ru08>Sf~R!j-p%fmW&4Hs?in-eyyB`|OYKzxKJ>Z^RqnY` zWq#={)=aD3a#f}2)UE1%cd0?$Q>pIX>(1+(pgd!n4b?qHsn;~Cs^SG;b&oh(w*g=; zZx;E`rHo#u3g z(=4YsPG>pIb2`WAJf~mW5 zJRR@MAU)ARKghe$$>QmW4*J8>%}x$aCp+jDPqH(Mr&AsDkEc7GJf2Q>=8&H001o8s zb>{JOR;D+h#=xsayEw$FVpW);;Yd}7TB=z#WV~gEI-yi}(j}yIPuD>+^~$d4dI6ON zQoVb&64AvFT`yMp3HwN8fU=KPhDduM$O>qCy28YLoWBOBd#N%=-X{RUFn!NdG=VQv z`Y3#P5 z7uLQ`8}2bQ^m)n^`1+65+K$suYuhcW>N-{B`_|f>H@r1~3oF6iUTr$kTiaFk?pod2 zT5In6JC6NIas8z=&+^qOq{1C@TX}1DB4cDtPt6)nJ*uu(8i5e6>}e@pZ0>h+m5OCs zex-5=KzKhuk~3z~_}3}@8vI8|4te3H_bZ;0PiKDFK08E=#jv|7OoHf-e$$6o_e+|T zPU?0Fi|4-`y9`k}Xe(n&qPP&{hLalC8!) z?(JCB9RZ!^wVF-GrFP!0K@-|4H0eUkB0ThC)hx}_KB;4FA*hIKn3_EpR>ZDZwasB0+xdfnN>dl6KoEn#gckF~dDSL-dQ zglX^h-ne5sdl<39gC+ns8A&SwQm77G>VmLiMjeAnEpI6xhV@?fULbXZmMO(ilfL09 zzvbFww*Z`w0tThpoLAFAo z-5SX|w^l@>1=&l!1%%115+v)bLWcEm_hewwuqn|Km)-mgYWa%m!f+s-E*P4p*@zIx z7+~xcvRIid&F0d1W2C}!pQXmq?SG8)T%S!fxiso=W1pOR%+`pj=`WOR5r-e>S;d9l z3Bt>B5po3mV$nxd*L{4n=*zXA9u|FlfR7Y+?h9z8FxCEPB+2^fjX_^NhA>UZeKj@p z_GOJ}Y(V8`+yQ%L#RGS3C%%BtZeKG%H<@Qia$h_N0hvj zn}k@+4`HrF^xALpPmZLBP~O$7U;fDlB41lR~q(8MHh3%Mshq{8Qsv=hwSet5|p}WY{p;!7n=fSkjY zI3jA=42SO#I+lXFAb%ljt7g@G_&`D3pzR%V7j}5vRi@lWTgnzZI`A&M7V?JJtzQvC z@uL+u6H@fYkl<_CLN%KHel!+ttrwaKT4#SHf}}{!03-ql2gFItdsd^>Af&$js(wE{ zia?;i!5|Mp-7~8|5MdJ@x~MzbR+TK?bMWQZgDh--;n&&zyHxru{bmG?P-LoLIY7&v zOIJ6qtni>irw1*0cdTYpN%SXP*3DeKI?#+4wL`OT{o2RFt&mHl8+k?BqHx6eQ4_Vn zu$aIjiCS@Pt3^f<+)l#Iy96Q+3E-@fM;dUCX8wyL3RZwu3P|eN3kZd!UP1*ei}j#& zhZwTO0$TC}6A27sgOE=zVje*>zA0+Tgj)w7K@*4#BMuS~P^5T2(IJly21q}wx{Z05 z%xz@E#X_}{^B3McFxP~I1mwTk3GQ{^I-*CW3`4?@S}CLcf~0J(aCVM$tHnJt55t?8i&5Kon) z|F{m;H?Vk4DmgSaU>gj(0?SuOe=n0Suzcli%Yr(FEwcY*Pr1*01{ps;;! z-k6Az=Opd`$Jt;&tVCSd7h8Hf4j(jx;@%Uio>L@klB^zbUjKm#+3I;}l+~jJ&Vd%s z21M0>#dDyj>RCI7!s$>rRrPY+p>Sfo#cFA+ZumbCPH~$`b93CDI*`8ygkB`5bQCu( zr%LV`BvBaUA<3j|CPBa0aH70_qNj-rr{9SOR4Lx^7zPu?Bzjfh4~Hw9p%YycC2HB* zVO5RksI{<-O5DY6DmFt_geqNz>w4}mdS<>)mE(~k#R4*vVPa-lJ*d;eP>^&jVXVyPr zgC?M7h6!i@x&x`_ClU1w)EtASVbU3>tLbJSb4-Kdh1F=Hc^TLUiH0yUD0wLF6k%%} zKMo=p^T+UcBC1K)NjdodB3Te`arg%*dg?u7*$8|FQN4hMjMWf0v*LepgL^3sdIIvO3gz?f()Me0Q{6T1O1 z;P`mSj7l0Rg^#FA(;Fg36x^a0ee&~R_(XvuES%|}NUxb@y|r!Gz-x_G;HVke@oAy^ za7GBqq6n5qg0(rlv5=PG(7dCMvYe+~Gv_IAg-zLwrh}lA4-;>Trp}>*E(j&zW!{>{ zHsL<)oZPjXmIpI4gcnvQYHo=042#`r;P?y?UJNh2Exx>tKy$R+!e%4e$9z&>03i&( z0i{K>1q_X70FfjR7|ms^I8d{Kp~(`z5P*7DP|8mL2+K%yBs4H)SUtTOuXiXOLxIDR_fR|@ zibot${N{^C?bpU7K_D2l5t&dhMzoAKB;x|JVRqMR}_vHYW;E z{S@29d&VQ3D4QJ2$XvX}_4N7JEw&J08{wR3aF`AT5{yP z4RyDLGifE0@jsb>%q!hxMEkqfrN@6fQsV#IKKe95uvYO>y9>PXsO8;*!at5 zChYA?VMHymm1r3#JRCV(%3BqiEga^7y+*1YCn2C=UFrsgB~&(+$M~=Z76b!Jlr}s9 z6xbJBdk=>VF+wcsXgv-?3Wu0rbA?T6^KRv9K*@#<4L>wjF$q2MFf zBK|IZ$bwfe$8b&0ZaCzVLq4H%U!!&-2RemFFwi28$t*f*H36@b+*iR7p*rEykb-!J z6ILgbcX?uU@~3fi5q-oS=c^1EpdLa-f!tr)ZJIl(TFeX)ttoU|JDvCT)_ z3NinhM0y_>;)9PjuVd8(jv8$b;oT2d#;;m+OCQzq_Q4H}6^e!+Dq%u9>MgjD?L>Pn z0TH}^Y=>;|Zb;N-Se_rwqysJ7G<#M7kDM$ zsjk#$F@4{)uonf2jLtX0sHbZHR`oVefTSZA!9E#47hqAhL;VMbyT!$eA+88*guc<# zA3w)OZG?x~CnudjWf3==un_cZqUaWc`OKb|v&a0Y~D!~sd`Wv?czm&Lo8aNUg9DAX8ybY2i& zal#sd@;)VQnq=L~q-$g%2V~%A|K#J2jKAyp{)^x;iD>(tUd#@f?;VW}9}*RoHo&mEt57d!tSQ>U|W53n)y2N!oFBZMTau5 z=VFhJO{}v-f8`|{HHY4iup5H-9l0^ag-j?>-9s@h$d4@odGOr!84FK2DRg5 zPn=Ln?rR{2P-qZoXn7&%7Yhx_qn#APQHyDm&>_Zm@bUf_iIw^+?WZ2%nwHzfqx9v} z&5OTnd}e$$<>Qi;j&a}kEaPW78Grh|;V%2rJ}!Wf#)DKRb03H0aZJv*kh+`mv$)J< z3U3rUnTNSYbbLrvQGL61*LCnMSBNTM#z6_((&H7G->VIx@ zv#@r_I&)t~4cyk1zBho$Ztg7*GEz6gO{6Q`X%@wUkP)tbmmpilkBo7`$ft1?3a(2r z()0h7&nyN{GsgUX=4UcS`^<1$A;9(!TCp6VDVxG}nyMcfk5Z3_uF~ydoUUNaQh3N! zSbn2zzuJoku7hKuD@=7~noYdrce70x{RoO_+$RX=?hHUelYd6zA}U!l+NTrY#!EwB zQw3&7I`#;1O%b^Q;M24}{uYC9i`CaH4bLr@-&gT!lB%HVYG_cE%8x==az^qsGy1h5 zRY7dT(2zC)ZKi#&k%zmOhz<#zoiwF)=z>2Z#;h(b6@V+Vg~ioqfs^89aEr|PyPr?F zmk4BPozeKYz8s)C&5N-EMADt9RMg!{o-o;(SCJqeelY zM;^&_w?squkP;Ck&)^pUZL3P0Ouf%mxO_#W-n+pWxK3|;Do$+u>63z`i-UUvY+L_Qk zK;!OjQnE>j=uc?yJh5~-+xrV7xl|@?%osTXOg;QR^9y5XIG1u}evv<76d(@r`LwZs z?^%4$2hVdOzQgxWhu^1fsz3NXy@&kVT<&x(lgrF!8RkOH{e?H2!|T>-IDlG%=4wVOdMQ#K zj<#7r?qz*xPd)Th^x(bKr(Ao;p+FDq-@sFWo`N1z6h+ZC{k@^c)oOR6wcXr8fkV!4 zzTSJk_nVogXm-}taQ#NV(?0r|ru~&NJqgX?C0nTwE19@{Fv7&(l`E#dd1AB9d& zL~B0d%=y*|54rFpUYFOM+dUq7J>R*J7DmG9NZE@Q8jTfScKXZpR@7}oX(bs&L7Zjg zM%_fB<~Zk_FnZ)IIM=@W)_gkp-41uwxQJ=!sO?B(X{h&q^r6F|R=>+bx!?#Ma4+U_ z^YypCujV|Og__zzK9kY#TO-ybZ*}a?pgC=^rYEykqpJ&t_QliQX*nGMi-wo@g6-)8f{{3OktR z%Ipw3tiIUX#+M^`uFQ_IW9rKcpTU>od9KV(u#@Ubl~?iQRF-3>*(*=9<}7=ay@uxj z_BuO*=RtOsId~po-(ctPJj`sE{f*?zz4=>x37Nx{kN9#YidMJjVerev+jp-mICndK z?6d+ejvc&seHl4B5I|3L7_VRJ)gA zOq5_-QKrN~ve=@0cG0_m`zr2OAQ={!-bZz*ZD@~+!{ShL;de*@3#9Nlq^3$y6Yr%V zzV~(E3@KM0q8@S=hX!)i5cQF(4-3duhG>V}yF(K>o9RpNY?#X!{9uQu+sx(6IiAyv z7!TmKZ9jw$_+jQVi?ta+5+tXBsO1IjnkQnnHIDkE>W(X|=qjyM++1xHH`m)N^NAO_ ze(1?a2=b2!{nbi|8S|jM+c!}`{b!muh{wM+8l9-i8!LUkC88FW(r>I@iW}%2vk6z` zdJ&5oYdl=~YHCllWZfGb?py|BZ9br71 z|8}|Sz4gR$T|e}t>&|0J@i`=xQPS~CQ@l~$qNloT-TY#3@ypFo&-!fX=r6nIoo+(X z=LD;v_E3X$b?=`jzQJXzTwu%+Dfz+irVO_mhZ3v9Ge-~~!6F@D{oju>=q$mKHB? z*1Vw4zl|=L)AiQTki6OHhhsgcDskPp6$y@p?P!Zdu%gs~j=CQ;u&Q+Xu-Q7^LMi-Z z(2|H7jIZ$k*jSnKM5_acv}9lK2J|_nCL0pL$Mr5d44Fw}JPzQY93xE*QI_26I_}TOflHOan^TZ5HrEz4$u4@Q zTVapJQ(QD+7w_-D-_lFqFI}}sny(S}qKNBx!t0J>?f(wGo!DCxM*)SJkwQ;VIT7;& z{(g)ig+JTglh4Ev>PYwgHqK&Jla@Pkp3;w7NJ|lXo zJ6FAs_ASfY>G!a);H>U^7^1YxgR5T5zj6j6TgG#w;QevfOPGS(nyx*_YlZ-GEJuyP zkD@MG;qFuUaU_HDQ|wO@+>^1y33O32yuXa|)boh6MNl`t#?x*q;(qXyG8CyjrKaaG zz=V6Jhytc|~1&OG}(AY2@o6;PbvbbT0bFwH)6rX&e4b2T>L&r(PxU4<0WEs(q0&3KU=2L5v zPAF+PwXC50eOW|I>MzV-ZV6VC?-5c`Z)J_w4-Ex zOYZRd0>oJ&xoFQJaYko4#;yz@-6lQ^>BMdK-WT$DpGJrhb3Y6j3a6DM zrVJy9{#S@djnH0KSPrQ!4)cA=>>P(8Nms(LR|49ji z*AHZ3sxEXlDXIv;VNE#X$&sxPxU)= zOmTOGc{-}6czOeNZ1q+~~BDpHuRP3h}vuW37;sdOe(JWK!<6BhmF_YKUD{ z`J@Cipv&Krkc6KD#^9UNg+PlPGGtMJnA{tv)(F*@{i*8+-#<|Ed7xI82kGP<)O10i zvE68#f@dV5>wcO|%rd6#K(aPF*qmHXsrL+C;Ci}*>&0aXfnuUi^iZdCmHxPZ5p#8m zK7vJUXE~Cc(V-9CjQ|o3Y+i8vSwWCX2&AI&>Ue|pt0{z;Yb$42Enq~r=RW;6|EGAlHjrg~dVOTBZ=9NxLm z?&On?+uYR}9-8C)}S~^~GC91U4`ybtOS=>rHJd$&+;34-DJ~LZ; z`$uZegI%bt&5d?4SblrOn&hpv^949(G^%DceKn4jg5?xMVYwDHk3V@--a|@0N5&1X z*dX>cb7g~BEQbW9{@HHYtiXz_#LB9cXXn`zt2{KD1zu#+?8rl7!)%s#X{F4Lj%r1A zj2%~B9PZ%DiBYY{USKEHmnlAlFE5U2MRtn4q`p*m1z%1NYwQer`JvIAX0NbU@jk*{ zW3S_Vl$~WR-pAN?*g3q9GY7|hAv&dcQ zB1P{)h;9Ai={x_V>D-&8?ce6ouiDuZ0O}3El;s1-J4t4*1`*3j9rR$n^qUU)+|zgy z1)Q@eQdUCNXi*tx7qPsLUj0gFCzHfMtLF9l4a>yTYTjl79a-om! zsVUq()rx%!d8v8*Rzu61yLY9Zx;JXTx2DyVB)89lytpBCDSqOuX^7*_(*EQSz9J%96nU0L`Zr} zu<9Et22R=Z31Bz4Oq3{$orYF~5WoqR+)JmDmWPxMU_O9{US%L1087$p^Nv4SO7O1W z37DyLBQ^U_$crnyC2Q_H7c|gK+Ho2(7eGQ)LM^xAA|`~{07QdG!qoVo zyXJ=}e+yGGx8tv4AkFKh(bx>COHy-h$AV+vQoOBEU}0(iN-c=%uri$#C%2ALBt@_Y z6(y27<7+$wOqOSS(P{%NEtv{l2Ty0zW+PJgNv*@qgUC1)EuQShxH-WwHX>cf-RE;C zbRP7~3Ax_ob1w9o(uUNwWeRct@H&E*k`tXBqbf<;HKfNR%!P8VHUT2W_S~Xj!-vY0 z6b@-krI!X8$Nv%#oqt9wYKu-(eT%-Yi@vTe{LVP;z7ZfkiNl6?0g$L#8iq>Clg{3S z#gEXWu;@7Z>Ns(NCNljqK-5UPDeE#)HWQ$DKk-zi58CNz9!+h(!8>I8S+_(ur)MbD zWLpk$SVm%BHN_OM_vDDjirY%)$wquk?Jpwhy*UB16e;@(dvXr*kkMH&MMXI!hNwu3 zSsUiBO{E0jl)xb6{G;Pa;L!Zp7XN2EBrO7Jc@6$U?_}5c>vO_MY1kj?pc=iIn-OeN zz_bx_mvHr2P&-<9%k8AFa^%r2a(AH-M|`1bE0?EvO1marg1Z#lFN{})HFNHfDZC~G zd?`Y}P~zy&cWZxYTSiK#aI6eR#5z#w9*;{M`Et)g=x)(GbRi(q1y60jijmJiO>}d+ zb8Y@EjJvk5Xu%NeLZETrUL@Pz1bG55^jzqkOCs*5S$M>{Fh_Qxg1s z3eSQZjhcJaj|RL?yI?P8HTPzO)(#J^;=1^a`w|4FWQLeLnK$u_$1#HO-fl#N5VV&* zp&L$0AC*4&?gaXTHoC7m5vMR$)$;!}t}G5q+P1E^^)0sc@>3_lmR6L+daWl9dk9Zg zljB}$L!42EuDt_wW!~i-P}{GN#7oEy(o(&Dj2wgEJ@Z-A)X1vtusb z3CDe!$lgovD5~%~q=ek=LTREaDNIz=v%qCwj%XR#&cx||TW)n+QjH{Yg3NI_br%6MZ z*=hpQ%knB(v3p;{`c2vwIo!5&(sC$tgb||E#!oltMQXj=0S}iL8 z518^VL@1%?h}El3MhHedK?lvC=pa!CzQI66!RhPdXRAFesJPLB-rxdmPM6SiFNI5C zJ)+X{{)!%Ib0upctvej|gw`cNRNH$U1qh-kA&5zl?n~G#7~VH2U!^}-tTAyHDS}u_ z?qV$40~Z*wj=&b&S3kVIl@lZ!f@W8Y-qQE(ERX(N?7~%6@H~Fs^Zth3DuC!%ws~wa zuIrIso2;B7>*5Ga`;n!B`b64Y@ix(PnX;W80#Olh&-~;Rk*okAMT`Al2$JshY49777BXZ$2d=OgDT+Zx@Hbu(A z(IP9zr!{&g(4vzdGqG|&Ag{*e%{jX{7S#I_USX4_74K`j|t#SyzwOzOlxaQXGWm6byXW}L)C?L z0d*lTyTx`<*RE^KWW`4sEArA-pe8!o5VV#FuxDubMoA%8f58a+`Ur!q&VRxkL#mmj+x-UEZ)rJ>!n^8JQMo|!t zfyEJ;NYrinoE=6F+-3XPcV1meSHIoi_68R*Egh}d5+E&gvcu*hzdp8az@E$`JELTl6xKNV{lGu)%9flY80;d>wRnr%X!qCe@Xz}#2fz; z1=ql0jo8~RR5fPcS0JXc(yxncla*P8Rhh-+6kKE%*gQM*NN<;TnH^?F9%);8yTU8? zs_bY6mDw?NT=iJoLeGf|Dzm59N!2sQ=g@O1gUW1yomM?HUPI5*8B}J^uxC}zJfBC; zb7P1-&(1v3+J~6UUO;`Aon_}xA7L-Dmrx&N=h@4skFgq*qMpp%S!%gm9`{_24}Q|R zdHdS3eY@kwwimc@Y~#c2%gElN3?!jU85&9|xA@w=!cYU>il7J5=FFE$;^|UdH|)DX zu$dxD3b7RJ+MT7FtM|Ak-{sP6AI{Ob(&JwHXud(ZvLDxr$sF|58R=AF-uFY6RJxeX zT2HvZ9;~%3KmYCkh9I0(-4@<++ zP;+3GD4{hdVUj3KRTfo=@n|UzF{-bNb3=kELyQLW%FqB*9by)srC|Y(HNgLjSK+dkG&4>x*1NvdxFPchVp{c?85abBWu_zT+l>2?nM27*-#CD z5)Rml)YCK%nixiar+B$pBPWivXGlSzHGx+DbGf2PjoQ{DWf`qN-1<& z93zknqe?U%BPZFoKT}XXi{oqSu-7uI6;VX_rtuaA)lW4gS`ID zGL;)Nfvy6i=y1TPnZvqAu7sNC>UQhe%5Ai!hKCkRNj=NXP#FH$$&iD9{d19yToX}O zVc{X`MeryJNFBEw_gA|7*SD!2PRobH@8>~})6c6o5sjrsrG z#gO3QMdIecoXkP_PS#1!4DV7SRXCaHgVGG;Tj+3ErS?-O21oLerKM-O6tRHub;JEb z-jU2CcE^L<_*yNdojeCoi`0b>k5k_oee5rnGiFzZH>2YRreM2 z`xhhfrTf!Nx-+TX zD_I(vN_FO>{Ukblr!Db3wlO~NRRB66RBC&l_WK-)eMS1)9g(U?_p1o?zz9B1tO`k9 zu!m_c(~Oq_?+>U`3HDh25KBYOeMS3=9nsFFeTs0^;E{M|PdvDQckj6+&R|z#5z{Uw zLj!929kuTfG2H;kdDHzr{y7R?d#Fq8F%k&(jBWib?MH9?(0FJ(EJ&mchQ^lh(3IxT zl*KJWoRvk1!~-)PX+v|%*wPU@7?-pM6y|c ziNx|_KZJRN9#71`k7ZKmx;=3gxYYWINxVyn3QN7Ht_Vp9H}!rX6H}qkousHj^GV8V zAo)Gsn6R0~3B%Hn`9K!L&}*Ms=AjW(GHU;|N~SS5K84SF7)p68uTZ=^3l_}S!_?M&v(F5h5X-A|Phm654 zCzE#XA()0Lg2@p>IW;u%HPNtrRXEsvSzPFvNMXwV3A0` zAf9rAx1SWmH;7omu2}aZjXjeh#&a>D5=qH%_yfoJ8%C>)mSvdwkqJJgL%uZq1x5cW znIg=hUnP=h54XidBK~zMcAuR@ZpaR3>Bd~Ht^!7z znX4;SWuanL%vxEgK)oWa(E8s-kr;xDm+{d)vy)G4q+vP!^~wFClBSkRX~dtZ(v%Ir XIj20mOg=HDVAeFSJ`$`o<3!oalr>t199dGQ^EmMn(8nj4M$BmKLhWkMmwwj_ui`9xVl2#^n z>Di%d5i|-^?!~8GdT5b@)%M~`|AHQS>#0Bw#Ui($1#;=dKo2eY@q05QB}-)W5udu$ z&g^`@dGGh$ym^XCCD*|7OY_cB^{iohN`>u@jl%nQlPgG=Q8$>$tfpBvRc_TSm1pW1 z+|R%{qgFQ4(g$(06fSqLDJ<8Z>g`Vsh4=9$ ze?`I#u-G8>)-wfzSuE54*&k=?U@ptCJabrqQ8~*lu?bduY}Ru;&r0mbV`IatJKR|< zu%p9Lo*iSyRg24Aw44~0^6Vs=R4o&H0xhS8r97Kruc($HFQVo2u#{)h>{ZoL;w7}4 z8I;&rcJ8rJKf+#P=aC;}9(x`6F?NAnM1GvT!M=d}1akq3FQ$_p&DMezPuf9)gFh@J z-gKYTZqHwz^X6B=#A`HzB=PVObY$%9LIsIxh>D65&mF$Br&LtO4`TpAdK{}N(d(sJ zLDUJF&2>Fl>M(#%hAp0E5-G~rbP@zfUy2|~6t%u;%wrQtu*}n(09fKE%_TCBog}s8 zdYjiz(4hI@n0d@6@({FeC@D}vnpkU4<=~-j3-1Sb6M>|cV`j$?d1-7Ik8-_S&+ws% zNC6b2&_blPO0z0Of7IlA=+!aB#U7QM9(tqnX3s*Y(8DN{W_uZw+@6heqL)QlWF|yp zb!SJ3$eZy3uN5=ig!(Rp5p*Gp2D(!#mjuzBo^HmCpy{s#BJmsB(Vw33M{?2e2W-sy zeLm*>J|nZf;$(@1WG-4^6v$WzQkzknEay`@;mxJ79mE7iJ~PA#WdC?rU5Q(~y4(pH zB5rUg!|J_vk}4L0)rpp8+A&M2Ydl)3Hp9hgdtI)?(c6{Tx2k{up8PtaEC>OBDS z+FW>nh&vJUNKGoL^}$NmSn-lhyB!Ox-+&l-LwYU1WF=^V-ySsm2iLyyZ7;yMZ{EFK zt9ah`^=z;Mf^QuYOE?OkuRw+^=)44@k4bl*2(*Pc z!DUB8WPrH$xj92K(laLrzjNNeo+uMU4bMzbgkX>zN2UO&lao{=ncc$soHQy|=$1!H zV-%GQ8Zmh2n_h(jGBwH;;5;WC51s%EcMp#ReVEc-{vV{@4n)uzDfgF+h%tbui75!E zY-v0w3rALJ2Po!Im5@kXcdW*XQ#6s;{moF(`}XxTq%> zK#8{b3MD%>Oh@4YUabXA_v}b5=unB4`2`Fm&uJBBweqG7QIr<5Hq4)x>Li61 zjgvIf{mT$x``O`^VR^Zn)>cYWpwYS?Y7T(bZsk_A249VNNITpkKWss-v2fXIbrPwr zR*T$Qr~xYrWn1~%>6G@1{REeM+zT*)x(%o9M>NfKA>a#=AP0(|Zbmy4f$DyaSGlvt z3XbVod#b}HLv+HVh`{i13yNBpIp6PQ=^}~Hy*KS!u>QO}(?F&bHH`OO`ye2`JOaeD!vBJ>I8WU4C?Tc~ zfJ%Jc>9kPYZ>j!uBriZTiwg4V$Qw_7h9oo|nbLTQ`}wN1X?|$@=)E6WkE}--iCcNk z+OQtk((c(ZyJ3k7GAnVfXVzn*XK%m)!TwlRjQftv_iUCyk4n#e>THsSuj^@K0rl5p z0V8ca@~OLNY#)uAf4_f^ELpaD>5jSu>HDF+>LWUb3!Mx(ZejTISlEy+?2B%i8N7FC zU*yC}SWRYP?LrT`+eAZ;Zl6{y&CA%Q@z1O@zY-*YltPe|MWoDpxPz0abEO%y7Flrh z_cSp%y;DZFG8)W!+R7Cbdq}S0Ll0H6kEiz1klJYk+(7YhP@b7q^iM0=mk`HP)Z4Ys zXrpREp}sDn2*Pbd16n(17c}u7@FpbiqB->++bmBYm=r!t3+OLsOp=!R;X@VVNYeZ= z$I&ZA>V`=e!LUXRp4!bYk!hwCw8a~kORb;U#KbhKW+`Wt(?~I>q|=nCt)?*jG^?!i zPRfYgzaz@%!?q?Z*K|!AK?ch#{@b;W^h-Ib_%AnSTVtH=z8rUPmSV>W-{jb7Y(KR& zjZH$A*{y6x7d%0_^$Xqx;Ru_kGhyI$DCm_lX|CNyFPY}sIBZ&h)a)N|;HNo|gem_- zTO+I-vBsSGy5BC!X^f(rTrS|&Al!oH(>LgpQ&cRd(8Pi!X#w8HJLo#f08@a6_T~G3 zMh``fV~q{q=$^Z5F{zXyh-@)b%9K#4Bu_2}$OBV*CZ+c%&~9y0TzF?*xa2Lya>a`m zR}o~<;S+uz5zZUWGGd0Prr8xUpXnQCnniyucAzEA`98nz`=6kt$)zniyNrI!3-uF}2 z_W{CAlfH|-PwVwt^1hG%6F|aW#>Dj!sav?%k=!R8okU&g^lj$43gjRvjNl@8tFCp* z%U2$bIz31WHICk;ulFeV1|?e?QeP@8L_(v>eR2nhW7wvZvm6VWOTXMdt-{u~>sV9J zYu7cc3FHOj_#Wm|U()SP$vN%Vj$O*F3#S1~j1nm~A<(gJ5UTn#}wcQRL`z diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_list.cpython-310.pyc deleted file mode 100644 index 49b65b7ac5b21d1352a6ad63332d10fed6be0199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6901 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_namespace_status.cpython-310.pyc deleted file mode 100644 index d95783acd2388099e538cdde94a478dbea36384a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4563 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_egress_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_egress_rule.cpython-310.pyc deleted file mode 100644 index beadb61bc2c5ff64edd3d36a188e5203dd30a563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5822 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_ingress_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_ingress_rule.cpython-310.pyc deleted file mode 100644 index dbf4997c9719f7649df8981f4caa026c30eabb93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5962 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 E2GnJu>i_@% diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_list.cpython-310.pyc deleted file mode 100644 index 30c03f31af46036835230f333062e69471a0cf44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6816 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_network_policy_port.cpython-310.pyc deleted file mode 100644 index 34602b5bc9786390599bedf108989ee082b9f2f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6099 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_address.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_address.cpython-310.pyc deleted file mode 100644 index 7b87cef06022d4fc00120c57583bc36996811641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4268 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_condition.cpython-310.pyc deleted file mode 100644 index dbdeb828c0968d1574df349b7d2659ebd90c5142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7551 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 Iva^``ADoPl$N&HU diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_source.cpython-310.pyc deleted file mode 100644 index e562ed9e6be971a7de600650e941533182b41d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3484 zcmb_f&vPTi6`tuCNu#mk-GyaqofOFcfkF^VI28HeTDI5%c8h`tYVG16poZ~u%bMNM z%xrhd!7BM=pK{7Mr}fe2oN~z@GS{3qr-}nrWb?fq$!l!60u&?nubJ-G?|uEf*Ux#o z?OS;MZr>mNqitFLroq|A#o!$jbqf`@1{SwDOYMPeS~g&&bp{SvCw0fQLCv=AS={Bd zBa7EW{m>aSINP#1_31Z$fak->j*ywqLiuLg&jT)0ER#Yfc@`8h-%GgQ!K=F>6Ef21 z?(7F27b1&_B)C_-%w;grx=@?F-fp5tlbvpyk9&DFN#}X07K8PUZq2{cfHOlidl7!geveKKnQryn~`LRKfzp7Qs7knigl=N$i1( z)(%Y{q6*2v(!Ud(_ShqlqooW;AlSy#?+ADmLw1 zgeq7MqF@aCQjmF=WMD>;Etu5r)Fka(-c0j2O2fTKs<6^>&V_PiJ~rmHc|!g$PO?bn zQj!aHoYGYy9h!lx;mwI9Jv86`r8mmQqPIIqVwuN6>!kPakE#a&aF=X%y~w%h?TKu! zmnJ*CVqcH)?9J}R8$Fe1v0g;+!)RBi-osO`?8RvU*7uAxSh^8ruxp{8GR)`}`=u9# zNtWm^d>v}2tEfCyxA8;mG2eEdOmR-728;`c&JasoJ}2_nf1T|*7o#Y_k>mz zD^Ab9a#T=piTLwAZU{zUXHyD2kr}aB1W&p2BV>^jdN!rrFT^Hxzm$ZhyPnvR%t6yY zV@|B9nlz-7{R4_3cGSJ;^GghRs%lKL77z8Q7{n-q8N&hnimnLt|YL$!L5A zp`Qb>9}ZYwuE3ZMtMDR#mVtH$?+s{v^LsoZ#~{27Dt|*Ku?}o)J%$HAV8`}*))#Mo z&JNgtqn#Q2|BxNH+MT(&cF5$5x~A)Nn;ls*_mCahK$P9G9(lSkbGd^V-I@E?J0_&7 z_q4K!_jhy?D-oP&+jh` zzTu#3p{N_EG(3dc*tk)}OGlF^W{AwUoHn;Y+3c)j2Fn?^YU( zcX)Jrn*hZ5M%Rd`@$D4c|UPQFPob`^FR3?yQuKO1>(am@jFKD%zJ5jPrGNCrL;u&N9s~QZNzhvb1YIELp$6l^`gKmT{engF2|9sz;8kLIjhP#7yywR zpA1h{*>r8W;+S~8AKUJzZ!IG`4VZdOch)_WK|fB z7Rq?+lB=egcOh_+D;XGng$`WF)^H`&pz9sV0nnLE^+QTq*%^nG6A>iCU?r8~9qE8)EOIZ+xGzZbB-?>70LKclNF8weB@g^zt zTVY5$&A&9l5ZN})m15hVO%9gqOtheMNYd?Adh-~$Z!XQUu8`>fQ*yS7DZioKt5m&4 z6%p-BWv*K~nCDQ8XL^=vv%2fKPu!aO#CKT>UfT3+&-ZS6c-?B4gY0;+OQK#tRWd2$ xb#w;5ewr?It8@wff1Jtft8}kkaik)|5`_?cD?DyfxKqS+mtlXTPc3%c`5!0rb&vo6 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_config_status.cpython-310.pyc deleted file mode 100644 index 2bef76060b03d72f6b46bbd39ede64e3f36cf2b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7484 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 M*dImxdFOQQze^=M-v9sr diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_daemon_endpoints.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_daemon_endpoints.cpython-310.pyc deleted file mode 100644 index f877360f90e6337637cc46dd775f5809af260a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3550 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector.cpython-310.pyc deleted file mode 100644 index 7d62dba4acdf6ef440fbb4f91508d2b2f6cad8f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3782 zcmcIn&2JmW72lm*lFJn(+lj2oK+$fUCNPtTj9Rp4Ro94-I7U!_E@UAE*d(jv&QM%w zxl7Lsg@~Xol}<$uJ@;fC^)KzUr<@D)P@r{xZZ{EE3dmqe~mwgN0 z-|X%FUv62}-)V69b20c3MLk5tt**sw&QiN;o0fH%X`QZv)=AxArCYJBrxtg4<<#O8 zQ9W_GHO`(}&FbWzet_?HnW55~P#oDbW1xk=}Fs^)`@8JS!*gW#%gu6q3YPXnIEUBmvAdq|_UqiAkN6UAoLXI@Hfyd^Ede_ z+7(`ba@LBK&o(N5HH@-xl%_`|vEt1PoP}z}TBwB_s>ynqDE-H)T<>7zi|!rT zK7R;JsZLD7oqyD4C?BDycTr6t=CLJf+B&h0*_2JK5co!odDPC7YM0v(6q~$v^~zu) zh=L(5OabG5k^vJ*Hpft>S&?*8v7Y8}l!k|qRAGD>1;uK(;BnASLMAaxvIxqMWQ9$q za3O-e8ORD|&MoPo`Il@D@}X$&jgwgBvCukcAN)$SK>!w$?QM*5uG)tpJ8Y*(uRS`_ zgFO3rYx9G)O0?J*Me#wjCsh03!Z6!$ngIB1^DG?Qyvk#1bX0g@m}H3#!}q{}YM}C1 z)y5xcpG|&nRY;{p9C)lPV3%mx=+>%0%Wkx0<46$nf{f;~m zDf+ggJ{pNF!`>oP8*8DBOr8(0X?7T;2@g<@MbJk8+g+fG-S>mx82BWg*b~8SC(p!g(>3PaT`SEpREUpo zC7@;kN#TD+G@nQbPeIUVvJx7Eg+=&yjCn;HZ`VB->lK?Mzd}n!|9?d%v5swRy@Utc zXJ_`u))&A1oE@`cM>|va%@cO)YIo}D$_bPAbwyVxA2_w9?g>x=jIf8+3s2XkE_bk_ zHFaNlXV%3$ovdU2v99AJ!W*4@>7QAbPfy+X{wblYGI?j)SYGKJO4p05VI-tZ1Y#8a z1D?eC%Dc$VI4I9i)EX)cWOEyL*Qa>h85XAGdswHa={%(K=d7p=A{A*Z}KHs_E^Bz(F@OlS4JNFFd z_YBv4WLAc6xAQeU(GZlTw}K&9cH!fP*SMBoAycvigJ}{= ziRYK>%sL}P*^|~~L@6y1HIejDk|778D)b&3xgJ$pwn4LP7{xl3|tT_$l=s zP(``#C6)_x3O&oUS=II2S8m09<-2SN7U}!8x9qKZm~PaJ0-K&}5rLne zDwq^<6`k&nUuTuAGJN5e+NEDXWqMpKu~7oSu<^PghTvvPc|0Q5X3|ZUdA?_Rtie{D F{{nFj)_(v1 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_requirement.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_requirement.cpython-310.pyc deleted file mode 100644 index 404a9f4a1d085073f81448aa5504d0c149b964b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6079 zcmeHL&2JmW72jPh$t5M(a_l%(>ckTVP0LmytvV?h)pcvcj^Vao3fl+@w!vz(GZNQc z?$WbE#Ukh)Dj$lTdMi-$U;#PQz4ZTC^wvvr4v<5DH2u99E+tE%BBw#oLzm#}%kQA&25UklLW!)d+wGKbk%cnqt0+xaU#6Q8 z7o2^2LnJ~53e~kO_Fi8kK|f+QO=l`uSE+us(rRr)sykR~hH0;rnn5Z}yPbDMO66=pM7j?+Z|7M_iB7@(yH93X7L7L9+`%|UKmRP`gkaP^ltVap#FG>n~Z8vI?2+PmK zX&A)*W*{>^+-q^U>l42b9jCB zn^rgNiPpv-3S}A!rJ~mTA7m{o3e+YWOZ}8*txb_^w&G~5)!$OxG`ZYdzSPPhC6@X@ zct6+>S?m79Ikdt!f&sNOyO_G{Ct%zM9ooixxoc$2K9uPDQ4%TNZ-JT&p3L%`ijAKs z_1m-Sw)@5K;#B!Ii$y{k3ltC4=}#K}gsfs@-Ls%6d-%_rLS@?CAXno)VBOP~Kg02WwC(t)seuG2(((7WDfN26jrD)0S9~LJed>NE3P$?aZEs8X|k#%qS+|GZy_Eo#5oa2l zY#oQ)Dz;l)WW7PAw4+-SY_**xVzuFF80KdUT>K1YCxJTR`jE-%?-RgpNC{Mv3LB15 zp>}bE+{_vdG%0qSuXw@c7vxyPk>+UAoz1H`O8w63%|E zj)$pY`RC`2?2eu(z@qp|o|qNtfT+J`3{{<9Bd98x9smPM2u|lI1ya{DZpi|5` z21C2}`JYmc0b;?2L1WQ623PxBsZkQtbQmNr9RkT>tD|r!&yWINq=NKZpijpZ`_M;y zAq_lB6*_Q=hwAhvCt2X`JiO)vcLoU0&+^2-UrPWQ8R#<%ejf++1YEaFP+Txe;oB{Q z%CbNgMa<*<%@W#2!9OKwvLt$awbf*YtYJV&>+FT)qCQLyU2ghPH{lEj}9bSU*r<_jpd_t150{tK+kJ64OpJilcgl%;hl0LP6~V`lubt5%G#4 zZ>n3#$fWhbJPuuh)3C~kgE=;HyYA)xcKF}3L*qS-l8o;>w!)6~oCl4uEnkAA6wZ&# zZ+{3$eIxuc3I^--XWSo!D&!o={bheZ5m}FHWj#SIb#R5lO;aoh#M@PgRk(l`x_?a-VoRWX7hSX4cSuP1P{d zH8Y>ocdWg$k>!oYk0>H758t@0!*7!em<$aU8OSRY#qH!!7>`2r3}58ZOZeX*zR2k- zh=AMJyEX!MJNPi7Ji}?{Rh9ZQ|EZH#yFnHxB_-uJxKywo?vrKiU5SI<8V|0Lth7MS zTEolJWAgFZ%_}-@%&wwh=Ibq{ll;bnj;yP!XI;E6IGaY;OUv>AyxK(jxKd)C@XZYHeO8tO%=@v*^I>ms-%AYtp)(+X3 zJ#6l^v++rd6Ul_kI!ZQCfH2ntxZufPzn%O? zJmPFHgAb5T_|@do;Tb*NJpmU5oXpNv`rT#tXU6c=C$xiwC~{7mU^!R^4&!`6Fd)CVXXXN}8MR zOiX4PH~Qv`IJzq@5i847JR6-7@rm&LztN{RQ5Xo!#56M zs?Yj9Z8`o@^?h8oLVvGe?amybFj^ZZ;S+REqA&Nx{&Y)UH{=!MfN%x7w{*s?wJFgR zki1OATU6|FvYT6x$|x$&R#14BYdaOka{%MY=T6nU>lJ4n;I7wgXYSdzH{+f2T+f}Y zYSlM9`8Msdh$45SkQY$tT-d$JYMR^}SJZp1f6ZN8#aNXwp+g9TGdB{uN?tRg+ZWgI N>YnX6v(A~)zX9!cX$AlQ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_term.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_selector_term.cpython-310.pyc deleted file mode 100644 index d5bac52cad2f4c06af91a5aa6c7fb59a0e8fe7a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4589 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_system_info.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_node_system_info.cpython-310.pyc deleted file mode 100644 index f7868bfb8ac1ee6fb5597b5b4ff9c30fb67069d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12214 zcmd^F&5zs06(=d`W3|$L*z2{O#4%$hvE^o^UB_S9IEEcNc8w(Kz;<#FQqWw@?25KT z%EOW4RplOPpNgXBsV#~e>_ZQ}^)KkTz4carmjdY}xwHWSA&PdWJpKO(vs`4xGQx< z+%xqI+%qk;ovmkO>54>Dl6@qREX_U4)bm8SAysm{uZtS|-tDeaW>HR^q6n|q8lg^u znH_H0meyhRJ(EzP9o?iBWd?`G^)2mMhgwF*)UJ4uHq)A%cbwH)ZPVnHdi)Kcv#*6vZ8g-yuYOQtmD5JE_yt%_TC2!z`J!!Yn44W_6jay1=;&`6 z0_Wj!`m!WZ2}~@ZdFz=ei6}9DnNN##6%9>tBu@%tiWJE-DUmY4lq`9J%#yiBay>`$ zWS;DLBt4Yt1zNa0MRtdwJXs)nL`snsA!RWP<;h;MPozxKX-L^0hVtY&^1MhX(GsM* z5Qg&P0C`cQlxZ1K4u+vT(a1|8Wrof`%AqinCx^+)B4w7&Ldq*)C{JD`M?}gTor9F4 zVJJ^3n^g z>^Z?w{_l6o>_Z0fbV_d!L=@SI! zu<8#`n;>S!S0)Hg`MN-%v!N{UW z19G;nf}HDTLC*JcAb0iiAb0l*AQ$>mAoui(AQy=Y_)~gIqxjR7G(&3xBwH|AZa{Ak z&9s7{YOS)DVY}RYExTbr_ZrO6!RCX(#x3hZU@7PUTAsrf6W}tdkKkpu9s`&;5gA3y zv>t)XydHK`fSD;h1Wn106R4?|iHS2o+q4XBGXWx&gNCs@iUNu$6gX!w94{GmDJ!Fx z0Z}QrszX~F+t0~nA^TH_JrB3PcWX_%O>3K7v%%~J<=m{@IpfqoHJE~|&83b_oZ3BV z-K(|C^;&0(H*M?n>dJD>0X8mmjK&>+p;JR!c{5$D(K2BssfiARtSh<&T^Tgpgz=@? z*>VfIZdxYS^|wF?XBk96$;t5NNqma_jl~w_-u_YCRD&`bFsXz;e8vlj@D&=kFWr^^ zcyjNvE0jB81~b}2 z*8Mi@J#Ox`-ifQ$J)>n34P=*U8?bo06*c0m*R*!m;bP)jr`oMG+oHEBs-UF1=ut;^ zU{MGI8x$i}Pj2xeEbJY|V4T42tSDZ0V*kbUDTR0e^|`5nTvQV2z+S|{>m0GUXDhH)9B6AXp!F;GCcHA_Jv)p7tsS6JOky~RH3}O-Sk37H6!q8wo*M&Jzhx%^)Tb;qBV7s!tRV8^LL@C3tc_WaHnHsT)3EOR#J3jf6=z4LyTC z6Ns>Y)`=qme$oC86EzUM!{bDN<_+)BOd>OK!` z9Jgd!jRX5wT`2*N-4y^{>^Y189^?K1S31CdJ_Pv4UPs1j-O6| zcBG<|xW?WIa4ojcMsSUBpTU(1*9IO{gwP&r`lW7ki0b#fJ?6x(<;$>X(6!9Fuz%oJ zqrrv%>~3$E4Y47B+o8Cx)M&w00%hG^BnYu94jHN^t4-c+jr3>O zw4vRs9oT3B-4?O4;^>C^qhDg82BP=;*t{}OWfIejPoj&fLB8Z}9`Nk_|KX1HMuCAn zya8YkPPWeoR>Cfho7RrUaDPxoO4=hz0@{m>^AXx(+&|z-Mf=`gL(Y%x?Wb;XNDth_ zycV1)Y2H~*{N_W<@huu|h+jL_C+vdwNo_CMCXQuz05Jvh@L2ZJ7|TW#n#8r<-@;jK zG;6YL2XuROYkHs_t=oh4Xl$}Z+X48Q7=Vw~loICHO##fs(a;FYF>V2SE7hLcbaZwL zj;vC*IYjui8=5$nj7PPYgld#GYPPfFdm8v3^OxwlX;|8owGV6W;S{8u){cJCq_nqH zN%>8`ZKWsBU|$jq@CfcuNQ3cXs6dfP@HbQ_WWWIbY&qHH1LS|lR`zM)E9lc>qPp9m z#c~`i{2Efy0lO=pgE%A|p##P(rKZEDQ948p`;&WTq`4s@yipzx=wmri)g~|Z2J4F9 z<(+WQ2-kg1hcybKox!$zc%lp_ZM zDHu5rJEKRc7O(jyhm&&UtaP`)^L>?M;EifueO!1Vh4Gkk3gR#D zDafgMIUg6FNYUKje&d(Zm*LDk+k5r8a4_&39XziZaDswGC^sp1b-}+z%myDjl*>SK zZeY7`InCjGpU6-*xbHlcpFlz%eJGSQH_vSy^FLMGeA93Y&KY|Ja)1w@e1F7}ZsBap zXs;9F+{a)}2mJ>Y<4&RcBCBVGi;r^-9=vR#4K>{lZiJxiJZPQSFLd88^xgpP zOrg2D_64XQi2|8;!pxww3T`d!5xrRj(y&?wJG&$={#%tR)8LwB-gl?qeTI1)w+vQA z$4wof>bUt$%F!Hd(R579;fB?quG%sk?q=FXhaCy(cU3f?n-!&0vf^yt%`xh9TijJe z5wh-Pg-5}tW@zf0s2QHcs>*^=l#8+ot}}{U`d3k%@k2SK^v_~WRbtM&ePfSV6}@2v zt`YtorXMR$q$h|fxmS&%3Or80RS2gyP#UHPZ66<#4y)`zOAccf7=w|^Gk~vVw0gpNaAsVwUqr8JI!%Bpx z40e9Z4Q<`#P0e1v4Ni~1QrN?xcfm9A^3x1kMvbv_VZ^7NJBXWw_hI8_c-`aXbe-PS zbq-AsJ|RU#mFMCt>b9xVHvJZO<4+(YME$TWTuiL`slCEQgeo9`~Vc7#+TZNMAW#pH+-sKe5I30EX z;@pBiKyC>SDL3bUTO1e`$)DCc&qKFB7J8Gj^C;d%F=(oI5{_8dmAF~y{0u}vQe`El z6cpg_@L%q0Wo9@AL%FYuW#s^{zF3r%^0#v@lneU`YC$dK1wK07_#aE(PXpS8Hy_} zcj?)o5D}|OCG-&V&|ZrktfT&!UV7>tdg&?W06i3FlHZ#pDOnO7*X@$~=6mLS{N}y4 z>GHB`;Q6z;+26iw82_Zk>BmOnUA);X5N>o0ZgLizT~n8=%XDdVEtFPl4=de@Y1}oq z%`1lnuZZe_)va-M-)L4R|8hM%ACG%NCPInK)$LB|agl{G8mTBvypc?IBQCi2gKd!r z87NeHd)_A_kp!d2yIXdq(i$~M~V?MMyAy;hhG+i5vTrD>ea8f(*SQrYypH@qZ$ z6l{1OymNECJbh~*yj>wPIy&up3Qaod&b^O3o`&P0NYsWWMJ$3$tgW}+`nl$L%7tca zW6sI+_>&V`N`wRVD`?K>G|gi9y)@}Z+hYiY<3j2_{a9$ci#PiNh%lgHgVfu#>IP@{ zS$|<&n-r^S6~4-A+&MJ6RZ-)0?j9NkX4etUPMt5!TQ%O`%X-8WE=E>nEq;k#J~X;Z z{0e^oWrM%SucBP$FY#+ASNL^)1LY-Nh3Q@{u0L4sq{*hp(yjCRD!Wey>sRxozBhI(t6w!{qI$up7?$W%PCLrNNF3DM-78y9K`Wn zxmjUlN;X+xj{-F)Y*@7?D^R7Zf^{lQ;@H;kSO&JHqzLi_K;RE5I zFaRh&6=46QeEhE|oE_i;C%EH-(2fwH_cFYtyb7cmguj}pKqN@j5D zG;5MrDsIGS7{vZ=ATvKa4Va?hYso4;i3U?ebZdrD5~x(3NZPauI}>sLq(|1U@3A45 zQ2aY@57MD%Z;zu;rlC+OYCrs0*2Y%2Udi^_DCJpuS0uabIO?@Wduos-KWVMsY-f=Y zYoj217;KBI{cwJZ+hH8xmbA5CSi0^fY2wQ%RQzC$mDXslaC|>XBIWyQ;3c~T;;^cT zpQcoIOxLu(op=j$*qUt+npix0s7^20^J_A9ZtNJag*o}hU7<1!8PZ*O#evX8yI`eIIn2@RyHEXBKo%p8SXziU z`2yC$k^Xg#vuBdv1ZNMPPiG~>=&TZA&vfb;3zS-e-Y$aJRV`NuF;djo3rl^UQU8k| zPXLSnNuxSq{SlSO*f*8&7?Eg)9hvVNpZ?;vY@h903b89^2W;O~c5bW60h6z*ib8zi z?9j;V19o8IGP7I8BS+P8n_HOC%I(L_5nb}KpH|kJ|a(+&6 zuQGXaQ+vA7OO|mC+1yA-6$vB-_^3UX z)pWpOhTp_!$?z(2G%$Sy%v-BkgjLOcAE~bv!0voSvTBZ{u2J*@?>6G<@C^HM6=QpN zGqQQZy!NeaHkXj#L|+tj%$Kw#E0(7jr%zbRirThNq?N*rvM3>65sJc&qf8anFc`_} z*h`;Z*rdmzqIYRlG#-m8LiRXTg{`+R{i3oP#A9)mGg8P7arQch&8{++0yaW8GaKKy z_R6$XWsU#1Rhvy-`yQR2Q!eFZ8s+3hON2jWN5&Ch%$&4NV+@fHDGLJd2)rW)(RuYO zjn@EdT19mHkzjV5vE?`N-0?)(R}~+n4vjx*wYfDa`HK^O4m#C^eQSq ztEq6kvKl3;;1H_KO`;F!BaNN9#BwaWsPFYs%A0ySB19q;NZ}#f3E~frE$LxDNxN&6 z9+#oBs9?U3XJAuQeP2BC{Vy?FCulCS&C5^GZ#n(BWwEp@Kb(VQku3V7g5=qfl#$97 zktgFmv7QLu{}TU zcX^&H`*dHI(N{QA7rLjjxuTjOWrupnFO*2u@cA({ZxVTn$cY5HrjtQ36kXnoWONMM zWL4%cv-%B6P`AP^;Uc@P$(G8}S#oYTwqrMH+Q>~u{*?A^f)q>&`3frC*G@hJTIGiT nzQj*`<(A(x)e=7?ST0}=?z&XaZSss6@oO{3bxemf*j4L0+Y&je diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_non_resource_policy_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_non_resource_policy_rule.cpython-310.pyc deleted file mode 100644 index 03752e2eb9f721466f5d178a495e6b45fd949c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5506 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 O%RJw+Jyv5^oqq#zJE;2r diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_meta.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_meta.cpython-310.pyc deleted file mode 100644 index f6abbd0a1b6f5a289b93c5e582c1d44787cfd7b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26592 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_object_reference.cpython-310.pyc deleted file mode 100644 index bcc09549d60cfc00ba6b85c8892a9399fd1bebca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9919 zcmeHN%WoUU8Q)zlAEF+%{EF?w&PGmLGcn0HZIM)U+yseZq-o_Ka&llBY*srXajhkn zo*7D(N}uFYTNFJPJ=ljHd@0a-|A5|$9=ewvdP)zy1PG7bq65^gUC{ z;GPNXMz)qUjT;8DS@yocvOKqwspXlqY?N}_pB5eb-f6FJ(d3HDqK+>`4&%}nK}!Wu z(`kulBVe34m)3Zb3s2#3Wy`tQ;!Up=I5(2SNH}$+T5_>kT?}VRxvw3z*=M;GnImgpjo}FMPbiB{&miYa8q2e@>`9$7 z%V&}ER2s{(bL_m%nd5WFc{+{dnZusZIY;;r;ilCzEL~Mo?{nrpJ(4p_#ncGGL{c#1;V@_Zg265P4_`W1KiR3PikG81&9!nXVzRoyn;X?ISgE$QR6S~byK?2lstgn_18wWx8kg1e)FoH_Fo4Ue zYE`1@6*tlZLr=R5tF*S_g6js&K)LSA5JG+jLBYzI_)9{1(tng%z|-heH0>|8&yJX} z(reg<3rv6XOcw$66VhYHxNQIk=JsE2a3wVX2h5lFanOFW`EervjY;GRhDL#IhgD^- zI*Wp2g8)-v;yvPYRSWt zM6(aROe*fNZXyU82$axymjQoZ9oV4;WIbw!%z<-L9vq17GG{L#-$hKd1JV_HVw9J+%r-IQeSmjb-YNcDl*z=Q@KCC!zVe-ZAdW}}d zFFQdpXX?tCdI=hJb!XDL&L-w*S|m87uF#uWSmmvwGhJcZ+zEqqkYPc#xIggfpOO2$ zx8PjbtYfHm7AU%qs7}9%W^R<0n1J_GzyU?rm^K z!hbuPJPgadack4tqCWIgNmd0WJfU_$Vt;PwFvuh_({B&2G)KfaOTiF@$T5eM{v?9! zr$#+eUzj}|l6VSrOP2Rf&@1&s{d$RQp~=z4`;O=vLVZK1FO^WqAk{}$u_tOQXN%kV}UbHgn>HQ{tuu=EnL%HVNB%sSV~p786KeEOI>@hT=M zWt1atj1{r0G}r}FjVzPIa!7lrT)Spo2kTpEf$>wWBc$JP&W$GSJCv!N+o@6iLt;#H zYtO22Tw6#{INl`hO zJjp6aCaV|pZ7(r)VgF!VNfkaG`$tKgT_X0zyn!i93h^8%6o($6AUjjDD97wzAr-jVvrES`*nxl#d5MR^f4n! zc4@mCt+b-stOr;}>jhwM`G%>IbQ&H@mdajp>noo?(O}aSv>U!fb1NmHuGgQA`;7W}C_I5a zWKPijc;OEM@C#6C58$Na;n9oI{z2&@0H=LvTKK<#Oa2-`VB9m6@c<`kx2=cfo5qK) z{?xi>-ODJPqjjtu>z=Lbj;*pgmRL|(g|jne-8VY+jUyW=}WYC>u>K7efC>-E06Yrktpmz_E(V^oUYbnmF$ff#^tTcN z2Y2HslowP-#;vC$0J5;f)n=suti-UnSAC`=C{V6UjbvVJZ%$d)N_FOlXvu6HX z%-PoVnLV{VqE`BlL?fFvkP}otupSx@30LNJWe`{0vkbvokQ!S<`g4h%lh&XsW#U|` zg%b}I=Uc0hXm~2o{TNpl=KugSNzO{6WX{??JyvcM8WEddrNyRY7~pCUTp{pjItBSi zi|`Q+Y8alANXZn7C_2vR(zz*h%5{(RWGPtVPeGGnBMz8oq@|(FLeR)mppnEeIpL7h z*)b_xr|)g70kR4ltKg(#B~tb7u@RVxZ9IMl-z&WJC?l#QGPSPN_$WCki?b+?ld0W9 zbewZte#doBp%3~rwrJVr(Xl#B3Ld%_8QqKLQ)ukf3;iVq_2ibIuav~A6pRYp?45MvN z?h-AZKw4br`p7MPa2w|&PU@joqW_+s1SELYQ2IWV`vC>7Q_%03e$ofRWIBq;+XxDV zZCW|2V1c&1zuafmbnlt&xzCD4>paL^ESlEz!S03W!s&utuxIibGNppJPIA41AhrY- zFW{l}^uU%t@=*aD=Jh{+O1{X*C3{~9^u}}yPCn84H5ks2^zDOf6^aG3V9i)3GXDX1 C(~hA4 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_overhead.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_overhead.cpython-310.pyc deleted file mode 100644 index cac6e355ca9d6e5b4c8c29b86d2696f280140b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3519 zcmcgv&2JmW72lm*lFJn(+lgY>mv)<^shL(})S_R4Ya~r#BPc)@wvhwTV6)m8iYqU7 z*E6%KMNlW{)KkwrSx5a#d+jOb0zDLH+~1oeDeA**&;ng*zQ5l5-tWD6%GcL@3*TSt zCnL6DS%0O*>gS^IF_OBEj9WvC+nlBL&^9F-GE+K32c?s`lg6-NTaPU6^2Uk98=`sa z3|pK%wYtse-~9mJ@5)^vGogj@O?!|BT&P$kg--G;C}e(+aKVFndmN7ufsl%h&PRbplaBi2_g@4&kIRY3^iCi}Dk3GewtGMQwUK!)g%NFMDari!^Ameo z#AE*(AZHD_cD4R#o{f^d5|_epF?Fwg4jLaLsSKI00I@~z4xP5e8FvzU=%RE{HuyWd z$y+D(uqj&H7NFVpMAa)JR2t}h|@@^0F|iJd2mH11k_R|Jp;}YG5U{~n2Dd| zP=^i#PqYEPK57zWWt66e^=4JO$ay$QUJ5?l;7P3SDJ_2zAnOi23_YZgK}^^!KB_aM zPm$Cwkj;Q%X~~whj;$j$V>2rReUYOdxidqnwB_9ywOnpL1<8R4oBrq=lVB@|f=SLr z3bu}t460AE1yu&!hNKg#J82$AX?PGx6~?Q|uKaL$4?v#~-zP~H>0C-Ov943ON~9yx zkPY;lS<*xCk4b-=PegyOOk$bGLhGde{8y@v4PXx0-WIl1{R5F5^wVUwUmWUjp8c%1 z{ZU^fT5J_j{5;wds{edxb^SO^!0Nua43=((`CRY4;;{0LxOeHEsNm zd(5}p*VDJpQRyva$2MjzKB`kP3TUD-v-T|jYDX@*9|^6Dx|e{|h6jqRYUCUGs6&cs=So32o_fgK;Aq~j2HPM97Q0@ECXy%CU)w*>69HQbSX130YMXM z0)7WMNksZ~q&_UfPH>U2hV?XjW=p~aMGJ*dbe*-SNrd<%k|Itu+tbYzT$aMbG`RSv zPRSrn4&6|BLE~?qekaIlhe+c6pFl1m8BNaN{U6Z&w_p$C8W8ES8fyagI>3L6egnAg zUm!EtBI(LN`)5=V>&VvDEBK0ic4~iSef66^up@TlXlDjbbIguh?ao}?IA-!)-Ox>X zAWy8Bd(4h)sD<6PUU<4SbGd^Vy_x&UJ0*41{j{=;{!erpE8*{HJfnq>IuUT(_%lSja4#}Y2k9x2x{XZ3Ou3D-+cVtm6azCdS~jR! zIuD7+XRKE89!Lcco**>!VDv`JNSmKXEv0khR}w@b>R~ymn4?AF!mLa zA~kpH+pk@_yH+_Wd0DkFU(y;?to#N6C^c{U$Il`l$c~sd#g;sBTKGw>1j>avWSul&G2kB zivqKB)hb50oJ6_?y@Sm!-KJ_n^Vo8PA;XIeHobLGV2oaocj?yXH3Ty)VkRWL^AIuM z*XHc6gDB&u*Nv_%-=ov769KOq-6jn87eaXK(tB2qU-7PFDh9Uip#oE}HB3ddC{Tb< z0B~kg{+uFRwqlU76hSfyc5}Qv`R=}m@m@tz1mXpPoQG$QyhF0m?gqHC+Dlap%op+s zf?+6LgdxR;eS Uj|b$&6mi;Rp6?+R>#$AdUp1<9t^fc4 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_owner_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_owner_reference.cpython-310.pyc deleted file mode 100644 index 849620b6fa65ac573279a37752f41d88a0e52b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8843 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 hoYp+8W>Y2uW3HKeiOgq2N2j(`a0+I@Dq2gKe*

    S(5+& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume.cpython-310.pyc deleted file mode 100644 index 520307479acabebd517d2f2b5b0a92175980d5f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7218 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 E3&0BIxBvhE diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_condition.cpython-310.pyc deleted file mode 100644 index e8e8130301e9f7765e025a0e3502226c59e15ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8394 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 WuT^-R_%tQ=-nKA4BH$J4WbQxr?)ZKH diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_spec.cpython-310.pyc deleted file mode 100644 index 0c3a98d98a009681ce5c814858d9f9ca01d4221c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12899 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 PWwTPP6e>XM)ZG69g+k%K diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_template.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_template.cpython-310.pyc deleted file mode 100644 index cf0f95bbd11ddd67232c70bc2e29660d8d13d090..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4450 zcmb_g&2JmW72lm*lFKzE%ZZ~}G1@HB!ZnkKj1shHRMkk}I7U!}HY~vhqQz>(8A&TI zcj=j-5D^p#R4NJ-MbUH7gLTwDQJ{z3`WNiArHGHFCALEB+3U)yTaM3RWA?z>j!v#-QN&06>RCf(Jd3M!h(=Urc5)*w(tImYdD3Sa0_?8l9}$%!)-i%MvvnERM)zvK|CK z4$|ytv>e>~+1pFS>1*2}*cDRI(b;C8F{GnDc=&O^vrfM&QoS5Vk%&l%#ihnO?-`y) zTo~4tC!CCqKRL0XMQ7Xp44SiAbvvKAo28raRv$v)xDHL9ejE(mM^S%9B`m1eBK5YN zs>K<1xchh3hFW>q^h*3y?(yoO-7bp?_xY7W>%eY%!rQ6x+GJGWGkn&(@r92!SH~kh z$FCh)?JN8x{xaGczs_GlJHzMs575r?8+-xnRbGMVZsxB&UV2DcQW^?*oF!1q-6V>; zYogmrV57mGS`XIlEeC7cu?jj#q*Q=T)Yn;X&Wxnni5VM4pO3`mR5hA~A7-$i4g`<2 zu~l(YH%j|alI#`4+O@|^4>op0M}H!8)V_HM>#IG{sk7YcViAvYl)DNuk^nDDs9GKB zjvwkXl)EVE4yqv#-?wB%TL;#@GjxVl2%kU=lcC02)b0>-eOtadq)}YtXL z(JunE5waJ_s5{Zw_pHJHqrjG&g+z5$=+A@*67h@@?_o-j4*cq+@RBn`$R7NA0xWXP z?-^9zg``2#bAY-q@UMdF3BKyK^hh07sXC(=3Z)Neeh$^(C)2!!Sic-suY(5p=8i3E zCbU|zrWt1k_U~!otRjEE9mx>HW%TB2-aI!D%R_+iP`P>BDRJKITUUMY&Xe9?ms3X_oPJN zCtHoNOy;@BWNpkV3Wal?XZ!3qJkuU}WnBHQ=)~5(t*vLc<967Q{h{^SU;T#dvwcV7 zRvfYew(n|p=<3n|ldtQN#tq2Xp*3_5U^tkKtyoVzT^YLE!HUMvedZle_$cOSXBG1w z=qh%)#m;B`k#&0a5I1eHen zQS+!Yz{YKyT^&NYBfJ>WwZK|=MQ0)HKW2GlJ5rI>Qqq-#EYJS*j6QR3C5gHlJi3z+ zVG0oQ*5JKqo-jJ0v0`p`bqAe-iaF?V#&1m+UqIdn=C45rXTgZFV8qx&I&K7UTc454 zhM+XPmobD4E^hAb88IYjWEaK2qGr$k&$a7Ua!19V=2fhhv`6JLqbxWisH?oPh4c#A z$^BTxsnSu}5xJWnk<6WL)RWi8=jSfzGcOq`^^%FSd07h8Pjv1Y5_XuEj4zz!j5NPR zoKbvm*>&b47jTgqFuV4Z@6L`!WmfyrFS~5;(-+kJIVDr%H>juUpg{aHc4Qq9=IlY^ zH0G3+NRII7(1Q%fc8nX2KQT<^Q+M)muZLASuk_&E-AEUfxFC$?WxxR>e@9Xhf@ay^ z)(c31E$4)w?M4WS0|2%~zy|v_KB5R?7+Mdal%rn^5Z-TN=|$n4vN94e3=govaOSb; z8N_(gxkyj$XL$P&I&eQ*!~Il+qB=N*s)sh!Pw0aZ8ki_tB0$EQ!A7RHgUsaq@Ng*t z@f05hA00dLha><|H!40ZZt}c@^+KM3Q(g{3@iYwoh}9+=^qFhVy@0-pZQoiZ$H?@? zRGG{N5XrSB-ynhBr0V%wmqbWK82*J`HBe0lOR=Huv|6qD9GNwZx}cEzVFwse~aukzvZ4IG{a4E*fw2wFt?tYnaQuQOMmhIc8o~_;`T2&7DI&TfnMLJxc0j zld2O*OwXjKWVlyQ6v^UQuFcBKV|Mu~w5a_On}x$yeVh43>(#s)p6j`_iZOcKlkXC3 zij6swLN1`we(mIwq)}X(_%Fh#FZALIt6boz0M7-?A-op~xD=#e9!h+ja_%X E20Gx5#sB~S diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_claim_volume_source.cpython-310.pyc deleted file mode 100644 index ac96072971940dc10792506cb8ba6807674731f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5156 zcmds5&2JmW72lm*lFJn(%Z=mO4O%Z^zz7|Sv{D3URmX7ZF9b#Cz!n^UXt7>#hSJ*0 zU3z9HLsdotbbBv{&7*cfmdBa!mYN&ZO#(AZJV66naQ2DgWO5nUa4KOt-BU? zdFjyNB~dknpx3FXIY{qm9_CSnXCuF#URa| zMjOHH53jBlt8eazU{^>*OK06cqe@GC{Mjb~&pLyiNcBb_MIs_4*47&z{L<`sybH6n zjpAt#nvSoQKti46KDxxcFpYX5uSyZ|FiVrYcGWbu(AxH>^&T2q9YXx% zp)$jJ6R-L;k`Zt|uw+GB2iCqbaz<7NPe2MoA;nju?ugRT2yFvfUKlad%G`bc-+?mO z@Wukl4Az1u=w)0a@Q!Yr0%~zOfo7{-k+iM+T#|L7B;1Xp3On=Q%9p}9nf-7k^fHgh z*?Msr=}gKprjZpSbvJjFNV>BY>7n_#C2PpO`Lel_^+a=f5O-wO5n9L1C%;flOa-q@ zx7Yd^SIu3K?lzNntJ&YvJ6Zbk#`@K!inUnlN1Z3pwouI{Q|E7Xk{DQO8W}NkJ?u{b z7Va8^jYSw&lmS_zzn6Pq7^krg!!_(ofwe4;m2LcuQ_uEo_q*Yh1=QS_Ox3Y5&E%mn zy=3;UNkb#+u?5rF(Ld09S7-WXK{bpY*)EO`Y)nqWQE1eQ9YuVG(c1cqzQ zY_nF(q%O{yiWakd^(x^uq|gJI5<7@OQsa(qqBznSJsVQ*^~FX2k2m~4ZFO5#VYlbD zTta3bTqMg>C6oRN@7Lr+#kT?8GE zW+-@cCFl*5HfPb62p+YvR6MG?hBez~3w8??LK)CACNXDz?mwidZc7R3C4kmh0Z>E3 zM6}0HdIwF4KCV{5YV4IPB~Q_0c64c;pQfb$CSEpmsmTc$d>$tWDFa+X^mBiFat4Y{ z1@H}M>7n88PqRU)RU^11y3rufK{ra2Xe`7K|C6ngYtS8FTh9=mJ!VJt zE$eq5{g&;seMcjb8?ghn?`n7C>e2y|@9L69)W+GNHF6I?;jkUMW@1(Zr_);F?+{Ek>~Jjh}W=Z%|82`YuA@>Er`F!tLQIj zjLMhCceaqAr}E0S(4?W>++4`j(;(IS`tg6RYrRQCvmpPG0W!(M#u*K2CsMqzh}D zK%#jWkie7&BqaJ4OWrxp_1s#;7{Bhx4{7fAkmO7X`3?&03v+k3BI3mFU~|7Q6~7Xc3tSZ-I$?95 W{X#+4iB%Q#aGB?Ow#RDhjPoD9Qi%}& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_list.cpython-310.pyc deleted file mode 100644 index d3848ed47169ffa5ae04f9980f27dd74629936ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7077 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_persistent_volume_spec.cpython-310.pyc deleted file mode 100644 index 4ff82041699b32ed592a7c62bee49cf5938f6cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29486 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ŭ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 D2l+( z=RN=Yk8kGx6<4c{f#(zZ{BkulR$($8OD*@ z6Y*BaICC#-@`wvxBD=or-sthj?}hF)T^S3vEoCoRZ8SDR+3v5`gSgv>btf6eon%~C z9!(RAn(Ll(qxinR>R$c!n=5+tTW#)cagor{@rEl=q@^x@{GrR@px@<@Ty+KSa6jS8 zEA?-_t!N%mp-5ZJC>brkw_;uLpzVAP&Kb>`nO3jF(MGu0$EL7cK-H5^0fqPQCjUUf z4Y1fC_O^0mgIW0Hh^egb%Y4gbMOI>E=CB1-&a(@w$`&7*tpYEyBkbryW5;ZjcmiaYFXe5Xn8&>71Ml3CLF@*WjPwfOF z(n6v-w;Xi6t#wV1utkxQ5+!9M&49||hw>KQD|nMnkqisW>|=~Hc8mvwVPR-^FhZoz z5u`9cq_#@)Dn)~EGE{9U^?$?9N0k+-aR(NF?{~j zZnWbrZ*2C%K*Rx;GHl$tm^82uh>JFtdofEITRhrobi(yUZ(FwG=&kz7n~fxte7WZb z_xw$sH11`P)(AQwAfuregP|)Prl|L}(~{?fQ7Ap{Ev%bdKvJ>_CVo1loJln$`ev_V z+FuS96~F7_2?7&?#}DP{B`x`abZThaH6SI^|0AleahWJJpJ25{IT)9obrvQPO2f!T zsyY&{o@k`#5Oxx@dDqWo6TByQf~_lTqiP?3stl;^u5m#F-J~7&JIsY5peO;WLA)7- zgKRde5i5E-fc->5p(Kt9zvFKCoj(5treto{-^M^POt&9R%%Hj?b@!uKa17jt_W%JW zL>*$Shj9a^M7Iw)Y$F#*5v~JaMABe$Nn(xGNdRB$p?(tO@2&C|e>K>b70g}b%C_YMYb#k1FWC+*s zenIwDC=ZTlxlXJcP|NtCJiSU`$P^STj7;1A1C(ZMzS8KUlW6-&O`cUvdcN?xlM3>z z8na(vn&LSKwq|L4QAkN>H>EVUQKgi|aSntOagru7{ohT32_bc6_fJQW>(rGFa#Cmj zsy1ZU?+7fYimqHYuddxftu`&xV2H+!y{<6rF^mudz{0uEJvT($RkQGj^)h@4a87epcR!3!+vS}re!~CnAVMNbmWhvtgOT|h zCtIZF0Q{(s_)ldzptM1u2OSyfRR27Zfup5K%N+3%we6Wg4;>dYUw zUxaY{*0A2B{1!p=O!<+U^b=})3CS3#XwkWn`%xyj88q&f8gNs2}eMO8Jz}CaOaWoh>Xia8g`Hi1JzHMh@+-s8NXv&NMhv z*RI@Lf$i)GY!;<6M5elpgf?r)VZ`?2-kRbJs2>ZCb~AnPrn+BK{XW6bjfc3n>+%c#FB%NS|vk&m2RV{$ZH`ceNOIq~_y`J2j3 z(O#W);}Lo5!7U5n+xT>4V__ioDP#`YS)+ZC&?VeWW@7E~5WCw&!;qX$tC<#M?9uqg zR$6TPi7%xPE=C{N>< zCht6E(d3;*^b8~(1F5;wir~|V*bM|F6}fivbKGSNHK9ln92qUvl6cF4)?@S4^ zNQx9O13h5d(4_Pp1;VWf;}d-ZD>mHqShhzV4=fJ>40tPk=Yz*N@pU4TW>@TbtbMvP zkN#XtDL`8AJbvHv{)*lz7UWpAc{JmlZhU6SbBgjeGO-^-xeBim^|!=DBKvJho;>r2 z(1?59->8ZHR~U;|SJw(n_0&#~EFySio|ihF2Sw_4C|~hBT42;t^gKlBA()r$Vq=CzWb^ms-C^$vc$n?Lg&}^F(4HPdmAZ zq-5BpRj^7H%#D79e_Q3fyi>B4V2qAqS_>23GRmm4C%z@8v{bT7cBQDqUMq>qwEnk{ zq?X{~b!1v+_9BjT?danFkBR>lbnvyHeQ2#dGd2L=)jWNdP%j}T(YCNY0+AK#WbS|N Co3dR1 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_affinity.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_affinity.cpython-310.pyc deleted file mode 100644 index e4ef4249dfff24e6592fbde3111e7270aa155bb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7143 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_anti_affinity.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_anti_affinity.cpython-310.pyc deleted file mode 100644 index fbd0a3ea2978f48b5155f0b829648af0d99a4115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7264 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 Q8+V;ry=K>(1?N=hKi!U>W&i*H diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_condition.cpython-310.pyc deleted file mode 100644 index 37e73a3c60f5c12e4b620fc85b639f69fe15c941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7920 zcmdT}TaVku6(%W4;&P?+-LZ3J;>58MuN1cpkZznbspF(U+D#B|0#s;AQ<~Xb+7u}d zM^09dU%EyM^r=AKilDF`-S_^2zV`Gs8JN zbLKl|&N)n~RoB4rYxCXp_Z~NlKT&1+uu*vhXL=q5Gnxi7nH8B$Q(dj5rLKi$0oOug zcZ$uTX}n=Dn-y;wtjJ5-g=U#qmyBAe|2Nme@m8mlRJJF~%KE&_?$)|U5nm&ZXj^xn{oiSRb1?4~P?#zrVNd#!pq=`<4kkW7*&9aWZx zWD-&Hyi;DBTnkpbi_brIPQQI^lY7^>Na@wdx+hVkSH1eqn;uKry$+A%iYIu)gOo3y ztAFF$isvC0inWz7C&SlI-dLBsz3F}e$r-CPGpk-m;`MN&he_deZEBuA%BZ}8Gqp{_ z;08o&ka(Mg1%p}m6^1|iqf!&%WhGW-4qIR@qn09jhE-Vgrr9j77 zd3anavq#vYs%MEWq35wtjd|?xn?~~hdxD+9^&oqaJ%#HbcA7nn>tS|=)o?w+76F-O zv!(aXy^}D=jfEt${x4SFUc0#Bt!;*>*N%cT^>7pPWa8b07FxnFTIy=q-sS6iu9kZ6 zwFE$s9>-f1B=oB~LEH>m*x*@7098qxl~NhVUYgl*tIL~J8uShkSp)6nVXCf;Nl=?`fD*Al1u3ssM6ueY z#?e9d7S0Pe)1RRjl$qHxL|Gc!#*OlzJTQD{FiHRnCA1f%t;(V*ORB^uv^xVl+cU-K z0o4`;7=zmKz(UO(U@U6i8Wd1l9DoLDFAi+fDuW`*>Y#*jiJ4eXtN-lmf_lqd;B^wl zBN&18Fos5j@kj$#YX=0)B0CW!?I7~62O{;`(>jzL^z$-5rd#qtcl?pm%l=U8Wq&C5 zqOS$dLNY_0Fb-rQL5m3#6?qv^Gb7o^ht_;`@NVN803lz-e=6 z0U~6jC-dBC{U64Y_W6je+cmm|2Sh1SI}s**%j zaehW9E-myQ&CNN-RGS_f9du8p5-q8@Qa)_IN{v3gbdTcIyB)FoB?Q_HM9|5L@+*<= z4&q%ECouDxrKPJhl5{C2;vb?(iP&{_M5lOw2${hW;5rMvegYXi`^yFBuO2i7lWd1m{KZv4#Y94%Z zT3YN3Omhf9)iDOkx$_}$J7+ab3Hq;n_E}C2v~+4k^YF1k4C!M zc5+Ckwk}TbFp9l!-v8?uQ z%NVtLa6JL)*Cs;^)FB@ln|m;|I~=DaxhfuotVTAMWS8I8sO{&}zAq$xK1QPUyY3Z; z@5SM@9zRRwbNPcru(RHUpu?jJ2*?nakpu0mBOIJD1y85vi#7WPErr(-nk&hrF}U$-1JCN(!2lDl(uFNk~$;u;}R#XULONNv9%k?seP z!CTWlz;H+2p9LD5n@cKUqu`TpH%(*4GrbVRUW%vsVmS)ed3&oJ@l#YAd&Fr@v}3Mk zJmP7lzm(~%nc@)1eje7zas4fI&c(WBVMnZg_5?;!L~+Fw6%~UTq9TzB**1S_Dt8#M zC*0ve@ZD*rV)uzn6ynnV=Nf7~)05PCw)=#0U>I91?TE}+{(k+<_<9h9%tP7Z%C274 z)Gwd)Iz2>UlokP^FR#KJU#{6I!p)BBNYqb}xI>f<0xH9mx$hI1i$WlrCWwqwSY<78 zDoky^!>Pi^gA0!7T6;M;!Rcv5rup3K-m*qxhDtmcKcm9`Wi6d>^<{PRFoZi-M=5>u zd+Jm=dL*|W5d%AFsPHfj`uEVZ{_V!{MElnMCq=K7i)NrzYqz=Fi(;LfqgX_HH?XrQ>6(g^72e`Mj_?A14?%~V znHKu z%$)O4&}p&Y z71!(dQlj{_S3jXCDuP1YJ%uV*wvi3&V3lGY>~2v!gJTS)mhj1#zq1pV=h7tf;8eiYi2<sql2!SqTe7WwJ~|t&-CZ)J z?@|iWl)KP)zGdAuZWE%+etjBI*y1Q$6}$_UkuX(zlin#1*HZ4eR>(@-E}oKExr<<; z6G$!iIWA3B0!twIIZcZ2v1Il0KD>V7E}rRW#j_4bZyAJAaC_o)#4nfC`!6Fe#Bi@G z@T^uaW}eli)Gp1)_y0a(#IfciZS^yE8E{e^#R|oGP#sf3byB4J34SEVfl1|6`fz7W zDJUFSFI@Lp$X$6!>k4lp$s53p<=60K`3D%X|6Mpp8De$Ds) zfv453?^?Eb@NQ}9r|x?S1vQ0d#)#Ny3hILoO=C@*C;nfeV%A9^j$`io1t_F=1^sue zyzZ}+SM^alO6wFOUiJOV^?jhN7twvi_vux`p0e-5*T;e`gJ!cz8WpyBlKZ5FWZW`m zXb`tlP8nZ}@cn>`9Y0TK^eXJUh~eTpRJ=;XWJ2mrW%+2i=qCLM3dgWbt7JJAG*tge zUs&$w-ZD#HxC_=v=&`GZdqvnW<#LEjPGD~prEN+^QO$9&N rpTsxasqdxwQ&35xPD5T}Twr$c&AhJN(wNEePc@e3h4oys$c!beTIl`LvT@x`T3m!&^4L=OMr1P{d&2KZ zKML)xh*o{ZnSF7Ehg`T4udOxvPM3#n*SBwFg^{q^Qg-9TdVR&0?W9%nqE0=^8p$XM z;$dcfASM!3+dglH(PMYfzWI$e7P8UrwYj~@MNC6S%eF+8hPw9Q`!2 zH|FyTwKv~ZIuEo^sx6K*84SNUVoh?dZG8gEX^pC$&R&ngWq&2Xq%fRE#p722nRju= zA0y!!OstW4o4K;a4E%CrR95(DzG<=|E3q=O*o?~O*+n+X_C3{`1zu$P*@36py521D z(!(-4ILZ~-A$C~RSlmL*kx{P5j@i=Bd`)$82^M&;9HiJCEl9_8R*No(I_l_Bx)2SOuV{rbq8Dd>FACek>9N zfbS%1h0ER#8h7s9T(s}C{n+*bH;!$*xQUGHZLpxV8o{Eb*5@u?-f>w}!y6G0A#Kil zsn$Lls^f-<8w6{aurwD-(X8BGxYK&bJ^2BbZu9s=t(UsoYo453C0&`s)qFYw6gvaN zrRF0)WNE1bk<68DYQ~U|7Gl-7X`$);44Z<$A&QigC@CXpc$6Pr^lsq3jywK7l74~d z3HnHFU3*gK7y6n5r$q`(A%(*tHC38dDcYl?*hi~G7w7wwEA`PDxl4TmxpE)9kXz{I zkhA*ejojtFiQG&dQjojW&m&i1`Vy!DD{S=MoM;ex-gfOy#CQPrU-m=zk{=FzuTh;9 zG?{cRh&(rNR$UQ0-njRq6=&R#c}H2Y?2JsAca$xQ&cK+n%qNoR_@OH!A@Yzu$*9#L z7J&!LQyU24%jcRnh{wNr^>)9@Rx)=DMoVqd$x-K{n;Xw6)cQ`HO9<}aTT5=pe z^rhpx1x@0MNJ>UQ$1h9iO{bC)Jx8~to1gVwowy>kp+HZEu;E4TbQ7*VB^36xhZ@#Z zcRxn)EiPl_IAe>E@hIGN@+gy7nDzy@@c`@tKxBdkt^#<(UYmE^k#xbkg2ynHVpA%1 zLE*|pYxWWs)X|RHQ4%m4&_Py$$h~MK^m`*|7$Z{p2iRz02?$DTPHteYx#*~fWRwVx$I}eAC^-6tM3&s%^E%KH(6uP!T9+@{ z;5@~URQ6mKGgx^%4&b4npCyMVORjVq_ow8sg>vug$ z_;TQ^X1^bzw8MkzZp{Dhq(n;?&y!tuM@uii0_3}NP2r;o!QsXr}w3y*w*fGPxFt>x4&&R_=voyp> zOnkWisAJX^U{Klm&^T6kM`-+J1PwZdyqv~kW*GmpdwD_IAu-{oy#)Qn@v#rHoQMxP zc>a(oPa&Dctfb_Q$oRzw8M~O%c2rQO3=zBNz7raDvPeU`is=rap$^|$ph0CnCc7Yh zwlin^ZW9>ll>fy*V-KQs2M#5893J~=rjzJ{LJ~itN(GNolQ-V%Fuo%|e!U5h-OOwP zL{zr{NOmJ)FEDx0HVttGvmXM5tg-c=L}kCE@@+t&FJ9Vu=nNG92#K#f(WUkbA()58 zhJHi)-aFqlo)}MZ5`mY#v2HvurP()Se%%n~WL_e4!;Gg|-&{A=b)27!E863dEFwUY zLyKD9d{)|^b5&MOJ_b%L3$IR?ho&|0YtL@@g z?c;3f(kC+WJ-Lk;bC}K&&5J-I5k6o##xD0UyA4$IDVSh1(xQwI=kVlnBQ3Vw*p*TU z8$A#=)j!%|$+UDOa62vLUj02<#B_Q*ruFKRAvcg)yP`r#@m0KJeU

    >Ry1nHrM}tt1mB995-8N$S!AKPiGzJ-i}K<%)cpZ>OeCxD03!cHb0f6uGkQ}9Dr>k+b?T&4C$a~0HG(dbo_i1fL_APx zJW#=+2boR}s=D|lnoeR$irmq}9Outyq4X&k)4sNbO}9}dxs}q0wkP0JmvF1NNHJIF z2ebBdN*~c*FUFYjiUh%`WxEy0_TYpH&qV+Wr%N|@?|DvqmDDEb%AC)$GkKavdoH#B zCM`G)f9yDaL2DHov;+i_CMaR9_5p!bU7(13%QqT}GdBdlB%lAE*Sa}@UD z4ms*!l%=HsbFQi283O(Y9mBdr2wQ^u8KxDKzD2d)rsN$;HfN;X)Zv$wjUp-WT_h#V z)Qy5sGT^@SEBxCiZ@yb4V-C)3S-LSZ_ADchGIQ)%vPyF$vt(9^3KrFpxJKiD9Z6~k zE?&n=^UP)pyOsqm@Q>Wszg<~4zmUa5GI&jx0Ej)a=~ZIUm=5`-f$+~uz2U0IOZTez6v z%y1t6{PX>f`8S%KwKP1x)$gwU`HZIhjVj}hiOL5^@nvL8YimqrMxeKK^)}judKcOS zybFQZDYlEcc2i>}D?Zj(k(ag$?J_f#w0f!cwPoYEovd&Xa>-*$)mxFxci5>Uy~#yPOGm4=M3t8M@XjrpMPAb3pr-;f2NbwiQ zxCRz$#NKwHsxgBVkigX6nQfDmSeaE=Rn>~@0-IsA$9lWO%WRe%d8}>g?Fz4KRN2wI zR%XZ8arMRG7QURwYi0HlJE^|R@ELr0Ij@!3DfWu`QsXszIX$egIri#ftv$=mu-EWD z!d_=*@jlAVF&pn=>zl-Cwv9v1@)T5_QBsPS_fkKk;MP`(^9nd)F83 zd+UB|dx0CrHVSScBm0@drxVE!zoAayE?<2v^Hs-d5zbxOocU6naJE#(4HGvAwzA36 zLM%n^OaQWeI+5T{+t&RBqWU8)-MX310FKT8I%(0Dyc4J913zSGrGp;Km2TTYpZgiQ zLm^0<_K^TGGyCZ-1|;o5vRVsUem zhnvm7Uukx?v|8|H6Aw~$;dBE}qO;shFw+n6&#R)c!KE-nr>KQS?p~-1t0(la<)eMNPR1ny5*G z8Qc0VbS2Pm6<|RMy{~g=J}3u9a{QwF&(N&a&2W5B67~QhI|3X+hTwyoL8~`^D}?3n zS!QDFRa`Na)%wft*qsDuA{TOn+smyer3}waWk`r77WSkIvNKyKOUKQGS9HSTx300MbuHV@Q`&Q*mG6MxM#=7O2>!SBKX4u z=ANv7!@lZ<1C}RUaFw%$eJez3hX+@28~eW-cmhv6PrN;t#yH$58eP=$mEa)H z(k3U#5?#oDg%p#YTdM4L9~;v6Jc;Ukp4-vkkOT0^8p+gRhK%9h3?0MT0jAm?ArlzX z60c(SLpwz**=wh$?Ken@O;+_OsE{v6=8J9#@vo8j+9O?RPY{jRFn087+NVGI#CT*p zDoDg4`o^~L$dqQ^l*MgBoR>veqB!DXt#59_C4oa?T-F{|WEnAw0(vz1=99_}-8`~( z8d*jAhq8*1W;XJPwWE!XMx0~NzfZ1BvG>+pbs@{{uUS+B(Z((=pgwMKE*U`Pd-AD$ zK`&|rq$S!HDN6}Ais@Lp+Q;s8@S#svZ=;o#WrVPRCwGmsyza)XltLh+3NJU+Kik90 zv~oFcJ1fk+vP%;a?oMgFOVhRZVD83c6>EvFppcDMOH3#Et(@dJL=i#uagbk_Q=6Dm z8(2kfR&Bv-eM!4j6AD#&4OLKYk{h&V1L7RMeU7A@mYRO*8&j{(Ac*FFmR8YUDAy^S z9mGT(r3=$C0)NDp)be9LjHMfTJT=KbOA8&hD_$S2pPIx;6$7dlmFh}M@H~=0rly)e zchaJ|=sJ z`6GHLnkvSA`g7R*8U0B@rl>lL0)$ML5VE*Tw-V3@_V#tkAJAV3#+WFJ1VNrvdnJ^jKB{(NjJE$TM#4xf@W82-OcWBh|9 zJv&yfT6)E*oUWJ^vsPAMs8_@fY0U<*)DT>dx@eypg?$^@)dc@5js0hn#k)({ttSK3 a1frqbGZtPUEgF*xZyH!1f!~^OvhZJe>5RVs diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_spec.cpython-310.pyc deleted file mode 100644 index 497212a9bed38ab52d4fc28c7ec1f5dfa99ad43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9712 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_disruption_budget_status.cpython-310.pyc deleted file mode 100644 index ae2ede390177d92719254e02b4857c2e65dbef52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12819 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config.cpython-310.pyc deleted file mode 100644 index 2ce01d970a20416cb81db27ceb4f60514a0423a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5874 zcmd^D&5zs06(=c5qPQRah`;kiq(u-lSjkRWAYHgdjW`K{7P4U*MWNJXxSZJ)ZHlC4 zMw_f4pVsK1hoYBWilXrLP}D8@5AoVl&H;KTkfy&kBgy*M?K<@-C?yW(d)~bFesA8J zd~MCQ@ciDsz5TcImh}%R%sws(KgKJsB4Jk7Vm5P9yKC#O({=Q>(yicIN!@<6TeYo^ zEatN6V~bUJZNJj3Gv|)gtPTI^2Y7xm*y1ANic4RYJ9)skj73tYB+r6E?{WiEoAQia@Xw|5fN8*H`Wyx-1ECza=^oD??3)8wKV1m6j= z{9&{ieDH(ISIp{ndpy|XLekRtcA!wCrLN!lIAD1^=<`f%27;$Nl6>Pz>zyBJn#WXV z(l)1*jF*45VoUM3=YIjtS)Ha`uDzdU+sV!Vo5FH2RnIE!EjNJE2>A?xW@8v{YxO z*lFFe!dKAp(xk-Bu(OY??kYRS&f~krF0hOEuCq(*WqePtSJb`+B+lvn#i9 zcB6C0Y;gGN&ds|YYzB9Gi45X2k}^Oh8mK&2k|{BID$|x`?rpw(EKhaE8#%*iUu#qNGeIk{(H@u{?^R(X7T6eEmDOa+n&m|Y64P`yo^|JINk3`(# zQjmB=m695gPE6U!LwN`9`*`Iqk&Iks4=hnv*1q+~9l0Yb1Y(dvph$rhr09dRIzr39 z7O#$|R2!iOO5YthDAh;kiPFZXf|AGVJHQ`U?hN0a-$t+zL_t4iJO!AxlMI@fWD`y9 zG#i4bD=(yZ9HrrIBxD%R>SDPX&hFj|C);m?ll?;p5<+P|$s(1D1$H#6r7L;5y-+Rc zSoWzUR`L0lZ1?g$Z|@9}SmZHRDrrA>Pqr~BfSv7Z6giXaU7qc>(`2h%?5SR!z1zBS zxh)gLH;O2J5bbc;elWEk?Kn+<&$iw-hF%FVMaZ(r=32#G>4jmEB`OTtAVI!@#B*vk zekQf4SW8~zaJiR3CFG(3j)_n_7v7@`F{)j87)p3TS#6F4I~wgr== z$BvbH27KEh@6*(`@-&I}TEUG$fsD4bvs6!J7QCPDa@IPE+)csNKxBmY`4zQAJ$Bo) zV|q4)+AH{`-n&MuMme=SwS@;h0*-uVWyH0KFX`)!k65s9cjt0^xm$fM-g5huasrenmYEh?FY1zG+S zRa%z5eG5n14xVL*_?s=yzp)=XhBDu)xt71Ks!_mHh}74yy6UH zAkyhWd3woWPb|PEsF1ib7;Ea`v4^u0ouns{4+3LseCc?gbtr4%&D2ZTMBr zRqLUr>WGUf=+PRvPrL*2w@f{aY@q(SYG9;mMn3Tmtl80sqQ?D46a!U9bQSIUbWAC z?b^+ivLchu%Le)j8Y9cK@x?|+HXgC@4p+pC(oZDJql&Vamo5b?Wu+e#;v(kK>z6LE zudM1>npJJ^%NowtL8?kuPhp2;bvH@}e33F@^sk7rH;}l_8ONsp4S||tum0P2*T9b_I2|AjT*N_2pYz64Z zI$cVDFfejtQ~H1|{G1tpiUALj?O-d1*PL(N=P_dBNbrC^#9hsYPb-4NENFJkz^5ic zD68lXS9jh&C~INJABN$d(OZY#zT?^_m$_+r{m)yd=q-G2su4$RL0>`9Htq_#V-S}q zS*AGSVfc4ydKbx(Ez94MSRI+)@ui+)zTA0VeFO z5uB2(f#M-ykhHt>#@298N62MO;?4!!)GikR-sq~2 zBJnKOc50620FSk=oVxk?HRm)?>if2{GXM2fybGS|xvO<8v+D0tDaToOyxf^#ue=V diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config_option.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_dns_config_option.cpython-310.pyc deleted file mode 100644 index d35dc52f78054974abbfa7f667ad89b5adb64ad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4055 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_exit_codes_requirement.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_exit_codes_requirement.cpython-310.pyc deleted file mode 100644 index 151c97ebcc5f1e1a79f1d1ef0473247bc7298fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8263 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 DAjFg? diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_pod_conditions_pattern.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_on_pod_conditions_pattern.cpython-310.pyc deleted file mode 100644 index 0569e5d7db30a514ab911426716736081c32f45d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5248 zcmdT|&2QVt6(@(3L^HCJ>}I`jQMAMsSghJuinnOd8fmcGjT0;iC_!Ru0ri8SIU|b+ zMJmIQu~y~F+J~a(p+#>+5Ao6e60be&d4V1ZblcyXk!0DiTRXcgP}+Q)8FAjsd++x? zhWX;6Z{hm0{kZ#!8dap*Iv?OJ?tpNsV{x0a)b7~&$vR9wosNU2le+y%r(#k-9VvBOMUq0bh3URgzW2%6qnzK5l5{A=qdZOG-G>=Q zAQ4YUn&MHU6zn?sUHjqY#(J>XONt;)qoN4Vh=wW;Ua==Bd1lY1R_tTZ{g3+8FW$>x zN)-sKu8n4v>POiyO4D7#taJ(`8?3ArDpJFubk*)a$O^P8t03)|z&*XF&2WE&yZ9l< z7?2)XvZkzkYtI=wV=DycL17b6{0i!hiB`r8w90Mhij6ids;gi%h=P93MG6n-CK=$A zWK;OH8#PJ$DQ~8E9Hrq-B#SVf2T)lHCxTT%k_^U6$dCF-7O7kw3)*l?w-9OfctqB~ z`N)!2@c8>5TfMw5THC`UmU%3cN?Ol?EB5N z+pQu|Vs#M3&!cTow4TrWx)rAh{HCQv!_>79EW)k<588yDFwgWTB$@yy92f*O2fL*g zhDnyFFkHn3i)$brtJ?URP~RS{T~y1>DX-WDpXo(yy2;#M5E{nTGYjUkqt7t>K&V2) z$|%@G2H^O@Yn~NqDEK`Yh&bsc!f==3#W0aDJ3J|vX(BL-HiOMP=tnB<0VPo2+zY@w zHZz;8dXaI0V#1wISOnl7rDm;@9HvX$6WwT-lCXKODTktY-p1FZP(zuKV~Z(w9WTFv zR!AXqtxJOMI@n6>+ceg&r3b4V*^=^;2C5-->XHwyt}S@B&&~}ka*3GP(bjxWA$k7CA%&K_ zWI#C%CVIc;h7!a2jM9o=eIjgpEpiiAy3Pq23uLRSGlOZ<>5xG&{t1m!HW{s6IAGAG z&kYyyI+!6C{Cqwbyq=hs3kLZxSIyOx>A4a5|UJ*sp0E#~yKY%3Go~^8xDEXeTL;Iff ztDpRm?Xf*ap*S3~eYWQ+ckHUlK9ldLib6ri*?~27_mMu3JlGxUg{Nv`mpgc)Id)%q zht_PIW-eg-L$!dJu9^ALKeXm&kE!6)e8!Z9Dx-HF>%44oys0H|fMXi~m~892?@pPtfW z>D@`A{uYn!Dq>72b=eyI^x~domTKP71#fW|4Z}{ac)kSh&LmjDK?zb^hcwQLmT5)H z)5ZByOXRjcC*d_isaqsIgmF>I_D{(pSMb|!a2EuEy1o2Q*KS~tDmtMbgNwH-`b7@p`zA39x6sX5a zSF^CgvZC|b>79`YQra1nD=xdieA~BO6v)i3f9bnRlU|k8|KV3%HoARTBfO$*Iv#01 zpoC_8;3Ye>4he{4bg^ERtE#TrOMg>sT)uSa#6j>Z=nGfwG~{ns8RiiEkpTZo9J`;xWeWF0m}Fw z=>}W5>IM1MGZCY_kEAe%f%`{}48TtkcdhgzQ|gozyf5S_q?Oe$6feS%K1t|$$7im6 z?J^cH^IuyyM+^7e8NSXFPJaxb)6S-(Gox%0Ia#=oESU(yKhaNXAeX?Anb~mK?RMiD zSv-sSU{(5I2t*H4YS+V%HZb|67KZqM1Za@;I*a7b$<|Pbkb=M>#!7DzsCV^o245*~ z^o9W_*cflnh`UAI+eF?cax9W=>C%QwNfDtSp*_pBS(SOru6~Ips9#}=hz`DQPoLhR zchhq{w_ejQXn2x7c*q7w$)u3qM5FWV;{$!uRL%ItHuwF?e4VHogc&%Uu{k6KqoBJK SZVTG4%RJw+JyvHooPPmbQ=`5B diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_failure_policy_rule.cpython-310.pyc deleted file mode 100644 index 77809fa54040cfdd1c8ae7a508f45459f7d71b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7348 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_list.cpython-310.pyc deleted file mode 100644 index 06e5754da5e417dabb3601cfa6d345e4e4d691e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6639 zcmeHM%WoUU8Q)zlUn@$M9ow<<^41QFGKfekM*2`)BY|TZh8xDP3?JA8s}*M?uDsl( zXNE#V&_Gf7RP>Nj3lu$AN8NfV&_fTo1wHf+*lSPeH9!wV+w}L%l1qxBVkJd@9ztPe z=kd+VH{W|c#q;xyf#2`U`x}3M$uRy#oynh#&O0db8Y*Tq4Q4VcG@GXWT1`uTbIlyS zxzO(9n|af?Z7`eVpBgOB3%j{yky)!owb1{Ex6Vbx6_<|gH)5A@*%Col1##qd zMZ6s_&fM>B@`wvxp}D@}e$eHS-woW`>0m6}wo+ZWQm=0Ys@+?!wc<`aPJvV$hjP?e z8g3Jds_R~IqxiAE;@*7w%5r-8gEn`!xsY^pyx}Tz>8N+_-Empm>UDUeR$ReD?n}P3 zTzl)s8s{Mv8nu-Sli~5>6KjgM+Ro>ooYAP7$^4Bt+6Xp#xD<|S(eUIikIp+N@-tN2 z0ErDEZ!=dmn8k7^AnNb!rp*eh$V#lNdwF(=&9TZ;vsvIpHqREG8oOq*#7kRcb|UK) z*&;isXB_Te=2X@zvKQECJu}DWFmopB71>$#qMoVn3TDoYdh9%V>8a72XD_o?@Lgc9 zve)oE!7eZt-$nL4b`jr`%mLe9Ps$IM@5StAfmHopH9mN7bH#no4y4-(eJNcu{GN*4 zL(C=)WX!HlvVP`o1(`%w_Fq|^Zf^OfIp0P`@F9#H_-M3Jfzsz!_YqaU>` zlp82=3)LXc%pSm%v1>fZ5Ap-UgGQkS!%;(a zActOg0C@DS4s7%sX0Ae4!2qj&Ib(pkZ3GbnIEY39->A+BLNYlQ#w|be zwtXSJ)}+WL6>pL#1uvya-qU0$dl_BkSwI@y2_j#`LXc!n(WhESY{|ooS#zQc_IY5maNm^DNs% z))ZsE_jcw zg86I3n^DlucEcI5#yNy}mI^YYVAB22-S)#Ce-m3Wx8v_%A?@q-qKO?eh^)Eq$AV+w zMm$z&Sn?WpTMObkta+ygKJ1_sDG{v0MhIDFe4B^h?B_l5x;w)0JCXUOBGdJS z-)|nv~i{4Qh zLcWl|$-;iy`g#-&2ekB<7a$p@-$*|vTzsadRa49nX-{YL)s)s+N+$Y48b5=oe_~81 zeg2W!DK7$?O#7B8D%x8cqM|Hj?V7(dwbsI0!|dn$xk;@(>QZBU{lDNtD*77PROpYw zdy11OE5M9Y+-LEk(O`BEC*rWE$H9QkYVwQ!|eq>vjT?&w{3 z#JVw@v+ktSa%FG56CmUe{BaMyn_PL#z2Qeg68E~GB4;)CPK4184{!LAf7{xBiG)Kg z5iO7Bua8IdO!j6w>I%ujECWD6e2*rz0azFt06O+a{TFAkq-yzpoYd|k5FIP`-R}fq zR`_-tfk;gfQ8=|oN6`AK4bo)r))4143se8ApK??Fm&Sg9B3?xGJVVj{Z5G>)9!AHo z6q$=U;QEfg!L-ni-?Z7zh)(C}60>BV-mbq!krZ?mN|TS95f0DOfc__0NIF_FO6-FgLGU~5xYF@>T?1s^A6zzZFUB=f`co~Lb7Qrtum2y{rCKn9Uie$?WLP4P{V>-b&q>gfE$Cd%pb zM>VfaOHzPm?}aL{^#-Pw0B+x^gK;v_?fk5?2#0i{o14y4Fi-c-pCRL6rX4jtLBnIw~H`FCB-g+ zwvMk-iq9}CNdaufmVcuAkW4IC{lx?LV)78W1gOy^{e)1092(JcwPM92 zMz$>@qUa&RvEi=Asy&R}pohqMAoB9VTl+ad5-n(VO}72?;g{qA&&8B5Bn8jok3H{G zK3NCcd627KNbQQ}(HX;;qURwS4+g!C&6@M1Hk1yI*w`04Zrgf{jy`0oYJ|HU9u}h&FpGP{DjV|p-L>l1*v!Q!Z<@&OG9=1OJm~S k1!-!wkiG&^p_zd+jBiT9>tyvLg}Anb^O3czSf_LU1zPmv!vFvP diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_os.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_os.cpython-310.pyc deleted file mode 100644 index 65e6fba78750e1fa8490a68288ed3ea698743528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4066 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim.cpython-310.pyc deleted file mode 100644 index 0648a3597ce0ae92c18a17a82247206ed9fa152f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4333 zcmcgv%Wvbx87GI7L~&*BBO7O(MH?akf+$@}af1S_yIo|nF9Z#gU~TL{XiL+Ykxef} z%EOVn7UV-~_t2t;o{Iuq-|Byf*Pe1NkVDZX`F%5z{F1TV7AWl*&WvWh`5wRT!EA2M zxA6Sge%h^Ex2(U@X*+m3iQ6l+OSbjI;w~>8 zTD&C62Tr@f*{W4955M*UJU<_72$>2ca$nC|S-?f!k#S$eSsL_Zwi|Q7gAX=EDrBTE z+}I1g=!-P!$H5b`n8{#EseZoFY;MMCYp~JiWW8o)HmNL2^2uarOeT}{Ab2lGvz=%q zc=V%>md)*JTO!yMGN-GvZlExwtL}gKS-`W-peItb5=fDVC>Kl1jUWC*^E~E4v$itj zWPJU}jSVF_TmDzjoYkt^#oU7|?Z%q}2!-o9w0!z;F!=;6|06nKLB$rSx9wCd&bY(f zzpysc%FB9G;%{@0R}bxWSyZ^suN+zjcH0x)c9qwrvkIT%^ZFNG`1s}OWX7-Y>xWkR z3ctbMz`Mq8@;C9G;|u&Pyyy8XzKHi#UV-Uu7dM_Qf0^;8BF_f0BOWAC+#CL(^~Ktw zm0)cv&Vx=8<#~WXG*DS^!E&U|spT44g-=EIm73EVA7(I`3IvapHjlZg7o~$JN%jn} z!pW6v&plh#oULjm>#T6os3(fDVOo};R#`^Z>JX|Y4~-ex1GM~8bR%GSV9AQI4y=7= zsf0!z*eWKs>BVWJGI=6i-7VZ)B;Au0Spnr^ zOJ2e2pTBNyWj)c{9K;=&b%auJ^ZAeSCP=}*(#@rQ#`ET`NOzk_ywU9MsjV#ixUu|E zGmn*6>PMaD(Wc0o&!=wO>?ASVq^U*2(d7^%LOI4t2z$l7Mt`sH!Z1!_6^2V-Bfp8x zV`UqEQU`=aI=lan1ArzQ`LsgdFSL3SNk+ZL2>M-?nT5h~YsA*C7D20Ulb zo)r}+PPORVAdPnhBH0TNl2R3SV?jhgXd)gVKkmVhIdxC?CJ4F9$I zpBlsjW@7&TY=V9yqn=j&|7M1ZR%i|He3tG;Nz4QE0}*tQz}88#>vsYT6AE#F%6cnH z#d_V<9@}0po)r?d5D{=(XO6;uMnoP-3AZQf)|s)cj&S7U=S=(RL6ieD{}e*)wc11)pLfa}%g&xH!34`{@|YqmmK5=Gn;52S)wYWdYf zEq?V376?CdMtk<3Fo>;vTUjrW>bBXD{m}a5&wj!7*}kKY6i4iU?YqhyxvF%)yRYop%u%j_@UwTKRPqR)Zt60CUsyOMIlP~=v>-6anC0f0I zL~*1veE+EqlqR;DY>JYxFQlT_9N|CUaYvnzi?W1+wu+W7pi_uh+{WG25u`i94h)4rV7_ouurq6P%N*TJ{5sJUO%oOe-LYu??~S0tt;DD~(KOu@E`wB0+$xg;gL zK+{p7W-ol}+Vv}_qT&}t75gQf$&0yhMH>?2@}jaS6e*%Z6`XuI>wZrBY90o8p|o^-FeS9TBqZVdFHikV8=nA2?`QbnbYc;1VYQT~izRFr`Lko*k^MmU*gGvkrjb%Ad>q4}m@55!u8Sa5vn zF{KgB!+H><9Ah&<*8c!oXT?P-!$_(y{2g{^W;}LD(Pj2s2#@4Snw{@s09UdVTq&n?|$!bLj z`-MD*lcF4kVkZoLkKMZX^O6u(PDf!MaN}g=&uwKWleraGW>wLvq_1# zPDL0}Y?TdkGf`mn)SXtVRli2|qCz1I3qK5jyg@?aS{Tw*<6kOah_6)`_BLp?=g7n2 zje!y&x#b+z3U3@F_jJvNZz2@_P^!)l5Ut;s{SKqhU9Ntym_I&S_=X!3fqD@=(3jzcTSlA! diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_resource_claim_status.cpython-310.pyc deleted file mode 100644 index 392815a27cb7baeb6862dd7298e7b71938feebe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5254 zcmd^D&u<&Y72cg)lB+c(+p(kAL0fN9AT3jgw9*D>Ro95)UoaXlhGgVGv{TM+q3E&b!8-bn>7m!X=9F`Q0xi%a-9$al55f z$+qrW+~uW1iZB7Y6fD!;@p<2lb?=ZknQ@HhAsJkRqoT=!;v<&%|%8DA4B>&sZ&?nFs< zT}QgF2ET89{OIm#@Ti@rAnrs;1*k-Qodsw7M@BvNU)>mTO>Dl@ex~D{46f6G;E6U) zDyHg2X+P?8_6lLSqqMBC+)bmd$S=u}wjuf^-H;k(38rmb9DgzEXrjFt6VAsM)fw*F zxYdU!hCp}Uk`-+oSo_Y<8CoImj}q=diLWT#A(f>e+WNML=(jds=*jjetX%PbaJCyni&ss=BK*glT+M%+mdOAWJ53|$E!;hGPF@3Cd*@G8-JtHvwhqBdhpgPo7TtUV;f_~7uD$|$9_px7+Oy( zILD5&zxZzn-ISdo`Qaw?DR!vF94OLI@wGFiH5kbk0@4>E*!1U z!^{eM)Qd3c_LUC0k&fFZ)QQpnvLs}JCDB>+L|h-sGf-Ab!Kdv6!;)?f=B6p5B3uv{ za9dy`ZwTP+PIEo{=+=jKKdR4K$Ep;%FH;I_5xkN~$QpF5O1;+;s{xcSu}p0>TY7N7 zGh5RBV?b9FReGf`{W)!@23wfxU`ycfx+Ykd7}c>S!?n}ekX>2B0Xc!07mf=%q> zkI99PmkMkW#{-{_n^`Iz*IdI%t;K>nLJAcSAcmU_H1|ItA$O$&u@RVRtN;_CXBwjJ zp$D zlJ#iN!_4d$cImd0nC8^eyW6CqG9P+5)nfboScm&B44B;7D`2OkElt^ zqMZ>h#b78nFWE{nS!`lv))=YNf5tN3hK(s8>6%75V4FF@#(64epPQf@!o?$Mx`1M^ zG?Q?q=s25yh}#U$jFN!p?~^<;Mbyh7^_+H2c;&C8e=xBKcSLX`?j{8BAa}|j_fX2TZ=LOBy*QXNT6%J;1gGu(2D~j;AX_mpkZDAG%MyBLZR3P9x{g zeoN0`q+5)9>K|E?qlc8sn*KxD9!rCF)=Vx?a8!}1;+)nKQd5=zu80Dj#QMa#fON~j zy^dQgqR`lixsAE!hFIMZJ`5@OV$HmwvyjF=V|k?=sYq)nFJT1EO!jA|Y?*sEI#G9n zM>iD-CW9_ogZE~}>qvC{hRL7RO;n2EW`@}szjLhdRUE&d^+jm!Ts3RBYV_a4sn)E( zZGJ(EH3FrnQNjx4T_nTZQ~Jv{@NIzG>_k<2@oU$vox{;3`7ED9e@SChK0i84h6Fd2 zSGELlV=Z$(QOFr}l*S@=JBiY{(~Wxa_3`|mnq7DvBzjb& Pugg5&vprU2mz{3_De{=J diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_scheduling_gate.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_scheduling_gate.cpython-310.pyc deleted file mode 100644 index 76f2bbf999222c8301062939684b0d5e473aba6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3678 zcmcgv&2JmW72lm*lFJn(JBj1kZP5>?GzqHq$axPF51zP9#W<^@jM-wzaN1D%_k2k;fd+!a4)z#2J z`m6hNAl4k`Z`3)Td~`lQ*7s2er|$??u*~hdwq|{1Yp?I2_A-B5>(^Z8u_Js@J9b1( z){ne?L$GH~yFU9z$dP_K-IgksM(WV^dj%I#Cn}wow8;5H75k}>g8yVFbE#s3=Jo-9 zGLd;aN%`Yyuuyzt%tUW?yTjCsrrVvQ7(J$_8 zRHr{5Nxme( z$H-(9eh%cEUfV5KKP>V=I-KHCI4+^#^T|W!17w|}kPaYr2;RQebOaM#>h^uq40TQ1 z5;ajjcKdbN5DgI=J4bFmkikw;Mj>D70`>}Ql!RepgL+C=hHaL4yw&cKaa<<^t4gEgrHg^YBS^yk@b5h<^XN# zsD^QloI^Heb0-2@QDPjWH>c7UF0RdH_pZ1$U*|C&7eZ!W<{-_X<}_c>qSvk|IL@4Qxl%F>>mtCaQnE=#Gl9><*`C zqKZTslXiE1rMuVwtj~w*lS1h3zRdT#S-Rbw9GFp&|Gcwtud7od*C%nZ8xN)K?k

    #xWKz3sf!;huWR=I>tWoqEkRhwUBrsOz!%Y~A^z6ZDW;E&>Dba9lA zr`qsQyf2~8X`b#)CAX&!QkjX)b?0m!@)(uhp3cr3RrybM31O&%!)`zF=4S*2RC^{e#z z5aXIm<7P8}aec{rY8a+ZR+E20BXtg4W|N6sI9^Luv44n5<|;p2|jp>O=T zZ)!(Oy<=*oPLcT7nfpi3H?+;}J9~j?%zfcuMrZE73{IToIIV1A{Gn-LB?1erd>NiN z=U31D#r!$(rZ#)`sWpwtkSh;~cs-HIq!NJv|6HVr`O>|}C3wisko9d81{@VG&Th_e zyAynvlbc|@vSEsd)}OMnF^Y9;j8b@%z=f3Viwk&`!Tl^AZ;SZB?`UJPf!oe({VJn5 z+qHAwdTjjwjcTRc{CZ*ET?%^_5f}o$0l~eyR{XnG^Z_0=R(QYnIo;E4sBG&7x{%w4 zdmdj9UA>8Ke?+!aXt}pv`EGj!p)Gw;HZfn(8eOiQy(c1~u`U}!X$X-rOm&)T6X%I6 z{Vdg{^v3Z--CUes`h;Owv%4T#k+Ui5O6qB5O5bkbMrFI zZiF#wZi@$+B_2X)eKNr;Q#K~B;&E&$^eKW}xK>#Q1+e81pDa_>*zDWaNRDZj1YbH> zf)b>4h_n#-&d20EtPoo~&IQ_42cG_iB*s;;Al}loqG)#^O>k|LttMV__+(BN$nT*6 zb8-#LNjJ#3Lpne@cd6W^XE!@%vg(LRmRYw>C#RFmM7dhHwZLZS!}MP(R8Am22jb}NeLsIxDPD8lar zsP{P)G pzo5?jI;q~c^@=4GC0+x$6bMeZ!s7w?Jo|X`Sr7(pz*_8<_XS*otC0Wz diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_security_context.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_security_context.cpython-310.pyc deleted file mode 100644 index 740d5424b80ef959396c5cf9e68ea26327e48bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15707 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_status.cpython-310.pyc deleted file mode 100644 index 191aa1068c7ef6c2cc0188b07cc9e5b90e21c2a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22116 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_list.cpython-310.pyc deleted file mode 100644 index 1581d7d522634d1a14ce17cb4976f0ded84005d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6724 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_pod_template_spec.cpython-310.pyc deleted file mode 100644 index e2c0cca9843fa4ba25b63038d780cde2f920c164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4002 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_policy_rules_with_subjects.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_policy_rules_with_subjects.cpython-310.pyc deleted file mode 100644 index 8cce44c3d6469662d8b9c2392c5c7827e7ac684d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6664 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 V>^iY#LM?2|sXE9*&RgdS{{)=QWn2IN diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_port_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_port_status.cpython-310.pyc deleted file mode 100644 index 8f322244d00c2a6370babf64a91cb1431430d1f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5776 zcmeHL&5s*N74L4hzj{2$+yCAsWnXd1TSMUAa zd-W<=UUm%per4Y6e)^VS{E;fNKO2=F;FC9yFr#fSlUb43Hg#^bEu9zI1>}Xu?ibrd z)3{?Wn-!lKtjJ3Tg?5=)_l$aJ^jF8l??=N97co~{I=bFUT*hS}!hs5t*d2&uFJzp# zU*F|17rsKVv+sT~;ITgl-8)%hBHW%*1G&*`?uM#2>@I{^0t0w)=LEyL((n+B)gF3RT+b!>x~9mIT8-kJW}Nc*K3l*VY^Fe^=8y zp+b|kF{Na({i_`tiU&RCGjPsm)y;HyGl{$5?huE@FSXN?XT`sbBS(Q1@%yx;F*%GTgGY-slg;yR_+48hjW~bO`-Q#cvJuA~% znVn&0bQqQ*6y!w zB|_a(z8cEWr>#%6Z*REUy->PA}S1-7p5W!Z^obt6mjEM|vqr0zdNhd?CGH7ENi%%Z^v{^!ch@ zen3bsB=zctv9A)baNc?`wIz?b3(ca6-Ch{t6tce!n!TjYo4dm>5J|w53Y!nVBb!(h z8X51d4H71sdpzE2Mq#Hp*jK$I{$^wSdQ*mquMPa*p})&z^WjwSn?V#pv6}k0n7XcM z_N2y7W3ZoAJTHtx<#|o)FE1jgSS1sGS!!lA#~fXlWnm+q6_}Wj|ENqK$?zo!du%)~ zz<<;KGn(&kB{h6B_c9XzxXvwmoZTQxcAM}-;0Ck>4-&!jN??2^;(hlq43lngTc2#b8R zV1BdyP%5|Q@8#1}52slq-OZ2LO_BzG;^SakTj}YhjguI=A-Ecfm~052?5u6`YXn0w zq2Gp3`vbn=Lie?$ptcvLAV-I68JWg)mYk+4!Q%V)UXqfPs-v@W^4E+Gs4M?bnLce7 zXkD%2@QtL`{vUv=dvAcN%mWd1|3}gUfd6qM4SeDEGYoxcI2}b(OPqz!>sAIP?Lo*= zE+C2=h9sCc&WRRDoS}ux(O;&9NLz_Ff%_EOTVz+r3_)A;?0DG69V@plbLIyNKkkJ= z56VH#nx zaSR_3GFN*FGRp1_t-N#1)pndNQSci(tt93 z^kU|rJ&CJ0ZX1}c@2shFpWKZ$S6X_x3h4XOF+%hq4()VTsuk0*UZ)0reby!CH<&Nx zmA57ryQxOx^~v@Ai>U*7AUPZm!=NFWg}BTLc$d}f&8^jI?&^FnO-_SWixT&7r` z*Pc0o{tcf74XTln9H&8amrbZsYtZ~PDd+2nS|l!DX1(CA&N{Mu*74GqQI-67xkbwB z|4aT)RBJ-YM7`z+ds8_a;|xaEk5jS9>i4RXni7sw%1y zMexrM*&M(~!bDm(j7Jq!Mx;}~h{o7{UOA-uP1a5`t7!jFRWZ}fW?kOMdkxKJT(oj(3u76xkWT)>`Dz;_Ry4gnMlJ2SC&b&S&;qGL?= zc&n9`RpQb77gk#C`O;TPh|8FUnA?1^z{#|7Bl7zl=HDbPAJ0|{yq+PYDb|| zX`$~A#5-6^@1NSlytJrSsTcL7CM^jrhmlHcy@ctdMQ!{RDI+%joG2s5Yg^|n$8<~^ zp_*mZ{_fbPCbg1P``jtn*693kj6T9qdJ55aCYO?7`MGsy91@z$QDYWOxa8~bhz~$8 zf=cbD@~e-A8bbflV1Q97Ef2ELD`WdHb~7zO_E_>c_SM)pWsS})l8pW%6i=f8QdHp6 zAbf(>OCM=}OS|vrAZ#ZiWe3Kag4^SaH-*0f=kdJXww7X^UP zR8SdNrdtol0u#q3r4Q*z&YDq7G30L8bvp@y)}-@*2Z)Q|=Un~>?D2T5SwY0is z-iypurA3TKd^GR+@fhLpN1pdvjMm=Yv21f?k(1e&FMWW5KEOAoSUBkb`jLnZu`Sk# z`u8b0N^i_P@AuU80g?rodmi=H?G}FZGbA1gmpw0aJP!~`VZ(8AK^RyoU^lC=WebR5%Kn&it_URkbOs@N5~R@Up(D}q)LYe-T{ zAd*0#{obqhn?`m!L^MD1o|!#Rl``yPKskm`nBR{{)rH B^f~|l diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_portworx_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_portworx_volume_source.cpython-310.pyc deleted file mode 100644 index 497d0c13ddbb17de2933339dd1eaabd291fe55b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5671 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_preconditions.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_preconditions.cpython-310.pyc deleted file mode 100644 index 6da42b63068c22d0f26d6fdd101a9e50db111bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4192 zcmb_f&u`<#6()xiMbVP&&2GGQP_#q>1XUYL>l7_oW4lO@O%`bZC0K8A5ZW>{XJpYU zk=o(Nhz0pl8$AR)wAZ4C_0j)8|A77(y!O!M9H55)P4c~=Bzq-!vuR6-^ZUn}?|tvh zV_K_u2A;o|4?Fp~Vf=$CS05XdxA10nk#M7JaFes1**0~~+DzwG+d^*j?0%_TGK~iY zw|VKz;3eUlTJ17tdq&+E{oC{L{Cc=AWFnNvJY8?4J{MUefo2@gH1(;8pn>t{xL zh2P*WA+PeA{1);Wf0=I}U*)&?Ch|4zKy|O=Yaj1?C`FVeJSN$*(Pym>9=*HkKkCMr zAN9g4^HB(gD)krCMp(|&*3kGp6rFE{O%J@ELSxDo*jDSN*s32U!?4#oE*8tJOvyUS z*QLnPp^QW@QD|-rW8PkyHh)~GSvr8X6%nzg50x3-ckpJvLNW%OhlVUG;*@m%mUzk$(#H}Fg?-ipmsnft?`)bs2?YxN~J7e8GYEgo!gn{ zbuL?E8GRRqTtW7wY*nrCp@uRcgAs5i&+_y|B_Sc`*_G;eAa;Gw zUKLK*fK(ELAPya;hiuHo!;Rv@gci|l6(<_BofFniv$6qT#AkU9GMjGQpv z7iGarq=>7YR7b4+z*pU=P&o#WO5D17J7Fb7yxJT_bkc@85+ZiOdmS*xLOo8wG z+l*Y#llNQr^ju5|5@Gd%H_zK<4%Y${z_N@gx3v5PRS1W9i=?*SQTt6K&k%)(MZNkm z`V$JVabhatDK42qc5dD`e*4ScuoHG-DO^iqcFIm{WshxDI%V=zRZ_TmI6E`O_9;6x zVX5q{@x)c-vCS=vXpHTr?m1a-(M~ffXn$K(Fw-t(KK0IxtFyWcAWy3$Ic*B@$k zR(QhVDnr~h5K@tQ4Dt7Q9I0o{MgG~sON`JSU%^Xr6MI+2INdoq#^keED=(`wp!pXp zFL%Q%R7%R1F%2=4`RN>zxqG)4_V;;sPtwBVr#6gHeV%NS6&rW;wVK^SVKR#rzFyGR z(OU?*g(wWd-hj~7mKJ?Wi`_wRs|B}PpVJw&q*9mYUW3dw?#cd~*m4Vf$9OZ+b=BPX z+BWMe2xa0=^9sgGnv>O7{HoAQc)(fCgn59`w?yq3iA(qe)^E5!$gsWS* zGZ8-i9#uS@dRP?dl#1Uv7V&WHG~(%6_=MV zUdTCm*Nl!Tl@PP<@k}ldcGO2if zs6;?^SVLRxPF&)#4!?3ILud^+$=(a5YMQ)3)jO2DNy(+;x}>8wQVbboMrU&k+hh)N zndy9m9I01gYcNpHGucX!yDRRdYrA%}td&}K<0@eO_D jJEQmvaSFZ^Y~=8Qz^;lFJn(%Z{U1ZqaVtA}v#kl#(`R1=mOrJ4R4|NiD$zh!m^U&PZID z+@)uRN<>gSL_!Wh5AC(+!8+YTn@bl$5kuHClHleL+7I&B9}r|b4g?UHRh zvbf7jhZZl1@`2N?aJFXE%fo;80j^&UHib-u7RopMRu*ufVwv=HlBGdkX1fU&Jow4B zNQI0vnwxvUhkcPo{Umr)yv$_K(Ymizo6YS+cLtk{IO{dDVvx?Vu9|d~#>-@~9t1xO z((GBZ8a({@@=CG$dPfAiLMqxi+X^(gwAH&GeGu?09`r=2R|6@!B2r>$rSax34bNjP z3~Q@XPR84x?AXvE?)YCpb5^Tv=djrq`!02c36tt3QAU3o5oqy=|vz zamF3){)M%nR$ex(62HwoUOlwiWl`ZipEd(&O{| z`k~dH;Wzjzc-Ht${wkice1X4)=N!Mq7xBEtD=^)6^2H}BA4#z#q!fHD?g&2UCh7LN zkiFp-tq<29t_JI!Lrg$gtSA7rqd4g^oMu~M;B zFG>edx4Ty?*1qv%rIm5927ARilf+-{B&n{m-0vIyMH-8|{E0}mJ6e{YXjukn#f0<8 zMQw)rJ>2STkP*;5uw+GB2iCqbaz<7N{DZvj);~<47AK`sErNZzEo|&QV<0_ z@Y)6Xw~`c4O414RTJ?$~2J&0oERMS2ZX{J0p9W7p6P}W%5*7l%d_y}nolFK4kl-Lq~>4>BFw zlA^aUVnJ%uC0MWGR)nFlH~i7%Ql0P{)8NTPZMu#2?w~>1+p%SB1l+?DYMOC&V1H&C z%me?>tTX)U+DmEHFCwuKy&uV_cS?)@L#@70sjcCgAEdicH{k*3Km=RJG8-ov+PE9^ z21=VSv?+p(R+fs5x@$ZsUnmeCD&#KsD;6<9KKGx{QV*qsJCe!jtT34gJ>-06?Dhb! z6ybH=^K748ifK7Vi`mg_fP4z*A_{zas0~hJ20YnSB07G!kpy*4A_6 z>m7DvKd^rHtB=_}+jlfF`-mN|eOJ39SCM*b9Q7M5zg#k<225cmK4LKK$26a*G$Tq9D@u9>rP(o_c2Q6l|J$zGC^U3 z3nFS>1`x31XCxn?W{zDIRExpq*r$nxeae=Au|+Tj^NwC=Q8 zt@=C}F^zh7k^5l?R1Uh-u7x4(IQ~)zLmby(?eAjg_AEJJvN_NqB+s42yWAUx(>+rj z=VgUs4peON33+7!qBp43AhJy4LF_PL&8YEd8w&BCJ0Y&YMB-&hZ zJ>)8pu)f4T6)4bSTNH&|vYhU9W7t)#dp+5p)F zhny$>ng9DAGe3j5xw?km&-Cl7KRK&uf1ynNXCm_kuJ8g9rgb%@GsDxny1W}*L*7f> z67D6>?3cS`U3*(&CM!SCSeaMum%3GE+|Zhpt-seT{N5d|aN+Zahjp3n1Qz3APq>4~ z4SZ`Lf(@5(W}R8%J{L}e$CXX%>VW&sz_s31g@Lfvqi7H=wcBfMv_4#E^@4soP>rG> z@WM2+kPH)ure&SB{NS#$WL^2z`9<~io9o=#;3A|~2dh?uEWPT@YwuVr=nebakCrUK zJ??~jVX^g%*Cfpe6_T{2jFRN_<2SY<-dnGKf|b)cO+B8w6!@#|+7Oe%>v~k2|J9Ir z16O!T*EFtSi8Wf@ZfQni2L2^nCayB8{Jh#VS(Vk;46CzQ)?jn8tjx}{1MJ`fy<6c` zc8DE*pxxKIHD0?t!=B1=Rd$3Ol{Ixx!5gS~ zF3VNf^Xvs#Gsovpb27_SnZ;g|HS>HPHK(#%m7QiU$(jTF0BXLL=Ge>Zl?Ph)AUngF zxF2F?+1GJD%+9d|+@E4C*2et^n+Kp4;{&%AuL(C0ZnSyHbHZ@zhn=f8uPj+N*WJ+S zQHg~IXBY+6HZT!~GcdIzSFiKcJ((#RUJihx$l}b6Bx2O7`i?(zJa1DC7MH?E#O4aH z*lpZeyt;Cm_oDZCkg&X{%B9v_&FU35e8?iTDCiVQ-!Hoorme!SxU;Bvm~X zJFqWO2ehmkTu?_VTn~mGvj8__BUqVUu;#m4*=Tr2ASw4?1;YrijbJ$)&ywglhas8O zcQ(gRy3V!EAy1EjMVxX!eKT(I%e!NVqFdl_G32zQH~4 zer>@Ky>&pK7Yzk(V*wW=u|Cpt!In8&Qa5&HtCO^>5_0FjVV!R)4?&?J>HDbE6=Y!pdI z)$3E0ka&g$(w#GT^^>z3nVKjO_YY zG(HR;j9zHL!ToTZ`)G&}Qf-}hNr@&};TVCl)-*CEggH->^qlurrz8aQnF9^&N3Xy=r-a?B$mAz2HOGS#i#CSK*(+Ohbg>Bos%&#P~;U2q)%4 z>~ztHyTU3AW?}yDBtnk;2wVm+$+ z-Ipr;L*A>P?dE=o%w*_Y>O>|ibsm&@$Tls?pWxQ@D>rUpccEN-C=_&2dl(cZ`x|UA z((MdwMX=LI74WJE`cesTpA7=+U1Ub>8=;0)`Yu$O;CF}6Pqfo%S(hB2j#WtW3~tPcO8eZq6r5!1%G$LV7 zMfSVA&$BDhWA*j!R}k50zq=oZDBVKqtTf85E55rP$)ltrP5}q08j&Y?1vNrtzap&c zM~!U#I&;U;v#NdTkxY?HYzV&SFh!BbAChKofVqE)rnHl6&_U*JaD_0`TBWxAv?!%$ zFA3TDMP}#IE>qW{K9-Rs#p$$*;&z&wI>7E6-*FK-;xuNMvYw`0bjGRdx47g|)Mxf| z$G@MqA=?fp_e*=mrSS;rFqw=C`JYKnI@HOTHMXkKx0cSV2NxK=c5-ysf-lYK-5uo@ zUsGM)qeiK7-LevwicAJPS9uUV(SqFRp$}Jhe=h2n^yGAQzmqS*H!rI|?GfVAPN=2B z+}~5B)aWl3HTpJs_5!c-L0-LY>ppclV;qnBd?~o6q;5=f!Z#&;+lr^oe|I^|bF(8} z0>4u6lZWvI%}Zr}B%ba^^E#cp@MSwQ>0TAlP#`iBxPrr`q>avp*C0=mL#EQDj(S=u zIF`t#gM(e1CudFMA(9kN93^uXJKp5Th;LeQ1585g!y(I7HHos(u@db|(O2$u_9uIj zgzho-qP$_Y*>W^>ag>&SCwZf|$)BlG%G=T6TO&i|%h8w5S^XgnGm=fhatCK6%S}^8y1K{I&cdd{9SX0x*g+sl5!Y`~sO^dn z2(S@GQZXi26s;(g{S{Y8L8OB-HN9?3Skf|zsfr>4;g6BH+C4qe9wL-^+jyj3);@Us z2gW_)UMWHVb7b5%?wOG}GNbZ+L!64r5rUS?c%Y5U`@j#-V_eYg)}kr`oh7trjm(F& zM-**P<r3=m+VBQhL$ zITmw!(Zsv}U9E)c2F;6NDG@Nwbi8|JgxNhp#fSoGMklUDfld7%8*z2r37ses;$`%} z=MDNth4qYU7d)rG!kmkr)4=4V9n-d&MF~tsY+aBc*zh7AR4+O3bVBL1iqI4IKmx=b z0@0-tlJpaj>{WbsA_+G;pU@oTfI>dKf-Gn@5!~t*$QEZ&XQGvaK|??GFH>*MBA)Ml z6wjbNJ~!a~FrG_3_ps%jAg-<u%`!VdVHd9-AHx?&4D48Hh9K`(u;VFD}bb znq_&w8dtE(mZ5$*gl@}dZ;>vV@ZWGrrDPgMjJjUeO+-!&z46bwIiKVzM&t8(#Wc2_ zp0d*0mXtp7k(j2KvBL91+Wo7YAvJ4V#%~D($z@qq3Tpd7o z`%a|ReFxIY+Ba_?S1gj_p7-nrtJQnoFYTAQ~{$2&N$S_*xRpEwD|sfgpf^|&M!iC`LCF5zPpn~KY5&qV?>m6&u+$K>xfwH)k zXvIw#D2^-GFhI0-|NKJXSc2#R&E^eCzDvn?Uh+vst%z-8al+e3YS1V~#i$t&*7RTb z%$QA|>0bG)UN@eHNZ0GSF}urs2K8u@Z&#bE9j}=+vr(0BY1YJBMAvIbVncATfQRnM w@dq3&WiIjAT<()J^(jn6AyL6@hlxS0t5v@UwrL^xzNS&D*YujvFpiY|4WXApxc~qF diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_class_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_class_list.cpython-310.pyc deleted file mode 100644 index 61fd036967a8163d7f828eb4e9f0a495b9111926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6820 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 H<4Ep*|4cu{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_condition.cpython-310.pyc deleted file mode 100644 index 925fb2721ffbb4ee600297ee7295965a87728448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7584 zcmc&(&2QVt6(=c5qGc=J$vXQLCfQA*AeQ0=+oo=sCe3bwVhisgaTkTq1x;zjHWP|e zh9mFVP);^_XfHjtJ;bLX*Zl)}?5)=V<)N3N1@^o^4_ma`-vqH0Js;AYo)U(hm;8_Um zPO(`ujXMUjS#i@~MPAw{G|SAoXVgmT|ERdQKJ2x)h`8iQMbY!I%XrcjL01NG3(Gv>!k2h$t+^j{dE|Ek_l~ZNg}WkUH<@cRmIJxcYt`FvrxELqWE_XdfSAeH z#G>Z9XWb}%=+C(yymxt4kG`a93h3YL2i3d6OjI)9Zw+`ygu9R)X_ zVuRG%EKC^8VukF_{%x@d<+2hhGlxwuqKoVtn`Bd)X0yc0tjZ2-8XIQQ;m-XDc5q0Q z*&%jVwN!WoEk}k_nH^=vRLdlvM9c9ZRc0sHYpP|6PoZUcNR`=1_PT1R@+w;17*Om@ z_SUA+Jiy*&r|>+;Ty`4IL+lJYi|1kX4tp2RBdh|aIG?`z$?V4>h(#dRe#}>S_>_)7 zuz-}c{)_pK7CxAB7gmDAZHIo6xOnkk3E6JwCUs@6yL{=HW>O!%AHzeW%Q33* z1wB;9k9vL>u4!he!{C)N=?Nr!*SfrUggPw@`z(N;D8ur?p<;pxg64diDhC(6TexrGPJWJ}Ut(s@5M^m>7>`Q* zQs3|ZO_cB)lz=5lTa`ss;(OGT`}nG7inD#9oIbt=b+K=On&_h!sM&r2RHcvJpsx09 zP?LRd0d=!q1U1FXdk6@yqqY9SvFzy1xW3zo84m&ar62-=f@pxa`C3(waOrdyxBbvt z^+n>f^O#AGd%LRI@dmmsdzrG!UZ(A$r_^0#0R@>(5cx6|g21+$x@+asPI$Pq=LcdE zJ)aoj2p(Vmvau3(cw@O2v_;(JQU;9&SCa+?Lad6GXSy*<8ml~7ZG=Iq(Or`(adf3V zd$|EW;WJ&o{Q&-vG#(5?Vxt`f2ssU=h8*mBJ|0$~P zaG5A1?PfO}aRKDaa31K(-3BXMa7n}+H;%ZgUB*RJ z@eu}AxTxv{QsNsnzrl4y)4&$M`Q5Q#v zBr|-7`zwM|X<~hDJO%G&qc*V^T=Y)2vNc5~6+W^M;C~8x-+PJn)+;ng`+u=;*B5?A zInbzWU%A!yF#5bW0iD+@ZF3dEC=87l{u5Lw!&fSM0#zI*My7u$578`!zL@6@J#;Z+ zr=aM&D?O~DGYHPiZ-v|)j1?e&wXq+Hma!m6KM1j^x8k16fID0s#{=SktJ=x!H?EMw z(KWyx*7%`Nz+06x{@PIO$^Z&ej3I4%y^K?X1piL#7Qu#S^hhDZ0%3X9Go%+ zui7*kLD^s$H2a(SNEFugfrT_q@&=k0ZzzRnh^YP42t=r^gIm0g;+X)soCk>BTD&ZL zXl|JedQtGO$1l+;H1k<3*d_Ot-@$Ge#||7nX#40c;m|`%+Hlc7pX?7MFGGx>39h3!RmM%Se8VSG0;8B-QQ)5IXq%iW;8>AbP^j1jy+;K=vhM4j{V! zE4Pb=h8|2qV_y@09%vvBHiU*chmSym>V88e8Vef8hi#vNXu*0}>j&`~s(+jDQ=oW0 zzu#u^ioE_1X>B*Jr?bTGs8MriB$Im)$j1+B5LV?p%P6Lj{@V7DUHWS7u~nE%=e8?zyCAqk@ct` zktFI{8`dLR+I?FVH!N{R7A4Y5%-S^i_J*}#;*@AzGafp!jAT*)U)1~dV`qy_kGh_E zPN4p#oIp=o_k3L0GV;BVfXcq_Q_88he(tV1gX@F7PAVaL+~q5WHy0!%v5|=Cj0hvnqV12k6Y_v5^Tao{S(`+%Gx$86!1u`2@=lUg zvwXM8uO(@D8Rs|XD6IrZ5FtoMZJyd;kjS*q@w?(Qc&YJIo3xr16_;93?bInpn)E`M z+KPqgrNvc0?D5f=k^X;AGdqLAwvJg96A3INvn+G!-xd2nMwP6oe^pAhHSQ@av-A#C z)2|;20kogh-v8LzGPcP7%=LQS|F8k3L#*IkNP-le%JJ(^kJBz?JZput)I~Zkl4-e% z&3wm~+8(C+a zfPPG}a^S~?&kdH`77})D+`7-($T<3fyV&yi;q4~{agoFz?n>QHbowMMss!JNgQX?U z;}1RWFZfy|Gb@&D9vWNsy7RszD=5h>4&7=m$<$92B;A7e4vBS@il;XzBuK@5G2dF*ewIEF`-=V+cfz(D(Kh8oPXQBrGHuz+wT>}nntjwR7`8~zdxNxXWFqHd#bG5rsjwn;4ZG9NG-ty1>WYV?W}!W uXYKJDWbXGp{ZmFsd!%;1Z4(Uzz`~(*dYz(jLOEUAaw-lo^;6cd!hZlRXcl7t diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_list.cpython-310.pyc deleted file mode 100644 index 288500961aea68e08f925f30d63b7025226ad340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7264 zcmeHM&2JmW72jPhzgCpL;wW~$ytPv|3@p-$k$$L7kifAG!wF+ph7W9l)oN!XuDsl( zXNE#V&_GccJrq6k)I-sOb@Z**9$KJ>0{I*E+Fo+%AwW?SY17}ET~d@RS+dpKvc$~J z%+AMqZ+`F1o5y5&+A;9_&b+-WUp0)sQDyS6QF$LpUPi`@w!uthMP}R7Z>w$TccERt zyAavkV!LP>*9~T~;zNTKd1<52E;DPvsFw!+bX+_)`%7HJTyg2>dMj}mmw^a-DokRx zCz7?0apu0c!ecIch2qk>`$><-elK*dXN`$)J4*HBe6zU{s!o5Y5hUGal66u^63J0z zHlHRDb=N)T#>stu-o5(H#kp+tJ00$>aUp5xWZ6}y(o!GXy5X`U=y!Rn=3T)f?n^#9 z*LeFUn&zAeP1^jJl6?8C6&s2N9p_6(&S=%mboxpXFNZ6AFoop;YMy+GsJxFPzd*(f zh}a%ZYKV%wAw8^_M9=g)c9TYh^aWUeaG`yoN8QMm2Vtz5LK2d+aRU$C-m|eytZI=iNJ< zP`W|nOX;HE_f_IPfdSf>F$NlXGj8+cefL0j{4l}xE0?oS>5a~o>iTitkD~Q#va}$T z7@Unj*3X_s_h)VA?i>;SF;{-wPNx7)F9%Xu3>ELn)V>$SEUk3WgZavDJLq#a!{mWwVoXd2^*71|kW#QepGnk7X0ngOqq>wwEy3T;uUt zGYXfQy>-<|;!BOWi%kjQW_x~c&tKuPd2ejGnn4u8G&HpsFm%rA14>w;heqoPmk?Mh}%K5r)1ZKn;ym z1N&?GU!(atS5m9M#7<=94~n<%g1gyKvh2{!9NsxFvNdw808C`i;az{ckl;PRCB&%h zAvOCj!b__>Pz`s13mWLkPSTH<3kadAV2XoeB@PGU*|0{US&48|0Gwg0aJ=}DyXHrI zegRW5x9hKCAkFLcP6Wrmj++2KeFr?RY}XPB7H?lT&fN(?2Cp8dIK6XdZ@w=B&F6wy}wJYM10jDVizu$+Ina!9F?Iwtq}&8+mPqSGJop3pxFCRKX+5 z1u^yzsEO`ox34bTff8otDOxZja~RN=I}^~zk?%m~K8|%RvYyK#>FQZ{%z6nN1zpL6 z=*s?5H-uM|YdE99S*e_V*u~& zG}H(^yO|NX#q{Z;HY4BP*NhO6ds-1OgPH1<|My87@oa2unTVU;p=vjO^dP9pj3Ws? zvyIQT1y47Plip}coYotj`2zYvyu%luwx1)3myqpen+AU!Uu{PB$mcgs<3n`YQGV!o zck0Vc)_ocBstfm$^kBjBZ~J^y1}2v9{Fg%dWtAdxtOsriUg1b$87*b@wYNchBcr^a8m6kic^pz6g z6^uaa()@gfEYr&6$nP#O|GmdFF@bT$7|ic${qrRnmvwwdzK23Kjb3SQ%FmA}KaFrG zs6P%a3a2$Mr!^nTh%#$V?ADjWw4PAt5+d8ggiRja4nD*geES2E_JC^U%r~}KpF$Wg z{5-9qKf;z2%bU)FyPh_lX?X=fJ%}fDLK((V`EkHgn|!{s(Di%bwbA;iO#;<%t9nrz zxwHiTr5~x())SasTGVlfoph1lH;FFtt8MF~InDURrCL!pEHTc0n*ua=4xS;Wx3sQ0*8^Y7{pSnigw5DiLM}rnK@)mJ5 zx`?j38CeR{5s#ktC-l&yRjdP8+R>;dEG;RZChm0dTWfMy_nL$d1CC2c$+x7MA>$4fOv?x=Y2t+eu(SfB#@R-@qE}Y0^}R`*Dwy`#9RtN^W@9 zb;v9&Nko+)aymh_;`$l#HOeUBE8d~(N0e=`wRIn-Z6qIBUPD$fY||=P6$|=qnWe9{ zN>1522}|HOrZttnrzh%F$E-M&Qx&^n*UB0i^@{i@t=T}9T7nC*DD5*_(d}mbrb`j;zn@==D8}UgnQ#{hI4MaD*>v$BwAU z`jOXf2=>@%*QZ~G9M5ki1F3Rpqz>)6S8yS9qSCQRi=2;Dv7ZVl_yPcYy$)J-Iqi#`sWQrowi^ck!OrhGGf1l^Y(|D8L|LOZ1 z)$LDqB;S`x)78b08!YLnd!K&7MUhNKGB=xC$xOytu5WaH{0qzToD0j^<{2mR>tEd1 zF*4Z+zkuePUfV5KKP>WLx;=qVxGtgX<;TO~12mnZlMYnukb3)G(-BN~soVE4GK@8G zP1HpF*zMP4Lo`Hi>>RoMKnA-_(Oj%VC{~W0ekfXE72}Fn6IU>{#8vSI##QmA_!h=B z;lns@mG6AE@u^A+m70U!%6*xgmWB3Al&Jd&lSjp`+&yv0LvhV~(v zzJ+cEHBKDWFwT*4$YyNjM8Ge4?4$Q))ceAPBG~lTmr?{@=P@4@LS{hkFwFslG+#ic z*RCmIpuCY4Nt{LdvC>hpZ2Yno5%aJ@O3)vrd29-$$lKap>1&w{?LyVDbLyxjhJXI0 zyHkv0cYBg1sz{_UX?O4Ex(fpEjC^~2TnOFWm-&7-O9$QYf!QhYpL90f@9NaZ^>Li+ z#oJPM_s$%!n`9{f-nDYz=teZ2LmMs7! zhiuxplomS+B8dwEi-+dato=vFrPQ{WwbnM?aB#h>TasdYg|X+Su?okbJ9GGUt~LXB^EvOVVVhoAi~kjq)H!sG^9(U`mz}sDIe+-& z@7WlU1`%9m+TGlKTtD+P7gSB2V?BWGtgTe^C4jneSe`wC=0J-&iuw zN_OiERmz|N8-44n#5DPP0Ye3t)>AQ!7*Yaj*-@20^9L{Xt7#xM$*d5 zU3zAyS_FNmj2_xc(PLYn7J71Sx%ZFgp_eXt>nY~|JrqdW-(Rm-2x`Ku~ZHK$uOWn3>?q1t7_forrdnxt1 z<#yS1ZaCcM9=ymh3d$pr;|KmJ(+JL zTyS<_Rb)cO8js7H?313z;$FgT*q6CvYg+fzVzarL=(YZGqmy@=xgDhQJXPb)rO`6E ztTT3=W%>PhkzIf1@`By{&YEBwLMqxiUtt3i}?@oY$aLkgDGs+q1U^A6H$MTx59yl9TIQ5 zRCBn;OC-`imD)b9@G1|?bD5vzAwTlSZC6B<&+++3&X(H_M6h1tM<=~1KgN%nFQEwW z<;0{{*g_xLOP)FY=o$G^i*<37*N@KBB!~Gb4oxg$mabCm0 zvVz@R_*5pjO!VeWu_4kueBSPf&fqt#Pwre_WOvpQ#X4!M6vIQ@*E!pF$|U;9DL0I` zZ;6$eQZ@rW%yGb)37%+kly<9bob}^0-L#9f&)r?P{y=nl`e2&d=kG4uOu7lcckrO1 zq_nJ;ii$9+71h+vD15!y6S9m`loe{KXj&cWkAL*+;ralVx`k%wbGMI?+Szg*`a^%{ zM9?s_003HO7g~%#TOQ&|-<7WqsaF|d1bW{edgxV$CA0x|aV*~8y;;Y?F0q((b1qV- z;7XDK&q+4Mf2&@TL}PI}%{y@#ZNySVo!tm7s?mt`AR6;tj)-|6CLxvXCRwa=IVFpF zx$u=pSEgRe0J}YLvQbKy-OE~}fZ9fH zvk0On$r2q!O;Dv^A)UahxcIZJOT7U7&>hrgiMuggtK(vw@sFPAA}oAGco{nD4$jXV z{Nsku%HY_F*%~M)&diObEuB#gGQNva=)TNI69s$0RcSr?ElN7_MNoBphFVR?c;d<$ zIK^!aH*?~)IZ9p9j`wkWMewTxgSTe#YdPuA`0 zFS@J&-yZzkoMp0i1CTHwUz*6sNXx*Fbnr8J|1z4vg_+rL5*i6qCcyLo6qw&W?poyDDTcT>2dcM&f63YuA{i~kCpodA!>d4AN5 zxmu!Smf+cV(m^<>*e}-v;yek<3R^n%0?c>;3QJUfd0li6K;+B_)+vKt;bUsUSPB!f?AkT9`?3ph#<55r zkrEApmy!$=^aZao`owLt!-bYH=v|R{*LaIg4F88%jCEr!SiBJ@X}p{YVkkF^?oa+YKxed1ejp#jURbU(1($B+Aea&o{Jf*(7&tL3byprCus_YPP#n09OOaoy z)CND8XOSce-mL7^k(w8yf*imdZ_Hatyfr_m!?)vmW&lUjp|A7?PG2_Ko*6(s!@gcn)24?9e$-m+jz ztvnM;b>HLKDdltkO7Hr(6#1^>wZIL% zJ&udQEBa*8x8LC*aUQzbd5nZ?-P?9Qbbj&P&%KA`w6^ zU&FWG<1)CIb5H%xck4$`21p(hHH=67Lv&R!KdJ+nOjs4wRiQ~dMVP20Q##H%qVUs1 z>7vw)d-B!s{)JBhEy`w#*W`hlpxN=etkJRHZVwr&!ry{;{|1Y!m9-L1Q=Spv_3t5jFI{ z1aj|DAZ4p;29i`g=^+})bW!a=zq_%vNAVQ*SyVt0mi!~JNfhN za{#s-!ZzqX{Sg@%L(!56Tb3+&OYrLr41Jnkry2qA7)5`^2t!)n9jY2&XYF(Fq=JUH zH}C)zbTw2^RmquyR0w;+EXpP*oI+Gli6U`7ivEJprYaG7zI*&I61Vf7o2imv>W32?9mJHW^ATfr_ zJ#5jQCq+$``&vY#-N*2*2u7B7)08%fib6e0$erS##k|26m6_z*)VxE@4nsTnDIFl? zQfd)R;P|dr@d6K;UisRq+Iv{>PC)-_q3eaa?syL7gVTW@_;XbQgnA&~rF|}U?>w*=FF$<`t5DK$zC3ckztD;Je?*(Cin%SIpvh;s{>Dn6r diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_priority_level_configuration_status.cpython-310.pyc deleted file mode 100644 index 8c5d6d45d182b07344c788e44f1f0a430efe2731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3926 zcmcIn%X8bt83z_12||=?w~oiYw5ZZ%LVH9;?X*obikmbKPp2IwV|j95>wzKcQiKcw z@a{qraj27Y==9WcPu5ZY60SYv+?gIa)4IQJK}xbECu$xm?GyX>9>4Fwe0kZoQ2uT| z95t_5)<0-+zPOmYkE%A&aBFCBo3qp&+NNhiW_oAnpm$Pt(ik>u>w(2x-Z-*&Lo^Sa zVT-dZtJ|FZ%MVcgP;LvE2`!Xw=7T)oLd7yEbdqO5A@jY23m&|^BQhZ)jp6ow@M$5k zs7Qhb^qdhh4IF*MJqFr;mqQZj%3?8TlI z@!0F0daqq}Fw1=MXcH6wYm~o#k9a%%4cla{;CBDM1q3`hP{091E{saC)^efzj za^9#`KVSb$Cb>-X{vXAjNME9LOGmm?)4vWref050@MxTRin|kx( zK}>R96dE(s4^h>x(99t5(vmH09a;x$#%5LssH4R?T4#n?Y0En^nz`KGf@Y++>4|N!Q&ZVswJAwd4~QHGMY(} zMLL&~?6m7tt`h0UOk@KqCzkZk{rfNdaXu0Koid4K9t*9L{?m6=9~Z!;vYoXe=c>Oa zvb}zqZ1;nB8s0zJ3{rJo|tQhmPnZ&VUZy-$ z20y)Gzw*K`$r2rg_du7rj>cn68-Hj$=G*Rz>AkO)WN&dxY~zMSp)pmX%q9jiYuAEu z?C3o#KM-2ga5@!YZSlbH6<)l|d5}AMa;B3fWDev(;!;XTCm^;3J+dmrvr;I%wvf_l z?{)WWNTExak(J@1?}AjKlFEkE`-RvD{tsg@=16BxY)Jw|*FtANRX1DL_NstCZ% z_H^wE@;qZLrc;YTW2#1n6q<~o&5bO27kb?Kc6zMcKJoOOYp#f7G&!fU??Z>*T!jO< z1aWp*twB=RWorB#){Po{|0UZZZ$bz#difg$iFIIW>p9%uE<3hAvL3(pXLi629PP~D zL=V}4tKFHa8;4A;>V|Goo^WK%+(UL~L#J%hdgkfY%;gSt^k(jJ@0fI5uhYpk)<4i~ zoJ828lh6HQ>-_1NyVyS?7u=Y>_0X73ZG*L+MK)0gsS|-Xh5vvjv3`j!@)r*37OJ|1 zM#F1x8*jH~;O-b7X5>TIplaznr1K}NYK7!8{osaW4O6vI2j=eGrYKiFNtk) zp){ivOu>c=Z$Ej36L|yQ9-}H!f5*P{!nM0gm7|g`sy6l`VGt8lEzgsmkN~Qx){cPh z)3Wjtm1OXPSu84-JWu6JqCz6otlzI(5^2>iw;%+Pd#RdIs4~@+Yp$@vs<9WPrFfMx z68->Ht)g++O@t2w5CjuucmC_UEAv^Cb^hZwT{gXYb@5-2Guey5K8dQv{d0C~9TW2G zY41Gpl$MC8NE!>UfiPgQy+v|qV2ME8ED#DZUA2l)E+>($mC?cFuW(s4fe2hV!Y6~H z6*lc&jS-x>z{ja?rMv(Lw+P|j;Pxj-sh=2{o&-_GF|H?FTfRwDT}B#$IdK_=y9?qx zcE#{rpS$4t$rO#4e}n-{(bh0U)uJ2=#6sXRo7$)JgMyticv*@d83o(99tZjMu80xq zBPjxe-6;L!#F4j&2fEz|`lR-PRRjBlydd!~6wktt((r#0=zZqe*RLk^`s6oe%Q0-- zJw?;&*fQxcvGz#*jCdmBzl4iSgkedax@fM18gPv>@OFdlHOkepXo7j=harGlrZnz^ zA-z2R(h5WTP67_dcMg}yV3X}qi;%3G;&wi; w82kN!uuHta>_}wg|-cD8U8+`T>+9 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 NTC3_+W5GCF_!st*GuHqB diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_projected_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_projected_volume_source.cpython-310.pyc deleted file mode 100644 index 45be3524e19e3fe3becabef025a66b7d0ae8e87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5272 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_quobyte_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_quobyte_volume_source.cpython-310.pyc deleted file mode 100644 index 68b40f1aa2ddc621477a0140965d4a9eae3b9feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8212 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 F{sl3ljY$9i diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 4849602f6ed6facb1fc0150f93158409d93e21a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10762 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 XLy6%$gsO$aDbujZmTqBT2Xg-gT>)mh diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rbd_volume_source.cpython-310.pyc deleted file mode 100644 index feaa45577c674a54e1e95f54f03a8bad70ce5fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10276 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 JElg}*?!TV>nC<`o diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set.cpython-310.pyc deleted file mode 100644 index 97b543e90e8798435c0fbd3b1664e03ee0ce0893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6972 zcmeHMO>Er86(+gdKWgQFJ96U0jGa2(wAziD{y3@=#BdxVFd`R{;lrW@O>ssNZ7#VU z&I-|DeUi~b4@HhaTc8$t@*(#gdgv|J9C9dl>7hV@oCEaGqD{Xyv%8{JyOH9cw{XEB z=kM{&`}tw9XTwXhO&M^K?mHcI+@(%9wDhg(_3}!MbGFzs4S}jXG3#|g4 zg~)CfTSe2jX)v1=9~-R5OWTE3nOQ4Fz0~`sL&{FN*lezca-+N22$FU)(Su}?MCq_H zKOmEcy6awakInpcQ&}Y$wf+^PS#wBDt+qO&);`h5_H=`I3RtrL4%q%XT^y_n6wRK0;&W%h$GW?7{T z0?e0wW~Z2#l~Oghg9+s30( zztlH8cqU314oY|>N?VmhRbo6^%6*LLn&M)gYLz}lqxM?gLao}zEYueI1=O5AW}|kc zZ=*KT2Nl$=^^2(0n7INxfEuk{Jue4$-u2yf!gvJNUJGORNf;0PYN{277~E8!`PRJ5Jga*B+Ggkvggs-)B%F9 z@Tnn=W>QOqo}=3_?XP;L^Wtv|=>#Td3@>`8n{4Mxvb4T&-+=B+|8q3oWgJeApdn0Q2Mxxk`uu-HEW+t(@_>sHmM_v8{kYsM#-@-)lVYeISD5xQ6 z!~Gx;923`)UF^V~(txrXVba9D((XblTX>752v-3{B5g9h$s?$Gecl(r1~eYXuHa2b zZ(cDQ6U3*DHoJ&LCS4KmbeiB61;^Z&P>;LcRQx1)x)z1p>hMJun57Vo+Mb$X271Qh z7#_;1b#a2KWEWB$n-zW;|*c^ z2ov_0;52`^MKkDFK*kOv*1irGAK(c!(K&AU#>ySEYVSh}rf7KC9SZLsA`PJgK!6K9 za!n*{MTN(#lK@s!MI*SIc30aWtX%MiU7!wuP{Y0M$8@Gx6CHUBTf#~@kb*a zPiK6;erc@M?etj(>2=C#m&8k0%22l|G#%3|wS7!$ei6lin%&vetcroZm2MAD;cK<4 z$mI2Vl$JBelPN0yBXuhMp4_vo>3H-&4exrfo-kPe6LhS&9BBC&7Oo*W&+*FMbuWqY zSlLk1w9@gYf!aQy_I;YBlOf?bMF#0dC_>|rDUBz{Fxid~Z!pn+^O1-F#4Os~%_--UKTahrm ztf=Dlan4*2`4jGxsM*#j%Q2A{L6XEWYyWlZBZFGWs{O|)*;en=Bth?!C}qEuJrmk% zTYh5g7&~N5X0MUAra>$+ib6(N4GKk+snrWvsnbEkBC~R5EfH;BYOzm1nXClegXCwl zB(jYoR&OuV=>B~i(^$nZK{D*qAo~QbbMGN#eouYeg0$v;0!n6gbgflJTj<`bHze&a3eU$i(x##_jy66v=F`et)dTB{r^^>Ha7y+i| zWsc{;$hr}|*F2BDGw3OM9{$OIp6Vdjnk6@)Bo_C`_fDcMs|+x3OXY-+nMSe`vLqiL z%SLN^Rrc~z>iroNZ&9(k5cQ@4KvELr4$@^56~i{Il2x(bk@PG5+p6xqI~8jV{^~fU zHIsW*QAeAddsdvvT*a=~wX!mTdPQ8L@BauzW(h7{#Y^k_Zq~J-V|M&Ml>6^RC!k9@ e9iWYA!U6!%TBdIkFs2mf+7`Z#By7z(RrnueZYB=^ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_condition.cpython-310.pyc deleted file mode 100644 index f7d6fa785ad76e26ce735b022eb9a89ca4a71afe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6934 zcmcIp&2JmW72jPh$>oalw-wv5!?qSgklCX)SV> zo*gO?L0=-DdMJ8r(SwB^3Savd^jPH5Q-Na9LyH0p(o+EgIkafn-IHSqk(ytDF~(}wYPD(rr26h6e8Tt&i+hQUl`wakX8a;ssfJlDt} z&$aA!zL7VLTL!aP{-MG0ys(vP6q$9`s1|zPxE`J#c9*$`xa5he$_uf_c+wPMM}~3a zbws=oGS0j=S9!!mAo01p>3!1SQP2s!Te>n9-kOx1WWHWs4dq&Qxz>!^^;mb3aokFV zg)4(;Vo~+H^IjC+59Yla@4hvsS6^J?-Ub&5Egi3T5=C0-`j2jVEN*t&Jd*RC;4K~` z{K{PI?e`VU11c10^BEe26#s z2NG_8#Rjprkt-R@V!6Se{p)-K%w+{uWDYAaD(BfnHp9vf%|?M2S%n>VXl$7chdcL5 z>|jX+Z!jag-Jk8OUyu z+H$kQ8%Jo+Vm4+G^NAuPEgVWpl#nVeG^uj<(6@#6BfN<~(l0QxYlxyWwu}dbexYyp zP(`Fb3R0*cQd^~Ym7+gtihcCzn&Nz)N=_fWQM%N(P%8B?3Z=Pz4kfp5Bc18zk(QYW z8Ckuz$I8gN;sstiX1oOjUI`;;Ll_OUXQ5gVM0k3l6*q&HzY&PUZ|=r_dfXq&M#mrW zvFHyNS@Z{-%=?O!6&8}gXopcCVi(x#tC!T@jIa(2I=f;@)T`a_N~D zgsypSsP4)_P{U(Wl)*D(hmk3`=;SCBiJiCcJ|VmpO1(?t88wc#O&T(M=$l?8BQga_ zS8?Ey4h9z>Cs@dR%Sj)1w3{K*z7xrG0ui*8;74Wh(xo*)SPNnnysKJTR?0Szevb%j z5micHt~*gt#BrL)?0uW*$G|e}4PF_Hu6t`;94&As0v0T{xHp_GgehpkDTr2KNo5eW zaMUfwU410&D9d#EFq~9*Gt;Uq;ewu_3gDc}$Oh~y#K2cFE-HR1?9=(QMD-_-^v;Y& z{(z#1U>7Gb7{|;v8NR36!w#gsJI-o659rYlo{qQ?+ojnH25Z#r=I?@dRqbB`R=ETt zfTg;1yy6s+7sB=8xlgo`nHWs40(Tn**~`wXH4ib09L6MyMpHt)Wpr{F&2*oGoFaddO_uz~uZ{84PX)$Zd{K8b80=#&5 z3c21_8Ca*<;|^F~F0(acH3=HBQ<1X=$o6Wtqm7^yG7o8&dt|1T^dd`_y>=JQCtdEA zxwo_c2Xm=vD~CUw)sDHJAkKh`2_{e%^3?s5rnw;m?i3`;p%0<%W+U1_b-%=`oasX) z$8@b18s<<>{cm_tjqj{6k>GSm2Wv`&(*Mz&|zK1`|0G zVK2^LI6(bn2I?uO-+}bv{T;(qIy$_7m|%ws8FKi=`1jx~%cu55SKA!kyR&qovI0i z`l3Stl-meFv`2^+7tr=cya`FXY|j4AHmfrTVTGTkCG;0GCP^!UsHKXmBx!LK7ZC6y zb;Bf#U`(SXPwiHi$TZguI^sO$QtPKSaWT!SS*m&Eyi(*V>9%BQt0_!B%`3}1N*VF{ z_jpyL!?uoDuIZXK;u@A&{?@e*3`zy7{9m_VTa)e;14%x^T8ddKgp+Tm(f!EUHns_0 zX0NszUvMVr)&*k<$`Pzl2f@(YP~fZP(n6<$UNS9qaKf|$srf(Vpic`R2~+-=_C{zq zVD%>uMSzn4O(Z+oLFX*A@ zajeNvBi;2GLriL=C?fj3r+SoR7X@t$Oz#^o!m%B@TvV{AI^qYk{<}z0OK|ZfJ{o6t;;S|7#^INrUB9a6pmRYZPQz==24L7V WPp^>`O(?i$TaN1>$Xd3J<^B&AnhW3n diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_list.cpython-310.pyc deleted file mode 100644 index 0d23627060b5028b00a650263959011d8fc6fc0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6877 zcmeHMO>7&-72aJg|5lVOJGN{kPQ0~)pfn=Vijn@Pu93j84Z{r+ScVU5g4K#Ml2%&o z(lfJaM9@G{`Be1KUV12s!aDSzTdzIzP@sq0dMy^c^^|jf9*VZ<_hw0oqA1HYTA+te z*x8xc`FZnxzW3%So}P9L{C;KLU;V{vhVeIQjQ(si-oqoWqhLnUU?#IdvuWzL)wJ|G z*UaIa3+;BknKz9)2D4fIiNW%`u#;;RnYCn83*EmvE`Ilt6)qyKxO8;85xb1bmIyj3 zh$FWn;;n#j=6-XHM_l*{)s=1cqYjV!PT=0jI%DCkE7g&U_4-<%){~W5D{j~0Y>L1>I25*PQTOOCkH&j= zn>H)3A}g`7Zspl!HpMDW%w~ZX*)%)x#Mm*LC0^Pn zvy;PCkU z7w|s8UT1IMeUe>dF5WZj8|)I^rxrs+^py=h9nP9jwc8tgQUcP5|urHJlKT6mZN?Vs0iF%=j?};hg z9<_=+3uUQ?ap=3!%b`{7VLV#bdNx`PGnZhw5Qo*BA3Y|W(4BXEw;eMc!Vp)32wELP z11o4$rv%ZOo)6=eA9`E9kX~z4kJE}b%A10hF(>b7?v%YDd!|`HX5J1WU&TU@x{tA` zT1ail!_`UOL>c4v3~>^#eH@_q6SRSNAYxA9$$@&(Lw(4Q9 zQtxc5^*Fj#Tew=6Aa1_nw>JGXF6)~^D5|%@0H$8oY{1k7Ph=|VNv=H7j#_6sEqPuL z1Hbcd^9k64o)0?DCkL8O5Ge&}xbVZz_WlFV)U z+n7k}x=A#$f*vAk?uW79n7A76n>|3k28q{#xDMcNCy>fEYLODb3UEZoI^$bBguK`0 zebHKn*jp+Qybcb|Yhok9U|DOk%Q$45h!&SeF>XUvvRE z8lb3e&lKc=@j8K*R`0Bsp(Yv0Ej(Y64HnAX3x}jVLQjhZ4SrOoM{5-AprN7<0{&m1 zRY2nx(5lQ`62)KZ(aY*l#}|HkRD=EtDs@<+8sZg*yJ}?$rD2vpb4;r~Mwiwq$2k&- z#A#Z{^yf!0NW=ROBo680QAVUa4KQRs6qsz;`&F-0stGvvFLfHrAD_fM$* zEQ;>zAqHxqjx=R?3A4yKY?z{=qX0uxl*Oza^CzY@aYO-d96A5;sEHqQ(tYFpe-Tq= zDw^!fNRBzdn7lJdK~|Z0JVR8C?)=>do+ejY7e* z$=*kTdtYnGq-gPZv?K#BVswUG&u00vp=&f&Y=}86(9E;z+vS*Nr@kNK5$8}Ghb7(L z4lfpiOWN~;$eWqsRQQ%uo*c#OLQ(mJB8qgnb^DB!|8VMp-1;< ztC1E}?9u!^D=n`3(pO3dWIPeyrsij3yi7~iL%+Sk{2P0;Fe%rp(YokMO9)Sd#>xj9YyoThsfDN{|k-S~nIsTUNwb^%QgZBvXgMz^?# zZ@Q)}1QC7m+6wNahwM?1sdWti8XU`H!l zHJ27T9mGT`Ep`wHwtbZ`eggKS1xO!D{+^CS8gjzwo|{BA#vG!W#%rp{XrZZKj;8ng zZHhiM170;us`d^BkhkGx?^(NMAPLpL( zR*QRNjHl3-mioZBtrJ9P0ZB?2_gFSH(_F1Jl&=);Qt@pn_K&fDEhRBgj45xUC>geC z6|9m4`?So$Klf`+(K-XmbsW>0>c6K)+GWQqIi>R@yJT02TJ+VD_#W+9Ly=m73qpYA v#gS`%b|=6;a7O+)lI5HW*>xjRp$S9-rZX1aAYhafMB5hjM;f+boyq+NKH)|L diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replica_set_spec.cpython-310.pyc deleted file mode 100644 index 4c42ab1be4ed3bc171663192eec4277f21647ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6513 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller.cpython-310.pyc deleted file mode 100644 index c55742b9846f027ac56408b153c4da591f5816b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7423 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_condition.cpython-310.pyc deleted file mode 100644 index eed0754c43c9fe24d6b3406970a36dc2fe316ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7353 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_list.cpython-310.pyc deleted file mode 100644 index 0d3293d3959ecef8bf3747b55a3886183d7c20ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7264 zcmeHMy>A@H72n<4`&u6LWm%Ri+geM4lQYaa(Sj0(Q3M;ZBnXPnf+(oC*jO%ihP);B zc26^NjCnW#MyM)Ckt#)yLTm!4OW`I6Ql#_Wux*gSO^O&u5hQVbZ}z@Kkw=0`fD}Gr zXJ=;T>%IBC-@JKDW@jA(zh9g8R(|`MVf>j2lRq1U_wmT9NSM(yn8~cjY?}IQH7)(l zHFJ39BDaEzd^Y?27I!zekTi9&;wltrst@koc3Bd1+dNhauHX^( zC7+wGz54^b=D{lT(iTQ58B9N(v8H&?a=wD*j7HT=XRjymO1RpEP?#>D>d9Xoh4=Bu zFOhHqDmF;H&0N`F7R%v*Qh#GNZB}4KR$^sc%Cie>hE*P$%>pm7S$5>Hv1K+(ytGzk zM@OY1JI0RdFAjI`<;18|WG}Ik`pXQT!Izgur6N1UUeRAFyn-*Mhb4A~z53W_&a$)Y zHN20o*V!9*A7$s5i}x}1COeP!apqv#FQ#W7%-`dkC=9gN(18+36mjw6P^#X~8z0}l zvEbfsh0+ZoUrHAlzpE1Wx$UPt8Et<}@54R5vakAe!w(beymC1UmEPlQsfDkM&3wNy#dh_{&n{vT})XreoUQ^e#@>gW7Poz{F6)ALZ#G%zRA% z>KkhY_S5wLhU!~fNsaai^=Bjp8=E%QZbV7c4GSC~c>siL_<;cc7BXn@wm+H!DiT~m zZQAmw+6T)nukk?D+(j;^qbplUH)1YSh@t}52FYq1_C}*&jzmil;Vb|c!&u?`@FRD_ zkGlLF49VQKzln}CuG@_#M$k=U&HX45935AZF572My%e_~IQquKbKHHw-Jp%2 z--1w^9lqd#v^2$0-BVN0agNs!ytFA~$uTODLEXUfHQ8&S-22Wn3{0#tp!UNb<>}Fo zqscVc3~0pvD`2;HSlDGJGRg5R&<+c_4e=5{P_;6|Y0f4F-T}M2 zsM4@=oIMFloS=bBzd1==`m7ic$~3_4WqbMr1NBVsHIdDLuXiVhG4B&Uz!8*04FT^c zS^sGw)}zG7`7tp{ePZ-+^U78^1 z1o?#OUq;eW=5!`$;|KIg6)7zw!_%t%Q?bc${Z`h zv$6Iy_`ggVJUN9gWbb!q0J=ob$p~L>po5VwLREClyLV&pK1d-uxlw~InQKB!k-04( zhoP539tIo;F0z&@B5CVUc+5HpToPT#^ykX%ayx|UCHTWGJQi|bYVLJE9w@!rfnGVQ zxwm7~ws~~jm;8V3qY!}P9BKDpUdmzjVT9P--IEGoW;gDkTTz!jYVMipp3>6xq#kh! zgH$a)og|h63p3`GJKw@+H&^!{Fv{qUbe^%_fwe!K{3adUhB%|QIrBR7je3XIL3N+w z5w9TGkAixC7~PeIx6wm!(CCzX=7fKdA$OY7IQ%f03*P=L3A&qAQJCQucqF;(h0^pZ z=5U?+*;en1k&8dJc}e3QKy36#!Spz z?nAn5eCSg|!D^&Mm3Y+usg)L6zVww6;w*X~vT1&{LzijkYUH<? zla@o_BZQGGv+{4pJ~Aj3tjfQff^GFK96;;Osh8sZ8tW8D$Z-C|+BUWcX=blBiL`;6 zHS(H9!5;FmGz_b`w9x6m8B=Mo1821Dt85Q;p{%q3AYjPflZ1quBUbPHJ`$k$a{^FT zEdW_HpbVAirJue@&aht0l8zlMWh-04#pn{6?na{&%p>tU?~iDqS5>m6bLp_db6iTs zrq}fbGB7q%!PsPxu0vQQRNOZyU8jGUSQ92Kx`<${xXX!Z4g6HtGoo7XG5zS~)0`kX z5Hz}0?bGZ+p61b>iyaV33!cXxdfuPVT89lC%Qlbgqvx#4q2rUC*-p!kx#xXJpT37=IzY0<)qI0~)f2RtG2Cv?OC8SxKD!a+E1pNQ4!#sU z54V17;zbPKoF#*#upsxyhL58zEe)u3Q-{^kf<%xRil#GS9O2JUu3<%CU~z?#?^80C zXng&q%_Hwu-b7L|Y||=OB@1S4nT3Cjb57AZ34?bW)0!E)XD7;K$1FLe( diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_spec.cpython-310.pyc deleted file mode 100644 index ffa245054035b1cc4524cee505cb24fe44f0d0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7561 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 Z(4hKEg>Mj}Dmrwy4#r2Ef7Ur&`WKkrSONe5 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_replication_controller_status.cpython-310.pyc deleted file mode 100644 index bd1a479d845a98f35f51b477d51bd1c2f377b749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9101 zcmds7Npl;=6`mOkw&9|U*5Y++S+t;-gp}B2n~_!CWS0|%N=b?jh@H_8-6Tf>Fi>}c zHd)}s)FG8aDuu8MS2<(?mqd;Y-W=#z6*RZ`_tmhW|A1^@|?5GBW{3^+a0+v|SI z_qyjbhj#IWqn1N!OKPFE!^@V5@yvbW;3T@*KGZCYL0&9YB@Y}4Y!%E zUC3;yL-&tEX3Uti_^8W)m=j+cFfEDiPcPe1foT<p2u9@VMs5zD8itI`Dl&+cLQ>b}5 z%N5x(>{(qi&8JcGT$*D(d;X49JH%dKr|~?@USwzRJi=z#OL!h-XITZ$V{8H@^S$Jm zk1t&1?M77BB7^*th#L(quBlLU^ z#jAXIU*+kB@5Qhi<#QG(Z6Ri;X4vY4jmEkmmgJ(A+L&!bQvH0FNn`q;0M&n5DI`b3 zwJ>UgOAQ_f!=X&PdfGxJ$Co>x9iRn_kM-LeiSY1(NMLGEI)UP78)^zPt(7q|R1l5UaN9ZM9I zwPkGB!+k~fz3ZY3tr^u8sI;qlEE)z!Gkt1F$T zF5)^@DyrUkT~;w9oNsGot{pR3UE{5_Y9m^zw%65a-1@=%h4WPzDL&T@>$k!cE~~dP zA78CEBKXj%mM^+qNLe8qkc@hO4x~o(e0x191wqt`R1mz18Od`0JX&!qH*AC;Bp zIdFUS#_XP|o=-{F;bOCk-svU-en9BxS~o2ijvao8;t#lz8udH1Y*q}ooV^DfweHYL zNNZ24)5LN}gfjA2ZnVdf{#k7Y{xVj(Q2De5DIc1@O4f0WlYz;Ku2tj!d)@RZ+86Bn zZlf;-Z;OvOfzX^6RuOo^rCmVwMq#K+M8hWLjEB92x`6d$Z9nk2;%HJR%AOAVRM8E zza`b~)a;@-0TEXmqgd^e$eV1_ZVg3RyPmfz{KRo0WQSJ2Q$jd0{Q9&;ihXGzheQzcJO=2iSjKaRyWUDH|;H^JB8G z&G{MyLWKrH52?XL@w67Jff?y+yA!3d+f@D(l6^t;vq6xJ-k}_f&CKS89V2ZXu##da zTMgH^ueY|+Z-%PAioJziV|!)2FEMoR6>qi)sAeX77etPSz{kmBrpnPP-85-o6x3*+ zwn>#5YOm}Kwb2va7j~Zv!frH;F%{c~;QxRs4JJqPWAHh;ZcJYH#_HfsW>Gu?4W{dz z-g$3Z@2KpTq~)=IczFGR!U8NAy-?iHyMrFSzeU1gOlY%id)Y|1Gxt7EPTF@#+fjedk9 zMa8`TlUQ)X2A1P~{Iwr4nvdctV(+qw-FBU~m8^aii(8F2MCb`cy?~Ld4y;D~;?tjD ze>oS)xo~b|{WcY3C?1N2q!WEawT{>sR%~&Elr{=#6sGtSRcfg16Ua)ZxGTuy3m`>- zteXhC=$NV{CKXN)w(Ku#9SuP&715AfxH$~Nhq8@60I&XESwjkZBa9UC4<(vymX!bZe=q#dqTjT@{{Ta8UugAmXlI=M|pNjz z65Cv;h~q>Ee?E)qYKSkGy_Lg#4Y#DYlLB6tjj_vJaCZ+CT?zv`i%C(%0rkJ{B*oQG zhDr(XJbK_z&;ERyJd@JJM%Y|p;ia#LFhwDcTN|(Ky>j;G&tKH14Du3Q3=KWZ?$e&l zrhN*BgqZpfu#h{Y89AkySjO3_X2V_lnmE=3g?=Ls0S;V*?wi|~5NA;LSKQhtChg<@ zcJ0bUl9SQrNg3@0^^wU`@5nPCqn1f=g(DoMMB+svpw6zDS%^7{>yWxd%1!$ z`A@IlIvZ!klKc)4)4}(FuadL>X^ZKyW0A_GGowvDU}r19 zPT~NNY?Z{^wJE(t|2Ke9GGPli$7tDKiq$HAejsT8o5_f3u6A7?;v@x$b3=%m){IfdlE(72p}kH`=s!!uB})4I={Fsk zCS}qn@)t--mTNl&r{nN?S zJ2V$Md`uj{#aX=6o*USnnk5(ia58WRY|e-a#wLvcj$j5$gAwv2^1qT!!(6B2m2j9j I>CEK*1F_@zNdN!< diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_attributes.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_attributes.cpython-310.pyc deleted file mode 100644 index 58d92b7ac792433b297f83083647a83cfcc191b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9047 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_claim.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_claim.cpython-310.pyc deleted file mode 100644 index 309acedbefd30a2358dd194c7af85f73285af284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3768 zcmdT{&2JmW72hwC%M~R%siWAJc91qnnObDjqD4!%MhwR>i~@9E8wo%pT`hNp;!4Zi z^~_L>23=6(F$d&7KvJ+M&z zWIq}GdBd{)LX(Td!{ifGbq5W%1{SxuliCB@^v=LBy*qHxyQw#+4QjUa(BdAiomjjk z>c{S&!JVg8yFU9{z)*fO9SWHVEmUCU{hV>3Vwn^=$um~S{2<|ivmft@Ovp%MI6P#J z3z0=d!X8$OxnyIl3)Sm(cN0CH4m)u^>E_iYo#&}qPPP_ga@l6=hb+sVM?Lo7=O1rZ zw?7*Tb|9pptMd`ln9^1EK7Yh`9#1DC(>*3dDk3GewmU!lmEn28g<-9C&dK8XS2uRF zh{wUV(45t8+vWQGJR2puQwW9YVp_gfTueSeRT&y#LB$rSci=WH?r=A;2OfF{eU0DX zHC{il2X)cl4ep;<$M(P%{$7(emopylwG(R)@D^W3zs5KCHS{fhoxg>Coxjb$hkk>5 zFwQ&WwJ)}x2$fG|EbgaKGMW9M|M=O19(y)U6pPbHDTYBb)j7Ll7}D0cVLC=bPsHdu z6=ODjn!_fV37%-9{pzYolue^FJ*P!~l5>#)k)tGod6R4jhkm;z>8kQ(n#WNZ z9z;@w@kN7{wUF3^W)p(*B*`M3OGzHoc1ur*bYv#7j+HY@HqrfEb;tQcba$soEb~}s zopkqqsk$Hlv}e0pMb1_CKx7BqG#Pe_Lp{#3pLMoB?y5wKts;u|qg|o8`{z#8jnf36 z?HW07bUTy_vxZP@GU*hDr5}b#mgq4230P1qG`>@}@rO2WW;a*#(phegZERf@8dEj8 zCz0mXo&~+y(E}_$6j~X3l1eJi0(@2pU*(Y$Bl>h`GF6&QA{~!kBa~-?K|py(#({b| zst|E!DWt)!TDtP*IcL8c3n@SW*N+mB!lsH%mEaxrh{*2?;xp24@(TSdI*5`q8m0ml zD1;(_0(RCB03kbX;)wW)hc5PwK-$^cXO1{DRinwroJLXSVdw8NgHx z#cYG6UtpjJmi6ZB#;SISjhH?z3yrB7lf8!lnQYINtvQ?oZqw3;FUR)pZQ~{g=`g1o z^5Y9~!WTWHd3R`yY&W*@peu?MK-`lqQ^^oeDNW?%E;K?A)#(PT_AT z*iIkF-f4R#JPbA~Hx3Dah&4EFl13SPK|~%%iO53OXgd`)D9T&~kb78HK79K% z53XUEJ{dUt5rf1!vbFUBF>=p2wLi7K{`FVRk#po~caF$<>>PR8n|r!;?8x_YP1h;+ zpICG67@z@UoIBQYUpM9+cd?^0_g?s?*7-V}Y-0VMZsH_T8J&C)oLU!8&%NdTIf1V> z`{0T3t16aMu^BIfLP(v!aU=XQp2Ye!xhN{Rs83PVCK?T(a~pRz=aB9cALbOPoPOER zc}VBaoU$>FRHU_(cm^SgmG(C)`YioBX*3z~=g--nzdKGZb7kg$K(lh7lZ1Q zA^c`WKR9Rf7V;(>e4eL?69mE?5}c0ntn{2Q7rPD8%|&cwueOI*sXsC-o|29 zcUu1l>Yg)u_YJzfq*U?-gKD~=Li7vg)H)?h*|W|?Od;MP&m#I4;2C+vxY;s)7{DQU z*NXzXblE82y+}!w<|%Qmh*Z{LevsV7Cxeg;XSR6-*VuB2>GQ};Dg;n10xH9?=ZLyR&(7?wd80<i#;q`dA3vceD9@K z^Iis?vj(>e0^48rZ~9nnHH-<{zU&e`^4`*sLK1<&4_>`RJ5>_HZ?g-(d#YD-y+TI? eg;z>EX9&Tz(#KtjZ|05aIey^VzSDAUxc>sYLCTW= diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_field_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_field_selector.cpython-310.pyc deleted file mode 100644 index 6aa195f8901e78631a571d7183f41f9d9fec67d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5367 zcmcIo&2JmW72jPhm&?_MrNmLBG_ki%VU&eMT1^5pf@>sjY$FK36q1nwM2ppGXC$q> z+@)uSf<;i5Nyk%1-k0E<(X5%p%)Kn#inqJC6po9i`}8+r^d@_7=)3?0f8Olyj^C!Coug{9BjD*O2vXW_B@C8i&S#-M9Nj04+fdAtHx{Ajcf!#XJ77Q>3j8++l@Sy ze7O@wkHc-AHy)2{Mk7jM=ww4(9ZOe6#0Fagy#N#`?A1H_g&PEM8p|MPfR=m_nQJ*F z{&a3q%SGEWd;SDI*N0m~CYBFBs#7A_e?|D{8@mSNWriNQA99&%9G+pZwl7eCNk?5| zpU7g~8*bwhV#ypm>Ba&Q-+~$3%Mw_r{Fa|7`xz#x7aa9T>XWuy61 zWD&ky2W?F|4t~v_88~?uhKX#jHZ|ee`=PNh0rDS1M~51;WNU@dWT0bbXcoS)|H*EBrLZ>IeeM<(@vHH_e1*x z)Wi6N-GuZl^KY!&cqP1Fl2U>KeG`CA;1jQn7^+ySU{3bo=hXi?vflMcARkaQ5#8b{ zmg7bEW(4S0y~hcXzgr$_Ob@8iV188+$K<9N4OU--;swPAjbimSkD-|QHjxDUS>t6G z?)`IQt%s<(G=kR#c9|@+_J#BKjRcbA0mnO&&_P|xc7Aig{yf0{@`$E9;A`uQPH%V>$DW$%Bq@2J%S9ML#I)i+& z_B5oN)!(5K8waK|p27XxwT{hCj9>or7uJDwP?B&y`_`d#U`x2LvV3TX8?r1N3iFQO z;vPb#kf?RXc;dJ$&vC`HnpLxf|>D6$M2lM-cjdJhi zn(|4s{nxH7g24_Kk{*Q+|2~T&dFEc^gq4uik#aH&5;$Zg&aU=xyJHOW$uYBVU}v-y9LVgb)uz&x82VlDfi@B7X~!v$}xY{F3gfHWaG1geGXW;V8Gq$QN&8?Dt3t z4%6nse{Hiig$O8qT2wJ#(3-rM83e2W!8tD~+guV?3NOy%G?!r-@xo5xTo$Ev*b#3H z&o6A^V^LPS)XK^d7Y?wFhq$oS7G_YCl^%>!MjZb&QAQ@iwys(pyl)#mxMfa%@Zp{^US?sZJP$huSXLstueKVycX$hBS+=jh4jj6A8AqUjncP%l$Lz48hf zbWjM^_D#wk({DW1DJ2##g7KEWnaLeL+uTJ^1`QV6$0Hdg51yCAyF@tcu2}k9`=v!0 z^SKykCr-OhF9E?a*q>Vmc&JFRlbVM zHEh#zEZ2haI$v8AU3!i+50&;j)0#S4x-;&gYrFPzMTx!UiVx|WTgVDaaB&@#*7cKE tzpfuf{IqxKmka&FhNBUs;d23@FyNYFcga@f6n)y3>$wQ|r>(1{{{b{Qb(R1C diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_policy_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_policy_rule.cpython-310.pyc deleted file mode 100644 index df20b814ea57166b54d2ac820bf2fea1bae7a6b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8992 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 VlK@mv+}w34wTfMF7M+uY{{n}!+XVms diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota.cpython-310.pyc deleted file mode 100644 index 154ae145dee34fc7ae0458e3474d9151852de8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7095 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_list.cpython-310.pyc deleted file mode 100644 index b5e16900c777cc7a5a2136f91e3148ed68d5af4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6978 zcmeHMO>7&-72aJg|5lX$?O3)GZ|xu`gOIdhq-j;xNZ{Cp;f6^q!v{9OYPBKv4O!}uFj#vdD%_mJc@WXxz8%w$$%woLuDT9$t2 zS~@}_ayU^dG?HCUb(wsNf^vlfkNq4#&k#dEj2%tg!hRd_gzoLEF%j;XQXRR_Xsm{6t-D+gl6E7>I;kXy zt1%_C0y-dQ&=vb=J6+w%6mxi zb7b5Aiw$CLD_1s{#d1hs>aXpV%?hl@O02AFd3Kr2u*y@jRp3Q7%Z@xXw#-(Em)6Vd z=%`j?$JlZG#o-RVoEX)L>?Av-zs&F%d^tU;71T{E`G1eE9Ljdx@q+{sS1xCv(z4B#YWs25kD|?NvNR`^ z=$(#0){iGh{j}vgm?wHanZK76QbA>BZd>&W_fW_HnC8C%Aad_UheJZKqmfB-o(47sgy^hCMP$M>!& z+&zR%Zl}o1Tr5z>mBQUq~+)2XtET#@SQwGXCT}&7iV3;?OJ$N#EOH?5jiw!u$R;&{D1^>8G#fB<-V+1tdXEUa9>JvE*-T5G z7sjFTym`!t?rYn!v;q!-vY02peA#Q2NHY0lAs} zU(tMLb{8fG&&`&I3PkH~gr}-@=s4 zZTp)TNb|bgcx(pUMb_O96TvZXCE2wCI0otveLYMXI11Wb$Yv9zScz~MW<|&b;~PAJ z;8$zD2-YC~Ky?LgfQdCtY)n>J*4ymzP~>ty#w`eru`$^%?!KfHNC5OK2({Va3oeY1 zHd)lRV+uN!@j8N+hI*DAqbe!PO{6bL9}DH)#c47hqbi_&!-vY0G_+_DZ9E2M!T$^3 zwfLg&%1%rLJi^E*tyN@tkhI@ODTG=oxA?ZDo&FG1Bv@DQ1ZIr$!Rcvd~&iX8#jvKaH$6 zH;t8=x_z}!DZ+TbW|8HcLsgEW- zQ=G$hF(Lmp(^^PaTO(Z z?4>mHE)66%oz5zFSA)HeyaH;X3)H=vi}!JSXD&ZlFeGyl&^T})pv6OffzEmySv zS47g*v+$U85;zCClJU)z-Q{)&=ST2IUHA^-h^W%Ks5Er#lK2!pJlOLidg?ebffz>@)*Hr0i=y#2E~(TK*r$t;3bNO}Pl9@B&b!N>D<@&+KY}~bMia9OT?EKev(~0w++J1s0UO{%4Y3coT zbQ>Ao?_S8ZjE=(Rj@_4;YEn&hFYco?;7`xe#-?ctUC@7yB*{50l%`+ShIAdKGrix8 zoao_@1G(btYRy6>`{A%m{=?dVlN^kJDeP#9bJ*+ftRV(Wo;B3=OC-${r~Dik$aSP6 zh%OTH7sx{6iK&cdh()Yh+vW$xr$6|_dSX4vDMTXr)|U0eR(9W3`7KLaQh8ON$l+6? zZ*RdNfjeSdGai*x5fO_Vder;&v(h$QPO^3ySw{Q&s*I6#Hu9OXZH$jblw;7pPmWE# z_r^VaPs^^gS!4t8#SZSJA;&pJM;QwP_1wN-?Tj4KBJGPzpn?;{Osrk*V|Uy5(5Jh& z)l7>j@o4;xl@`~0=_@4!f~atcQ}gizFVoVs$Zsz*|N0J1Oei~J^lHdE&f_Kgv-bBGv%;Nu`XH>b&;)1>&Q>X$zMYR}m2dM^Y!0VJwvocRaPpuS#=m zzaw59uAkb(LmdIC=CxT$3-BJgkxFenf$61ree<8Bi+H_FbdjfPTc<3C0xbx*SZ3wl zj(ucMD_E6(IR)G5oj-uvd)P{mZ;frbf@ipXW^EhWge(ff zF#(md;CcL!=lub_bwJIrZ1dPYe9gMP^geQWA8(ETvfn;*V4C)FU%XA5xJudcXEBi- zbI<#nK79w-bRcA%s`(~8)e|JN81AppAhu9jK&=WfXLggZJ!Mz3iAJr*yVtm+VSW1E5+G-={U}$Wlvi zK?b39aV#p3T_Er;(bzvQSvvXheBZQH{7i0@XcQ@Q^DG=Xyb diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_spec.cpython-310.pyc deleted file mode 100644 index bf43cf66eef10095b9909ef7b6923ffb7125f910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5364 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_quota_status.cpython-310.pyc deleted file mode 100644 index 537c4f1b3fee8dd2de9a9928feafeb689e3f3c3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4577 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_resource_rule.cpython-310.pyc deleted file mode 100644 index 01d3be0ef542d85b168dd4b637138aa7d4921891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6863 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role.cpython-310.pyc deleted file mode 100644 index d4609cea20742ea412cf627e30c6af79f0c77c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6325 zcmeHMO>7&-72aJg$>oajUu?(DpSO09mPJKIN!z4?8zgXSBQPSTlHmheW4+oLiEA%+ z>6xJr5p*x|r9}?~+EdYkb*oR!F+h9hp+Ix#xxij~$~iy}Mcedyv*ePds7Nr{TPW=8 z{LkC>zW2?%QM$P38u#S<<9h3v+TceBTnpci@9^U73s9i@75rPbPsRHwhu4AX8a%{!?yjpewo zG@2$A4bQveCFz4;#k=~w*O&9vZ*{o0&4r|;(@jsINK3u<(FYz&!+w`1YQ+;g=7Ho( z%gr}_pk*FOp+#FMBpEF~S+S{j*l|CH=8V;bnJr#Plg((WkB`D~AyrTR$|$^xM}CHc z8&I)9>TQ>52D9*2BBlP;ZriNFs?1?ET`IFnY=PAune7U%vPE|6k+EyG9q!z#vExOl z%1*G8y2a%#T22+EDtnHd)-4Ns0WD{WQk9)$&+C>tucPJMxWvx07akeyMfM_l3GZX< zW%df*$Jqtu;eCRAgI&b?By(Z*SF_6P<+U{CgP*V7ymfWOyVZ%L7si2<9x_2+rQSYE zllluwH?_*w_~xOS)*atZVPxfT7AbAce5r1b^n*Cw$tTN7Qi*o`_VUe*dpuMhaup0t z#gSA$zPJa@<`sUC=$r++QO3h&jrP>hVPp&>|C6NLF{h_Li*t}db7Get(mf~Ra5f|-BkQsIg2bJ=k7*Hpi&_S7AB7?fxl&Q<{@b#J=^;w8wbVQhccwg!h9jE?f5t0&0bE1P5?*?!?*_$mg7*ZM_-;)@R2_i(v?DaVbuMV2 zCp&3BW*%&gq5=bk=~faAirKJ6ss)b0&{6?A3alQ)-gXf8`FAiS^SZ$f29kq${bXte z-9M4g1w!xkVS^py5+$MyFolpU# zbqp^J+dMfzMFRgdJYSG+RceD%Bg;;$9a7WyM|pZQW@ujR_9I6Q{tVo#9|1S{Mn}?p zjg)6aN-q#WcN!zl44VCzSryO0v<)kVj3!8;yBXa42vr(4u6rP_h*LC?8T?_IQHYoe z-#>&(Zcty^l?l|K)ZCll#3RO_Dmo&qU0uJ0+T6cTgCRMAOuE9q$6P`@05|6%@3|?` zuAYS_te1i~bRnl=Pxd#u5x7wB2Yv7g(M;335+t;xZ*Z^Q!^X>5)B7MnZI{Pa0?GgH zOhPu3OQgu7amf)>PVPv*14v|n0C2iMfyRTT5ZXEJQ2iMsgN2bjX~6@TL!3p|h827= z%@^}ToDjv0uW>MMM>z@(a;6~l<`gkc(K8!Tjs##~9ygrR#>=^Zj6b`lP+f=WpGR^S zGYo!J95luUwZo{P*xH`jEsr?5__EPfIep+RCdOu2rw^D1cREQcJW}tNPI1HJ~0GpoGkgWRyr1Bq7gi!e3VE20igI=F;nDHmNNu>scCQy*XtSoCo`{%4|J_>1Smf z=gmq+3Vw`72i3N9+Hy?<&j_L|v;H5~J~k>t?C~jy{dY^7=ttkf-eT3?p-bSiAqoY2& z58*qG=|Oz$Nl6ft1iHMmdCbrN-%GorU0eN~WEBrdt2K62v8rDBdq zjf*#^;ro=lP02)foznpWnS?e WDtw2CPSWYnwj9^NrCZ%PUHUJ$IeP^F diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding.cpython-310.pyc deleted file mode 100644 index 1851db34a738f2b9b53358cda0bdc718fcbaf615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7332 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_binding_list.cpython-310.pyc deleted file mode 100644 index 6a753152be936fdae743a171c130b5e49c4304c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6744 zcmeHMO>7&-72aJg|5lX$BU?@!Z|xu`(}=WUq(7=_Bz0`VaKi+a;RBmswb~hpD=&BH z*`W{-G*DDN6+QISL(zkEDs<~LhaP$rbR z-nqbR=bL$5yR9*k<)3IQ&kMV`W|0}ITD8#ohh^h;x4X_o$R&?0)ow&KC0Akz2-&jdXx^5Q53|( z#?oM!NK|e6vK>Z`+!g!gyH}Re-S4-!z0E~TTSptVM3c69|KmG0i@a`|hjPUhJm7B3 zmzHbq{6Nt>phA(hl2J0)ezapva<6553C?Mas-Dc>h{6qjvx`GvJCC}@e|a?C!xMjj zf@@&0M(l0o${I6R4iA|6TeE4h0xPl-E2~zXU1oEv@ef^yKWHdq>ClFSc=~1 z0A&620HL2Ytq03Q?T1{tRWq3b{G0()lDsc@J5J1pI8;(IR-0c;YP-{XEmV7%sJ4?Qy=J?`sY;3?%@76555*R3%2DUg+a{R~L4l zTE)JBved^o^u5*3p;hiJHvXk*=p82HdZ9jBnBm^OTf=|^# zV#Yk!nDtGRF@9eY$MO2-cD)s~d403%dm{3kl()RQCcO+Fn;|z|>_&0JY9~3R{N&QtRv_CCBkY zUpme*sEBP8C8MC@FD+3^+a;>$mTrFCJ3qzm+Het1#{$D2)#)Krd_@rHYg-y5rn`Sd z_iZj?h2k+*rzQ)!GrhwsV@Ku}`ZPf3K-B4?17Jh&vDe~lH(Ocoj^HsEql^}HyRek& zTila1dzA~CXveLn8!#K7KvTkAdeLU+_p;TnN2F*EV9xsP9zf)q zORn%*kh~|mg4e;qB}HsVmN>4p*<~Cu>I#p?hcRwNaLf(KYH|CeWI*hv--?hs9lm12 z@F+7yefzo~M~v4oycERK;siBGQEuY-iuABh?p>Ic_ZUSUjT-)_PLBc=ZJ`Xtz!bO% zfVKK!z)Jll(fkdRUKUCnSGetQ5dAMuH4UnUI1PbUjTBSL+LG;@0M^IoQoypTL(P#m zMGNV@zhzcPnfS~~Oylt|HM&ENQ@MMaOe(D~79BjF_PyZVgjM8YTVRE*ktq?wDDL6&zUHYgLd|_I_iHt+_ zTP$E|)o}kb?o*E-e5Aj3zX8guuQ&3qb z&AQwSX*x<%dQUSyH=Obeepn-2SxF^6oRms^*m}ki&zAfQMl{5EoO0+_=;)Jvh5CMt zN3p{yAAkS_T;y&j^p1ap!q*<_QhSOU``aOG2fF1&IS9XsE_jpurQPCH^HudTp5=;JPNg3mX3UQM8L4MFtHZ3V`B5MSGB$glh zVJzLy}h+1D!o@5N7W$k z$>NwSkw9^ef?PG16gnM*M=~jP5EQmunR0%H0ZIxGKbHKQ&P5nGX7tX@q#J{#$fgO3 zY|>kR73@(2pSwk&s3KuaWh2&7de(3sxPqaxOd+L$=unRH2aHg(l#E&Sa5!wr9+DC% zYF5yu^LBHxL5?6=-*Krcdae%unvU?6vmk#YU_)>Hn zr2QeVH?U}Pp45v{N!%fgJc+)fG%$}lDk+l`Vx%6yRI>AK^F zS`t5`J!>cuLvTT6pm}kW@~ov-1pM!0?EeyJuD6ihK2i|PAR5LxW#M(QjxmMQrh)yD K{j3;ga{mQRmlY8J diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_role_list.cpython-310.pyc deleted file mode 100644 index 0dd73459faa028bea5824c53e2a297597f230774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6498 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_daemon_set.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_daemon_set.cpython-310.pyc deleted file mode 100644 index f6ba4d160060cb36b613b2d3f6f7d7d40352a9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8429 zcmeHM%WoXF8K0S*eP}J&PU1LrP&7=^1m4!(l@g>6!3`3`iIEmj3d_l1(RR!oQrfZR zu_igPC9Hdhj2?m>+H28+ee}OH*Pe0?kVAnc{e7I-)oSgv^XMgjMq17chy3{Qd-2DQ z*~&`W!Szq~+SW%eJI=r9W%ly%@(zCbG791J9pMTucKfcqdwtK|YyBGTwb)PU{krR1 zb%ZbK_Z(4|je}ahDZEXm)7by2&2arbA4ru-BX!%pZ)8kJ9ja(#qAX=2mF-4C3U*;z zrc!Z($H5-^cqCIkirCe%GE;15%t){IdfSm1=7VmSCB3X{WU?&Qlb1^snM`#UdzGcx zExyj)e`|HE9R2!GvR$b(4V`TA_WOwBq|GL~G+OKaUXeq(vAxUj6P zPdTZEKOC`ZWH@Yp0m(TV9k*C{FH5(g?HrTBa3NLCUNyYDgP;Bz3h6+^4vDv4TXKYl zzuLdNzE6U+Pjzu#G)3#4+i%FGSQ71f&Vk!+$=1y!abo(`6w6}8erd}#zMP!AiBsbA zJ*R&{JR_dPeOWvw&fvZxo)>3vKPg@i=WstI8c^Mf#ko({u4Qo?rQ4s31axwR%Op!T zrP=>{147AiLBQ~xBMJ~{ld5t6k} zE_(Lxdk;VTI}~HscfsP!dXfMd^=Gm%Hl4F}>Bt_=dMv#~$7q z!rg@bK%n0KTZ;tBE-}uMOvo5+u@$ATu_&F`Gv{VB{$1i*>QWUVV1txU0dzx$jD109`5jMse3z9*YAaK1lQ`> ziK6RTpi1)!a%*3Kum%=rX}Y7mq7?*D8kr!t1a9k{bm9vplAyfp#5vSlYQm{qRG_&p2R$uFME5FAW z^T zT9;jsTRe{q+qIJ_$9Vq^Pe!p^XSatkg}6|Qe;5%Fcysl&iwpuxGHvLkRHnoy!{dnv zrb@B0*2651vHnP=@-!u0Xn`ng(`w{G)RkSP4L7;&Rx;YK>fH>7Qsl7|okNYGb3~#| z1QQU+A1q|S2q4(uB=0U<1ap)aN3kU4?{j`?m!2%0tuSR)Zxjs=Q5 zsHDST{t_!HOex&K{G(XIf>XhCHXQ}4gOOkz0bxoWCSMw^;X5FglJ|rm+=NAK#41f`${y&F@L(iz%q_w{&CDF7=9e{OC1QDbfS<*S3)hfEE8*j# z{1J#mYepK_Gn|$<8rRuKXo(oPghQ2QiE2e+W)L+z-rc2kd^E zu-fXQxE)yjM}gbz)<>IcGy zgby=xQF9zz1mzrP8z9!gVr#_Uyxbl9s@y?kD%wUiVRi#G$KjFjt*GLdk&uAgCxj=m z`u2Ep){DNY?-DqpYcc9vqDXUk8g6Xhv6z#R1e;X<42t~=3!?=E$r%jCYd%X;d$ zg!*^Q5_$WKd4+1%ZPVa55kfA~P|gLpFwO*$KS$<8 z8QdCv6qjvs*dUK9T#UUm#_S&8!xX5 zo!(eGC+uI^_|PK3_>UxUizdXmkc?IYY%Kg&I3zhJ`-*)aG%_W?4VH!LSNY$EVR z$<~dItA2r|kAp09ctUdvg1@4LWvS&o@t~w^{Rm_s7qd+L6b~?1*TBVelMb}NB7{43 zsobH%UT?;c70w)x(i{L{R{1@6F)*pTg|oX49@Z2CJw?>5P#=~%zM^g+>73;hjUbS> zg5Yzswg)zC&v#EhNy26O?>(8Coy^at_OfU)_HdFWbY0OImFiM)biYcxr!olsL7&!8 zJi#u?mYv$h#zyBfX)xspy5e*%fJNe10nf`pKm%4^nn8dAYp9yE(_bO~iv~E`!4cp{ zt)Q-GRe^NRCQge6^3VtZ_V}-~W@|wgiMv%Q-k{=e3iiojU{V!%u%=129N+aCUdwYE zU*nFlUH4AGo7-*IJ5k8OS~YiC>X$^jgQD=1R6oH(|E0sz!ESjvh%^0} l^KyIesmQNOTX_s;h}flc-lo{7iCN!kwOek>TlUV>{s&6j02KfL diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_deployment.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_deployment.cpython-310.pyc deleted file mode 100644 index 925bebf3419a2185dfb10b7e0a42ac96c3259a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6928 zcmeHM&2JmW72jPh$rbfsJ8>K@Y{hEm+$a*r?YfQ;V@>DLbHZK3t&^)BVkhV6a zWQcwrV?)cJTl*TEv)1c&KL2qNcfySfn*zFkx+k9!8Xw_J|AInVV6jE)ZIxy$;oz_I z52xi4V@<6r7DZKfPwiGkR>h2{J+*f2mM6UjGh%k!s){)=Z$@gehLMF)OPms?pIWV1 zaYnp_@0@sBoW*xuyd%!xyCB{b=kYxyDmc3L^2IM!?<7$a#v7ma1_^EqacAeN z_1pJ8S!4IQVakGtrzt~)XF6d=4v@GyKEQ_I_0Ap_0Cn+eWNGbuuCPN_iE<8j8L zXuANGSCaMv8R)u`&-D0~pJr-9=BKEd#e9>85pPGb<)Py)4Yd|f`+R?7Js@!(Jydt_ zevCK$4T=GTJhN0)Tf5ei(x5c3e5e6RoDxcmqI3u7%WU=DfLi4N#?ZPraL}p<`z{m+ z9Cda+oXSzQ%sA^MLPk)GP8dVV!gwT=>-DN4qVn@m67b01g@NZD!QLrY8Ib=|FPLkda}8Zg@H-}sdd>Hg7{AZ%LgRaT~L=uo4jQ>3EK_Gi3S5)&Ne}%X%!%dN6|oj5r4r zT(f}3tSwm@bfw5596N6(o6?|%g$xyX4lZl3FL;#6(LyZe?KFupEk_eSkXvi)YMsGe za@LnB0LyU@gm(ne;5YMDS1#2XLq!HGQa6yZ!om*w-2puz4PR-n8;6jQ0pL-PMaF1% zRMMM72_vqOEEbR!mh~I#rtI)6BK9Wi^3_WX_Q@9S^&`2)9(QGoT>~8cQwe=f*p-z_ zONJA%e9Z1ZG{S)2#n6~%oEVn%S=j5rMu387djv=Vv9VnkC*#FZ&6Q4V9r34_b#01tP}S6vZ4h$vjcy@eSF$ z%FNEi=~_3|(17NS9;(x8)SECEvph7y{7a}fr0CUEya*nM{x?efMyX$9lm3sCy3ZBw zkryh|`G2R~$13-_It7)hJB4nWSc9U8LkfNiT}HucwW+RIEf64^e|Fd@PsBE_Zkxtd z=q0sy64?<;`@MMM*Y~j^c^pso<|h6f`tjHF#N_3sx-!B}e*5P~o#ZRH=%GIydtk2M z%Ow}vOUB2ZjD4(i9eDrbFxYYH`U#Du@f@4?`S7FUqa5OY4Q|z zd)6pd;ciKF569Eg_Xp~K8^r-{#Rc*Pn;(u zjl9Re*>#?{+8wyMyz8h7x~!4g5YAI;;O;uRHiB&Dn)S%j)qyKYn9&%x&%8YfzKecZ zIfMQidIl@qV&${io;A68fLuy3e?U2t^3MBr%#~yquA2-A(uKIz>QLgAgMTK%Kp)r_ z-R%)G7$au#1{ybfVFUNf0K416z<}=i&U#+eiBIdFJ9)LsQ?9jA?_eoXclOpHPUhaV zi1*rpUssrs(iP*JwR2^@e?Ex7An({2sT%G4-N0_t7lV0wo(pcXN<>=i2qzyp)Dp`3&YOT9fAU z!=$E90+;614XKGQc`Z!C824ygcXKxiQ=ON3yszE`EQ3FHiIaKRK&h9FMCKJGQ(XCT z*MPA7yu3;Ii^G%=Lmm)i7f`s)S*J#+9VB}kd+ytsyD)53oVowhDz3BhlNWOR2zx2F zXC$4%%0kMYIeXR~$(g;=n3S_rn`^j|eNa#76O*PkJ{b3662f{Zuk`zvrSodPlc*lo z#TgvqQ1c1|0U-ZG`y;7YaCS~`! zehqLYlvyE#g&b2m(cNKo0Gfx?#dRVtW4=^}geR}~zI^2S zUtzXM=hYn7K7AsOiv_Q}o08ehPsbuNZ8s)+O*^`$D2J&UR2;kw5%IC~{lC%BDvFat zqnKJRt*@`wPtzgByoa?&|N4+h){pno$BiO=jGuibeo`@+ haYedaNXs#l!EP7axlRT$C1PF2t9iEP%sFRE{{@~X;oJZK diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_stateful_set_strategy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_rolling_update_stateful_set_strategy.cpython-310.pyc deleted file mode 100644 index 0cfcc335cb381aa28516dc44cc30369bc238fc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6218 zcmeHL&5zs06(=c5;&MN1CyrygXu~>a5V>Ay*Fn&B;kq&6#Au5uf!9d^p)Eb)j8?QM zk{%8>mLOlcMu7%BwAZ2s@6rDfuQ}x$poao=`g=o3tCe@*P2JwiT@7c3^YPxB_kM5Q zOIBB11JB>h+r8hOH;k{SG5^?Te1Kne4Fxwk1~<7CnH^KVt&XMNl}-ikN@NeJovLZv zGPupFj}2ZGwY^HG&aG{uQ5*f!_3->U?+O_UB{EmH+lj|T7RWGFVG?_(Om;&qxcBak zh=pVd)$Y*yBo#4BL+@7EnMkj%RGMwIT05cY=iO$I3|dJ!NF_;>O&jZzWfIx&ytlnL zdBC>3kKW(dEO)=t7v8Rr8Eu{PJcTB0b>q`tdOQj8fr!Hl{Th-p+6}W<{V<7p;Z6>wuw6ji^G^kh5Ae(Wf&M_;x-x%1JMcc&j_UJ$V?^H5>AO1$SzlEgbZ$)*{USGm=I#W{(#^HGKQ* z;FGLF`t5-9e)>?|!tX=;vR|PXL)&vh)|IhmJgST*t+(zmZ;)^i!Bl!-4805Esh+kQbxG6}=c6QGk-y7i z<_GhdR-E=1`FH&T0j%EPQ_L$2WUuRpi?$w0Jr z@-UD|Ae0JQ_kWtTuoUbx-dRr*p0##GyxWSxZYv$CeiFae+}vnop%UvU3+}TWk+ts6 z;Gh*mAk4m9xjmjs9DpXMlw8yMoJF~qj>Qbt&5|fr zV!GtJ;^CI}e!~N#ih@ zh8~nEA?mPxCL|$wDHeDO*twR$Zw}e_9CCR*!Bj2WhgoPIrz=}hfS;H!SS!sujX@-HNq#661TK}(Ce7VI zxG-RVdO&!R2YrEw`c4cl))!HVTQfO=t{_)fIw?dz3H&ZxIg>-Li%^5Z?WR#Or1+zB zPq_Gzcl36(C&yawm`B7j1X+jNz)V0dabUD4JyQpOOZDsw0sDl)^2|)hw7O~Rr>pcf z^}mKq()AjG7*MfO(|q4CI6#uEf^ z_pE*Mrt$lq|IT`3J*p^#d}C|RdSokmY^&;?B`>L}LRiPG$Hv&+v-V8fORQ_g14q@z zHm_hrb8J6x_UXP-_S4KI^xsfRm}!?YpSb(R{OmEp$a4Ic!o}+7o!k13H@V^Hm=Gxw zT-g;}TN(a6K&d*!7ey`={Kyt{c%%@&a1(nkjltbMK8z`vvD!slB|go6Y8CZ9%a~G9 zQb2|Dh52wnl7(|EVuLPc*Cj1Xx3Y7_=-LU)e6mUNnhsgB>!?f?qP>o%{T+NQX}^G+ z2q#)wYiKooWqX2?4XSSpcEEB7yK5@}J@ zt2C-wHH(@Q834Vo^%ACER5i3OQbq!~N0ePcVOwV{mqJ+tx0bo`%(d4ht(vv+Z?|S! zqsu23|8sJtM2FV>HB?Hye`4($`=oj1s5!5B2*1gHNs)pL3Kn(pZjwRM5qzUk)Y25A zR8dding>jkhjE0bC~D9MEcr)bl=NuL8Z}PF2xdLU2d$v_pnL^1+#n4H2j@S=4dJe) z>8_3<@0JAKZJ6>3h92d_D7ipf`u?9VLKEj$Crl)i^PY2MWQv-+AD{wtHWf@Ut5ZG* z#6sX>lgj&)HMQmpULu4?h}lh4e-eYi+HpS-50Lu$_-RG{ka(cgwV zRZ;VO@xb@L#Auz+a4p+BeKM(+GyiM0Dw?g!Gi^GKEuG~f*6zqA@zkQ?@LiU;h=uR} zjXqsPaU!iL=QJwqcDr$!&NpTQEK<0>56#UZs;~GyZ9Vx?_kCo8p$KnbkIpJtY}iHm z1bMYolCc!d1cZk=;4NxMQ2{n|9<9`RtzVR%lABb#N5ug%x~A_;bbRE&GUC}WY}2Y) zj%C)K;f>O*TBl(Du4`J$<=a_y&O5eauhjL?HyrsBTKh7J!jeLMAC=Bq2WhrunPx-6 ld@dQSGl-Jxzto>2Cj2vZG_^A;(dLrt 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 Q3b1Vp`y)YGvF39B0n9!rlmGw# diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale.cpython-310.pyc deleted file mode 100644 index 8ee4722e1e74d227f5e117ece77f59f2d922c023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6766 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 UQfH5jDzZkgRMd;cl(8@KUs7aCNdN!< diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_spec.cpython-310.pyc deleted file mode 100644 index 229dd8a8683e2b3c3c6ebbf3e992d1164297b610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 zcmb_f&2Qtz6(@(3MA5Q$v)OFdmzGGI52dgaH%LE>?ILMD7C`|eSTAxA5->DpWYJ5J z+?k;f3-ZZ6_0)4u>!bgP{vo^;D3C)=0eUEqY=3VkX=Qu236hLFpPYH`&F_88bH2Xr zTPXjq?~neuZdw1L$!c*ic?VV9LBp+~#cj?~duW@U4Vmekp@ZH@-AQBEu&sL*cX{K~ z;tkO}afU6&5w`pVymoo~LRt*_xBdWj6?Z9c1~VXeapK z?Kih;?hnQyI22M5>wFYwOo`RIpL`VXJT509(>s9_sfd)=+V1`CPe$gs6h^e2r6hCq zPdWCqh{yg{K+YO;?P~qKJR2qZB`yVaF)gna2a|VDRfa}bfY>5UY zK`|TO&!G<;2%czze9dYSWo4A6M>Vm^lcGqII8v39WO@)2Op8KehWZ|=`aPN%04puo z($4eGq`fB8neI z`$F{}E*-2NrwI(WZ|;Jl+o2*AhYC9G6-Sj9hDny_F#IjptLtby*0k|M>oMPUpGt&sgDY= z0|B%#WLi77Wec}Q=b(%`s#gSi?vef zpo1r{5Kj-}VPhx%HUgT~L>Mp9fg+{~axDDRz8E$um4>NK>HmF)U59$0lt6Jko zMOsU_ffIO+>@P22S$TKTXtKwnyPpzaGQL~Z^p#a#om1=GF~LvW#h^Z6h(2G)SC>L= z;xU7uFF;^t(}=xkL>?hWFhaY7ujqb;pfsavm_l9`QEqZcWO)PMK1Wrg=Z<~riEDS) zDn}(>R&DH;bVgO{^QSo^3sY5VUuZ(2@)Na)A(fjZN>|P#DkMch!@qI~yQ*QRAn=oC zS4}BYnd-_lB)Q(-)tC z^A$kJ1B^8j_1cmjvoq_AY{{PXR&7aXiARIn67u2|FiFQE$1#S6m#A43*rlshfe1Q@ zbd5R^!OMPDHKBTt9O09(j14xuaYfo+GF7(X zl(G~-G79!`J)XZR@JJ~F@d!D}hv$ymBw>lVf$qGHR8<4}g}h`ERWl65qcF^{`x~-X zpSkw+OE}hBezg3Kk^haQAv{lhlXuY_9!T;{`5HBph13nbHzaN*!my;(H_%*Ec>NJE zX3)JxnM4*%u(|TX5XMy^%LuDZ7!r&5msS`erG|!n0b0X#@}6X`)FLF8TO)?vJn|ix z=dx-lGv{A)N7#O$nEZ1gD*K?n^4fl!fvJPC(_ib;@ zyX|4Q(=z+Jp6t_E^3;k+A&J27S5FhEUY$tcpNy3RzD@(1b*@pHz*7L10wJi@c-*B} Rrsz3yndf^*usZCf^FJ7sUz`8{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scale_status.cpython-310.pyc deleted file mode 100644 index 1462df5c1ed50daed9a8cc68353bfc62230411b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4959 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scheduling.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scheduling.cpython-310.pyc deleted file mode 100644 index f7d991a7233f2d79d676ee636bd5e7d259550f0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5136 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scope_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scope_selector.cpython-310.pyc deleted file mode 100644 index f397a96ab4e3a6b53b0fdd540afa6a19dc4f45dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 zcmcIn%X8bt83z_12||=?r;aLLS|n*RVN#J%JAG+fPu#@ubUMRyBu@@(JqUzdijYA7 z-d$)c4t0`FJ@wp^b=1FvYfm|Mriae7>hD{SvLedU#*?nJPweA+{JsbC)m7g@`K!G% zx>&QUztQAsaWVM>RozF!t)azj&Qg15o1P7s>7Aj2-bvj_W7x2*#};>acB7lp{8 zA_*SXi@6NOS{G`&-``L4xZLZ-`J|uMn{=M1YBAZIUz5vj5WE*;`SWNyc=Yp+x9ZoQ zj74xLq@t(uQJ^uUryl;{cLC4iaw0Ol9Y~RiNQup@-cNsRXr5DHNZY=oWd8iC7kgU7 zWB+SN&Kh*>YW34R8zuWCn8I^0Enh7TCZC|H42`fLVvEE(blMhY+)3=Ai{3@w;BWIL zZ=Kr1rf6}Gw@ryd2BcUBJ`mcg9 z8$ZjT6CDViXe0glsY#TTQJNmrmsNKrk&efqcu`29NLOmwO%tX6I47F#2$h#IzNCIf zJTDU|NPSO-x6SECuMQ7llJ%m{n4x}(s(yiH2C0{pY-#JnI%YFAvqHcfE!NRGGt5d` z-kZ_P<@PR&0y1RNpInn+uo*EIUxRK#(zDe@n#WNZ9!64y@l}LW zZ-q;ILvINg%OuGnXi1WNcAd&qA|08DY+&Wwk{-H$s{S~ii2i<=#4?YC)=B@_uT&ow zz?QQ8%_8Tje<-rUewys{iz7YGv!C_0KJKeTi_Id6pGEsZ^`BjuY(GvD$h2>m!qKfz z5okg@Z&1@Kjw&wn`bfLzkUfWSn@3^&1o8yNm2j1+mH`t#gR0Ez~4 zs`t8kx24df%*cpD@Wx~kg;chsJ}Shvq4j?PzOgSld2UM*AG#Jg1C6?A)080eOH@T@ zY__NGTo>CCS*iwin;L`?}(sZ2&of+2!sECC$atpU*rZH)Lm4y zjz+^7a2s#8XW;G(A7yEvC;o9Am%2COSs*U}U&Zug2o{)ruMOC%-g(hiK zexj00=_rdu<&x*CoJmy3Te!=-U%4c|s$p(Hlp?25HR0~cR9CLK!Vas(VU(8QI%Op3 z0jhczjmz%B-^1g>`!l=qZ{J;;&zh|BFTd%s>GxkF>m{L*B^XqbTxvwWWM|eHValHN zu3}1QiQoq3P1ypXl}Wc2*`0}8h?vcyz%E_2icv1%;cCfuaQQWsswUKrD@XWb5VFRm z>o-u1ElWfbpbXIzjR91PfC_RqK1Txkl_B7(Aj&w#^`vXd_lSg>=s;X0mcsC0L5at1 zilp_XB_B=ZV`%vS1~4C6!+cbWQWsDLQO;~?pHZ&Pt{AB-MUaewyv&JnL<5%!6Zi`0x@G zuj9dFp2Wu!`D0>$4E6?+GZBU*ed?lFRzCQ_2Kb&q_ZDS8Sv0}C^1~2dD^nVG!jPVs ze`$pweq2DE#$#@;0h5MbC0=)^t7h!fm)0zRNl=OW(J>6>r1Ca;Iff*!5(Ou6hSe#iWpTF&O^v uRRY+n6F~gjy7E(|&SRT3I%+7~KoFd5EsqD}-xNXIWuEULDeSPj&VK;1FUutW diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scoped_resource_selector_requirement.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_scoped_resource_selector_requirement.cpython-310.pyc deleted file mode 100644 index dacc495e9572798841faa594d3d87e1bf0a963ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6171 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 TON+=1nntNy(o4pYaU}O|qYs-` diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_env_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_env_source.cpython-310.pyc deleted file mode 100644 index e9f9f688b440efac67978146ea4bc8a1feb399a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4364 zcmd5<&u=4F9iMqKw#SnnyW8ES$s*ceSE_I!cGC(0(XwjQZdZVC(PqWL0;c16&+#Po zjQ73gY-2eW5^<1p&g#%;H`~BnlJ`4mUqQXf*ZBtO8@vM5eJj89tF0XoOQ9d72RqqN#$xnI^TVf)wu7hL zLVQyfY2Tyb?H!6%~gZv|%-zMny7IuJb3Mmxn-{U{wqz20GQSnen- zbGHq>*I4eRQD5X?j z2_>M!EJ}Bbv7s&Rj;U7~V-CIhV}@Rt+dHri2#k&Da{>!CgDB`{T=anVPLcvVNje2v zvsRHrOupXB;;0uML{f$EEL`$ZX!xpzQ^ugIgzToDq>;|#1)nuHca`XME=Ht>v(GHK zjOrf;jc(Q#joo1q%PbaJCyo6dsRoXMfu*~fgN&=jfk+P;y`AMFa&*gv=9M%+taCk?|Kwr+*WU?s#Ep)zQx4-RuL43jj`VYmq@)EWwpm2Lb? zNo~*eZTHL3-8tFSr(0ti+olh-=_L(*Mp_Pgms*H8^;E*1j~Cj{Sekcj7v=b79m;Xa4A z+RWN}BE~FHrW*H6bsZVoFuI{k$O|{8auOP6%s?WgvtP; zC|0OT!X$_P8DX+q9j(oajYx@UdiqeCUZV{PD#k)4_7L5MMt1%~jTD}lsBHe9=wJ}Z zsBfhIU+H094NZ9ylB%&n3&vBCjb2g3V+O0cL}y%pAtHPo+)(6wa;Rg@FkJ2%psTj{0@!3 zgkq5=nbLACcI9pCga`lYIb5e(zCw@}ko_Nsu0Y%L)&gH%o%w={kS#U;>{FhD>xar2L8B-W9wtrv)gd+gMH-}=o@e$9^9k)sho z$LyFLx!N7Ox^&FsJzdg>lAN7bWA~UH+wc+Wf%VMOm9fhmtf-IO7v3rPj$)j4Rx$pr zu41QK?0n&$TC=;yh|0zKF-70f==CSYX%_y!h`Gos2SVyZAW6YL;7P16@kNou!As~d z(Mcnoa2t15$KdW16Jv@lteIDI7SjGRmRGuwinNxJ;u&&0`{OH;%)JM_sNd$%LrDjd zhg`Ep-zFM_-9VlQa&LibXTuP`VF>Ra{Whe#%}>di2-C;f@4oD@Kz5Ipmu1_NEfnS;JNZL0DvQZM|=@V zR@rEMA>CLsM>cIRWK*ICxLO2P5WM~YzLY*PBzzP^DM!2L)NJ{EEM4S7DN!S)!tnQ4 zVQBH#B3C+HHs?yoj0`oeq5*8$8fK&_lp2FJh;wXHxlf;kY{ppS5V=(+XlJ?`Omd_k zLcS%QA=&@n%#q(AlIe6K#4^~=i&p9K)9i40_I1z0F? zms?c4O~nQ6re!imQVzuyMJ#%jYqK)*m|gw?HA=t4ZopK1-)2ii?Jarhp6j{G6{Fai zCx1w1zkwoWQpj(k(Rytr$1XlL@V!6tEnR#&l?%)i09imBTyY_whvfSdt#Fy=d$z}x H*&XL!cO6)h diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_key_selector.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_key_selector.cpython-310.pyc deleted file mode 100644 index d8c7d13542bd88f22265524c9d336a170db449b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5299 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 S#gtMG*YSMM_MEbFDfb^}u~AI` diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_list.cpython-310.pyc deleted file mode 100644 index 6e4b109da6b3d4b085016a3a600bbed123be0e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6726 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 UyQBmqIm5Pv`;h>xSc|#;01Mg(;s5{u diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_projection.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_secret_projection.cpython-310.pyc deleted file mode 100644 index 5e7c208e6dae7ba051d793f4bef5660a76d6073b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6084 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 H$8-M;6zjV- diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review.cpython-310.pyc deleted file mode 100644 index 03668feefed6df7d90f4f7177c5ff662b7126257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7614 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 JuUf|n{{i?P9zFm7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_access_review_spec.cpython-310.pyc deleted file mode 100644 index b3116276b8bb17807da789eaf4033c787a30cf0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4583 zcmcIo&2JmW72lm*lFPLuf62C-Ak89ajWDT5tA){4aE%yAY_tWKRx*5G6KqyHLuqYt zm!27_5kd7(2|W}o&~wp)b=1GKmmY#1(qjYkP@qYFZS!w5MXWq;xb8L>l#y;9)VC$zV(Co?2}*HWR(o->An~w~-Z-be470xU)PWlgU~Tyd9+3 zvuHK==+5nxV)sW|BG?vE(bicz(CE@u_kaD1fM;>PD^k50NYN3I63Z*~AN|and2|YM zwAIN;M%y3lSl1%n^1p=StY*#5=Re5OcCy(AQ`j!1;pxXg=Y72D&nSci5nCkQmQ%Gj z;|_QK&RP&FFPm10zs5aY-M3q1QQ2sd z?^~@4{0hH{dX6vhYpCb>b$$c&0$<`cQD5X0sP6UrjmInNqSIdQZ#)sPz8}XzsWq{k zh~KUEL_GLY^W#S!tp<;_5*5UqNT~pgsIRl&gc3=z6D8J-G}lD?Tp^l?A7;>>4g^oM z(NwWjH%j|ar?XQKYu$Lf(#+B|p|ZY=#eJ=1ve5_HT8ocYPL9@Cek0A&P>$w@(PTk> zb;e-p8fKp))4DRAd$eIQCgT}D)Mj`;z^i_VVhEGzTe709J!{t)IzuajQK5v+QQ|8~ zcZjjREngc_uQbFr^xhsa^vc{`hdDw&Y_NK!euCv73c48=9hh1>NrBrW9pk)Nt4KOn zzSPO$s1t5SQibs}QuC$oG!ZS%5*$#JkU@8oG}4)r#JVh@sJXeT0HdQ3S;p|8CCLf> zcfYZfbwy*dpTshYh1N;q=}%Pyq+t2!=5jCNs#KzmC=1s zT%azYg@Vmj1j@2ExN|nYr*IO}>hVKudX3ZxYQ~zzw)5}xZ%6We5mAgJdXbE}r%Cy{ zRKd$>peYw1g&HdqVC<8`a!d;kFl4mgS5F18oF_u|;2#tCjve8YCw(-t zXe8FIt*z&XnNQe({h{^g&p%e=JxZlFX z7qJ+rZcj*^2;@rm4|o#m7x ziWFrrauLgrcG{mGlVtAQ?L^%T9^FfcFnPx7*5D^+<90;9e%E9P>K+;e4YSSZ$G!#X z#j$T9jm6O~g9YcNVdSP^qK(^uVZ&{HNgNx3(zLFj3l3bw_wF$!+NMX~WNDOOE zUhefUOXrndJCof=7kZfC@bWUi0Fu8a9tk}QZ1DYadBB1bER2J)BHs!~TLftwe(3=& zc%PZ$d=^A0N4x0MZ22yx&T_+)xDkV4_=oYiJa&GPRxCN;g30WRaKDEJ@M~+BovKi} zjdMcGLz~K{bhE`S6Jg7~2$FWNk?E}sVu#Y@84RQ%4F5u( zZlgF4CSgd^YfiJ-tX(37rcoCIxgUmbnf(s6=faS79et^UA@1qW{2L(OnkU0F*S(Oe zc@AT_H*&K(CbP`T3Kt8A+C&(#)B;fNQL9143Kd7$&{3EtrIABYbrhcE+N{hxW|zN4 zjnXf%i!k%5Z!^EBJ>OgMT+f}W7=_n7d537fgCb{A$k)+my?Jz9sTbE3{FE{EGeL1T fD;HQQfHUK8aOs7B?vdYA#JJ0_zwNO(w&?sHNN3f6 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review.cpython-310.pyc deleted file mode 100644 index 759c7186a34f8cf3eff172a2bc3d43bb87c63e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6610 zcmeHMO>Er86(+gdKWgQFJCg0hj2)!eqT02ZrcDIbNZ{B;U_@>u*M~&|n&QlAX>-Z- za8|Vz>t5tbdn(XdQ54oCfDgXr&_izpir#zSp@;UAbATR-w(0j~c2{eOvTUQhg$oWj z!})ph=6m1Fdz;M8ItH%am@Dm{oHmTVQ)c?Ik@*mJdI;z*TsN4_ijNFdP!*Oxl=&x}RbIDUj<(Cte@iY)&PlieC z_C&G~GS1w0)_Kf@FY&sz>E7(|*zbkzbzPVUw`ita&!f!2vcHubzrDE1qxNcl?Jf`G3f~C%&j!C-zIp5Fl6$KY zrfv}VY3ky|@5{v9v+T4MlVxux{jc!$fofM3KTfdX(&a3aYHjsUT|e&oQM9Q$%L=I! zt=jFyn@Ye>x%6A}IWn(GU-r|woy`D<-Uu|AeJ_kzR_US@^QE7aQdO#67|MOD3trpn$(RkJK4`|pOaFB2ii z4tA-mUdrqg7|Q!5s;K|O5Qp*j=YwV^>GI}!KMX_?a4Ey)z4y~5x`!)_e z8_g(OYxXu}CyC!}EM9D;q2voaKe*?w^R#(y!com23c&$Qr3W-!^hgdb)nN97LUW_H znN>V5j6>;pi;yEdkECLiO#F0;H_BJ&scy%#zaE^;QF~+DQDCBz@kQ@+6HLA$%nXgY z2A0nB|Ayl0T&4=&QySNF2CK>&BaaG+oMCGt(2mwzcRK<*5Re8P-t{Ma3*Hkvg@P2N zQLzsmRd&>HSGk~uZrVxu5p#hKWF^=%NY>+UFzF3rBue@SY@bS?Ok#)dBX`4(`uscS zlDS=f6Ag(#+@K9ja$q~wu$y~$z6`5qIIyjfN=2KDyRBwFIJKYLeG>GDn z5i|II1-w>Y7G8R9CAq%=)T;uj=L^3(4W<7Lw)R46Sscfr*DZ}K#lFO)yWsU>6e)N) z&c4JXj!{RZ|Ceb>BHEwuMIJ8qGpQTYkWK|;2q14w2Vj8_APV0ZU|--{C*$AL_F1SulO+?Db~2# z?_tO1tl@qVqqNJTD}KuV?^Hw!m@bf3UyO`iR{vzRbnU}JGX#wj6MQJ7C=Q}c=`$)n ziDWRBx6&lazSJX5p=+jWhm zmS->I4@lg4&#vU31;>&dWHp1&Cwug`$#eDM?AXncUj1=1jev3Pxt%;81-S}Y7W0_$ zc&|||(XPFQ%6>jpi&H%i5MN9Hp}mQhk$6f8)5o`$?`SU=_ISLj$}OBm#w=!;iwtrS ze?cD+kTC|Q^O#hNcpxgCPEhdzbJ~ju-AE(i1v)qg4+rUFS)9d$$KW6>?B)t8`!$uH zLGlbV=-5I`LWkJ&S4cwRp(%~WaEb3)+vdl{XFvR@_0W1)kZ^>D)|U0qmiEw=#Vt#m zmql5kIMyR$Xm43tCJw;XCF6cYmfP5A0WhERh`;p9S)rIM0Mdf$ymW;IhJCf`? z65BdqIVRkExcin_`;TKE8s$n>?cYwxwgzXOqwhV6rAVwoH#vYB*^jMlW1FyL4jR+g z8l9IXC*_HAPRC^hym}!k^?Eo}%dFgMC!*_1t^J&xDk}j3=<*Ai86oA6l}}2#+8)8j zzGX_*3(y(_T8KP%4N=@XN{Bnk$G@W`x>GmByQrGSjTB~~X?fo7$I?`+{H=3baSut7 zIVnXF$Y4&UggK>UiiANrsB~yjdXIwE)|AnTJ|YZlcP){fk%Iw?MbrV#fgfFaQV{Qu z(A2w9r;`@|5yE~KEG55Sb(x(rQyq7iSjX35YfOv630&Z8*HDkHMoRN)Q;S`prZVu=NIf~y+E3O?VX5ARd5M9I!f zc6=6EEOJ-UYe*`FZCWL(V!>Q3v-Gc>H>Yf!gdsbQY0XSMtH`6w#J@RB#-vzaW(h9d!b|JiPFS&_Jxu&-G4+pt4ycy2^QwWABQ&U6tMD>0WlHBu+rs#W KFV?IRh5rIOi2UdP diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_review_status.cpython-310.pyc deleted file mode 100644 index 7201fe9372301e755676c2774ab057f657d0ec90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3530 zcmb_f&2JmW72lm*lFKzI+l^ybmv&>PL6|~hl%Q!VxJHb87(ojru#_B_7Ms=1P+WVt zyPlaG``{DSnUCa6hb6JS={C<(vL654cdVObVUkSy0G)KjDH0Z|;dq$Vj8P zdk}nDh%73S;6Xi@%V45)p|%Ety+lvS-F}=;2YEe7=Xt7@osGpdx$FhOogmAfL|ef} zKYx3(K7D5*f_)(s9i5K@jV>K^|Fcg5p2y`>WO^%*A{CJm8=L)ier04{NMS_VT1m1v z{`rZ0E#is)4Un^jJ-h0DkZ0p$uY^)KE~eqL$wB9RWR;;179h3=-jUO`IO9%Yk6hF) z>IQ$6H+k#W9yLXad%S&Y9oZvKc#qoLU-tMF-Z{2LKJW51)K~abehqbpU*|tU-Q}rWK1DA8NTK{5mTcqRda`%yl^+U0rh(B!WNSA8%r{SkNA8iFYlSBn^8YvZ^5tTX* zE?g1ewz{Ie!RnzHeOB;509snIrL80Dkj>fL3c+NQ7)R;M(JO7aKBu0`?QQTK z@UYo?m%u-A|zKy@q4<0uXHBdNmpEDb6@e6CWLCu9lJ zB#U$|B^h7Osa%DNF&){!$f+egRR8|tV3JS8V6RMKna4uwWbpWxYJd%3DB0ddk#jZJ z7uo(GO?C&xfu7{qyZz0#2P)BGqln_i(VkF)$18gr#AyP)4~#Ncx*5{Jp{gknO2dgz z8B+9%gUSnW5s41NpFtdT4TZ;=HvUk0%(vZVv)h-#)?Y4;Z7f_SYEw2B)LTK_Rvv%I6Cvu8umj zC24}Hh05GrU9_o7cl--vMKo!8vpbh7vl26=xywXt$_6rW=7zgV-u`X-`@rVc&e14V zL^7H_hv{7sn@(R@Gu^KM|=tZF2$G8E_Z-0wIWFmyO!Q;oQ1+q$8f^r9VGbN7fH*}#(BwVrsoHFvp#8U4BY z)H@-J>v3Ay#`t~R#!5J7TKUvJvCgiZyUY1=@+OVh8xIZpYChM#1MglTq)r4}EB*tX z#QIx$ky$v%+sNuB3Jv4nHqLI(q1_2S%*j;PuxjZ%r1ht)YE2>)X)PrlcbHLSe|-+i z%DbCJ(_J3j+o6q#NjI(8yO*JNC_IuHCy*IV$fSTfFIMc@)MP0@M&2rDmP7(uAFI9$g9}PoL{+wWYsXcz?+i|S4}BYnd-_l zTi9XM*pJduoR^F+|1Gk*jlyL&;1l5$;USsb`LFM;EqYDX`H$ap+3dCNMEwH1WF3a- zgiy`$r|iT!A)eW@{#l+WE%7WMm?Nv1QDBy?TE#e*(@58M(81>C zl&hK`0=DG%WLUGtW-oEX_2diUuN)V>XrQr0G=|`}K1PK1l@aBuAj&w}b*E>`J0#4D zB*J?{%7x)%DU-)u{sPt0FSt`OGXv_6(SVuR8fKjmFi8^>t#)`~KhX=8#k(r8EilvE+Zeu40r2t!4mdMI8-jWDFC@LR*)Rf;LHXo^1K zq7bAkQ)+j@kPcjYX@wzTb6hrg!BLlNFxf4&2+45i1+2VYUj({-PV@;pe zsr4omZ&5+)J5!j4nXc(oWMjOZ<=U+2dhRo~;XdwrpF5ef}^hSxJMpQkpZ|2=OfhWup7?* E09a*>2mk;8 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review.cpython-310.pyc deleted file mode 100644 index 17ad2b37cc5646d7328d99e3434080b580225baa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7573 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 Jm#xFO{{m2Q5|{u0 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_self_subject_rules_review_spec.cpython-310.pyc deleted file mode 100644 index 1760bed332dde9f5a240d7b4aa294172b3b853c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3675 zcmb_f&2QYs6(@&WE|*%#PU^T8P_#ro+^!4lMlG5)f@>trhfx&R6q1p{q5(s3X0?>L zBt0`!qs8hZoqFoIC+nzxiPxTT4p5*4TKD&c+O=ZYQjun)`Q&`O_nY5)^R`%B4J@R; z+1ulLYnJtQ>Re1NIv*gb`zW|IvbfDzW{+%Bvk^13GjdQnnLBNbTDJAj;x2EUSiB{? zV`tRnY{%+(vws93(jTf_A#0Sk;a9l#e7n6g|2goW%AuK>_5xgU(V{yiv)E>F08R{0l z#arAvu}7Y0^EUTStYdrR3xB`EJBuC<_{xbj3V4^VqF&)^{08bSzsX-iy~~I*67^;3iU{|1`~GT}Vk5*K=xD z;WkW1dKfvgWCzv1jt7%sDh7L1n#dv%TBn1@zfl8h0PD#2Hp+sl!GXvR23fj0C=d0d z$bZ@2e0QKyEj9q!<9JV~!Q-V74w5Vd$p=OmEZvOg;7Bz*h$Imql7V;N7Mqx`*sei`$j>;i@!Yal0cd>QV)!??jc2)@PQ z7RHIZ2G75uky=N#ww}Vh?6Xt*W9y6G{)rv2BS$-PIHzNFeexnZ|auz=s`WP z=I${&ws9BizV*b{?YYYx%;?YEr~WD3Q8P{}I~e~^cd!!g1Fd`-oLU!G&)voRIk~ph z?C!Q9Z(~x87sIn#3aL{8w~qgir-}ZSUSydL@(!}PjY7jdxs9_sb7*&p4|B3sHmuva zh-m#8tJ{-U#ac^=*aDVZ+h4taW$oY3;^{7rAAC+56BBP+v-hqf^7;1t`^LSh2WT`~ zm{VRY_1&e^>v&Ni`D@U?SvPvD8y&_7RE!qx@M}`oY$#3Z2D(tdg&Uo|po4rJ-@ZUr zbn#vL_A}S+t>AG=zp6W!FKLacSI^^vh$yG(_MXrLO&z2v&6SRGJZNr~DqTC%xRm5p z&H1%UVAd_O3!WD81hprHsxn=>W(zy2Tja&Wi;@xSLuB#R;~K6%WvA9DvCW?KFR~5J4bK!JsuBv|-7%riBJwg+ z#M|eUC1&ZmUBVepW8GZCDmH&XzuE&Au;mz^40qPp?5*om!2C-ZEIlBB3qD)KXUKl% zQ$(6y8fm@^gzWa33q>X9V-mOrI}LZzml7p?Xn zyNIHSM(?4xh9k{vc(P&d2E{t`a7Gbgwg?18JcM>Pis;PqFYPG8j|JTN53%`Zl}s|- zt+a^9j#o$m|J=VGnm4=l6e2g^O!m_7=pAbHsGykYf&xYr(!yNU8)z6?_AS?Dp6k2M z+?M++a9J029R#+&;@|Nx+-;lrJzoxJEt!AKq>!}1=qJy^zkU<`;pfwZpC(Q8>NUJ+ eNb(%fr9g1q4IU53K`MGQUFHWqLclJ&<@^^wkGiP< diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_server_address_by_client_cidr.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_server_address_by_client_cidr.cpython-310.pyc deleted file mode 100644 index bff5e264b6b2a75881969f3735159d6867a0a94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5008 zcmd5=&2JmW72hwCt2HUxiR0L9(GHvuDhX=f} zf|30!}F_gPsm(op(0c76pRbim+45SMb1XD*i5-eY<3Bw1rO zKf1JPcfUUnY*R=@TNmq0qe@#{zjK@MqCXyrT(2=HGLa~;vf8@*bHnqD3&YyloRiu1 zFLrEc(H}%#Lvv22>6VQfMZTVHj3E@Z>r?aMEkUiBvs;XuU>skiGdIo!ja|2MB2 zkYY`#!q4*>4|m*dRn+(rk9M4Gw;PJ^(Gou~uhn>+H%w0?BJ?cp)%Zz%YRBoG;HUXp z_}2N`{0zPg{tiEj?=pXvpTqYguflZSE5H9>^`4MW)OF6KQ0kXkH?kDExpDi`yOTe5 zKEHo+jolxliuJQZDTYEa)&+aXgrwKG30p>&cg6ZERcHo&TEKdm37%?WC%e@!$;U~S zZP~?2UuoI&$`gIVUffT)ESHsGJx(m|-N<$l@7;#&n~BxwlfUmhRQB-Rz^kr+OyT8Y zN7l5n?L76T{?v(q15lU=6uqFqlxSt@fmXQ-^?8$zk5M06VF?=+Tx7t(dYZ$j(tOVe zJI$IT7Rqy3(ND5?Gm$FpFS=1#j~8V<86Oa~!BYa)FwGNPNLj&RvI^1+%0P*1{Y8tc zq4~KZPvG;}|_s+enJ3s|Og3ds~Zwv_@NH7{_Uz>Ns8jN9q(v=v7_( z&1mFKete8#TYJ;{E~f51RHm1V`VA>!>O68_BsaN&=37FmnRAhQ8~?F!0WN*qUWdgN zigpxV$kEsr2vh8fLE0YxBeXWKlH_cdXtW^gq>|mf!+;qRAp|SN*2}Fq+01t_GBNF2 zObv>0#@Sej)=`_UNukFwCuoY?EyjZ{cnvpN@OxzG~a*Mo-doTGx_j#zL{hxXP{%j)^XfET(Hc;i)=Vn z+JxhtU=KS*E*>@m6F|zdvw;eyIN}vnF~?mQJ)pI2N{J{$-qQ4}x0r}TG3S8G+(eTB z=&7a9jl3g4ESG69H~IAz?}Xsl(J)`bE`5=yajKJEX0?;d>|^n1KrL(_NqWVm z4FRp$2?^9gX$cz?O6SQ?T%4EIMupTDDGos4x9^zh>w){b%S(Pv&k^`uA_JYATglkV zpqoPIJ!+@;Jo(@_Z0~3CNO;TBSP9^Lun6A$bLYl5Zo3!w{l7J#h4y~gEV}o%y_UQO zP62C981yiJUpWNe`?ov}6 zp1Rt3hV1E)x9fiD{Pq{W@t%55eT_V8>TP>Z1075QUD@{J1zpj|t+==2OoMI2eMEil zs`Dh&wQ0b8jA%`RXW_0hZ>O0{XuqzPFf*_-pGCXQ;_NBqZf2b+ogbCS`*+O&YLRSn zG~7={Lh2OoPVmoo+SmK!g4a4eUIK+W3!-sWaTj|pO(ESbI;NCxc%8DQi9Pg3i|@uUSx<5=jjH1Ehh&10u-t==(ihMRu>dXa60z z%@au3(=W>6}Odfrpv%A;l^df9BBtRBduq|8KoA1cgBm{$PJKddT#yOC|I7=s$TtH zQ8n-;@4bfJUs5pLCyck#iDf9Pt}z>+&8A$iWSH@WZ%2{8O60cffbfX;6?vqR1d*3W%L z34&qfAxmb;p>Me0B)`Z+*FN{ zKyV2aPhFyq>1POU0n`$?O}fr{1yb{(_ek`SlqXU!@dQ`O&z}2|VLeH!8`VCy8B1Bg zcp(qCP+5&*@g$Dv@@~?W$P3(4uh6rd^2YM`MxGDmj&qbe=Gsg$-IsKgk}V?pQ!ZjZ z7jgU->RJUk-a+i(rr+swny1K=l*q(!8O1Te;naB$%Ov$7qWH17>A~{1RaJ{M* zdT#Ywd_kj%*8sSq$ld#fjqqF;gh9P#jNJ?+-S%Y@r1YeaKR}`TqZfDCmQ8W-o72MY jIrg4jwSHus<`Cu(#;t;`QM6RVZ{USd=!Rb1JLCTcS8_Li diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service.cpython-310.pyc deleted file mode 100644 index 29cfe2b43764cd463377ccd7c00269e1733c0786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6848 zcmeHMO^n;d6(%X_k1P4#&N_c)?9{Q+u9R*1<7^!xhT|B45xMXhJ_s#nE@yT{nzdGqG|&Ag|mUbi$nKhW-uMy3u)#wvT#3)ME&FDlhi>1uucwWXu)9+Bu)TltKaT&dy|WpmX6kK36Pe$^6mF+7I}jn59Nw2c);D5 zFD*B}`j(=3OobwCC8K1#{B*^pTfb3dB@a`dP7KvNEf%Dzn&vf{W||tFuFo^iGMF*Kd6kPz-{Zp{v~S+N zwqoDz`myZ=ZXDbAa0fE7_oxENCsT!{lF2Q;zON|Mz;`2PfwVdErIL5LRL>0uZV+sx z$dW=VMW=RW`R3X^?#U0hbUXEo($zlqI)|sAbmbs!6q5yLs5924#Jul^EUEM`mATSQ z%owwhQmh7dEDXJq>YX6Li!v1zDyk^j9>J4`z74!r@y6dnF)A^AfH_jz)*hBdrIF^q zAW=eJP{J5dnyM_S664WQ9%0l#7w1LB#S}hxq-9kirDe; z){xYkJoAc<;$GFs*jIEE|H{sofpzAS)9Cr3D}Mz;CmwSxRieD{>8Y3g+N@mvDA-P+}h;fW-IX5TKz5AjlwsZ%Wt$|U-G5C z>)m%Zc-*?5xww`W_;4XD#TZOocH&gooBge%;y8ZjOUHQ=YsVK*RE(02Us}?aPAwIx zv)9ti&xgk{zBeaGJRJxo4}H^18uJjk)k=kkq}ELm&7sR2KJ^K4ER@olG#0X3lqs;?LnBspoYXv`-4buOk9tq zjsmAg6C!T$2Lren@;XiXsvFXcVU62^KF)H^n)dr4T6;XW>c;&4?pR1{ z@e=X!V6Nq0TqnDvXO2&)ks6%JbU|r_@+fqitWo=OD29ioQl(|*Iufyn(GA1>Mc#eP zA$00DZhWB-vrd|WC`9Twh{LJJn8WK`rkJV(lwy{vcwUJxbrtH;y318iTMw@|jbcAX zG5kq(4Vhf>4&W)WQ}3y>^xz1x{f!UO{0%?DjiaJ**TzskzK;2w(ZHrt?Itw{U{SJ zUEKGlGPm9QHR)iJ_lk8KRIXy}yj%}q2Q%eLq1O+o^F?g%pJ8X-WLH^`8SK;I?F;d&dw9l7N>?_2Nr$SV5>$8jTfYav-QX$BT@-XdU zmWfgT{Rwp{Q68BdP-*D6uP}c!73MsuXNXe`9Sd~cw1bND>Akka8SG{vRNCF{OFp&z zoZ9yYm2Pz8mgz1Z{}_d@J=CT47zu!T#*Y53_T9I?V>~n-79_&{k+E$&G^IH*WpUdO zXJt_$alnj6+Q{5Cwsph-#wG1RMV65sC}2c$WInF!P<)WK)66Q`ugEH9n(55P){d5+ zjg-Q8{D_hW#o_r|DlAH)$TWq3EMOmDppRI}rRyN`J-J6&3)s#o?TeH^BE)4n)~=4Q zyB&0lDBv~PNm)h?&3|Gf<*pmMQVL;X1~PK`hr2kLR4xT>Z;iQ^e}xe-MM0;u;kl^_ zjd3+EsYFJ686W9*g>pWL=Yc6D@iek|AoD25Eu28~BT1@AHrt=#j-)AsLVdjg z5Y(CoK6|?e7O$f3w|HZca!o(=xv4i6kiPOiOsW_!Xil8e$GJ&I-5iqg2C`D%Lt^={ zAHpm`k0)l}$1*AO+`c#qTx$KqB+ey8g{4tcM}Jbn&3h2Y#8fDBCn>4`dpBh^ko*#F zOxR50gkkB(T_BHP=(T@Y=AkiEGHU;{N~SS9x`)eq*h$%FrOD*RQ!RdM>}WfrNBXdt z*Q0R&k%bOf?t$V5rDTmlQtI~+X2_)6Uynr3l_}3>_>`ms!2{(VXg{PChm2v)v80`Q z$fbdbTynZlOO4bLgf6~^{PkV6^j(#>xSP^(x1oz~VCXEbM%g0TjN|+fBNPo4BY*pt zbnkI*WG0FVIvSvZx`dg;Wy;`zCa`a$Q+c0~^vLLCOcVnoOV;hRNOs536)X`66huaD z@ZOVx_%e}7*cIEJq%mYt#CR@tDMM0n9R9#@{)EvgA7vS)e&i`0rURat`hueV^?j*V zsbAW`ZE=xEe~XHz&qyLRZ1QW@}f?=8l|>+8pla4AtFJ?Ni4^KVhsZNt~m}Z zGVUom4*pGmgc`ussgvDMdWkz^Y{$`-RK^}}OC@ZOCPwlRTqL93l^RZURH?}~srOq{ zyiLV)7wSs|Ya||u@Z(!3Dw?SqC8J`%1nF1$hf$q=TNPsw25MQlv5>2)fYD~=>WWoa zte6$ER#xI~RKyip|7$1`LvZmLK00TnS@I%G1l_ S31bRMO#|yAFhqy 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account_token_projection.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_account_token_projection.cpython-310.pyc deleted file mode 100644 index 277573a6c1dd68624db6ed46aeeb5cecba967e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6732 zcmeHM&2JmW72jPh$t5M(mhCupQrm;naKpkPEjK9=!8KyUju8Z40$WG{qQz>pGZNQc z?$WbE*%atY<)T0@?Wu>NKrQr8xQF(S=&gUkUVF+pKo14d_V;G^WqpLQQxpYS$~!wB zJ2UUS`OR{!t7UPUJF(re_1kGV`dw%h z@Git|r`Rgm)*Xwxy!h1OMN!%*w94GMXVpsEf2%V5KIyFsnFuAasxCKE#zhv&sH>th zVO^PSMO<+9_NGXL3>32KefDWrBtbV~cT8m}SzD=Yw$f;9MylOguZL-;k(!TGn#S3v zurwSdl{Ln`&64zCu)=P?dv)2&zSDv2_m2WaWp^8A2Gr2)P`>C(VKsXQnk^|%dVJKNW17@IAz zfOS$XV(hDpC;>>LWCZGFts+Up{A`?tLF{h@GV`JB1eSTl9~^% z*yqXSQa9yUV@o7kjW}9wbo;8ECf}Cyg-1TB?TD9bK0p zvIeCe7*zU-VCjQlhPbSE`?=@)Q4%TNZ$PN*EE3Nt+4wW5O(hTIs=fX849nL?Lxnbm z8T}|v524~q0@J{{Z($|v;4i4YBUGlbIx@OpA#9IXlO4on#INIlFb2^XkS-D;)N#X* z=d?BI>?Y_fjJjkxnmb^+o^^VeVj$u~MH_tK zTtP3+QnbrQQ6^Z{PJ1!O%(N0(%%L=^(<1=CK`$l)rA8Ga4oy4M0Z^eu7P5YrIaZ`l zJ(&>s?3L~1jZF5X--=ZIu2^B95=}f*_uQ6rl;X93m&UkBj#H5q{sTN;((Wr&W@Bk& z#*jLUew3$2V~J+dY=JYGm?8Kx@O1B$@np_J(quF>ku!-K zc@isIa}16MI0u306Vz)kRjY^6ja;OG>_7oCW1`tl>ED=gCPNMn#}RU*c-Rvexo~{w z_0U{fK^)Ll~(d<1r2k8B1dh zZc=Sf@5sL9{hbwsPAl+oL3HacI=S;q`8d%Y0QmtupbAIf8cnu##aue*3XijGt(hibt>)@WW9y8$-1!-< zB)GN0fzUyey!tr}a$8E=K?wjOw~5w#uiHd*eLNZYR3|E)U3FgAd31lLCi1ScUm}UD zC$_Sl;YNPn*|l$3KmNgwoF~qcg2H`#;Osb0T!mY`D(*P)Emc${iiJJJt$zn-02Z9< z)S(Lz0q#%+TN14hCouDh<9L=A* zWY4^)N2wL{iIA71$Z)aET|I>D=S962_DV*U{~1X}q~kiLohrf*E`kw`J^zoYdu&)L zIrCptORls1og>?oEa4KIq1xwun?)}`@h2%S~Aa>eQ6(c+IM`=_S3RmKnB~-R@i=7 znT`rb3R4ekN*_?592OWGT!J8RPgqCfgr(~gEWr+!g5h2j#2-B`$V;REjjm1n+*}&- zqK>refm2@ceeuxue~+(qAgb!P_K73d+jM(noeEl~@6Oaohi*x)Rk=(GU8Cehw~16p zgzx{6n%+e+8!V=UTVy&>oJbzCPeWe8siIf;K7ylZe>B~jm@!9ok!f9=L`m!B qAjSWeOa*;SOt@qaX5e&ypdfr>u^Ysx86CH-<5fMxNavl?g?|Ctm~1Ej diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_backend_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_backend_port.cpython-310.pyc deleted file mode 100644 index 47e4b5a69c4fe041a98ac8b6db66b4bc52263bed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4519 zcmd5=&2QYs6(@&WE=7IVPGm=NnwoWhz#CM%R)V6b;2KHuVYCG{fo1ftXv4w31ednjBg#_~wK2@jia<&6_Re z=K~AR-|fenf4N~<|D?v`lQLIm_&htxMKnx^y}YN+)x>wNA~p9$DPw zwL^>7gm>U{>YS}x4R7$TAjI?Q{)UjbP@)WUyIq7_l!;7xDlPJ`CyU*b3m)Fv61kAE zLUm&={J1CbxR-{HOlKj(ZKZnUTC25{s_p(pGby^Q!VFSHk(J}d%4nHFHp1}rFfX3P zYvG4KxxZ?5f3hvYT_H=_y4VaAnzYq>pZqf9MbhtzT&;ytWFjub%4+kipJ|>)TxizT zPBI=lO#E5{Lj_u8mv#I=^vf zb!PcX{AHALe39QoInQtLS5PkSCBBUE8n452uU3n{SzQ-$H%-JZ;^e8w`6q=`gU{L@ zKlyMie6pREVUopV8KM&RRS{mW9Vzt0c1^9s$71tab*Be@P{3>|6g*YhKxV6MocH4_ z+cS$*PN`(&q`7La%FW}hsJy)21=OSmb;>$OJ0UcWAF4CF@8d0h1u_JN`xvRL18d(I zIzuZ0%0XcSP<#b-hv@6u^7fEgwIRNt_4<&Z<#Br*{sD!t!Rj=Hg)3nkb_*^tKz=jL zfuA%VXDHQ)=J57x@jJ(VnWb{Te+pkHcv&D zK2|=qDhU0Eo9l*?M~7$gLzx;V3OF8m6vBr2$K{VbBuw0GDQOukxcP%~KUcD`2F& z1>!T$#!pkK`*vWvUk_fJroZNRc4A}Z_@O$zWXLbb*h6c_f)VWaCb}O9Rch3b>Wqs6 zq*GU)79S{L>6w^B!Qpfj5t2|L;s*7PyrXHHf!rYM_LT-`D4r)-zf5;USdy~yt?&fHb#^>GUW&5s4q53i>2b*Ar_Y{6l*a^&Q)C28u#4i$bHqka=p7 z4k_G!L2&eD2Fp{mMVd%x#Q32)z1j|Rs%RG(IYb=57VB5Hg^A9@>;Fvqy;#Owz5VyK zz(oVJ<#i~i!HoWOgd*2GXM{)S(nbh^OA#-x(L#27?+n&8vc4nQ&D=5GaRkZ~@yMXv z1fKAoXl^ybckVa77yJRBtAhW(mxrK3&lvtV87ARR_>@R^E`Xm7igoIL31sl9IW zT_hRZbG*yj__l|)B!kb{x4w4m#w>Ea^m#Rd@sj40)%+*}j|gaGRo@bdR8j?LndYU6 z^F&l`mX@k=x^Yh~VJ*FX<&qMsnqH+*(_pMTDawAPDpxOIM^$Y%&idj!XQYrF;_NPn z%NAKc2@FyiX3u>UxC^6}$L9VWcrF|K;F}bFL9>*kYJ4xCVzB*!9a%?&E_=|NL>JC? zN-d=5fpKJG`jRoe(`e{5oXYFf3+$3$XvSUO zoaSiGDf0wwEy68$Uit`kw@)<}pN4VHQ8$f-Eq{!m(}FUkjU-nT{Rty9J3hNKMKmKX zL}zj-&Cm}~0Z45Hmn!R&uY)}(b!ZcPN_SN@;kdFd!gMp-D3G!h8#^LFJ{e09if72~ zK00>fkBDnpT`Tk0oat2!<8k>od#YDn6p3e1^chC$R5f6(ef=`cnz7$m5JwC0<_ShF z6GY#wNSG(GNm8_kT;w|!QS>+Z^cKh^ScoDT)o|MFcH=r(jgq%0s)8s20{a=&=c0%< z8-1xq5$@SA?;Wh#nI~UMH~LCMINfp7b4jx9R>0bXl{ A0ssI2 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_list.cpython-310.pyc deleted file mode 100644 index f0e7792a34318d3fe69dbff10ca12e16f3e544fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6581 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_port.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_port.cpython-310.pyc deleted file mode 100644 index f041cc1048641df8fef9ae3e674d0315b5eb662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11551 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 HI#u{zjQ9jL diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_service_spec.cpython-310.pyc deleted file mode 100644 index 78e05e14f16c63639077d80b6a9cc4397de4e7d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39843 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 Jmp15z{Xc&|D9``^ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_session_affinity_config.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_session_affinity_config.cpython-310.pyc deleted file mode 100644 index 2f81bc54e83e09d10c2b5d56f673c640d061979f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3517 zcmb_f&2QUA7AJ?4L@|<+Y|}KkwCu+gRTq}(?nhfA8#GAUAZVcmvC)He7c9*gSxhLB znHd?iK%eYWPd)D`zAWHBU{Cv>@Vcj-3-qwSZua+vlH=HMf-QFB`Q&`O_nY5)Z=83# zzJ>Hx`~LWEUCa6>bxtN1ollX~4HVoOS={CAv2+c@=br32VAIFCWTJ&EGT5YlW@U<_qIhQWTesD z+6}%gL>3iEaHk&3WiZjYQ0s%icA_VE~ep=$wB8+WR;;179h3=-jUO`IO9%Yk6hF) z>IQ$6H+k#89yLXad%S&M?b{&?&CgUv~zf;f$o3ebpVIuFiV5TSN_ zL4AYNeKCG1KxX1+IqpUWf+yPCLVeUU%4SiT?$(=C?Kn+vBVkgEE`76h+jQ>Us|6i- z^~byShA~08Ow?w`w~^H!P?P|5X33Ve_N_fuveF8{W|SC5>6GZrYs|8YlXwV=g< z0JXJ(isv11+S(1v$N{ZOp=UB9N((Uh7w$(pQCgRJw-Dh;R^QIo~zx`)s1~7-_i};q=0r{mF_;>U!y^*F6; zWBitGV3AnX-F>O{b|;xFJyte??~48uX* zKvq{#XqX4Ladx|ec8B;-lCiL1)zW!L>yKE~nnWtnT1v!r7*b__cM8kOyOBoIEgs$6 zq>YJ7SFQQlc`RJ)+`nO*nYxKaz1kdbzQFGu3w#~H3_@Rq@XmFk!gVA57;gllfIIw= zbTu1F(^^3nvb%6v(^KNh%lP&uWJP!0v9CUH?cRmTQOS2z8}lWtQB`*lnnR+Vs#@DZ z6DpOTs3cQ5%3@KuX`*!HOrt_x#9rq7$|W4DhS>#80T^t>G}pb*!+}gRTDJ8mK>i9 zV^-Mw^%qEwsb_>gc3Kq3Kwygq46(0$fv4TKMv!lVDC20?ot`b_xl?5QW8ainBk2GG~hfO**(=A~K`{UITsEo~|v(rcETFk(3qK{5`uay<$1tp_4T ztcs)v#3Q_2zBqE^H4>b5H;^9Ho~>$NzL00I4MXuL3{%Yhi8$>u*S_=ueCz4ISQp3W z^8PVd&eO%b%}Ae3`D;>y4Ei~uXCe$0ed?h&pA=z86XC0dy^HjY$f7CwcnF0c<1D3i zCk*Mh#g|qX;yI3MCeJtOlI0~^Gc7_gSBiU;xA365CZtwPh362^B`d6n^A5G%qvCxk zh<7In6O8GKUPU%0>shYNny%+QaU1Rv-(?+`Z`-#$-@E2vxYIIM+VfTBRBp*Iq~?fpM=etEj2ZsBM_W(jmJ&$gNmr{GMta+Rfk=1{tNAdg*X5J diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sleep_action.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sleep_action.cpython-310.pyc deleted file mode 100644 index 38b584bf830bf9516997cb1f695b422c23cc07ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3535 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 Pvn|JU5PvOOM{@rM&}|!; diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_list.cpython-310.pyc deleted file mode 100644 index 5844148532780b0a4abda0303eac5577af492bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6752 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_stateful_set_spec.cpython-310.pyc deleted file mode 100644 index fce8b22a60d18be039998ce0efbc8e990c03d3e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15323 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 I-Z)I4a%gF8=y>r^@=l+)+V|1 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status.cpython-310.pyc deleted file mode 100644 index e3ec5f37eb037e912f09eb008480dbb350252831..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9603 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status_cause.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_status_cause.cpython-310.pyc deleted file mode 100644 index 055d860f67c92d2556afb35b08d228b876dcff10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5862 zcmeHL&u<&Y72aJg$rUB}r|j5i;%t>7ErW=(ng(bD$Ee}hMw(VGETbscr0dbnP+WVt zOV11ii=a<3dg!6(rI(^8tR4zDK>wk=_LOsg9txz%_hv|1A|*S@r7h5vI6E^tKi<6g z-Z$?}zPMO(@chZW)BfZY$N2{p_CG!fKfzC3LBgGu!(HyBZp$@qujQF{sa3+el=|Ir ztL!?r9Pab-6Ni^YWw+F-a&N<_R|fyAg?K*hZwi?SEmX~v*Yl7I70aZjlROK1GT%

    gmJ7B5(K*4%(+0Oq{Mjx4=^QD!jzIC1zQjf3LThK?o)ErnlM-ak2-9+y9lsd zoxOs!A_aiVhTs0=aZb>d3mRQ1^0D@m)4U4Er*M)MJdfY?yg#C~N>r3B+gzEiRo(Jm zUPewWp;? zU4@z|+Kcz8_&ycmC8#GA!P6#@SCDL>a17hDkZ-bJqlK@nqP~|4)+#KwTsEyG+)KFQ znd;7hbJnpPd$FiCyW)rsX`b()NG-ty!K(4*I3-rqE*diF6X`yk4J>FJY0%6O6cnvB Vc9|$Kp=5+@Ic3LmtVQcg?w_HszK{R_ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_status.cpython-310.pyc deleted file mode 100644 index 88c7b6f8d1b5eccac162d9e231cc0482f4b93689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4623 zcmcIo&2JmW72lm*lFKz|%dxD;PLpgCASi=~j2!e!P>lqMVgv=4!WMEM+OC$Ik+jls zcRf24ES9=dIuu0?1$rxbu#Wm?dM@_bQ_cZ;2+*{@H!FTvCezqxSK2qcCTEe^F?Gp0OqW*2LTN>Iztkz2#sh=f zymV&pk|>{AoeF1q@ zEpGpnb)Z&W*0mD9%N<@lGdpEb;V!>+W}KQGM>q#nUYoQkyw0!d5m&evxiN0>C4TeF z=v?Ek@LMQre3{=yS?4SKRg~BHD!+sB2Cu+$ujR{MtZyfWB7P_y4@9OOsXz^~;UC+d zZ*OgQ+xubW^`aolJXC^#O1$T6M+%+TuBnyyQ0)F!-RX&+Bru!u1P_%qP_b1%hzCIw z9T&`UhXX1q?2FvWlx(nkSv*O@Le)O?XDaBYc}dYRI=7~S+v71=f!^CaLj3rlI>Y-h z-s~qJBj9{s$ci#fjT38RjSL^20188aVieRK5iN}vXqlT(ARDgFQ=qrz1ztblB7zI- zhB5FI#$)`o8x=`==c`fD3nKq0keT0`MNod*pB`i8jAg$#WSxiPSN$*!R3c>=%=8%> zc5Y`P+MV`D2V)n8tfBbkxV4}3MQd*m_GHo%N`){%&hT2a_- zrN?SNi9cwrzu(G2CDziQcNpx6taUi?^Hwhk;YTffQY>9BMYGqGm;P@P_~-q&>ck#S(a8fNeYx*rIYX*kW( zVG#>}=DEAg3nUcUwkC+1fQmeVf(jv!m`*nvhZ`x>0P&D}+Gx#1yf=z@I zBr-`$&xTaTso3zw&ZGT}1{$WULSq-EyoN#pqabx^k}@~&eoX)^SBH(cYMP#PDrJvW zj327gs}1xPDrBGoQ`SasD!5rqG0slS-<#T@;9M}C6}%1OJ$iZL6>*==_od=x|>_do~2+r_21GtVYF?|J<}rgV_)3U8;K#A2sm>!6UY6wd2s zxReotz)s&@x%&k%-I5ZKg^X=xU^k$eR!8`kh|6A$?w(obFDgVqW}&nm4wT$=-C zy~TH-S0be~o$=7}=+YWr$>K(|GKt%E;yxW;93kQ|H{6 z^wY{J`ae=tth9@jPu+84cJ+u-49#amF|jm!=b^quio2%BD3C~}LaI<8CBwhR!=8HP zTy!;BcnNUX3W!4dZzxd6+WZF5tnIN5zvilv(SVrk!*NP7plF(keT$*ntD{ySRsU3_wA z>FxGcbWqJu>e{PlLU0?|O8<)N@-D`Hhc_dG*UXiF+h*e$GRp8tUd4P#YqGq4nd$ok z)GV*;31l!z=5CmUF|wJsCvrOqGnHHYAeF1&rT5QmQes}xTpA@EF!Qn$*&tH6ty!3U zUee+Es$`_@h$N$X(q_xdHC@w2Zp6&mx2}EtvQ=iaf4OCw4S(=m3V%+sl;~=FUq_|D z_EUCloD;gtVRIH;a7$!?_$EprIMO+}OvsDDn#%gcZk zSf0_*2rJjw@U=yvW8QO;(;6)~rLe%QLAZs?tDn+!r={5Of|#RTG!TE^!_;~4m-0_K zm+$`pGqgAkTbOYcGoOpZJu;dR(YT~Yyc~RWAc?t7{yn>dz?EB)e?|+He`qFioZ7wa+ zY%%wx4`S(qygR|jqJ!vfI6BO>Y|<%OM4rtQNbXqp{-0^+9>@YL6tfyuyWMUqk=5d$ zk7c>*`#|6zqI%8uX|v0bitpol9_D=$Tsw90wXi!-!Y2nM(C5x&z&zI3ZC=js{>;ex8ca267P3Ga)w;xbyPZUPQRy`MM{RBJZ64QD83cT1#$|Q%n=U3xlqu33WXWX Ou$kjJro(D%+4>JcvB3@i diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review.cpython-310.pyc deleted file mode 100644 index 15c0d5aa9b67e66c4d5c4e599b618a84f2e24d41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7132 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_spec.cpython-310.pyc deleted file mode 100644 index 1eecd6d208f0370a4c8025f45b22c65f76e74710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4811 zcmeHL&2JmW72h2$$>mD&N8;F$Q?!c&2+AfRtrRU*}haoSLVPE8WJ(MC7u@b9mt+#(}Fi%hz zXzMd1lj-L(wzNpLgD;^ur_*%HrFVt=tMes(#nc2MK+V-@j$h-~ zkDTrTe~G`0?;^j!U%_{Y-{iOOy~3CI3cgo)9b5NmdHs{MjbcaS55-<8o;(_eWb{Sn zqmB31!;S4!g-I4G6(SK2brGK1IMU{9<61_84@K{}iZc!0E3jue6g<^tckERCI3LDY zwr>X;HL_IcUn?y?Eh~^sRyN`xPeq;xRaP}2msMz0)*w0wk$U=2n&EvHulgm#7*rlQ zvaX#&=b$pKjGYK%hs0h$q88E{qipEP+hfXA$EZW@^)W-P#@$CS6X=bNTIci@u7+{g zFSy7+`(B!ZLuo$cT&G!=1g2chiX_gWy;!O!InA0fh~_J+MP_N(wUi8~pXRYHL!HGYA$|8QrdR|*ZXF4`<(V#)2@k&ZqtX-^wJ)FMO!>}9y`##8`q)D2SO`D zotfgSrGu{L$G^x&kk`6DrITTKNPL_63wWzsr@a(j1k=Qprc$V4C=(GXA>m)()`UVc z?DiA*D+9;uT{!Cv<58{IJgf1OSc=fLfmLnO90_f&!U$PLPAl#0&nL7kpTsajOp}ub z?ZHa|4*4#C&BYY(Tn}KLCi|u3w89U2Fg2L)#Bf3aFm=ao8OYN*3jzF%hZ)veJX<;O zqjN_ef=^Ztt;_VgE`=V-ocxJ61;GsUA{#|}M9;d^`vb9VR%9H4aUxW6;z}RXz=uve zV*yqyQkJ{}9dTcg`PCYuSI<*px_FgPo9RPodJXqzWaAMg_8+^bdh~7hXHO-bIPoXid-5NO4rp0KqOBq?Btj z%@`dS<0O~}cr@^svy7w5-lx;tzsHr-7PTP4qMC zqVvCkmv~}g3XLd$yO_H%#_EnyF{YS+b;`OfBIF#$yPu!YWa;0{ z;{GO&?@1b%JpD~)^yWnrG-I~zn#fJvLt@g8hQ1u?8>qEVR}kg{?sdSftQhbs26zv* zCj;H;%*v;<5f2;Bp0Z`*;=Y_M&_98_#VnAUsY#FB@ntsgEj`CYP3o zSfT$Xgi8%wKw>!Ln*bX;uvr%Nl|l1O%mLhH#^@ zx)*0daTXaVqLSU}+(0zl?2ejRvMCb=40{C80E*l6WaZJ$#sMe~N)ofm5W;dhz`9{Z>BT6bnI<*$D8hdc*j3t(?h+YSx;fM$B8yx?S?N#Q&9#(d`1zQz|asIsdt)gW-$g8ljn{<81+ z-eTQsY}1!NrLmh3B||jvJtVq6m|qcF_KJwVYfk+YV(+{)%Na|M3&6n@TLs-C-=_$# O$Na!|eYVJMRQ>~smi$Wq diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_review_status.cpython-310.pyc deleted file mode 100644 index 83cb2676db761e82a61acdc4f568f1cd21749124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6935 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_toleration.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_toleration.cpython-310.pyc deleted file mode 100644 index 82f79b51c634916478f435f90a3b4bce583ddcfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7945 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_label_requirement.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_label_requirement.cpython-310.pyc deleted file mode 100644 index f8a78b05c34c52e3ebf48f28ca52044c26e711ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4837 zcmc&&&2Qtz6(@(3L~*5EZ?bXLZP5}NU{PgbX`P})W4POF6K4^$&<0*32em0pX~q_9 zisTMQMy$%0+J~U%p+Ij%59_1YTo8bl%6Et$=W&V{ntR$n2Q<$vR9wt&WAK71@JQr(_zB z3~uw%p}|X{d|-7doINob<zVLR1%xLRm(^KfuRu4b<*yBlWI1sT~_N0hJkcq{m=DY9dGfz&T zkG4EJ$z=PJ9h*w@`tFy|oY8KWdHsVV-VC>f5DMG%X!!JHq4PfO?2jPAfQk)LZ^x<{ zoNowr+f`nh^(ws1uj?6CxR|*y?eRH& z^U&yAO1Ac%Kp8!i$X^9r z5v_@*!%zxR)94TF$Lp)h-g-aGyj~P!nTJL&REc-alBC|5C7W8MYhv?-n$$0Tn81k2 z6FgMfT*X#{ARY!$v{x|8txU;LH3~EJYqUOVu-w`adwF>`h=wAQC1_ZdLE1fX@aaWu zhWi8D*-t>maO&sj80&kFT z5yAgA!x+vK##85OH!6}&lHZP!UJ&`afz15gY4^!(pCqbaibR6tLITksi~|_wM8bxh z+nIWdiSIPi zz1;ErFb|T(jP!P6EnwPOymO>3>Oi&V?1*uV&AhL}6D{{kfb#(U%I)TJJdVP9P zn{KW4J7|#Fw@q0a14Y19O)<_6%-@?DK|m8sVvYXs}?{sZD8Mxcf7$cQ##spg}2d8VzJS%HGK2=0%m@OTuC7yh`Fj`y6jTa$m_(+41NI^%^;)Co4pFuJdC|S z%0MF!K8nawC?jink7HzL5~|R~AW*%&25f;cq!%csfS2G+Z#BR)0+8IJaH_ST6Vc-} zn!TU`Ab)udasRVa#F4Hk=w@l?H1w)uiyJe8XwzumQFwYn;}il%jVr*eIPj&&lQ+Sr zVFmBObTepudm&HI_5U_jfy_dJ0-WDonlqkI7z`#W@Oj>1?NRdrlotE`H=s%s)rNeX z2w8jzM>6u+h)ZL?rSV%J&jFFZOS8Hz`4bwUv2QBl8S0L0c4U5NeD<^7uzj{~DO4z9 zcEI*+WshxDI$-jSDk)SYoE;it`vB1vv6ihEPaRbm+uXt%&9VK=IWlJBw6covhpLK| zcCqrAdt{tmJ*KKh^BGgrE{*Q4>7-TU(xR+EDW3|dDBA`2_juS-&&fq8*}_fkp3Q?O zWC(6z@9G%R9bsZjX_~e3ib{N1f6VeqKga^5q15vD;sg*qWi# zEfO4J*eIw5XC#penEM^>jLcs%=l^Y+jccfG!_V_7-j}o{%j=Ub51+g@%PU(#k%DqJ z%)&TRLEIC$O+KAlgCLb}f|uSuw@IaWNpoqGbf(D5Qe?wO<+f&F`guuv`Pq|^@*_GK z<#n6gVy@|$HtIEI*1mD=>yuuY)&Av{Z8m!Q>gqqIXR6D!?^6;g{Qem`GLFde%u(~S z=S`A_6e+|&8qisB`emoxvSH=rG)0P0c_l@zMM5czaX~Q7%kT)WJS0KMkFK*TMdV`D zIXQ@fmV+`gJlr4;hXl7jqLi=CwBZFYN4w~tM7xJqFUk{CFO!tM{{`OAhjZ8!E97F` zxr9Mb)W`ci8i1my0L83AWf=|&g^x|5JM=ZrP61vbH;0>EH&J~r>29OO2im3ZP~Qj9 zN5_`*z)uo)t?1*TB*{y7U&u3lm6v^AJoSD02G(_n%WQM*YFaN=zO-1D7VGVqH(e%{ z{`w@*)+K$a$R?5JODmEh7QX*ynpy(6lGhY#8dkgAZp@K=<6r$QKqL*4sC-X(G( zjBe?&gv>{n&q!RyuuWEG4l~Q&;0fxMSRMFxU32<$>dtM)cI;Y3o4(;l`l6N%keo>& zzlTQW2PYqn&7z{k4>_lPBq=_E%Y|1JE_A`+5bz5HJ)nS^(Rpp=xQ^+t8oOov2c#kl A82|tP diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_term.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_selector_term.cpython-310.pyc deleted file mode 100644 index 0141ef7f23d7ad82228b85d215f203f192e99c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3853 zcmcIn%X8bt83z_12||=?x3(%DnxILOG1C!gHPfcmxNh9U@pRf@I+i8}wjKn;E=9;7 z0Pij}7E7I^Q%~)+C+nzx3D=%-?o1DzY2DwqAZ5i8(@dJKv`_5gd;Go!^VL<~Liwxx zc=(rVmi0H9Tr4goAEK&zXt>q4xXoE=_ifX&J~O@3chEbjJFfL>w)M#3F0Y+fye8_$ zPQSs~j@7PD|KSHHznKh#%!C%oH}hT|aG_$E6gtVXppf}N!UYfR?1@asNMkrS3_dMH z78ObGs9MZrFw(kE+uiP7qDPZKC(g&+yxOGmJXMRy=KPvmwu9j9Aj_Xc+rh)1+})~P z-yMnIKuAST=fgl_N>4rb-LC_l$CI(h^mZUcDk3E|w>m%mxuJPZg&}SGoRazTuU_nE z5s&;YAUUhow#(Iz@@$ywO~4eMi)r~{aWMH1Rb^;|1rb{$-oDecIO9%Y_g(ZZ`WnB* z>%4Jd_v@m;J>ERAj_tlDy!|Hk7c;)XTPIfE=c{}T{R+RvucL4A8~i)ySNV7OP4sKL z2IZ`m>z{4y=0%?7dxtw>cNQ}5H=hugvKC{aP2MoI-3L=&9{m-ItIJJ(Og z2-ybX*3XND4rKmC{mo7-boXs ze}9>S-_p*<;@KpTf>imWf6H89)*rsQpcj+y7lpF-hq`ssBHTFWs*p!!DbKztolaFk>V-1XWuNw1e1 zX&y&uco0by#ut%OZiGt&0j(xvO5-Gppg>91+jdGE`X(Fdz(ehRrf$-2i-Iobc;hh%Cq-7TX(xE(PFcR;-}G`P~E5J z2HlO*1XAuA)^Kzy)N@FMpuk`%)Zo8U9F|@fCRw7x@JAp;T}R`wx{W`y9`kMY<@C*~ zrPo=UjBT7+6dF@CN~>cqv-T}0!Hzz_@*|;@!POGMRkjagFM0AR*FnzgK|sher{|mo z3r^uR&T*&6g&EkY&a$hvrO*?Zk*SH`+aZ%Eq_QpbVIj5+tzXAVj78GHGh31<(KXN+ z)KpEAri88!P!++o-kf%p2yY29F&$eJ8dEjuqmX25X>Lc+FQLMn|51gNzbCG~O{Eo) zjK<5<^?%XjH&kU$u0X17R%wz{ca=JSg>|D&-~W=c+Y?kpDsS2AFI~I6QaUPmUN*5`(iv5* z&hwp+5UI+>p3o$e(oa;9DII08C|z=or8ABSiR`j^zjR5AWzF1zU`MW{tRt3BQeC>{ z3Og)o2T?i^uTw?>@1d%<(75a-0tG?^!UnTj|MuOr`K-=b|MKfDo4)bYBEKYCvI~Q8 z5>JKi7wptJC4|}2&P9YNEfFN)GzitkDZrjCzKi5DYyf@7NHkZZ+wDm`Ex_Z=RuTljH^l8mTwa! zSCND8Oq_+`{(>NneMLa7_FnSnWLk!#H!y%{*&3#$8k8M@KnQkbQ~Q*DAFvAsEGHsJ zhQT1$qaYvbBXfZDN)aHUM(HPKj@%%+>2@Q~v&yTLHS8Dil4QeBJPSk0s{c-a_L*y6 zUoPEh_cvz6F|53Ij+AArm~5BW*_H1QA7so|P@ah}oY1E>nx%*Uci0Cn)oWj)%qok< zn3sMS0*I58#;q`<*XCauVThkM&@uVE{wf(=GMH$A#IleSeoJreI}c5mFY5~VA!JJi zSfS>JG`d60d(;r08PoHkT)^tzxgW3>{Ll6e(+uRF;!*E^$IH$Fs>j7Zn=`jeR6?{aPKnD_mFV5 H*iGj@*;oSb diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_spread_constraint.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_topology_spread_constraint.cpython-310.pyc deleted file mode 100644 index d44c6efb4ee4da9bb443506ed758160bd24076f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20286 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 A*Z=?k diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_local_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_local_object_reference.cpython-310.pyc deleted file mode 100644 index 5f9e2842d160d4538575bc09485e3f0d8a34c115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5663 zcmds5&2JmW72jPh$>mCv<-}2>d~WSFC<}?Sni@z1*KLqEhLeIWY{3Vj#cH)PlvW~l z>Di$W5!9iTP_#u4y%i{WkboYlT>Ag)wdf(Y0tR|0khH%yLsH)#v3x3}ot>GTkN5F= zZ{C}vTy_oo{%k&O{%*=J{y~kyKO2po;z{qKU`E4WCbL>*!&GmpVX1enk;6OJvfKGa z-ZUN<%x3u=gXMW)JJ%>O>xoe*^#1L7_<((6OZvU6j4V;N$hn*vJo-P zyzj5@n2SK7y1eN<>hL(|MBW44nFw!H%1*jatF1(GwYyvmlXfl9gJhDl(qUt6uuLK< zo_EWOlV`z#cmK}qdAJL9u zG!Ljyq%Djn8Ek*BV^#8S)%^;RGwKyHD}S8C&1j_yrm$T|-G_f8QGbbEZa~BaiMNp} z8O&0DxxeHZHi?!M7}fLaZRW7jj@c;iB6Hc;jdP1(!2?9He1 zi<=$JewKtm>(TNW59MRtcz5LDn%uim4GCFMI_x$X0Jyv%j`I4^M-@& z2h=MH(10kSsE7GODx$iD=VLtSXDIqMGrJfmjcsGg?%RFChhd>!B zrg*zgtwP^IS?uRfI?RL=t=W7E1mbv}`%Xwe%oc9&eWfqa~wWBzYi4er%0sEDFW~aQ>Jk~87jM_Iu8L$8RsQ{gS3W4v1Pn6*GX7f+u-p=tracTI-7DeiQliz->#*RK%KGWlRF;ebk*qiP4dC$P#o(Y%BI4oy6#&3a&^}Q8%S6ISAk@WmD5qj+ z94LoIj_Mc~$bF}zPS-ut;Kd{@WcL0wvUBpBS2A&BeFO6*(rK|X4f|3C^`ayZ-spFl zEmcfG02i-NaZGsR1fNp>t0;Qs`Z*%)OcQ#36Z6TNuEAo};b@3)i9l!D{I#h}3&$r+ zE7$wy$gVEU>w!tV9D!>9)Aky>mnP(x3bn`~^iyEln|&B>1g(g9D7#$w{UzFHX;%Ad za_jKfOZ6n?OBGw4!r7EQE&UWhGfsX?SJ7qWKBYzO3xPwObUCyK722Gl(g0)B0XJE4 zOxOArHbG&;m29F;3k+;xxY*TfVz>%Uu5Wb`kJNL@`2w35gN#nK2?`Yx`gpNT5NT)H zgt&o4jv)ThoE#v&{!+xL5l`D|#9x|_t0JB@IuG&UH4-!hc}gEcT$2ipyDIAIQUB{G zjv$&&1+oNnmj4lz$k;Nav5VMz&Dt|RF@E{uUszk#R!$;9?_1l}mMszA%lx(_ZpyqY zP};kL_vj4}A(> zt$J3JiBI$Qt*p2jq=A$|Ok)}nRr8BulFXdDt)RWkf_o$@b!<)GF9^R5268isjTyy46SoP93A_Fk@v9aTsy3tPw~<-2kFg-$ z!nZ%+NlEYH=G1>}voeN^F!~}ZVZ5L@X;vO2@hay?v*HSuB$>>O(kM=4fQ&Y?TTv>r zTs!E9H?Wr4KeI`eSzfJD$*b5SE5M6&TQalN5~iQ!m1jRr8A<)OL>ZlkwspgDP1m%M zzgXt@H?BP~XcesSuib)e^=@54?k5CHw+jmG6b@^o?^=7t9%0SwRS#ngQMFDmI-nn! zm^x6jhvzy8MGjr)bTCS0#SZe5b|AGDP6-&Y0-%5;cd@TR&V<#wc>xC)eu9Bf=uOEd zz-$nhLHaZ$D@%%)B_u5jb=`o&u43qE4x2JY!8^kD|2m|~u`bFE^@J0?o6JoK_8nA! zTvNi_(jvt!pb{ePn^dmT9hh~u$MSSi3yVe?hHNTmeY&3$w}^OJU5R#I z$Fo^pC=x;oDUE^xMJ7wt6V2t(wX7=xaIKSC%Y}GkNZAtI`~rbeO%{3>EFTX zjWXF|wA_{4CnLUwzRVf;)=iZvW`z_t8C)D(g=l;$K+!FOc%O+q4RnW5J*cUt2}}b_>=d%-nTNYi#f?>$g*OrXAa{$BRn+6-RtX`^=)qEWyRQ ys5IU^xG<^e5D-_Ohprd(jZi@&OT*|CLgCo8#O{&*Oeu4=Eys0mWioEv$o&t?iPUuf diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_typed_object_reference.cpython-310.pyc deleted file mode 100644 index 26a318d8e2f720e2dd7ec47a99154694e5da26d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6999 zcmeHM&2QVt6(=c5qG&na>rFPBgqs%Is7R!^=@z?g8f>unK(K&P#6b>f3!3JPY$g<` z3`fpdRZw7^Q-K0K7DW#+&`W^cdfh`0JrwAFz#a<}*z*EC6m7S^H+A6fl%vjcHrT*V-2iK>)RW2efd19-2Gjv)yX)N9;3A=^-c4W=B-Z9G^qW(Y#h>$Jkq{rOK;lSs2yW+wAxgtu@b1uy^o0 zz)rGv@jS>*vD0`SVrQ6x=V4|+?Pt@4dy98ByPVx#z0ZAlhqt-lkZ+pSLXZxJeyE30e|mDl8ODpX#HF-VNNJ;7(Ri z42n$ep}W+!w8zCkaiF=dAe2xrN>~p{Q`r>X6Z zrBZa2Sc)4+VCGpsM%)P^PsTzJm?uP3E2U<_!}hc`Q9=J_nmCBZKYrR+k2}1v z)(dWdc}Ng(+JsOf>X#*@Z_ z+|e}rFn}R9ln^j<(Uk;9H&%#r#R!u1?q+JaZV(01br-=(avFtYlyv-MCEkX0-O_E{ z{JMW;y433dz?H7HN_KF8;qTqX*mxxh1@1iP3q$uyTnP8J5E zP)a66K22fTX~S(&P4Fb{37^-Ye{g~ z6A?KL?(A1cM2M~>aM9&U4oqJ;3i|d;7qlPZaR3hm$E-L+RRZ-j++UH!lq&sMTFE){ zspIIPce<7CX%=PLL*w-Z(Esu)>p$DXi1YtdjRP!RXRPZtr26MI-xNoolA4hzUb!!F zMibhR2urj`&K=R2yo#kZpW!f`}ShJBF*!Gqvv#k?TTWrzYi%U{Cs*bb9oyjazM3hbq|h zj8}j@#R>a`ev`%yp+BPYde9$H!9KLtEj3rll-&Z*uad;3L7yT+NsTXrJ~1>C`rg1Sh*g=jr^c>Q+SbdvRIeQX%uCRLbhS}CwI((GZ+p>@uQ51eD-f8PW%Xm za);V|pLeqpRUSXqon=mpb7x}m(NS7?ALY9kmtGJib?4mGu)FTnvST2k%#e*3%p%uM zM4TkektXiNAYL3HeNm2$?OH}@X< z*}|s86#_}W+pEZ)-b8BPBBIKcJYf*nj_yIxuFgB+G#y!Pwu6hl?3n$bH zPAKl%NX9Du&E}W1R7FszH_CQ^brWfn&II@3J+%EEcS0(!>I+|+dTkDQv*5F|g8qWW zBaE6#wHnm;v3jA>C(sTI{BEG=P& z?1eHl6$#xu73w}X*sDV7LrFfCoew30F%;=mvTJJ6|oK))Fn zI}BLh)DyIwRb-Ne!3?YyJ3n$pUU=hKL7W3ULDZE%pJgZcw5T#q6PQU$uFD^~?jO-x zooj5v)DO*;Zq|F>ODU+Od^<c zg}aGJt2oOvd~E95v6I)s>pWm`xNSB+zZ{{R|-W7q%y diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_uncounted_terminated_pods.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_uncounted_terminated_pods.cpython-310.pyc deleted file mode 100644 index 515d3aaf4e3967c0aeb6536974503397bac09771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4402 zcmcIo&2QYs73U1OTrTxtJ8@hoMH|Kjf@~7)S_x9L3&%(hCq`Oe6WB@*+a?UfnblI} zlIxkF5G|-4Dxrs)@@@mBPdo&p5Op+J+oH?tqI>{T4M<%(~7468T=jI166h;Tac^ zg6j5u@ZpGO(I^RSo6cMW1Eof?({Ar1YEW#q;(XZ7%_NoQshl=8Cfnqq83fmYEWaOh zg7@CMzG+V18t`C`3yDYP{Xjtzk9y~$4+56Q#gJ#J69}I2Nb-%%*6Y90JWsgLtaWCb zOpc$Q*it+m_+NtNtZtK3EAQr6KiMfjC^#<0?$eJAjkn>Ie+I%WP_c#T?b!{BQTW+^ zr#%N1t7|p3&g#rNB0ZPaS%djU)*a)mv|u0XlUe!|wEyue&A-SgG@Z#O^A;=IVf99vurlMD^>QO@M}i|&V8 z?{$K$K_Y`Vjid~q5)~>B9x)(lb!Nbp*5n=D|3L-niMMjFoeDThl(v#NY8Yijl&1S; zvvDI$r23sy;*%z=+DfH6Yy>tJ4ST6yA5?mA?j30-Os=)RlE; z9oVH^S|I=)DA)rii~@B^=qreLzQk6ogfVDcD=D;GM(%>EfbQt{7YlV4Yy?p-%o$I? z1^P(_cuKM<{<_V&K&Gm-G>@Y++>3+^fuC0Kb*-3CQQ(qw25*t7rE(Fj^t^7 z-XmPt{=^a(0sj4m_8=ef_D+$+B9FOJN&DU}WgE5vx65`mMqumq9?$mLX|mlO?W;ka zz0umd-j<2t8>1+`7wvG_zBlvkcAO^QJ#8%?EZq!?DS|>ZgHVY3wnqDv7luies4(0B zZsZjp9(4))G{w3{eByjJzPeDIt?3pqf#uT&>-eH^zeb5mYu5t9knz86b0syHj2cY< z0Q4?C;c+1ZgW6<+L7p-heEh*JiF-{t(Mwv37Ip+zg~-r<_;i7eLqCQM7B^%Gn}~mm?_VR{+{XAE1sIuPoH%{3j;~fQVoCeM6#f6W z`=ga?A~Ul6^lBYNA{tKC|BsZrNVi?F3PLxjQLPR!sD(57y$xMjzrMc^o?-U9uLEF-v8tXov-=-fYd|9U6^T4>rq1#gZ5qQzX)V}ZLx>WI9!NP0eKF_ z<*#PQoUM5REziL@U-fi)H4vTcVo*A3J^?FdVhTD8KAputeO60ufQlMD8wjxPQ|x~R z$U`v25e%OCiu?;y66=5{>j7MSyY!gcvOan1_w;}s*a|Mok{;3nM>(aVYKK%@RW$_{ zBBMuE=^WBS0s(^FuoUH0QT%lenKaoi$Rg}fNa_~B; z>|rz#c&+R6D+e`M)$}gSnnq;h3NDLORgT_*gjH=XN(+9LGgQbfa&{GnLoZVw69Y&U zC|Um2cUC7YmoERucO5!@@dvg3h{ zu6_;`z${VVX0nc1GVloMEeX z1!Ns}*J?d67jadC`COaM9LDN%5TdcH?Ix=b(I-vh(< BZuS5G diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_user_info.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_user_info.cpython-310.pyc deleted file mode 100644 index 0872a628c085e987e5a50e5c0c1fbad321528162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5814 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 kQyP#jr6GwFVpArKg&@~ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validating_webhook_configuration_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validating_webhook_configuration_list.cpython-310.pyc deleted file mode 100644 index 60882882a5030a8d5e7740eff309a0b9e82f2ae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7394 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 gNUvro)OOi4j)#Hq)$ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validation_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_validation_rule.cpython-310.pyc deleted file mode 100644 index abb97bc3a369e3d1e475fd811a7c6936dfc62713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22272 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment.cpython-310.pyc deleted file mode 100644 index a8b48106c41ea01deca22b10b552d47de85c486c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7337 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 PV{RH)AHms*aXR;J853n; diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_source.cpython-310.pyc deleted file mode 100644 index ee4bda11f2a2b1db2e1bd5e4d691546ddc6ba817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4616 zcmcIo&2JmW72lm*lFOB3%eErRZqaNKAT5)Mw9*7<1=om?#6}x{NiD+%BE@F4GZNQc z?$WbEH6kdWfOIH|0`0lz!8+;>Dp2gTr<@D)P@qYFZ$>0#O0?^KtTeOpwQt_X@4b1$ zd}+zI@chw!u(N#4vi?e)vyY3;hbYBuRNU%V+~zE`JGOqa4%2U^A zr_pBc$p^PK%Ph@H{kRlaPA=WpV@BKvce9DDp zZF9oO>Gsndn@Yr8|7&Q@YB%h1>7zW`Np=Si3fsjreD-nB`4FY}9V%f##TKczJ#_%gq8 zWOWw!RelZcMZUsc!+VLZ^6PkC;%oc{-j{g|ru$C0_Gsf#obSe-$QQAmmt6r21 zqBPw%#5${wHa;g?77F|sez*D}E}cTj1}m>7S(;=b+|!bT1x>B?Cm)Q*v#2LJ%VzDA zNM~ib(u}sTt{szuj2~(oMx7ILf+a-vPk7pRzO=;Q8nDsEkwFA9g#H*pICAMuYVl0 zx_M8ub_Yo;^H?aAw4VI9Xn_>mI@?|E=e%g`iEOWxCflw4zUt=LkD42|T1BG7dOwPv zM7yGBJ()z0R-7g0#r;>8~Q%8;3WVM=cr5ph`dr6}N;2K*FF$0zG_ zePCj6fMdeAYjYOx8k8EBXYf8HFn0DS`B(6!DQ#mF91jzjfb2S{e0idGZ2=8$^6y`u z7KRZ-;kftygs)7fJR~+*vfi_WCyNtN3N+w99a$sykR93xRP46()Kj&Q%N?v}j@)P7F$FL) zPG8nBepl7;rE9)?<{w*UzaAkeFzZKj_*aH+KhSPqe9D~l$dsX3l?dcp_z!pztLNmR zbIC#3LeWQ_!s*0q>|Gy0x?@a?=&WMxvZnHozCU4Qts52aNhxt1Km;l6uV!>vdbiW4 zx6PwFeIiU@des`fH`f!~Evc-S;RhJFt=MSe!Kc`(vQ8mu# zd@vY)#*VFHLYX~mo<$j=A`-J{JlD6DaVXaiY&d1L-^VId*7`fS>_y6$;DX>;R>2ZT z{u=vg%v@r_*I$GgtUbs5I3*}32LXmH!Z7$=yN3(mmzt9=gDB%@n@+=)4J^GVno~+h zXH^&;jal;83)4Td`dknv7t<>J9vT3wt>9usjk0#I2<47!s-Ms$n4NKCIY0up6Kv@${syac8tOCGUVf2= z&HDdX7)J~9&IB*>gwdBa66m3Pmn8WiRnO-%#5-(eVw(_DG*TgRE-5zOtbY7k`LashJ)+D1WlC_EOF P&bZ9;J=%5{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_attachment_spec.cpython-310.pyc deleted file mode 100644 index bb3c8ef1f433375efa24191b8d56d2f9b25a014e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5495 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_device.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_device.cpython-310.pyc deleted file mode 100644 index e415fe0f9455cbd0b75ca7c8ab66aeca5b1f1fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4467 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 V6wrP0bBboT%=10lV@qt+`4=mFV2l6& diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_mount.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_mount.cpython-310.pyc deleted file mode 100644 index ffce437d3ef02d89afacce908135691926ee5d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8459 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_affinity.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_affinity.cpython-310.pyc deleted file mode 100644 index a7848a18ac5ec747692951cbd81aa198adfd9633..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3448 zcmb_f&2Qtz6(@(3L~$kWZsRO=(JwYhgD8ciI7PpV?IMeOEP@tFu{QRgCSYjJ$l@+V za%YA{EXXJO)Kkwrt&i@l{|>J` zo;afxXS-IfIs2y{ApNe~7cvuCDBtvldBBB=Wm4!Q&w@hchY1%vc_ruI?q$J>})N>1zo*Z=ELsl6IVF6-`;2k+_i!<&d_Q*xeP&fD{ zZ}8@+J!*;;Z*lL`I?(;>)Kr_(nu zJr?6{MaNA1AjiSzK=4GHBdE8UMp+r9=}|4L@}ziPCQ|Ux#*=N*au>%E>s$_Ff^M0p z&5++mR=-3s2Z*I5TiQCYj@g{etq|-*iE)(99KF((_vX}dxxEXH0}?jdz6z3HD~N(A zc27ZDpac#i*^)EEUPIE})!j6Yqcl8>qzdEpQ?J_L%8V{gi1*VZi(rK$SL->It3*0B z9ofLhxg|YR|2i5>@~Idclu0b}SZJLLp8Z-4AOLQW9c&djSA#>59S+iDe^4ChNuK?@ zzx~cYC0cA1QT!}A5Nhyj<$Z%VO~CGfu?0)F!$WiaVFu&EXu*Jfaa4I>NNfnhpFt6I z3x&s;Hhw5Q=G*Se*$=ORs=r(p+gP(q)TV6Cr-{bgdTIf0d-k_SLMwCrONeTh1m&(2 zf6<=}l_e5+K_We%)jn_H=z7F))|9}NJi5YDE|+Lz7e6JyaDZd ztOke>xeBF+7&j>S?XPi#9Do2eF#H*f#5%UM^#Y#yl%3fhSfBm&Q+CXb9qr8F=O^sg z)$ZKYjT0tc(+%CE+v(JryC>|#288Us_1x2~xyv2Q=+E63-Wfq#kJHLF#vkf7RwCHa z$`}5bwZ3}pF6YlFN;GC~J~m{liCYH-++l@~IuVGK_zQRv>#x~G{CALdk<}d(8eYI{ z?A@Njx-)#3lTWZ=)zW!L>(5!$nnWtnT1s5h@R!Q|;sTbHcR!7$`#gHEM}mn!cdS|e zO6OUK?cX<%N`l;WvR(bNdB5v(AWJ_N>3oE~O8e$Xb2*K44Sxs1FW6Nz!2yWm_++@U!DipTPIb(? zr1>g9(FFzGTEtuEeD@%v@N4xIyZ23Crag{Q-WXP^CoGjJx*fkMzIrCD) zB$qN!{s;}Yl&#@Xszuj1)B~tON0fea z?#R2OHAy#Mp4ZW=YGA&QmrxBu@jMJu%>D;a*=MeO>pEoXx&N~vjxprz6-TZ!#5}IZ zm_7MZvVxrW3cWKChKfG*P+Y@>Fr-g*_oeT$4*a$4+n(>;^)TFNnZxXPvQMIZf}&zl$W1gxKmO{8)UTgN n_}^mf-CjTNnl(>qQe2@BLUE190}6bK81FLdj|WqSZ94x2XntyR diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_resources.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_node_resources.cpython-310.pyc deleted file mode 100644 index b4d77b5dacbeda30d28f335372eed0689ec5a9b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4242 zcmeHK&2JmW72hwCs}&_XiS1fwn=aBcDbt9IQnYCW*NE#RMo@qWEW-z)$$Gdm6jxsE zu4ZOci=a-@si&TMvX1(f_S#d<1$rpZy1zF|O0p&O^U_0BnorKWc^|*`=1sn`5?J{D zXg?f%eciJDM1%96hr!1v>JBPy4J>YRC$$H*X`O*%T6f^0byIKB7&L6_fyF)EII?&{ zG!NZDi#uCZr#byg5aRnyITSJzTByK``+3NPie*yhB+tS^=6eYjJpA#t$b@7X-Qj-t zMIka)B;kX4GMC|4>q2ezdfSN}m&0zHPkMR1NauN~7K8OUnOt_l@P}cR@3PJC)1Q5? zQJ?;3EW$k@6&;={hrcvD&$%$HZJu&6KmP2* zt`_k)_y(G@`W?Gkxu0jFWV?h=I4-8?^Ph{s$0#a8B`m1eBJ~d3C5t=UP3(b()FePdCFy<3xpV%9IMxVWrN)3+5r6otmd> z^z=}S{-t`%!cTHoMu&nY+Ss5zYQnOTrRjc6tZKx0nd!<+GTo0!TZ@nS4$6HL^>b7+ z=&iJ5OIwH5firVvRs_JJ#yo0whEZwDwHb{(Zf^nB(1J7l@KP;=>mds#&`S!aj*<*^ zPqGD0`kjWP!>ikA98ZQ*;xqxAdqxm!-H7&#!J`b4MRH;CZn0naQIuqfj-sD{6NR{7`A*Zu zA8OwTZ12VN%}X`aU2KePY+8KOr(*0wGR~|W3;MR%J!tNM(5f~%DXI2Cfb4Smm-#S7 z6{BESg(opWMon+Ro+XoV5@zKDA%_T;S+ZNg;f>rX1iqjn6JN;j?{C5BWrA=3c9;%h zmW4wRmI_M{9vC3XMK`=R-(N2Rr^8&2L#8#0$5_cS4y-_u^Sj7vfC+`jCNU59IU^j4 z_YL^e|o+eGa||+dA1!+%2X!>b`m~_ZIaB; ztGWN2f*iORB_aikl{s1!B2F;F->2pCJ!MhklB77(-$HSQtl7&2(I~SaBu3QkUS*$6 zDRe0_iX>ugEE8_A`QI`$*_ggfsrL)92}^4eIB4#~mMwq^jgQ87PhHW~W*qAybQC#h zb7}hB%g-|aifPT_qdpabS|Vkl#XM55kMPshe}dflz9D|U#p?e#RtqNCq&Cz44%mx$ z?aMaM)NyLK(k*ZqW`B)&gV`W>DVR1ePchWM@(<`F)`6|9=eWvtoMZbF>#JY=);Vwv zT7fig^-$J8N+{wK&@Yri!KNk zWeY{!LZxv{a2sbY%^=+|ewfjv;q-R_CLp)Ban~^qlGU|Eb0=sFu9KAe_#r(f!;x zwvGv3_OyE*UrI~lLrBsKaE=7WWY>#i-XuFnvYJJKRk~^wxJf5W*ZN-p@mB<^ng9Vv zj_{K~%c?W|-j%##;RV(SVup26C!lK)biwrP&v1u7F>E|BS;CW=rzag-zDIRxML93{gIZ@c)lcb}=A3h0iCife)%i_6 z+z~MnHKZD$*hO0Y*@-LHh;5>7)Ok`zw5ox8NXQF%jUurdMHyEAna~_Ko_+mF-PVi$ zYe`%q$$O_Txk?iA=pbnxN%CR&E>)C%*A?CR$ljw&L{Ukz@1eR14)rp`r+()eWzZRt zxG1WEC;|wP%c0+nB06mTODl@-#)N^t1FC}+^0#DIY7vo>F4NKeJZkQnET(EIJOiLv z@`)NUKcZfTD$3N)ac*QF_KkUNqGKG@w>;ZvdcOCQ!~F+j5q`D+ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_projection.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_volume_projection.cpython-310.pyc deleted file mode 100644 index a4193fd7c65fa8c9039dbb9610540d4fa2be8fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6460 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 EU*@ob!vFvP diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_webhook_conversion.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_webhook_conversion.cpython-310.pyc deleted file mode 100644 index e82ffc973e807ce88ba8f7d6bf983c269688b426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5452 zcmeHL&5s*N74I&$?RLkWB%5rQBr9lwSk|kIoh(9vAw(N?vr&ZPT_sVFysUb9T;*|R z+TBi7c_w2y2bgdGao~(V${Ztc=Z`@95A>DOo{=~pvG9A;NQPd4o-0E7~<}9|mwrN?HnYPp|p)JMEu-q-% z)*XvGy!_1KWl`BLb*r4+x0;p7KRh4b&&HcVCPEA4nQ^~qhIr@iq|BzoPKA{L<%Yu8)v{m9T< zP+>@0pHosCzc{g_MQ`AJ0m)gNrkyoDNRxiFH3m~Su1C{{zY+%Tqp07Z5*9>kk$AhM zn#CC}ap#Y$3$gNw>6Q5U*MbC9On;GvM$noX#u08Xm;0m^M@oOHwEV2evPRD=1wC^o*(J0EUx5@mk=PB2 zq3YIi&>Ty5bpd(L06xssM|FB+EVGaL4CMn9braPTCNj2URa^Vk)6%pwwE`FsYTPku ztfF?Nm>b*j(v(K!DMMZ1Htv8;t}VEl)9SDJp+8Kyh+#ziD1k;s$xMSg&8j34veh{4 zg>kSGN>%V%=wP-I92LW5T3;rI29L;2hfxyhR7&DdmQgjG%uyolFJ@!~(=RMZzU800 z?Lj&e?X7XtlW9+A9ksWAsMAMk!bA9g*y`<7l%z+S7wH`F`vAwYG}1SQ~}C z?Qlz|_V(Owv~!x8Rd9!MK>l;QBG(EeL;d~Gpy;KK?(mzioTFE zvjMkQIE;Mf#w?!Z7Ey!^UpyI!o>ncR))Wqukl5$%Mse(ql`!Vhk0kIH=*W{%JT_> zQSA4TWe@?qvC`=fS%6B%vM0>Rp+6$GuP8m4u?QJ1!uy;Igv2;bcL6u2FibeI3!zM0 zi;`YE=E4t?y#>T}lJ0{0)SOR*-Z#<$p+E+~<_m?}Taes3?p0>jd(^4SZ|r!edmYtT zpw3NW9$e>+q-jf+H2(Bl?TrB#H$rja6O`PI)F!PH-N;fxm;00}KuV7JkuB>cm|C)~ z8E5}rcPwyr>VI0Aygz;DyPqnd7!Q*DVan&EfhZ%RXDg2EN+~!8pF52BqPf`o)pmBrzncjqBAwu_SlhVM(ea>qWGDmiJwY+5P`5Aq+p(Lc zvXY9PWHrD`+M}{Y@m3B<#Z^|_5}G8Ed69||rNg8rGKV5cRvLyQd2V)o=8z1tvcb|U zo7^g^ATp0*ojC@D9b{!=6~`$fX-7mEg$Re8XCCr@2k!x9*T3|fm10z3^?!L4hfOZO zLf$V4mhwBJ-IVm@n*E#|SO=tA_M~-Kx9|YPvj^z}k|>4Of-$#Q7Go5zS;{J-5ukKd z9U%)DhB}x236V6bKm~yEm&6%q$_krYT0%L%ULu^f7{bZMp|ln$El6Jd2-(kuAz}l$ z2@<`Wq76j#?*a6rs7@~~Vk-!K4G2Sx%a*;ca=@1YIhm88=bPxjoNNtqQdJ7tpbjFP z+Ej1TPfF~N(Mq_%sPAv4df=yWcYY@t{}_!Fh7A1FArpsn0S|}m&r~<5RikF z^yWQT5rTk#nx#&s(>z00mV`r0WL^+J`^GW#>p?(g6)V*sz>i_L+e<*&ZIGEon`12k zvduc?GPiJ*d**$ZRTQ525G(opTyu@eyhFpQRJEvDP;YuBFQf}17orHlwH%vOn9J*PC2PP9P3$ITz4P@`8#OcbMzBw#(}5eCa>UMgP12 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_weighted_pod_affinity_term.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_weighted_pod_affinity_term.cpython-310.pyc deleted file mode 100644 index d61b61dfd23a1aa9b9622de9015126c29d0cb05f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4661 zcmcgw&2JmW72lm*lFKzIOOB&hY0++7AT1M%l$thZ1lNcWJ4R4|ac#i`h!m^U&QM&L z+@)uSN<>g75D7g5J+#-N2kWT+rs#36J>?vrhXPIed$S}Zlad^`L06hLGdnYH-uHXU zq*`?iJby7CwXeNq82_Nj*~iA@1GMxu05@6&H#zH?EmQZb#dL4AEc8~_?iE@E(|BNT zn-`7@UJ%7Yt5xFcu~91y|LJ;oem&S0G8RgtuAVm&kBc;vQC~$#?Db``7jeP8pYDiQ z$UtGZz3+X}7je*!ya)NqM0y>i`sqfau@kAzV7neBy+)F6Qc2QHCzI7Nnncz-@5f%8 zJPS6w`@dLQ&u`!C2yaiwl&((Np2C!_y8G~Bk0;@vCt|hXNzoNSDpuF)KYL%(Jf=dE zwlSq-eEsQ-btS@%`xPW-G;3y7{V<8!(ar!&;kuAspM5M$K0r(V2p|lI*dXz?tg^uw zx48XR)`D1hQI87zP44jWk=ZJW5_kEPBjeC)Il|d3^U8Eq;#Iz&S6ty@B-_;vm|`YK=MZ=he`H~0$rtGoo&eJ@*ivi@5U?R21xhY7#iZbxyX_BVy> z4Zm!DvUz{Q+w4TC7j}a*^)LtqD)HtNNK&0Du&yQfNVH!nK)vx^0^KQ3@JMMbGNlMkncs#?BxLWfBUdqQ=u-rVXHiFUC8oxG`<)iFmKkjkX*8 zebq_gckAnGjWkkXwI75}gB_7Jo=#o95q2ZER73NLqw8Y=1)rzB-rvt0-zQ7+{Z){Y zE&@2LXyR`SU2}NzLW$NVheHzwCl8IOkuJX`Rga8a1G+JXe|sQQs*P(-l6h=^VPAaN zY;@69O95{~3N?^1xrp$-1I&bzo(-w?`(gtmJ$%uCr#IJ3>43o#Q&N!ED$PNKrep*g zXek+1(HXvTF>iBJhjeE0(3qN*=uHerqPwQ7jNlXSl8R!S9hzU5+8^K>khV4a`{Vyb z+HM}cwH*3^40`jD{q6<+GI=+L?|&Tc1>J~yfCJ&Rk*Buigtv9e>kU$+j5-q_p!C`6=G#UQ?d)8uBzcr;C6;VGtPyrZS!*$?vjb^Pcg$Uwz6B*ny=` z4vg3#JFt~KvQ^=b$(yR6Py%pvWQ^=X1Ve;EcH4O7sM5&h7IxG}_H*ahn7*fzWxT(u z$~bA~C!f2=#@W*&Dls&k5e3!4@U2HW*W_6&FD6h>_k~oEKvjl+k4K@Jiv||hd5o4W z11JP=ZsP9p2;3cGVMGa%HM5dRd^&%^vQj5V1Er+IR|DclW_~^+&&;{q4SL%=xFZQM zC5UBX`0m9?W{kUjTbDTL9Sp|j>57XX@jVk%m1;>+Lg>oqtCN4_DedGX4P@o?~~D{S!qWo zl1t`BX%wd_h(nRt-6&O=)eHLa^~wF2O_IzC8cVI9qj^?DL>zQgW@{9tpA~c>nWc;b zvP+avwzb)H=9;c)qb_1*Qpu|=o$^C&<)@P#niXLPK=}pnM^>}I zE{m!8<~j1|peCPkCCu0$GX~)|KGG?fNZIm&m?J%Fy0%a&)v)!v5KmPoG3Wb#zz$85 z!!EBo^X+qyp4?1R^#crGv!;TZr6sC}KqJIEG6_DV?`3wznI&q8sO@bh$f3#ht_V@5 z22yz98NPl#Icf`@Ae1}-MMc~D3OT@>*_y0^w4S>r`Bi~xHn$2cyk(3w*J)F&4--lHW zx-_o%KHWH8DfvFW`l0Rb19huPP8e+ul<>)Ot9X|=<8ZpK%jc|^;-d&6*7=0IGB={P zX;de$M&OhOJ<`=TDT`u3O4}U6Hd&E5%q)I`9?&hYDqOnknyiA}bxo)0+;D8iu9UQ* zYmWRm;r8DmbFC_89$eAA<@{h=3ZbP}joI@N!cP^ki6eClj*Jh6E Lm=3G3>(+k(Bf`p_ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_windows_security_context_options.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_windows_security_context_options.cpython-310.pyc deleted file mode 100644 index 5d9d9c490704343e0530d5d2e6277ab7f59590a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7973 zcmeHM&2JmW72jPhKSW9XitSj=hbJ~_nT17K`9NaTF=E6Y4T{jN<+cFPV7=lD#kI&? zdS)nD0*xNzUfN4fJrq6Iy}6g7KuF<_MDz1`3%}pkw`9L+xdj zy2C`Wz}OiUM)&;{cI~|j%gO9_>VjQkH#Ku&4mGdt<@gD{@W`sn^OO8Fybti# z`5Sm26s%;tQZLEV95A;nVakcY{^36Nf zR@j|-pjfrxE5-2Pw{^ruRDk5tQ-Pw9#cffWC<4>)Y6R(PCU~HYoRg`Ve%SUKjqPNx zIHk0V-8E=X!HtiuHZd-gv7Ru5x^|tcNg)%vN;GQY z>LfwuQ%fGg>t8=F)uW~;t+#_J$xQ2@wDEx|VR*n+xW3eixGHUmaI@41)=I5yU5~Ou-LDb+KdHv?smeM_v>qiBPj z8?$NjSA0nY>#EdUE% z;KluTTaiMyWk`T1*vni!S~&WxNWI+>D-2L)fRW0c+Hw{m#OoklMx~SFFl9-)*YSKo zMw*$~d3TcB#*tm6&U-)lrpG7`*^z;sE|~a#f+6a`9ldE#(X7XL>o)AFU?9IGtf zpc;*8QCS{^C<{)aLBC{W=uBy zT%*TP1)KbfTlCjrf|Q$n`4CT-~6*RJKO7`Wj0 z*Ctu>S7ZNqCjC;Sw!cvsg7>$qug1^NK9C3#;v8pQ3uZ+V^D+mOA@icLIv#lf$wcEi z4FvA((}QQFuWe7?@1I?9+|xqhh=pA=sNoPu+o+GMWU3yu8`vxb!^w>KIP|kc>dCst z-o<{~BD>OP5LrIE74bzl3VWj{)@-9o-QP^MenrMAYBf>S0g47G+4LK2!Or3Q55p#3 z00;kQ3)?m9*Yw8;HF!X?4E7qB$qzaDg-heB3q|$`*x+z5;NP7mZU-9@m`KbILk4HeN!C;{&zGA*aWllp+m@uG6;>0I|@K>p9*(O{lbY8-~pIayPs!I1Nl zFl3O{iLh}B+Sxk<4ECIw%RW*J%HdmmH0~+cz{}Fd1Stn)lz`)4$<$JNJ{~@!nq_$s z%C~pkFizVLAX3@SNI|CpL}w5XhrPuYWuRwBbe`XH;mP^!Mn%Zn3IFJ%0f$d+x1u1_ z$!wyJa}*h)utJet6*a%zAomJ5fld@(FwRE+$HKVPK@-j-YYOdiU;6|^?U1|^)1b&c z^|t|ieY^oJ0M()B48W{r&3$dPZP4+U>j{DM8xal*H|DckORrM`%e=rSM91 z%G1-!63Q^*4f#R`NM*(W9>oNHNtFihE=&TvVR9#eUTP5ZhI>z~fqmfnR_6u+j%<3J zOAu{X012uMmrgB~=Of#o3YO(-P_jK>Bc&U5$*JtuR6YW16h|i4i(G50L*j)@hxgkp3g9s@qiE$+ERT32h zytRbX0YJf=1bI-^BPZAt*jXjM$ow=SPTa=aGaYdE1Qi{MKRM+%t0Ry4KXu}4-B-TW zQofEJ2*TSBhE_7pU26EvHSS;jJq--|vyM;U4s~ZJUNR9&br~PYC}yJl2|wE-d;wv7 z5Puj%^ny)vI1rIJlhRq>1BtzXF@hFo0oPGRD*DlN= zo*g`hXV4yIAet(k?_N@P)&v=j@&0pw7YA5S7Kv4mKc#UDsU6?CrTm zAq%NE(`uoWj*??3|r~3v?M_g1Q?f=;#8)wn(u- z{)y|j^tx*Zx@-2{y9sr73$}b4O~-9l6b>d9J?}4QVJOQv(}a7IP9wV&nV+GJ^aAE* zYnY$P(iH$G#Zq@{N;l}f4=d1HaB_Qa2r zdG=IFEQG@I{!UdNAepQzNrytZOuxbr5-dffJTK0B9`v={pzk@)qnW!kSW-cHcmFG&b&df9@_E~t9skbF=1%0?oI95_ic!eP4{6Q|NMc6{ zc?KVqQ~l_DF}W|nMex8SYjUfUNpvnzurWkq3rLpmGNG)Zh?(o;@;Tg<%sEF>{{u=L B`R@P# diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_audit_annotation.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_audit_annotation.cpython-310.pyc deleted file mode 100644 index 6805f2098bca451fb384b2ebc65cccf77a3682c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7318 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 E0#<-=R{#J2 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_list.cpython-310.pyc deleted file mode 100644 index 3bd5c2fd0a95abe827aaf17f26ba5e2d88a2511d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7220 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 jCmotybKb)VEi diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_cluster_trust_bundle_spec.cpython-310.pyc deleted file mode 100644 index f6e12b4d1dccd685b4dc518f6037c85302746f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7325 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 JYj`J1{{@3qjottN diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_expression_warning.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_expression_warning.cpython-310.pyc deleted file mode 100644 index 77998c2007dc635ab953d3057d8e122b714eeb77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5142 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 B$|?W= diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_list.cpython-310.pyc deleted file mode 100644 index 5e88bcf2461de4ebb1b6a327a129cedc5eb3fa7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6880 zcmeHMOKcm*8QxtkUn|P5`2F12K~M$}Y1v30s%yk>Y{PKF7?$A!n_#u#jKr0fyY%c( zhzJ@eDxZoTdg`I*!Mata_S!=az2($<_t+K%a_J>N4@KMb`)9}%Em4*%w6`oVvoo{v z_~)PRf6UK#dfGAY{L*~1)IMhzf1%3wW25pRQgQZ!PnP3tytRxaNM+<&obF+PCeG0WE_Xds4_F0 zCKgrKz2ZjkGk?y#^TE|wz53%ecUQScXz6&#m8jBEw;tYiS={P%cqHds!9(sRd}g+G z?R$#mAr*?Wxr~zG@>?s`ByY8yFTpvZQ8m-)+i|oMEcdV}EZ3su@h6YUhe*j6$hZL( z8^qpbu52)i<&ePCU)fEY692}9eQD`o6Qn0t(4i}tX5=4 z*irSx;SRnW%W6gT7CWxKOz|mvIg!?Av-zEpSxUrvu|>3chu8&n z5%0t75_9oB!ro?=@jl8N9Q!-zi6^su*lqi>_aEM3Oz3m z3jHK;QSf^*c6S^+okn)>HFW}y_|l$?R~)_>iJ=~rYB2ti4^@) zA;|jC4q`uRI!|Va;*YuXt9CjC7eJ6-~84E$^-^QzI zA+-}8E=~F-%ILpoh{JgOvtMt=9bRAV1uYS`xRgQt>35SlrUxm}@=P~oNqv<^tMxEg ztasOBJC3f`X0O&05I58HTTlIEp46XanyKCj14w>du>nJe0QQ2e=W7Ui1eRKNEiHLo z5CzinWNlK8^GGuIs*x|A3iHAT32$EKtcl>O2!MhM;Fi9yhYWAT) z7gu;o*4%k6XrP<4<6g*I00dPDJ=%(wqoAM7hBabEe+WGf=mn94ZSX^P)en38eN4&R zj=zS1G_Tu>#%54mlA8N*EI0-(#asFSCZPrZ)PlGUv(V|`eAZBkqzD$FU_?@9e3ged z{^c28wAw&HOZEh>gN-wa*oZWAQtPlQ*ks%jEuQSgxH-WwHX=>N-2Q`LHdg1vQX~7J^9?nC~HyA(L-fQ3ShL1QY1qa z;r|&Rn}2hVY1>M)e*>$7!m8^FzcUV~{}sY^0<0n4!ogQ9jW4B%Nw01L*+VobkU7q- zDoPxqiOl}rGtH#bf2K7iV{x21c&fX@aPD2ugK&9D4;p$8A&6p zJ;5``B(!RZDPq|1jBAR2NwmXQ)F94W)1TYCwE|EFWQu#o+-BB`2Az1N@rd?lVhFO(ZFg?#w@i z$<%fWEf}H=Ga83R8=^C^(PUp?KDp36mqgrAv+#&@V;E#r(VTOW-eMnI&@Nlb<6CjOV5_ULrEEVr`fo8K3>&Q|r0)JSPzs z7+CApb6eU2Tjtj-aarbNfns?tjDful#{zDJb;Ed8l10Q1a_CVT*e^>PbUo1RG_s8L zTe6IiwjTM?*)YaOBjzydKOhGs-+%X!x-Ds!PDdFK@$2Gt7~qQKlW}7~OTMx%=sqKd zG*9~?g(%?+F%xT-2iV;PJ`CtiY&FuNj6E8^X{E)spZHP=fv_fA($xHX8!yw+jnMBb zGXLf#O-xujY4q!pwe)b_+6@)=NN%E_$ExXfC->cq+%t&cf#jngJ$FWJ;EW=E3BgfC zzTNnecB&>6s&pPzP;QfJvyFIh3EzH;q#TiodGc%9tWF`26?~qS(O)QcD4ib0Bt50? z(&92ARNzVK1W6Dj(vMm^waMQ~a~;1cE{xVsZQ`Pe$5iu5MWqFJ6unTUwwl27(!9EX zZ>Nj6y+L%5&uUx8Er)_02!2>*&K|Yd#UNx5%x?Q+ZGA(xDM0R|sxj#WEr3F9$Q~r+jMp!vy z_0R80J38(lodzk=NrnMjut^bp`YySzii`yn@mSC_E#Ovh6jY&SUQZq6nVPc^xVtYp}xRj^7H1lKYP|Jo`!Me8_3+Hp*4YWSWWtCt UCTYxsTyfjN`iQz#tmC==0#3X^%m4rY diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_ip_address_spec.cpython-310.pyc deleted file mode 100644 index f7b03ed438c61df9d7e00da8d02648977c49fc82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3517 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_param_kind.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_param_kind.cpython-310.pyc deleted file mode 100644 index 9be3dc62bd8adc0c0a3c03837a3139984d00622a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4390 zcmc&&-EZ606(=t#iKb;IX;aq@){RSnVp?Y@?yzAqvYxAneEGcA;7z`wdtBk7XZ5Vcukq{0MsJzl z;IAQX^4IxI)BehQZe7fec0uqJ)pX>VEe4<8ANp zFv`6!4)WYXAt+Sp%_)wgd9Jv&mf%CN^FqPtfgh#NneqgWl-5qQ)hI}cAdU~J#Y!tz zvc<|}FvOo~v$Xesvge}di%P$;4!L$iV)WTVWrp`dy!mgDOu*y9kPT%V8Hd)ynixKq zjueVOie9Al1Z{;WZ%wFHo1hQ1wIyWD|Mj$jcZqEtL+w=l&lyVV+^E*)j0!7Ig z;kvDcBrxTAoQ6T{?*}sX!&%CdO@H=;HD4cbg-2vQqbLbfDrF5z=%cpm(#}P^bI~Fj z=sPv!GP3^^onbl>ok0AYuew9Z_P=seKs{TG41T3GQFh3Z%D-xW7mNE&EUsqzAsd+c{3xp%Fw~q`5hLy z2y$9r@RUWwa`F48j(?A(1&s}y-!$WY{7U&LuL@KoCNK25xxRE`2g8{gKGAXx2l zZnwRM;%N~{!P{5uy)A_*WJ0DUyjMB~oq(QgsSYx+?ZH~KZBg5)DIEw68C?XL8dcJy zDv^mi|2IU;`qKEVd6CT^3Tf2YLuGokUTAG?EmPYF-hyr(y_{|;hfSFOuiDUbp4G$m zp_qBSbmcY3ti>v|Xrm^xy`-D_XwtfI-7AekuF^v0_+RI?KyKp|jDXz!EdBK|SF--) zc>Qvahy?UpLFgqC)b(>|X}M`SlY4kX?Fe;@@!C9@3C5KymakzJ{Q5u6iTeW77mR)I zJ&Ud)A#Go=?*%|Ext2=LN$57hoTlIKWAB&A+`oBjob$T&2W z@eH@*E;}(lGJgM?-?2k>Xer#Q6L!Q7ZDmhvRXbwxwyG)IotzyT6Z?oAneZ0uuJP1S zjfu@IjA&2nXU++Ek*b|$E}{JcwS<{=HS?K!V$9B-;I6L5Pv}mrjo*2wooVI6tD6`R zXC|bI;Isq$c{~c$bLXPl#llO>(KnXD9m7rRy)?n;PS7!-8;5nvhDv>!f6B_nFvtU? zqL`#p9l9OElj?0%^1HsPs-_lRoZ$9(=TiLL0pK-$Vec&gzPpFo84qC1rrD_nA!Z+wO6OLI&1#dt=nw8 zaiz59#7eQEW;VIgiq+59iE%=_GRN&%Ug3U41chKA18RgsI^I9~ywId;S!F%TFiMq; ztO^b)*)Q-~WgP^-l7FOg5ldFtczq#m44Q*Y6EtkPr=not^$zw@Tv20WF{B2L56XE-RrLHX` zizrYHX<6NFw{@MAl>{TqDP7+O>x!7lP2Z=TracYc$7e3IO8V%nka0!*LJ6NNas_Rr zGj)##Iu-lOCKyDsUwmy|>1nbYYU!!}u+In1noiyWz2 zW7lA+u4}U8DtDHhb;ow>WIIB6x8JY=;8^c}88`)m@Lj z{>S(K^;fd8QnT>;g?+XC7iL+1rOM>bMdfW==>-(rYFXUoPGq-ieRo=pz86{r+zXN0 zEw+lb^{&NTUc6`VqA2YbT4nBBv+AY2zttFi@AtQajD-?uP1iRP#zh*)u&2T#W<8ng zgj{g;)ol?A=_@>L?XnMgBKCVBd)K^7BEOV^vt?ND|4Ta6&;HWSlGB}tTyDyzd` z5?N>LMHVNw{B`!uH(p&cvtREBwj*RpQzvbvP^GCZe)t~aNzm_#SgkWDBH^cEb*=H* zw=~T|Dl}>9IVHpC$1^sR2s*V-z&UH9Zf7f(lDHji_pvBU7trg;UlEnJaixDoAuO=i zBKEclRf{|NU*PU9-4n@pd5tgKvs)!m=F5ELp0#hcDxz|u$`9qWGC$0Z z=r1)3p)dXJRngx2@x}+&-&tqZJ7LO#$WK#- z2fwcpHY0NqL@x7&Wz$js333s#K;uKM>j39+3~dl^#a*+DSj=o*$4Xvr0PbC`pL2grapSZ@-bK zE7ba;ZY(SKx)D&D(T|=TT$gaA62+j%?Yy5Qnn`x-TDnx(N-xg`}W)54;APNBsP0bl}9cs5( znI}cN(c8@`o)^ZU^1L7!o{hQnyVqNW#ML7y>AmCVd$Qwk5zf zRNF#|I1s#%_wr-THb+9-WWE%v+gIA$n79)}{WRPW1o1r~RVdO1d#}xsSkQE-P_O7Y z6HF}8FIAX{^<#X%471Qp)UHdR`Z6XgnI!fx7EHbAw=UIgPpmV*fCdeE_t2K)6>&R+ zn^q%J9HA*z<%bZLpv(ArFghUdQtsa< z`@J8=9LN!CntMqU2D^+VM)0&_mI6-bshQ~Z)Gp>*_kn<4_3KBzKd6DH){zWe=a z*C#*$Ml1NA2PS4UfO0@$$<__T2SWf9JATyH@hJ($ z=iM;XVdU*FigMQ7?g-*XP9Gj3(N-f^yYAl~<$a8%>Yli)KrlbK)^Eb%F&TYzFP7u$jP#ehYwgiLCQ@ zZlc;)HLQ{&`? zZT7!xvt$3N)phJ-C$#rTjCY==J*~~lcv`a7>A;BIb?E&m6p!??KSMy2$EvyCnb{RQ zx#KnNgf?miH(s0M50pf1z#yvVz%2o}hui)U!VVF8BHk5u!c+lH$(IpAFmxIPxg>V@ zfsnt#w)%RT2`nc(j}zmoiH_8uweh4AXs*Lws*@)f1;OOoH+2-SspH|8hSF${{yCpg z1M3Kol@!_u`3Rx=K_Jq!-H!}SI?q7alj%7TQtN3hi+K0(W=Z?T^?^7VY_si$QD2G= zwU^%<@z6MZiYq9J0lj)**xQ34!!;4}Hub#hvS|Bo)?-ShJV_ppABggE7JPA4F%D{> zi&`cfp68-y^Qq{gc2QrOaZ!s&d!*0$6|5omS&PS6Yz<>4_Ei7>@AO|Q#Mt;}G~dAe z7g3ujlglk*9{!(!>W_9>IuA3o)1r4jBJ+40{NMX+4*ofoY9xLPFE!Tn1IX~iSJ_a zR9ig4=SzMOD>md=taGFVwD{>LfZqKamu5(A1Y0zQ&0i{8UdoNwpDJ2smnC#~`Va4EO zea6E;9atA-724;KP72bk0UrR*6UbA39mNJM+~6$ zD5x%+(X^k@bhmMGqbYYcKA}bG0i}L=4pk8CB1_txqFbKBx8LDPN!ZKw$H7>8<=s~56TuZLDD zEBBCIK>TM|KL>)c66B8|e^1LI9XaIeotj5B+RRW*?KRb8w$N3JbQScTzCv-DrT}?d zO6wYOHtV*el=eI4BIyiUHc@1b6!JVCTIa^+It_EK ogOlWmQ(AMzRWe#-RA>&-0BXa+w+I?j+CaDt=Eot=vU9xfZv-yjJpcdz diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_parent_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_parent_reference.cpython-310.pyc deleted file mode 100644 index 585bda37a34f7f8c4caabf84fe31dd56f8aa5859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5937 zcmb_g%WoUU8Q)zlm&+9;KjMd!__1+|v@9SpO4243Tq8je8$|&owT&K#2AdUUB(6otjHeJrq4yy{Wfed+4F3^k3Lhfue_?haOTC=+pguGki%RE!oyeJMa1S zo8SDtkMm7DKkpfMereua|NOFH{Fy3~kB!Q^c+;Cmm{B*F$*h)HH&t%cEtTi$Ipn#P z-OktZrg6t$Hp}lCEYF>tT)n`odq&ym{loL|{GhwWMTbkCda7QFea6#I@B*7-rCnpkth?NOP-OF?T7fOF zGpfhq9(vA>Y6W(VomV|`d=5P?jcNsUfn8KRC0;_$rD2U-W{bNgm9UjG!b*4sbbr|o{dUZF3s$!tbwJ^$Go*a2JSRx?Y_SzL!d9>uiZp0Uk~VV! zjZi*N5P2%o7!`vdNT5bU7Tu0Ip^U{e%*sw?r@Xa3txpu8!@eQTAp6%(s?E5~s~g>@ zA>sy?GO9j&C#^y}+(Bn!If+?X-Q=CkYAaf+CR?%@ciyb5yk1Qs$(ONt55ofwHy=-#t3Iqw*(kN`n}U9e zkS!onyRVb8R3*E+jrS`es8j4+odtthVS`2uA1c$UAf`_!yBb=`U+z5{%=&kO6h1{@ zLB6o9H|I3aJqm73yo809Esd>mVq{*20RADG6u_Q0lceH22{L{-Mw18R z91D6uZjJ?=8a3w#tqUW_6nKi5WV4@8`$Z(ZE3;@xD$Qi2xP-az+J72x@kA>aQ?Yhh zC~6|o*EJ7Mq{ktDLAF89>NFZIs+DRQ5_E^{oZ6byj?<`dED4_+AffsldLbri2@`aj z5P1rmoRD^E#4Hh5(}+pu6G@$ln6EyKm`bl>+4;`{>^#|84pLOlIW>64WL1L4j6Iod z&qCWJ06FxY>fm?Cds5p^3G5Tm_TMAg4v$RF&Dy(zgXz$R9u)Y3oINP))F?YoKux18 zou)shPDR<7C!L{M$1?WsBgPJ=9E#$yB`53D`&1LKqL{n*;JwsR8UN8j49wry$mZJFP( z#0{C34qXTA8hv}m+A(p=vThoWTvS)662;-;+hmwDru#-kvcz z8==i$e4j#_eDAfp>J+NavpST)r9r}lj5y*){QE3w$RocUIV|TM-jsf9CC=H*#J7um ztZok-eL8hpwX7iHfadR8S)m!Gp_D?rf*A5zHJ=&j6h zwFAkOn<~6YZ=s-Ps}Iap__dM3OSlSv(&wOjZb>a+NvXe%8y2+yyY?kT6H1^^r7NgH zcN^hQ`;hwLI{JQ#H>Eu=aP(PL#CSn-(rkWku@TVkd72eAxFl3EFG{0M zDnrEbnca#~ndRDHBCbM~`hI2;j#*wwDd*L1e&&Gj-ImO3CBh7{{ASqd^23@D;=d-% zZXmI(3zlahxI&O+nWg`E_QIg%Sf&4Zj&1d>AA|W3aOq-8v7CYp&G5(8p0P(9GkcXu zjv+|V0a60p5jv{t8*Q*$$I|6o<|GM5$*hp9$D$ody#rI6T;_lV5cxY=9WiFX>Ro$^ z_859Zd77q_Crbu_4I(hqUc8Nqu}_sEpZZ~kp{y%qQ&0#y&FNB*D|jM;;P)7zG;*z{ z1+jYY5#LMZrF6Q60?f;lFt4;g_Yu$#(DqGAAJSc*HDSb}i}U}wzZT2pARvVW3-0qr zxSzSbpA*D>LDChZ`#OZl@)*y>A===2BH)jL;13wBf@#mP&9hIzR}X*gwdB-VzBMAt zthK27CtA;a@g^<7%pEw>kFKaxFLkR7bG9Ja6p0soRIPtaOev{oWg-iBn}7&zgIOgJKo*dT^6{d zM_t`jT_3Mr{ob$Yy~$>0Jqy=Q?At4Ue8IB*Oqt2cMdn@H@-h-;wJc^cC$U?$emX5j zKMSn_o`uBi6kA2xx?wSw6(3uy$V(fAR+%|VR=w2!o9E-Y*<0o!<%&yB=NB`daT$rY ztKuy6yCPeQ8E5|Mt32f*RCrxp_iuH18g^sAtq~iFM{VyjXwF)!+xhI(EM19Ldzci4i>P?=DkAeP zZuuz^Zb8Ksskc?ATFk+(KuZ0o+j3cnm05*Vb*{)RvKdx;Y`03h%x2k<$JU13s_@GF zDmyyPmDw?NTz~Pnhc73_xiWi>oz!1u_zb?B8t2OFG<#lusqq@VoEhcVS@yzXt2N7B zWG~@)guTpO!Sg6P$9z1GvGeQ#p2wMoWq&n4dv`uey6td&i6<*dz2*BnQn&e9%)j6N z;o_}3*B1Oc?O6Iz5=!agCG4rp-?8|#BICtx=vBDQSN2uDuK0e2byq%TvC=DShU$cA zFHDkk(^+1SO0;Ts=Wl5NKjbQGotrB8k_uH%*4=ytpbUlp%H0QX%JNDFZCR+oyd-tC zmWN7r4ah_Ziz~{MRFEu2lpkI6?%=+PTM8tDBC~s_uB;8~QE^ZlSOE+VDR6-lMu*hZ zDQe=qG{E#rljO;qx;|7KKT$777_elZel2!KAi|fmT;F80)JX3>7xZ zVq%0&oQ5hBf-Ga3;_9W`mB7<(-$WJlpIYK59)JI&+0Ht=x!Q{(kwsjoxcT61*+ln{ zC0(8CW=uBMc)He1;^k&{UA43HQe*y&ri>Mz>xR*TaFxsEgE4D0qa+3^G_@YkbO`Q% zqzR;fcOW#r8{PH15(IG?t00(%H1YzHic_-jGb!FEU!kYIJ=^`Fe_`qpG)CP;Ho6*J z^iDSc=W{~Qz`Ac?G41fLD89j!)VQC}z9BnU+w_rkqe~)iSmF@OLll_KheiNQ$f(Ub z;dlhWyMjxoOw%3}hu~UmWetCc3u@@gcGgRn54<3&z_?Min#TQcZx|!fb4aiwNCn&} z>>^>}uZ2mEe;r*izZ0&bA<>K9ODB5JRb<2eFcTaNSF$bEz~<2a92#-f#0JvoVWrmb zmMRf1gNB4`GQP$WfMInm6j2+Ph*VGTCR916g-waeWuwC`Vv<=;L|jf&+=Ad}n-bq~ z|G!!bS_Zlngj(*q>LJu@-|MKXP36xc*^hYozaAfxM(5E(Fwb}werB&fe23%t z4>$Tr_hdX4w)z@Pb2n=uPeb80`+a4vljTUt{cNiL%klm`YH|Qgd0SSsV6ZW2Z16G4 z9iXedF|wqGuNK-W5IMqW*wBA~a<6_wW^r(EB3icVpxnc$PbHW11S&9JrhPFmo_nEsB?* zh!KoPJKH&j%6?4cFCuvcM07YJMxtZ0{1KAadSol>2^{tN&Zhmo_0hM#=R9&A6%^d_ zfwSQ}a+N!9RdK@+7gSM|DAM-W8n_$IhK(b)bJ==WQDwOC1=MH^+$WVyI*OZeYFS13 zd#Z|-u4(zi+q5QI!}TB5ACT)`?7wzfdnm@CGmbvuab0+1G2EJvPEst6)HCzK25S{? zFVVbc*H!R7nT@fl1I%s{9|q)$I*WN(WdXH+>g45iC_|-$co{7a8?!&&rpdf=ISD(< zEWGk_>X;mk(^mh|^y9#=@5W^vevnu2V%qB=ri=XASmd*avq9|R5WjF%PvWeezzV{b zdJ691XEa;gq0n!yAPebT_=TNq6AoXNOV4 zKyRvfc@@DU=q2}J8K;1E8u8psVyW^%C+v!I=u3~EyQImysC%gw^)8r~aER?CDtC1k zc90jf@4H6Kike|}%B?@%wrjWyEA z2{kBx;%r)*gfqL}n8exeY(74fkHZ9XG}j=k7xGfKixa%c%iWbsbV6m;V3!>)F98VX z@>euJLd_9pFXA$lcZfgoZzb6?U~CbLA^4f=h& zxghw>NT!Oj*G4?5zJpH5%(PMob}%zr!OUct;&zY`>K)jWKA>>BGhxi4hq%XzznrP| z(6NCfBNhUuBuuV9Er{1ibn0EJ^{H{^@*?VUu?;+VDG2z(Aowk6>rj*Dxc0F@*wyDUUeGXA>%~R7>L+L!Q}}2> zkb6M@T=o)ruLS{(Is8%%0{m@&1teB!&5{{XAc+TLyT?(MSB8YTu0t^h5hElCB@;(% zg@p~eHK4vpAKs>9fs(EHY>qsh=Yda;U;=q_4yY!E(H?QoRf|+}s?aWL( ztH`6w#k1m7&Q#orTPtfY)GOi&jY*Nq+!0*7ikH^8tx#ygc)9rRW#WGg69g_92ikyY a7okD#Muk_1MWL>Go=h`L$5L`&+d&}gQiKfx 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr.cpython-310.pyc deleted file mode 100644 index 19dccabcefccc2b210c4e4d02eb85e2257409e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7259 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_list.cpython-310.pyc deleted file mode 100644 index ccbed3d1c938fd1ae6820e6167c0c09afbba2efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6948 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_spec.cpython-310.pyc deleted file mode 100644 index 34b0efd67d488ce6c475c7cb9438aff255bc3ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 zcmd^C&2JmW72jPh$t6X}cB{Ddp~+Nf12e5i$#q?aaE+vPVi-jk!!mMUYiyP~Lvf|$ z?s{e@TLg8IfC4?W*Pg7S{-wS4lyiX|3N-HT&60{@i4Icq)|KYX_sskFy*H2P@^an6 z_c!~=VD*w^{hc~zKNp>kQPf=!ZuKl~b0@ZYwyB+-W9m|`gt`>FqjIloTMsSn^74_z z%c62v>Q%Y3Wi>04f7Thk-;Mi1CPE8UH~ntPxKN>tG99G}%VfG2alzS*ZIK8WXf*r# z?DI?{K^C!x#b7GgQ0q)}+U@N~56Ashn2y?Mu}G(Btmd8d*)geXGWI@8(&s^kefq17 z&Eoc_L&5fhRCIMZU>aSz>XXNh7*E6TNF=($q=-eJ#QJ9I=0}F-85f4N&M7Ce>%Y0N zrA0Wbe+A81-KL!{-%pc4v^|DUxGtpOvtJ3Fk5Nz<-E( zg}X4$JNb{k*bL%q7;J6{xfg}v{-Xy^wlWb;{@nfi>8Bm`bQmcX#(`1{jbN-(cFsVg zwNnGNjHaH5!FMXiEPRl{Hkt_@X=8=rs!@=PgE-zV4$I47#HE_l;z;Q~C@r6LL(YKOIEdYXdO6HXKMKXE-1!9OH=g5w!A*2p3Chmz#H0dCbt%7gRQfG zjZ!XRfOZfiKtPnt5z}p!C0(Cii_siWGdru^L?KtYUvwb~G zlV7$rH`*%FVm%AO-C$d&_U@_UwZk|9u-iruY@J!&SB2>fkG_KOTiJf@`F@l{+V_7B zUesj}&#Bn>1NEG`?Y^F{1=?!Ow}v*h%|B{WF;=ReF|~FqXx$F}is6Sss{#OI>cS@h zxJ5Ty}nZGLpKwR!taYooQ%zIkhn zA;_%V+}POc@cx}nr+xd@T9XZAI$|$|Q8;Aq0C+>Rov@kS;2vY8g=CK&s}}ox@X~Pq zBAqcqZWG7p3&DTE(nQdt2yhM<8w8^WATOM35Q!MD0-vMNSO@)Bv=&L(kwTAULf$Eu zLDu(G80m_>j@0{^=&)1IGEPY|C$=Obp{k-Xh%88rx`f<;e$6j2{(&q6qKELoy+CB;d99XFLk^x8$M_RzlfAQCC4U0vWe)cWnyk zjxjN%u;z60s!n~{f8ylTVW0x7rCi1i9VDU1 zU5Z6{X%u7vivSF^uYHDR@JqwUmn=v)+C`^n%lC!&9&J(3!mJT9`oFrMbLedBjgo@#1+~lFD!ubQ)=BH@*xqz-5FxC3o_9= zD8^+y%e9?~>$$JpvirL3It{pQy>5F;-Zc-yjjAze(~~Va>L(z%BZXW=qxar7*>9`J pe({U(%&)N`ajz6;DWGuyLkP}=KJHN*R0Mt3@#-ED;fAwX`VY01?wkMs diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_service_cidr_status.cpython-310.pyc deleted file mode 100644 index aa0ad38d3927b8633bb2b6512645847dd04b14f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3822 zcmc&%%WoUU8Q+~QEJH8#tgp}6vL zcRe!{B7*8gI`!0ZPu5ZY(q4PYxj+vETKD(Ok`iM{HWCELNb}rze2?GvV7|KQTPXjq z9}dek%laoxmWzwYC#dQ!8gBJ1ZgZB}ecSY`&rI+19rRA>j%)pzZ9TBK%WKCLuZjAR z({FILW3}tkfBON-pC$t#Gogj@&AgWfT&P$kg--G;C}h5$aKVH3c10#+q%j;E1YZ^+ zi;5(8P%Y*%7-?Oot!{TW(WA+r6X)Y@UTxBOo~p%UV}4C8+d=Slkmb*!t>Cj?f4Et_ z{%9nEeIXS+oeu+zDLwV+S6>7?k0)c1>8(JDR76T_Y<7P2J45rF3Pak~871@Q&tL3l z5s&=AYzNe+jp84XWU8bzKforuko9_ z#_Pv+zb+cQ!M$Va$nJZ>+iUXXV#a;Ga%}Z|-r}q1SNIyghQ7tG^Bd?_`5XLa=-0Rl z<-A$0Ki-VeViaxe2)UocV*88x4|jB=Cu;h)-j|O)+X^0y5*5U0q*Q=GG|_o*K}96D zGZl4=tR9NtYei%>-p`>O9SELiqlfCLagG(D&;EB!dnumSQ@(;I1`^q(JZLaf!& zlU__hTof8J)NNGtF`5~~Ik99zTSwL*o3WV{0>@~vj@FrBHnHXUjAkykcYt;XhfP1e zQaHgz5C!9$ixemxCK(`+WD5xO+BHc8l(*A7j?!>Hk}3oP=O8FoXg+5MI!VY7#z_|G zTuQRNwo|%Fq(d{2HLRRk(nI&3zjjCYSaf$MNi6eNXq|MQ{#JEy0qi8(-6(Rdy89yA z@21J1TO8<7o_*BW{IIJMEjEfMej4ox)qQ$qj@>v-0Qaup21n<32vr4$FiyA(m4QU3 zI4Hd^OtM6W;Rm2bT}R`wx{W`y9`kMY#q`dVV(Tmp$2JZw3XQ26h1D^bS$h@~U`Kz% z@&ln&1&lL^RVE8GUj5KzMo(_&T7GaSd=a~meLtVg}jEl%=@KFk}PZH z7Q{UAD`i~@HA!{pnk($EtnEkXM7&HH$-IZE?x1nmO+*gF4#W{=xBln5Yx7y1wf^hZ zT{eB|wNk$zUa}5@bdpeo^5^WtIw73d)6O!^l$MB{Ncaj+4<~LiwS|{AAVff}7X^0d zvQZ3kIgWItgBC7-iMg^4AmGX&J{i=kvFR&9Rkis7`DebA!aiVZ5sX3j?az?~e{D$l z8qtemTus`xe4B{5j3PvBVlE8#7BqS6)p5Goe!;_&nHiz}90Qn{tzl-WK?xIRgm`B* zwNEMaXG_K`Cn89O!64V8ARp|B7(qRfA`s7z=6!zZ$lF9Z-EPEsT6ws#hW$cbkZ%}@ zXJJSQ^S=n$K6CBsuat3h;0JT#7;fG_gUnUjm_(L1dL(~ItdL<}LVPB|a6+HjXkG;k z@QAJOTfO!*%Dl2@jCtvYAwW4vY1|4!dT{=w5r+8v0%emI?5~myCWDC)uR`7X;M(PjB> T$RjE;0GD~bhlI4nZaV)5JPGA- diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version.cpython-310.pyc deleted file mode 100644 index e09062f7ee61ebc7839494ee2447f1a8605aa346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7682 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 R;=Q)zxDGxbRIO8m{{hHWBE|p! diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_condition.cpython-310.pyc deleted file mode 100644 index c94ab95aa1ee6a2a8541db5728eb2ebe362e8c90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8335 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_list.cpython-310.pyc deleted file mode 100644 index c3cdcd954eb6192376405909d638b1acd9516abc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7054 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_storage_version_status.cpython-310.pyc deleted file mode 100644 index 7582d631ec5ec78dfe93528859caf04ea6ba1dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6275 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_type_checking.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_type_checking.cpython-310.pyc deleted file mode 100644 index 2fed6557e8d2715dcf8f3c203147ea2aae30d8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3752 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 SIHsV9X`p|6c&Hf1a{mLaxPqVn diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding.cpython-310.pyc deleted file mode 100644 index d6974d5e56aa5c71dacd61858c175c8f7ec283d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7282 zcmeHMON`sb873)8qPSYWVmo$TX6zufimc>qk~UemMjXdB0we3xYxp2Ept+pc6>W-? zXGV*xAosGqw1=WVZ$(jfF9m$)HHRL0E6`(a1$b>QIrWgDhoY_f{X>Z>@1y&Oa|;E| zaNhI(^Znn<{7R>%T?5ar%v($DD~9n`N=!aB5+C4|7ZEU{Z7`ErvDr3tY_%;Nm)a%7 zrP%J4+hx*2Z4U*sa;ic43g=Tnby8H%WGFblsDDfQQO+h!G3We%(9RGFP)Q>^~TY*%=dO|wIfj5V|EaOYl)9WGK; zc7z?(B`$YSa;!*I*$eErE}7y}C^=E2s_Z0tQJ2(t9VMs6DR!E@^vGyWvzOT`h!3$> z*=vXovop*?e1yHu<d_TrB$=+4(!OLEP&Evv-0xVvs#qzRbFjB%Obn#!Yh-{m$&o#d|zdpKukl-`cAn3q2k->}(2v^+({!?E4ThbGqmVItVgb zqEg#Ml{-27LdL;>UCl3)SN65` zrddS9(T$Qor9zMaZPH?+0!8z9X}dB}L;WX)IE?6DKW}x?E^jUOqfn$FS1M}Ve^0j1 zJ!XToQocWn*~zmA9IImDmxuVGv_r9eUDJL#nBD98 zG{?P%CVCz}^i3~;>?=at(70z{;mx3q^}5cL)aEj=G&yC$NcTMOb{tH*0_=HY2P4Gf zV~wl__>p0UcY|U;!Fz&BC|GkTWd|T|ZL3XhfeUKr$xhmjnFnkksX*glx|~FVqBo3@ zYLQ}WGg1Mg3R_bUdsw7Ce+ykQuN$nQA#s4$PbPZMRb3m{VhTDoAUcFdTTmVxp(NSiHN0Pul~-zm zclL~qiTQ`rc>K^ey&9P`vL>++Ed>sW7M=?_^D_ZS_$?j}ipO3cg6<>|zd>kjMdrMC z0q|&8IWYB(K>WT5oj*dBMyKoU$bjM)bz}xlL5T(T(MD8o(4JwvlkMK1-sp%!#)Vxb z=N-_^h}$TOPNcW4F5E_L&IHIolbq@{s)C8etVfImLgFH?xg^rA?u93;mxAJSBHx`n z*pho6 zA)}{f2fCXg5FIa&q%oz*j`qpVDE|b4!OWg9L6hE*0XlOQ_C9iFRL0_+Ih>z?z%DA8V;6G{UJG6%7Zs=>C0Sx_s#t$@Q3zrd5v%b z4CtiDqEI~}7v0!Pco#@6IyWfX+nI^6YePu4j)EcG;;s3ts#2fYKe4iECy;?sLcEF= z@J*VZZ_;GuT#SS6A`344mO7@}*GXgW;hxVoqoJA?wUb9)!bjen9&u+0-Yg_I4Ywzx zI0|V>r?pI{wLDAkCTof8`7cR$-J#H5uOSIxY}}~3o8%F%qwIHhC4r!Bo_uPXjVZYK zqR+D$>I-Tkv+0o&*Vo5_thx+;9n_S$k&F_lf+Xab9Y<1SrEbs@XV8}(KeI`(Sy}he zDC>3SnuF#f3P(4S;!aZdTj*kWyAa8$Q;YwP#?-uylNjUAECjoDZcS*AEQ}FCbgk(v$@BfjC z-bb(x9OW$=<#~D<$7szH+-`k8bA2C}?#J|9_kEhesHE!q_(KTGO9a)PCW|I-9`}g` zjv_B}MpV739bj2S!i$V0AiCLb>*toC(f1A&yhp(t1smdRTrO!@>0T+XA#e=av?`Wk zffp>Z^6!l=w`!dLW4NwqO-;l#q>*PMc3kI_V>@=es-et^mBz`tq}|5)W-`%3P5$RW4Qq_J`2D!fFLEa`l1TNob>>$-Kk^gnw818V>P diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_list.cpython-310.pyc deleted file mode 100644 index 6c64b7f4f6e9598f3e96869a888361cab742d390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7505 zcmeHM&2JmW72jPhzgCjJVmo%eytRWgEF#jf>n2rQBd%i`h8rfe4IkJV>($OkTzk1o z&kTi#pwWYTYA*$fUWy*9TYbv4haP%s{(>GB=&7fi1N2a&O@D8eTvD2hjp{hVJ#OG7)ZDsjggXG*&{@?k&}Wq|->UPAW+vIV#K# zr%6Q3bhi}oT$TjA4v*EMD|p0x$>$g9 z=YFjBJluue+G4(w;qv1Z>xu_$=W}q*Xx7Yh?n)9bhbui0h2;XOo_vZZypLCYhJ+hn zu|e!@6{-faSOG7X`X{?(vl1(_3ajc;k)2^PZ1#!SD)BO#V+WoX>t?IMD-WvdU|uS- zL+r3_akzt)BYCOJUSdae%M71E%dxyvX2;pfx@DHnqUFS>#7?qTo*1n;_9}Y~-vjJ* z_6EKO*(v7Ydx(9HoyPYtb0GFN(|7JJ_))j*FWmK`kb(AikCGK;0AR*;=sB6L8;>$0Thwk`60w^e#vruWF zXG?YbxaUXFS~gi)kV^FH5w`Wq-O_Nc<=kB$LO$fmui5DgK! zK@YIQZ#n35H^ZPPLH43dNd-wWpz`RUyoL7)UMY|aip=bxyE4{|$HhT$V0h3=q<{@l z=p<5Gr|5}%X@K^gDck{-$^-O6>H7lye+SLVA3lZ{m#uQsA^snK0i?Ib>5UpU*4*xY>A4<7m}Ts9u&X08!LAfre!eek+kA-ttbBRs-hy}OoHJTHtx<#`L(qCAbHVwFt%vJ^QgSLmx> z$F#rdUzkQx_0bA}iP=XF<>@8JeL?se7!M4e>{N?yXPW7- zfQk<_V~C$@y`e$@O)_Znj-M|ocvo-J7ML2zc;V@P>vHZw|#CrT4Ov&7izlMP{uiJ|!X3$+^-Tg2T90Qk= zu{pv)RR@ylVbZ{1)#*W=Yske)giEk*LN*v*eSGVhC^4LAj=CwK$go!6U<>D-X@ z4m$%Plb#5;+=+3Ef@5qc@+2@z(=c8mK>rY zDdsi2Uy$CHs{Qw-LdgUj0ZlM^C{M3ODXp%}+t6V7htPC;-;kQQ4Mgd8*xV~NyT0%{ zlc@ZbVfs8uo8l$Fq-JFx)yD-H|1C)U1*$Ys9cM?YD2~uXrvEm~WNr`jF_jyosW85i zLhI8M_H2{KRNtxhCiUOH-4N{Q87V#;PrG-GCT+wFarG#1*nQHcDJtHzJuEA zbZ)7ZUtY4;}+K5Ow#8 zAJY|MiMzcn{Cv*p?u{6=9UfirCI8la1cHE^CwA}7OV~HT)cn1ZJ68Og-yv^1?{qiF%ZwliA+v#d7suC|z)9bA$FSuG<)&kNU)R{GqvN1OzBpX?Iby|js!G9$-{O_z zc9$wsUNuLQyhvgD|H#kj(U83{*cq$rVg|g?d>QygrM=Dm^#I(4vrX{|*fzo;@p9|= zN_Bt0tNH6xH=VHLt~vY&|Y01abz}y7kyr z_P|!fbxWL9MOC7Z?Gs~QuUqRTZc5fg<55MG5%4LXM}1&Ft!&T@DyyfFRn%WrRgAQ= zkx!isV{$ZtM8p0A3KA9jZ{5<@&+N9I#eWdk?c%x};?C;RS z6JU=U{cBU5F2m*O7j>XYUP30DQm?u*6>sHKoJ0&4lpF>{g_D}DlbWVwgvK>hcJp&$ zfSyq39K!KLkWJp<7MjED(|P?P-IYmRAsQ z1glaflwmBD9|t_O$wy2J9ltAH$6R{-)F$TY09vi6oxrpNzo{3g)YcQ2URu;WF4^j z=cgqJ+-Ij-$Gyhq3Q%{TN&&3whr6tefk38>h=&gg4j%AyNrjy^j)9COTNCmhNNQHrd6^k7HoxOmcAV4oU(NcR>W~kYi65o z)iEnh444=;I4I{*Lx diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_binding_spec.cpython-310.pyc deleted file mode 100644 index f57e7f77fef361bb15ed9ea647658e561db913c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11122 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 M*Kn|E#yVK~56V1*{Qv*} diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_list.cpython-310.pyc deleted file mode 100644 index 04acdf4f1ffa2dfb1138695e02308d27300176de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7297 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 HqlNzi3(or% diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_spec.cpython-310.pyc deleted file mode 100644 index e07da60ca327d43dc1d53e2544e8be9c130853b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13690 zcmeHOO^h2ycJ6L+NDk*m8d=s#yZ&k0Yp>{NNR92RlZma}u`C(J%CmwbI|z3Ls;8?s zY^m8zRX0Z(f;vg31PF3o?7;$Z(IvSB*gfZ-(_VUy0RrqH2oM7Syx3jmdsVDvv&qSD zEH45i;(*nxs;*b{UcJA1^(I_dsT%nF%)HjV`>tX9D^;?eA}T+`H+l~RGnxi7ndO^J zQ$DSxC7*?60ndV8>@GAHOyeVi71_cggDvpV!$Pyntm{UtH2ANojn9wzJ6r@j=22DF zw?mup$Q52M_QJsKiEz(joY`l0dBBAeM*|abH>G=&c`;88__qd2?>acCcsM1thS3kB{ z==Qrjh&OG)eeOhjeWU)?pUX9mRw0+RnXY6s{dmTD%-v4)H=vxcT{DxFi(%0AcKbjI z)49}~{Zvr-A->V8reSacBsPe=&BCI=ELI?rvJxw^3S0bnxmjdYw#1g%3R`8z*m2pm zz}{vj*mIA}W{H>CN%s6B^1gX*|W-5(erv*E3-G)_hip8ehfWl zb&b{7n~#jubDy z=oZTtKMcWLvCWwmOFmLlb)BH^`2M~EHh9tZqWC9z-CKRUycJ-WWQm(eA&SM|g^71Q zabmXv&cT~N>t^$m9xOYq@hI#Imq*Pt-G0>(PWMM%zy_x$0BIrt$lz42M|jST&u`Ys z$(loJYB}kmqGYx0cz$2-R!`D2Io_ouwOqZXC|OHeuztr2;wY*1Xc?_LSVyw7H`<>t zh?2!UN6i*BkIT8n_(#o^(Nt>pn#UyE6nTu$4SJsDqMV1&6{N|;5{hki5vBgnZwudx z_(uPLVpw5j-w@^4cxXJR3@byU1$BlJ(uNYM3}sQ43$iT9vMfuCMepJeBl@PO4XIWg zVkBzkhZbr}LqI_7-C+T>$WYn$!ajEYkKRCwQ_sE)=IZpF=T{sX_MZSWT} z0Sgo*D#}!lLKL)n;rbqILqpOV zLr01z#WdJ$Ia(Es2<;H_IVW7?F=_!Jeyuk*V&hIIAB-h)u!cz6i)Tjn&kX40-*VVo2rm z5uQ`q_5YRyrKVQ&$ZpXemnVxi zkWq4z7Vha}E)}B*KW1c)BfAscBNf(x*73PLdM6qyE^RSv&wVoG91!hBa!DU|8z5tZ0np`bf zI-L={v;!9lrZR#q+tRN<#c42J+gA2Xd!JB#Z5*r!UkBPWSm*cQ`jSp2XRQt(BZ%aU z&x8WcyB;`L^?{IJCZzX^HRT8%@<^(1Ny`(NjKzMnd+=~Z;O|toGF7W4{S4p{2mGUizp5?$2Ovj>6s%v zOpeZ%PlrXSl0KOTqo@#&bcqQ*jGvxOT83^PZay6UE_6MeDja=yAa#rOktrc%E#YPX zv^_uOLJy#G6iiLW*@JcQ1$Wp!0Kl$DG@;`W+oUs#==&U|o6KE=<0ik3kfVz;@i}R$ z!=2lx={DHTK%Gfa1SGVJV=NSOm=51hS5l`#25bnK69fvJ`(C%-CG5Zdj#^C?3k)O^ z1hevS8*fXNL(Ep#YAIy1b)@#3jer;VCm@XDA{0djwLQ;~c-@jCqg&eNK}3SkjmWGc zG=>PT?L?ZMu#efpA10?`5x?)av05Sg58DrSJ(uP`3s|9GT+}wfs~dG%>DKmNsW($v zq*h*;%B?HcFTq0s*pZh*7X6Ob>q%Vgw-l5sS8`CI6bx~|jccDy0nyF`k<5Nuf^mZV z9GDb}a*Kd1xoq~?oqkL%lG>Zgv_^>&AgvQt6Q<|=%WweBVONPI6z`~mtrFN71C;M@ z0M}oq0DkAC|dN8I;BhT{rOyq zJWhu?6|X=`rA|eD^bsjCb}J_FeWsV5=_MItCk6LRFXb-lNO5c`?1bB zBpk&cwQ82+OYg3-O8z*JW|oqt+kl_pt3r>Jc|(sWOK5}+)ANJ>m{#(7>=8*`%@8@q zwi;rNZ*}t#C;Fcm_Yk6Q3matBEGsWvax6=2f3HbjT|CU6A0#Q$O04B2;L~B0A!IgU z{!M{Dh)u8RU{;nx*FcGx97X`F$#w==C4x591l7oS*JO2 z3`()$xPC;?^YP%-DT;23*FY}Ke)766$9~lI3!>|*C=O#j=a<YO)TP(2ME5-7Td%H7FCI6NG14}}X; zeR!i&Lv~F#PE5hUN{)6DHC`n`zmyg8b;*_&tO-|tyzH_4gqweYwtAKYpsS&OrcUYR zZ_Kxk8B`7vFz27LS529LN2I}6S&cFLKgKLlOJt7iky0LCpJq96OZjGo>oq3om~FPj zcflB1iO58doD!k7e<9|X$L(^y!hK|F#L|3)Bl1BGr;G|2+0N8ba z+Elx|69Gff4GqF%9C0|@)KI7lm-v&Q(?F5V8=!6{MMnmw zAWUc$(p0vJ%TSahq}!o30$@a`J|cCWrF*1$#7IpXS`V!U z#ke>u#tRQE@oKyfBOQ@hkBnjQq4m&27LN6vakmnek-}KO8}(uF^U7n&&Qa|&auMxY z@ghbR)yU7QkB#hTq&<$_A5t>o!r+Z-GUbUbMsNin(-m=((BmTZ=&qYA6!YA8%FizV zo$G`bB_hR0SYsyUUK|3u$LJVR`kJ+!l;f~P|^(J5~K1|F#)0Sfu+d#D1FBC-;@Ib_6}=ri$FL>#bep8Be2)|QY_?A=cm@xGuj zQL-}1Qg0D6MoD>>BlkEKN!5#xe;1R5N{VFsl0w(%iL-kCq)1dv79^C~g1q`mO0dPq zLP&}dgxN|K$YAsQ$_VBE#5bY?T+updRZV0tBD2vlm;X>Lu8wLYYx(!pQqdZ$A87}s zNR2qXk^ss*1|9Dfi%m zAfBZ5V}@N!N?;0rtkNzJH?3NOb93W@fm5gu5Gl+Qf&r@=#Ogre^ktm$Zpmfck`Bc! zwZ>aDQ_z2E%(B{)cS?x1TB~|}6>I)1QZ;nSc9U4j71EV3_}YvimJu?UiHC{oLzBuo z^e-S*M)*aa+sGM`DVFL^5t0uN4|iFPfB8v4Y!Dg*U6T8W%Kl0gr2Cd*u%y&#@w=_o z3E=ewaevh+n#bp+y&C+rF)K*S-b~r*Ak5@H2M~5Q#05g@2UJX+QV5ZNw_0a_i1+~g z^RkZ`R;z4}KDFm*x5?9QwUBY$0xRQ!8NZiXEn32;r`&4czg)l;4b0VCAu0CY^KxW# z_r$l*mQ+T%d0(b}CZ!0u)3~%GA|IHft>iV(wEkf{!P!)m({BE5)??aYFbM(o{MNlUr|3Z?^Tv6rz^!uak(s6t5y*o z(YiKKB$nV}9Y2~ckJG&CD$N`JU6jd`SBdl`#kGn>$J>}92IHcregT_lM3jwQv?|q# LS+SO_lZF2Vp~@-S diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_validating_admission_policy_status.cpython-310.pyc deleted file mode 100644 index ace6f0ba39d6981b8c6667e30dd6447916c83cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5779 zcmcIo&2JmW72jPh$>r+9Uy5U=NxY4VxGXBtN@}1{U89Db7)1gmumz)Fn{HM+BWdmB zE#=Ma}_wD3GMTH$zgSOjlB3FS+xz^Yz~Qy*KYo zzOdk1c>ZeN-Kf55S^uQUyM(-yx}9>nY+H9M z=Cbmh#mc<0TWVLCbI+<*`v36*JRkPfxyZQU(%1D?9xyIrk#tp(XF*rw+X>?=`0*ys zxQG;r>pQ{6U7khVB)DT5a}jJQ)s?Hw=4PU{dh3li?=*AMN#%JeN0sH_G`Xk;!Q~*! zA4RLd``50nnAO*|c(Bcdq^0wXK%q)Y-TdU&0n6iFhi7Uv5Ip6Pdt5vs)gh%+uvEyTp7pw`aF2yvpX;!k)Ejw>|DXsIkRyt;$ZZ)B20geSA4Hu2tDt zc20kp<8%13G^(*z*!exHJyem8|+Qwr&$ex4T>xGSE97L z6|LNl(u9G!Z1X1TB$BxLNuDP0&OH^Wp6vgj_3_&KtHIh)Uio_@1DDx7OH`G$Ydv-c?!XG6c}M{aq|iE~=!3L8z?Ysa-WX7= zGC&X1el&1Us}9f;wdFwxHILc%pvMrM)4x5U_6X4h%Rv-$a>i3=>qe3R`bjoYl~%nb zXxqhwG>@Y++>V3{!L9?a7jslMe3r#hIAY5r{}#h31_E^nnT1Z0MJgAXpQ3_QL={QB zT)2{_8;6>Ohi^|Uv4HHqe`;>!9p2pRC9%k3u2j-|_;cCBq_8B}=5jY@vboK(?Pi*+ zH@iD(E6?6-tXyr%MDgWr6hDkMxokch8?0uWCNKz1%?At}q8{{)U>`;!+=pEa{7`D- zH@Z887luies4#3|bMkd0o>Q^$GpS8A4|UJ>ZTH*$)niJgF`72EG3Dr?GQEVPuZU{{ z>wyJ{+tEj8zQdI?nlToNv3^j;<1RbPnv#7di+Uhy*v_ut5?s^krLgBx1<`htq|tiH z0|NwY5G8FP3Jl+_z(DkbpmD@O-gw?}tAeYZ$jGQnt*edscPED^p=VVPC|84LjDEn44yuKJ17G?5)$ zo>aUU2JnSy;K8{xR59a5k$(eZDUqis7speom#|er7Cj^F!nr%CPlRi6b_UDIko|_* z&mrmm;<&mrgM#NOl~}^mbtk$qsY){@II*;*b?SS{$EeASZ5e%;@!`b#J!Ei=z#uZC zIFk}YxZX0<=T zT!YQ2`3x$jnohjL|HtEqJ!`WV-4Y0G$F`hUd)Ss!+s=sHer*b(Wcvxg1X1~CB#HId zR@M`^*$}$oa=$J>pXT9Ty<66b;Mh$tSS^D@4=Pdb#`qW*Uok8 zk*BI~?Mvv<7`RWoeLBWXJB_TN{idp6q-#b#@%OFC(Fg>F{Ria6m-}zu)n1Ts>WrI? zK)TC?N;o1c`~#N6YKksWyAs}eL>FnWf|JN>tX&&`x_x{Ykjv<_imJ*(8voQOs#}qa zloH|sMj)uQKR?9F!n>YEopl!7_#;hB_&sm+Z;k|XB!10Gjq5s;kT*~;v*`t&Pr%z_ z0xlw41`%gKOzEN~>7piQ1Gf;GAh-1;(XJ;Hx^xj$(Bi`H?;IjWkfZ(=ypk|5Z=e6x zwd-?5NhY5cHS`xWMivXh;9tiuvZ!uyc&$nlej<|$9&8r#!X+oND0QN)cnx#u^$VBy zT9oxH^|CghMFk#nFI9!Br?A7Kj0mI05ATd5utz(43yJG2IX*=Wh#(w${u|$29M&q% z{MUZPb^6T{%HSDh(+!2z0&;DQ20U^0t$o6v-ET}{P%42C>%jZh9=_3eZsJIU)Rk@* zy;M={Zsej9DI<{?=CG&$fSB?NqLvV~==2*Wpaw&qA%>>W#8Aixz*_`(ka6JyTrPd4 zH}+W&WejCgsoSD~uCvTF#dhQxhv5_S&^z>;lSFW4@H6I`)Kl;AO%$M>wt{-fD#h;D zF<3vaDSb%yYtDob5Ir6w8^L<6w&4Cf;4#9zNbrC^!VSm=PfOx5<`Xo#X8BX&*|IW0PG;Kc_gX?*;=^G!SZ%te!!d57m_Ctu2 zjECVr=+n=T93MnxVBKxush=TvXHf@J6@D1P-u6-|&xavxVECmPhPXlmFn)-Y+6$!1 z$$C%mkPN^nv=!daM(^k_v8YJgQGowsX!IqA(FYAWx-$^(QgV%w1G;ochngf#@~`A7 z63=pNr{Z`Hj6vmVr)qM);+%zv@O|5vo5*Xv?fKpX&-L8-s)j|~6YtSFKSfeFf{RNi wv@ac8g*41n2(DcxZh6clP{kn5z-z`vaX=W3-5}d5DQb2dtd9$jd1tBgKbvwbcAstzXNE&kmSn9~ve)Yhy;*8(&Wt7JW0$an6=d3Ltd~|Ot&q@Bn$7N- znHGDxN7X&z$Buv?(kaLxw*Wy77IG4D%Qc4_atZP$%r&Py1PEXthhRVQd#}2CdOo-m z>t2c=!>1(T6D9!gj$mT+=tU z4ZfP&CST{a=Ww0#i{1I{d86=Y!7aM;&kF9mEIpmuF1zO4LalW4UsZv>pY(U73S=y! zDnDD_)_oDS?v+c#5 z{%*qwyUkEHio?*4(uaBiCR8;c-Vs6g$X*v4zyJPq-TS?c6py8fsOzvLVmwk;x9)r< z+|cQFWe~3mC4Ff}vVOgB#D?YV`5YbO75e^=Zt5^>#bjccm1ikkD;Q`x=XUgVlZxrmzAv!}9q$^91BEXgI* zTuz_dZ@X8X6}Fe%tL_`Po^#)Hzk};*?pyA6aXs(8?Fw8kxD`zM%JAa->$czP*w^pd zzUT7TkN$G=i+daE;$Fv#gyY*$ByeN*<4{b^I!#43>kTIVmTa9!b#C}^hzXB{biJ6T zR(I94gTC$ihZ@*$E{avHIIPNpo{|x9!m!-Mjop^Ri^+|Zt1KxnLl`KUFI7UZeIaSJ zkwH)uyx(-FHvOY}6TjQ|MGsL7=3S#-Q02JrwD4qpFh3|*SXC%7=_s+HP!_pFOWc-H6CqdMOExMsAeJsG1 z7l50+Am#qe+M*(Chgba2v3={Yts=|G^Y3smPn3$4lI->LE?-@?G||8`95773?4UqZ@1Yyj5}fQLF4-S&B%*oy=OannBl0om&v21<9k@|O{NJxP1qJ=Px-dd zI~-Ol%L}~NvaSP(NT8^gB?JGud@AFJ*?7c^T4rJG%;;g3xFZ2P;!+4UVtI^t3hsW#b2?(*^L?=^g#-!u zsVKg^@p%JZ=9XYi1h>Pm?aQVk{d&}sjzD8ELN^i}`>_ieT+ z>jEsl8ty)nPP~d+lKuKgv{cw-WV`^11l*Hi(BM`yd`TiI=%beww9m&IpKsjTNLxh> zhU~jvi~*MiUKA5B-OF*XZf|YenuL`QfY7`Z$I9F7Lt&;GDo3GfUt%U6Tx<6B+D)*1 z)U@5M$3mb|g!g!*vuN;Y+mQ)JV2Cbof zX`Xta?>UEJ*9%-4)2^g4~7Bo`fS{^A*QZ*8=TM4&~hL*m$O&F78fNt(PG#l9p&B0j}cHmMg zwyMx*AGRR#sz_I6Hsu%st@j-)lKa};+gTGkd*DU7g8OZlCU%1+c!$A`-lZnVrmj;U zlfQ2tf}vTCc@RM(^i&9gBavk3vWJPQB~scAS-F_1*dy6R@G?L^Q?Dc4;E;JHTlhS; zJ73!Mqg(ZDt5I)0NbcXS|BxTw1@05@Ze_63UQ?jd5|+13D}yFp@w!f=ax3)xaGxb% zpG53_M+OO=XbwYxIB6u=*J*|=Yc&DL!X3~3zy+}ZT1HffHjT+9ZU|km|43{-!fynTWm zwKz#$@DxFJ2(bcYlq+jurDgjO-;h3_7hXW69Z|UpQ)iEEn0=EQr~&<{OuocaQdO%T zIOGk`z1KoX-FT2eDyCPy)R!>q(PLt?&}}9q=|Rc3uY#2ZbURC(h|sO)HGRTikl6M( z8@PE;>*D7tBlBQoU92Q5Y*|@}ig7b5I`{p>^uB&V52S z^D2uZJeJsVGBJ>$rKgz@TNgWjEZ!4;vLg~5K>D^HP;XeeSn0H0d2G07Z)sHVh%qAsQfK=`RR_x(8EDMX;Y(_v?}C&(JYTo*uksxbJHays-^K861b6 zJtbgn#2$1G(}@%cgaHw9CgNSG+VW(?u|khQ8uk*8n00c*_!D{|G}ONGV$1}YHAyWE z8~C$`BQgOjG$K?yW}WE)3Q&V=^jK&UV`p}mNhQYdRHPv@%>%=NNYeoe>SJB6ck-X} zGFYpfmvRP}APk8(ZCyakvcpX8Ylfnj&|J<1cTeZ}=+F+0 zWhBhNk7vFPc|IdkB{QcpE06f;%+~=C&U~FSUnhw#pZPjxz781$Bc*oc>%iqW^K~M! zZKu7dGhgS-*E#cbUe*mf+1KGP^_cYi=3dXV)3bSWPLTg9k}ZIo6NZo&MFkK%$9|*WNZG{q8I_Z!<1IgHA*KP> ze2ty^T%QQZc|N*S2v#D@w1vwP#KUBx-4H7blY;HyXIr0-g2bH=6UqTXlH{~q)u2}^ z0=|BKjJ z3;$&1bi6B_##i9#8Dd{u2H&M}nb>$1YkPRl@vdt1M49{_$e5ax$+=93R}s(2h(`hd z`5MS%q2ROL*pOM?3FH>`O4BXLY>RzDWcLvXP07d~@Ql+ILMr29O3WcyDiRTY7r~9JDiG>P1Ccs{3p zSPKL*zDe^I7&U02iSa|_pzrCfK+(RBurK1lHb#$_J9c}q4IUz{PYPk|6{Q3CVY^MS zZo-@zO!SkZ1+~WJhTC^QVh{^R(FfBwv^?oU(Ne^oHQh0&rWEBV##XZI_ON}SDNB3K z`cCV*kT&LdqdlTLicu}k{VbK75cY&2F_p0sh719kqE{H)h;l7#;ArNZCdml&_&A%# z407y!&d>lgbUKTkw#E$VbDBbyokDvfM1zQS{j<$^nm&4)w+>;SIEVG4N`lh(hV~ zx2~o|DC`16=x5snl+@LyO12Ar_jtP?ht{zsg8DWf)lB<8Az>#CgWUJOO~Q_BglR52 zlc{XepUG6HRZ>&qvgS;tveHhs#WUya|D8-7vq*DdXUsUwz5i|EXhLvn84D>pEo3*< zRTh3ae!#i16D}CN`*Zx%6%;30sehD@9O%^CQy`iJ4z@TGIv+PcMzQU5;M~^%)ursr zvFv^r?fV@{CxkgPVJy*pH>@(QLM>_7mZxAm=GrA`M>_u@WZRVF6`JcYV3m$CK?wpf zk6_dxg_Kj9ethrV9kkRbrKoc$J&z16%AQMLkGDyZp>%vl`}R&BAOp%Riuygu)1jyX z(;-O|TKQR!SpY6&=X?^XUC(tTC;22%CVEe?FC@8cz|M>h?}g##Hj*CT+k*;}wa#IV zyRjYjBTeTtK!xGvG0p}wf$YnK2sGlSnEH%IXIlcx#DTLS1e6c|S5(QCz||R+fJWs+ z?f>I^Sm0#zM;c$#@QhbA&Hj(@s+P7IWi4S(p7PU3)i=PBsrOGTI_dq>yT76LQ&N>; zxD+qAjbHTFD7?ZGBQAV}BN`9Q=f=l{2Os^Z`NVuO7vo^YzxDaOS?F`j>Fs+D*? zF44iMXN5uWDNTw33&+qH_u}R+=#&KmRDAax zJOb?^62H3>n5(x@_mB8-WPZuG{F|atTg0g$?_juq_Q)oa-DtR+oc^*%c}K%?8|iN# z$gt{RpD>DTginS=Qe4A1WWA}k(*B1ueEpUA zyzrbj%Q$M}IV*9)vv6yYQCZeM zqXi>VF^@UTquWiXFIq~B&UbNxrDVidN>Q0|+khMhIxwi*qZ5*5Zowkam|{d6AJaLw zEU^Vl2HXGS#hfB`R|K62`9kk34d*$}e1cDgCCieJEbCv;`fHL|RkLWEpG{TW@|A}% z$HRCxcD&WHU* z2h}tOGw<9W9RGldA5bwG2;XtuBu&+~@QXe{Q7IG+vt(9GtW?t|{c?0yEt{9HhO1S> zTu!cwMxHc*)qAAP`s~+EsRTwE}rj66Ih4?V7IgxRZ9b zQ(Yc1#sEeHOgzH-|0N*s___`Pa>Wj?|#dqcF<)z#HiuU@_Pd%t?+ zY<)ejaQ(@C&_BLnS%0IK)yu=nd${wvD1_Cuge{!J?%L+*bRF|_yDpw?;tea^ifw&l z2~SjxEK!lwL$_NK&O@tFo%}suxPCI;l`555=7D+dWK76BQt?Q~S;|H#+mD45>^plh zm5OUrcMsSnBboA1%swg`GsOm4kMee_wHNEbc()m4!&X*y(pi?|^Ovoem`pVo`!-9n zXS~gJzJGhWoc+;2vVEy?nmX$7&QGSzLSWFmPkx3-&ieq?l>X<<}r zFEp7=znrnDWi$vrh2^YH!!FkEXK6p)8)H$JE~4hu%f-ukxbxqmkQPjAk$JoBnk5|k z+&?>Aj|^*S6|pI5!auURRap~jA~>=R?XEBVCu`!u;;km?V%>ZRWPmRh=WpVY*f_Gf z7sO@p7M^wSwzz`ly0|K?;dxP97dP;{B&u-T*NTnD+dLT!`1WJ2V!oTm$?rO!Jlbiq zM}s(LQNr__p~A;HW2gK^#$5QVX$<&4_Wz^ZOvev0xJ)xCVr`sLPBrA|m?z0WDXegF ztr|`d$mb&^bMj^3rFHtq=f5 z3HzhOSCrnA%F5J1Srsv&S@iB~3t~0eg8TD@$F#;~#lzkPT&PZyZM| zi=@_Z>*){k7DOSC(!H%wCi2$4O!r$!yxSTb=s}i#uep7@mB(6cjd=8w@5#LNbP=zu zD2WjdEwelfok4<@VKC7g9Ta{T#%Zj>a0@Er8z_9IYU4L61ADT0(q_&1n8-%|`9*cQ z$w{A)52w}>3r4qjAI%?0of|+b%~i%PPk-X7{Q|mxMT=O=uEBSQ_HS$xafm*+ z-Q^r^fB0qGUNStbC+ajp$1 zBQAQKES0^6XNae`RuV**1KePRIdqEvFdoYtrNCZ%#+q*j z&bhRpE|M^t|8_T7qfn>os)%NCkoqTG&7zGHcsPb zpa(w8(mjTaY9S_X8aZ>REaEBAOUV!AUXg(!)QXo$CzXx&2CO$9miO3)aEpA-hoeN^ zVsW1t%@FN3`&oALmZ6z>?*)nReI6&Yc@yC*g*7px_l4MHX_&9hD{JKTOAFr{6c|<^ zs((oBw0TUfp5hcz;#@XSmoW%j@t0Muc(d9|mgxK+1E=z1V$XI-JY>d_a^7sv6Hp=v zbhXbSn_Fj)4M~3!&8W8s9dA=XAexg2;pXHHMQy*Nb{uW2*Jy;OhrZGll>Y%mY`w6x z^%5!G6X)3e!1~3Hf9||+Ubq^`;M6&EUU=G@db)DxsGGW?kpK$k$eMbG*r>2gId`pR zzOGF@;i5-#>b>-jtwlSHTtoZ&dJQAJa^%b4*jgPur3BN+nbL+=nY{DB?Cd2el{qC& zMx=O-*#_;(XN+!g$uCc(6MU$Z9fo(j&H$mU&>;O6&GDTf)!=WF`TLeotg zcA)KLXzgwq-8YTieVieU=3eJhTBH%EOpTTar9Gsr!xMU|O?>+`?wp)mx3B%nvl|z1 zV2Ga=Yv`|NOkS+dj&31gG%spN;eZ`3sK>SX7LZ zM#b!EMHOd|aiR;)h_J(=Vs_G#nvtm!(u@)y&$;3Rc3^u*l^whOdEi}~y;Yt1KZC00 zOm3WK>{C{yJZI30UUpmLuF`>$yG*?lDWDiFH9B}F2goM|$y2qPDr$@R0;MxRq!Q-7m1WeC8kMOcNtH)yNt84Y@7 zbM2Mt^pKo>7hTWVMCceoYYM~PqK8q%cg{R`l)X;vClo?PnQx+k5VAEwD6df_3e{lD zsZHfm`eVac2~>q$AG`4`HgT5iK9LblDO@2he}?nwhp$}4AWxBWW5icwB2-k&rhft< zMKuiNvoNH;157p)IG(+6mPN~c|MenVvxs*WxHxYS<{(ZBd8FucrK$`BCT#yafgbf>ZWG04{{AfW=@OqEzfqUj_=sj z&+$YVRGf80X%N`+r@!vs@IBwF*Nj^mzM?-AR0BofD5<`IO7~mKLv*vuk@0`k%6~!S izXH_~F(o|CP!1$q8t5L;UQYUYjvx58@6??u?!N(&bVV%y diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class.cpython-310.pyc deleted file mode 100644 index 79c3989916d492348a70ca8e85b26a9a484cb005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9525 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha1_volume_attributes_class_list.cpython-310.pyc deleted file mode 100644 index 33cafc45051f2b920d62d0934210896cb0a1597d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7319 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 K4WVot%KZ=Ij8d@x diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_list.cpython-310.pyc deleted file mode 100644 index 9922466a425615ad76f4050367134d09f7a294f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7284 zcmeHM&2QYs6(_meFKT7Wj-%N5GHa)9Hn4Ur8|jDY7zrHPFx+em%kW{FfTB1fEoCmb z9u5U-u?C9DXn~@Ko_Z*Hu#URr+CvNUP#}K;uk9tL9s(3akv9Fk;V!k7SC(uiw{S7T znc;lA_vZKBym=c}fCQob(QKQn#LBF~s;X9Gr`Z&%J=EJJUS`wm&_iugZ&!F_t;!DP zwKAJwN7NUKTljJ`ua((L?3ns8#i#J)<-AsAv+Nc1rN(Rca(q-{C)leGwe~c7jlGWd zA@&A)6Ys<9B(w3JVc%n?@IJyUZ2McOeP`YcdL8%t&4?{}9nO-#4_6@z$?wab`LXQ( zruFgdD+~7Rjvw1z;Ks3yf}6<5egXruF*ybrYBO%}m3{X>b^I{G_Dh>HU#gAHmg>4; z;s(J+Hd$JTrRbjuK-SNnM)#*}>&`q8{}GpN-AtzdPG<Zws!^v)T#sYNA1GEM9pIQA~YM@W%S>B8r#INJ!iXi zH)1@1;;#51w7?HXTGOge38Fnc9z>oSIP0#69d8`>Y0VjzRmsVORdkfJs!lGhY37qz z==z~6BOypVc8RTCO3j!DE0ey7D*A70;xJzS`Bk$Mb$N3&@jVfFTuQ%r_s4M)(}R?7 zb*>k&xVg^5^=9BNH+vhh6NMKV^XHl|h@0!V-d%T<$IZLB>1uj`57W?8V!+TL!W~TH z#5u-^aRRwRaBB26(u(8wp)Vb09#q9PvWijC@yl|QvU-I|x}}?6_v`y@M`JXnr(?d+ zLuE>Yp)Uzg18q&i{_5^mXuif}tW;oZCo=N~#oKqmNp_ShJ9Kjh?;$X_w(7XMx@=8+65;W9FTpJcjvt*C6#(8{>~1_~En2!+}CO&ooPyXVDS&lPTW9C6) z%C3`@-i5-OXi_M&tUWE8I7$=gu03wk)OnH{nSJrQmr`D*Gn^a|@(Ia+)0C53n4!sn z9hu-?5$;dCDId#4t%R<$o(_mlsQqPR{WJT@Ofj*i zw#TP13!OJ>x~M5nL=!b>Fk@5yrLL?1JQ18l1$TDb3Ou7^cJ%)n+^I|<6eXD|JR?!N zAdqbqwkuPDXV|S)f9`sS^T}t~L1wSu%Cn@XSvqTX6Tp#t*=24owW5$O)lKE_v}ZHN z#EEf-g7by(>Tpf1J9Hdg5dxkR!C<6)wDY^q0BT!Bim5PDg(G6@tAYO<*Ff^*UR(ih z&@6NjpyLZ(+E5U=*Fa6Ao42kk-p28sov~=akj#ldH2@kz4XzL zgA32vQM-i0F7z~pYiD+njp27coiZUopvOr-KQP3{T@ll&Z<6!Ch|?`5TrXy z{5xd6_CS}~BScl!j4k~`?bG)@F&-EX3KB7ufw5^kFr_&#WpUFGr({up8ZE5495w98cACM1K?4P-% zE{~a?nuTQ$L+#&M45?N?S|q;6x=Q$KOvl>Q0l3@3hXF+kj8NcUc(5)GxhtsWSLej25xtmxtF$SVglo=)?e7y`VW_ATvRcm_!0`) zG-{>2DL<1_egYv`1To+ z@_=gk?ANAVpF(KRzn@moUnoB;ogM~!9c4Vz@+ty-5Kn6Pu^-0L4LzQk9(?x>cBD%=KHjQJ3ML{A2iwwQ?Kg&Ec ztd)$~f31>f^xrniw(@8WIcExx^+H@wp zIeq#evIF2H8&NN|=&2v2y$#{PJ5Fjj4ltVpRIWJ=Ej|2Fb{zaAgzbC_YqY0HQz;h6 z9a8QiXiFDvGR diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_pod_scheduling_context_spec.cpython-310.pyc deleted file mode 100644 index 38443dba86aff2360f5a5e81a279fadbb003be39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5426 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_consumer_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_consumer_reference.cpython-310.pyc deleted file mode 100644 index be3813be59b74e1a7a20ddc782c84a5d82970bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6877 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_spec.cpython-310.pyc deleted file mode 100644 index a1d3250a9cf2c8b907007aae05770942ad2693c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5890 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 W2yc-^jVRe;8YQcQymiGmp8F4M+6pBA diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template.cpython-310.pyc deleted file mode 100644 index b4be6267fb5922cb4650d6437dbce7260a4f4da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7031 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 Cyp*f} diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_claim_template_list.cpython-310.pyc deleted file mode 100644 index c15249732835eaed61a063ebed2a0aaac6c30587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 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 HcGLPVHvW?* diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class.cpython-310.pyc deleted file mode 100644 index b5ae05f8616e0b32f371118d2a809b25d5cdf53a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8763 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 BZ=(PJ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_class_list.cpython-310.pyc deleted file mode 100644 index 0c1b999ac6208d995ae0255172195e6bf503bed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7022 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 J%f`vve*lucqQ3wD diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_handle.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1alpha2_resource_handle.cpython-310.pyc deleted file mode 100644 index 35e698c4187e23650bde69d8ef46c5bf61943ba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5630 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 nE7yr%kjftoswIL-xSS&#NV`^X7fO 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 Hbu{yD&oipL diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_named_rule_with_operations.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_named_rule_with_operations.cpython-310.pyc deleted file mode 100644 index 4e8a9c330215b1e8d2d059824c4ac73da95f69f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10500 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 Sy3b%+m1+goRc5Tch5rFT7p>L+ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_kind.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_kind.cpython-310.pyc deleted file mode 100644 index d18bf40bdf2cf324a3a7abb9bcbfa3817c97ef8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4370 zcmc&%%WoUU8Q+~N zKRdChWz_S(0_UuD!!DNI%hIiQdx%TnxQM!ElY_=P`0~FZlNMNP5qmq%f+ZM!&Ocel zCB~XsMXZUM@Q&f3XF)7ZTQyM^OJ>BEK1P;LTjGjXIkGy7;;MKF zWnH{1uAy8K*ToH#%i^Y3MR`S3A-Y$JmB$-hsl$y=LlyS#$Eg^7+5Y6w2b=s+FV16ZOmit>ZG=-E)eqBQm?Zn?1d^1qFKNc^w_@b4Yy_9+MOzMD@tN0OUv93OG~^20|Jbpv^m%>yda3vSO>v6Xvl9M^H|l!&*W71 zY~Oaj9j%?`UGsEhWMkE7qB?yfz^_TZV{69(^X>38bl;OYH=vneTdCxL>V*U5SqHLL zK<@-Wgm5wtgy(IQ4F^-pLA^@m*-%9?=Utg(={DC{lYf-*txWYpP3PV+i@;T5Zf-UC z1Nn3qD=C_noxQ1~9;%eoO!6Od3%UTMO{Mn-a+5<*j9O9OiLE@a3IH_)&=b+5(?oUpj8JH6qbC!s2!8>=JbWR+l!lrp{#iv~kUT4dpFk=X zh0<16z_A7^Wn#3M^!1!z?xD*F#`iDP2enKa*`xnV)qw29i{qcH{Vej$E|&uS#UTAc z6cGX_U4rEWV$;f$SB7f_$z&HEQa|DwYjphrj){m%0jyraA{g_3O)>lZG@pU>{!h%e z5`T1h3B2#8q05~9!7q6$ zBZ89ka|~8dh5WJQpXpkJk!3czIgf12xj;3|H&l~r2Uab@D(GGP5KpEjhJq(NghhW+ zlJlftt6yR2Jj+Sp8r>-f{(>2X6pzgf&B|F9j3}v)A?BB;0GPIh3gtD5k3kxkIkqX^ zrRO1=QB*aQJl^8nO!s)!-H{RExKK%sa4AeaJaH7qeu{QCOgt&QWl_O=sm>v!s0M+2 z8U$Zrwh0k^=GrUsI9ks8(U)+{CEl9i;<8Ja=L}usk)kMAH7R@E#}mz|41&MY&<3(O z@-JsJoOZk2SRqNJVINBhKL~)hVM6tK5YR!Bky;SoNehvZG&)P9S8;c!WkAZfgucR? z7{+}Q{T0<5?*cHCl)gl(LCUYGd7HAgDLW(G)Qrm|(U4~5bUDv*ZB}I-v#Z~rMDADE z6=UXqv16je8RIj4adF|}A(JWsZc=gY`sLS_LwM0w_ bk2%D_2$u}HOJ*-8dR^xEp6#(ZyXJfcfCo@E diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_ref.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_param_ref.cpython-310.pyc deleted file mode 100644 index b7819ee9e08c0af3794451857542a0c79bd3459f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8444 zcmeHN&5s;M74Pop`P^N9B#yn#XW^j0MBbS=0TNawiWSFE6xbNsFui7X}hO; zTwSyFuEyf9z5o{va6ufrxA?@B0|##KH}sWL&XG7EApBm{bkFSUPV58;B;;9jbye4^ zs#mYx`@O1Ho2;xfEc||JU+WFeS=L{vF#B^+cn42<5ec_C7Pq+**&SQIosOg5rA`U& zQsfTGow9AcZ*iBG?_0bqDto0)l{?q1W@Yzp4Tj%`qfH@Wp+wry<&A`Kkp?mxsxXP! zP$t_U7o2^2OTOMI1|y>E3^__O>uypQqc z`3ra-=P&Y?@IJvA{|4SCc^%9Ca(4XV3!6gu7q0r!A6yf?-Ct~cbmP5scB3DrEQtIx zWyts=m9RrgPU}!Cc}vS4Jv>t6n(%Uh)mBXKQ0a9wLk;|RSMG+>CLf=QiI#qVbNG7XZQTvGO;!0vq8c| z1pDlTF_b-wbK}@(E=giJTaA*ykGySPrd}|s-dWkxB5dfFk>PV*A(X>Htb4f>p;;jT z!XS)&tj1KRvWg+K0GpM}1$pnNI#~zRLrWgV>+fm1pA1BMYZL}D34~H%`_@}&8{Gp< z;;pq|!qfJ)h_~BOxY-`=sD2W^(Yo+jI}Mds!^+?Cw?x{$Re)AIh(druTT2E_jc%KX zc~bOR!=0?=d0`wX&$|E?(sM{^PQ}KbNs*&+jo$ic*zOm*t8?;i<(&jJI>>*Nr-yXq zb5fkKb<@K7+5XE|kN1U2wXT!s4W7ZY<~u$L2ML*VBhV8FPCF2Qzcd-iK(I{#k)hZV zQpADaEyg~I^*CLk?=rx0H($jr8;nwgHY^qDJlh;8HlgxkK1=3H0aB%{l8L)PG)lv5 zL5^T3qzXmaVjuKaf`P!B?u!^qkjP?)QH%<(bBU#3F+%IyTG=Rt=JvoDte*LN5T+XJ zrMNv3DZ~}{F)^7duW>i%P0?IwqzTu(P(=JZgD2RgnwfcSMt*$jJfmsl?MNJ2=ULce zUCqpgVa&TUg`#dP4KPKL;$go;>#;6{8p)WDa&|!;y`t2Ze(O^048=MF#%V;PZx3xr z9v`n`cxfXs$q6bFeqF)yIT?4QzI$q3cZm6bD)S%Z>Cp;FJ!=S>fQrA0s_T!Xl*Szs zhcpDqiDa+y6TkdK4avm*2WqI*S1-kXpo)hzaYH^0b!j?A5w+(e$ez>2ALEnO#ztcy z5Xz^hBisMDGzWpk1hxJ=+G+|DDGYR03un3_M9d+u0LK=)6h+CMltu7c1$LyumqA~{ zkCq~|I)PhFhaw1jVKBu4G#?J(Sv0{Wz%7TJIk42r4@6{_7|?NT%IXyG2L28Kn#Mis zoXuD}gjxP{yb1Ok#HLu=+%Sp4U`NAQ4t9#RYIjPMHZQ6S-i_LIN|R8r(RrV#(%BZ0*1S z$w6%U(MX>xv|lKE!krK#Go?;VMbHl#{r$N3;^?gM!uW55CEhc<| z(**9*pxPVKhIHU7sDvNyVDmdGuR@j5^XyJP1dZm$$VH1KE+p}o4r4|HU~C@C=ll*~ zFZ~vHjU}?pQ-y(QQ`J6$b|Ih8_h*poo}C}1SfGV&L!L&%rsH3Q`5tf*M5ZCu95lBv#b`RH4pzMnzz zNEiEaZ0L$pM&WY~o#wvs*~54eI$j?lPNoNk)Bv?P56l3$K8;YBoJf8qA-CSu z8-OlZ5j+RF(m;>)g_u%<=_Qe4#z9;Y=E?=t?LwiL910l#`;h{!-7lR4>wogSC5YdAQC5@e5a zYAL4vwKc@}q=jB-nKbt(uSB5&MU~nsy*lre7BlupH}&h;GtJ_D7Mj4+Z#_}^{~M*( zdN8&0L+Wmj{cC8;oS7Boa1_*^g}&$KDIF@CJ5SNKpOH;G4%F{{THt(vn~!^vDvnYI zLKt7Qn_{k$FveVzwipDlj1`*IQ7}N!)?eaDVYF7Ib~wtGGxaF5-`y{^rg@VuvG9Vo zb)y)06Qc%sX<-LnzUYhOupyttBy$Czna}%r`t}<{&cw8rj(+CBw`%y(*8$M;LBj+U-z`Jl0H&9+92dO|;@7MJGXb7+CP8~g5@EVJ6h$RBKS|LsqyV^Xiv)^2m&&rEu3UDR>%^lfBJE8X#8Mqeoy zJ&W5PFnbbAm(FU|&uX@NxKz`OyBnX;9Ce3M=blFqJi7>C59ZjGFQM-Dcv4#HW&89O zuH9V1HAr|jtAk!rn>1UQ++}$LGig@c!UYbbku^fZS5xI9`kT2Cc34?y;1A^s=u3~E zxg@`=tb1ve^{z9km?LcF>Mm?AE9)J`JZB{72Y7VA+;vVl4I6=R1jrqG`Ckq9*rZf( zmjBtPxX$jG1+qRQRJy~|T1^p8qtOqXeQTd|%HD0w>J%cSbXJ#Q2%Zt-`=BhV+SVENJIA81yjA;+BE(?@U(l0!@rxn`Pd7K&<-qJrJk zD->kc40LsjrfazAHf>4Q4M(9MT}aTBJnxU7(45qq!%&zL9fCqKAI-~)$iRGT1@lR( zba4dEAj+{#=`FhEb!LoI(*C%|bU4cdV9c%(J4ipe@~|XH%O&-$MflK!0<*G??a!%4 zR`EP>+w=YeYJKt1a9sPu5%M%-UwaNEJ%?8drC2lvisa~d+>me31inMbL4Qju$HMde zOjU0pIlTCWpjqCaU-KziC_1coUe@qD=-Viw{Ichf#3nUW&%@O;7VDenva>=)72+5p zJhH@-_?Fcsptz&s`B?=g2Uxbgmz-Xq8LibS^Exs3Jxbo9WI79-(?K3uB-%-*SCG^! z*LEsS&4Fn;cI6+_T%+nd1EXy;Y-j0+cfDcP8nxA$TXUDIdf}TjN&i_O+ek7;3V9Bh w&P&t#wwAeX!~Oou-MP7YtQeg#3Umb1fM_Gaw+R(fIx4sh#>eg3vU95RZ=f%63;+NC diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review.cpython-310.pyc deleted file mode 100644 index ffe127bf2241b9bccdb52f8ee419bb3683733c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6775 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_self_subject_review_status.cpython-310.pyc deleted file mode 100644 index 3d0903b7dcad045a901470a26fa068606ddda59e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3605 zcmb_f&2!tv6$cg|3Bsgow~oiYq-fH(W;!CHcG{+@>xm~Ho=iJT$5L`&+d)9=QiKfx z@a{s5IMhix_0)4u)=_^%Prddpz_q8GJJUmFTIcr`B&|qJlu5hNequk~`|a<&eayRE z-$MF}{b=&{u4Vm$I%kuM&O6BJ9tv)aEN*j_+9TW4Y{X3Mj2zTX>dqRYhHX8xxXT;I z7H^2=kuz#>wqy00^MCmP(yz<0keSdz`KCY211?l7lR_tX78EkyPq^U0-93>B8EG`f z2f;^$$f6<%9@c}o45nHaYI`u)OZ2oH_v3sv$m>Zu&r`MPY%aISWiJR`53>Aev>m+v z)3>(j(|4yL*cVdK(fK6M=+aRSe*0m-^SGReOm7ELq#{ycbF2U3Ul^H}QW(*;*ODxc ze{o`8i+JjP4&=OP88CrJi+B-x5i!(Ky@6xFRXkE1l)kE9CYvxKPp@P%Go zo{&wlw^iIr*ai;$8=-^Bd3=1Q2qOOFwJLTuvaFr%wwT-GI;W~8ejvMOt!aK zD%;huFsIRiZX!bAL@V z7S>}6_hHZf_E2bLXtD;bHeyiol9SH+0z*D>Puo)HQf9<-5&W;)(uS0_r9LRcHiY_k zNzwIrr?w=WP_cyLb?M%Jj;x3}O>chp61CO>$FyLTs7=`*NdDe1d&TO%?tE($ z{o08d6^lqlvloc{p8@8mD#D35E!>@kN4%wljodx{H5j%9XyKr^mh{@Ml0D zatAZ|3-_6KLTK0Hw6cxy2fB@w@aDAgnSWxPUA=Hu^B3fG8uL4k3?plz*X{+6WFe$Z z1Y9uw1D?eCOL~#LILJH5>Lv;etKl}zZZDwS2|g^yhS;!b={%(Mr>tsCBNb^aB_aXX zS7m>84$I2BmqxQOkM8f%#>Adsiw)C7)Go z%$KxARo&%#9uoId)!M`J2yiMtQAq~3m&KxT(?sdYnMH-XioMMFl}m6|4YLcpKG}8E zltPuMu3WQ)9afF~C@sZ#$q4x0Agk92N_1%qSugN<9@tZE2-}z?H zU%;5`#BiQqs`>tmomeNtID6hd%Q&Sa-Vnq<1ysPJV1k!btYqkjhpAZ3i8U>^Gh&sDwVg0m&lGw{BO229V^Fg?|xFam-C=!H$?6N-y* ziEFrJDS~7YjB`B=aub8Wx}^xjQ-nVsoI3Ir$xpi*fKO|$S2ZwS$O}k^p?DgGDQ5qZ zi0(7jzIHj<^{Q{Jl4DeQ^HP;elt*gq$~QhA-n?C zWT-Wpen73eRJ=(Ak?~AnUU9mxSCEZWdzNdnrt7)S-G=+zcUcD(-u7+J_ilL@?zGGW z_dMCBt-g<WA`skojmLd*m5S`aWjG&U JT8G_mz5p0ssD1zd diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_type_checking.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_type_checking.cpython-310.pyc deleted file mode 100644 index e3f472a04844862de2a2ee4b83a297a1eddf99f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3734 zcmb_f%WoUU8Q+~}P*7<$2B*j=%f&>|9o;#24@%tXk*Vlau<)8NB zzI)BG{za4J;$re4s=9}UTV0FWoTYZxHa+Vy(>q-Uy_34bO1ENLk1X!;%BjUGqI%+V zYn(l?n$^jF`~c-o&yY-9T8JcHQ7}9nYl+2#Lc(J8L zJn+ASNwWoU#25nCkQu2Z)-<4$6CUGy&c3V)qf zdF|BhRz;0_ynbq(*j-O}`*rTmXMBw}POYxb*ZBteHGYj>N8jK#_-p9b`AxoweuGz_ zoLj}s&$fF)N87tcBk^D$;)5jHoBX}=>F&dwV0VzHAWkEt0t}+D&Vx(JA&D)N(=t+e zEc)Ln9JBG`9D31#;E6UGD4!Ze**Hqmqw=!irg%P*LXoDzFCv+NJ~eqWO_cuYjP!?# z4Sy-WKkdGDacH)tIxz`)UTDlvAE2sVqnSeFV@uYwbz&W}DVtg$u#Oh%Xq_o$V_V*t z(#+-d6IcWU$R>AJ2r$?RqF|VFkpkoWBm-cQY!0wavm)u~;&z(HQ5qgbQibs{M2gMu zg8l{5P+dayGEA~a=Tef1Hl4y%BJG=rtYGEbk{-JMe$gJ}L($$FC$Y?9p>@(e_^oQ= z0+>^_w>8SSY9EU1u$?Bo_UK3t^6Zzb?YnK2Xt6bl;)7^UsP@6aYTI#|z$)5?EgUUj z6KdcljAy`UjgAU043jL;Vfb^9p{}FxSk=ZKT95g*`*QN*6(VcRkHt2Q%nOaF8Z}ih zm|FW5#BN7#VEK{I$^d7Dv`VW6Y*)Rt$|I1EBCkLU1#^aiIpTsoT#tz2L2&U_>#A#Z zq|jrTkpYRN{R>Tg7utv{Dm#)0+X=oI_{OYg`?)PiTjnJNK0C8Nwx0g}Z|s;IJKCAT zyPdFOSG!YJS5BCGTUT_IBKWB_bx+ud4b`!G)-zAnrY?7|qcwG3cxR;2a-B}rvHp>+ z<0JwSoqXY+S<9!V?tK50d}C$u-eY43rID8Y5OIDaq)r3^3jPD0#QJM|k-0mlPf*n@ zG#WQqLNqm|M zr5SBt3c6i*-{C8y%NzLi6jhPF8}_Z2uH9TK9F;sT>ew&oj4IY=d5Cezs;KQDtV1G& zpQt2LI?7^Exa2+xXBdqnvcB^D!X+6N6>|$>6FH2cijX@_b>W&T?69aDM(J3*N*PJJ zgR0&}Z=T}`edE*=8eMzun5eD5Pn-bYC*qL=k*s>?B zWo#)e5!8^dQL2C_WiqXKVrPJdNLd|?uuB)U5uEuj(xvnpxcn8iiYg$0EBp9lkg~xh zKe~c)Y`aAG!YfiF252n;El9ro34+MyhKSFDDB~EHlcp`-Au?9cf_O@7h2j338joES zLCcMoyfm4U5#*Z~z?^Iib5b=*U_c#2I<=`ipmd!r8Lb?PAn6CaTn~c0w=ZIZ+ejj$ zJwt-_$+;tM6VY_L5#@R5$%+d03wcSVVJM!3Atky0CLH_BwXa_x*K+Ik=EE_3e6Rq> zReYG_lX%&cKP4u}fLD;6i7*_~rzV=!KmcFZ1fSGtUZV^si-wpNei#CLYY~!ZQZOyNnWsE5(YmNAB$yd^%FD&lR|D{(0%J7 s5p0!-Abxo*{i-Q5+G>fC5)vy2f)g&~ai4siBDlNE^F1Vn4Yuig1)8(V+5i9m diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy.cpython-310.pyc deleted file mode 100644 index fd9923e8c2be516f44069d94a74fbe8ac312ebe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7793 zcmeHMO^n;d6(%X_kE`{6oOS-p*p6+bSt;A}$JyFO49777BXZz1d=OgD6lZotnkU-caJoyV_{io7^IS zL(XvK&Ad0?`)1}bnw_;Y{C=t5T9&V9+FvL${xgwz2UmO%3DcSy)0q+IOn91^wG?wRu^<1;aj3upF=>NmA@w?G$aS?LKV@u^5kw2@q zOZUp`aF#2wBkZVpV{r>_j%B$bdyXAfZ)W%m-aMb>ifoRZP;V-{f;TT@xgvX!y`#rjd6Z+Xu#=Cp<^g82S8+ecPO;OtA7W?NYq%d~XW2R2kFW|rQBCYS3oS0)g*$HG zGZ-dZxxzYrOcU~96!_j+|EGY0SdM5?1AoPeLB_&GANE#mHM?ZQt za9za}{{+dP!1Ny4NNrtvSQr!rngg#!3eX{iM=npY|6qog=Mt)4DU4=7g}pf+-^ z4-DkW1GGYJVUR=48lW|D7X~JBGXqFL?#dvKT!raN;1WQ<=wF&<8++b%?M}pa0IFE_ zL-?H^j{LMyofV{4G8aUi8#t@3h#ha-(~^oaZqvM@j9PXwtL7bL)}k}C>n!t$kUD+fn#dZQ;#&>`Ol1b-nxU3XkjeGy1H1fe(7BE5o2^>POIj2w=k&qJd%=8(D6@GdeW(+MEC5nbn}aTb=o}DMzTE}az{UU zri+00Il*+G-P17fy89m#U*|Gb{x&v6DHFrXr*=4r(rJ+a5eyw;h?umGp<4kzvDfAu zH|t37uHZ4Osi>KXU91Pn$!qo!7u3*>+fgrIHn4@P#H!#$E1}=dq@j;UsS;q-iX|{A zvC_GLjVbBzHz1PP9d`{4i9GCHI3__=iEH);k>F^!9Bq;o7PuOaQuCua7P(Fjv$uw) zPzt{V78G%v@l_rGCoA)=@Y;ZjCwqd|VbOUt*pSwnxYl8(p=8t(9*=i2+@j!U8xq}e z`>U7|nhp9b3c1$hi#7;U(Jhrd(Zvk#fZHM5l$)f<5z3O=-N5xZd3T}Qe`6{d#>VSW zqtTC^=~4(JpH$Q}q#yU6K;hE9P?&BdNTY9X_pG?rowk8pS(d*XwO5=gQX(n6VS+zv#5wR zuD7l&-9~BZ;V40ql)^Tvf?-B%Moa{v;UcZMETWE*!b8@LKwT=6E-`l8Yju3^wBQeV zU^XJUntjy`X~WdwcCU-g31>C?{Sc)c9$a-}{eVy73>gs1GJcKBP^iOM>-#0ezRxT*h1w%HnOeV?72vPJx<9mBrm zX4V*P7siiTS(n%_%#zZR9FC4TYq-)~LunVA*3p=!xn2L`Y?m-8TqltEFh!>sS`a^~&Izc`2;Kz(JzW>~p%J1ZirS}`+MA?lc-n*Y8Umrj z3}-4Hu?1&T_6xG%%Sfi8>`$90Q-P1K9B2EJx@V-R?#8ipkW4X&%_xlXYkH}$c5dqS zAq`+mMcb#FXxpRe6Y!=a3=y|SY5T<7({^l#ld#l?-NhwI5yjq4Cgon3D)>4UBc;p()LQDf8=wI3@EEp)qDW(gxTO(*TtUsVIS-yYv zmO7fJk&HANhG2OYp$H%6d6&)y%=hFrZ^}WPCDMxkCJ}vMI{GdTpxp*u3@8?3G?Jo> z9BTi>NQ!MYcBK@;MhgV4^^dk#GAUgQ+)j(Rmp?|0n9kP6wf^E%cn-U$T~wjE_%a?+ zF{-DXM}8I^q$59pSU5(17+T~`C|yn{J(lr_L1|((KEv)}|DFe$De91HU#mLK~eTrTu@Vg`OJ zlU&E`ic^rK`cF(UXp&b_s(H1IOA0ul^#YlgN`&qtc@_KFIx-tVev2z6X{K?^uyh3B z5RfzU%Kt3$z%W-ZD*v?#rqMsYTjOuDGJWDvxTh5_#r$JqL)#$K>HXR`>W1gf?Btn6 z%jo#2AX&{Ng>Dz8RGAdJ%aQ1~GM$PE?3NUO2Z;PVsYw_*VDzU`T-s)v7Svv8K}!p; ztr4~{{<-(?t>~^A(OngRyPFR0ZdDiGL)A&NOF>f7(Q!US4K=iqv5TGLsMR+9B^OkK zqjeEL)+JmpE>ip(Lxr&iI;HpNJDD-&=%R;U;IiF{WP5m&hnFKjh-0`Ly!Rw0zC{|4 zbY*-(kw^81Fwo1kvIKi@XV`l7LMjmD6*u7+x=1OMC ztP~YkswHuS`u`4+#1LGZ!$b4r=BI^P8u!6R)v*tj=~tFQ8d6F@H$ed`4XI5p6Zysz P7%>g>kBSO_B1< zXpt41WC7; z2R~c<`1Z90_jV_gZV>rWy7=(>Dsi_#fz~I7LPM{~Exx?xQs|0T6QDr3oP|oScQ#bl zkNbWUt!1611*t@9 zEDMP>x?$|ALFd`N`=k)@5v^* z$4ugtxn9C#bCt)d%_wX)duytb#1|U#=bJKAe6HsQ_x%+voA+~OYX(sW=4fgyplN0R z5O!<1#wtehEcO&jXs-QGn$828;&WhB@ug4wUoHw3yz_Y;RI$bg&`A!tRn$ z4wz;{Ym`OD&|BA*ZX-7%0py@b#&VlgK|*7~BeDV)ago(r7D-q4!eiD;z-~H`?Mklf zx4R)2UGN8ekRNej!@c6ibSi3dx8K7Ng|mkHVT{}^kFNNVf9-Tfiz??x)6)^&^H>wI zczSkWx*3Ad@f=4QQJUvygZz~8Paqh)Gc6)$%Dd8=IElXMmj6!xFDJDF3AxE;H@|_} zPCM%~P|N6y^q=wAfmUJ*1!Q0Y+;$?cQ+oL`0wa8F-CHTIL-{Wv*o(dff6cjTd~E*8 z{FR>po;i0sukLf*j1C=>H?MqT96M^Hf}L!Vu1*SXcJ`=De;yu7u$N^H{*s&JxXHeC z>TKHPLWZz$R~gF2seO0+|B<$%G8e^ZsB64u>YL}5J(Kc&GFGWm-4k^G$U#RJw67|| zgsLVFy3eEQ?O>bAL9qm>Cb2jR-Ry`(y21aH3SUAn{r*6r?TNy_($SBYk}eGL7YIV*p{b0=@Os>{Hq5KW zr$6|y_0W1)Q1EpOt##|6t?Z$#itCm*tBR^b?#xHV&|bIJODj|QHN<7l zr;{NI1GUZE3J_rb(tX`pOv@_qsQnWwEq8qBD<#CMXaNVL z`Pmjtrj?74-)%Gh(r>9_x@w&?2A8Kj(2PcET-3fCc?lm`Z+gJp1$Z+T;51yD5aK9= zDV)|Koz~(k!(*%kvKK!mzl82k=&#q1ge*4h&fP8Ih}Ti}JG_!GP%}?{X`A&K`0~Qf z(kki;Y9rIxk)zhr2Z6M_0YU?gcFD+{Sz}A`33jBsoi?Lo`6^g|yV`;kKgEa&I{i zU0-D@vcpcCmH-QM`FoO<5Ov5JH1;74nr;(@y3xXrqHLcVcI9uaT&p_XpI_GptzC9~Z`rw-Gg&r=BAL6y|9vn5Qh0^At0N>W3zU z_vyb7Yk~wsA6}$ox1FfY=z<3ZfM*GpGe5fiq#)iVL8y1F@+a9PH!Y$*7h7PKmOPI? z@Vq~wwszw=mTex{hyJtX2bQg%W&2hRuH9tQ{&$k^ws@BW`yK_)o<2yFn0wxzsOWtJ z(}O5$ST8QpQ$I!v9^)SCd8y-hz;i#M@0#b)3`Qko&%^&cSX|N$Fyc9;wsX}vk_OE%BhN7v1?@wlzK&6qA|&ToLYj5H}KIqv+191 sWS#*0X*ThPROXj2Wln|+a63#ITSlhBOT@;K&f~U)@!^xMS;q_i10{y`c>n+a diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_list.cpython-310.pyc deleted file mode 100644 index 67c0b893c7b4bde05ed7c1be68ab06e18e3f5e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7472 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 WS$Ku)b4u42+rs*YvCmq^a{mW!2tHW= diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_binding_spec.cpython-310.pyc deleted file mode 100644 index 40918e2ed0d18186dfcfb0c9df8d0e81636c6aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11086 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 DLA>oW diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_spec.cpython-310.pyc deleted file mode 100644 index 76ed6465cfe17e6bcb47ad9b396e9a4514df3ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13627 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validating_admission_policy_status.cpython-310.pyc deleted file mode 100644 index 4a6ef9ab0e9146ab0cd57a5812b7f7fbc4cb28c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5751 zcmcIo&5zs06(=c5qPQRajAN%s%p|Q_6d%q^puV3%VlTNf>9r&$f8R zMWj&N*bP4H@+|5m!A;Yci(p%+u3T$2w-UA8+i1jjrD6IS$%z*2RmFyS~}kh6sok;wU2%iusrT{c&63@!BZYdzOvf*fyyhT`$I|0OtQwd!`UbUn{DldT?z!g4V+Pd;N-{{yYu0*ftTZ@W~pn8QlM z($7n6msMDmdAeL?7n#o%_U(3sSJ@(4+PC)Xw#U7@HMTsiRoMx4Qh)Kek1wajwJJN! z&gd@-d;wq1j%w@$c5dHlFR~ZedE`s%0(%MhGW!vG8TkqJ3VRj#NmhekgW}Si)eWwq z)jLs|Fc6n*U1Oa@5>r3Q(Qv{Xe%pT)(jvtZyeWh|@^Q0EMWh^58L9lK{rD zZfK_8;+s$9weI*{4l%2MvqWiunx#5X){D|~*G$$wl_paC;m#^#f_~WP$3-d0RQt@3 zmi65(zrM}md!VLXD*SlVPZnqL4avn0XW?+$7+owW3<%@l2vLR%+owkzhm@dSdy)E$ zCT_*lZ}d>v!FwIA{1cLa%j}*ds><549=HQ{V1>{-q<{rd=p0h?L0TT*OV1Xs45(Ha zpa*I{9yq8~2k42~%Akar$L!nCVhGOZU!PBK!AcMXot*I$s=AqEzBR!o4VPtcHXLzfl6}kJ6#oFZgls}5$s&~t%}!ClDx!*{UM^h8 z)6FBz!o#;mmRLgezt5W6d51T*dPywum@Abu@BK^R_GEsb`8^!mcEiRk)#@4DCrwObD}QW5&@#WqJulUlGp+)?EwY zwxbWwe3L6_v|=n0WB8zobFMnej*?|3TY4yHSk12B5-iiprLg2u1<_8Fq|rvo1A_u> z3MK6z3JlkN3fs^Vg2oa5c;iXStqHDrA|rb;wXQbf-)Bp zsDZo47LjSxnPi!&q|Ddwenq-bsr6UqWbPpYV;VVns7$XGDjnHc&xd*(-GE?kKf7Sf zkw~;1Vd)Pp%5Eg0&IEXVD4{-0rY&&_ysbM%q$I;xa{V3JwOoDwiJB))(nNOj+N93S zuzb%``3{exp>`SHiJTh1N{Kv8xtLF%p8rk>R`iS%3y1BbDiNl|=@|?s3-)_zKZB&d zHm4fR*#8stNu0&Zbtn4Cq!!JX;JBiiR;Onaj?s`AyE3XWcd&JHfX+d5_XC}qf z5(pK>TB46-I&&wiAGO8Q^a2&Y*YQJTddZLtb)^6A@u4*31Uw@FhwPs^DW2yNV;&6; ziy=7ICtSQqj4u$)voKChO^#RU!@}#oH7ClaXn7jG`(KQYh^cYMWwSrQScA%`=?osH znvT1|cO&t;nA{RCf{i2lO>8}Czo~6^#A?4bg-x>egj~X={0oxAdSEN-AzbRa&Vl`& z_3^L&=sa*9loTB4fwSj4a24EgRo-*N>#D3O6b$dfZQpbDY#h+e73;pIs&L~==+PLs z54{6AxJ^5atfBpys$rySMn3cptjW=E`iK1o`h~6BBmNS^anC#jaVXaYcs>@+t~uGQHlD_kU@;{|ktVLBlD~Qo5ii zx}d4q#C3zF$8CK{r0WTVE?qzsq`2_$J4dJyJ!_4{H@?@oT^0I{n7+MDQ4| z=_W$!0C}wpkw_ZyQ4lu96)I`s9mKX3G%n~)K~bEVrwFI7~#o4M#j$_QkJ zAuK9@AEx}Ah$TENJN=dUiNVOnXrWm&EfgFA?G~XORGfbwcSxV;eSH!{8AI7r>b7X0 z>nuA>VH~-_VfYX|^aefW7{Qtu` z)!i1J`Y9527IiRF;fEnCZ7-$rVi?l;!!Ok^#5EyM@fsFtFOeE28$HEC()|-?E4-m~ z-qjIdQIWWc0Qbqp=(`M~3mS2BHz3}m%I|a~jsc_iblkBCq+j=X>Wp*K-%E8WeR;yhH2!0!iTrE-s?bzIb@!(J(h2xLTdK k%rSR86@xbet{EG}(O@`smCUZB0NHi0J}x>IowKF?1LMFW8~^|S diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validation.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_validation.cpython-310.pyc deleted file mode 100644 index d03d7b7a0c88f986bc167c7686c3f7586a1f1bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15391 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 YTBGn|l8+Guc1mWoRyC^TvU#!iKffmJL;wH) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_variable.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta1_variable.cpython-310.pyc deleted file mode 100644 index ae0fc614f15940bddf2e8762daf2d2c1b654081a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5048 zcmeHL&5s*N74I+GJsnRzcC(XYg`gCq6^0o*69fV)M7zq)Mk|mPB~cC*&@OkCXF6$j zJJsbOW1I^!2ZT5vAufnR<{0rG^_A0}SK@%Q3%^%A{)lHL%d$5_TU}jUUG?hK`}n>0 zoUN}17Oub84+ej}YFU4$m*vaD%lo+VJ7|Q}wS+C4#O~VW>2w|Qbh|E|ZsH9q-HL79 zw}dAuN0z9_>Y>}M3Fo2Js80S7FkC+!_oYgumU&>_I~fx)k5oL;ah9@?%JyR+1^dpf zOr_!)-TndlWF%8QirM{gFjH(#>rvirwRU5@H|{s1Y}m@mNjl4teD<<+LMBrU#=gzc z>=|#fogduVE_Z*lC)vJKIc=Q{n8qt@^})|SW+IEmLz(I}Q!|g#0H)h#Wisq&r6~T)xBF>dc572nr}bmD(3w}PJZ9{ zJ=%+N79~8-89IEdGj>XCB+I$lnnr#P_6N@9hZ zYt?XyKt3NSnUg9DFXcn2DiEZqqUl6r$Fqz24(@xn^B6|t}_#@R3vGJ#DG;uHoFr!#}c)3glixE`=^;edoYcCth*6uit zR2E6Cnc8>PEjqfF$jeVOjJlDOX*9q7F*{eE-%Rx6LS+#2!dDc_ZO>*?HE zTTv3j8(QXgSXvqcox)f|b97MnVHl^e4#O>QkY7gQJ5?LMlQys?*H*M4?U#t@J+9fW<0N5y zjPLVgY+#6&6X{*fz+!%UxPoN&c7C=@XAdiQ6u~AL9D_E=p-~2SOLaVm0Xyu3=IaaL zOeuTJlUNv}Xr6b7wvu|RQgXxB_%}fI<-#C2(A8G@U?kfNZe*N}#u~QrA@^6dqWEA; zs%+}?N{-dW{TbPFb#3zQs@NC8jA+X2qCVY5uQ$;ly*{y3eF}er2i7%!?$G|NZF~)W z2c5e-gw7v+1)Z13PN(?a(DH~YK3uY^udVOX>h4T#f1JXwW5G)E9w5T@7Fz6Wvf((_ z28`hoy-t?OUc)npQ*4yT5auv!;K9snivT7(mODxTw#b+oPH9XAmI5wrQg6nm0CJ z0EICAA&pbem|R_j6Jp_9AW>Ja1~Bn*87AJy^a3C{|2KeBDKPIoM!np5wke{9XiY2_NmKhSGf>6I&A2FKR&>M7-vhR&2CU1jp#0~63oKq~V{ z)I%ewbSzD-z?q06{o1);^_Gj9+$Y~aqY+hwjlI{VINdQmOeuGAIz>%qA+3Mq6gA`~ zTx+G?!3xwS_VX1<7XF=t5Bq}O)kK)0_J%cSta|1N#pWH8)8=>4DOVZ7=QH}=oY5Po zZoupnFzwzjtluzf4^T83#=Xv`bVfr^nI4@IJbTDghbwHW8~FAc+&SsGZg2d{vl|ys zBE-*&HOyDECNI`cYPFC|G%sqqC~hE)B8c-i%{5OWS$IjD>%txKk-7$2X8*z?`4tsI zrBN~Qtf->u7$>^$3<*0dDkg@maz>I)h%-ujJm;zt*n#aKJ$CH+7lC*2KS9z6cE^YoKzv&BMSEsyjj+NA|uo#Tp<;IhVt~ISFU29r--@{;j1$LDJmw|ub4+s z4MX`X45|1xNl@T;_T@9=Sx)<}&)}Lfe0OdX=bgcn-E@veimEx)q~`UcjaW`)82*Vq zZKFA@{BlCW?Q}Yg%cLfP`YX zC)%LmtiwTrz@9z*b^p5W`Ch$dl-lqW{d=GqXbMM3^$m2o-&&N+%`!2@e^X2U`;`9y gR7-m)jpGdF0KcVx?h@kV#INW0fp7ax-MQ-i8%HTT#Q*>R diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_exempt_priority_level_configuration.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_exempt_priority_level_configuration.cpython-310.pyc deleted file mode 100644 index c1549f43180a66b7beb233ce842709ce7c1b3740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6976 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 B9ykC1 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_distinguisher_method.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_distinguisher_method.cpython-310.pyc deleted file mode 100644 index d43aa0b7d75577d3a4c79849c2d2d52ca9c90364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3904 zcmd5<%WoUU8Q&L|%M~R%spHz0bf7d&nM7pVph2p-M%?&;peS9~ZVC`>SIeEDxYBZW zJu_4zg1S^X_0)4u)=~e`UVF;9Ko12P=l9Kul59Cq8uZYS=DG9uUcc}ASS&Ax7Rul4 zN29M+EbAXMIa@qTK0#Ht&~R&Dahp4tJ+Mvh3>?$D0~fuUd6UMVVOtL@?(xQf#T&xk zcLz=GJhnRi>|Y^6`So-tWG=K&p_%s!#)V2`TI#gOSt*O1lnc&&vMF*QV~yc(mpv>+ z9+xS5P%jpejkPY-dat*c>hW~gO^Qjcs5j}N$kbx8c6?1CJB+=>^5SW{&hGu}gPZm1 zPsW1n2&w4lV#GA2^wgc-e#Ur_OeZ4O>r9GF#7eB)?EduUhUQ}`3~B2plpH^Q`eIj$ zWE_48$yxo5T`hlFOlc{5AB;{B`~V^efzh za^9%k{QTxn==j6?S@Gw)snTh_IZf4A$lnM(F8J)P{fAHPt+OZNRIwzBm0}pgQ(drg zdLrSS=&5T2_DGB_l#|(bw}6T?6Fk*M8TC_>IG@H@wp(9Td3v`Lm8-PuCnU8+p|OMd zDXMxG%^dQZTC%CFeQVE|J98_7;iAPlT6a#Z$8AW!nf>D1CBW8L%q9gF8SHhG=1_i` zFN~$%X-Imxx|S75oJBjaR8ewP-BlwZsv-B3jD3>ku`Z+}e0AK)Qz9FgiS)5@WXTq~ zfA9Ck#YFU=i9{BO&^qmHf2?}A09eR3*UEyc-j2w3dRaQ`mAlYX{$cm#2R)T)u~x>( zcDyN6Z~Fvty(CLv(mlfmj@CMlMo@YL!cMgwO^n*Remg zLudBRw~MX2IGxxyxhOQIYBWV0&#f&BTCn4fu>3%1WwcKct6>RayWpKyp_}~823@j2 z)=J=B+(;a=7dU1$$FOk0)U+%MNv?dnBGt zQz>}&n}}GKLQiE*_&KFP6PErvu81Kj>yijtXMli#4Xt%-*@PsIY#E?422?lX;f-y5 zgn=S6^;@&IE_j&kPiXI=(3q-G*(wI4vMpP-=YSMI*4A)N`}SXK11iJ=sMC$#gE}97 zA9dF5nfUtuP+%F$cw)@qf2YLrI_%Hh|195$vy?NmQ^7`vbhQB9XOpSY#ybuL+vpd$ z*ywo1T@0?)u#OZWCwvc%n-EilpVKAxq=cs-+vqs8ZIIV_m4V#Bx*|AUZUw;h3y^JK znLZi){|$rG+OxIw3@&ubIkfLufBfYioIPjH)$SaQci-9bv^V#3W8aahx}kl_6b`Jp zw+}0UjX1Zgr-5$HJ?>&hckVq44y}`QI@!Yd9o@o71U@?XEIhQ%o}PP){d2Om#_Yx; z1G5_HwXa4#Q3|P3LNWe<`9#0K7r7x9^)aftiblh-xsA75b8vTv4|8%&PQPmE0$wuF zM^4oo$12uZN+eBiTb2FAOY*FOTUk6A^7!`e>0(08RcrR~MX0ME=-x76MBT=qzQnxq z&2-;5q5C?L1!BZglep! zZC`!v*_|bX-t>#Ah5eGwsA~B*^)Vq%Rn1Lg5)e)mrYg;qj`KuRUWWKmxs$k*mly9> z9*MJRm|GA+$#GS_6l$93$}?BkQPnU|c$qR1{6nIQe39o|aY8$^J;Wu)ZhsYeE5|e6 zY5ynmJ!f{~yNUjsj0r2o=IO!O-k&*#)*)G(J?oyeICx`3Wu%KGSU{LHAY7!C#vBpq z{j$U^T{TN!dlKtf5foNm;;`~zZn$z2pN##iIJ37eW&$V9@o?g|Nx-mbi>w;dU%OB4 z#n7{1;@U<{+y-LFkBOpJk%fGKIE@5q=Rt_dmq-gJl9|I-F_| z5u%rfhTz!O?wVwy@)Z(R$eM6dThrS#>QFk z^U!mafbcN1gXQ2_faP}6D7X{I9^FTdpmL;;biv?9r&({e4v+Yac;@$4ov-_~?bL>H cD$^5!;Kplt+$L9PvR}^$!oUukwsXb(8nB)P@Bjb+ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema.cpython-310.pyc deleted file mode 100644 index 96cdbf8720290de1a8f712d2dbe6120811597626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7177 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_condition.cpython-310.pyc deleted file mode 100644 index c18556232c4f1cca722e47695cd214eacc127646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7195 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 ROvn|tEv%2IYsosE`7aChMi>A9 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_flow_schema_spec.cpython-310.pyc deleted file mode 100644 index 87357551225e9009fe7ead48426a188aefe86fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7438 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_group_subject.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_group_subject.cpython-310.pyc deleted file mode 100644 index dc286dae574c9d0f26a50937649904391c3d305e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3920 zcmds4%WoV>8SmH3^t8uLb~hUmKu`*>Fd?2!Sb@L_(MG%3XoWOEakQWj(C+Cf&$Qjs z-KnZ^*2DOMed5HKQ+)Kl)K^Y>M&f`3;rCU0oY~mkUBQjA>)G}A9>4D~#p-Hcq5Rc; zy8YWLmi0H9EEf-x4^Y*8G~60k+~!VZ4{Xyr1IP64z(wz7-lQ>T*w$l#1@Hn;I=L9a5uFF9(o6TgJ0tf z-aN7gP0`{l?jKo)_P`hZPMfzEGam4jBWn=w4qrvT!q@l}^c{YczlDC4zs=u4zs5Z% z=iTa^Pwx$dj^BSQi)pzz9qx!k&;Hzh^6b$Ddp1rLOR`ughCw{l1v{r4lGvGYdPYi5 z#r9VU$87wlfL=5cJk>@6^;45LpT=3XUtd;vc{~x7tF-JVB&tQBv4i>{s=AG44xvpg z+0xdbb>PgMxfKDeXt9pgom1;^8*DqXyBDy{)>+IZ1s55Rxt-=vbDA$;(eE}SJy+ex ziX_gWy;!O!SypV-h=^23I3-w5(md9Mlw?U=xAK(8w#`H~v2tR`HoAYl2*<@lgrjMi z$RZJ1r{V6;Rfr3K`h2ur7F>mUBHs(MbQqTVdR*l1_wL;dRjS2$87I5(NT_i4%(%iN zO99@{@PVVXcB2ugH&V5Jd*y!RM^T!mI*NV_GE@hR?=)@vp$(kbw=a-SZ*e5Cv3*f! zOx5UtSesir7G!M4f5h@*p_S1siKezRKJ(W3Go2Z#J{^;vT zi3CJtL+brfY%o}fu`F8a+Oh?8oY>MwXW&*hct~i&qR^PC zQT8niNZC8K?95?mFusn4r#iI%WE*2cZ~ze8xC9V3zcvtR2TdIO->bfiWjrx#{*UTE zul@e)&L{a^oTZ$hoeG20Et2Tg9X6RNZCvkAu&sWPi>7e8FQhuuPu}i2i~>Y8}|xdI|r$;~d)` zS-=0~@0?aO%{}g7M{n-E z^pCBxbvoI``a|8uNrX~5`7$`RmQT;U#r`=#wlRC}sjUnP6a|C{uxgb z{RO_r3%aPAsOmZz4fEhO-fqvq-7!AQ$um0rs-=sF&Yw6{YaFXsYbn=o0@;H7*&Fh# z{QFrv8S?nSZ|Gt&zw6d){UUoky|s7W#3=OugZiYo{BmO7J0tccat;vu76^B58uD)% z(zlVy8REVE=ftPEP?{0aN21$9K$^Tkx_leo{(x$r(6O(-^6c&kf_eH`)y95FXH>O% znn6VbV^y_ANJt=&Do9nDD;?*FsJtvyx^gFRDX%WxuRM}r)iAdpK9irTno_7~rYp}} zVMkTN;Qvj^NZL<`GV)@cbIl3t!1fRT9lP`Iz*{?=HJ#4Cf~M!pzV#*YJ||eR3WIKX zrAGEk=h!+XY}vEkGPdBc5$BO=mY^F^#+ch8B{jf9^3W_x?9x@MM7%+StEEpt`wh0L zCLn+-NBCrrvgXXbc?sp%c8>5f-%g?gXe|OQNWSqg;@p-YVvEH&$GDy#$b6s3xQG^{ z7{pc-?JlVCFHJ1!jpt$wnUfLZcQAlC*&61gS`=469Yi{}sokX?8qSi@N;tf9n+*#+ zW`)UVVX;y$1migS_{5briDo|Gg*+$IC=$=3sKD;Olivy)&%SzzT zH6O0wFbwd%pYDQ5mqG*p+DL=j#2=ylTq<;4bC503r zqNoa@2;iG$H10$ZJ$3q}6-D@k1l4{6cMev`%F^Lfi-=5fg&y`#J>|YhGODIRS_`R? zE!1H70gbxUQ1ZD%x8cB~C#0HpQH^=}mS;On&-Y$=4ewRpIV&*LAh7*a|Avp{PRppW z>&uYtBa5yaDI{Gm`0nc*uU7{*{AOJGJyvJ+%^D>&Bwh>hj37ASS{@I`=b3!jbNs-! KeW&AGbN>U0Dg+Y% diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_limit_response.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_limit_response.cpython-310.pyc deleted file mode 100644 index f63b2aa5d500ecb0b2ca4cc081a40494e8d52cb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4777 zcmeHL&2JmW72lm*lFKzED~aM-anmkTAPCcljB6BVRo6(6I7ZNdNn|4jw#90-GZNQc z?ou;DK_aL_EA`N#hn|ZbtfSBEvFJb1+g^Lhxj+vEn&kIpNs5*!xK4ZQO7pcl^X9!b zzxOfBmzI1B&mZiq-M_tTS%0U&{NrNqE{eL1id$Wa+nl9#*ETKdGSfO;2d$I3{YtlD zTlXyP^2({jE24VhbZea5x0=<_Km7pDPlh`}WJU?B5@gbNPAks)?Yx|%^E_44!N!D4E}KE{ zogmBiqs`#%_usi$?*5=Bf&(EHZJqB18bjLZy-z+0cpeY?BGa3J6sd@m*tpsH-VY7W z6D|yEn=?)(+n?{)(jxBppF?w2r)d{U@8{WWvNwcK*e<5m^N)kUyC~{+sDuR-TcqBu zQ@1$d4tM{^x=<^xnqGy!#yws?wYybO<37J~YMt0!Pk0aOyfGWq_!3_>Uwq-?%hlnt?m{6GJgeagRk;e(Jt|8{2OSO`E|aA_A0O8=x!9NpWWOMI=c1Kq@U<5p$2)T z#OSx3k00FK3?B3n6~t+zRDe!2)OqmC*^xqLXV)@H+!DLb)t#C6L5^e7f#8WY2UKp= zkFsHurbi{Q?u`kDpAN+^$@ZR7b>S#2o2;nqmmdpP9}R@8K+m#@suL5;rw{cR%KIql z4yrN0J+x#^TPN1BGj_&S2>7GM>7d3})b1GXhPHfdOry$}p{{Zp+GC@ei?kPP1X0k> zxk!Qk-6R8;l57gTPO~P7hvIsg$59#{L{f$EJbVf-oJvy(NgSMALT1!YvPkFhT)L)P zxJsnE=Wk>Uq@P&w3Yvc%wtIPBwD*QdEb~}sowOhQK(#>%_Ll8!405j82O>LYr^!xx zaHM;AcB^&sowiD}*ce3dqi9d4_M@3ux8pQ{*|d#pSXv?{ObI%noM5LlID!OWlHpyr z0X`JGkL9tdjXzUU-?vAvFVbCWx-z!0YWh&03LV@(=v>FvLkkCBkN$E`Xl1Z7(OGHh zKZNZTiHP9)v+duG$=0Sv6=# zApQ}GBDhq&(Ki=LG~qR-Nz;e=R1D6Ev_UQ$yus|B@4t}B{L-Bo*#?n}`cw7%4|MgP ztEwZfLXIXYHD&CZFn&Q@ck#-o%dcOGAGu6~?C7rm)C@et$crJz95$+LTDnc{ah=Xu ztOtl->s#WXi1m7F_OdUcjBpxh#2lQNGN{EUjxyr|cSIl#MLeXaID``pA}N!DC`BuR zo=A-kiHz<=FwAt466%l4`uVlky_^LL4~%6JZ&E~YPjK)v;Vk&?7?MUlBDe)<5=p%U zG1!1+-m+d;&r>x|%?j>*W%)@d-+4JoVAqLgOKJF1MU@tS3kF z(3TAo11#CljI$H_SGKVz#0OZE6a5KLni9lk=&)4n+9L@k# z(wN6jXY}?*8B8qU0qUU$c40i_k-Q!Bhe}TkbGwsgV!P>@=-RzjM!`@anML@lZ)%IXh;@jz-QhW+&{})$Z8Ul@lh{bwwjT;q25JyC*;^u*z;*`<||iUG88;YwSMu z&L}FB?`dTn@88pPtaQtjkNq=ie)Sl6P&t20sIQFP*fJrrjJ{>MgA^axmrewdMf?Xm ziS<)*Q4n`f?xUz{s5C5$+t|B4hID86Fs8uHIz>(AA+3Lc?5-E7NNXu6lR&y{A70RB z;oVN7{tl1s>=R*%eb=l}Yq8CjWLvjQ{-y4qQ!X{sFX#4+8MkZ5+QIQl;M`d={I40_ zcX1gq+`FC6Nl-&jn%*lIf^ip#RsRC-lGJdBVzAJ#uYKv-%_~T3lf$Bp`I6SCVrg;* zF&UvMYI{i9p_0N+RFWwjWw9vSG*P;6`q4nHPWLZdQesgtRGJkNKZ`1owPC6Y*O0Ko zqGAl-B4?!Tgg7Hl=(1JjBX4t&$1%I{h3_s;Mpf4Mw_kPHB^k=(9G}rFW#b0l6p%}7 zKW1mv8KKJ_wdTQ8nl`T}4V4MZhWMoc$9n@*yGvwi$qo{{kPLJQ?+S0?Fpo^KUsM$? zX;3VA{t~?gHBB1QO-i<@I%oep-Jv6T6-AK%p5@xC$~2gQ9|x+C~a&8&DKEtEI&y z*F&ys3F}_uOM57awx^;8`&OTN?V*R>TA=qHc| za)zA8|Ih#U=AQ}Y=c^iiztFF?K0dE$f2Pdv&qU^JT+wADuGZ9C-8Fo@smr_3G~~U| zEZ|=7%}%jd)U^*Z*K~__HMhu1`-NuNHLhv3(%#>y48L#pHn|9R%%iHzuZPU#kt4ir z?1cgAig3qsxyu%}c)*1n<8gDBec0uJ-SyZ9sxTC+9mm~hrP0{(;&yMd?u4C2s6L9r z(2ugr#k84F)EIk-1>sG5g}wicrDfIo^)_caTtw7$*kUoV)YUs5eT%uF)9dgcUSWd! z+>ZFg<@&2{$T6p*kV9L^N0N3w=&>Gir(OLNoYU58dNRKn1}$%^2cpoOL&d|tA~J8| zivECvYhbZP>}?iiG}pktfXn=)*#v9dl3R8wGFNoZxm9=euHG#1vODL_-_`c@W`$R7 z%(%z$T-iPDo{(>63vC*2uL`%B5<$IF{MwlA%D9S^hlk?=y{#k*^K zhx;QO+56G@hu7a7+t9XsgRzQ3y)OA1~PH%|=@{VI>TVG!|}nLM)@3K8D&f-TD@s;n*-4n!q6;q$NSqLlsU*}%1mD-uZhMOW`>q8w}c+MQy**w-wmHBv|&Qm8aiQ>OS5 z&!s-z_jJMflq>h~9dfVq4dg0)e2-kcUqEiAk9x?x);E!>y81O34oHKs_x>@M9I7haQ{-{i>ZaNU7C`+*Syu1vCKb!_0tmFVjL}8skW`G4j=xIrMEMHc znPUe` zb--F8?645NMvQ$F)nWX2+ANyb4#Hajvx$D>WIL}!?A^@x3@N-EFfxAPzTU+#M>`f-ZUf?dWb!C-TW$F2pbSU7k zB%nfLd1!~i8|o_1`%$8-5pBbU?6VYmd?)yABo259JX{arLiMJb=Biw9_&G&`Vb zOF+Cpu58$Yppke?Wh-0Esj5w6vCmsE+W?ax<0IVTtrmBP!Tv5-4C4!91LhrsPoy?0 zg2z1(kl*G5#*NzCoJn6)NvR|Ht%!KH%U5XPr7x$l2f82-i`y~Wq+M0X3CfanzJlvB z@)xCq{!51JpdDKmPs4!J3}wb7sw9j!X3M^VB5BL2)u|{- zJVg!Z_D^A&a{M$7dLP>+=LUEqYdT$^Y)H5SguDrqM2@8;Y`Bxb5<5c#xqniAG4-9w zsHt`TLr~Hr?<;}ACfpE@Z*f41C5a4_3l1E=7s01pP{1grWrf}I39f}~Ng=O^j#rIA zj+ubPD2y9mrVCTx+FH6KJc!ovH)}OOgeYI2+K_=j-YS@mo|^w_dN zYDT{){(6?=`cy95Qp}~dCiwpem7hkk_r{@p^*8}jowPWEhHHlXGpI)Hn#XG&o%|u6 zoHh1D878b<*8WG8L3xC1>M}J@u3)_M=+ZF;ot0`pIVSml1u37(2gsnpm=B<`HZJiD zl1F)fy}u63zYJ7m0glI}VIc4$_+KvktS_yXoKq?6AGQZq(~w&3hOhvbBgRa!D-@ZD zaYY2yOO?IXhFf}A7^*%>(WC6j-d_ereWGqCB&*cCc!FWZR7@sXVfmcMhz;mUYO^)7ONk8Z7E{tiXv7)ybaT zq^IwV_R6+DkyW-4{CU^gqNtOaw}^E(Kp~=mwveSNlys0>08h2yz;9!VDUy*RL}3MD zYmkERSYSG}X`BsnV`qSM5O=x+*m{_#%zsdoa)U8BFf$MBpJ!MkZBo@0#n(~sr&$HrZ@{>>Q!9PPmp-p9X;0WVT<#IabJH=`{d2<8+VL5 zg%}%~ePiFaW5#CRjEnn*I2RY=5}km!tM$!&V_!$~*SM_Rti)w(fEMsYy>H&D+^49p zDyNz=D1RrOK}}QDyjQ)i4cEq|Y5IMiHcg9rFJF}*c7+zyo+!>qbUFMV?L$f5;5qRD zdc zOe&XsyR+%qZ~clICOCaY+k5xWwleLiepznZMsMLkH79$VPQlAL1!r*_0#uv?HHEX1 zrn8cs7EYN+ip=#-X**FiDCE=g$buLX+ZdfOdc=!(_iJ1c3BjCx=5tf8%_fD&yPeG7 zdmL5ZohX@44|iB3d{I)~!ifg3DXDsq7euigI6N_ZFN%{w$L@+3(3b2!F^REBQMOVm z%4JKpQDa2ksg7wfiK6`d)ol3M0T`pfthLozW3IEJd_dNJ?E`C>)C@ zcL7Q}cC4mk!ul*JK`zkbZ-`uysbj`o<0#~y?g4739Z3x-KV)7bnFk#USAdW=9LXtk{0;tM&%igBckZ&mvMNFf!KgZv5}prU#V6^+VtS^`4` z^ZPob+jNA=7%~I`JCE3xmWV&xyn*dHSOM%g0{Gkhl?Meu3L~g>$@B**s+<%h)Etwv zq-0tAre*yOU&{^ns$uFUjxqzP{ud^$Ac;Gl%hxpGIBE6(kkS z)Qyr+F<=)Az4VX4Q?+cIhQ+8>bz^quK7%~UsJt>;S*Vy5bFM5!rB)Gi&QCOuB!=MP z93Gl44o;WU)#(zPwi`NXqfX+KloTqFn=oiN4#mQ^$RtM;sWFX8wSogBbH=H{zX8{* BUZVg2 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_non_resource_policy_rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_non_resource_policy_rule.cpython-310.pyc deleted file mode 100644 index 80648e088635cadcf559846f1048389fe8e51bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5606 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 Vjol(TO{s-#Ij)23=e%{M^e+!CmGl4r diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration.cpython-310.pyc deleted file mode 100644 index 0b915eb2e71910ba2461ecc43421be481a83c172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7834 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 LA08^kvE2Uvt!0W( diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_condition.cpython-310.pyc deleted file mode 100644 index 23e98f2d42e411d832a0d818bb43924336f1bf40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7762 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 Ld$z|~?27Ym?)^MG diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_spec.cpython-310.pyc deleted file mode 100644 index c9ad2c550be913a9ef6fbf00fad2e97f3c4f516c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6422 zcmeHL&2JmW72jPh$>mz|N8-44n#5D5P0YX|?YaRP!F7`+j*-@20^7}jXt7#yM$*d5 zU3zAyS_FNmd}=O5k8Ock=*jsPaxBn4VlO@9(xArxJrqdW-0{;#_jr$@$!(YVxDE}^h3HM|CW&R58$9WA0 z%ZeX-e5oUJeEB1pu~G~V@j&P7z)_R@ zr$^l|GQTNSpD1cG@Vy+TteN16Hs@)#>c!b0PSY*BSo`%c$=B|QUSA(hc>DZ#;Ekl0 z0E>r@EJ{ktda0-gvt&_C?To_LTYVwRI8<4ori!N3rT*kc&mOLKajBbVMm~237^$6Y z=e|GkM@|HVLkm2hg|eZ=7_{XPz6@OX@`!qs5k{c*{gH=WbyPwda2KcK4SzP*DX}FM zvtG_c3bkBKGGIK(COXlo*CY{IoKEv@oJO0mR8e;?s*7qg=0Aug0w_l$0iY-$HSZ-^ ztaCXdkb1fBl}J}-UdsTxJ#yqCZvXkDxt{k#b8V1xW!@E9C(S!QR!uAl%aE-t^>eP8 znW^U@rG(@C z{6z{#ZuGZ`Ac~SK(NWX{X$q#(3A~DnKij(03(ybUVPh`AHzo^qT`V^F(KB5HjV}p4 zBWJ_Gak|5QUKd&!fLnoE^97BXZ?{=vXjF&n^Rg6rAT!ca!M={AX;JzuOM=1jguZJ} z(7Y)@k6c*;JmuzWf}9K_{#9Sh8-TXe>@Or^UInK$MZZcCmr%vxv~A36g~dKcl6FQ9o6Fyp^N z%cs~Rnw}Au6aH3ctrfUSo^%nnD)yUofq+uNNW&~oyb3d3g+d=S=xm5Cf|Q&YIh(MM zArO_~?m#GnF!w}vK(S(jv3J;JoDK}BE9b23Jh#GnBF@MO#CkGGO_`b5FqXo^MSFIQ z?Y``MoN+8NKr}{!;PoT}1p~qBj6QK2QE{PV40=~(-ZPG;8^ft0-ebL(3l?w2Ng8)j zK@8=F@%<#ISvJNH*w4rLxc)?5BG4HfkRQkgvFAH=rVuAsIS8hN1V67U%PYc}Db+ZF z8N$WAZaPp2y#5w3@tAXKu$wrXL<$aO4yF?Xg?$e6+2KV?(r@BE5oJ!zPTiG92=dmG&u{P(%t93?xUGZftrHeoVIenv}?UNMR>o7U}40Kuhli zxD+|H+d>@`0=F3BpTS4!eSA@tQ^Iu%mm-I+VQILF zy=x2Xih8l}|Z$_R)a3zg<9Ufo(gcc@ac*+_6 zbWUSv_i0=)>8`qp2fLQp?r`#7o05M9wHvT-0<4tI7>3RmW>!%WGwk@SFNkxqpfpcs z&;=(xlGfe~Gx8;T`vWcmjs^GB|9rQ81eJ&6UQxq%6kkM76^r9al*zkQQC&lE1~Mwb zL?xNhan==upC(EdrC!{ZFHZI^e3EKWHmlUjCf+J4Qm8?y3*Ri^Mn%~KBD0i{{I`iR zauL3F(hHIL`bdC1cj3RGe{|fdcne>J72lgT4j!NM0Z~)2%xD0G*cSZ{y&Y$V@P~|h zFaDs{s16{e=z|la`{OXn7W)i1scO?ltdi-X+J~n1Vr|dkF@CkEfFvyWC*qaRbkv(S z=d=?KutJL%R;bnis5=C8Fmd{QvN?vV6%*O4SQ=O0^&1%aIImA-31T#g{(=#PzQCKm z0AZ&daQ~#1hQe3y0JU^A)KXQ+)q`G$edJPmhswO(9_5#aSCduNK`_X26YJUt6A@IL zzW=BsUnMqZbtCRaHu)^dCU~3ySW$^0aW{(oiqWPJ5_-OSd~Vs>$xqE$$#C|@6jq0E zW(tqQ-EDc1*t$f`{$zz1$wU-=N}qm&W?uN%X?4GaU;PA~bQbrpP!UEEU_40ac_E5u z`|+1*6rqX@NPG|bv=>Q(lg>bkh}8ZV-W9>vE^nDaN>NcLs|mSVsI+=u;6{Zmd6}9w zsoCXfH`S%1q!dgoqX`_}^(tQA!30#k@~ZY8R=g8147Jep!aa992aCb!zz_U|s)0m3 zkZ;jG7tj=*6!I({+GlsGcMa=oQTg9fRk!8Iibb1+)?)~TQ?L@dN)}g9UCH-?FhJFA I!8=*{Kfe(ZL;wH) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_priority_level_configuration_status.cpython-310.pyc deleted file mode 100644 index 2094e95d1f322ef63f151c531a10257557315139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4016 zcmcIn&2QUA7AJ?4MA5R7?506-*|OCGYu)ZfqDRG`6X)Y@UVWtVJXMRu>YPk2+d=SlkmXOJwcwLK-nd!a z{$M16Eg=$jSWrqZ>O~ z#3TO)NY3iD?Q;3!JR2q(1wi4tn6{5U4i+DwsSKU4AYzNe+jp84XWU8bzKfAztntgd z#_M}_zb+cQ!M#0e*Y115+iddYV#R&Fv}g5w-r~y`m-q_5fU(6d@=F+(`LFn|F|KeI z%6X&w{Z}^!LPsBbDU)0#di!&+CDP{@Ue}Q>)byXdFCKid7CaawDu~lasQ{Cx(0On| zVI;*vg>{VN?u+3o1!g|Hn?qMR5IoUFE7euwC@Z2g-L8n0ew=6c0Mb;`8)>5S*RMnY zNY#mly_h7vcxcYhK1Nf2LN|l#3rjY%wQKFL8Jk%lj2=Dq(K|D&3R_;A(aPoaI$Q&i zWYfE^+7{^lGrJ)rglPG>1Z3xwUeCWyDI8ERwU4sTkD^m(5b6W~i zGN$L*50x>e&Sbmv!Z67a9fp4ZbLt{GkJWAbq4$_?yU(UK&M4E)f>dmS%;KRrHKW@) zCNpc(g0Af7b8O!eT2&@?D9$Prz^>1F?P;Nfg59Gd6+I$9q4*LPQbJe(2|&Gl6qYfmmgx@}fzmDG5eYX63Pqgvm8&iyF#kX0BpeTzwA?bzCSiom(a_U*gY!w>(# zcG!-iof*RJF57XnJ9Bkym&xn8rt4H=>{&B+m+jh6F}r0w@pNP6atB{@X6{pOpHyG% z)5#|G@8~8@B4yIar~bZm{PfISd_SY0U7Nmh-#Av~p;b^uB{C6GCj#jW{{c^8{Twa| zDGu5?n!18cBd~BAcQA%JVBHvr-iz&O_oq-zGw5M`VJ zHIs!P|9u*0&p z6{UrEku%aj4^3T1=d#PlHOMx|Jj`zW$9Gret2%4_?AKj3?VeKyCxlI&W4wUmRe8Wu zwr}l|4cgPraT`=xA{C?boB#{bg{c`AC8{w{-{!jxD z)G*v!aOkn~Wc}*!iR?h`X$1ZoOyHijhI^_8RchcEqMzB+Kc*ij>{t+xg$R;iFv#^N z$OoGuMu`wf5g<`V>8A&dyh=cbx)J$76&cGKz8CU@?88tz2}3ID|4lyNGuOU&4*6Hd z|7UED!S>#valH(iDYpsV1Nl1wMgidzD47Vuf?l=Jo!y9l9|sW&d+iHU@nz8%>(UQH z7;}-*ycLFY{rpWM4DkyLWk5@Dq)%R58QO1Y z_AYhrQAc)qtTQDEsqhUn69PQTwOQTu+-GjhedfEYg>c~ewzuS6^|0M)7?rm@*&$MI zp(~jb@-imBUPE`)$H|eo@y(;JHl{HnSa|%NU{*^p#Q(RT#DlYSU4~1}xU3UHp DD6T^x diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_queuing_configuration.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_queuing_configuration.cpython-310.pyc deleted file mode 100644 index 92265fdb28104b39349424c00a3e6fc9616699cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7444 zcmeHM&5s;M74Pop`PkWAf5)-&SvVnNkaxyQVw5Z0yF}8YrAW9+V1Hd zS5>dQqp>)w#eoCjf{+kGb`D5J;_pD>Pv|SBT(QIf6vFRS&5Xx8yKBeF0g3detGlYJ zUcGwt-tWD7lPxaR9bCV6uXcX-vg7=nD$|#b%J*=q3n(I|?L=&t8_jzq-X+!U#hT;p|Pn|<6DDeuSZvTe*H>uTLsE3MXMth@O}Gt7Fe%y!aQmZ))M zX+$QI4aQz$X?ByZun*6lTeh=b>k76dq@t;_4%4X8RPX=bBNk<0-V>=_VNxW5E3vfP z{MNgM=Mfi%wUr4cqv;>b*wiBI)<1>hoYjU~EMCmgPQ008QJ5~I=ILu9>OZ4ZI1sTz z;%%4aoX9i3(jQ7~pF|r~B6=@JFGsa#?ylReh-y@i=I=T?Zo4LG*XN>zNv#?!Mu*Io zx~SvJ;YqC;9f^*bFY{s^UyhAy(edcSU8lVeJr|wCb1`~8I)&$<=ydb~o`<6sqnGeJ z5>>IWuM{u-Xn8|u{?-q3k;m!gW6K=;YW3r5AFi-#-B__O;Yu;Q@LXqXW`jxUlMQYf zNnaJ6Ckohf{2;^LY9^vsn_aY1^>~`|B-ysaic*~FMyZ(V@-zxmJP^gPo8ValiAXnf zH%Q`Mtc!|iQ|%gcTSKq*5z}(Tbh<))WEFd~8kVQ_kKR4p7jdhfqZs;;n>(_qogL?n zKlF!A0INZXO+^WdL5V&n%R_w0UHS5mYLy{+p!WLEL#;YQPt=x%CDdw>y9OJC*uB9! z2Z)_5G0u8fBobIxCr+WNaXMD*)yAA8R*O?f7V;$6;!*|Sv~m{p;E{}u2YU#qY8w@l zBPQ$Z#VOaBlq3dOp@KxzC>OpGNoQBHtl`@OM=s*=uV1vfSx>Y!^Ei}QD721SH{MY# z5QV{~n@jyHQmrkKZnctlqt)Nm-7I~pxqPmrVl9^XJiNg-g=*cH;7Th@V%TlVEFVLy zavFX?@9~8;``bk=2;wx>LC^v_>LnC4uj1loOP6Xj)N5|t^*ni0OPkF|E)7#dSO7y#>MkXF1U zSeo~MznG6}Hr{e!=U3gl(@6wVT`nU?irA0>d#}JCEGJ{uFq(}0xGPd7QmRu&KJLdr zRg)fXX69I>vD0;?e>FyfBL z_j7HRo26nhu$xJ^EIp~H9_i}XFfSfayaJgwkow9Yy*ZNt*nd)YF0>1`c z;>{Giggn*Bw%scdh{`N^&N|{2*yLN=MrsOP$>5ygn*4}>joWpT4D1{YtY}RLBR5D& zE_HZFvK{*~<9%2MF0_|P!NhGXQbno(3ygRgV$CU2WQQ1JHWRW+uu6;Jrb7Dz(E?g{ zp6JoeK>F{X*Q}EzwOo+`9H-<6gxL~)Z2ZrLR)1#0JS}EWoJPPA#c-D?hP(i`ME@QqzR!HVp zukY({{xW4iVuzNB}ne^+i@@Njot3FM}=F?ZdpeL zM{tY7KLc>#SUB4R9H$n}Cw%SlsBpBL>9{Ap0|XBR!s>~u=0J5Ru8R<7r!i_<-#K

    198w&r&YGWZ~R*n{1X4{`izPln2 zt42_yy+G!q*;WfO=FqZ-Hie{3&!KoC#Qb{(V$`#6ybD&;1WZP;`=cnAg19}x?WPH` zjQAALfg@Gr=J*b)1J1XSLF6QcW!Ei=*S09^o5pw*Wm zOmd`f#^Lzn_+W$gTmb}cjE)#MD-xkRMs$z(Q{XITVsoSgvM@Hu9&)7yB#344XAwvvM7ookh_Rm{RTzs+;O#Y z4>_mn-hKB2=V#yjsdvY_Q_{#Z4ZR)jj<1oo(&Zgbp3!Appw?}Br) zrmM(vmC&O(^zYT~(|O3Y)5tlrzpv*o(zhe;)$cpgqmdOG^&e7Bt2}t)syQawgoMps zAtT%uQpa>CFo(`K)H6_A!gAJVU4-Zw36{vk+;c;$?mj*YDc$0&7FC@E5yn68iYkt< zTx%&$VFa?X?(JQYENT}L-rI=yd%q^a6lR`u2Imhl-4XTX1(R1(@8QK#Fq7=h^cxeV zPb1e0#*bnFrPF2^r_B;NNTHiW_^Y47@Et=?nzz%af`1>`u->jENJ?h?7Pq2(UvN); z?z@foqNL*6#T@!0LnC^sSR7@p19Fk7sBR*e3&|AqSjDN*loKd?O0X2A9`DN+K+DWu z_$14sY^XHK#*G#gDHL)7g>Oi>K~XktWjALe^^_<98|FgI7j z+*Fkk)8G;!9=cTCpg(@RDWjH@!0WJ$Om|tfK}Qr=G$o;KB29nkK}o(w%oBAZ+6VUh zSCr9T$XzN_RDwX<41zzQx5=v3J>Na@1UcIw&%B%>s7p(2ZOGB=2h*pUh$5>%+RI&f zc4%7y-9zP5FYP(#!M@e!{sq0Ym!j8h(L>Q9XwCt8Xwk>-n<1AEi;^6tKnjGy&hEUw z`5wRd<{QQH^A!uf&+N60KfYvHf1%9y&qd~KJjr<^+-g|d=1yogZ2fi`j(+DFIlObB z+sQZbwsq0sF3;bwcwQ8Ca*ZN)E?c$2_TMWEzaRCQLPkP~q@weyG2$)Kx(IAUEH z-w3$i?98T!g!C0Yn_KLIu890@z%H7?ShBWK-DG8Xc{5P$UbEhcJIk?Yq~bVChMA?o zFtMyLc8W#ub$^Au_xh`6&Foj&g53}@p{e5yrjVtnE_`^2@wnCNh)At4DMH~VV(D!C zweM=02UKX%Rx(Nk(~oAXE759Kz5wT})ta5ozY|9r!DbJO!gMVv9{&}Pc^gmiITB%k z#TK!*ktb$-$mjW?JJycfD2dY5GJh<~ z75QO)MAuYA1vQUnxgvjpAJsK;Vh%M=X1O9i#-GwPRZ&IF@hn&5C-~F4W?syr=9yuR zKg*xHV>J%(=lMyzALER_fcIg(z)#_QgulpN!uxSvfl|Djp7`i&Qz-x3nn>cFY>5x! zFlcS9^+K`z)71~Iytl%xw1b4TLO)3uKK!1F*#oLU^2$`Bu4S|)Hue>bZuo8ttx!zx zKxz4#sXBht^TTk<47ObkgG7CtDEVpXHlbg&d|H7%dYdxtb(3_y74{M(q?fdy1!*Pn zJ0j`&Es>;UIapbe=AmiLq)|r4i@INNKxYv`0y?Pid)-Ry|vu?mNhp`)G~aQa^`W zrSBr0>*tYHxeX~f+i%R25?f+E>%?4yFyoCNf=vX`(1uoP^OA^8kB4!~54{_{OuW{( z6{K_C7#k0HlYE@>#u!=gMw~2ohL!U?An51>k*{JY^O#GL9Zj*aR!rSQgc~y(NJ7E; zmOO&jKYqO2jyqy`vlp~v+!9I!%h%pamN5}XjW(CMF;A9ni0H<07&Mo=TdEyL=jvx) zT}}cemLTx*Cnomg9A`&U+F{U+-?ECC>|@KzZIdP?Inu zC8uEH&!qH)?-Eja3UC6W>2&myb|EAXX?JL4VaNB(RdwSwc21PBkMJW#Qcb(d`nwoQ!vr#s;xR(cxAz~ z765=Soa(U1f(`5&A_0#VSqFy5(3PM(j>0X5Qi(Cv#Pwbv1+UMdb43c(lMw-qV2`qL zS~UGuq}u9=6}?^!9U5+^re@1IF#WzQ596h^&LodhmbCbXc)ldlDU`QgoXztQnJsEO z{Lwc(TD%MRAn{(cWwj580BBSdwvrwDC$h^1wq8ok~aE7!e*aqAfV%T68Ssy4b?M6`G_0>2M>or$nQ+mu`h?l@Q z0*+!3?M0-Ok7%g(qy+qtPSqTvQyK~h&ZZRWGK#dtA1;^diZc@xKv0vlN@{g>i9AGf z-v~sAeJ){fCs5>}Vt@@lG!sR7to2dH^+9`$OxXRDj~x=U$I+6;Hw_R6gQZ6l09h#g zhR8&oOa@9oqbljklbOcwB2g#!Fhrl4F9j=*fTN6 z0n}^^e!f+#gDaMSzzJp>6r3nJ0RN|URHI|iG6RGYO13JWf#`=IrCqftkfO2>kKX+% zm3;wf3maYLu#AlE;mOVnVZwA_4Ye3=1wo$+f1ZnVQR01k4@Fy1sJgg|GSyS9h(1bS9uMKFl26V6n$ zm668BC~EcyY(Xsnr9onUazS2JJwRh`5{?sLPxGJC5 z3TS*w9jBOrZ7SO#ZGR5QzM%cPaj$adn8BSI_*b+2iz&i00@t%argSG} zi!6+93fV$jPaitFA>wjjjopOfs1K9~O44z0ktMz6urDCzeL$DE<#)QFSY#iwg+$03 z0pdIhi)qK>t|G{k?_=P>1Gtp2EwN>4$i8-8TS{nZU<1HF&xageXBBqXgG;^#lTC(9D^=d z_5duNve8U;W}l1C?s6{9X58yoERT~~ouGuYZ|GO*80r*2QQ2qI@M$Fb0@S5(fYPzX zhhO*zob&**w9Jftu)tT=_J4s7UvZh4d}n$|z=p?&^SfaKMY?}Ul^PpP&c+5!-M+Z+ zgK=Cq=z_*DL3jB^O3Ij}rq7tM&lAj|9tlPG-?&8kks&mhN*ZTDPpE$Rj+c|}sioUbs+;)}QcU6AJkqauX zaL2)&J67M_L3k4Z2IstWy`+kLm*>!;-gobo?or^ulvB?#$}gxgdb+0P-O4>{yfpAjUej@66CpP@AGox{^^MZUJ38SZoTVOsm>iZv(YJ&&T_GgPZOmQnV|DjX z(Wm&kvziuF>{0*wPFigHiLaEDC(#2Ji1w{1PNt>vq2Fn8|E=HBz&IRO$E@vhvyEsl zcKy7*k4fIbhv~1Um`(EOjN}uzj0D+7Kz{CoUc?E#fDPR7>Ls|VU%&<}J)qQI3|Ua` z;&!AnwE%evb-%}xkkqU8vH!SsZ7$6v!L786_LBPGdTnsE>d_XGq(wyMh%ad+NP-Cd zR@4%yOI~Z5>-b&y0>;wwr!H|a&FfKWdF{QX1?()nP^GRO!uD`2Mc1)l*V%qyU#>sEUbf z*E0$*;HE^1!99l#{+caGnCrJ%E-iGsXre4qqKD{F3j#lb(Hrw*hXLX}!Xx8-0%d7wfT&ygGAu15xP=9m2_&Yj zc8!i}wR(eUS16%>RvBBBUZ0L*llaIUk~JhH%e5U`q&hHZ`YZg?DUZG@CFe;Pe5GPL z^Mm)?)O%1~nlBwMxh1z+)ap?y$+t1OJclH8q>u!jjgzD6;JUfW!N07G{X2-cCodSy gGio*xOSS+2zTxRxgsch0>s_Z*DcL2b>Kx7e7ofEphyVZp diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_service_account_subject.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_service_account_subject.cpython-310.pyc deleted file mode 100644 index a8c9d32e83a1b4c8fb15905e675e09da0ca91eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4791 zcmc&&&2JmW72lm*lFKz^%dw+aMc{6o)+kepv=TIE1lNd>I7SeF2`nQAqU~zAGm=(b z?$R?uA!4aRD;sk-gQoFsD==EW*73ckSUJlZEo~lV>;ebspn?dkSkmWC; zrQq?;?=P0CKU){UrjUx3&Q}ACCN1^o%g+Ly$HTtJ^im*2Dk3Eo7F+LqX!d-t3$wMQ z=}r!oKU}e;MZE5R1I<~Trd`Z@oM)@a+7LovxtO|-J`Nfm;Z=VE5f)Tzk$SsM-Qo;? z&fi$qCB>Rrh0pUE_jc`WRn&N$`@7bT-SvdGQRi2ttr~Ce8S}*#KE7O?wD>hXyK8l? z@ay~ylns7^-$XgX-{f;BukyF}EtJ=I6{h<^@%C4XJ)xubmxbI+V(}=B^I@i!hrJCE z>(L)OUp#xf6g*o`R1l|;QUNN_Q0KuZ8d*}QB!~HQAb6sUp~|KD zQ8tXybgN`mI7-VVE8HyVi=s|c4Wd}c3Y03VAf1?edh$@6;r$q|`T%4MPaaybrmY=o z+Zj7!D}=9u!W5wR3hIuDR>lmp%5A8KjXu0cMZrQ41^t|h6wbbyWbm9Mn|NBMS(CJf z;#Qi+Q5tSWQibtRUnwe~k;gZM5eTMA2sQmAi*zmzvO$1*r0Q zv?f&h`4q+NI8A_(wvi4~OGgP+=_z4Ux=N@@Uug}t3NH+kEYV@OfDNfx5RX-D{2fr= z9{uDZWws{sV;gfP57p@UbxCx;erC#3b9xr z7pG`3;n$CJybc8h#~~8r1|sTSfRJ_P-8%t5VTK~8tVNQi0%$?tAvUexsdzC=q~NXd z)?SiA4`oJJJ6u{5?p{R{l7gNkska7VDF9>)z^JcjOApH1wpeCVc3GcV$ zuhshKM;9(jLd7(4@=%>#W1~B$kc~EM*%$+3KwU#4(Cyg2w++64HQ3LIZo_`duWr9G zz>`e>SBniI8TE~QUzgQR8?7_C_gS_Xr3nu}hay;ox0O=g3;IK)P2lW_V5O61Vx{St zkWkE(&ZhPNx_c@3%nr{* zpu7$)z}JnF_<9AwPJqnJ{GS=%5K3m9Lp;60hEGIR3J>%wodv4Jb3j!}c>%KI8)PKp z)0QM#PVhtKI~h@_?>E$c6XY0j2yOJ$q$YnxC9$?`ZM{V5vBCE2Ppn`6@>gt|Z95uC z%9!o2ZCATvS66nJyrU}`i3w-B*4W)aNJT(p53CoSu8m#pU_@)|zV!C2X+O=ZqyLev zW2RfqeCh95M`w>I@iBbH6q+leyHCw|R33$8euD&lAf!$NQb7C%Jc;!&x!`S=7Z^}r-v>LDs63$x1kyS_W!^*nNO?EE?;aORC1^G1eMTzQNXZs!{k z*f5l)Mj}H17x`5GgbZ>X-+qf%k>MNm+`nDBc?CIb@^w+icu8|qF>`R!2+3(xQCmZ5 z4%HNXqLNJMD2qkmris#p(~k!7E$}ky7cMEYs2DEIiV5mPRSGpsb>SKoc34!*5pr^8 zr1q3{M#r|xZZhBYZ5LS^vm4*}?$v`g zd7C|I9rZROEtGCaF@OL_K+VxLxx*P(Y&u1CFu*8X)CM>aaRiiRI3u(cRrmr}?vjY) zJ6GB0oy$bP_)`+lTq6M;obYFh{26<{^(h_6W;ZKAlyTI{1`@8HVdz=$o-$>UFAV>H z5oTK+yEHd0XPk=q1Ua*@+o%9?wg%)>jdCn(6G|T2M4!`LogD$TL^_eI2EAObPmYl2FeiT})()$nk84_MeF`{0n_r1i8dV%F#`y)9Ey4$(ocAhhgD|Av|=L zQoRv|wCKT?S{UMY2bi6#)SV$rCcU8+Apv;?eT8=rV7E*%UQ`wCa8NV_jMBS}H{GM= zeIoA>ITXXxOfo?xBUCFA)U#ZhRhh@^>UStX{R*1_!hPSKl-`VY%X2-qQ8VUldXg^8 zvI$Z!DdgLzbbokwGi;UVC4QPY^0P;I)2)`*qS9^7*c^g+si21xG8OIDWuEWZ9&50h G&VK;e`03IB diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_subject.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1beta3_subject.cpython-310.pyc deleted file mode 100644 index 1943ae37aad2d552e7f666060ac9b945f6881f49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5573 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_source.cpython-310.pyc deleted file mode 100644 index 058ca6ea52e89af1c7a48c0b8ea52d722c6d312d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5494 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 E2lB6|Q2+n{ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_container_resource_metric_status.cpython-310.pyc deleted file mode 100644 index 565c114e1f027447c97068d817f7a165551cafc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5518 zcmcIo&5zs06(>g&MbTP&9XtMLnwUrnH)^wz?X*C$aE+#kV;Dh|!Zut$XhCy1v%9n< zQXY;LSwX&ZT@>i0J@rr&s24pH?je6fkNp#P?J0+z0u)7nwEevqiCW8YzZ|$t}ERN>PpY) zSG!f)x@K{QS07ruD%`zFx5n8`tLcvZJ@&5pGAF?e}lh*`WXKve--sA_h8s_ z#kt#;AexF280?0~v!RT|PlS?5d{aegn2&zb`RLZw_2AZak_T}w%JTq?XsEK_DI=5S zOCz_mwr_~drApQ>zMsLqDiAzT+LC6eev}TQUT@bBD=N8?-4nMj83u1hy`eB%HY-Iv zo{CY_;-QqVe&M81U&tzKB3&wKC^|9qrx&#u?)Px#KSnWjxIM(1%G$FYIAdpQh42@Y zFegg*3QD|#vO1>H9W#`*aRsHvZ77wEE-z7Puogr?KjWeY|Jj76_KU$whB-ZdiI)@UbOV zP<{TZ_IB16?X6)F%Pba3CGC4}=WP&$7pGfmgN*0x9g*&|d&x$7u&cJS^sUy#3++5n zVr>w`_o6M4x9^p~q8;}Vn4_&F#?(tQ_CqXV{3HsG zxi)^L)U|Jq-dLjR)|5#hac+0m;Qz9v*|P&iey2{1tZvegy^ zDhi#Y!N`3mRFSQwVe7!dR6isYPaoz00n{F-NNx%BEc)wGsG&^BQN@A9bX+_<+r%+l z>r(9w#Cia~(_TtrO~gJjOj&fy0v{? zM}zEh7fX)ejquNgVw~;SzqGXv!Yg6BN^}~wyZPd_GusNuSTgnhveqDyQGd3~*KM|^ zt=1V`yq@j=NjyL~6u~C;;X9?Acis&8!(8bYydi=+oh%i1nvRYO#VO;zVUEom;RrPJ zE?D?F0$-I9VTK^lWCjvC;8G}=!^L$BX=huld$!M>>5y`jh}omR&-~B?^cVKR61-2k z$ycLFK%r~uBn$SXa$PtLC2R6{sTHjs?J^X8eug_Iz`Ne)J4;>0@cm4OktaZ?SsDFp z<_m|E)StP+`UI+m!UU*?BsUkdjM|_$1Jf_lTW8c>1Y5KImw{H&h9O_3f)qc6rcMLq zph;s9?wlH{-g80o-z79>as2RMwuFZ!vS4GF?v9im+#iaZlF!zhHcKK;VEe1ERoZ89 z^gjYMEd(;9S1CPw3B~B!%V10_F2(RaOAH@Mq8Wa_9@QErAX>%)4#muz!AkWmiqdZ` zfIBVroLDE@OtDVpnBSghY?sDyV6>hHz!bE}0dyw(J2VpOfvv1Z$Z_woefxdu7eD+t zd%zx46f)g0+hY$Lh5T4m_n3TLRh3Jp$%n|F_pmQxS7w*3`<|*HpRVAI*4TOE?OWwI z&8%bmT~)_S$IN`>?^_3FBm17v8Pon=9i6|SlN^&knfw`N&Vi6B5jd3KAMhkrPsl}C zUIq6}+&M|DkV|kIYuCq+ZXXZEl=-nvQBzq+^B=RKwjJe>Qc|AA44nV$kLNU5c$a%o ze}hL?eoKTYbf2R()0eD81fZ7`#o+Q{2KPD|2lT_2o74w$3-3QOPZ4xE0gna zNRZ8o8WK^`PT?nck|JeKV^KK0Bv(bH9}VQ$>H393`YfuNO0%ldgTh5r8}@KI(U$|fi zB>zNG5`vDh(fQ{<5T-mO1WngM&`A!!wg}i@|I7!J=V^xS1X0S-HXURnYj|~0Ag7}j zi5P}|#v7V5k3G*p%S?JIrjz?=-d;lk?q@5wUtXi69h^edW1Gr*^r;CNC>1V|rY4)g zMy9rdY~!woaVm?X2*iDS6!_qAMG`V3QP(PdY|_u7iuZ+_gHz##p|~H0f5F>22lbg_ zuRe#q&9oPmsiI~2?oyfb#}AV0mZbBpyg|+=!yh+U6)rY;p&GCr< z`lii8e_=6r*WhZ=*d;2yPsL0g-6DU}=A$$%Uq|6tj?G-=F*v#V1*@6bciAzxzVF*? z1$7;D!}Prs?~LboPNSyjG(Gt?(fl5Yf=M9>aNTpWFA*(slED|p1D{jO*A~|x%)n^@ ZqX_s$V^=7q=5+RTnCE-8#~SQp<$r8&wGIFP diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_cross_version_object_reference.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_cross_version_object_reference.cpython-310.pyc deleted file mode 100644 index 3e1d83cc26ab94189e5ded6f78227baab16c3bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5794 zcmd5=&6Cu|6_+%c8I5)Z78_%5jIBUIWm4=2a9oZzgv7y^IH@ctpg2q=rPZo?cLg)j z(A~3mr-n`vtZ{hb>`{sJ}ZOi%>-OT=6-25Duyo`ofZHw8=>DX;s_fFf z*DdC<@*|6td1a^6t}^GA)vOHu?Fab%y1&Ln#ub;ozF)}$#$_VXo=Wp9=!twQWt;^+ z*x(r#vBGd|JGjx~S=>v5>*irDf=#7*aybk)QnlG%YbAL%%*`Z~=N&n|SsIbaMKcJ_ z23dYTUJkB(c;TYi{q`mgwz!bAb-o@b+|pK`{Py#JOwJ^Tzm&y~&P0vf6d_7CV8y!QN&k(H~)_*gNQtvhT2W(J!(p4EtVj`p%`R zBA4=xQRI!ayF5`h`8pRoOZebVD>rUmTMlk-rZPx6v6KM@abM-Zb0#LePfXm>x(1yC zRjem|n!~y(;4D?zj%KTFob}^QXWI}fN>YhtsaSw7MI*Zx?!7c)g`34)-uCfgB!;NK z4x)-?B`MDsipCDEtGMK^&_c2phJJv&Y=nkz2@IVXep#?P1Vh-B!5O4anI6b7h z%Fsbu9hT5~%!V$V!ScSk43>g8=;n-f0GjnQg9oPB*kf0kH9?FOCp&o(ccQIW$S9fh zxuPD;3SN%1^a`rKpTVb&8%G|>HLC)~`tJlyD~ ziO3VKR2tsA_VuQr^M`OCk^iRn>hSpsRX0u}lkFRqjwdc*~*c>YG_x*R<>u93Ga_WtQ89JQ^ zA#(@TNPhJqBFloSzQ_oHoG6a<_iDTmTl8BNYP-jm0{}|HkDfiTMGaa(S4XG4!Zb(d zmOScbxSo=eR%(Oh{yLfAG@%vaAC2kK_@n5hv4p^+@$=2CSGR%*2_(qt(R(izad%eZ zuiFIATVO>TgGQQ;F@VM}VROz3bZSY`q3^%Yzr`XEvg2E`o=xY)tGUg@M>L6%Gf&BJ z1X&#~)K7xn&RDEX{*)qLANiJPE^)-u)30G ze6{K7Fj|~2;VzQMe-XT~TqlZ!e}{-%69Q40d}fSpouBOCIx*(x=(Je#Y~MK$;lG$g zIHdyrC&D#}kt0mW9f0s@)F+T5_m+h3g!dFuc?7(zls^a`S=uCr@@YW@DFzjGcs4@(Lq!O+=p9=Zwzg(~kj;*2V*3RT;WP;l(v0LSs| zT(<6es)_=ngc+@&``Fv1bjUoXl{Gy7MAfj;H7g(cyVmS#lq;k8Lka}t!MU3{TQu3G zDK$`&_qb3gN7;t|fTf9gMlLv`Rl;=(m(IBrf)2B>cWnsicJX3Jd9t%oR8=0)`X^3N z-Hc_dln^Je4E3@7#hfM!?{X*ZuCe$E=}IRoC#=Co`^Uo({nlk&1j#EH7#ez;7qfj1 zTNt)aq231T#~?!KlosTa7GfQrF|-)&%2y<@CMfjil##$i-qD>CLcEK2f59cm@^$;f ze_gw|fI>9=qNriMpf$2+jJ_U3Iz1_>8(fiY3O|);CRL21uy8x6R7I&9_ryD(rS~sf z(q>WCRGMX-_Z1bvWxt~eSCg=#qO9Z4JZGf$KN4q@CAiLU$G3gkMX}`A^>2Ll$mp)( z)W7yCt~2=lOKJW&71M_e?eSCv7;k^<>{`3zZ}y-y>u)F~aK0lK>_GzLY&rm%aKugB zi{ib~>tU8Esy)QjZmf(Q_DH0P3Y-BXA7fwbJx83u_YRZ+3!W2UQg2Yb3zxRYrNR8k z&nU8Mc2OBY9;j=x=#?cZX^DP#phWtk5J`1gTp)2SQuA!uL;_?y zivCHjeuU;AH!;(j?h1a*V`Nc^A5m2JQG_$I-=T3mifG%>n`#sxtAXji3;OK_A(Lts z9ub_6;#uL1&e?5UDHj!qPbko}PV;n}A-o#5qK_Nm18P2`W-5&y>1vxyM=?t-qwy@) zb}EkN0NRzWovP{min9p7`@ZcgjQWP@y@q$vb3M0S)h^KV#K*MHc{GJ1xOg9f_WLtA tn@L^q6?Wzer}-FFG2UfdX%9wm$QzAap_5e7hXdE~d=Fo0>dx`f{{XU^4G;hT diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_source.cpython-310.pyc deleted file mode 100644 index ce3bff96f141308b83ea2570472f90a2ba5b0199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4293 zcmb_f&u<&Y72cg)lB+c(%Z{VU4H7R>APCclv>l{q1=mOrJBCq&X)VDAw#90>GZa@Q zcj=j-YOxehR5}zzf%aVVVBIR9mmd1h?6s$y1N2a!X}>p1QnDmEsgafD?ab`VoA={; zZyvM7Mc=~nXZulSQzp?eyG!sa3MA z2NrjE>CoaOQ9f{570x!ST6y#@Kfv>oVOz*lXrX*FZe{@&DwfGWCs`T{WVV}d!Gm|V zMJi;Z(QWSqpASSD4U*tNF`3DrtMx#wHyYcC?hf1aIO{jEVv)|Wo|+EUCTucU3xe+j zY4$W)5AJ_>^Hy>CW>*BeLMl2s>jWA@I_l$}J`8vk5Bnn3>wy$K5h<~DtA6`OM&^kW zMzr;rB$MM$PONJYcl|G5IjdQ-^TkiHw3BQPp%jjbY5MfzVDJ%|`U8ltU}B5R+j15x z&bY(fzpxg}%FCu#;@{;SUpTZ|Wl`ZizjSCF*ey?ZI}5xz8&&usUou~O;p5BY>4-1$ zD~DF=62Hn{!@J6_@z?QQeH zXzB+bV<3EJ$%?iPtbJ$fjI9tc016j@;wz{-CR!RZ&@#7SIyU;?V$%g{K@{{eE_#4} zCrN>&B%NZfS*u7oJzwo*anuWUBdNmpGA{q532KzRQ_qDcbj_ME7-KdxF0CXsV4sMOD!WLWa2mPVaCabhXu+_{` zu~l>bjCIJFl9iv?0L4&<^okN z5;J@B_ZdWsi2imU`bxYEJ}-dirb(Ko;pvgyOEcw-84Nfnr~ZuQFN4g5W+B~NXi7>6 z0N!6`!24$EoCjX9uK?aR<8dYf%uMnk@HStx$i<*54tyEtB#JLfUL`^nokEL@csA;3 z?&mcB8psQvqA!&6%%$}wbP{Xd*4A@eN;~YxzGwaN$G>3vY~RtizQ*i;?Yr6?ySjA1 z-6q1 zU5SRzm{Le-^v)xbJ}0Tz+`?NpciFy2Wli|G7gufn zjP!C9-+qOr$mLag<-e|7yOcXBd6q9=y`()VUz}8>A;DJV6;wfFl-y5Lk}4ggvB=$C zqIB-`qk$yrn)7p)%$S!9ms-hWy1Xof8uoPV8Wwh#mrQ0oD;XKQOOnyW;<9VZw|(2i zwa)D7SH8P68I@V}KYrO|qqkme@^iMOgljNPd8felb9Q7M5yI?I{WQW9iq&)*75o6A zqbf0(d|K(73Z>@c<-q`}bY2#iIp0DD zp=E1?ma5R54*_A=u}$;|{fc9!0$AcsO*%n4)7>Cz?}!)$RwP9ro}w)O^w^O%NN(b8 z40>E#mw5^6g*=0qyc~w&X&C+vtIeJ1GuK|8Z{1?`E34udRohO zs7$>;@>GQ3AL-LgkhzEmLt0mJn$2cynS7T$%m6adFL)9}@3(L2@RAd;^`iMlY*T}q0I6nB~Dd$z}_?3(jGS?En= diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_external_metric_status.cpython-310.pyc deleted file mode 100644 index e9b53c812d678e9e821835792c8d1b85651d3bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4317 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_condition.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_condition.cpython-310.pyc deleted file mode 100644 index 91612d6c80344d1282647975f0fdb69ce14947f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7524 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_horizontal_pod_autoscaler_list.cpython-310.pyc deleted file mode 100644 index 1a7ba3e1fa7e74fe71b2bf64025169f3dcbbafc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7195 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_policy.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_policy.cpython-310.pyc deleted file mode 100644 index 65bd0560c470038855efd612cc91b944f08c2b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5595 zcmdT|&u<&Y72aJg$>oZYY{x$&Cyh4=5QMEo%6410f@{=C9M>qo7`BlDM2ppGXGpG1 z?$WbEIb!Kc>Jp2S#dJ6?J8U{0&)iE2Ux?2rP-E)l`?zxWL z%{TIOo)>m=jUuxi8I{7|AFhYr&-z!RnPUrV>}H-)RR#Xdp(hC zM~pM?gBFju2qdaoJKm=~9tXY1yQdoy;kBjgr5m+cE0XR0Ry9nzwM2K4NzzHj4{M`o z5>fHI_q;fH7HoKTf3SW{ul~5ry=^X1S~_WZ5|6ahod@?lmW2H-kL89Zc!vimU%OVl z{v##xND3v|#zd0Q@&_wcB@f%~m(ZM1ubA25M@ig_T77H^%Z1cD{hO%zFKFckRBVuX z8@ZCfESAG%|0&miVp)L|RXxw%W+mpnG#dq8WDBhP(%3Z{4tJiE*y7}=$d=f$dgF2z zZ_Z4fitH>qr`{~^1-yA<{KU?)3ongEnO$U;a9?CAY!&w)73G-7PCNWDhTkiCD zmfsFKeco8qFCXc5q6k9>2Sq*1Pg#oU7OszQr5~ag+RW@5q9~1B| z1>w`6#nal;iA$)3od}exsZC?(b-&#U{8S^$?*T8^gIg3Dwz1w zrMkQ3;LW2tt&T^ACPs~aRHutf`W5M6Xgo1s7Bgs}`5u?4Lf2t+YKH+>&sk-juOaVu z2w+~?<6+c{xSsua6tm>HnlFJ{xYrUKu2W!W5PJhI5-*6E*WuuyYQo(7893sBkk@XmuX`WdSoZ*gO7%F&Hw2e` z5fi2PXd7b^ok9_$1Nv7MT3(gP7+ z$RLXKc@=b%ek=*`Ax@bVADvd17qsn0aum8#Og)D0efgRbYEF2raXEGHoL2scndYB2 zWzyn2a8uORqn8TYD|5iDBsmG)!NT+ba-#4D2>&0dTN6VGpqX)^*srI?^bubltj(c@ zTHqUUgDf`Y1{rBKOrW-3QTq{YP}ojRUxn?zLnSg^n9_KKfc%NIXMSw_^2fihURW=3 z5@Gq!+O=NT62ZL8?^@zrnU@7hbzdUb-$k5&D8agAJac3b!G8`tszdvgvu8}&X=DlQ zcVr18Z9VdpyJt*~MyfEHXGrlze(?T7g>}s@9r+_62Aw1Yi2?pS7KQQ%=X2Q3BU~x@ z4~f`@nOM6t#P0U+Vo0&9RnLkt@oD_Nl@;4T8b~R`3PvC~H9w!xWaixJ1l=tb-2OdH zOtI5NV{mm26GoF(Z>dBiy^V?d68Z}olV*#fd|l;4X;y4; zNeao_D20cUK^*eT?nEh4$8OLQmob-GKeI`NSzgUj$*X80D+r$UJ2JD?6sE7z##y;Y z)xRORDE_pq^OkG6rj4}4GRyyR?WNIE!76|47Hn&9`FLd?(JFmCP{^jULZkYXwP)-R zuFOGo8do^0keuPGMh`+G+fs3o4qUiSH<2e7dOh@#S+R#aq#H=B`Z=yLE5QDka*sAf zC|R-wtMdg%uOo8P2qiZW7kD)YuaJ1<6Qn4cN`_69yKHKKHW8Anq3b-aO=%(R%J=__ z9!eO;IwlF!{f_u=B9ap4ZB#%cQ-Vlok1`#l?Il}J zc!-QK5L_o&pX}$vdn7Z>t`xbigU~FG{#?x9BrEtnf9Cu9=&d4A*Rsts^R=pb{@2^c zscn3Bf{x?1p}w(DzW7*B#x2&VI2@Ib)G_z{ztXE4DCVL-_o>)*{3>V3U~$mJsLb_! z_`80G>Sf=jwMK7>zK>6Fu_DkK9p7Vpd4;B?4NVe7@1x zRj8?wbl0i)J{1RBP&F0Tl94DDOE*wBhHY8}%dx=G!q-+&-`#?>4CcD7X)PYUJB!YW zV>@=asEl24#7$b~dnhtXaB&5d#+8E)9#x&S;Pd6wha3G}r=W49K{H2CIB2c0+vE^a RIv8!saUIjK%GUYZe*jgOtu_Dv diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_rules.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_hpa_scaling_rules.cpython-310.pyc deleted file mode 100644 index 1b59aa564dcba9f6341f4b4db53127e30cb0d316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6430 zcmeHM%a0sK8Sn1tdF<@Nk2ub*W5=ZsSsuvF_(38V84D{fB4A^AEkFaI-P={W({@jH zySirW9gW3dEe;$I7cK}PJBLU{;vecOr<@~kKnmgaRn5%KYd1?c01~~L>Zixw^|mrxf9tfTfd!_qu+&A0q;WOc8aZ{ zZGB*ImlvN}yeLZhg;tq6n^vvV`&*Ua`C)fU$XF*F-v8#8*;(f zvc}jq zSe!ico9w-}u3R;z-)#%FD`ZATC)-S6NJrhe{UPH?(Cvs=HJKEV@H4S~wSMip8s`BP z8nxyKlfm%^C)Sk++SSiMIcuY4=gaRT@pib=#iejuK-1&Th}3_^tgt|0i^$t5ELhy( z1tRGm3oVzIc$rspzsN80DqnnRw@RYSm-zBiYu|2FMCJYhUm1F5nJn;zIVj-SCUmP zd^Z6{6%#yEns?@?jvsgZDB3f?daF^Gsh^MIcsq&0VDIC+kSUoL!dTS`c_pREP-OXX z27U+1(-V97`Aqp+VHEZ>+q_3%%#%l6CW0j9nJj@>ttGR=fNh zgHgGUl^Ct}3m8?ny$Q7ir<`7WoC=y#Y@PY6lW-A14Y$J>G9AW49oVQXNJ21QjS_Iz z+x2DU;ob*QoG%zM5#3fmlySmc@FoZ`ML9@SNNV2+V_zjw6H=COn5>|w6>}HRwx_1$ z0=~Vl@Ah5A{_)wpIBn_XFSoN*@7Pw~nzryqfLSONI~i>8Dvv@U=1zl+}L>wr~CmY&RZ_upJ(zjqd+Aqf=k{ zozac{ZH6C{-y8BY*imx~yNSQ^c>W{IYo1rDhpMtXMSyJo^0*RD7|P>|?MNKQ{S7f$ zD<_<*(Yd{W=4vt6V_7@tMu?(}4%gX-+uCVnLcOW=5q972Mv6h{X(KbH1= z&AX7C(lb;+xZ=_Epk|9i@|Wh&om|AvX#NbE-o;t#H-XQg>Ly>t_L}2g8dtK3tw*rs zK-2!yj4;|UfwxhSiK!#5GR0!U6L7`o$v9Is_-AL0d67!BiW`XKkjyrhY;vNB*(UqR2Yw!l1Gz>*gA;+ zxeoiXF)cy>lp#fta8y_y!PA)tfpt>`7{d{w#JJ8j$Aia7OoonfM+&4l5@^BG0)Tjk z=#@d6dqO76k2!oS0_d5~*WbQ!gbgT28?<032;+E4=Mt8K1*t>;F>z zUnu1RV?EBbDfu4Q?ju$lAsAEIHPQfM%EuL8L#{%^htUm*{B(3fb3K}$G3AuBQanVa zJo_D*(0XDk>lxC}`_6OwUF+lT{laE2@mtw}2J(zWc25oZ?_JPdgVde@iW3r)zdTt3J2JcOy|AtnX8rTkKuB zqwR^Y^d`AQT`3h(QI>%0!bh?Zs2LYkz;!n1UUX}P1dQ7_d!dipJ;#SWrDM)UURH@m z`(HSDx$S4ZQc|vA2WmX_<0(q!l^c=Y+2a1q-x6So_Rm_qZ_S1+1DN$2I@Qi@qGR@H z(1)XXX@u$;>O?^I6wofLY2?>5;@c>{Y1G|~&&UaDfKvBR@*}KWB*dL5#N`Ei`#pXc zaeK)=`=x8w7Ev+@ALk2LFKG{oC4;J$M^cvMCg z!cX@|>ZydJ5M#^yD2phmWW z8f9gwK>;_Avu{)TfXc$on6gTwAK^CJLb-q?TlZ0egQiMh0;2a{6yzI(GC|j5d||S) zyr|0yQ$muLJWo9Iyic)OS5vBvYoDA;Q?u}E-=d&z@y(HF9Ciy`sHD*DuDnWDxJJ!n z1WicC!t?$@pWZ?3RsUi1Mqf ziKb$?wo`H{4%D;sg;O@~YRNebrL9(NXL0gfS*)y9+={zY)~v2oBtenuXmUp)PDZD7 w@t|r~H&r|Q2Vkr&Y08!*BSl7J<{%2=Y$$ek z-+S|zE-ZK!o zS&uB?h|-ZIO0s-tw=06LTlMnj-=2@>XTy$EiPSRlOuv=-LS~VQ2Rcp@f1uL6SV-Z& zy(JT=LXBo;-~VJFlW-9GkBY%m`P*6#vbAP&E7se?P9sYD&9s=L)3ldOJF62hsjB<_ z_xvQ?4cGh!KX~^}vHQlh^!KF7XzR4=YjkO=4}S637il!?%S5mFO7>)!$<;fJyFW5I zPqZ+qt<5xJN@e1BGaYMX{_kvg!ui?EYZi*GWuZjwe?pA*N>D`}8t>Wmh03vZWmTL5e z)+ZYe*8Gj_IP;@km}Nd1;ZUdkg_9#VXD8P%5I&LJ|B0NL_)&^O)4mk3Hpf$J)eny*xs!x_nY-C!M3n%oDx+#e#O&!qZI1FGO7>G! zWAJ%ssfxA^tpj^(kF5ZVM~wqPjjyPkG1a9p#)eG2G3Mx%1zU%Y05m>oUIfiw^+Ug( z3fTkcyKw>r#mSU$t$Ia~7WvIy8il=JFH~6&o#jkk3XDP3U}_OgEGFma$4Lm2PYtX) zxr0gF(-BpH>=R2}!RtSJ&F!==n_I&;QfVZ$j+@VZm^C2^UY2aF4pNad_hhoy?8Tkt zU|(;i$$O1E?>4ho%hf>`Jqx#F)_gW|=4RB3L5-#{4omL_eM6W4&OBjEW3ZpQK@cag z4uVx^k=;P$@-oBUq;{FdoG(YWE<)Fsu8bH~O&@Agp_BU;9qicJv4B1s{qvF3nPCh; zRya2ZI!ExlxImH0tiuut3a2upzZC-*zcBBzwQEZ1p-RX-&My913eev4tSP-ekZV4; zZ9IX->P)$?@`Ndh+vY5bszzO+_m5FBqEWdzdToxiWJyHdrw_HM81lb~20^&PRBa5( z!wG7d3x3Fc%M9H?eZXsv{=WWo;Vl9!DgUhi9fT_E8xh|Q)Qgz5Mz-)yCc+^jpsliJG#*#Pekr}xA_-%ozs-m}4FdlUxo1pziJ{*>5*;W#Q@p`Wo{?e&A?l?C8=VS8wW)##JTwku`P>;oZQG-?MgIT^T#V#*D_;dEp)t zuEjX5tYZ8FUBybLSoy*`w$82|)0JrEk10x&MsGbaVX%my#l43FZy=S9C6WdF`y!6? zOLkE>w^7znvSm~n5lJxYT^+-^V|*A>i07@mqSJuZpYXi09cH1{N?peaBwOtHIV^Mc zUN7u-M0kIf1XILYwnn$-M97KI#yxWlXZO)478==?>-yGA*A--J(DxejwpWbyD@OA! z5@Dme)B23eGy;`ry@D>(c5uD+&uOj*gy$$GO4Qi$mkz66LCzCD&#RcPXib(cO!Ciw zNSEc6EvX5R+>5g~$#j@RGIx4$rgOU=4iw$JX8+tF2=kJWQZJccm6w&whCQ7-Mg$A; zk_nCHH6yTN(v0p6hu`2H-QT#+Ijeo)Ig68Cnb$t|$_^jBemUG1aHXWoaGT;@!Rr_N z*g7U=u~FkJvv5NqX+fSofZ9kmOdu}&RTk-1-OkH{0cPpEGC+Lqhq?fNPFTvzU;sq^ zh72Q~Eb`IHe8n;Ag5I>k=uN>NjJ1fd(D>#k%1n|_!Gw2Kbz^tUl}UWBB4iL45O z-(iMP#^rOvuxyc`5_Hwb=@*(OW#xWks_qgu@T z#%9>YjCW@2xXcXmn}ST)Q16fp->2&3>xr~ZWDrnnRSi^gSy0TW+pSiszC`Cmi9-a0(n^68EP4jTP|QMcPBw|-(+-oIYWXDP|XcN zE?4lSPA$r#RgT0x`z#%bE$D3T!j{66#3w)hoOE?84gWR7wO$OS<6DF9}q OufwrFb9s&5u>T99B`;k7 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_spec.cpython-310.pyc deleted file mode 100644 index eba880a50e8d591d75ab458aa5dca0914b1e8460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7244 zcmeHMON<;x8Sd`sndxcIuAg!2yxiFklQG_zWFaD194m?Aga|RVY|9cOpxrxFyVLf} z^tifa$&SVs)+Y`KaY7MDHj$8g;J}SL5)wy_^a+Vm4jfPaeN4NHAH@^ zM6?|;&b(K)c$bSnqPnr;UFq>|&ImXy7Cy;j=_WvjnYZAP71q$kNJYR73~ zb+k+*DxUX}*NyH5>)z$pUwuvQext>`Z7yQkI@3WId7)vm5_8!hR%T0VS@q;ul^tP6@0*PRFS29o_5?81b@Jk-f-P)W|Yl#>h))i+zc`eBWpsW@p)#@jb#`VHJFjvUBV!_#R{D*($!r z*p8$dpBBP>^0j#9DAq)eHnQ(xZgAEB!1jgvRmE`KDU z>Op&=|HRF;D;u|YQ%>|AySa8XV(~;DR+zVPl8dFN6p~}jbbnur5J((8+A=9bYLmq7 zVcEpVX4rD4#~Vj8*mMU`fa(d-LE%tQqJn%wy-Dr#p}K|l65ja7D27F5_5mo3UE^MH zSR5KYd;?0TE=u?Xl(s7Ksw}7yQ0RAtnAnJX%Y`0?K7(LS?K$Wn5*vRWI;55#wz*nN7%wd0{uT@OtI2AX<`B z?Wh^F{p~=+J{YrSqseh$<{>VCEQ+N-rVlzg=pH17mkJg(izoN}$%4&n4_ifI5{^E=7_{TLQl?d>Fv z?}yz``u^+KKR$=Tu?i-Bx}+L@)aTH5>~+n-Q{%#^rYkk!@Un;M^pb{sMoKv}ZX1xS zIr#ktT*lfWXN01iH{8L*2Gbs2nKvCm>w?R^=#nqt-mHiZv>L5L&$=K%uVd#+DO#yf zjhl0}_ajr3K^8v8@KIva#R+PXf?UD-8EIz08NknsRw4e+qS~Z+=|gpT74OJ+m0jV? zR+jOH>rcu*S09p!%3dIX&KzF-Z+Q4*EUb&CL0rYs98@+%)-c7!@1RSu(Jd|1FmaL= zG6#<`-AZlyKsqqSpK*`YaKxr!s;S=}LLXTp0DAMloeK|QAytISkK;jIJg0Eg@>eIDi$i&s30 zVqfWhl1X2?^8=y0K=x0tLPm7vL9Wc)494ZYOa#r7J006QG^pf$e8OdDeD;<4$C=b0 zN5HJi^=vKi$3gBV?<f0sy4GnmJE-mMy6LKb8_LcHaGbt}deOAUaS4(&?)PC~4x`^JoK-`&0SKU3Q zq)UB2BdQN1-91m9-g&=>gr8`QSt;*#5ja9*&66};zdxbDIi5VlX zA}J4$LhJjlr$fA|=Y1%>xE1x=$V*`LuG(Q`=IXa{-djn}Fsf_+Mm4g86%QGVm6S8+ zKY*A}7fOchZh(*iIyCD)8c6L;s7Ns?mn34b&NK5ZL_VY3x0 zrZ`Fxo@WSji~TL$Slx$9gGr}H+b=YOcm;42J>15PTSc0NC`*f3yXFr~bu&hUiJNgQ z_!YD!^Nfp0+B@;pod4^|d=1RJfwh5_Y-6Z{qM*U zAZ-o#zPQ2wd!Il&t_PjM(z}t9tFm^(+cm?3g=Cvq!re7{Zk@P zEhtotyao`qks#?z;VfRp*q`w#9VnY8|81LLx(@*kB@ux8( zHvf?@BlKR%hq5ruF>N&7}H#ZG2I%Wp9bkCa6R=tISRG=EidRY)O7=g&(|?^-r+;JE~3Zx z|B4w34ab@atJ4`Xrx2NpLWHijFd0+AWMbq!N%4q@LzBuo^uG~n%rFIoR_xWAl{~KnjT$*dy=8N)>4 z0Xap$xl9)p5ukGFM8pm8CSku$#pGp=@a=Nn{|61dg!)&pB-9N$07+cm zhePYPsb2Pd+GsRV^nLs<2ZB0>6&p)rN8v_aa-WRvDfA`I$O-PK^jlJhkw^tI$(zqh ziEFJ@TJr`?q5qAEi&X59qiQNCL!zQx;_sty4BNB{mSe##^{?=`<)(GZEPU>ktY=`k zCD*jv1AH;ZS#nM}wquuzN-Zjmc$aXY{A^+gE?z;Uab_>YTh)glB@_2j-6|8ViB-Ba bhZ1;f&EbpWCu2%t+Lq%wNcNVk6S@BY6+1U) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_status.cpython-310.pyc deleted file mode 100644 index 8b9f423bc2d504319b5383b40bb0cb431be398e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7328 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_value_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_metric_value_status.cpython-310.pyc deleted file mode 100644 index 9ddf71f5309425b11aa8f826e6dda44cecb0b5a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5624 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 RC~$^NT+cOKQYOpR{{e15B>VsX diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_object_metric_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_object_metric_status.cpython-310.pyc deleted file mode 100644 index 1cdaa0517b34e193ebf249f35e360a718f60b1cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5123 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 XTpNwuq~Ms*42OBXXM3#7mJ0s`p35=3 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_pods_metric_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_pods_metric_source.cpython-310.pyc deleted file mode 100644 index 6caf7b03a20a57ab6c92ec2c5a825f02fa1fb38b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4213 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_resource_metric_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v2_resource_metric_source.cpython-310.pyc deleted file mode 100644 index aadf2decd4cfabf4f6f177328a2ec1a746d9d0f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4374 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/version_info.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/version_info.cpython-310.pyc deleted file mode 100644 index fa2eeb21926f88bab19a3107db8143963da4d289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8577 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 Os-o$dtSLohKJ$N$)Iz5K diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_service_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_service_reference.py deleted file mode 100644 index dbc6852..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_service_reference.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class AdmissionregistrationV1ServiceReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str', - 'path': 'str', - 'port': 'int' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace', - 'path': 'path', - 'port': 'port' - } - - def __init__(self, name=None, namespace=None, path=None, port=None, local_vars_configuration=None): # noqa: E501 - """AdmissionregistrationV1ServiceReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self._path = None - self._port = None - self.discriminator = None - - self.name = name - self.namespace = namespace - if path is not None: - self.path = path - if port is not None: - self.port = port - - @property - def name(self): - """Gets the name of this AdmissionregistrationV1ServiceReference. # noqa: E501 - - `name` is the name of the service. Required # noqa: E501 - - :return: The name of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this AdmissionregistrationV1ServiceReference. - - `name` is the name of the service. Required # noqa: E501 - - :param name: The name of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this AdmissionregistrationV1ServiceReference. # noqa: E501 - - `namespace` is the namespace of the service. Required # noqa: E501 - - :return: The namespace of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this AdmissionregistrationV1ServiceReference. - - `namespace` is the namespace of the service. Required # noqa: E501 - - :param namespace: The namespace of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and namespace is None: # noqa: E501 - raise ValueError("Invalid value for `namespace`, must not be `None`") # noqa: E501 - - self._namespace = namespace - - @property - def path(self): - """Gets the path of this AdmissionregistrationV1ServiceReference. # noqa: E501 - - `path` is an optional URL path which will be sent in any request to this service. # noqa: E501 - - :return: The path of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this AdmissionregistrationV1ServiceReference. - - `path` is an optional URL path which will be sent in any request to this service. # noqa: E501 - - :param path: The path of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def port(self): - """Gets the port of this AdmissionregistrationV1ServiceReference. # noqa: E501 - - If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). # noqa: E501 - - :return: The port of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this AdmissionregistrationV1ServiceReference. - - If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). # noqa: E501 - - :param port: The port of this AdmissionregistrationV1ServiceReference. # noqa: E501 - :type: int - """ - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, AdmissionregistrationV1ServiceReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, AdmissionregistrationV1ServiceReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_webhook_client_config.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_webhook_client_config.py deleted file mode 100644 index 5e70111..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/admissionregistration_v1_webhook_client_config.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class AdmissionregistrationV1WebhookClientConfig(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ca_bundle': 'str', - 'service': 'AdmissionregistrationV1ServiceReference', - 'url': 'str' - } - - attribute_map = { - 'ca_bundle': 'caBundle', - 'service': 'service', - 'url': 'url' - } - - def __init__(self, ca_bundle=None, service=None, url=None, local_vars_configuration=None): # noqa: E501 - """AdmissionregistrationV1WebhookClientConfig - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ca_bundle = None - self._service = None - self._url = None - self.discriminator = None - - if ca_bundle is not None: - self.ca_bundle = ca_bundle - if service is not None: - self.service = service - if url is not None: - self.url = url - - @property - def ca_bundle(self): - """Gets the ca_bundle of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - - `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :return: The ca_bundle of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :rtype: str - """ - return self._ca_bundle - - @ca_bundle.setter - def ca_bundle(self, ca_bundle): - """Sets the ca_bundle of this AdmissionregistrationV1WebhookClientConfig. - - `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :param ca_bundle: The ca_bundle of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :type: str - """ - if (self.local_vars_configuration.client_side_validation and - ca_bundle is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', ca_bundle)): # noqa: E501 - raise ValueError(r"Invalid value for `ca_bundle`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501 - - self._ca_bundle = ca_bundle - - @property - def service(self): - """Gets the service of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - - - :return: The service of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :rtype: AdmissionregistrationV1ServiceReference - """ - return self._service - - @service.setter - def service(self, service): - """Sets the service of this AdmissionregistrationV1WebhookClientConfig. - - - :param service: The service of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :type: AdmissionregistrationV1ServiceReference - """ - - self._service = service - - @property - def url(self): - """Gets the url of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - - `url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified. The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. The scheme must be \"https\"; the URL must begin with \"https://\". A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either. # noqa: E501 - - :return: The url of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :rtype: str - """ - return self._url - - @url.setter - def url(self, url): - """Sets the url of this AdmissionregistrationV1WebhookClientConfig. - - `url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified. The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. The scheme must be \"https\"; the URL must begin with \"https://\". A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either. # noqa: E501 - - :param url: The url of this AdmissionregistrationV1WebhookClientConfig. # noqa: E501 - :type: str - """ - - self._url = url - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, AdmissionregistrationV1WebhookClientConfig): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, AdmissionregistrationV1WebhookClientConfig): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_service_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_service_reference.py deleted file mode 100644 index a54d012..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_service_reference.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class ApiextensionsV1ServiceReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str', - 'path': 'str', - 'port': 'int' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace', - 'path': 'path', - 'port': 'port' - } - - def __init__(self, name=None, namespace=None, path=None, port=None, local_vars_configuration=None): # noqa: E501 - """ApiextensionsV1ServiceReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self._path = None - self._port = None - self.discriminator = None - - self.name = name - self.namespace = namespace - if path is not None: - self.path = path - if port is not None: - self.port = port - - @property - def name(self): - """Gets the name of this ApiextensionsV1ServiceReference. # noqa: E501 - - name is the name of the service. Required # noqa: E501 - - :return: The name of this ApiextensionsV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this ApiextensionsV1ServiceReference. - - name is the name of the service. Required # noqa: E501 - - :param name: The name of this ApiextensionsV1ServiceReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this ApiextensionsV1ServiceReference. # noqa: E501 - - namespace is the namespace of the service. Required # noqa: E501 - - :return: The namespace of this ApiextensionsV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this ApiextensionsV1ServiceReference. - - namespace is the namespace of the service. Required # noqa: E501 - - :param namespace: The namespace of this ApiextensionsV1ServiceReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and namespace is None: # noqa: E501 - raise ValueError("Invalid value for `namespace`, must not be `None`") # noqa: E501 - - self._namespace = namespace - - @property - def path(self): - """Gets the path of this ApiextensionsV1ServiceReference. # noqa: E501 - - path is an optional URL path at which the webhook will be contacted. # noqa: E501 - - :return: The path of this ApiextensionsV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this ApiextensionsV1ServiceReference. - - path is an optional URL path at which the webhook will be contacted. # noqa: E501 - - :param path: The path of this ApiextensionsV1ServiceReference. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def port(self): - """Gets the port of this ApiextensionsV1ServiceReference. # noqa: E501 - - port is an optional service port at which the webhook will be contacted. `port` should be a valid port number (1-65535, inclusive). Defaults to 443 for backward compatibility. # noqa: E501 - - :return: The port of this ApiextensionsV1ServiceReference. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this ApiextensionsV1ServiceReference. - - port is an optional service port at which the webhook will be contacted. `port` should be a valid port number (1-65535, inclusive). Defaults to 443 for backward compatibility. # noqa: E501 - - :param port: The port of this ApiextensionsV1ServiceReference. # noqa: E501 - :type: int - """ - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ApiextensionsV1ServiceReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ApiextensionsV1ServiceReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_webhook_client_config.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_webhook_client_config.py deleted file mode 100644 index bd2e4b5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiextensions_v1_webhook_client_config.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class ApiextensionsV1WebhookClientConfig(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ca_bundle': 'str', - 'service': 'ApiextensionsV1ServiceReference', - 'url': 'str' - } - - attribute_map = { - 'ca_bundle': 'caBundle', - 'service': 'service', - 'url': 'url' - } - - def __init__(self, ca_bundle=None, service=None, url=None, local_vars_configuration=None): # noqa: E501 - """ApiextensionsV1WebhookClientConfig - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ca_bundle = None - self._service = None - self._url = None - self.discriminator = None - - if ca_bundle is not None: - self.ca_bundle = ca_bundle - if service is not None: - self.service = service - if url is not None: - self.url = url - - @property - def ca_bundle(self): - """Gets the ca_bundle of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - - caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :return: The ca_bundle of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :rtype: str - """ - return self._ca_bundle - - @ca_bundle.setter - def ca_bundle(self, ca_bundle): - """Sets the ca_bundle of this ApiextensionsV1WebhookClientConfig. - - caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :param ca_bundle: The ca_bundle of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :type: str - """ - if (self.local_vars_configuration.client_side_validation and - ca_bundle is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', ca_bundle)): # noqa: E501 - raise ValueError(r"Invalid value for `ca_bundle`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501 - - self._ca_bundle = ca_bundle - - @property - def service(self): - """Gets the service of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - - - :return: The service of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :rtype: ApiextensionsV1ServiceReference - """ - return self._service - - @service.setter - def service(self, service): - """Sets the service of this ApiextensionsV1WebhookClientConfig. - - - :param service: The service of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :type: ApiextensionsV1ServiceReference - """ - - self._service = service - - @property - def url(self): - """Gets the url of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - - url gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified. The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. The scheme must be \"https\"; the URL must begin with \"https://\". A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either. # noqa: E501 - - :return: The url of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :rtype: str - """ - return self._url - - @url.setter - def url(self, url): - """Sets the url of this ApiextensionsV1WebhookClientConfig. - - url gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified. The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address. Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster. The scheme must be \"https\"; the URL must begin with \"https://\". A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier. Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either. # noqa: E501 - - :param url: The url of this ApiextensionsV1WebhookClientConfig. # noqa: E501 - :type: str - """ - - self._url = url - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ApiextensionsV1WebhookClientConfig): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ApiextensionsV1WebhookClientConfig): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiregistration_v1_service_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/apiregistration_v1_service_reference.py deleted file mode 100644 index c527a18..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/apiregistration_v1_service_reference.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class ApiregistrationV1ServiceReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str', - 'port': 'int' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace', - 'port': 'port' - } - - def __init__(self, name=None, namespace=None, port=None, local_vars_configuration=None): # noqa: E501 - """ApiregistrationV1ServiceReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self._port = None - self.discriminator = None - - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if port is not None: - self.port = port - - @property - def name(self): - """Gets the name of this ApiregistrationV1ServiceReference. # noqa: E501 - - Name is the name of the service # noqa: E501 - - :return: The name of this ApiregistrationV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this ApiregistrationV1ServiceReference. - - Name is the name of the service # noqa: E501 - - :param name: The name of this ApiregistrationV1ServiceReference. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this ApiregistrationV1ServiceReference. # noqa: E501 - - Namespace is the namespace of the service # noqa: E501 - - :return: The namespace of this ApiregistrationV1ServiceReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this ApiregistrationV1ServiceReference. - - Namespace is the namespace of the service # noqa: E501 - - :param namespace: The namespace of this ApiregistrationV1ServiceReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def port(self): - """Gets the port of this ApiregistrationV1ServiceReference. # noqa: E501 - - If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). # noqa: E501 - - :return: The port of this ApiregistrationV1ServiceReference. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this ApiregistrationV1ServiceReference. - - If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive). # noqa: E501 - - :param port: The port of this ApiregistrationV1ServiceReference. # noqa: E501 - :type: int - """ - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ApiregistrationV1ServiceReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ApiregistrationV1ServiceReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/authentication_v1_token_request.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/authentication_v1_token_request.py deleted file mode 100644 index 539030b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/authentication_v1_token_request.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class AuthenticationV1TokenRequest(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1TokenRequestSpec', - 'status': 'V1TokenRequestStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """AuthenticationV1TokenRequest - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this AuthenticationV1TokenRequest. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this AuthenticationV1TokenRequest. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this AuthenticationV1TokenRequest. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this AuthenticationV1TokenRequest. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this AuthenticationV1TokenRequest. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this AuthenticationV1TokenRequest. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this AuthenticationV1TokenRequest. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this AuthenticationV1TokenRequest. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this AuthenticationV1TokenRequest. # noqa: E501 - - - :return: The metadata of this AuthenticationV1TokenRequest. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this AuthenticationV1TokenRequest. - - - :param metadata: The metadata of this AuthenticationV1TokenRequest. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this AuthenticationV1TokenRequest. # noqa: E501 - - - :return: The spec of this AuthenticationV1TokenRequest. # noqa: E501 - :rtype: V1TokenRequestSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this AuthenticationV1TokenRequest. - - - :param spec: The spec of this AuthenticationV1TokenRequest. # noqa: E501 - :type: V1TokenRequestSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this AuthenticationV1TokenRequest. # noqa: E501 - - - :return: The status of this AuthenticationV1TokenRequest. # noqa: E501 - :rtype: V1TokenRequestStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this AuthenticationV1TokenRequest. - - - :param status: The status of this AuthenticationV1TokenRequest. # noqa: E501 - :type: V1TokenRequestStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, AuthenticationV1TokenRequest): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, AuthenticationV1TokenRequest): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_endpoint_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_endpoint_port.py deleted file mode 100644 index 77168b9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_endpoint_port.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class CoreV1EndpointPort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'app_protocol': 'str', - 'name': 'str', - 'port': 'int', - 'protocol': 'str' - } - - attribute_map = { - 'app_protocol': 'appProtocol', - 'name': 'name', - 'port': 'port', - 'protocol': 'protocol' - } - - def __init__(self, app_protocol=None, name=None, port=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """CoreV1EndpointPort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._app_protocol = None - self._name = None - self._port = None - self._protocol = None - self.discriminator = None - - if app_protocol is not None: - self.app_protocol = app_protocol - if name is not None: - self.name = name - self.port = port - if protocol is not None: - self.protocol = protocol - - @property - def app_protocol(self): - """Gets the app_protocol of this CoreV1EndpointPort. # noqa: E501 - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :return: The app_protocol of this CoreV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._app_protocol - - @app_protocol.setter - def app_protocol(self, app_protocol): - """Sets the app_protocol of this CoreV1EndpointPort. - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :param app_protocol: The app_protocol of this CoreV1EndpointPort. # noqa: E501 - :type: str - """ - - self._app_protocol = app_protocol - - @property - def name(self): - """Gets the name of this CoreV1EndpointPort. # noqa: E501 - - The name of this port. This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined. # noqa: E501 - - :return: The name of this CoreV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this CoreV1EndpointPort. - - The name of this port. This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined. # noqa: E501 - - :param name: The name of this CoreV1EndpointPort. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def port(self): - """Gets the port of this CoreV1EndpointPort. # noqa: E501 - - The port number of the endpoint. # noqa: E501 - - :return: The port of this CoreV1EndpointPort. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this CoreV1EndpointPort. - - The port number of the endpoint. # noqa: E501 - - :param port: The port of this CoreV1EndpointPort. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this CoreV1EndpointPort. # noqa: E501 - - The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP. # noqa: E501 - - :return: The protocol of this CoreV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this CoreV1EndpointPort. - - The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP. # noqa: E501 - - :param protocol: The protocol of this CoreV1EndpointPort. # noqa: E501 - :type: str - """ - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, CoreV1EndpointPort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, CoreV1EndpointPort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event.py deleted file mode 100644 index 481bb35..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event.py +++ /dev/null @@ -1,562 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class CoreV1Event(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'action': 'str', - 'api_version': 'str', - 'count': 'int', - 'event_time': 'datetime', - 'first_timestamp': 'datetime', - 'involved_object': 'V1ObjectReference', - 'kind': 'str', - 'last_timestamp': 'datetime', - 'message': 'str', - 'metadata': 'V1ObjectMeta', - 'reason': 'str', - 'related': 'V1ObjectReference', - 'reporting_component': 'str', - 'reporting_instance': 'str', - 'series': 'CoreV1EventSeries', - 'source': 'V1EventSource', - 'type': 'str' - } - - attribute_map = { - 'action': 'action', - 'api_version': 'apiVersion', - 'count': 'count', - 'event_time': 'eventTime', - 'first_timestamp': 'firstTimestamp', - 'involved_object': 'involvedObject', - 'kind': 'kind', - 'last_timestamp': 'lastTimestamp', - 'message': 'message', - 'metadata': 'metadata', - 'reason': 'reason', - 'related': 'related', - 'reporting_component': 'reportingComponent', - 'reporting_instance': 'reportingInstance', - 'series': 'series', - 'source': 'source', - 'type': 'type' - } - - def __init__(self, action=None, api_version=None, count=None, event_time=None, first_timestamp=None, involved_object=None, kind=None, last_timestamp=None, message=None, metadata=None, reason=None, related=None, reporting_component=None, reporting_instance=None, series=None, source=None, type=None, local_vars_configuration=None): # noqa: E501 - """CoreV1Event - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._action = None - self._api_version = None - self._count = None - self._event_time = None - self._first_timestamp = None - self._involved_object = None - self._kind = None - self._last_timestamp = None - self._message = None - self._metadata = None - self._reason = None - self._related = None - self._reporting_component = None - self._reporting_instance = None - self._series = None - self._source = None - self._type = None - self.discriminator = None - - if action is not None: - self.action = action - if api_version is not None: - self.api_version = api_version - if count is not None: - self.count = count - if event_time is not None: - self.event_time = event_time - if first_timestamp is not None: - self.first_timestamp = first_timestamp - self.involved_object = involved_object - if kind is not None: - self.kind = kind - if last_timestamp is not None: - self.last_timestamp = last_timestamp - if message is not None: - self.message = message - self.metadata = metadata - if reason is not None: - self.reason = reason - if related is not None: - self.related = related - if reporting_component is not None: - self.reporting_component = reporting_component - if reporting_instance is not None: - self.reporting_instance = reporting_instance - if series is not None: - self.series = series - if source is not None: - self.source = source - if type is not None: - self.type = type - - @property - def action(self): - """Gets the action of this CoreV1Event. # noqa: E501 - - What action was taken/failed regarding to the Regarding object. # noqa: E501 - - :return: The action of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._action - - @action.setter - def action(self, action): - """Sets the action of this CoreV1Event. - - What action was taken/failed regarding to the Regarding object. # noqa: E501 - - :param action: The action of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._action = action - - @property - def api_version(self): - """Gets the api_version of this CoreV1Event. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this CoreV1Event. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def count(self): - """Gets the count of this CoreV1Event. # noqa: E501 - - The number of times this event has occurred. # noqa: E501 - - :return: The count of this CoreV1Event. # noqa: E501 - :rtype: int - """ - return self._count - - @count.setter - def count(self, count): - """Sets the count of this CoreV1Event. - - The number of times this event has occurred. # noqa: E501 - - :param count: The count of this CoreV1Event. # noqa: E501 - :type: int - """ - - self._count = count - - @property - def event_time(self): - """Gets the event_time of this CoreV1Event. # noqa: E501 - - Time when this Event was first observed. # noqa: E501 - - :return: The event_time of this CoreV1Event. # noqa: E501 - :rtype: datetime - """ - return self._event_time - - @event_time.setter - def event_time(self, event_time): - """Sets the event_time of this CoreV1Event. - - Time when this Event was first observed. # noqa: E501 - - :param event_time: The event_time of this CoreV1Event. # noqa: E501 - :type: datetime - """ - - self._event_time = event_time - - @property - def first_timestamp(self): - """Gets the first_timestamp of this CoreV1Event. # noqa: E501 - - The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) # noqa: E501 - - :return: The first_timestamp of this CoreV1Event. # noqa: E501 - :rtype: datetime - """ - return self._first_timestamp - - @first_timestamp.setter - def first_timestamp(self, first_timestamp): - """Sets the first_timestamp of this CoreV1Event. - - The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) # noqa: E501 - - :param first_timestamp: The first_timestamp of this CoreV1Event. # noqa: E501 - :type: datetime - """ - - self._first_timestamp = first_timestamp - - @property - def involved_object(self): - """Gets the involved_object of this CoreV1Event. # noqa: E501 - - - :return: The involved_object of this CoreV1Event. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._involved_object - - @involved_object.setter - def involved_object(self, involved_object): - """Sets the involved_object of this CoreV1Event. - - - :param involved_object: The involved_object of this CoreV1Event. # noqa: E501 - :type: V1ObjectReference - """ - if self.local_vars_configuration.client_side_validation and involved_object is None: # noqa: E501 - raise ValueError("Invalid value for `involved_object`, must not be `None`") # noqa: E501 - - self._involved_object = involved_object - - @property - def kind(self): - """Gets the kind of this CoreV1Event. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this CoreV1Event. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def last_timestamp(self): - """Gets the last_timestamp of this CoreV1Event. # noqa: E501 - - The time at which the most recent occurrence of this event was recorded. # noqa: E501 - - :return: The last_timestamp of this CoreV1Event. # noqa: E501 - :rtype: datetime - """ - return self._last_timestamp - - @last_timestamp.setter - def last_timestamp(self, last_timestamp): - """Sets the last_timestamp of this CoreV1Event. - - The time at which the most recent occurrence of this event was recorded. # noqa: E501 - - :param last_timestamp: The last_timestamp of this CoreV1Event. # noqa: E501 - :type: datetime - """ - - self._last_timestamp = last_timestamp - - @property - def message(self): - """Gets the message of this CoreV1Event. # noqa: E501 - - A human-readable description of the status of this operation. # noqa: E501 - - :return: The message of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this CoreV1Event. - - A human-readable description of the status of this operation. # noqa: E501 - - :param message: The message of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def metadata(self): - """Gets the metadata of this CoreV1Event. # noqa: E501 - - - :return: The metadata of this CoreV1Event. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this CoreV1Event. - - - :param metadata: The metadata of this CoreV1Event. # noqa: E501 - :type: V1ObjectMeta - """ - if self.local_vars_configuration.client_side_validation and metadata is None: # noqa: E501 - raise ValueError("Invalid value for `metadata`, must not be `None`") # noqa: E501 - - self._metadata = metadata - - @property - def reason(self): - """Gets the reason of this CoreV1Event. # noqa: E501 - - This should be a short, machine understandable string that gives the reason for the transition into the object's current status. # noqa: E501 - - :return: The reason of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this CoreV1Event. - - This should be a short, machine understandable string that gives the reason for the transition into the object's current status. # noqa: E501 - - :param reason: The reason of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def related(self): - """Gets the related of this CoreV1Event. # noqa: E501 - - - :return: The related of this CoreV1Event. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._related - - @related.setter - def related(self, related): - """Sets the related of this CoreV1Event. - - - :param related: The related of this CoreV1Event. # noqa: E501 - :type: V1ObjectReference - """ - - self._related = related - - @property - def reporting_component(self): - """Gets the reporting_component of this CoreV1Event. # noqa: E501 - - Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. # noqa: E501 - - :return: The reporting_component of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._reporting_component - - @reporting_component.setter - def reporting_component(self, reporting_component): - """Sets the reporting_component of this CoreV1Event. - - Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. # noqa: E501 - - :param reporting_component: The reporting_component of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._reporting_component = reporting_component - - @property - def reporting_instance(self): - """Gets the reporting_instance of this CoreV1Event. # noqa: E501 - - ID of the controller instance, e.g. `kubelet-xyzf`. # noqa: E501 - - :return: The reporting_instance of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._reporting_instance - - @reporting_instance.setter - def reporting_instance(self, reporting_instance): - """Sets the reporting_instance of this CoreV1Event. - - ID of the controller instance, e.g. `kubelet-xyzf`. # noqa: E501 - - :param reporting_instance: The reporting_instance of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._reporting_instance = reporting_instance - - @property - def series(self): - """Gets the series of this CoreV1Event. # noqa: E501 - - - :return: The series of this CoreV1Event. # noqa: E501 - :rtype: CoreV1EventSeries - """ - return self._series - - @series.setter - def series(self, series): - """Sets the series of this CoreV1Event. - - - :param series: The series of this CoreV1Event. # noqa: E501 - :type: CoreV1EventSeries - """ - - self._series = series - - @property - def source(self): - """Gets the source of this CoreV1Event. # noqa: E501 - - - :return: The source of this CoreV1Event. # noqa: E501 - :rtype: V1EventSource - """ - return self._source - - @source.setter - def source(self, source): - """Sets the source of this CoreV1Event. - - - :param source: The source of this CoreV1Event. # noqa: E501 - :type: V1EventSource - """ - - self._source = source - - @property - def type(self): - """Gets the type of this CoreV1Event. # noqa: E501 - - Type of this event (Normal, Warning), new types could be added in the future # noqa: E501 - - :return: The type of this CoreV1Event. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this CoreV1Event. - - Type of this event (Normal, Warning), new types could be added in the future # noqa: E501 - - :param type: The type of this CoreV1Event. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, CoreV1Event): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, CoreV1Event): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_list.py deleted file mode 100644 index d74cb8c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class CoreV1EventList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[CoreV1Event]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """CoreV1EventList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this CoreV1EventList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this CoreV1EventList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this CoreV1EventList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this CoreV1EventList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this CoreV1EventList. # noqa: E501 - - List of events # noqa: E501 - - :return: The items of this CoreV1EventList. # noqa: E501 - :rtype: list[CoreV1Event] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this CoreV1EventList. - - List of events # noqa: E501 - - :param items: The items of this CoreV1EventList. # noqa: E501 - :type: list[CoreV1Event] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this CoreV1EventList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this CoreV1EventList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this CoreV1EventList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this CoreV1EventList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this CoreV1EventList. # noqa: E501 - - - :return: The metadata of this CoreV1EventList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this CoreV1EventList. - - - :param metadata: The metadata of this CoreV1EventList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, CoreV1EventList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, CoreV1EventList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_series.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_series.py deleted file mode 100644 index b7c4477..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/core_v1_event_series.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class CoreV1EventSeries(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'count': 'int', - 'last_observed_time': 'datetime' - } - - attribute_map = { - 'count': 'count', - 'last_observed_time': 'lastObservedTime' - } - - def __init__(self, count=None, last_observed_time=None, local_vars_configuration=None): # noqa: E501 - """CoreV1EventSeries - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._count = None - self._last_observed_time = None - self.discriminator = None - - if count is not None: - self.count = count - if last_observed_time is not None: - self.last_observed_time = last_observed_time - - @property - def count(self): - """Gets the count of this CoreV1EventSeries. # noqa: E501 - - Number of occurrences in this series up to the last heartbeat time # noqa: E501 - - :return: The count of this CoreV1EventSeries. # noqa: E501 - :rtype: int - """ - return self._count - - @count.setter - def count(self, count): - """Sets the count of this CoreV1EventSeries. - - Number of occurrences in this series up to the last heartbeat time # noqa: E501 - - :param count: The count of this CoreV1EventSeries. # noqa: E501 - :type: int - """ - - self._count = count - - @property - def last_observed_time(self): - """Gets the last_observed_time of this CoreV1EventSeries. # noqa: E501 - - Time of the last occurrence observed # noqa: E501 - - :return: The last_observed_time of this CoreV1EventSeries. # noqa: E501 - :rtype: datetime - """ - return self._last_observed_time - - @last_observed_time.setter - def last_observed_time(self, last_observed_time): - """Sets the last_observed_time of this CoreV1EventSeries. - - Time of the last occurrence observed # noqa: E501 - - :param last_observed_time: The last_observed_time of this CoreV1EventSeries. # noqa: E501 - :type: datetime - """ - - self._last_observed_time = last_observed_time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, CoreV1EventSeries): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, CoreV1EventSeries): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/discovery_v1_endpoint_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/discovery_v1_endpoint_port.py deleted file mode 100644 index dcec15d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/discovery_v1_endpoint_port.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class DiscoveryV1EndpointPort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'app_protocol': 'str', - 'name': 'str', - 'port': 'int', - 'protocol': 'str' - } - - attribute_map = { - 'app_protocol': 'appProtocol', - 'name': 'name', - 'port': 'port', - 'protocol': 'protocol' - } - - def __init__(self, app_protocol=None, name=None, port=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """DiscoveryV1EndpointPort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._app_protocol = None - self._name = None - self._port = None - self._protocol = None - self.discriminator = None - - if app_protocol is not None: - self.app_protocol = app_protocol - if name is not None: - self.name = name - if port is not None: - self.port = port - if protocol is not None: - self.protocol = protocol - - @property - def app_protocol(self): - """Gets the app_protocol of this DiscoveryV1EndpointPort. # noqa: E501 - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :return: The app_protocol of this DiscoveryV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._app_protocol - - @app_protocol.setter - def app_protocol(self, app_protocol): - """Sets the app_protocol of this DiscoveryV1EndpointPort. - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :param app_protocol: The app_protocol of this DiscoveryV1EndpointPort. # noqa: E501 - :type: str - """ - - self._app_protocol = app_protocol - - @property - def name(self): - """Gets the name of this DiscoveryV1EndpointPort. # noqa: E501 - - name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string. # noqa: E501 - - :return: The name of this DiscoveryV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this DiscoveryV1EndpointPort. - - name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string. # noqa: E501 - - :param name: The name of this DiscoveryV1EndpointPort. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def port(self): - """Gets the port of this DiscoveryV1EndpointPort. # noqa: E501 - - port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer. # noqa: E501 - - :return: The port of this DiscoveryV1EndpointPort. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this DiscoveryV1EndpointPort. - - port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer. # noqa: E501 - - :param port: The port of this DiscoveryV1EndpointPort. # noqa: E501 - :type: int - """ - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this DiscoveryV1EndpointPort. # noqa: E501 - - protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP. # noqa: E501 - - :return: The protocol of this DiscoveryV1EndpointPort. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this DiscoveryV1EndpointPort. - - protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP. # noqa: E501 - - :param protocol: The protocol of this DiscoveryV1EndpointPort. # noqa: E501 - :type: str - """ - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, DiscoveryV1EndpointPort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, DiscoveryV1EndpointPort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event.py deleted file mode 100644 index 333a85f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event.py +++ /dev/null @@ -1,561 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class EventsV1Event(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'action': 'str', - 'api_version': 'str', - 'deprecated_count': 'int', - 'deprecated_first_timestamp': 'datetime', - 'deprecated_last_timestamp': 'datetime', - 'deprecated_source': 'V1EventSource', - 'event_time': 'datetime', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'note': 'str', - 'reason': 'str', - 'regarding': 'V1ObjectReference', - 'related': 'V1ObjectReference', - 'reporting_controller': 'str', - 'reporting_instance': 'str', - 'series': 'EventsV1EventSeries', - 'type': 'str' - } - - attribute_map = { - 'action': 'action', - 'api_version': 'apiVersion', - 'deprecated_count': 'deprecatedCount', - 'deprecated_first_timestamp': 'deprecatedFirstTimestamp', - 'deprecated_last_timestamp': 'deprecatedLastTimestamp', - 'deprecated_source': 'deprecatedSource', - 'event_time': 'eventTime', - 'kind': 'kind', - 'metadata': 'metadata', - 'note': 'note', - 'reason': 'reason', - 'regarding': 'regarding', - 'related': 'related', - 'reporting_controller': 'reportingController', - 'reporting_instance': 'reportingInstance', - 'series': 'series', - 'type': 'type' - } - - def __init__(self, action=None, api_version=None, deprecated_count=None, deprecated_first_timestamp=None, deprecated_last_timestamp=None, deprecated_source=None, event_time=None, kind=None, metadata=None, note=None, reason=None, regarding=None, related=None, reporting_controller=None, reporting_instance=None, series=None, type=None, local_vars_configuration=None): # noqa: E501 - """EventsV1Event - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._action = None - self._api_version = None - self._deprecated_count = None - self._deprecated_first_timestamp = None - self._deprecated_last_timestamp = None - self._deprecated_source = None - self._event_time = None - self._kind = None - self._metadata = None - self._note = None - self._reason = None - self._regarding = None - self._related = None - self._reporting_controller = None - self._reporting_instance = None - self._series = None - self._type = None - self.discriminator = None - - if action is not None: - self.action = action - if api_version is not None: - self.api_version = api_version - if deprecated_count is not None: - self.deprecated_count = deprecated_count - if deprecated_first_timestamp is not None: - self.deprecated_first_timestamp = deprecated_first_timestamp - if deprecated_last_timestamp is not None: - self.deprecated_last_timestamp = deprecated_last_timestamp - if deprecated_source is not None: - self.deprecated_source = deprecated_source - self.event_time = event_time - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if note is not None: - self.note = note - if reason is not None: - self.reason = reason - if regarding is not None: - self.regarding = regarding - if related is not None: - self.related = related - if reporting_controller is not None: - self.reporting_controller = reporting_controller - if reporting_instance is not None: - self.reporting_instance = reporting_instance - if series is not None: - self.series = series - if type is not None: - self.type = type - - @property - def action(self): - """Gets the action of this EventsV1Event. # noqa: E501 - - action is what action was taken/failed regarding to the regarding object. It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :return: The action of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._action - - @action.setter - def action(self, action): - """Sets the action of this EventsV1Event. - - action is what action was taken/failed regarding to the regarding object. It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :param action: The action of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._action = action - - @property - def api_version(self): - """Gets the api_version of this EventsV1Event. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this EventsV1Event. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def deprecated_count(self): - """Gets the deprecated_count of this EventsV1Event. # noqa: E501 - - deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :return: The deprecated_count of this EventsV1Event. # noqa: E501 - :rtype: int - """ - return self._deprecated_count - - @deprecated_count.setter - def deprecated_count(self, deprecated_count): - """Sets the deprecated_count of this EventsV1Event. - - deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :param deprecated_count: The deprecated_count of this EventsV1Event. # noqa: E501 - :type: int - """ - - self._deprecated_count = deprecated_count - - @property - def deprecated_first_timestamp(self): - """Gets the deprecated_first_timestamp of this EventsV1Event. # noqa: E501 - - deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :return: The deprecated_first_timestamp of this EventsV1Event. # noqa: E501 - :rtype: datetime - """ - return self._deprecated_first_timestamp - - @deprecated_first_timestamp.setter - def deprecated_first_timestamp(self, deprecated_first_timestamp): - """Sets the deprecated_first_timestamp of this EventsV1Event. - - deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :param deprecated_first_timestamp: The deprecated_first_timestamp of this EventsV1Event. # noqa: E501 - :type: datetime - """ - - self._deprecated_first_timestamp = deprecated_first_timestamp - - @property - def deprecated_last_timestamp(self): - """Gets the deprecated_last_timestamp of this EventsV1Event. # noqa: E501 - - deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :return: The deprecated_last_timestamp of this EventsV1Event. # noqa: E501 - :rtype: datetime - """ - return self._deprecated_last_timestamp - - @deprecated_last_timestamp.setter - def deprecated_last_timestamp(self, deprecated_last_timestamp): - """Sets the deprecated_last_timestamp of this EventsV1Event. - - deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type. # noqa: E501 - - :param deprecated_last_timestamp: The deprecated_last_timestamp of this EventsV1Event. # noqa: E501 - :type: datetime - """ - - self._deprecated_last_timestamp = deprecated_last_timestamp - - @property - def deprecated_source(self): - """Gets the deprecated_source of this EventsV1Event. # noqa: E501 - - - :return: The deprecated_source of this EventsV1Event. # noqa: E501 - :rtype: V1EventSource - """ - return self._deprecated_source - - @deprecated_source.setter - def deprecated_source(self, deprecated_source): - """Sets the deprecated_source of this EventsV1Event. - - - :param deprecated_source: The deprecated_source of this EventsV1Event. # noqa: E501 - :type: V1EventSource - """ - - self._deprecated_source = deprecated_source - - @property - def event_time(self): - """Gets the event_time of this EventsV1Event. # noqa: E501 - - eventTime is the time when this Event was first observed. It is required. # noqa: E501 - - :return: The event_time of this EventsV1Event. # noqa: E501 - :rtype: datetime - """ - return self._event_time - - @event_time.setter - def event_time(self, event_time): - """Sets the event_time of this EventsV1Event. - - eventTime is the time when this Event was first observed. It is required. # noqa: E501 - - :param event_time: The event_time of this EventsV1Event. # noqa: E501 - :type: datetime - """ - if self.local_vars_configuration.client_side_validation and event_time is None: # noqa: E501 - raise ValueError("Invalid value for `event_time`, must not be `None`") # noqa: E501 - - self._event_time = event_time - - @property - def kind(self): - """Gets the kind of this EventsV1Event. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this EventsV1Event. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this EventsV1Event. # noqa: E501 - - - :return: The metadata of this EventsV1Event. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this EventsV1Event. - - - :param metadata: The metadata of this EventsV1Event. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def note(self): - """Gets the note of this EventsV1Event. # noqa: E501 - - note is a human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB. # noqa: E501 - - :return: The note of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._note - - @note.setter - def note(self, note): - """Sets the note of this EventsV1Event. - - note is a human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB. # noqa: E501 - - :param note: The note of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._note = note - - @property - def reason(self): - """Gets the reason of this EventsV1Event. # noqa: E501 - - reason is why the action was taken. It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :return: The reason of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this EventsV1Event. - - reason is why the action was taken. It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :param reason: The reason of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def regarding(self): - """Gets the regarding of this EventsV1Event. # noqa: E501 - - - :return: The regarding of this EventsV1Event. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._regarding - - @regarding.setter - def regarding(self, regarding): - """Sets the regarding of this EventsV1Event. - - - :param regarding: The regarding of this EventsV1Event. # noqa: E501 - :type: V1ObjectReference - """ - - self._regarding = regarding - - @property - def related(self): - """Gets the related of this EventsV1Event. # noqa: E501 - - - :return: The related of this EventsV1Event. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._related - - @related.setter - def related(self, related): - """Sets the related of this EventsV1Event. - - - :param related: The related of this EventsV1Event. # noqa: E501 - :type: V1ObjectReference - """ - - self._related = related - - @property - def reporting_controller(self): - """Gets the reporting_controller of this EventsV1Event. # noqa: E501 - - reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events. # noqa: E501 - - :return: The reporting_controller of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._reporting_controller - - @reporting_controller.setter - def reporting_controller(self, reporting_controller): - """Sets the reporting_controller of this EventsV1Event. - - reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events. # noqa: E501 - - :param reporting_controller: The reporting_controller of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._reporting_controller = reporting_controller - - @property - def reporting_instance(self): - """Gets the reporting_instance of this EventsV1Event. # noqa: E501 - - reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :return: The reporting_instance of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._reporting_instance - - @reporting_instance.setter - def reporting_instance(self, reporting_instance): - """Sets the reporting_instance of this EventsV1Event. - - reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters. # noqa: E501 - - :param reporting_instance: The reporting_instance of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._reporting_instance = reporting_instance - - @property - def series(self): - """Gets the series of this EventsV1Event. # noqa: E501 - - - :return: The series of this EventsV1Event. # noqa: E501 - :rtype: EventsV1EventSeries - """ - return self._series - - @series.setter - def series(self, series): - """Sets the series of this EventsV1Event. - - - :param series: The series of this EventsV1Event. # noqa: E501 - :type: EventsV1EventSeries - """ - - self._series = series - - @property - def type(self): - """Gets the type of this EventsV1Event. # noqa: E501 - - type is the type of this event (Normal, Warning), new types could be added in the future. It is machine-readable. This field cannot be empty for new Events. # noqa: E501 - - :return: The type of this EventsV1Event. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this EventsV1Event. - - type is the type of this event (Normal, Warning), new types could be added in the future. It is machine-readable. This field cannot be empty for new Events. # noqa: E501 - - :param type: The type of this EventsV1Event. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, EventsV1Event): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, EventsV1Event): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_list.py deleted file mode 100644 index b781fa9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class EventsV1EventList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[EventsV1Event]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """EventsV1EventList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this EventsV1EventList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this EventsV1EventList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this EventsV1EventList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this EventsV1EventList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this EventsV1EventList. # noqa: E501 - - items is a list of schema objects. # noqa: E501 - - :return: The items of this EventsV1EventList. # noqa: E501 - :rtype: list[EventsV1Event] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this EventsV1EventList. - - items is a list of schema objects. # noqa: E501 - - :param items: The items of this EventsV1EventList. # noqa: E501 - :type: list[EventsV1Event] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this EventsV1EventList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this EventsV1EventList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this EventsV1EventList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this EventsV1EventList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this EventsV1EventList. # noqa: E501 - - - :return: The metadata of this EventsV1EventList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this EventsV1EventList. - - - :param metadata: The metadata of this EventsV1EventList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, EventsV1EventList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, EventsV1EventList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_series.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_series.py deleted file mode 100644 index 91b6adb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/events_v1_event_series.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class EventsV1EventSeries(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'count': 'int', - 'last_observed_time': 'datetime' - } - - attribute_map = { - 'count': 'count', - 'last_observed_time': 'lastObservedTime' - } - - def __init__(self, count=None, last_observed_time=None, local_vars_configuration=None): # noqa: E501 - """EventsV1EventSeries - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._count = None - self._last_observed_time = None - self.discriminator = None - - self.count = count - self.last_observed_time = last_observed_time - - @property - def count(self): - """Gets the count of this EventsV1EventSeries. # noqa: E501 - - count is the number of occurrences in this series up to the last heartbeat time. # noqa: E501 - - :return: The count of this EventsV1EventSeries. # noqa: E501 - :rtype: int - """ - return self._count - - @count.setter - def count(self, count): - """Sets the count of this EventsV1EventSeries. - - count is the number of occurrences in this series up to the last heartbeat time. # noqa: E501 - - :param count: The count of this EventsV1EventSeries. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and count is None: # noqa: E501 - raise ValueError("Invalid value for `count`, must not be `None`") # noqa: E501 - - self._count = count - - @property - def last_observed_time(self): - """Gets the last_observed_time of this EventsV1EventSeries. # noqa: E501 - - lastObservedTime is the time when last Event from the series was seen before last heartbeat. # noqa: E501 - - :return: The last_observed_time of this EventsV1EventSeries. # noqa: E501 - :rtype: datetime - """ - return self._last_observed_time - - @last_observed_time.setter - def last_observed_time(self, last_observed_time): - """Sets the last_observed_time of this EventsV1EventSeries. - - lastObservedTime is the time when last Event from the series was seen before last heartbeat. # noqa: E501 - - :param last_observed_time: The last_observed_time of this EventsV1EventSeries. # noqa: E501 - :type: datetime - """ - if self.local_vars_configuration.client_side_validation and last_observed_time is None: # noqa: E501 - raise ValueError("Invalid value for `last_observed_time`, must not be `None`") # noqa: E501 - - self._last_observed_time = last_observed_time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, EventsV1EventSeries): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, EventsV1EventSeries): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/flowcontrol_v1_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/flowcontrol_v1_subject.py deleted file mode 100644 index 613cb7c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/flowcontrol_v1_subject.py +++ /dev/null @@ -1,201 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class FlowcontrolV1Subject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group': 'V1GroupSubject', - 'kind': 'str', - 'service_account': 'V1ServiceAccountSubject', - 'user': 'V1UserSubject' - } - - attribute_map = { - 'group': 'group', - 'kind': 'kind', - 'service_account': 'serviceAccount', - 'user': 'user' - } - - def __init__(self, group=None, kind=None, service_account=None, user=None, local_vars_configuration=None): # noqa: E501 - """FlowcontrolV1Subject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group = None - self._kind = None - self._service_account = None - self._user = None - self.discriminator = None - - if group is not None: - self.group = group - self.kind = kind - if service_account is not None: - self.service_account = service_account - if user is not None: - self.user = user - - @property - def group(self): - """Gets the group of this FlowcontrolV1Subject. # noqa: E501 - - - :return: The group of this FlowcontrolV1Subject. # noqa: E501 - :rtype: V1GroupSubject - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this FlowcontrolV1Subject. - - - :param group: The group of this FlowcontrolV1Subject. # noqa: E501 - :type: V1GroupSubject - """ - - self._group = group - - @property - def kind(self): - """Gets the kind of this FlowcontrolV1Subject. # noqa: E501 - - `kind` indicates which one of the other fields is non-empty. Required # noqa: E501 - - :return: The kind of this FlowcontrolV1Subject. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this FlowcontrolV1Subject. - - `kind` indicates which one of the other fields is non-empty. Required # noqa: E501 - - :param kind: The kind of this FlowcontrolV1Subject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def service_account(self): - """Gets the service_account of this FlowcontrolV1Subject. # noqa: E501 - - - :return: The service_account of this FlowcontrolV1Subject. # noqa: E501 - :rtype: V1ServiceAccountSubject - """ - return self._service_account - - @service_account.setter - def service_account(self, service_account): - """Sets the service_account of this FlowcontrolV1Subject. - - - :param service_account: The service_account of this FlowcontrolV1Subject. # noqa: E501 - :type: V1ServiceAccountSubject - """ - - self._service_account = service_account - - @property - def user(self): - """Gets the user of this FlowcontrolV1Subject. # noqa: E501 - - - :return: The user of this FlowcontrolV1Subject. # noqa: E501 - :rtype: V1UserSubject - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this FlowcontrolV1Subject. - - - :param user: The user of this FlowcontrolV1Subject. # noqa: E501 - :type: V1UserSubject - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, FlowcontrolV1Subject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, FlowcontrolV1Subject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/rbac_v1_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/rbac_v1_subject.py deleted file mode 100644 index b6dd0f7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/rbac_v1_subject.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class RbacV1Subject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, api_group=None, kind=None, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """RbacV1Subject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self._namespace = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - if namespace is not None: - self.namespace = namespace - - @property - def api_group(self): - """Gets the api_group of this RbacV1Subject. # noqa: E501 - - APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects. # noqa: E501 - - :return: The api_group of this RbacV1Subject. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this RbacV1Subject. - - APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects. # noqa: E501 - - :param api_group: The api_group of this RbacV1Subject. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this RbacV1Subject. # noqa: E501 - - Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error. # noqa: E501 - - :return: The kind of this RbacV1Subject. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this RbacV1Subject. - - Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error. # noqa: E501 - - :param kind: The kind of this RbacV1Subject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this RbacV1Subject. # noqa: E501 - - Name of the object being referenced. # noqa: E501 - - :return: The name of this RbacV1Subject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this RbacV1Subject. - - Name of the object being referenced. # noqa: E501 - - :param name: The name of this RbacV1Subject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this RbacV1Subject. # noqa: E501 - - Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error. # noqa: E501 - - :return: The namespace of this RbacV1Subject. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this RbacV1Subject. - - Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error. # noqa: E501 - - :param namespace: The namespace of this RbacV1Subject. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, RbacV1Subject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, RbacV1Subject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/storage_v1_token_request.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/storage_v1_token_request.py deleted file mode 100644 index 34aab46..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/storage_v1_token_request.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class StorageV1TokenRequest(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audience': 'str', - 'expiration_seconds': 'int' - } - - attribute_map = { - 'audience': 'audience', - 'expiration_seconds': 'expirationSeconds' - } - - def __init__(self, audience=None, expiration_seconds=None, local_vars_configuration=None): # noqa: E501 - """StorageV1TokenRequest - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audience = None - self._expiration_seconds = None - self.discriminator = None - - self.audience = audience - if expiration_seconds is not None: - self.expiration_seconds = expiration_seconds - - @property - def audience(self): - """Gets the audience of this StorageV1TokenRequest. # noqa: E501 - - audience is the intended audience of the token in \"TokenRequestSpec\". It will default to the audiences of kube apiserver. # noqa: E501 - - :return: The audience of this StorageV1TokenRequest. # noqa: E501 - :rtype: str - """ - return self._audience - - @audience.setter - def audience(self, audience): - """Sets the audience of this StorageV1TokenRequest. - - audience is the intended audience of the token in \"TokenRequestSpec\". It will default to the audiences of kube apiserver. # noqa: E501 - - :param audience: The audience of this StorageV1TokenRequest. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and audience is None: # noqa: E501 - raise ValueError("Invalid value for `audience`, must not be `None`") # noqa: E501 - - self._audience = audience - - @property - def expiration_seconds(self): - """Gets the expiration_seconds of this StorageV1TokenRequest. # noqa: E501 - - expirationSeconds is the duration of validity of the token in \"TokenRequestSpec\". It has the same default value of \"ExpirationSeconds\" in \"TokenRequestSpec\". # noqa: E501 - - :return: The expiration_seconds of this StorageV1TokenRequest. # noqa: E501 - :rtype: int - """ - return self._expiration_seconds - - @expiration_seconds.setter - def expiration_seconds(self, expiration_seconds): - """Sets the expiration_seconds of this StorageV1TokenRequest. - - expirationSeconds is the duration of validity of the token in \"TokenRequestSpec\". It has the same default value of \"ExpirationSeconds\" in \"TokenRequestSpec\". # noqa: E501 - - :param expiration_seconds: The expiration_seconds of this StorageV1TokenRequest. # noqa: E501 - :type: int - """ - - self._expiration_seconds = expiration_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, StorageV1TokenRequest): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, StorageV1TokenRequest): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_affinity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_affinity.py deleted file mode 100644 index 857f5fd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_affinity.py +++ /dev/null @@ -1,172 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Affinity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'node_affinity': 'V1NodeAffinity', - 'pod_affinity': 'V1PodAffinity', - 'pod_anti_affinity': 'V1PodAntiAffinity' - } - - attribute_map = { - 'node_affinity': 'nodeAffinity', - 'pod_affinity': 'podAffinity', - 'pod_anti_affinity': 'podAntiAffinity' - } - - def __init__(self, node_affinity=None, pod_affinity=None, pod_anti_affinity=None, local_vars_configuration=None): # noqa: E501 - """V1Affinity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._node_affinity = None - self._pod_affinity = None - self._pod_anti_affinity = None - self.discriminator = None - - if node_affinity is not None: - self.node_affinity = node_affinity - if pod_affinity is not None: - self.pod_affinity = pod_affinity - if pod_anti_affinity is not None: - self.pod_anti_affinity = pod_anti_affinity - - @property - def node_affinity(self): - """Gets the node_affinity of this V1Affinity. # noqa: E501 - - - :return: The node_affinity of this V1Affinity. # noqa: E501 - :rtype: V1NodeAffinity - """ - return self._node_affinity - - @node_affinity.setter - def node_affinity(self, node_affinity): - """Sets the node_affinity of this V1Affinity. - - - :param node_affinity: The node_affinity of this V1Affinity. # noqa: E501 - :type: V1NodeAffinity - """ - - self._node_affinity = node_affinity - - @property - def pod_affinity(self): - """Gets the pod_affinity of this V1Affinity. # noqa: E501 - - - :return: The pod_affinity of this V1Affinity. # noqa: E501 - :rtype: V1PodAffinity - """ - return self._pod_affinity - - @pod_affinity.setter - def pod_affinity(self, pod_affinity): - """Sets the pod_affinity of this V1Affinity. - - - :param pod_affinity: The pod_affinity of this V1Affinity. # noqa: E501 - :type: V1PodAffinity - """ - - self._pod_affinity = pod_affinity - - @property - def pod_anti_affinity(self): - """Gets the pod_anti_affinity of this V1Affinity. # noqa: E501 - - - :return: The pod_anti_affinity of this V1Affinity. # noqa: E501 - :rtype: V1PodAntiAffinity - """ - return self._pod_anti_affinity - - @pod_anti_affinity.setter - def pod_anti_affinity(self, pod_anti_affinity): - """Sets the pod_anti_affinity of this V1Affinity. - - - :param pod_anti_affinity: The pod_anti_affinity of this V1Affinity. # noqa: E501 - :type: V1PodAntiAffinity - """ - - self._pod_anti_affinity = pod_anti_affinity - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Affinity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Affinity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aggregation_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aggregation_rule.py deleted file mode 100644 index e8f1bb3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aggregation_rule.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AggregationRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'cluster_role_selectors': 'list[V1LabelSelector]' - } - - attribute_map = { - 'cluster_role_selectors': 'clusterRoleSelectors' - } - - def __init__(self, cluster_role_selectors=None, local_vars_configuration=None): # noqa: E501 - """V1AggregationRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._cluster_role_selectors = None - self.discriminator = None - - if cluster_role_selectors is not None: - self.cluster_role_selectors = cluster_role_selectors - - @property - def cluster_role_selectors(self): - """Gets the cluster_role_selectors of this V1AggregationRule. # noqa: E501 - - ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added # noqa: E501 - - :return: The cluster_role_selectors of this V1AggregationRule. # noqa: E501 - :rtype: list[V1LabelSelector] - """ - return self._cluster_role_selectors - - @cluster_role_selectors.setter - def cluster_role_selectors(self, cluster_role_selectors): - """Sets the cluster_role_selectors of this V1AggregationRule. - - ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added # noqa: E501 - - :param cluster_role_selectors: The cluster_role_selectors of this V1AggregationRule. # noqa: E501 - :type: list[V1LabelSelector] - """ - - self._cluster_role_selectors = cluster_role_selectors - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AggregationRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AggregationRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group.py deleted file mode 100644 index 7e05ec2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIGroup(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'name': 'str', - 'preferred_version': 'V1GroupVersionForDiscovery', - 'server_address_by_client_cid_rs': 'list[V1ServerAddressByClientCIDR]', - 'versions': 'list[V1GroupVersionForDiscovery]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'name': 'name', - 'preferred_version': 'preferredVersion', - 'server_address_by_client_cid_rs': 'serverAddressByClientCIDRs', - 'versions': 'versions' - } - - def __init__(self, api_version=None, kind=None, name=None, preferred_version=None, server_address_by_client_cid_rs=None, versions=None, local_vars_configuration=None): # noqa: E501 - """V1APIGroup - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._name = None - self._preferred_version = None - self._server_address_by_client_cid_rs = None - self._versions = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - self.name = name - if preferred_version is not None: - self.preferred_version = preferred_version - if server_address_by_client_cid_rs is not None: - self.server_address_by_client_cid_rs = server_address_by_client_cid_rs - self.versions = versions - - @property - def api_version(self): - """Gets the api_version of this V1APIGroup. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIGroup. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIGroup. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIGroup. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1APIGroup. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIGroup. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIGroup. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIGroup. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1APIGroup. # noqa: E501 - - name is the name of the group. # noqa: E501 - - :return: The name of this V1APIGroup. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1APIGroup. - - name is the name of the group. # noqa: E501 - - :param name: The name of this V1APIGroup. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def preferred_version(self): - """Gets the preferred_version of this V1APIGroup. # noqa: E501 - - - :return: The preferred_version of this V1APIGroup. # noqa: E501 - :rtype: V1GroupVersionForDiscovery - """ - return self._preferred_version - - @preferred_version.setter - def preferred_version(self, preferred_version): - """Sets the preferred_version of this V1APIGroup. - - - :param preferred_version: The preferred_version of this V1APIGroup. # noqa: E501 - :type: V1GroupVersionForDiscovery - """ - - self._preferred_version = preferred_version - - @property - def server_address_by_client_cid_rs(self): - """Gets the server_address_by_client_cid_rs of this V1APIGroup. # noqa: E501 - - a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. # noqa: E501 - - :return: The server_address_by_client_cid_rs of this V1APIGroup. # noqa: E501 - :rtype: list[V1ServerAddressByClientCIDR] - """ - return self._server_address_by_client_cid_rs - - @server_address_by_client_cid_rs.setter - def server_address_by_client_cid_rs(self, server_address_by_client_cid_rs): - """Sets the server_address_by_client_cid_rs of this V1APIGroup. - - a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. # noqa: E501 - - :param server_address_by_client_cid_rs: The server_address_by_client_cid_rs of this V1APIGroup. # noqa: E501 - :type: list[V1ServerAddressByClientCIDR] - """ - - self._server_address_by_client_cid_rs = server_address_by_client_cid_rs - - @property - def versions(self): - """Gets the versions of this V1APIGroup. # noqa: E501 - - versions are the versions supported in this group. # noqa: E501 - - :return: The versions of this V1APIGroup. # noqa: E501 - :rtype: list[V1GroupVersionForDiscovery] - """ - return self._versions - - @versions.setter - def versions(self, versions): - """Sets the versions of this V1APIGroup. - - versions are the versions supported in this group. # noqa: E501 - - :param versions: The versions of this V1APIGroup. # noqa: E501 - :type: list[V1GroupVersionForDiscovery] - """ - if self.local_vars_configuration.client_side_validation and versions is None: # noqa: E501 - raise ValueError("Invalid value for `versions`, must not be `None`") # noqa: E501 - - self._versions = versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIGroup): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIGroup): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group_list.py deleted file mode 100644 index c46f85b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_group_list.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIGroupList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'groups': 'list[V1APIGroup]', - 'kind': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'groups': 'groups', - 'kind': 'kind' - } - - def __init__(self, api_version=None, groups=None, kind=None, local_vars_configuration=None): # noqa: E501 - """V1APIGroupList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._groups = None - self._kind = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.groups = groups - if kind is not None: - self.kind = kind - - @property - def api_version(self): - """Gets the api_version of this V1APIGroupList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIGroupList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIGroupList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIGroupList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def groups(self): - """Gets the groups of this V1APIGroupList. # noqa: E501 - - groups is a list of APIGroup. # noqa: E501 - - :return: The groups of this V1APIGroupList. # noqa: E501 - :rtype: list[V1APIGroup] - """ - return self._groups - - @groups.setter - def groups(self, groups): - """Sets the groups of this V1APIGroupList. - - groups is a list of APIGroup. # noqa: E501 - - :param groups: The groups of this V1APIGroupList. # noqa: E501 - :type: list[V1APIGroup] - """ - if self.local_vars_configuration.client_side_validation and groups is None: # noqa: E501 - raise ValueError("Invalid value for `groups`, must not be `None`") # noqa: E501 - - self._groups = groups - - @property - def kind(self): - """Gets the kind of this V1APIGroupList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIGroupList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIGroupList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIGroupList. # noqa: E501 - :type: str - """ - - self._kind = kind - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIGroupList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIGroupList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource.py deleted file mode 100644 index 9ebe8af..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource.py +++ /dev/null @@ -1,379 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIResource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'categories': 'list[str]', - 'group': 'str', - 'kind': 'str', - 'name': 'str', - 'namespaced': 'bool', - 'short_names': 'list[str]', - 'singular_name': 'str', - 'storage_version_hash': 'str', - 'verbs': 'list[str]', - 'version': 'str' - } - - attribute_map = { - 'categories': 'categories', - 'group': 'group', - 'kind': 'kind', - 'name': 'name', - 'namespaced': 'namespaced', - 'short_names': 'shortNames', - 'singular_name': 'singularName', - 'storage_version_hash': 'storageVersionHash', - 'verbs': 'verbs', - 'version': 'version' - } - - def __init__(self, categories=None, group=None, kind=None, name=None, namespaced=None, short_names=None, singular_name=None, storage_version_hash=None, verbs=None, version=None, local_vars_configuration=None): # noqa: E501 - """V1APIResource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._categories = None - self._group = None - self._kind = None - self._name = None - self._namespaced = None - self._short_names = None - self._singular_name = None - self._storage_version_hash = None - self._verbs = None - self._version = None - self.discriminator = None - - if categories is not None: - self.categories = categories - if group is not None: - self.group = group - self.kind = kind - self.name = name - self.namespaced = namespaced - if short_names is not None: - self.short_names = short_names - self.singular_name = singular_name - if storage_version_hash is not None: - self.storage_version_hash = storage_version_hash - self.verbs = verbs - if version is not None: - self.version = version - - @property - def categories(self): - """Gets the categories of this V1APIResource. # noqa: E501 - - categories is a list of the grouped resources this resource belongs to (e.g. 'all') # noqa: E501 - - :return: The categories of this V1APIResource. # noqa: E501 - :rtype: list[str] - """ - return self._categories - - @categories.setter - def categories(self, categories): - """Sets the categories of this V1APIResource. - - categories is a list of the grouped resources this resource belongs to (e.g. 'all') # noqa: E501 - - :param categories: The categories of this V1APIResource. # noqa: E501 - :type: list[str] - """ - - self._categories = categories - - @property - def group(self): - """Gets the group of this V1APIResource. # noqa: E501 - - group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\". # noqa: E501 - - :return: The group of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1APIResource. - - group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\". # noqa: E501 - - :param group: The group of this V1APIResource. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def kind(self): - """Gets the kind of this V1APIResource. # noqa: E501 - - kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') # noqa: E501 - - :return: The kind of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIResource. - - kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') # noqa: E501 - - :param kind: The kind of this V1APIResource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1APIResource. # noqa: E501 - - name is the plural name of the resource. # noqa: E501 - - :return: The name of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1APIResource. - - name is the plural name of the resource. # noqa: E501 - - :param name: The name of this V1APIResource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespaced(self): - """Gets the namespaced of this V1APIResource. # noqa: E501 - - namespaced indicates if a resource is namespaced or not. # noqa: E501 - - :return: The namespaced of this V1APIResource. # noqa: E501 - :rtype: bool - """ - return self._namespaced - - @namespaced.setter - def namespaced(self, namespaced): - """Sets the namespaced of this V1APIResource. - - namespaced indicates if a resource is namespaced or not. # noqa: E501 - - :param namespaced: The namespaced of this V1APIResource. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and namespaced is None: # noqa: E501 - raise ValueError("Invalid value for `namespaced`, must not be `None`") # noqa: E501 - - self._namespaced = namespaced - - @property - def short_names(self): - """Gets the short_names of this V1APIResource. # noqa: E501 - - shortNames is a list of suggested short names of the resource. # noqa: E501 - - :return: The short_names of this V1APIResource. # noqa: E501 - :rtype: list[str] - """ - return self._short_names - - @short_names.setter - def short_names(self, short_names): - """Sets the short_names of this V1APIResource. - - shortNames is a list of suggested short names of the resource. # noqa: E501 - - :param short_names: The short_names of this V1APIResource. # noqa: E501 - :type: list[str] - """ - - self._short_names = short_names - - @property - def singular_name(self): - """Gets the singular_name of this V1APIResource. # noqa: E501 - - singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface. # noqa: E501 - - :return: The singular_name of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._singular_name - - @singular_name.setter - def singular_name(self, singular_name): - """Sets the singular_name of this V1APIResource. - - singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface. # noqa: E501 - - :param singular_name: The singular_name of this V1APIResource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and singular_name is None: # noqa: E501 - raise ValueError("Invalid value for `singular_name`, must not be `None`") # noqa: E501 - - self._singular_name = singular_name - - @property - def storage_version_hash(self): - """Gets the storage_version_hash of this V1APIResource. # noqa: E501 - - The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates. # noqa: E501 - - :return: The storage_version_hash of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._storage_version_hash - - @storage_version_hash.setter - def storage_version_hash(self, storage_version_hash): - """Sets the storage_version_hash of this V1APIResource. - - The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates. # noqa: E501 - - :param storage_version_hash: The storage_version_hash of this V1APIResource. # noqa: E501 - :type: str - """ - - self._storage_version_hash = storage_version_hash - - @property - def verbs(self): - """Gets the verbs of this V1APIResource. # noqa: E501 - - verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy) # noqa: E501 - - :return: The verbs of this V1APIResource. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1APIResource. - - verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy) # noqa: E501 - - :param verbs: The verbs of this V1APIResource. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - @property - def version(self): - """Gets the version of this V1APIResource. # noqa: E501 - - version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\". # noqa: E501 - - :return: The version of this V1APIResource. # noqa: E501 - :rtype: str - """ - return self._version - - @version.setter - def version(self, version): - """Sets the version of this V1APIResource. - - version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\". # noqa: E501 - - :param version: The version of this V1APIResource. # noqa: E501 - :type: str - """ - - self._version = version - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIResource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIResource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource_list.py deleted file mode 100644 index 321f81f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_resource_list.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIResourceList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'group_version': 'str', - 'kind': 'str', - 'resources': 'list[V1APIResource]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'group_version': 'groupVersion', - 'kind': 'kind', - 'resources': 'resources' - } - - def __init__(self, api_version=None, group_version=None, kind=None, resources=None, local_vars_configuration=None): # noqa: E501 - """V1APIResourceList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._group_version = None - self._kind = None - self._resources = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.group_version = group_version - if kind is not None: - self.kind = kind - self.resources = resources - - @property - def api_version(self): - """Gets the api_version of this V1APIResourceList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIResourceList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIResourceList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIResourceList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def group_version(self): - """Gets the group_version of this V1APIResourceList. # noqa: E501 - - groupVersion is the group and version this APIResourceList is for. # noqa: E501 - - :return: The group_version of this V1APIResourceList. # noqa: E501 - :rtype: str - """ - return self._group_version - - @group_version.setter - def group_version(self, group_version): - """Sets the group_version of this V1APIResourceList. - - groupVersion is the group and version this APIResourceList is for. # noqa: E501 - - :param group_version: The group_version of this V1APIResourceList. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and group_version is None: # noqa: E501 - raise ValueError("Invalid value for `group_version`, must not be `None`") # noqa: E501 - - self._group_version = group_version - - @property - def kind(self): - """Gets the kind of this V1APIResourceList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIResourceList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIResourceList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIResourceList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def resources(self): - """Gets the resources of this V1APIResourceList. # noqa: E501 - - resources contains the name of the resources and if they are namespaced. # noqa: E501 - - :return: The resources of this V1APIResourceList. # noqa: E501 - :rtype: list[V1APIResource] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1APIResourceList. - - resources contains the name of the resources and if they are namespaced. # noqa: E501 - - :param resources: The resources of this V1APIResourceList. # noqa: E501 - :type: list[V1APIResource] - """ - if self.local_vars_configuration.client_side_validation and resources is None: # noqa: E501 - raise ValueError("Invalid value for `resources`, must not be `None`") # noqa: E501 - - self._resources = resources - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIResourceList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIResourceList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service.py deleted file mode 100644 index 6307036..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIService(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1APIServiceSpec', - 'status': 'V1APIServiceStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1APIService - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1APIService. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIService. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIService. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIService. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1APIService. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIService. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIService. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIService. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1APIService. # noqa: E501 - - - :return: The metadata of this V1APIService. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1APIService. - - - :param metadata: The metadata of this V1APIService. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1APIService. # noqa: E501 - - - :return: The spec of this V1APIService. # noqa: E501 - :rtype: V1APIServiceSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1APIService. - - - :param spec: The spec of this V1APIService. # noqa: E501 - :type: V1APIServiceSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1APIService. # noqa: E501 - - - :return: The status of this V1APIService. # noqa: E501 - :rtype: V1APIServiceStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1APIService. - - - :param status: The status of this V1APIService. # noqa: E501 - :type: V1APIServiceStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIService): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIService): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_condition.py deleted file mode 100644 index fc10aa0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIServiceCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1APIServiceCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1APIServiceCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1APIServiceCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1APIServiceCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1APIServiceCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1APIServiceCondition. # noqa: E501 - - Human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1APIServiceCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1APIServiceCondition. - - Human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1APIServiceCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1APIServiceCondition. # noqa: E501 - - Unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1APIServiceCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1APIServiceCondition. - - Unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1APIServiceCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1APIServiceCondition. # noqa: E501 - - Status is the status of the condition. Can be True, False, Unknown. # noqa: E501 - - :return: The status of this V1APIServiceCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1APIServiceCondition. - - Status is the status of the condition. Can be True, False, Unknown. # noqa: E501 - - :param status: The status of this V1APIServiceCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1APIServiceCondition. # noqa: E501 - - Type is the type of the condition. # noqa: E501 - - :return: The type of this V1APIServiceCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1APIServiceCondition. - - Type is the type of the condition. # noqa: E501 - - :param type: The type of this V1APIServiceCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIServiceCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIServiceCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_list.py deleted file mode 100644 index 60f6d86..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIServiceList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1APIService]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1APIServiceList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1APIServiceList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIServiceList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIServiceList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIServiceList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1APIServiceList. # noqa: E501 - - Items is the list of APIService # noqa: E501 - - :return: The items of this V1APIServiceList. # noqa: E501 - :rtype: list[V1APIService] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1APIServiceList. - - Items is the list of APIService # noqa: E501 - - :param items: The items of this V1APIServiceList. # noqa: E501 - :type: list[V1APIService] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1APIServiceList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIServiceList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIServiceList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIServiceList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1APIServiceList. # noqa: E501 - - - :return: The metadata of this V1APIServiceList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1APIServiceList. - - - :param metadata: The metadata of this V1APIServiceList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIServiceList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIServiceList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_spec.py deleted file mode 100644 index fc96f0d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_spec.py +++ /dev/null @@ -1,293 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIServiceSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ca_bundle': 'str', - 'group': 'str', - 'group_priority_minimum': 'int', - 'insecure_skip_tls_verify': 'bool', - 'service': 'ApiregistrationV1ServiceReference', - 'version': 'str', - 'version_priority': 'int' - } - - attribute_map = { - 'ca_bundle': 'caBundle', - 'group': 'group', - 'group_priority_minimum': 'groupPriorityMinimum', - 'insecure_skip_tls_verify': 'insecureSkipTLSVerify', - 'service': 'service', - 'version': 'version', - 'version_priority': 'versionPriority' - } - - def __init__(self, ca_bundle=None, group=None, group_priority_minimum=None, insecure_skip_tls_verify=None, service=None, version=None, version_priority=None, local_vars_configuration=None): # noqa: E501 - """V1APIServiceSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ca_bundle = None - self._group = None - self._group_priority_minimum = None - self._insecure_skip_tls_verify = None - self._service = None - self._version = None - self._version_priority = None - self.discriminator = None - - if ca_bundle is not None: - self.ca_bundle = ca_bundle - if group is not None: - self.group = group - self.group_priority_minimum = group_priority_minimum - if insecure_skip_tls_verify is not None: - self.insecure_skip_tls_verify = insecure_skip_tls_verify - if service is not None: - self.service = service - if version is not None: - self.version = version - self.version_priority = version_priority - - @property - def ca_bundle(self): - """Gets the ca_bundle of this V1APIServiceSpec. # noqa: E501 - - CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :return: The ca_bundle of this V1APIServiceSpec. # noqa: E501 - :rtype: str - """ - return self._ca_bundle - - @ca_bundle.setter - def ca_bundle(self, ca_bundle): - """Sets the ca_bundle of this V1APIServiceSpec. - - CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used. # noqa: E501 - - :param ca_bundle: The ca_bundle of this V1APIServiceSpec. # noqa: E501 - :type: str - """ - if (self.local_vars_configuration.client_side_validation and - ca_bundle is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', ca_bundle)): # noqa: E501 - raise ValueError(r"Invalid value for `ca_bundle`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501 - - self._ca_bundle = ca_bundle - - @property - def group(self): - """Gets the group of this V1APIServiceSpec. # noqa: E501 - - Group is the API group name this server hosts # noqa: E501 - - :return: The group of this V1APIServiceSpec. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1APIServiceSpec. - - Group is the API group name this server hosts # noqa: E501 - - :param group: The group of this V1APIServiceSpec. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def group_priority_minimum(self): - """Gets the group_priority_minimum of this V1APIServiceSpec. # noqa: E501 - - GroupPriorityMinimum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s # noqa: E501 - - :return: The group_priority_minimum of this V1APIServiceSpec. # noqa: E501 - :rtype: int - """ - return self._group_priority_minimum - - @group_priority_minimum.setter - def group_priority_minimum(self, group_priority_minimum): - """Sets the group_priority_minimum of this V1APIServiceSpec. - - GroupPriorityMinimum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s # noqa: E501 - - :param group_priority_minimum: The group_priority_minimum of this V1APIServiceSpec. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and group_priority_minimum is None: # noqa: E501 - raise ValueError("Invalid value for `group_priority_minimum`, must not be `None`") # noqa: E501 - - self._group_priority_minimum = group_priority_minimum - - @property - def insecure_skip_tls_verify(self): - """Gets the insecure_skip_tls_verify of this V1APIServiceSpec. # noqa: E501 - - InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead. # noqa: E501 - - :return: The insecure_skip_tls_verify of this V1APIServiceSpec. # noqa: E501 - :rtype: bool - """ - return self._insecure_skip_tls_verify - - @insecure_skip_tls_verify.setter - def insecure_skip_tls_verify(self, insecure_skip_tls_verify): - """Sets the insecure_skip_tls_verify of this V1APIServiceSpec. - - InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead. # noqa: E501 - - :param insecure_skip_tls_verify: The insecure_skip_tls_verify of this V1APIServiceSpec. # noqa: E501 - :type: bool - """ - - self._insecure_skip_tls_verify = insecure_skip_tls_verify - - @property - def service(self): - """Gets the service of this V1APIServiceSpec. # noqa: E501 - - - :return: The service of this V1APIServiceSpec. # noqa: E501 - :rtype: ApiregistrationV1ServiceReference - """ - return self._service - - @service.setter - def service(self, service): - """Sets the service of this V1APIServiceSpec. - - - :param service: The service of this V1APIServiceSpec. # noqa: E501 - :type: ApiregistrationV1ServiceReference - """ - - self._service = service - - @property - def version(self): - """Gets the version of this V1APIServiceSpec. # noqa: E501 - - Version is the API version this server hosts. For example, \"v1\" # noqa: E501 - - :return: The version of this V1APIServiceSpec. # noqa: E501 - :rtype: str - """ - return self._version - - @version.setter - def version(self, version): - """Sets the version of this V1APIServiceSpec. - - Version is the API version this server hosts. For example, \"v1\" # noqa: E501 - - :param version: The version of this V1APIServiceSpec. # noqa: E501 - :type: str - """ - - self._version = version - - @property - def version_priority(self): - """Gets the version_priority of this V1APIServiceSpec. # noqa: E501 - - VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. # noqa: E501 - - :return: The version_priority of this V1APIServiceSpec. # noqa: E501 - :rtype: int - """ - return self._version_priority - - @version_priority.setter - def version_priority(self, version_priority): - """Sets the version_priority of this V1APIServiceSpec. - - VersionPriority controls the ordering of this API version inside of its group. Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. # noqa: E501 - - :param version_priority: The version_priority of this V1APIServiceSpec. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and version_priority is None: # noqa: E501 - raise ValueError("Invalid value for `version_priority`, must not be `None`") # noqa: E501 - - self._version_priority = version_priority - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIServiceSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIServiceSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_status.py deleted file mode 100644 index 5991599..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_service_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIServiceStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1APIServiceCondition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1APIServiceStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1APIServiceStatus. # noqa: E501 - - Current service state of apiService. # noqa: E501 - - :return: The conditions of this V1APIServiceStatus. # noqa: E501 - :rtype: list[V1APIServiceCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1APIServiceStatus. - - Current service state of apiService. # noqa: E501 - - :param conditions: The conditions of this V1APIServiceStatus. # noqa: E501 - :type: list[V1APIServiceCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIServiceStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIServiceStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_versions.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_versions.py deleted file mode 100644 index c29a452..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_api_versions.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1APIVersions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'server_address_by_client_cid_rs': 'list[V1ServerAddressByClientCIDR]', - 'versions': 'list[str]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'server_address_by_client_cid_rs': 'serverAddressByClientCIDRs', - 'versions': 'versions' - } - - def __init__(self, api_version=None, kind=None, server_address_by_client_cid_rs=None, versions=None, local_vars_configuration=None): # noqa: E501 - """V1APIVersions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._server_address_by_client_cid_rs = None - self._versions = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - self.server_address_by_client_cid_rs = server_address_by_client_cid_rs - self.versions = versions - - @property - def api_version(self): - """Gets the api_version of this V1APIVersions. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1APIVersions. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1APIVersions. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1APIVersions. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1APIVersions. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1APIVersions. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1APIVersions. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1APIVersions. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def server_address_by_client_cid_rs(self): - """Gets the server_address_by_client_cid_rs of this V1APIVersions. # noqa: E501 - - a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. # noqa: E501 - - :return: The server_address_by_client_cid_rs of this V1APIVersions. # noqa: E501 - :rtype: list[V1ServerAddressByClientCIDR] - """ - return self._server_address_by_client_cid_rs - - @server_address_by_client_cid_rs.setter - def server_address_by_client_cid_rs(self, server_address_by_client_cid_rs): - """Sets the server_address_by_client_cid_rs of this V1APIVersions. - - a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. # noqa: E501 - - :param server_address_by_client_cid_rs: The server_address_by_client_cid_rs of this V1APIVersions. # noqa: E501 - :type: list[V1ServerAddressByClientCIDR] - """ - if self.local_vars_configuration.client_side_validation and server_address_by_client_cid_rs is None: # noqa: E501 - raise ValueError("Invalid value for `server_address_by_client_cid_rs`, must not be `None`") # noqa: E501 - - self._server_address_by_client_cid_rs = server_address_by_client_cid_rs - - @property - def versions(self): - """Gets the versions of this V1APIVersions. # noqa: E501 - - versions are the api versions that are available. # noqa: E501 - - :return: The versions of this V1APIVersions. # noqa: E501 - :rtype: list[str] - """ - return self._versions - - @versions.setter - def versions(self, versions): - """Sets the versions of this V1APIVersions. - - versions are the api versions that are available. # noqa: E501 - - :param versions: The versions of this V1APIVersions. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and versions is None: # noqa: E501 - raise ValueError("Invalid value for `versions`, must not be `None`") # noqa: E501 - - self._versions = versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1APIVersions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1APIVersions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_attached_volume.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_attached_volume.py deleted file mode 100644 index 6df3f5f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_attached_volume.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AttachedVolume(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'device_path': 'str', - 'name': 'str' - } - - attribute_map = { - 'device_path': 'devicePath', - 'name': 'name' - } - - def __init__(self, device_path=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1AttachedVolume - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._device_path = None - self._name = None - self.discriminator = None - - self.device_path = device_path - self.name = name - - @property - def device_path(self): - """Gets the device_path of this V1AttachedVolume. # noqa: E501 - - DevicePath represents the device path where the volume should be available # noqa: E501 - - :return: The device_path of this V1AttachedVolume. # noqa: E501 - :rtype: str - """ - return self._device_path - - @device_path.setter - def device_path(self, device_path): - """Sets the device_path of this V1AttachedVolume. - - DevicePath represents the device path where the volume should be available # noqa: E501 - - :param device_path: The device_path of this V1AttachedVolume. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and device_path is None: # noqa: E501 - raise ValueError("Invalid value for `device_path`, must not be `None`") # noqa: E501 - - self._device_path = device_path - - @property - def name(self): - """Gets the name of this V1AttachedVolume. # noqa: E501 - - Name of the attached volume # noqa: E501 - - :return: The name of this V1AttachedVolume. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1AttachedVolume. - - Name of the attached volume # noqa: E501 - - :param name: The name of this V1AttachedVolume. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AttachedVolume): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AttachedVolume): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aws_elastic_block_store_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aws_elastic_block_store_volume_source.py deleted file mode 100644 index ae86cb3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_aws_elastic_block_store_volume_source.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AWSElasticBlockStoreVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'partition': 'int', - 'read_only': 'bool', - 'volume_id': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'partition': 'partition', - 'read_only': 'readOnly', - 'volume_id': 'volumeID' - } - - def __init__(self, fs_type=None, partition=None, read_only=None, volume_id=None, local_vars_configuration=None): # noqa: E501 - """V1AWSElasticBlockStoreVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._partition = None - self._read_only = None - self._volume_id = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if partition is not None: - self.partition = partition - if read_only is not None: - self.read_only = read_only - self.volume_id = volume_id - - @property - def fs_type(self): - """Gets the fs_type of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :return: The fs_type of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1AWSElasticBlockStoreVolumeSource. - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :param fs_type: The fs_type of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def partition(self): - """Gets the partition of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). # noqa: E501 - - :return: The partition of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :rtype: int - """ - return self._partition - - @partition.setter - def partition(self, partition): - """Sets the partition of this V1AWSElasticBlockStoreVolumeSource. - - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). # noqa: E501 - - :param partition: The partition of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :type: int - """ - - self._partition = partition - - @property - def read_only(self): - """Gets the read_only of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :return: The read_only of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1AWSElasticBlockStoreVolumeSource. - - readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :param read_only: The read_only of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def volume_id(self): - """Gets the volume_id of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :return: The volume_id of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_id - - @volume_id.setter - def volume_id(self, volume_id): - """Sets the volume_id of this V1AWSElasticBlockStoreVolumeSource. - - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore # noqa: E501 - - :param volume_id: The volume_id of this V1AWSElasticBlockStoreVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_id is None: # noqa: E501 - raise ValueError("Invalid value for `volume_id`, must not be `None`") # noqa: E501 - - self._volume_id = volume_id - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AWSElasticBlockStoreVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AWSElasticBlockStoreVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_disk_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_disk_volume_source.py deleted file mode 100644 index 8386ae9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_disk_volume_source.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AzureDiskVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'caching_mode': 'str', - 'disk_name': 'str', - 'disk_uri': 'str', - 'fs_type': 'str', - 'kind': 'str', - 'read_only': 'bool' - } - - attribute_map = { - 'caching_mode': 'cachingMode', - 'disk_name': 'diskName', - 'disk_uri': 'diskURI', - 'fs_type': 'fsType', - 'kind': 'kind', - 'read_only': 'readOnly' - } - - def __init__(self, caching_mode=None, disk_name=None, disk_uri=None, fs_type=None, kind=None, read_only=None, local_vars_configuration=None): # noqa: E501 - """V1AzureDiskVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._caching_mode = None - self._disk_name = None - self._disk_uri = None - self._fs_type = None - self._kind = None - self._read_only = None - self.discriminator = None - - if caching_mode is not None: - self.caching_mode = caching_mode - self.disk_name = disk_name - self.disk_uri = disk_uri - if fs_type is not None: - self.fs_type = fs_type - if kind is not None: - self.kind = kind - if read_only is not None: - self.read_only = read_only - - @property - def caching_mode(self): - """Gets the caching_mode of this V1AzureDiskVolumeSource. # noqa: E501 - - cachingMode is the Host Caching mode: None, Read Only, Read Write. # noqa: E501 - - :return: The caching_mode of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._caching_mode - - @caching_mode.setter - def caching_mode(self, caching_mode): - """Sets the caching_mode of this V1AzureDiskVolumeSource. - - cachingMode is the Host Caching mode: None, Read Only, Read Write. # noqa: E501 - - :param caching_mode: The caching_mode of this V1AzureDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._caching_mode = caching_mode - - @property - def disk_name(self): - """Gets the disk_name of this V1AzureDiskVolumeSource. # noqa: E501 - - diskName is the Name of the data disk in the blob storage # noqa: E501 - - :return: The disk_name of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._disk_name - - @disk_name.setter - def disk_name(self, disk_name): - """Sets the disk_name of this V1AzureDiskVolumeSource. - - diskName is the Name of the data disk in the blob storage # noqa: E501 - - :param disk_name: The disk_name of this V1AzureDiskVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and disk_name is None: # noqa: E501 - raise ValueError("Invalid value for `disk_name`, must not be `None`") # noqa: E501 - - self._disk_name = disk_name - - @property - def disk_uri(self): - """Gets the disk_uri of this V1AzureDiskVolumeSource. # noqa: E501 - - diskURI is the URI of data disk in the blob storage # noqa: E501 - - :return: The disk_uri of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._disk_uri - - @disk_uri.setter - def disk_uri(self, disk_uri): - """Sets the disk_uri of this V1AzureDiskVolumeSource. - - diskURI is the URI of data disk in the blob storage # noqa: E501 - - :param disk_uri: The disk_uri of this V1AzureDiskVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and disk_uri is None: # noqa: E501 - raise ValueError("Invalid value for `disk_uri`, must not be `None`") # noqa: E501 - - self._disk_uri = disk_uri - - @property - def fs_type(self): - """Gets the fs_type of this V1AzureDiskVolumeSource. # noqa: E501 - - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1AzureDiskVolumeSource. - - fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1AzureDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def kind(self): - """Gets the kind of this V1AzureDiskVolumeSource. # noqa: E501 - - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared # noqa: E501 - - :return: The kind of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1AzureDiskVolumeSource. - - kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared # noqa: E501 - - :param kind: The kind of this V1AzureDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def read_only(self): - """Gets the read_only of this V1AzureDiskVolumeSource. # noqa: E501 - - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1AzureDiskVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1AzureDiskVolumeSource. - - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1AzureDiskVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AzureDiskVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AzureDiskVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_persistent_volume_source.py deleted file mode 100644 index ac79bc7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_persistent_volume_source.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AzureFilePersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'read_only': 'bool', - 'secret_name': 'str', - 'secret_namespace': 'str', - 'share_name': 'str' - } - - attribute_map = { - 'read_only': 'readOnly', - 'secret_name': 'secretName', - 'secret_namespace': 'secretNamespace', - 'share_name': 'shareName' - } - - def __init__(self, read_only=None, secret_name=None, secret_namespace=None, share_name=None, local_vars_configuration=None): # noqa: E501 - """V1AzureFilePersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._read_only = None - self._secret_name = None - self._secret_namespace = None - self._share_name = None - self.discriminator = None - - if read_only is not None: - self.read_only = read_only - self.secret_name = secret_name - if secret_namespace is not None: - self.secret_namespace = secret_namespace - self.share_name = share_name - - @property - def read_only(self): - """Gets the read_only of this V1AzureFilePersistentVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1AzureFilePersistentVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_name(self): - """Gets the secret_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - - secretName is the name of secret that contains Azure Storage Account Name and Key # noqa: E501 - - :return: The secret_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_name - - @secret_name.setter - def secret_name(self, secret_name): - """Sets the secret_name of this V1AzureFilePersistentVolumeSource. - - secretName is the name of secret that contains Azure Storage Account Name and Key # noqa: E501 - - :param secret_name: The secret_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and secret_name is None: # noqa: E501 - raise ValueError("Invalid value for `secret_name`, must not be `None`") # noqa: E501 - - self._secret_name = secret_name - - @property - def secret_namespace(self): - """Gets the secret_namespace of this V1AzureFilePersistentVolumeSource. # noqa: E501 - - secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod # noqa: E501 - - :return: The secret_namespace of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_namespace - - @secret_namespace.setter - def secret_namespace(self, secret_namespace): - """Sets the secret_namespace of this V1AzureFilePersistentVolumeSource. - - secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod # noqa: E501 - - :param secret_namespace: The secret_namespace of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._secret_namespace = secret_namespace - - @property - def share_name(self): - """Gets the share_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - - shareName is the azure Share Name # noqa: E501 - - :return: The share_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._share_name - - @share_name.setter - def share_name(self, share_name): - """Sets the share_name of this V1AzureFilePersistentVolumeSource. - - shareName is the azure Share Name # noqa: E501 - - :param share_name: The share_name of this V1AzureFilePersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and share_name is None: # noqa: E501 - raise ValueError("Invalid value for `share_name`, must not be `None`") # noqa: E501 - - self._share_name = share_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AzureFilePersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AzureFilePersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_volume_source.py deleted file mode 100644 index fe1408e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_azure_file_volume_source.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1AzureFileVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'read_only': 'bool', - 'secret_name': 'str', - 'share_name': 'str' - } - - attribute_map = { - 'read_only': 'readOnly', - 'secret_name': 'secretName', - 'share_name': 'shareName' - } - - def __init__(self, read_only=None, secret_name=None, share_name=None, local_vars_configuration=None): # noqa: E501 - """V1AzureFileVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._read_only = None - self._secret_name = None - self._share_name = None - self.discriminator = None - - if read_only is not None: - self.read_only = read_only - self.secret_name = secret_name - self.share_name = share_name - - @property - def read_only(self): - """Gets the read_only of this V1AzureFileVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1AzureFileVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1AzureFileVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1AzureFileVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_name(self): - """Gets the secret_name of this V1AzureFileVolumeSource. # noqa: E501 - - secretName is the name of secret that contains Azure Storage Account Name and Key # noqa: E501 - - :return: The secret_name of this V1AzureFileVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_name - - @secret_name.setter - def secret_name(self, secret_name): - """Sets the secret_name of this V1AzureFileVolumeSource. - - secretName is the name of secret that contains Azure Storage Account Name and Key # noqa: E501 - - :param secret_name: The secret_name of this V1AzureFileVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and secret_name is None: # noqa: E501 - raise ValueError("Invalid value for `secret_name`, must not be `None`") # noqa: E501 - - self._secret_name = secret_name - - @property - def share_name(self): - """Gets the share_name of this V1AzureFileVolumeSource. # noqa: E501 - - shareName is the azure share Name # noqa: E501 - - :return: The share_name of this V1AzureFileVolumeSource. # noqa: E501 - :rtype: str - """ - return self._share_name - - @share_name.setter - def share_name(self, share_name): - """Sets the share_name of this V1AzureFileVolumeSource. - - shareName is the azure share Name # noqa: E501 - - :param share_name: The share_name of this V1AzureFileVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and share_name is None: # noqa: E501 - raise ValueError("Invalid value for `share_name`, must not be `None`") # noqa: E501 - - self._share_name = share_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1AzureFileVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1AzureFileVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_binding.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_binding.py deleted file mode 100644 index 28271b7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_binding.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Binding(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'target': 'V1ObjectReference' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'target': 'target' - } - - def __init__(self, api_version=None, kind=None, metadata=None, target=None, local_vars_configuration=None): # noqa: E501 - """V1Binding - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._target = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.target = target - - @property - def api_version(self): - """Gets the api_version of this V1Binding. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Binding. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Binding. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Binding. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Binding. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Binding. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Binding. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Binding. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Binding. # noqa: E501 - - - :return: The metadata of this V1Binding. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Binding. - - - :param metadata: The metadata of this V1Binding. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def target(self): - """Gets the target of this V1Binding. # noqa: E501 - - - :return: The target of this V1Binding. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V1Binding. - - - :param target: The target of this V1Binding. # noqa: E501 - :type: V1ObjectReference - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Binding): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Binding): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_bound_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_bound_object_reference.py deleted file mode 100644 index 8b82ba1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_bound_object_reference.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1BoundObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'name': 'str', - 'uid': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'name': 'name', - 'uid': 'uid' - } - - def __init__(self, api_version=None, kind=None, name=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1BoundObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._name = None - self._uid = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if name is not None: - self.name = name - if uid is not None: - self.uid = uid - - @property - def api_version(self): - """Gets the api_version of this V1BoundObjectReference. # noqa: E501 - - API version of the referent. # noqa: E501 - - :return: The api_version of this V1BoundObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1BoundObjectReference. - - API version of the referent. # noqa: E501 - - :param api_version: The api_version of this V1BoundObjectReference. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1BoundObjectReference. # noqa: E501 - - Kind of the referent. Valid kinds are 'Pod' and 'Secret'. # noqa: E501 - - :return: The kind of this V1BoundObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1BoundObjectReference. - - Kind of the referent. Valid kinds are 'Pod' and 'Secret'. # noqa: E501 - - :param kind: The kind of this V1BoundObjectReference. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1BoundObjectReference. # noqa: E501 - - Name of the referent. # noqa: E501 - - :return: The name of this V1BoundObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1BoundObjectReference. - - Name of the referent. # noqa: E501 - - :param name: The name of this V1BoundObjectReference. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def uid(self): - """Gets the uid of this V1BoundObjectReference. # noqa: E501 - - UID of the referent. # noqa: E501 - - :return: The uid of this V1BoundObjectReference. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1BoundObjectReference. - - UID of the referent. # noqa: E501 - - :param uid: The uid of this V1BoundObjectReference. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1BoundObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1BoundObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_capabilities.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_capabilities.py deleted file mode 100644 index 965a397..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_capabilities.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Capabilities(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'add': 'list[str]', - 'drop': 'list[str]' - } - - attribute_map = { - 'add': 'add', - 'drop': 'drop' - } - - def __init__(self, add=None, drop=None, local_vars_configuration=None): # noqa: E501 - """V1Capabilities - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._add = None - self._drop = None - self.discriminator = None - - if add is not None: - self.add = add - if drop is not None: - self.drop = drop - - @property - def add(self): - """Gets the add of this V1Capabilities. # noqa: E501 - - Added capabilities # noqa: E501 - - :return: The add of this V1Capabilities. # noqa: E501 - :rtype: list[str] - """ - return self._add - - @add.setter - def add(self, add): - """Sets the add of this V1Capabilities. - - Added capabilities # noqa: E501 - - :param add: The add of this V1Capabilities. # noqa: E501 - :type: list[str] - """ - - self._add = add - - @property - def drop(self): - """Gets the drop of this V1Capabilities. # noqa: E501 - - Removed capabilities # noqa: E501 - - :return: The drop of this V1Capabilities. # noqa: E501 - :rtype: list[str] - """ - return self._drop - - @drop.setter - def drop(self, drop): - """Sets the drop of this V1Capabilities. - - Removed capabilities # noqa: E501 - - :param drop: The drop of this V1Capabilities. # noqa: E501 - :type: list[str] - """ - - self._drop = drop - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Capabilities): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Capabilities): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_persistent_volume_source.py deleted file mode 100644 index dcad897..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_persistent_volume_source.py +++ /dev/null @@ -1,261 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CephFSPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'monitors': 'list[str]', - 'path': 'str', - 'read_only': 'bool', - 'secret_file': 'str', - 'secret_ref': 'V1SecretReference', - 'user': 'str' - } - - attribute_map = { - 'monitors': 'monitors', - 'path': 'path', - 'read_only': 'readOnly', - 'secret_file': 'secretFile', - 'secret_ref': 'secretRef', - 'user': 'user' - } - - def __init__(self, monitors=None, path=None, read_only=None, secret_file=None, secret_ref=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1CephFSPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._monitors = None - self._path = None - self._read_only = None - self._secret_file = None - self._secret_ref = None - self._user = None - self.discriminator = None - - self.monitors = monitors - if path is not None: - self.path = path - if read_only is not None: - self.read_only = read_only - if secret_file is not None: - self.secret_file = secret_file - if secret_ref is not None: - self.secret_ref = secret_ref - if user is not None: - self.user = user - - @property - def monitors(self): - """Gets the monitors of this V1CephFSPersistentVolumeSource. # noqa: E501 - - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The monitors of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._monitors - - @monitors.setter - def monitors(self, monitors): - """Sets the monitors of this V1CephFSPersistentVolumeSource. - - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param monitors: The monitors of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and monitors is None: # noqa: E501 - raise ValueError("Invalid value for `monitors`, must not be `None`") # noqa: E501 - - self._monitors = monitors - - @property - def path(self): - """Gets the path of this V1CephFSPersistentVolumeSource. # noqa: E501 - - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / # noqa: E501 - - :return: The path of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1CephFSPersistentVolumeSource. - - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / # noqa: E501 - - :param path: The path of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def read_only(self): - """Gets the read_only of this V1CephFSPersistentVolumeSource. # noqa: E501 - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The read_only of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CephFSPersistentVolumeSource. - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param read_only: The read_only of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_file(self): - """Gets the secret_file of this V1CephFSPersistentVolumeSource. # noqa: E501 - - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The secret_file of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_file - - @secret_file.setter - def secret_file(self, secret_file): - """Sets the secret_file of this V1CephFSPersistentVolumeSource. - - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param secret_file: The secret_file of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._secret_file = secret_file - - @property - def secret_ref(self): - """Gets the secret_ref of this V1CephFSPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1CephFSPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._secret_ref = secret_ref - - @property - def user(self): - """Gets the user of this V1CephFSPersistentVolumeSource. # noqa: E501 - - user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The user of this V1CephFSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1CephFSPersistentVolumeSource. - - user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param user: The user of this V1CephFSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CephFSPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CephFSPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_volume_source.py deleted file mode 100644 index e3d8d6c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ceph_fs_volume_source.py +++ /dev/null @@ -1,261 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CephFSVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'monitors': 'list[str]', - 'path': 'str', - 'read_only': 'bool', - 'secret_file': 'str', - 'secret_ref': 'V1LocalObjectReference', - 'user': 'str' - } - - attribute_map = { - 'monitors': 'monitors', - 'path': 'path', - 'read_only': 'readOnly', - 'secret_file': 'secretFile', - 'secret_ref': 'secretRef', - 'user': 'user' - } - - def __init__(self, monitors=None, path=None, read_only=None, secret_file=None, secret_ref=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1CephFSVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._monitors = None - self._path = None - self._read_only = None - self._secret_file = None - self._secret_ref = None - self._user = None - self.discriminator = None - - self.monitors = monitors - if path is not None: - self.path = path - if read_only is not None: - self.read_only = read_only - if secret_file is not None: - self.secret_file = secret_file - if secret_ref is not None: - self.secret_ref = secret_ref - if user is not None: - self.user = user - - @property - def monitors(self): - """Gets the monitors of this V1CephFSVolumeSource. # noqa: E501 - - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The monitors of this V1CephFSVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._monitors - - @monitors.setter - def monitors(self, monitors): - """Sets the monitors of this V1CephFSVolumeSource. - - monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param monitors: The monitors of this V1CephFSVolumeSource. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and monitors is None: # noqa: E501 - raise ValueError("Invalid value for `monitors`, must not be `None`") # noqa: E501 - - self._monitors = monitors - - @property - def path(self): - """Gets the path of this V1CephFSVolumeSource. # noqa: E501 - - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / # noqa: E501 - - :return: The path of this V1CephFSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1CephFSVolumeSource. - - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / # noqa: E501 - - :param path: The path of this V1CephFSVolumeSource. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def read_only(self): - """Gets the read_only of this V1CephFSVolumeSource. # noqa: E501 - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The read_only of this V1CephFSVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CephFSVolumeSource. - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param read_only: The read_only of this V1CephFSVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_file(self): - """Gets the secret_file of this V1CephFSVolumeSource. # noqa: E501 - - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The secret_file of this V1CephFSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_file - - @secret_file.setter - def secret_file(self, secret_file): - """Sets the secret_file of this V1CephFSVolumeSource. - - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param secret_file: The secret_file of this V1CephFSVolumeSource. # noqa: E501 - :type: str - """ - - self._secret_file = secret_file - - @property - def secret_ref(self): - """Gets the secret_ref of this V1CephFSVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1CephFSVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1CephFSVolumeSource. - - - :param secret_ref: The secret_ref of this V1CephFSVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - @property - def user(self): - """Gets the user of this V1CephFSVolumeSource. # noqa: E501 - - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :return: The user of this V1CephFSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1CephFSVolumeSource. - - user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it # noqa: E501 - - :param user: The user of this V1CephFSVolumeSource. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CephFSVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CephFSVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request.py deleted file mode 100644 index 6a60797..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CertificateSigningRequest(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1CertificateSigningRequestSpec', - 'status': 'V1CertificateSigningRequestStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1CertificateSigningRequest - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1CertificateSigningRequest. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CertificateSigningRequest. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CertificateSigningRequest. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CertificateSigningRequest. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CertificateSigningRequest. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CertificateSigningRequest. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CertificateSigningRequest. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CertificateSigningRequest. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CertificateSigningRequest. # noqa: E501 - - - :return: The metadata of this V1CertificateSigningRequest. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CertificateSigningRequest. - - - :param metadata: The metadata of this V1CertificateSigningRequest. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1CertificateSigningRequest. # noqa: E501 - - - :return: The spec of this V1CertificateSigningRequest. # noqa: E501 - :rtype: V1CertificateSigningRequestSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1CertificateSigningRequest. - - - :param spec: The spec of this V1CertificateSigningRequest. # noqa: E501 - :type: V1CertificateSigningRequestSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1CertificateSigningRequest. # noqa: E501 - - - :return: The status of this V1CertificateSigningRequest. # noqa: E501 - :rtype: V1CertificateSigningRequestStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CertificateSigningRequest. - - - :param status: The status of this V1CertificateSigningRequest. # noqa: E501 - :type: V1CertificateSigningRequestStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CertificateSigningRequest): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CertificateSigningRequest): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_condition.py deleted file mode 100644 index 943be03..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_condition.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CertificateSigningRequestCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'last_update_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'last_update_time': 'lastUpdateTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, last_update_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1CertificateSigningRequestCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._last_update_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if last_update_time is not None: - self.last_update_time = last_update_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1CertificateSigningRequestCondition. # noqa: E501 - - lastTransitionTime is the time the condition last transitioned from one status to another. If unset, when a new condition type is added or an existing condition's status is changed, the server defaults this to the current time. # noqa: E501 - - :return: The last_transition_time of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1CertificateSigningRequestCondition. - - lastTransitionTime is the time the condition last transitioned from one status to another. If unset, when a new condition type is added or an existing condition's status is changed, the server defaults this to the current time. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def last_update_time(self): - """Gets the last_update_time of this V1CertificateSigningRequestCondition. # noqa: E501 - - lastUpdateTime is the time of the last update to this condition # noqa: E501 - - :return: The last_update_time of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_update_time - - @last_update_time.setter - def last_update_time(self, last_update_time): - """Sets the last_update_time of this V1CertificateSigningRequestCondition. - - lastUpdateTime is the time of the last update to this condition # noqa: E501 - - :param last_update_time: The last_update_time of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: datetime - """ - - self._last_update_time = last_update_time - - @property - def message(self): - """Gets the message of this V1CertificateSigningRequestCondition. # noqa: E501 - - message contains a human readable message with details about the request state # noqa: E501 - - :return: The message of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1CertificateSigningRequestCondition. - - message contains a human readable message with details about the request state # noqa: E501 - - :param message: The message of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1CertificateSigningRequestCondition. # noqa: E501 - - reason indicates a brief reason for the request state # noqa: E501 - - :return: The reason of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1CertificateSigningRequestCondition. - - reason indicates a brief reason for the request state # noqa: E501 - - :param reason: The reason of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1CertificateSigningRequestCondition. # noqa: E501 - - status of the condition, one of True, False, Unknown. Approved, Denied, and Failed conditions may not be \"False\" or \"Unknown\". # noqa: E501 - - :return: The status of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CertificateSigningRequestCondition. - - status of the condition, one of True, False, Unknown. Approved, Denied, and Failed conditions may not be \"False\" or \"Unknown\". # noqa: E501 - - :param status: The status of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1CertificateSigningRequestCondition. # noqa: E501 - - type of the condition. Known conditions are \"Approved\", \"Denied\", and \"Failed\". An \"Approved\" condition is added via the /approval subresource, indicating the request was approved and should be issued by the signer. A \"Denied\" condition is added via the /approval subresource, indicating the request was denied and should not be issued by the signer. A \"Failed\" condition is added via the /status subresource, indicating the signer failed to issue the certificate. Approved and Denied conditions are mutually exclusive. Approved, Denied, and Failed conditions cannot be removed once added. Only one condition of a given type is allowed. # noqa: E501 - - :return: The type of this V1CertificateSigningRequestCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1CertificateSigningRequestCondition. - - type of the condition. Known conditions are \"Approved\", \"Denied\", and \"Failed\". An \"Approved\" condition is added via the /approval subresource, indicating the request was approved and should be issued by the signer. A \"Denied\" condition is added via the /approval subresource, indicating the request was denied and should not be issued by the signer. A \"Failed\" condition is added via the /status subresource, indicating the signer failed to issue the certificate. Approved and Denied conditions are mutually exclusive. Approved, Denied, and Failed conditions cannot be removed once added. Only one condition of a given type is allowed. # noqa: E501 - - :param type: The type of this V1CertificateSigningRequestCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CertificateSigningRequestCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CertificateSigningRequestCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_list.py deleted file mode 100644 index f6494f8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CertificateSigningRequestList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CertificateSigningRequest]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CertificateSigningRequestList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CertificateSigningRequestList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CertificateSigningRequestList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CertificateSigningRequestList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CertificateSigningRequestList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CertificateSigningRequestList. # noqa: E501 - - items is a collection of CertificateSigningRequest objects # noqa: E501 - - :return: The items of this V1CertificateSigningRequestList. # noqa: E501 - :rtype: list[V1CertificateSigningRequest] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CertificateSigningRequestList. - - items is a collection of CertificateSigningRequest objects # noqa: E501 - - :param items: The items of this V1CertificateSigningRequestList. # noqa: E501 - :type: list[V1CertificateSigningRequest] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CertificateSigningRequestList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CertificateSigningRequestList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CertificateSigningRequestList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CertificateSigningRequestList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CertificateSigningRequestList. # noqa: E501 - - - :return: The metadata of this V1CertificateSigningRequestList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CertificateSigningRequestList. - - - :param metadata: The metadata of this V1CertificateSigningRequestList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CertificateSigningRequestList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CertificateSigningRequestList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_spec.py deleted file mode 100644 index e1849de..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_spec.py +++ /dev/null @@ -1,323 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CertificateSigningRequestSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expiration_seconds': 'int', - 'extra': 'dict(str, list[str])', - 'groups': 'list[str]', - 'request': 'str', - 'signer_name': 'str', - 'uid': 'str', - 'usages': 'list[str]', - 'username': 'str' - } - - attribute_map = { - 'expiration_seconds': 'expirationSeconds', - 'extra': 'extra', - 'groups': 'groups', - 'request': 'request', - 'signer_name': 'signerName', - 'uid': 'uid', - 'usages': 'usages', - 'username': 'username' - } - - def __init__(self, expiration_seconds=None, extra=None, groups=None, request=None, signer_name=None, uid=None, usages=None, username=None, local_vars_configuration=None): # noqa: E501 - """V1CertificateSigningRequestSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expiration_seconds = None - self._extra = None - self._groups = None - self._request = None - self._signer_name = None - self._uid = None - self._usages = None - self._username = None - self.discriminator = None - - if expiration_seconds is not None: - self.expiration_seconds = expiration_seconds - if extra is not None: - self.extra = extra - if groups is not None: - self.groups = groups - self.request = request - self.signer_name = signer_name - if uid is not None: - self.uid = uid - if usages is not None: - self.usages = usages - if username is not None: - self.username = username - - @property - def expiration_seconds(self): - """Gets the expiration_seconds of this V1CertificateSigningRequestSpec. # noqa: E501 - - expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration. The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager. Certificate signers may not honor this field for various reasons: 1. Old signer that is unaware of the field (such as the in-tree implementations prior to v1.22) 2. Signer whose configured maximum is shorter than the requested duration 3. Signer whose configured minimum is longer than the requested duration The minimum valid value for expirationSeconds is 600, i.e. 10 minutes. # noqa: E501 - - :return: The expiration_seconds of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: int - """ - return self._expiration_seconds - - @expiration_seconds.setter - def expiration_seconds(self, expiration_seconds): - """Sets the expiration_seconds of this V1CertificateSigningRequestSpec. - - expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration. The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager. Certificate signers may not honor this field for various reasons: 1. Old signer that is unaware of the field (such as the in-tree implementations prior to v1.22) 2. Signer whose configured maximum is shorter than the requested duration 3. Signer whose configured minimum is longer than the requested duration The minimum valid value for expirationSeconds is 600, i.e. 10 minutes. # noqa: E501 - - :param expiration_seconds: The expiration_seconds of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: int - """ - - self._expiration_seconds = expiration_seconds - - @property - def extra(self): - """Gets the extra of this V1CertificateSigningRequestSpec. # noqa: E501 - - extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :return: The extra of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: dict(str, list[str]) - """ - return self._extra - - @extra.setter - def extra(self, extra): - """Sets the extra of this V1CertificateSigningRequestSpec. - - extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :param extra: The extra of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: dict(str, list[str]) - """ - - self._extra = extra - - @property - def groups(self): - """Gets the groups of this V1CertificateSigningRequestSpec. # noqa: E501 - - groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :return: The groups of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: list[str] - """ - return self._groups - - @groups.setter - def groups(self, groups): - """Sets the groups of this V1CertificateSigningRequestSpec. - - groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :param groups: The groups of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: list[str] - """ - - self._groups = groups - - @property - def request(self): - """Gets the request of this V1CertificateSigningRequestSpec. # noqa: E501 - - request contains an x509 certificate signing request encoded in a \"CERTIFICATE REQUEST\" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded. # noqa: E501 - - :return: The request of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: str - """ - return self._request - - @request.setter - def request(self, request): - """Sets the request of this V1CertificateSigningRequestSpec. - - request contains an x509 certificate signing request encoded in a \"CERTIFICATE REQUEST\" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded. # noqa: E501 - - :param request: The request of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and request is None: # noqa: E501 - raise ValueError("Invalid value for `request`, must not be `None`") # noqa: E501 - if (self.local_vars_configuration.client_side_validation and - request is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', request)): # noqa: E501 - raise ValueError(r"Invalid value for `request`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501 - - self._request = request - - @property - def signer_name(self): - """Gets the signer_name of this V1CertificateSigningRequestSpec. # noqa: E501 - - signerName indicates the requested signer, and is a qualified name. List/watch requests for CertificateSigningRequests can filter on this field using a \"spec.signerName=NAME\" fieldSelector. Well-known Kubernetes signers are: 1. \"kubernetes.io/kube-apiserver-client\": issues client certificates that can be used to authenticate to kube-apiserver. Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the \"csrsigning\" controller in kube-controller-manager. 2. \"kubernetes.io/kube-apiserver-client-kubelet\": issues client certificates that kubelets use to authenticate to kube-apiserver. Requests for this signer can be auto-approved by the \"csrapproving\" controller in kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager. 3. \"kubernetes.io/kubelet-serving\" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely. Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager. More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers Custom signerNames can also be specified. The signer defines: 1. Trust distribution: how trust (CA bundles) are distributed. 2. Permitted subjects: and behavior when a disallowed subject is requested. 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested. 4. Required, permitted, or forbidden key usages / extended key usages. 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin. 6. Whether or not requests for CA certificates are allowed. # noqa: E501 - - :return: The signer_name of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: str - """ - return self._signer_name - - @signer_name.setter - def signer_name(self, signer_name): - """Sets the signer_name of this V1CertificateSigningRequestSpec. - - signerName indicates the requested signer, and is a qualified name. List/watch requests for CertificateSigningRequests can filter on this field using a \"spec.signerName=NAME\" fieldSelector. Well-known Kubernetes signers are: 1. \"kubernetes.io/kube-apiserver-client\": issues client certificates that can be used to authenticate to kube-apiserver. Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the \"csrsigning\" controller in kube-controller-manager. 2. \"kubernetes.io/kube-apiserver-client-kubelet\": issues client certificates that kubelets use to authenticate to kube-apiserver. Requests for this signer can be auto-approved by the \"csrapproving\" controller in kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager. 3. \"kubernetes.io/kubelet-serving\" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely. Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager. More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers Custom signerNames can also be specified. The signer defines: 1. Trust distribution: how trust (CA bundles) are distributed. 2. Permitted subjects: and behavior when a disallowed subject is requested. 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested. 4. Required, permitted, or forbidden key usages / extended key usages. 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin. 6. Whether or not requests for CA certificates are allowed. # noqa: E501 - - :param signer_name: The signer_name of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and signer_name is None: # noqa: E501 - raise ValueError("Invalid value for `signer_name`, must not be `None`") # noqa: E501 - - self._signer_name = signer_name - - @property - def uid(self): - """Gets the uid of this V1CertificateSigningRequestSpec. # noqa: E501 - - uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :return: The uid of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1CertificateSigningRequestSpec. - - uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :param uid: The uid of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: str - """ - - self._uid = uid - - @property - def usages(self): - """Gets the usages of this V1CertificateSigningRequestSpec. # noqa: E501 - - usages specifies a set of key usages requested in the issued certificate. Requests for TLS client certificates typically request: \"digital signature\", \"key encipherment\", \"client auth\". Requests for TLS serving certificates typically request: \"key encipherment\", \"digital signature\", \"server auth\". Valid values are: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\" # noqa: E501 - - :return: The usages of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: list[str] - """ - return self._usages - - @usages.setter - def usages(self, usages): - """Sets the usages of this V1CertificateSigningRequestSpec. - - usages specifies a set of key usages requested in the issued certificate. Requests for TLS client certificates typically request: \"digital signature\", \"key encipherment\", \"client auth\". Requests for TLS serving certificates typically request: \"key encipherment\", \"digital signature\", \"server auth\". Valid values are: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\" # noqa: E501 - - :param usages: The usages of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: list[str] - """ - - self._usages = usages - - @property - def username(self): - """Gets the username of this V1CertificateSigningRequestSpec. # noqa: E501 - - username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :return: The username of this V1CertificateSigningRequestSpec. # noqa: E501 - :rtype: str - """ - return self._username - - @username.setter - def username(self, username): - """Sets the username of this V1CertificateSigningRequestSpec. - - username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable. # noqa: E501 - - :param username: The username of this V1CertificateSigningRequestSpec. # noqa: E501 - :type: str - """ - - self._username = username - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CertificateSigningRequestSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CertificateSigningRequestSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_status.py deleted file mode 100644 index f28910c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_certificate_signing_request_status.py +++ /dev/null @@ -1,153 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CertificateSigningRequestStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'certificate': 'str', - 'conditions': 'list[V1CertificateSigningRequestCondition]' - } - - attribute_map = { - 'certificate': 'certificate', - 'conditions': 'conditions' - } - - def __init__(self, certificate=None, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1CertificateSigningRequestStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._certificate = None - self._conditions = None - self.discriminator = None - - if certificate is not None: - self.certificate = certificate - if conditions is not None: - self.conditions = conditions - - @property - def certificate(self): - """Gets the certificate of this V1CertificateSigningRequestStatus. # noqa: E501 - - certificate is populated with an issued certificate by the signer after an Approved condition is present. This field is set via the /status subresource. Once populated, this field is immutable. If the certificate signing request is denied, a condition of type \"Denied\" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type \"Failed\" is added and this field remains empty. Validation requirements: 1. certificate must contain one or more PEM blocks. 2. All PEM blocks must have the \"CERTIFICATE\" label, contain no headers, and the encoded data must be a BER-encoded ASN.1 Certificate structure as described in section 4 of RFC5280. 3. Non-PEM content may appear before or after the \"CERTIFICATE\" PEM blocks and is unvalidated, to allow for explanatory text as described in section 5.2 of RFC7468. If more than one PEM block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes. The certificate is encoded in PEM format. When serialized as JSON or YAML, the data is additionally base64-encoded, so it consists of: base64( -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- ) # noqa: E501 - - :return: The certificate of this V1CertificateSigningRequestStatus. # noqa: E501 - :rtype: str - """ - return self._certificate - - @certificate.setter - def certificate(self, certificate): - """Sets the certificate of this V1CertificateSigningRequestStatus. - - certificate is populated with an issued certificate by the signer after an Approved condition is present. This field is set via the /status subresource. Once populated, this field is immutable. If the certificate signing request is denied, a condition of type \"Denied\" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type \"Failed\" is added and this field remains empty. Validation requirements: 1. certificate must contain one or more PEM blocks. 2. All PEM blocks must have the \"CERTIFICATE\" label, contain no headers, and the encoded data must be a BER-encoded ASN.1 Certificate structure as described in section 4 of RFC5280. 3. Non-PEM content may appear before or after the \"CERTIFICATE\" PEM blocks and is unvalidated, to allow for explanatory text as described in section 5.2 of RFC7468. If more than one PEM block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes. The certificate is encoded in PEM format. When serialized as JSON or YAML, the data is additionally base64-encoded, so it consists of: base64( -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- ) # noqa: E501 - - :param certificate: The certificate of this V1CertificateSigningRequestStatus. # noqa: E501 - :type: str - """ - if (self.local_vars_configuration.client_side_validation and - certificate is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', certificate)): # noqa: E501 - raise ValueError(r"Invalid value for `certificate`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501 - - self._certificate = certificate - - @property - def conditions(self): - """Gets the conditions of this V1CertificateSigningRequestStatus. # noqa: E501 - - conditions applied to the request. Known conditions are \"Approved\", \"Denied\", and \"Failed\". # noqa: E501 - - :return: The conditions of this V1CertificateSigningRequestStatus. # noqa: E501 - :rtype: list[V1CertificateSigningRequestCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1CertificateSigningRequestStatus. - - conditions applied to the request. Known conditions are \"Approved\", \"Denied\", and \"Failed\". # noqa: E501 - - :param conditions: The conditions of this V1CertificateSigningRequestStatus. # noqa: E501 - :type: list[V1CertificateSigningRequestCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CertificateSigningRequestStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CertificateSigningRequestStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_persistent_volume_source.py deleted file mode 100644 index 71a272d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_persistent_volume_source.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CinderPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1SecretReference', - 'volume_id': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'volume_id': 'volumeID' - } - - def __init__(self, fs_type=None, read_only=None, secret_ref=None, volume_id=None, local_vars_configuration=None): # noqa: E501 - """V1CinderPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._read_only = None - self._secret_ref = None - self._volume_id = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - self.volume_id = volume_id - - @property - def fs_type(self): - """Gets the fs_type of this V1CinderPersistentVolumeSource. # noqa: E501 - - fsType Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The fs_type of this V1CinderPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1CinderPersistentVolumeSource. - - fsType Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param fs_type: The fs_type of this V1CinderPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def read_only(self): - """Gets the read_only of this V1CinderPersistentVolumeSource. # noqa: E501 - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The read_only of this V1CinderPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CinderPersistentVolumeSource. - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param read_only: The read_only of this V1CinderPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1CinderPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1CinderPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1CinderPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1CinderPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._secret_ref = secret_ref - - @property - def volume_id(self): - """Gets the volume_id of this V1CinderPersistentVolumeSource. # noqa: E501 - - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The volume_id of this V1CinderPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_id - - @volume_id.setter - def volume_id(self, volume_id): - """Sets the volume_id of this V1CinderPersistentVolumeSource. - - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param volume_id: The volume_id of this V1CinderPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_id is None: # noqa: E501 - raise ValueError("Invalid value for `volume_id`, must not be `None`") # noqa: E501 - - self._volume_id = volume_id - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CinderPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CinderPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_volume_source.py deleted file mode 100644 index 7be6737..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cinder_volume_source.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CinderVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference', - 'volume_id': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'volume_id': 'volumeID' - } - - def __init__(self, fs_type=None, read_only=None, secret_ref=None, volume_id=None, local_vars_configuration=None): # noqa: E501 - """V1CinderVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._read_only = None - self._secret_ref = None - self._volume_id = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - self.volume_id = volume_id - - @property - def fs_type(self): - """Gets the fs_type of this V1CinderVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The fs_type of this V1CinderVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1CinderVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param fs_type: The fs_type of this V1CinderVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def read_only(self): - """Gets the read_only of this V1CinderVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The read_only of this V1CinderVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CinderVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param read_only: The read_only of this V1CinderVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1CinderVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1CinderVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1CinderVolumeSource. - - - :param secret_ref: The secret_ref of this V1CinderVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - @property - def volume_id(self): - """Gets the volume_id of this V1CinderVolumeSource. # noqa: E501 - - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :return: The volume_id of this V1CinderVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_id - - @volume_id.setter - def volume_id(self, volume_id): - """Sets the volume_id of this V1CinderVolumeSource. - - volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md # noqa: E501 - - :param volume_id: The volume_id of this V1CinderVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_id is None: # noqa: E501 - raise ValueError("Invalid value for `volume_id`, must not be `None`") # noqa: E501 - - self._volume_id = volume_id - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CinderVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CinderVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_claim_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_claim_source.py deleted file mode 100644 index cfa7a14..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_claim_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClaimSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'resource_claim_name': 'str', - 'resource_claim_template_name': 'str' - } - - attribute_map = { - 'resource_claim_name': 'resourceClaimName', - 'resource_claim_template_name': 'resourceClaimTemplateName' - } - - def __init__(self, resource_claim_name=None, resource_claim_template_name=None, local_vars_configuration=None): # noqa: E501 - """V1ClaimSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._resource_claim_name = None - self._resource_claim_template_name = None - self.discriminator = None - - if resource_claim_name is not None: - self.resource_claim_name = resource_claim_name - if resource_claim_template_name is not None: - self.resource_claim_template_name = resource_claim_template_name - - @property - def resource_claim_name(self): - """Gets the resource_claim_name of this V1ClaimSource. # noqa: E501 - - ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod. # noqa: E501 - - :return: The resource_claim_name of this V1ClaimSource. # noqa: E501 - :rtype: str - """ - return self._resource_claim_name - - @resource_claim_name.setter - def resource_claim_name(self, resource_claim_name): - """Sets the resource_claim_name of this V1ClaimSource. - - ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod. # noqa: E501 - - :param resource_claim_name: The resource_claim_name of this V1ClaimSource. # noqa: E501 - :type: str - """ - - self._resource_claim_name = resource_claim_name - - @property - def resource_claim_template_name(self): - """Gets the resource_claim_template_name of this V1ClaimSource. # noqa: E501 - - ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod. The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim. # noqa: E501 - - :return: The resource_claim_template_name of this V1ClaimSource. # noqa: E501 - :rtype: str - """ - return self._resource_claim_template_name - - @resource_claim_template_name.setter - def resource_claim_template_name(self, resource_claim_template_name): - """Sets the resource_claim_template_name of this V1ClaimSource. - - ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod. The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim. # noqa: E501 - - :param resource_claim_template_name: The resource_claim_template_name of this V1ClaimSource. # noqa: E501 - :type: str - """ - - self._resource_claim_template_name = resource_claim_template_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClaimSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClaimSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_client_ip_config.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_client_ip_config.py deleted file mode 100644 index b01c271..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_client_ip_config.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClientIPConfig(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'timeout_seconds': 'int' - } - - attribute_map = { - 'timeout_seconds': 'timeoutSeconds' - } - - def __init__(self, timeout_seconds=None, local_vars_configuration=None): # noqa: E501 - """V1ClientIPConfig - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._timeout_seconds = None - self.discriminator = None - - if timeout_seconds is not None: - self.timeout_seconds = timeout_seconds - - @property - def timeout_seconds(self): - """Gets the timeout_seconds of this V1ClientIPConfig. # noqa: E501 - - timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours). # noqa: E501 - - :return: The timeout_seconds of this V1ClientIPConfig. # noqa: E501 - :rtype: int - """ - return self._timeout_seconds - - @timeout_seconds.setter - def timeout_seconds(self, timeout_seconds): - """Sets the timeout_seconds of this V1ClientIPConfig. - - timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours). # noqa: E501 - - :param timeout_seconds: The timeout_seconds of this V1ClientIPConfig. # noqa: E501 - :type: int - """ - - self._timeout_seconds = timeout_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClientIPConfig): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClientIPConfig): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role.py deleted file mode 100644 index b9c22e1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role.py +++ /dev/null @@ -1,230 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClusterRole(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'aggregation_rule': 'V1AggregationRule', - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'rules': 'list[V1PolicyRule]' - } - - attribute_map = { - 'aggregation_rule': 'aggregationRule', - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'rules': 'rules' - } - - def __init__(self, aggregation_rule=None, api_version=None, kind=None, metadata=None, rules=None, local_vars_configuration=None): # noqa: E501 - """V1ClusterRole - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._aggregation_rule = None - self._api_version = None - self._kind = None - self._metadata = None - self._rules = None - self.discriminator = None - - if aggregation_rule is not None: - self.aggregation_rule = aggregation_rule - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if rules is not None: - self.rules = rules - - @property - def aggregation_rule(self): - """Gets the aggregation_rule of this V1ClusterRole. # noqa: E501 - - - :return: The aggregation_rule of this V1ClusterRole. # noqa: E501 - :rtype: V1AggregationRule - """ - return self._aggregation_rule - - @aggregation_rule.setter - def aggregation_rule(self, aggregation_rule): - """Sets the aggregation_rule of this V1ClusterRole. - - - :param aggregation_rule: The aggregation_rule of this V1ClusterRole. # noqa: E501 - :type: V1AggregationRule - """ - - self._aggregation_rule = aggregation_rule - - @property - def api_version(self): - """Gets the api_version of this V1ClusterRole. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ClusterRole. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ClusterRole. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ClusterRole. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ClusterRole. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ClusterRole. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ClusterRole. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ClusterRole. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ClusterRole. # noqa: E501 - - - :return: The metadata of this V1ClusterRole. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ClusterRole. - - - :param metadata: The metadata of this V1ClusterRole. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def rules(self): - """Gets the rules of this V1ClusterRole. # noqa: E501 - - Rules holds all the PolicyRules for this ClusterRole # noqa: E501 - - :return: The rules of this V1ClusterRole. # noqa: E501 - :rtype: list[V1PolicyRule] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1ClusterRole. - - Rules holds all the PolicyRules for this ClusterRole # noqa: E501 - - :param rules: The rules of this V1ClusterRole. # noqa: E501 - :type: list[V1PolicyRule] - """ - - self._rules = rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClusterRole): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClusterRole): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding.py deleted file mode 100644 index 374d184..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding.py +++ /dev/null @@ -1,231 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClusterRoleBinding(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'role_ref': 'V1RoleRef', - 'subjects': 'list[RbacV1Subject]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'role_ref': 'roleRef', - 'subjects': 'subjects' - } - - def __init__(self, api_version=None, kind=None, metadata=None, role_ref=None, subjects=None, local_vars_configuration=None): # noqa: E501 - """V1ClusterRoleBinding - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._role_ref = None - self._subjects = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.role_ref = role_ref - if subjects is not None: - self.subjects = subjects - - @property - def api_version(self): - """Gets the api_version of this V1ClusterRoleBinding. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ClusterRoleBinding. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ClusterRoleBinding. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ClusterRoleBinding. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ClusterRoleBinding. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ClusterRoleBinding. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ClusterRoleBinding. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ClusterRoleBinding. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ClusterRoleBinding. # noqa: E501 - - - :return: The metadata of this V1ClusterRoleBinding. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ClusterRoleBinding. - - - :param metadata: The metadata of this V1ClusterRoleBinding. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def role_ref(self): - """Gets the role_ref of this V1ClusterRoleBinding. # noqa: E501 - - - :return: The role_ref of this V1ClusterRoleBinding. # noqa: E501 - :rtype: V1RoleRef - """ - return self._role_ref - - @role_ref.setter - def role_ref(self, role_ref): - """Sets the role_ref of this V1ClusterRoleBinding. - - - :param role_ref: The role_ref of this V1ClusterRoleBinding. # noqa: E501 - :type: V1RoleRef - """ - if self.local_vars_configuration.client_side_validation and role_ref is None: # noqa: E501 - raise ValueError("Invalid value for `role_ref`, must not be `None`") # noqa: E501 - - self._role_ref = role_ref - - @property - def subjects(self): - """Gets the subjects of this V1ClusterRoleBinding. # noqa: E501 - - Subjects holds references to the objects the role applies to. # noqa: E501 - - :return: The subjects of this V1ClusterRoleBinding. # noqa: E501 - :rtype: list[RbacV1Subject] - """ - return self._subjects - - @subjects.setter - def subjects(self, subjects): - """Sets the subjects of this V1ClusterRoleBinding. - - Subjects holds references to the objects the role applies to. # noqa: E501 - - :param subjects: The subjects of this V1ClusterRoleBinding. # noqa: E501 - :type: list[RbacV1Subject] - """ - - self._subjects = subjects - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClusterRoleBinding): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClusterRoleBinding): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding_list.py deleted file mode 100644 index 04c398a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_binding_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClusterRoleBindingList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ClusterRoleBinding]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ClusterRoleBindingList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ClusterRoleBindingList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ClusterRoleBindingList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ClusterRoleBindingList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ClusterRoleBindingList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ClusterRoleBindingList. # noqa: E501 - - Items is a list of ClusterRoleBindings # noqa: E501 - - :return: The items of this V1ClusterRoleBindingList. # noqa: E501 - :rtype: list[V1ClusterRoleBinding] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ClusterRoleBindingList. - - Items is a list of ClusterRoleBindings # noqa: E501 - - :param items: The items of this V1ClusterRoleBindingList. # noqa: E501 - :type: list[V1ClusterRoleBinding] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ClusterRoleBindingList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ClusterRoleBindingList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ClusterRoleBindingList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ClusterRoleBindingList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ClusterRoleBindingList. # noqa: E501 - - - :return: The metadata of this V1ClusterRoleBindingList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ClusterRoleBindingList. - - - :param metadata: The metadata of this V1ClusterRoleBindingList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClusterRoleBindingList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClusterRoleBindingList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_list.py deleted file mode 100644 index c378848..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_role_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClusterRoleList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ClusterRole]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ClusterRoleList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ClusterRoleList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ClusterRoleList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ClusterRoleList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ClusterRoleList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ClusterRoleList. # noqa: E501 - - Items is a list of ClusterRoles # noqa: E501 - - :return: The items of this V1ClusterRoleList. # noqa: E501 - :rtype: list[V1ClusterRole] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ClusterRoleList. - - Items is a list of ClusterRoles # noqa: E501 - - :param items: The items of this V1ClusterRoleList. # noqa: E501 - :type: list[V1ClusterRole] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ClusterRoleList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ClusterRoleList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ClusterRoleList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ClusterRoleList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ClusterRoleList. # noqa: E501 - - - :return: The metadata of this V1ClusterRoleList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ClusterRoleList. - - - :param metadata: The metadata of this V1ClusterRoleList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClusterRoleList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClusterRoleList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_trust_bundle_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_trust_bundle_projection.py deleted file mode 100644 index 9a32bc9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cluster_trust_bundle_projection.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ClusterTrustBundleProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'label_selector': 'V1LabelSelector', - 'name': 'str', - 'optional': 'bool', - 'path': 'str', - 'signer_name': 'str' - } - - attribute_map = { - 'label_selector': 'labelSelector', - 'name': 'name', - 'optional': 'optional', - 'path': 'path', - 'signer_name': 'signerName' - } - - def __init__(self, label_selector=None, name=None, optional=None, path=None, signer_name=None, local_vars_configuration=None): # noqa: E501 - """V1ClusterTrustBundleProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._label_selector = None - self._name = None - self._optional = None - self._path = None - self._signer_name = None - self.discriminator = None - - if label_selector is not None: - self.label_selector = label_selector - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - self.path = path - if signer_name is not None: - self.signer_name = signer_name - - @property - def label_selector(self): - """Gets the label_selector of this V1ClusterTrustBundleProjection. # noqa: E501 - - - :return: The label_selector of this V1ClusterTrustBundleProjection. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._label_selector - - @label_selector.setter - def label_selector(self, label_selector): - """Sets the label_selector of this V1ClusterTrustBundleProjection. - - - :param label_selector: The label_selector of this V1ClusterTrustBundleProjection. # noqa: E501 - :type: V1LabelSelector - """ - - self._label_selector = label_selector - - @property - def name(self): - """Gets the name of this V1ClusterTrustBundleProjection. # noqa: E501 - - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. # noqa: E501 - - :return: The name of this V1ClusterTrustBundleProjection. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ClusterTrustBundleProjection. - - Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. # noqa: E501 - - :param name: The name of this V1ClusterTrustBundleProjection. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1ClusterTrustBundleProjection. # noqa: E501 - - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. # noqa: E501 - - :return: The optional of this V1ClusterTrustBundleProjection. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1ClusterTrustBundleProjection. - - If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. # noqa: E501 - - :param optional: The optional of this V1ClusterTrustBundleProjection. # noqa: E501 - :type: bool - """ - - self._optional = optional - - @property - def path(self): - """Gets the path of this V1ClusterTrustBundleProjection. # noqa: E501 - - Relative path from the volume root to write the bundle. # noqa: E501 - - :return: The path of this V1ClusterTrustBundleProjection. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1ClusterTrustBundleProjection. - - Relative path from the volume root to write the bundle. # noqa: E501 - - :param path: The path of this V1ClusterTrustBundleProjection. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def signer_name(self): - """Gets the signer_name of this V1ClusterTrustBundleProjection. # noqa: E501 - - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. # noqa: E501 - - :return: The signer_name of this V1ClusterTrustBundleProjection. # noqa: E501 - :rtype: str - """ - return self._signer_name - - @signer_name.setter - def signer_name(self, signer_name): - """Sets the signer_name of this V1ClusterTrustBundleProjection. - - Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. # noqa: E501 - - :param signer_name: The signer_name of this V1ClusterTrustBundleProjection. # noqa: E501 - :type: str - """ - - self._signer_name = signer_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ClusterTrustBundleProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ClusterTrustBundleProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_condition.py deleted file mode 100644 index 21c5b38..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_condition.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ComponentCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'error': 'str', - 'message': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'error': 'error', - 'message': 'message', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, error=None, message=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1ComponentCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._error = None - self._message = None - self._status = None - self._type = None - self.discriminator = None - - if error is not None: - self.error = error - if message is not None: - self.message = message - self.status = status - self.type = type - - @property - def error(self): - """Gets the error of this V1ComponentCondition. # noqa: E501 - - Condition error code for a component. For example, a health check error code. # noqa: E501 - - :return: The error of this V1ComponentCondition. # noqa: E501 - :rtype: str - """ - return self._error - - @error.setter - def error(self, error): - """Sets the error of this V1ComponentCondition. - - Condition error code for a component. For example, a health check error code. # noqa: E501 - - :param error: The error of this V1ComponentCondition. # noqa: E501 - :type: str - """ - - self._error = error - - @property - def message(self): - """Gets the message of this V1ComponentCondition. # noqa: E501 - - Message about the condition for a component. For example, information about a health check. # noqa: E501 - - :return: The message of this V1ComponentCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ComponentCondition. - - Message about the condition for a component. For example, information about a health check. # noqa: E501 - - :param message: The message of this V1ComponentCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def status(self): - """Gets the status of this V1ComponentCondition. # noqa: E501 - - Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\". # noqa: E501 - - :return: The status of this V1ComponentCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ComponentCondition. - - Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\". # noqa: E501 - - :param status: The status of this V1ComponentCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1ComponentCondition. # noqa: E501 - - Type of condition for a component. Valid value: \"Healthy\" # noqa: E501 - - :return: The type of this V1ComponentCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1ComponentCondition. - - Type of condition for a component. Valid value: \"Healthy\" # noqa: E501 - - :param type: The type of this V1ComponentCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ComponentCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ComponentCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status.py deleted file mode 100644 index 9a404a2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ComponentStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'conditions': 'list[V1ComponentCondition]', - 'kind': 'str', - 'metadata': 'V1ObjectMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'conditions': 'conditions', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, conditions=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ComponentStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._conditions = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if conditions is not None: - self.conditions = conditions - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ComponentStatus. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ComponentStatus. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ComponentStatus. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ComponentStatus. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def conditions(self): - """Gets the conditions of this V1ComponentStatus. # noqa: E501 - - List of component conditions observed # noqa: E501 - - :return: The conditions of this V1ComponentStatus. # noqa: E501 - :rtype: list[V1ComponentCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1ComponentStatus. - - List of component conditions observed # noqa: E501 - - :param conditions: The conditions of this V1ComponentStatus. # noqa: E501 - :type: list[V1ComponentCondition] - """ - - self._conditions = conditions - - @property - def kind(self): - """Gets the kind of this V1ComponentStatus. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ComponentStatus. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ComponentStatus. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ComponentStatus. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ComponentStatus. # noqa: E501 - - - :return: The metadata of this V1ComponentStatus. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ComponentStatus. - - - :param metadata: The metadata of this V1ComponentStatus. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ComponentStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ComponentStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status_list.py deleted file mode 100644 index 7b2144f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_component_status_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ComponentStatusList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ComponentStatus]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ComponentStatusList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ComponentStatusList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ComponentStatusList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ComponentStatusList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ComponentStatusList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ComponentStatusList. # noqa: E501 - - List of ComponentStatus objects. # noqa: E501 - - :return: The items of this V1ComponentStatusList. # noqa: E501 - :rtype: list[V1ComponentStatus] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ComponentStatusList. - - List of ComponentStatus objects. # noqa: E501 - - :param items: The items of this V1ComponentStatusList. # noqa: E501 - :type: list[V1ComponentStatus] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ComponentStatusList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ComponentStatusList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ComponentStatusList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ComponentStatusList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ComponentStatusList. # noqa: E501 - - - :return: The metadata of this V1ComponentStatusList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ComponentStatusList. - - - :param metadata: The metadata of this V1ComponentStatusList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ComponentStatusList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ComponentStatusList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_condition.py deleted file mode 100644 index c4a6e26..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_condition.py +++ /dev/null @@ -1,267 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Condition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'observed_generation': 'int', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'observed_generation': 'observedGeneration', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, observed_generation=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1Condition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._observed_generation = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - self.last_transition_time = last_transition_time - self.message = message - if observed_generation is not None: - self.observed_generation = observed_generation - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1Condition. # noqa: E501 - - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. # noqa: E501 - - :return: The last_transition_time of this V1Condition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1Condition. - - lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1Condition. # noqa: E501 - :type: datetime - """ - if self.local_vars_configuration.client_side_validation and last_transition_time is None: # noqa: E501 - raise ValueError("Invalid value for `last_transition_time`, must not be `None`") # noqa: E501 - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1Condition. # noqa: E501 - - message is a human readable message indicating details about the transition. This may be an empty string. # noqa: E501 - - :return: The message of this V1Condition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1Condition. - - message is a human readable message indicating details about the transition. This may be an empty string. # noqa: E501 - - :param message: The message of this V1Condition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and message is None: # noqa: E501 - raise ValueError("Invalid value for `message`, must not be `None`") # noqa: E501 - - self._message = message - - @property - def observed_generation(self): - """Gets the observed_generation of this V1Condition. # noqa: E501 - - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. # noqa: E501 - - :return: The observed_generation of this V1Condition. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1Condition. - - observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. # noqa: E501 - - :param observed_generation: The observed_generation of this V1Condition. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def reason(self): - """Gets the reason of this V1Condition. # noqa: E501 - - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. # noqa: E501 - - :return: The reason of this V1Condition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1Condition. - - reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. # noqa: E501 - - :param reason: The reason of this V1Condition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and reason is None: # noqa: E501 - raise ValueError("Invalid value for `reason`, must not be `None`") # noqa: E501 - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1Condition. # noqa: E501 - - status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1Condition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Condition. - - status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1Condition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1Condition. # noqa: E501 - - type of condition in CamelCase or in foo.example.com/CamelCase. # noqa: E501 - - :return: The type of this V1Condition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1Condition. - - type of condition in CamelCase or in foo.example.com/CamelCase. # noqa: E501 - - :param type: The type of this V1Condition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Condition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Condition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map.py deleted file mode 100644 index d4e88e1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map.py +++ /dev/null @@ -1,260 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMap(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'binary_data': 'dict(str, str)', - 'data': 'dict(str, str)', - 'immutable': 'bool', - 'kind': 'str', - 'metadata': 'V1ObjectMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'binary_data': 'binaryData', - 'data': 'data', - 'immutable': 'immutable', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, binary_data=None, data=None, immutable=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMap - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._binary_data = None - self._data = None - self._immutable = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if binary_data is not None: - self.binary_data = binary_data - if data is not None: - self.data = data - if immutable is not None: - self.immutable = immutable - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ConfigMap. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ConfigMap. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ConfigMap. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ConfigMap. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def binary_data(self): - """Gets the binary_data of this V1ConfigMap. # noqa: E501 - - BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet. # noqa: E501 - - :return: The binary_data of this V1ConfigMap. # noqa: E501 - :rtype: dict(str, str) - """ - return self._binary_data - - @binary_data.setter - def binary_data(self, binary_data): - """Sets the binary_data of this V1ConfigMap. - - BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet. # noqa: E501 - - :param binary_data: The binary_data of this V1ConfigMap. # noqa: E501 - :type: dict(str, str) - """ - - self._binary_data = binary_data - - @property - def data(self): - """Gets the data of this V1ConfigMap. # noqa: E501 - - Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process. # noqa: E501 - - :return: The data of this V1ConfigMap. # noqa: E501 - :rtype: dict(str, str) - """ - return self._data - - @data.setter - def data(self, data): - """Sets the data of this V1ConfigMap. - - Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process. # noqa: E501 - - :param data: The data of this V1ConfigMap. # noqa: E501 - :type: dict(str, str) - """ - - self._data = data - - @property - def immutable(self): - """Gets the immutable of this V1ConfigMap. # noqa: E501 - - Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. # noqa: E501 - - :return: The immutable of this V1ConfigMap. # noqa: E501 - :rtype: bool - """ - return self._immutable - - @immutable.setter - def immutable(self, immutable): - """Sets the immutable of this V1ConfigMap. - - Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. # noqa: E501 - - :param immutable: The immutable of this V1ConfigMap. # noqa: E501 - :type: bool - """ - - self._immutable = immutable - - @property - def kind(self): - """Gets the kind of this V1ConfigMap. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ConfigMap. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ConfigMap. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ConfigMap. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ConfigMap. # noqa: E501 - - - :return: The metadata of this V1ConfigMap. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ConfigMap. - - - :param metadata: The metadata of this V1ConfigMap. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMap): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMap): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_env_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_env_source.py deleted file mode 100644 index c049f50..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_env_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapEnvSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapEnvSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._optional = None - self.discriminator = None - - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def name(self): - """Gets the name of this V1ConfigMapEnvSource. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1ConfigMapEnvSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ConfigMapEnvSource. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1ConfigMapEnvSource. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1ConfigMapEnvSource. # noqa: E501 - - Specify whether the ConfigMap must be defined # noqa: E501 - - :return: The optional of this V1ConfigMapEnvSource. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1ConfigMapEnvSource. - - Specify whether the ConfigMap must be defined # noqa: E501 - - :param optional: The optional of this V1ConfigMapEnvSource. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapEnvSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapEnvSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_key_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_key_selector.py deleted file mode 100644 index 94d9a33..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_key_selector.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapKeySelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'key': 'key', - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, key=None, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapKeySelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._name = None - self._optional = None - self.discriminator = None - - self.key = key - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def key(self): - """Gets the key of this V1ConfigMapKeySelector. # noqa: E501 - - The key to select. # noqa: E501 - - :return: The key of this V1ConfigMapKeySelector. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1ConfigMapKeySelector. - - The key to select. # noqa: E501 - - :param key: The key of this V1ConfigMapKeySelector. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def name(self): - """Gets the name of this V1ConfigMapKeySelector. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1ConfigMapKeySelector. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ConfigMapKeySelector. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1ConfigMapKeySelector. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1ConfigMapKeySelector. # noqa: E501 - - Specify whether the ConfigMap or its key must be defined # noqa: E501 - - :return: The optional of this V1ConfigMapKeySelector. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1ConfigMapKeySelector. - - Specify whether the ConfigMap or its key must be defined # noqa: E501 - - :param optional: The optional of this V1ConfigMapKeySelector. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapKeySelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapKeySelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_list.py deleted file mode 100644 index 62854cc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ConfigMap]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ConfigMapList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ConfigMapList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ConfigMapList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ConfigMapList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ConfigMapList. # noqa: E501 - - Items is the list of ConfigMaps. # noqa: E501 - - :return: The items of this V1ConfigMapList. # noqa: E501 - :rtype: list[V1ConfigMap] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ConfigMapList. - - Items is the list of ConfigMaps. # noqa: E501 - - :param items: The items of this V1ConfigMapList. # noqa: E501 - :type: list[V1ConfigMap] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ConfigMapList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ConfigMapList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ConfigMapList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ConfigMapList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ConfigMapList. # noqa: E501 - - - :return: The metadata of this V1ConfigMapList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ConfigMapList. - - - :param metadata: The metadata of this V1ConfigMapList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_node_config_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_node_config_source.py deleted file mode 100644 index 32c61b9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_node_config_source.py +++ /dev/null @@ -1,237 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapNodeConfigSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'kubelet_config_key': 'str', - 'name': 'str', - 'namespace': 'str', - 'resource_version': 'str', - 'uid': 'str' - } - - attribute_map = { - 'kubelet_config_key': 'kubeletConfigKey', - 'name': 'name', - 'namespace': 'namespace', - 'resource_version': 'resourceVersion', - 'uid': 'uid' - } - - def __init__(self, kubelet_config_key=None, name=None, namespace=None, resource_version=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapNodeConfigSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._kubelet_config_key = None - self._name = None - self._namespace = None - self._resource_version = None - self._uid = None - self.discriminator = None - - self.kubelet_config_key = kubelet_config_key - self.name = name - self.namespace = namespace - if resource_version is not None: - self.resource_version = resource_version - if uid is not None: - self.uid = uid - - @property - def kubelet_config_key(self): - """Gets the kubelet_config_key of this V1ConfigMapNodeConfigSource. # noqa: E501 - - KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases. # noqa: E501 - - :return: The kubelet_config_key of this V1ConfigMapNodeConfigSource. # noqa: E501 - :rtype: str - """ - return self._kubelet_config_key - - @kubelet_config_key.setter - def kubelet_config_key(self, kubelet_config_key): - """Sets the kubelet_config_key of this V1ConfigMapNodeConfigSource. - - KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases. # noqa: E501 - - :param kubelet_config_key: The kubelet_config_key of this V1ConfigMapNodeConfigSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kubelet_config_key is None: # noqa: E501 - raise ValueError("Invalid value for `kubelet_config_key`, must not be `None`") # noqa: E501 - - self._kubelet_config_key = kubelet_config_key - - @property - def name(self): - """Gets the name of this V1ConfigMapNodeConfigSource. # noqa: E501 - - Name is the metadata.name of the referenced ConfigMap. This field is required in all cases. # noqa: E501 - - :return: The name of this V1ConfigMapNodeConfigSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ConfigMapNodeConfigSource. - - Name is the metadata.name of the referenced ConfigMap. This field is required in all cases. # noqa: E501 - - :param name: The name of this V1ConfigMapNodeConfigSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1ConfigMapNodeConfigSource. # noqa: E501 - - Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases. # noqa: E501 - - :return: The namespace of this V1ConfigMapNodeConfigSource. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1ConfigMapNodeConfigSource. - - Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases. # noqa: E501 - - :param namespace: The namespace of this V1ConfigMapNodeConfigSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and namespace is None: # noqa: E501 - raise ValueError("Invalid value for `namespace`, must not be `None`") # noqa: E501 - - self._namespace = namespace - - @property - def resource_version(self): - """Gets the resource_version of this V1ConfigMapNodeConfigSource. # noqa: E501 - - ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. # noqa: E501 - - :return: The resource_version of this V1ConfigMapNodeConfigSource. # noqa: E501 - :rtype: str - """ - return self._resource_version - - @resource_version.setter - def resource_version(self, resource_version): - """Sets the resource_version of this V1ConfigMapNodeConfigSource. - - ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. # noqa: E501 - - :param resource_version: The resource_version of this V1ConfigMapNodeConfigSource. # noqa: E501 - :type: str - """ - - self._resource_version = resource_version - - @property - def uid(self): - """Gets the uid of this V1ConfigMapNodeConfigSource. # noqa: E501 - - UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. # noqa: E501 - - :return: The uid of this V1ConfigMapNodeConfigSource. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1ConfigMapNodeConfigSource. - - UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status. # noqa: E501 - - :param uid: The uid of this V1ConfigMapNodeConfigSource. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapNodeConfigSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapNodeConfigSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_projection.py deleted file mode 100644 index 0706244..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_projection.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'items': 'list[V1KeyToPath]', - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'items': 'items', - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, items=None, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._items = None - self._name = None - self._optional = None - self.discriminator = None - - if items is not None: - self.items = items - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def items(self): - """Gets the items of this V1ConfigMapProjection. # noqa: E501 - - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :return: The items of this V1ConfigMapProjection. # noqa: E501 - :rtype: list[V1KeyToPath] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ConfigMapProjection. - - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :param items: The items of this V1ConfigMapProjection. # noqa: E501 - :type: list[V1KeyToPath] - """ - - self._items = items - - @property - def name(self): - """Gets the name of this V1ConfigMapProjection. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1ConfigMapProjection. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ConfigMapProjection. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1ConfigMapProjection. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1ConfigMapProjection. # noqa: E501 - - optional specify whether the ConfigMap or its keys must be defined # noqa: E501 - - :return: The optional of this V1ConfigMapProjection. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1ConfigMapProjection. - - optional specify whether the ConfigMap or its keys must be defined # noqa: E501 - - :param optional: The optional of this V1ConfigMapProjection. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_volume_source.py deleted file mode 100644 index 1aa1724..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_config_map_volume_source.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ConfigMapVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default_mode': 'int', - 'items': 'list[V1KeyToPath]', - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'default_mode': 'defaultMode', - 'items': 'items', - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, default_mode=None, items=None, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1ConfigMapVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default_mode = None - self._items = None - self._name = None - self._optional = None - self.discriminator = None - - if default_mode is not None: - self.default_mode = default_mode - if items is not None: - self.items = items - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def default_mode(self): - """Gets the default_mode of this V1ConfigMapVolumeSource. # noqa: E501 - - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The default_mode of this V1ConfigMapVolumeSource. # noqa: E501 - :rtype: int - """ - return self._default_mode - - @default_mode.setter - def default_mode(self, default_mode): - """Sets the default_mode of this V1ConfigMapVolumeSource. - - defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param default_mode: The default_mode of this V1ConfigMapVolumeSource. # noqa: E501 - :type: int - """ - - self._default_mode = default_mode - - @property - def items(self): - """Gets the items of this V1ConfigMapVolumeSource. # noqa: E501 - - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :return: The items of this V1ConfigMapVolumeSource. # noqa: E501 - :rtype: list[V1KeyToPath] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ConfigMapVolumeSource. - - items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :param items: The items of this V1ConfigMapVolumeSource. # noqa: E501 - :type: list[V1KeyToPath] - """ - - self._items = items - - @property - def name(self): - """Gets the name of this V1ConfigMapVolumeSource. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1ConfigMapVolumeSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ConfigMapVolumeSource. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1ConfigMapVolumeSource. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1ConfigMapVolumeSource. # noqa: E501 - - optional specify whether the ConfigMap or its keys must be defined # noqa: E501 - - :return: The optional of this V1ConfigMapVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1ConfigMapVolumeSource. - - optional specify whether the ConfigMap or its keys must be defined # noqa: E501 - - :param optional: The optional of this V1ConfigMapVolumeSource. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ConfigMapVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ConfigMapVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container.py deleted file mode 100644 index c1ea9b1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container.py +++ /dev/null @@ -1,755 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Container(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'args': 'list[str]', - 'command': 'list[str]', - 'env': 'list[V1EnvVar]', - 'env_from': 'list[V1EnvFromSource]', - 'image': 'str', - 'image_pull_policy': 'str', - 'lifecycle': 'V1Lifecycle', - 'liveness_probe': 'V1Probe', - 'name': 'str', - 'ports': 'list[V1ContainerPort]', - 'readiness_probe': 'V1Probe', - 'resize_policy': 'list[V1ContainerResizePolicy]', - 'resources': 'V1ResourceRequirements', - 'restart_policy': 'str', - 'security_context': 'V1SecurityContext', - 'startup_probe': 'V1Probe', - 'stdin': 'bool', - 'stdin_once': 'bool', - 'termination_message_path': 'str', - 'termination_message_policy': 'str', - 'tty': 'bool', - 'volume_devices': 'list[V1VolumeDevice]', - 'volume_mounts': 'list[V1VolumeMount]', - 'working_dir': 'str' - } - - attribute_map = { - 'args': 'args', - 'command': 'command', - 'env': 'env', - 'env_from': 'envFrom', - 'image': 'image', - 'image_pull_policy': 'imagePullPolicy', - 'lifecycle': 'lifecycle', - 'liveness_probe': 'livenessProbe', - 'name': 'name', - 'ports': 'ports', - 'readiness_probe': 'readinessProbe', - 'resize_policy': 'resizePolicy', - 'resources': 'resources', - 'restart_policy': 'restartPolicy', - 'security_context': 'securityContext', - 'startup_probe': 'startupProbe', - 'stdin': 'stdin', - 'stdin_once': 'stdinOnce', - 'termination_message_path': 'terminationMessagePath', - 'termination_message_policy': 'terminationMessagePolicy', - 'tty': 'tty', - 'volume_devices': 'volumeDevices', - 'volume_mounts': 'volumeMounts', - 'working_dir': 'workingDir' - } - - def __init__(self, args=None, command=None, env=None, env_from=None, image=None, image_pull_policy=None, lifecycle=None, liveness_probe=None, name=None, ports=None, readiness_probe=None, resize_policy=None, resources=None, restart_policy=None, security_context=None, startup_probe=None, stdin=None, stdin_once=None, termination_message_path=None, termination_message_policy=None, tty=None, volume_devices=None, volume_mounts=None, working_dir=None, local_vars_configuration=None): # noqa: E501 - """V1Container - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._args = None - self._command = None - self._env = None - self._env_from = None - self._image = None - self._image_pull_policy = None - self._lifecycle = None - self._liveness_probe = None - self._name = None - self._ports = None - self._readiness_probe = None - self._resize_policy = None - self._resources = None - self._restart_policy = None - self._security_context = None - self._startup_probe = None - self._stdin = None - self._stdin_once = None - self._termination_message_path = None - self._termination_message_policy = None - self._tty = None - self._volume_devices = None - self._volume_mounts = None - self._working_dir = None - self.discriminator = None - - if args is not None: - self.args = args - if command is not None: - self.command = command - if env is not None: - self.env = env - if env_from is not None: - self.env_from = env_from - if image is not None: - self.image = image - if image_pull_policy is not None: - self.image_pull_policy = image_pull_policy - if lifecycle is not None: - self.lifecycle = lifecycle - if liveness_probe is not None: - self.liveness_probe = liveness_probe - self.name = name - if ports is not None: - self.ports = ports - if readiness_probe is not None: - self.readiness_probe = readiness_probe - if resize_policy is not None: - self.resize_policy = resize_policy - if resources is not None: - self.resources = resources - if restart_policy is not None: - self.restart_policy = restart_policy - if security_context is not None: - self.security_context = security_context - if startup_probe is not None: - self.startup_probe = startup_probe - if stdin is not None: - self.stdin = stdin - if stdin_once is not None: - self.stdin_once = stdin_once - if termination_message_path is not None: - self.termination_message_path = termination_message_path - if termination_message_policy is not None: - self.termination_message_policy = termination_message_policy - if tty is not None: - self.tty = tty - if volume_devices is not None: - self.volume_devices = volume_devices - if volume_mounts is not None: - self.volume_mounts = volume_mounts - if working_dir is not None: - self.working_dir = working_dir - - @property - def args(self): - """Gets the args of this V1Container. # noqa: E501 - - Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :return: The args of this V1Container. # noqa: E501 - :rtype: list[str] - """ - return self._args - - @args.setter - def args(self, args): - """Sets the args of this V1Container. - - Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :param args: The args of this V1Container. # noqa: E501 - :type: list[str] - """ - - self._args = args - - @property - def command(self): - """Gets the command of this V1Container. # noqa: E501 - - Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :return: The command of this V1Container. # noqa: E501 - :rtype: list[str] - """ - return self._command - - @command.setter - def command(self, command): - """Sets the command of this V1Container. - - Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :param command: The command of this V1Container. # noqa: E501 - :type: list[str] - """ - - self._command = command - - @property - def env(self): - """Gets the env of this V1Container. # noqa: E501 - - List of environment variables to set in the container. Cannot be updated. # noqa: E501 - - :return: The env of this V1Container. # noqa: E501 - :rtype: list[V1EnvVar] - """ - return self._env - - @env.setter - def env(self, env): - """Sets the env of this V1Container. - - List of environment variables to set in the container. Cannot be updated. # noqa: E501 - - :param env: The env of this V1Container. # noqa: E501 - :type: list[V1EnvVar] - """ - - self._env = env - - @property - def env_from(self): - """Gets the env_from of this V1Container. # noqa: E501 - - List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. # noqa: E501 - - :return: The env_from of this V1Container. # noqa: E501 - :rtype: list[V1EnvFromSource] - """ - return self._env_from - - @env_from.setter - def env_from(self, env_from): - """Sets the env_from of this V1Container. - - List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. # noqa: E501 - - :param env_from: The env_from of this V1Container. # noqa: E501 - :type: list[V1EnvFromSource] - """ - - self._env_from = env_from - - @property - def image(self): - """Gets the image of this V1Container. # noqa: E501 - - Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. # noqa: E501 - - :return: The image of this V1Container. # noqa: E501 - :rtype: str - """ - return self._image - - @image.setter - def image(self, image): - """Sets the image of this V1Container. - - Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. # noqa: E501 - - :param image: The image of this V1Container. # noqa: E501 - :type: str - """ - - self._image = image - - @property - def image_pull_policy(self): - """Gets the image_pull_policy of this V1Container. # noqa: E501 - - Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images # noqa: E501 - - :return: The image_pull_policy of this V1Container. # noqa: E501 - :rtype: str - """ - return self._image_pull_policy - - @image_pull_policy.setter - def image_pull_policy(self, image_pull_policy): - """Sets the image_pull_policy of this V1Container. - - Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images # noqa: E501 - - :param image_pull_policy: The image_pull_policy of this V1Container. # noqa: E501 - :type: str - """ - - self._image_pull_policy = image_pull_policy - - @property - def lifecycle(self): - """Gets the lifecycle of this V1Container. # noqa: E501 - - - :return: The lifecycle of this V1Container. # noqa: E501 - :rtype: V1Lifecycle - """ - return self._lifecycle - - @lifecycle.setter - def lifecycle(self, lifecycle): - """Sets the lifecycle of this V1Container. - - - :param lifecycle: The lifecycle of this V1Container. # noqa: E501 - :type: V1Lifecycle - """ - - self._lifecycle = lifecycle - - @property - def liveness_probe(self): - """Gets the liveness_probe of this V1Container. # noqa: E501 - - - :return: The liveness_probe of this V1Container. # noqa: E501 - :rtype: V1Probe - """ - return self._liveness_probe - - @liveness_probe.setter - def liveness_probe(self, liveness_probe): - """Sets the liveness_probe of this V1Container. - - - :param liveness_probe: The liveness_probe of this V1Container. # noqa: E501 - :type: V1Probe - """ - - self._liveness_probe = liveness_probe - - @property - def name(self): - """Gets the name of this V1Container. # noqa: E501 - - Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. # noqa: E501 - - :return: The name of this V1Container. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1Container. - - Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. # noqa: E501 - - :param name: The name of this V1Container. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def ports(self): - """Gets the ports of this V1Container. # noqa: E501 - - List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. # noqa: E501 - - :return: The ports of this V1Container. # noqa: E501 - :rtype: list[V1ContainerPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1Container. - - List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. # noqa: E501 - - :param ports: The ports of this V1Container. # noqa: E501 - :type: list[V1ContainerPort] - """ - - self._ports = ports - - @property - def readiness_probe(self): - """Gets the readiness_probe of this V1Container. # noqa: E501 - - - :return: The readiness_probe of this V1Container. # noqa: E501 - :rtype: V1Probe - """ - return self._readiness_probe - - @readiness_probe.setter - def readiness_probe(self, readiness_probe): - """Sets the readiness_probe of this V1Container. - - - :param readiness_probe: The readiness_probe of this V1Container. # noqa: E501 - :type: V1Probe - """ - - self._readiness_probe = readiness_probe - - @property - def resize_policy(self): - """Gets the resize_policy of this V1Container. # noqa: E501 - - Resources resize policy for the container. # noqa: E501 - - :return: The resize_policy of this V1Container. # noqa: E501 - :rtype: list[V1ContainerResizePolicy] - """ - return self._resize_policy - - @resize_policy.setter - def resize_policy(self, resize_policy): - """Sets the resize_policy of this V1Container. - - Resources resize policy for the container. # noqa: E501 - - :param resize_policy: The resize_policy of this V1Container. # noqa: E501 - :type: list[V1ContainerResizePolicy] - """ - - self._resize_policy = resize_policy - - @property - def resources(self): - """Gets the resources of this V1Container. # noqa: E501 - - - :return: The resources of this V1Container. # noqa: E501 - :rtype: V1ResourceRequirements - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1Container. - - - :param resources: The resources of this V1Container. # noqa: E501 - :type: V1ResourceRequirements - """ - - self._resources = resources - - @property - def restart_policy(self): - """Gets the restart_policy of this V1Container. # noqa: E501 - - RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \"Always\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \"Always\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \"Always\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \"sidecar\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed. # noqa: E501 - - :return: The restart_policy of this V1Container. # noqa: E501 - :rtype: str - """ - return self._restart_policy - - @restart_policy.setter - def restart_policy(self, restart_policy): - """Sets the restart_policy of this V1Container. - - RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \"Always\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \"Always\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \"Always\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \"sidecar\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed. # noqa: E501 - - :param restart_policy: The restart_policy of this V1Container. # noqa: E501 - :type: str - """ - - self._restart_policy = restart_policy - - @property - def security_context(self): - """Gets the security_context of this V1Container. # noqa: E501 - - - :return: The security_context of this V1Container. # noqa: E501 - :rtype: V1SecurityContext - """ - return self._security_context - - @security_context.setter - def security_context(self, security_context): - """Sets the security_context of this V1Container. - - - :param security_context: The security_context of this V1Container. # noqa: E501 - :type: V1SecurityContext - """ - - self._security_context = security_context - - @property - def startup_probe(self): - """Gets the startup_probe of this V1Container. # noqa: E501 - - - :return: The startup_probe of this V1Container. # noqa: E501 - :rtype: V1Probe - """ - return self._startup_probe - - @startup_probe.setter - def startup_probe(self, startup_probe): - """Sets the startup_probe of this V1Container. - - - :param startup_probe: The startup_probe of this V1Container. # noqa: E501 - :type: V1Probe - """ - - self._startup_probe = startup_probe - - @property - def stdin(self): - """Gets the stdin of this V1Container. # noqa: E501 - - Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. # noqa: E501 - - :return: The stdin of this V1Container. # noqa: E501 - :rtype: bool - """ - return self._stdin - - @stdin.setter - def stdin(self, stdin): - """Sets the stdin of this V1Container. - - Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. # noqa: E501 - - :param stdin: The stdin of this V1Container. # noqa: E501 - :type: bool - """ - - self._stdin = stdin - - @property - def stdin_once(self): - """Gets the stdin_once of this V1Container. # noqa: E501 - - Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false # noqa: E501 - - :return: The stdin_once of this V1Container. # noqa: E501 - :rtype: bool - """ - return self._stdin_once - - @stdin_once.setter - def stdin_once(self, stdin_once): - """Sets the stdin_once of this V1Container. - - Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false # noqa: E501 - - :param stdin_once: The stdin_once of this V1Container. # noqa: E501 - :type: bool - """ - - self._stdin_once = stdin_once - - @property - def termination_message_path(self): - """Gets the termination_message_path of this V1Container. # noqa: E501 - - Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. # noqa: E501 - - :return: The termination_message_path of this V1Container. # noqa: E501 - :rtype: str - """ - return self._termination_message_path - - @termination_message_path.setter - def termination_message_path(self, termination_message_path): - """Sets the termination_message_path of this V1Container. - - Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. # noqa: E501 - - :param termination_message_path: The termination_message_path of this V1Container. # noqa: E501 - :type: str - """ - - self._termination_message_path = termination_message_path - - @property - def termination_message_policy(self): - """Gets the termination_message_policy of this V1Container. # noqa: E501 - - Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. # noqa: E501 - - :return: The termination_message_policy of this V1Container. # noqa: E501 - :rtype: str - """ - return self._termination_message_policy - - @termination_message_policy.setter - def termination_message_policy(self, termination_message_policy): - """Sets the termination_message_policy of this V1Container. - - Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. # noqa: E501 - - :param termination_message_policy: The termination_message_policy of this V1Container. # noqa: E501 - :type: str - """ - - self._termination_message_policy = termination_message_policy - - @property - def tty(self): - """Gets the tty of this V1Container. # noqa: E501 - - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. # noqa: E501 - - :return: The tty of this V1Container. # noqa: E501 - :rtype: bool - """ - return self._tty - - @tty.setter - def tty(self, tty): - """Sets the tty of this V1Container. - - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. # noqa: E501 - - :param tty: The tty of this V1Container. # noqa: E501 - :type: bool - """ - - self._tty = tty - - @property - def volume_devices(self): - """Gets the volume_devices of this V1Container. # noqa: E501 - - volumeDevices is the list of block devices to be used by the container. # noqa: E501 - - :return: The volume_devices of this V1Container. # noqa: E501 - :rtype: list[V1VolumeDevice] - """ - return self._volume_devices - - @volume_devices.setter - def volume_devices(self, volume_devices): - """Sets the volume_devices of this V1Container. - - volumeDevices is the list of block devices to be used by the container. # noqa: E501 - - :param volume_devices: The volume_devices of this V1Container. # noqa: E501 - :type: list[V1VolumeDevice] - """ - - self._volume_devices = volume_devices - - @property - def volume_mounts(self): - """Gets the volume_mounts of this V1Container. # noqa: E501 - - Pod volumes to mount into the container's filesystem. Cannot be updated. # noqa: E501 - - :return: The volume_mounts of this V1Container. # noqa: E501 - :rtype: list[V1VolumeMount] - """ - return self._volume_mounts - - @volume_mounts.setter - def volume_mounts(self, volume_mounts): - """Sets the volume_mounts of this V1Container. - - Pod volumes to mount into the container's filesystem. Cannot be updated. # noqa: E501 - - :param volume_mounts: The volume_mounts of this V1Container. # noqa: E501 - :type: list[V1VolumeMount] - """ - - self._volume_mounts = volume_mounts - - @property - def working_dir(self): - """Gets the working_dir of this V1Container. # noqa: E501 - - Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. # noqa: E501 - - :return: The working_dir of this V1Container. # noqa: E501 - :rtype: str - """ - return self._working_dir - - @working_dir.setter - def working_dir(self, working_dir): - """Sets the working_dir of this V1Container. - - Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. # noqa: E501 - - :param working_dir: The working_dir of this V1Container. # noqa: E501 - :type: str - """ - - self._working_dir = working_dir - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Container): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Container): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_image.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_image.py deleted file mode 100644 index b20d967..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_image.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerImage(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'names': 'list[str]', - 'size_bytes': 'int' - } - - attribute_map = { - 'names': 'names', - 'size_bytes': 'sizeBytes' - } - - def __init__(self, names=None, size_bytes=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerImage - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._names = None - self._size_bytes = None - self.discriminator = None - - if names is not None: - self.names = names - if size_bytes is not None: - self.size_bytes = size_bytes - - @property - def names(self): - """Gets the names of this V1ContainerImage. # noqa: E501 - - Names by which this image is known. e.g. [\"kubernetes.example/hyperkube:v1.0.7\", \"cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7\"] # noqa: E501 - - :return: The names of this V1ContainerImage. # noqa: E501 - :rtype: list[str] - """ - return self._names - - @names.setter - def names(self, names): - """Sets the names of this V1ContainerImage. - - Names by which this image is known. e.g. [\"kubernetes.example/hyperkube:v1.0.7\", \"cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7\"] # noqa: E501 - - :param names: The names of this V1ContainerImage. # noqa: E501 - :type: list[str] - """ - - self._names = names - - @property - def size_bytes(self): - """Gets the size_bytes of this V1ContainerImage. # noqa: E501 - - The size of the image in bytes. # noqa: E501 - - :return: The size_bytes of this V1ContainerImage. # noqa: E501 - :rtype: int - """ - return self._size_bytes - - @size_bytes.setter - def size_bytes(self, size_bytes): - """Sets the size_bytes of this V1ContainerImage. - - The size of the image in bytes. # noqa: E501 - - :param size_bytes: The size_bytes of this V1ContainerImage. # noqa: E501 - :type: int - """ - - self._size_bytes = size_bytes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerImage): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerImage): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_port.py deleted file mode 100644 index 2c2b989..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_port.py +++ /dev/null @@ -1,235 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerPort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_port': 'int', - 'host_ip': 'str', - 'host_port': 'int', - 'name': 'str', - 'protocol': 'str' - } - - attribute_map = { - 'container_port': 'containerPort', - 'host_ip': 'hostIP', - 'host_port': 'hostPort', - 'name': 'name', - 'protocol': 'protocol' - } - - def __init__(self, container_port=None, host_ip=None, host_port=None, name=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerPort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_port = None - self._host_ip = None - self._host_port = None - self._name = None - self._protocol = None - self.discriminator = None - - self.container_port = container_port - if host_ip is not None: - self.host_ip = host_ip - if host_port is not None: - self.host_port = host_port - if name is not None: - self.name = name - if protocol is not None: - self.protocol = protocol - - @property - def container_port(self): - """Gets the container_port of this V1ContainerPort. # noqa: E501 - - Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. # noqa: E501 - - :return: The container_port of this V1ContainerPort. # noqa: E501 - :rtype: int - """ - return self._container_port - - @container_port.setter - def container_port(self, container_port): - """Sets the container_port of this V1ContainerPort. - - Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. # noqa: E501 - - :param container_port: The container_port of this V1ContainerPort. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and container_port is None: # noqa: E501 - raise ValueError("Invalid value for `container_port`, must not be `None`") # noqa: E501 - - self._container_port = container_port - - @property - def host_ip(self): - """Gets the host_ip of this V1ContainerPort. # noqa: E501 - - What host IP to bind the external port to. # noqa: E501 - - :return: The host_ip of this V1ContainerPort. # noqa: E501 - :rtype: str - """ - return self._host_ip - - @host_ip.setter - def host_ip(self, host_ip): - """Sets the host_ip of this V1ContainerPort. - - What host IP to bind the external port to. # noqa: E501 - - :param host_ip: The host_ip of this V1ContainerPort. # noqa: E501 - :type: str - """ - - self._host_ip = host_ip - - @property - def host_port(self): - """Gets the host_port of this V1ContainerPort. # noqa: E501 - - Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. # noqa: E501 - - :return: The host_port of this V1ContainerPort. # noqa: E501 - :rtype: int - """ - return self._host_port - - @host_port.setter - def host_port(self, host_port): - """Sets the host_port of this V1ContainerPort. - - Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. # noqa: E501 - - :param host_port: The host_port of this V1ContainerPort. # noqa: E501 - :type: int - """ - - self._host_port = host_port - - @property - def name(self): - """Gets the name of this V1ContainerPort. # noqa: E501 - - If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. # noqa: E501 - - :return: The name of this V1ContainerPort. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ContainerPort. - - If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. # noqa: E501 - - :param name: The name of this V1ContainerPort. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def protocol(self): - """Gets the protocol of this V1ContainerPort. # noqa: E501 - - Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\". # noqa: E501 - - :return: The protocol of this V1ContainerPort. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this V1ContainerPort. - - Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\". # noqa: E501 - - :param protocol: The protocol of this V1ContainerPort. # noqa: E501 - :type: str - """ - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerPort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerPort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_resize_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_resize_policy.py deleted file mode 100644 index f17a147..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_resize_policy.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerResizePolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'resource_name': 'str', - 'restart_policy': 'str' - } - - attribute_map = { - 'resource_name': 'resourceName', - 'restart_policy': 'restartPolicy' - } - - def __init__(self, resource_name=None, restart_policy=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerResizePolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._resource_name = None - self._restart_policy = None - self.discriminator = None - - self.resource_name = resource_name - self.restart_policy = restart_policy - - @property - def resource_name(self): - """Gets the resource_name of this V1ContainerResizePolicy. # noqa: E501 - - Name of the resource to which this resource resize policy applies. Supported values: cpu, memory. # noqa: E501 - - :return: The resource_name of this V1ContainerResizePolicy. # noqa: E501 - :rtype: str - """ - return self._resource_name - - @resource_name.setter - def resource_name(self, resource_name): - """Sets the resource_name of this V1ContainerResizePolicy. - - Name of the resource to which this resource resize policy applies. Supported values: cpu, memory. # noqa: E501 - - :param resource_name: The resource_name of this V1ContainerResizePolicy. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and resource_name is None: # noqa: E501 - raise ValueError("Invalid value for `resource_name`, must not be `None`") # noqa: E501 - - self._resource_name = resource_name - - @property - def restart_policy(self): - """Gets the restart_policy of this V1ContainerResizePolicy. # noqa: E501 - - Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. # noqa: E501 - - :return: The restart_policy of this V1ContainerResizePolicy. # noqa: E501 - :rtype: str - """ - return self._restart_policy - - @restart_policy.setter - def restart_policy(self, restart_policy): - """Sets the restart_policy of this V1ContainerResizePolicy. - - Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired. # noqa: E501 - - :param restart_policy: The restart_policy of this V1ContainerResizePolicy. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and restart_policy is None: # noqa: E501 - raise ValueError("Invalid value for `restart_policy`, must not be `None`") # noqa: E501 - - self._restart_policy = restart_policy - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerResizePolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerResizePolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state.py deleted file mode 100644 index bc4c201..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state.py +++ /dev/null @@ -1,172 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerState(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'running': 'V1ContainerStateRunning', - 'terminated': 'V1ContainerStateTerminated', - 'waiting': 'V1ContainerStateWaiting' - } - - attribute_map = { - 'running': 'running', - 'terminated': 'terminated', - 'waiting': 'waiting' - } - - def __init__(self, running=None, terminated=None, waiting=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerState - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._running = None - self._terminated = None - self._waiting = None - self.discriminator = None - - if running is not None: - self.running = running - if terminated is not None: - self.terminated = terminated - if waiting is not None: - self.waiting = waiting - - @property - def running(self): - """Gets the running of this V1ContainerState. # noqa: E501 - - - :return: The running of this V1ContainerState. # noqa: E501 - :rtype: V1ContainerStateRunning - """ - return self._running - - @running.setter - def running(self, running): - """Sets the running of this V1ContainerState. - - - :param running: The running of this V1ContainerState. # noqa: E501 - :type: V1ContainerStateRunning - """ - - self._running = running - - @property - def terminated(self): - """Gets the terminated of this V1ContainerState. # noqa: E501 - - - :return: The terminated of this V1ContainerState. # noqa: E501 - :rtype: V1ContainerStateTerminated - """ - return self._terminated - - @terminated.setter - def terminated(self, terminated): - """Sets the terminated of this V1ContainerState. - - - :param terminated: The terminated of this V1ContainerState. # noqa: E501 - :type: V1ContainerStateTerminated - """ - - self._terminated = terminated - - @property - def waiting(self): - """Gets the waiting of this V1ContainerState. # noqa: E501 - - - :return: The waiting of this V1ContainerState. # noqa: E501 - :rtype: V1ContainerStateWaiting - """ - return self._waiting - - @waiting.setter - def waiting(self, waiting): - """Sets the waiting of this V1ContainerState. - - - :param waiting: The waiting of this V1ContainerState. # noqa: E501 - :type: V1ContainerStateWaiting - """ - - self._waiting = waiting - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerState): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerState): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_running.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_running.py deleted file mode 100644 index 6ffab89..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_running.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerStateRunning(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'started_at': 'datetime' - } - - attribute_map = { - 'started_at': 'startedAt' - } - - def __init__(self, started_at=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerStateRunning - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._started_at = None - self.discriminator = None - - if started_at is not None: - self.started_at = started_at - - @property - def started_at(self): - """Gets the started_at of this V1ContainerStateRunning. # noqa: E501 - - Time at which the container was last (re-)started # noqa: E501 - - :return: The started_at of this V1ContainerStateRunning. # noqa: E501 - :rtype: datetime - """ - return self._started_at - - @started_at.setter - def started_at(self, started_at): - """Sets the started_at of this V1ContainerStateRunning. - - Time at which the container was last (re-)started # noqa: E501 - - :param started_at: The started_at of this V1ContainerStateRunning. # noqa: E501 - :type: datetime - """ - - self._started_at = started_at - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerStateRunning): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerStateRunning): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_terminated.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_terminated.py deleted file mode 100644 index 11ff0ec..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_terminated.py +++ /dev/null @@ -1,291 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerStateTerminated(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_id': 'str', - 'exit_code': 'int', - 'finished_at': 'datetime', - 'message': 'str', - 'reason': 'str', - 'signal': 'int', - 'started_at': 'datetime' - } - - attribute_map = { - 'container_id': 'containerID', - 'exit_code': 'exitCode', - 'finished_at': 'finishedAt', - 'message': 'message', - 'reason': 'reason', - 'signal': 'signal', - 'started_at': 'startedAt' - } - - def __init__(self, container_id=None, exit_code=None, finished_at=None, message=None, reason=None, signal=None, started_at=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerStateTerminated - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_id = None - self._exit_code = None - self._finished_at = None - self._message = None - self._reason = None - self._signal = None - self._started_at = None - self.discriminator = None - - if container_id is not None: - self.container_id = container_id - self.exit_code = exit_code - if finished_at is not None: - self.finished_at = finished_at - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - if signal is not None: - self.signal = signal - if started_at is not None: - self.started_at = started_at - - @property - def container_id(self): - """Gets the container_id of this V1ContainerStateTerminated. # noqa: E501 - - Container's ID in the format '://' # noqa: E501 - - :return: The container_id of this V1ContainerStateTerminated. # noqa: E501 - :rtype: str - """ - return self._container_id - - @container_id.setter - def container_id(self, container_id): - """Sets the container_id of this V1ContainerStateTerminated. - - Container's ID in the format '://' # noqa: E501 - - :param container_id: The container_id of this V1ContainerStateTerminated. # noqa: E501 - :type: str - """ - - self._container_id = container_id - - @property - def exit_code(self): - """Gets the exit_code of this V1ContainerStateTerminated. # noqa: E501 - - Exit status from the last termination of the container # noqa: E501 - - :return: The exit_code of this V1ContainerStateTerminated. # noqa: E501 - :rtype: int - """ - return self._exit_code - - @exit_code.setter - def exit_code(self, exit_code): - """Sets the exit_code of this V1ContainerStateTerminated. - - Exit status from the last termination of the container # noqa: E501 - - :param exit_code: The exit_code of this V1ContainerStateTerminated. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and exit_code is None: # noqa: E501 - raise ValueError("Invalid value for `exit_code`, must not be `None`") # noqa: E501 - - self._exit_code = exit_code - - @property - def finished_at(self): - """Gets the finished_at of this V1ContainerStateTerminated. # noqa: E501 - - Time at which the container last terminated # noqa: E501 - - :return: The finished_at of this V1ContainerStateTerminated. # noqa: E501 - :rtype: datetime - """ - return self._finished_at - - @finished_at.setter - def finished_at(self, finished_at): - """Sets the finished_at of this V1ContainerStateTerminated. - - Time at which the container last terminated # noqa: E501 - - :param finished_at: The finished_at of this V1ContainerStateTerminated. # noqa: E501 - :type: datetime - """ - - self._finished_at = finished_at - - @property - def message(self): - """Gets the message of this V1ContainerStateTerminated. # noqa: E501 - - Message regarding the last termination of the container # noqa: E501 - - :return: The message of this V1ContainerStateTerminated. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ContainerStateTerminated. - - Message regarding the last termination of the container # noqa: E501 - - :param message: The message of this V1ContainerStateTerminated. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1ContainerStateTerminated. # noqa: E501 - - (brief) reason from the last termination of the container # noqa: E501 - - :return: The reason of this V1ContainerStateTerminated. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1ContainerStateTerminated. - - (brief) reason from the last termination of the container # noqa: E501 - - :param reason: The reason of this V1ContainerStateTerminated. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def signal(self): - """Gets the signal of this V1ContainerStateTerminated. # noqa: E501 - - Signal from the last termination of the container # noqa: E501 - - :return: The signal of this V1ContainerStateTerminated. # noqa: E501 - :rtype: int - """ - return self._signal - - @signal.setter - def signal(self, signal): - """Sets the signal of this V1ContainerStateTerminated. - - Signal from the last termination of the container # noqa: E501 - - :param signal: The signal of this V1ContainerStateTerminated. # noqa: E501 - :type: int - """ - - self._signal = signal - - @property - def started_at(self): - """Gets the started_at of this V1ContainerStateTerminated. # noqa: E501 - - Time at which previous execution of the container started # noqa: E501 - - :return: The started_at of this V1ContainerStateTerminated. # noqa: E501 - :rtype: datetime - """ - return self._started_at - - @started_at.setter - def started_at(self, started_at): - """Sets the started_at of this V1ContainerStateTerminated. - - Time at which previous execution of the container started # noqa: E501 - - :param started_at: The started_at of this V1ContainerStateTerminated. # noqa: E501 - :type: datetime - """ - - self._started_at = started_at - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerStateTerminated): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerStateTerminated): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_waiting.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_waiting.py deleted file mode 100644 index 79669db..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_state_waiting.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerStateWaiting(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'message': 'str', - 'reason': 'str' - } - - attribute_map = { - 'message': 'message', - 'reason': 'reason' - } - - def __init__(self, message=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerStateWaiting - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._message = None - self._reason = None - self.discriminator = None - - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - - @property - def message(self): - """Gets the message of this V1ContainerStateWaiting. # noqa: E501 - - Message regarding why the container is not yet running. # noqa: E501 - - :return: The message of this V1ContainerStateWaiting. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ContainerStateWaiting. - - Message regarding why the container is not yet running. # noqa: E501 - - :param message: The message of this V1ContainerStateWaiting. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1ContainerStateWaiting. # noqa: E501 - - (brief) reason the container is not yet running. # noqa: E501 - - :return: The reason of this V1ContainerStateWaiting. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1ContainerStateWaiting. - - (brief) reason the container is not yet running. # noqa: E501 - - :param reason: The reason of this V1ContainerStateWaiting. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerStateWaiting): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerStateWaiting): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_status.py deleted file mode 100644 index 9dd00f9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_container_status.py +++ /dev/null @@ -1,401 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ContainerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allocated_resources': 'dict(str, str)', - 'container_id': 'str', - 'image': 'str', - 'image_id': 'str', - 'last_state': 'V1ContainerState', - 'name': 'str', - 'ready': 'bool', - 'resources': 'V1ResourceRequirements', - 'restart_count': 'int', - 'started': 'bool', - 'state': 'V1ContainerState' - } - - attribute_map = { - 'allocated_resources': 'allocatedResources', - 'container_id': 'containerID', - 'image': 'image', - 'image_id': 'imageID', - 'last_state': 'lastState', - 'name': 'name', - 'ready': 'ready', - 'resources': 'resources', - 'restart_count': 'restartCount', - 'started': 'started', - 'state': 'state' - } - - def __init__(self, allocated_resources=None, container_id=None, image=None, image_id=None, last_state=None, name=None, ready=None, resources=None, restart_count=None, started=None, state=None, local_vars_configuration=None): # noqa: E501 - """V1ContainerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allocated_resources = None - self._container_id = None - self._image = None - self._image_id = None - self._last_state = None - self._name = None - self._ready = None - self._resources = None - self._restart_count = None - self._started = None - self._state = None - self.discriminator = None - - if allocated_resources is not None: - self.allocated_resources = allocated_resources - if container_id is not None: - self.container_id = container_id - self.image = image - self.image_id = image_id - if last_state is not None: - self.last_state = last_state - self.name = name - self.ready = ready - if resources is not None: - self.resources = resources - self.restart_count = restart_count - if started is not None: - self.started = started - if state is not None: - self.state = state - - @property - def allocated_resources(self): - """Gets the allocated_resources of this V1ContainerStatus. # noqa: E501 - - AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize. # noqa: E501 - - :return: The allocated_resources of this V1ContainerStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._allocated_resources - - @allocated_resources.setter - def allocated_resources(self, allocated_resources): - """Sets the allocated_resources of this V1ContainerStatus. - - AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize. # noqa: E501 - - :param allocated_resources: The allocated_resources of this V1ContainerStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._allocated_resources = allocated_resources - - @property - def container_id(self): - """Gets the container_id of this V1ContainerStatus. # noqa: E501 - - ContainerID is the ID of the container in the format '://'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \"containerd\"). # noqa: E501 - - :return: The container_id of this V1ContainerStatus. # noqa: E501 - :rtype: str - """ - return self._container_id - - @container_id.setter - def container_id(self, container_id): - """Sets the container_id of this V1ContainerStatus. - - ContainerID is the ID of the container in the format '://'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \"containerd\"). # noqa: E501 - - :param container_id: The container_id of this V1ContainerStatus. # noqa: E501 - :type: str - """ - - self._container_id = container_id - - @property - def image(self): - """Gets the image of this V1ContainerStatus. # noqa: E501 - - Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images. # noqa: E501 - - :return: The image of this V1ContainerStatus. # noqa: E501 - :rtype: str - """ - return self._image - - @image.setter - def image(self, image): - """Sets the image of this V1ContainerStatus. - - Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images. # noqa: E501 - - :param image: The image of this V1ContainerStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and image is None: # noqa: E501 - raise ValueError("Invalid value for `image`, must not be `None`") # noqa: E501 - - self._image = image - - @property - def image_id(self): - """Gets the image_id of this V1ContainerStatus. # noqa: E501 - - ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime. # noqa: E501 - - :return: The image_id of this V1ContainerStatus. # noqa: E501 - :rtype: str - """ - return self._image_id - - @image_id.setter - def image_id(self, image_id): - """Sets the image_id of this V1ContainerStatus. - - ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime. # noqa: E501 - - :param image_id: The image_id of this V1ContainerStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and image_id is None: # noqa: E501 - raise ValueError("Invalid value for `image_id`, must not be `None`") # noqa: E501 - - self._image_id = image_id - - @property - def last_state(self): - """Gets the last_state of this V1ContainerStatus. # noqa: E501 - - - :return: The last_state of this V1ContainerStatus. # noqa: E501 - :rtype: V1ContainerState - """ - return self._last_state - - @last_state.setter - def last_state(self, last_state): - """Sets the last_state of this V1ContainerStatus. - - - :param last_state: The last_state of this V1ContainerStatus. # noqa: E501 - :type: V1ContainerState - """ - - self._last_state = last_state - - @property - def name(self): - """Gets the name of this V1ContainerStatus. # noqa: E501 - - Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated. # noqa: E501 - - :return: The name of this V1ContainerStatus. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ContainerStatus. - - Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated. # noqa: E501 - - :param name: The name of this V1ContainerStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def ready(self): - """Gets the ready of this V1ContainerStatus. # noqa: E501 - - Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field). The value is typically used to determine whether a container is ready to accept traffic. # noqa: E501 - - :return: The ready of this V1ContainerStatus. # noqa: E501 - :rtype: bool - """ - return self._ready - - @ready.setter - def ready(self, ready): - """Sets the ready of this V1ContainerStatus. - - Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field). The value is typically used to determine whether a container is ready to accept traffic. # noqa: E501 - - :param ready: The ready of this V1ContainerStatus. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and ready is None: # noqa: E501 - raise ValueError("Invalid value for `ready`, must not be `None`") # noqa: E501 - - self._ready = ready - - @property - def resources(self): - """Gets the resources of this V1ContainerStatus. # noqa: E501 - - - :return: The resources of this V1ContainerStatus. # noqa: E501 - :rtype: V1ResourceRequirements - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1ContainerStatus. - - - :param resources: The resources of this V1ContainerStatus. # noqa: E501 - :type: V1ResourceRequirements - """ - - self._resources = resources - - @property - def restart_count(self): - """Gets the restart_count of this V1ContainerStatus. # noqa: E501 - - RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative. # noqa: E501 - - :return: The restart_count of this V1ContainerStatus. # noqa: E501 - :rtype: int - """ - return self._restart_count - - @restart_count.setter - def restart_count(self, restart_count): - """Sets the restart_count of this V1ContainerStatus. - - RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative. # noqa: E501 - - :param restart_count: The restart_count of this V1ContainerStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and restart_count is None: # noqa: E501 - raise ValueError("Invalid value for `restart_count`, must not be `None`") # noqa: E501 - - self._restart_count = restart_count - - @property - def started(self): - """Gets the started of this V1ContainerStatus. # noqa: E501 - - Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false. # noqa: E501 - - :return: The started of this V1ContainerStatus. # noqa: E501 - :rtype: bool - """ - return self._started - - @started.setter - def started(self, started): - """Sets the started of this V1ContainerStatus. - - Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false. # noqa: E501 - - :param started: The started of this V1ContainerStatus. # noqa: E501 - :type: bool - """ - - self._started = started - - @property - def state(self): - """Gets the state of this V1ContainerStatus. # noqa: E501 - - - :return: The state of this V1ContainerStatus. # noqa: E501 - :rtype: V1ContainerState - """ - return self._state - - @state.setter - def state(self, state): - """Sets the state of this V1ContainerStatus. - - - :param state: The state of this V1ContainerStatus. # noqa: E501 - :type: V1ContainerState - """ - - self._state = state - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ContainerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ContainerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision.py deleted file mode 100644 index cec0fe9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ControllerRevision(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'data': 'object', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'revision': 'int' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'data': 'data', - 'kind': 'kind', - 'metadata': 'metadata', - 'revision': 'revision' - } - - def __init__(self, api_version=None, data=None, kind=None, metadata=None, revision=None, local_vars_configuration=None): # noqa: E501 - """V1ControllerRevision - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._data = None - self._kind = None - self._metadata = None - self._revision = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if data is not None: - self.data = data - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.revision = revision - - @property - def api_version(self): - """Gets the api_version of this V1ControllerRevision. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ControllerRevision. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ControllerRevision. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ControllerRevision. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def data(self): - """Gets the data of this V1ControllerRevision. # noqa: E501 - - Data is the serialized representation of the state. # noqa: E501 - - :return: The data of this V1ControllerRevision. # noqa: E501 - :rtype: object - """ - return self._data - - @data.setter - def data(self, data): - """Sets the data of this V1ControllerRevision. - - Data is the serialized representation of the state. # noqa: E501 - - :param data: The data of this V1ControllerRevision. # noqa: E501 - :type: object - """ - - self._data = data - - @property - def kind(self): - """Gets the kind of this V1ControllerRevision. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ControllerRevision. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ControllerRevision. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ControllerRevision. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ControllerRevision. # noqa: E501 - - - :return: The metadata of this V1ControllerRevision. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ControllerRevision. - - - :param metadata: The metadata of this V1ControllerRevision. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def revision(self): - """Gets the revision of this V1ControllerRevision. # noqa: E501 - - Revision indicates the revision of the state represented by Data. # noqa: E501 - - :return: The revision of this V1ControllerRevision. # noqa: E501 - :rtype: int - """ - return self._revision - - @revision.setter - def revision(self, revision): - """Sets the revision of this V1ControllerRevision. - - Revision indicates the revision of the state represented by Data. # noqa: E501 - - :param revision: The revision of this V1ControllerRevision. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and revision is None: # noqa: E501 - raise ValueError("Invalid value for `revision`, must not be `None`") # noqa: E501 - - self._revision = revision - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ControllerRevision): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ControllerRevision): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision_list.py deleted file mode 100644 index 58b05c3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_controller_revision_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ControllerRevisionList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ControllerRevision]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ControllerRevisionList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ControllerRevisionList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ControllerRevisionList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ControllerRevisionList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ControllerRevisionList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ControllerRevisionList. # noqa: E501 - - Items is the list of ControllerRevisions # noqa: E501 - - :return: The items of this V1ControllerRevisionList. # noqa: E501 - :rtype: list[V1ControllerRevision] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ControllerRevisionList. - - Items is the list of ControllerRevisions # noqa: E501 - - :param items: The items of this V1ControllerRevisionList. # noqa: E501 - :type: list[V1ControllerRevision] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ControllerRevisionList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ControllerRevisionList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ControllerRevisionList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ControllerRevisionList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ControllerRevisionList. # noqa: E501 - - - :return: The metadata of this V1ControllerRevisionList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ControllerRevisionList. - - - :param metadata: The metadata of this V1ControllerRevisionList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ControllerRevisionList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ControllerRevisionList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job.py deleted file mode 100644 index 39db843..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CronJob(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1CronJobSpec', - 'status': 'V1CronJobStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1CronJob - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1CronJob. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CronJob. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CronJob. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CronJob. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CronJob. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CronJob. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CronJob. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CronJob. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CronJob. # noqa: E501 - - - :return: The metadata of this V1CronJob. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CronJob. - - - :param metadata: The metadata of this V1CronJob. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1CronJob. # noqa: E501 - - - :return: The spec of this V1CronJob. # noqa: E501 - :rtype: V1CronJobSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1CronJob. - - - :param spec: The spec of this V1CronJob. # noqa: E501 - :type: V1CronJobSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1CronJob. # noqa: E501 - - - :return: The status of this V1CronJob. # noqa: E501 - :rtype: V1CronJobStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CronJob. - - - :param status: The status of this V1CronJob. # noqa: E501 - :type: V1CronJobStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CronJob): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CronJob): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_list.py deleted file mode 100644 index 28843dc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CronJobList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CronJob]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CronJobList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CronJobList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CronJobList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CronJobList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CronJobList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CronJobList. # noqa: E501 - - items is the list of CronJobs. # noqa: E501 - - :return: The items of this V1CronJobList. # noqa: E501 - :rtype: list[V1CronJob] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CronJobList. - - items is the list of CronJobs. # noqa: E501 - - :param items: The items of this V1CronJobList. # noqa: E501 - :type: list[V1CronJob] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CronJobList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CronJobList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CronJobList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CronJobList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CronJobList. # noqa: E501 - - - :return: The metadata of this V1CronJobList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CronJobList. - - - :param metadata: The metadata of this V1CronJobList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CronJobList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CronJobList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_spec.py deleted file mode 100644 index 15cd014..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_spec.py +++ /dev/null @@ -1,318 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CronJobSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'concurrency_policy': 'str', - 'failed_jobs_history_limit': 'int', - 'job_template': 'V1JobTemplateSpec', - 'schedule': 'str', - 'starting_deadline_seconds': 'int', - 'successful_jobs_history_limit': 'int', - 'suspend': 'bool', - 'time_zone': 'str' - } - - attribute_map = { - 'concurrency_policy': 'concurrencyPolicy', - 'failed_jobs_history_limit': 'failedJobsHistoryLimit', - 'job_template': 'jobTemplate', - 'schedule': 'schedule', - 'starting_deadline_seconds': 'startingDeadlineSeconds', - 'successful_jobs_history_limit': 'successfulJobsHistoryLimit', - 'suspend': 'suspend', - 'time_zone': 'timeZone' - } - - def __init__(self, concurrency_policy=None, failed_jobs_history_limit=None, job_template=None, schedule=None, starting_deadline_seconds=None, successful_jobs_history_limit=None, suspend=None, time_zone=None, local_vars_configuration=None): # noqa: E501 - """V1CronJobSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._concurrency_policy = None - self._failed_jobs_history_limit = None - self._job_template = None - self._schedule = None - self._starting_deadline_seconds = None - self._successful_jobs_history_limit = None - self._suspend = None - self._time_zone = None - self.discriminator = None - - if concurrency_policy is not None: - self.concurrency_policy = concurrency_policy - if failed_jobs_history_limit is not None: - self.failed_jobs_history_limit = failed_jobs_history_limit - self.job_template = job_template - self.schedule = schedule - if starting_deadline_seconds is not None: - self.starting_deadline_seconds = starting_deadline_seconds - if successful_jobs_history_limit is not None: - self.successful_jobs_history_limit = successful_jobs_history_limit - if suspend is not None: - self.suspend = suspend - if time_zone is not None: - self.time_zone = time_zone - - @property - def concurrency_policy(self): - """Gets the concurrency_policy of this V1CronJobSpec. # noqa: E501 - - Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one # noqa: E501 - - :return: The concurrency_policy of this V1CronJobSpec. # noqa: E501 - :rtype: str - """ - return self._concurrency_policy - - @concurrency_policy.setter - def concurrency_policy(self, concurrency_policy): - """Sets the concurrency_policy of this V1CronJobSpec. - - Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one # noqa: E501 - - :param concurrency_policy: The concurrency_policy of this V1CronJobSpec. # noqa: E501 - :type: str - """ - - self._concurrency_policy = concurrency_policy - - @property - def failed_jobs_history_limit(self): - """Gets the failed_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - - The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1. # noqa: E501 - - :return: The failed_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - :rtype: int - """ - return self._failed_jobs_history_limit - - @failed_jobs_history_limit.setter - def failed_jobs_history_limit(self, failed_jobs_history_limit): - """Sets the failed_jobs_history_limit of this V1CronJobSpec. - - The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1. # noqa: E501 - - :param failed_jobs_history_limit: The failed_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - :type: int - """ - - self._failed_jobs_history_limit = failed_jobs_history_limit - - @property - def job_template(self): - """Gets the job_template of this V1CronJobSpec. # noqa: E501 - - - :return: The job_template of this V1CronJobSpec. # noqa: E501 - :rtype: V1JobTemplateSpec - """ - return self._job_template - - @job_template.setter - def job_template(self, job_template): - """Sets the job_template of this V1CronJobSpec. - - - :param job_template: The job_template of this V1CronJobSpec. # noqa: E501 - :type: V1JobTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and job_template is None: # noqa: E501 - raise ValueError("Invalid value for `job_template`, must not be `None`") # noqa: E501 - - self._job_template = job_template - - @property - def schedule(self): - """Gets the schedule of this V1CronJobSpec. # noqa: E501 - - The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. # noqa: E501 - - :return: The schedule of this V1CronJobSpec. # noqa: E501 - :rtype: str - """ - return self._schedule - - @schedule.setter - def schedule(self, schedule): - """Sets the schedule of this V1CronJobSpec. - - The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. # noqa: E501 - - :param schedule: The schedule of this V1CronJobSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and schedule is None: # noqa: E501 - raise ValueError("Invalid value for `schedule`, must not be `None`") # noqa: E501 - - self._schedule = schedule - - @property - def starting_deadline_seconds(self): - """Gets the starting_deadline_seconds of this V1CronJobSpec. # noqa: E501 - - Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones. # noqa: E501 - - :return: The starting_deadline_seconds of this V1CronJobSpec. # noqa: E501 - :rtype: int - """ - return self._starting_deadline_seconds - - @starting_deadline_seconds.setter - def starting_deadline_seconds(self, starting_deadline_seconds): - """Sets the starting_deadline_seconds of this V1CronJobSpec. - - Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones. # noqa: E501 - - :param starting_deadline_seconds: The starting_deadline_seconds of this V1CronJobSpec. # noqa: E501 - :type: int - """ - - self._starting_deadline_seconds = starting_deadline_seconds - - @property - def successful_jobs_history_limit(self): - """Gets the successful_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - - The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3. # noqa: E501 - - :return: The successful_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - :rtype: int - """ - return self._successful_jobs_history_limit - - @successful_jobs_history_limit.setter - def successful_jobs_history_limit(self, successful_jobs_history_limit): - """Sets the successful_jobs_history_limit of this V1CronJobSpec. - - The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3. # noqa: E501 - - :param successful_jobs_history_limit: The successful_jobs_history_limit of this V1CronJobSpec. # noqa: E501 - :type: int - """ - - self._successful_jobs_history_limit = successful_jobs_history_limit - - @property - def suspend(self): - """Gets the suspend of this V1CronJobSpec. # noqa: E501 - - This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false. # noqa: E501 - - :return: The suspend of this V1CronJobSpec. # noqa: E501 - :rtype: bool - """ - return self._suspend - - @suspend.setter - def suspend(self, suspend): - """Sets the suspend of this V1CronJobSpec. - - This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false. # noqa: E501 - - :param suspend: The suspend of this V1CronJobSpec. # noqa: E501 - :type: bool - """ - - self._suspend = suspend - - @property - def time_zone(self): - """Gets the time_zone of this V1CronJobSpec. # noqa: E501 - - The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones # noqa: E501 - - :return: The time_zone of this V1CronJobSpec. # noqa: E501 - :rtype: str - """ - return self._time_zone - - @time_zone.setter - def time_zone(self, time_zone): - """Sets the time_zone of this V1CronJobSpec. - - The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones # noqa: E501 - - :param time_zone: The time_zone of this V1CronJobSpec. # noqa: E501 - :type: str - """ - - self._time_zone = time_zone - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CronJobSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CronJobSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_status.py deleted file mode 100644 index cb4f084..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cron_job_status.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CronJobStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'active': 'list[V1ObjectReference]', - 'last_schedule_time': 'datetime', - 'last_successful_time': 'datetime' - } - - attribute_map = { - 'active': 'active', - 'last_schedule_time': 'lastScheduleTime', - 'last_successful_time': 'lastSuccessfulTime' - } - - def __init__(self, active=None, last_schedule_time=None, last_successful_time=None, local_vars_configuration=None): # noqa: E501 - """V1CronJobStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._active = None - self._last_schedule_time = None - self._last_successful_time = None - self.discriminator = None - - if active is not None: - self.active = active - if last_schedule_time is not None: - self.last_schedule_time = last_schedule_time - if last_successful_time is not None: - self.last_successful_time = last_successful_time - - @property - def active(self): - """Gets the active of this V1CronJobStatus. # noqa: E501 - - A list of pointers to currently running jobs. # noqa: E501 - - :return: The active of this V1CronJobStatus. # noqa: E501 - :rtype: list[V1ObjectReference] - """ - return self._active - - @active.setter - def active(self, active): - """Sets the active of this V1CronJobStatus. - - A list of pointers to currently running jobs. # noqa: E501 - - :param active: The active of this V1CronJobStatus. # noqa: E501 - :type: list[V1ObjectReference] - """ - - self._active = active - - @property - def last_schedule_time(self): - """Gets the last_schedule_time of this V1CronJobStatus. # noqa: E501 - - Information when was the last time the job was successfully scheduled. # noqa: E501 - - :return: The last_schedule_time of this V1CronJobStatus. # noqa: E501 - :rtype: datetime - """ - return self._last_schedule_time - - @last_schedule_time.setter - def last_schedule_time(self, last_schedule_time): - """Sets the last_schedule_time of this V1CronJobStatus. - - Information when was the last time the job was successfully scheduled. # noqa: E501 - - :param last_schedule_time: The last_schedule_time of this V1CronJobStatus. # noqa: E501 - :type: datetime - """ - - self._last_schedule_time = last_schedule_time - - @property - def last_successful_time(self): - """Gets the last_successful_time of this V1CronJobStatus. # noqa: E501 - - Information when was the last time the job successfully completed. # noqa: E501 - - :return: The last_successful_time of this V1CronJobStatus. # noqa: E501 - :rtype: datetime - """ - return self._last_successful_time - - @last_successful_time.setter - def last_successful_time(self, last_successful_time): - """Sets the last_successful_time of this V1CronJobStatus. - - Information when was the last time the job successfully completed. # noqa: E501 - - :param last_successful_time: The last_successful_time of this V1CronJobStatus. # noqa: E501 - :type: datetime - """ - - self._last_successful_time = last_successful_time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CronJobStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CronJobStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cross_version_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cross_version_object_reference.py deleted file mode 100644 index 193c067..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_cross_version_object_reference.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CrossVersionObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'name': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'name': 'name' - } - - def __init__(self, api_version=None, kind=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1CrossVersionObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._name = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.kind = kind - self.name = name - - @property - def api_version(self): - """Gets the api_version of this V1CrossVersionObjectReference. # noqa: E501 - - apiVersion is the API version of the referent # noqa: E501 - - :return: The api_version of this V1CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CrossVersionObjectReference. - - apiVersion is the API version of the referent # noqa: E501 - - :param api_version: The api_version of this V1CrossVersionObjectReference. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CrossVersionObjectReference. # noqa: E501 - - kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CrossVersionObjectReference. - - kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CrossVersionObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1CrossVersionObjectReference. # noqa: E501 - - name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1CrossVersionObjectReference. - - name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1CrossVersionObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CrossVersionObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CrossVersionObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver.py deleted file mode 100644 index e4736ce..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIDriver(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1CSIDriverSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1CSIDriver - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1CSIDriver. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSIDriver. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSIDriver. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSIDriver. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CSIDriver. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSIDriver. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSIDriver. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSIDriver. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CSIDriver. # noqa: E501 - - - :return: The metadata of this V1CSIDriver. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSIDriver. - - - :param metadata: The metadata of this V1CSIDriver. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1CSIDriver. # noqa: E501 - - - :return: The spec of this V1CSIDriver. # noqa: E501 - :rtype: V1CSIDriverSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1CSIDriver. - - - :param spec: The spec of this V1CSIDriver. # noqa: E501 - :type: V1CSIDriverSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIDriver): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIDriver): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_list.py deleted file mode 100644 index ad1ae9c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIDriverList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CSIDriver]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CSIDriverList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CSIDriverList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSIDriverList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSIDriverList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSIDriverList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CSIDriverList. # noqa: E501 - - items is the list of CSIDriver # noqa: E501 - - :return: The items of this V1CSIDriverList. # noqa: E501 - :rtype: list[V1CSIDriver] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CSIDriverList. - - items is the list of CSIDriver # noqa: E501 - - :param items: The items of this V1CSIDriverList. # noqa: E501 - :type: list[V1CSIDriver] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CSIDriverList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSIDriverList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSIDriverList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSIDriverList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CSIDriverList. # noqa: E501 - - - :return: The metadata of this V1CSIDriverList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSIDriverList. - - - :param metadata: The metadata of this V1CSIDriverList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIDriverList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIDriverList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_spec.py deleted file mode 100644 index 2cbd672..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_driver_spec.py +++ /dev/null @@ -1,318 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIDriverSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'attach_required': 'bool', - 'fs_group_policy': 'str', - 'pod_info_on_mount': 'bool', - 'requires_republish': 'bool', - 'se_linux_mount': 'bool', - 'storage_capacity': 'bool', - 'token_requests': 'list[StorageV1TokenRequest]', - 'volume_lifecycle_modes': 'list[str]' - } - - attribute_map = { - 'attach_required': 'attachRequired', - 'fs_group_policy': 'fsGroupPolicy', - 'pod_info_on_mount': 'podInfoOnMount', - 'requires_republish': 'requiresRepublish', - 'se_linux_mount': 'seLinuxMount', - 'storage_capacity': 'storageCapacity', - 'token_requests': 'tokenRequests', - 'volume_lifecycle_modes': 'volumeLifecycleModes' - } - - def __init__(self, attach_required=None, fs_group_policy=None, pod_info_on_mount=None, requires_republish=None, se_linux_mount=None, storage_capacity=None, token_requests=None, volume_lifecycle_modes=None, local_vars_configuration=None): # noqa: E501 - """V1CSIDriverSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._attach_required = None - self._fs_group_policy = None - self._pod_info_on_mount = None - self._requires_republish = None - self._se_linux_mount = None - self._storage_capacity = None - self._token_requests = None - self._volume_lifecycle_modes = None - self.discriminator = None - - if attach_required is not None: - self.attach_required = attach_required - if fs_group_policy is not None: - self.fs_group_policy = fs_group_policy - if pod_info_on_mount is not None: - self.pod_info_on_mount = pod_info_on_mount - if requires_republish is not None: - self.requires_republish = requires_republish - if se_linux_mount is not None: - self.se_linux_mount = se_linux_mount - if storage_capacity is not None: - self.storage_capacity = storage_capacity - if token_requests is not None: - self.token_requests = token_requests - if volume_lifecycle_modes is not None: - self.volume_lifecycle_modes = volume_lifecycle_modes - - @property - def attach_required(self): - """Gets the attach_required of this V1CSIDriverSpec. # noqa: E501 - - attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called. This field is immutable. # noqa: E501 - - :return: The attach_required of this V1CSIDriverSpec. # noqa: E501 - :rtype: bool - """ - return self._attach_required - - @attach_required.setter - def attach_required(self, attach_required): - """Sets the attach_required of this V1CSIDriverSpec. - - attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called. This field is immutable. # noqa: E501 - - :param attach_required: The attach_required of this V1CSIDriverSpec. # noqa: E501 - :type: bool - """ - - self._attach_required = attach_required - - @property - def fs_group_policy(self): - """Gets the fs_group_policy of this V1CSIDriverSpec. # noqa: E501 - - fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is immutable. Defaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. # noqa: E501 - - :return: The fs_group_policy of this V1CSIDriverSpec. # noqa: E501 - :rtype: str - """ - return self._fs_group_policy - - @fs_group_policy.setter - def fs_group_policy(self, fs_group_policy): - """Sets the fs_group_policy of this V1CSIDriverSpec. - - fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details. This field is immutable. Defaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce. # noqa: E501 - - :param fs_group_policy: The fs_group_policy of this V1CSIDriverSpec. # noqa: E501 - :type: str - """ - - self._fs_group_policy = fs_group_policy - - @property - def pod_info_on_mount(self): - """Gets the pod_info_on_mount of this V1CSIDriverSpec. # noqa: E501 - - podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \"csi.storage.k8s.io/pod.name\": pod.Name \"csi.storage.k8s.io/pod.namespace\": pod.Namespace \"csi.storage.k8s.io/pod.uid\": string(pod.UID) \"csi.storage.k8s.io/ephemeral\": \"true\" if the volume is an ephemeral inline volume defined by a CSIVolumeSource, otherwise \"false\" \"csi.storage.k8s.io/ephemeral\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \"Persistent\" and \"Ephemeral\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver. This field is immutable. # noqa: E501 - - :return: The pod_info_on_mount of this V1CSIDriverSpec. # noqa: E501 - :rtype: bool - """ - return self._pod_info_on_mount - - @pod_info_on_mount.setter - def pod_info_on_mount(self, pod_info_on_mount): - """Sets the pod_info_on_mount of this V1CSIDriverSpec. - - podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false. The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \"csi.storage.k8s.io/pod.name\": pod.Name \"csi.storage.k8s.io/pod.namespace\": pod.Namespace \"csi.storage.k8s.io/pod.uid\": string(pod.UID) \"csi.storage.k8s.io/ephemeral\": \"true\" if the volume is an ephemeral inline volume defined by a CSIVolumeSource, otherwise \"false\" \"csi.storage.k8s.io/ephemeral\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \"Persistent\" and \"Ephemeral\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver. This field is immutable. # noqa: E501 - - :param pod_info_on_mount: The pod_info_on_mount of this V1CSIDriverSpec. # noqa: E501 - :type: bool - """ - - self._pod_info_on_mount = pod_info_on_mount - - @property - def requires_republish(self): - """Gets the requires_republish of this V1CSIDriverSpec. # noqa: E501 - - requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false. Note: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container. # noqa: E501 - - :return: The requires_republish of this V1CSIDriverSpec. # noqa: E501 - :rtype: bool - """ - return self._requires_republish - - @requires_republish.setter - def requires_republish(self, requires_republish): - """Sets the requires_republish of this V1CSIDriverSpec. - - requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false. Note: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container. # noqa: E501 - - :param requires_republish: The requires_republish of this V1CSIDriverSpec. # noqa: E501 - :type: bool - """ - - self._requires_republish = requires_republish - - @property - def se_linux_mount(self): - """Gets the se_linux_mount of this V1CSIDriverSpec. # noqa: E501 - - seLinuxMount specifies if the CSI driver supports \"-o context\" mount option. When \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context. When \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem. Default is \"false\". # noqa: E501 - - :return: The se_linux_mount of this V1CSIDriverSpec. # noqa: E501 - :rtype: bool - """ - return self._se_linux_mount - - @se_linux_mount.setter - def se_linux_mount(self, se_linux_mount): - """Sets the se_linux_mount of this V1CSIDriverSpec. - - seLinuxMount specifies if the CSI driver supports \"-o context\" mount option. When \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context. When \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem. Default is \"false\". # noqa: E501 - - :param se_linux_mount: The se_linux_mount of this V1CSIDriverSpec. # noqa: E501 - :type: bool - """ - - self._se_linux_mount = se_linux_mount - - @property - def storage_capacity(self): - """Gets the storage_capacity of this V1CSIDriverSpec. # noqa: E501 - - storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true. The check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object. Alternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published. This field was immutable in Kubernetes <= 1.22 and now is mutable. # noqa: E501 - - :return: The storage_capacity of this V1CSIDriverSpec. # noqa: E501 - :rtype: bool - """ - return self._storage_capacity - - @storage_capacity.setter - def storage_capacity(self, storage_capacity): - """Sets the storage_capacity of this V1CSIDriverSpec. - - storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true. The check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object. Alternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published. This field was immutable in Kubernetes <= 1.22 and now is mutable. # noqa: E501 - - :param storage_capacity: The storage_capacity of this V1CSIDriverSpec. # noqa: E501 - :type: bool - """ - - self._storage_capacity = storage_capacity - - @property - def token_requests(self): - """Gets the token_requests of this V1CSIDriverSpec. # noqa: E501 - - tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": { \"\": { \"token\": , \"expirationTimestamp\": , }, ... } Note: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically. # noqa: E501 - - :return: The token_requests of this V1CSIDriverSpec. # noqa: E501 - :rtype: list[StorageV1TokenRequest] - """ - return self._token_requests - - @token_requests.setter - def token_requests(self, token_requests): - """Sets the token_requests of this V1CSIDriverSpec. - - tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": { \"\": { \"token\": , \"expirationTimestamp\": , }, ... } Note: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically. # noqa: E501 - - :param token_requests: The token_requests of this V1CSIDriverSpec. # noqa: E501 - :type: list[StorageV1TokenRequest] - """ - - self._token_requests = token_requests - - @property - def volume_lifecycle_modes(self): - """Gets the volume_lifecycle_modes of this V1CSIDriverSpec. # noqa: E501 - - volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is \"Persistent\", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is \"Ephemeral\". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta. This field is immutable. # noqa: E501 - - :return: The volume_lifecycle_modes of this V1CSIDriverSpec. # noqa: E501 - :rtype: list[str] - """ - return self._volume_lifecycle_modes - - @volume_lifecycle_modes.setter - def volume_lifecycle_modes(self, volume_lifecycle_modes): - """Sets the volume_lifecycle_modes of this V1CSIDriverSpec. - - volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is \"Persistent\", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism. The other mode is \"Ephemeral\". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume. For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future. This field is beta. This field is immutable. # noqa: E501 - - :param volume_lifecycle_modes: The volume_lifecycle_modes of this V1CSIDriverSpec. # noqa: E501 - :type: list[str] - """ - - self._volume_lifecycle_modes = volume_lifecycle_modes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIDriverSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIDriverSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node.py deleted file mode 100644 index 57f2e54..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSINode(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1CSINodeSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1CSINode - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1CSINode. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSINode. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSINode. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSINode. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CSINode. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSINode. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSINode. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSINode. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CSINode. # noqa: E501 - - - :return: The metadata of this V1CSINode. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSINode. - - - :param metadata: The metadata of this V1CSINode. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1CSINode. # noqa: E501 - - - :return: The spec of this V1CSINode. # noqa: E501 - :rtype: V1CSINodeSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1CSINode. - - - :param spec: The spec of this V1CSINode. # noqa: E501 - :type: V1CSINodeSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSINode): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSINode): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_driver.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_driver.py deleted file mode 100644 index dcf7f65..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_driver.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSINodeDriver(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allocatable': 'V1VolumeNodeResources', - 'name': 'str', - 'node_id': 'str', - 'topology_keys': 'list[str]' - } - - attribute_map = { - 'allocatable': 'allocatable', - 'name': 'name', - 'node_id': 'nodeID', - 'topology_keys': 'topologyKeys' - } - - def __init__(self, allocatable=None, name=None, node_id=None, topology_keys=None, local_vars_configuration=None): # noqa: E501 - """V1CSINodeDriver - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allocatable = None - self._name = None - self._node_id = None - self._topology_keys = None - self.discriminator = None - - if allocatable is not None: - self.allocatable = allocatable - self.name = name - self.node_id = node_id - if topology_keys is not None: - self.topology_keys = topology_keys - - @property - def allocatable(self): - """Gets the allocatable of this V1CSINodeDriver. # noqa: E501 - - - :return: The allocatable of this V1CSINodeDriver. # noqa: E501 - :rtype: V1VolumeNodeResources - """ - return self._allocatable - - @allocatable.setter - def allocatable(self, allocatable): - """Sets the allocatable of this V1CSINodeDriver. - - - :param allocatable: The allocatable of this V1CSINodeDriver. # noqa: E501 - :type: V1VolumeNodeResources - """ - - self._allocatable = allocatable - - @property - def name(self): - """Gets the name of this V1CSINodeDriver. # noqa: E501 - - name represents the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver. # noqa: E501 - - :return: The name of this V1CSINodeDriver. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1CSINodeDriver. - - name represents the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver. # noqa: E501 - - :param name: The name of this V1CSINodeDriver. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def node_id(self): - """Gets the node_id of this V1CSINodeDriver. # noqa: E501 - - nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as \"node1\", but the storage system may refer to the same node as \"nodeA\". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. \"nodeA\" instead of \"node1\". This field is required. # noqa: E501 - - :return: The node_id of this V1CSINodeDriver. # noqa: E501 - :rtype: str - """ - return self._node_id - - @node_id.setter - def node_id(self, node_id): - """Sets the node_id of this V1CSINodeDriver. - - nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as \"node1\", but the storage system may refer to the same node as \"nodeA\". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. \"nodeA\" instead of \"node1\". This field is required. # noqa: E501 - - :param node_id: The node_id of this V1CSINodeDriver. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and node_id is None: # noqa: E501 - raise ValueError("Invalid value for `node_id`, must not be `None`") # noqa: E501 - - self._node_id = node_id - - @property - def topology_keys(self): - """Gets the topology_keys of this V1CSINodeDriver. # noqa: E501 - - topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. \"company.com/zone\", \"company.com/region\"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology. # noqa: E501 - - :return: The topology_keys of this V1CSINodeDriver. # noqa: E501 - :rtype: list[str] - """ - return self._topology_keys - - @topology_keys.setter - def topology_keys(self, topology_keys): - """Sets the topology_keys of this V1CSINodeDriver. - - topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. \"company.com/zone\", \"company.com/region\"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology. # noqa: E501 - - :param topology_keys: The topology_keys of this V1CSINodeDriver. # noqa: E501 - :type: list[str] - """ - - self._topology_keys = topology_keys - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSINodeDriver): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSINodeDriver): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_list.py deleted file mode 100644 index fa94801..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSINodeList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CSINode]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CSINodeList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CSINodeList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSINodeList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSINodeList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSINodeList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CSINodeList. # noqa: E501 - - items is the list of CSINode # noqa: E501 - - :return: The items of this V1CSINodeList. # noqa: E501 - :rtype: list[V1CSINode] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CSINodeList. - - items is the list of CSINode # noqa: E501 - - :param items: The items of this V1CSINodeList. # noqa: E501 - :type: list[V1CSINode] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CSINodeList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSINodeList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSINodeList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSINodeList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CSINodeList. # noqa: E501 - - - :return: The metadata of this V1CSINodeList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSINodeList. - - - :param metadata: The metadata of this V1CSINodeList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSINodeList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSINodeList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_spec.py deleted file mode 100644 index d84ff7f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_node_spec.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSINodeSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'drivers': 'list[V1CSINodeDriver]' - } - - attribute_map = { - 'drivers': 'drivers' - } - - def __init__(self, drivers=None, local_vars_configuration=None): # noqa: E501 - """V1CSINodeSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._drivers = None - self.discriminator = None - - self.drivers = drivers - - @property - def drivers(self): - """Gets the drivers of this V1CSINodeSpec. # noqa: E501 - - drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty. # noqa: E501 - - :return: The drivers of this V1CSINodeSpec. # noqa: E501 - :rtype: list[V1CSINodeDriver] - """ - return self._drivers - - @drivers.setter - def drivers(self, drivers): - """Sets the drivers of this V1CSINodeSpec. - - drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty. # noqa: E501 - - :param drivers: The drivers of this V1CSINodeSpec. # noqa: E501 - :type: list[V1CSINodeDriver] - """ - if self.local_vars_configuration.client_side_validation and drivers is None: # noqa: E501 - raise ValueError("Invalid value for `drivers`, must not be `None`") # noqa: E501 - - self._drivers = drivers - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSINodeSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSINodeSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_persistent_volume_source.py deleted file mode 100644 index c3b0ecd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_persistent_volume_source.py +++ /dev/null @@ -1,366 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'controller_expand_secret_ref': 'V1SecretReference', - 'controller_publish_secret_ref': 'V1SecretReference', - 'driver': 'str', - 'fs_type': 'str', - 'node_expand_secret_ref': 'V1SecretReference', - 'node_publish_secret_ref': 'V1SecretReference', - 'node_stage_secret_ref': 'V1SecretReference', - 'read_only': 'bool', - 'volume_attributes': 'dict(str, str)', - 'volume_handle': 'str' - } - - attribute_map = { - 'controller_expand_secret_ref': 'controllerExpandSecretRef', - 'controller_publish_secret_ref': 'controllerPublishSecretRef', - 'driver': 'driver', - 'fs_type': 'fsType', - 'node_expand_secret_ref': 'nodeExpandSecretRef', - 'node_publish_secret_ref': 'nodePublishSecretRef', - 'node_stage_secret_ref': 'nodeStageSecretRef', - 'read_only': 'readOnly', - 'volume_attributes': 'volumeAttributes', - 'volume_handle': 'volumeHandle' - } - - def __init__(self, controller_expand_secret_ref=None, controller_publish_secret_ref=None, driver=None, fs_type=None, node_expand_secret_ref=None, node_publish_secret_ref=None, node_stage_secret_ref=None, read_only=None, volume_attributes=None, volume_handle=None, local_vars_configuration=None): # noqa: E501 - """V1CSIPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._controller_expand_secret_ref = None - self._controller_publish_secret_ref = None - self._driver = None - self._fs_type = None - self._node_expand_secret_ref = None - self._node_publish_secret_ref = None - self._node_stage_secret_ref = None - self._read_only = None - self._volume_attributes = None - self._volume_handle = None - self.discriminator = None - - if controller_expand_secret_ref is not None: - self.controller_expand_secret_ref = controller_expand_secret_ref - if controller_publish_secret_ref is not None: - self.controller_publish_secret_ref = controller_publish_secret_ref - self.driver = driver - if fs_type is not None: - self.fs_type = fs_type - if node_expand_secret_ref is not None: - self.node_expand_secret_ref = node_expand_secret_ref - if node_publish_secret_ref is not None: - self.node_publish_secret_ref = node_publish_secret_ref - if node_stage_secret_ref is not None: - self.node_stage_secret_ref = node_stage_secret_ref - if read_only is not None: - self.read_only = read_only - if volume_attributes is not None: - self.volume_attributes = volume_attributes - self.volume_handle = volume_handle - - @property - def controller_expand_secret_ref(self): - """Gets the controller_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - - - :return: The controller_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._controller_expand_secret_ref - - @controller_expand_secret_ref.setter - def controller_expand_secret_ref(self, controller_expand_secret_ref): - """Sets the controller_expand_secret_ref of this V1CSIPersistentVolumeSource. - - - :param controller_expand_secret_ref: The controller_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._controller_expand_secret_ref = controller_expand_secret_ref - - @property - def controller_publish_secret_ref(self): - """Gets the controller_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - - - :return: The controller_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._controller_publish_secret_ref - - @controller_publish_secret_ref.setter - def controller_publish_secret_ref(self, controller_publish_secret_ref): - """Sets the controller_publish_secret_ref of this V1CSIPersistentVolumeSource. - - - :param controller_publish_secret_ref: The controller_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._controller_publish_secret_ref = controller_publish_secret_ref - - @property - def driver(self): - """Gets the driver of this V1CSIPersistentVolumeSource. # noqa: E501 - - driver is the name of the driver to use for this volume. Required. # noqa: E501 - - :return: The driver of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._driver - - @driver.setter - def driver(self, driver): - """Sets the driver of this V1CSIPersistentVolumeSource. - - driver is the name of the driver to use for this volume. Required. # noqa: E501 - - :param driver: The driver of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver is None: # noqa: E501 - raise ValueError("Invalid value for `driver`, must not be `None`") # noqa: E501 - - self._driver = driver - - @property - def fs_type(self): - """Gets the fs_type of this V1CSIPersistentVolumeSource. # noqa: E501 - - fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". # noqa: E501 - - :return: The fs_type of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1CSIPersistentVolumeSource. - - fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". # noqa: E501 - - :param fs_type: The fs_type of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def node_expand_secret_ref(self): - """Gets the node_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - - - :return: The node_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._node_expand_secret_ref - - @node_expand_secret_ref.setter - def node_expand_secret_ref(self, node_expand_secret_ref): - """Sets the node_expand_secret_ref of this V1CSIPersistentVolumeSource. - - - :param node_expand_secret_ref: The node_expand_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._node_expand_secret_ref = node_expand_secret_ref - - @property - def node_publish_secret_ref(self): - """Gets the node_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - - - :return: The node_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._node_publish_secret_ref - - @node_publish_secret_ref.setter - def node_publish_secret_ref(self, node_publish_secret_ref): - """Sets the node_publish_secret_ref of this V1CSIPersistentVolumeSource. - - - :param node_publish_secret_ref: The node_publish_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._node_publish_secret_ref = node_publish_secret_ref - - @property - def node_stage_secret_ref(self): - """Gets the node_stage_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - - - :return: The node_stage_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._node_stage_secret_ref - - @node_stage_secret_ref.setter - def node_stage_secret_ref(self, node_stage_secret_ref): - """Sets the node_stage_secret_ref of this V1CSIPersistentVolumeSource. - - - :param node_stage_secret_ref: The node_stage_secret_ref of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._node_stage_secret_ref = node_stage_secret_ref - - @property - def read_only(self): - """Gets the read_only of this V1CSIPersistentVolumeSource. # noqa: E501 - - readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write). # noqa: E501 - - :return: The read_only of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CSIPersistentVolumeSource. - - readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write). # noqa: E501 - - :param read_only: The read_only of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def volume_attributes(self): - """Gets the volume_attributes of this V1CSIPersistentVolumeSource. # noqa: E501 - - volumeAttributes of the volume to publish. # noqa: E501 - - :return: The volume_attributes of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: dict(str, str) - """ - return self._volume_attributes - - @volume_attributes.setter - def volume_attributes(self, volume_attributes): - """Sets the volume_attributes of this V1CSIPersistentVolumeSource. - - volumeAttributes of the volume to publish. # noqa: E501 - - :param volume_attributes: The volume_attributes of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: dict(str, str) - """ - - self._volume_attributes = volume_attributes - - @property - def volume_handle(self): - """Gets the volume_handle of this V1CSIPersistentVolumeSource. # noqa: E501 - - volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required. # noqa: E501 - - :return: The volume_handle of this V1CSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_handle - - @volume_handle.setter - def volume_handle(self, volume_handle): - """Sets the volume_handle of this V1CSIPersistentVolumeSource. - - volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required. # noqa: E501 - - :param volume_handle: The volume_handle of this V1CSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_handle is None: # noqa: E501 - raise ValueError("Invalid value for `volume_handle`, must not be `None`") # noqa: E501 - - self._volume_handle = volume_handle - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity.py deleted file mode 100644 index e85f980..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity.py +++ /dev/null @@ -1,287 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIStorageCapacity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'capacity': 'str', - 'kind': 'str', - 'maximum_volume_size': 'str', - 'metadata': 'V1ObjectMeta', - 'node_topology': 'V1LabelSelector', - 'storage_class_name': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'capacity': 'capacity', - 'kind': 'kind', - 'maximum_volume_size': 'maximumVolumeSize', - 'metadata': 'metadata', - 'node_topology': 'nodeTopology', - 'storage_class_name': 'storageClassName' - } - - def __init__(self, api_version=None, capacity=None, kind=None, maximum_volume_size=None, metadata=None, node_topology=None, storage_class_name=None, local_vars_configuration=None): # noqa: E501 - """V1CSIStorageCapacity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._capacity = None - self._kind = None - self._maximum_volume_size = None - self._metadata = None - self._node_topology = None - self._storage_class_name = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if capacity is not None: - self.capacity = capacity - if kind is not None: - self.kind = kind - if maximum_volume_size is not None: - self.maximum_volume_size = maximum_volume_size - if metadata is not None: - self.metadata = metadata - if node_topology is not None: - self.node_topology = node_topology - self.storage_class_name = storage_class_name - - @property - def api_version(self): - """Gets the api_version of this V1CSIStorageCapacity. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSIStorageCapacity. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSIStorageCapacity. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSIStorageCapacity. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def capacity(self): - """Gets the capacity of this V1CSIStorageCapacity. # noqa: E501 - - capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. The semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable. # noqa: E501 - - :return: The capacity of this V1CSIStorageCapacity. # noqa: E501 - :rtype: str - """ - return self._capacity - - @capacity.setter - def capacity(self, capacity): - """Sets the capacity of this V1CSIStorageCapacity. - - capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. The semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable. # noqa: E501 - - :param capacity: The capacity of this V1CSIStorageCapacity. # noqa: E501 - :type: str - """ - - self._capacity = capacity - - @property - def kind(self): - """Gets the kind of this V1CSIStorageCapacity. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSIStorageCapacity. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSIStorageCapacity. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSIStorageCapacity. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def maximum_volume_size(self): - """Gets the maximum_volume_size of this V1CSIStorageCapacity. # noqa: E501 - - maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. This is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim. # noqa: E501 - - :return: The maximum_volume_size of this V1CSIStorageCapacity. # noqa: E501 - :rtype: str - """ - return self._maximum_volume_size - - @maximum_volume_size.setter - def maximum_volume_size(self, maximum_volume_size): - """Sets the maximum_volume_size of this V1CSIStorageCapacity. - - maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields. This is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim. # noqa: E501 - - :param maximum_volume_size: The maximum_volume_size of this V1CSIStorageCapacity. # noqa: E501 - :type: str - """ - - self._maximum_volume_size = maximum_volume_size - - @property - def metadata(self): - """Gets the metadata of this V1CSIStorageCapacity. # noqa: E501 - - - :return: The metadata of this V1CSIStorageCapacity. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSIStorageCapacity. - - - :param metadata: The metadata of this V1CSIStorageCapacity. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def node_topology(self): - """Gets the node_topology of this V1CSIStorageCapacity. # noqa: E501 - - - :return: The node_topology of this V1CSIStorageCapacity. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._node_topology - - @node_topology.setter - def node_topology(self, node_topology): - """Sets the node_topology of this V1CSIStorageCapacity. - - - :param node_topology: The node_topology of this V1CSIStorageCapacity. # noqa: E501 - :type: V1LabelSelector - """ - - self._node_topology = node_topology - - @property - def storage_class_name(self): - """Gets the storage_class_name of this V1CSIStorageCapacity. # noqa: E501 - - storageClassName represents the name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable. # noqa: E501 - - :return: The storage_class_name of this V1CSIStorageCapacity. # noqa: E501 - :rtype: str - """ - return self._storage_class_name - - @storage_class_name.setter - def storage_class_name(self, storage_class_name): - """Sets the storage_class_name of this V1CSIStorageCapacity. - - storageClassName represents the name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable. # noqa: E501 - - :param storage_class_name: The storage_class_name of this V1CSIStorageCapacity. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and storage_class_name is None: # noqa: E501 - raise ValueError("Invalid value for `storage_class_name`, must not be `None`") # noqa: E501 - - self._storage_class_name = storage_class_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIStorageCapacity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIStorageCapacity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity_list.py deleted file mode 100644 index 0ffd39c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_storage_capacity_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIStorageCapacityList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CSIStorageCapacity]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CSIStorageCapacityList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CSIStorageCapacityList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CSIStorageCapacityList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CSIStorageCapacityList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CSIStorageCapacityList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CSIStorageCapacityList. # noqa: E501 - - items is the list of CSIStorageCapacity objects. # noqa: E501 - - :return: The items of this V1CSIStorageCapacityList. # noqa: E501 - :rtype: list[V1CSIStorageCapacity] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CSIStorageCapacityList. - - items is the list of CSIStorageCapacity objects. # noqa: E501 - - :param items: The items of this V1CSIStorageCapacityList. # noqa: E501 - :type: list[V1CSIStorageCapacity] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CSIStorageCapacityList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CSIStorageCapacityList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CSIStorageCapacityList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CSIStorageCapacityList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CSIStorageCapacityList. # noqa: E501 - - - :return: The metadata of this V1CSIStorageCapacityList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CSIStorageCapacityList. - - - :param metadata: The metadata of this V1CSIStorageCapacityList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIStorageCapacityList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIStorageCapacityList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_volume_source.py deleted file mode 100644 index e9a9737..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_csi_volume_source.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CSIVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'driver': 'str', - 'fs_type': 'str', - 'node_publish_secret_ref': 'V1LocalObjectReference', - 'read_only': 'bool', - 'volume_attributes': 'dict(str, str)' - } - - attribute_map = { - 'driver': 'driver', - 'fs_type': 'fsType', - 'node_publish_secret_ref': 'nodePublishSecretRef', - 'read_only': 'readOnly', - 'volume_attributes': 'volumeAttributes' - } - - def __init__(self, driver=None, fs_type=None, node_publish_secret_ref=None, read_only=None, volume_attributes=None, local_vars_configuration=None): # noqa: E501 - """V1CSIVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._driver = None - self._fs_type = None - self._node_publish_secret_ref = None - self._read_only = None - self._volume_attributes = None - self.discriminator = None - - self.driver = driver - if fs_type is not None: - self.fs_type = fs_type - if node_publish_secret_ref is not None: - self.node_publish_secret_ref = node_publish_secret_ref - if read_only is not None: - self.read_only = read_only - if volume_attributes is not None: - self.volume_attributes = volume_attributes - - @property - def driver(self): - """Gets the driver of this V1CSIVolumeSource. # noqa: E501 - - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. # noqa: E501 - - :return: The driver of this V1CSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._driver - - @driver.setter - def driver(self, driver): - """Sets the driver of this V1CSIVolumeSource. - - driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. # noqa: E501 - - :param driver: The driver of this V1CSIVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver is None: # noqa: E501 - raise ValueError("Invalid value for `driver`, must not be `None`") # noqa: E501 - - self._driver = driver - - @property - def fs_type(self): - """Gets the fs_type of this V1CSIVolumeSource. # noqa: E501 - - fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. # noqa: E501 - - :return: The fs_type of this V1CSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1CSIVolumeSource. - - fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. # noqa: E501 - - :param fs_type: The fs_type of this V1CSIVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def node_publish_secret_ref(self): - """Gets the node_publish_secret_ref of this V1CSIVolumeSource. # noqa: E501 - - - :return: The node_publish_secret_ref of this V1CSIVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._node_publish_secret_ref - - @node_publish_secret_ref.setter - def node_publish_secret_ref(self, node_publish_secret_ref): - """Sets the node_publish_secret_ref of this V1CSIVolumeSource. - - - :param node_publish_secret_ref: The node_publish_secret_ref of this V1CSIVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._node_publish_secret_ref = node_publish_secret_ref - - @property - def read_only(self): - """Gets the read_only of this V1CSIVolumeSource. # noqa: E501 - - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). # noqa: E501 - - :return: The read_only of this V1CSIVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1CSIVolumeSource. - - readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). # noqa: E501 - - :param read_only: The read_only of this V1CSIVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def volume_attributes(self): - """Gets the volume_attributes of this V1CSIVolumeSource. # noqa: E501 - - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. # noqa: E501 - - :return: The volume_attributes of this V1CSIVolumeSource. # noqa: E501 - :rtype: dict(str, str) - """ - return self._volume_attributes - - @volume_attributes.setter - def volume_attributes(self, volume_attributes): - """Sets the volume_attributes of this V1CSIVolumeSource. - - volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. # noqa: E501 - - :param volume_attributes: The volume_attributes of this V1CSIVolumeSource. # noqa: E501 - :type: dict(str, str) - """ - - self._volume_attributes = volume_attributes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CSIVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CSIVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_column_definition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_column_definition.py deleted file mode 100644 index c997cba..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_column_definition.py +++ /dev/null @@ -1,265 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceColumnDefinition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'description': 'str', - 'format': 'str', - 'json_path': 'str', - 'name': 'str', - 'priority': 'int', - 'type': 'str' - } - - attribute_map = { - 'description': 'description', - 'format': 'format', - 'json_path': 'jsonPath', - 'name': 'name', - 'priority': 'priority', - 'type': 'type' - } - - def __init__(self, description=None, format=None, json_path=None, name=None, priority=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceColumnDefinition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._description = None - self._format = None - self._json_path = None - self._name = None - self._priority = None - self._type = None - self.discriminator = None - - if description is not None: - self.description = description - if format is not None: - self.format = format - self.json_path = json_path - self.name = name - if priority is not None: - self.priority = priority - self.type = type - - @property - def description(self): - """Gets the description of this V1CustomResourceColumnDefinition. # noqa: E501 - - description is a human readable description of this column. # noqa: E501 - - :return: The description of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: str - """ - return self._description - - @description.setter - def description(self, description): - """Sets the description of this V1CustomResourceColumnDefinition. - - description is a human readable description of this column. # noqa: E501 - - :param description: The description of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: str - """ - - self._description = description - - @property - def format(self): - """Gets the format of this V1CustomResourceColumnDefinition. # noqa: E501 - - format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. # noqa: E501 - - :return: The format of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: str - """ - return self._format - - @format.setter - def format(self, format): - """Sets the format of this V1CustomResourceColumnDefinition. - - format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. # noqa: E501 - - :param format: The format of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: str - """ - - self._format = format - - @property - def json_path(self): - """Gets the json_path of this V1CustomResourceColumnDefinition. # noqa: E501 - - jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column. # noqa: E501 - - :return: The json_path of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: str - """ - return self._json_path - - @json_path.setter - def json_path(self, json_path): - """Sets the json_path of this V1CustomResourceColumnDefinition. - - jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column. # noqa: E501 - - :param json_path: The json_path of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and json_path is None: # noqa: E501 - raise ValueError("Invalid value for `json_path`, must not be `None`") # noqa: E501 - - self._json_path = json_path - - @property - def name(self): - """Gets the name of this V1CustomResourceColumnDefinition. # noqa: E501 - - name is a human readable name for the column. # noqa: E501 - - :return: The name of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1CustomResourceColumnDefinition. - - name is a human readable name for the column. # noqa: E501 - - :param name: The name of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def priority(self): - """Gets the priority of this V1CustomResourceColumnDefinition. # noqa: E501 - - priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0. # noqa: E501 - - :return: The priority of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: int - """ - return self._priority - - @priority.setter - def priority(self, priority): - """Sets the priority of this V1CustomResourceColumnDefinition. - - priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0. # noqa: E501 - - :param priority: The priority of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: int - """ - - self._priority = priority - - @property - def type(self): - """Gets the type of this V1CustomResourceColumnDefinition. # noqa: E501 - - type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. # noqa: E501 - - :return: The type of this V1CustomResourceColumnDefinition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1CustomResourceColumnDefinition. - - type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details. # noqa: E501 - - :param type: The type of this V1CustomResourceColumnDefinition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceColumnDefinition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceColumnDefinition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_conversion.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_conversion.py deleted file mode 100644 index 21a3d85..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_conversion.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceConversion(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'strategy': 'str', - 'webhook': 'V1WebhookConversion' - } - - attribute_map = { - 'strategy': 'strategy', - 'webhook': 'webhook' - } - - def __init__(self, strategy=None, webhook=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceConversion - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._strategy = None - self._webhook = None - self.discriminator = None - - self.strategy = strategy - if webhook is not None: - self.webhook = webhook - - @property - def strategy(self): - """Gets the strategy of this V1CustomResourceConversion. # noqa: E501 - - strategy specifies how custom resources are converted between versions. Allowed values are: - `\"None\"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `\"Webhook\"`: API Server will call to an external webhook to do the conversion. Additional information is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set. # noqa: E501 - - :return: The strategy of this V1CustomResourceConversion. # noqa: E501 - :rtype: str - """ - return self._strategy - - @strategy.setter - def strategy(self, strategy): - """Sets the strategy of this V1CustomResourceConversion. - - strategy specifies how custom resources are converted between versions. Allowed values are: - `\"None\"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `\"Webhook\"`: API Server will call to an external webhook to do the conversion. Additional information is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set. # noqa: E501 - - :param strategy: The strategy of this V1CustomResourceConversion. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and strategy is None: # noqa: E501 - raise ValueError("Invalid value for `strategy`, must not be `None`") # noqa: E501 - - self._strategy = strategy - - @property - def webhook(self): - """Gets the webhook of this V1CustomResourceConversion. # noqa: E501 - - - :return: The webhook of this V1CustomResourceConversion. # noqa: E501 - :rtype: V1WebhookConversion - """ - return self._webhook - - @webhook.setter - def webhook(self, webhook): - """Sets the webhook of this V1CustomResourceConversion. - - - :param webhook: The webhook of this V1CustomResourceConversion. # noqa: E501 - :type: V1WebhookConversion - """ - - self._webhook = webhook - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceConversion): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceConversion): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition.py deleted file mode 100644 index 1057a2d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1CustomResourceDefinitionSpec', - 'status': 'V1CustomResourceDefinitionStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1CustomResourceDefinition. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CustomResourceDefinition. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CustomResourceDefinition. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CustomResourceDefinition. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1CustomResourceDefinition. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CustomResourceDefinition. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CustomResourceDefinition. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CustomResourceDefinition. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CustomResourceDefinition. # noqa: E501 - - - :return: The metadata of this V1CustomResourceDefinition. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CustomResourceDefinition. - - - :param metadata: The metadata of this V1CustomResourceDefinition. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1CustomResourceDefinition. # noqa: E501 - - - :return: The spec of this V1CustomResourceDefinition. # noqa: E501 - :rtype: V1CustomResourceDefinitionSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1CustomResourceDefinition. - - - :param spec: The spec of this V1CustomResourceDefinition. # noqa: E501 - :type: V1CustomResourceDefinitionSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1CustomResourceDefinition. # noqa: E501 - - - :return: The status of this V1CustomResourceDefinition. # noqa: E501 - :rtype: V1CustomResourceDefinitionStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CustomResourceDefinition. - - - :param status: The status of this V1CustomResourceDefinition. # noqa: E501 - :type: V1CustomResourceDefinitionStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_condition.py deleted file mode 100644 index 2cdeaa7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1CustomResourceDefinitionCondition. # noqa: E501 - - lastTransitionTime last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1CustomResourceDefinitionCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1CustomResourceDefinitionCondition. - - lastTransitionTime last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1CustomResourceDefinitionCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1CustomResourceDefinitionCondition. # noqa: E501 - - message is a human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1CustomResourceDefinitionCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1CustomResourceDefinitionCondition. - - message is a human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1CustomResourceDefinitionCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1CustomResourceDefinitionCondition. # noqa: E501 - - reason is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1CustomResourceDefinitionCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1CustomResourceDefinitionCondition. - - reason is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1CustomResourceDefinitionCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1CustomResourceDefinitionCondition. # noqa: E501 - - status is the status of the condition. Can be True, False, Unknown. # noqa: E501 - - :return: The status of this V1CustomResourceDefinitionCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CustomResourceDefinitionCondition. - - status is the status of the condition. Can be True, False, Unknown. # noqa: E501 - - :param status: The status of this V1CustomResourceDefinitionCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1CustomResourceDefinitionCondition. # noqa: E501 - - type is the type of the condition. Types include Established, NamesAccepted and Terminating. # noqa: E501 - - :return: The type of this V1CustomResourceDefinitionCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1CustomResourceDefinitionCondition. - - type is the type of the condition. Types include Established, NamesAccepted and Terminating. # noqa: E501 - - :param type: The type of this V1CustomResourceDefinitionCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_list.py deleted file mode 100644 index 7ddc2a8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1CustomResourceDefinition]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1CustomResourceDefinitionList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1CustomResourceDefinitionList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1CustomResourceDefinitionList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1CustomResourceDefinitionList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1CustomResourceDefinitionList. # noqa: E501 - - items list individual CustomResourceDefinition objects # noqa: E501 - - :return: The items of this V1CustomResourceDefinitionList. # noqa: E501 - :rtype: list[V1CustomResourceDefinition] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1CustomResourceDefinitionList. - - items list individual CustomResourceDefinition objects # noqa: E501 - - :param items: The items of this V1CustomResourceDefinitionList. # noqa: E501 - :type: list[V1CustomResourceDefinition] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1CustomResourceDefinitionList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1CustomResourceDefinitionList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CustomResourceDefinitionList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1CustomResourceDefinitionList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1CustomResourceDefinitionList. # noqa: E501 - - - :return: The metadata of this V1CustomResourceDefinitionList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1CustomResourceDefinitionList. - - - :param metadata: The metadata of this V1CustomResourceDefinitionList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_names.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_names.py deleted file mode 100644 index ba1d51e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_names.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionNames(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'categories': 'list[str]', - 'kind': 'str', - 'list_kind': 'str', - 'plural': 'str', - 'short_names': 'list[str]', - 'singular': 'str' - } - - attribute_map = { - 'categories': 'categories', - 'kind': 'kind', - 'list_kind': 'listKind', - 'plural': 'plural', - 'short_names': 'shortNames', - 'singular': 'singular' - } - - def __init__(self, categories=None, kind=None, list_kind=None, plural=None, short_names=None, singular=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionNames - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._categories = None - self._kind = None - self._list_kind = None - self._plural = None - self._short_names = None - self._singular = None - self.discriminator = None - - if categories is not None: - self.categories = categories - self.kind = kind - if list_kind is not None: - self.list_kind = list_kind - self.plural = plural - if short_names is not None: - self.short_names = short_names - if singular is not None: - self.singular = singular - - @property - def categories(self): - """Gets the categories of this V1CustomResourceDefinitionNames. # noqa: E501 - - categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`. # noqa: E501 - - :return: The categories of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: list[str] - """ - return self._categories - - @categories.setter - def categories(self, categories): - """Sets the categories of this V1CustomResourceDefinitionNames. - - categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`. # noqa: E501 - - :param categories: The categories of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: list[str] - """ - - self._categories = categories - - @property - def kind(self): - """Gets the kind of this V1CustomResourceDefinitionNames. # noqa: E501 - - kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls. # noqa: E501 - - :return: The kind of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1CustomResourceDefinitionNames. - - kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls. # noqa: E501 - - :param kind: The kind of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def list_kind(self): - """Gets the list_kind of this V1CustomResourceDefinitionNames. # noqa: E501 - - listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\". # noqa: E501 - - :return: The list_kind of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: str - """ - return self._list_kind - - @list_kind.setter - def list_kind(self, list_kind): - """Sets the list_kind of this V1CustomResourceDefinitionNames. - - listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\". # noqa: E501 - - :param list_kind: The list_kind of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: str - """ - - self._list_kind = list_kind - - @property - def plural(self): - """Gets the plural of this V1CustomResourceDefinitionNames. # noqa: E501 - - plural is the plural name of the resource to serve. The custom resources are served under `/apis///.../`. Must match the name of the CustomResourceDefinition (in the form `.`). Must be all lowercase. # noqa: E501 - - :return: The plural of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: str - """ - return self._plural - - @plural.setter - def plural(self, plural): - """Sets the plural of this V1CustomResourceDefinitionNames. - - plural is the plural name of the resource to serve. The custom resources are served under `/apis///.../`. Must match the name of the CustomResourceDefinition (in the form `.`). Must be all lowercase. # noqa: E501 - - :param plural: The plural of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and plural is None: # noqa: E501 - raise ValueError("Invalid value for `plural`, must not be `None`") # noqa: E501 - - self._plural = plural - - @property - def short_names(self): - """Gets the short_names of this V1CustomResourceDefinitionNames. # noqa: E501 - - shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get `. It must be all lowercase. # noqa: E501 - - :return: The short_names of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: list[str] - """ - return self._short_names - - @short_names.setter - def short_names(self, short_names): - """Sets the short_names of this V1CustomResourceDefinitionNames. - - shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get `. It must be all lowercase. # noqa: E501 - - :param short_names: The short_names of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: list[str] - """ - - self._short_names = short_names - - @property - def singular(self): - """Gets the singular of this V1CustomResourceDefinitionNames. # noqa: E501 - - singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`. # noqa: E501 - - :return: The singular of this V1CustomResourceDefinitionNames. # noqa: E501 - :rtype: str - """ - return self._singular - - @singular.setter - def singular(self, singular): - """Sets the singular of this V1CustomResourceDefinitionNames. - - singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`. # noqa: E501 - - :param singular: The singular of this V1CustomResourceDefinitionNames. # noqa: E501 - :type: str - """ - - self._singular = singular - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionNames): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionNames): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_spec.py deleted file mode 100644 index 103e10a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_spec.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conversion': 'V1CustomResourceConversion', - 'group': 'str', - 'names': 'V1CustomResourceDefinitionNames', - 'preserve_unknown_fields': 'bool', - 'scope': 'str', - 'versions': 'list[V1CustomResourceDefinitionVersion]' - } - - attribute_map = { - 'conversion': 'conversion', - 'group': 'group', - 'names': 'names', - 'preserve_unknown_fields': 'preserveUnknownFields', - 'scope': 'scope', - 'versions': 'versions' - } - - def __init__(self, conversion=None, group=None, names=None, preserve_unknown_fields=None, scope=None, versions=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conversion = None - self._group = None - self._names = None - self._preserve_unknown_fields = None - self._scope = None - self._versions = None - self.discriminator = None - - if conversion is not None: - self.conversion = conversion - self.group = group - self.names = names - if preserve_unknown_fields is not None: - self.preserve_unknown_fields = preserve_unknown_fields - self.scope = scope - self.versions = versions - - @property - def conversion(self): - """Gets the conversion of this V1CustomResourceDefinitionSpec. # noqa: E501 - - - :return: The conversion of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: V1CustomResourceConversion - """ - return self._conversion - - @conversion.setter - def conversion(self, conversion): - """Sets the conversion of this V1CustomResourceDefinitionSpec. - - - :param conversion: The conversion of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: V1CustomResourceConversion - """ - - self._conversion = conversion - - @property - def group(self): - """Gets the group of this V1CustomResourceDefinitionSpec. # noqa: E501 - - group is the API group of the defined custom resource. The custom resources are served under `/apis//...`. Must match the name of the CustomResourceDefinition (in the form `.`). # noqa: E501 - - :return: The group of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1CustomResourceDefinitionSpec. - - group is the API group of the defined custom resource. The custom resources are served under `/apis//...`. Must match the name of the CustomResourceDefinition (in the form `.`). # noqa: E501 - - :param group: The group of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and group is None: # noqa: E501 - raise ValueError("Invalid value for `group`, must not be `None`") # noqa: E501 - - self._group = group - - @property - def names(self): - """Gets the names of this V1CustomResourceDefinitionSpec. # noqa: E501 - - - :return: The names of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: V1CustomResourceDefinitionNames - """ - return self._names - - @names.setter - def names(self, names): - """Sets the names of this V1CustomResourceDefinitionSpec. - - - :param names: The names of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: V1CustomResourceDefinitionNames - """ - if self.local_vars_configuration.client_side_validation and names is None: # noqa: E501 - raise ValueError("Invalid value for `names`, must not be `None`") # noqa: E501 - - self._names = names - - @property - def preserve_unknown_fields(self): - """Gets the preserve_unknown_fields of this V1CustomResourceDefinitionSpec. # noqa: E501 - - preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details. # noqa: E501 - - :return: The preserve_unknown_fields of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: bool - """ - return self._preserve_unknown_fields - - @preserve_unknown_fields.setter - def preserve_unknown_fields(self, preserve_unknown_fields): - """Sets the preserve_unknown_fields of this V1CustomResourceDefinitionSpec. - - preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details. # noqa: E501 - - :param preserve_unknown_fields: The preserve_unknown_fields of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: bool - """ - - self._preserve_unknown_fields = preserve_unknown_fields - - @property - def scope(self): - """Gets the scope of this V1CustomResourceDefinitionSpec. # noqa: E501 - - scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`. # noqa: E501 - - :return: The scope of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: str - """ - return self._scope - - @scope.setter - def scope(self, scope): - """Sets the scope of this V1CustomResourceDefinitionSpec. - - scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`. # noqa: E501 - - :param scope: The scope of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and scope is None: # noqa: E501 - raise ValueError("Invalid value for `scope`, must not be `None`") # noqa: E501 - - self._scope = scope - - @property - def versions(self): - """Gets the versions of this V1CustomResourceDefinitionSpec. # noqa: E501 - - versions is the list of all API versions of the defined custom resource. Version names are used to compute the order in which served versions are listed in API discovery. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. # noqa: E501 - - :return: The versions of this V1CustomResourceDefinitionSpec. # noqa: E501 - :rtype: list[V1CustomResourceDefinitionVersion] - """ - return self._versions - - @versions.setter - def versions(self, versions): - """Sets the versions of this V1CustomResourceDefinitionSpec. - - versions is the list of all API versions of the defined custom resource. Version names are used to compute the order in which served versions are listed in API discovery. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. # noqa: E501 - - :param versions: The versions of this V1CustomResourceDefinitionSpec. # noqa: E501 - :type: list[V1CustomResourceDefinitionVersion] - """ - if self.local_vars_configuration.client_side_validation and versions is None: # noqa: E501 - raise ValueError("Invalid value for `versions`, must not be `None`") # noqa: E501 - - self._versions = versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_status.py deleted file mode 100644 index 8a4266f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_status.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'accepted_names': 'V1CustomResourceDefinitionNames', - 'conditions': 'list[V1CustomResourceDefinitionCondition]', - 'stored_versions': 'list[str]' - } - - attribute_map = { - 'accepted_names': 'acceptedNames', - 'conditions': 'conditions', - 'stored_versions': 'storedVersions' - } - - def __init__(self, accepted_names=None, conditions=None, stored_versions=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._accepted_names = None - self._conditions = None - self._stored_versions = None - self.discriminator = None - - if accepted_names is not None: - self.accepted_names = accepted_names - if conditions is not None: - self.conditions = conditions - if stored_versions is not None: - self.stored_versions = stored_versions - - @property - def accepted_names(self): - """Gets the accepted_names of this V1CustomResourceDefinitionStatus. # noqa: E501 - - - :return: The accepted_names of this V1CustomResourceDefinitionStatus. # noqa: E501 - :rtype: V1CustomResourceDefinitionNames - """ - return self._accepted_names - - @accepted_names.setter - def accepted_names(self, accepted_names): - """Sets the accepted_names of this V1CustomResourceDefinitionStatus. - - - :param accepted_names: The accepted_names of this V1CustomResourceDefinitionStatus. # noqa: E501 - :type: V1CustomResourceDefinitionNames - """ - - self._accepted_names = accepted_names - - @property - def conditions(self): - """Gets the conditions of this V1CustomResourceDefinitionStatus. # noqa: E501 - - conditions indicate state for particular aspects of a CustomResourceDefinition # noqa: E501 - - :return: The conditions of this V1CustomResourceDefinitionStatus. # noqa: E501 - :rtype: list[V1CustomResourceDefinitionCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1CustomResourceDefinitionStatus. - - conditions indicate state for particular aspects of a CustomResourceDefinition # noqa: E501 - - :param conditions: The conditions of this V1CustomResourceDefinitionStatus. # noqa: E501 - :type: list[V1CustomResourceDefinitionCondition] - """ - - self._conditions = conditions - - @property - def stored_versions(self): - """Gets the stored_versions of this V1CustomResourceDefinitionStatus. # noqa: E501 - - storedVersions lists all versions of CustomResources that were ever persisted. Tracking these versions allows a migration path for stored versions in etcd. The field is mutable so a migration controller can finish a migration to another version (ensuring no old objects are left in storage), and then remove the rest of the versions from this list. Versions may not be removed from `spec.versions` while they exist in this list. # noqa: E501 - - :return: The stored_versions of this V1CustomResourceDefinitionStatus. # noqa: E501 - :rtype: list[str] - """ - return self._stored_versions - - @stored_versions.setter - def stored_versions(self, stored_versions): - """Sets the stored_versions of this V1CustomResourceDefinitionStatus. - - storedVersions lists all versions of CustomResources that were ever persisted. Tracking these versions allows a migration path for stored versions in etcd. The field is mutable so a migration controller can finish a migration to another version (ensuring no old objects are left in storage), and then remove the rest of the versions from this list. Versions may not be removed from `spec.versions` while they exist in this list. # noqa: E501 - - :param stored_versions: The stored_versions of this V1CustomResourceDefinitionStatus. # noqa: E501 - :type: list[str] - """ - - self._stored_versions = stored_versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_version.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_version.py deleted file mode 100644 index 9241f85..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_definition_version.py +++ /dev/null @@ -1,317 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceDefinitionVersion(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'additional_printer_columns': 'list[V1CustomResourceColumnDefinition]', - 'deprecated': 'bool', - 'deprecation_warning': 'str', - 'name': 'str', - 'schema': 'V1CustomResourceValidation', - 'served': 'bool', - 'storage': 'bool', - 'subresources': 'V1CustomResourceSubresources' - } - - attribute_map = { - 'additional_printer_columns': 'additionalPrinterColumns', - 'deprecated': 'deprecated', - 'deprecation_warning': 'deprecationWarning', - 'name': 'name', - 'schema': 'schema', - 'served': 'served', - 'storage': 'storage', - 'subresources': 'subresources' - } - - def __init__(self, additional_printer_columns=None, deprecated=None, deprecation_warning=None, name=None, schema=None, served=None, storage=None, subresources=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceDefinitionVersion - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._additional_printer_columns = None - self._deprecated = None - self._deprecation_warning = None - self._name = None - self._schema = None - self._served = None - self._storage = None - self._subresources = None - self.discriminator = None - - if additional_printer_columns is not None: - self.additional_printer_columns = additional_printer_columns - if deprecated is not None: - self.deprecated = deprecated - if deprecation_warning is not None: - self.deprecation_warning = deprecation_warning - self.name = name - if schema is not None: - self.schema = schema - self.served = served - self.storage = storage - if subresources is not None: - self.subresources = subresources - - @property - def additional_printer_columns(self): - """Gets the additional_printer_columns of this V1CustomResourceDefinitionVersion. # noqa: E501 - - additionalPrinterColumns specifies additional columns returned in Table output. See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used. # noqa: E501 - - :return: The additional_printer_columns of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: list[V1CustomResourceColumnDefinition] - """ - return self._additional_printer_columns - - @additional_printer_columns.setter - def additional_printer_columns(self, additional_printer_columns): - """Sets the additional_printer_columns of this V1CustomResourceDefinitionVersion. - - additionalPrinterColumns specifies additional columns returned in Table output. See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used. # noqa: E501 - - :param additional_printer_columns: The additional_printer_columns of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: list[V1CustomResourceColumnDefinition] - """ - - self._additional_printer_columns = additional_printer_columns - - @property - def deprecated(self): - """Gets the deprecated of this V1CustomResourceDefinitionVersion. # noqa: E501 - - deprecated indicates this version of the custom resource API is deprecated. When set to true, API requests to this version receive a warning header in the server response. Defaults to false. # noqa: E501 - - :return: The deprecated of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: bool - """ - return self._deprecated - - @deprecated.setter - def deprecated(self, deprecated): - """Sets the deprecated of this V1CustomResourceDefinitionVersion. - - deprecated indicates this version of the custom resource API is deprecated. When set to true, API requests to this version receive a warning header in the server response. Defaults to false. # noqa: E501 - - :param deprecated: The deprecated of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: bool - """ - - self._deprecated = deprecated - - @property - def deprecation_warning(self): - """Gets the deprecation_warning of this V1CustomResourceDefinitionVersion. # noqa: E501 - - deprecationWarning overrides the default warning returned to API clients. May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists. # noqa: E501 - - :return: The deprecation_warning of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: str - """ - return self._deprecation_warning - - @deprecation_warning.setter - def deprecation_warning(self, deprecation_warning): - """Sets the deprecation_warning of this V1CustomResourceDefinitionVersion. - - deprecationWarning overrides the default warning returned to API clients. May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists. # noqa: E501 - - :param deprecation_warning: The deprecation_warning of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: str - """ - - self._deprecation_warning = deprecation_warning - - @property - def name(self): - """Gets the name of this V1CustomResourceDefinitionVersion. # noqa: E501 - - name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis///...` if `served` is true. # noqa: E501 - - :return: The name of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1CustomResourceDefinitionVersion. - - name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis///...` if `served` is true. # noqa: E501 - - :param name: The name of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def schema(self): - """Gets the schema of this V1CustomResourceDefinitionVersion. # noqa: E501 - - - :return: The schema of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: V1CustomResourceValidation - """ - return self._schema - - @schema.setter - def schema(self, schema): - """Sets the schema of this V1CustomResourceDefinitionVersion. - - - :param schema: The schema of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: V1CustomResourceValidation - """ - - self._schema = schema - - @property - def served(self): - """Gets the served of this V1CustomResourceDefinitionVersion. # noqa: E501 - - served is a flag enabling/disabling this version from being served via REST APIs # noqa: E501 - - :return: The served of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: bool - """ - return self._served - - @served.setter - def served(self, served): - """Sets the served of this V1CustomResourceDefinitionVersion. - - served is a flag enabling/disabling this version from being served via REST APIs # noqa: E501 - - :param served: The served of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and served is None: # noqa: E501 - raise ValueError("Invalid value for `served`, must not be `None`") # noqa: E501 - - self._served = served - - @property - def storage(self): - """Gets the storage of this V1CustomResourceDefinitionVersion. # noqa: E501 - - storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true. # noqa: E501 - - :return: The storage of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: bool - """ - return self._storage - - @storage.setter - def storage(self, storage): - """Sets the storage of this V1CustomResourceDefinitionVersion. - - storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true. # noqa: E501 - - :param storage: The storage of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and storage is None: # noqa: E501 - raise ValueError("Invalid value for `storage`, must not be `None`") # noqa: E501 - - self._storage = storage - - @property - def subresources(self): - """Gets the subresources of this V1CustomResourceDefinitionVersion. # noqa: E501 - - - :return: The subresources of this V1CustomResourceDefinitionVersion. # noqa: E501 - :rtype: V1CustomResourceSubresources - """ - return self._subresources - - @subresources.setter - def subresources(self, subresources): - """Sets the subresources of this V1CustomResourceDefinitionVersion. - - - :param subresources: The subresources of this V1CustomResourceDefinitionVersion. # noqa: E501 - :type: V1CustomResourceSubresources - """ - - self._subresources = subresources - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceDefinitionVersion): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceDefinitionVersion): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresource_scale.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresource_scale.py deleted file mode 100644 index 586afbf..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresource_scale.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceSubresourceScale(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'label_selector_path': 'str', - 'spec_replicas_path': 'str', - 'status_replicas_path': 'str' - } - - attribute_map = { - 'label_selector_path': 'labelSelectorPath', - 'spec_replicas_path': 'specReplicasPath', - 'status_replicas_path': 'statusReplicasPath' - } - - def __init__(self, label_selector_path=None, spec_replicas_path=None, status_replicas_path=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceSubresourceScale - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._label_selector_path = None - self._spec_replicas_path = None - self._status_replicas_path = None - self.discriminator = None - - if label_selector_path is not None: - self.label_selector_path = label_selector_path - self.spec_replicas_path = spec_replicas_path - self.status_replicas_path = status_replicas_path - - @property - def label_selector_path(self): - """Gets the label_selector_path of this V1CustomResourceSubresourceScale. # noqa: E501 - - labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string. # noqa: E501 - - :return: The label_selector_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :rtype: str - """ - return self._label_selector_path - - @label_selector_path.setter - def label_selector_path(self, label_selector_path): - """Sets the label_selector_path of this V1CustomResourceSubresourceScale. - - labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string. # noqa: E501 - - :param label_selector_path: The label_selector_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :type: str - """ - - self._label_selector_path = label_selector_path - - @property - def spec_replicas_path(self): - """Gets the spec_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - - specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET. # noqa: E501 - - :return: The spec_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :rtype: str - """ - return self._spec_replicas_path - - @spec_replicas_path.setter - def spec_replicas_path(self, spec_replicas_path): - """Sets the spec_replicas_path of this V1CustomResourceSubresourceScale. - - specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET. # noqa: E501 - - :param spec_replicas_path: The spec_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and spec_replicas_path is None: # noqa: E501 - raise ValueError("Invalid value for `spec_replicas_path`, must not be `None`") # noqa: E501 - - self._spec_replicas_path = spec_replicas_path - - @property - def status_replicas_path(self): - """Gets the status_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - - statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0. # noqa: E501 - - :return: The status_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :rtype: str - """ - return self._status_replicas_path - - @status_replicas_path.setter - def status_replicas_path(self, status_replicas_path): - """Sets the status_replicas_path of this V1CustomResourceSubresourceScale. - - statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0. # noqa: E501 - - :param status_replicas_path: The status_replicas_path of this V1CustomResourceSubresourceScale. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status_replicas_path is None: # noqa: E501 - raise ValueError("Invalid value for `status_replicas_path`, must not be `None`") # noqa: E501 - - self._status_replicas_path = status_replicas_path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceSubresourceScale): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceSubresourceScale): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresources.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresources.py deleted file mode 100644 index 56d3d5c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_subresources.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceSubresources(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'scale': 'V1CustomResourceSubresourceScale', - 'status': 'object' - } - - attribute_map = { - 'scale': 'scale', - 'status': 'status' - } - - def __init__(self, scale=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceSubresources - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._scale = None - self._status = None - self.discriminator = None - - if scale is not None: - self.scale = scale - if status is not None: - self.status = status - - @property - def scale(self): - """Gets the scale of this V1CustomResourceSubresources. # noqa: E501 - - - :return: The scale of this V1CustomResourceSubresources. # noqa: E501 - :rtype: V1CustomResourceSubresourceScale - """ - return self._scale - - @scale.setter - def scale(self, scale): - """Sets the scale of this V1CustomResourceSubresources. - - - :param scale: The scale of this V1CustomResourceSubresources. # noqa: E501 - :type: V1CustomResourceSubresourceScale - """ - - self._scale = scale - - @property - def status(self): - """Gets the status of this V1CustomResourceSubresources. # noqa: E501 - - status indicates the custom resource should serve a `/status` subresource. When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object. # noqa: E501 - - :return: The status of this V1CustomResourceSubresources. # noqa: E501 - :rtype: object - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1CustomResourceSubresources. - - status indicates the custom resource should serve a `/status` subresource. When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object. # noqa: E501 - - :param status: The status of this V1CustomResourceSubresources. # noqa: E501 - :type: object - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceSubresources): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceSubresources): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_validation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_validation.py deleted file mode 100644 index 61eb9d3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_custom_resource_validation.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1CustomResourceValidation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'open_apiv3_schema': 'V1JSONSchemaProps' - } - - attribute_map = { - 'open_apiv3_schema': 'openAPIV3Schema' - } - - def __init__(self, open_apiv3_schema=None, local_vars_configuration=None): # noqa: E501 - """V1CustomResourceValidation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._open_apiv3_schema = None - self.discriminator = None - - if open_apiv3_schema is not None: - self.open_apiv3_schema = open_apiv3_schema - - @property - def open_apiv3_schema(self): - """Gets the open_apiv3_schema of this V1CustomResourceValidation. # noqa: E501 - - - :return: The open_apiv3_schema of this V1CustomResourceValidation. # noqa: E501 - :rtype: V1JSONSchemaProps - """ - return self._open_apiv3_schema - - @open_apiv3_schema.setter - def open_apiv3_schema(self, open_apiv3_schema): - """Sets the open_apiv3_schema of this V1CustomResourceValidation. - - - :param open_apiv3_schema: The open_apiv3_schema of this V1CustomResourceValidation. # noqa: E501 - :type: V1JSONSchemaProps - """ - - self._open_apiv3_schema = open_apiv3_schema - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1CustomResourceValidation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1CustomResourceValidation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_endpoint.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_endpoint.py deleted file mode 100644 index 15ab3ab..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_endpoint.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonEndpoint(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'port': 'int' - } - - attribute_map = { - 'port': 'Port' - } - - def __init__(self, port=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonEndpoint - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._port = None - self.discriminator = None - - self.port = port - - @property - def port(self): - """Gets the port of this V1DaemonEndpoint. # noqa: E501 - - Port number of the given endpoint. # noqa: E501 - - :return: The port of this V1DaemonEndpoint. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1DaemonEndpoint. - - Port number of the given endpoint. # noqa: E501 - - :param port: The port of this V1DaemonEndpoint. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonEndpoint): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonEndpoint): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set.py deleted file mode 100644 index a1297b6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSet(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1DaemonSetSpec', - 'status': 'V1DaemonSetStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSet - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1DaemonSet. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1DaemonSet. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1DaemonSet. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1DaemonSet. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1DaemonSet. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1DaemonSet. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1DaemonSet. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1DaemonSet. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1DaemonSet. # noqa: E501 - - - :return: The metadata of this V1DaemonSet. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1DaemonSet. - - - :param metadata: The metadata of this V1DaemonSet. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1DaemonSet. # noqa: E501 - - - :return: The spec of this V1DaemonSet. # noqa: E501 - :rtype: V1DaemonSetSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1DaemonSet. - - - :param spec: The spec of this V1DaemonSet. # noqa: E501 - :type: V1DaemonSetSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1DaemonSet. # noqa: E501 - - - :return: The status of this V1DaemonSet. # noqa: E501 - :rtype: V1DaemonSetStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1DaemonSet. - - - :param status: The status of this V1DaemonSet. # noqa: E501 - :type: V1DaemonSetStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSet): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSet): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_condition.py deleted file mode 100644 index 3b1524b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSetCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSetCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1DaemonSetCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1DaemonSetCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1DaemonSetCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1DaemonSetCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1DaemonSetCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1DaemonSetCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1DaemonSetCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1DaemonSetCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1DaemonSetCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1DaemonSetCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1DaemonSetCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1DaemonSetCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1DaemonSetCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1DaemonSetCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1DaemonSetCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1DaemonSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1DaemonSetCondition. # noqa: E501 - - Type of DaemonSet condition. # noqa: E501 - - :return: The type of this V1DaemonSetCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1DaemonSetCondition. - - Type of DaemonSet condition. # noqa: E501 - - :param type: The type of this V1DaemonSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSetCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSetCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_list.py deleted file mode 100644 index c7c3e90..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSetList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1DaemonSet]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSetList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1DaemonSetList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1DaemonSetList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1DaemonSetList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1DaemonSetList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1DaemonSetList. # noqa: E501 - - A list of daemon sets. # noqa: E501 - - :return: The items of this V1DaemonSetList. # noqa: E501 - :rtype: list[V1DaemonSet] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1DaemonSetList. - - A list of daemon sets. # noqa: E501 - - :param items: The items of this V1DaemonSetList. # noqa: E501 - :type: list[V1DaemonSet] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1DaemonSetList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1DaemonSetList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1DaemonSetList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1DaemonSetList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1DaemonSetList. # noqa: E501 - - - :return: The metadata of this V1DaemonSetList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1DaemonSetList. - - - :param metadata: The metadata of this V1DaemonSetList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSetList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSetList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_spec.py deleted file mode 100644 index 6676082..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_spec.py +++ /dev/null @@ -1,230 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSetSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'min_ready_seconds': 'int', - 'revision_history_limit': 'int', - 'selector': 'V1LabelSelector', - 'template': 'V1PodTemplateSpec', - 'update_strategy': 'V1DaemonSetUpdateStrategy' - } - - attribute_map = { - 'min_ready_seconds': 'minReadySeconds', - 'revision_history_limit': 'revisionHistoryLimit', - 'selector': 'selector', - 'template': 'template', - 'update_strategy': 'updateStrategy' - } - - def __init__(self, min_ready_seconds=None, revision_history_limit=None, selector=None, template=None, update_strategy=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSetSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._min_ready_seconds = None - self._revision_history_limit = None - self._selector = None - self._template = None - self._update_strategy = None - self.discriminator = None - - if min_ready_seconds is not None: - self.min_ready_seconds = min_ready_seconds - if revision_history_limit is not None: - self.revision_history_limit = revision_history_limit - self.selector = selector - self.template = template - if update_strategy is not None: - self.update_strategy = update_strategy - - @property - def min_ready_seconds(self): - """Gets the min_ready_seconds of this V1DaemonSetSpec. # noqa: E501 - - The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready). # noqa: E501 - - :return: The min_ready_seconds of this V1DaemonSetSpec. # noqa: E501 - :rtype: int - """ - return self._min_ready_seconds - - @min_ready_seconds.setter - def min_ready_seconds(self, min_ready_seconds): - """Sets the min_ready_seconds of this V1DaemonSetSpec. - - The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready). # noqa: E501 - - :param min_ready_seconds: The min_ready_seconds of this V1DaemonSetSpec. # noqa: E501 - :type: int - """ - - self._min_ready_seconds = min_ready_seconds - - @property - def revision_history_limit(self): - """Gets the revision_history_limit of this V1DaemonSetSpec. # noqa: E501 - - The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. # noqa: E501 - - :return: The revision_history_limit of this V1DaemonSetSpec. # noqa: E501 - :rtype: int - """ - return self._revision_history_limit - - @revision_history_limit.setter - def revision_history_limit(self, revision_history_limit): - """Sets the revision_history_limit of this V1DaemonSetSpec. - - The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. # noqa: E501 - - :param revision_history_limit: The revision_history_limit of this V1DaemonSetSpec. # noqa: E501 - :type: int - """ - - self._revision_history_limit = revision_history_limit - - @property - def selector(self): - """Gets the selector of this V1DaemonSetSpec. # noqa: E501 - - - :return: The selector of this V1DaemonSetSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1DaemonSetSpec. - - - :param selector: The selector of this V1DaemonSetSpec. # noqa: E501 - :type: V1LabelSelector - """ - if self.local_vars_configuration.client_side_validation and selector is None: # noqa: E501 - raise ValueError("Invalid value for `selector`, must not be `None`") # noqa: E501 - - self._selector = selector - - @property - def template(self): - """Gets the template of this V1DaemonSetSpec. # noqa: E501 - - - :return: The template of this V1DaemonSetSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1DaemonSetSpec. - - - :param template: The template of this V1DaemonSetSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and template is None: # noqa: E501 - raise ValueError("Invalid value for `template`, must not be `None`") # noqa: E501 - - self._template = template - - @property - def update_strategy(self): - """Gets the update_strategy of this V1DaemonSetSpec. # noqa: E501 - - - :return: The update_strategy of this V1DaemonSetSpec. # noqa: E501 - :rtype: V1DaemonSetUpdateStrategy - """ - return self._update_strategy - - @update_strategy.setter - def update_strategy(self, update_strategy): - """Sets the update_strategy of this V1DaemonSetSpec. - - - :param update_strategy: The update_strategy of this V1DaemonSetSpec. # noqa: E501 - :type: V1DaemonSetUpdateStrategy - """ - - self._update_strategy = update_strategy - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSetSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSetSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_status.py deleted file mode 100644 index 1e0526e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_status.py +++ /dev/null @@ -1,378 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSetStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'collision_count': 'int', - 'conditions': 'list[V1DaemonSetCondition]', - 'current_number_scheduled': 'int', - 'desired_number_scheduled': 'int', - 'number_available': 'int', - 'number_misscheduled': 'int', - 'number_ready': 'int', - 'number_unavailable': 'int', - 'observed_generation': 'int', - 'updated_number_scheduled': 'int' - } - - attribute_map = { - 'collision_count': 'collisionCount', - 'conditions': 'conditions', - 'current_number_scheduled': 'currentNumberScheduled', - 'desired_number_scheduled': 'desiredNumberScheduled', - 'number_available': 'numberAvailable', - 'number_misscheduled': 'numberMisscheduled', - 'number_ready': 'numberReady', - 'number_unavailable': 'numberUnavailable', - 'observed_generation': 'observedGeneration', - 'updated_number_scheduled': 'updatedNumberScheduled' - } - - def __init__(self, collision_count=None, conditions=None, current_number_scheduled=None, desired_number_scheduled=None, number_available=None, number_misscheduled=None, number_ready=None, number_unavailable=None, observed_generation=None, updated_number_scheduled=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSetStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._collision_count = None - self._conditions = None - self._current_number_scheduled = None - self._desired_number_scheduled = None - self._number_available = None - self._number_misscheduled = None - self._number_ready = None - self._number_unavailable = None - self._observed_generation = None - self._updated_number_scheduled = None - self.discriminator = None - - if collision_count is not None: - self.collision_count = collision_count - if conditions is not None: - self.conditions = conditions - self.current_number_scheduled = current_number_scheduled - self.desired_number_scheduled = desired_number_scheduled - if number_available is not None: - self.number_available = number_available - self.number_misscheduled = number_misscheduled - self.number_ready = number_ready - if number_unavailable is not None: - self.number_unavailable = number_unavailable - if observed_generation is not None: - self.observed_generation = observed_generation - if updated_number_scheduled is not None: - self.updated_number_scheduled = updated_number_scheduled - - @property - def collision_count(self): - """Gets the collision_count of this V1DaemonSetStatus. # noqa: E501 - - Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. # noqa: E501 - - :return: The collision_count of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._collision_count - - @collision_count.setter - def collision_count(self, collision_count): - """Sets the collision_count of this V1DaemonSetStatus. - - Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. # noqa: E501 - - :param collision_count: The collision_count of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - - self._collision_count = collision_count - - @property - def conditions(self): - """Gets the conditions of this V1DaemonSetStatus. # noqa: E501 - - Represents the latest available observations of a DaemonSet's current state. # noqa: E501 - - :return: The conditions of this V1DaemonSetStatus. # noqa: E501 - :rtype: list[V1DaemonSetCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1DaemonSetStatus. - - Represents the latest available observations of a DaemonSet's current state. # noqa: E501 - - :param conditions: The conditions of this V1DaemonSetStatus. # noqa: E501 - :type: list[V1DaemonSetCondition] - """ - - self._conditions = conditions - - @property - def current_number_scheduled(self): - """Gets the current_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - - The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :return: The current_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._current_number_scheduled - - @current_number_scheduled.setter - def current_number_scheduled(self, current_number_scheduled): - """Sets the current_number_scheduled of this V1DaemonSetStatus. - - The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :param current_number_scheduled: The current_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and current_number_scheduled is None: # noqa: E501 - raise ValueError("Invalid value for `current_number_scheduled`, must not be `None`") # noqa: E501 - - self._current_number_scheduled = current_number_scheduled - - @property - def desired_number_scheduled(self): - """Gets the desired_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - - The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :return: The desired_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._desired_number_scheduled - - @desired_number_scheduled.setter - def desired_number_scheduled(self, desired_number_scheduled): - """Sets the desired_number_scheduled of this V1DaemonSetStatus. - - The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :param desired_number_scheduled: The desired_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and desired_number_scheduled is None: # noqa: E501 - raise ValueError("Invalid value for `desired_number_scheduled`, must not be `None`") # noqa: E501 - - self._desired_number_scheduled = desired_number_scheduled - - @property - def number_available(self): - """Gets the number_available of this V1DaemonSetStatus. # noqa: E501 - - The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds) # noqa: E501 - - :return: The number_available of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._number_available - - @number_available.setter - def number_available(self, number_available): - """Sets the number_available of this V1DaemonSetStatus. - - The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds) # noqa: E501 - - :param number_available: The number_available of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - - self._number_available = number_available - - @property - def number_misscheduled(self): - """Gets the number_misscheduled of this V1DaemonSetStatus. # noqa: E501 - - The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :return: The number_misscheduled of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._number_misscheduled - - @number_misscheduled.setter - def number_misscheduled(self, number_misscheduled): - """Sets the number_misscheduled of this V1DaemonSetStatus. - - The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ # noqa: E501 - - :param number_misscheduled: The number_misscheduled of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and number_misscheduled is None: # noqa: E501 - raise ValueError("Invalid value for `number_misscheduled`, must not be `None`") # noqa: E501 - - self._number_misscheduled = number_misscheduled - - @property - def number_ready(self): - """Gets the number_ready of this V1DaemonSetStatus. # noqa: E501 - - numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition. # noqa: E501 - - :return: The number_ready of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._number_ready - - @number_ready.setter - def number_ready(self, number_ready): - """Sets the number_ready of this V1DaemonSetStatus. - - numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition. # noqa: E501 - - :param number_ready: The number_ready of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and number_ready is None: # noqa: E501 - raise ValueError("Invalid value for `number_ready`, must not be `None`") # noqa: E501 - - self._number_ready = number_ready - - @property - def number_unavailable(self): - """Gets the number_unavailable of this V1DaemonSetStatus. # noqa: E501 - - The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds) # noqa: E501 - - :return: The number_unavailable of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._number_unavailable - - @number_unavailable.setter - def number_unavailable(self, number_unavailable): - """Sets the number_unavailable of this V1DaemonSetStatus. - - The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds) # noqa: E501 - - :param number_unavailable: The number_unavailable of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - - self._number_unavailable = number_unavailable - - @property - def observed_generation(self): - """Gets the observed_generation of this V1DaemonSetStatus. # noqa: E501 - - The most recent generation observed by the daemon set controller. # noqa: E501 - - :return: The observed_generation of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1DaemonSetStatus. - - The most recent generation observed by the daemon set controller. # noqa: E501 - - :param observed_generation: The observed_generation of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def updated_number_scheduled(self): - """Gets the updated_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - - The total number of nodes that are running updated daemon pod # noqa: E501 - - :return: The updated_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :rtype: int - """ - return self._updated_number_scheduled - - @updated_number_scheduled.setter - def updated_number_scheduled(self, updated_number_scheduled): - """Sets the updated_number_scheduled of this V1DaemonSetStatus. - - The total number of nodes that are running updated daemon pod # noqa: E501 - - :param updated_number_scheduled: The updated_number_scheduled of this V1DaemonSetStatus. # noqa: E501 - :type: int - """ - - self._updated_number_scheduled = updated_number_scheduled - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSetStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSetStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_update_strategy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_update_strategy.py deleted file mode 100644 index 2469f82..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_daemon_set_update_strategy.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DaemonSetUpdateStrategy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'rolling_update': 'V1RollingUpdateDaemonSet', - 'type': 'str' - } - - attribute_map = { - 'rolling_update': 'rollingUpdate', - 'type': 'type' - } - - def __init__(self, rolling_update=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1DaemonSetUpdateStrategy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._rolling_update = None - self._type = None - self.discriminator = None - - if rolling_update is not None: - self.rolling_update = rolling_update - if type is not None: - self.type = type - - @property - def rolling_update(self): - """Gets the rolling_update of this V1DaemonSetUpdateStrategy. # noqa: E501 - - - :return: The rolling_update of this V1DaemonSetUpdateStrategy. # noqa: E501 - :rtype: V1RollingUpdateDaemonSet - """ - return self._rolling_update - - @rolling_update.setter - def rolling_update(self, rolling_update): - """Sets the rolling_update of this V1DaemonSetUpdateStrategy. - - - :param rolling_update: The rolling_update of this V1DaemonSetUpdateStrategy. # noqa: E501 - :type: V1RollingUpdateDaemonSet - """ - - self._rolling_update = rolling_update - - @property - def type(self): - """Gets the type of this V1DaemonSetUpdateStrategy. # noqa: E501 - - Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate. # noqa: E501 - - :return: The type of this V1DaemonSetUpdateStrategy. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1DaemonSetUpdateStrategy. - - Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate. # noqa: E501 - - :param type: The type of this V1DaemonSetUpdateStrategy. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DaemonSetUpdateStrategy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DaemonSetUpdateStrategy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_delete_options.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_delete_options.py deleted file mode 100644 index 0d08fb7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_delete_options.py +++ /dev/null @@ -1,288 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeleteOptions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'dry_run': 'list[str]', - 'grace_period_seconds': 'int', - 'kind': 'str', - 'orphan_dependents': 'bool', - 'preconditions': 'V1Preconditions', - 'propagation_policy': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'dry_run': 'dryRun', - 'grace_period_seconds': 'gracePeriodSeconds', - 'kind': 'kind', - 'orphan_dependents': 'orphanDependents', - 'preconditions': 'preconditions', - 'propagation_policy': 'propagationPolicy' - } - - def __init__(self, api_version=None, dry_run=None, grace_period_seconds=None, kind=None, orphan_dependents=None, preconditions=None, propagation_policy=None, local_vars_configuration=None): # noqa: E501 - """V1DeleteOptions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._dry_run = None - self._grace_period_seconds = None - self._kind = None - self._orphan_dependents = None - self._preconditions = None - self._propagation_policy = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if dry_run is not None: - self.dry_run = dry_run - if grace_period_seconds is not None: - self.grace_period_seconds = grace_period_seconds - if kind is not None: - self.kind = kind - if orphan_dependents is not None: - self.orphan_dependents = orphan_dependents - if preconditions is not None: - self.preconditions = preconditions - if propagation_policy is not None: - self.propagation_policy = propagation_policy - - @property - def api_version(self): - """Gets the api_version of this V1DeleteOptions. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1DeleteOptions. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1DeleteOptions. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1DeleteOptions. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def dry_run(self): - """Gets the dry_run of this V1DeleteOptions. # noqa: E501 - - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed # noqa: E501 - - :return: The dry_run of this V1DeleteOptions. # noqa: E501 - :rtype: list[str] - """ - return self._dry_run - - @dry_run.setter - def dry_run(self, dry_run): - """Sets the dry_run of this V1DeleteOptions. - - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed # noqa: E501 - - :param dry_run: The dry_run of this V1DeleteOptions. # noqa: E501 - :type: list[str] - """ - - self._dry_run = dry_run - - @property - def grace_period_seconds(self): - """Gets the grace_period_seconds of this V1DeleteOptions. # noqa: E501 - - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. # noqa: E501 - - :return: The grace_period_seconds of this V1DeleteOptions. # noqa: E501 - :rtype: int - """ - return self._grace_period_seconds - - @grace_period_seconds.setter - def grace_period_seconds(self, grace_period_seconds): - """Sets the grace_period_seconds of this V1DeleteOptions. - - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately. # noqa: E501 - - :param grace_period_seconds: The grace_period_seconds of this V1DeleteOptions. # noqa: E501 - :type: int - """ - - self._grace_period_seconds = grace_period_seconds - - @property - def kind(self): - """Gets the kind of this V1DeleteOptions. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1DeleteOptions. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1DeleteOptions. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1DeleteOptions. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def orphan_dependents(self): - """Gets the orphan_dependents of this V1DeleteOptions. # noqa: E501 - - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. # noqa: E501 - - :return: The orphan_dependents of this V1DeleteOptions. # noqa: E501 - :rtype: bool - """ - return self._orphan_dependents - - @orphan_dependents.setter - def orphan_dependents(self, orphan_dependents): - """Sets the orphan_dependents of this V1DeleteOptions. - - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both. # noqa: E501 - - :param orphan_dependents: The orphan_dependents of this V1DeleteOptions. # noqa: E501 - :type: bool - """ - - self._orphan_dependents = orphan_dependents - - @property - def preconditions(self): - """Gets the preconditions of this V1DeleteOptions. # noqa: E501 - - - :return: The preconditions of this V1DeleteOptions. # noqa: E501 - :rtype: V1Preconditions - """ - return self._preconditions - - @preconditions.setter - def preconditions(self, preconditions): - """Sets the preconditions of this V1DeleteOptions. - - - :param preconditions: The preconditions of this V1DeleteOptions. # noqa: E501 - :type: V1Preconditions - """ - - self._preconditions = preconditions - - @property - def propagation_policy(self): - """Gets the propagation_policy of this V1DeleteOptions. # noqa: E501 - - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. # noqa: E501 - - :return: The propagation_policy of this V1DeleteOptions. # noqa: E501 - :rtype: str - """ - return self._propagation_policy - - @propagation_policy.setter - def propagation_policy(self, propagation_policy): - """Sets the propagation_policy of this V1DeleteOptions. - - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground. # noqa: E501 - - :param propagation_policy: The propagation_policy of this V1DeleteOptions. # noqa: E501 - :type: str - """ - - self._propagation_policy = propagation_policy - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeleteOptions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeleteOptions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment.py deleted file mode 100644 index 85974fb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Deployment(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1DeploymentSpec', - 'status': 'V1DeploymentStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Deployment - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Deployment. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Deployment. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Deployment. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Deployment. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Deployment. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Deployment. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Deployment. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Deployment. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Deployment. # noqa: E501 - - - :return: The metadata of this V1Deployment. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Deployment. - - - :param metadata: The metadata of this V1Deployment. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Deployment. # noqa: E501 - - - :return: The spec of this V1Deployment. # noqa: E501 - :rtype: V1DeploymentSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Deployment. - - - :param spec: The spec of this V1Deployment. # noqa: E501 - :type: V1DeploymentSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Deployment. # noqa: E501 - - - :return: The status of this V1Deployment. # noqa: E501 - :rtype: V1DeploymentStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Deployment. - - - :param status: The status of this V1Deployment. # noqa: E501 - :type: V1DeploymentStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Deployment): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Deployment): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_condition.py deleted file mode 100644 index 5547214..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_condition.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeploymentCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'last_update_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'last_update_time': 'lastUpdateTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, last_update_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1DeploymentCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._last_update_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if last_update_time is not None: - self.last_update_time = last_update_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1DeploymentCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1DeploymentCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1DeploymentCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1DeploymentCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def last_update_time(self): - """Gets the last_update_time of this V1DeploymentCondition. # noqa: E501 - - The last time this condition was updated. # noqa: E501 - - :return: The last_update_time of this V1DeploymentCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_update_time - - @last_update_time.setter - def last_update_time(self, last_update_time): - """Sets the last_update_time of this V1DeploymentCondition. - - The last time this condition was updated. # noqa: E501 - - :param last_update_time: The last_update_time of this V1DeploymentCondition. # noqa: E501 - :type: datetime - """ - - self._last_update_time = last_update_time - - @property - def message(self): - """Gets the message of this V1DeploymentCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1DeploymentCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1DeploymentCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1DeploymentCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1DeploymentCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1DeploymentCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1DeploymentCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1DeploymentCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1DeploymentCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1DeploymentCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1DeploymentCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1DeploymentCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1DeploymentCondition. # noqa: E501 - - Type of deployment condition. # noqa: E501 - - :return: The type of this V1DeploymentCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1DeploymentCondition. - - Type of deployment condition. # noqa: E501 - - :param type: The type of this V1DeploymentCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeploymentCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeploymentCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_list.py deleted file mode 100644 index 3bec2eb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeploymentList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Deployment]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1DeploymentList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1DeploymentList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1DeploymentList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1DeploymentList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1DeploymentList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1DeploymentList. # noqa: E501 - - Items is the list of Deployments. # noqa: E501 - - :return: The items of this V1DeploymentList. # noqa: E501 - :rtype: list[V1Deployment] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1DeploymentList. - - Items is the list of Deployments. # noqa: E501 - - :param items: The items of this V1DeploymentList. # noqa: E501 - :type: list[V1Deployment] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1DeploymentList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1DeploymentList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1DeploymentList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1DeploymentList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1DeploymentList. # noqa: E501 - - - :return: The metadata of this V1DeploymentList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1DeploymentList. - - - :param metadata: The metadata of this V1DeploymentList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeploymentList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeploymentList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_spec.py deleted file mode 100644 index 3ddf49f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_spec.py +++ /dev/null @@ -1,314 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeploymentSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'min_ready_seconds': 'int', - 'paused': 'bool', - 'progress_deadline_seconds': 'int', - 'replicas': 'int', - 'revision_history_limit': 'int', - 'selector': 'V1LabelSelector', - 'strategy': 'V1DeploymentStrategy', - 'template': 'V1PodTemplateSpec' - } - - attribute_map = { - 'min_ready_seconds': 'minReadySeconds', - 'paused': 'paused', - 'progress_deadline_seconds': 'progressDeadlineSeconds', - 'replicas': 'replicas', - 'revision_history_limit': 'revisionHistoryLimit', - 'selector': 'selector', - 'strategy': 'strategy', - 'template': 'template' - } - - def __init__(self, min_ready_seconds=None, paused=None, progress_deadline_seconds=None, replicas=None, revision_history_limit=None, selector=None, strategy=None, template=None, local_vars_configuration=None): # noqa: E501 - """V1DeploymentSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._min_ready_seconds = None - self._paused = None - self._progress_deadline_seconds = None - self._replicas = None - self._revision_history_limit = None - self._selector = None - self._strategy = None - self._template = None - self.discriminator = None - - if min_ready_seconds is not None: - self.min_ready_seconds = min_ready_seconds - if paused is not None: - self.paused = paused - if progress_deadline_seconds is not None: - self.progress_deadline_seconds = progress_deadline_seconds - if replicas is not None: - self.replicas = replicas - if revision_history_limit is not None: - self.revision_history_limit = revision_history_limit - self.selector = selector - if strategy is not None: - self.strategy = strategy - self.template = template - - @property - def min_ready_seconds(self): - """Gets the min_ready_seconds of this V1DeploymentSpec. # noqa: E501 - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :return: The min_ready_seconds of this V1DeploymentSpec. # noqa: E501 - :rtype: int - """ - return self._min_ready_seconds - - @min_ready_seconds.setter - def min_ready_seconds(self, min_ready_seconds): - """Sets the min_ready_seconds of this V1DeploymentSpec. - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :param min_ready_seconds: The min_ready_seconds of this V1DeploymentSpec. # noqa: E501 - :type: int - """ - - self._min_ready_seconds = min_ready_seconds - - @property - def paused(self): - """Gets the paused of this V1DeploymentSpec. # noqa: E501 - - Indicates that the deployment is paused. # noqa: E501 - - :return: The paused of this V1DeploymentSpec. # noqa: E501 - :rtype: bool - """ - return self._paused - - @paused.setter - def paused(self, paused): - """Sets the paused of this V1DeploymentSpec. - - Indicates that the deployment is paused. # noqa: E501 - - :param paused: The paused of this V1DeploymentSpec. # noqa: E501 - :type: bool - """ - - self._paused = paused - - @property - def progress_deadline_seconds(self): - """Gets the progress_deadline_seconds of this V1DeploymentSpec. # noqa: E501 - - The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s. # noqa: E501 - - :return: The progress_deadline_seconds of this V1DeploymentSpec. # noqa: E501 - :rtype: int - """ - return self._progress_deadline_seconds - - @progress_deadline_seconds.setter - def progress_deadline_seconds(self, progress_deadline_seconds): - """Sets the progress_deadline_seconds of this V1DeploymentSpec. - - The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s. # noqa: E501 - - :param progress_deadline_seconds: The progress_deadline_seconds of this V1DeploymentSpec. # noqa: E501 - :type: int - """ - - self._progress_deadline_seconds = progress_deadline_seconds - - @property - def replicas(self): - """Gets the replicas of this V1DeploymentSpec. # noqa: E501 - - Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. # noqa: E501 - - :return: The replicas of this V1DeploymentSpec. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1DeploymentSpec. - - Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. # noqa: E501 - - :param replicas: The replicas of this V1DeploymentSpec. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - @property - def revision_history_limit(self): - """Gets the revision_history_limit of this V1DeploymentSpec. # noqa: E501 - - The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. # noqa: E501 - - :return: The revision_history_limit of this V1DeploymentSpec. # noqa: E501 - :rtype: int - """ - return self._revision_history_limit - - @revision_history_limit.setter - def revision_history_limit(self, revision_history_limit): - """Sets the revision_history_limit of this V1DeploymentSpec. - - The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10. # noqa: E501 - - :param revision_history_limit: The revision_history_limit of this V1DeploymentSpec. # noqa: E501 - :type: int - """ - - self._revision_history_limit = revision_history_limit - - @property - def selector(self): - """Gets the selector of this V1DeploymentSpec. # noqa: E501 - - - :return: The selector of this V1DeploymentSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1DeploymentSpec. - - - :param selector: The selector of this V1DeploymentSpec. # noqa: E501 - :type: V1LabelSelector - """ - if self.local_vars_configuration.client_side_validation and selector is None: # noqa: E501 - raise ValueError("Invalid value for `selector`, must not be `None`") # noqa: E501 - - self._selector = selector - - @property - def strategy(self): - """Gets the strategy of this V1DeploymentSpec. # noqa: E501 - - - :return: The strategy of this V1DeploymentSpec. # noqa: E501 - :rtype: V1DeploymentStrategy - """ - return self._strategy - - @strategy.setter - def strategy(self, strategy): - """Sets the strategy of this V1DeploymentSpec. - - - :param strategy: The strategy of this V1DeploymentSpec. # noqa: E501 - :type: V1DeploymentStrategy - """ - - self._strategy = strategy - - @property - def template(self): - """Gets the template of this V1DeploymentSpec. # noqa: E501 - - - :return: The template of this V1DeploymentSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1DeploymentSpec. - - - :param template: The template of this V1DeploymentSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and template is None: # noqa: E501 - raise ValueError("Invalid value for `template`, must not be `None`") # noqa: E501 - - self._template = template - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeploymentSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeploymentSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_status.py deleted file mode 100644 index 38c0051..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_status.py +++ /dev/null @@ -1,318 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeploymentStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'available_replicas': 'int', - 'collision_count': 'int', - 'conditions': 'list[V1DeploymentCondition]', - 'observed_generation': 'int', - 'ready_replicas': 'int', - 'replicas': 'int', - 'unavailable_replicas': 'int', - 'updated_replicas': 'int' - } - - attribute_map = { - 'available_replicas': 'availableReplicas', - 'collision_count': 'collisionCount', - 'conditions': 'conditions', - 'observed_generation': 'observedGeneration', - 'ready_replicas': 'readyReplicas', - 'replicas': 'replicas', - 'unavailable_replicas': 'unavailableReplicas', - 'updated_replicas': 'updatedReplicas' - } - - def __init__(self, available_replicas=None, collision_count=None, conditions=None, observed_generation=None, ready_replicas=None, replicas=None, unavailable_replicas=None, updated_replicas=None, local_vars_configuration=None): # noqa: E501 - """V1DeploymentStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._available_replicas = None - self._collision_count = None - self._conditions = None - self._observed_generation = None - self._ready_replicas = None - self._replicas = None - self._unavailable_replicas = None - self._updated_replicas = None - self.discriminator = None - - if available_replicas is not None: - self.available_replicas = available_replicas - if collision_count is not None: - self.collision_count = collision_count - if conditions is not None: - self.conditions = conditions - if observed_generation is not None: - self.observed_generation = observed_generation - if ready_replicas is not None: - self.ready_replicas = ready_replicas - if replicas is not None: - self.replicas = replicas - if unavailable_replicas is not None: - self.unavailable_replicas = unavailable_replicas - if updated_replicas is not None: - self.updated_replicas = updated_replicas - - @property - def available_replicas(self): - """Gets the available_replicas of this V1DeploymentStatus. # noqa: E501 - - Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. # noqa: E501 - - :return: The available_replicas of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._available_replicas - - @available_replicas.setter - def available_replicas(self, available_replicas): - """Sets the available_replicas of this V1DeploymentStatus. - - Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. # noqa: E501 - - :param available_replicas: The available_replicas of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._available_replicas = available_replicas - - @property - def collision_count(self): - """Gets the collision_count of this V1DeploymentStatus. # noqa: E501 - - Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet. # noqa: E501 - - :return: The collision_count of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._collision_count - - @collision_count.setter - def collision_count(self, collision_count): - """Sets the collision_count of this V1DeploymentStatus. - - Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet. # noqa: E501 - - :param collision_count: The collision_count of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._collision_count = collision_count - - @property - def conditions(self): - """Gets the conditions of this V1DeploymentStatus. # noqa: E501 - - Represents the latest available observations of a deployment's current state. # noqa: E501 - - :return: The conditions of this V1DeploymentStatus. # noqa: E501 - :rtype: list[V1DeploymentCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1DeploymentStatus. - - Represents the latest available observations of a deployment's current state. # noqa: E501 - - :param conditions: The conditions of this V1DeploymentStatus. # noqa: E501 - :type: list[V1DeploymentCondition] - """ - - self._conditions = conditions - - @property - def observed_generation(self): - """Gets the observed_generation of this V1DeploymentStatus. # noqa: E501 - - The generation observed by the deployment controller. # noqa: E501 - - :return: The observed_generation of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1DeploymentStatus. - - The generation observed by the deployment controller. # noqa: E501 - - :param observed_generation: The observed_generation of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def ready_replicas(self): - """Gets the ready_replicas of this V1DeploymentStatus. # noqa: E501 - - readyReplicas is the number of pods targeted by this Deployment with a Ready Condition. # noqa: E501 - - :return: The ready_replicas of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._ready_replicas - - @ready_replicas.setter - def ready_replicas(self, ready_replicas): - """Sets the ready_replicas of this V1DeploymentStatus. - - readyReplicas is the number of pods targeted by this Deployment with a Ready Condition. # noqa: E501 - - :param ready_replicas: The ready_replicas of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._ready_replicas = ready_replicas - - @property - def replicas(self): - """Gets the replicas of this V1DeploymentStatus. # noqa: E501 - - Total number of non-terminated pods targeted by this deployment (their labels match the selector). # noqa: E501 - - :return: The replicas of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1DeploymentStatus. - - Total number of non-terminated pods targeted by this deployment (their labels match the selector). # noqa: E501 - - :param replicas: The replicas of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - @property - def unavailable_replicas(self): - """Gets the unavailable_replicas of this V1DeploymentStatus. # noqa: E501 - - Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created. # noqa: E501 - - :return: The unavailable_replicas of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._unavailable_replicas - - @unavailable_replicas.setter - def unavailable_replicas(self, unavailable_replicas): - """Sets the unavailable_replicas of this V1DeploymentStatus. - - Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created. # noqa: E501 - - :param unavailable_replicas: The unavailable_replicas of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._unavailable_replicas = unavailable_replicas - - @property - def updated_replicas(self): - """Gets the updated_replicas of this V1DeploymentStatus. # noqa: E501 - - Total number of non-terminated pods targeted by this deployment that have the desired template spec. # noqa: E501 - - :return: The updated_replicas of this V1DeploymentStatus. # noqa: E501 - :rtype: int - """ - return self._updated_replicas - - @updated_replicas.setter - def updated_replicas(self, updated_replicas): - """Sets the updated_replicas of this V1DeploymentStatus. - - Total number of non-terminated pods targeted by this deployment that have the desired template spec. # noqa: E501 - - :param updated_replicas: The updated_replicas of this V1DeploymentStatus. # noqa: E501 - :type: int - """ - - self._updated_replicas = updated_replicas - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeploymentStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeploymentStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_strategy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_strategy.py deleted file mode 100644 index 75bc539..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_deployment_strategy.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DeploymentStrategy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'rolling_update': 'V1RollingUpdateDeployment', - 'type': 'str' - } - - attribute_map = { - 'rolling_update': 'rollingUpdate', - 'type': 'type' - } - - def __init__(self, rolling_update=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1DeploymentStrategy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._rolling_update = None - self._type = None - self.discriminator = None - - if rolling_update is not None: - self.rolling_update = rolling_update - if type is not None: - self.type = type - - @property - def rolling_update(self): - """Gets the rolling_update of this V1DeploymentStrategy. # noqa: E501 - - - :return: The rolling_update of this V1DeploymentStrategy. # noqa: E501 - :rtype: V1RollingUpdateDeployment - """ - return self._rolling_update - - @rolling_update.setter - def rolling_update(self, rolling_update): - """Sets the rolling_update of this V1DeploymentStrategy. - - - :param rolling_update: The rolling_update of this V1DeploymentStrategy. # noqa: E501 - :type: V1RollingUpdateDeployment - """ - - self._rolling_update = rolling_update - - @property - def type(self): - """Gets the type of this V1DeploymentStrategy. # noqa: E501 - - Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate. # noqa: E501 - - :return: The type of this V1DeploymentStrategy. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1DeploymentStrategy. - - Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate. # noqa: E501 - - :param type: The type of this V1DeploymentStrategy. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DeploymentStrategy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DeploymentStrategy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_projection.py deleted file mode 100644 index 567f66d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_projection.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DownwardAPIProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'items': 'list[V1DownwardAPIVolumeFile]' - } - - attribute_map = { - 'items': 'items' - } - - def __init__(self, items=None, local_vars_configuration=None): # noqa: E501 - """V1DownwardAPIProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._items = None - self.discriminator = None - - if items is not None: - self.items = items - - @property - def items(self): - """Gets the items of this V1DownwardAPIProjection. # noqa: E501 - - Items is a list of DownwardAPIVolume file # noqa: E501 - - :return: The items of this V1DownwardAPIProjection. # noqa: E501 - :rtype: list[V1DownwardAPIVolumeFile] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1DownwardAPIProjection. - - Items is a list of DownwardAPIVolume file # noqa: E501 - - :param items: The items of this V1DownwardAPIProjection. # noqa: E501 - :type: list[V1DownwardAPIVolumeFile] - """ - - self._items = items - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DownwardAPIProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DownwardAPIProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_file.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_file.py deleted file mode 100644 index ffe991e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_file.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DownwardAPIVolumeFile(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'field_ref': 'V1ObjectFieldSelector', - 'mode': 'int', - 'path': 'str', - 'resource_field_ref': 'V1ResourceFieldSelector' - } - - attribute_map = { - 'field_ref': 'fieldRef', - 'mode': 'mode', - 'path': 'path', - 'resource_field_ref': 'resourceFieldRef' - } - - def __init__(self, field_ref=None, mode=None, path=None, resource_field_ref=None, local_vars_configuration=None): # noqa: E501 - """V1DownwardAPIVolumeFile - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._field_ref = None - self._mode = None - self._path = None - self._resource_field_ref = None - self.discriminator = None - - if field_ref is not None: - self.field_ref = field_ref - if mode is not None: - self.mode = mode - self.path = path - if resource_field_ref is not None: - self.resource_field_ref = resource_field_ref - - @property - def field_ref(self): - """Gets the field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - - - :return: The field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - :rtype: V1ObjectFieldSelector - """ - return self._field_ref - - @field_ref.setter - def field_ref(self, field_ref): - """Sets the field_ref of this V1DownwardAPIVolumeFile. - - - :param field_ref: The field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - :type: V1ObjectFieldSelector - """ - - self._field_ref = field_ref - - @property - def mode(self): - """Gets the mode of this V1DownwardAPIVolumeFile. # noqa: E501 - - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The mode of this V1DownwardAPIVolumeFile. # noqa: E501 - :rtype: int - """ - return self._mode - - @mode.setter - def mode(self, mode): - """Sets the mode of this V1DownwardAPIVolumeFile. - - Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param mode: The mode of this V1DownwardAPIVolumeFile. # noqa: E501 - :type: int - """ - - self._mode = mode - - @property - def path(self): - """Gets the path of this V1DownwardAPIVolumeFile. # noqa: E501 - - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' # noqa: E501 - - :return: The path of this V1DownwardAPIVolumeFile. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1DownwardAPIVolumeFile. - - Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' # noqa: E501 - - :param path: The path of this V1DownwardAPIVolumeFile. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def resource_field_ref(self): - """Gets the resource_field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - - - :return: The resource_field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - :rtype: V1ResourceFieldSelector - """ - return self._resource_field_ref - - @resource_field_ref.setter - def resource_field_ref(self, resource_field_ref): - """Sets the resource_field_ref of this V1DownwardAPIVolumeFile. - - - :param resource_field_ref: The resource_field_ref of this V1DownwardAPIVolumeFile. # noqa: E501 - :type: V1ResourceFieldSelector - """ - - self._resource_field_ref = resource_field_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DownwardAPIVolumeFile): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DownwardAPIVolumeFile): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_source.py deleted file mode 100644 index 3d4adda..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_downward_api_volume_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1DownwardAPIVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default_mode': 'int', - 'items': 'list[V1DownwardAPIVolumeFile]' - } - - attribute_map = { - 'default_mode': 'defaultMode', - 'items': 'items' - } - - def __init__(self, default_mode=None, items=None, local_vars_configuration=None): # noqa: E501 - """V1DownwardAPIVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default_mode = None - self._items = None - self.discriminator = None - - if default_mode is not None: - self.default_mode = default_mode - if items is not None: - self.items = items - - @property - def default_mode(self): - """Gets the default_mode of this V1DownwardAPIVolumeSource. # noqa: E501 - - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The default_mode of this V1DownwardAPIVolumeSource. # noqa: E501 - :rtype: int - """ - return self._default_mode - - @default_mode.setter - def default_mode(self, default_mode): - """Sets the default_mode of this V1DownwardAPIVolumeSource. - - Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param default_mode: The default_mode of this V1DownwardAPIVolumeSource. # noqa: E501 - :type: int - """ - - self._default_mode = default_mode - - @property - def items(self): - """Gets the items of this V1DownwardAPIVolumeSource. # noqa: E501 - - Items is a list of downward API volume file # noqa: E501 - - :return: The items of this V1DownwardAPIVolumeSource. # noqa: E501 - :rtype: list[V1DownwardAPIVolumeFile] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1DownwardAPIVolumeSource. - - Items is a list of downward API volume file # noqa: E501 - - :param items: The items of this V1DownwardAPIVolumeSource. # noqa: E501 - :type: list[V1DownwardAPIVolumeFile] - """ - - self._items = items - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1DownwardAPIVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1DownwardAPIVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_empty_dir_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_empty_dir_volume_source.py deleted file mode 100644 index 3cd9d22..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_empty_dir_volume_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EmptyDirVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'medium': 'str', - 'size_limit': 'str' - } - - attribute_map = { - 'medium': 'medium', - 'size_limit': 'sizeLimit' - } - - def __init__(self, medium=None, size_limit=None, local_vars_configuration=None): # noqa: E501 - """V1EmptyDirVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._medium = None - self._size_limit = None - self.discriminator = None - - if medium is not None: - self.medium = medium - if size_limit is not None: - self.size_limit = size_limit - - @property - def medium(self): - """Gets the medium of this V1EmptyDirVolumeSource. # noqa: E501 - - medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir # noqa: E501 - - :return: The medium of this V1EmptyDirVolumeSource. # noqa: E501 - :rtype: str - """ - return self._medium - - @medium.setter - def medium(self, medium): - """Sets the medium of this V1EmptyDirVolumeSource. - - medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir # noqa: E501 - - :param medium: The medium of this V1EmptyDirVolumeSource. # noqa: E501 - :type: str - """ - - self._medium = medium - - @property - def size_limit(self): - """Gets the size_limit of this V1EmptyDirVolumeSource. # noqa: E501 - - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir # noqa: E501 - - :return: The size_limit of this V1EmptyDirVolumeSource. # noqa: E501 - :rtype: str - """ - return self._size_limit - - @size_limit.setter - def size_limit(self, size_limit): - """Sets the size_limit of this V1EmptyDirVolumeSource. - - sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir # noqa: E501 - - :param size_limit: The size_limit of this V1EmptyDirVolumeSource. # noqa: E501 - :type: str - """ - - self._size_limit = size_limit - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EmptyDirVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EmptyDirVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint.py deleted file mode 100644 index 98fadd6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint.py +++ /dev/null @@ -1,313 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Endpoint(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'addresses': 'list[str]', - 'conditions': 'V1EndpointConditions', - 'deprecated_topology': 'dict(str, str)', - 'hints': 'V1EndpointHints', - 'hostname': 'str', - 'node_name': 'str', - 'target_ref': 'V1ObjectReference', - 'zone': 'str' - } - - attribute_map = { - 'addresses': 'addresses', - 'conditions': 'conditions', - 'deprecated_topology': 'deprecatedTopology', - 'hints': 'hints', - 'hostname': 'hostname', - 'node_name': 'nodeName', - 'target_ref': 'targetRef', - 'zone': 'zone' - } - - def __init__(self, addresses=None, conditions=None, deprecated_topology=None, hints=None, hostname=None, node_name=None, target_ref=None, zone=None, local_vars_configuration=None): # noqa: E501 - """V1Endpoint - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._addresses = None - self._conditions = None - self._deprecated_topology = None - self._hints = None - self._hostname = None - self._node_name = None - self._target_ref = None - self._zone = None - self.discriminator = None - - self.addresses = addresses - if conditions is not None: - self.conditions = conditions - if deprecated_topology is not None: - self.deprecated_topology = deprecated_topology - if hints is not None: - self.hints = hints - if hostname is not None: - self.hostname = hostname - if node_name is not None: - self.node_name = node_name - if target_ref is not None: - self.target_ref = target_ref - if zone is not None: - self.zone = zone - - @property - def addresses(self): - """Gets the addresses of this V1Endpoint. # noqa: E501 - - addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267 # noqa: E501 - - :return: The addresses of this V1Endpoint. # noqa: E501 - :rtype: list[str] - """ - return self._addresses - - @addresses.setter - def addresses(self, addresses): - """Sets the addresses of this V1Endpoint. - - addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267 # noqa: E501 - - :param addresses: The addresses of this V1Endpoint. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and addresses is None: # noqa: E501 - raise ValueError("Invalid value for `addresses`, must not be `None`") # noqa: E501 - - self._addresses = addresses - - @property - def conditions(self): - """Gets the conditions of this V1Endpoint. # noqa: E501 - - - :return: The conditions of this V1Endpoint. # noqa: E501 - :rtype: V1EndpointConditions - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1Endpoint. - - - :param conditions: The conditions of this V1Endpoint. # noqa: E501 - :type: V1EndpointConditions - """ - - self._conditions = conditions - - @property - def deprecated_topology(self): - """Gets the deprecated_topology of this V1Endpoint. # noqa: E501 - - deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead. # noqa: E501 - - :return: The deprecated_topology of this V1Endpoint. # noqa: E501 - :rtype: dict(str, str) - """ - return self._deprecated_topology - - @deprecated_topology.setter - def deprecated_topology(self, deprecated_topology): - """Sets the deprecated_topology of this V1Endpoint. - - deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead. # noqa: E501 - - :param deprecated_topology: The deprecated_topology of this V1Endpoint. # noqa: E501 - :type: dict(str, str) - """ - - self._deprecated_topology = deprecated_topology - - @property - def hints(self): - """Gets the hints of this V1Endpoint. # noqa: E501 - - - :return: The hints of this V1Endpoint. # noqa: E501 - :rtype: V1EndpointHints - """ - return self._hints - - @hints.setter - def hints(self, hints): - """Sets the hints of this V1Endpoint. - - - :param hints: The hints of this V1Endpoint. # noqa: E501 - :type: V1EndpointHints - """ - - self._hints = hints - - @property - def hostname(self): - """Gets the hostname of this V1Endpoint. # noqa: E501 - - hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation. # noqa: E501 - - :return: The hostname of this V1Endpoint. # noqa: E501 - :rtype: str - """ - return self._hostname - - @hostname.setter - def hostname(self, hostname): - """Sets the hostname of this V1Endpoint. - - hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation. # noqa: E501 - - :param hostname: The hostname of this V1Endpoint. # noqa: E501 - :type: str - """ - - self._hostname = hostname - - @property - def node_name(self): - """Gets the node_name of this V1Endpoint. # noqa: E501 - - nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. # noqa: E501 - - :return: The node_name of this V1Endpoint. # noqa: E501 - :rtype: str - """ - return self._node_name - - @node_name.setter - def node_name(self, node_name): - """Sets the node_name of this V1Endpoint. - - nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. # noqa: E501 - - :param node_name: The node_name of this V1Endpoint. # noqa: E501 - :type: str - """ - - self._node_name = node_name - - @property - def target_ref(self): - """Gets the target_ref of this V1Endpoint. # noqa: E501 - - - :return: The target_ref of this V1Endpoint. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._target_ref - - @target_ref.setter - def target_ref(self, target_ref): - """Sets the target_ref of this V1Endpoint. - - - :param target_ref: The target_ref of this V1Endpoint. # noqa: E501 - :type: V1ObjectReference - """ - - self._target_ref = target_ref - - @property - def zone(self): - """Gets the zone of this V1Endpoint. # noqa: E501 - - zone is the name of the Zone this endpoint exists in. # noqa: E501 - - :return: The zone of this V1Endpoint. # noqa: E501 - :rtype: str - """ - return self._zone - - @zone.setter - def zone(self, zone): - """Sets the zone of this V1Endpoint. - - zone is the name of the Zone this endpoint exists in. # noqa: E501 - - :param zone: The zone of this V1Endpoint. # noqa: E501 - :type: str - """ - - self._zone = zone - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Endpoint): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Endpoint): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_address.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_address.py deleted file mode 100644 index b0a12e4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_address.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointAddress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hostname': 'str', - 'ip': 'str', - 'node_name': 'str', - 'target_ref': 'V1ObjectReference' - } - - attribute_map = { - 'hostname': 'hostname', - 'ip': 'ip', - 'node_name': 'nodeName', - 'target_ref': 'targetRef' - } - - def __init__(self, hostname=None, ip=None, node_name=None, target_ref=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointAddress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hostname = None - self._ip = None - self._node_name = None - self._target_ref = None - self.discriminator = None - - if hostname is not None: - self.hostname = hostname - self.ip = ip - if node_name is not None: - self.node_name = node_name - if target_ref is not None: - self.target_ref = target_ref - - @property - def hostname(self): - """Gets the hostname of this V1EndpointAddress. # noqa: E501 - - The Hostname of this endpoint # noqa: E501 - - :return: The hostname of this V1EndpointAddress. # noqa: E501 - :rtype: str - """ - return self._hostname - - @hostname.setter - def hostname(self, hostname): - """Sets the hostname of this V1EndpointAddress. - - The Hostname of this endpoint # noqa: E501 - - :param hostname: The hostname of this V1EndpointAddress. # noqa: E501 - :type: str - """ - - self._hostname = hostname - - @property - def ip(self): - """Gets the ip of this V1EndpointAddress. # noqa: E501 - - The IP of this endpoint. May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16). # noqa: E501 - - :return: The ip of this V1EndpointAddress. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1EndpointAddress. - - The IP of this endpoint. May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16). # noqa: E501 - - :param ip: The ip of this V1EndpointAddress. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and ip is None: # noqa: E501 - raise ValueError("Invalid value for `ip`, must not be `None`") # noqa: E501 - - self._ip = ip - - @property - def node_name(self): - """Gets the node_name of this V1EndpointAddress. # noqa: E501 - - Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. # noqa: E501 - - :return: The node_name of this V1EndpointAddress. # noqa: E501 - :rtype: str - """ - return self._node_name - - @node_name.setter - def node_name(self, node_name): - """Sets the node_name of this V1EndpointAddress. - - Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. # noqa: E501 - - :param node_name: The node_name of this V1EndpointAddress. # noqa: E501 - :type: str - """ - - self._node_name = node_name - - @property - def target_ref(self): - """Gets the target_ref of this V1EndpointAddress. # noqa: E501 - - - :return: The target_ref of this V1EndpointAddress. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._target_ref - - @target_ref.setter - def target_ref(self, target_ref): - """Sets the target_ref of this V1EndpointAddress. - - - :param target_ref: The target_ref of this V1EndpointAddress. # noqa: E501 - :type: V1ObjectReference - """ - - self._target_ref = target_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointAddress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointAddress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_conditions.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_conditions.py deleted file mode 100644 index 1296008..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_conditions.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointConditions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ready': 'bool', - 'serving': 'bool', - 'terminating': 'bool' - } - - attribute_map = { - 'ready': 'ready', - 'serving': 'serving', - 'terminating': 'terminating' - } - - def __init__(self, ready=None, serving=None, terminating=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointConditions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ready = None - self._serving = None - self._terminating = None - self.discriminator = None - - if ready is not None: - self.ready = ready - if serving is not None: - self.serving = serving - if terminating is not None: - self.terminating = terminating - - @property - def ready(self): - """Gets the ready of this V1EndpointConditions. # noqa: E501 - - ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be \"true\" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag. # noqa: E501 - - :return: The ready of this V1EndpointConditions. # noqa: E501 - :rtype: bool - """ - return self._ready - - @ready.setter - def ready(self, ready): - """Sets the ready of this V1EndpointConditions. - - ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be \"true\" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag. # noqa: E501 - - :param ready: The ready of this V1EndpointConditions. # noqa: E501 - :type: bool - """ - - self._ready = ready - - @property - def serving(self): - """Gets the serving of this V1EndpointConditions. # noqa: E501 - - serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. # noqa: E501 - - :return: The serving of this V1EndpointConditions. # noqa: E501 - :rtype: bool - """ - return self._serving - - @serving.setter - def serving(self, serving): - """Sets the serving of this V1EndpointConditions. - - serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition. # noqa: E501 - - :param serving: The serving of this V1EndpointConditions. # noqa: E501 - :type: bool - """ - - self._serving = serving - - @property - def terminating(self): - """Gets the terminating of this V1EndpointConditions. # noqa: E501 - - terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. # noqa: E501 - - :return: The terminating of this V1EndpointConditions. # noqa: E501 - :rtype: bool - """ - return self._terminating - - @terminating.setter - def terminating(self, terminating): - """Sets the terminating of this V1EndpointConditions. - - terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating. # noqa: E501 - - :param terminating: The terminating of this V1EndpointConditions. # noqa: E501 - :type: bool - """ - - self._terminating = terminating - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointConditions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointConditions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_hints.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_hints.py deleted file mode 100644 index 35d8ff3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_hints.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointHints(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'for_zones': 'list[V1ForZone]' - } - - attribute_map = { - 'for_zones': 'forZones' - } - - def __init__(self, for_zones=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointHints - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._for_zones = None - self.discriminator = None - - if for_zones is not None: - self.for_zones = for_zones - - @property - def for_zones(self): - """Gets the for_zones of this V1EndpointHints. # noqa: E501 - - forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. # noqa: E501 - - :return: The for_zones of this V1EndpointHints. # noqa: E501 - :rtype: list[V1ForZone] - """ - return self._for_zones - - @for_zones.setter - def for_zones(self, for_zones): - """Sets the for_zones of this V1EndpointHints. - - forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. # noqa: E501 - - :param for_zones: The for_zones of this V1EndpointHints. # noqa: E501 - :type: list[V1ForZone] - """ - - self._for_zones = for_zones - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointHints): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointHints): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice.py deleted file mode 100644 index 5ec228e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointSlice(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'address_type': 'str', - 'api_version': 'str', - 'endpoints': 'list[V1Endpoint]', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'ports': 'list[DiscoveryV1EndpointPort]' - } - - attribute_map = { - 'address_type': 'addressType', - 'api_version': 'apiVersion', - 'endpoints': 'endpoints', - 'kind': 'kind', - 'metadata': 'metadata', - 'ports': 'ports' - } - - def __init__(self, address_type=None, api_version=None, endpoints=None, kind=None, metadata=None, ports=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointSlice - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._address_type = None - self._api_version = None - self._endpoints = None - self._kind = None - self._metadata = None - self._ports = None - self.discriminator = None - - self.address_type = address_type - if api_version is not None: - self.api_version = api_version - self.endpoints = endpoints - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if ports is not None: - self.ports = ports - - @property - def address_type(self): - """Gets the address_type of this V1EndpointSlice. # noqa: E501 - - addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. # noqa: E501 - - :return: The address_type of this V1EndpointSlice. # noqa: E501 - :rtype: str - """ - return self._address_type - - @address_type.setter - def address_type(self, address_type): - """Sets the address_type of this V1EndpointSlice. - - addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name. # noqa: E501 - - :param address_type: The address_type of this V1EndpointSlice. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and address_type is None: # noqa: E501 - raise ValueError("Invalid value for `address_type`, must not be `None`") # noqa: E501 - - self._address_type = address_type - - @property - def api_version(self): - """Gets the api_version of this V1EndpointSlice. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1EndpointSlice. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1EndpointSlice. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1EndpointSlice. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def endpoints(self): - """Gets the endpoints of this V1EndpointSlice. # noqa: E501 - - endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints. # noqa: E501 - - :return: The endpoints of this V1EndpointSlice. # noqa: E501 - :rtype: list[V1Endpoint] - """ - return self._endpoints - - @endpoints.setter - def endpoints(self, endpoints): - """Sets the endpoints of this V1EndpointSlice. - - endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints. # noqa: E501 - - :param endpoints: The endpoints of this V1EndpointSlice. # noqa: E501 - :type: list[V1Endpoint] - """ - if self.local_vars_configuration.client_side_validation and endpoints is None: # noqa: E501 - raise ValueError("Invalid value for `endpoints`, must not be `None`") # noqa: E501 - - self._endpoints = endpoints - - @property - def kind(self): - """Gets the kind of this V1EndpointSlice. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1EndpointSlice. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1EndpointSlice. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1EndpointSlice. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1EndpointSlice. # noqa: E501 - - - :return: The metadata of this V1EndpointSlice. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1EndpointSlice. - - - :param metadata: The metadata of this V1EndpointSlice. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def ports(self): - """Gets the ports of this V1EndpointSlice. # noqa: E501 - - ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates \"all ports\". Each slice may include a maximum of 100 ports. # noqa: E501 - - :return: The ports of this V1EndpointSlice. # noqa: E501 - :rtype: list[DiscoveryV1EndpointPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1EndpointSlice. - - ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates \"all ports\". Each slice may include a maximum of 100 ports. # noqa: E501 - - :param ports: The ports of this V1EndpointSlice. # noqa: E501 - :type: list[DiscoveryV1EndpointPort] - """ - - self._ports = ports - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointSlice): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointSlice): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice_list.py deleted file mode 100644 index b48d9c0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_slice_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointSliceList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1EndpointSlice]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointSliceList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1EndpointSliceList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1EndpointSliceList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1EndpointSliceList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1EndpointSliceList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1EndpointSliceList. # noqa: E501 - - items is the list of endpoint slices # noqa: E501 - - :return: The items of this V1EndpointSliceList. # noqa: E501 - :rtype: list[V1EndpointSlice] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1EndpointSliceList. - - items is the list of endpoint slices # noqa: E501 - - :param items: The items of this V1EndpointSliceList. # noqa: E501 - :type: list[V1EndpointSlice] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1EndpointSliceList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1EndpointSliceList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1EndpointSliceList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1EndpointSliceList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1EndpointSliceList. # noqa: E501 - - - :return: The metadata of this V1EndpointSliceList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1EndpointSliceList. - - - :param metadata: The metadata of this V1EndpointSliceList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointSliceList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointSliceList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_subset.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_subset.py deleted file mode 100644 index fd03107..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoint_subset.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointSubset(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'addresses': 'list[V1EndpointAddress]', - 'not_ready_addresses': 'list[V1EndpointAddress]', - 'ports': 'list[CoreV1EndpointPort]' - } - - attribute_map = { - 'addresses': 'addresses', - 'not_ready_addresses': 'notReadyAddresses', - 'ports': 'ports' - } - - def __init__(self, addresses=None, not_ready_addresses=None, ports=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointSubset - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._addresses = None - self._not_ready_addresses = None - self._ports = None - self.discriminator = None - - if addresses is not None: - self.addresses = addresses - if not_ready_addresses is not None: - self.not_ready_addresses = not_ready_addresses - if ports is not None: - self.ports = ports - - @property - def addresses(self): - """Gets the addresses of this V1EndpointSubset. # noqa: E501 - - IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize. # noqa: E501 - - :return: The addresses of this V1EndpointSubset. # noqa: E501 - :rtype: list[V1EndpointAddress] - """ - return self._addresses - - @addresses.setter - def addresses(self, addresses): - """Sets the addresses of this V1EndpointSubset. - - IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize. # noqa: E501 - - :param addresses: The addresses of this V1EndpointSubset. # noqa: E501 - :type: list[V1EndpointAddress] - """ - - self._addresses = addresses - - @property - def not_ready_addresses(self): - """Gets the not_ready_addresses of this V1EndpointSubset. # noqa: E501 - - IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check. # noqa: E501 - - :return: The not_ready_addresses of this V1EndpointSubset. # noqa: E501 - :rtype: list[V1EndpointAddress] - """ - return self._not_ready_addresses - - @not_ready_addresses.setter - def not_ready_addresses(self, not_ready_addresses): - """Sets the not_ready_addresses of this V1EndpointSubset. - - IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check. # noqa: E501 - - :param not_ready_addresses: The not_ready_addresses of this V1EndpointSubset. # noqa: E501 - :type: list[V1EndpointAddress] - """ - - self._not_ready_addresses = not_ready_addresses - - @property - def ports(self): - """Gets the ports of this V1EndpointSubset. # noqa: E501 - - Port numbers available on the related IP addresses. # noqa: E501 - - :return: The ports of this V1EndpointSubset. # noqa: E501 - :rtype: list[CoreV1EndpointPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1EndpointSubset. - - Port numbers available on the related IP addresses. # noqa: E501 - - :param ports: The ports of this V1EndpointSubset. # noqa: E501 - :type: list[CoreV1EndpointPort] - """ - - self._ports = ports - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointSubset): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointSubset): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints.py deleted file mode 100644 index 1d2819b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Endpoints(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'subsets': 'list[V1EndpointSubset]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'subsets': 'subsets' - } - - def __init__(self, api_version=None, kind=None, metadata=None, subsets=None, local_vars_configuration=None): # noqa: E501 - """V1Endpoints - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._subsets = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if subsets is not None: - self.subsets = subsets - - @property - def api_version(self): - """Gets the api_version of this V1Endpoints. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Endpoints. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Endpoints. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Endpoints. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Endpoints. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Endpoints. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Endpoints. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Endpoints. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Endpoints. # noqa: E501 - - - :return: The metadata of this V1Endpoints. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Endpoints. - - - :param metadata: The metadata of this V1Endpoints. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def subsets(self): - """Gets the subsets of this V1Endpoints. # noqa: E501 - - The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service. # noqa: E501 - - :return: The subsets of this V1Endpoints. # noqa: E501 - :rtype: list[V1EndpointSubset] - """ - return self._subsets - - @subsets.setter - def subsets(self, subsets): - """Sets the subsets of this V1Endpoints. - - The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service. # noqa: E501 - - :param subsets: The subsets of this V1Endpoints. # noqa: E501 - :type: list[V1EndpointSubset] - """ - - self._subsets = subsets - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Endpoints): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Endpoints): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints_list.py deleted file mode 100644 index 250ac1a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_endpoints_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EndpointsList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Endpoints]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1EndpointsList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1EndpointsList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1EndpointsList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1EndpointsList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1EndpointsList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1EndpointsList. # noqa: E501 - - List of endpoints. # noqa: E501 - - :return: The items of this V1EndpointsList. # noqa: E501 - :rtype: list[V1Endpoints] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1EndpointsList. - - List of endpoints. # noqa: E501 - - :param items: The items of this V1EndpointsList. # noqa: E501 - :type: list[V1Endpoints] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1EndpointsList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1EndpointsList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1EndpointsList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1EndpointsList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1EndpointsList. # noqa: E501 - - - :return: The metadata of this V1EndpointsList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1EndpointsList. - - - :param metadata: The metadata of this V1EndpointsList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EndpointsList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EndpointsList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_from_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_from_source.py deleted file mode 100644 index d2bd221..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_from_source.py +++ /dev/null @@ -1,174 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EnvFromSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'config_map_ref': 'V1ConfigMapEnvSource', - 'prefix': 'str', - 'secret_ref': 'V1SecretEnvSource' - } - - attribute_map = { - 'config_map_ref': 'configMapRef', - 'prefix': 'prefix', - 'secret_ref': 'secretRef' - } - - def __init__(self, config_map_ref=None, prefix=None, secret_ref=None, local_vars_configuration=None): # noqa: E501 - """V1EnvFromSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._config_map_ref = None - self._prefix = None - self._secret_ref = None - self.discriminator = None - - if config_map_ref is not None: - self.config_map_ref = config_map_ref - if prefix is not None: - self.prefix = prefix - if secret_ref is not None: - self.secret_ref = secret_ref - - @property - def config_map_ref(self): - """Gets the config_map_ref of this V1EnvFromSource. # noqa: E501 - - - :return: The config_map_ref of this V1EnvFromSource. # noqa: E501 - :rtype: V1ConfigMapEnvSource - """ - return self._config_map_ref - - @config_map_ref.setter - def config_map_ref(self, config_map_ref): - """Sets the config_map_ref of this V1EnvFromSource. - - - :param config_map_ref: The config_map_ref of this V1EnvFromSource. # noqa: E501 - :type: V1ConfigMapEnvSource - """ - - self._config_map_ref = config_map_ref - - @property - def prefix(self): - """Gets the prefix of this V1EnvFromSource. # noqa: E501 - - An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. # noqa: E501 - - :return: The prefix of this V1EnvFromSource. # noqa: E501 - :rtype: str - """ - return self._prefix - - @prefix.setter - def prefix(self, prefix): - """Sets the prefix of this V1EnvFromSource. - - An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. # noqa: E501 - - :param prefix: The prefix of this V1EnvFromSource. # noqa: E501 - :type: str - """ - - self._prefix = prefix - - @property - def secret_ref(self): - """Gets the secret_ref of this V1EnvFromSource. # noqa: E501 - - - :return: The secret_ref of this V1EnvFromSource. # noqa: E501 - :rtype: V1SecretEnvSource - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1EnvFromSource. - - - :param secret_ref: The secret_ref of this V1EnvFromSource. # noqa: E501 - :type: V1SecretEnvSource - """ - - self._secret_ref = secret_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EnvFromSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EnvFromSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var.py deleted file mode 100644 index bdc92d6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EnvVar(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'value': 'str', - 'value_from': 'V1EnvVarSource' - } - - attribute_map = { - 'name': 'name', - 'value': 'value', - 'value_from': 'valueFrom' - } - - def __init__(self, name=None, value=None, value_from=None, local_vars_configuration=None): # noqa: E501 - """V1EnvVar - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._value = None - self._value_from = None - self.discriminator = None - - self.name = name - if value is not None: - self.value = value - if value_from is not None: - self.value_from = value_from - - @property - def name(self): - """Gets the name of this V1EnvVar. # noqa: E501 - - Name of the environment variable. Must be a C_IDENTIFIER. # noqa: E501 - - :return: The name of this V1EnvVar. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1EnvVar. - - Name of the environment variable. Must be a C_IDENTIFIER. # noqa: E501 - - :param name: The name of this V1EnvVar. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def value(self): - """Gets the value of this V1EnvVar. # noqa: E501 - - Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\". # noqa: E501 - - :return: The value of this V1EnvVar. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1EnvVar. - - Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\". # noqa: E501 - - :param value: The value of this V1EnvVar. # noqa: E501 - :type: str - """ - - self._value = value - - @property - def value_from(self): - """Gets the value_from of this V1EnvVar. # noqa: E501 - - - :return: The value_from of this V1EnvVar. # noqa: E501 - :rtype: V1EnvVarSource - """ - return self._value_from - - @value_from.setter - def value_from(self, value_from): - """Sets the value_from of this V1EnvVar. - - - :param value_from: The value_from of this V1EnvVar. # noqa: E501 - :type: V1EnvVarSource - """ - - self._value_from = value_from - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EnvVar): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EnvVar): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var_source.py deleted file mode 100644 index 3fe44e3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_env_var_source.py +++ /dev/null @@ -1,198 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EnvVarSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'config_map_key_ref': 'V1ConfigMapKeySelector', - 'field_ref': 'V1ObjectFieldSelector', - 'resource_field_ref': 'V1ResourceFieldSelector', - 'secret_key_ref': 'V1SecretKeySelector' - } - - attribute_map = { - 'config_map_key_ref': 'configMapKeyRef', - 'field_ref': 'fieldRef', - 'resource_field_ref': 'resourceFieldRef', - 'secret_key_ref': 'secretKeyRef' - } - - def __init__(self, config_map_key_ref=None, field_ref=None, resource_field_ref=None, secret_key_ref=None, local_vars_configuration=None): # noqa: E501 - """V1EnvVarSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._config_map_key_ref = None - self._field_ref = None - self._resource_field_ref = None - self._secret_key_ref = None - self.discriminator = None - - if config_map_key_ref is not None: - self.config_map_key_ref = config_map_key_ref - if field_ref is not None: - self.field_ref = field_ref - if resource_field_ref is not None: - self.resource_field_ref = resource_field_ref - if secret_key_ref is not None: - self.secret_key_ref = secret_key_ref - - @property - def config_map_key_ref(self): - """Gets the config_map_key_ref of this V1EnvVarSource. # noqa: E501 - - - :return: The config_map_key_ref of this V1EnvVarSource. # noqa: E501 - :rtype: V1ConfigMapKeySelector - """ - return self._config_map_key_ref - - @config_map_key_ref.setter - def config_map_key_ref(self, config_map_key_ref): - """Sets the config_map_key_ref of this V1EnvVarSource. - - - :param config_map_key_ref: The config_map_key_ref of this V1EnvVarSource. # noqa: E501 - :type: V1ConfigMapKeySelector - """ - - self._config_map_key_ref = config_map_key_ref - - @property - def field_ref(self): - """Gets the field_ref of this V1EnvVarSource. # noqa: E501 - - - :return: The field_ref of this V1EnvVarSource. # noqa: E501 - :rtype: V1ObjectFieldSelector - """ - return self._field_ref - - @field_ref.setter - def field_ref(self, field_ref): - """Sets the field_ref of this V1EnvVarSource. - - - :param field_ref: The field_ref of this V1EnvVarSource. # noqa: E501 - :type: V1ObjectFieldSelector - """ - - self._field_ref = field_ref - - @property - def resource_field_ref(self): - """Gets the resource_field_ref of this V1EnvVarSource. # noqa: E501 - - - :return: The resource_field_ref of this V1EnvVarSource. # noqa: E501 - :rtype: V1ResourceFieldSelector - """ - return self._resource_field_ref - - @resource_field_ref.setter - def resource_field_ref(self, resource_field_ref): - """Sets the resource_field_ref of this V1EnvVarSource. - - - :param resource_field_ref: The resource_field_ref of this V1EnvVarSource. # noqa: E501 - :type: V1ResourceFieldSelector - """ - - self._resource_field_ref = resource_field_ref - - @property - def secret_key_ref(self): - """Gets the secret_key_ref of this V1EnvVarSource. # noqa: E501 - - - :return: The secret_key_ref of this V1EnvVarSource. # noqa: E501 - :rtype: V1SecretKeySelector - """ - return self._secret_key_ref - - @secret_key_ref.setter - def secret_key_ref(self, secret_key_ref): - """Sets the secret_key_ref of this V1EnvVarSource. - - - :param secret_key_ref: The secret_key_ref of this V1EnvVarSource. # noqa: E501 - :type: V1SecretKeySelector - """ - - self._secret_key_ref = secret_key_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EnvVarSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EnvVarSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_container.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_container.py deleted file mode 100644 index ffdc9cd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_container.py +++ /dev/null @@ -1,783 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EphemeralContainer(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'args': 'list[str]', - 'command': 'list[str]', - 'env': 'list[V1EnvVar]', - 'env_from': 'list[V1EnvFromSource]', - 'image': 'str', - 'image_pull_policy': 'str', - 'lifecycle': 'V1Lifecycle', - 'liveness_probe': 'V1Probe', - 'name': 'str', - 'ports': 'list[V1ContainerPort]', - 'readiness_probe': 'V1Probe', - 'resize_policy': 'list[V1ContainerResizePolicy]', - 'resources': 'V1ResourceRequirements', - 'restart_policy': 'str', - 'security_context': 'V1SecurityContext', - 'startup_probe': 'V1Probe', - 'stdin': 'bool', - 'stdin_once': 'bool', - 'target_container_name': 'str', - 'termination_message_path': 'str', - 'termination_message_policy': 'str', - 'tty': 'bool', - 'volume_devices': 'list[V1VolumeDevice]', - 'volume_mounts': 'list[V1VolumeMount]', - 'working_dir': 'str' - } - - attribute_map = { - 'args': 'args', - 'command': 'command', - 'env': 'env', - 'env_from': 'envFrom', - 'image': 'image', - 'image_pull_policy': 'imagePullPolicy', - 'lifecycle': 'lifecycle', - 'liveness_probe': 'livenessProbe', - 'name': 'name', - 'ports': 'ports', - 'readiness_probe': 'readinessProbe', - 'resize_policy': 'resizePolicy', - 'resources': 'resources', - 'restart_policy': 'restartPolicy', - 'security_context': 'securityContext', - 'startup_probe': 'startupProbe', - 'stdin': 'stdin', - 'stdin_once': 'stdinOnce', - 'target_container_name': 'targetContainerName', - 'termination_message_path': 'terminationMessagePath', - 'termination_message_policy': 'terminationMessagePolicy', - 'tty': 'tty', - 'volume_devices': 'volumeDevices', - 'volume_mounts': 'volumeMounts', - 'working_dir': 'workingDir' - } - - def __init__(self, args=None, command=None, env=None, env_from=None, image=None, image_pull_policy=None, lifecycle=None, liveness_probe=None, name=None, ports=None, readiness_probe=None, resize_policy=None, resources=None, restart_policy=None, security_context=None, startup_probe=None, stdin=None, stdin_once=None, target_container_name=None, termination_message_path=None, termination_message_policy=None, tty=None, volume_devices=None, volume_mounts=None, working_dir=None, local_vars_configuration=None): # noqa: E501 - """V1EphemeralContainer - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._args = None - self._command = None - self._env = None - self._env_from = None - self._image = None - self._image_pull_policy = None - self._lifecycle = None - self._liveness_probe = None - self._name = None - self._ports = None - self._readiness_probe = None - self._resize_policy = None - self._resources = None - self._restart_policy = None - self._security_context = None - self._startup_probe = None - self._stdin = None - self._stdin_once = None - self._target_container_name = None - self._termination_message_path = None - self._termination_message_policy = None - self._tty = None - self._volume_devices = None - self._volume_mounts = None - self._working_dir = None - self.discriminator = None - - if args is not None: - self.args = args - if command is not None: - self.command = command - if env is not None: - self.env = env - if env_from is not None: - self.env_from = env_from - if image is not None: - self.image = image - if image_pull_policy is not None: - self.image_pull_policy = image_pull_policy - if lifecycle is not None: - self.lifecycle = lifecycle - if liveness_probe is not None: - self.liveness_probe = liveness_probe - self.name = name - if ports is not None: - self.ports = ports - if readiness_probe is not None: - self.readiness_probe = readiness_probe - if resize_policy is not None: - self.resize_policy = resize_policy - if resources is not None: - self.resources = resources - if restart_policy is not None: - self.restart_policy = restart_policy - if security_context is not None: - self.security_context = security_context - if startup_probe is not None: - self.startup_probe = startup_probe - if stdin is not None: - self.stdin = stdin - if stdin_once is not None: - self.stdin_once = stdin_once - if target_container_name is not None: - self.target_container_name = target_container_name - if termination_message_path is not None: - self.termination_message_path = termination_message_path - if termination_message_policy is not None: - self.termination_message_policy = termination_message_policy - if tty is not None: - self.tty = tty - if volume_devices is not None: - self.volume_devices = volume_devices - if volume_mounts is not None: - self.volume_mounts = volume_mounts - if working_dir is not None: - self.working_dir = working_dir - - @property - def args(self): - """Gets the args of this V1EphemeralContainer. # noqa: E501 - - Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :return: The args of this V1EphemeralContainer. # noqa: E501 - :rtype: list[str] - """ - return self._args - - @args.setter - def args(self, args): - """Sets the args of this V1EphemeralContainer. - - Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :param args: The args of this V1EphemeralContainer. # noqa: E501 - :type: list[str] - """ - - self._args = args - - @property - def command(self): - """Gets the command of this V1EphemeralContainer. # noqa: E501 - - Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :return: The command of this V1EphemeralContainer. # noqa: E501 - :rtype: list[str] - """ - return self._command - - @command.setter - def command(self, command): - """Sets the command of this V1EphemeralContainer. - - Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell # noqa: E501 - - :param command: The command of this V1EphemeralContainer. # noqa: E501 - :type: list[str] - """ - - self._command = command - - @property - def env(self): - """Gets the env of this V1EphemeralContainer. # noqa: E501 - - List of environment variables to set in the container. Cannot be updated. # noqa: E501 - - :return: The env of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1EnvVar] - """ - return self._env - - @env.setter - def env(self, env): - """Sets the env of this V1EphemeralContainer. - - List of environment variables to set in the container. Cannot be updated. # noqa: E501 - - :param env: The env of this V1EphemeralContainer. # noqa: E501 - :type: list[V1EnvVar] - """ - - self._env = env - - @property - def env_from(self): - """Gets the env_from of this V1EphemeralContainer. # noqa: E501 - - List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. # noqa: E501 - - :return: The env_from of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1EnvFromSource] - """ - return self._env_from - - @env_from.setter - def env_from(self, env_from): - """Sets the env_from of this V1EphemeralContainer. - - List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. # noqa: E501 - - :param env_from: The env_from of this V1EphemeralContainer. # noqa: E501 - :type: list[V1EnvFromSource] - """ - - self._env_from = env_from - - @property - def image(self): - """Gets the image of this V1EphemeralContainer. # noqa: E501 - - Container image name. More info: https://kubernetes.io/docs/concepts/containers/images # noqa: E501 - - :return: The image of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._image - - @image.setter - def image(self, image): - """Sets the image of this V1EphemeralContainer. - - Container image name. More info: https://kubernetes.io/docs/concepts/containers/images # noqa: E501 - - :param image: The image of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._image = image - - @property - def image_pull_policy(self): - """Gets the image_pull_policy of this V1EphemeralContainer. # noqa: E501 - - Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images # noqa: E501 - - :return: The image_pull_policy of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._image_pull_policy - - @image_pull_policy.setter - def image_pull_policy(self, image_pull_policy): - """Sets the image_pull_policy of this V1EphemeralContainer. - - Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images # noqa: E501 - - :param image_pull_policy: The image_pull_policy of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._image_pull_policy = image_pull_policy - - @property - def lifecycle(self): - """Gets the lifecycle of this V1EphemeralContainer. # noqa: E501 - - - :return: The lifecycle of this V1EphemeralContainer. # noqa: E501 - :rtype: V1Lifecycle - """ - return self._lifecycle - - @lifecycle.setter - def lifecycle(self, lifecycle): - """Sets the lifecycle of this V1EphemeralContainer. - - - :param lifecycle: The lifecycle of this V1EphemeralContainer. # noqa: E501 - :type: V1Lifecycle - """ - - self._lifecycle = lifecycle - - @property - def liveness_probe(self): - """Gets the liveness_probe of this V1EphemeralContainer. # noqa: E501 - - - :return: The liveness_probe of this V1EphemeralContainer. # noqa: E501 - :rtype: V1Probe - """ - return self._liveness_probe - - @liveness_probe.setter - def liveness_probe(self, liveness_probe): - """Sets the liveness_probe of this V1EphemeralContainer. - - - :param liveness_probe: The liveness_probe of this V1EphemeralContainer. # noqa: E501 - :type: V1Probe - """ - - self._liveness_probe = liveness_probe - - @property - def name(self): - """Gets the name of this V1EphemeralContainer. # noqa: E501 - - Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers. # noqa: E501 - - :return: The name of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1EphemeralContainer. - - Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers. # noqa: E501 - - :param name: The name of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def ports(self): - """Gets the ports of this V1EphemeralContainer. # noqa: E501 - - Ports are not allowed for ephemeral containers. # noqa: E501 - - :return: The ports of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1ContainerPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1EphemeralContainer. - - Ports are not allowed for ephemeral containers. # noqa: E501 - - :param ports: The ports of this V1EphemeralContainer. # noqa: E501 - :type: list[V1ContainerPort] - """ - - self._ports = ports - - @property - def readiness_probe(self): - """Gets the readiness_probe of this V1EphemeralContainer. # noqa: E501 - - - :return: The readiness_probe of this V1EphemeralContainer. # noqa: E501 - :rtype: V1Probe - """ - return self._readiness_probe - - @readiness_probe.setter - def readiness_probe(self, readiness_probe): - """Sets the readiness_probe of this V1EphemeralContainer. - - - :param readiness_probe: The readiness_probe of this V1EphemeralContainer. # noqa: E501 - :type: V1Probe - """ - - self._readiness_probe = readiness_probe - - @property - def resize_policy(self): - """Gets the resize_policy of this V1EphemeralContainer. # noqa: E501 - - Resources resize policy for the container. # noqa: E501 - - :return: The resize_policy of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1ContainerResizePolicy] - """ - return self._resize_policy - - @resize_policy.setter - def resize_policy(self, resize_policy): - """Sets the resize_policy of this V1EphemeralContainer. - - Resources resize policy for the container. # noqa: E501 - - :param resize_policy: The resize_policy of this V1EphemeralContainer. # noqa: E501 - :type: list[V1ContainerResizePolicy] - """ - - self._resize_policy = resize_policy - - @property - def resources(self): - """Gets the resources of this V1EphemeralContainer. # noqa: E501 - - - :return: The resources of this V1EphemeralContainer. # noqa: E501 - :rtype: V1ResourceRequirements - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1EphemeralContainer. - - - :param resources: The resources of this V1EphemeralContainer. # noqa: E501 - :type: V1ResourceRequirements - """ - - self._resources = resources - - @property - def restart_policy(self): - """Gets the restart_policy of this V1EphemeralContainer. # noqa: E501 - - Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers. # noqa: E501 - - :return: The restart_policy of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._restart_policy - - @restart_policy.setter - def restart_policy(self, restart_policy): - """Sets the restart_policy of this V1EphemeralContainer. - - Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers. # noqa: E501 - - :param restart_policy: The restart_policy of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._restart_policy = restart_policy - - @property - def security_context(self): - """Gets the security_context of this V1EphemeralContainer. # noqa: E501 - - - :return: The security_context of this V1EphemeralContainer. # noqa: E501 - :rtype: V1SecurityContext - """ - return self._security_context - - @security_context.setter - def security_context(self, security_context): - """Sets the security_context of this V1EphemeralContainer. - - - :param security_context: The security_context of this V1EphemeralContainer. # noqa: E501 - :type: V1SecurityContext - """ - - self._security_context = security_context - - @property - def startup_probe(self): - """Gets the startup_probe of this V1EphemeralContainer. # noqa: E501 - - - :return: The startup_probe of this V1EphemeralContainer. # noqa: E501 - :rtype: V1Probe - """ - return self._startup_probe - - @startup_probe.setter - def startup_probe(self, startup_probe): - """Sets the startup_probe of this V1EphemeralContainer. - - - :param startup_probe: The startup_probe of this V1EphemeralContainer. # noqa: E501 - :type: V1Probe - """ - - self._startup_probe = startup_probe - - @property - def stdin(self): - """Gets the stdin of this V1EphemeralContainer. # noqa: E501 - - Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. # noqa: E501 - - :return: The stdin of this V1EphemeralContainer. # noqa: E501 - :rtype: bool - """ - return self._stdin - - @stdin.setter - def stdin(self, stdin): - """Sets the stdin of this V1EphemeralContainer. - - Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. # noqa: E501 - - :param stdin: The stdin of this V1EphemeralContainer. # noqa: E501 - :type: bool - """ - - self._stdin = stdin - - @property - def stdin_once(self): - """Gets the stdin_once of this V1EphemeralContainer. # noqa: E501 - - Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false # noqa: E501 - - :return: The stdin_once of this V1EphemeralContainer. # noqa: E501 - :rtype: bool - """ - return self._stdin_once - - @stdin_once.setter - def stdin_once(self, stdin_once): - """Sets the stdin_once of this V1EphemeralContainer. - - Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false # noqa: E501 - - :param stdin_once: The stdin_once of this V1EphemeralContainer. # noqa: E501 - :type: bool - """ - - self._stdin_once = stdin_once - - @property - def target_container_name(self): - """Gets the target_container_name of this V1EphemeralContainer. # noqa: E501 - - If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined. # noqa: E501 - - :return: The target_container_name of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._target_container_name - - @target_container_name.setter - def target_container_name(self, target_container_name): - """Sets the target_container_name of this V1EphemeralContainer. - - If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined. # noqa: E501 - - :param target_container_name: The target_container_name of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._target_container_name = target_container_name - - @property - def termination_message_path(self): - """Gets the termination_message_path of this V1EphemeralContainer. # noqa: E501 - - Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. # noqa: E501 - - :return: The termination_message_path of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._termination_message_path - - @termination_message_path.setter - def termination_message_path(self, termination_message_path): - """Sets the termination_message_path of this V1EphemeralContainer. - - Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. # noqa: E501 - - :param termination_message_path: The termination_message_path of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._termination_message_path = termination_message_path - - @property - def termination_message_policy(self): - """Gets the termination_message_policy of this V1EphemeralContainer. # noqa: E501 - - Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. # noqa: E501 - - :return: The termination_message_policy of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._termination_message_policy - - @termination_message_policy.setter - def termination_message_policy(self, termination_message_policy): - """Sets the termination_message_policy of this V1EphemeralContainer. - - Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. # noqa: E501 - - :param termination_message_policy: The termination_message_policy of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._termination_message_policy = termination_message_policy - - @property - def tty(self): - """Gets the tty of this V1EphemeralContainer. # noqa: E501 - - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. # noqa: E501 - - :return: The tty of this V1EphemeralContainer. # noqa: E501 - :rtype: bool - """ - return self._tty - - @tty.setter - def tty(self, tty): - """Sets the tty of this V1EphemeralContainer. - - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. # noqa: E501 - - :param tty: The tty of this V1EphemeralContainer. # noqa: E501 - :type: bool - """ - - self._tty = tty - - @property - def volume_devices(self): - """Gets the volume_devices of this V1EphemeralContainer. # noqa: E501 - - volumeDevices is the list of block devices to be used by the container. # noqa: E501 - - :return: The volume_devices of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1VolumeDevice] - """ - return self._volume_devices - - @volume_devices.setter - def volume_devices(self, volume_devices): - """Sets the volume_devices of this V1EphemeralContainer. - - volumeDevices is the list of block devices to be used by the container. # noqa: E501 - - :param volume_devices: The volume_devices of this V1EphemeralContainer. # noqa: E501 - :type: list[V1VolumeDevice] - """ - - self._volume_devices = volume_devices - - @property - def volume_mounts(self): - """Gets the volume_mounts of this V1EphemeralContainer. # noqa: E501 - - Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated. # noqa: E501 - - :return: The volume_mounts of this V1EphemeralContainer. # noqa: E501 - :rtype: list[V1VolumeMount] - """ - return self._volume_mounts - - @volume_mounts.setter - def volume_mounts(self, volume_mounts): - """Sets the volume_mounts of this V1EphemeralContainer. - - Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated. # noqa: E501 - - :param volume_mounts: The volume_mounts of this V1EphemeralContainer. # noqa: E501 - :type: list[V1VolumeMount] - """ - - self._volume_mounts = volume_mounts - - @property - def working_dir(self): - """Gets the working_dir of this V1EphemeralContainer. # noqa: E501 - - Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. # noqa: E501 - - :return: The working_dir of this V1EphemeralContainer. # noqa: E501 - :rtype: str - """ - return self._working_dir - - @working_dir.setter - def working_dir(self, working_dir): - """Sets the working_dir of this V1EphemeralContainer. - - Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. # noqa: E501 - - :param working_dir: The working_dir of this V1EphemeralContainer. # noqa: E501 - :type: str - """ - - self._working_dir = working_dir - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EphemeralContainer): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EphemeralContainer): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_volume_source.py deleted file mode 100644 index 159c30c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ephemeral_volume_source.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EphemeralVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'volume_claim_template': 'V1PersistentVolumeClaimTemplate' - } - - attribute_map = { - 'volume_claim_template': 'volumeClaimTemplate' - } - - def __init__(self, volume_claim_template=None, local_vars_configuration=None): # noqa: E501 - """V1EphemeralVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._volume_claim_template = None - self.discriminator = None - - if volume_claim_template is not None: - self.volume_claim_template = volume_claim_template - - @property - def volume_claim_template(self): - """Gets the volume_claim_template of this V1EphemeralVolumeSource. # noqa: E501 - - - :return: The volume_claim_template of this V1EphemeralVolumeSource. # noqa: E501 - :rtype: V1PersistentVolumeClaimTemplate - """ - return self._volume_claim_template - - @volume_claim_template.setter - def volume_claim_template(self, volume_claim_template): - """Sets the volume_claim_template of this V1EphemeralVolumeSource. - - - :param volume_claim_template: The volume_claim_template of this V1EphemeralVolumeSource. # noqa: E501 - :type: V1PersistentVolumeClaimTemplate - """ - - self._volume_claim_template = volume_claim_template - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EphemeralVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EphemeralVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_event_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_event_source.py deleted file mode 100644 index 7872693..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_event_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1EventSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'component': 'str', - 'host': 'str' - } - - attribute_map = { - 'component': 'component', - 'host': 'host' - } - - def __init__(self, component=None, host=None, local_vars_configuration=None): # noqa: E501 - """V1EventSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._component = None - self._host = None - self.discriminator = None - - if component is not None: - self.component = component - if host is not None: - self.host = host - - @property - def component(self): - """Gets the component of this V1EventSource. # noqa: E501 - - Component from which the event is generated. # noqa: E501 - - :return: The component of this V1EventSource. # noqa: E501 - :rtype: str - """ - return self._component - - @component.setter - def component(self, component): - """Sets the component of this V1EventSource. - - Component from which the event is generated. # noqa: E501 - - :param component: The component of this V1EventSource. # noqa: E501 - :type: str - """ - - self._component = component - - @property - def host(self): - """Gets the host of this V1EventSource. # noqa: E501 - - Node name on which the event is generated. # noqa: E501 - - :return: The host of this V1EventSource. # noqa: E501 - :rtype: str - """ - return self._host - - @host.setter - def host(self, host): - """Sets the host of this V1EventSource. - - Node name on which the event is generated. # noqa: E501 - - :param host: The host of this V1EventSource. # noqa: E501 - :type: str - """ - - self._host = host - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1EventSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1EventSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_eviction.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_eviction.py deleted file mode 100644 index adc6a16..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_eviction.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Eviction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'delete_options': 'V1DeleteOptions', - 'kind': 'str', - 'metadata': 'V1ObjectMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'delete_options': 'deleteOptions', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, delete_options=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1Eviction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._delete_options = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if delete_options is not None: - self.delete_options = delete_options - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1Eviction. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Eviction. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Eviction. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Eviction. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def delete_options(self): - """Gets the delete_options of this V1Eviction. # noqa: E501 - - - :return: The delete_options of this V1Eviction. # noqa: E501 - :rtype: V1DeleteOptions - """ - return self._delete_options - - @delete_options.setter - def delete_options(self, delete_options): - """Sets the delete_options of this V1Eviction. - - - :param delete_options: The delete_options of this V1Eviction. # noqa: E501 - :type: V1DeleteOptions - """ - - self._delete_options = delete_options - - @property - def kind(self): - """Gets the kind of this V1Eviction. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Eviction. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Eviction. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Eviction. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Eviction. # noqa: E501 - - - :return: The metadata of this V1Eviction. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Eviction. - - - :param metadata: The metadata of this V1Eviction. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Eviction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Eviction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exec_action.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exec_action.py deleted file mode 100644 index f88d5f6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exec_action.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ExecAction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'command': 'list[str]' - } - - attribute_map = { - 'command': 'command' - } - - def __init__(self, command=None, local_vars_configuration=None): # noqa: E501 - """V1ExecAction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._command = None - self.discriminator = None - - if command is not None: - self.command = command - - @property - def command(self): - """Gets the command of this V1ExecAction. # noqa: E501 - - Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. # noqa: E501 - - :return: The command of this V1ExecAction. # noqa: E501 - :rtype: list[str] - """ - return self._command - - @command.setter - def command(self, command): - """Sets the command of this V1ExecAction. - - Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. # noqa: E501 - - :param command: The command of this V1ExecAction. # noqa: E501 - :type: list[str] - """ - - self._command = command - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ExecAction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ExecAction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exempt_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exempt_priority_level_configuration.py deleted file mode 100644 index c64f8e5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_exempt_priority_level_configuration.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ExemptPriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'lendable_percent': 'int', - 'nominal_concurrency_shares': 'int' - } - - attribute_map = { - 'lendable_percent': 'lendablePercent', - 'nominal_concurrency_shares': 'nominalConcurrencyShares' - } - - def __init__(self, lendable_percent=None, nominal_concurrency_shares=None, local_vars_configuration=None): # noqa: E501 - """V1ExemptPriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._lendable_percent = None - self._nominal_concurrency_shares = None - self.discriminator = None - - if lendable_percent is not None: - self.lendable_percent = lendable_percent - if nominal_concurrency_shares is not None: - self.nominal_concurrency_shares = nominal_concurrency_shares - - @property - def lendable_percent(self): - """Gets the lendable_percent of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :return: The lendable_percent of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._lendable_percent - - @lendable_percent.setter - def lendable_percent(self, lendable_percent): - """Sets the lendable_percent of this V1ExemptPriorityLevelConfiguration. - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :param lendable_percent: The lendable_percent of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._lendable_percent = lendable_percent - - @property - def nominal_concurrency_shares(self): - """Gets the nominal_concurrency_shares of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. # noqa: E501 - - :return: The nominal_concurrency_shares of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._nominal_concurrency_shares - - @nominal_concurrency_shares.setter - def nominal_concurrency_shares(self, nominal_concurrency_shares): - """Sets the nominal_concurrency_shares of this V1ExemptPriorityLevelConfiguration. - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. # noqa: E501 - - :param nominal_concurrency_shares: The nominal_concurrency_shares of this V1ExemptPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._nominal_concurrency_shares = nominal_concurrency_shares - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ExemptPriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ExemptPriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_external_documentation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_external_documentation.py deleted file mode 100644 index 7ed61c9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_external_documentation.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ExternalDocumentation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'description': 'str', - 'url': 'str' - } - - attribute_map = { - 'description': 'description', - 'url': 'url' - } - - def __init__(self, description=None, url=None, local_vars_configuration=None): # noqa: E501 - """V1ExternalDocumentation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._description = None - self._url = None - self.discriminator = None - - if description is not None: - self.description = description - if url is not None: - self.url = url - - @property - def description(self): - """Gets the description of this V1ExternalDocumentation. # noqa: E501 - - - :return: The description of this V1ExternalDocumentation. # noqa: E501 - :rtype: str - """ - return self._description - - @description.setter - def description(self, description): - """Sets the description of this V1ExternalDocumentation. - - - :param description: The description of this V1ExternalDocumentation. # noqa: E501 - :type: str - """ - - self._description = description - - @property - def url(self): - """Gets the url of this V1ExternalDocumentation. # noqa: E501 - - - :return: The url of this V1ExternalDocumentation. # noqa: E501 - :rtype: str - """ - return self._url - - @url.setter - def url(self, url): - """Sets the url of this V1ExternalDocumentation. - - - :param url: The url of this V1ExternalDocumentation. # noqa: E501 - :type: str - """ - - self._url = url - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ExternalDocumentation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ExternalDocumentation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_fc_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_fc_volume_source.py deleted file mode 100644 index 4c96702..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_fc_volume_source.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FCVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'lun': 'int', - 'read_only': 'bool', - 'target_ww_ns': 'list[str]', - 'wwids': 'list[str]' - } - - attribute_map = { - 'fs_type': 'fsType', - 'lun': 'lun', - 'read_only': 'readOnly', - 'target_ww_ns': 'targetWWNs', - 'wwids': 'wwids' - } - - def __init__(self, fs_type=None, lun=None, read_only=None, target_ww_ns=None, wwids=None, local_vars_configuration=None): # noqa: E501 - """V1FCVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._lun = None - self._read_only = None - self._target_ww_ns = None - self._wwids = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if lun is not None: - self.lun = lun - if read_only is not None: - self.read_only = read_only - if target_ww_ns is not None: - self.target_ww_ns = target_ww_ns - if wwids is not None: - self.wwids = wwids - - @property - def fs_type(self): - """Gets the fs_type of this V1FCVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1FCVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1FCVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1FCVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def lun(self): - """Gets the lun of this V1FCVolumeSource. # noqa: E501 - - lun is Optional: FC target lun number # noqa: E501 - - :return: The lun of this V1FCVolumeSource. # noqa: E501 - :rtype: int - """ - return self._lun - - @lun.setter - def lun(self, lun): - """Sets the lun of this V1FCVolumeSource. - - lun is Optional: FC target lun number # noqa: E501 - - :param lun: The lun of this V1FCVolumeSource. # noqa: E501 - :type: int - """ - - self._lun = lun - - @property - def read_only(self): - """Gets the read_only of this V1FCVolumeSource. # noqa: E501 - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1FCVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1FCVolumeSource. - - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1FCVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def target_ww_ns(self): - """Gets the target_ww_ns of this V1FCVolumeSource. # noqa: E501 - - targetWWNs is Optional: FC target worldwide names (WWNs) # noqa: E501 - - :return: The target_ww_ns of this V1FCVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._target_ww_ns - - @target_ww_ns.setter - def target_ww_ns(self, target_ww_ns): - """Sets the target_ww_ns of this V1FCVolumeSource. - - targetWWNs is Optional: FC target worldwide names (WWNs) # noqa: E501 - - :param target_ww_ns: The target_ww_ns of this V1FCVolumeSource. # noqa: E501 - :type: list[str] - """ - - self._target_ww_ns = target_ww_ns - - @property - def wwids(self): - """Gets the wwids of this V1FCVolumeSource. # noqa: E501 - - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. # noqa: E501 - - :return: The wwids of this V1FCVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._wwids - - @wwids.setter - def wwids(self, wwids): - """Sets the wwids of this V1FCVolumeSource. - - wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. # noqa: E501 - - :param wwids: The wwids of this V1FCVolumeSource. # noqa: E501 - :type: list[str] - """ - - self._wwids = wwids - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FCVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FCVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_persistent_volume_source.py deleted file mode 100644 index bb82eda..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_persistent_volume_source.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlexPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'driver': 'str', - 'fs_type': 'str', - 'options': 'dict(str, str)', - 'read_only': 'bool', - 'secret_ref': 'V1SecretReference' - } - - attribute_map = { - 'driver': 'driver', - 'fs_type': 'fsType', - 'options': 'options', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef' - } - - def __init__(self, driver=None, fs_type=None, options=None, read_only=None, secret_ref=None, local_vars_configuration=None): # noqa: E501 - """V1FlexPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._driver = None - self._fs_type = None - self._options = None - self._read_only = None - self._secret_ref = None - self.discriminator = None - - self.driver = driver - if fs_type is not None: - self.fs_type = fs_type - if options is not None: - self.options = options - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - - @property - def driver(self): - """Gets the driver of this V1FlexPersistentVolumeSource. # noqa: E501 - - driver is the name of the driver to use for this volume. # noqa: E501 - - :return: The driver of this V1FlexPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._driver - - @driver.setter - def driver(self, driver): - """Sets the driver of this V1FlexPersistentVolumeSource. - - driver is the name of the driver to use for this volume. # noqa: E501 - - :param driver: The driver of this V1FlexPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver is None: # noqa: E501 - raise ValueError("Invalid value for `driver`, must not be `None`") # noqa: E501 - - self._driver = driver - - @property - def fs_type(self): - """Gets the fs_type of this V1FlexPersistentVolumeSource. # noqa: E501 - - fsType is the Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script. # noqa: E501 - - :return: The fs_type of this V1FlexPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1FlexPersistentVolumeSource. - - fsType is the Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script. # noqa: E501 - - :param fs_type: The fs_type of this V1FlexPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def options(self): - """Gets the options of this V1FlexPersistentVolumeSource. # noqa: E501 - - options is Optional: this field holds extra command options if any. # noqa: E501 - - :return: The options of this V1FlexPersistentVolumeSource. # noqa: E501 - :rtype: dict(str, str) - """ - return self._options - - @options.setter - def options(self, options): - """Sets the options of this V1FlexPersistentVolumeSource. - - options is Optional: this field holds extra command options if any. # noqa: E501 - - :param options: The options of this V1FlexPersistentVolumeSource. # noqa: E501 - :type: dict(str, str) - """ - - self._options = options - - @property - def read_only(self): - """Gets the read_only of this V1FlexPersistentVolumeSource. # noqa: E501 - - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1FlexPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1FlexPersistentVolumeSource. - - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1FlexPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1FlexPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1FlexPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1FlexPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1FlexPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._secret_ref = secret_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlexPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlexPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_volume_source.py deleted file mode 100644 index 6e0e692..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flex_volume_source.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlexVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'driver': 'str', - 'fs_type': 'str', - 'options': 'dict(str, str)', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference' - } - - attribute_map = { - 'driver': 'driver', - 'fs_type': 'fsType', - 'options': 'options', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef' - } - - def __init__(self, driver=None, fs_type=None, options=None, read_only=None, secret_ref=None, local_vars_configuration=None): # noqa: E501 - """V1FlexVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._driver = None - self._fs_type = None - self._options = None - self._read_only = None - self._secret_ref = None - self.discriminator = None - - self.driver = driver - if fs_type is not None: - self.fs_type = fs_type - if options is not None: - self.options = options - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - - @property - def driver(self): - """Gets the driver of this V1FlexVolumeSource. # noqa: E501 - - driver is the name of the driver to use for this volume. # noqa: E501 - - :return: The driver of this V1FlexVolumeSource. # noqa: E501 - :rtype: str - """ - return self._driver - - @driver.setter - def driver(self, driver): - """Sets the driver of this V1FlexVolumeSource. - - driver is the name of the driver to use for this volume. # noqa: E501 - - :param driver: The driver of this V1FlexVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver is None: # noqa: E501 - raise ValueError("Invalid value for `driver`, must not be `None`") # noqa: E501 - - self._driver = driver - - @property - def fs_type(self): - """Gets the fs_type of this V1FlexVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script. # noqa: E501 - - :return: The fs_type of this V1FlexVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1FlexVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script. # noqa: E501 - - :param fs_type: The fs_type of this V1FlexVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def options(self): - """Gets the options of this V1FlexVolumeSource. # noqa: E501 - - options is Optional: this field holds extra command options if any. # noqa: E501 - - :return: The options of this V1FlexVolumeSource. # noqa: E501 - :rtype: dict(str, str) - """ - return self._options - - @options.setter - def options(self, options): - """Sets the options of this V1FlexVolumeSource. - - options is Optional: this field holds extra command options if any. # noqa: E501 - - :param options: The options of this V1FlexVolumeSource. # noqa: E501 - :type: dict(str, str) - """ - - self._options = options - - @property - def read_only(self): - """Gets the read_only of this V1FlexVolumeSource. # noqa: E501 - - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1FlexVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1FlexVolumeSource. - - readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1FlexVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1FlexVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1FlexVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1FlexVolumeSource. - - - :param secret_ref: The secret_ref of this V1FlexVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlexVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlexVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flocker_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flocker_volume_source.py deleted file mode 100644 index 4198a38..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flocker_volume_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlockerVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'dataset_name': 'str', - 'dataset_uuid': 'str' - } - - attribute_map = { - 'dataset_name': 'datasetName', - 'dataset_uuid': 'datasetUUID' - } - - def __init__(self, dataset_name=None, dataset_uuid=None, local_vars_configuration=None): # noqa: E501 - """V1FlockerVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._dataset_name = None - self._dataset_uuid = None - self.discriminator = None - - if dataset_name is not None: - self.dataset_name = dataset_name - if dataset_uuid is not None: - self.dataset_uuid = dataset_uuid - - @property - def dataset_name(self): - """Gets the dataset_name of this V1FlockerVolumeSource. # noqa: E501 - - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated # noqa: E501 - - :return: The dataset_name of this V1FlockerVolumeSource. # noqa: E501 - :rtype: str - """ - return self._dataset_name - - @dataset_name.setter - def dataset_name(self, dataset_name): - """Sets the dataset_name of this V1FlockerVolumeSource. - - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated # noqa: E501 - - :param dataset_name: The dataset_name of this V1FlockerVolumeSource. # noqa: E501 - :type: str - """ - - self._dataset_name = dataset_name - - @property - def dataset_uuid(self): - """Gets the dataset_uuid of this V1FlockerVolumeSource. # noqa: E501 - - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset # noqa: E501 - - :return: The dataset_uuid of this V1FlockerVolumeSource. # noqa: E501 - :rtype: str - """ - return self._dataset_uuid - - @dataset_uuid.setter - def dataset_uuid(self, dataset_uuid): - """Sets the dataset_uuid of this V1FlockerVolumeSource. - - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset # noqa: E501 - - :param dataset_uuid: The dataset_uuid of this V1FlockerVolumeSource. # noqa: E501 - :type: str - """ - - self._dataset_uuid = dataset_uuid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlockerVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlockerVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_distinguisher_method.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_distinguisher_method.py deleted file mode 100644 index f6f1c90..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_distinguisher_method.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowDistinguisherMethod(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'type': 'str' - } - - attribute_map = { - 'type': 'type' - } - - def __init__(self, type=None, local_vars_configuration=None): # noqa: E501 - """V1FlowDistinguisherMethod - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._type = None - self.discriminator = None - - self.type = type - - @property - def type(self): - """Gets the type of this V1FlowDistinguisherMethod. # noqa: E501 - - `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required. # noqa: E501 - - :return: The type of this V1FlowDistinguisherMethod. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1FlowDistinguisherMethod. - - `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required. # noqa: E501 - - :param type: The type of this V1FlowDistinguisherMethod. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowDistinguisherMethod): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowDistinguisherMethod): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema.py deleted file mode 100644 index c35cbf0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowSchema(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1FlowSchemaSpec', - 'status': 'V1FlowSchemaStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1FlowSchema - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1FlowSchema. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1FlowSchema. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1FlowSchema. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1FlowSchema. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1FlowSchema. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1FlowSchema. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1FlowSchema. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1FlowSchema. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1FlowSchema. # noqa: E501 - - - :return: The metadata of this V1FlowSchema. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1FlowSchema. - - - :param metadata: The metadata of this V1FlowSchema. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1FlowSchema. # noqa: E501 - - - :return: The spec of this V1FlowSchema. # noqa: E501 - :rtype: V1FlowSchemaSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1FlowSchema. - - - :param spec: The spec of this V1FlowSchema. # noqa: E501 - :type: V1FlowSchemaSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1FlowSchema. # noqa: E501 - - - :return: The status of this V1FlowSchema. # noqa: E501 - :rtype: V1FlowSchemaStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1FlowSchema. - - - :param status: The status of this V1FlowSchema. # noqa: E501 - :type: V1FlowSchemaStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowSchema): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowSchema): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_condition.py deleted file mode 100644 index f0e8438..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_condition.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowSchemaCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1FlowSchemaCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - if status is not None: - self.status = status - if type is not None: - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1FlowSchemaCondition. # noqa: E501 - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1FlowSchemaCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1FlowSchemaCondition. - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1FlowSchemaCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1FlowSchemaCondition. # noqa: E501 - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1FlowSchemaCondition. - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1FlowSchemaCondition. # noqa: E501 - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1FlowSchemaCondition. - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1FlowSchemaCondition. # noqa: E501 - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :return: The status of this V1FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1FlowSchemaCondition. - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :param status: The status of this V1FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._status = status - - @property - def type(self): - """Gets the type of this V1FlowSchemaCondition. # noqa: E501 - - `type` is the type of the condition. Required. # noqa: E501 - - :return: The type of this V1FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1FlowSchemaCondition. - - `type` is the type of the condition. Required. # noqa: E501 - - :param type: The type of this V1FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowSchemaCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowSchemaCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_list.py deleted file mode 100644 index 0edec38..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowSchemaList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1FlowSchema]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1FlowSchemaList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1FlowSchemaList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1FlowSchemaList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1FlowSchemaList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1FlowSchemaList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1FlowSchemaList. # noqa: E501 - - `items` is a list of FlowSchemas. # noqa: E501 - - :return: The items of this V1FlowSchemaList. # noqa: E501 - :rtype: list[V1FlowSchema] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1FlowSchemaList. - - `items` is a list of FlowSchemas. # noqa: E501 - - :param items: The items of this V1FlowSchemaList. # noqa: E501 - :type: list[V1FlowSchema] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1FlowSchemaList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1FlowSchemaList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1FlowSchemaList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1FlowSchemaList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1FlowSchemaList. # noqa: E501 - - - :return: The metadata of this V1FlowSchemaList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1FlowSchemaList. - - - :param metadata: The metadata of this V1FlowSchemaList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowSchemaList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowSchemaList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_spec.py deleted file mode 100644 index 5a7ed6c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_spec.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowSchemaSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'distinguisher_method': 'V1FlowDistinguisherMethod', - 'matching_precedence': 'int', - 'priority_level_configuration': 'V1PriorityLevelConfigurationReference', - 'rules': 'list[V1PolicyRulesWithSubjects]' - } - - attribute_map = { - 'distinguisher_method': 'distinguisherMethod', - 'matching_precedence': 'matchingPrecedence', - 'priority_level_configuration': 'priorityLevelConfiguration', - 'rules': 'rules' - } - - def __init__(self, distinguisher_method=None, matching_precedence=None, priority_level_configuration=None, rules=None, local_vars_configuration=None): # noqa: E501 - """V1FlowSchemaSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._distinguisher_method = None - self._matching_precedence = None - self._priority_level_configuration = None - self._rules = None - self.discriminator = None - - if distinguisher_method is not None: - self.distinguisher_method = distinguisher_method - if matching_precedence is not None: - self.matching_precedence = matching_precedence - self.priority_level_configuration = priority_level_configuration - if rules is not None: - self.rules = rules - - @property - def distinguisher_method(self): - """Gets the distinguisher_method of this V1FlowSchemaSpec. # noqa: E501 - - - :return: The distinguisher_method of this V1FlowSchemaSpec. # noqa: E501 - :rtype: V1FlowDistinguisherMethod - """ - return self._distinguisher_method - - @distinguisher_method.setter - def distinguisher_method(self, distinguisher_method): - """Sets the distinguisher_method of this V1FlowSchemaSpec. - - - :param distinguisher_method: The distinguisher_method of this V1FlowSchemaSpec. # noqa: E501 - :type: V1FlowDistinguisherMethod - """ - - self._distinguisher_method = distinguisher_method - - @property - def matching_precedence(self): - """Gets the matching_precedence of this V1FlowSchemaSpec. # noqa: E501 - - `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. # noqa: E501 - - :return: The matching_precedence of this V1FlowSchemaSpec. # noqa: E501 - :rtype: int - """ - return self._matching_precedence - - @matching_precedence.setter - def matching_precedence(self, matching_precedence): - """Sets the matching_precedence of this V1FlowSchemaSpec. - - `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. # noqa: E501 - - :param matching_precedence: The matching_precedence of this V1FlowSchemaSpec. # noqa: E501 - :type: int - """ - - self._matching_precedence = matching_precedence - - @property - def priority_level_configuration(self): - """Gets the priority_level_configuration of this V1FlowSchemaSpec. # noqa: E501 - - - :return: The priority_level_configuration of this V1FlowSchemaSpec. # noqa: E501 - :rtype: V1PriorityLevelConfigurationReference - """ - return self._priority_level_configuration - - @priority_level_configuration.setter - def priority_level_configuration(self, priority_level_configuration): - """Sets the priority_level_configuration of this V1FlowSchemaSpec. - - - :param priority_level_configuration: The priority_level_configuration of this V1FlowSchemaSpec. # noqa: E501 - :type: V1PriorityLevelConfigurationReference - """ - if self.local_vars_configuration.client_side_validation and priority_level_configuration is None: # noqa: E501 - raise ValueError("Invalid value for `priority_level_configuration`, must not be `None`") # noqa: E501 - - self._priority_level_configuration = priority_level_configuration - - @property - def rules(self): - """Gets the rules of this V1FlowSchemaSpec. # noqa: E501 - - `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. # noqa: E501 - - :return: The rules of this V1FlowSchemaSpec. # noqa: E501 - :rtype: list[V1PolicyRulesWithSubjects] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1FlowSchemaSpec. - - `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. # noqa: E501 - - :param rules: The rules of this V1FlowSchemaSpec. # noqa: E501 - :type: list[V1PolicyRulesWithSubjects] - """ - - self._rules = rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowSchemaSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowSchemaSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_status.py deleted file mode 100644 index 8f07a64..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_flow_schema_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1FlowSchemaStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1FlowSchemaCondition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1FlowSchemaStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1FlowSchemaStatus. # noqa: E501 - - `conditions` is a list of the current states of FlowSchema. # noqa: E501 - - :return: The conditions of this V1FlowSchemaStatus. # noqa: E501 - :rtype: list[V1FlowSchemaCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1FlowSchemaStatus. - - `conditions` is a list of the current states of FlowSchema. # noqa: E501 - - :param conditions: The conditions of this V1FlowSchemaStatus. # noqa: E501 - :type: list[V1FlowSchemaCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1FlowSchemaStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1FlowSchemaStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_for_zone.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_for_zone.py deleted file mode 100644 index b41f673..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_for_zone.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ForZone(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1ForZone - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1ForZone. # noqa: E501 - - name represents the name of the zone. # noqa: E501 - - :return: The name of this V1ForZone. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ForZone. - - name represents the name of the zone. # noqa: E501 - - :param name: The name of this V1ForZone. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ForZone): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ForZone): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_gce_persistent_disk_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_gce_persistent_disk_volume_source.py deleted file mode 100644 index 856d493..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_gce_persistent_disk_volume_source.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GCEPersistentDiskVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'partition': 'int', - 'pd_name': 'str', - 'read_only': 'bool' - } - - attribute_map = { - 'fs_type': 'fsType', - 'partition': 'partition', - 'pd_name': 'pdName', - 'read_only': 'readOnly' - } - - def __init__(self, fs_type=None, partition=None, pd_name=None, read_only=None, local_vars_configuration=None): # noqa: E501 - """V1GCEPersistentDiskVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._partition = None - self._pd_name = None - self._read_only = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if partition is not None: - self.partition = partition - self.pd_name = pd_name - if read_only is not None: - self.read_only = read_only - - @property - def fs_type(self): - """Gets the fs_type of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :return: The fs_type of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1GCEPersistentDiskVolumeSource. - - fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :param fs_type: The fs_type of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def partition(self): - """Gets the partition of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :return: The partition of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :rtype: int - """ - return self._partition - - @partition.setter - def partition(self, partition): - """Sets the partition of this V1GCEPersistentDiskVolumeSource. - - partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :param partition: The partition of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :type: int - """ - - self._partition = partition - - @property - def pd_name(self): - """Gets the pd_name of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :return: The pd_name of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._pd_name - - @pd_name.setter - def pd_name(self, pd_name): - """Sets the pd_name of this V1GCEPersistentDiskVolumeSource. - - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :param pd_name: The pd_name of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and pd_name is None: # noqa: E501 - raise ValueError("Invalid value for `pd_name`, must not be `None`") # noqa: E501 - - self._pd_name = pd_name - - @property - def read_only(self): - """Gets the read_only of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :return: The read_only of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1GCEPersistentDiskVolumeSource. - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk # noqa: E501 - - :param read_only: The read_only of this V1GCEPersistentDiskVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GCEPersistentDiskVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GCEPersistentDiskVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_git_repo_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_git_repo_volume_source.py deleted file mode 100644 index 8a837d2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_git_repo_volume_source.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GitRepoVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'directory': 'str', - 'repository': 'str', - 'revision': 'str' - } - - attribute_map = { - 'directory': 'directory', - 'repository': 'repository', - 'revision': 'revision' - } - - def __init__(self, directory=None, repository=None, revision=None, local_vars_configuration=None): # noqa: E501 - """V1GitRepoVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._directory = None - self._repository = None - self._revision = None - self.discriminator = None - - if directory is not None: - self.directory = directory - self.repository = repository - if revision is not None: - self.revision = revision - - @property - def directory(self): - """Gets the directory of this V1GitRepoVolumeSource. # noqa: E501 - - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. # noqa: E501 - - :return: The directory of this V1GitRepoVolumeSource. # noqa: E501 - :rtype: str - """ - return self._directory - - @directory.setter - def directory(self, directory): - """Sets the directory of this V1GitRepoVolumeSource. - - directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. # noqa: E501 - - :param directory: The directory of this V1GitRepoVolumeSource. # noqa: E501 - :type: str - """ - - self._directory = directory - - @property - def repository(self): - """Gets the repository of this V1GitRepoVolumeSource. # noqa: E501 - - repository is the URL # noqa: E501 - - :return: The repository of this V1GitRepoVolumeSource. # noqa: E501 - :rtype: str - """ - return self._repository - - @repository.setter - def repository(self, repository): - """Sets the repository of this V1GitRepoVolumeSource. - - repository is the URL # noqa: E501 - - :param repository: The repository of this V1GitRepoVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and repository is None: # noqa: E501 - raise ValueError("Invalid value for `repository`, must not be `None`") # noqa: E501 - - self._repository = repository - - @property - def revision(self): - """Gets the revision of this V1GitRepoVolumeSource. # noqa: E501 - - revision is the commit hash for the specified revision. # noqa: E501 - - :return: The revision of this V1GitRepoVolumeSource. # noqa: E501 - :rtype: str - """ - return self._revision - - @revision.setter - def revision(self, revision): - """Sets the revision of this V1GitRepoVolumeSource. - - revision is the commit hash for the specified revision. # noqa: E501 - - :param revision: The revision of this V1GitRepoVolumeSource. # noqa: E501 - :type: str - """ - - self._revision = revision - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GitRepoVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GitRepoVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_persistent_volume_source.py deleted file mode 100644 index 4e06392..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_persistent_volume_source.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GlusterfsPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'endpoints': 'str', - 'endpoints_namespace': 'str', - 'path': 'str', - 'read_only': 'bool' - } - - attribute_map = { - 'endpoints': 'endpoints', - 'endpoints_namespace': 'endpointsNamespace', - 'path': 'path', - 'read_only': 'readOnly' - } - - def __init__(self, endpoints=None, endpoints_namespace=None, path=None, read_only=None, local_vars_configuration=None): # noqa: E501 - """V1GlusterfsPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._endpoints = None - self._endpoints_namespace = None - self._path = None - self._read_only = None - self.discriminator = None - - self.endpoints = endpoints - if endpoints_namespace is not None: - self.endpoints_namespace = endpoints_namespace - self.path = path - if read_only is not None: - self.read_only = read_only - - @property - def endpoints(self): - """Gets the endpoints of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The endpoints of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._endpoints - - @endpoints.setter - def endpoints(self, endpoints): - """Sets the endpoints of this V1GlusterfsPersistentVolumeSource. - - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param endpoints: The endpoints of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and endpoints is None: # noqa: E501 - raise ValueError("Invalid value for `endpoints`, must not be `None`") # noqa: E501 - - self._endpoints = endpoints - - @property - def endpoints_namespace(self): - """Gets the endpoints_namespace of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - - endpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The endpoints_namespace of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._endpoints_namespace - - @endpoints_namespace.setter - def endpoints_namespace(self, endpoints_namespace): - """Sets the endpoints_namespace of this V1GlusterfsPersistentVolumeSource. - - endpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param endpoints_namespace: The endpoints_namespace of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._endpoints_namespace = endpoints_namespace - - @property - def path(self): - """Gets the path of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The path of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1GlusterfsPersistentVolumeSource. - - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param path: The path of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def read_only(self): - """Gets the read_only of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The read_only of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1GlusterfsPersistentVolumeSource. - - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param read_only: The read_only of this V1GlusterfsPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GlusterfsPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GlusterfsPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_volume_source.py deleted file mode 100644 index 963c01c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_glusterfs_volume_source.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GlusterfsVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'endpoints': 'str', - 'path': 'str', - 'read_only': 'bool' - } - - attribute_map = { - 'endpoints': 'endpoints', - 'path': 'path', - 'read_only': 'readOnly' - } - - def __init__(self, endpoints=None, path=None, read_only=None, local_vars_configuration=None): # noqa: E501 - """V1GlusterfsVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._endpoints = None - self._path = None - self._read_only = None - self.discriminator = None - - self.endpoints = endpoints - self.path = path - if read_only is not None: - self.read_only = read_only - - @property - def endpoints(self): - """Gets the endpoints of this V1GlusterfsVolumeSource. # noqa: E501 - - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The endpoints of this V1GlusterfsVolumeSource. # noqa: E501 - :rtype: str - """ - return self._endpoints - - @endpoints.setter - def endpoints(self, endpoints): - """Sets the endpoints of this V1GlusterfsVolumeSource. - - endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param endpoints: The endpoints of this V1GlusterfsVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and endpoints is None: # noqa: E501 - raise ValueError("Invalid value for `endpoints`, must not be `None`") # noqa: E501 - - self._endpoints = endpoints - - @property - def path(self): - """Gets the path of this V1GlusterfsVolumeSource. # noqa: E501 - - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The path of this V1GlusterfsVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1GlusterfsVolumeSource. - - path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param path: The path of this V1GlusterfsVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def read_only(self): - """Gets the read_only of this V1GlusterfsVolumeSource. # noqa: E501 - - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :return: The read_only of this V1GlusterfsVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1GlusterfsVolumeSource. - - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod # noqa: E501 - - :param read_only: The read_only of this V1GlusterfsVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GlusterfsVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GlusterfsVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_subject.py deleted file mode 100644 index fba078a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_subject.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GroupSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1GroupSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1GroupSubject. # noqa: E501 - - name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. # noqa: E501 - - :return: The name of this V1GroupSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1GroupSubject. - - name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. # noqa: E501 - - :param name: The name of this V1GroupSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GroupSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GroupSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_version_for_discovery.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_version_for_discovery.py deleted file mode 100644 index ee28173..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_group_version_for_discovery.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GroupVersionForDiscovery(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group_version': 'str', - 'version': 'str' - } - - attribute_map = { - 'group_version': 'groupVersion', - 'version': 'version' - } - - def __init__(self, group_version=None, version=None, local_vars_configuration=None): # noqa: E501 - """V1GroupVersionForDiscovery - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group_version = None - self._version = None - self.discriminator = None - - self.group_version = group_version - self.version = version - - @property - def group_version(self): - """Gets the group_version of this V1GroupVersionForDiscovery. # noqa: E501 - - groupVersion specifies the API group and version in the form \"group/version\" # noqa: E501 - - :return: The group_version of this V1GroupVersionForDiscovery. # noqa: E501 - :rtype: str - """ - return self._group_version - - @group_version.setter - def group_version(self, group_version): - """Sets the group_version of this V1GroupVersionForDiscovery. - - groupVersion specifies the API group and version in the form \"group/version\" # noqa: E501 - - :param group_version: The group_version of this V1GroupVersionForDiscovery. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and group_version is None: # noqa: E501 - raise ValueError("Invalid value for `group_version`, must not be `None`") # noqa: E501 - - self._group_version = group_version - - @property - def version(self): - """Gets the version of this V1GroupVersionForDiscovery. # noqa: E501 - - version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion. # noqa: E501 - - :return: The version of this V1GroupVersionForDiscovery. # noqa: E501 - :rtype: str - """ - return self._version - - @version.setter - def version(self, version): - """Sets the version of this V1GroupVersionForDiscovery. - - version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion. # noqa: E501 - - :param version: The version of this V1GroupVersionForDiscovery. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and version is None: # noqa: E501 - raise ValueError("Invalid value for `version`, must not be `None`") # noqa: E501 - - self._version = version - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GroupVersionForDiscovery): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GroupVersionForDiscovery): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_grpc_action.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_grpc_action.py deleted file mode 100644 index e5d234b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_grpc_action.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1GRPCAction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'port': 'int', - 'service': 'str' - } - - attribute_map = { - 'port': 'port', - 'service': 'service' - } - - def __init__(self, port=None, service=None, local_vars_configuration=None): # noqa: E501 - """V1GRPCAction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._port = None - self._service = None - self.discriminator = None - - self.port = port - if service is not None: - self.service = service - - @property - def port(self): - """Gets the port of this V1GRPCAction. # noqa: E501 - - Port number of the gRPC service. Number must be in the range 1 to 65535. # noqa: E501 - - :return: The port of this V1GRPCAction. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1GRPCAction. - - Port number of the gRPC service. Number must be in the range 1 to 65535. # noqa: E501 - - :param port: The port of this V1GRPCAction. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def service(self): - """Gets the service of this V1GRPCAction. # noqa: E501 - - Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). If this is not specified, the default behavior is defined by gRPC. # noqa: E501 - - :return: The service of this V1GRPCAction. # noqa: E501 - :rtype: str - """ - return self._service - - @service.setter - def service(self, service): - """Sets the service of this V1GRPCAction. - - Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). If this is not specified, the default behavior is defined by gRPC. # noqa: E501 - - :param service: The service of this V1GRPCAction. # noqa: E501 - :type: str - """ - - self._service = service - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1GRPCAction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1GRPCAction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler.py deleted file mode 100644 index 69c0da6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HorizontalPodAutoscaler(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1HorizontalPodAutoscalerSpec', - 'status': 'V1HorizontalPodAutoscalerStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1HorizontalPodAutoscaler - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1HorizontalPodAutoscaler. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1HorizontalPodAutoscaler. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1HorizontalPodAutoscaler. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1HorizontalPodAutoscaler. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1HorizontalPodAutoscaler. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1HorizontalPodAutoscaler. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1HorizontalPodAutoscaler. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1HorizontalPodAutoscaler. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1HorizontalPodAutoscaler. # noqa: E501 - - - :return: The metadata of this V1HorizontalPodAutoscaler. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1HorizontalPodAutoscaler. - - - :param metadata: The metadata of this V1HorizontalPodAutoscaler. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1HorizontalPodAutoscaler. # noqa: E501 - - - :return: The spec of this V1HorizontalPodAutoscaler. # noqa: E501 - :rtype: V1HorizontalPodAutoscalerSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1HorizontalPodAutoscaler. - - - :param spec: The spec of this V1HorizontalPodAutoscaler. # noqa: E501 - :type: V1HorizontalPodAutoscalerSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1HorizontalPodAutoscaler. # noqa: E501 - - - :return: The status of this V1HorizontalPodAutoscaler. # noqa: E501 - :rtype: V1HorizontalPodAutoscalerStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1HorizontalPodAutoscaler. - - - :param status: The status of this V1HorizontalPodAutoscaler. # noqa: E501 - :type: V1HorizontalPodAutoscalerStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HorizontalPodAutoscaler): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HorizontalPodAutoscaler): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_list.py deleted file mode 100644 index fe3facc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HorizontalPodAutoscalerList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1HorizontalPodAutoscaler]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1HorizontalPodAutoscalerList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1HorizontalPodAutoscalerList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1HorizontalPodAutoscalerList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1HorizontalPodAutoscalerList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1HorizontalPodAutoscalerList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1HorizontalPodAutoscalerList. # noqa: E501 - - items is the list of horizontal pod autoscaler objects. # noqa: E501 - - :return: The items of this V1HorizontalPodAutoscalerList. # noqa: E501 - :rtype: list[V1HorizontalPodAutoscaler] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1HorizontalPodAutoscalerList. - - items is the list of horizontal pod autoscaler objects. # noqa: E501 - - :param items: The items of this V1HorizontalPodAutoscalerList. # noqa: E501 - :type: list[V1HorizontalPodAutoscaler] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1HorizontalPodAutoscalerList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1HorizontalPodAutoscalerList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1HorizontalPodAutoscalerList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1HorizontalPodAutoscalerList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1HorizontalPodAutoscalerList. # noqa: E501 - - - :return: The metadata of this V1HorizontalPodAutoscalerList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1HorizontalPodAutoscalerList. - - - :param metadata: The metadata of this V1HorizontalPodAutoscalerList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HorizontalPodAutoscalerList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HorizontalPodAutoscalerList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_spec.py deleted file mode 100644 index 4a54b34..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_spec.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HorizontalPodAutoscalerSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'max_replicas': 'int', - 'min_replicas': 'int', - 'scale_target_ref': 'V1CrossVersionObjectReference', - 'target_cpu_utilization_percentage': 'int' - } - - attribute_map = { - 'max_replicas': 'maxReplicas', - 'min_replicas': 'minReplicas', - 'scale_target_ref': 'scaleTargetRef', - 'target_cpu_utilization_percentage': 'targetCPUUtilizationPercentage' - } - - def __init__(self, max_replicas=None, min_replicas=None, scale_target_ref=None, target_cpu_utilization_percentage=None, local_vars_configuration=None): # noqa: E501 - """V1HorizontalPodAutoscalerSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._max_replicas = None - self._min_replicas = None - self._scale_target_ref = None - self._target_cpu_utilization_percentage = None - self.discriminator = None - - self.max_replicas = max_replicas - if min_replicas is not None: - self.min_replicas = min_replicas - self.scale_target_ref = scale_target_ref - if target_cpu_utilization_percentage is not None: - self.target_cpu_utilization_percentage = target_cpu_utilization_percentage - - @property - def max_replicas(self): - """Gets the max_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - - maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. # noqa: E501 - - :return: The max_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: int - """ - return self._max_replicas - - @max_replicas.setter - def max_replicas(self, max_replicas): - """Sets the max_replicas of this V1HorizontalPodAutoscalerSpec. - - maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. # noqa: E501 - - :param max_replicas: The max_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and max_replicas is None: # noqa: E501 - raise ValueError("Invalid value for `max_replicas`, must not be `None`") # noqa: E501 - - self._max_replicas = max_replicas - - @property - def min_replicas(self): - """Gets the min_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - - minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. # noqa: E501 - - :return: The min_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: int - """ - return self._min_replicas - - @min_replicas.setter - def min_replicas(self, min_replicas): - """Sets the min_replicas of this V1HorizontalPodAutoscalerSpec. - - minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. # noqa: E501 - - :param min_replicas: The min_replicas of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :type: int - """ - - self._min_replicas = min_replicas - - @property - def scale_target_ref(self): - """Gets the scale_target_ref of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - - - :return: The scale_target_ref of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: V1CrossVersionObjectReference - """ - return self._scale_target_ref - - @scale_target_ref.setter - def scale_target_ref(self, scale_target_ref): - """Sets the scale_target_ref of this V1HorizontalPodAutoscalerSpec. - - - :param scale_target_ref: The scale_target_ref of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :type: V1CrossVersionObjectReference - """ - if self.local_vars_configuration.client_side_validation and scale_target_ref is None: # noqa: E501 - raise ValueError("Invalid value for `scale_target_ref`, must not be `None`") # noqa: E501 - - self._scale_target_ref = scale_target_ref - - @property - def target_cpu_utilization_percentage(self): - """Gets the target_cpu_utilization_percentage of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - - targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used. # noqa: E501 - - :return: The target_cpu_utilization_percentage of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: int - """ - return self._target_cpu_utilization_percentage - - @target_cpu_utilization_percentage.setter - def target_cpu_utilization_percentage(self, target_cpu_utilization_percentage): - """Sets the target_cpu_utilization_percentage of this V1HorizontalPodAutoscalerSpec. - - targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used. # noqa: E501 - - :param target_cpu_utilization_percentage: The target_cpu_utilization_percentage of this V1HorizontalPodAutoscalerSpec. # noqa: E501 - :type: int - """ - - self._target_cpu_utilization_percentage = target_cpu_utilization_percentage - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HorizontalPodAutoscalerSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HorizontalPodAutoscalerSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_status.py deleted file mode 100644 index 3416c9b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_horizontal_pod_autoscaler_status.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HorizontalPodAutoscalerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'current_cpu_utilization_percentage': 'int', - 'current_replicas': 'int', - 'desired_replicas': 'int', - 'last_scale_time': 'datetime', - 'observed_generation': 'int' - } - - attribute_map = { - 'current_cpu_utilization_percentage': 'currentCPUUtilizationPercentage', - 'current_replicas': 'currentReplicas', - 'desired_replicas': 'desiredReplicas', - 'last_scale_time': 'lastScaleTime', - 'observed_generation': 'observedGeneration' - } - - def __init__(self, current_cpu_utilization_percentage=None, current_replicas=None, desired_replicas=None, last_scale_time=None, observed_generation=None, local_vars_configuration=None): # noqa: E501 - """V1HorizontalPodAutoscalerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._current_cpu_utilization_percentage = None - self._current_replicas = None - self._desired_replicas = None - self._last_scale_time = None - self._observed_generation = None - self.discriminator = None - - if current_cpu_utilization_percentage is not None: - self.current_cpu_utilization_percentage = current_cpu_utilization_percentage - self.current_replicas = current_replicas - self.desired_replicas = desired_replicas - if last_scale_time is not None: - self.last_scale_time = last_scale_time - if observed_generation is not None: - self.observed_generation = observed_generation - - @property - def current_cpu_utilization_percentage(self): - """Gets the current_cpu_utilization_percentage of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - - currentCPUUtilizationPercentage is the current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU. # noqa: E501 - - :return: The current_cpu_utilization_percentage of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._current_cpu_utilization_percentage - - @current_cpu_utilization_percentage.setter - def current_cpu_utilization_percentage(self, current_cpu_utilization_percentage): - """Sets the current_cpu_utilization_percentage of this V1HorizontalPodAutoscalerStatus. - - currentCPUUtilizationPercentage is the current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU. # noqa: E501 - - :param current_cpu_utilization_percentage: The current_cpu_utilization_percentage of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - - self._current_cpu_utilization_percentage = current_cpu_utilization_percentage - - @property - def current_replicas(self): - """Gets the current_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - - currentReplicas is the current number of replicas of pods managed by this autoscaler. # noqa: E501 - - :return: The current_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._current_replicas - - @current_replicas.setter - def current_replicas(self, current_replicas): - """Sets the current_replicas of this V1HorizontalPodAutoscalerStatus. - - currentReplicas is the current number of replicas of pods managed by this autoscaler. # noqa: E501 - - :param current_replicas: The current_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and current_replicas is None: # noqa: E501 - raise ValueError("Invalid value for `current_replicas`, must not be `None`") # noqa: E501 - - self._current_replicas = current_replicas - - @property - def desired_replicas(self): - """Gets the desired_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - - desiredReplicas is the desired number of replicas of pods managed by this autoscaler. # noqa: E501 - - :return: The desired_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._desired_replicas - - @desired_replicas.setter - def desired_replicas(self, desired_replicas): - """Sets the desired_replicas of this V1HorizontalPodAutoscalerStatus. - - desiredReplicas is the desired number of replicas of pods managed by this autoscaler. # noqa: E501 - - :param desired_replicas: The desired_replicas of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and desired_replicas is None: # noqa: E501 - raise ValueError("Invalid value for `desired_replicas`, must not be `None`") # noqa: E501 - - self._desired_replicas = desired_replicas - - @property - def last_scale_time(self): - """Gets the last_scale_time of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - - lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed. # noqa: E501 - - :return: The last_scale_time of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: datetime - """ - return self._last_scale_time - - @last_scale_time.setter - def last_scale_time(self, last_scale_time): - """Sets the last_scale_time of this V1HorizontalPodAutoscalerStatus. - - lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed. # noqa: E501 - - :param last_scale_time: The last_scale_time of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :type: datetime - """ - - self._last_scale_time = last_scale_time - - @property - def observed_generation(self): - """Gets the observed_generation of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - - observedGeneration is the most recent generation observed by this autoscaler. # noqa: E501 - - :return: The observed_generation of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1HorizontalPodAutoscalerStatus. - - observedGeneration is the most recent generation observed by this autoscaler. # noqa: E501 - - :param observed_generation: The observed_generation of this V1HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HorizontalPodAutoscalerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HorizontalPodAutoscalerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_alias.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_alias.py deleted file mode 100644 index dd46a95..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_alias.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HostAlias(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hostnames': 'list[str]', - 'ip': 'str' - } - - attribute_map = { - 'hostnames': 'hostnames', - 'ip': 'ip' - } - - def __init__(self, hostnames=None, ip=None, local_vars_configuration=None): # noqa: E501 - """V1HostAlias - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hostnames = None - self._ip = None - self.discriminator = None - - if hostnames is not None: - self.hostnames = hostnames - if ip is not None: - self.ip = ip - - @property - def hostnames(self): - """Gets the hostnames of this V1HostAlias. # noqa: E501 - - Hostnames for the above IP address. # noqa: E501 - - :return: The hostnames of this V1HostAlias. # noqa: E501 - :rtype: list[str] - """ - return self._hostnames - - @hostnames.setter - def hostnames(self, hostnames): - """Sets the hostnames of this V1HostAlias. - - Hostnames for the above IP address. # noqa: E501 - - :param hostnames: The hostnames of this V1HostAlias. # noqa: E501 - :type: list[str] - """ - - self._hostnames = hostnames - - @property - def ip(self): - """Gets the ip of this V1HostAlias. # noqa: E501 - - IP address of the host file entry. # noqa: E501 - - :return: The ip of this V1HostAlias. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1HostAlias. - - IP address of the host file entry. # noqa: E501 - - :param ip: The ip of this V1HostAlias. # noqa: E501 - :type: str - """ - - self._ip = ip - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HostAlias): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HostAlias): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_ip.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_ip.py deleted file mode 100644 index 4888d67..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_ip.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HostIP(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ip': 'str' - } - - attribute_map = { - 'ip': 'ip' - } - - def __init__(self, ip=None, local_vars_configuration=None): # noqa: E501 - """V1HostIP - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ip = None - self.discriminator = None - - if ip is not None: - self.ip = ip - - @property - def ip(self): - """Gets the ip of this V1HostIP. # noqa: E501 - - IP is the IP address assigned to the host # noqa: E501 - - :return: The ip of this V1HostIP. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1HostIP. - - IP is the IP address assigned to the host # noqa: E501 - - :param ip: The ip of this V1HostIP. # noqa: E501 - :type: str - """ - - self._ip = ip - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HostIP): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HostIP): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_path_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_path_volume_source.py deleted file mode 100644 index 7bfffc0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_host_path_volume_source.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HostPathVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'path': 'str', - 'type': 'str' - } - - attribute_map = { - 'path': 'path', - 'type': 'type' - } - - def __init__(self, path=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1HostPathVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._path = None - self._type = None - self.discriminator = None - - self.path = path - if type is not None: - self.type = type - - @property - def path(self): - """Gets the path of this V1HostPathVolumeSource. # noqa: E501 - - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath # noqa: E501 - - :return: The path of this V1HostPathVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1HostPathVolumeSource. - - path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath # noqa: E501 - - :param path: The path of this V1HostPathVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def type(self): - """Gets the type of this V1HostPathVolumeSource. # noqa: E501 - - type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath # noqa: E501 - - :return: The type of this V1HostPathVolumeSource. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1HostPathVolumeSource. - - type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath # noqa: E501 - - :param type: The type of this V1HostPathVolumeSource. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HostPathVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HostPathVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_get_action.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_get_action.py deleted file mode 100644 index 218659e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_get_action.py +++ /dev/null @@ -1,235 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HTTPGetAction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'host': 'str', - 'http_headers': 'list[V1HTTPHeader]', - 'path': 'str', - 'port': 'object', - 'scheme': 'str' - } - - attribute_map = { - 'host': 'host', - 'http_headers': 'httpHeaders', - 'path': 'path', - 'port': 'port', - 'scheme': 'scheme' - } - - def __init__(self, host=None, http_headers=None, path=None, port=None, scheme=None, local_vars_configuration=None): # noqa: E501 - """V1HTTPGetAction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._host = None - self._http_headers = None - self._path = None - self._port = None - self._scheme = None - self.discriminator = None - - if host is not None: - self.host = host - if http_headers is not None: - self.http_headers = http_headers - if path is not None: - self.path = path - self.port = port - if scheme is not None: - self.scheme = scheme - - @property - def host(self): - """Gets the host of this V1HTTPGetAction. # noqa: E501 - - Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead. # noqa: E501 - - :return: The host of this V1HTTPGetAction. # noqa: E501 - :rtype: str - """ - return self._host - - @host.setter - def host(self, host): - """Sets the host of this V1HTTPGetAction. - - Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead. # noqa: E501 - - :param host: The host of this V1HTTPGetAction. # noqa: E501 - :type: str - """ - - self._host = host - - @property - def http_headers(self): - """Gets the http_headers of this V1HTTPGetAction. # noqa: E501 - - Custom headers to set in the request. HTTP allows repeated headers. # noqa: E501 - - :return: The http_headers of this V1HTTPGetAction. # noqa: E501 - :rtype: list[V1HTTPHeader] - """ - return self._http_headers - - @http_headers.setter - def http_headers(self, http_headers): - """Sets the http_headers of this V1HTTPGetAction. - - Custom headers to set in the request. HTTP allows repeated headers. # noqa: E501 - - :param http_headers: The http_headers of this V1HTTPGetAction. # noqa: E501 - :type: list[V1HTTPHeader] - """ - - self._http_headers = http_headers - - @property - def path(self): - """Gets the path of this V1HTTPGetAction. # noqa: E501 - - Path to access on the HTTP server. # noqa: E501 - - :return: The path of this V1HTTPGetAction. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1HTTPGetAction. - - Path to access on the HTTP server. # noqa: E501 - - :param path: The path of this V1HTTPGetAction. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def port(self): - """Gets the port of this V1HTTPGetAction. # noqa: E501 - - Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. # noqa: E501 - - :return: The port of this V1HTTPGetAction. # noqa: E501 - :rtype: object - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1HTTPGetAction. - - Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. # noqa: E501 - - :param port: The port of this V1HTTPGetAction. # noqa: E501 - :type: object - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def scheme(self): - """Gets the scheme of this V1HTTPGetAction. # noqa: E501 - - Scheme to use for connecting to the host. Defaults to HTTP. # noqa: E501 - - :return: The scheme of this V1HTTPGetAction. # noqa: E501 - :rtype: str - """ - return self._scheme - - @scheme.setter - def scheme(self, scheme): - """Sets the scheme of this V1HTTPGetAction. - - Scheme to use for connecting to the host. Defaults to HTTP. # noqa: E501 - - :param scheme: The scheme of this V1HTTPGetAction. # noqa: E501 - :type: str - """ - - self._scheme = scheme - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HTTPGetAction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HTTPGetAction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_header.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_header.py deleted file mode 100644 index 9e72c52..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_header.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HTTPHeader(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'value': 'str' - } - - attribute_map = { - 'name': 'name', - 'value': 'value' - } - - def __init__(self, name=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1HTTPHeader - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._value = None - self.discriminator = None - - self.name = name - self.value = value - - @property - def name(self): - """Gets the name of this V1HTTPHeader. # noqa: E501 - - The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. # noqa: E501 - - :return: The name of this V1HTTPHeader. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1HTTPHeader. - - The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. # noqa: E501 - - :param name: The name of this V1HTTPHeader. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def value(self): - """Gets the value of this V1HTTPHeader. # noqa: E501 - - The header field value # noqa: E501 - - :return: The value of this V1HTTPHeader. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1HTTPHeader. - - The header field value # noqa: E501 - - :param value: The value of this V1HTTPHeader. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and value is None: # noqa: E501 - raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HTTPHeader): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HTTPHeader): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_path.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_path.py deleted file mode 100644 index 75af47a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_path.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HTTPIngressPath(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'backend': 'V1IngressBackend', - 'path': 'str', - 'path_type': 'str' - } - - attribute_map = { - 'backend': 'backend', - 'path': 'path', - 'path_type': 'pathType' - } - - def __init__(self, backend=None, path=None, path_type=None, local_vars_configuration=None): # noqa: E501 - """V1HTTPIngressPath - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._backend = None - self._path = None - self._path_type = None - self.discriminator = None - - self.backend = backend - if path is not None: - self.path = path - self.path_type = path_type - - @property - def backend(self): - """Gets the backend of this V1HTTPIngressPath. # noqa: E501 - - - :return: The backend of this V1HTTPIngressPath. # noqa: E501 - :rtype: V1IngressBackend - """ - return self._backend - - @backend.setter - def backend(self, backend): - """Sets the backend of this V1HTTPIngressPath. - - - :param backend: The backend of this V1HTTPIngressPath. # noqa: E501 - :type: V1IngressBackend - """ - if self.local_vars_configuration.client_side_validation and backend is None: # noqa: E501 - raise ValueError("Invalid value for `backend`, must not be `None`") # noqa: E501 - - self._backend = backend - - @property - def path(self): - """Gets the path of this V1HTTPIngressPath. # noqa: E501 - - path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value \"Exact\" or \"Prefix\". # noqa: E501 - - :return: The path of this V1HTTPIngressPath. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1HTTPIngressPath. - - path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value \"Exact\" or \"Prefix\". # noqa: E501 - - :param path: The path of this V1HTTPIngressPath. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def path_type(self): - """Gets the path_type of this V1HTTPIngressPath. # noqa: E501 - - pathType determines the interpretation of the path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is done on a path element by element basis. A path element refers is the list of labels in the path split by the '/' separator. A request is a match for path p if every p is an element-wise prefix of p of the request path. Note that if the last element of the path is a substring of the last element in request path, it is not a match (e.g. /foo/bar matches /foo/bar/baz, but does not match /foo/barbaz). * ImplementationSpecific: Interpretation of the Path matching is up to the IngressClass. Implementations can treat this as a separate PathType or treat it identically to Prefix or Exact path types. Implementations are required to support all path types. # noqa: E501 - - :return: The path_type of this V1HTTPIngressPath. # noqa: E501 - :rtype: str - """ - return self._path_type - - @path_type.setter - def path_type(self, path_type): - """Sets the path_type of this V1HTTPIngressPath. - - pathType determines the interpretation of the path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is done on a path element by element basis. A path element refers is the list of labels in the path split by the '/' separator. A request is a match for path p if every p is an element-wise prefix of p of the request path. Note that if the last element of the path is a substring of the last element in request path, it is not a match (e.g. /foo/bar matches /foo/bar/baz, but does not match /foo/barbaz). * ImplementationSpecific: Interpretation of the Path matching is up to the IngressClass. Implementations can treat this as a separate PathType or treat it identically to Prefix or Exact path types. Implementations are required to support all path types. # noqa: E501 - - :param path_type: The path_type of this V1HTTPIngressPath. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path_type is None: # noqa: E501 - raise ValueError("Invalid value for `path_type`, must not be `None`") # noqa: E501 - - self._path_type = path_type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HTTPIngressPath): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HTTPIngressPath): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_rule_value.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_rule_value.py deleted file mode 100644 index 621ffd0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_http_ingress_rule_value.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1HTTPIngressRuleValue(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'paths': 'list[V1HTTPIngressPath]' - } - - attribute_map = { - 'paths': 'paths' - } - - def __init__(self, paths=None, local_vars_configuration=None): # noqa: E501 - """V1HTTPIngressRuleValue - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._paths = None - self.discriminator = None - - self.paths = paths - - @property - def paths(self): - """Gets the paths of this V1HTTPIngressRuleValue. # noqa: E501 - - paths is a collection of paths that map requests to backends. # noqa: E501 - - :return: The paths of this V1HTTPIngressRuleValue. # noqa: E501 - :rtype: list[V1HTTPIngressPath] - """ - return self._paths - - @paths.setter - def paths(self, paths): - """Sets the paths of this V1HTTPIngressRuleValue. - - paths is a collection of paths that map requests to backends. # noqa: E501 - - :param paths: The paths of this V1HTTPIngressRuleValue. # noqa: E501 - :type: list[V1HTTPIngressPath] - """ - if self.local_vars_configuration.client_side_validation and paths is None: # noqa: E501 - raise ValueError("Invalid value for `paths`, must not be `None`") # noqa: E501 - - self._paths = paths - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1HTTPIngressRuleValue): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1HTTPIngressRuleValue): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress.py deleted file mode 100644 index f2b58da..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Ingress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1IngressSpec', - 'status': 'V1IngressStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Ingress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Ingress. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Ingress. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Ingress. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Ingress. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Ingress. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Ingress. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Ingress. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Ingress. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Ingress. # noqa: E501 - - - :return: The metadata of this V1Ingress. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Ingress. - - - :param metadata: The metadata of this V1Ingress. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Ingress. # noqa: E501 - - - :return: The spec of this V1Ingress. # noqa: E501 - :rtype: V1IngressSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Ingress. - - - :param spec: The spec of this V1Ingress. # noqa: E501 - :type: V1IngressSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Ingress. # noqa: E501 - - - :return: The status of this V1Ingress. # noqa: E501 - :rtype: V1IngressStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Ingress. - - - :param status: The status of this V1Ingress. # noqa: E501 - :type: V1IngressStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Ingress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Ingress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_backend.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_backend.py deleted file mode 100644 index 26d931c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_backend.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressBackend(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'resource': 'V1TypedLocalObjectReference', - 'service': 'V1IngressServiceBackend' - } - - attribute_map = { - 'resource': 'resource', - 'service': 'service' - } - - def __init__(self, resource=None, service=None, local_vars_configuration=None): # noqa: E501 - """V1IngressBackend - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._resource = None - self._service = None - self.discriminator = None - - if resource is not None: - self.resource = resource - if service is not None: - self.service = service - - @property - def resource(self): - """Gets the resource of this V1IngressBackend. # noqa: E501 - - - :return: The resource of this V1IngressBackend. # noqa: E501 - :rtype: V1TypedLocalObjectReference - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V1IngressBackend. - - - :param resource: The resource of this V1IngressBackend. # noqa: E501 - :type: V1TypedLocalObjectReference - """ - - self._resource = resource - - @property - def service(self): - """Gets the service of this V1IngressBackend. # noqa: E501 - - - :return: The service of this V1IngressBackend. # noqa: E501 - :rtype: V1IngressServiceBackend - """ - return self._service - - @service.setter - def service(self, service): - """Sets the service of this V1IngressBackend. - - - :param service: The service of this V1IngressBackend. # noqa: E501 - :type: V1IngressServiceBackend - """ - - self._service = service - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressBackend): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressBackend): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class.py deleted file mode 100644 index 39f0a44..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1IngressClassSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1IngressClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1IngressClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1IngressClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1IngressClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1IngressClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1IngressClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1IngressClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1IngressClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1IngressClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1IngressClass. # noqa: E501 - - - :return: The metadata of this V1IngressClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1IngressClass. - - - :param metadata: The metadata of this V1IngressClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1IngressClass. # noqa: E501 - - - :return: The spec of this V1IngressClass. # noqa: E501 - :rtype: V1IngressClassSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1IngressClass. - - - :param spec: The spec of this V1IngressClass. # noqa: E501 - :type: V1IngressClassSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_list.py deleted file mode 100644 index 2f5a051..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1IngressClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1IngressClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1IngressClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1IngressClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1IngressClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1IngressClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1IngressClassList. # noqa: E501 - - items is the list of IngressClasses. # noqa: E501 - - :return: The items of this V1IngressClassList. # noqa: E501 - :rtype: list[V1IngressClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1IngressClassList. - - items is the list of IngressClasses. # noqa: E501 - - :param items: The items of this V1IngressClassList. # noqa: E501 - :type: list[V1IngressClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1IngressClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1IngressClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1IngressClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1IngressClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1IngressClassList. # noqa: E501 - - - :return: The metadata of this V1IngressClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1IngressClassList. - - - :param metadata: The metadata of this V1IngressClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_parameters_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_parameters_reference.py deleted file mode 100644 index 0329480..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_parameters_reference.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressClassParametersReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str', - 'namespace': 'str', - 'scope': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name', - 'namespace': 'namespace', - 'scope': 'scope' - } - - def __init__(self, api_group=None, kind=None, name=None, namespace=None, scope=None, local_vars_configuration=None): # noqa: E501 - """V1IngressClassParametersReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self._namespace = None - self._scope = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - if namespace is not None: - self.namespace = namespace - if scope is not None: - self.scope = scope - - @property - def api_group(self): - """Gets the api_group of this V1IngressClassParametersReference. # noqa: E501 - - apiGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :return: The api_group of this V1IngressClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1IngressClassParametersReference. - - apiGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :param api_group: The api_group of this V1IngressClassParametersReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1IngressClassParametersReference. # noqa: E501 - - kind is the type of resource being referenced. # noqa: E501 - - :return: The kind of this V1IngressClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1IngressClassParametersReference. - - kind is the type of resource being referenced. # noqa: E501 - - :param kind: The kind of this V1IngressClassParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1IngressClassParametersReference. # noqa: E501 - - name is the name of resource being referenced. # noqa: E501 - - :return: The name of this V1IngressClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1IngressClassParametersReference. - - name is the name of resource being referenced. # noqa: E501 - - :param name: The name of this V1IngressClassParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1IngressClassParametersReference. # noqa: E501 - - namespace is the namespace of the resource being referenced. This field is required when scope is set to \"Namespace\" and must be unset when scope is set to \"Cluster\". # noqa: E501 - - :return: The namespace of this V1IngressClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1IngressClassParametersReference. - - namespace is the namespace of the resource being referenced. This field is required when scope is set to \"Namespace\" and must be unset when scope is set to \"Cluster\". # noqa: E501 - - :param namespace: The namespace of this V1IngressClassParametersReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def scope(self): - """Gets the scope of this V1IngressClassParametersReference. # noqa: E501 - - scope represents if this refers to a cluster or namespace scoped resource. This may be set to \"Cluster\" (default) or \"Namespace\". # noqa: E501 - - :return: The scope of this V1IngressClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._scope - - @scope.setter - def scope(self, scope): - """Sets the scope of this V1IngressClassParametersReference. - - scope represents if this refers to a cluster or namespace scoped resource. This may be set to \"Cluster\" (default) or \"Namespace\". # noqa: E501 - - :param scope: The scope of this V1IngressClassParametersReference. # noqa: E501 - :type: str - """ - - self._scope = scope - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressClassParametersReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressClassParametersReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_spec.py deleted file mode 100644 index 989e02e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_class_spec.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressClassSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'controller': 'str', - 'parameters': 'V1IngressClassParametersReference' - } - - attribute_map = { - 'controller': 'controller', - 'parameters': 'parameters' - } - - def __init__(self, controller=None, parameters=None, local_vars_configuration=None): # noqa: E501 - """V1IngressClassSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._controller = None - self._parameters = None - self.discriminator = None - - if controller is not None: - self.controller = controller - if parameters is not None: - self.parameters = parameters - - @property - def controller(self): - """Gets the controller of this V1IngressClassSpec. # noqa: E501 - - controller refers to the name of the controller that should handle this class. This allows for different \"flavors\" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. \"acme.io/ingress-controller\". This field is immutable. # noqa: E501 - - :return: The controller of this V1IngressClassSpec. # noqa: E501 - :rtype: str - """ - return self._controller - - @controller.setter - def controller(self, controller): - """Sets the controller of this V1IngressClassSpec. - - controller refers to the name of the controller that should handle this class. This allows for different \"flavors\" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. \"acme.io/ingress-controller\". This field is immutable. # noqa: E501 - - :param controller: The controller of this V1IngressClassSpec. # noqa: E501 - :type: str - """ - - self._controller = controller - - @property - def parameters(self): - """Gets the parameters of this V1IngressClassSpec. # noqa: E501 - - - :return: The parameters of this V1IngressClassSpec. # noqa: E501 - :rtype: V1IngressClassParametersReference - """ - return self._parameters - - @parameters.setter - def parameters(self, parameters): - """Sets the parameters of this V1IngressClassSpec. - - - :param parameters: The parameters of this V1IngressClassSpec. # noqa: E501 - :type: V1IngressClassParametersReference - """ - - self._parameters = parameters - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressClassSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressClassSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_list.py deleted file mode 100644 index 6f39449..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Ingress]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1IngressList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1IngressList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1IngressList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1IngressList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1IngressList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1IngressList. # noqa: E501 - - items is the list of Ingress. # noqa: E501 - - :return: The items of this V1IngressList. # noqa: E501 - :rtype: list[V1Ingress] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1IngressList. - - items is the list of Ingress. # noqa: E501 - - :param items: The items of this V1IngressList. # noqa: E501 - :type: list[V1Ingress] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1IngressList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1IngressList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1IngressList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1IngressList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1IngressList. # noqa: E501 - - - :return: The metadata of this V1IngressList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1IngressList. - - - :param metadata: The metadata of this V1IngressList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_ingress.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_ingress.py deleted file mode 100644 index c59ceae..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_ingress.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressLoadBalancerIngress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hostname': 'str', - 'ip': 'str', - 'ports': 'list[V1IngressPortStatus]' - } - - attribute_map = { - 'hostname': 'hostname', - 'ip': 'ip', - 'ports': 'ports' - } - - def __init__(self, hostname=None, ip=None, ports=None, local_vars_configuration=None): # noqa: E501 - """V1IngressLoadBalancerIngress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hostname = None - self._ip = None - self._ports = None - self.discriminator = None - - if hostname is not None: - self.hostname = hostname - if ip is not None: - self.ip = ip - if ports is not None: - self.ports = ports - - @property - def hostname(self): - """Gets the hostname of this V1IngressLoadBalancerIngress. # noqa: E501 - - hostname is set for load-balancer ingress points that are DNS based. # noqa: E501 - - :return: The hostname of this V1IngressLoadBalancerIngress. # noqa: E501 - :rtype: str - """ - return self._hostname - - @hostname.setter - def hostname(self, hostname): - """Sets the hostname of this V1IngressLoadBalancerIngress. - - hostname is set for load-balancer ingress points that are DNS based. # noqa: E501 - - :param hostname: The hostname of this V1IngressLoadBalancerIngress. # noqa: E501 - :type: str - """ - - self._hostname = hostname - - @property - def ip(self): - """Gets the ip of this V1IngressLoadBalancerIngress. # noqa: E501 - - ip is set for load-balancer ingress points that are IP based. # noqa: E501 - - :return: The ip of this V1IngressLoadBalancerIngress. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1IngressLoadBalancerIngress. - - ip is set for load-balancer ingress points that are IP based. # noqa: E501 - - :param ip: The ip of this V1IngressLoadBalancerIngress. # noqa: E501 - :type: str - """ - - self._ip = ip - - @property - def ports(self): - """Gets the ports of this V1IngressLoadBalancerIngress. # noqa: E501 - - ports provides information about the ports exposed by this LoadBalancer. # noqa: E501 - - :return: The ports of this V1IngressLoadBalancerIngress. # noqa: E501 - :rtype: list[V1IngressPortStatus] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1IngressLoadBalancerIngress. - - ports provides information about the ports exposed by this LoadBalancer. # noqa: E501 - - :param ports: The ports of this V1IngressLoadBalancerIngress. # noqa: E501 - :type: list[V1IngressPortStatus] - """ - - self._ports = ports - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressLoadBalancerIngress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressLoadBalancerIngress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_status.py deleted file mode 100644 index 83a9ae7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_load_balancer_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressLoadBalancerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ingress': 'list[V1IngressLoadBalancerIngress]' - } - - attribute_map = { - 'ingress': 'ingress' - } - - def __init__(self, ingress=None, local_vars_configuration=None): # noqa: E501 - """V1IngressLoadBalancerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ingress = None - self.discriminator = None - - if ingress is not None: - self.ingress = ingress - - @property - def ingress(self): - """Gets the ingress of this V1IngressLoadBalancerStatus. # noqa: E501 - - ingress is a list containing ingress points for the load-balancer. # noqa: E501 - - :return: The ingress of this V1IngressLoadBalancerStatus. # noqa: E501 - :rtype: list[V1IngressLoadBalancerIngress] - """ - return self._ingress - - @ingress.setter - def ingress(self, ingress): - """Sets the ingress of this V1IngressLoadBalancerStatus. - - ingress is a list containing ingress points for the load-balancer. # noqa: E501 - - :param ingress: The ingress of this V1IngressLoadBalancerStatus. # noqa: E501 - :type: list[V1IngressLoadBalancerIngress] - """ - - self._ingress = ingress - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressLoadBalancerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressLoadBalancerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_port_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_port_status.py deleted file mode 100644 index 06bdba5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_port_status.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressPortStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'error': 'str', - 'port': 'int', - 'protocol': 'str' - } - - attribute_map = { - 'error': 'error', - 'port': 'port', - 'protocol': 'protocol' - } - - def __init__(self, error=None, port=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """V1IngressPortStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._error = None - self._port = None - self._protocol = None - self.discriminator = None - - if error is not None: - self.error = error - self.port = port - self.protocol = protocol - - @property - def error(self): - """Gets the error of this V1IngressPortStatus. # noqa: E501 - - error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. # noqa: E501 - - :return: The error of this V1IngressPortStatus. # noqa: E501 - :rtype: str - """ - return self._error - - @error.setter - def error(self, error): - """Sets the error of this V1IngressPortStatus. - - error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. # noqa: E501 - - :param error: The error of this V1IngressPortStatus. # noqa: E501 - :type: str - """ - - self._error = error - - @property - def port(self): - """Gets the port of this V1IngressPortStatus. # noqa: E501 - - port is the port number of the ingress port. # noqa: E501 - - :return: The port of this V1IngressPortStatus. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1IngressPortStatus. - - port is the port number of the ingress port. # noqa: E501 - - :param port: The port of this V1IngressPortStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this V1IngressPortStatus. # noqa: E501 - - protocol is the protocol of the ingress port. The supported values are: \"TCP\", \"UDP\", \"SCTP\" # noqa: E501 - - :return: The protocol of this V1IngressPortStatus. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this V1IngressPortStatus. - - protocol is the protocol of the ingress port. The supported values are: \"TCP\", \"UDP\", \"SCTP\" # noqa: E501 - - :param protocol: The protocol of this V1IngressPortStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and protocol is None: # noqa: E501 - raise ValueError("Invalid value for `protocol`, must not be `None`") # noqa: E501 - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressPortStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressPortStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_rule.py deleted file mode 100644 index 0683c68..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_rule.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'host': 'str', - 'http': 'V1HTTPIngressRuleValue' - } - - attribute_map = { - 'host': 'host', - 'http': 'http' - } - - def __init__(self, host=None, http=None, local_vars_configuration=None): # noqa: E501 - """V1IngressRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._host = None - self._http = None - self.discriminator = None - - if host is not None: - self.host = host - if http is not None: - self.http = http - - @property - def host(self): - """Gets the host of this V1IngressRule. # noqa: E501 - - host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the IP in the Spec of the parent Ingress. 2. The `:` delimiter is not respected because ports are not allowed. Currently the port of an Ingress is implicitly :80 for http and :443 for https. Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. host can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. \"*.foo.com\"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. # noqa: E501 - - :return: The host of this V1IngressRule. # noqa: E501 - :rtype: str - """ - return self._host - - @host.setter - def host(self, host): - """Sets the host of this V1IngressRule. - - host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the IP in the Spec of the parent Ingress. 2. The `:` delimiter is not respected because ports are not allowed. Currently the port of an Ingress is implicitly :80 for http and :443 for https. Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. host can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. \"*.foo.com\"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. # noqa: E501 - - :param host: The host of this V1IngressRule. # noqa: E501 - :type: str - """ - - self._host = host - - @property - def http(self): - """Gets the http of this V1IngressRule. # noqa: E501 - - - :return: The http of this V1IngressRule. # noqa: E501 - :rtype: V1HTTPIngressRuleValue - """ - return self._http - - @http.setter - def http(self, http): - """Sets the http of this V1IngressRule. - - - :param http: The http of this V1IngressRule. # noqa: E501 - :type: V1HTTPIngressRuleValue - """ - - self._http = http - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_service_backend.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_service_backend.py deleted file mode 100644 index ed95734..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_service_backend.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressServiceBackend(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'port': 'V1ServiceBackendPort' - } - - attribute_map = { - 'name': 'name', - 'port': 'port' - } - - def __init__(self, name=None, port=None, local_vars_configuration=None): # noqa: E501 - """V1IngressServiceBackend - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._port = None - self.discriminator = None - - self.name = name - if port is not None: - self.port = port - - @property - def name(self): - """Gets the name of this V1IngressServiceBackend. # noqa: E501 - - name is the referenced service. The service must exist in the same namespace as the Ingress object. # noqa: E501 - - :return: The name of this V1IngressServiceBackend. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1IngressServiceBackend. - - name is the referenced service. The service must exist in the same namespace as the Ingress object. # noqa: E501 - - :param name: The name of this V1IngressServiceBackend. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def port(self): - """Gets the port of this V1IngressServiceBackend. # noqa: E501 - - - :return: The port of this V1IngressServiceBackend. # noqa: E501 - :rtype: V1ServiceBackendPort - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1IngressServiceBackend. - - - :param port: The port of this V1IngressServiceBackend. # noqa: E501 - :type: V1ServiceBackendPort - """ - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressServiceBackend): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressServiceBackend): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_spec.py deleted file mode 100644 index 790677e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_spec.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default_backend': 'V1IngressBackend', - 'ingress_class_name': 'str', - 'rules': 'list[V1IngressRule]', - 'tls': 'list[V1IngressTLS]' - } - - attribute_map = { - 'default_backend': 'defaultBackend', - 'ingress_class_name': 'ingressClassName', - 'rules': 'rules', - 'tls': 'tls' - } - - def __init__(self, default_backend=None, ingress_class_name=None, rules=None, tls=None, local_vars_configuration=None): # noqa: E501 - """V1IngressSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default_backend = None - self._ingress_class_name = None - self._rules = None - self._tls = None - self.discriminator = None - - if default_backend is not None: - self.default_backend = default_backend - if ingress_class_name is not None: - self.ingress_class_name = ingress_class_name - if rules is not None: - self.rules = rules - if tls is not None: - self.tls = tls - - @property - def default_backend(self): - """Gets the default_backend of this V1IngressSpec. # noqa: E501 - - - :return: The default_backend of this V1IngressSpec. # noqa: E501 - :rtype: V1IngressBackend - """ - return self._default_backend - - @default_backend.setter - def default_backend(self, default_backend): - """Sets the default_backend of this V1IngressSpec. - - - :param default_backend: The default_backend of this V1IngressSpec. # noqa: E501 - :type: V1IngressBackend - """ - - self._default_backend = default_backend - - @property - def ingress_class_name(self): - """Gets the ingress_class_name of this V1IngressSpec. # noqa: E501 - - ingressClassName is the name of an IngressClass cluster resource. Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present. # noqa: E501 - - :return: The ingress_class_name of this V1IngressSpec. # noqa: E501 - :rtype: str - """ - return self._ingress_class_name - - @ingress_class_name.setter - def ingress_class_name(self, ingress_class_name): - """Sets the ingress_class_name of this V1IngressSpec. - - ingressClassName is the name of an IngressClass cluster resource. Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present. # noqa: E501 - - :param ingress_class_name: The ingress_class_name of this V1IngressSpec. # noqa: E501 - :type: str - """ - - self._ingress_class_name = ingress_class_name - - @property - def rules(self): - """Gets the rules of this V1IngressSpec. # noqa: E501 - - rules is a list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend. # noqa: E501 - - :return: The rules of this V1IngressSpec. # noqa: E501 - :rtype: list[V1IngressRule] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1IngressSpec. - - rules is a list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend. # noqa: E501 - - :param rules: The rules of this V1IngressSpec. # noqa: E501 - :type: list[V1IngressRule] - """ - - self._rules = rules - - @property - def tls(self): - """Gets the tls of this V1IngressSpec. # noqa: E501 - - tls represents the TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI. # noqa: E501 - - :return: The tls of this V1IngressSpec. # noqa: E501 - :rtype: list[V1IngressTLS] - """ - return self._tls - - @tls.setter - def tls(self, tls): - """Sets the tls of this V1IngressSpec. - - tls represents the TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI. # noqa: E501 - - :param tls: The tls of this V1IngressSpec. # noqa: E501 - :type: list[V1IngressTLS] - """ - - self._tls = tls - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_status.py deleted file mode 100644 index 5ba9954..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_status.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'load_balancer': 'V1IngressLoadBalancerStatus' - } - - attribute_map = { - 'load_balancer': 'loadBalancer' - } - - def __init__(self, load_balancer=None, local_vars_configuration=None): # noqa: E501 - """V1IngressStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._load_balancer = None - self.discriminator = None - - if load_balancer is not None: - self.load_balancer = load_balancer - - @property - def load_balancer(self): - """Gets the load_balancer of this V1IngressStatus. # noqa: E501 - - - :return: The load_balancer of this V1IngressStatus. # noqa: E501 - :rtype: V1IngressLoadBalancerStatus - """ - return self._load_balancer - - @load_balancer.setter - def load_balancer(self, load_balancer): - """Sets the load_balancer of this V1IngressStatus. - - - :param load_balancer: The load_balancer of this V1IngressStatus. # noqa: E501 - :type: V1IngressLoadBalancerStatus - """ - - self._load_balancer = load_balancer - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_tls.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_tls.py deleted file mode 100644 index 42d243f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ingress_tls.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IngressTLS(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hosts': 'list[str]', - 'secret_name': 'str' - } - - attribute_map = { - 'hosts': 'hosts', - 'secret_name': 'secretName' - } - - def __init__(self, hosts=None, secret_name=None, local_vars_configuration=None): # noqa: E501 - """V1IngressTLS - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hosts = None - self._secret_name = None - self.discriminator = None - - if hosts is not None: - self.hosts = hosts - if secret_name is not None: - self.secret_name = secret_name - - @property - def hosts(self): - """Gets the hosts of this V1IngressTLS. # noqa: E501 - - hosts is a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. # noqa: E501 - - :return: The hosts of this V1IngressTLS. # noqa: E501 - :rtype: list[str] - """ - return self._hosts - - @hosts.setter - def hosts(self, hosts): - """Sets the hosts of this V1IngressTLS. - - hosts is a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified. # noqa: E501 - - :param hosts: The hosts of this V1IngressTLS. # noqa: E501 - :type: list[str] - """ - - self._hosts = hosts - - @property - def secret_name(self): - """Gets the secret_name of this V1IngressTLS. # noqa: E501 - - secretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the \"Host\" header is used for routing. # noqa: E501 - - :return: The secret_name of this V1IngressTLS. # noqa: E501 - :rtype: str - """ - return self._secret_name - - @secret_name.setter - def secret_name(self, secret_name): - """Sets the secret_name of this V1IngressTLS. - - secretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the \"Host\" header is used for routing. # noqa: E501 - - :param secret_name: The secret_name of this V1IngressTLS. # noqa: E501 - :type: str - """ - - self._secret_name = secret_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IngressTLS): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IngressTLS): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ip_block.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ip_block.py deleted file mode 100644 index 82b595f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_ip_block.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1IPBlock(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'cidr': 'str', - '_except': 'list[str]' - } - - attribute_map = { - 'cidr': 'cidr', - '_except': 'except' - } - - def __init__(self, cidr=None, _except=None, local_vars_configuration=None): # noqa: E501 - """V1IPBlock - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._cidr = None - self.__except = None - self.discriminator = None - - self.cidr = cidr - if _except is not None: - self._except = _except - - @property - def cidr(self): - """Gets the cidr of this V1IPBlock. # noqa: E501 - - cidr is a string representing the IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" # noqa: E501 - - :return: The cidr of this V1IPBlock. # noqa: E501 - :rtype: str - """ - return self._cidr - - @cidr.setter - def cidr(self, cidr): - """Sets the cidr of this V1IPBlock. - - cidr is a string representing the IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" # noqa: E501 - - :param cidr: The cidr of this V1IPBlock. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and cidr is None: # noqa: E501 - raise ValueError("Invalid value for `cidr`, must not be `None`") # noqa: E501 - - self._cidr = cidr - - @property - def _except(self): - """Gets the _except of this V1IPBlock. # noqa: E501 - - except is a slice of CIDRs that should not be included within an IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" Except values will be rejected if they are outside the cidr range # noqa: E501 - - :return: The _except of this V1IPBlock. # noqa: E501 - :rtype: list[str] - """ - return self.__except - - @_except.setter - def _except(self, _except): - """Sets the _except of this V1IPBlock. - - except is a slice of CIDRs that should not be included within an IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" Except values will be rejected if they are outside the cidr range # noqa: E501 - - :param _except: The _except of this V1IPBlock. # noqa: E501 - :type: list[str] - """ - - self.__except = _except - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1IPBlock): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1IPBlock): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_persistent_volume_source.py deleted file mode 100644 index c3ebf2c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_persistent_volume_source.py +++ /dev/null @@ -1,403 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ISCSIPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'chap_auth_discovery': 'bool', - 'chap_auth_session': 'bool', - 'fs_type': 'str', - 'initiator_name': 'str', - 'iqn': 'str', - 'iscsi_interface': 'str', - 'lun': 'int', - 'portals': 'list[str]', - 'read_only': 'bool', - 'secret_ref': 'V1SecretReference', - 'target_portal': 'str' - } - - attribute_map = { - 'chap_auth_discovery': 'chapAuthDiscovery', - 'chap_auth_session': 'chapAuthSession', - 'fs_type': 'fsType', - 'initiator_name': 'initiatorName', - 'iqn': 'iqn', - 'iscsi_interface': 'iscsiInterface', - 'lun': 'lun', - 'portals': 'portals', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'target_portal': 'targetPortal' - } - - def __init__(self, chap_auth_discovery=None, chap_auth_session=None, fs_type=None, initiator_name=None, iqn=None, iscsi_interface=None, lun=None, portals=None, read_only=None, secret_ref=None, target_portal=None, local_vars_configuration=None): # noqa: E501 - """V1ISCSIPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._chap_auth_discovery = None - self._chap_auth_session = None - self._fs_type = None - self._initiator_name = None - self._iqn = None - self._iscsi_interface = None - self._lun = None - self._portals = None - self._read_only = None - self._secret_ref = None - self._target_portal = None - self.discriminator = None - - if chap_auth_discovery is not None: - self.chap_auth_discovery = chap_auth_discovery - if chap_auth_session is not None: - self.chap_auth_session = chap_auth_session - if fs_type is not None: - self.fs_type = fs_type - if initiator_name is not None: - self.initiator_name = initiator_name - self.iqn = iqn - if iscsi_interface is not None: - self.iscsi_interface = iscsi_interface - self.lun = lun - if portals is not None: - self.portals = portals - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - self.target_portal = target_portal - - @property - def chap_auth_discovery(self): - """Gets the chap_auth_discovery of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication # noqa: E501 - - :return: The chap_auth_discovery of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._chap_auth_discovery - - @chap_auth_discovery.setter - def chap_auth_discovery(self, chap_auth_discovery): - """Sets the chap_auth_discovery of this V1ISCSIPersistentVolumeSource. - - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication # noqa: E501 - - :param chap_auth_discovery: The chap_auth_discovery of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._chap_auth_discovery = chap_auth_discovery - - @property - def chap_auth_session(self): - """Gets the chap_auth_session of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - chapAuthSession defines whether support iSCSI Session CHAP authentication # noqa: E501 - - :return: The chap_auth_session of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._chap_auth_session - - @chap_auth_session.setter - def chap_auth_session(self, chap_auth_session): - """Sets the chap_auth_session of this V1ISCSIPersistentVolumeSource. - - chapAuthSession defines whether support iSCSI Session CHAP authentication # noqa: E501 - - :param chap_auth_session: The chap_auth_session of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._chap_auth_session = chap_auth_session - - @property - def fs_type(self): - """Gets the fs_type of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi # noqa: E501 - - :return: The fs_type of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1ISCSIPersistentVolumeSource. - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi # noqa: E501 - - :param fs_type: The fs_type of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def initiator_name(self): - """Gets the initiator_name of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. # noqa: E501 - - :return: The initiator_name of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._initiator_name - - @initiator_name.setter - def initiator_name(self, initiator_name): - """Sets the initiator_name of this V1ISCSIPersistentVolumeSource. - - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. # noqa: E501 - - :param initiator_name: The initiator_name of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._initiator_name = initiator_name - - @property - def iqn(self): - """Gets the iqn of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - iqn is Target iSCSI Qualified Name. # noqa: E501 - - :return: The iqn of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._iqn - - @iqn.setter - def iqn(self, iqn): - """Sets the iqn of this V1ISCSIPersistentVolumeSource. - - iqn is Target iSCSI Qualified Name. # noqa: E501 - - :param iqn: The iqn of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and iqn is None: # noqa: E501 - raise ValueError("Invalid value for `iqn`, must not be `None`") # noqa: E501 - - self._iqn = iqn - - @property - def iscsi_interface(self): - """Gets the iscsi_interface of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). # noqa: E501 - - :return: The iscsi_interface of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._iscsi_interface - - @iscsi_interface.setter - def iscsi_interface(self, iscsi_interface): - """Sets the iscsi_interface of this V1ISCSIPersistentVolumeSource. - - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). # noqa: E501 - - :param iscsi_interface: The iscsi_interface of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._iscsi_interface = iscsi_interface - - @property - def lun(self): - """Gets the lun of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - lun is iSCSI Target Lun number. # noqa: E501 - - :return: The lun of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: int - """ - return self._lun - - @lun.setter - def lun(self, lun): - """Sets the lun of this V1ISCSIPersistentVolumeSource. - - lun is iSCSI Target Lun number. # noqa: E501 - - :param lun: The lun of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and lun is None: # noqa: E501 - raise ValueError("Invalid value for `lun`, must not be `None`") # noqa: E501 - - self._lun = lun - - @property - def portals(self): - """Gets the portals of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :return: The portals of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._portals - - @portals.setter - def portals(self, portals): - """Sets the portals of this V1ISCSIPersistentVolumeSource. - - portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :param portals: The portals of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: list[str] - """ - - self._portals = portals - - @property - def read_only(self): - """Gets the read_only of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. # noqa: E501 - - :return: The read_only of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1ISCSIPersistentVolumeSource. - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. # noqa: E501 - - :param read_only: The read_only of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1ISCSIPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._secret_ref = secret_ref - - @property - def target_portal(self): - """Gets the target_portal of this V1ISCSIPersistentVolumeSource. # noqa: E501 - - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :return: The target_portal of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._target_portal - - @target_portal.setter - def target_portal(self, target_portal): - """Sets the target_portal of this V1ISCSIPersistentVolumeSource. - - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :param target_portal: The target_portal of this V1ISCSIPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and target_portal is None: # noqa: E501 - raise ValueError("Invalid value for `target_portal`, must not be `None`") # noqa: E501 - - self._target_portal = target_portal - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ISCSIPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ISCSIPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_volume_source.py deleted file mode 100644 index 3e5c220..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_iscsi_volume_source.py +++ /dev/null @@ -1,403 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ISCSIVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'chap_auth_discovery': 'bool', - 'chap_auth_session': 'bool', - 'fs_type': 'str', - 'initiator_name': 'str', - 'iqn': 'str', - 'iscsi_interface': 'str', - 'lun': 'int', - 'portals': 'list[str]', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference', - 'target_portal': 'str' - } - - attribute_map = { - 'chap_auth_discovery': 'chapAuthDiscovery', - 'chap_auth_session': 'chapAuthSession', - 'fs_type': 'fsType', - 'initiator_name': 'initiatorName', - 'iqn': 'iqn', - 'iscsi_interface': 'iscsiInterface', - 'lun': 'lun', - 'portals': 'portals', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'target_portal': 'targetPortal' - } - - def __init__(self, chap_auth_discovery=None, chap_auth_session=None, fs_type=None, initiator_name=None, iqn=None, iscsi_interface=None, lun=None, portals=None, read_only=None, secret_ref=None, target_portal=None, local_vars_configuration=None): # noqa: E501 - """V1ISCSIVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._chap_auth_discovery = None - self._chap_auth_session = None - self._fs_type = None - self._initiator_name = None - self._iqn = None - self._iscsi_interface = None - self._lun = None - self._portals = None - self._read_only = None - self._secret_ref = None - self._target_portal = None - self.discriminator = None - - if chap_auth_discovery is not None: - self.chap_auth_discovery = chap_auth_discovery - if chap_auth_session is not None: - self.chap_auth_session = chap_auth_session - if fs_type is not None: - self.fs_type = fs_type - if initiator_name is not None: - self.initiator_name = initiator_name - self.iqn = iqn - if iscsi_interface is not None: - self.iscsi_interface = iscsi_interface - self.lun = lun - if portals is not None: - self.portals = portals - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - self.target_portal = target_portal - - @property - def chap_auth_discovery(self): - """Gets the chap_auth_discovery of this V1ISCSIVolumeSource. # noqa: E501 - - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication # noqa: E501 - - :return: The chap_auth_discovery of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._chap_auth_discovery - - @chap_auth_discovery.setter - def chap_auth_discovery(self, chap_auth_discovery): - """Sets the chap_auth_discovery of this V1ISCSIVolumeSource. - - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication # noqa: E501 - - :param chap_auth_discovery: The chap_auth_discovery of this V1ISCSIVolumeSource. # noqa: E501 - :type: bool - """ - - self._chap_auth_discovery = chap_auth_discovery - - @property - def chap_auth_session(self): - """Gets the chap_auth_session of this V1ISCSIVolumeSource. # noqa: E501 - - chapAuthSession defines whether support iSCSI Session CHAP authentication # noqa: E501 - - :return: The chap_auth_session of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._chap_auth_session - - @chap_auth_session.setter - def chap_auth_session(self, chap_auth_session): - """Sets the chap_auth_session of this V1ISCSIVolumeSource. - - chapAuthSession defines whether support iSCSI Session CHAP authentication # noqa: E501 - - :param chap_auth_session: The chap_auth_session of this V1ISCSIVolumeSource. # noqa: E501 - :type: bool - """ - - self._chap_auth_session = chap_auth_session - - @property - def fs_type(self): - """Gets the fs_type of this V1ISCSIVolumeSource. # noqa: E501 - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi # noqa: E501 - - :return: The fs_type of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1ISCSIVolumeSource. - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi # noqa: E501 - - :param fs_type: The fs_type of this V1ISCSIVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def initiator_name(self): - """Gets the initiator_name of this V1ISCSIVolumeSource. # noqa: E501 - - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. # noqa: E501 - - :return: The initiator_name of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._initiator_name - - @initiator_name.setter - def initiator_name(self, initiator_name): - """Sets the initiator_name of this V1ISCSIVolumeSource. - - initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. # noqa: E501 - - :param initiator_name: The initiator_name of this V1ISCSIVolumeSource. # noqa: E501 - :type: str - """ - - self._initiator_name = initiator_name - - @property - def iqn(self): - """Gets the iqn of this V1ISCSIVolumeSource. # noqa: E501 - - iqn is the target iSCSI Qualified Name. # noqa: E501 - - :return: The iqn of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._iqn - - @iqn.setter - def iqn(self, iqn): - """Sets the iqn of this V1ISCSIVolumeSource. - - iqn is the target iSCSI Qualified Name. # noqa: E501 - - :param iqn: The iqn of this V1ISCSIVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and iqn is None: # noqa: E501 - raise ValueError("Invalid value for `iqn`, must not be `None`") # noqa: E501 - - self._iqn = iqn - - @property - def iscsi_interface(self): - """Gets the iscsi_interface of this V1ISCSIVolumeSource. # noqa: E501 - - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). # noqa: E501 - - :return: The iscsi_interface of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._iscsi_interface - - @iscsi_interface.setter - def iscsi_interface(self, iscsi_interface): - """Sets the iscsi_interface of this V1ISCSIVolumeSource. - - iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). # noqa: E501 - - :param iscsi_interface: The iscsi_interface of this V1ISCSIVolumeSource. # noqa: E501 - :type: str - """ - - self._iscsi_interface = iscsi_interface - - @property - def lun(self): - """Gets the lun of this V1ISCSIVolumeSource. # noqa: E501 - - lun represents iSCSI Target Lun number. # noqa: E501 - - :return: The lun of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: int - """ - return self._lun - - @lun.setter - def lun(self, lun): - """Sets the lun of this V1ISCSIVolumeSource. - - lun represents iSCSI Target Lun number. # noqa: E501 - - :param lun: The lun of this V1ISCSIVolumeSource. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and lun is None: # noqa: E501 - raise ValueError("Invalid value for `lun`, must not be `None`") # noqa: E501 - - self._lun = lun - - @property - def portals(self): - """Gets the portals of this V1ISCSIVolumeSource. # noqa: E501 - - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :return: The portals of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._portals - - @portals.setter - def portals(self, portals): - """Sets the portals of this V1ISCSIVolumeSource. - - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :param portals: The portals of this V1ISCSIVolumeSource. # noqa: E501 - :type: list[str] - """ - - self._portals = portals - - @property - def read_only(self): - """Gets the read_only of this V1ISCSIVolumeSource. # noqa: E501 - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. # noqa: E501 - - :return: The read_only of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1ISCSIVolumeSource. - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. # noqa: E501 - - :param read_only: The read_only of this V1ISCSIVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1ISCSIVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1ISCSIVolumeSource. - - - :param secret_ref: The secret_ref of this V1ISCSIVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - @property - def target_portal(self): - """Gets the target_portal of this V1ISCSIVolumeSource. # noqa: E501 - - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :return: The target_portal of this V1ISCSIVolumeSource. # noqa: E501 - :rtype: str - """ - return self._target_portal - - @target_portal.setter - def target_portal(self, target_portal): - """Sets the target_portal of this V1ISCSIVolumeSource. - - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). # noqa: E501 - - :param target_portal: The target_portal of this V1ISCSIVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and target_portal is None: # noqa: E501 - raise ValueError("Invalid value for `target_portal`, must not be `None`") # noqa: E501 - - self._target_portal = target_portal - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ISCSIVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ISCSIVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job.py deleted file mode 100644 index 608cc1a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Job(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1JobSpec', - 'status': 'V1JobStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Job - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Job. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Job. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Job. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Job. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Job. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Job. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Job. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Job. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Job. # noqa: E501 - - - :return: The metadata of this V1Job. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Job. - - - :param metadata: The metadata of this V1Job. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Job. # noqa: E501 - - - :return: The spec of this V1Job. # noqa: E501 - :rtype: V1JobSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Job. - - - :param spec: The spec of this V1Job. # noqa: E501 - :type: V1JobSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Job. # noqa: E501 - - - :return: The status of this V1Job. # noqa: E501 - :rtype: V1JobStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Job. - - - :param status: The status of this V1Job. # noqa: E501 - :type: V1JobStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Job): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Job): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_condition.py deleted file mode 100644 index 02682b4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_condition.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JobCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_probe_time': 'datetime', - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_probe_time': 'lastProbeTime', - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_probe_time=None, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1JobCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_probe_time = None - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_probe_time is not None: - self.last_probe_time = last_probe_time - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_probe_time(self): - """Gets the last_probe_time of this V1JobCondition. # noqa: E501 - - Last time the condition was checked. # noqa: E501 - - :return: The last_probe_time of this V1JobCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_probe_time - - @last_probe_time.setter - def last_probe_time(self, last_probe_time): - """Sets the last_probe_time of this V1JobCondition. - - Last time the condition was checked. # noqa: E501 - - :param last_probe_time: The last_probe_time of this V1JobCondition. # noqa: E501 - :type: datetime - """ - - self._last_probe_time = last_probe_time - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1JobCondition. # noqa: E501 - - Last time the condition transit from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1JobCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1JobCondition. - - Last time the condition transit from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1JobCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1JobCondition. # noqa: E501 - - Human readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1JobCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1JobCondition. - - Human readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1JobCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1JobCondition. # noqa: E501 - - (brief) reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1JobCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1JobCondition. - - (brief) reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1JobCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1JobCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1JobCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1JobCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1JobCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1JobCondition. # noqa: E501 - - Type of job condition, Complete or Failed. # noqa: E501 - - :return: The type of this V1JobCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1JobCondition. - - Type of job condition, Complete or Failed. # noqa: E501 - - :param type: The type of this V1JobCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JobCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JobCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_list.py deleted file mode 100644 index e774a06..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JobList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Job]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1JobList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1JobList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1JobList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1JobList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1JobList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1JobList. # noqa: E501 - - items is the list of Jobs. # noqa: E501 - - :return: The items of this V1JobList. # noqa: E501 - :rtype: list[V1Job] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1JobList. - - items is the list of Jobs. # noqa: E501 - - :param items: The items of this V1JobList. # noqa: E501 - :type: list[V1Job] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1JobList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1JobList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1JobList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1JobList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1JobList. # noqa: E501 - - - :return: The metadata of this V1JobList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1JobList. - - - :param metadata: The metadata of this V1JobList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JobList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JobList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_spec.py deleted file mode 100644 index 1eb8eb7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_spec.py +++ /dev/null @@ -1,481 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JobSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'active_deadline_seconds': 'int', - 'backoff_limit': 'int', - 'backoff_limit_per_index': 'int', - 'completion_mode': 'str', - 'completions': 'int', - 'manual_selector': 'bool', - 'max_failed_indexes': 'int', - 'parallelism': 'int', - 'pod_failure_policy': 'V1PodFailurePolicy', - 'pod_replacement_policy': 'str', - 'selector': 'V1LabelSelector', - 'suspend': 'bool', - 'template': 'V1PodTemplateSpec', - 'ttl_seconds_after_finished': 'int' - } - - attribute_map = { - 'active_deadline_seconds': 'activeDeadlineSeconds', - 'backoff_limit': 'backoffLimit', - 'backoff_limit_per_index': 'backoffLimitPerIndex', - 'completion_mode': 'completionMode', - 'completions': 'completions', - 'manual_selector': 'manualSelector', - 'max_failed_indexes': 'maxFailedIndexes', - 'parallelism': 'parallelism', - 'pod_failure_policy': 'podFailurePolicy', - 'pod_replacement_policy': 'podReplacementPolicy', - 'selector': 'selector', - 'suspend': 'suspend', - 'template': 'template', - 'ttl_seconds_after_finished': 'ttlSecondsAfterFinished' - } - - def __init__(self, active_deadline_seconds=None, backoff_limit=None, backoff_limit_per_index=None, completion_mode=None, completions=None, manual_selector=None, max_failed_indexes=None, parallelism=None, pod_failure_policy=None, pod_replacement_policy=None, selector=None, suspend=None, template=None, ttl_seconds_after_finished=None, local_vars_configuration=None): # noqa: E501 - """V1JobSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._active_deadline_seconds = None - self._backoff_limit = None - self._backoff_limit_per_index = None - self._completion_mode = None - self._completions = None - self._manual_selector = None - self._max_failed_indexes = None - self._parallelism = None - self._pod_failure_policy = None - self._pod_replacement_policy = None - self._selector = None - self._suspend = None - self._template = None - self._ttl_seconds_after_finished = None - self.discriminator = None - - if active_deadline_seconds is not None: - self.active_deadline_seconds = active_deadline_seconds - if backoff_limit is not None: - self.backoff_limit = backoff_limit - if backoff_limit_per_index is not None: - self.backoff_limit_per_index = backoff_limit_per_index - if completion_mode is not None: - self.completion_mode = completion_mode - if completions is not None: - self.completions = completions - if manual_selector is not None: - self.manual_selector = manual_selector - if max_failed_indexes is not None: - self.max_failed_indexes = max_failed_indexes - if parallelism is not None: - self.parallelism = parallelism - if pod_failure_policy is not None: - self.pod_failure_policy = pod_failure_policy - if pod_replacement_policy is not None: - self.pod_replacement_policy = pod_replacement_policy - if selector is not None: - self.selector = selector - if suspend is not None: - self.suspend = suspend - self.template = template - if ttl_seconds_after_finished is not None: - self.ttl_seconds_after_finished = ttl_seconds_after_finished - - @property - def active_deadline_seconds(self): - """Gets the active_deadline_seconds of this V1JobSpec. # noqa: E501 - - Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again. # noqa: E501 - - :return: The active_deadline_seconds of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._active_deadline_seconds - - @active_deadline_seconds.setter - def active_deadline_seconds(self, active_deadline_seconds): - """Sets the active_deadline_seconds of this V1JobSpec. - - Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again. # noqa: E501 - - :param active_deadline_seconds: The active_deadline_seconds of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._active_deadline_seconds = active_deadline_seconds - - @property - def backoff_limit(self): - """Gets the backoff_limit of this V1JobSpec. # noqa: E501 - - Specifies the number of retries before marking this job failed. Defaults to 6 # noqa: E501 - - :return: The backoff_limit of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._backoff_limit - - @backoff_limit.setter - def backoff_limit(self, backoff_limit): - """Sets the backoff_limit of this V1JobSpec. - - Specifies the number of retries before marking this job failed. Defaults to 6 # noqa: E501 - - :param backoff_limit: The backoff_limit of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._backoff_limit = backoff_limit - - @property - def backoff_limit_per_index(self): - """Gets the backoff_limit_per_index of this V1JobSpec. # noqa: E501 - - Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :return: The backoff_limit_per_index of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._backoff_limit_per_index - - @backoff_limit_per_index.setter - def backoff_limit_per_index(self, backoff_limit_per_index): - """Sets the backoff_limit_per_index of this V1JobSpec. - - Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :param backoff_limit_per_index: The backoff_limit_per_index of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._backoff_limit_per_index = backoff_limit_per_index - - @property - def completion_mode(self): - """Gets the completion_mode of this V1JobSpec. # noqa: E501 - - completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`. `NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other. `Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job. # noqa: E501 - - :return: The completion_mode of this V1JobSpec. # noqa: E501 - :rtype: str - """ - return self._completion_mode - - @completion_mode.setter - def completion_mode(self, completion_mode): - """Sets the completion_mode of this V1JobSpec. - - completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`. `NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other. `Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job. # noqa: E501 - - :param completion_mode: The completion_mode of this V1JobSpec. # noqa: E501 - :type: str - """ - - self._completion_mode = completion_mode - - @property - def completions(self): - """Gets the completions of this V1JobSpec. # noqa: E501 - - Specifies the desired number of successfully finished pods the job should be run with. Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :return: The completions of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._completions - - @completions.setter - def completions(self, completions): - """Sets the completions of this V1JobSpec. - - Specifies the desired number of successfully finished pods the job should be run with. Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :param completions: The completions of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._completions = completions - - @property - def manual_selector(self): - """Gets the manual_selector of this V1JobSpec. # noqa: E501 - - manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector # noqa: E501 - - :return: The manual_selector of this V1JobSpec. # noqa: E501 - :rtype: bool - """ - return self._manual_selector - - @manual_selector.setter - def manual_selector(self, manual_selector): - """Sets the manual_selector of this V1JobSpec. - - manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector # noqa: E501 - - :param manual_selector: The manual_selector of this V1JobSpec. # noqa: E501 - :type: bool - """ - - self._manual_selector = manual_selector - - @property - def max_failed_indexes(self): - """Gets the max_failed_indexes of this V1JobSpec. # noqa: E501 - - Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :return: The max_failed_indexes of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._max_failed_indexes - - @max_failed_indexes.setter - def max_failed_indexes(self, max_failed_indexes): - """Sets the max_failed_indexes of this V1JobSpec. - - Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :param max_failed_indexes: The max_failed_indexes of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._max_failed_indexes = max_failed_indexes - - @property - def parallelism(self): - """Gets the parallelism of this V1JobSpec. # noqa: E501 - - Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :return: The parallelism of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._parallelism - - @parallelism.setter - def parallelism(self, parallelism): - """Sets the parallelism of this V1JobSpec. - - Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :param parallelism: The parallelism of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._parallelism = parallelism - - @property - def pod_failure_policy(self): - """Gets the pod_failure_policy of this V1JobSpec. # noqa: E501 - - - :return: The pod_failure_policy of this V1JobSpec. # noqa: E501 - :rtype: V1PodFailurePolicy - """ - return self._pod_failure_policy - - @pod_failure_policy.setter - def pod_failure_policy(self, pod_failure_policy): - """Sets the pod_failure_policy of this V1JobSpec. - - - :param pod_failure_policy: The pod_failure_policy of this V1JobSpec. # noqa: E501 - :type: V1PodFailurePolicy - """ - - self._pod_failure_policy = pod_failure_policy - - @property - def pod_replacement_policy(self): - """Gets the pod_replacement_policy of this V1JobSpec. # noqa: E501 - - podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods when they are terminating (has a metadata.deletionTimestamp) or failed. - Failed means to wait until a previously created Pod is fully terminated (has phase Failed or Succeeded) before creating a replacement Pod. When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default. # noqa: E501 - - :return: The pod_replacement_policy of this V1JobSpec. # noqa: E501 - :rtype: str - """ - return self._pod_replacement_policy - - @pod_replacement_policy.setter - def pod_replacement_policy(self, pod_replacement_policy): - """Sets the pod_replacement_policy of this V1JobSpec. - - podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods when they are terminating (has a metadata.deletionTimestamp) or failed. - Failed means to wait until a previously created Pod is fully terminated (has phase Failed or Succeeded) before creating a replacement Pod. When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default. # noqa: E501 - - :param pod_replacement_policy: The pod_replacement_policy of this V1JobSpec. # noqa: E501 - :type: str - """ - - self._pod_replacement_policy = pod_replacement_policy - - @property - def selector(self): - """Gets the selector of this V1JobSpec. # noqa: E501 - - - :return: The selector of this V1JobSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1JobSpec. - - - :param selector: The selector of this V1JobSpec. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - @property - def suspend(self): - """Gets the suspend of this V1JobSpec. # noqa: E501 - - suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false. # noqa: E501 - - :return: The suspend of this V1JobSpec. # noqa: E501 - :rtype: bool - """ - return self._suspend - - @suspend.setter - def suspend(self, suspend): - """Sets the suspend of this V1JobSpec. - - suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false. # noqa: E501 - - :param suspend: The suspend of this V1JobSpec. # noqa: E501 - :type: bool - """ - - self._suspend = suspend - - @property - def template(self): - """Gets the template of this V1JobSpec. # noqa: E501 - - - :return: The template of this V1JobSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1JobSpec. - - - :param template: The template of this V1JobSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and template is None: # noqa: E501 - raise ValueError("Invalid value for `template`, must not be `None`") # noqa: E501 - - self._template = template - - @property - def ttl_seconds_after_finished(self): - """Gets the ttl_seconds_after_finished of this V1JobSpec. # noqa: E501 - - ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. # noqa: E501 - - :return: The ttl_seconds_after_finished of this V1JobSpec. # noqa: E501 - :rtype: int - """ - return self._ttl_seconds_after_finished - - @ttl_seconds_after_finished.setter - def ttl_seconds_after_finished(self, ttl_seconds_after_finished): - """Sets the ttl_seconds_after_finished of this V1JobSpec. - - ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes. # noqa: E501 - - :param ttl_seconds_after_finished: The ttl_seconds_after_finished of this V1JobSpec. # noqa: E501 - :type: int - """ - - self._ttl_seconds_after_finished = ttl_seconds_after_finished - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JobSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JobSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_status.py deleted file mode 100644 index 4dd75ba..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_status.py +++ /dev/null @@ -1,400 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JobStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'active': 'int', - 'completed_indexes': 'str', - 'completion_time': 'datetime', - 'conditions': 'list[V1JobCondition]', - 'failed': 'int', - 'failed_indexes': 'str', - 'ready': 'int', - 'start_time': 'datetime', - 'succeeded': 'int', - 'terminating': 'int', - 'uncounted_terminated_pods': 'V1UncountedTerminatedPods' - } - - attribute_map = { - 'active': 'active', - 'completed_indexes': 'completedIndexes', - 'completion_time': 'completionTime', - 'conditions': 'conditions', - 'failed': 'failed', - 'failed_indexes': 'failedIndexes', - 'ready': 'ready', - 'start_time': 'startTime', - 'succeeded': 'succeeded', - 'terminating': 'terminating', - 'uncounted_terminated_pods': 'uncountedTerminatedPods' - } - - def __init__(self, active=None, completed_indexes=None, completion_time=None, conditions=None, failed=None, failed_indexes=None, ready=None, start_time=None, succeeded=None, terminating=None, uncounted_terminated_pods=None, local_vars_configuration=None): # noqa: E501 - """V1JobStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._active = None - self._completed_indexes = None - self._completion_time = None - self._conditions = None - self._failed = None - self._failed_indexes = None - self._ready = None - self._start_time = None - self._succeeded = None - self._terminating = None - self._uncounted_terminated_pods = None - self.discriminator = None - - if active is not None: - self.active = active - if completed_indexes is not None: - self.completed_indexes = completed_indexes - if completion_time is not None: - self.completion_time = completion_time - if conditions is not None: - self.conditions = conditions - if failed is not None: - self.failed = failed - if failed_indexes is not None: - self.failed_indexes = failed_indexes - if ready is not None: - self.ready = ready - if start_time is not None: - self.start_time = start_time - if succeeded is not None: - self.succeeded = succeeded - if terminating is not None: - self.terminating = terminating - if uncounted_terminated_pods is not None: - self.uncounted_terminated_pods = uncounted_terminated_pods - - @property - def active(self): - """Gets the active of this V1JobStatus. # noqa: E501 - - The number of pending and running pods. # noqa: E501 - - :return: The active of this V1JobStatus. # noqa: E501 - :rtype: int - """ - return self._active - - @active.setter - def active(self, active): - """Sets the active of this V1JobStatus. - - The number of pending and running pods. # noqa: E501 - - :param active: The active of this V1JobStatus. # noqa: E501 - :type: int - """ - - self._active = active - - @property - def completed_indexes(self): - """Gets the completed_indexes of this V1JobStatus. # noqa: E501 - - completedIndexes holds the completed indexes when .spec.completionMode = \"Indexed\" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". # noqa: E501 - - :return: The completed_indexes of this V1JobStatus. # noqa: E501 - :rtype: str - """ - return self._completed_indexes - - @completed_indexes.setter - def completed_indexes(self, completed_indexes): - """Sets the completed_indexes of this V1JobStatus. - - completedIndexes holds the completed indexes when .spec.completionMode = \"Indexed\" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". # noqa: E501 - - :param completed_indexes: The completed_indexes of this V1JobStatus. # noqa: E501 - :type: str - """ - - self._completed_indexes = completed_indexes - - @property - def completion_time(self): - """Gets the completion_time of this V1JobStatus. # noqa: E501 - - Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is only set when the job finishes successfully. # noqa: E501 - - :return: The completion_time of this V1JobStatus. # noqa: E501 - :rtype: datetime - """ - return self._completion_time - - @completion_time.setter - def completion_time(self, completion_time): - """Sets the completion_time of this V1JobStatus. - - Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is only set when the job finishes successfully. # noqa: E501 - - :param completion_time: The completion_time of this V1JobStatus. # noqa: E501 - :type: datetime - """ - - self._completion_time = completion_time - - @property - def conditions(self): - """Gets the conditions of this V1JobStatus. # noqa: E501 - - The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \"Failed\" and status true. When a Job is suspended, one of the conditions will have type \"Suspended\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \"Complete\" and status true. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :return: The conditions of this V1JobStatus. # noqa: E501 - :rtype: list[V1JobCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1JobStatus. - - The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \"Failed\" and status true. When a Job is suspended, one of the conditions will have type \"Suspended\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \"Complete\" and status true. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ # noqa: E501 - - :param conditions: The conditions of this V1JobStatus. # noqa: E501 - :type: list[V1JobCondition] - """ - - self._conditions = conditions - - @property - def failed(self): - """Gets the failed of this V1JobStatus. # noqa: E501 - - The number of pods which reached phase Failed. # noqa: E501 - - :return: The failed of this V1JobStatus. # noqa: E501 - :rtype: int - """ - return self._failed - - @failed.setter - def failed(self, failed): - """Sets the failed of this V1JobStatus. - - The number of pods which reached phase Failed. # noqa: E501 - - :param failed: The failed of this V1JobStatus. # noqa: E501 - :type: int - """ - - self._failed = failed - - @property - def failed_indexes(self): - """Gets the failed_indexes of this V1JobStatus. # noqa: E501 - - FailedIndexes holds the failed indexes when backoffLimitPerIndex=true. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :return: The failed_indexes of this V1JobStatus. # noqa: E501 - :rtype: str - """ - return self._failed_indexes - - @failed_indexes.setter - def failed_indexes(self, failed_indexes): - """Sets the failed_indexes of this V1JobStatus. - - FailedIndexes holds the failed indexes when backoffLimitPerIndex=true. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). # noqa: E501 - - :param failed_indexes: The failed_indexes of this V1JobStatus. # noqa: E501 - :type: str - """ - - self._failed_indexes = failed_indexes - - @property - def ready(self): - """Gets the ready of this V1JobStatus. # noqa: E501 - - The number of pods which have a Ready condition. # noqa: E501 - - :return: The ready of this V1JobStatus. # noqa: E501 - :rtype: int - """ - return self._ready - - @ready.setter - def ready(self, ready): - """Sets the ready of this V1JobStatus. - - The number of pods which have a Ready condition. # noqa: E501 - - :param ready: The ready of this V1JobStatus. # noqa: E501 - :type: int - """ - - self._ready = ready - - @property - def start_time(self): - """Gets the start_time of this V1JobStatus. # noqa: E501 - - Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC. # noqa: E501 - - :return: The start_time of this V1JobStatus. # noqa: E501 - :rtype: datetime - """ - return self._start_time - - @start_time.setter - def start_time(self, start_time): - """Sets the start_time of this V1JobStatus. - - Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC. # noqa: E501 - - :param start_time: The start_time of this V1JobStatus. # noqa: E501 - :type: datetime - """ - - self._start_time = start_time - - @property - def succeeded(self): - """Gets the succeeded of this V1JobStatus. # noqa: E501 - - The number of pods which reached phase Succeeded. # noqa: E501 - - :return: The succeeded of this V1JobStatus. # noqa: E501 - :rtype: int - """ - return self._succeeded - - @succeeded.setter - def succeeded(self, succeeded): - """Sets the succeeded of this V1JobStatus. - - The number of pods which reached phase Succeeded. # noqa: E501 - - :param succeeded: The succeeded of this V1JobStatus. # noqa: E501 - :type: int - """ - - self._succeeded = succeeded - - @property - def terminating(self): - """Gets the terminating of this V1JobStatus. # noqa: E501 - - The number of pods which are terminating (in phase Pending or Running and have a deletionTimestamp). This field is beta-level. The job controller populates the field when the feature gate JobPodReplacementPolicy is enabled (enabled by default). # noqa: E501 - - :return: The terminating of this V1JobStatus. # noqa: E501 - :rtype: int - """ - return self._terminating - - @terminating.setter - def terminating(self, terminating): - """Sets the terminating of this V1JobStatus. - - The number of pods which are terminating (in phase Pending or Running and have a deletionTimestamp). This field is beta-level. The job controller populates the field when the feature gate JobPodReplacementPolicy is enabled (enabled by default). # noqa: E501 - - :param terminating: The terminating of this V1JobStatus. # noqa: E501 - :type: int - """ - - self._terminating = terminating - - @property - def uncounted_terminated_pods(self): - """Gets the uncounted_terminated_pods of this V1JobStatus. # noqa: E501 - - - :return: The uncounted_terminated_pods of this V1JobStatus. # noqa: E501 - :rtype: V1UncountedTerminatedPods - """ - return self._uncounted_terminated_pods - - @uncounted_terminated_pods.setter - def uncounted_terminated_pods(self, uncounted_terminated_pods): - """Sets the uncounted_terminated_pods of this V1JobStatus. - - - :param uncounted_terminated_pods: The uncounted_terminated_pods of this V1JobStatus. # noqa: E501 - :type: V1UncountedTerminatedPods - """ - - self._uncounted_terminated_pods = uncounted_terminated_pods - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JobStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JobStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_template_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_template_spec.py deleted file mode 100644 index 1010935..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_job_template_spec.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JobTemplateSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metadata': 'V1ObjectMeta', - 'spec': 'V1JobSpec' - } - - attribute_map = { - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1JobTemplateSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metadata = None - self._spec = None - self.discriminator = None - - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def metadata(self): - """Gets the metadata of this V1JobTemplateSpec. # noqa: E501 - - - :return: The metadata of this V1JobTemplateSpec. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1JobTemplateSpec. - - - :param metadata: The metadata of this V1JobTemplateSpec. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1JobTemplateSpec. # noqa: E501 - - - :return: The spec of this V1JobTemplateSpec. # noqa: E501 - :rtype: V1JobSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1JobTemplateSpec. - - - :param spec: The spec of this V1JobTemplateSpec. # noqa: E501 - :type: V1JobSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JobTemplateSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JobTemplateSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_json_schema_props.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_json_schema_props.py deleted file mode 100644 index 3028b4b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_json_schema_props.py +++ /dev/null @@ -1,1264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1JSONSchemaProps(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ref': 'str', - 'schema': 'str', - 'additional_items': 'object', - 'additional_properties': 'object', - 'all_of': 'list[V1JSONSchemaProps]', - 'any_of': 'list[V1JSONSchemaProps]', - 'default': 'object', - 'definitions': 'dict(str, V1JSONSchemaProps)', - 'dependencies': 'dict(str, object)', - 'description': 'str', - 'enum': 'list[object]', - 'example': 'object', - 'exclusive_maximum': 'bool', - 'exclusive_minimum': 'bool', - 'external_docs': 'V1ExternalDocumentation', - 'format': 'str', - 'id': 'str', - 'items': 'object', - 'max_items': 'int', - 'max_length': 'int', - 'max_properties': 'int', - 'maximum': 'float', - 'min_items': 'int', - 'min_length': 'int', - 'min_properties': 'int', - 'minimum': 'float', - 'multiple_of': 'float', - '_not': 'V1JSONSchemaProps', - 'nullable': 'bool', - 'one_of': 'list[V1JSONSchemaProps]', - 'pattern': 'str', - 'pattern_properties': 'dict(str, V1JSONSchemaProps)', - 'properties': 'dict(str, V1JSONSchemaProps)', - 'required': 'list[str]', - 'title': 'str', - 'type': 'str', - 'unique_items': 'bool', - 'x_kubernetes_embedded_resource': 'bool', - 'x_kubernetes_int_or_string': 'bool', - 'x_kubernetes_list_map_keys': 'list[str]', - 'x_kubernetes_list_type': 'str', - 'x_kubernetes_map_type': 'str', - 'x_kubernetes_preserve_unknown_fields': 'bool', - 'x_kubernetes_validations': 'list[V1ValidationRule]' - } - - attribute_map = { - 'ref': '$ref', - 'schema': '$schema', - 'additional_items': 'additionalItems', - 'additional_properties': 'additionalProperties', - 'all_of': 'allOf', - 'any_of': 'anyOf', - 'default': 'default', - 'definitions': 'definitions', - 'dependencies': 'dependencies', - 'description': 'description', - 'enum': 'enum', - 'example': 'example', - 'exclusive_maximum': 'exclusiveMaximum', - 'exclusive_minimum': 'exclusiveMinimum', - 'external_docs': 'externalDocs', - 'format': 'format', - 'id': 'id', - 'items': 'items', - 'max_items': 'maxItems', - 'max_length': 'maxLength', - 'max_properties': 'maxProperties', - 'maximum': 'maximum', - 'min_items': 'minItems', - 'min_length': 'minLength', - 'min_properties': 'minProperties', - 'minimum': 'minimum', - 'multiple_of': 'multipleOf', - '_not': 'not', - 'nullable': 'nullable', - 'one_of': 'oneOf', - 'pattern': 'pattern', - 'pattern_properties': 'patternProperties', - 'properties': 'properties', - 'required': 'required', - 'title': 'title', - 'type': 'type', - 'unique_items': 'uniqueItems', - 'x_kubernetes_embedded_resource': 'x-kubernetes-embedded-resource', - 'x_kubernetes_int_or_string': 'x-kubernetes-int-or-string', - 'x_kubernetes_list_map_keys': 'x-kubernetes-list-map-keys', - 'x_kubernetes_list_type': 'x-kubernetes-list-type', - 'x_kubernetes_map_type': 'x-kubernetes-map-type', - 'x_kubernetes_preserve_unknown_fields': 'x-kubernetes-preserve-unknown-fields', - 'x_kubernetes_validations': 'x-kubernetes-validations' - } - - def __init__(self, ref=None, schema=None, additional_items=None, additional_properties=None, all_of=None, any_of=None, default=None, definitions=None, dependencies=None, description=None, enum=None, example=None, exclusive_maximum=None, exclusive_minimum=None, external_docs=None, format=None, id=None, items=None, max_items=None, max_length=None, max_properties=None, maximum=None, min_items=None, min_length=None, min_properties=None, minimum=None, multiple_of=None, _not=None, nullable=None, one_of=None, pattern=None, pattern_properties=None, properties=None, required=None, title=None, type=None, unique_items=None, x_kubernetes_embedded_resource=None, x_kubernetes_int_or_string=None, x_kubernetes_list_map_keys=None, x_kubernetes_list_type=None, x_kubernetes_map_type=None, x_kubernetes_preserve_unknown_fields=None, x_kubernetes_validations=None, local_vars_configuration=None): # noqa: E501 - """V1JSONSchemaProps - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ref = None - self._schema = None - self._additional_items = None - self._additional_properties = None - self._all_of = None - self._any_of = None - self._default = None - self._definitions = None - self._dependencies = None - self._description = None - self._enum = None - self._example = None - self._exclusive_maximum = None - self._exclusive_minimum = None - self._external_docs = None - self._format = None - self._id = None - self._items = None - self._max_items = None - self._max_length = None - self._max_properties = None - self._maximum = None - self._min_items = None - self._min_length = None - self._min_properties = None - self._minimum = None - self._multiple_of = None - self.__not = None - self._nullable = None - self._one_of = None - self._pattern = None - self._pattern_properties = None - self._properties = None - self._required = None - self._title = None - self._type = None - self._unique_items = None - self._x_kubernetes_embedded_resource = None - self._x_kubernetes_int_or_string = None - self._x_kubernetes_list_map_keys = None - self._x_kubernetes_list_type = None - self._x_kubernetes_map_type = None - self._x_kubernetes_preserve_unknown_fields = None - self._x_kubernetes_validations = None - self.discriminator = None - - if ref is not None: - self.ref = ref - if schema is not None: - self.schema = schema - if additional_items is not None: - self.additional_items = additional_items - if additional_properties is not None: - self.additional_properties = additional_properties - if all_of is not None: - self.all_of = all_of - if any_of is not None: - self.any_of = any_of - if default is not None: - self.default = default - if definitions is not None: - self.definitions = definitions - if dependencies is not None: - self.dependencies = dependencies - if description is not None: - self.description = description - if enum is not None: - self.enum = enum - if example is not None: - self.example = example - if exclusive_maximum is not None: - self.exclusive_maximum = exclusive_maximum - if exclusive_minimum is not None: - self.exclusive_minimum = exclusive_minimum - if external_docs is not None: - self.external_docs = external_docs - if format is not None: - self.format = format - if id is not None: - self.id = id - if items is not None: - self.items = items - if max_items is not None: - self.max_items = max_items - if max_length is not None: - self.max_length = max_length - if max_properties is not None: - self.max_properties = max_properties - if maximum is not None: - self.maximum = maximum - if min_items is not None: - self.min_items = min_items - if min_length is not None: - self.min_length = min_length - if min_properties is not None: - self.min_properties = min_properties - if minimum is not None: - self.minimum = minimum - if multiple_of is not None: - self.multiple_of = multiple_of - if _not is not None: - self._not = _not - if nullable is not None: - self.nullable = nullable - if one_of is not None: - self.one_of = one_of - if pattern is not None: - self.pattern = pattern - if pattern_properties is not None: - self.pattern_properties = pattern_properties - if properties is not None: - self.properties = properties - if required is not None: - self.required = required - if title is not None: - self.title = title - if type is not None: - self.type = type - if unique_items is not None: - self.unique_items = unique_items - if x_kubernetes_embedded_resource is not None: - self.x_kubernetes_embedded_resource = x_kubernetes_embedded_resource - if x_kubernetes_int_or_string is not None: - self.x_kubernetes_int_or_string = x_kubernetes_int_or_string - if x_kubernetes_list_map_keys is not None: - self.x_kubernetes_list_map_keys = x_kubernetes_list_map_keys - if x_kubernetes_list_type is not None: - self.x_kubernetes_list_type = x_kubernetes_list_type - if x_kubernetes_map_type is not None: - self.x_kubernetes_map_type = x_kubernetes_map_type - if x_kubernetes_preserve_unknown_fields is not None: - self.x_kubernetes_preserve_unknown_fields = x_kubernetes_preserve_unknown_fields - if x_kubernetes_validations is not None: - self.x_kubernetes_validations = x_kubernetes_validations - - @property - def ref(self): - """Gets the ref of this V1JSONSchemaProps. # noqa: E501 - - - :return: The ref of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._ref - - @ref.setter - def ref(self, ref): - """Sets the ref of this V1JSONSchemaProps. - - - :param ref: The ref of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._ref = ref - - @property - def schema(self): - """Gets the schema of this V1JSONSchemaProps. # noqa: E501 - - - :return: The schema of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._schema - - @schema.setter - def schema(self, schema): - """Sets the schema of this V1JSONSchemaProps. - - - :param schema: The schema of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._schema = schema - - @property - def additional_items(self): - """Gets the additional_items of this V1JSONSchemaProps. # noqa: E501 - - JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property. # noqa: E501 - - :return: The additional_items of this V1JSONSchemaProps. # noqa: E501 - :rtype: object - """ - return self._additional_items - - @additional_items.setter - def additional_items(self, additional_items): - """Sets the additional_items of this V1JSONSchemaProps. - - JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property. # noqa: E501 - - :param additional_items: The additional_items of this V1JSONSchemaProps. # noqa: E501 - :type: object - """ - - self._additional_items = additional_items - - @property - def additional_properties(self): - """Gets the additional_properties of this V1JSONSchemaProps. # noqa: E501 - - JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property. # noqa: E501 - - :return: The additional_properties of this V1JSONSchemaProps. # noqa: E501 - :rtype: object - """ - return self._additional_properties - - @additional_properties.setter - def additional_properties(self, additional_properties): - """Sets the additional_properties of this V1JSONSchemaProps. - - JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property. # noqa: E501 - - :param additional_properties: The additional_properties of this V1JSONSchemaProps. # noqa: E501 - :type: object - """ - - self._additional_properties = additional_properties - - @property - def all_of(self): - """Gets the all_of of this V1JSONSchemaProps. # noqa: E501 - - - :return: The all_of of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[V1JSONSchemaProps] - """ - return self._all_of - - @all_of.setter - def all_of(self, all_of): - """Sets the all_of of this V1JSONSchemaProps. - - - :param all_of: The all_of of this V1JSONSchemaProps. # noqa: E501 - :type: list[V1JSONSchemaProps] - """ - - self._all_of = all_of - - @property - def any_of(self): - """Gets the any_of of this V1JSONSchemaProps. # noqa: E501 - - - :return: The any_of of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[V1JSONSchemaProps] - """ - return self._any_of - - @any_of.setter - def any_of(self, any_of): - """Sets the any_of of this V1JSONSchemaProps. - - - :param any_of: The any_of of this V1JSONSchemaProps. # noqa: E501 - :type: list[V1JSONSchemaProps] - """ - - self._any_of = any_of - - @property - def default(self): - """Gets the default of this V1JSONSchemaProps. # noqa: E501 - - default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false. # noqa: E501 - - :return: The default of this V1JSONSchemaProps. # noqa: E501 - :rtype: object - """ - return self._default - - @default.setter - def default(self, default): - """Sets the default of this V1JSONSchemaProps. - - default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false. # noqa: E501 - - :param default: The default of this V1JSONSchemaProps. # noqa: E501 - :type: object - """ - - self._default = default - - @property - def definitions(self): - """Gets the definitions of this V1JSONSchemaProps. # noqa: E501 - - - :return: The definitions of this V1JSONSchemaProps. # noqa: E501 - :rtype: dict(str, V1JSONSchemaProps) - """ - return self._definitions - - @definitions.setter - def definitions(self, definitions): - """Sets the definitions of this V1JSONSchemaProps. - - - :param definitions: The definitions of this V1JSONSchemaProps. # noqa: E501 - :type: dict(str, V1JSONSchemaProps) - """ - - self._definitions = definitions - - @property - def dependencies(self): - """Gets the dependencies of this V1JSONSchemaProps. # noqa: E501 - - - :return: The dependencies of this V1JSONSchemaProps. # noqa: E501 - :rtype: dict(str, object) - """ - return self._dependencies - - @dependencies.setter - def dependencies(self, dependencies): - """Sets the dependencies of this V1JSONSchemaProps. - - - :param dependencies: The dependencies of this V1JSONSchemaProps. # noqa: E501 - :type: dict(str, object) - """ - - self._dependencies = dependencies - - @property - def description(self): - """Gets the description of this V1JSONSchemaProps. # noqa: E501 - - - :return: The description of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._description - - @description.setter - def description(self, description): - """Sets the description of this V1JSONSchemaProps. - - - :param description: The description of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._description = description - - @property - def enum(self): - """Gets the enum of this V1JSONSchemaProps. # noqa: E501 - - - :return: The enum of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[object] - """ - return self._enum - - @enum.setter - def enum(self, enum): - """Sets the enum of this V1JSONSchemaProps. - - - :param enum: The enum of this V1JSONSchemaProps. # noqa: E501 - :type: list[object] - """ - - self._enum = enum - - @property - def example(self): - """Gets the example of this V1JSONSchemaProps. # noqa: E501 - - JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil. # noqa: E501 - - :return: The example of this V1JSONSchemaProps. # noqa: E501 - :rtype: object - """ - return self._example - - @example.setter - def example(self, example): - """Sets the example of this V1JSONSchemaProps. - - JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil. # noqa: E501 - - :param example: The example of this V1JSONSchemaProps. # noqa: E501 - :type: object - """ - - self._example = example - - @property - def exclusive_maximum(self): - """Gets the exclusive_maximum of this V1JSONSchemaProps. # noqa: E501 - - - :return: The exclusive_maximum of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._exclusive_maximum - - @exclusive_maximum.setter - def exclusive_maximum(self, exclusive_maximum): - """Sets the exclusive_maximum of this V1JSONSchemaProps. - - - :param exclusive_maximum: The exclusive_maximum of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._exclusive_maximum = exclusive_maximum - - @property - def exclusive_minimum(self): - """Gets the exclusive_minimum of this V1JSONSchemaProps. # noqa: E501 - - - :return: The exclusive_minimum of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._exclusive_minimum - - @exclusive_minimum.setter - def exclusive_minimum(self, exclusive_minimum): - """Sets the exclusive_minimum of this V1JSONSchemaProps. - - - :param exclusive_minimum: The exclusive_minimum of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._exclusive_minimum = exclusive_minimum - - @property - def external_docs(self): - """Gets the external_docs of this V1JSONSchemaProps. # noqa: E501 - - - :return: The external_docs of this V1JSONSchemaProps. # noqa: E501 - :rtype: V1ExternalDocumentation - """ - return self._external_docs - - @external_docs.setter - def external_docs(self, external_docs): - """Sets the external_docs of this V1JSONSchemaProps. - - - :param external_docs: The external_docs of this V1JSONSchemaProps. # noqa: E501 - :type: V1ExternalDocumentation - """ - - self._external_docs = external_docs - - @property - def format(self): - """Gets the format of this V1JSONSchemaProps. # noqa: E501 - - format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated: - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\" - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded binary data - password: any kind of string - date: a date string like \"2006-01-02\" as defined by full-date in RFC3339 - duration: a duration string like \"22 ns\" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\" as defined by date-time in RFC3339. # noqa: E501 - - :return: The format of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._format - - @format.setter - def format(self, format): - """Sets the format of this V1JSONSchemaProps. - - format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated: - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\" - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded binary data - password: any kind of string - date: a date string like \"2006-01-02\" as defined by full-date in RFC3339 - duration: a duration string like \"22 ns\" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\" as defined by date-time in RFC3339. # noqa: E501 - - :param format: The format of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._format = format - - @property - def id(self): - """Gets the id of this V1JSONSchemaProps. # noqa: E501 - - - :return: The id of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._id - - @id.setter - def id(self, id): - """Sets the id of this V1JSONSchemaProps. - - - :param id: The id of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._id = id - - @property - def items(self): - """Gets the items of this V1JSONSchemaProps. # noqa: E501 - - JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes. # noqa: E501 - - :return: The items of this V1JSONSchemaProps. # noqa: E501 - :rtype: object - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1JSONSchemaProps. - - JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes. # noqa: E501 - - :param items: The items of this V1JSONSchemaProps. # noqa: E501 - :type: object - """ - - self._items = items - - @property - def max_items(self): - """Gets the max_items of this V1JSONSchemaProps. # noqa: E501 - - - :return: The max_items of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._max_items - - @max_items.setter - def max_items(self, max_items): - """Sets the max_items of this V1JSONSchemaProps. - - - :param max_items: The max_items of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._max_items = max_items - - @property - def max_length(self): - """Gets the max_length of this V1JSONSchemaProps. # noqa: E501 - - - :return: The max_length of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._max_length - - @max_length.setter - def max_length(self, max_length): - """Sets the max_length of this V1JSONSchemaProps. - - - :param max_length: The max_length of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._max_length = max_length - - @property - def max_properties(self): - """Gets the max_properties of this V1JSONSchemaProps. # noqa: E501 - - - :return: The max_properties of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._max_properties - - @max_properties.setter - def max_properties(self, max_properties): - """Sets the max_properties of this V1JSONSchemaProps. - - - :param max_properties: The max_properties of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._max_properties = max_properties - - @property - def maximum(self): - """Gets the maximum of this V1JSONSchemaProps. # noqa: E501 - - - :return: The maximum of this V1JSONSchemaProps. # noqa: E501 - :rtype: float - """ - return self._maximum - - @maximum.setter - def maximum(self, maximum): - """Sets the maximum of this V1JSONSchemaProps. - - - :param maximum: The maximum of this V1JSONSchemaProps. # noqa: E501 - :type: float - """ - - self._maximum = maximum - - @property - def min_items(self): - """Gets the min_items of this V1JSONSchemaProps. # noqa: E501 - - - :return: The min_items of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._min_items - - @min_items.setter - def min_items(self, min_items): - """Sets the min_items of this V1JSONSchemaProps. - - - :param min_items: The min_items of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._min_items = min_items - - @property - def min_length(self): - """Gets the min_length of this V1JSONSchemaProps. # noqa: E501 - - - :return: The min_length of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._min_length - - @min_length.setter - def min_length(self, min_length): - """Sets the min_length of this V1JSONSchemaProps. - - - :param min_length: The min_length of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._min_length = min_length - - @property - def min_properties(self): - """Gets the min_properties of this V1JSONSchemaProps. # noqa: E501 - - - :return: The min_properties of this V1JSONSchemaProps. # noqa: E501 - :rtype: int - """ - return self._min_properties - - @min_properties.setter - def min_properties(self, min_properties): - """Sets the min_properties of this V1JSONSchemaProps. - - - :param min_properties: The min_properties of this V1JSONSchemaProps. # noqa: E501 - :type: int - """ - - self._min_properties = min_properties - - @property - def minimum(self): - """Gets the minimum of this V1JSONSchemaProps. # noqa: E501 - - - :return: The minimum of this V1JSONSchemaProps. # noqa: E501 - :rtype: float - """ - return self._minimum - - @minimum.setter - def minimum(self, minimum): - """Sets the minimum of this V1JSONSchemaProps. - - - :param minimum: The minimum of this V1JSONSchemaProps. # noqa: E501 - :type: float - """ - - self._minimum = minimum - - @property - def multiple_of(self): - """Gets the multiple_of of this V1JSONSchemaProps. # noqa: E501 - - - :return: The multiple_of of this V1JSONSchemaProps. # noqa: E501 - :rtype: float - """ - return self._multiple_of - - @multiple_of.setter - def multiple_of(self, multiple_of): - """Sets the multiple_of of this V1JSONSchemaProps. - - - :param multiple_of: The multiple_of of this V1JSONSchemaProps. # noqa: E501 - :type: float - """ - - self._multiple_of = multiple_of - - @property - def _not(self): - """Gets the _not of this V1JSONSchemaProps. # noqa: E501 - - - :return: The _not of this V1JSONSchemaProps. # noqa: E501 - :rtype: V1JSONSchemaProps - """ - return self.__not - - @_not.setter - def _not(self, _not): - """Sets the _not of this V1JSONSchemaProps. - - - :param _not: The _not of this V1JSONSchemaProps. # noqa: E501 - :type: V1JSONSchemaProps - """ - - self.__not = _not - - @property - def nullable(self): - """Gets the nullable of this V1JSONSchemaProps. # noqa: E501 - - - :return: The nullable of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._nullable - - @nullable.setter - def nullable(self, nullable): - """Sets the nullable of this V1JSONSchemaProps. - - - :param nullable: The nullable of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._nullable = nullable - - @property - def one_of(self): - """Gets the one_of of this V1JSONSchemaProps. # noqa: E501 - - - :return: The one_of of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[V1JSONSchemaProps] - """ - return self._one_of - - @one_of.setter - def one_of(self, one_of): - """Sets the one_of of this V1JSONSchemaProps. - - - :param one_of: The one_of of this V1JSONSchemaProps. # noqa: E501 - :type: list[V1JSONSchemaProps] - """ - - self._one_of = one_of - - @property - def pattern(self): - """Gets the pattern of this V1JSONSchemaProps. # noqa: E501 - - - :return: The pattern of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._pattern - - @pattern.setter - def pattern(self, pattern): - """Sets the pattern of this V1JSONSchemaProps. - - - :param pattern: The pattern of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._pattern = pattern - - @property - def pattern_properties(self): - """Gets the pattern_properties of this V1JSONSchemaProps. # noqa: E501 - - - :return: The pattern_properties of this V1JSONSchemaProps. # noqa: E501 - :rtype: dict(str, V1JSONSchemaProps) - """ - return self._pattern_properties - - @pattern_properties.setter - def pattern_properties(self, pattern_properties): - """Sets the pattern_properties of this V1JSONSchemaProps. - - - :param pattern_properties: The pattern_properties of this V1JSONSchemaProps. # noqa: E501 - :type: dict(str, V1JSONSchemaProps) - """ - - self._pattern_properties = pattern_properties - - @property - def properties(self): - """Gets the properties of this V1JSONSchemaProps. # noqa: E501 - - - :return: The properties of this V1JSONSchemaProps. # noqa: E501 - :rtype: dict(str, V1JSONSchemaProps) - """ - return self._properties - - @properties.setter - def properties(self, properties): - """Sets the properties of this V1JSONSchemaProps. - - - :param properties: The properties of this V1JSONSchemaProps. # noqa: E501 - :type: dict(str, V1JSONSchemaProps) - """ - - self._properties = properties - - @property - def required(self): - """Gets the required of this V1JSONSchemaProps. # noqa: E501 - - - :return: The required of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[str] - """ - return self._required - - @required.setter - def required(self, required): - """Sets the required of this V1JSONSchemaProps. - - - :param required: The required of this V1JSONSchemaProps. # noqa: E501 - :type: list[str] - """ - - self._required = required - - @property - def title(self): - """Gets the title of this V1JSONSchemaProps. # noqa: E501 - - - :return: The title of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._title - - @title.setter - def title(self, title): - """Sets the title of this V1JSONSchemaProps. - - - :param title: The title of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._title = title - - @property - def type(self): - """Gets the type of this V1JSONSchemaProps. # noqa: E501 - - - :return: The type of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1JSONSchemaProps. - - - :param type: The type of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._type = type - - @property - def unique_items(self): - """Gets the unique_items of this V1JSONSchemaProps. # noqa: E501 - - - :return: The unique_items of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._unique_items - - @unique_items.setter - def unique_items(self, unique_items): - """Sets the unique_items of this V1JSONSchemaProps. - - - :param unique_items: The unique_items of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._unique_items = unique_items - - @property - def x_kubernetes_embedded_resource(self): - """Gets the x_kubernetes_embedded_resource of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata). # noqa: E501 - - :return: The x_kubernetes_embedded_resource of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._x_kubernetes_embedded_resource - - @x_kubernetes_embedded_resource.setter - def x_kubernetes_embedded_resource(self, x_kubernetes_embedded_resource): - """Sets the x_kubernetes_embedded_resource of this V1JSONSchemaProps. - - x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata). # noqa: E501 - - :param x_kubernetes_embedded_resource: The x_kubernetes_embedded_resource of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._x_kubernetes_embedded_resource = x_kubernetes_embedded_resource - - @property - def x_kubernetes_int_or_string(self): - """Gets the x_kubernetes_int_or_string of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns: 1) anyOf: - type: integer - type: string 2) allOf: - anyOf: - type: integer - type: string - ... zero or more # noqa: E501 - - :return: The x_kubernetes_int_or_string of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._x_kubernetes_int_or_string - - @x_kubernetes_int_or_string.setter - def x_kubernetes_int_or_string(self, x_kubernetes_int_or_string): - """Sets the x_kubernetes_int_or_string of this V1JSONSchemaProps. - - x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns: 1) anyOf: - type: integer - type: string 2) allOf: - anyOf: - type: integer - type: string - ... zero or more # noqa: E501 - - :param x_kubernetes_int_or_string: The x_kubernetes_int_or_string of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._x_kubernetes_int_or_string = x_kubernetes_int_or_string - - @property - def x_kubernetes_list_map_keys(self): - """Gets the x_kubernetes_list_map_keys of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map. This tag MUST only be used on lists that have the \"x-kubernetes-list-type\" extension set to \"map\". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported). The properties specified must either be required or have a default value, to ensure those properties are present for all list items. # noqa: E501 - - :return: The x_kubernetes_list_map_keys of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[str] - """ - return self._x_kubernetes_list_map_keys - - @x_kubernetes_list_map_keys.setter - def x_kubernetes_list_map_keys(self, x_kubernetes_list_map_keys): - """Sets the x_kubernetes_list_map_keys of this V1JSONSchemaProps. - - x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map. This tag MUST only be used on lists that have the \"x-kubernetes-list-type\" extension set to \"map\". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported). The properties specified must either be required or have a default value, to ensure those properties are present for all list items. # noqa: E501 - - :param x_kubernetes_list_map_keys: The x_kubernetes_list_map_keys of this V1JSONSchemaProps. # noqa: E501 - :type: list[str] - """ - - self._x_kubernetes_list_map_keys = x_kubernetes_list_map_keys - - @property - def x_kubernetes_list_type(self): - """Gets the x_kubernetes_list_type of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values: 1) `atomic`: the list is treated as a single entity, like a scalar. Atomic lists will be entirely replaced when updated. This extension may be used on any type of list (struct, scalar, ...). 2) `set`: Sets are lists that must not have multiple items with the same value. Each value must be a scalar, an object with x-kubernetes-map-type `atomic` or an array with x-kubernetes-list-type `atomic`. 3) `map`: These lists are like maps in that their elements have a non-index key used to identify them. Order is preserved upon merge. The map tag must only be used on a list with elements of type object. Defaults to atomic for arrays. # noqa: E501 - - :return: The x_kubernetes_list_type of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._x_kubernetes_list_type - - @x_kubernetes_list_type.setter - def x_kubernetes_list_type(self, x_kubernetes_list_type): - """Sets the x_kubernetes_list_type of this V1JSONSchemaProps. - - x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values: 1) `atomic`: the list is treated as a single entity, like a scalar. Atomic lists will be entirely replaced when updated. This extension may be used on any type of list (struct, scalar, ...). 2) `set`: Sets are lists that must not have multiple items with the same value. Each value must be a scalar, an object with x-kubernetes-map-type `atomic` or an array with x-kubernetes-list-type `atomic`. 3) `map`: These lists are like maps in that their elements have a non-index key used to identify them. Order is preserved upon merge. The map tag must only be used on a list with elements of type object. Defaults to atomic for arrays. # noqa: E501 - - :param x_kubernetes_list_type: The x_kubernetes_list_type of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._x_kubernetes_list_type = x_kubernetes_list_type - - @property - def x_kubernetes_map_type(self): - """Gets the x_kubernetes_map_type of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values: 1) `granular`: These maps are actual maps (key-value pairs) and each fields are independent from each other (they can each be manipulated by separate actors). This is the default behaviour for all maps. 2) `atomic`: the list is treated as a single entity, like a scalar. Atomic maps will be entirely replaced when updated. # noqa: E501 - - :return: The x_kubernetes_map_type of this V1JSONSchemaProps. # noqa: E501 - :rtype: str - """ - return self._x_kubernetes_map_type - - @x_kubernetes_map_type.setter - def x_kubernetes_map_type(self, x_kubernetes_map_type): - """Sets the x_kubernetes_map_type of this V1JSONSchemaProps. - - x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values: 1) `granular`: These maps are actual maps (key-value pairs) and each fields are independent from each other (they can each be manipulated by separate actors). This is the default behaviour for all maps. 2) `atomic`: the list is treated as a single entity, like a scalar. Atomic maps will be entirely replaced when updated. # noqa: E501 - - :param x_kubernetes_map_type: The x_kubernetes_map_type of this V1JSONSchemaProps. # noqa: E501 - :type: str - """ - - self._x_kubernetes_map_type = x_kubernetes_map_type - - @property - def x_kubernetes_preserve_unknown_fields(self): - """Gets the x_kubernetes_preserve_unknown_fields of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. # noqa: E501 - - :return: The x_kubernetes_preserve_unknown_fields of this V1JSONSchemaProps. # noqa: E501 - :rtype: bool - """ - return self._x_kubernetes_preserve_unknown_fields - - @x_kubernetes_preserve_unknown_fields.setter - def x_kubernetes_preserve_unknown_fields(self, x_kubernetes_preserve_unknown_fields): - """Sets the x_kubernetes_preserve_unknown_fields of this V1JSONSchemaProps. - - x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. # noqa: E501 - - :param x_kubernetes_preserve_unknown_fields: The x_kubernetes_preserve_unknown_fields of this V1JSONSchemaProps. # noqa: E501 - :type: bool - """ - - self._x_kubernetes_preserve_unknown_fields = x_kubernetes_preserve_unknown_fields - - @property - def x_kubernetes_validations(self): - """Gets the x_kubernetes_validations of this V1JSONSchemaProps. # noqa: E501 - - x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled. # noqa: E501 - - :return: The x_kubernetes_validations of this V1JSONSchemaProps. # noqa: E501 - :rtype: list[V1ValidationRule] - """ - return self._x_kubernetes_validations - - @x_kubernetes_validations.setter - def x_kubernetes_validations(self, x_kubernetes_validations): - """Sets the x_kubernetes_validations of this V1JSONSchemaProps. - - x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled. # noqa: E501 - - :param x_kubernetes_validations: The x_kubernetes_validations of this V1JSONSchemaProps. # noqa: E501 - :type: list[V1ValidationRule] - """ - - self._x_kubernetes_validations = x_kubernetes_validations - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1JSONSchemaProps): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1JSONSchemaProps): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_key_to_path.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_key_to_path.py deleted file mode 100644 index cd477d2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_key_to_path.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1KeyToPath(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'mode': 'int', - 'path': 'str' - } - - attribute_map = { - 'key': 'key', - 'mode': 'mode', - 'path': 'path' - } - - def __init__(self, key=None, mode=None, path=None, local_vars_configuration=None): # noqa: E501 - """V1KeyToPath - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._mode = None - self._path = None - self.discriminator = None - - self.key = key - if mode is not None: - self.mode = mode - self.path = path - - @property - def key(self): - """Gets the key of this V1KeyToPath. # noqa: E501 - - key is the key to project. # noqa: E501 - - :return: The key of this V1KeyToPath. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1KeyToPath. - - key is the key to project. # noqa: E501 - - :param key: The key of this V1KeyToPath. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def mode(self): - """Gets the mode of this V1KeyToPath. # noqa: E501 - - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The mode of this V1KeyToPath. # noqa: E501 - :rtype: int - """ - return self._mode - - @mode.setter - def mode(self, mode): - """Sets the mode of this V1KeyToPath. - - mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param mode: The mode of this V1KeyToPath. # noqa: E501 - :type: int - """ - - self._mode = mode - - @property - def path(self): - """Gets the path of this V1KeyToPath. # noqa: E501 - - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. # noqa: E501 - - :return: The path of this V1KeyToPath. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1KeyToPath. - - path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. # noqa: E501 - - :param path: The path of this V1KeyToPath. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1KeyToPath): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1KeyToPath): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector.py deleted file mode 100644 index 8bb5f47..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LabelSelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_expressions': 'list[V1LabelSelectorRequirement]', - 'match_labels': 'dict(str, str)' - } - - attribute_map = { - 'match_expressions': 'matchExpressions', - 'match_labels': 'matchLabels' - } - - def __init__(self, match_expressions=None, match_labels=None, local_vars_configuration=None): # noqa: E501 - """V1LabelSelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_expressions = None - self._match_labels = None - self.discriminator = None - - if match_expressions is not None: - self.match_expressions = match_expressions - if match_labels is not None: - self.match_labels = match_labels - - @property - def match_expressions(self): - """Gets the match_expressions of this V1LabelSelector. # noqa: E501 - - matchExpressions is a list of label selector requirements. The requirements are ANDed. # noqa: E501 - - :return: The match_expressions of this V1LabelSelector. # noqa: E501 - :rtype: list[V1LabelSelectorRequirement] - """ - return self._match_expressions - - @match_expressions.setter - def match_expressions(self, match_expressions): - """Sets the match_expressions of this V1LabelSelector. - - matchExpressions is a list of label selector requirements. The requirements are ANDed. # noqa: E501 - - :param match_expressions: The match_expressions of this V1LabelSelector. # noqa: E501 - :type: list[V1LabelSelectorRequirement] - """ - - self._match_expressions = match_expressions - - @property - def match_labels(self): - """Gets the match_labels of this V1LabelSelector. # noqa: E501 - - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed. # noqa: E501 - - :return: The match_labels of this V1LabelSelector. # noqa: E501 - :rtype: dict(str, str) - """ - return self._match_labels - - @match_labels.setter - def match_labels(self, match_labels): - """Sets the match_labels of this V1LabelSelector. - - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed. # noqa: E501 - - :param match_labels: The match_labels of this V1LabelSelector. # noqa: E501 - :type: dict(str, str) - """ - - self._match_labels = match_labels - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LabelSelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LabelSelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector_requirement.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector_requirement.py deleted file mode 100644 index b04d989..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_label_selector_requirement.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LabelSelectorRequirement(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'operator': 'str', - 'values': 'list[str]' - } - - attribute_map = { - 'key': 'key', - 'operator': 'operator', - 'values': 'values' - } - - def __init__(self, key=None, operator=None, values=None, local_vars_configuration=None): # noqa: E501 - """V1LabelSelectorRequirement - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._operator = None - self._values = None - self.discriminator = None - - self.key = key - self.operator = operator - if values is not None: - self.values = values - - @property - def key(self): - """Gets the key of this V1LabelSelectorRequirement. # noqa: E501 - - key is the label key that the selector applies to. # noqa: E501 - - :return: The key of this V1LabelSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1LabelSelectorRequirement. - - key is the label key that the selector applies to. # noqa: E501 - - :param key: The key of this V1LabelSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def operator(self): - """Gets the operator of this V1LabelSelectorRequirement. # noqa: E501 - - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. # noqa: E501 - - :return: The operator of this V1LabelSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._operator - - @operator.setter - def operator(self, operator): - """Sets the operator of this V1LabelSelectorRequirement. - - operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. # noqa: E501 - - :param operator: The operator of this V1LabelSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and operator is None: # noqa: E501 - raise ValueError("Invalid value for `operator`, must not be `None`") # noqa: E501 - - self._operator = operator - - @property - def values(self): - """Gets the values of this V1LabelSelectorRequirement. # noqa: E501 - - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. # noqa: E501 - - :return: The values of this V1LabelSelectorRequirement. # noqa: E501 - :rtype: list[str] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this V1LabelSelectorRequirement. - - values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. # noqa: E501 - - :param values: The values of this V1LabelSelectorRequirement. # noqa: E501 - :type: list[str] - """ - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LabelSelectorRequirement): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LabelSelectorRequirement): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease.py deleted file mode 100644 index 088a189..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Lease(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1LeaseSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1Lease - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1Lease. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Lease. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Lease. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Lease. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Lease. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Lease. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Lease. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Lease. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Lease. # noqa: E501 - - - :return: The metadata of this V1Lease. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Lease. - - - :param metadata: The metadata of this V1Lease. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Lease. # noqa: E501 - - - :return: The spec of this V1Lease. # noqa: E501 - :rtype: V1LeaseSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Lease. - - - :param spec: The spec of this V1Lease. # noqa: E501 - :type: V1LeaseSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Lease): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Lease): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_list.py deleted file mode 100644 index 55cd543..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LeaseList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Lease]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1LeaseList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1LeaseList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1LeaseList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1LeaseList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1LeaseList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1LeaseList. # noqa: E501 - - items is a list of schema objects. # noqa: E501 - - :return: The items of this V1LeaseList. # noqa: E501 - :rtype: list[V1Lease] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1LeaseList. - - items is a list of schema objects. # noqa: E501 - - :param items: The items of this V1LeaseList. # noqa: E501 - :type: list[V1Lease] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1LeaseList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1LeaseList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1LeaseList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1LeaseList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1LeaseList. # noqa: E501 - - - :return: The metadata of this V1LeaseList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1LeaseList. - - - :param metadata: The metadata of this V1LeaseList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LeaseList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LeaseList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_spec.py deleted file mode 100644 index b46982d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lease_spec.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LeaseSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'acquire_time': 'datetime', - 'holder_identity': 'str', - 'lease_duration_seconds': 'int', - 'lease_transitions': 'int', - 'renew_time': 'datetime' - } - - attribute_map = { - 'acquire_time': 'acquireTime', - 'holder_identity': 'holderIdentity', - 'lease_duration_seconds': 'leaseDurationSeconds', - 'lease_transitions': 'leaseTransitions', - 'renew_time': 'renewTime' - } - - def __init__(self, acquire_time=None, holder_identity=None, lease_duration_seconds=None, lease_transitions=None, renew_time=None, local_vars_configuration=None): # noqa: E501 - """V1LeaseSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._acquire_time = None - self._holder_identity = None - self._lease_duration_seconds = None - self._lease_transitions = None - self._renew_time = None - self.discriminator = None - - if acquire_time is not None: - self.acquire_time = acquire_time - if holder_identity is not None: - self.holder_identity = holder_identity - if lease_duration_seconds is not None: - self.lease_duration_seconds = lease_duration_seconds - if lease_transitions is not None: - self.lease_transitions = lease_transitions - if renew_time is not None: - self.renew_time = renew_time - - @property - def acquire_time(self): - """Gets the acquire_time of this V1LeaseSpec. # noqa: E501 - - acquireTime is a time when the current lease was acquired. # noqa: E501 - - :return: The acquire_time of this V1LeaseSpec. # noqa: E501 - :rtype: datetime - """ - return self._acquire_time - - @acquire_time.setter - def acquire_time(self, acquire_time): - """Sets the acquire_time of this V1LeaseSpec. - - acquireTime is a time when the current lease was acquired. # noqa: E501 - - :param acquire_time: The acquire_time of this V1LeaseSpec. # noqa: E501 - :type: datetime - """ - - self._acquire_time = acquire_time - - @property - def holder_identity(self): - """Gets the holder_identity of this V1LeaseSpec. # noqa: E501 - - holderIdentity contains the identity of the holder of a current lease. # noqa: E501 - - :return: The holder_identity of this V1LeaseSpec. # noqa: E501 - :rtype: str - """ - return self._holder_identity - - @holder_identity.setter - def holder_identity(self, holder_identity): - """Sets the holder_identity of this V1LeaseSpec. - - holderIdentity contains the identity of the holder of a current lease. # noqa: E501 - - :param holder_identity: The holder_identity of this V1LeaseSpec. # noqa: E501 - :type: str - """ - - self._holder_identity = holder_identity - - @property - def lease_duration_seconds(self): - """Gets the lease_duration_seconds of this V1LeaseSpec. # noqa: E501 - - leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed renewTime. # noqa: E501 - - :return: The lease_duration_seconds of this V1LeaseSpec. # noqa: E501 - :rtype: int - """ - return self._lease_duration_seconds - - @lease_duration_seconds.setter - def lease_duration_seconds(self, lease_duration_seconds): - """Sets the lease_duration_seconds of this V1LeaseSpec. - - leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed renewTime. # noqa: E501 - - :param lease_duration_seconds: The lease_duration_seconds of this V1LeaseSpec. # noqa: E501 - :type: int - """ - - self._lease_duration_seconds = lease_duration_seconds - - @property - def lease_transitions(self): - """Gets the lease_transitions of this V1LeaseSpec. # noqa: E501 - - leaseTransitions is the number of transitions of a lease between holders. # noqa: E501 - - :return: The lease_transitions of this V1LeaseSpec. # noqa: E501 - :rtype: int - """ - return self._lease_transitions - - @lease_transitions.setter - def lease_transitions(self, lease_transitions): - """Sets the lease_transitions of this V1LeaseSpec. - - leaseTransitions is the number of transitions of a lease between holders. # noqa: E501 - - :param lease_transitions: The lease_transitions of this V1LeaseSpec. # noqa: E501 - :type: int - """ - - self._lease_transitions = lease_transitions - - @property - def renew_time(self): - """Gets the renew_time of this V1LeaseSpec. # noqa: E501 - - renewTime is a time when the current holder of a lease has last updated the lease. # noqa: E501 - - :return: The renew_time of this V1LeaseSpec. # noqa: E501 - :rtype: datetime - """ - return self._renew_time - - @renew_time.setter - def renew_time(self, renew_time): - """Sets the renew_time of this V1LeaseSpec. - - renewTime is a time when the current holder of a lease has last updated the lease. # noqa: E501 - - :param renew_time: The renew_time of this V1LeaseSpec. # noqa: E501 - :type: datetime - """ - - self._renew_time = renew_time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LeaseSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LeaseSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle.py deleted file mode 100644 index 0605c0c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Lifecycle(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'post_start': 'V1LifecycleHandler', - 'pre_stop': 'V1LifecycleHandler' - } - - attribute_map = { - 'post_start': 'postStart', - 'pre_stop': 'preStop' - } - - def __init__(self, post_start=None, pre_stop=None, local_vars_configuration=None): # noqa: E501 - """V1Lifecycle - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._post_start = None - self._pre_stop = None - self.discriminator = None - - if post_start is not None: - self.post_start = post_start - if pre_stop is not None: - self.pre_stop = pre_stop - - @property - def post_start(self): - """Gets the post_start of this V1Lifecycle. # noqa: E501 - - - :return: The post_start of this V1Lifecycle. # noqa: E501 - :rtype: V1LifecycleHandler - """ - return self._post_start - - @post_start.setter - def post_start(self, post_start): - """Sets the post_start of this V1Lifecycle. - - - :param post_start: The post_start of this V1Lifecycle. # noqa: E501 - :type: V1LifecycleHandler - """ - - self._post_start = post_start - - @property - def pre_stop(self): - """Gets the pre_stop of this V1Lifecycle. # noqa: E501 - - - :return: The pre_stop of this V1Lifecycle. # noqa: E501 - :rtype: V1LifecycleHandler - """ - return self._pre_stop - - @pre_stop.setter - def pre_stop(self, pre_stop): - """Sets the pre_stop of this V1Lifecycle. - - - :param pre_stop: The pre_stop of this V1Lifecycle. # noqa: E501 - :type: V1LifecycleHandler - """ - - self._pre_stop = pre_stop - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Lifecycle): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Lifecycle): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle_handler.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle_handler.py deleted file mode 100644 index aac8974..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_lifecycle_handler.py +++ /dev/null @@ -1,198 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LifecycleHandler(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - '_exec': 'V1ExecAction', - 'http_get': 'V1HTTPGetAction', - 'sleep': 'V1SleepAction', - 'tcp_socket': 'V1TCPSocketAction' - } - - attribute_map = { - '_exec': 'exec', - 'http_get': 'httpGet', - 'sleep': 'sleep', - 'tcp_socket': 'tcpSocket' - } - - def __init__(self, _exec=None, http_get=None, sleep=None, tcp_socket=None, local_vars_configuration=None): # noqa: E501 - """V1LifecycleHandler - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self.__exec = None - self._http_get = None - self._sleep = None - self._tcp_socket = None - self.discriminator = None - - if _exec is not None: - self._exec = _exec - if http_get is not None: - self.http_get = http_get - if sleep is not None: - self.sleep = sleep - if tcp_socket is not None: - self.tcp_socket = tcp_socket - - @property - def _exec(self): - """Gets the _exec of this V1LifecycleHandler. # noqa: E501 - - - :return: The _exec of this V1LifecycleHandler. # noqa: E501 - :rtype: V1ExecAction - """ - return self.__exec - - @_exec.setter - def _exec(self, _exec): - """Sets the _exec of this V1LifecycleHandler. - - - :param _exec: The _exec of this V1LifecycleHandler. # noqa: E501 - :type: V1ExecAction - """ - - self.__exec = _exec - - @property - def http_get(self): - """Gets the http_get of this V1LifecycleHandler. # noqa: E501 - - - :return: The http_get of this V1LifecycleHandler. # noqa: E501 - :rtype: V1HTTPGetAction - """ - return self._http_get - - @http_get.setter - def http_get(self, http_get): - """Sets the http_get of this V1LifecycleHandler. - - - :param http_get: The http_get of this V1LifecycleHandler. # noqa: E501 - :type: V1HTTPGetAction - """ - - self._http_get = http_get - - @property - def sleep(self): - """Gets the sleep of this V1LifecycleHandler. # noqa: E501 - - - :return: The sleep of this V1LifecycleHandler. # noqa: E501 - :rtype: V1SleepAction - """ - return self._sleep - - @sleep.setter - def sleep(self, sleep): - """Sets the sleep of this V1LifecycleHandler. - - - :param sleep: The sleep of this V1LifecycleHandler. # noqa: E501 - :type: V1SleepAction - """ - - self._sleep = sleep - - @property - def tcp_socket(self): - """Gets the tcp_socket of this V1LifecycleHandler. # noqa: E501 - - - :return: The tcp_socket of this V1LifecycleHandler. # noqa: E501 - :rtype: V1TCPSocketAction - """ - return self._tcp_socket - - @tcp_socket.setter - def tcp_socket(self, tcp_socket): - """Sets the tcp_socket of this V1LifecycleHandler. - - - :param tcp_socket: The tcp_socket of this V1LifecycleHandler. # noqa: E501 - :type: V1TCPSocketAction - """ - - self._tcp_socket = tcp_socket - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LifecycleHandler): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LifecycleHandler): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range.py deleted file mode 100644 index dc717ad..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitRange(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1LimitRangeSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1LimitRange - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1LimitRange. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1LimitRange. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1LimitRange. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1LimitRange. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1LimitRange. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1LimitRange. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1LimitRange. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1LimitRange. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1LimitRange. # noqa: E501 - - - :return: The metadata of this V1LimitRange. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1LimitRange. - - - :param metadata: The metadata of this V1LimitRange. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1LimitRange. # noqa: E501 - - - :return: The spec of this V1LimitRange. # noqa: E501 - :rtype: V1LimitRangeSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1LimitRange. - - - :param spec: The spec of this V1LimitRange. # noqa: E501 - :type: V1LimitRangeSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitRange): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitRange): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_item.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_item.py deleted file mode 100644 index b507b40..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_item.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitRangeItem(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default': 'dict(str, str)', - 'default_request': 'dict(str, str)', - 'max': 'dict(str, str)', - 'max_limit_request_ratio': 'dict(str, str)', - 'min': 'dict(str, str)', - 'type': 'str' - } - - attribute_map = { - 'default': 'default', - 'default_request': 'defaultRequest', - 'max': 'max', - 'max_limit_request_ratio': 'maxLimitRequestRatio', - 'min': 'min', - 'type': 'type' - } - - def __init__(self, default=None, default_request=None, max=None, max_limit_request_ratio=None, min=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1LimitRangeItem - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default = None - self._default_request = None - self._max = None - self._max_limit_request_ratio = None - self._min = None - self._type = None - self.discriminator = None - - if default is not None: - self.default = default - if default_request is not None: - self.default_request = default_request - if max is not None: - self.max = max - if max_limit_request_ratio is not None: - self.max_limit_request_ratio = max_limit_request_ratio - if min is not None: - self.min = min - self.type = type - - @property - def default(self): - """Gets the default of this V1LimitRangeItem. # noqa: E501 - - Default resource requirement limit value by resource name if resource limit is omitted. # noqa: E501 - - :return: The default of this V1LimitRangeItem. # noqa: E501 - :rtype: dict(str, str) - """ - return self._default - - @default.setter - def default(self, default): - """Sets the default of this V1LimitRangeItem. - - Default resource requirement limit value by resource name if resource limit is omitted. # noqa: E501 - - :param default: The default of this V1LimitRangeItem. # noqa: E501 - :type: dict(str, str) - """ - - self._default = default - - @property - def default_request(self): - """Gets the default_request of this V1LimitRangeItem. # noqa: E501 - - DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. # noqa: E501 - - :return: The default_request of this V1LimitRangeItem. # noqa: E501 - :rtype: dict(str, str) - """ - return self._default_request - - @default_request.setter - def default_request(self, default_request): - """Sets the default_request of this V1LimitRangeItem. - - DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. # noqa: E501 - - :param default_request: The default_request of this V1LimitRangeItem. # noqa: E501 - :type: dict(str, str) - """ - - self._default_request = default_request - - @property - def max(self): - """Gets the max of this V1LimitRangeItem. # noqa: E501 - - Max usage constraints on this kind by resource name. # noqa: E501 - - :return: The max of this V1LimitRangeItem. # noqa: E501 - :rtype: dict(str, str) - """ - return self._max - - @max.setter - def max(self, max): - """Sets the max of this V1LimitRangeItem. - - Max usage constraints on this kind by resource name. # noqa: E501 - - :param max: The max of this V1LimitRangeItem. # noqa: E501 - :type: dict(str, str) - """ - - self._max = max - - @property - def max_limit_request_ratio(self): - """Gets the max_limit_request_ratio of this V1LimitRangeItem. # noqa: E501 - - MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. # noqa: E501 - - :return: The max_limit_request_ratio of this V1LimitRangeItem. # noqa: E501 - :rtype: dict(str, str) - """ - return self._max_limit_request_ratio - - @max_limit_request_ratio.setter - def max_limit_request_ratio(self, max_limit_request_ratio): - """Sets the max_limit_request_ratio of this V1LimitRangeItem. - - MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. # noqa: E501 - - :param max_limit_request_ratio: The max_limit_request_ratio of this V1LimitRangeItem. # noqa: E501 - :type: dict(str, str) - """ - - self._max_limit_request_ratio = max_limit_request_ratio - - @property - def min(self): - """Gets the min of this V1LimitRangeItem. # noqa: E501 - - Min usage constraints on this kind by resource name. # noqa: E501 - - :return: The min of this V1LimitRangeItem. # noqa: E501 - :rtype: dict(str, str) - """ - return self._min - - @min.setter - def min(self, min): - """Sets the min of this V1LimitRangeItem. - - Min usage constraints on this kind by resource name. # noqa: E501 - - :param min: The min of this V1LimitRangeItem. # noqa: E501 - :type: dict(str, str) - """ - - self._min = min - - @property - def type(self): - """Gets the type of this V1LimitRangeItem. # noqa: E501 - - Type of resource that this limit applies to. # noqa: E501 - - :return: The type of this V1LimitRangeItem. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1LimitRangeItem. - - Type of resource that this limit applies to. # noqa: E501 - - :param type: The type of this V1LimitRangeItem. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitRangeItem): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitRangeItem): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_list.py deleted file mode 100644 index 09acb7f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitRangeList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1LimitRange]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1LimitRangeList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1LimitRangeList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1LimitRangeList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1LimitRangeList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1LimitRangeList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1LimitRangeList. # noqa: E501 - - Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :return: The items of this V1LimitRangeList. # noqa: E501 - :rtype: list[V1LimitRange] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1LimitRangeList. - - Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :param items: The items of this V1LimitRangeList. # noqa: E501 - :type: list[V1LimitRange] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1LimitRangeList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1LimitRangeList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1LimitRangeList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1LimitRangeList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1LimitRangeList. # noqa: E501 - - - :return: The metadata of this V1LimitRangeList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1LimitRangeList. - - - :param metadata: The metadata of this V1LimitRangeList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitRangeList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitRangeList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_spec.py deleted file mode 100644 index f03c484..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_range_spec.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitRangeSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'limits': 'list[V1LimitRangeItem]' - } - - attribute_map = { - 'limits': 'limits' - } - - def __init__(self, limits=None, local_vars_configuration=None): # noqa: E501 - """V1LimitRangeSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._limits = None - self.discriminator = None - - self.limits = limits - - @property - def limits(self): - """Gets the limits of this V1LimitRangeSpec. # noqa: E501 - - Limits is the list of LimitRangeItem objects that are enforced. # noqa: E501 - - :return: The limits of this V1LimitRangeSpec. # noqa: E501 - :rtype: list[V1LimitRangeItem] - """ - return self._limits - - @limits.setter - def limits(self, limits): - """Sets the limits of this V1LimitRangeSpec. - - Limits is the list of LimitRangeItem objects that are enforced. # noqa: E501 - - :param limits: The limits of this V1LimitRangeSpec. # noqa: E501 - :type: list[V1LimitRangeItem] - """ - if self.local_vars_configuration.client_side_validation and limits is None: # noqa: E501 - raise ValueError("Invalid value for `limits`, must not be `None`") # noqa: E501 - - self._limits = limits - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitRangeSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitRangeSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_response.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_response.py deleted file mode 100644 index 1861a24..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limit_response.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitResponse(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'queuing': 'V1QueuingConfiguration', - 'type': 'str' - } - - attribute_map = { - 'queuing': 'queuing', - 'type': 'type' - } - - def __init__(self, queuing=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1LimitResponse - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._queuing = None - self._type = None - self.discriminator = None - - if queuing is not None: - self.queuing = queuing - self.type = type - - @property - def queuing(self): - """Gets the queuing of this V1LimitResponse. # noqa: E501 - - - :return: The queuing of this V1LimitResponse. # noqa: E501 - :rtype: V1QueuingConfiguration - """ - return self._queuing - - @queuing.setter - def queuing(self, queuing): - """Sets the queuing of this V1LimitResponse. - - - :param queuing: The queuing of this V1LimitResponse. # noqa: E501 - :type: V1QueuingConfiguration - """ - - self._queuing = queuing - - @property - def type(self): - """Gets the type of this V1LimitResponse. # noqa: E501 - - `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required. # noqa: E501 - - :return: The type of this V1LimitResponse. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1LimitResponse. - - `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required. # noqa: E501 - - :param type: The type of this V1LimitResponse. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitResponse): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitResponse): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limited_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limited_priority_level_configuration.py deleted file mode 100644 index 7720b1c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_limited_priority_level_configuration.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LimitedPriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'borrowing_limit_percent': 'int', - 'lendable_percent': 'int', - 'limit_response': 'V1LimitResponse', - 'nominal_concurrency_shares': 'int' - } - - attribute_map = { - 'borrowing_limit_percent': 'borrowingLimitPercent', - 'lendable_percent': 'lendablePercent', - 'limit_response': 'limitResponse', - 'nominal_concurrency_shares': 'nominalConcurrencyShares' - } - - def __init__(self, borrowing_limit_percent=None, lendable_percent=None, limit_response=None, nominal_concurrency_shares=None, local_vars_configuration=None): # noqa: E501 - """V1LimitedPriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._borrowing_limit_percent = None - self._lendable_percent = None - self._limit_response = None - self._nominal_concurrency_shares = None - self.discriminator = None - - if borrowing_limit_percent is not None: - self.borrowing_limit_percent = borrowing_limit_percent - if lendable_percent is not None: - self.lendable_percent = lendable_percent - if limit_response is not None: - self.limit_response = limit_response - if nominal_concurrency_shares is not None: - self.nominal_concurrency_shares = nominal_concurrency_shares - - @property - def borrowing_limit_percent(self): - """Gets the borrowing_limit_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - - `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. # noqa: E501 - - :return: The borrowing_limit_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._borrowing_limit_percent - - @borrowing_limit_percent.setter - def borrowing_limit_percent(self, borrowing_limit_percent): - """Sets the borrowing_limit_percent of this V1LimitedPriorityLevelConfiguration. - - `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. # noqa: E501 - - :param borrowing_limit_percent: The borrowing_limit_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._borrowing_limit_percent = borrowing_limit_percent - - @property - def lendable_percent(self): - """Gets the lendable_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :return: The lendable_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._lendable_percent - - @lendable_percent.setter - def lendable_percent(self, lendable_percent): - """Sets the lendable_percent of this V1LimitedPriorityLevelConfiguration. - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :param lendable_percent: The lendable_percent of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._lendable_percent = lendable_percent - - @property - def limit_response(self): - """Gets the limit_response of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - - - :return: The limit_response of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: V1LimitResponse - """ - return self._limit_response - - @limit_response.setter - def limit_response(self, limit_response): - """Sets the limit_response of this V1LimitedPriorityLevelConfiguration. - - - :param limit_response: The limit_response of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :type: V1LimitResponse - """ - - self._limit_response = limit_response - - @property - def nominal_concurrency_shares(self): - """Gets the nominal_concurrency_shares of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. If not specified, this field defaults to a value of 30. Setting this field to zero supports the construction of a \"jail\" for this priority level that is used to hold some request(s) # noqa: E501 - - :return: The nominal_concurrency_shares of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._nominal_concurrency_shares - - @nominal_concurrency_shares.setter - def nominal_concurrency_shares(self, nominal_concurrency_shares): - """Sets the nominal_concurrency_shares of this V1LimitedPriorityLevelConfiguration. - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. If not specified, this field defaults to a value of 30. Setting this field to zero supports the construction of a \"jail\" for this priority level that is used to hold some request(s) # noqa: E501 - - :param nominal_concurrency_shares: The nominal_concurrency_shares of this V1LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._nominal_concurrency_shares = nominal_concurrency_shares - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LimitedPriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LimitedPriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_list_meta.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_list_meta.py deleted file mode 100644 index cfab3ab..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_list_meta.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ListMeta(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - '_continue': 'str', - 'remaining_item_count': 'int', - 'resource_version': 'str', - 'self_link': 'str' - } - - attribute_map = { - '_continue': 'continue', - 'remaining_item_count': 'remainingItemCount', - 'resource_version': 'resourceVersion', - 'self_link': 'selfLink' - } - - def __init__(self, _continue=None, remaining_item_count=None, resource_version=None, self_link=None, local_vars_configuration=None): # noqa: E501 - """V1ListMeta - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self.__continue = None - self._remaining_item_count = None - self._resource_version = None - self._self_link = None - self.discriminator = None - - if _continue is not None: - self._continue = _continue - if remaining_item_count is not None: - self.remaining_item_count = remaining_item_count - if resource_version is not None: - self.resource_version = resource_version - if self_link is not None: - self.self_link = self_link - - @property - def _continue(self): - """Gets the _continue of this V1ListMeta. # noqa: E501 - - continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message. # noqa: E501 - - :return: The _continue of this V1ListMeta. # noqa: E501 - :rtype: str - """ - return self.__continue - - @_continue.setter - def _continue(self, _continue): - """Sets the _continue of this V1ListMeta. - - continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message. # noqa: E501 - - :param _continue: The _continue of this V1ListMeta. # noqa: E501 - :type: str - """ - - self.__continue = _continue - - @property - def remaining_item_count(self): - """Gets the remaining_item_count of this V1ListMeta. # noqa: E501 - - remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact. # noqa: E501 - - :return: The remaining_item_count of this V1ListMeta. # noqa: E501 - :rtype: int - """ - return self._remaining_item_count - - @remaining_item_count.setter - def remaining_item_count(self, remaining_item_count): - """Sets the remaining_item_count of this V1ListMeta. - - remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact. # noqa: E501 - - :param remaining_item_count: The remaining_item_count of this V1ListMeta. # noqa: E501 - :type: int - """ - - self._remaining_item_count = remaining_item_count - - @property - def resource_version(self): - """Gets the resource_version of this V1ListMeta. # noqa: E501 - - String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :return: The resource_version of this V1ListMeta. # noqa: E501 - :rtype: str - """ - return self._resource_version - - @resource_version.setter - def resource_version(self, resource_version): - """Sets the resource_version of this V1ListMeta. - - String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :param resource_version: The resource_version of this V1ListMeta. # noqa: E501 - :type: str - """ - - self._resource_version = resource_version - - @property - def self_link(self): - """Gets the self_link of this V1ListMeta. # noqa: E501 - - Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. # noqa: E501 - - :return: The self_link of this V1ListMeta. # noqa: E501 - :rtype: str - """ - return self._self_link - - @self_link.setter - def self_link(self, self_link): - """Sets the self_link of this V1ListMeta. - - Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. # noqa: E501 - - :param self_link: The self_link of this V1ListMeta. # noqa: E501 - :type: str - """ - - self._self_link = self_link - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ListMeta): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ListMeta): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_ingress.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_ingress.py deleted file mode 100644 index 5743d21..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_ingress.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LoadBalancerIngress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hostname': 'str', - 'ip': 'str', - 'ip_mode': 'str', - 'ports': 'list[V1PortStatus]' - } - - attribute_map = { - 'hostname': 'hostname', - 'ip': 'ip', - 'ip_mode': 'ipMode', - 'ports': 'ports' - } - - def __init__(self, hostname=None, ip=None, ip_mode=None, ports=None, local_vars_configuration=None): # noqa: E501 - """V1LoadBalancerIngress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hostname = None - self._ip = None - self._ip_mode = None - self._ports = None - self.discriminator = None - - if hostname is not None: - self.hostname = hostname - if ip is not None: - self.ip = ip - if ip_mode is not None: - self.ip_mode = ip_mode - if ports is not None: - self.ports = ports - - @property - def hostname(self): - """Gets the hostname of this V1LoadBalancerIngress. # noqa: E501 - - Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers) # noqa: E501 - - :return: The hostname of this V1LoadBalancerIngress. # noqa: E501 - :rtype: str - """ - return self._hostname - - @hostname.setter - def hostname(self, hostname): - """Sets the hostname of this V1LoadBalancerIngress. - - Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers) # noqa: E501 - - :param hostname: The hostname of this V1LoadBalancerIngress. # noqa: E501 - :type: str - """ - - self._hostname = hostname - - @property - def ip(self): - """Gets the ip of this V1LoadBalancerIngress. # noqa: E501 - - IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers) # noqa: E501 - - :return: The ip of this V1LoadBalancerIngress. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1LoadBalancerIngress. - - IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers) # noqa: E501 - - :param ip: The ip of this V1LoadBalancerIngress. # noqa: E501 - :type: str - """ - - self._ip = ip - - @property - def ip_mode(self): - """Gets the ip_mode of this V1LoadBalancerIngress. # noqa: E501 - - IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. Setting this to \"VIP\" indicates that traffic is delivered to the node with the destination set to the load-balancer's IP and port. Setting this to \"Proxy\" indicates that traffic is delivered to the node or pod with the destination set to the node's IP and node port or the pod's IP and port. Service implementations may use this information to adjust traffic routing. # noqa: E501 - - :return: The ip_mode of this V1LoadBalancerIngress. # noqa: E501 - :rtype: str - """ - return self._ip_mode - - @ip_mode.setter - def ip_mode(self, ip_mode): - """Sets the ip_mode of this V1LoadBalancerIngress. - - IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. Setting this to \"VIP\" indicates that traffic is delivered to the node with the destination set to the load-balancer's IP and port. Setting this to \"Proxy\" indicates that traffic is delivered to the node or pod with the destination set to the node's IP and node port or the pod's IP and port. Service implementations may use this information to adjust traffic routing. # noqa: E501 - - :param ip_mode: The ip_mode of this V1LoadBalancerIngress. # noqa: E501 - :type: str - """ - - self._ip_mode = ip_mode - - @property - def ports(self): - """Gets the ports of this V1LoadBalancerIngress. # noqa: E501 - - Ports is a list of records of service ports If used, every port defined in the service should have an entry in it # noqa: E501 - - :return: The ports of this V1LoadBalancerIngress. # noqa: E501 - :rtype: list[V1PortStatus] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1LoadBalancerIngress. - - Ports is a list of records of service ports If used, every port defined in the service should have an entry in it # noqa: E501 - - :param ports: The ports of this V1LoadBalancerIngress. # noqa: E501 - :type: list[V1PortStatus] - """ - - self._ports = ports - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LoadBalancerIngress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LoadBalancerIngress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_status.py deleted file mode 100644 index c9b1c3a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_load_balancer_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LoadBalancerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ingress': 'list[V1LoadBalancerIngress]' - } - - attribute_map = { - 'ingress': 'ingress' - } - - def __init__(self, ingress=None, local_vars_configuration=None): # noqa: E501 - """V1LoadBalancerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ingress = None - self.discriminator = None - - if ingress is not None: - self.ingress = ingress - - @property - def ingress(self): - """Gets the ingress of this V1LoadBalancerStatus. # noqa: E501 - - Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points. # noqa: E501 - - :return: The ingress of this V1LoadBalancerStatus. # noqa: E501 - :rtype: list[V1LoadBalancerIngress] - """ - return self._ingress - - @ingress.setter - def ingress(self, ingress): - """Sets the ingress of this V1LoadBalancerStatus. - - Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points. # noqa: E501 - - :param ingress: The ingress of this V1LoadBalancerStatus. # noqa: E501 - :type: list[V1LoadBalancerIngress] - """ - - self._ingress = ingress - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LoadBalancerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LoadBalancerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_object_reference.py deleted file mode 100644 index b298fe7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_object_reference.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LocalObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1LocalObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - if name is not None: - self.name = name - - @property - def name(self): - """Gets the name of this V1LocalObjectReference. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1LocalObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1LocalObjectReference. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1LocalObjectReference. # noqa: E501 - :type: str - """ - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LocalObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LocalObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_subject_access_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_subject_access_review.py deleted file mode 100644 index 5fdb9d4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_subject_access_review.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LocalSubjectAccessReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1SubjectAccessReviewSpec', - 'status': 'V1SubjectAccessReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1LocalSubjectAccessReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1LocalSubjectAccessReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1LocalSubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1LocalSubjectAccessReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1LocalSubjectAccessReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1LocalSubjectAccessReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1LocalSubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1LocalSubjectAccessReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1LocalSubjectAccessReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1LocalSubjectAccessReview. # noqa: E501 - - - :return: The metadata of this V1LocalSubjectAccessReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1LocalSubjectAccessReview. - - - :param metadata: The metadata of this V1LocalSubjectAccessReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1LocalSubjectAccessReview. # noqa: E501 - - - :return: The spec of this V1LocalSubjectAccessReview. # noqa: E501 - :rtype: V1SubjectAccessReviewSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1LocalSubjectAccessReview. - - - :param spec: The spec of this V1LocalSubjectAccessReview. # noqa: E501 - :type: V1SubjectAccessReviewSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1LocalSubjectAccessReview. # noqa: E501 - - - :return: The status of this V1LocalSubjectAccessReview. # noqa: E501 - :rtype: V1SubjectAccessReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1LocalSubjectAccessReview. - - - :param status: The status of this V1LocalSubjectAccessReview. # noqa: E501 - :type: V1SubjectAccessReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LocalSubjectAccessReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LocalSubjectAccessReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_volume_source.py deleted file mode 100644 index d209d3d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_local_volume_source.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1LocalVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'path': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'path': 'path' - } - - def __init__(self, fs_type=None, path=None, local_vars_configuration=None): # noqa: E501 - """V1LocalVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._path = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.path = path - - @property - def fs_type(self): - """Gets the fs_type of this V1LocalVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default value is to auto-select a filesystem if unspecified. # noqa: E501 - - :return: The fs_type of this V1LocalVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1LocalVolumeSource. - - fsType is the filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default value is to auto-select a filesystem if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1LocalVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def path(self): - """Gets the path of this V1LocalVolumeSource. # noqa: E501 - - path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...). # noqa: E501 - - :return: The path of this V1LocalVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1LocalVolumeSource. - - path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...). # noqa: E501 - - :param path: The path of this V1LocalVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1LocalVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1LocalVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_managed_fields_entry.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_managed_fields_entry.py deleted file mode 100644 index 1f2e636..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_managed_fields_entry.py +++ /dev/null @@ -1,290 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ManagedFieldsEntry(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'fields_type': 'str', - 'fields_v1': 'object', - 'manager': 'str', - 'operation': 'str', - 'subresource': 'str', - 'time': 'datetime' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'fields_type': 'fieldsType', - 'fields_v1': 'fieldsV1', - 'manager': 'manager', - 'operation': 'operation', - 'subresource': 'subresource', - 'time': 'time' - } - - def __init__(self, api_version=None, fields_type=None, fields_v1=None, manager=None, operation=None, subresource=None, time=None, local_vars_configuration=None): # noqa: E501 - """V1ManagedFieldsEntry - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._fields_type = None - self._fields_v1 = None - self._manager = None - self._operation = None - self._subresource = None - self._time = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if fields_type is not None: - self.fields_type = fields_type - if fields_v1 is not None: - self.fields_v1 = fields_v1 - if manager is not None: - self.manager = manager - if operation is not None: - self.operation = operation - if subresource is not None: - self.subresource = subresource - if time is not None: - self.time = time - - @property - def api_version(self): - """Gets the api_version of this V1ManagedFieldsEntry. # noqa: E501 - - APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted. # noqa: E501 - - :return: The api_version of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ManagedFieldsEntry. - - APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted. # noqa: E501 - - :param api_version: The api_version of this V1ManagedFieldsEntry. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def fields_type(self): - """Gets the fields_type of this V1ManagedFieldsEntry. # noqa: E501 - - FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\" # noqa: E501 - - :return: The fields_type of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: str - """ - return self._fields_type - - @fields_type.setter - def fields_type(self, fields_type): - """Sets the fields_type of this V1ManagedFieldsEntry. - - FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\" # noqa: E501 - - :param fields_type: The fields_type of this V1ManagedFieldsEntry. # noqa: E501 - :type: str - """ - - self._fields_type = fields_type - - @property - def fields_v1(self): - """Gets the fields_v1 of this V1ManagedFieldsEntry. # noqa: E501 - - FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type. # noqa: E501 - - :return: The fields_v1 of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: object - """ - return self._fields_v1 - - @fields_v1.setter - def fields_v1(self, fields_v1): - """Sets the fields_v1 of this V1ManagedFieldsEntry. - - FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type. # noqa: E501 - - :param fields_v1: The fields_v1 of this V1ManagedFieldsEntry. # noqa: E501 - :type: object - """ - - self._fields_v1 = fields_v1 - - @property - def manager(self): - """Gets the manager of this V1ManagedFieldsEntry. # noqa: E501 - - Manager is an identifier of the workflow managing these fields. # noqa: E501 - - :return: The manager of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: str - """ - return self._manager - - @manager.setter - def manager(self, manager): - """Sets the manager of this V1ManagedFieldsEntry. - - Manager is an identifier of the workflow managing these fields. # noqa: E501 - - :param manager: The manager of this V1ManagedFieldsEntry. # noqa: E501 - :type: str - """ - - self._manager = manager - - @property - def operation(self): - """Gets the operation of this V1ManagedFieldsEntry. # noqa: E501 - - Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'. # noqa: E501 - - :return: The operation of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: str - """ - return self._operation - - @operation.setter - def operation(self, operation): - """Sets the operation of this V1ManagedFieldsEntry. - - Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'. # noqa: E501 - - :param operation: The operation of this V1ManagedFieldsEntry. # noqa: E501 - :type: str - """ - - self._operation = operation - - @property - def subresource(self): - """Gets the subresource of this V1ManagedFieldsEntry. # noqa: E501 - - Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. # noqa: E501 - - :return: The subresource of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: str - """ - return self._subresource - - @subresource.setter - def subresource(self, subresource): - """Sets the subresource of this V1ManagedFieldsEntry. - - Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. # noqa: E501 - - :param subresource: The subresource of this V1ManagedFieldsEntry. # noqa: E501 - :type: str - """ - - self._subresource = subresource - - @property - def time(self): - """Gets the time of this V1ManagedFieldsEntry. # noqa: E501 - - Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over. # noqa: E501 - - :return: The time of this V1ManagedFieldsEntry. # noqa: E501 - :rtype: datetime - """ - return self._time - - @time.setter - def time(self, time): - """Sets the time of this V1ManagedFieldsEntry. - - Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over. # noqa: E501 - - :param time: The time of this V1ManagedFieldsEntry. # noqa: E501 - :type: datetime - """ - - self._time = time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ManagedFieldsEntry): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ManagedFieldsEntry): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_match_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_match_condition.py deleted file mode 100644 index cd8a597..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_match_condition.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1MatchCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'name': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'name': 'name' - } - - def __init__(self, expression=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1MatchCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._name = None - self.discriminator = None - - self.expression = expression - self.name = name - - @property - def expression(self): - """Gets the expression of this V1MatchCondition. # noqa: E501 - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :return: The expression of this V1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1MatchCondition. - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :param expression: The expression of this V1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def name(self): - """Gets the name of this V1MatchCondition. # noqa: E501 - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :return: The name of this V1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1MatchCondition. - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :param name: The name of this V1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1MatchCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1MatchCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_modify_volume_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_modify_volume_status.py deleted file mode 100644 index 05eef2e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_modify_volume_status.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ModifyVolumeStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'status': 'str', - 'target_volume_attributes_class_name': 'str' - } - - attribute_map = { - 'status': 'status', - 'target_volume_attributes_class_name': 'targetVolumeAttributesClassName' - } - - def __init__(self, status=None, target_volume_attributes_class_name=None, local_vars_configuration=None): # noqa: E501 - """V1ModifyVolumeStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._status = None - self._target_volume_attributes_class_name = None - self.discriminator = None - - self.status = status - if target_volume_attributes_class_name is not None: - self.target_volume_attributes_class_name = target_volume_attributes_class_name - - @property - def status(self): - """Gets the status of this V1ModifyVolumeStatus. # noqa: E501 - - status is the status of the ControllerModifyVolume operation. It can be in any of following states: - Pending Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as the specified VolumeAttributesClass not existing. - InProgress InProgress indicates that the volume is being modified. - Infeasible Infeasible indicates that the request has been rejected as invalid by the CSI driver. To resolve the error, a valid VolumeAttributesClass needs to be specified. Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately. # noqa: E501 - - :return: The status of this V1ModifyVolumeStatus. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ModifyVolumeStatus. - - status is the status of the ControllerModifyVolume operation. It can be in any of following states: - Pending Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as the specified VolumeAttributesClass not existing. - InProgress InProgress indicates that the volume is being modified. - Infeasible Infeasible indicates that the request has been rejected as invalid by the CSI driver. To resolve the error, a valid VolumeAttributesClass needs to be specified. Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately. # noqa: E501 - - :param status: The status of this V1ModifyVolumeStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def target_volume_attributes_class_name(self): - """Gets the target_volume_attributes_class_name of this V1ModifyVolumeStatus. # noqa: E501 - - targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled # noqa: E501 - - :return: The target_volume_attributes_class_name of this V1ModifyVolumeStatus. # noqa: E501 - :rtype: str - """ - return self._target_volume_attributes_class_name - - @target_volume_attributes_class_name.setter - def target_volume_attributes_class_name(self, target_volume_attributes_class_name): - """Sets the target_volume_attributes_class_name of this V1ModifyVolumeStatus. - - targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled # noqa: E501 - - :param target_volume_attributes_class_name: The target_volume_attributes_class_name of this V1ModifyVolumeStatus. # noqa: E501 - :type: str - """ - - self._target_volume_attributes_class_name = target_volume_attributes_class_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ModifyVolumeStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ModifyVolumeStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook.py deleted file mode 100644 index d7de24c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook.py +++ /dev/null @@ -1,428 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1MutatingWebhook(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'admission_review_versions': 'list[str]', - 'client_config': 'AdmissionregistrationV1WebhookClientConfig', - 'failure_policy': 'str', - 'match_conditions': 'list[V1MatchCondition]', - 'match_policy': 'str', - 'name': 'str', - 'namespace_selector': 'V1LabelSelector', - 'object_selector': 'V1LabelSelector', - 'reinvocation_policy': 'str', - 'rules': 'list[V1RuleWithOperations]', - 'side_effects': 'str', - 'timeout_seconds': 'int' - } - - attribute_map = { - 'admission_review_versions': 'admissionReviewVersions', - 'client_config': 'clientConfig', - 'failure_policy': 'failurePolicy', - 'match_conditions': 'matchConditions', - 'match_policy': 'matchPolicy', - 'name': 'name', - 'namespace_selector': 'namespaceSelector', - 'object_selector': 'objectSelector', - 'reinvocation_policy': 'reinvocationPolicy', - 'rules': 'rules', - 'side_effects': 'sideEffects', - 'timeout_seconds': 'timeoutSeconds' - } - - def __init__(self, admission_review_versions=None, client_config=None, failure_policy=None, match_conditions=None, match_policy=None, name=None, namespace_selector=None, object_selector=None, reinvocation_policy=None, rules=None, side_effects=None, timeout_seconds=None, local_vars_configuration=None): # noqa: E501 - """V1MutatingWebhook - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._admission_review_versions = None - self._client_config = None - self._failure_policy = None - self._match_conditions = None - self._match_policy = None - self._name = None - self._namespace_selector = None - self._object_selector = None - self._reinvocation_policy = None - self._rules = None - self._side_effects = None - self._timeout_seconds = None - self.discriminator = None - - self.admission_review_versions = admission_review_versions - self.client_config = client_config - if failure_policy is not None: - self.failure_policy = failure_policy - if match_conditions is not None: - self.match_conditions = match_conditions - if match_policy is not None: - self.match_policy = match_policy - self.name = name - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if object_selector is not None: - self.object_selector = object_selector - if reinvocation_policy is not None: - self.reinvocation_policy = reinvocation_policy - if rules is not None: - self.rules = rules - self.side_effects = side_effects - if timeout_seconds is not None: - self.timeout_seconds = timeout_seconds - - @property - def admission_review_versions(self): - """Gets the admission_review_versions of this V1MutatingWebhook. # noqa: E501 - - AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. # noqa: E501 - - :return: The admission_review_versions of this V1MutatingWebhook. # noqa: E501 - :rtype: list[str] - """ - return self._admission_review_versions - - @admission_review_versions.setter - def admission_review_versions(self, admission_review_versions): - """Sets the admission_review_versions of this V1MutatingWebhook. - - AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. # noqa: E501 - - :param admission_review_versions: The admission_review_versions of this V1MutatingWebhook. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and admission_review_versions is None: # noqa: E501 - raise ValueError("Invalid value for `admission_review_versions`, must not be `None`") # noqa: E501 - - self._admission_review_versions = admission_review_versions - - @property - def client_config(self): - """Gets the client_config of this V1MutatingWebhook. # noqa: E501 - - - :return: The client_config of this V1MutatingWebhook. # noqa: E501 - :rtype: AdmissionregistrationV1WebhookClientConfig - """ - return self._client_config - - @client_config.setter - def client_config(self, client_config): - """Sets the client_config of this V1MutatingWebhook. - - - :param client_config: The client_config of this V1MutatingWebhook. # noqa: E501 - :type: AdmissionregistrationV1WebhookClientConfig - """ - if self.local_vars_configuration.client_side_validation and client_config is None: # noqa: E501 - raise ValueError("Invalid value for `client_config`, must not be `None`") # noqa: E501 - - self._client_config = client_config - - @property - def failure_policy(self): - """Gets the failure_policy of this V1MutatingWebhook. # noqa: E501 - - FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :return: The failure_policy of this V1MutatingWebhook. # noqa: E501 - :rtype: str - """ - return self._failure_policy - - @failure_policy.setter - def failure_policy(self, failure_policy): - """Sets the failure_policy of this V1MutatingWebhook. - - FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :param failure_policy: The failure_policy of this V1MutatingWebhook. # noqa: E501 - :type: str - """ - - self._failure_policy = failure_policy - - @property - def match_conditions(self): - """Gets the match_conditions of this V1MutatingWebhook. # noqa: E501 - - MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. 2. If ALL matchConditions evaluate to TRUE, the webhook is called. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the error is ignored and the webhook is skipped This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. # noqa: E501 - - :return: The match_conditions of this V1MutatingWebhook. # noqa: E501 - :rtype: list[V1MatchCondition] - """ - return self._match_conditions - - @match_conditions.setter - def match_conditions(self, match_conditions): - """Sets the match_conditions of this V1MutatingWebhook. - - MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. 2. If ALL matchConditions evaluate to TRUE, the webhook is called. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the error is ignored and the webhook is skipped This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. # noqa: E501 - - :param match_conditions: The match_conditions of this V1MutatingWebhook. # noqa: E501 - :type: list[V1MatchCondition] - """ - - self._match_conditions = match_conditions - - @property - def match_policy(self): - """Gets the match_policy of this V1MutatingWebhook. # noqa: E501 - - matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. Defaults to \"Equivalent\" # noqa: E501 - - :return: The match_policy of this V1MutatingWebhook. # noqa: E501 - :rtype: str - """ - return self._match_policy - - @match_policy.setter - def match_policy(self, match_policy): - """Sets the match_policy of this V1MutatingWebhook. - - matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. Defaults to \"Equivalent\" # noqa: E501 - - :param match_policy: The match_policy of this V1MutatingWebhook. # noqa: E501 - :type: str - """ - - self._match_policy = match_policy - - @property - def name(self): - """Gets the name of this V1MutatingWebhook. # noqa: E501 - - The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required. # noqa: E501 - - :return: The name of this V1MutatingWebhook. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1MutatingWebhook. - - The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required. # noqa: E501 - - :param name: The name of this V1MutatingWebhook. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1MutatingWebhook. # noqa: E501 - - - :return: The namespace_selector of this V1MutatingWebhook. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1MutatingWebhook. - - - :param namespace_selector: The namespace_selector of this V1MutatingWebhook. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def object_selector(self): - """Gets the object_selector of this V1MutatingWebhook. # noqa: E501 - - - :return: The object_selector of this V1MutatingWebhook. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._object_selector - - @object_selector.setter - def object_selector(self, object_selector): - """Sets the object_selector of this V1MutatingWebhook. - - - :param object_selector: The object_selector of this V1MutatingWebhook. # noqa: E501 - :type: V1LabelSelector - """ - - self._object_selector = object_selector - - @property - def reinvocation_policy(self): - """Gets the reinvocation_policy of this V1MutatingWebhook. # noqa: E501 - - reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\". Never: the webhook will not be called more than once in a single admission evaluation. IfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead. Defaults to \"Never\". # noqa: E501 - - :return: The reinvocation_policy of this V1MutatingWebhook. # noqa: E501 - :rtype: str - """ - return self._reinvocation_policy - - @reinvocation_policy.setter - def reinvocation_policy(self, reinvocation_policy): - """Sets the reinvocation_policy of this V1MutatingWebhook. - - reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\". Never: the webhook will not be called more than once in a single admission evaluation. IfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead. Defaults to \"Never\". # noqa: E501 - - :param reinvocation_policy: The reinvocation_policy of this V1MutatingWebhook. # noqa: E501 - :type: str - """ - - self._reinvocation_policy = reinvocation_policy - - @property - def rules(self): - """Gets the rules of this V1MutatingWebhook. # noqa: E501 - - Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. # noqa: E501 - - :return: The rules of this V1MutatingWebhook. # noqa: E501 - :rtype: list[V1RuleWithOperations] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1MutatingWebhook. - - Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. # noqa: E501 - - :param rules: The rules of this V1MutatingWebhook. # noqa: E501 - :type: list[V1RuleWithOperations] - """ - - self._rules = rules - - @property - def side_effects(self): - """Gets the side_effects of this V1MutatingWebhook. # noqa: E501 - - SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. # noqa: E501 - - :return: The side_effects of this V1MutatingWebhook. # noqa: E501 - :rtype: str - """ - return self._side_effects - - @side_effects.setter - def side_effects(self, side_effects): - """Sets the side_effects of this V1MutatingWebhook. - - SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. # noqa: E501 - - :param side_effects: The side_effects of this V1MutatingWebhook. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and side_effects is None: # noqa: E501 - raise ValueError("Invalid value for `side_effects`, must not be `None`") # noqa: E501 - - self._side_effects = side_effects - - @property - def timeout_seconds(self): - """Gets the timeout_seconds of this V1MutatingWebhook. # noqa: E501 - - TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. # noqa: E501 - - :return: The timeout_seconds of this V1MutatingWebhook. # noqa: E501 - :rtype: int - """ - return self._timeout_seconds - - @timeout_seconds.setter - def timeout_seconds(self, timeout_seconds): - """Sets the timeout_seconds of this V1MutatingWebhook. - - TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. # noqa: E501 - - :param timeout_seconds: The timeout_seconds of this V1MutatingWebhook. # noqa: E501 - :type: int - """ - - self._timeout_seconds = timeout_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1MutatingWebhook): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1MutatingWebhook): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration.py deleted file mode 100644 index 7776be6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1MutatingWebhookConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'webhooks': 'list[V1MutatingWebhook]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'webhooks': 'webhooks' - } - - def __init__(self, api_version=None, kind=None, metadata=None, webhooks=None, local_vars_configuration=None): # noqa: E501 - """V1MutatingWebhookConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._webhooks = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if webhooks is not None: - self.webhooks = webhooks - - @property - def api_version(self): - """Gets the api_version of this V1MutatingWebhookConfiguration. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1MutatingWebhookConfiguration. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1MutatingWebhookConfiguration. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1MutatingWebhookConfiguration. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1MutatingWebhookConfiguration. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1MutatingWebhookConfiguration. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1MutatingWebhookConfiguration. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1MutatingWebhookConfiguration. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1MutatingWebhookConfiguration. # noqa: E501 - - - :return: The metadata of this V1MutatingWebhookConfiguration. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1MutatingWebhookConfiguration. - - - :param metadata: The metadata of this V1MutatingWebhookConfiguration. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def webhooks(self): - """Gets the webhooks of this V1MutatingWebhookConfiguration. # noqa: E501 - - Webhooks is a list of webhooks and the affected resources and operations. # noqa: E501 - - :return: The webhooks of this V1MutatingWebhookConfiguration. # noqa: E501 - :rtype: list[V1MutatingWebhook] - """ - return self._webhooks - - @webhooks.setter - def webhooks(self, webhooks): - """Sets the webhooks of this V1MutatingWebhookConfiguration. - - Webhooks is a list of webhooks and the affected resources and operations. # noqa: E501 - - :param webhooks: The webhooks of this V1MutatingWebhookConfiguration. # noqa: E501 - :type: list[V1MutatingWebhook] - """ - - self._webhooks = webhooks - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1MutatingWebhookConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1MutatingWebhookConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration_list.py deleted file mode 100644 index 882bef9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_mutating_webhook_configuration_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1MutatingWebhookConfigurationList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1MutatingWebhookConfiguration]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1MutatingWebhookConfigurationList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1MutatingWebhookConfigurationList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1MutatingWebhookConfigurationList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1MutatingWebhookConfigurationList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1MutatingWebhookConfigurationList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1MutatingWebhookConfigurationList. # noqa: E501 - - List of MutatingWebhookConfiguration. # noqa: E501 - - :return: The items of this V1MutatingWebhookConfigurationList. # noqa: E501 - :rtype: list[V1MutatingWebhookConfiguration] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1MutatingWebhookConfigurationList. - - List of MutatingWebhookConfiguration. # noqa: E501 - - :param items: The items of this V1MutatingWebhookConfigurationList. # noqa: E501 - :type: list[V1MutatingWebhookConfiguration] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1MutatingWebhookConfigurationList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1MutatingWebhookConfigurationList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1MutatingWebhookConfigurationList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1MutatingWebhookConfigurationList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1MutatingWebhookConfigurationList. # noqa: E501 - - - :return: The metadata of this V1MutatingWebhookConfigurationList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1MutatingWebhookConfigurationList. - - - :param metadata: The metadata of this V1MutatingWebhookConfigurationList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1MutatingWebhookConfigurationList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1MutatingWebhookConfigurationList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace.py deleted file mode 100644 index 30acf16..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Namespace(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1NamespaceSpec', - 'status': 'V1NamespaceStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Namespace - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Namespace. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Namespace. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Namespace. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Namespace. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Namespace. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Namespace. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Namespace. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Namespace. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Namespace. # noqa: E501 - - - :return: The metadata of this V1Namespace. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Namespace. - - - :param metadata: The metadata of this V1Namespace. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Namespace. # noqa: E501 - - - :return: The spec of this V1Namespace. # noqa: E501 - :rtype: V1NamespaceSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Namespace. - - - :param spec: The spec of this V1Namespace. # noqa: E501 - :type: V1NamespaceSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Namespace. # noqa: E501 - - - :return: The status of this V1Namespace. # noqa: E501 - :rtype: V1NamespaceStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Namespace. - - - :param status: The status of this V1Namespace. # noqa: E501 - :type: V1NamespaceStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Namespace): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Namespace): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_condition.py deleted file mode 100644 index dba6a5c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_condition.py +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NamespaceCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1NamespaceCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1NamespaceCondition. # noqa: E501 - - Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. # noqa: E501 - - :return: The last_transition_time of this V1NamespaceCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1NamespaceCondition. - - Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1NamespaceCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1NamespaceCondition. # noqa: E501 - - - :return: The message of this V1NamespaceCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1NamespaceCondition. - - - :param message: The message of this V1NamespaceCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1NamespaceCondition. # noqa: E501 - - - :return: The reason of this V1NamespaceCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1NamespaceCondition. - - - :param reason: The reason of this V1NamespaceCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1NamespaceCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1NamespaceCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1NamespaceCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1NamespaceCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1NamespaceCondition. # noqa: E501 - - Type of namespace controller condition. # noqa: E501 - - :return: The type of this V1NamespaceCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1NamespaceCondition. - - Type of namespace controller condition. # noqa: E501 - - :param type: The type of this V1NamespaceCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NamespaceCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NamespaceCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_list.py deleted file mode 100644 index b58d88e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NamespaceList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Namespace]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1NamespaceList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1NamespaceList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1NamespaceList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1NamespaceList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1NamespaceList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1NamespaceList. # noqa: E501 - - Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ # noqa: E501 - - :return: The items of this V1NamespaceList. # noqa: E501 - :rtype: list[V1Namespace] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1NamespaceList. - - Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ # noqa: E501 - - :param items: The items of this V1NamespaceList. # noqa: E501 - :type: list[V1Namespace] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1NamespaceList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1NamespaceList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1NamespaceList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1NamespaceList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1NamespaceList. # noqa: E501 - - - :return: The metadata of this V1NamespaceList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1NamespaceList. - - - :param metadata: The metadata of this V1NamespaceList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NamespaceList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NamespaceList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_spec.py deleted file mode 100644 index 562f210..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_spec.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NamespaceSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'finalizers': 'list[str]' - } - - attribute_map = { - 'finalizers': 'finalizers' - } - - def __init__(self, finalizers=None, local_vars_configuration=None): # noqa: E501 - """V1NamespaceSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._finalizers = None - self.discriminator = None - - if finalizers is not None: - self.finalizers = finalizers - - @property - def finalizers(self): - """Gets the finalizers of this V1NamespaceSpec. # noqa: E501 - - Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ # noqa: E501 - - :return: The finalizers of this V1NamespaceSpec. # noqa: E501 - :rtype: list[str] - """ - return self._finalizers - - @finalizers.setter - def finalizers(self, finalizers): - """Sets the finalizers of this V1NamespaceSpec. - - Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ # noqa: E501 - - :param finalizers: The finalizers of this V1NamespaceSpec. # noqa: E501 - :type: list[str] - """ - - self._finalizers = finalizers - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NamespaceSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NamespaceSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_status.py deleted file mode 100644 index 63b0e23..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_namespace_status.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NamespaceStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1NamespaceCondition]', - 'phase': 'str' - } - - attribute_map = { - 'conditions': 'conditions', - 'phase': 'phase' - } - - def __init__(self, conditions=None, phase=None, local_vars_configuration=None): # noqa: E501 - """V1NamespaceStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._phase = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if phase is not None: - self.phase = phase - - @property - def conditions(self): - """Gets the conditions of this V1NamespaceStatus. # noqa: E501 - - Represents the latest available observations of a namespace's current state. # noqa: E501 - - :return: The conditions of this V1NamespaceStatus. # noqa: E501 - :rtype: list[V1NamespaceCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1NamespaceStatus. - - Represents the latest available observations of a namespace's current state. # noqa: E501 - - :param conditions: The conditions of this V1NamespaceStatus. # noqa: E501 - :type: list[V1NamespaceCondition] - """ - - self._conditions = conditions - - @property - def phase(self): - """Gets the phase of this V1NamespaceStatus. # noqa: E501 - - Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ # noqa: E501 - - :return: The phase of this V1NamespaceStatus. # noqa: E501 - :rtype: str - """ - return self._phase - - @phase.setter - def phase(self, phase): - """Sets the phase of this V1NamespaceStatus. - - Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ # noqa: E501 - - :param phase: The phase of this V1NamespaceStatus. # noqa: E501 - :type: str - """ - - self._phase = phase - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NamespaceStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NamespaceStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy.py deleted file mode 100644 index 3c209ec..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1NetworkPolicySpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1NetworkPolicy. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1NetworkPolicy. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1NetworkPolicy. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1NetworkPolicy. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1NetworkPolicy. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1NetworkPolicy. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1NetworkPolicy. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1NetworkPolicy. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1NetworkPolicy. # noqa: E501 - - - :return: The metadata of this V1NetworkPolicy. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1NetworkPolicy. - - - :param metadata: The metadata of this V1NetworkPolicy. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1NetworkPolicy. # noqa: E501 - - - :return: The spec of this V1NetworkPolicy. # noqa: E501 - :rtype: V1NetworkPolicySpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1NetworkPolicy. - - - :param spec: The spec of this V1NetworkPolicy. # noqa: E501 - :type: V1NetworkPolicySpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_egress_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_egress_rule.py deleted file mode 100644 index 0159234..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_egress_rule.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicyEgressRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ports': 'list[V1NetworkPolicyPort]', - 'to': 'list[V1NetworkPolicyPeer]' - } - - attribute_map = { - 'ports': 'ports', - 'to': 'to' - } - - def __init__(self, ports=None, to=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicyEgressRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ports = None - self._to = None - self.discriminator = None - - if ports is not None: - self.ports = ports - if to is not None: - self.to = to - - @property - def ports(self): - """Gets the ports of this V1NetworkPolicyEgressRule. # noqa: E501 - - ports is a list of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. # noqa: E501 - - :return: The ports of this V1NetworkPolicyEgressRule. # noqa: E501 - :rtype: list[V1NetworkPolicyPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1NetworkPolicyEgressRule. - - ports is a list of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. # noqa: E501 - - :param ports: The ports of this V1NetworkPolicyEgressRule. # noqa: E501 - :type: list[V1NetworkPolicyPort] - """ - - self._ports = ports - - @property - def to(self): - """Gets the to of this V1NetworkPolicyEgressRule. # noqa: E501 - - to is a list of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list. # noqa: E501 - - :return: The to of this V1NetworkPolicyEgressRule. # noqa: E501 - :rtype: list[V1NetworkPolicyPeer] - """ - return self._to - - @to.setter - def to(self, to): - """Sets the to of this V1NetworkPolicyEgressRule. - - to is a list of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list. # noqa: E501 - - :param to: The to of this V1NetworkPolicyEgressRule. # noqa: E501 - :type: list[V1NetworkPolicyPeer] - """ - - self._to = to - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicyEgressRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicyEgressRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_ingress_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_ingress_rule.py deleted file mode 100644 index a15f680..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_ingress_rule.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicyIngressRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - '_from': 'list[V1NetworkPolicyPeer]', - 'ports': 'list[V1NetworkPolicyPort]' - } - - attribute_map = { - '_from': 'from', - 'ports': 'ports' - } - - def __init__(self, _from=None, ports=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicyIngressRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self.__from = None - self._ports = None - self.discriminator = None - - if _from is not None: - self._from = _from - if ports is not None: - self.ports = ports - - @property - def _from(self): - """Gets the _from of this V1NetworkPolicyIngressRule. # noqa: E501 - - from is a list of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list. # noqa: E501 - - :return: The _from of this V1NetworkPolicyIngressRule. # noqa: E501 - :rtype: list[V1NetworkPolicyPeer] - """ - return self.__from - - @_from.setter - def _from(self, _from): - """Sets the _from of this V1NetworkPolicyIngressRule. - - from is a list of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list. # noqa: E501 - - :param _from: The _from of this V1NetworkPolicyIngressRule. # noqa: E501 - :type: list[V1NetworkPolicyPeer] - """ - - self.__from = _from - - @property - def ports(self): - """Gets the ports of this V1NetworkPolicyIngressRule. # noqa: E501 - - ports is a list of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. # noqa: E501 - - :return: The ports of this V1NetworkPolicyIngressRule. # noqa: E501 - :rtype: list[V1NetworkPolicyPort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1NetworkPolicyIngressRule. - - ports is a list of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list. # noqa: E501 - - :param ports: The ports of this V1NetworkPolicyIngressRule. # noqa: E501 - :type: list[V1NetworkPolicyPort] - """ - - self._ports = ports - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicyIngressRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicyIngressRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_list.py deleted file mode 100644 index e15681d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicyList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1NetworkPolicy]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicyList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1NetworkPolicyList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1NetworkPolicyList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1NetworkPolicyList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1NetworkPolicyList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1NetworkPolicyList. # noqa: E501 - - items is a list of schema objects. # noqa: E501 - - :return: The items of this V1NetworkPolicyList. # noqa: E501 - :rtype: list[V1NetworkPolicy] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1NetworkPolicyList. - - items is a list of schema objects. # noqa: E501 - - :param items: The items of this V1NetworkPolicyList. # noqa: E501 - :type: list[V1NetworkPolicy] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1NetworkPolicyList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1NetworkPolicyList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1NetworkPolicyList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1NetworkPolicyList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1NetworkPolicyList. # noqa: E501 - - - :return: The metadata of this V1NetworkPolicyList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1NetworkPolicyList. - - - :param metadata: The metadata of this V1NetworkPolicyList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicyList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicyList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_peer.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_peer.py deleted file mode 100644 index c6b6c0a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_peer.py +++ /dev/null @@ -1,172 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicyPeer(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ip_block': 'V1IPBlock', - 'namespace_selector': 'V1LabelSelector', - 'pod_selector': 'V1LabelSelector' - } - - attribute_map = { - 'ip_block': 'ipBlock', - 'namespace_selector': 'namespaceSelector', - 'pod_selector': 'podSelector' - } - - def __init__(self, ip_block=None, namespace_selector=None, pod_selector=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicyPeer - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ip_block = None - self._namespace_selector = None - self._pod_selector = None - self.discriminator = None - - if ip_block is not None: - self.ip_block = ip_block - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if pod_selector is not None: - self.pod_selector = pod_selector - - @property - def ip_block(self): - """Gets the ip_block of this V1NetworkPolicyPeer. # noqa: E501 - - - :return: The ip_block of this V1NetworkPolicyPeer. # noqa: E501 - :rtype: V1IPBlock - """ - return self._ip_block - - @ip_block.setter - def ip_block(self, ip_block): - """Sets the ip_block of this V1NetworkPolicyPeer. - - - :param ip_block: The ip_block of this V1NetworkPolicyPeer. # noqa: E501 - :type: V1IPBlock - """ - - self._ip_block = ip_block - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1NetworkPolicyPeer. # noqa: E501 - - - :return: The namespace_selector of this V1NetworkPolicyPeer. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1NetworkPolicyPeer. - - - :param namespace_selector: The namespace_selector of this V1NetworkPolicyPeer. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def pod_selector(self): - """Gets the pod_selector of this V1NetworkPolicyPeer. # noqa: E501 - - - :return: The pod_selector of this V1NetworkPolicyPeer. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._pod_selector - - @pod_selector.setter - def pod_selector(self, pod_selector): - """Sets the pod_selector of this V1NetworkPolicyPeer. - - - :param pod_selector: The pod_selector of this V1NetworkPolicyPeer. # noqa: E501 - :type: V1LabelSelector - """ - - self._pod_selector = pod_selector - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicyPeer): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicyPeer): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_port.py deleted file mode 100644 index 35ff1a8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_port.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicyPort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'end_port': 'int', - 'port': 'object', - 'protocol': 'str' - } - - attribute_map = { - 'end_port': 'endPort', - 'port': 'port', - 'protocol': 'protocol' - } - - def __init__(self, end_port=None, port=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicyPort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._end_port = None - self._port = None - self._protocol = None - self.discriminator = None - - if end_port is not None: - self.end_port = end_port - if port is not None: - self.port = port - if protocol is not None: - self.protocol = protocol - - @property - def end_port(self): - """Gets the end_port of this V1NetworkPolicyPort. # noqa: E501 - - endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. # noqa: E501 - - :return: The end_port of this V1NetworkPolicyPort. # noqa: E501 - :rtype: int - """ - return self._end_port - - @end_port.setter - def end_port(self, end_port): - """Sets the end_port of this V1NetworkPolicyPort. - - endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. # noqa: E501 - - :param end_port: The end_port of this V1NetworkPolicyPort. # noqa: E501 - :type: int - """ - - self._end_port = end_port - - @property - def port(self): - """Gets the port of this V1NetworkPolicyPort. # noqa: E501 - - port represents the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched. # noqa: E501 - - :return: The port of this V1NetworkPolicyPort. # noqa: E501 - :rtype: object - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1NetworkPolicyPort. - - port represents the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched. # noqa: E501 - - :param port: The port of this V1NetworkPolicyPort. # noqa: E501 - :type: object - """ - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this V1NetworkPolicyPort. # noqa: E501 - - protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP. # noqa: E501 - - :return: The protocol of this V1NetworkPolicyPort. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this V1NetworkPolicyPort. - - protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP. # noqa: E501 - - :param protocol: The protocol of this V1NetworkPolicyPort. # noqa: E501 - :type: str - """ - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicyPort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicyPort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_spec.py deleted file mode 100644 index ac9e640..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_network_policy_spec.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NetworkPolicySpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'egress': 'list[V1NetworkPolicyEgressRule]', - 'ingress': 'list[V1NetworkPolicyIngressRule]', - 'pod_selector': 'V1LabelSelector', - 'policy_types': 'list[str]' - } - - attribute_map = { - 'egress': 'egress', - 'ingress': 'ingress', - 'pod_selector': 'podSelector', - 'policy_types': 'policyTypes' - } - - def __init__(self, egress=None, ingress=None, pod_selector=None, policy_types=None, local_vars_configuration=None): # noqa: E501 - """V1NetworkPolicySpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._egress = None - self._ingress = None - self._pod_selector = None - self._policy_types = None - self.discriminator = None - - if egress is not None: - self.egress = egress - if ingress is not None: - self.ingress = ingress - self.pod_selector = pod_selector - if policy_types is not None: - self.policy_types = policy_types - - @property - def egress(self): - """Gets the egress of this V1NetworkPolicySpec. # noqa: E501 - - egress is a list of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8 # noqa: E501 - - :return: The egress of this V1NetworkPolicySpec. # noqa: E501 - :rtype: list[V1NetworkPolicyEgressRule] - """ - return self._egress - - @egress.setter - def egress(self, egress): - """Sets the egress of this V1NetworkPolicySpec. - - egress is a list of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8 # noqa: E501 - - :param egress: The egress of this V1NetworkPolicySpec. # noqa: E501 - :type: list[V1NetworkPolicyEgressRule] - """ - - self._egress = egress - - @property - def ingress(self): - """Gets the ingress of this V1NetworkPolicySpec. # noqa: E501 - - ingress is a list of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default) # noqa: E501 - - :return: The ingress of this V1NetworkPolicySpec. # noqa: E501 - :rtype: list[V1NetworkPolicyIngressRule] - """ - return self._ingress - - @ingress.setter - def ingress(self, ingress): - """Sets the ingress of this V1NetworkPolicySpec. - - ingress is a list of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default) # noqa: E501 - - :param ingress: The ingress of this V1NetworkPolicySpec. # noqa: E501 - :type: list[V1NetworkPolicyIngressRule] - """ - - self._ingress = ingress - - @property - def pod_selector(self): - """Gets the pod_selector of this V1NetworkPolicySpec. # noqa: E501 - - - :return: The pod_selector of this V1NetworkPolicySpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._pod_selector - - @pod_selector.setter - def pod_selector(self, pod_selector): - """Sets the pod_selector of this V1NetworkPolicySpec. - - - :param pod_selector: The pod_selector of this V1NetworkPolicySpec. # noqa: E501 - :type: V1LabelSelector - """ - if self.local_vars_configuration.client_side_validation and pod_selector is None: # noqa: E501 - raise ValueError("Invalid value for `pod_selector`, must not be `None`") # noqa: E501 - - self._pod_selector = pod_selector - - @property - def policy_types(self): - """Gets the policy_types of this V1NetworkPolicySpec. # noqa: E501 - - policyTypes is a list of rule types that the NetworkPolicy relates to. Valid options are [\"Ingress\"], [\"Egress\"], or [\"Ingress\", \"Egress\"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8 # noqa: E501 - - :return: The policy_types of this V1NetworkPolicySpec. # noqa: E501 - :rtype: list[str] - """ - return self._policy_types - - @policy_types.setter - def policy_types(self, policy_types): - """Sets the policy_types of this V1NetworkPolicySpec. - - policyTypes is a list of rule types that the NetworkPolicy relates to. Valid options are [\"Ingress\"], [\"Egress\"], or [\"Ingress\", \"Egress\"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8 # noqa: E501 - - :param policy_types: The policy_types of this V1NetworkPolicySpec. # noqa: E501 - :type: list[str] - """ - - self._policy_types = policy_types - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NetworkPolicySpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NetworkPolicySpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_nfs_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_nfs_volume_source.py deleted file mode 100644 index 874bc99..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_nfs_volume_source.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NFSVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'path': 'str', - 'read_only': 'bool', - 'server': 'str' - } - - attribute_map = { - 'path': 'path', - 'read_only': 'readOnly', - 'server': 'server' - } - - def __init__(self, path=None, read_only=None, server=None, local_vars_configuration=None): # noqa: E501 - """V1NFSVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._path = None - self._read_only = None - self._server = None - self.discriminator = None - - self.path = path - if read_only is not None: - self.read_only = read_only - self.server = server - - @property - def path(self): - """Gets the path of this V1NFSVolumeSource. # noqa: E501 - - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :return: The path of this V1NFSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1NFSVolumeSource. - - path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :param path: The path of this V1NFSVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - @property - def read_only(self): - """Gets the read_only of this V1NFSVolumeSource. # noqa: E501 - - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :return: The read_only of this V1NFSVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1NFSVolumeSource. - - readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :param read_only: The read_only of this V1NFSVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def server(self): - """Gets the server of this V1NFSVolumeSource. # noqa: E501 - - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :return: The server of this V1NFSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._server - - @server.setter - def server(self, server): - """Sets the server of this V1NFSVolumeSource. - - server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs # noqa: E501 - - :param server: The server of this V1NFSVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and server is None: # noqa: E501 - raise ValueError("Invalid value for `server`, must not be `None`") # noqa: E501 - - self._server = server - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NFSVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NFSVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node.py deleted file mode 100644 index b9092d9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Node(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1NodeSpec', - 'status': 'V1NodeStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Node - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Node. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Node. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Node. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Node. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Node. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Node. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Node. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Node. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Node. # noqa: E501 - - - :return: The metadata of this V1Node. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Node. - - - :param metadata: The metadata of this V1Node. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Node. # noqa: E501 - - - :return: The spec of this V1Node. # noqa: E501 - :rtype: V1NodeSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Node. - - - :param spec: The spec of this V1Node. # noqa: E501 - :type: V1NodeSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Node. # noqa: E501 - - - :return: The status of this V1Node. # noqa: E501 - :rtype: V1NodeStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Node. - - - :param status: The status of this V1Node. # noqa: E501 - :type: V1NodeStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Node): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Node): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_address.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_address.py deleted file mode 100644 index 264a09e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_address.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeAddress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'address': 'str', - 'type': 'str' - } - - attribute_map = { - 'address': 'address', - 'type': 'type' - } - - def __init__(self, address=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1NodeAddress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._address = None - self._type = None - self.discriminator = None - - self.address = address - self.type = type - - @property - def address(self): - """Gets the address of this V1NodeAddress. # noqa: E501 - - The node address. # noqa: E501 - - :return: The address of this V1NodeAddress. # noqa: E501 - :rtype: str - """ - return self._address - - @address.setter - def address(self, address): - """Sets the address of this V1NodeAddress. - - The node address. # noqa: E501 - - :param address: The address of this V1NodeAddress. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and address is None: # noqa: E501 - raise ValueError("Invalid value for `address`, must not be `None`") # noqa: E501 - - self._address = address - - @property - def type(self): - """Gets the type of this V1NodeAddress. # noqa: E501 - - Node address type, one of Hostname, ExternalIP or InternalIP. # noqa: E501 - - :return: The type of this V1NodeAddress. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1NodeAddress. - - Node address type, one of Hostname, ExternalIP or InternalIP. # noqa: E501 - - :param type: The type of this V1NodeAddress. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeAddress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeAddress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_affinity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_affinity.py deleted file mode 100644 index 7d50480..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_affinity.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeAffinity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'preferred_during_scheduling_ignored_during_execution': 'list[V1PreferredSchedulingTerm]', - 'required_during_scheduling_ignored_during_execution': 'V1NodeSelector' - } - - attribute_map = { - 'preferred_during_scheduling_ignored_during_execution': 'preferredDuringSchedulingIgnoredDuringExecution', - 'required_during_scheduling_ignored_during_execution': 'requiredDuringSchedulingIgnoredDuringExecution' - } - - def __init__(self, preferred_during_scheduling_ignored_during_execution=None, required_during_scheduling_ignored_during_execution=None, local_vars_configuration=None): # noqa: E501 - """V1NodeAffinity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._preferred_during_scheduling_ignored_during_execution = None - self._required_during_scheduling_ignored_during_execution = None - self.discriminator = None - - if preferred_during_scheduling_ignored_during_execution is not None: - self.preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - if required_during_scheduling_ignored_during_execution is not None: - self.required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - @property - def preferred_during_scheduling_ignored_during_execution(self): - """Gets the preferred_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :return: The preferred_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - :rtype: list[V1PreferredSchedulingTerm] - """ - return self._preferred_during_scheduling_ignored_during_execution - - @preferred_during_scheduling_ignored_during_execution.setter - def preferred_during_scheduling_ignored_during_execution(self, preferred_during_scheduling_ignored_during_execution): - """Sets the preferred_during_scheduling_ignored_during_execution of this V1NodeAffinity. - - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :param preferred_during_scheduling_ignored_during_execution: The preferred_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - :type: list[V1PreferredSchedulingTerm] - """ - - self._preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - - @property - def required_during_scheduling_ignored_during_execution(self): - """Gets the required_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - - - :return: The required_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - :rtype: V1NodeSelector - """ - return self._required_during_scheduling_ignored_during_execution - - @required_during_scheduling_ignored_during_execution.setter - def required_during_scheduling_ignored_during_execution(self, required_during_scheduling_ignored_during_execution): - """Sets the required_during_scheduling_ignored_during_execution of this V1NodeAffinity. - - - :param required_during_scheduling_ignored_during_execution: The required_during_scheduling_ignored_during_execution of this V1NodeAffinity. # noqa: E501 - :type: V1NodeSelector - """ - - self._required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeAffinity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeAffinity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_condition.py deleted file mode 100644 index 5aa1a53..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_condition.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_heartbeat_time': 'datetime', - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_heartbeat_time': 'lastHeartbeatTime', - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_heartbeat_time=None, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1NodeCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_heartbeat_time = None - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_heartbeat_time is not None: - self.last_heartbeat_time = last_heartbeat_time - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_heartbeat_time(self): - """Gets the last_heartbeat_time of this V1NodeCondition. # noqa: E501 - - Last time we got an update on a given condition. # noqa: E501 - - :return: The last_heartbeat_time of this V1NodeCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_heartbeat_time - - @last_heartbeat_time.setter - def last_heartbeat_time(self, last_heartbeat_time): - """Sets the last_heartbeat_time of this V1NodeCondition. - - Last time we got an update on a given condition. # noqa: E501 - - :param last_heartbeat_time: The last_heartbeat_time of this V1NodeCondition. # noqa: E501 - :type: datetime - """ - - self._last_heartbeat_time = last_heartbeat_time - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1NodeCondition. # noqa: E501 - - Last time the condition transit from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1NodeCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1NodeCondition. - - Last time the condition transit from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1NodeCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1NodeCondition. # noqa: E501 - - Human readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1NodeCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1NodeCondition. - - Human readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1NodeCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1NodeCondition. # noqa: E501 - - (brief) reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1NodeCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1NodeCondition. - - (brief) reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1NodeCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1NodeCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1NodeCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1NodeCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1NodeCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1NodeCondition. # noqa: E501 - - Type of node condition. # noqa: E501 - - :return: The type of this V1NodeCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1NodeCondition. - - Type of node condition. # noqa: E501 - - :param type: The type of this V1NodeCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_source.py deleted file mode 100644 index 2ed800c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_source.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeConfigSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'config_map': 'V1ConfigMapNodeConfigSource' - } - - attribute_map = { - 'config_map': 'configMap' - } - - def __init__(self, config_map=None, local_vars_configuration=None): # noqa: E501 - """V1NodeConfigSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._config_map = None - self.discriminator = None - - if config_map is not None: - self.config_map = config_map - - @property - def config_map(self): - """Gets the config_map of this V1NodeConfigSource. # noqa: E501 - - - :return: The config_map of this V1NodeConfigSource. # noqa: E501 - :rtype: V1ConfigMapNodeConfigSource - """ - return self._config_map - - @config_map.setter - def config_map(self, config_map): - """Sets the config_map of this V1NodeConfigSource. - - - :param config_map: The config_map of this V1NodeConfigSource. # noqa: E501 - :type: V1ConfigMapNodeConfigSource - """ - - self._config_map = config_map - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeConfigSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeConfigSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_status.py deleted file mode 100644 index 0411cbe..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_config_status.py +++ /dev/null @@ -1,200 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeConfigStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'active': 'V1NodeConfigSource', - 'assigned': 'V1NodeConfigSource', - 'error': 'str', - 'last_known_good': 'V1NodeConfigSource' - } - - attribute_map = { - 'active': 'active', - 'assigned': 'assigned', - 'error': 'error', - 'last_known_good': 'lastKnownGood' - } - - def __init__(self, active=None, assigned=None, error=None, last_known_good=None, local_vars_configuration=None): # noqa: E501 - """V1NodeConfigStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._active = None - self._assigned = None - self._error = None - self._last_known_good = None - self.discriminator = None - - if active is not None: - self.active = active - if assigned is not None: - self.assigned = assigned - if error is not None: - self.error = error - if last_known_good is not None: - self.last_known_good = last_known_good - - @property - def active(self): - """Gets the active of this V1NodeConfigStatus. # noqa: E501 - - - :return: The active of this V1NodeConfigStatus. # noqa: E501 - :rtype: V1NodeConfigSource - """ - return self._active - - @active.setter - def active(self, active): - """Sets the active of this V1NodeConfigStatus. - - - :param active: The active of this V1NodeConfigStatus. # noqa: E501 - :type: V1NodeConfigSource - """ - - self._active = active - - @property - def assigned(self): - """Gets the assigned of this V1NodeConfigStatus. # noqa: E501 - - - :return: The assigned of this V1NodeConfigStatus. # noqa: E501 - :rtype: V1NodeConfigSource - """ - return self._assigned - - @assigned.setter - def assigned(self, assigned): - """Sets the assigned of this V1NodeConfigStatus. - - - :param assigned: The assigned of this V1NodeConfigStatus. # noqa: E501 - :type: V1NodeConfigSource - """ - - self._assigned = assigned - - @property - def error(self): - """Gets the error of this V1NodeConfigStatus. # noqa: E501 - - Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions. # noqa: E501 - - :return: The error of this V1NodeConfigStatus. # noqa: E501 - :rtype: str - """ - return self._error - - @error.setter - def error(self, error): - """Sets the error of this V1NodeConfigStatus. - - Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions. # noqa: E501 - - :param error: The error of this V1NodeConfigStatus. # noqa: E501 - :type: str - """ - - self._error = error - - @property - def last_known_good(self): - """Gets the last_known_good of this V1NodeConfigStatus. # noqa: E501 - - - :return: The last_known_good of this V1NodeConfigStatus. # noqa: E501 - :rtype: V1NodeConfigSource - """ - return self._last_known_good - - @last_known_good.setter - def last_known_good(self, last_known_good): - """Sets the last_known_good of this V1NodeConfigStatus. - - - :param last_known_good: The last_known_good of this V1NodeConfigStatus. # noqa: E501 - :type: V1NodeConfigSource - """ - - self._last_known_good = last_known_good - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeConfigStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeConfigStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_daemon_endpoints.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_daemon_endpoints.py deleted file mode 100644 index b871269..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_daemon_endpoints.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeDaemonEndpoints(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'kubelet_endpoint': 'V1DaemonEndpoint' - } - - attribute_map = { - 'kubelet_endpoint': 'kubeletEndpoint' - } - - def __init__(self, kubelet_endpoint=None, local_vars_configuration=None): # noqa: E501 - """V1NodeDaemonEndpoints - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._kubelet_endpoint = None - self.discriminator = None - - if kubelet_endpoint is not None: - self.kubelet_endpoint = kubelet_endpoint - - @property - def kubelet_endpoint(self): - """Gets the kubelet_endpoint of this V1NodeDaemonEndpoints. # noqa: E501 - - - :return: The kubelet_endpoint of this V1NodeDaemonEndpoints. # noqa: E501 - :rtype: V1DaemonEndpoint - """ - return self._kubelet_endpoint - - @kubelet_endpoint.setter - def kubelet_endpoint(self, kubelet_endpoint): - """Sets the kubelet_endpoint of this V1NodeDaemonEndpoints. - - - :param kubelet_endpoint: The kubelet_endpoint of this V1NodeDaemonEndpoints. # noqa: E501 - :type: V1DaemonEndpoint - """ - - self._kubelet_endpoint = kubelet_endpoint - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeDaemonEndpoints): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeDaemonEndpoints): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_list.py deleted file mode 100644 index 050a561..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Node]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1NodeList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1NodeList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1NodeList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1NodeList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1NodeList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1NodeList. # noqa: E501 - - List of nodes # noqa: E501 - - :return: The items of this V1NodeList. # noqa: E501 - :rtype: list[V1Node] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1NodeList. - - List of nodes # noqa: E501 - - :param items: The items of this V1NodeList. # noqa: E501 - :type: list[V1Node] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1NodeList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1NodeList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1NodeList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1NodeList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1NodeList. # noqa: E501 - - - :return: The metadata of this V1NodeList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1NodeList. - - - :param metadata: The metadata of this V1NodeList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector.py deleted file mode 100644 index c3c0d70..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeSelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'node_selector_terms': 'list[V1NodeSelectorTerm]' - } - - attribute_map = { - 'node_selector_terms': 'nodeSelectorTerms' - } - - def __init__(self, node_selector_terms=None, local_vars_configuration=None): # noqa: E501 - """V1NodeSelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._node_selector_terms = None - self.discriminator = None - - self.node_selector_terms = node_selector_terms - - @property - def node_selector_terms(self): - """Gets the node_selector_terms of this V1NodeSelector. # noqa: E501 - - Required. A list of node selector terms. The terms are ORed. # noqa: E501 - - :return: The node_selector_terms of this V1NodeSelector. # noqa: E501 - :rtype: list[V1NodeSelectorTerm] - """ - return self._node_selector_terms - - @node_selector_terms.setter - def node_selector_terms(self, node_selector_terms): - """Sets the node_selector_terms of this V1NodeSelector. - - Required. A list of node selector terms. The terms are ORed. # noqa: E501 - - :param node_selector_terms: The node_selector_terms of this V1NodeSelector. # noqa: E501 - :type: list[V1NodeSelectorTerm] - """ - if self.local_vars_configuration.client_side_validation and node_selector_terms is None: # noqa: E501 - raise ValueError("Invalid value for `node_selector_terms`, must not be `None`") # noqa: E501 - - self._node_selector_terms = node_selector_terms - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeSelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeSelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_requirement.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_requirement.py deleted file mode 100644 index 5f5243e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_requirement.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeSelectorRequirement(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'operator': 'str', - 'values': 'list[str]' - } - - attribute_map = { - 'key': 'key', - 'operator': 'operator', - 'values': 'values' - } - - def __init__(self, key=None, operator=None, values=None, local_vars_configuration=None): # noqa: E501 - """V1NodeSelectorRequirement - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._operator = None - self._values = None - self.discriminator = None - - self.key = key - self.operator = operator - if values is not None: - self.values = values - - @property - def key(self): - """Gets the key of this V1NodeSelectorRequirement. # noqa: E501 - - The label key that the selector applies to. # noqa: E501 - - :return: The key of this V1NodeSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1NodeSelectorRequirement. - - The label key that the selector applies to. # noqa: E501 - - :param key: The key of this V1NodeSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def operator(self): - """Gets the operator of this V1NodeSelectorRequirement. # noqa: E501 - - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. # noqa: E501 - - :return: The operator of this V1NodeSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._operator - - @operator.setter - def operator(self, operator): - """Sets the operator of this V1NodeSelectorRequirement. - - Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. # noqa: E501 - - :param operator: The operator of this V1NodeSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and operator is None: # noqa: E501 - raise ValueError("Invalid value for `operator`, must not be `None`") # noqa: E501 - - self._operator = operator - - @property - def values(self): - """Gets the values of this V1NodeSelectorRequirement. # noqa: E501 - - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. # noqa: E501 - - :return: The values of this V1NodeSelectorRequirement. # noqa: E501 - :rtype: list[str] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this V1NodeSelectorRequirement. - - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. # noqa: E501 - - :param values: The values of this V1NodeSelectorRequirement. # noqa: E501 - :type: list[str] - """ - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeSelectorRequirement): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeSelectorRequirement): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_term.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_term.py deleted file mode 100644 index b02d06e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_selector_term.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeSelectorTerm(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_expressions': 'list[V1NodeSelectorRequirement]', - 'match_fields': 'list[V1NodeSelectorRequirement]' - } - - attribute_map = { - 'match_expressions': 'matchExpressions', - 'match_fields': 'matchFields' - } - - def __init__(self, match_expressions=None, match_fields=None, local_vars_configuration=None): # noqa: E501 - """V1NodeSelectorTerm - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_expressions = None - self._match_fields = None - self.discriminator = None - - if match_expressions is not None: - self.match_expressions = match_expressions - if match_fields is not None: - self.match_fields = match_fields - - @property - def match_expressions(self): - """Gets the match_expressions of this V1NodeSelectorTerm. # noqa: E501 - - A list of node selector requirements by node's labels. # noqa: E501 - - :return: The match_expressions of this V1NodeSelectorTerm. # noqa: E501 - :rtype: list[V1NodeSelectorRequirement] - """ - return self._match_expressions - - @match_expressions.setter - def match_expressions(self, match_expressions): - """Sets the match_expressions of this V1NodeSelectorTerm. - - A list of node selector requirements by node's labels. # noqa: E501 - - :param match_expressions: The match_expressions of this V1NodeSelectorTerm. # noqa: E501 - :type: list[V1NodeSelectorRequirement] - """ - - self._match_expressions = match_expressions - - @property - def match_fields(self): - """Gets the match_fields of this V1NodeSelectorTerm. # noqa: E501 - - A list of node selector requirements by node's fields. # noqa: E501 - - :return: The match_fields of this V1NodeSelectorTerm. # noqa: E501 - :rtype: list[V1NodeSelectorRequirement] - """ - return self._match_fields - - @match_fields.setter - def match_fields(self, match_fields): - """Sets the match_fields of this V1NodeSelectorTerm. - - A list of node selector requirements by node's fields. # noqa: E501 - - :param match_fields: The match_fields of this V1NodeSelectorTerm. # noqa: E501 - :type: list[V1NodeSelectorRequirement] - """ - - self._match_fields = match_fields - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeSelectorTerm): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeSelectorTerm): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_spec.py deleted file mode 100644 index 03140dc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_spec.py +++ /dev/null @@ -1,288 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'config_source': 'V1NodeConfigSource', - 'external_id': 'str', - 'pod_cidr': 'str', - 'pod_cid_rs': 'list[str]', - 'provider_id': 'str', - 'taints': 'list[V1Taint]', - 'unschedulable': 'bool' - } - - attribute_map = { - 'config_source': 'configSource', - 'external_id': 'externalID', - 'pod_cidr': 'podCIDR', - 'pod_cid_rs': 'podCIDRs', - 'provider_id': 'providerID', - 'taints': 'taints', - 'unschedulable': 'unschedulable' - } - - def __init__(self, config_source=None, external_id=None, pod_cidr=None, pod_cid_rs=None, provider_id=None, taints=None, unschedulable=None, local_vars_configuration=None): # noqa: E501 - """V1NodeSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._config_source = None - self._external_id = None - self._pod_cidr = None - self._pod_cid_rs = None - self._provider_id = None - self._taints = None - self._unschedulable = None - self.discriminator = None - - if config_source is not None: - self.config_source = config_source - if external_id is not None: - self.external_id = external_id - if pod_cidr is not None: - self.pod_cidr = pod_cidr - if pod_cid_rs is not None: - self.pod_cid_rs = pod_cid_rs - if provider_id is not None: - self.provider_id = provider_id - if taints is not None: - self.taints = taints - if unschedulable is not None: - self.unschedulable = unschedulable - - @property - def config_source(self): - """Gets the config_source of this V1NodeSpec. # noqa: E501 - - - :return: The config_source of this V1NodeSpec. # noqa: E501 - :rtype: V1NodeConfigSource - """ - return self._config_source - - @config_source.setter - def config_source(self, config_source): - """Sets the config_source of this V1NodeSpec. - - - :param config_source: The config_source of this V1NodeSpec. # noqa: E501 - :type: V1NodeConfigSource - """ - - self._config_source = config_source - - @property - def external_id(self): - """Gets the external_id of this V1NodeSpec. # noqa: E501 - - Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966 # noqa: E501 - - :return: The external_id of this V1NodeSpec. # noqa: E501 - :rtype: str - """ - return self._external_id - - @external_id.setter - def external_id(self, external_id): - """Sets the external_id of this V1NodeSpec. - - Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966 # noqa: E501 - - :param external_id: The external_id of this V1NodeSpec. # noqa: E501 - :type: str - """ - - self._external_id = external_id - - @property - def pod_cidr(self): - """Gets the pod_cidr of this V1NodeSpec. # noqa: E501 - - PodCIDR represents the pod IP range assigned to the node. # noqa: E501 - - :return: The pod_cidr of this V1NodeSpec. # noqa: E501 - :rtype: str - """ - return self._pod_cidr - - @pod_cidr.setter - def pod_cidr(self, pod_cidr): - """Sets the pod_cidr of this V1NodeSpec. - - PodCIDR represents the pod IP range assigned to the node. # noqa: E501 - - :param pod_cidr: The pod_cidr of this V1NodeSpec. # noqa: E501 - :type: str - """ - - self._pod_cidr = pod_cidr - - @property - def pod_cid_rs(self): - """Gets the pod_cid_rs of this V1NodeSpec. # noqa: E501 - - podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6. # noqa: E501 - - :return: The pod_cid_rs of this V1NodeSpec. # noqa: E501 - :rtype: list[str] - """ - return self._pod_cid_rs - - @pod_cid_rs.setter - def pod_cid_rs(self, pod_cid_rs): - """Sets the pod_cid_rs of this V1NodeSpec. - - podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6. # noqa: E501 - - :param pod_cid_rs: The pod_cid_rs of this V1NodeSpec. # noqa: E501 - :type: list[str] - """ - - self._pod_cid_rs = pod_cid_rs - - @property - def provider_id(self): - """Gets the provider_id of this V1NodeSpec. # noqa: E501 - - ID of the node assigned by the cloud provider in the format: :// # noqa: E501 - - :return: The provider_id of this V1NodeSpec. # noqa: E501 - :rtype: str - """ - return self._provider_id - - @provider_id.setter - def provider_id(self, provider_id): - """Sets the provider_id of this V1NodeSpec. - - ID of the node assigned by the cloud provider in the format: :// # noqa: E501 - - :param provider_id: The provider_id of this V1NodeSpec. # noqa: E501 - :type: str - """ - - self._provider_id = provider_id - - @property - def taints(self): - """Gets the taints of this V1NodeSpec. # noqa: E501 - - If specified, the node's taints. # noqa: E501 - - :return: The taints of this V1NodeSpec. # noqa: E501 - :rtype: list[V1Taint] - """ - return self._taints - - @taints.setter - def taints(self, taints): - """Sets the taints of this V1NodeSpec. - - If specified, the node's taints. # noqa: E501 - - :param taints: The taints of this V1NodeSpec. # noqa: E501 - :type: list[V1Taint] - """ - - self._taints = taints - - @property - def unschedulable(self): - """Gets the unschedulable of this V1NodeSpec. # noqa: E501 - - Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration # noqa: E501 - - :return: The unschedulable of this V1NodeSpec. # noqa: E501 - :rtype: bool - """ - return self._unschedulable - - @unschedulable.setter - def unschedulable(self, unschedulable): - """Sets the unschedulable of this V1NodeSpec. - - Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration # noqa: E501 - - :param unschedulable: The unschedulable of this V1NodeSpec. # noqa: E501 - :type: bool - """ - - self._unschedulable = unschedulable - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_status.py deleted file mode 100644 index 1c4331d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_status.py +++ /dev/null @@ -1,396 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'addresses': 'list[V1NodeAddress]', - 'allocatable': 'dict(str, str)', - 'capacity': 'dict(str, str)', - 'conditions': 'list[V1NodeCondition]', - 'config': 'V1NodeConfigStatus', - 'daemon_endpoints': 'V1NodeDaemonEndpoints', - 'images': 'list[V1ContainerImage]', - 'node_info': 'V1NodeSystemInfo', - 'phase': 'str', - 'volumes_attached': 'list[V1AttachedVolume]', - 'volumes_in_use': 'list[str]' - } - - attribute_map = { - 'addresses': 'addresses', - 'allocatable': 'allocatable', - 'capacity': 'capacity', - 'conditions': 'conditions', - 'config': 'config', - 'daemon_endpoints': 'daemonEndpoints', - 'images': 'images', - 'node_info': 'nodeInfo', - 'phase': 'phase', - 'volumes_attached': 'volumesAttached', - 'volumes_in_use': 'volumesInUse' - } - - def __init__(self, addresses=None, allocatable=None, capacity=None, conditions=None, config=None, daemon_endpoints=None, images=None, node_info=None, phase=None, volumes_attached=None, volumes_in_use=None, local_vars_configuration=None): # noqa: E501 - """V1NodeStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._addresses = None - self._allocatable = None - self._capacity = None - self._conditions = None - self._config = None - self._daemon_endpoints = None - self._images = None - self._node_info = None - self._phase = None - self._volumes_attached = None - self._volumes_in_use = None - self.discriminator = None - - if addresses is not None: - self.addresses = addresses - if allocatable is not None: - self.allocatable = allocatable - if capacity is not None: - self.capacity = capacity - if conditions is not None: - self.conditions = conditions - if config is not None: - self.config = config - if daemon_endpoints is not None: - self.daemon_endpoints = daemon_endpoints - if images is not None: - self.images = images - if node_info is not None: - self.node_info = node_info - if phase is not None: - self.phase = phase - if volumes_attached is not None: - self.volumes_attached = volumes_attached - if volumes_in_use is not None: - self.volumes_in_use = volumes_in_use - - @property - def addresses(self): - """Gets the addresses of this V1NodeStatus. # noqa: E501 - - List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP). # noqa: E501 - - :return: The addresses of this V1NodeStatus. # noqa: E501 - :rtype: list[V1NodeAddress] - """ - return self._addresses - - @addresses.setter - def addresses(self, addresses): - """Sets the addresses of this V1NodeStatus. - - List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP). # noqa: E501 - - :param addresses: The addresses of this V1NodeStatus. # noqa: E501 - :type: list[V1NodeAddress] - """ - - self._addresses = addresses - - @property - def allocatable(self): - """Gets the allocatable of this V1NodeStatus. # noqa: E501 - - Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity. # noqa: E501 - - :return: The allocatable of this V1NodeStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._allocatable - - @allocatable.setter - def allocatable(self, allocatable): - """Sets the allocatable of this V1NodeStatus. - - Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity. # noqa: E501 - - :param allocatable: The allocatable of this V1NodeStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._allocatable = allocatable - - @property - def capacity(self): - """Gets the capacity of this V1NodeStatus. # noqa: E501 - - Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity # noqa: E501 - - :return: The capacity of this V1NodeStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._capacity - - @capacity.setter - def capacity(self, capacity): - """Sets the capacity of this V1NodeStatus. - - Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity # noqa: E501 - - :param capacity: The capacity of this V1NodeStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._capacity = capacity - - @property - def conditions(self): - """Gets the conditions of this V1NodeStatus. # noqa: E501 - - Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition # noqa: E501 - - :return: The conditions of this V1NodeStatus. # noqa: E501 - :rtype: list[V1NodeCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1NodeStatus. - - Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition # noqa: E501 - - :param conditions: The conditions of this V1NodeStatus. # noqa: E501 - :type: list[V1NodeCondition] - """ - - self._conditions = conditions - - @property - def config(self): - """Gets the config of this V1NodeStatus. # noqa: E501 - - - :return: The config of this V1NodeStatus. # noqa: E501 - :rtype: V1NodeConfigStatus - """ - return self._config - - @config.setter - def config(self, config): - """Sets the config of this V1NodeStatus. - - - :param config: The config of this V1NodeStatus. # noqa: E501 - :type: V1NodeConfigStatus - """ - - self._config = config - - @property - def daemon_endpoints(self): - """Gets the daemon_endpoints of this V1NodeStatus. # noqa: E501 - - - :return: The daemon_endpoints of this V1NodeStatus. # noqa: E501 - :rtype: V1NodeDaemonEndpoints - """ - return self._daemon_endpoints - - @daemon_endpoints.setter - def daemon_endpoints(self, daemon_endpoints): - """Sets the daemon_endpoints of this V1NodeStatus. - - - :param daemon_endpoints: The daemon_endpoints of this V1NodeStatus. # noqa: E501 - :type: V1NodeDaemonEndpoints - """ - - self._daemon_endpoints = daemon_endpoints - - @property - def images(self): - """Gets the images of this V1NodeStatus. # noqa: E501 - - List of container images on this node # noqa: E501 - - :return: The images of this V1NodeStatus. # noqa: E501 - :rtype: list[V1ContainerImage] - """ - return self._images - - @images.setter - def images(self, images): - """Sets the images of this V1NodeStatus. - - List of container images on this node # noqa: E501 - - :param images: The images of this V1NodeStatus. # noqa: E501 - :type: list[V1ContainerImage] - """ - - self._images = images - - @property - def node_info(self): - """Gets the node_info of this V1NodeStatus. # noqa: E501 - - - :return: The node_info of this V1NodeStatus. # noqa: E501 - :rtype: V1NodeSystemInfo - """ - return self._node_info - - @node_info.setter - def node_info(self, node_info): - """Sets the node_info of this V1NodeStatus. - - - :param node_info: The node_info of this V1NodeStatus. # noqa: E501 - :type: V1NodeSystemInfo - """ - - self._node_info = node_info - - @property - def phase(self): - """Gets the phase of this V1NodeStatus. # noqa: E501 - - NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated. # noqa: E501 - - :return: The phase of this V1NodeStatus. # noqa: E501 - :rtype: str - """ - return self._phase - - @phase.setter - def phase(self, phase): - """Sets the phase of this V1NodeStatus. - - NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated. # noqa: E501 - - :param phase: The phase of this V1NodeStatus. # noqa: E501 - :type: str - """ - - self._phase = phase - - @property - def volumes_attached(self): - """Gets the volumes_attached of this V1NodeStatus. # noqa: E501 - - List of volumes that are attached to the node. # noqa: E501 - - :return: The volumes_attached of this V1NodeStatus. # noqa: E501 - :rtype: list[V1AttachedVolume] - """ - return self._volumes_attached - - @volumes_attached.setter - def volumes_attached(self, volumes_attached): - """Sets the volumes_attached of this V1NodeStatus. - - List of volumes that are attached to the node. # noqa: E501 - - :param volumes_attached: The volumes_attached of this V1NodeStatus. # noqa: E501 - :type: list[V1AttachedVolume] - """ - - self._volumes_attached = volumes_attached - - @property - def volumes_in_use(self): - """Gets the volumes_in_use of this V1NodeStatus. # noqa: E501 - - List of attachable volumes in use (mounted) by the node. # noqa: E501 - - :return: The volumes_in_use of this V1NodeStatus. # noqa: E501 - :rtype: list[str] - """ - return self._volumes_in_use - - @volumes_in_use.setter - def volumes_in_use(self, volumes_in_use): - """Sets the volumes_in_use of this V1NodeStatus. - - List of attachable volumes in use (mounted) by the node. # noqa: E501 - - :param volumes_in_use: The volumes_in_use of this V1NodeStatus. # noqa: E501 - :type: list[str] - """ - - self._volumes_in_use = volumes_in_use - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_system_info.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_system_info.py deleted file mode 100644 index 2b17407..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_node_system_info.py +++ /dev/null @@ -1,384 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NodeSystemInfo(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'architecture': 'str', - 'boot_id': 'str', - 'container_runtime_version': 'str', - 'kernel_version': 'str', - 'kube_proxy_version': 'str', - 'kubelet_version': 'str', - 'machine_id': 'str', - 'operating_system': 'str', - 'os_image': 'str', - 'system_uuid': 'str' - } - - attribute_map = { - 'architecture': 'architecture', - 'boot_id': 'bootID', - 'container_runtime_version': 'containerRuntimeVersion', - 'kernel_version': 'kernelVersion', - 'kube_proxy_version': 'kubeProxyVersion', - 'kubelet_version': 'kubeletVersion', - 'machine_id': 'machineID', - 'operating_system': 'operatingSystem', - 'os_image': 'osImage', - 'system_uuid': 'systemUUID' - } - - def __init__(self, architecture=None, boot_id=None, container_runtime_version=None, kernel_version=None, kube_proxy_version=None, kubelet_version=None, machine_id=None, operating_system=None, os_image=None, system_uuid=None, local_vars_configuration=None): # noqa: E501 - """V1NodeSystemInfo - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._architecture = None - self._boot_id = None - self._container_runtime_version = None - self._kernel_version = None - self._kube_proxy_version = None - self._kubelet_version = None - self._machine_id = None - self._operating_system = None - self._os_image = None - self._system_uuid = None - self.discriminator = None - - self.architecture = architecture - self.boot_id = boot_id - self.container_runtime_version = container_runtime_version - self.kernel_version = kernel_version - self.kube_proxy_version = kube_proxy_version - self.kubelet_version = kubelet_version - self.machine_id = machine_id - self.operating_system = operating_system - self.os_image = os_image - self.system_uuid = system_uuid - - @property - def architecture(self): - """Gets the architecture of this V1NodeSystemInfo. # noqa: E501 - - The Architecture reported by the node # noqa: E501 - - :return: The architecture of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._architecture - - @architecture.setter - def architecture(self, architecture): - """Sets the architecture of this V1NodeSystemInfo. - - The Architecture reported by the node # noqa: E501 - - :param architecture: The architecture of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and architecture is None: # noqa: E501 - raise ValueError("Invalid value for `architecture`, must not be `None`") # noqa: E501 - - self._architecture = architecture - - @property - def boot_id(self): - """Gets the boot_id of this V1NodeSystemInfo. # noqa: E501 - - Boot ID reported by the node. # noqa: E501 - - :return: The boot_id of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._boot_id - - @boot_id.setter - def boot_id(self, boot_id): - """Sets the boot_id of this V1NodeSystemInfo. - - Boot ID reported by the node. # noqa: E501 - - :param boot_id: The boot_id of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and boot_id is None: # noqa: E501 - raise ValueError("Invalid value for `boot_id`, must not be `None`") # noqa: E501 - - self._boot_id = boot_id - - @property - def container_runtime_version(self): - """Gets the container_runtime_version of this V1NodeSystemInfo. # noqa: E501 - - ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2). # noqa: E501 - - :return: The container_runtime_version of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._container_runtime_version - - @container_runtime_version.setter - def container_runtime_version(self, container_runtime_version): - """Sets the container_runtime_version of this V1NodeSystemInfo. - - ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2). # noqa: E501 - - :param container_runtime_version: The container_runtime_version of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and container_runtime_version is None: # noqa: E501 - raise ValueError("Invalid value for `container_runtime_version`, must not be `None`") # noqa: E501 - - self._container_runtime_version = container_runtime_version - - @property - def kernel_version(self): - """Gets the kernel_version of this V1NodeSystemInfo. # noqa: E501 - - Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). # noqa: E501 - - :return: The kernel_version of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._kernel_version - - @kernel_version.setter - def kernel_version(self, kernel_version): - """Sets the kernel_version of this V1NodeSystemInfo. - - Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). # noqa: E501 - - :param kernel_version: The kernel_version of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kernel_version is None: # noqa: E501 - raise ValueError("Invalid value for `kernel_version`, must not be `None`") # noqa: E501 - - self._kernel_version = kernel_version - - @property - def kube_proxy_version(self): - """Gets the kube_proxy_version of this V1NodeSystemInfo. # noqa: E501 - - KubeProxy Version reported by the node. # noqa: E501 - - :return: The kube_proxy_version of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._kube_proxy_version - - @kube_proxy_version.setter - def kube_proxy_version(self, kube_proxy_version): - """Sets the kube_proxy_version of this V1NodeSystemInfo. - - KubeProxy Version reported by the node. # noqa: E501 - - :param kube_proxy_version: The kube_proxy_version of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kube_proxy_version is None: # noqa: E501 - raise ValueError("Invalid value for `kube_proxy_version`, must not be `None`") # noqa: E501 - - self._kube_proxy_version = kube_proxy_version - - @property - def kubelet_version(self): - """Gets the kubelet_version of this V1NodeSystemInfo. # noqa: E501 - - Kubelet Version reported by the node. # noqa: E501 - - :return: The kubelet_version of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._kubelet_version - - @kubelet_version.setter - def kubelet_version(self, kubelet_version): - """Sets the kubelet_version of this V1NodeSystemInfo. - - Kubelet Version reported by the node. # noqa: E501 - - :param kubelet_version: The kubelet_version of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kubelet_version is None: # noqa: E501 - raise ValueError("Invalid value for `kubelet_version`, must not be `None`") # noqa: E501 - - self._kubelet_version = kubelet_version - - @property - def machine_id(self): - """Gets the machine_id of this V1NodeSystemInfo. # noqa: E501 - - MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html # noqa: E501 - - :return: The machine_id of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._machine_id - - @machine_id.setter - def machine_id(self, machine_id): - """Sets the machine_id of this V1NodeSystemInfo. - - MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html # noqa: E501 - - :param machine_id: The machine_id of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and machine_id is None: # noqa: E501 - raise ValueError("Invalid value for `machine_id`, must not be `None`") # noqa: E501 - - self._machine_id = machine_id - - @property - def operating_system(self): - """Gets the operating_system of this V1NodeSystemInfo. # noqa: E501 - - The Operating System reported by the node # noqa: E501 - - :return: The operating_system of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._operating_system - - @operating_system.setter - def operating_system(self, operating_system): - """Sets the operating_system of this V1NodeSystemInfo. - - The Operating System reported by the node # noqa: E501 - - :param operating_system: The operating_system of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and operating_system is None: # noqa: E501 - raise ValueError("Invalid value for `operating_system`, must not be `None`") # noqa: E501 - - self._operating_system = operating_system - - @property - def os_image(self): - """Gets the os_image of this V1NodeSystemInfo. # noqa: E501 - - OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). # noqa: E501 - - :return: The os_image of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._os_image - - @os_image.setter - def os_image(self, os_image): - """Sets the os_image of this V1NodeSystemInfo. - - OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). # noqa: E501 - - :param os_image: The os_image of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and os_image is None: # noqa: E501 - raise ValueError("Invalid value for `os_image`, must not be `None`") # noqa: E501 - - self._os_image = os_image - - @property - def system_uuid(self): - """Gets the system_uuid of this V1NodeSystemInfo. # noqa: E501 - - SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid # noqa: E501 - - :return: The system_uuid of this V1NodeSystemInfo. # noqa: E501 - :rtype: str - """ - return self._system_uuid - - @system_uuid.setter - def system_uuid(self, system_uuid): - """Sets the system_uuid of this V1NodeSystemInfo. - - SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid # noqa: E501 - - :param system_uuid: The system_uuid of this V1NodeSystemInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and system_uuid is None: # noqa: E501 - raise ValueError("Invalid value for `system_uuid`, must not be `None`") # noqa: E501 - - self._system_uuid = system_uuid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NodeSystemInfo): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NodeSystemInfo): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_attributes.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_attributes.py deleted file mode 100644 index 6705b3f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_attributes.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NonResourceAttributes(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'path': 'str', - 'verb': 'str' - } - - attribute_map = { - 'path': 'path', - 'verb': 'verb' - } - - def __init__(self, path=None, verb=None, local_vars_configuration=None): # noqa: E501 - """V1NonResourceAttributes - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._path = None - self._verb = None - self.discriminator = None - - if path is not None: - self.path = path - if verb is not None: - self.verb = verb - - @property - def path(self): - """Gets the path of this V1NonResourceAttributes. # noqa: E501 - - Path is the URL path of the request # noqa: E501 - - :return: The path of this V1NonResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1NonResourceAttributes. - - Path is the URL path of the request # noqa: E501 - - :param path: The path of this V1NonResourceAttributes. # noqa: E501 - :type: str - """ - - self._path = path - - @property - def verb(self): - """Gets the verb of this V1NonResourceAttributes. # noqa: E501 - - Verb is the standard HTTP verb # noqa: E501 - - :return: The verb of this V1NonResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._verb - - @verb.setter - def verb(self, verb): - """Sets the verb of this V1NonResourceAttributes. - - Verb is the standard HTTP verb # noqa: E501 - - :param verb: The verb of this V1NonResourceAttributes. # noqa: E501 - :type: str - """ - - self._verb = verb - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NonResourceAttributes): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NonResourceAttributes): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_policy_rule.py deleted file mode 100644 index 8eab638..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_policy_rule.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NonResourcePolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_ur_ls': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'non_resource_ur_ls': 'nonResourceURLs', - 'verbs': 'verbs' - } - - def __init__(self, non_resource_ur_ls=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1NonResourcePolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_ur_ls = None - self._verbs = None - self.discriminator = None - - self.non_resource_ur_ls = non_resource_ur_ls - self.verbs = verbs - - @property - def non_resource_ur_ls(self): - """Gets the non_resource_ur_ls of this V1NonResourcePolicyRule. # noqa: E501 - - `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example: - \"/healthz\" is legal - \"/hea*\" is illegal - \"/hea\" is legal but matches nothing - \"/hea/*\" also matches nothing - \"/healthz/*\" matches all per-component health checks. \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required. # noqa: E501 - - :return: The non_resource_ur_ls of this V1NonResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._non_resource_ur_ls - - @non_resource_ur_ls.setter - def non_resource_ur_ls(self, non_resource_ur_ls): - """Sets the non_resource_ur_ls of this V1NonResourcePolicyRule. - - `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example: - \"/healthz\" is legal - \"/hea*\" is illegal - \"/hea\" is legal but matches nothing - \"/hea/*\" also matches nothing - \"/healthz/*\" matches all per-component health checks. \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required. # noqa: E501 - - :param non_resource_ur_ls: The non_resource_ur_ls of this V1NonResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and non_resource_ur_ls is None: # noqa: E501 - raise ValueError("Invalid value for `non_resource_ur_ls`, must not be `None`") # noqa: E501 - - self._non_resource_ur_ls = non_resource_ur_ls - - @property - def verbs(self): - """Gets the verbs of this V1NonResourcePolicyRule. # noqa: E501 - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required. # noqa: E501 - - :return: The verbs of this V1NonResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1NonResourcePolicyRule. - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required. # noqa: E501 - - :param verbs: The verbs of this V1NonResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NonResourcePolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NonResourcePolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_rule.py deleted file mode 100644 index cd06edd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_non_resource_rule.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1NonResourceRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_ur_ls': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'non_resource_ur_ls': 'nonResourceURLs', - 'verbs': 'verbs' - } - - def __init__(self, non_resource_ur_ls=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1NonResourceRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_ur_ls = None - self._verbs = None - self.discriminator = None - - if non_resource_ur_ls is not None: - self.non_resource_ur_ls = non_resource_ur_ls - self.verbs = verbs - - @property - def non_resource_ur_ls(self): - """Gets the non_resource_ur_ls of this V1NonResourceRule. # noqa: E501 - - NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. \"*\" means all. # noqa: E501 - - :return: The non_resource_ur_ls of this V1NonResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._non_resource_ur_ls - - @non_resource_ur_ls.setter - def non_resource_ur_ls(self, non_resource_ur_ls): - """Sets the non_resource_ur_ls of this V1NonResourceRule. - - NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path. \"*\" means all. # noqa: E501 - - :param non_resource_ur_ls: The non_resource_ur_ls of this V1NonResourceRule. # noqa: E501 - :type: list[str] - """ - - self._non_resource_ur_ls = non_resource_ur_ls - - @property - def verbs(self): - """Gets the verbs of this V1NonResourceRule. # noqa: E501 - - Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all. # noqa: E501 - - :return: The verbs of this V1NonResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1NonResourceRule. - - Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all. # noqa: E501 - - :param verbs: The verbs of this V1NonResourceRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1NonResourceRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1NonResourceRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_field_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_field_selector.py deleted file mode 100644 index ba138a5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_field_selector.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ObjectFieldSelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'field_path': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'field_path': 'fieldPath' - } - - def __init__(self, api_version=None, field_path=None, local_vars_configuration=None): # noqa: E501 - """V1ObjectFieldSelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._field_path = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.field_path = field_path - - @property - def api_version(self): - """Gets the api_version of this V1ObjectFieldSelector. # noqa: E501 - - Version of the schema the FieldPath is written in terms of, defaults to \"v1\". # noqa: E501 - - :return: The api_version of this V1ObjectFieldSelector. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ObjectFieldSelector. - - Version of the schema the FieldPath is written in terms of, defaults to \"v1\". # noqa: E501 - - :param api_version: The api_version of this V1ObjectFieldSelector. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def field_path(self): - """Gets the field_path of this V1ObjectFieldSelector. # noqa: E501 - - Path of the field to select in the specified API version. # noqa: E501 - - :return: The field_path of this V1ObjectFieldSelector. # noqa: E501 - :rtype: str - """ - return self._field_path - - @field_path.setter - def field_path(self, field_path): - """Sets the field_path of this V1ObjectFieldSelector. - - Path of the field to select in the specified API version. # noqa: E501 - - :param field_path: The field_path of this V1ObjectFieldSelector. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and field_path is None: # noqa: E501 - raise ValueError("Invalid value for `field_path`, must not be `None`") # noqa: E501 - - self._field_path = field_path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ObjectFieldSelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ObjectFieldSelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_meta.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_meta.py deleted file mode 100644 index f0f085d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_meta.py +++ /dev/null @@ -1,514 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ObjectMeta(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'annotations': 'dict(str, str)', - 'creation_timestamp': 'datetime', - 'deletion_grace_period_seconds': 'int', - 'deletion_timestamp': 'datetime', - 'finalizers': 'list[str]', - 'generate_name': 'str', - 'generation': 'int', - 'labels': 'dict(str, str)', - 'managed_fields': 'list[V1ManagedFieldsEntry]', - 'name': 'str', - 'namespace': 'str', - 'owner_references': 'list[V1OwnerReference]', - 'resource_version': 'str', - 'self_link': 'str', - 'uid': 'str' - } - - attribute_map = { - 'annotations': 'annotations', - 'creation_timestamp': 'creationTimestamp', - 'deletion_grace_period_seconds': 'deletionGracePeriodSeconds', - 'deletion_timestamp': 'deletionTimestamp', - 'finalizers': 'finalizers', - 'generate_name': 'generateName', - 'generation': 'generation', - 'labels': 'labels', - 'managed_fields': 'managedFields', - 'name': 'name', - 'namespace': 'namespace', - 'owner_references': 'ownerReferences', - 'resource_version': 'resourceVersion', - 'self_link': 'selfLink', - 'uid': 'uid' - } - - def __init__(self, annotations=None, creation_timestamp=None, deletion_grace_period_seconds=None, deletion_timestamp=None, finalizers=None, generate_name=None, generation=None, labels=None, managed_fields=None, name=None, namespace=None, owner_references=None, resource_version=None, self_link=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1ObjectMeta - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._annotations = None - self._creation_timestamp = None - self._deletion_grace_period_seconds = None - self._deletion_timestamp = None - self._finalizers = None - self._generate_name = None - self._generation = None - self._labels = None - self._managed_fields = None - self._name = None - self._namespace = None - self._owner_references = None - self._resource_version = None - self._self_link = None - self._uid = None - self.discriminator = None - - if annotations is not None: - self.annotations = annotations - if creation_timestamp is not None: - self.creation_timestamp = creation_timestamp - if deletion_grace_period_seconds is not None: - self.deletion_grace_period_seconds = deletion_grace_period_seconds - if deletion_timestamp is not None: - self.deletion_timestamp = deletion_timestamp - if finalizers is not None: - self.finalizers = finalizers - if generate_name is not None: - self.generate_name = generate_name - if generation is not None: - self.generation = generation - if labels is not None: - self.labels = labels - if managed_fields is not None: - self.managed_fields = managed_fields - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if owner_references is not None: - self.owner_references = owner_references - if resource_version is not None: - self.resource_version = resource_version - if self_link is not None: - self.self_link = self_link - if uid is not None: - self.uid = uid - - @property - def annotations(self): - """Gets the annotations of this V1ObjectMeta. # noqa: E501 - - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations # noqa: E501 - - :return: The annotations of this V1ObjectMeta. # noqa: E501 - :rtype: dict(str, str) - """ - return self._annotations - - @annotations.setter - def annotations(self, annotations): - """Sets the annotations of this V1ObjectMeta. - - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations # noqa: E501 - - :param annotations: The annotations of this V1ObjectMeta. # noqa: E501 - :type: dict(str, str) - """ - - self._annotations = annotations - - @property - def creation_timestamp(self): - """Gets the creation_timestamp of this V1ObjectMeta. # noqa: E501 - - CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata # noqa: E501 - - :return: The creation_timestamp of this V1ObjectMeta. # noqa: E501 - :rtype: datetime - """ - return self._creation_timestamp - - @creation_timestamp.setter - def creation_timestamp(self, creation_timestamp): - """Sets the creation_timestamp of this V1ObjectMeta. - - CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata # noqa: E501 - - :param creation_timestamp: The creation_timestamp of this V1ObjectMeta. # noqa: E501 - :type: datetime - """ - - self._creation_timestamp = creation_timestamp - - @property - def deletion_grace_period_seconds(self): - """Gets the deletion_grace_period_seconds of this V1ObjectMeta. # noqa: E501 - - Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only. # noqa: E501 - - :return: The deletion_grace_period_seconds of this V1ObjectMeta. # noqa: E501 - :rtype: int - """ - return self._deletion_grace_period_seconds - - @deletion_grace_period_seconds.setter - def deletion_grace_period_seconds(self, deletion_grace_period_seconds): - """Sets the deletion_grace_period_seconds of this V1ObjectMeta. - - Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only. # noqa: E501 - - :param deletion_grace_period_seconds: The deletion_grace_period_seconds of this V1ObjectMeta. # noqa: E501 - :type: int - """ - - self._deletion_grace_period_seconds = deletion_grace_period_seconds - - @property - def deletion_timestamp(self): - """Gets the deletion_timestamp of this V1ObjectMeta. # noqa: E501 - - DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata # noqa: E501 - - :return: The deletion_timestamp of this V1ObjectMeta. # noqa: E501 - :rtype: datetime - """ - return self._deletion_timestamp - - @deletion_timestamp.setter - def deletion_timestamp(self, deletion_timestamp): - """Sets the deletion_timestamp of this V1ObjectMeta. - - DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata # noqa: E501 - - :param deletion_timestamp: The deletion_timestamp of this V1ObjectMeta. # noqa: E501 - :type: datetime - """ - - self._deletion_timestamp = deletion_timestamp - - @property - def finalizers(self): - """Gets the finalizers of this V1ObjectMeta. # noqa: E501 - - Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list. # noqa: E501 - - :return: The finalizers of this V1ObjectMeta. # noqa: E501 - :rtype: list[str] - """ - return self._finalizers - - @finalizers.setter - def finalizers(self, finalizers): - """Sets the finalizers of this V1ObjectMeta. - - Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list. # noqa: E501 - - :param finalizers: The finalizers of this V1ObjectMeta. # noqa: E501 - :type: list[str] - """ - - self._finalizers = finalizers - - @property - def generate_name(self): - """Gets the generate_name of this V1ObjectMeta. # noqa: E501 - - GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will return a 409. Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency # noqa: E501 - - :return: The generate_name of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._generate_name - - @generate_name.setter - def generate_name(self, generate_name): - """Sets the generate_name of this V1ObjectMeta. - - GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will return a 409. Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency # noqa: E501 - - :param generate_name: The generate_name of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._generate_name = generate_name - - @property - def generation(self): - """Gets the generation of this V1ObjectMeta. # noqa: E501 - - A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. # noqa: E501 - - :return: The generation of this V1ObjectMeta. # noqa: E501 - :rtype: int - """ - return self._generation - - @generation.setter - def generation(self, generation): - """Sets the generation of this V1ObjectMeta. - - A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. # noqa: E501 - - :param generation: The generation of this V1ObjectMeta. # noqa: E501 - :type: int - """ - - self._generation = generation - - @property - def labels(self): - """Gets the labels of this V1ObjectMeta. # noqa: E501 - - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels # noqa: E501 - - :return: The labels of this V1ObjectMeta. # noqa: E501 - :rtype: dict(str, str) - """ - return self._labels - - @labels.setter - def labels(self, labels): - """Sets the labels of this V1ObjectMeta. - - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels # noqa: E501 - - :param labels: The labels of this V1ObjectMeta. # noqa: E501 - :type: dict(str, str) - """ - - self._labels = labels - - @property - def managed_fields(self): - """Gets the managed_fields of this V1ObjectMeta. # noqa: E501 - - ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object. # noqa: E501 - - :return: The managed_fields of this V1ObjectMeta. # noqa: E501 - :rtype: list[V1ManagedFieldsEntry] - """ - return self._managed_fields - - @managed_fields.setter - def managed_fields(self, managed_fields): - """Sets the managed_fields of this V1ObjectMeta. - - ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object. # noqa: E501 - - :param managed_fields: The managed_fields of this V1ObjectMeta. # noqa: E501 - :type: list[V1ManagedFieldsEntry] - """ - - self._managed_fields = managed_fields - - @property - def name(self): - """Gets the name of this V1ObjectMeta. # noqa: E501 - - Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names # noqa: E501 - - :return: The name of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ObjectMeta. - - Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names # noqa: E501 - - :param name: The name of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1ObjectMeta. # noqa: E501 - - Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces # noqa: E501 - - :return: The namespace of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1ObjectMeta. - - Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces # noqa: E501 - - :param namespace: The namespace of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def owner_references(self): - """Gets the owner_references of this V1ObjectMeta. # noqa: E501 - - List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. # noqa: E501 - - :return: The owner_references of this V1ObjectMeta. # noqa: E501 - :rtype: list[V1OwnerReference] - """ - return self._owner_references - - @owner_references.setter - def owner_references(self, owner_references): - """Sets the owner_references of this V1ObjectMeta. - - List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. # noqa: E501 - - :param owner_references: The owner_references of this V1ObjectMeta. # noqa: E501 - :type: list[V1OwnerReference] - """ - - self._owner_references = owner_references - - @property - def resource_version(self): - """Gets the resource_version of this V1ObjectMeta. # noqa: E501 - - An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :return: The resource_version of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._resource_version - - @resource_version.setter - def resource_version(self, resource_version): - """Sets the resource_version of this V1ObjectMeta. - - An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :param resource_version: The resource_version of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._resource_version = resource_version - - @property - def self_link(self): - """Gets the self_link of this V1ObjectMeta. # noqa: E501 - - Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. # noqa: E501 - - :return: The self_link of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._self_link - - @self_link.setter - def self_link(self, self_link): - """Sets the self_link of this V1ObjectMeta. - - Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. # noqa: E501 - - :param self_link: The self_link of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._self_link = self_link - - @property - def uid(self): - """Gets the uid of this V1ObjectMeta. # noqa: E501 - - UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :return: The uid of this V1ObjectMeta. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1ObjectMeta. - - UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :param uid: The uid of this V1ObjectMeta. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ObjectMeta): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ObjectMeta): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_reference.py deleted file mode 100644 index 1baf7f6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_object_reference.py +++ /dev/null @@ -1,290 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'field_path': 'str', - 'kind': 'str', - 'name': 'str', - 'namespace': 'str', - 'resource_version': 'str', - 'uid': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'field_path': 'fieldPath', - 'kind': 'kind', - 'name': 'name', - 'namespace': 'namespace', - 'resource_version': 'resourceVersion', - 'uid': 'uid' - } - - def __init__(self, api_version=None, field_path=None, kind=None, name=None, namespace=None, resource_version=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1ObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._field_path = None - self._kind = None - self._name = None - self._namespace = None - self._resource_version = None - self._uid = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if field_path is not None: - self.field_path = field_path - if kind is not None: - self.kind = kind - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if resource_version is not None: - self.resource_version = resource_version - if uid is not None: - self.uid = uid - - @property - def api_version(self): - """Gets the api_version of this V1ObjectReference. # noqa: E501 - - API version of the referent. # noqa: E501 - - :return: The api_version of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ObjectReference. - - API version of the referent. # noqa: E501 - - :param api_version: The api_version of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def field_path(self): - """Gets the field_path of this V1ObjectReference. # noqa: E501 - - If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. # noqa: E501 - - :return: The field_path of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._field_path - - @field_path.setter - def field_path(self, field_path): - """Sets the field_path of this V1ObjectReference. - - If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. # noqa: E501 - - :param field_path: The field_path of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._field_path = field_path - - @property - def kind(self): - """Gets the kind of this V1ObjectReference. # noqa: E501 - - Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ObjectReference. - - Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1ObjectReference. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ObjectReference. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1ObjectReference. # noqa: E501 - - Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ # noqa: E501 - - :return: The namespace of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1ObjectReference. - - Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ # noqa: E501 - - :param namespace: The namespace of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def resource_version(self): - """Gets the resource_version of this V1ObjectReference. # noqa: E501 - - Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :return: The resource_version of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._resource_version - - @resource_version.setter - def resource_version(self, resource_version): - """Sets the resource_version of this V1ObjectReference. - - Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency # noqa: E501 - - :param resource_version: The resource_version of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._resource_version = resource_version - - @property - def uid(self): - """Gets the uid of this V1ObjectReference. # noqa: E501 - - UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids # noqa: E501 - - :return: The uid of this V1ObjectReference. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1ObjectReference. - - UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids # noqa: E501 - - :param uid: The uid of this V1ObjectReference. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_overhead.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_overhead.py deleted file mode 100644 index bb1bbd6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_overhead.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Overhead(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'pod_fixed': 'dict(str, str)' - } - - attribute_map = { - 'pod_fixed': 'podFixed' - } - - def __init__(self, pod_fixed=None, local_vars_configuration=None): # noqa: E501 - """V1Overhead - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._pod_fixed = None - self.discriminator = None - - if pod_fixed is not None: - self.pod_fixed = pod_fixed - - @property - def pod_fixed(self): - """Gets the pod_fixed of this V1Overhead. # noqa: E501 - - podFixed represents the fixed resource overhead associated with running a pod. # noqa: E501 - - :return: The pod_fixed of this V1Overhead. # noqa: E501 - :rtype: dict(str, str) - """ - return self._pod_fixed - - @pod_fixed.setter - def pod_fixed(self, pod_fixed): - """Sets the pod_fixed of this V1Overhead. - - podFixed represents the fixed resource overhead associated with running a pod. # noqa: E501 - - :param pod_fixed: The pod_fixed of this V1Overhead. # noqa: E501 - :type: dict(str, str) - """ - - self._pod_fixed = pod_fixed - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Overhead): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Overhead): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_owner_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_owner_reference.py deleted file mode 100644 index bba5da9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_owner_reference.py +++ /dev/null @@ -1,266 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1OwnerReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'block_owner_deletion': 'bool', - 'controller': 'bool', - 'kind': 'str', - 'name': 'str', - 'uid': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'block_owner_deletion': 'blockOwnerDeletion', - 'controller': 'controller', - 'kind': 'kind', - 'name': 'name', - 'uid': 'uid' - } - - def __init__(self, api_version=None, block_owner_deletion=None, controller=None, kind=None, name=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1OwnerReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._block_owner_deletion = None - self._controller = None - self._kind = None - self._name = None - self._uid = None - self.discriminator = None - - self.api_version = api_version - if block_owner_deletion is not None: - self.block_owner_deletion = block_owner_deletion - if controller is not None: - self.controller = controller - self.kind = kind - self.name = name - self.uid = uid - - @property - def api_version(self): - """Gets the api_version of this V1OwnerReference. # noqa: E501 - - API version of the referent. # noqa: E501 - - :return: The api_version of this V1OwnerReference. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1OwnerReference. - - API version of the referent. # noqa: E501 - - :param api_version: The api_version of this V1OwnerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and api_version is None: # noqa: E501 - raise ValueError("Invalid value for `api_version`, must not be `None`") # noqa: E501 - - self._api_version = api_version - - @property - def block_owner_deletion(self): - """Gets the block_owner_deletion of this V1OwnerReference. # noqa: E501 - - If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. # noqa: E501 - - :return: The block_owner_deletion of this V1OwnerReference. # noqa: E501 - :rtype: bool - """ - return self._block_owner_deletion - - @block_owner_deletion.setter - def block_owner_deletion(self, block_owner_deletion): - """Sets the block_owner_deletion of this V1OwnerReference. - - If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. # noqa: E501 - - :param block_owner_deletion: The block_owner_deletion of this V1OwnerReference. # noqa: E501 - :type: bool - """ - - self._block_owner_deletion = block_owner_deletion - - @property - def controller(self): - """Gets the controller of this V1OwnerReference. # noqa: E501 - - If true, this reference points to the managing controller. # noqa: E501 - - :return: The controller of this V1OwnerReference. # noqa: E501 - :rtype: bool - """ - return self._controller - - @controller.setter - def controller(self, controller): - """Sets the controller of this V1OwnerReference. - - If true, this reference points to the managing controller. # noqa: E501 - - :param controller: The controller of this V1OwnerReference. # noqa: E501 - :type: bool - """ - - self._controller = controller - - @property - def kind(self): - """Gets the kind of this V1OwnerReference. # noqa: E501 - - Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1OwnerReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1OwnerReference. - - Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1OwnerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1OwnerReference. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names # noqa: E501 - - :return: The name of this V1OwnerReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1OwnerReference. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names # noqa: E501 - - :param name: The name of this V1OwnerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def uid(self): - """Gets the uid of this V1OwnerReference. # noqa: E501 - - UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :return: The uid of this V1OwnerReference. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1OwnerReference. - - UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :param uid: The uid of this V1OwnerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and uid is None: # noqa: E501 - raise ValueError("Invalid value for `uid`, must not be `None`") # noqa: E501 - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1OwnerReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1OwnerReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume.py deleted file mode 100644 index e3a617b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolume(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PersistentVolumeSpec', - 'status': 'V1PersistentVolumeStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolume - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1PersistentVolume. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PersistentVolume. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PersistentVolume. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PersistentVolume. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1PersistentVolume. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PersistentVolume. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PersistentVolume. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PersistentVolume. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PersistentVolume. # noqa: E501 - - - :return: The metadata of this V1PersistentVolume. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PersistentVolume. - - - :param metadata: The metadata of this V1PersistentVolume. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PersistentVolume. # noqa: E501 - - - :return: The spec of this V1PersistentVolume. # noqa: E501 - :rtype: V1PersistentVolumeSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PersistentVolume. - - - :param spec: The spec of this V1PersistentVolume. # noqa: E501 - :type: V1PersistentVolumeSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1PersistentVolume. # noqa: E501 - - - :return: The status of this V1PersistentVolume. # noqa: E501 - :rtype: V1PersistentVolumeStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PersistentVolume. - - - :param status: The status of this V1PersistentVolume. # noqa: E501 - :type: V1PersistentVolumeStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolume): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolume): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim.py deleted file mode 100644 index 9cf3a8d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaim(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PersistentVolumeClaimSpec', - 'status': 'V1PersistentVolumeClaimStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaim - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1PersistentVolumeClaim. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PersistentVolumeClaim. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PersistentVolumeClaim. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PersistentVolumeClaim. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1PersistentVolumeClaim. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PersistentVolumeClaim. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PersistentVolumeClaim. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PersistentVolumeClaim. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PersistentVolumeClaim. # noqa: E501 - - - :return: The metadata of this V1PersistentVolumeClaim. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PersistentVolumeClaim. - - - :param metadata: The metadata of this V1PersistentVolumeClaim. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PersistentVolumeClaim. # noqa: E501 - - - :return: The spec of this V1PersistentVolumeClaim. # noqa: E501 - :rtype: V1PersistentVolumeClaimSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PersistentVolumeClaim. - - - :param spec: The spec of this V1PersistentVolumeClaim. # noqa: E501 - :type: V1PersistentVolumeClaimSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1PersistentVolumeClaim. # noqa: E501 - - - :return: The status of this V1PersistentVolumeClaim. # noqa: E501 - :rtype: V1PersistentVolumeClaimStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PersistentVolumeClaim. - - - :param status: The status of this V1PersistentVolumeClaim. # noqa: E501 - :type: V1PersistentVolumeClaimStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaim): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaim): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_condition.py deleted file mode 100644 index 118f361..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_condition.py +++ /dev/null @@ -1,260 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_probe_time': 'datetime', - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_probe_time': 'lastProbeTime', - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_probe_time=None, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_probe_time = None - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_probe_time is not None: - self.last_probe_time = last_probe_time - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_probe_time(self): - """Gets the last_probe_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - - lastProbeTime is the time we probed the condition. # noqa: E501 - - :return: The last_probe_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_probe_time - - @last_probe_time.setter - def last_probe_time(self, last_probe_time): - """Sets the last_probe_time of this V1PersistentVolumeClaimCondition. - - lastProbeTime is the time we probed the condition. # noqa: E501 - - :param last_probe_time: The last_probe_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: datetime - """ - - self._last_probe_time = last_probe_time - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - - lastTransitionTime is the time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1PersistentVolumeClaimCondition. - - lastTransitionTime is the time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1PersistentVolumeClaimCondition. # noqa: E501 - - message is the human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1PersistentVolumeClaimCondition. - - message is the human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1PersistentVolumeClaimCondition. # noqa: E501 - - reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized. # noqa: E501 - - :return: The reason of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1PersistentVolumeClaimCondition. - - reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized. # noqa: E501 - - :param reason: The reason of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1PersistentVolumeClaimCondition. # noqa: E501 - - - :return: The status of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PersistentVolumeClaimCondition. - - - :param status: The status of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1PersistentVolumeClaimCondition. # noqa: E501 - - - :return: The type of this V1PersistentVolumeClaimCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1PersistentVolumeClaimCondition. - - - :param type: The type of this V1PersistentVolumeClaimCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_list.py deleted file mode 100644 index a96eb32..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PersistentVolumeClaim]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PersistentVolumeClaimList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PersistentVolumeClaimList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PersistentVolumeClaimList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PersistentVolumeClaimList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PersistentVolumeClaimList. # noqa: E501 - - items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims # noqa: E501 - - :return: The items of this V1PersistentVolumeClaimList. # noqa: E501 - :rtype: list[V1PersistentVolumeClaim] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PersistentVolumeClaimList. - - items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims # noqa: E501 - - :param items: The items of this V1PersistentVolumeClaimList. # noqa: E501 - :type: list[V1PersistentVolumeClaim] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PersistentVolumeClaimList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PersistentVolumeClaimList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PersistentVolumeClaimList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PersistentVolumeClaimList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PersistentVolumeClaimList. # noqa: E501 - - - :return: The metadata of this V1PersistentVolumeClaimList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PersistentVolumeClaimList. - - - :param metadata: The metadata of this V1PersistentVolumeClaimList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_spec.py deleted file mode 100644 index aa421ae..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_spec.py +++ /dev/null @@ -1,338 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'access_modes': 'list[str]', - 'data_source': 'V1TypedLocalObjectReference', - 'data_source_ref': 'V1TypedObjectReference', - 'resources': 'V1VolumeResourceRequirements', - 'selector': 'V1LabelSelector', - 'storage_class_name': 'str', - 'volume_attributes_class_name': 'str', - 'volume_mode': 'str', - 'volume_name': 'str' - } - - attribute_map = { - 'access_modes': 'accessModes', - 'data_source': 'dataSource', - 'data_source_ref': 'dataSourceRef', - 'resources': 'resources', - 'selector': 'selector', - 'storage_class_name': 'storageClassName', - 'volume_attributes_class_name': 'volumeAttributesClassName', - 'volume_mode': 'volumeMode', - 'volume_name': 'volumeName' - } - - def __init__(self, access_modes=None, data_source=None, data_source_ref=None, resources=None, selector=None, storage_class_name=None, volume_attributes_class_name=None, volume_mode=None, volume_name=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._access_modes = None - self._data_source = None - self._data_source_ref = None - self._resources = None - self._selector = None - self._storage_class_name = None - self._volume_attributes_class_name = None - self._volume_mode = None - self._volume_name = None - self.discriminator = None - - if access_modes is not None: - self.access_modes = access_modes - if data_source is not None: - self.data_source = data_source - if data_source_ref is not None: - self.data_source_ref = data_source_ref - if resources is not None: - self.resources = resources - if selector is not None: - self.selector = selector - if storage_class_name is not None: - self.storage_class_name = storage_class_name - if volume_attributes_class_name is not None: - self.volume_attributes_class_name = volume_attributes_class_name - if volume_mode is not None: - self.volume_mode = volume_mode - if volume_name is not None: - self.volume_name = volume_name - - @property - def access_modes(self): - """Gets the access_modes of this V1PersistentVolumeClaimSpec. # noqa: E501 - - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 # noqa: E501 - - :return: The access_modes of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: list[str] - """ - return self._access_modes - - @access_modes.setter - def access_modes(self, access_modes): - """Sets the access_modes of this V1PersistentVolumeClaimSpec. - - accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 # noqa: E501 - - :param access_modes: The access_modes of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: list[str] - """ - - self._access_modes = access_modes - - @property - def data_source(self): - """Gets the data_source of this V1PersistentVolumeClaimSpec. # noqa: E501 - - - :return: The data_source of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: V1TypedLocalObjectReference - """ - return self._data_source - - @data_source.setter - def data_source(self, data_source): - """Sets the data_source of this V1PersistentVolumeClaimSpec. - - - :param data_source: The data_source of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: V1TypedLocalObjectReference - """ - - self._data_source = data_source - - @property - def data_source_ref(self): - """Gets the data_source_ref of this V1PersistentVolumeClaimSpec. # noqa: E501 - - - :return: The data_source_ref of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: V1TypedObjectReference - """ - return self._data_source_ref - - @data_source_ref.setter - def data_source_ref(self, data_source_ref): - """Sets the data_source_ref of this V1PersistentVolumeClaimSpec. - - - :param data_source_ref: The data_source_ref of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: V1TypedObjectReference - """ - - self._data_source_ref = data_source_ref - - @property - def resources(self): - """Gets the resources of this V1PersistentVolumeClaimSpec. # noqa: E501 - - - :return: The resources of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: V1VolumeResourceRequirements - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1PersistentVolumeClaimSpec. - - - :param resources: The resources of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: V1VolumeResourceRequirements - """ - - self._resources = resources - - @property - def selector(self): - """Gets the selector of this V1PersistentVolumeClaimSpec. # noqa: E501 - - - :return: The selector of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1PersistentVolumeClaimSpec. - - - :param selector: The selector of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - @property - def storage_class_name(self): - """Gets the storage_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 # noqa: E501 - - :return: The storage_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: str - """ - return self._storage_class_name - - @storage_class_name.setter - def storage_class_name(self, storage_class_name): - """Sets the storage_class_name of this V1PersistentVolumeClaimSpec. - - storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 # noqa: E501 - - :param storage_class_name: The storage_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: str - """ - - self._storage_class_name = storage_class_name - - @property - def volume_attributes_class_name(self): - """Gets the volume_attributes_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. # noqa: E501 - - :return: The volume_attributes_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: str - """ - return self._volume_attributes_class_name - - @volume_attributes_class_name.setter - def volume_attributes_class_name(self, volume_attributes_class_name): - """Sets the volume_attributes_class_name of this V1PersistentVolumeClaimSpec. - - volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. # noqa: E501 - - :param volume_attributes_class_name: The volume_attributes_class_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: str - """ - - self._volume_attributes_class_name = volume_attributes_class_name - - @property - def volume_mode(self): - """Gets the volume_mode of this V1PersistentVolumeClaimSpec. # noqa: E501 - - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. # noqa: E501 - - :return: The volume_mode of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: str - """ - return self._volume_mode - - @volume_mode.setter - def volume_mode(self, volume_mode): - """Sets the volume_mode of this V1PersistentVolumeClaimSpec. - - volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. # noqa: E501 - - :param volume_mode: The volume_mode of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: str - """ - - self._volume_mode = volume_mode - - @property - def volume_name(self): - """Gets the volume_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - - volumeName is the binding reference to the PersistentVolume backing this claim. # noqa: E501 - - :return: The volume_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :rtype: str - """ - return self._volume_name - - @volume_name.setter - def volume_name(self, volume_name): - """Sets the volume_name of this V1PersistentVolumeClaimSpec. - - volumeName is the binding reference to the PersistentVolume backing this claim. # noqa: E501 - - :param volume_name: The volume_name of this V1PersistentVolumeClaimSpec. # noqa: E501 - :type: str - """ - - self._volume_name = volume_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_status.py deleted file mode 100644 index 411a25f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_status.py +++ /dev/null @@ -1,316 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'access_modes': 'list[str]', - 'allocated_resource_statuses': 'dict(str, str)', - 'allocated_resources': 'dict(str, str)', - 'capacity': 'dict(str, str)', - 'conditions': 'list[V1PersistentVolumeClaimCondition]', - 'current_volume_attributes_class_name': 'str', - 'modify_volume_status': 'V1ModifyVolumeStatus', - 'phase': 'str' - } - - attribute_map = { - 'access_modes': 'accessModes', - 'allocated_resource_statuses': 'allocatedResourceStatuses', - 'allocated_resources': 'allocatedResources', - 'capacity': 'capacity', - 'conditions': 'conditions', - 'current_volume_attributes_class_name': 'currentVolumeAttributesClassName', - 'modify_volume_status': 'modifyVolumeStatus', - 'phase': 'phase' - } - - def __init__(self, access_modes=None, allocated_resource_statuses=None, allocated_resources=None, capacity=None, conditions=None, current_volume_attributes_class_name=None, modify_volume_status=None, phase=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._access_modes = None - self._allocated_resource_statuses = None - self._allocated_resources = None - self._capacity = None - self._conditions = None - self._current_volume_attributes_class_name = None - self._modify_volume_status = None - self._phase = None - self.discriminator = None - - if access_modes is not None: - self.access_modes = access_modes - if allocated_resource_statuses is not None: - self.allocated_resource_statuses = allocated_resource_statuses - if allocated_resources is not None: - self.allocated_resources = allocated_resources - if capacity is not None: - self.capacity = capacity - if conditions is not None: - self.conditions = conditions - if current_volume_attributes_class_name is not None: - self.current_volume_attributes_class_name = current_volume_attributes_class_name - if modify_volume_status is not None: - self.modify_volume_status = modify_volume_status - if phase is not None: - self.phase = phase - - @property - def access_modes(self): - """Gets the access_modes of this V1PersistentVolumeClaimStatus. # noqa: E501 - - accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 # noqa: E501 - - :return: The access_modes of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: list[str] - """ - return self._access_modes - - @access_modes.setter - def access_modes(self, access_modes): - """Sets the access_modes of this V1PersistentVolumeClaimStatus. - - accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 # noqa: E501 - - :param access_modes: The access_modes of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: list[str] - """ - - self._access_modes = access_modes - - @property - def allocated_resource_statuses(self): - """Gets the allocated_resource_statuses of this V1PersistentVolumeClaimStatus. # noqa: E501 - - allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. # noqa: E501 - - :return: The allocated_resource_statuses of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._allocated_resource_statuses - - @allocated_resource_statuses.setter - def allocated_resource_statuses(self, allocated_resource_statuses): - """Sets the allocated_resource_statuses of this V1PersistentVolumeClaimStatus. - - allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. # noqa: E501 - - :param allocated_resource_statuses: The allocated_resource_statuses of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._allocated_resource_statuses = allocated_resource_statuses - - @property - def allocated_resources(self): - """Gets the allocated_resources of this V1PersistentVolumeClaimStatus. # noqa: E501 - - allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. # noqa: E501 - - :return: The allocated_resources of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._allocated_resources - - @allocated_resources.setter - def allocated_resources(self, allocated_resources): - """Sets the allocated_resources of this V1PersistentVolumeClaimStatus. - - allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. # noqa: E501 - - :param allocated_resources: The allocated_resources of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._allocated_resources = allocated_resources - - @property - def capacity(self): - """Gets the capacity of this V1PersistentVolumeClaimStatus. # noqa: E501 - - capacity represents the actual resources of the underlying volume. # noqa: E501 - - :return: The capacity of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._capacity - - @capacity.setter - def capacity(self, capacity): - """Sets the capacity of this V1PersistentVolumeClaimStatus. - - capacity represents the actual resources of the underlying volume. # noqa: E501 - - :param capacity: The capacity of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._capacity = capacity - - @property - def conditions(self): - """Gets the conditions of this V1PersistentVolumeClaimStatus. # noqa: E501 - - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. # noqa: E501 - - :return: The conditions of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: list[V1PersistentVolumeClaimCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1PersistentVolumeClaimStatus. - - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. # noqa: E501 - - :param conditions: The conditions of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: list[V1PersistentVolumeClaimCondition] - """ - - self._conditions = conditions - - @property - def current_volume_attributes_class_name(self): - """Gets the current_volume_attributes_class_name of this V1PersistentVolumeClaimStatus. # noqa: E501 - - currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is an alpha field and requires enabling VolumeAttributesClass feature. # noqa: E501 - - :return: The current_volume_attributes_class_name of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: str - """ - return self._current_volume_attributes_class_name - - @current_volume_attributes_class_name.setter - def current_volume_attributes_class_name(self, current_volume_attributes_class_name): - """Sets the current_volume_attributes_class_name of this V1PersistentVolumeClaimStatus. - - currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is an alpha field and requires enabling VolumeAttributesClass feature. # noqa: E501 - - :param current_volume_attributes_class_name: The current_volume_attributes_class_name of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: str - """ - - self._current_volume_attributes_class_name = current_volume_attributes_class_name - - @property - def modify_volume_status(self): - """Gets the modify_volume_status of this V1PersistentVolumeClaimStatus. # noqa: E501 - - - :return: The modify_volume_status of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: V1ModifyVolumeStatus - """ - return self._modify_volume_status - - @modify_volume_status.setter - def modify_volume_status(self, modify_volume_status): - """Sets the modify_volume_status of this V1PersistentVolumeClaimStatus. - - - :param modify_volume_status: The modify_volume_status of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: V1ModifyVolumeStatus - """ - - self._modify_volume_status = modify_volume_status - - @property - def phase(self): - """Gets the phase of this V1PersistentVolumeClaimStatus. # noqa: E501 - - phase represents the current phase of PersistentVolumeClaim. # noqa: E501 - - :return: The phase of this V1PersistentVolumeClaimStatus. # noqa: E501 - :rtype: str - """ - return self._phase - - @phase.setter - def phase(self, phase): - """Sets the phase of this V1PersistentVolumeClaimStatus. - - phase represents the current phase of PersistentVolumeClaim. # noqa: E501 - - :param phase: The phase of this V1PersistentVolumeClaimStatus. # noqa: E501 - :type: str - """ - - self._phase = phase - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_template.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_template.py deleted file mode 100644 index 0a14d3b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_template.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimTemplate(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PersistentVolumeClaimSpec' - } - - attribute_map = { - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimTemplate - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metadata = None - self._spec = None - self.discriminator = None - - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def metadata(self): - """Gets the metadata of this V1PersistentVolumeClaimTemplate. # noqa: E501 - - - :return: The metadata of this V1PersistentVolumeClaimTemplate. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PersistentVolumeClaimTemplate. - - - :param metadata: The metadata of this V1PersistentVolumeClaimTemplate. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PersistentVolumeClaimTemplate. # noqa: E501 - - - :return: The spec of this V1PersistentVolumeClaimTemplate. # noqa: E501 - :rtype: V1PersistentVolumeClaimSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PersistentVolumeClaimTemplate. - - - :param spec: The spec of this V1PersistentVolumeClaimTemplate. # noqa: E501 - :type: V1PersistentVolumeClaimSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimTemplate): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimTemplate): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_volume_source.py deleted file mode 100644 index eaaa311..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_claim_volume_source.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeClaimVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'claim_name': 'str', - 'read_only': 'bool' - } - - attribute_map = { - 'claim_name': 'claimName', - 'read_only': 'readOnly' - } - - def __init__(self, claim_name=None, read_only=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeClaimVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._claim_name = None - self._read_only = None - self.discriminator = None - - self.claim_name = claim_name - if read_only is not None: - self.read_only = read_only - - @property - def claim_name(self): - """Gets the claim_name of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims # noqa: E501 - - :return: The claim_name of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - :rtype: str - """ - return self._claim_name - - @claim_name.setter - def claim_name(self, claim_name): - """Sets the claim_name of this V1PersistentVolumeClaimVolumeSource. - - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims # noqa: E501 - - :param claim_name: The claim_name of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and claim_name is None: # noqa: E501 - raise ValueError("Invalid value for `claim_name`, must not be `None`") # noqa: E501 - - self._claim_name = claim_name - - @property - def read_only(self): - """Gets the read_only of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. # noqa: E501 - - :return: The read_only of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1PersistentVolumeClaimVolumeSource. - - readOnly Will force the ReadOnly setting in VolumeMounts. Default false. # noqa: E501 - - :param read_only: The read_only of this V1PersistentVolumeClaimVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeClaimVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeClaimVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_list.py deleted file mode 100644 index 1257467..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PersistentVolume]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PersistentVolumeList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PersistentVolumeList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PersistentVolumeList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PersistentVolumeList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PersistentVolumeList. # noqa: E501 - - items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes # noqa: E501 - - :return: The items of this V1PersistentVolumeList. # noqa: E501 - :rtype: list[V1PersistentVolume] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PersistentVolumeList. - - items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes # noqa: E501 - - :param items: The items of this V1PersistentVolumeList. # noqa: E501 - :type: list[V1PersistentVolume] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PersistentVolumeList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PersistentVolumeList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PersistentVolumeList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PersistentVolumeList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PersistentVolumeList. # noqa: E501 - - - :return: The metadata of this V1PersistentVolumeList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PersistentVolumeList. - - - :param metadata: The metadata of this V1PersistentVolumeList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_spec.py deleted file mode 100644 index 7c5eb3c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_spec.py +++ /dev/null @@ -1,914 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'access_modes': 'list[str]', - 'aws_elastic_block_store': 'V1AWSElasticBlockStoreVolumeSource', - 'azure_disk': 'V1AzureDiskVolumeSource', - 'azure_file': 'V1AzureFilePersistentVolumeSource', - 'capacity': 'dict(str, str)', - 'cephfs': 'V1CephFSPersistentVolumeSource', - 'cinder': 'V1CinderPersistentVolumeSource', - 'claim_ref': 'V1ObjectReference', - 'csi': 'V1CSIPersistentVolumeSource', - 'fc': 'V1FCVolumeSource', - 'flex_volume': 'V1FlexPersistentVolumeSource', - 'flocker': 'V1FlockerVolumeSource', - 'gce_persistent_disk': 'V1GCEPersistentDiskVolumeSource', - 'glusterfs': 'V1GlusterfsPersistentVolumeSource', - 'host_path': 'V1HostPathVolumeSource', - 'iscsi': 'V1ISCSIPersistentVolumeSource', - 'local': 'V1LocalVolumeSource', - 'mount_options': 'list[str]', - 'nfs': 'V1NFSVolumeSource', - 'node_affinity': 'V1VolumeNodeAffinity', - 'persistent_volume_reclaim_policy': 'str', - 'photon_persistent_disk': 'V1PhotonPersistentDiskVolumeSource', - 'portworx_volume': 'V1PortworxVolumeSource', - 'quobyte': 'V1QuobyteVolumeSource', - 'rbd': 'V1RBDPersistentVolumeSource', - 'scale_io': 'V1ScaleIOPersistentVolumeSource', - 'storage_class_name': 'str', - 'storageos': 'V1StorageOSPersistentVolumeSource', - 'volume_attributes_class_name': 'str', - 'volume_mode': 'str', - 'vsphere_volume': 'V1VsphereVirtualDiskVolumeSource' - } - - attribute_map = { - 'access_modes': 'accessModes', - 'aws_elastic_block_store': 'awsElasticBlockStore', - 'azure_disk': 'azureDisk', - 'azure_file': 'azureFile', - 'capacity': 'capacity', - 'cephfs': 'cephfs', - 'cinder': 'cinder', - 'claim_ref': 'claimRef', - 'csi': 'csi', - 'fc': 'fc', - 'flex_volume': 'flexVolume', - 'flocker': 'flocker', - 'gce_persistent_disk': 'gcePersistentDisk', - 'glusterfs': 'glusterfs', - 'host_path': 'hostPath', - 'iscsi': 'iscsi', - 'local': 'local', - 'mount_options': 'mountOptions', - 'nfs': 'nfs', - 'node_affinity': 'nodeAffinity', - 'persistent_volume_reclaim_policy': 'persistentVolumeReclaimPolicy', - 'photon_persistent_disk': 'photonPersistentDisk', - 'portworx_volume': 'portworxVolume', - 'quobyte': 'quobyte', - 'rbd': 'rbd', - 'scale_io': 'scaleIO', - 'storage_class_name': 'storageClassName', - 'storageos': 'storageos', - 'volume_attributes_class_name': 'volumeAttributesClassName', - 'volume_mode': 'volumeMode', - 'vsphere_volume': 'vsphereVolume' - } - - def __init__(self, access_modes=None, aws_elastic_block_store=None, azure_disk=None, azure_file=None, capacity=None, cephfs=None, cinder=None, claim_ref=None, csi=None, fc=None, flex_volume=None, flocker=None, gce_persistent_disk=None, glusterfs=None, host_path=None, iscsi=None, local=None, mount_options=None, nfs=None, node_affinity=None, persistent_volume_reclaim_policy=None, photon_persistent_disk=None, portworx_volume=None, quobyte=None, rbd=None, scale_io=None, storage_class_name=None, storageos=None, volume_attributes_class_name=None, volume_mode=None, vsphere_volume=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._access_modes = None - self._aws_elastic_block_store = None - self._azure_disk = None - self._azure_file = None - self._capacity = None - self._cephfs = None - self._cinder = None - self._claim_ref = None - self._csi = None - self._fc = None - self._flex_volume = None - self._flocker = None - self._gce_persistent_disk = None - self._glusterfs = None - self._host_path = None - self._iscsi = None - self._local = None - self._mount_options = None - self._nfs = None - self._node_affinity = None - self._persistent_volume_reclaim_policy = None - self._photon_persistent_disk = None - self._portworx_volume = None - self._quobyte = None - self._rbd = None - self._scale_io = None - self._storage_class_name = None - self._storageos = None - self._volume_attributes_class_name = None - self._volume_mode = None - self._vsphere_volume = None - self.discriminator = None - - if access_modes is not None: - self.access_modes = access_modes - if aws_elastic_block_store is not None: - self.aws_elastic_block_store = aws_elastic_block_store - if azure_disk is not None: - self.azure_disk = azure_disk - if azure_file is not None: - self.azure_file = azure_file - if capacity is not None: - self.capacity = capacity - if cephfs is not None: - self.cephfs = cephfs - if cinder is not None: - self.cinder = cinder - if claim_ref is not None: - self.claim_ref = claim_ref - if csi is not None: - self.csi = csi - if fc is not None: - self.fc = fc - if flex_volume is not None: - self.flex_volume = flex_volume - if flocker is not None: - self.flocker = flocker - if gce_persistent_disk is not None: - self.gce_persistent_disk = gce_persistent_disk - if glusterfs is not None: - self.glusterfs = glusterfs - if host_path is not None: - self.host_path = host_path - if iscsi is not None: - self.iscsi = iscsi - if local is not None: - self.local = local - if mount_options is not None: - self.mount_options = mount_options - if nfs is not None: - self.nfs = nfs - if node_affinity is not None: - self.node_affinity = node_affinity - if persistent_volume_reclaim_policy is not None: - self.persistent_volume_reclaim_policy = persistent_volume_reclaim_policy - if photon_persistent_disk is not None: - self.photon_persistent_disk = photon_persistent_disk - if portworx_volume is not None: - self.portworx_volume = portworx_volume - if quobyte is not None: - self.quobyte = quobyte - if rbd is not None: - self.rbd = rbd - if scale_io is not None: - self.scale_io = scale_io - if storage_class_name is not None: - self.storage_class_name = storage_class_name - if storageos is not None: - self.storageos = storageos - if volume_attributes_class_name is not None: - self.volume_attributes_class_name = volume_attributes_class_name - if volume_mode is not None: - self.volume_mode = volume_mode - if vsphere_volume is not None: - self.vsphere_volume = vsphere_volume - - @property - def access_modes(self): - """Gets the access_modes of this V1PersistentVolumeSpec. # noqa: E501 - - accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes # noqa: E501 - - :return: The access_modes of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: list[str] - """ - return self._access_modes - - @access_modes.setter - def access_modes(self, access_modes): - """Sets the access_modes of this V1PersistentVolumeSpec. - - accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes # noqa: E501 - - :param access_modes: The access_modes of this V1PersistentVolumeSpec. # noqa: E501 - :type: list[str] - """ - - self._access_modes = access_modes - - @property - def aws_elastic_block_store(self): - """Gets the aws_elastic_block_store of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The aws_elastic_block_store of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1AWSElasticBlockStoreVolumeSource - """ - return self._aws_elastic_block_store - - @aws_elastic_block_store.setter - def aws_elastic_block_store(self, aws_elastic_block_store): - """Sets the aws_elastic_block_store of this V1PersistentVolumeSpec. - - - :param aws_elastic_block_store: The aws_elastic_block_store of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1AWSElasticBlockStoreVolumeSource - """ - - self._aws_elastic_block_store = aws_elastic_block_store - - @property - def azure_disk(self): - """Gets the azure_disk of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The azure_disk of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1AzureDiskVolumeSource - """ - return self._azure_disk - - @azure_disk.setter - def azure_disk(self, azure_disk): - """Sets the azure_disk of this V1PersistentVolumeSpec. - - - :param azure_disk: The azure_disk of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1AzureDiskVolumeSource - """ - - self._azure_disk = azure_disk - - @property - def azure_file(self): - """Gets the azure_file of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The azure_file of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1AzureFilePersistentVolumeSource - """ - return self._azure_file - - @azure_file.setter - def azure_file(self, azure_file): - """Sets the azure_file of this V1PersistentVolumeSpec. - - - :param azure_file: The azure_file of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1AzureFilePersistentVolumeSource - """ - - self._azure_file = azure_file - - @property - def capacity(self): - """Gets the capacity of this V1PersistentVolumeSpec. # noqa: E501 - - capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity # noqa: E501 - - :return: The capacity of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._capacity - - @capacity.setter - def capacity(self, capacity): - """Sets the capacity of this V1PersistentVolumeSpec. - - capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity # noqa: E501 - - :param capacity: The capacity of this V1PersistentVolumeSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._capacity = capacity - - @property - def cephfs(self): - """Gets the cephfs of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The cephfs of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1CephFSPersistentVolumeSource - """ - return self._cephfs - - @cephfs.setter - def cephfs(self, cephfs): - """Sets the cephfs of this V1PersistentVolumeSpec. - - - :param cephfs: The cephfs of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1CephFSPersistentVolumeSource - """ - - self._cephfs = cephfs - - @property - def cinder(self): - """Gets the cinder of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The cinder of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1CinderPersistentVolumeSource - """ - return self._cinder - - @cinder.setter - def cinder(self, cinder): - """Sets the cinder of this V1PersistentVolumeSpec. - - - :param cinder: The cinder of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1CinderPersistentVolumeSource - """ - - self._cinder = cinder - - @property - def claim_ref(self): - """Gets the claim_ref of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The claim_ref of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._claim_ref - - @claim_ref.setter - def claim_ref(self, claim_ref): - """Sets the claim_ref of this V1PersistentVolumeSpec. - - - :param claim_ref: The claim_ref of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1ObjectReference - """ - - self._claim_ref = claim_ref - - @property - def csi(self): - """Gets the csi of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The csi of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1CSIPersistentVolumeSource - """ - return self._csi - - @csi.setter - def csi(self, csi): - """Sets the csi of this V1PersistentVolumeSpec. - - - :param csi: The csi of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1CSIPersistentVolumeSource - """ - - self._csi = csi - - @property - def fc(self): - """Gets the fc of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The fc of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1FCVolumeSource - """ - return self._fc - - @fc.setter - def fc(self, fc): - """Sets the fc of this V1PersistentVolumeSpec. - - - :param fc: The fc of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1FCVolumeSource - """ - - self._fc = fc - - @property - def flex_volume(self): - """Gets the flex_volume of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The flex_volume of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1FlexPersistentVolumeSource - """ - return self._flex_volume - - @flex_volume.setter - def flex_volume(self, flex_volume): - """Sets the flex_volume of this V1PersistentVolumeSpec. - - - :param flex_volume: The flex_volume of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1FlexPersistentVolumeSource - """ - - self._flex_volume = flex_volume - - @property - def flocker(self): - """Gets the flocker of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The flocker of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1FlockerVolumeSource - """ - return self._flocker - - @flocker.setter - def flocker(self, flocker): - """Sets the flocker of this V1PersistentVolumeSpec. - - - :param flocker: The flocker of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1FlockerVolumeSource - """ - - self._flocker = flocker - - @property - def gce_persistent_disk(self): - """Gets the gce_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The gce_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1GCEPersistentDiskVolumeSource - """ - return self._gce_persistent_disk - - @gce_persistent_disk.setter - def gce_persistent_disk(self, gce_persistent_disk): - """Sets the gce_persistent_disk of this V1PersistentVolumeSpec. - - - :param gce_persistent_disk: The gce_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1GCEPersistentDiskVolumeSource - """ - - self._gce_persistent_disk = gce_persistent_disk - - @property - def glusterfs(self): - """Gets the glusterfs of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The glusterfs of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1GlusterfsPersistentVolumeSource - """ - return self._glusterfs - - @glusterfs.setter - def glusterfs(self, glusterfs): - """Sets the glusterfs of this V1PersistentVolumeSpec. - - - :param glusterfs: The glusterfs of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1GlusterfsPersistentVolumeSource - """ - - self._glusterfs = glusterfs - - @property - def host_path(self): - """Gets the host_path of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The host_path of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1HostPathVolumeSource - """ - return self._host_path - - @host_path.setter - def host_path(self, host_path): - """Sets the host_path of this V1PersistentVolumeSpec. - - - :param host_path: The host_path of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1HostPathVolumeSource - """ - - self._host_path = host_path - - @property - def iscsi(self): - """Gets the iscsi of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The iscsi of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1ISCSIPersistentVolumeSource - """ - return self._iscsi - - @iscsi.setter - def iscsi(self, iscsi): - """Sets the iscsi of this V1PersistentVolumeSpec. - - - :param iscsi: The iscsi of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1ISCSIPersistentVolumeSource - """ - - self._iscsi = iscsi - - @property - def local(self): - """Gets the local of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The local of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1LocalVolumeSource - """ - return self._local - - @local.setter - def local(self, local): - """Sets the local of this V1PersistentVolumeSpec. - - - :param local: The local of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1LocalVolumeSource - """ - - self._local = local - - @property - def mount_options(self): - """Gets the mount_options of this V1PersistentVolumeSpec. # noqa: E501 - - mountOptions is the list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options # noqa: E501 - - :return: The mount_options of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: list[str] - """ - return self._mount_options - - @mount_options.setter - def mount_options(self, mount_options): - """Sets the mount_options of this V1PersistentVolumeSpec. - - mountOptions is the list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options # noqa: E501 - - :param mount_options: The mount_options of this V1PersistentVolumeSpec. # noqa: E501 - :type: list[str] - """ - - self._mount_options = mount_options - - @property - def nfs(self): - """Gets the nfs of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The nfs of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1NFSVolumeSource - """ - return self._nfs - - @nfs.setter - def nfs(self, nfs): - """Sets the nfs of this V1PersistentVolumeSpec. - - - :param nfs: The nfs of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1NFSVolumeSource - """ - - self._nfs = nfs - - @property - def node_affinity(self): - """Gets the node_affinity of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The node_affinity of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1VolumeNodeAffinity - """ - return self._node_affinity - - @node_affinity.setter - def node_affinity(self, node_affinity): - """Sets the node_affinity of this V1PersistentVolumeSpec. - - - :param node_affinity: The node_affinity of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1VolumeNodeAffinity - """ - - self._node_affinity = node_affinity - - @property - def persistent_volume_reclaim_policy(self): - """Gets the persistent_volume_reclaim_policy of this V1PersistentVolumeSpec. # noqa: E501 - - persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming # noqa: E501 - - :return: The persistent_volume_reclaim_policy of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: str - """ - return self._persistent_volume_reclaim_policy - - @persistent_volume_reclaim_policy.setter - def persistent_volume_reclaim_policy(self, persistent_volume_reclaim_policy): - """Sets the persistent_volume_reclaim_policy of this V1PersistentVolumeSpec. - - persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming # noqa: E501 - - :param persistent_volume_reclaim_policy: The persistent_volume_reclaim_policy of this V1PersistentVolumeSpec. # noqa: E501 - :type: str - """ - - self._persistent_volume_reclaim_policy = persistent_volume_reclaim_policy - - @property - def photon_persistent_disk(self): - """Gets the photon_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The photon_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1PhotonPersistentDiskVolumeSource - """ - return self._photon_persistent_disk - - @photon_persistent_disk.setter - def photon_persistent_disk(self, photon_persistent_disk): - """Sets the photon_persistent_disk of this V1PersistentVolumeSpec. - - - :param photon_persistent_disk: The photon_persistent_disk of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1PhotonPersistentDiskVolumeSource - """ - - self._photon_persistent_disk = photon_persistent_disk - - @property - def portworx_volume(self): - """Gets the portworx_volume of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The portworx_volume of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1PortworxVolumeSource - """ - return self._portworx_volume - - @portworx_volume.setter - def portworx_volume(self, portworx_volume): - """Sets the portworx_volume of this V1PersistentVolumeSpec. - - - :param portworx_volume: The portworx_volume of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1PortworxVolumeSource - """ - - self._portworx_volume = portworx_volume - - @property - def quobyte(self): - """Gets the quobyte of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The quobyte of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1QuobyteVolumeSource - """ - return self._quobyte - - @quobyte.setter - def quobyte(self, quobyte): - """Sets the quobyte of this V1PersistentVolumeSpec. - - - :param quobyte: The quobyte of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1QuobyteVolumeSource - """ - - self._quobyte = quobyte - - @property - def rbd(self): - """Gets the rbd of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The rbd of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1RBDPersistentVolumeSource - """ - return self._rbd - - @rbd.setter - def rbd(self, rbd): - """Sets the rbd of this V1PersistentVolumeSpec. - - - :param rbd: The rbd of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1RBDPersistentVolumeSource - """ - - self._rbd = rbd - - @property - def scale_io(self): - """Gets the scale_io of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The scale_io of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1ScaleIOPersistentVolumeSource - """ - return self._scale_io - - @scale_io.setter - def scale_io(self, scale_io): - """Sets the scale_io of this V1PersistentVolumeSpec. - - - :param scale_io: The scale_io of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1ScaleIOPersistentVolumeSource - """ - - self._scale_io = scale_io - - @property - def storage_class_name(self): - """Gets the storage_class_name of this V1PersistentVolumeSpec. # noqa: E501 - - storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass. # noqa: E501 - - :return: The storage_class_name of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: str - """ - return self._storage_class_name - - @storage_class_name.setter - def storage_class_name(self, storage_class_name): - """Sets the storage_class_name of this V1PersistentVolumeSpec. - - storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass. # noqa: E501 - - :param storage_class_name: The storage_class_name of this V1PersistentVolumeSpec. # noqa: E501 - :type: str - """ - - self._storage_class_name = storage_class_name - - @property - def storageos(self): - """Gets the storageos of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The storageos of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1StorageOSPersistentVolumeSource - """ - return self._storageos - - @storageos.setter - def storageos(self, storageos): - """Sets the storageos of this V1PersistentVolumeSpec. - - - :param storageos: The storageos of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1StorageOSPersistentVolumeSource - """ - - self._storageos = storageos - - @property - def volume_attributes_class_name(self): - """Gets the volume_attributes_class_name of this V1PersistentVolumeSpec. # noqa: E501 - - Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is an alpha field and requires enabling VolumeAttributesClass feature. # noqa: E501 - - :return: The volume_attributes_class_name of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: str - """ - return self._volume_attributes_class_name - - @volume_attributes_class_name.setter - def volume_attributes_class_name(self, volume_attributes_class_name): - """Sets the volume_attributes_class_name of this V1PersistentVolumeSpec. - - Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is an alpha field and requires enabling VolumeAttributesClass feature. # noqa: E501 - - :param volume_attributes_class_name: The volume_attributes_class_name of this V1PersistentVolumeSpec. # noqa: E501 - :type: str - """ - - self._volume_attributes_class_name = volume_attributes_class_name - - @property - def volume_mode(self): - """Gets the volume_mode of this V1PersistentVolumeSpec. # noqa: E501 - - volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. # noqa: E501 - - :return: The volume_mode of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: str - """ - return self._volume_mode - - @volume_mode.setter - def volume_mode(self, volume_mode): - """Sets the volume_mode of this V1PersistentVolumeSpec. - - volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. # noqa: E501 - - :param volume_mode: The volume_mode of this V1PersistentVolumeSpec. # noqa: E501 - :type: str - """ - - self._volume_mode = volume_mode - - @property - def vsphere_volume(self): - """Gets the vsphere_volume of this V1PersistentVolumeSpec. # noqa: E501 - - - :return: The vsphere_volume of this V1PersistentVolumeSpec. # noqa: E501 - :rtype: V1VsphereVirtualDiskVolumeSource - """ - return self._vsphere_volume - - @vsphere_volume.setter - def vsphere_volume(self, vsphere_volume): - """Sets the vsphere_volume of this V1PersistentVolumeSpec. - - - :param vsphere_volume: The vsphere_volume of this V1PersistentVolumeSpec. # noqa: E501 - :type: V1VsphereVirtualDiskVolumeSource - """ - - self._vsphere_volume = vsphere_volume - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_status.py deleted file mode 100644 index abee2dc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_persistent_volume_status.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PersistentVolumeStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_phase_transition_time': 'datetime', - 'message': 'str', - 'phase': 'str', - 'reason': 'str' - } - - attribute_map = { - 'last_phase_transition_time': 'lastPhaseTransitionTime', - 'message': 'message', - 'phase': 'phase', - 'reason': 'reason' - } - - def __init__(self, last_phase_transition_time=None, message=None, phase=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1PersistentVolumeStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_phase_transition_time = None - self._message = None - self._phase = None - self._reason = None - self.discriminator = None - - if last_phase_transition_time is not None: - self.last_phase_transition_time = last_phase_transition_time - if message is not None: - self.message = message - if phase is not None: - self.phase = phase - if reason is not None: - self.reason = reason - - @property - def last_phase_transition_time(self): - """Gets the last_phase_transition_time of this V1PersistentVolumeStatus. # noqa: E501 - - lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions. This is an alpha field and requires enabling PersistentVolumeLastPhaseTransitionTime feature. # noqa: E501 - - :return: The last_phase_transition_time of this V1PersistentVolumeStatus. # noqa: E501 - :rtype: datetime - """ - return self._last_phase_transition_time - - @last_phase_transition_time.setter - def last_phase_transition_time(self, last_phase_transition_time): - """Sets the last_phase_transition_time of this V1PersistentVolumeStatus. - - lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions. This is an alpha field and requires enabling PersistentVolumeLastPhaseTransitionTime feature. # noqa: E501 - - :param last_phase_transition_time: The last_phase_transition_time of this V1PersistentVolumeStatus. # noqa: E501 - :type: datetime - """ - - self._last_phase_transition_time = last_phase_transition_time - - @property - def message(self): - """Gets the message of this V1PersistentVolumeStatus. # noqa: E501 - - message is a human-readable message indicating details about why the volume is in this state. # noqa: E501 - - :return: The message of this V1PersistentVolumeStatus. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1PersistentVolumeStatus. - - message is a human-readable message indicating details about why the volume is in this state. # noqa: E501 - - :param message: The message of this V1PersistentVolumeStatus. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def phase(self): - """Gets the phase of this V1PersistentVolumeStatus. # noqa: E501 - - phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase # noqa: E501 - - :return: The phase of this V1PersistentVolumeStatus. # noqa: E501 - :rtype: str - """ - return self._phase - - @phase.setter - def phase(self, phase): - """Sets the phase of this V1PersistentVolumeStatus. - - phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase # noqa: E501 - - :param phase: The phase of this V1PersistentVolumeStatus. # noqa: E501 - :type: str - """ - - self._phase = phase - - @property - def reason(self): - """Gets the reason of this V1PersistentVolumeStatus. # noqa: E501 - - reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI. # noqa: E501 - - :return: The reason of this V1PersistentVolumeStatus. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1PersistentVolumeStatus. - - reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI. # noqa: E501 - - :param reason: The reason of this V1PersistentVolumeStatus. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PersistentVolumeStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PersistentVolumeStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_photon_persistent_disk_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_photon_persistent_disk_volume_source.py deleted file mode 100644 index 5e85179..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_photon_persistent_disk_volume_source.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PhotonPersistentDiskVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'pd_id': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'pd_id': 'pdID' - } - - def __init__(self, fs_type=None, pd_id=None, local_vars_configuration=None): # noqa: E501 - """V1PhotonPersistentDiskVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._pd_id = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.pd_id = pd_id - - @property - def fs_type(self): - """Gets the fs_type of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1PhotonPersistentDiskVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def pd_id(self): - """Gets the pd_id of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - - pdID is the ID that identifies Photon Controller persistent disk # noqa: E501 - - :return: The pd_id of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._pd_id - - @pd_id.setter - def pd_id(self, pd_id): - """Sets the pd_id of this V1PhotonPersistentDiskVolumeSource. - - pdID is the ID that identifies Photon Controller persistent disk # noqa: E501 - - :param pd_id: The pd_id of this V1PhotonPersistentDiskVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and pd_id is None: # noqa: E501 - raise ValueError("Invalid value for `pd_id`, must not be `None`") # noqa: E501 - - self._pd_id = pd_id - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PhotonPersistentDiskVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PhotonPersistentDiskVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod.py deleted file mode 100644 index effd493..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Pod(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PodSpec', - 'status': 'V1PodStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Pod - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Pod. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Pod. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Pod. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Pod. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Pod. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Pod. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Pod. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Pod. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Pod. # noqa: E501 - - - :return: The metadata of this V1Pod. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Pod. - - - :param metadata: The metadata of this V1Pod. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Pod. # noqa: E501 - - - :return: The spec of this V1Pod. # noqa: E501 - :rtype: V1PodSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Pod. - - - :param spec: The spec of this V1Pod. # noqa: E501 - :type: V1PodSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Pod. # noqa: E501 - - - :return: The status of this V1Pod. # noqa: E501 - :rtype: V1PodStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Pod. - - - :param status: The status of this V1Pod. # noqa: E501 - :type: V1PodStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Pod): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Pod): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity.py deleted file mode 100644 index fe3c182..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodAffinity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'preferred_during_scheduling_ignored_during_execution': 'list[V1WeightedPodAffinityTerm]', - 'required_during_scheduling_ignored_during_execution': 'list[V1PodAffinityTerm]' - } - - attribute_map = { - 'preferred_during_scheduling_ignored_during_execution': 'preferredDuringSchedulingIgnoredDuringExecution', - 'required_during_scheduling_ignored_during_execution': 'requiredDuringSchedulingIgnoredDuringExecution' - } - - def __init__(self, preferred_during_scheduling_ignored_during_execution=None, required_during_scheduling_ignored_during_execution=None, local_vars_configuration=None): # noqa: E501 - """V1PodAffinity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._preferred_during_scheduling_ignored_during_execution = None - self._required_during_scheduling_ignored_during_execution = None - self.discriminator = None - - if preferred_during_scheduling_ignored_during_execution is not None: - self.preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - if required_during_scheduling_ignored_during_execution is not None: - self.required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - @property - def preferred_during_scheduling_ignored_during_execution(self): - """Gets the preferred_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :return: The preferred_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - :rtype: list[V1WeightedPodAffinityTerm] - """ - return self._preferred_during_scheduling_ignored_during_execution - - @preferred_during_scheduling_ignored_during_execution.setter - def preferred_during_scheduling_ignored_during_execution(self, preferred_during_scheduling_ignored_during_execution): - """Sets the preferred_during_scheduling_ignored_during_execution of this V1PodAffinity. - - The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :param preferred_during_scheduling_ignored_during_execution: The preferred_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - :type: list[V1WeightedPodAffinityTerm] - """ - - self._preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - - @property - def required_during_scheduling_ignored_during_execution(self): - """Gets the required_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. # noqa: E501 - - :return: The required_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - :rtype: list[V1PodAffinityTerm] - """ - return self._required_during_scheduling_ignored_during_execution - - @required_during_scheduling_ignored_during_execution.setter - def required_during_scheduling_ignored_during_execution(self, required_during_scheduling_ignored_during_execution): - """Sets the required_during_scheduling_ignored_during_execution of this V1PodAffinity. - - If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. # noqa: E501 - - :param required_during_scheduling_ignored_during_execution: The required_during_scheduling_ignored_during_execution of this V1PodAffinity. # noqa: E501 - :type: list[V1PodAffinityTerm] - """ - - self._required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodAffinity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodAffinity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity_term.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity_term.py deleted file mode 100644 index 79da650..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_affinity_term.py +++ /dev/null @@ -1,259 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodAffinityTerm(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'label_selector': 'V1LabelSelector', - 'match_label_keys': 'list[str]', - 'mismatch_label_keys': 'list[str]', - 'namespace_selector': 'V1LabelSelector', - 'namespaces': 'list[str]', - 'topology_key': 'str' - } - - attribute_map = { - 'label_selector': 'labelSelector', - 'match_label_keys': 'matchLabelKeys', - 'mismatch_label_keys': 'mismatchLabelKeys', - 'namespace_selector': 'namespaceSelector', - 'namespaces': 'namespaces', - 'topology_key': 'topologyKey' - } - - def __init__(self, label_selector=None, match_label_keys=None, mismatch_label_keys=None, namespace_selector=None, namespaces=None, topology_key=None, local_vars_configuration=None): # noqa: E501 - """V1PodAffinityTerm - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._label_selector = None - self._match_label_keys = None - self._mismatch_label_keys = None - self._namespace_selector = None - self._namespaces = None - self._topology_key = None - self.discriminator = None - - if label_selector is not None: - self.label_selector = label_selector - if match_label_keys is not None: - self.match_label_keys = match_label_keys - if mismatch_label_keys is not None: - self.mismatch_label_keys = mismatch_label_keys - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if namespaces is not None: - self.namespaces = namespaces - self.topology_key = topology_key - - @property - def label_selector(self): - """Gets the label_selector of this V1PodAffinityTerm. # noqa: E501 - - - :return: The label_selector of this V1PodAffinityTerm. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._label_selector - - @label_selector.setter - def label_selector(self, label_selector): - """Sets the label_selector of this V1PodAffinityTerm. - - - :param label_selector: The label_selector of this V1PodAffinityTerm. # noqa: E501 - :type: V1LabelSelector - """ - - self._label_selector = label_selector - - @property - def match_label_keys(self): - """Gets the match_label_keys of this V1PodAffinityTerm. # noqa: E501 - - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. # noqa: E501 - - :return: The match_label_keys of this V1PodAffinityTerm. # noqa: E501 - :rtype: list[str] - """ - return self._match_label_keys - - @match_label_keys.setter - def match_label_keys(self, match_label_keys): - """Sets the match_label_keys of this V1PodAffinityTerm. - - MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. # noqa: E501 - - :param match_label_keys: The match_label_keys of this V1PodAffinityTerm. # noqa: E501 - :type: list[str] - """ - - self._match_label_keys = match_label_keys - - @property - def mismatch_label_keys(self): - """Gets the mismatch_label_keys of this V1PodAffinityTerm. # noqa: E501 - - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. # noqa: E501 - - :return: The mismatch_label_keys of this V1PodAffinityTerm. # noqa: E501 - :rtype: list[str] - """ - return self._mismatch_label_keys - - @mismatch_label_keys.setter - def mismatch_label_keys(self, mismatch_label_keys): - """Sets the mismatch_label_keys of this V1PodAffinityTerm. - - MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. # noqa: E501 - - :param mismatch_label_keys: The mismatch_label_keys of this V1PodAffinityTerm. # noqa: E501 - :type: list[str] - """ - - self._mismatch_label_keys = mismatch_label_keys - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1PodAffinityTerm. # noqa: E501 - - - :return: The namespace_selector of this V1PodAffinityTerm. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1PodAffinityTerm. - - - :param namespace_selector: The namespace_selector of this V1PodAffinityTerm. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def namespaces(self): - """Gets the namespaces of this V1PodAffinityTerm. # noqa: E501 - - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\". # noqa: E501 - - :return: The namespaces of this V1PodAffinityTerm. # noqa: E501 - :rtype: list[str] - """ - return self._namespaces - - @namespaces.setter - def namespaces(self, namespaces): - """Sets the namespaces of this V1PodAffinityTerm. - - namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\". # noqa: E501 - - :param namespaces: The namespaces of this V1PodAffinityTerm. # noqa: E501 - :type: list[str] - """ - - self._namespaces = namespaces - - @property - def topology_key(self): - """Gets the topology_key of this V1PodAffinityTerm. # noqa: E501 - - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. # noqa: E501 - - :return: The topology_key of this V1PodAffinityTerm. # noqa: E501 - :rtype: str - """ - return self._topology_key - - @topology_key.setter - def topology_key(self, topology_key): - """Sets the topology_key of this V1PodAffinityTerm. - - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. # noqa: E501 - - :param topology_key: The topology_key of this V1PodAffinityTerm. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and topology_key is None: # noqa: E501 - raise ValueError("Invalid value for `topology_key`, must not be `None`") # noqa: E501 - - self._topology_key = topology_key - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodAffinityTerm): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodAffinityTerm): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_anti_affinity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_anti_affinity.py deleted file mode 100644 index cd9d232..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_anti_affinity.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodAntiAffinity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'preferred_during_scheduling_ignored_during_execution': 'list[V1WeightedPodAffinityTerm]', - 'required_during_scheduling_ignored_during_execution': 'list[V1PodAffinityTerm]' - } - - attribute_map = { - 'preferred_during_scheduling_ignored_during_execution': 'preferredDuringSchedulingIgnoredDuringExecution', - 'required_during_scheduling_ignored_during_execution': 'requiredDuringSchedulingIgnoredDuringExecution' - } - - def __init__(self, preferred_during_scheduling_ignored_during_execution=None, required_during_scheduling_ignored_during_execution=None, local_vars_configuration=None): # noqa: E501 - """V1PodAntiAffinity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._preferred_during_scheduling_ignored_during_execution = None - self._required_during_scheduling_ignored_during_execution = None - self.discriminator = None - - if preferred_during_scheduling_ignored_during_execution is not None: - self.preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - if required_during_scheduling_ignored_during_execution is not None: - self.required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - @property - def preferred_during_scheduling_ignored_during_execution(self): - """Gets the preferred_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :return: The preferred_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - :rtype: list[V1WeightedPodAffinityTerm] - """ - return self._preferred_during_scheduling_ignored_during_execution - - @preferred_during_scheduling_ignored_during_execution.setter - def preferred_during_scheduling_ignored_during_execution(self, preferred_during_scheduling_ignored_during_execution): - """Sets the preferred_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. - - The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. # noqa: E501 - - :param preferred_during_scheduling_ignored_during_execution: The preferred_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - :type: list[V1WeightedPodAffinityTerm] - """ - - self._preferred_during_scheduling_ignored_during_execution = preferred_during_scheduling_ignored_during_execution - - @property - def required_during_scheduling_ignored_during_execution(self): - """Gets the required_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. # noqa: E501 - - :return: The required_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - :rtype: list[V1PodAffinityTerm] - """ - return self._required_during_scheduling_ignored_during_execution - - @required_during_scheduling_ignored_during_execution.setter - def required_during_scheduling_ignored_during_execution(self, required_during_scheduling_ignored_during_execution): - """Sets the required_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. - - If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. # noqa: E501 - - :param required_during_scheduling_ignored_during_execution: The required_during_scheduling_ignored_during_execution of this V1PodAntiAffinity. # noqa: E501 - :type: list[V1PodAffinityTerm] - """ - - self._required_during_scheduling_ignored_during_execution = required_during_scheduling_ignored_during_execution - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodAntiAffinity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodAntiAffinity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_condition.py deleted file mode 100644 index f9db4ff..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_condition.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_probe_time': 'datetime', - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_probe_time': 'lastProbeTime', - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_probe_time=None, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1PodCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_probe_time = None - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_probe_time is not None: - self.last_probe_time = last_probe_time - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_probe_time(self): - """Gets the last_probe_time of this V1PodCondition. # noqa: E501 - - Last time we probed the condition. # noqa: E501 - - :return: The last_probe_time of this V1PodCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_probe_time - - @last_probe_time.setter - def last_probe_time(self, last_probe_time): - """Sets the last_probe_time of this V1PodCondition. - - Last time we probed the condition. # noqa: E501 - - :param last_probe_time: The last_probe_time of this V1PodCondition. # noqa: E501 - :type: datetime - """ - - self._last_probe_time = last_probe_time - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1PodCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1PodCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1PodCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1PodCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1PodCondition. # noqa: E501 - - Human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1PodCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1PodCondition. - - Human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1PodCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1PodCondition. # noqa: E501 - - Unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1PodCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1PodCondition. - - Unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1PodCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1PodCondition. # noqa: E501 - - Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :return: The status of this V1PodCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PodCondition. - - Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :param status: The status of this V1PodCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1PodCondition. # noqa: E501 - - Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :return: The type of this V1PodCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1PodCondition. - - Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :param type: The type of this V1PodCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget.py deleted file mode 100644 index 95b2973..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDisruptionBudget(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PodDisruptionBudgetSpec', - 'status': 'V1PodDisruptionBudgetStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1PodDisruptionBudget - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1PodDisruptionBudget. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PodDisruptionBudget. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PodDisruptionBudget. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PodDisruptionBudget. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1PodDisruptionBudget. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PodDisruptionBudget. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PodDisruptionBudget. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PodDisruptionBudget. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PodDisruptionBudget. # noqa: E501 - - - :return: The metadata of this V1PodDisruptionBudget. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodDisruptionBudget. - - - :param metadata: The metadata of this V1PodDisruptionBudget. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PodDisruptionBudget. # noqa: E501 - - - :return: The spec of this V1PodDisruptionBudget. # noqa: E501 - :rtype: V1PodDisruptionBudgetSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PodDisruptionBudget. - - - :param spec: The spec of this V1PodDisruptionBudget. # noqa: E501 - :type: V1PodDisruptionBudgetSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1PodDisruptionBudget. # noqa: E501 - - - :return: The status of this V1PodDisruptionBudget. # noqa: E501 - :rtype: V1PodDisruptionBudgetStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PodDisruptionBudget. - - - :param status: The status of this V1PodDisruptionBudget. # noqa: E501 - :type: V1PodDisruptionBudgetStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDisruptionBudget): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDisruptionBudget): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_list.py deleted file mode 100644 index e9fe270..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDisruptionBudgetList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PodDisruptionBudget]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PodDisruptionBudgetList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PodDisruptionBudgetList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PodDisruptionBudgetList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PodDisruptionBudgetList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PodDisruptionBudgetList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PodDisruptionBudgetList. # noqa: E501 - - Items is a list of PodDisruptionBudgets # noqa: E501 - - :return: The items of this V1PodDisruptionBudgetList. # noqa: E501 - :rtype: list[V1PodDisruptionBudget] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PodDisruptionBudgetList. - - Items is a list of PodDisruptionBudgets # noqa: E501 - - :param items: The items of this V1PodDisruptionBudgetList. # noqa: E501 - :type: list[V1PodDisruptionBudget] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PodDisruptionBudgetList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PodDisruptionBudgetList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PodDisruptionBudgetList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PodDisruptionBudgetList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PodDisruptionBudgetList. # noqa: E501 - - - :return: The metadata of this V1PodDisruptionBudgetList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodDisruptionBudgetList. - - - :param metadata: The metadata of this V1PodDisruptionBudgetList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDisruptionBudgetList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDisruptionBudgetList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_spec.py deleted file mode 100644 index 9a8f91f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_spec.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDisruptionBudgetSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'max_unavailable': 'object', - 'min_available': 'object', - 'selector': 'V1LabelSelector', - 'unhealthy_pod_eviction_policy': 'str' - } - - attribute_map = { - 'max_unavailable': 'maxUnavailable', - 'min_available': 'minAvailable', - 'selector': 'selector', - 'unhealthy_pod_eviction_policy': 'unhealthyPodEvictionPolicy' - } - - def __init__(self, max_unavailable=None, min_available=None, selector=None, unhealthy_pod_eviction_policy=None, local_vars_configuration=None): # noqa: E501 - """V1PodDisruptionBudgetSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._max_unavailable = None - self._min_available = None - self._selector = None - self._unhealthy_pod_eviction_policy = None - self.discriminator = None - - if max_unavailable is not None: - self.max_unavailable = max_unavailable - if min_available is not None: - self.min_available = min_available - if selector is not None: - self.selector = selector - if unhealthy_pod_eviction_policy is not None: - self.unhealthy_pod_eviction_policy = unhealthy_pod_eviction_policy - - @property - def max_unavailable(self): - """Gets the max_unavailable of this V1PodDisruptionBudgetSpec. # noqa: E501 - - An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\". # noqa: E501 - - :return: The max_unavailable of this V1PodDisruptionBudgetSpec. # noqa: E501 - :rtype: object - """ - return self._max_unavailable - - @max_unavailable.setter - def max_unavailable(self, max_unavailable): - """Sets the max_unavailable of this V1PodDisruptionBudgetSpec. - - An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\". # noqa: E501 - - :param max_unavailable: The max_unavailable of this V1PodDisruptionBudgetSpec. # noqa: E501 - :type: object - """ - - self._max_unavailable = max_unavailable - - @property - def min_available(self): - """Gets the min_available of this V1PodDisruptionBudgetSpec. # noqa: E501 - - An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying \"100%\". # noqa: E501 - - :return: The min_available of this V1PodDisruptionBudgetSpec. # noqa: E501 - :rtype: object - """ - return self._min_available - - @min_available.setter - def min_available(self, min_available): - """Sets the min_available of this V1PodDisruptionBudgetSpec. - - An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying \"100%\". # noqa: E501 - - :param min_available: The min_available of this V1PodDisruptionBudgetSpec. # noqa: E501 - :type: object - """ - - self._min_available = min_available - - @property - def selector(self): - """Gets the selector of this V1PodDisruptionBudgetSpec. # noqa: E501 - - - :return: The selector of this V1PodDisruptionBudgetSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1PodDisruptionBudgetSpec. - - - :param selector: The selector of this V1PodDisruptionBudgetSpec. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - @property - def unhealthy_pod_eviction_policy(self): - """Gets the unhealthy_pod_eviction_policy of this V1PodDisruptionBudgetSpec. # noqa: E501 - - UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. Current implementation considers healthy pods, as pods that have status.conditions item with type=\"Ready\",status=\"True\". Valid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy. IfHealthyBudget policy means that running pods (status.phase=\"Running\"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction. AlwaysAllow policy means that all running pods (status.phase=\"Running\"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction. Additional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field. This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). # noqa: E501 - - :return: The unhealthy_pod_eviction_policy of this V1PodDisruptionBudgetSpec. # noqa: E501 - :rtype: str - """ - return self._unhealthy_pod_eviction_policy - - @unhealthy_pod_eviction_policy.setter - def unhealthy_pod_eviction_policy(self, unhealthy_pod_eviction_policy): - """Sets the unhealthy_pod_eviction_policy of this V1PodDisruptionBudgetSpec. - - UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. Current implementation considers healthy pods, as pods that have status.conditions item with type=\"Ready\",status=\"True\". Valid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy. IfHealthyBudget policy means that running pods (status.phase=\"Running\"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction. AlwaysAllow policy means that all running pods (status.phase=\"Running\"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction. Additional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field. This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). # noqa: E501 - - :param unhealthy_pod_eviction_policy: The unhealthy_pod_eviction_policy of this V1PodDisruptionBudgetSpec. # noqa: E501 - :type: str - """ - - self._unhealthy_pod_eviction_policy = unhealthy_pod_eviction_policy - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDisruptionBudgetSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDisruptionBudgetSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_status.py deleted file mode 100644 index bfc42d3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_disruption_budget_status.py +++ /dev/null @@ -1,294 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDisruptionBudgetStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1Condition]', - 'current_healthy': 'int', - 'desired_healthy': 'int', - 'disrupted_pods': 'dict(str, datetime)', - 'disruptions_allowed': 'int', - 'expected_pods': 'int', - 'observed_generation': 'int' - } - - attribute_map = { - 'conditions': 'conditions', - 'current_healthy': 'currentHealthy', - 'desired_healthy': 'desiredHealthy', - 'disrupted_pods': 'disruptedPods', - 'disruptions_allowed': 'disruptionsAllowed', - 'expected_pods': 'expectedPods', - 'observed_generation': 'observedGeneration' - } - - def __init__(self, conditions=None, current_healthy=None, desired_healthy=None, disrupted_pods=None, disruptions_allowed=None, expected_pods=None, observed_generation=None, local_vars_configuration=None): # noqa: E501 - """V1PodDisruptionBudgetStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._current_healthy = None - self._desired_healthy = None - self._disrupted_pods = None - self._disruptions_allowed = None - self._expected_pods = None - self._observed_generation = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - self.current_healthy = current_healthy - self.desired_healthy = desired_healthy - if disrupted_pods is not None: - self.disrupted_pods = disrupted_pods - self.disruptions_allowed = disruptions_allowed - self.expected_pods = expected_pods - if observed_generation is not None: - self.observed_generation = observed_generation - - @property - def conditions(self): - """Gets the conditions of this V1PodDisruptionBudgetStatus. # noqa: E501 - - Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute the number of allowed disruptions. Therefore no disruptions are allowed and the status of the condition will be False. - InsufficientPods: The number of pods are either at or below the number required by the PodDisruptionBudget. No disruptions are allowed and the status of the condition will be False. - SufficientPods: There are more pods than required by the PodDisruptionBudget. The condition will be True, and the number of allowed disruptions are provided by the disruptionsAllowed property. # noqa: E501 - - :return: The conditions of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: list[V1Condition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1PodDisruptionBudgetStatus. - - Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute the number of allowed disruptions. Therefore no disruptions are allowed and the status of the condition will be False. - InsufficientPods: The number of pods are either at or below the number required by the PodDisruptionBudget. No disruptions are allowed and the status of the condition will be False. - SufficientPods: There are more pods than required by the PodDisruptionBudget. The condition will be True, and the number of allowed disruptions are provided by the disruptionsAllowed property. # noqa: E501 - - :param conditions: The conditions of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: list[V1Condition] - """ - - self._conditions = conditions - - @property - def current_healthy(self): - """Gets the current_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - - current number of healthy pods # noqa: E501 - - :return: The current_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: int - """ - return self._current_healthy - - @current_healthy.setter - def current_healthy(self, current_healthy): - """Sets the current_healthy of this V1PodDisruptionBudgetStatus. - - current number of healthy pods # noqa: E501 - - :param current_healthy: The current_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and current_healthy is None: # noqa: E501 - raise ValueError("Invalid value for `current_healthy`, must not be `None`") # noqa: E501 - - self._current_healthy = current_healthy - - @property - def desired_healthy(self): - """Gets the desired_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - - minimum desired number of healthy pods # noqa: E501 - - :return: The desired_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: int - """ - return self._desired_healthy - - @desired_healthy.setter - def desired_healthy(self, desired_healthy): - """Sets the desired_healthy of this V1PodDisruptionBudgetStatus. - - minimum desired number of healthy pods # noqa: E501 - - :param desired_healthy: The desired_healthy of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and desired_healthy is None: # noqa: E501 - raise ValueError("Invalid value for `desired_healthy`, must not be `None`") # noqa: E501 - - self._desired_healthy = desired_healthy - - @property - def disrupted_pods(self): - """Gets the disrupted_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - - DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions. # noqa: E501 - - :return: The disrupted_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: dict(str, datetime) - """ - return self._disrupted_pods - - @disrupted_pods.setter - def disrupted_pods(self, disrupted_pods): - """Sets the disrupted_pods of this V1PodDisruptionBudgetStatus. - - DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions. # noqa: E501 - - :param disrupted_pods: The disrupted_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: dict(str, datetime) - """ - - self._disrupted_pods = disrupted_pods - - @property - def disruptions_allowed(self): - """Gets the disruptions_allowed of this V1PodDisruptionBudgetStatus. # noqa: E501 - - Number of pod disruptions that are currently allowed. # noqa: E501 - - :return: The disruptions_allowed of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: int - """ - return self._disruptions_allowed - - @disruptions_allowed.setter - def disruptions_allowed(self, disruptions_allowed): - """Sets the disruptions_allowed of this V1PodDisruptionBudgetStatus. - - Number of pod disruptions that are currently allowed. # noqa: E501 - - :param disruptions_allowed: The disruptions_allowed of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and disruptions_allowed is None: # noqa: E501 - raise ValueError("Invalid value for `disruptions_allowed`, must not be `None`") # noqa: E501 - - self._disruptions_allowed = disruptions_allowed - - @property - def expected_pods(self): - """Gets the expected_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - - total number of pods counted by this disruption budget # noqa: E501 - - :return: The expected_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: int - """ - return self._expected_pods - - @expected_pods.setter - def expected_pods(self, expected_pods): - """Sets the expected_pods of this V1PodDisruptionBudgetStatus. - - total number of pods counted by this disruption budget # noqa: E501 - - :param expected_pods: The expected_pods of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and expected_pods is None: # noqa: E501 - raise ValueError("Invalid value for `expected_pods`, must not be `None`") # noqa: E501 - - self._expected_pods = expected_pods - - @property - def observed_generation(self): - """Gets the observed_generation of this V1PodDisruptionBudgetStatus. # noqa: E501 - - Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation. # noqa: E501 - - :return: The observed_generation of this V1PodDisruptionBudgetStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1PodDisruptionBudgetStatus. - - Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation. # noqa: E501 - - :param observed_generation: The observed_generation of this V1PodDisruptionBudgetStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDisruptionBudgetStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDisruptionBudgetStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config.py deleted file mode 100644 index 740c1f2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDNSConfig(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'nameservers': 'list[str]', - 'options': 'list[V1PodDNSConfigOption]', - 'searches': 'list[str]' - } - - attribute_map = { - 'nameservers': 'nameservers', - 'options': 'options', - 'searches': 'searches' - } - - def __init__(self, nameservers=None, options=None, searches=None, local_vars_configuration=None): # noqa: E501 - """V1PodDNSConfig - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._nameservers = None - self._options = None - self._searches = None - self.discriminator = None - - if nameservers is not None: - self.nameservers = nameservers - if options is not None: - self.options = options - if searches is not None: - self.searches = searches - - @property - def nameservers(self): - """Gets the nameservers of this V1PodDNSConfig. # noqa: E501 - - A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. # noqa: E501 - - :return: The nameservers of this V1PodDNSConfig. # noqa: E501 - :rtype: list[str] - """ - return self._nameservers - - @nameservers.setter - def nameservers(self, nameservers): - """Sets the nameservers of this V1PodDNSConfig. - - A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. # noqa: E501 - - :param nameservers: The nameservers of this V1PodDNSConfig. # noqa: E501 - :type: list[str] - """ - - self._nameservers = nameservers - - @property - def options(self): - """Gets the options of this V1PodDNSConfig. # noqa: E501 - - A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. # noqa: E501 - - :return: The options of this V1PodDNSConfig. # noqa: E501 - :rtype: list[V1PodDNSConfigOption] - """ - return self._options - - @options.setter - def options(self, options): - """Sets the options of this V1PodDNSConfig. - - A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. # noqa: E501 - - :param options: The options of this V1PodDNSConfig. # noqa: E501 - :type: list[V1PodDNSConfigOption] - """ - - self._options = options - - @property - def searches(self): - """Gets the searches of this V1PodDNSConfig. # noqa: E501 - - A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. # noqa: E501 - - :return: The searches of this V1PodDNSConfig. # noqa: E501 - :rtype: list[str] - """ - return self._searches - - @searches.setter - def searches(self, searches): - """Sets the searches of this V1PodDNSConfig. - - A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. # noqa: E501 - - :param searches: The searches of this V1PodDNSConfig. # noqa: E501 - :type: list[str] - """ - - self._searches = searches - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDNSConfig): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDNSConfig): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config_option.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config_option.py deleted file mode 100644 index 2e515b7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_dns_config_option.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodDNSConfigOption(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'value': 'str' - } - - attribute_map = { - 'name': 'name', - 'value': 'value' - } - - def __init__(self, name=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1PodDNSConfigOption - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._value = None - self.discriminator = None - - if name is not None: - self.name = name - if value is not None: - self.value = value - - @property - def name(self): - """Gets the name of this V1PodDNSConfigOption. # noqa: E501 - - Required. # noqa: E501 - - :return: The name of this V1PodDNSConfigOption. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PodDNSConfigOption. - - Required. # noqa: E501 - - :param name: The name of this V1PodDNSConfigOption. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def value(self): - """Gets the value of this V1PodDNSConfigOption. # noqa: E501 - - - :return: The value of this V1PodDNSConfigOption. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1PodDNSConfigOption. - - - :param value: The value of this V1PodDNSConfigOption. # noqa: E501 - :type: str - """ - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodDNSConfigOption): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodDNSConfigOption): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy.py deleted file mode 100644 index 4013bf9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodFailurePolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'rules': 'list[V1PodFailurePolicyRule]' - } - - attribute_map = { - 'rules': 'rules' - } - - def __init__(self, rules=None, local_vars_configuration=None): # noqa: E501 - """V1PodFailurePolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._rules = None - self.discriminator = None - - self.rules = rules - - @property - def rules(self): - """Gets the rules of this V1PodFailurePolicy. # noqa: E501 - - A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed. # noqa: E501 - - :return: The rules of this V1PodFailurePolicy. # noqa: E501 - :rtype: list[V1PodFailurePolicyRule] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1PodFailurePolicy. - - A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed. # noqa: E501 - - :param rules: The rules of this V1PodFailurePolicy. # noqa: E501 - :type: list[V1PodFailurePolicyRule] - """ - if self.local_vars_configuration.client_side_validation and rules is None: # noqa: E501 - raise ValueError("Invalid value for `rules`, must not be `None`") # noqa: E501 - - self._rules = rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodFailurePolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodFailurePolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_exit_codes_requirement.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_exit_codes_requirement.py deleted file mode 100644 index 0820c1b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_exit_codes_requirement.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodFailurePolicyOnExitCodesRequirement(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_name': 'str', - 'operator': 'str', - 'values': 'list[int]' - } - - attribute_map = { - 'container_name': 'containerName', - 'operator': 'operator', - 'values': 'values' - } - - def __init__(self, container_name=None, operator=None, values=None, local_vars_configuration=None): # noqa: E501 - """V1PodFailurePolicyOnExitCodesRequirement - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_name = None - self._operator = None - self._values = None - self.discriminator = None - - if container_name is not None: - self.container_name = container_name - self.operator = operator - self.values = values - - @property - def container_name(self): - """Gets the container_name of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - - Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template. # noqa: E501 - - :return: The container_name of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :rtype: str - """ - return self._container_name - - @container_name.setter - def container_name(self, container_name): - """Sets the container_name of this V1PodFailurePolicyOnExitCodesRequirement. - - Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template. # noqa: E501 - - :param container_name: The container_name of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :type: str - """ - - self._container_name = container_name - - @property - def operator(self): - """Gets the operator of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - - Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are: - In: the requirement is satisfied if at least one container exit code (might be multiple if there are multiple containers not restricted by the 'containerName' field) is in the set of specified values. - NotIn: the requirement is satisfied if at least one container exit code (might be multiple if there are multiple containers not restricted by the 'containerName' field) is not in the set of specified values. Additional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied. # noqa: E501 - - :return: The operator of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :rtype: str - """ - return self._operator - - @operator.setter - def operator(self, operator): - """Sets the operator of this V1PodFailurePolicyOnExitCodesRequirement. - - Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are: - In: the requirement is satisfied if at least one container exit code (might be multiple if there are multiple containers not restricted by the 'containerName' field) is in the set of specified values. - NotIn: the requirement is satisfied if at least one container exit code (might be multiple if there are multiple containers not restricted by the 'containerName' field) is not in the set of specified values. Additional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied. # noqa: E501 - - :param operator: The operator of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and operator is None: # noqa: E501 - raise ValueError("Invalid value for `operator`, must not be `None`") # noqa: E501 - - self._operator = operator - - @property - def values(self): - """Gets the values of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - - Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed. # noqa: E501 - - :return: The values of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :rtype: list[int] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this V1PodFailurePolicyOnExitCodesRequirement. - - Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed. # noqa: E501 - - :param values: The values of this V1PodFailurePolicyOnExitCodesRequirement. # noqa: E501 - :type: list[int] - """ - if self.local_vars_configuration.client_side_validation and values is None: # noqa: E501 - raise ValueError("Invalid value for `values`, must not be `None`") # noqa: E501 - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodFailurePolicyOnExitCodesRequirement): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodFailurePolicyOnExitCodesRequirement): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_pod_conditions_pattern.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_pod_conditions_pattern.py deleted file mode 100644 index 0edd6b9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_on_pod_conditions_pattern.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodFailurePolicyOnPodConditionsPattern(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'status': 'status', - 'type': 'type' - } - - def __init__(self, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1PodFailurePolicyOnPodConditionsPattern - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._status = None - self._type = None - self.discriminator = None - - self.status = status - self.type = type - - @property - def status(self): - """Gets the status of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - - Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True. # noqa: E501 - - :return: The status of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PodFailurePolicyOnPodConditionsPattern. - - Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True. # noqa: E501 - - :param status: The status of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - - Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type. # noqa: E501 - - :return: The type of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1PodFailurePolicyOnPodConditionsPattern. - - Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type. # noqa: E501 - - :param type: The type of this V1PodFailurePolicyOnPodConditionsPattern. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodFailurePolicyOnPodConditionsPattern): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodFailurePolicyOnPodConditionsPattern): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_rule.py deleted file mode 100644 index d3bc7b3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_failure_policy_rule.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodFailurePolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'action': 'str', - 'on_exit_codes': 'V1PodFailurePolicyOnExitCodesRequirement', - 'on_pod_conditions': 'list[V1PodFailurePolicyOnPodConditionsPattern]' - } - - attribute_map = { - 'action': 'action', - 'on_exit_codes': 'onExitCodes', - 'on_pod_conditions': 'onPodConditions' - } - - def __init__(self, action=None, on_exit_codes=None, on_pod_conditions=None, local_vars_configuration=None): # noqa: E501 - """V1PodFailurePolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._action = None - self._on_exit_codes = None - self._on_pod_conditions = None - self.discriminator = None - - self.action = action - if on_exit_codes is not None: - self.on_exit_codes = on_exit_codes - if on_pod_conditions is not None: - self.on_pod_conditions = on_pod_conditions - - @property - def action(self): - """Gets the action of this V1PodFailurePolicyRule. # noqa: E501 - - Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are: - FailJob: indicates that the pod's job is marked as Failed and all running pods are terminated. - FailIndex: indicates that the pod's index is marked as Failed and will not be restarted. This value is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). - Ignore: indicates that the counter towards the .backoffLimit is not incremented and a replacement pod is created. - Count: indicates that the pod is handled in the default way - the counter towards the .backoffLimit is incremented. Additional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule. # noqa: E501 - - :return: The action of this V1PodFailurePolicyRule. # noqa: E501 - :rtype: str - """ - return self._action - - @action.setter - def action(self, action): - """Sets the action of this V1PodFailurePolicyRule. - - Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are: - FailJob: indicates that the pod's job is marked as Failed and all running pods are terminated. - FailIndex: indicates that the pod's index is marked as Failed and will not be restarted. This value is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). - Ignore: indicates that the counter towards the .backoffLimit is not incremented and a replacement pod is created. - Count: indicates that the pod is handled in the default way - the counter towards the .backoffLimit is incremented. Additional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule. # noqa: E501 - - :param action: The action of this V1PodFailurePolicyRule. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and action is None: # noqa: E501 - raise ValueError("Invalid value for `action`, must not be `None`") # noqa: E501 - - self._action = action - - @property - def on_exit_codes(self): - """Gets the on_exit_codes of this V1PodFailurePolicyRule. # noqa: E501 - - - :return: The on_exit_codes of this V1PodFailurePolicyRule. # noqa: E501 - :rtype: V1PodFailurePolicyOnExitCodesRequirement - """ - return self._on_exit_codes - - @on_exit_codes.setter - def on_exit_codes(self, on_exit_codes): - """Sets the on_exit_codes of this V1PodFailurePolicyRule. - - - :param on_exit_codes: The on_exit_codes of this V1PodFailurePolicyRule. # noqa: E501 - :type: V1PodFailurePolicyOnExitCodesRequirement - """ - - self._on_exit_codes = on_exit_codes - - @property - def on_pod_conditions(self): - """Gets the on_pod_conditions of this V1PodFailurePolicyRule. # noqa: E501 - - Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed. # noqa: E501 - - :return: The on_pod_conditions of this V1PodFailurePolicyRule. # noqa: E501 - :rtype: list[V1PodFailurePolicyOnPodConditionsPattern] - """ - return self._on_pod_conditions - - @on_pod_conditions.setter - def on_pod_conditions(self, on_pod_conditions): - """Sets the on_pod_conditions of this V1PodFailurePolicyRule. - - Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed. # noqa: E501 - - :param on_pod_conditions: The on_pod_conditions of this V1PodFailurePolicyRule. # noqa: E501 - :type: list[V1PodFailurePolicyOnPodConditionsPattern] - """ - - self._on_pod_conditions = on_pod_conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodFailurePolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodFailurePolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_ip.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_ip.py deleted file mode 100644 index df0a318..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_ip.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodIP(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'ip': 'str' - } - - attribute_map = { - 'ip': 'ip' - } - - def __init__(self, ip=None, local_vars_configuration=None): # noqa: E501 - """V1PodIP - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._ip = None - self.discriminator = None - - if ip is not None: - self.ip = ip - - @property - def ip(self): - """Gets the ip of this V1PodIP. # noqa: E501 - - IP is the IP address assigned to the pod # noqa: E501 - - :return: The ip of this V1PodIP. # noqa: E501 - :rtype: str - """ - return self._ip - - @ip.setter - def ip(self, ip): - """Sets the ip of this V1PodIP. - - IP is the IP address assigned to the pod # noqa: E501 - - :param ip: The ip of this V1PodIP. # noqa: E501 - :type: str - """ - - self._ip = ip - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodIP): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodIP): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_list.py deleted file mode 100644 index bd759a6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Pod]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PodList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PodList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PodList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PodList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PodList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PodList. # noqa: E501 - - List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md # noqa: E501 - - :return: The items of this V1PodList. # noqa: E501 - :rtype: list[V1Pod] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PodList. - - List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md # noqa: E501 - - :param items: The items of this V1PodList. # noqa: E501 - :type: list[V1Pod] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PodList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PodList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PodList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PodList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PodList. # noqa: E501 - - - :return: The metadata of this V1PodList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodList. - - - :param metadata: The metadata of this V1PodList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_os.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_os.py deleted file mode 100644 index 7628f7d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_os.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodOS(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1PodOS - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1PodOS. # noqa: E501 - - Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null # noqa: E501 - - :return: The name of this V1PodOS. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PodOS. - - Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null # noqa: E501 - - :param name: The name of this V1PodOS. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodOS): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodOS): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_readiness_gate.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_readiness_gate.py deleted file mode 100644 index d165fb8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_readiness_gate.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodReadinessGate(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'condition_type': 'str' - } - - attribute_map = { - 'condition_type': 'conditionType' - } - - def __init__(self, condition_type=None, local_vars_configuration=None): # noqa: E501 - """V1PodReadinessGate - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._condition_type = None - self.discriminator = None - - self.condition_type = condition_type - - @property - def condition_type(self): - """Gets the condition_type of this V1PodReadinessGate. # noqa: E501 - - ConditionType refers to a condition in the pod's condition list with matching type. # noqa: E501 - - :return: The condition_type of this V1PodReadinessGate. # noqa: E501 - :rtype: str - """ - return self._condition_type - - @condition_type.setter - def condition_type(self, condition_type): - """Sets the condition_type of this V1PodReadinessGate. - - ConditionType refers to a condition in the pod's condition list with matching type. # noqa: E501 - - :param condition_type: The condition_type of this V1PodReadinessGate. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and condition_type is None: # noqa: E501 - raise ValueError("Invalid value for `condition_type`, must not be `None`") # noqa: E501 - - self._condition_type = condition_type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodReadinessGate): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodReadinessGate): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim.py deleted file mode 100644 index 7876d45..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodResourceClaim(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'source': 'V1ClaimSource' - } - - attribute_map = { - 'name': 'name', - 'source': 'source' - } - - def __init__(self, name=None, source=None, local_vars_configuration=None): # noqa: E501 - """V1PodResourceClaim - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._source = None - self.discriminator = None - - self.name = name - if source is not None: - self.source = source - - @property - def name(self): - """Gets the name of this V1PodResourceClaim. # noqa: E501 - - Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL. # noqa: E501 - - :return: The name of this V1PodResourceClaim. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PodResourceClaim. - - Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL. # noqa: E501 - - :param name: The name of this V1PodResourceClaim. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def source(self): - """Gets the source of this V1PodResourceClaim. # noqa: E501 - - - :return: The source of this V1PodResourceClaim. # noqa: E501 - :rtype: V1ClaimSource - """ - return self._source - - @source.setter - def source(self, source): - """Sets the source of this V1PodResourceClaim. - - - :param source: The source of this V1PodResourceClaim. # noqa: E501 - :type: V1ClaimSource - """ - - self._source = source - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodResourceClaim): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodResourceClaim): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim_status.py deleted file mode 100644 index 82c6d0d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_resource_claim_status.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodResourceClaimStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'resource_claim_name': 'str' - } - - attribute_map = { - 'name': 'name', - 'resource_claim_name': 'resourceClaimName' - } - - def __init__(self, name=None, resource_claim_name=None, local_vars_configuration=None): # noqa: E501 - """V1PodResourceClaimStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._resource_claim_name = None - self.discriminator = None - - self.name = name - if resource_claim_name is not None: - self.resource_claim_name = resource_claim_name - - @property - def name(self): - """Gets the name of this V1PodResourceClaimStatus. # noqa: E501 - - Name uniquely identifies this resource claim inside the pod. This must match the name of an entry in pod.spec.resourceClaims, which implies that the string must be a DNS_LABEL. # noqa: E501 - - :return: The name of this V1PodResourceClaimStatus. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PodResourceClaimStatus. - - Name uniquely identifies this resource claim inside the pod. This must match the name of an entry in pod.spec.resourceClaims, which implies that the string must be a DNS_LABEL. # noqa: E501 - - :param name: The name of this V1PodResourceClaimStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def resource_claim_name(self): - """Gets the resource_claim_name of this V1PodResourceClaimStatus. # noqa: E501 - - ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. It this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case. # noqa: E501 - - :return: The resource_claim_name of this V1PodResourceClaimStatus. # noqa: E501 - :rtype: str - """ - return self._resource_claim_name - - @resource_claim_name.setter - def resource_claim_name(self, resource_claim_name): - """Sets the resource_claim_name of this V1PodResourceClaimStatus. - - ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. It this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case. # noqa: E501 - - :param resource_claim_name: The resource_claim_name of this V1PodResourceClaimStatus. # noqa: E501 - :type: str - """ - - self._resource_claim_name = resource_claim_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodResourceClaimStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodResourceClaimStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_scheduling_gate.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_scheduling_gate.py deleted file mode 100644 index 797cb6c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_scheduling_gate.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodSchedulingGate(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1PodSchedulingGate - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1PodSchedulingGate. # noqa: E501 - - Name of the scheduling gate. Each scheduling gate must have a unique name field. # noqa: E501 - - :return: The name of this V1PodSchedulingGate. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PodSchedulingGate. - - Name of the scheduling gate. Each scheduling gate must have a unique name field. # noqa: E501 - - :param name: The name of this V1PodSchedulingGate. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodSchedulingGate): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodSchedulingGate): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_security_context.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_security_context.py deleted file mode 100644 index 5b6255a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_security_context.py +++ /dev/null @@ -1,368 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodSecurityContext(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_group': 'int', - 'fs_group_change_policy': 'str', - 'run_as_group': 'int', - 'run_as_non_root': 'bool', - 'run_as_user': 'int', - 'se_linux_options': 'V1SELinuxOptions', - 'seccomp_profile': 'V1SeccompProfile', - 'supplemental_groups': 'list[int]', - 'sysctls': 'list[V1Sysctl]', - 'windows_options': 'V1WindowsSecurityContextOptions' - } - - attribute_map = { - 'fs_group': 'fsGroup', - 'fs_group_change_policy': 'fsGroupChangePolicy', - 'run_as_group': 'runAsGroup', - 'run_as_non_root': 'runAsNonRoot', - 'run_as_user': 'runAsUser', - 'se_linux_options': 'seLinuxOptions', - 'seccomp_profile': 'seccompProfile', - 'supplemental_groups': 'supplementalGroups', - 'sysctls': 'sysctls', - 'windows_options': 'windowsOptions' - } - - def __init__(self, fs_group=None, fs_group_change_policy=None, run_as_group=None, run_as_non_root=None, run_as_user=None, se_linux_options=None, seccomp_profile=None, supplemental_groups=None, sysctls=None, windows_options=None, local_vars_configuration=None): # noqa: E501 - """V1PodSecurityContext - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_group = None - self._fs_group_change_policy = None - self._run_as_group = None - self._run_as_non_root = None - self._run_as_user = None - self._se_linux_options = None - self._seccomp_profile = None - self._supplemental_groups = None - self._sysctls = None - self._windows_options = None - self.discriminator = None - - if fs_group is not None: - self.fs_group = fs_group - if fs_group_change_policy is not None: - self.fs_group_change_policy = fs_group_change_policy - if run_as_group is not None: - self.run_as_group = run_as_group - if run_as_non_root is not None: - self.run_as_non_root = run_as_non_root - if run_as_user is not None: - self.run_as_user = run_as_user - if se_linux_options is not None: - self.se_linux_options = se_linux_options - if seccomp_profile is not None: - self.seccomp_profile = seccomp_profile - if supplemental_groups is not None: - self.supplemental_groups = supplemental_groups - if sysctls is not None: - self.sysctls = sysctls - if windows_options is not None: - self.windows_options = windows_options - - @property - def fs_group(self): - """Gets the fs_group of this V1PodSecurityContext. # noqa: E501 - - A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The fs_group of this V1PodSecurityContext. # noqa: E501 - :rtype: int - """ - return self._fs_group - - @fs_group.setter - def fs_group(self, fs_group): - """Sets the fs_group of this V1PodSecurityContext. - - A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param fs_group: The fs_group of this V1PodSecurityContext. # noqa: E501 - :type: int - """ - - self._fs_group = fs_group - - @property - def fs_group_change_policy(self): - """Gets the fs_group_change_policy of this V1PodSecurityContext. # noqa: E501 - - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The fs_group_change_policy of this V1PodSecurityContext. # noqa: E501 - :rtype: str - """ - return self._fs_group_change_policy - - @fs_group_change_policy.setter - def fs_group_change_policy(self, fs_group_change_policy): - """Sets the fs_group_change_policy of this V1PodSecurityContext. - - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param fs_group_change_policy: The fs_group_change_policy of this V1PodSecurityContext. # noqa: E501 - :type: str - """ - - self._fs_group_change_policy = fs_group_change_policy - - @property - def run_as_group(self): - """Gets the run_as_group of this V1PodSecurityContext. # noqa: E501 - - The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The run_as_group of this V1PodSecurityContext. # noqa: E501 - :rtype: int - """ - return self._run_as_group - - @run_as_group.setter - def run_as_group(self, run_as_group): - """Sets the run_as_group of this V1PodSecurityContext. - - The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param run_as_group: The run_as_group of this V1PodSecurityContext. # noqa: E501 - :type: int - """ - - self._run_as_group = run_as_group - - @property - def run_as_non_root(self): - """Gets the run_as_non_root of this V1PodSecurityContext. # noqa: E501 - - Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :return: The run_as_non_root of this V1PodSecurityContext. # noqa: E501 - :rtype: bool - """ - return self._run_as_non_root - - @run_as_non_root.setter - def run_as_non_root(self, run_as_non_root): - """Sets the run_as_non_root of this V1PodSecurityContext. - - Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :param run_as_non_root: The run_as_non_root of this V1PodSecurityContext. # noqa: E501 - :type: bool - """ - - self._run_as_non_root = run_as_non_root - - @property - def run_as_user(self): - """Gets the run_as_user of this V1PodSecurityContext. # noqa: E501 - - The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The run_as_user of this V1PodSecurityContext. # noqa: E501 - :rtype: int - """ - return self._run_as_user - - @run_as_user.setter - def run_as_user(self, run_as_user): - """Sets the run_as_user of this V1PodSecurityContext. - - The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param run_as_user: The run_as_user of this V1PodSecurityContext. # noqa: E501 - :type: int - """ - - self._run_as_user = run_as_user - - @property - def se_linux_options(self): - """Gets the se_linux_options of this V1PodSecurityContext. # noqa: E501 - - - :return: The se_linux_options of this V1PodSecurityContext. # noqa: E501 - :rtype: V1SELinuxOptions - """ - return self._se_linux_options - - @se_linux_options.setter - def se_linux_options(self, se_linux_options): - """Sets the se_linux_options of this V1PodSecurityContext. - - - :param se_linux_options: The se_linux_options of this V1PodSecurityContext. # noqa: E501 - :type: V1SELinuxOptions - """ - - self._se_linux_options = se_linux_options - - @property - def seccomp_profile(self): - """Gets the seccomp_profile of this V1PodSecurityContext. # noqa: E501 - - - :return: The seccomp_profile of this V1PodSecurityContext. # noqa: E501 - :rtype: V1SeccompProfile - """ - return self._seccomp_profile - - @seccomp_profile.setter - def seccomp_profile(self, seccomp_profile): - """Sets the seccomp_profile of this V1PodSecurityContext. - - - :param seccomp_profile: The seccomp_profile of this V1PodSecurityContext. # noqa: E501 - :type: V1SeccompProfile - """ - - self._seccomp_profile = seccomp_profile - - @property - def supplemental_groups(self): - """Gets the supplemental_groups of this V1PodSecurityContext. # noqa: E501 - - A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The supplemental_groups of this V1PodSecurityContext. # noqa: E501 - :rtype: list[int] - """ - return self._supplemental_groups - - @supplemental_groups.setter - def supplemental_groups(self, supplemental_groups): - """Sets the supplemental_groups of this V1PodSecurityContext. - - A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param supplemental_groups: The supplemental_groups of this V1PodSecurityContext. # noqa: E501 - :type: list[int] - """ - - self._supplemental_groups = supplemental_groups - - @property - def sysctls(self): - """Gets the sysctls of this V1PodSecurityContext. # noqa: E501 - - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The sysctls of this V1PodSecurityContext. # noqa: E501 - :rtype: list[V1Sysctl] - """ - return self._sysctls - - @sysctls.setter - def sysctls(self, sysctls): - """Sets the sysctls of this V1PodSecurityContext. - - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param sysctls: The sysctls of this V1PodSecurityContext. # noqa: E501 - :type: list[V1Sysctl] - """ - - self._sysctls = sysctls - - @property - def windows_options(self): - """Gets the windows_options of this V1PodSecurityContext. # noqa: E501 - - - :return: The windows_options of this V1PodSecurityContext. # noqa: E501 - :rtype: V1WindowsSecurityContextOptions - """ - return self._windows_options - - @windows_options.setter - def windows_options(self, windows_options): - """Sets the windows_options of this V1PodSecurityContext. - - - :param windows_options: The windows_options of this V1PodSecurityContext. # noqa: E501 - :type: V1WindowsSecurityContextOptions - """ - - self._windows_options = windows_options - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodSecurityContext): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodSecurityContext): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_spec.py deleted file mode 100644 index 6ef77a6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_spec.py +++ /dev/null @@ -1,1179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'active_deadline_seconds': 'int', - 'affinity': 'V1Affinity', - 'automount_service_account_token': 'bool', - 'containers': 'list[V1Container]', - 'dns_config': 'V1PodDNSConfig', - 'dns_policy': 'str', - 'enable_service_links': 'bool', - 'ephemeral_containers': 'list[V1EphemeralContainer]', - 'host_aliases': 'list[V1HostAlias]', - 'host_ipc': 'bool', - 'host_network': 'bool', - 'host_pid': 'bool', - 'host_users': 'bool', - 'hostname': 'str', - 'image_pull_secrets': 'list[V1LocalObjectReference]', - 'init_containers': 'list[V1Container]', - 'node_name': 'str', - 'node_selector': 'dict(str, str)', - 'os': 'V1PodOS', - 'overhead': 'dict(str, str)', - 'preemption_policy': 'str', - 'priority': 'int', - 'priority_class_name': 'str', - 'readiness_gates': 'list[V1PodReadinessGate]', - 'resource_claims': 'list[V1PodResourceClaim]', - 'restart_policy': 'str', - 'runtime_class_name': 'str', - 'scheduler_name': 'str', - 'scheduling_gates': 'list[V1PodSchedulingGate]', - 'security_context': 'V1PodSecurityContext', - 'service_account': 'str', - 'service_account_name': 'str', - 'set_hostname_as_fqdn': 'bool', - 'share_process_namespace': 'bool', - 'subdomain': 'str', - 'termination_grace_period_seconds': 'int', - 'tolerations': 'list[V1Toleration]', - 'topology_spread_constraints': 'list[V1TopologySpreadConstraint]', - 'volumes': 'list[V1Volume]' - } - - attribute_map = { - 'active_deadline_seconds': 'activeDeadlineSeconds', - 'affinity': 'affinity', - 'automount_service_account_token': 'automountServiceAccountToken', - 'containers': 'containers', - 'dns_config': 'dnsConfig', - 'dns_policy': 'dnsPolicy', - 'enable_service_links': 'enableServiceLinks', - 'ephemeral_containers': 'ephemeralContainers', - 'host_aliases': 'hostAliases', - 'host_ipc': 'hostIPC', - 'host_network': 'hostNetwork', - 'host_pid': 'hostPID', - 'host_users': 'hostUsers', - 'hostname': 'hostname', - 'image_pull_secrets': 'imagePullSecrets', - 'init_containers': 'initContainers', - 'node_name': 'nodeName', - 'node_selector': 'nodeSelector', - 'os': 'os', - 'overhead': 'overhead', - 'preemption_policy': 'preemptionPolicy', - 'priority': 'priority', - 'priority_class_name': 'priorityClassName', - 'readiness_gates': 'readinessGates', - 'resource_claims': 'resourceClaims', - 'restart_policy': 'restartPolicy', - 'runtime_class_name': 'runtimeClassName', - 'scheduler_name': 'schedulerName', - 'scheduling_gates': 'schedulingGates', - 'security_context': 'securityContext', - 'service_account': 'serviceAccount', - 'service_account_name': 'serviceAccountName', - 'set_hostname_as_fqdn': 'setHostnameAsFQDN', - 'share_process_namespace': 'shareProcessNamespace', - 'subdomain': 'subdomain', - 'termination_grace_period_seconds': 'terminationGracePeriodSeconds', - 'tolerations': 'tolerations', - 'topology_spread_constraints': 'topologySpreadConstraints', - 'volumes': 'volumes' - } - - def __init__(self, active_deadline_seconds=None, affinity=None, automount_service_account_token=None, containers=None, dns_config=None, dns_policy=None, enable_service_links=None, ephemeral_containers=None, host_aliases=None, host_ipc=None, host_network=None, host_pid=None, host_users=None, hostname=None, image_pull_secrets=None, init_containers=None, node_name=None, node_selector=None, os=None, overhead=None, preemption_policy=None, priority=None, priority_class_name=None, readiness_gates=None, resource_claims=None, restart_policy=None, runtime_class_name=None, scheduler_name=None, scheduling_gates=None, security_context=None, service_account=None, service_account_name=None, set_hostname_as_fqdn=None, share_process_namespace=None, subdomain=None, termination_grace_period_seconds=None, tolerations=None, topology_spread_constraints=None, volumes=None, local_vars_configuration=None): # noqa: E501 - """V1PodSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._active_deadline_seconds = None - self._affinity = None - self._automount_service_account_token = None - self._containers = None - self._dns_config = None - self._dns_policy = None - self._enable_service_links = None - self._ephemeral_containers = None - self._host_aliases = None - self._host_ipc = None - self._host_network = None - self._host_pid = None - self._host_users = None - self._hostname = None - self._image_pull_secrets = None - self._init_containers = None - self._node_name = None - self._node_selector = None - self._os = None - self._overhead = None - self._preemption_policy = None - self._priority = None - self._priority_class_name = None - self._readiness_gates = None - self._resource_claims = None - self._restart_policy = None - self._runtime_class_name = None - self._scheduler_name = None - self._scheduling_gates = None - self._security_context = None - self._service_account = None - self._service_account_name = None - self._set_hostname_as_fqdn = None - self._share_process_namespace = None - self._subdomain = None - self._termination_grace_period_seconds = None - self._tolerations = None - self._topology_spread_constraints = None - self._volumes = None - self.discriminator = None - - if active_deadline_seconds is not None: - self.active_deadline_seconds = active_deadline_seconds - if affinity is not None: - self.affinity = affinity - if automount_service_account_token is not None: - self.automount_service_account_token = automount_service_account_token - self.containers = containers - if dns_config is not None: - self.dns_config = dns_config - if dns_policy is not None: - self.dns_policy = dns_policy - if enable_service_links is not None: - self.enable_service_links = enable_service_links - if ephemeral_containers is not None: - self.ephemeral_containers = ephemeral_containers - if host_aliases is not None: - self.host_aliases = host_aliases - if host_ipc is not None: - self.host_ipc = host_ipc - if host_network is not None: - self.host_network = host_network - if host_pid is not None: - self.host_pid = host_pid - if host_users is not None: - self.host_users = host_users - if hostname is not None: - self.hostname = hostname - if image_pull_secrets is not None: - self.image_pull_secrets = image_pull_secrets - if init_containers is not None: - self.init_containers = init_containers - if node_name is not None: - self.node_name = node_name - if node_selector is not None: - self.node_selector = node_selector - if os is not None: - self.os = os - if overhead is not None: - self.overhead = overhead - if preemption_policy is not None: - self.preemption_policy = preemption_policy - if priority is not None: - self.priority = priority - if priority_class_name is not None: - self.priority_class_name = priority_class_name - if readiness_gates is not None: - self.readiness_gates = readiness_gates - if resource_claims is not None: - self.resource_claims = resource_claims - if restart_policy is not None: - self.restart_policy = restart_policy - if runtime_class_name is not None: - self.runtime_class_name = runtime_class_name - if scheduler_name is not None: - self.scheduler_name = scheduler_name - if scheduling_gates is not None: - self.scheduling_gates = scheduling_gates - if security_context is not None: - self.security_context = security_context - if service_account is not None: - self.service_account = service_account - if service_account_name is not None: - self.service_account_name = service_account_name - if set_hostname_as_fqdn is not None: - self.set_hostname_as_fqdn = set_hostname_as_fqdn - if share_process_namespace is not None: - self.share_process_namespace = share_process_namespace - if subdomain is not None: - self.subdomain = subdomain - if termination_grace_period_seconds is not None: - self.termination_grace_period_seconds = termination_grace_period_seconds - if tolerations is not None: - self.tolerations = tolerations - if topology_spread_constraints is not None: - self.topology_spread_constraints = topology_spread_constraints - if volumes is not None: - self.volumes = volumes - - @property - def active_deadline_seconds(self): - """Gets the active_deadline_seconds of this V1PodSpec. # noqa: E501 - - Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer. # noqa: E501 - - :return: The active_deadline_seconds of this V1PodSpec. # noqa: E501 - :rtype: int - """ - return self._active_deadline_seconds - - @active_deadline_seconds.setter - def active_deadline_seconds(self, active_deadline_seconds): - """Sets the active_deadline_seconds of this V1PodSpec. - - Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer. # noqa: E501 - - :param active_deadline_seconds: The active_deadline_seconds of this V1PodSpec. # noqa: E501 - :type: int - """ - - self._active_deadline_seconds = active_deadline_seconds - - @property - def affinity(self): - """Gets the affinity of this V1PodSpec. # noqa: E501 - - - :return: The affinity of this V1PodSpec. # noqa: E501 - :rtype: V1Affinity - """ - return self._affinity - - @affinity.setter - def affinity(self, affinity): - """Sets the affinity of this V1PodSpec. - - - :param affinity: The affinity of this V1PodSpec. # noqa: E501 - :type: V1Affinity - """ - - self._affinity = affinity - - @property - def automount_service_account_token(self): - """Gets the automount_service_account_token of this V1PodSpec. # noqa: E501 - - AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. # noqa: E501 - - :return: The automount_service_account_token of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._automount_service_account_token - - @automount_service_account_token.setter - def automount_service_account_token(self, automount_service_account_token): - """Sets the automount_service_account_token of this V1PodSpec. - - AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. # noqa: E501 - - :param automount_service_account_token: The automount_service_account_token of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._automount_service_account_token = automount_service_account_token - - @property - def containers(self): - """Gets the containers of this V1PodSpec. # noqa: E501 - - List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. # noqa: E501 - - :return: The containers of this V1PodSpec. # noqa: E501 - :rtype: list[V1Container] - """ - return self._containers - - @containers.setter - def containers(self, containers): - """Sets the containers of this V1PodSpec. - - List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. # noqa: E501 - - :param containers: The containers of this V1PodSpec. # noqa: E501 - :type: list[V1Container] - """ - if self.local_vars_configuration.client_side_validation and containers is None: # noqa: E501 - raise ValueError("Invalid value for `containers`, must not be `None`") # noqa: E501 - - self._containers = containers - - @property - def dns_config(self): - """Gets the dns_config of this V1PodSpec. # noqa: E501 - - - :return: The dns_config of this V1PodSpec. # noqa: E501 - :rtype: V1PodDNSConfig - """ - return self._dns_config - - @dns_config.setter - def dns_config(self, dns_config): - """Sets the dns_config of this V1PodSpec. - - - :param dns_config: The dns_config of this V1PodSpec. # noqa: E501 - :type: V1PodDNSConfig - """ - - self._dns_config = dns_config - - @property - def dns_policy(self): - """Gets the dns_policy of this V1PodSpec. # noqa: E501 - - Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. # noqa: E501 - - :return: The dns_policy of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._dns_policy - - @dns_policy.setter - def dns_policy(self, dns_policy): - """Sets the dns_policy of this V1PodSpec. - - Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. # noqa: E501 - - :param dns_policy: The dns_policy of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._dns_policy = dns_policy - - @property - def enable_service_links(self): - """Gets the enable_service_links of this V1PodSpec. # noqa: E501 - - EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true. # noqa: E501 - - :return: The enable_service_links of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._enable_service_links - - @enable_service_links.setter - def enable_service_links(self, enable_service_links): - """Sets the enable_service_links of this V1PodSpec. - - EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true. # noqa: E501 - - :param enable_service_links: The enable_service_links of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._enable_service_links = enable_service_links - - @property - def ephemeral_containers(self): - """Gets the ephemeral_containers of this V1PodSpec. # noqa: E501 - - List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. # noqa: E501 - - :return: The ephemeral_containers of this V1PodSpec. # noqa: E501 - :rtype: list[V1EphemeralContainer] - """ - return self._ephemeral_containers - - @ephemeral_containers.setter - def ephemeral_containers(self, ephemeral_containers): - """Sets the ephemeral_containers of this V1PodSpec. - - List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. # noqa: E501 - - :param ephemeral_containers: The ephemeral_containers of this V1PodSpec. # noqa: E501 - :type: list[V1EphemeralContainer] - """ - - self._ephemeral_containers = ephemeral_containers - - @property - def host_aliases(self): - """Gets the host_aliases of this V1PodSpec. # noqa: E501 - - HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods. # noqa: E501 - - :return: The host_aliases of this V1PodSpec. # noqa: E501 - :rtype: list[V1HostAlias] - """ - return self._host_aliases - - @host_aliases.setter - def host_aliases(self, host_aliases): - """Sets the host_aliases of this V1PodSpec. - - HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods. # noqa: E501 - - :param host_aliases: The host_aliases of this V1PodSpec. # noqa: E501 - :type: list[V1HostAlias] - """ - - self._host_aliases = host_aliases - - @property - def host_ipc(self): - """Gets the host_ipc of this V1PodSpec. # noqa: E501 - - Use the host's ipc namespace. Optional: Default to false. # noqa: E501 - - :return: The host_ipc of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._host_ipc - - @host_ipc.setter - def host_ipc(self, host_ipc): - """Sets the host_ipc of this V1PodSpec. - - Use the host's ipc namespace. Optional: Default to false. # noqa: E501 - - :param host_ipc: The host_ipc of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._host_ipc = host_ipc - - @property - def host_network(self): - """Gets the host_network of this V1PodSpec. # noqa: E501 - - Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false. # noqa: E501 - - :return: The host_network of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._host_network - - @host_network.setter - def host_network(self, host_network): - """Sets the host_network of this V1PodSpec. - - Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false. # noqa: E501 - - :param host_network: The host_network of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._host_network = host_network - - @property - def host_pid(self): - """Gets the host_pid of this V1PodSpec. # noqa: E501 - - Use the host's pid namespace. Optional: Default to false. # noqa: E501 - - :return: The host_pid of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._host_pid - - @host_pid.setter - def host_pid(self, host_pid): - """Sets the host_pid of this V1PodSpec. - - Use the host's pid namespace. Optional: Default to false. # noqa: E501 - - :param host_pid: The host_pid of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._host_pid = host_pid - - @property - def host_users(self): - """Gets the host_users of this V1PodSpec. # noqa: E501 - - Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. # noqa: E501 - - :return: The host_users of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._host_users - - @host_users.setter - def host_users(self, host_users): - """Sets the host_users of this V1PodSpec. - - Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. # noqa: E501 - - :param host_users: The host_users of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._host_users = host_users - - @property - def hostname(self): - """Gets the hostname of this V1PodSpec. # noqa: E501 - - Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value. # noqa: E501 - - :return: The hostname of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._hostname - - @hostname.setter - def hostname(self, hostname): - """Sets the hostname of this V1PodSpec. - - Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value. # noqa: E501 - - :param hostname: The hostname of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._hostname = hostname - - @property - def image_pull_secrets(self): - """Gets the image_pull_secrets of this V1PodSpec. # noqa: E501 - - ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod # noqa: E501 - - :return: The image_pull_secrets of this V1PodSpec. # noqa: E501 - :rtype: list[V1LocalObjectReference] - """ - return self._image_pull_secrets - - @image_pull_secrets.setter - def image_pull_secrets(self, image_pull_secrets): - """Sets the image_pull_secrets of this V1PodSpec. - - ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod # noqa: E501 - - :param image_pull_secrets: The image_pull_secrets of this V1PodSpec. # noqa: E501 - :type: list[V1LocalObjectReference] - """ - - self._image_pull_secrets = image_pull_secrets - - @property - def init_containers(self): - """Gets the init_containers of this V1PodSpec. # noqa: E501 - - List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ # noqa: E501 - - :return: The init_containers of this V1PodSpec. # noqa: E501 - :rtype: list[V1Container] - """ - return self._init_containers - - @init_containers.setter - def init_containers(self, init_containers): - """Sets the init_containers of this V1PodSpec. - - List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ # noqa: E501 - - :param init_containers: The init_containers of this V1PodSpec. # noqa: E501 - :type: list[V1Container] - """ - - self._init_containers = init_containers - - @property - def node_name(self): - """Gets the node_name of this V1PodSpec. # noqa: E501 - - NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements. # noqa: E501 - - :return: The node_name of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._node_name - - @node_name.setter - def node_name(self, node_name): - """Sets the node_name of this V1PodSpec. - - NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements. # noqa: E501 - - :param node_name: The node_name of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._node_name = node_name - - @property - def node_selector(self): - """Gets the node_selector of this V1PodSpec. # noqa: E501 - - NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ # noqa: E501 - - :return: The node_selector of this V1PodSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._node_selector - - @node_selector.setter - def node_selector(self, node_selector): - """Sets the node_selector of this V1PodSpec. - - NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ # noqa: E501 - - :param node_selector: The node_selector of this V1PodSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._node_selector = node_selector - - @property - def os(self): - """Gets the os of this V1PodSpec. # noqa: E501 - - - :return: The os of this V1PodSpec. # noqa: E501 - :rtype: V1PodOS - """ - return self._os - - @os.setter - def os(self, os): - """Sets the os of this V1PodSpec. - - - :param os: The os of this V1PodSpec. # noqa: E501 - :type: V1PodOS - """ - - self._os = os - - @property - def overhead(self): - """Gets the overhead of this V1PodSpec. # noqa: E501 - - Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md # noqa: E501 - - :return: The overhead of this V1PodSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._overhead - - @overhead.setter - def overhead(self, overhead): - """Sets the overhead of this V1PodSpec. - - Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md # noqa: E501 - - :param overhead: The overhead of this V1PodSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._overhead = overhead - - @property - def preemption_policy(self): - """Gets the preemption_policy of this V1PodSpec. # noqa: E501 - - PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. # noqa: E501 - - :return: The preemption_policy of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._preemption_policy - - @preemption_policy.setter - def preemption_policy(self, preemption_policy): - """Sets the preemption_policy of this V1PodSpec. - - PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. # noqa: E501 - - :param preemption_policy: The preemption_policy of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._preemption_policy = preemption_policy - - @property - def priority(self): - """Gets the priority of this V1PodSpec. # noqa: E501 - - The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. # noqa: E501 - - :return: The priority of this V1PodSpec. # noqa: E501 - :rtype: int - """ - return self._priority - - @priority.setter - def priority(self, priority): - """Sets the priority of this V1PodSpec. - - The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. # noqa: E501 - - :param priority: The priority of this V1PodSpec. # noqa: E501 - :type: int - """ - - self._priority = priority - - @property - def priority_class_name(self): - """Gets the priority_class_name of this V1PodSpec. # noqa: E501 - - If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. # noqa: E501 - - :return: The priority_class_name of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._priority_class_name - - @priority_class_name.setter - def priority_class_name(self, priority_class_name): - """Sets the priority_class_name of this V1PodSpec. - - If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. # noqa: E501 - - :param priority_class_name: The priority_class_name of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._priority_class_name = priority_class_name - - @property - def readiness_gates(self): - """Gets the readiness_gates of this V1PodSpec. # noqa: E501 - - If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates # noqa: E501 - - :return: The readiness_gates of this V1PodSpec. # noqa: E501 - :rtype: list[V1PodReadinessGate] - """ - return self._readiness_gates - - @readiness_gates.setter - def readiness_gates(self, readiness_gates): - """Sets the readiness_gates of this V1PodSpec. - - If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates # noqa: E501 - - :param readiness_gates: The readiness_gates of this V1PodSpec. # noqa: E501 - :type: list[V1PodReadinessGate] - """ - - self._readiness_gates = readiness_gates - - @property - def resource_claims(self): - """Gets the resource_claims of this V1PodSpec. # noqa: E501 - - ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name. This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. This field is immutable. # noqa: E501 - - :return: The resource_claims of this V1PodSpec. # noqa: E501 - :rtype: list[V1PodResourceClaim] - """ - return self._resource_claims - - @resource_claims.setter - def resource_claims(self, resource_claims): - """Sets the resource_claims of this V1PodSpec. - - ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name. This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. This field is immutable. # noqa: E501 - - :param resource_claims: The resource_claims of this V1PodSpec. # noqa: E501 - :type: list[V1PodResourceClaim] - """ - - self._resource_claims = resource_claims - - @property - def restart_policy(self): - """Gets the restart_policy of this V1PodSpec. # noqa: E501 - - Restart policy for all containers within the pod. One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy # noqa: E501 - - :return: The restart_policy of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._restart_policy - - @restart_policy.setter - def restart_policy(self, restart_policy): - """Sets the restart_policy of this V1PodSpec. - - Restart policy for all containers within the pod. One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy # noqa: E501 - - :param restart_policy: The restart_policy of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._restart_policy = restart_policy - - @property - def runtime_class_name(self): - """Gets the runtime_class_name of this V1PodSpec. # noqa: E501 - - RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class # noqa: E501 - - :return: The runtime_class_name of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._runtime_class_name - - @runtime_class_name.setter - def runtime_class_name(self, runtime_class_name): - """Sets the runtime_class_name of this V1PodSpec. - - RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class # noqa: E501 - - :param runtime_class_name: The runtime_class_name of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._runtime_class_name = runtime_class_name - - @property - def scheduler_name(self): - """Gets the scheduler_name of this V1PodSpec. # noqa: E501 - - If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. # noqa: E501 - - :return: The scheduler_name of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._scheduler_name - - @scheduler_name.setter - def scheduler_name(self, scheduler_name): - """Sets the scheduler_name of this V1PodSpec. - - If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. # noqa: E501 - - :param scheduler_name: The scheduler_name of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._scheduler_name = scheduler_name - - @property - def scheduling_gates(self): - """Gets the scheduling_gates of this V1PodSpec. # noqa: E501 - - SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod. SchedulingGates can only be set at pod creation time, and be removed only afterwards. This is a beta feature enabled by the PodSchedulingReadiness feature gate. # noqa: E501 - - :return: The scheduling_gates of this V1PodSpec. # noqa: E501 - :rtype: list[V1PodSchedulingGate] - """ - return self._scheduling_gates - - @scheduling_gates.setter - def scheduling_gates(self, scheduling_gates): - """Sets the scheduling_gates of this V1PodSpec. - - SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod. SchedulingGates can only be set at pod creation time, and be removed only afterwards. This is a beta feature enabled by the PodSchedulingReadiness feature gate. # noqa: E501 - - :param scheduling_gates: The scheduling_gates of this V1PodSpec. # noqa: E501 - :type: list[V1PodSchedulingGate] - """ - - self._scheduling_gates = scheduling_gates - - @property - def security_context(self): - """Gets the security_context of this V1PodSpec. # noqa: E501 - - - :return: The security_context of this V1PodSpec. # noqa: E501 - :rtype: V1PodSecurityContext - """ - return self._security_context - - @security_context.setter - def security_context(self, security_context): - """Sets the security_context of this V1PodSpec. - - - :param security_context: The security_context of this V1PodSpec. # noqa: E501 - :type: V1PodSecurityContext - """ - - self._security_context = security_context - - @property - def service_account(self): - """Gets the service_account of this V1PodSpec. # noqa: E501 - - DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead. # noqa: E501 - - :return: The service_account of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._service_account - - @service_account.setter - def service_account(self, service_account): - """Sets the service_account of this V1PodSpec. - - DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead. # noqa: E501 - - :param service_account: The service_account of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._service_account = service_account - - @property - def service_account_name(self): - """Gets the service_account_name of this V1PodSpec. # noqa: E501 - - ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ # noqa: E501 - - :return: The service_account_name of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._service_account_name - - @service_account_name.setter - def service_account_name(self, service_account_name): - """Sets the service_account_name of this V1PodSpec. - - ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ # noqa: E501 - - :param service_account_name: The service_account_name of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._service_account_name = service_account_name - - @property - def set_hostname_as_fqdn(self): - """Gets the set_hostname_as_fqdn of this V1PodSpec. # noqa: E501 - - If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. # noqa: E501 - - :return: The set_hostname_as_fqdn of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._set_hostname_as_fqdn - - @set_hostname_as_fqdn.setter - def set_hostname_as_fqdn(self, set_hostname_as_fqdn): - """Sets the set_hostname_as_fqdn of this V1PodSpec. - - If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false. # noqa: E501 - - :param set_hostname_as_fqdn: The set_hostname_as_fqdn of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._set_hostname_as_fqdn = set_hostname_as_fqdn - - @property - def share_process_namespace(self): - """Gets the share_process_namespace of this V1PodSpec. # noqa: E501 - - Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. # noqa: E501 - - :return: The share_process_namespace of this V1PodSpec. # noqa: E501 - :rtype: bool - """ - return self._share_process_namespace - - @share_process_namespace.setter - def share_process_namespace(self, share_process_namespace): - """Sets the share_process_namespace of this V1PodSpec. - - Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false. # noqa: E501 - - :param share_process_namespace: The share_process_namespace of this V1PodSpec. # noqa: E501 - :type: bool - """ - - self._share_process_namespace = share_process_namespace - - @property - def subdomain(self): - """Gets the subdomain of this V1PodSpec. # noqa: E501 - - If specified, the fully qualified Pod hostname will be \"...svc.\". If not specified, the pod will not have a domainname at all. # noqa: E501 - - :return: The subdomain of this V1PodSpec. # noqa: E501 - :rtype: str - """ - return self._subdomain - - @subdomain.setter - def subdomain(self, subdomain): - """Sets the subdomain of this V1PodSpec. - - If specified, the fully qualified Pod hostname will be \"...svc.\". If not specified, the pod will not have a domainname at all. # noqa: E501 - - :param subdomain: The subdomain of this V1PodSpec. # noqa: E501 - :type: str - """ - - self._subdomain = subdomain - - @property - def termination_grace_period_seconds(self): - """Gets the termination_grace_period_seconds of this V1PodSpec. # noqa: E501 - - Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds. # noqa: E501 - - :return: The termination_grace_period_seconds of this V1PodSpec. # noqa: E501 - :rtype: int - """ - return self._termination_grace_period_seconds - - @termination_grace_period_seconds.setter - def termination_grace_period_seconds(self, termination_grace_period_seconds): - """Sets the termination_grace_period_seconds of this V1PodSpec. - - Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds. # noqa: E501 - - :param termination_grace_period_seconds: The termination_grace_period_seconds of this V1PodSpec. # noqa: E501 - :type: int - """ - - self._termination_grace_period_seconds = termination_grace_period_seconds - - @property - def tolerations(self): - """Gets the tolerations of this V1PodSpec. # noqa: E501 - - If specified, the pod's tolerations. # noqa: E501 - - :return: The tolerations of this V1PodSpec. # noqa: E501 - :rtype: list[V1Toleration] - """ - return self._tolerations - - @tolerations.setter - def tolerations(self, tolerations): - """Sets the tolerations of this V1PodSpec. - - If specified, the pod's tolerations. # noqa: E501 - - :param tolerations: The tolerations of this V1PodSpec. # noqa: E501 - :type: list[V1Toleration] - """ - - self._tolerations = tolerations - - @property - def topology_spread_constraints(self): - """Gets the topology_spread_constraints of this V1PodSpec. # noqa: E501 - - TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed. # noqa: E501 - - :return: The topology_spread_constraints of this V1PodSpec. # noqa: E501 - :rtype: list[V1TopologySpreadConstraint] - """ - return self._topology_spread_constraints - - @topology_spread_constraints.setter - def topology_spread_constraints(self, topology_spread_constraints): - """Sets the topology_spread_constraints of this V1PodSpec. - - TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed. # noqa: E501 - - :param topology_spread_constraints: The topology_spread_constraints of this V1PodSpec. # noqa: E501 - :type: list[V1TopologySpreadConstraint] - """ - - self._topology_spread_constraints = topology_spread_constraints - - @property - def volumes(self): - """Gets the volumes of this V1PodSpec. # noqa: E501 - - List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes # noqa: E501 - - :return: The volumes of this V1PodSpec. # noqa: E501 - :rtype: list[V1Volume] - """ - return self._volumes - - @volumes.setter - def volumes(self, volumes): - """Sets the volumes of this V1PodSpec. - - List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes # noqa: E501 - - :param volumes: The volumes of this V1PodSpec. # noqa: E501 - :type: list[V1Volume] - """ - - self._volumes = volumes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_status.py deleted file mode 100644 index d0ab22c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_status.py +++ /dev/null @@ -1,542 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1PodCondition]', - 'container_statuses': 'list[V1ContainerStatus]', - 'ephemeral_container_statuses': 'list[V1ContainerStatus]', - 'host_ip': 'str', - 'host_i_ps': 'list[V1HostIP]', - 'init_container_statuses': 'list[V1ContainerStatus]', - 'message': 'str', - 'nominated_node_name': 'str', - 'phase': 'str', - 'pod_ip': 'str', - 'pod_i_ps': 'list[V1PodIP]', - 'qos_class': 'str', - 'reason': 'str', - 'resize': 'str', - 'resource_claim_statuses': 'list[V1PodResourceClaimStatus]', - 'start_time': 'datetime' - } - - attribute_map = { - 'conditions': 'conditions', - 'container_statuses': 'containerStatuses', - 'ephemeral_container_statuses': 'ephemeralContainerStatuses', - 'host_ip': 'hostIP', - 'host_i_ps': 'hostIPs', - 'init_container_statuses': 'initContainerStatuses', - 'message': 'message', - 'nominated_node_name': 'nominatedNodeName', - 'phase': 'phase', - 'pod_ip': 'podIP', - 'pod_i_ps': 'podIPs', - 'qos_class': 'qosClass', - 'reason': 'reason', - 'resize': 'resize', - 'resource_claim_statuses': 'resourceClaimStatuses', - 'start_time': 'startTime' - } - - def __init__(self, conditions=None, container_statuses=None, ephemeral_container_statuses=None, host_ip=None, host_i_ps=None, init_container_statuses=None, message=None, nominated_node_name=None, phase=None, pod_ip=None, pod_i_ps=None, qos_class=None, reason=None, resize=None, resource_claim_statuses=None, start_time=None, local_vars_configuration=None): # noqa: E501 - """V1PodStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._container_statuses = None - self._ephemeral_container_statuses = None - self._host_ip = None - self._host_i_ps = None - self._init_container_statuses = None - self._message = None - self._nominated_node_name = None - self._phase = None - self._pod_ip = None - self._pod_i_ps = None - self._qos_class = None - self._reason = None - self._resize = None - self._resource_claim_statuses = None - self._start_time = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if container_statuses is not None: - self.container_statuses = container_statuses - if ephemeral_container_statuses is not None: - self.ephemeral_container_statuses = ephemeral_container_statuses - if host_ip is not None: - self.host_ip = host_ip - if host_i_ps is not None: - self.host_i_ps = host_i_ps - if init_container_statuses is not None: - self.init_container_statuses = init_container_statuses - if message is not None: - self.message = message - if nominated_node_name is not None: - self.nominated_node_name = nominated_node_name - if phase is not None: - self.phase = phase - if pod_ip is not None: - self.pod_ip = pod_ip - if pod_i_ps is not None: - self.pod_i_ps = pod_i_ps - if qos_class is not None: - self.qos_class = qos_class - if reason is not None: - self.reason = reason - if resize is not None: - self.resize = resize - if resource_claim_statuses is not None: - self.resource_claim_statuses = resource_claim_statuses - if start_time is not None: - self.start_time = start_time - - @property - def conditions(self): - """Gets the conditions of this V1PodStatus. # noqa: E501 - - Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :return: The conditions of this V1PodStatus. # noqa: E501 - :rtype: list[V1PodCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1PodStatus. - - Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions # noqa: E501 - - :param conditions: The conditions of this V1PodStatus. # noqa: E501 - :type: list[V1PodCondition] - """ - - self._conditions = conditions - - @property - def container_statuses(self): - """Gets the container_statuses of this V1PodStatus. # noqa: E501 - - The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status # noqa: E501 - - :return: The container_statuses of this V1PodStatus. # noqa: E501 - :rtype: list[V1ContainerStatus] - """ - return self._container_statuses - - @container_statuses.setter - def container_statuses(self, container_statuses): - """Sets the container_statuses of this V1PodStatus. - - The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status # noqa: E501 - - :param container_statuses: The container_statuses of this V1PodStatus. # noqa: E501 - :type: list[V1ContainerStatus] - """ - - self._container_statuses = container_statuses - - @property - def ephemeral_container_statuses(self): - """Gets the ephemeral_container_statuses of this V1PodStatus. # noqa: E501 - - Status for any ephemeral containers that have run in this pod. # noqa: E501 - - :return: The ephemeral_container_statuses of this V1PodStatus. # noqa: E501 - :rtype: list[V1ContainerStatus] - """ - return self._ephemeral_container_statuses - - @ephemeral_container_statuses.setter - def ephemeral_container_statuses(self, ephemeral_container_statuses): - """Sets the ephemeral_container_statuses of this V1PodStatus. - - Status for any ephemeral containers that have run in this pod. # noqa: E501 - - :param ephemeral_container_statuses: The ephemeral_container_statuses of this V1PodStatus. # noqa: E501 - :type: list[V1ContainerStatus] - """ - - self._ephemeral_container_statuses = ephemeral_container_statuses - - @property - def host_ip(self): - """Gets the host_ip of this V1PodStatus. # noqa: E501 - - hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod # noqa: E501 - - :return: The host_ip of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._host_ip - - @host_ip.setter - def host_ip(self, host_ip): - """Sets the host_ip of this V1PodStatus. - - hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod # noqa: E501 - - :param host_ip: The host_ip of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._host_ip = host_ip - - @property - def host_i_ps(self): - """Gets the host_i_ps of this V1PodStatus. # noqa: E501 - - hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod. # noqa: E501 - - :return: The host_i_ps of this V1PodStatus. # noqa: E501 - :rtype: list[V1HostIP] - """ - return self._host_i_ps - - @host_i_ps.setter - def host_i_ps(self, host_i_ps): - """Sets the host_i_ps of this V1PodStatus. - - hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod. # noqa: E501 - - :param host_i_ps: The host_i_ps of this V1PodStatus. # noqa: E501 - :type: list[V1HostIP] - """ - - self._host_i_ps = host_i_ps - - @property - def init_container_statuses(self): - """Gets the init_container_statuses of this V1PodStatus. # noqa: E501 - - The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status # noqa: E501 - - :return: The init_container_statuses of this V1PodStatus. # noqa: E501 - :rtype: list[V1ContainerStatus] - """ - return self._init_container_statuses - - @init_container_statuses.setter - def init_container_statuses(self, init_container_statuses): - """Sets the init_container_statuses of this V1PodStatus. - - The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status # noqa: E501 - - :param init_container_statuses: The init_container_statuses of this V1PodStatus. # noqa: E501 - :type: list[V1ContainerStatus] - """ - - self._init_container_statuses = init_container_statuses - - @property - def message(self): - """Gets the message of this V1PodStatus. # noqa: E501 - - A human readable message indicating details about why the pod is in this condition. # noqa: E501 - - :return: The message of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1PodStatus. - - A human readable message indicating details about why the pod is in this condition. # noqa: E501 - - :param message: The message of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def nominated_node_name(self): - """Gets the nominated_node_name of this V1PodStatus. # noqa: E501 - - nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled. # noqa: E501 - - :return: The nominated_node_name of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._nominated_node_name - - @nominated_node_name.setter - def nominated_node_name(self, nominated_node_name): - """Sets the nominated_node_name of this V1PodStatus. - - nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled. # noqa: E501 - - :param nominated_node_name: The nominated_node_name of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._nominated_node_name = nominated_node_name - - @property - def phase(self): - """Gets the phase of this V1PodStatus. # noqa: E501 - - The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values: Pending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase # noqa: E501 - - :return: The phase of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._phase - - @phase.setter - def phase(self, phase): - """Sets the phase of this V1PodStatus. - - The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values: Pending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase # noqa: E501 - - :param phase: The phase of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._phase = phase - - @property - def pod_ip(self): - """Gets the pod_ip of this V1PodStatus. # noqa: E501 - - podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated. # noqa: E501 - - :return: The pod_ip of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._pod_ip - - @pod_ip.setter - def pod_ip(self, pod_ip): - """Sets the pod_ip of this V1PodStatus. - - podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated. # noqa: E501 - - :param pod_ip: The pod_ip of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._pod_ip = pod_ip - - @property - def pod_i_ps(self): - """Gets the pod_i_ps of this V1PodStatus. # noqa: E501 - - podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet. # noqa: E501 - - :return: The pod_i_ps of this V1PodStatus. # noqa: E501 - :rtype: list[V1PodIP] - """ - return self._pod_i_ps - - @pod_i_ps.setter - def pod_i_ps(self, pod_i_ps): - """Sets the pod_i_ps of this V1PodStatus. - - podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet. # noqa: E501 - - :param pod_i_ps: The pod_i_ps of this V1PodStatus. # noqa: E501 - :type: list[V1PodIP] - """ - - self._pod_i_ps = pod_i_ps - - @property - def qos_class(self): - """Gets the qos_class of this V1PodStatus. # noqa: E501 - - The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes # noqa: E501 - - :return: The qos_class of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._qos_class - - @qos_class.setter - def qos_class(self, qos_class): - """Sets the qos_class of this V1PodStatus. - - The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes # noqa: E501 - - :param qos_class: The qos_class of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._qos_class = qos_class - - @property - def reason(self): - """Gets the reason of this V1PodStatus. # noqa: E501 - - A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted' # noqa: E501 - - :return: The reason of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1PodStatus. - - A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted' # noqa: E501 - - :param reason: The reason of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def resize(self): - """Gets the resize of this V1PodStatus. # noqa: E501 - - Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\" # noqa: E501 - - :return: The resize of this V1PodStatus. # noqa: E501 - :rtype: str - """ - return self._resize - - @resize.setter - def resize(self, resize): - """Sets the resize of this V1PodStatus. - - Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\" # noqa: E501 - - :param resize: The resize of this V1PodStatus. # noqa: E501 - :type: str - """ - - self._resize = resize - - @property - def resource_claim_statuses(self): - """Gets the resource_claim_statuses of this V1PodStatus. # noqa: E501 - - Status of resource claims. # noqa: E501 - - :return: The resource_claim_statuses of this V1PodStatus. # noqa: E501 - :rtype: list[V1PodResourceClaimStatus] - """ - return self._resource_claim_statuses - - @resource_claim_statuses.setter - def resource_claim_statuses(self, resource_claim_statuses): - """Sets the resource_claim_statuses of this V1PodStatus. - - Status of resource claims. # noqa: E501 - - :param resource_claim_statuses: The resource_claim_statuses of this V1PodStatus. # noqa: E501 - :type: list[V1PodResourceClaimStatus] - """ - - self._resource_claim_statuses = resource_claim_statuses - - @property - def start_time(self): - """Gets the start_time of this V1PodStatus. # noqa: E501 - - RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod. # noqa: E501 - - :return: The start_time of this V1PodStatus. # noqa: E501 - :rtype: datetime - """ - return self._start_time - - @start_time.setter - def start_time(self, start_time): - """Sets the start_time of this V1PodStatus. - - RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod. # noqa: E501 - - :param start_time: The start_time of this V1PodStatus. # noqa: E501 - :type: datetime - """ - - self._start_time = start_time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template.py deleted file mode 100644 index d7a80d8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodTemplate(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'template': 'V1PodTemplateSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'template': 'template' - } - - def __init__(self, api_version=None, kind=None, metadata=None, template=None, local_vars_configuration=None): # noqa: E501 - """V1PodTemplate - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._template = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if template is not None: - self.template = template - - @property - def api_version(self): - """Gets the api_version of this V1PodTemplate. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PodTemplate. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PodTemplate. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PodTemplate. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1PodTemplate. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PodTemplate. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PodTemplate. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PodTemplate. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PodTemplate. # noqa: E501 - - - :return: The metadata of this V1PodTemplate. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodTemplate. - - - :param metadata: The metadata of this V1PodTemplate. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def template(self): - """Gets the template of this V1PodTemplate. # noqa: E501 - - - :return: The template of this V1PodTemplate. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1PodTemplate. - - - :param template: The template of this V1PodTemplate. # noqa: E501 - :type: V1PodTemplateSpec - """ - - self._template = template - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodTemplate): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodTemplate): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_list.py deleted file mode 100644 index 95e607d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodTemplateList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PodTemplate]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PodTemplateList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PodTemplateList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PodTemplateList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PodTemplateList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PodTemplateList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PodTemplateList. # noqa: E501 - - List of pod templates # noqa: E501 - - :return: The items of this V1PodTemplateList. # noqa: E501 - :rtype: list[V1PodTemplate] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PodTemplateList. - - List of pod templates # noqa: E501 - - :param items: The items of this V1PodTemplateList. # noqa: E501 - :type: list[V1PodTemplate] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PodTemplateList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PodTemplateList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PodTemplateList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PodTemplateList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PodTemplateList. # noqa: E501 - - - :return: The metadata of this V1PodTemplateList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodTemplateList. - - - :param metadata: The metadata of this V1PodTemplateList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodTemplateList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodTemplateList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_spec.py deleted file mode 100644 index 8951c32..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_pod_template_spec.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PodTemplateSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PodSpec' - } - - attribute_map = { - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1PodTemplateSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metadata = None - self._spec = None - self.discriminator = None - - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def metadata(self): - """Gets the metadata of this V1PodTemplateSpec. # noqa: E501 - - - :return: The metadata of this V1PodTemplateSpec. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PodTemplateSpec. - - - :param metadata: The metadata of this V1PodTemplateSpec. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PodTemplateSpec. # noqa: E501 - - - :return: The spec of this V1PodTemplateSpec. # noqa: E501 - :rtype: V1PodSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PodTemplateSpec. - - - :param spec: The spec of this V1PodTemplateSpec. # noqa: E501 - :type: V1PodSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PodTemplateSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PodTemplateSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rule.py deleted file mode 100644 index 1437607..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rule.py +++ /dev/null @@ -1,235 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'non_resource_ur_ls': 'list[str]', - 'resource_names': 'list[str]', - 'resources': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'non_resource_ur_ls': 'nonResourceURLs', - 'resource_names': 'resourceNames', - 'resources': 'resources', - 'verbs': 'verbs' - } - - def __init__(self, api_groups=None, non_resource_ur_ls=None, resource_names=None, resources=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1PolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._non_resource_ur_ls = None - self._resource_names = None - self._resources = None - self._verbs = None - self.discriminator = None - - if api_groups is not None: - self.api_groups = api_groups - if non_resource_ur_ls is not None: - self.non_resource_ur_ls = non_resource_ur_ls - if resource_names is not None: - self.resource_names = resource_names - if resources is not None: - self.resources = resources - self.verbs = verbs - - @property - def api_groups(self): - """Gets the api_groups of this V1PolicyRule. # noqa: E501 - - APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"\" represents the core API group and \"*\" represents all API groups. # noqa: E501 - - :return: The api_groups of this V1PolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1PolicyRule. - - APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"\" represents the core API group and \"*\" represents all API groups. # noqa: E501 - - :param api_groups: The api_groups of this V1PolicyRule. # noqa: E501 - :type: list[str] - """ - - self._api_groups = api_groups - - @property - def non_resource_ur_ls(self): - """Gets the non_resource_ur_ls of this V1PolicyRule. # noqa: E501 - - NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both. # noqa: E501 - - :return: The non_resource_ur_ls of this V1PolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._non_resource_ur_ls - - @non_resource_ur_ls.setter - def non_resource_ur_ls(self, non_resource_ur_ls): - """Sets the non_resource_ur_ls of this V1PolicyRule. - - NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both. # noqa: E501 - - :param non_resource_ur_ls: The non_resource_ur_ls of this V1PolicyRule. # noqa: E501 - :type: list[str] - """ - - self._non_resource_ur_ls = non_resource_ur_ls - - @property - def resource_names(self): - """Gets the resource_names of this V1PolicyRule. # noqa: E501 - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :return: The resource_names of this V1PolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._resource_names - - @resource_names.setter - def resource_names(self, resource_names): - """Sets the resource_names of this V1PolicyRule. - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :param resource_names: The resource_names of this V1PolicyRule. # noqa: E501 - :type: list[str] - """ - - self._resource_names = resource_names - - @property - def resources(self): - """Gets the resources of this V1PolicyRule. # noqa: E501 - - Resources is a list of resources this rule applies to. '*' represents all resources. # noqa: E501 - - :return: The resources of this V1PolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1PolicyRule. - - Resources is a list of resources this rule applies to. '*' represents all resources. # noqa: E501 - - :param resources: The resources of this V1PolicyRule. # noqa: E501 - :type: list[str] - """ - - self._resources = resources - - @property - def verbs(self): - """Gets the verbs of this V1PolicyRule. # noqa: E501 - - Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs. # noqa: E501 - - :return: The verbs of this V1PolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1PolicyRule. - - Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs. # noqa: E501 - - :param verbs: The verbs of this V1PolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rules_with_subjects.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rules_with_subjects.py deleted file mode 100644 index d37c0ed..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_policy_rules_with_subjects.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PolicyRulesWithSubjects(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_rules': 'list[V1NonResourcePolicyRule]', - 'resource_rules': 'list[V1ResourcePolicyRule]', - 'subjects': 'list[FlowcontrolV1Subject]' - } - - attribute_map = { - 'non_resource_rules': 'nonResourceRules', - 'resource_rules': 'resourceRules', - 'subjects': 'subjects' - } - - def __init__(self, non_resource_rules=None, resource_rules=None, subjects=None, local_vars_configuration=None): # noqa: E501 - """V1PolicyRulesWithSubjects - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_rules = None - self._resource_rules = None - self._subjects = None - self.discriminator = None - - if non_resource_rules is not None: - self.non_resource_rules = non_resource_rules - if resource_rules is not None: - self.resource_rules = resource_rules - self.subjects = subjects - - @property - def non_resource_rules(self): - """Gets the non_resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - - `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. # noqa: E501 - - :return: The non_resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[V1NonResourcePolicyRule] - """ - return self._non_resource_rules - - @non_resource_rules.setter - def non_resource_rules(self, non_resource_rules): - """Sets the non_resource_rules of this V1PolicyRulesWithSubjects. - - `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. # noqa: E501 - - :param non_resource_rules: The non_resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - :type: list[V1NonResourcePolicyRule] - """ - - self._non_resource_rules = non_resource_rules - - @property - def resource_rules(self): - """Gets the resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - - `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty. # noqa: E501 - - :return: The resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[V1ResourcePolicyRule] - """ - return self._resource_rules - - @resource_rules.setter - def resource_rules(self, resource_rules): - """Sets the resource_rules of this V1PolicyRulesWithSubjects. - - `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty. # noqa: E501 - - :param resource_rules: The resource_rules of this V1PolicyRulesWithSubjects. # noqa: E501 - :type: list[V1ResourcePolicyRule] - """ - - self._resource_rules = resource_rules - - @property - def subjects(self): - """Gets the subjects of this V1PolicyRulesWithSubjects. # noqa: E501 - - subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. # noqa: E501 - - :return: The subjects of this V1PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[FlowcontrolV1Subject] - """ - return self._subjects - - @subjects.setter - def subjects(self, subjects): - """Sets the subjects of this V1PolicyRulesWithSubjects. - - subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. # noqa: E501 - - :param subjects: The subjects of this V1PolicyRulesWithSubjects. # noqa: E501 - :type: list[FlowcontrolV1Subject] - """ - if self.local_vars_configuration.client_side_validation and subjects is None: # noqa: E501 - raise ValueError("Invalid value for `subjects`, must not be `None`") # noqa: E501 - - self._subjects = subjects - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PolicyRulesWithSubjects): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PolicyRulesWithSubjects): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_port_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_port_status.py deleted file mode 100644 index d446ff0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_port_status.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PortStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'error': 'str', - 'port': 'int', - 'protocol': 'str' - } - - attribute_map = { - 'error': 'error', - 'port': 'port', - 'protocol': 'protocol' - } - - def __init__(self, error=None, port=None, protocol=None, local_vars_configuration=None): # noqa: E501 - """V1PortStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._error = None - self._port = None - self._protocol = None - self.discriminator = None - - if error is not None: - self.error = error - self.port = port - self.protocol = protocol - - @property - def error(self): - """Gets the error of this V1PortStatus. # noqa: E501 - - Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. # noqa: E501 - - :return: The error of this V1PortStatus. # noqa: E501 - :rtype: str - """ - return self._error - - @error.setter - def error(self, error): - """Sets the error of this V1PortStatus. - - Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. # noqa: E501 - - :param error: The error of this V1PortStatus. # noqa: E501 - :type: str - """ - - self._error = error - - @property - def port(self): - """Gets the port of this V1PortStatus. # noqa: E501 - - Port is the port number of the service port of which status is recorded here # noqa: E501 - - :return: The port of this V1PortStatus. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1PortStatus. - - Port is the port number of the service port of which status is recorded here # noqa: E501 - - :param port: The port of this V1PortStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this V1PortStatus. # noqa: E501 - - Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\" # noqa: E501 - - :return: The protocol of this V1PortStatus. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this V1PortStatus. - - Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\" # noqa: E501 - - :param protocol: The protocol of this V1PortStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and protocol is None: # noqa: E501 - raise ValueError("Invalid value for `protocol`, must not be `None`") # noqa: E501 - - self._protocol = protocol - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PortStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PortStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_portworx_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_portworx_volume_source.py deleted file mode 100644 index 3c6bdbc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_portworx_volume_source.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PortworxVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'read_only': 'bool', - 'volume_id': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'read_only': 'readOnly', - 'volume_id': 'volumeID' - } - - def __init__(self, fs_type=None, read_only=None, volume_id=None, local_vars_configuration=None): # noqa: E501 - """V1PortworxVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._read_only = None - self._volume_id = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if read_only is not None: - self.read_only = read_only - self.volume_id = volume_id - - @property - def fs_type(self): - """Gets the fs_type of this V1PortworxVolumeSource. # noqa: E501 - - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1PortworxVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1PortworxVolumeSource. - - fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1PortworxVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def read_only(self): - """Gets the read_only of this V1PortworxVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1PortworxVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1PortworxVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1PortworxVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def volume_id(self): - """Gets the volume_id of this V1PortworxVolumeSource. # noqa: E501 - - volumeID uniquely identifies a Portworx volume # noqa: E501 - - :return: The volume_id of this V1PortworxVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_id - - @volume_id.setter - def volume_id(self, volume_id): - """Sets the volume_id of this V1PortworxVolumeSource. - - volumeID uniquely identifies a Portworx volume # noqa: E501 - - :param volume_id: The volume_id of this V1PortworxVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_id is None: # noqa: E501 - raise ValueError("Invalid value for `volume_id`, must not be `None`") # noqa: E501 - - self._volume_id = volume_id - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PortworxVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PortworxVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preconditions.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preconditions.py deleted file mode 100644 index c95deeb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preconditions.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Preconditions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'resource_version': 'str', - 'uid': 'str' - } - - attribute_map = { - 'resource_version': 'resourceVersion', - 'uid': 'uid' - } - - def __init__(self, resource_version=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1Preconditions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._resource_version = None - self._uid = None - self.discriminator = None - - if resource_version is not None: - self.resource_version = resource_version - if uid is not None: - self.uid = uid - - @property - def resource_version(self): - """Gets the resource_version of this V1Preconditions. # noqa: E501 - - Specifies the target ResourceVersion # noqa: E501 - - :return: The resource_version of this V1Preconditions. # noqa: E501 - :rtype: str - """ - return self._resource_version - - @resource_version.setter - def resource_version(self, resource_version): - """Sets the resource_version of this V1Preconditions. - - Specifies the target ResourceVersion # noqa: E501 - - :param resource_version: The resource_version of this V1Preconditions. # noqa: E501 - :type: str - """ - - self._resource_version = resource_version - - @property - def uid(self): - """Gets the uid of this V1Preconditions. # noqa: E501 - - Specifies the target UID. # noqa: E501 - - :return: The uid of this V1Preconditions. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1Preconditions. - - Specifies the target UID. # noqa: E501 - - :param uid: The uid of this V1Preconditions. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Preconditions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Preconditions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preferred_scheduling_term.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preferred_scheduling_term.py deleted file mode 100644 index c3f8a41..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_preferred_scheduling_term.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PreferredSchedulingTerm(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'preference': 'V1NodeSelectorTerm', - 'weight': 'int' - } - - attribute_map = { - 'preference': 'preference', - 'weight': 'weight' - } - - def __init__(self, preference=None, weight=None, local_vars_configuration=None): # noqa: E501 - """V1PreferredSchedulingTerm - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._preference = None - self._weight = None - self.discriminator = None - - self.preference = preference - self.weight = weight - - @property - def preference(self): - """Gets the preference of this V1PreferredSchedulingTerm. # noqa: E501 - - - :return: The preference of this V1PreferredSchedulingTerm. # noqa: E501 - :rtype: V1NodeSelectorTerm - """ - return self._preference - - @preference.setter - def preference(self, preference): - """Sets the preference of this V1PreferredSchedulingTerm. - - - :param preference: The preference of this V1PreferredSchedulingTerm. # noqa: E501 - :type: V1NodeSelectorTerm - """ - if self.local_vars_configuration.client_side_validation and preference is None: # noqa: E501 - raise ValueError("Invalid value for `preference`, must not be `None`") # noqa: E501 - - self._preference = preference - - @property - def weight(self): - """Gets the weight of this V1PreferredSchedulingTerm. # noqa: E501 - - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. # noqa: E501 - - :return: The weight of this V1PreferredSchedulingTerm. # noqa: E501 - :rtype: int - """ - return self._weight - - @weight.setter - def weight(self, weight): - """Sets the weight of this V1PreferredSchedulingTerm. - - Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. # noqa: E501 - - :param weight: The weight of this V1PreferredSchedulingTerm. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and weight is None: # noqa: E501 - raise ValueError("Invalid value for `weight`, must not be `None`") # noqa: E501 - - self._weight = weight - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PreferredSchedulingTerm): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PreferredSchedulingTerm): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class.py deleted file mode 100644 index 1736307..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class.py +++ /dev/null @@ -1,289 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'description': 'str', - 'global_default': 'bool', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'preemption_policy': 'str', - 'value': 'int' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'description': 'description', - 'global_default': 'globalDefault', - 'kind': 'kind', - 'metadata': 'metadata', - 'preemption_policy': 'preemptionPolicy', - 'value': 'value' - } - - def __init__(self, api_version=None, description=None, global_default=None, kind=None, metadata=None, preemption_policy=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._description = None - self._global_default = None - self._kind = None - self._metadata = None - self._preemption_policy = None - self._value = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if description is not None: - self.description = description - if global_default is not None: - self.global_default = global_default - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if preemption_policy is not None: - self.preemption_policy = preemption_policy - self.value = value - - @property - def api_version(self): - """Gets the api_version of this V1PriorityClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PriorityClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PriorityClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PriorityClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def description(self): - """Gets the description of this V1PriorityClass. # noqa: E501 - - description is an arbitrary string that usually provides guidelines on when this priority class should be used. # noqa: E501 - - :return: The description of this V1PriorityClass. # noqa: E501 - :rtype: str - """ - return self._description - - @description.setter - def description(self, description): - """Sets the description of this V1PriorityClass. - - description is an arbitrary string that usually provides guidelines on when this priority class should be used. # noqa: E501 - - :param description: The description of this V1PriorityClass. # noqa: E501 - :type: str - """ - - self._description = description - - @property - def global_default(self): - """Gets the global_default of this V1PriorityClass. # noqa: E501 - - globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority. # noqa: E501 - - :return: The global_default of this V1PriorityClass. # noqa: E501 - :rtype: bool - """ - return self._global_default - - @global_default.setter - def global_default(self, global_default): - """Sets the global_default of this V1PriorityClass. - - globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority. # noqa: E501 - - :param global_default: The global_default of this V1PriorityClass. # noqa: E501 - :type: bool - """ - - self._global_default = global_default - - @property - def kind(self): - """Gets the kind of this V1PriorityClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PriorityClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PriorityClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PriorityClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PriorityClass. # noqa: E501 - - - :return: The metadata of this V1PriorityClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PriorityClass. - - - :param metadata: The metadata of this V1PriorityClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def preemption_policy(self): - """Gets the preemption_policy of this V1PriorityClass. # noqa: E501 - - preemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. # noqa: E501 - - :return: The preemption_policy of this V1PriorityClass. # noqa: E501 - :rtype: str - """ - return self._preemption_policy - - @preemption_policy.setter - def preemption_policy(self, preemption_policy): - """Sets the preemption_policy of this V1PriorityClass. - - preemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. # noqa: E501 - - :param preemption_policy: The preemption_policy of this V1PriorityClass. # noqa: E501 - :type: str - """ - - self._preemption_policy = preemption_policy - - @property - def value(self): - """Gets the value of this V1PriorityClass. # noqa: E501 - - value represents the integer value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec. # noqa: E501 - - :return: The value of this V1PriorityClass. # noqa: E501 - :rtype: int - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1PriorityClass. - - value represents the integer value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec. # noqa: E501 - - :param value: The value of this V1PriorityClass. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and value is None: # noqa: E501 - raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class_list.py deleted file mode 100644 index 6afa42d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PriorityClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PriorityClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PriorityClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PriorityClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PriorityClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PriorityClassList. # noqa: E501 - - items is the list of PriorityClasses # noqa: E501 - - :return: The items of this V1PriorityClassList. # noqa: E501 - :rtype: list[V1PriorityClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PriorityClassList. - - items is the list of PriorityClasses # noqa: E501 - - :param items: The items of this V1PriorityClassList. # noqa: E501 - :type: list[V1PriorityClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PriorityClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PriorityClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PriorityClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PriorityClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PriorityClassList. # noqa: E501 - - - :return: The metadata of this V1PriorityClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PriorityClassList. - - - :param metadata: The metadata of this V1PriorityClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration.py deleted file mode 100644 index 4b364d3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1PriorityLevelConfigurationSpec', - 'status': 'V1PriorityLevelConfigurationStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1PriorityLevelConfiguration. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PriorityLevelConfiguration. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PriorityLevelConfiguration. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PriorityLevelConfiguration. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1PriorityLevelConfiguration. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PriorityLevelConfiguration. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PriorityLevelConfiguration. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PriorityLevelConfiguration. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PriorityLevelConfiguration. # noqa: E501 - - - :return: The metadata of this V1PriorityLevelConfiguration. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PriorityLevelConfiguration. - - - :param metadata: The metadata of this V1PriorityLevelConfiguration. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1PriorityLevelConfiguration. # noqa: E501 - - - :return: The spec of this V1PriorityLevelConfiguration. # noqa: E501 - :rtype: V1PriorityLevelConfigurationSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1PriorityLevelConfiguration. - - - :param spec: The spec of this V1PriorityLevelConfiguration. # noqa: E501 - :type: V1PriorityLevelConfigurationSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1PriorityLevelConfiguration. # noqa: E501 - - - :return: The status of this V1PriorityLevelConfiguration. # noqa: E501 - :rtype: V1PriorityLevelConfigurationStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PriorityLevelConfiguration. - - - :param status: The status of this V1PriorityLevelConfiguration. # noqa: E501 - :type: V1PriorityLevelConfigurationStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_condition.py deleted file mode 100644 index ad16921..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_condition.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfigurationCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfigurationCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - if status is not None: - self.status = status - if type is not None: - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1PriorityLevelConfigurationCondition. # noqa: E501 - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1PriorityLevelConfigurationCondition. - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1PriorityLevelConfigurationCondition. # noqa: E501 - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1PriorityLevelConfigurationCondition. - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1PriorityLevelConfigurationCondition. # noqa: E501 - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1PriorityLevelConfigurationCondition. - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1PriorityLevelConfigurationCondition. # noqa: E501 - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :return: The status of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1PriorityLevelConfigurationCondition. - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :param status: The status of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._status = status - - @property - def type(self): - """Gets the type of this V1PriorityLevelConfigurationCondition. # noqa: E501 - - `type` is the type of the condition. Required. # noqa: E501 - - :return: The type of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1PriorityLevelConfigurationCondition. - - `type` is the type of the condition. Required. # noqa: E501 - - :param type: The type of this V1PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfigurationCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfigurationCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_list.py deleted file mode 100644 index dbc096d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfigurationList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1PriorityLevelConfiguration]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfigurationList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1PriorityLevelConfigurationList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1PriorityLevelConfigurationList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1PriorityLevelConfigurationList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1PriorityLevelConfigurationList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1PriorityLevelConfigurationList. # noqa: E501 - - `items` is a list of request-priorities. # noqa: E501 - - :return: The items of this V1PriorityLevelConfigurationList. # noqa: E501 - :rtype: list[V1PriorityLevelConfiguration] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1PriorityLevelConfigurationList. - - `items` is a list of request-priorities. # noqa: E501 - - :param items: The items of this V1PriorityLevelConfigurationList. # noqa: E501 - :type: list[V1PriorityLevelConfiguration] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1PriorityLevelConfigurationList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1PriorityLevelConfigurationList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1PriorityLevelConfigurationList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1PriorityLevelConfigurationList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1PriorityLevelConfigurationList. # noqa: E501 - - - :return: The metadata of this V1PriorityLevelConfigurationList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1PriorityLevelConfigurationList. - - - :param metadata: The metadata of this V1PriorityLevelConfigurationList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfigurationList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfigurationList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_reference.py deleted file mode 100644 index 7719385..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_reference.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfigurationReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfigurationReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1PriorityLevelConfigurationReference. # noqa: E501 - - `name` is the name of the priority level configuration being referenced Required. # noqa: E501 - - :return: The name of this V1PriorityLevelConfigurationReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1PriorityLevelConfigurationReference. - - `name` is the name of the priority level configuration being referenced Required. # noqa: E501 - - :param name: The name of this V1PriorityLevelConfigurationReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfigurationReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfigurationReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_spec.py deleted file mode 100644 index 1df4aa2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_spec.py +++ /dev/null @@ -1,175 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfigurationSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'exempt': 'V1ExemptPriorityLevelConfiguration', - 'limited': 'V1LimitedPriorityLevelConfiguration', - 'type': 'str' - } - - attribute_map = { - 'exempt': 'exempt', - 'limited': 'limited', - 'type': 'type' - } - - def __init__(self, exempt=None, limited=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfigurationSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._exempt = None - self._limited = None - self._type = None - self.discriminator = None - - if exempt is not None: - self.exempt = exempt - if limited is not None: - self.limited = limited - self.type = type - - @property - def exempt(self): - """Gets the exempt of this V1PriorityLevelConfigurationSpec. # noqa: E501 - - - :return: The exempt of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: V1ExemptPriorityLevelConfiguration - """ - return self._exempt - - @exempt.setter - def exempt(self, exempt): - """Sets the exempt of this V1PriorityLevelConfigurationSpec. - - - :param exempt: The exempt of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :type: V1ExemptPriorityLevelConfiguration - """ - - self._exempt = exempt - - @property - def limited(self): - """Gets the limited of this V1PriorityLevelConfigurationSpec. # noqa: E501 - - - :return: The limited of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: V1LimitedPriorityLevelConfiguration - """ - return self._limited - - @limited.setter - def limited(self, limited): - """Sets the limited of this V1PriorityLevelConfigurationSpec. - - - :param limited: The limited of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :type: V1LimitedPriorityLevelConfiguration - """ - - self._limited = limited - - @property - def type(self): - """Gets the type of this V1PriorityLevelConfigurationSpec. # noqa: E501 - - `type` indicates whether this priority level is subject to limitation on request execution. A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. # noqa: E501 - - :return: The type of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1PriorityLevelConfigurationSpec. - - `type` indicates whether this priority level is subject to limitation on request execution. A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. # noqa: E501 - - :param type: The type of this V1PriorityLevelConfigurationSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfigurationSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfigurationSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_status.py deleted file mode 100644 index 621fe25..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_priority_level_configuration_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1PriorityLevelConfigurationStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1PriorityLevelConfigurationCondition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1PriorityLevelConfigurationStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1PriorityLevelConfigurationStatus. # noqa: E501 - - `conditions` is the current state of \"request-priority\". # noqa: E501 - - :return: The conditions of this V1PriorityLevelConfigurationStatus. # noqa: E501 - :rtype: list[V1PriorityLevelConfigurationCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1PriorityLevelConfigurationStatus. - - `conditions` is the current state of \"request-priority\". # noqa: E501 - - :param conditions: The conditions of this V1PriorityLevelConfigurationStatus. # noqa: E501 - :type: list[V1PriorityLevelConfigurationCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1PriorityLevelConfigurationStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1PriorityLevelConfigurationStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_probe.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_probe.py deleted file mode 100644 index 1006b30..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_probe.py +++ /dev/null @@ -1,366 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Probe(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - '_exec': 'V1ExecAction', - 'failure_threshold': 'int', - 'grpc': 'V1GRPCAction', - 'http_get': 'V1HTTPGetAction', - 'initial_delay_seconds': 'int', - 'period_seconds': 'int', - 'success_threshold': 'int', - 'tcp_socket': 'V1TCPSocketAction', - 'termination_grace_period_seconds': 'int', - 'timeout_seconds': 'int' - } - - attribute_map = { - '_exec': 'exec', - 'failure_threshold': 'failureThreshold', - 'grpc': 'grpc', - 'http_get': 'httpGet', - 'initial_delay_seconds': 'initialDelaySeconds', - 'period_seconds': 'periodSeconds', - 'success_threshold': 'successThreshold', - 'tcp_socket': 'tcpSocket', - 'termination_grace_period_seconds': 'terminationGracePeriodSeconds', - 'timeout_seconds': 'timeoutSeconds' - } - - def __init__(self, _exec=None, failure_threshold=None, grpc=None, http_get=None, initial_delay_seconds=None, period_seconds=None, success_threshold=None, tcp_socket=None, termination_grace_period_seconds=None, timeout_seconds=None, local_vars_configuration=None): # noqa: E501 - """V1Probe - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self.__exec = None - self._failure_threshold = None - self._grpc = None - self._http_get = None - self._initial_delay_seconds = None - self._period_seconds = None - self._success_threshold = None - self._tcp_socket = None - self._termination_grace_period_seconds = None - self._timeout_seconds = None - self.discriminator = None - - if _exec is not None: - self._exec = _exec - if failure_threshold is not None: - self.failure_threshold = failure_threshold - if grpc is not None: - self.grpc = grpc - if http_get is not None: - self.http_get = http_get - if initial_delay_seconds is not None: - self.initial_delay_seconds = initial_delay_seconds - if period_seconds is not None: - self.period_seconds = period_seconds - if success_threshold is not None: - self.success_threshold = success_threshold - if tcp_socket is not None: - self.tcp_socket = tcp_socket - if termination_grace_period_seconds is not None: - self.termination_grace_period_seconds = termination_grace_period_seconds - if timeout_seconds is not None: - self.timeout_seconds = timeout_seconds - - @property - def _exec(self): - """Gets the _exec of this V1Probe. # noqa: E501 - - - :return: The _exec of this V1Probe. # noqa: E501 - :rtype: V1ExecAction - """ - return self.__exec - - @_exec.setter - def _exec(self, _exec): - """Sets the _exec of this V1Probe. - - - :param _exec: The _exec of this V1Probe. # noqa: E501 - :type: V1ExecAction - """ - - self.__exec = _exec - - @property - def failure_threshold(self): - """Gets the failure_threshold of this V1Probe. # noqa: E501 - - Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. # noqa: E501 - - :return: The failure_threshold of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._failure_threshold - - @failure_threshold.setter - def failure_threshold(self, failure_threshold): - """Sets the failure_threshold of this V1Probe. - - Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. # noqa: E501 - - :param failure_threshold: The failure_threshold of this V1Probe. # noqa: E501 - :type: int - """ - - self._failure_threshold = failure_threshold - - @property - def grpc(self): - """Gets the grpc of this V1Probe. # noqa: E501 - - - :return: The grpc of this V1Probe. # noqa: E501 - :rtype: V1GRPCAction - """ - return self._grpc - - @grpc.setter - def grpc(self, grpc): - """Sets the grpc of this V1Probe. - - - :param grpc: The grpc of this V1Probe. # noqa: E501 - :type: V1GRPCAction - """ - - self._grpc = grpc - - @property - def http_get(self): - """Gets the http_get of this V1Probe. # noqa: E501 - - - :return: The http_get of this V1Probe. # noqa: E501 - :rtype: V1HTTPGetAction - """ - return self._http_get - - @http_get.setter - def http_get(self, http_get): - """Sets the http_get of this V1Probe. - - - :param http_get: The http_get of this V1Probe. # noqa: E501 - :type: V1HTTPGetAction - """ - - self._http_get = http_get - - @property - def initial_delay_seconds(self): - """Gets the initial_delay_seconds of this V1Probe. # noqa: E501 - - Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes # noqa: E501 - - :return: The initial_delay_seconds of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._initial_delay_seconds - - @initial_delay_seconds.setter - def initial_delay_seconds(self, initial_delay_seconds): - """Sets the initial_delay_seconds of this V1Probe. - - Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes # noqa: E501 - - :param initial_delay_seconds: The initial_delay_seconds of this V1Probe. # noqa: E501 - :type: int - """ - - self._initial_delay_seconds = initial_delay_seconds - - @property - def period_seconds(self): - """Gets the period_seconds of this V1Probe. # noqa: E501 - - How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. # noqa: E501 - - :return: The period_seconds of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._period_seconds - - @period_seconds.setter - def period_seconds(self, period_seconds): - """Sets the period_seconds of this V1Probe. - - How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. # noqa: E501 - - :param period_seconds: The period_seconds of this V1Probe. # noqa: E501 - :type: int - """ - - self._period_seconds = period_seconds - - @property - def success_threshold(self): - """Gets the success_threshold of this V1Probe. # noqa: E501 - - Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. # noqa: E501 - - :return: The success_threshold of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._success_threshold - - @success_threshold.setter - def success_threshold(self, success_threshold): - """Sets the success_threshold of this V1Probe. - - Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. # noqa: E501 - - :param success_threshold: The success_threshold of this V1Probe. # noqa: E501 - :type: int - """ - - self._success_threshold = success_threshold - - @property - def tcp_socket(self): - """Gets the tcp_socket of this V1Probe. # noqa: E501 - - - :return: The tcp_socket of this V1Probe. # noqa: E501 - :rtype: V1TCPSocketAction - """ - return self._tcp_socket - - @tcp_socket.setter - def tcp_socket(self, tcp_socket): - """Sets the tcp_socket of this V1Probe. - - - :param tcp_socket: The tcp_socket of this V1Probe. # noqa: E501 - :type: V1TCPSocketAction - """ - - self._tcp_socket = tcp_socket - - @property - def termination_grace_period_seconds(self): - """Gets the termination_grace_period_seconds of this V1Probe. # noqa: E501 - - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. # noqa: E501 - - :return: The termination_grace_period_seconds of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._termination_grace_period_seconds - - @termination_grace_period_seconds.setter - def termination_grace_period_seconds(self, termination_grace_period_seconds): - """Sets the termination_grace_period_seconds of this V1Probe. - - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. # noqa: E501 - - :param termination_grace_period_seconds: The termination_grace_period_seconds of this V1Probe. # noqa: E501 - :type: int - """ - - self._termination_grace_period_seconds = termination_grace_period_seconds - - @property - def timeout_seconds(self): - """Gets the timeout_seconds of this V1Probe. # noqa: E501 - - Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes # noqa: E501 - - :return: The timeout_seconds of this V1Probe. # noqa: E501 - :rtype: int - """ - return self._timeout_seconds - - @timeout_seconds.setter - def timeout_seconds(self, timeout_seconds): - """Sets the timeout_seconds of this V1Probe. - - Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes # noqa: E501 - - :param timeout_seconds: The timeout_seconds of this V1Probe. # noqa: E501 - :type: int - """ - - self._timeout_seconds = timeout_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Probe): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Probe): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_projected_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_projected_volume_source.py deleted file mode 100644 index e11f4da..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_projected_volume_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ProjectedVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default_mode': 'int', - 'sources': 'list[V1VolumeProjection]' - } - - attribute_map = { - 'default_mode': 'defaultMode', - 'sources': 'sources' - } - - def __init__(self, default_mode=None, sources=None, local_vars_configuration=None): # noqa: E501 - """V1ProjectedVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default_mode = None - self._sources = None - self.discriminator = None - - if default_mode is not None: - self.default_mode = default_mode - if sources is not None: - self.sources = sources - - @property - def default_mode(self): - """Gets the default_mode of this V1ProjectedVolumeSource. # noqa: E501 - - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The default_mode of this V1ProjectedVolumeSource. # noqa: E501 - :rtype: int - """ - return self._default_mode - - @default_mode.setter - def default_mode(self, default_mode): - """Sets the default_mode of this V1ProjectedVolumeSource. - - defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param default_mode: The default_mode of this V1ProjectedVolumeSource. # noqa: E501 - :type: int - """ - - self._default_mode = default_mode - - @property - def sources(self): - """Gets the sources of this V1ProjectedVolumeSource. # noqa: E501 - - sources is the list of volume projections # noqa: E501 - - :return: The sources of this V1ProjectedVolumeSource. # noqa: E501 - :rtype: list[V1VolumeProjection] - """ - return self._sources - - @sources.setter - def sources(self, sources): - """Sets the sources of this V1ProjectedVolumeSource. - - sources is the list of volume projections # noqa: E501 - - :param sources: The sources of this V1ProjectedVolumeSource. # noqa: E501 - :type: list[V1VolumeProjection] - """ - - self._sources = sources - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ProjectedVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ProjectedVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_queuing_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_queuing_configuration.py deleted file mode 100644 index 4ae3453..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_queuing_configuration.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1QueuingConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hand_size': 'int', - 'queue_length_limit': 'int', - 'queues': 'int' - } - - attribute_map = { - 'hand_size': 'handSize', - 'queue_length_limit': 'queueLengthLimit', - 'queues': 'queues' - } - - def __init__(self, hand_size=None, queue_length_limit=None, queues=None, local_vars_configuration=None): # noqa: E501 - """V1QueuingConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hand_size = None - self._queue_length_limit = None - self._queues = None - self.discriminator = None - - if hand_size is not None: - self.hand_size = hand_size - if queue_length_limit is not None: - self.queue_length_limit = queue_length_limit - if queues is not None: - self.queues = queues - - @property - def hand_size(self): - """Gets the hand_size of this V1QueuingConfiguration. # noqa: E501 - - `handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. # noqa: E501 - - :return: The hand_size of this V1QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._hand_size - - @hand_size.setter - def hand_size(self, hand_size): - """Sets the hand_size of this V1QueuingConfiguration. - - `handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. # noqa: E501 - - :param hand_size: The hand_size of this V1QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._hand_size = hand_size - - @property - def queue_length_limit(self): - """Gets the queue_length_limit of this V1QueuingConfiguration. # noqa: E501 - - `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. # noqa: E501 - - :return: The queue_length_limit of this V1QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._queue_length_limit - - @queue_length_limit.setter - def queue_length_limit(self, queue_length_limit): - """Sets the queue_length_limit of this V1QueuingConfiguration. - - `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. # noqa: E501 - - :param queue_length_limit: The queue_length_limit of this V1QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._queue_length_limit = queue_length_limit - - @property - def queues(self): - """Gets the queues of this V1QueuingConfiguration. # noqa: E501 - - `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. # noqa: E501 - - :return: The queues of this V1QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._queues - - @queues.setter - def queues(self, queues): - """Sets the queues of this V1QueuingConfiguration. - - `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. # noqa: E501 - - :param queues: The queues of this V1QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._queues = queues - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1QueuingConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1QueuingConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_quobyte_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_quobyte_volume_source.py deleted file mode 100644 index d9ce685..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_quobyte_volume_source.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1QuobyteVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group': 'str', - 'read_only': 'bool', - 'registry': 'str', - 'tenant': 'str', - 'user': 'str', - 'volume': 'str' - } - - attribute_map = { - 'group': 'group', - 'read_only': 'readOnly', - 'registry': 'registry', - 'tenant': 'tenant', - 'user': 'user', - 'volume': 'volume' - } - - def __init__(self, group=None, read_only=None, registry=None, tenant=None, user=None, volume=None, local_vars_configuration=None): # noqa: E501 - """V1QuobyteVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group = None - self._read_only = None - self._registry = None - self._tenant = None - self._user = None - self._volume = None - self.discriminator = None - - if group is not None: - self.group = group - if read_only is not None: - self.read_only = read_only - self.registry = registry - if tenant is not None: - self.tenant = tenant - if user is not None: - self.user = user - self.volume = volume - - @property - def group(self): - """Gets the group of this V1QuobyteVolumeSource. # noqa: E501 - - group to map volume access to Default is no group # noqa: E501 - - :return: The group of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1QuobyteVolumeSource. - - group to map volume access to Default is no group # noqa: E501 - - :param group: The group of this V1QuobyteVolumeSource. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def read_only(self): - """Gets the read_only of this V1QuobyteVolumeSource. # noqa: E501 - - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. # noqa: E501 - - :return: The read_only of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1QuobyteVolumeSource. - - readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. # noqa: E501 - - :param read_only: The read_only of this V1QuobyteVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def registry(self): - """Gets the registry of this V1QuobyteVolumeSource. # noqa: E501 - - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes # noqa: E501 - - :return: The registry of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: str - """ - return self._registry - - @registry.setter - def registry(self, registry): - """Sets the registry of this V1QuobyteVolumeSource. - - registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes # noqa: E501 - - :param registry: The registry of this V1QuobyteVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and registry is None: # noqa: E501 - raise ValueError("Invalid value for `registry`, must not be `None`") # noqa: E501 - - self._registry = registry - - @property - def tenant(self): - """Gets the tenant of this V1QuobyteVolumeSource. # noqa: E501 - - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin # noqa: E501 - - :return: The tenant of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: str - """ - return self._tenant - - @tenant.setter - def tenant(self, tenant): - """Sets the tenant of this V1QuobyteVolumeSource. - - tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin # noqa: E501 - - :param tenant: The tenant of this V1QuobyteVolumeSource. # noqa: E501 - :type: str - """ - - self._tenant = tenant - - @property - def user(self): - """Gets the user of this V1QuobyteVolumeSource. # noqa: E501 - - user to map volume access to Defaults to serivceaccount user # noqa: E501 - - :return: The user of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1QuobyteVolumeSource. - - user to map volume access to Defaults to serivceaccount user # noqa: E501 - - :param user: The user of this V1QuobyteVolumeSource. # noqa: E501 - :type: str - """ - - self._user = user - - @property - def volume(self): - """Gets the volume of this V1QuobyteVolumeSource. # noqa: E501 - - volume is a string that references an already created Quobyte volume by name. # noqa: E501 - - :return: The volume of this V1QuobyteVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume - - @volume.setter - def volume(self, volume): - """Sets the volume of this V1QuobyteVolumeSource. - - volume is a string that references an already created Quobyte volume by name. # noqa: E501 - - :param volume: The volume of this V1QuobyteVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume is None: # noqa: E501 - raise ValueError("Invalid value for `volume`, must not be `None`") # noqa: E501 - - self._volume = volume - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1QuobyteVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1QuobyteVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_persistent_volume_source.py deleted file mode 100644 index c4ee8e0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_persistent_volume_source.py +++ /dev/null @@ -1,318 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RBDPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'image': 'str', - 'keyring': 'str', - 'monitors': 'list[str]', - 'pool': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1SecretReference', - 'user': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'image': 'image', - 'keyring': 'keyring', - 'monitors': 'monitors', - 'pool': 'pool', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'user': 'user' - } - - def __init__(self, fs_type=None, image=None, keyring=None, monitors=None, pool=None, read_only=None, secret_ref=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1RBDPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._image = None - self._keyring = None - self._monitors = None - self._pool = None - self._read_only = None - self._secret_ref = None - self._user = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.image = image - if keyring is not None: - self.keyring = keyring - self.monitors = monitors - if pool is not None: - self.pool = pool - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - if user is not None: - self.user = user - - @property - def fs_type(self): - """Gets the fs_type of this V1RBDPersistentVolumeSource. # noqa: E501 - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd # noqa: E501 - - :return: The fs_type of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1RBDPersistentVolumeSource. - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd # noqa: E501 - - :param fs_type: The fs_type of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def image(self): - """Gets the image of this V1RBDPersistentVolumeSource. # noqa: E501 - - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The image of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._image - - @image.setter - def image(self, image): - """Sets the image of this V1RBDPersistentVolumeSource. - - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param image: The image of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and image is None: # noqa: E501 - raise ValueError("Invalid value for `image`, must not be `None`") # noqa: E501 - - self._image = image - - @property - def keyring(self): - """Gets the keyring of this V1RBDPersistentVolumeSource. # noqa: E501 - - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The keyring of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._keyring - - @keyring.setter - def keyring(self, keyring): - """Sets the keyring of this V1RBDPersistentVolumeSource. - - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param keyring: The keyring of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._keyring = keyring - - @property - def monitors(self): - """Gets the monitors of this V1RBDPersistentVolumeSource. # noqa: E501 - - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The monitors of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._monitors - - @monitors.setter - def monitors(self, monitors): - """Sets the monitors of this V1RBDPersistentVolumeSource. - - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param monitors: The monitors of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and monitors is None: # noqa: E501 - raise ValueError("Invalid value for `monitors`, must not be `None`") # noqa: E501 - - self._monitors = monitors - - @property - def pool(self): - """Gets the pool of this V1RBDPersistentVolumeSource. # noqa: E501 - - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The pool of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._pool - - @pool.setter - def pool(self, pool): - """Sets the pool of this V1RBDPersistentVolumeSource. - - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param pool: The pool of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._pool = pool - - @property - def read_only(self): - """Gets the read_only of this V1RBDPersistentVolumeSource. # noqa: E501 - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The read_only of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1RBDPersistentVolumeSource. - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param read_only: The read_only of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1RBDPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1RBDPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - - self._secret_ref = secret_ref - - @property - def user(self): - """Gets the user of this V1RBDPersistentVolumeSource. # noqa: E501 - - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The user of this V1RBDPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1RBDPersistentVolumeSource. - - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param user: The user of this V1RBDPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RBDPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RBDPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_volume_source.py deleted file mode 100644 index 991384a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rbd_volume_source.py +++ /dev/null @@ -1,318 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RBDVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'image': 'str', - 'keyring': 'str', - 'monitors': 'list[str]', - 'pool': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference', - 'user': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'image': 'image', - 'keyring': 'keyring', - 'monitors': 'monitors', - 'pool': 'pool', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'user': 'user' - } - - def __init__(self, fs_type=None, image=None, keyring=None, monitors=None, pool=None, read_only=None, secret_ref=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1RBDVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._image = None - self._keyring = None - self._monitors = None - self._pool = None - self._read_only = None - self._secret_ref = None - self._user = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.image = image - if keyring is not None: - self.keyring = keyring - self.monitors = monitors - if pool is not None: - self.pool = pool - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - if user is not None: - self.user = user - - @property - def fs_type(self): - """Gets the fs_type of this V1RBDVolumeSource. # noqa: E501 - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd # noqa: E501 - - :return: The fs_type of this V1RBDVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1RBDVolumeSource. - - fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd # noqa: E501 - - :param fs_type: The fs_type of this V1RBDVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def image(self): - """Gets the image of this V1RBDVolumeSource. # noqa: E501 - - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The image of this V1RBDVolumeSource. # noqa: E501 - :rtype: str - """ - return self._image - - @image.setter - def image(self, image): - """Sets the image of this V1RBDVolumeSource. - - image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param image: The image of this V1RBDVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and image is None: # noqa: E501 - raise ValueError("Invalid value for `image`, must not be `None`") # noqa: E501 - - self._image = image - - @property - def keyring(self): - """Gets the keyring of this V1RBDVolumeSource. # noqa: E501 - - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The keyring of this V1RBDVolumeSource. # noqa: E501 - :rtype: str - """ - return self._keyring - - @keyring.setter - def keyring(self, keyring): - """Sets the keyring of this V1RBDVolumeSource. - - keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param keyring: The keyring of this V1RBDVolumeSource. # noqa: E501 - :type: str - """ - - self._keyring = keyring - - @property - def monitors(self): - """Gets the monitors of this V1RBDVolumeSource. # noqa: E501 - - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The monitors of this V1RBDVolumeSource. # noqa: E501 - :rtype: list[str] - """ - return self._monitors - - @monitors.setter - def monitors(self, monitors): - """Sets the monitors of this V1RBDVolumeSource. - - monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param monitors: The monitors of this V1RBDVolumeSource. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and monitors is None: # noqa: E501 - raise ValueError("Invalid value for `monitors`, must not be `None`") # noqa: E501 - - self._monitors = monitors - - @property - def pool(self): - """Gets the pool of this V1RBDVolumeSource. # noqa: E501 - - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The pool of this V1RBDVolumeSource. # noqa: E501 - :rtype: str - """ - return self._pool - - @pool.setter - def pool(self, pool): - """Sets the pool of this V1RBDVolumeSource. - - pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param pool: The pool of this V1RBDVolumeSource. # noqa: E501 - :type: str - """ - - self._pool = pool - - @property - def read_only(self): - """Gets the read_only of this V1RBDVolumeSource. # noqa: E501 - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The read_only of this V1RBDVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1RBDVolumeSource. - - readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param read_only: The read_only of this V1RBDVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1RBDVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1RBDVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1RBDVolumeSource. - - - :param secret_ref: The secret_ref of this V1RBDVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - @property - def user(self): - """Gets the user of this V1RBDVolumeSource. # noqa: E501 - - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :return: The user of this V1RBDVolumeSource. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1RBDVolumeSource. - - user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it # noqa: E501 - - :param user: The user of this V1RBDVolumeSource. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RBDVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RBDVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set.py deleted file mode 100644 index 344d5b7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicaSet(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1ReplicaSetSpec', - 'status': 'V1ReplicaSetStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicaSet - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1ReplicaSet. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ReplicaSet. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ReplicaSet. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ReplicaSet. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ReplicaSet. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ReplicaSet. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ReplicaSet. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ReplicaSet. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ReplicaSet. # noqa: E501 - - - :return: The metadata of this V1ReplicaSet. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ReplicaSet. - - - :param metadata: The metadata of this V1ReplicaSet. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1ReplicaSet. # noqa: E501 - - - :return: The spec of this V1ReplicaSet. # noqa: E501 - :rtype: V1ReplicaSetSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1ReplicaSet. - - - :param spec: The spec of this V1ReplicaSet. # noqa: E501 - :type: V1ReplicaSetSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1ReplicaSet. # noqa: E501 - - - :return: The status of this V1ReplicaSet. # noqa: E501 - :rtype: V1ReplicaSetStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ReplicaSet. - - - :param status: The status of this V1ReplicaSet. # noqa: E501 - :type: V1ReplicaSetStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicaSet): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicaSet): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_condition.py deleted file mode 100644 index f5a7c71..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicaSetCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicaSetCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1ReplicaSetCondition. # noqa: E501 - - The last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1ReplicaSetCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1ReplicaSetCondition. - - The last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1ReplicaSetCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1ReplicaSetCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1ReplicaSetCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ReplicaSetCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1ReplicaSetCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1ReplicaSetCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1ReplicaSetCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1ReplicaSetCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1ReplicaSetCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1ReplicaSetCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1ReplicaSetCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ReplicaSetCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1ReplicaSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1ReplicaSetCondition. # noqa: E501 - - Type of replica set condition. # noqa: E501 - - :return: The type of this V1ReplicaSetCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1ReplicaSetCondition. - - Type of replica set condition. # noqa: E501 - - :param type: The type of this V1ReplicaSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicaSetCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicaSetCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_list.py deleted file mode 100644 index 8268d7f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicaSetList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ReplicaSet]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicaSetList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ReplicaSetList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ReplicaSetList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ReplicaSetList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ReplicaSetList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ReplicaSetList. # noqa: E501 - - List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller # noqa: E501 - - :return: The items of this V1ReplicaSetList. # noqa: E501 - :rtype: list[V1ReplicaSet] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ReplicaSetList. - - List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller # noqa: E501 - - :param items: The items of this V1ReplicaSetList. # noqa: E501 - :type: list[V1ReplicaSet] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ReplicaSetList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ReplicaSetList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ReplicaSetList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ReplicaSetList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ReplicaSetList. # noqa: E501 - - - :return: The metadata of this V1ReplicaSetList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ReplicaSetList. - - - :param metadata: The metadata of this V1ReplicaSetList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicaSetList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicaSetList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_spec.py deleted file mode 100644 index 53ee28e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_spec.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicaSetSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'min_ready_seconds': 'int', - 'replicas': 'int', - 'selector': 'V1LabelSelector', - 'template': 'V1PodTemplateSpec' - } - - attribute_map = { - 'min_ready_seconds': 'minReadySeconds', - 'replicas': 'replicas', - 'selector': 'selector', - 'template': 'template' - } - - def __init__(self, min_ready_seconds=None, replicas=None, selector=None, template=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicaSetSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._min_ready_seconds = None - self._replicas = None - self._selector = None - self._template = None - self.discriminator = None - - if min_ready_seconds is not None: - self.min_ready_seconds = min_ready_seconds - if replicas is not None: - self.replicas = replicas - self.selector = selector - if template is not None: - self.template = template - - @property - def min_ready_seconds(self): - """Gets the min_ready_seconds of this V1ReplicaSetSpec. # noqa: E501 - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :return: The min_ready_seconds of this V1ReplicaSetSpec. # noqa: E501 - :rtype: int - """ - return self._min_ready_seconds - - @min_ready_seconds.setter - def min_ready_seconds(self, min_ready_seconds): - """Sets the min_ready_seconds of this V1ReplicaSetSpec. - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :param min_ready_seconds: The min_ready_seconds of this V1ReplicaSetSpec. # noqa: E501 - :type: int - """ - - self._min_ready_seconds = min_ready_seconds - - @property - def replicas(self): - """Gets the replicas of this V1ReplicaSetSpec. # noqa: E501 - - Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller # noqa: E501 - - :return: The replicas of this V1ReplicaSetSpec. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ReplicaSetSpec. - - Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller # noqa: E501 - - :param replicas: The replicas of this V1ReplicaSetSpec. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - @property - def selector(self): - """Gets the selector of this V1ReplicaSetSpec. # noqa: E501 - - - :return: The selector of this V1ReplicaSetSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1ReplicaSetSpec. - - - :param selector: The selector of this V1ReplicaSetSpec. # noqa: E501 - :type: V1LabelSelector - """ - if self.local_vars_configuration.client_side_validation and selector is None: # noqa: E501 - raise ValueError("Invalid value for `selector`, must not be `None`") # noqa: E501 - - self._selector = selector - - @property - def template(self): - """Gets the template of this V1ReplicaSetSpec. # noqa: E501 - - - :return: The template of this V1ReplicaSetSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1ReplicaSetSpec. - - - :param template: The template of this V1ReplicaSetSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - - self._template = template - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicaSetSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicaSetSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_status.py deleted file mode 100644 index 4ce2e5b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replica_set_status.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicaSetStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'available_replicas': 'int', - 'conditions': 'list[V1ReplicaSetCondition]', - 'fully_labeled_replicas': 'int', - 'observed_generation': 'int', - 'ready_replicas': 'int', - 'replicas': 'int' - } - - attribute_map = { - 'available_replicas': 'availableReplicas', - 'conditions': 'conditions', - 'fully_labeled_replicas': 'fullyLabeledReplicas', - 'observed_generation': 'observedGeneration', - 'ready_replicas': 'readyReplicas', - 'replicas': 'replicas' - } - - def __init__(self, available_replicas=None, conditions=None, fully_labeled_replicas=None, observed_generation=None, ready_replicas=None, replicas=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicaSetStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._available_replicas = None - self._conditions = None - self._fully_labeled_replicas = None - self._observed_generation = None - self._ready_replicas = None - self._replicas = None - self.discriminator = None - - if available_replicas is not None: - self.available_replicas = available_replicas - if conditions is not None: - self.conditions = conditions - if fully_labeled_replicas is not None: - self.fully_labeled_replicas = fully_labeled_replicas - if observed_generation is not None: - self.observed_generation = observed_generation - if ready_replicas is not None: - self.ready_replicas = ready_replicas - self.replicas = replicas - - @property - def available_replicas(self): - """Gets the available_replicas of this V1ReplicaSetStatus. # noqa: E501 - - The number of available replicas (ready for at least minReadySeconds) for this replica set. # noqa: E501 - - :return: The available_replicas of this V1ReplicaSetStatus. # noqa: E501 - :rtype: int - """ - return self._available_replicas - - @available_replicas.setter - def available_replicas(self, available_replicas): - """Sets the available_replicas of this V1ReplicaSetStatus. - - The number of available replicas (ready for at least minReadySeconds) for this replica set. # noqa: E501 - - :param available_replicas: The available_replicas of this V1ReplicaSetStatus. # noqa: E501 - :type: int - """ - - self._available_replicas = available_replicas - - @property - def conditions(self): - """Gets the conditions of this V1ReplicaSetStatus. # noqa: E501 - - Represents the latest available observations of a replica set's current state. # noqa: E501 - - :return: The conditions of this V1ReplicaSetStatus. # noqa: E501 - :rtype: list[V1ReplicaSetCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1ReplicaSetStatus. - - Represents the latest available observations of a replica set's current state. # noqa: E501 - - :param conditions: The conditions of this V1ReplicaSetStatus. # noqa: E501 - :type: list[V1ReplicaSetCondition] - """ - - self._conditions = conditions - - @property - def fully_labeled_replicas(self): - """Gets the fully_labeled_replicas of this V1ReplicaSetStatus. # noqa: E501 - - The number of pods that have labels matching the labels of the pod template of the replicaset. # noqa: E501 - - :return: The fully_labeled_replicas of this V1ReplicaSetStatus. # noqa: E501 - :rtype: int - """ - return self._fully_labeled_replicas - - @fully_labeled_replicas.setter - def fully_labeled_replicas(self, fully_labeled_replicas): - """Sets the fully_labeled_replicas of this V1ReplicaSetStatus. - - The number of pods that have labels matching the labels of the pod template of the replicaset. # noqa: E501 - - :param fully_labeled_replicas: The fully_labeled_replicas of this V1ReplicaSetStatus. # noqa: E501 - :type: int - """ - - self._fully_labeled_replicas = fully_labeled_replicas - - @property - def observed_generation(self): - """Gets the observed_generation of this V1ReplicaSetStatus. # noqa: E501 - - ObservedGeneration reflects the generation of the most recently observed ReplicaSet. # noqa: E501 - - :return: The observed_generation of this V1ReplicaSetStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1ReplicaSetStatus. - - ObservedGeneration reflects the generation of the most recently observed ReplicaSet. # noqa: E501 - - :param observed_generation: The observed_generation of this V1ReplicaSetStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def ready_replicas(self): - """Gets the ready_replicas of this V1ReplicaSetStatus. # noqa: E501 - - readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition. # noqa: E501 - - :return: The ready_replicas of this V1ReplicaSetStatus. # noqa: E501 - :rtype: int - """ - return self._ready_replicas - - @ready_replicas.setter - def ready_replicas(self, ready_replicas): - """Sets the ready_replicas of this V1ReplicaSetStatus. - - readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition. # noqa: E501 - - :param ready_replicas: The ready_replicas of this V1ReplicaSetStatus. # noqa: E501 - :type: int - """ - - self._ready_replicas = ready_replicas - - @property - def replicas(self): - """Gets the replicas of this V1ReplicaSetStatus. # noqa: E501 - - Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller # noqa: E501 - - :return: The replicas of this V1ReplicaSetStatus. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ReplicaSetStatus. - - Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller # noqa: E501 - - :param replicas: The replicas of this V1ReplicaSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and replicas is None: # noqa: E501 - raise ValueError("Invalid value for `replicas`, must not be `None`") # noqa: E501 - - self._replicas = replicas - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicaSetStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicaSetStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller.py deleted file mode 100644 index 185b291..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicationController(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1ReplicationControllerSpec', - 'status': 'V1ReplicationControllerStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicationController - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1ReplicationController. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ReplicationController. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ReplicationController. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ReplicationController. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ReplicationController. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ReplicationController. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ReplicationController. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ReplicationController. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ReplicationController. # noqa: E501 - - - :return: The metadata of this V1ReplicationController. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ReplicationController. - - - :param metadata: The metadata of this V1ReplicationController. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1ReplicationController. # noqa: E501 - - - :return: The spec of this V1ReplicationController. # noqa: E501 - :rtype: V1ReplicationControllerSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1ReplicationController. - - - :param spec: The spec of this V1ReplicationController. # noqa: E501 - :type: V1ReplicationControllerSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1ReplicationController. # noqa: E501 - - - :return: The status of this V1ReplicationController. # noqa: E501 - :rtype: V1ReplicationControllerStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ReplicationController. - - - :param status: The status of this V1ReplicationController. # noqa: E501 - :type: V1ReplicationControllerStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicationController): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicationController): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_condition.py deleted file mode 100644 index bc0aeba..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicationControllerCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicationControllerCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1ReplicationControllerCondition. # noqa: E501 - - The last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1ReplicationControllerCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1ReplicationControllerCondition. - - The last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1ReplicationControllerCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1ReplicationControllerCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1ReplicationControllerCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ReplicationControllerCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1ReplicationControllerCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1ReplicationControllerCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1ReplicationControllerCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1ReplicationControllerCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1ReplicationControllerCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1ReplicationControllerCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1ReplicationControllerCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ReplicationControllerCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1ReplicationControllerCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1ReplicationControllerCondition. # noqa: E501 - - Type of replication controller condition. # noqa: E501 - - :return: The type of this V1ReplicationControllerCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1ReplicationControllerCondition. - - Type of replication controller condition. # noqa: E501 - - :param type: The type of this V1ReplicationControllerCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicationControllerCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicationControllerCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_list.py deleted file mode 100644 index 1a27e84..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicationControllerList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ReplicationController]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicationControllerList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ReplicationControllerList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ReplicationControllerList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ReplicationControllerList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ReplicationControllerList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ReplicationControllerList. # noqa: E501 - - List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller # noqa: E501 - - :return: The items of this V1ReplicationControllerList. # noqa: E501 - :rtype: list[V1ReplicationController] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ReplicationControllerList. - - List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller # noqa: E501 - - :param items: The items of this V1ReplicationControllerList. # noqa: E501 - :type: list[V1ReplicationController] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ReplicationControllerList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ReplicationControllerList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ReplicationControllerList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ReplicationControllerList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ReplicationControllerList. # noqa: E501 - - - :return: The metadata of this V1ReplicationControllerList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ReplicationControllerList. - - - :param metadata: The metadata of this V1ReplicationControllerList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicationControllerList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicationControllerList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_spec.py deleted file mode 100644 index d5dd6ca..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_spec.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicationControllerSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'min_ready_seconds': 'int', - 'replicas': 'int', - 'selector': 'dict(str, str)', - 'template': 'V1PodTemplateSpec' - } - - attribute_map = { - 'min_ready_seconds': 'minReadySeconds', - 'replicas': 'replicas', - 'selector': 'selector', - 'template': 'template' - } - - def __init__(self, min_ready_seconds=None, replicas=None, selector=None, template=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicationControllerSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._min_ready_seconds = None - self._replicas = None - self._selector = None - self._template = None - self.discriminator = None - - if min_ready_seconds is not None: - self.min_ready_seconds = min_ready_seconds - if replicas is not None: - self.replicas = replicas - if selector is not None: - self.selector = selector - if template is not None: - self.template = template - - @property - def min_ready_seconds(self): - """Gets the min_ready_seconds of this V1ReplicationControllerSpec. # noqa: E501 - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :return: The min_ready_seconds of this V1ReplicationControllerSpec. # noqa: E501 - :rtype: int - """ - return self._min_ready_seconds - - @min_ready_seconds.setter - def min_ready_seconds(self, min_ready_seconds): - """Sets the min_ready_seconds of this V1ReplicationControllerSpec. - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :param min_ready_seconds: The min_ready_seconds of this V1ReplicationControllerSpec. # noqa: E501 - :type: int - """ - - self._min_ready_seconds = min_ready_seconds - - @property - def replicas(self): - """Gets the replicas of this V1ReplicationControllerSpec. # noqa: E501 - - Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller # noqa: E501 - - :return: The replicas of this V1ReplicationControllerSpec. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ReplicationControllerSpec. - - Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller # noqa: E501 - - :param replicas: The replicas of this V1ReplicationControllerSpec. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - @property - def selector(self): - """Gets the selector of this V1ReplicationControllerSpec. # noqa: E501 - - Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors # noqa: E501 - - :return: The selector of this V1ReplicationControllerSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1ReplicationControllerSpec. - - Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors # noqa: E501 - - :param selector: The selector of this V1ReplicationControllerSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._selector = selector - - @property - def template(self): - """Gets the template of this V1ReplicationControllerSpec. # noqa: E501 - - - :return: The template of this V1ReplicationControllerSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1ReplicationControllerSpec. - - - :param template: The template of this V1ReplicationControllerSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - - self._template = template - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicationControllerSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicationControllerSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_status.py deleted file mode 100644 index f296b3a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_replication_controller_status.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ReplicationControllerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'available_replicas': 'int', - 'conditions': 'list[V1ReplicationControllerCondition]', - 'fully_labeled_replicas': 'int', - 'observed_generation': 'int', - 'ready_replicas': 'int', - 'replicas': 'int' - } - - attribute_map = { - 'available_replicas': 'availableReplicas', - 'conditions': 'conditions', - 'fully_labeled_replicas': 'fullyLabeledReplicas', - 'observed_generation': 'observedGeneration', - 'ready_replicas': 'readyReplicas', - 'replicas': 'replicas' - } - - def __init__(self, available_replicas=None, conditions=None, fully_labeled_replicas=None, observed_generation=None, ready_replicas=None, replicas=None, local_vars_configuration=None): # noqa: E501 - """V1ReplicationControllerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._available_replicas = None - self._conditions = None - self._fully_labeled_replicas = None - self._observed_generation = None - self._ready_replicas = None - self._replicas = None - self.discriminator = None - - if available_replicas is not None: - self.available_replicas = available_replicas - if conditions is not None: - self.conditions = conditions - if fully_labeled_replicas is not None: - self.fully_labeled_replicas = fully_labeled_replicas - if observed_generation is not None: - self.observed_generation = observed_generation - if ready_replicas is not None: - self.ready_replicas = ready_replicas - self.replicas = replicas - - @property - def available_replicas(self): - """Gets the available_replicas of this V1ReplicationControllerStatus. # noqa: E501 - - The number of available replicas (ready for at least minReadySeconds) for this replication controller. # noqa: E501 - - :return: The available_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: int - """ - return self._available_replicas - - @available_replicas.setter - def available_replicas(self, available_replicas): - """Sets the available_replicas of this V1ReplicationControllerStatus. - - The number of available replicas (ready for at least minReadySeconds) for this replication controller. # noqa: E501 - - :param available_replicas: The available_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :type: int - """ - - self._available_replicas = available_replicas - - @property - def conditions(self): - """Gets the conditions of this V1ReplicationControllerStatus. # noqa: E501 - - Represents the latest available observations of a replication controller's current state. # noqa: E501 - - :return: The conditions of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: list[V1ReplicationControllerCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1ReplicationControllerStatus. - - Represents the latest available observations of a replication controller's current state. # noqa: E501 - - :param conditions: The conditions of this V1ReplicationControllerStatus. # noqa: E501 - :type: list[V1ReplicationControllerCondition] - """ - - self._conditions = conditions - - @property - def fully_labeled_replicas(self): - """Gets the fully_labeled_replicas of this V1ReplicationControllerStatus. # noqa: E501 - - The number of pods that have labels matching the labels of the pod template of the replication controller. # noqa: E501 - - :return: The fully_labeled_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: int - """ - return self._fully_labeled_replicas - - @fully_labeled_replicas.setter - def fully_labeled_replicas(self, fully_labeled_replicas): - """Sets the fully_labeled_replicas of this V1ReplicationControllerStatus. - - The number of pods that have labels matching the labels of the pod template of the replication controller. # noqa: E501 - - :param fully_labeled_replicas: The fully_labeled_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :type: int - """ - - self._fully_labeled_replicas = fully_labeled_replicas - - @property - def observed_generation(self): - """Gets the observed_generation of this V1ReplicationControllerStatus. # noqa: E501 - - ObservedGeneration reflects the generation of the most recently observed replication controller. # noqa: E501 - - :return: The observed_generation of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1ReplicationControllerStatus. - - ObservedGeneration reflects the generation of the most recently observed replication controller. # noqa: E501 - - :param observed_generation: The observed_generation of this V1ReplicationControllerStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def ready_replicas(self): - """Gets the ready_replicas of this V1ReplicationControllerStatus. # noqa: E501 - - The number of ready replicas for this replication controller. # noqa: E501 - - :return: The ready_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: int - """ - return self._ready_replicas - - @ready_replicas.setter - def ready_replicas(self, ready_replicas): - """Sets the ready_replicas of this V1ReplicationControllerStatus. - - The number of ready replicas for this replication controller. # noqa: E501 - - :param ready_replicas: The ready_replicas of this V1ReplicationControllerStatus. # noqa: E501 - :type: int - """ - - self._ready_replicas = ready_replicas - - @property - def replicas(self): - """Gets the replicas of this V1ReplicationControllerStatus. # noqa: E501 - - Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller # noqa: E501 - - :return: The replicas of this V1ReplicationControllerStatus. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ReplicationControllerStatus. - - Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller # noqa: E501 - - :param replicas: The replicas of this V1ReplicationControllerStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and replicas is None: # noqa: E501 - raise ValueError("Invalid value for `replicas`, must not be `None`") # noqa: E501 - - self._replicas = replicas - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ReplicationControllerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ReplicationControllerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_attributes.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_attributes.py deleted file mode 100644 index b1debbe..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_attributes.py +++ /dev/null @@ -1,290 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceAttributes(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group': 'str', - 'name': 'str', - 'namespace': 'str', - 'resource': 'str', - 'subresource': 'str', - 'verb': 'str', - 'version': 'str' - } - - attribute_map = { - 'group': 'group', - 'name': 'name', - 'namespace': 'namespace', - 'resource': 'resource', - 'subresource': 'subresource', - 'verb': 'verb', - 'version': 'version' - } - - def __init__(self, group=None, name=None, namespace=None, resource=None, subresource=None, verb=None, version=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceAttributes - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group = None - self._name = None - self._namespace = None - self._resource = None - self._subresource = None - self._verb = None - self._version = None - self.discriminator = None - - if group is not None: - self.group = group - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if resource is not None: - self.resource = resource - if subresource is not None: - self.subresource = subresource - if verb is not None: - self.verb = verb - if version is not None: - self.version = version - - @property - def group(self): - """Gets the group of this V1ResourceAttributes. # noqa: E501 - - Group is the API Group of the Resource. \"*\" means all. # noqa: E501 - - :return: The group of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1ResourceAttributes. - - Group is the API Group of the Resource. \"*\" means all. # noqa: E501 - - :param group: The group of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def name(self): - """Gets the name of this V1ResourceAttributes. # noqa: E501 - - Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all. # noqa: E501 - - :return: The name of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ResourceAttributes. - - Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all. # noqa: E501 - - :param name: The name of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1ResourceAttributes. # noqa: E501 - - Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview # noqa: E501 - - :return: The namespace of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1ResourceAttributes. - - Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview # noqa: E501 - - :param namespace: The namespace of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def resource(self): - """Gets the resource of this V1ResourceAttributes. # noqa: E501 - - Resource is one of the existing resource types. \"*\" means all. # noqa: E501 - - :return: The resource of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V1ResourceAttributes. - - Resource is one of the existing resource types. \"*\" means all. # noqa: E501 - - :param resource: The resource of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._resource = resource - - @property - def subresource(self): - """Gets the subresource of this V1ResourceAttributes. # noqa: E501 - - Subresource is one of the existing resource types. \"\" means none. # noqa: E501 - - :return: The subresource of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._subresource - - @subresource.setter - def subresource(self, subresource): - """Sets the subresource of this V1ResourceAttributes. - - Subresource is one of the existing resource types. \"\" means none. # noqa: E501 - - :param subresource: The subresource of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._subresource = subresource - - @property - def verb(self): - """Gets the verb of this V1ResourceAttributes. # noqa: E501 - - Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all. # noqa: E501 - - :return: The verb of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._verb - - @verb.setter - def verb(self, verb): - """Sets the verb of this V1ResourceAttributes. - - Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all. # noqa: E501 - - :param verb: The verb of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._verb = verb - - @property - def version(self): - """Gets the version of this V1ResourceAttributes. # noqa: E501 - - Version is the API Version of the Resource. \"*\" means all. # noqa: E501 - - :return: The version of this V1ResourceAttributes. # noqa: E501 - :rtype: str - """ - return self._version - - @version.setter - def version(self, version): - """Sets the version of this V1ResourceAttributes. - - Version is the API Version of the Resource. \"*\" means all. # noqa: E501 - - :param version: The version of this V1ResourceAttributes. # noqa: E501 - :type: str - """ - - self._version = version - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceAttributes): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceAttributes): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_claim.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_claim.py deleted file mode 100644 index 390fec5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_claim.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceClaim(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceClaim - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1ResourceClaim. # noqa: E501 - - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. # noqa: E501 - - :return: The name of this V1ResourceClaim. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ResourceClaim. - - Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. # noqa: E501 - - :param name: The name of this V1ResourceClaim. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceClaim): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceClaim): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_field_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_field_selector.py deleted file mode 100644 index efb478a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_field_selector.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceFieldSelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_name': 'str', - 'divisor': 'str', - 'resource': 'str' - } - - attribute_map = { - 'container_name': 'containerName', - 'divisor': 'divisor', - 'resource': 'resource' - } - - def __init__(self, container_name=None, divisor=None, resource=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceFieldSelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_name = None - self._divisor = None - self._resource = None - self.discriminator = None - - if container_name is not None: - self.container_name = container_name - if divisor is not None: - self.divisor = divisor - self.resource = resource - - @property - def container_name(self): - """Gets the container_name of this V1ResourceFieldSelector. # noqa: E501 - - Container name: required for volumes, optional for env vars # noqa: E501 - - :return: The container_name of this V1ResourceFieldSelector. # noqa: E501 - :rtype: str - """ - return self._container_name - - @container_name.setter - def container_name(self, container_name): - """Sets the container_name of this V1ResourceFieldSelector. - - Container name: required for volumes, optional for env vars # noqa: E501 - - :param container_name: The container_name of this V1ResourceFieldSelector. # noqa: E501 - :type: str - """ - - self._container_name = container_name - - @property - def divisor(self): - """Gets the divisor of this V1ResourceFieldSelector. # noqa: E501 - - Specifies the output format of the exposed resources, defaults to \"1\" # noqa: E501 - - :return: The divisor of this V1ResourceFieldSelector. # noqa: E501 - :rtype: str - """ - return self._divisor - - @divisor.setter - def divisor(self, divisor): - """Sets the divisor of this V1ResourceFieldSelector. - - Specifies the output format of the exposed resources, defaults to \"1\" # noqa: E501 - - :param divisor: The divisor of this V1ResourceFieldSelector. # noqa: E501 - :type: str - """ - - self._divisor = divisor - - @property - def resource(self): - """Gets the resource of this V1ResourceFieldSelector. # noqa: E501 - - Required: resource to select # noqa: E501 - - :return: The resource of this V1ResourceFieldSelector. # noqa: E501 - :rtype: str - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V1ResourceFieldSelector. - - Required: resource to select # noqa: E501 - - :param resource: The resource of this V1ResourceFieldSelector. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and resource is None: # noqa: E501 - raise ValueError("Invalid value for `resource`, must not be `None`") # noqa: E501 - - self._resource = resource - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceFieldSelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceFieldSelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_policy_rule.py deleted file mode 100644 index e77774b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_policy_rule.py +++ /dev/null @@ -1,237 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourcePolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'cluster_scope': 'bool', - 'namespaces': 'list[str]', - 'resources': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'cluster_scope': 'clusterScope', - 'namespaces': 'namespaces', - 'resources': 'resources', - 'verbs': 'verbs' - } - - def __init__(self, api_groups=None, cluster_scope=None, namespaces=None, resources=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1ResourcePolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._cluster_scope = None - self._namespaces = None - self._resources = None - self._verbs = None - self.discriminator = None - - self.api_groups = api_groups - if cluster_scope is not None: - self.cluster_scope = cluster_scope - if namespaces is not None: - self.namespaces = namespaces - self.resources = resources - self.verbs = verbs - - @property - def api_groups(self): - """Gets the api_groups of this V1ResourcePolicyRule. # noqa: E501 - - `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required. # noqa: E501 - - :return: The api_groups of this V1ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1ResourcePolicyRule. - - `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required. # noqa: E501 - - :param api_groups: The api_groups of this V1ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and api_groups is None: # noqa: E501 - raise ValueError("Invalid value for `api_groups`, must not be `None`") # noqa: E501 - - self._api_groups = api_groups - - @property - def cluster_scope(self): - """Gets the cluster_scope of this V1ResourcePolicyRule. # noqa: E501 - - `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list. # noqa: E501 - - :return: The cluster_scope of this V1ResourcePolicyRule. # noqa: E501 - :rtype: bool - """ - return self._cluster_scope - - @cluster_scope.setter - def cluster_scope(self, cluster_scope): - """Sets the cluster_scope of this V1ResourcePolicyRule. - - `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list. # noqa: E501 - - :param cluster_scope: The cluster_scope of this V1ResourcePolicyRule. # noqa: E501 - :type: bool - """ - - self._cluster_scope = cluster_scope - - @property - def namespaces(self): - """Gets the namespaces of this V1ResourcePolicyRule. # noqa: E501 - - `namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\". Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. # noqa: E501 - - :return: The namespaces of this V1ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._namespaces - - @namespaces.setter - def namespaces(self, namespaces): - """Sets the namespaces of this V1ResourcePolicyRule. - - `namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\". Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. # noqa: E501 - - :param namespaces: The namespaces of this V1ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - - self._namespaces = namespaces - - @property - def resources(self): - """Gets the resources of this V1ResourcePolicyRule. # noqa: E501 - - `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ \"services\", \"nodes/status\" ]. This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required. # noqa: E501 - - :return: The resources of this V1ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1ResourcePolicyRule. - - `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ \"services\", \"nodes/status\" ]. This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required. # noqa: E501 - - :param resources: The resources of this V1ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and resources is None: # noqa: E501 - raise ValueError("Invalid value for `resources`, must not be `None`") # noqa: E501 - - self._resources = resources - - @property - def verbs(self): - """Gets the verbs of this V1ResourcePolicyRule. # noqa: E501 - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required. # noqa: E501 - - :return: The verbs of this V1ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1ResourcePolicyRule. - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required. # noqa: E501 - - :param verbs: The verbs of this V1ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourcePolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourcePolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota.py deleted file mode 100644 index 08af6f4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceQuota(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1ResourceQuotaSpec', - 'status': 'V1ResourceQuotaStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceQuota - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1ResourceQuota. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ResourceQuota. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ResourceQuota. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ResourceQuota. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ResourceQuota. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ResourceQuota. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ResourceQuota. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ResourceQuota. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ResourceQuota. # noqa: E501 - - - :return: The metadata of this V1ResourceQuota. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ResourceQuota. - - - :param metadata: The metadata of this V1ResourceQuota. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1ResourceQuota. # noqa: E501 - - - :return: The spec of this V1ResourceQuota. # noqa: E501 - :rtype: V1ResourceQuotaSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1ResourceQuota. - - - :param spec: The spec of this V1ResourceQuota. # noqa: E501 - :type: V1ResourceQuotaSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1ResourceQuota. # noqa: E501 - - - :return: The status of this V1ResourceQuota. # noqa: E501 - :rtype: V1ResourceQuotaStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1ResourceQuota. - - - :param status: The status of this V1ResourceQuota. # noqa: E501 - :type: V1ResourceQuotaStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceQuota): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceQuota): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_list.py deleted file mode 100644 index 60e2912..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceQuotaList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ResourceQuota]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceQuotaList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ResourceQuotaList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ResourceQuotaList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ResourceQuotaList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ResourceQuotaList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ResourceQuotaList. # noqa: E501 - - Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :return: The items of this V1ResourceQuotaList. # noqa: E501 - :rtype: list[V1ResourceQuota] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ResourceQuotaList. - - Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :param items: The items of this V1ResourceQuotaList. # noqa: E501 - :type: list[V1ResourceQuota] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ResourceQuotaList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ResourceQuotaList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ResourceQuotaList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ResourceQuotaList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ResourceQuotaList. # noqa: E501 - - - :return: The metadata of this V1ResourceQuotaList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ResourceQuotaList. - - - :param metadata: The metadata of this V1ResourceQuotaList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceQuotaList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceQuotaList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_spec.py deleted file mode 100644 index 9120219..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_spec.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceQuotaSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hard': 'dict(str, str)', - 'scope_selector': 'V1ScopeSelector', - 'scopes': 'list[str]' - } - - attribute_map = { - 'hard': 'hard', - 'scope_selector': 'scopeSelector', - 'scopes': 'scopes' - } - - def __init__(self, hard=None, scope_selector=None, scopes=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceQuotaSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hard = None - self._scope_selector = None - self._scopes = None - self.discriminator = None - - if hard is not None: - self.hard = hard - if scope_selector is not None: - self.scope_selector = scope_selector - if scopes is not None: - self.scopes = scopes - - @property - def hard(self): - """Gets the hard of this V1ResourceQuotaSpec. # noqa: E501 - - hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :return: The hard of this V1ResourceQuotaSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._hard - - @hard.setter - def hard(self, hard): - """Sets the hard of this V1ResourceQuotaSpec. - - hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :param hard: The hard of this V1ResourceQuotaSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._hard = hard - - @property - def scope_selector(self): - """Gets the scope_selector of this V1ResourceQuotaSpec. # noqa: E501 - - - :return: The scope_selector of this V1ResourceQuotaSpec. # noqa: E501 - :rtype: V1ScopeSelector - """ - return self._scope_selector - - @scope_selector.setter - def scope_selector(self, scope_selector): - """Sets the scope_selector of this V1ResourceQuotaSpec. - - - :param scope_selector: The scope_selector of this V1ResourceQuotaSpec. # noqa: E501 - :type: V1ScopeSelector - """ - - self._scope_selector = scope_selector - - @property - def scopes(self): - """Gets the scopes of this V1ResourceQuotaSpec. # noqa: E501 - - A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects. # noqa: E501 - - :return: The scopes of this V1ResourceQuotaSpec. # noqa: E501 - :rtype: list[str] - """ - return self._scopes - - @scopes.setter - def scopes(self, scopes): - """Sets the scopes of this V1ResourceQuotaSpec. - - A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects. # noqa: E501 - - :param scopes: The scopes of this V1ResourceQuotaSpec. # noqa: E501 - :type: list[str] - """ - - self._scopes = scopes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceQuotaSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceQuotaSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_status.py deleted file mode 100644 index fbaa589..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_quota_status.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceQuotaStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hard': 'dict(str, str)', - 'used': 'dict(str, str)' - } - - attribute_map = { - 'hard': 'hard', - 'used': 'used' - } - - def __init__(self, hard=None, used=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceQuotaStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hard = None - self._used = None - self.discriminator = None - - if hard is not None: - self.hard = hard - if used is not None: - self.used = used - - @property - def hard(self): - """Gets the hard of this V1ResourceQuotaStatus. # noqa: E501 - - Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :return: The hard of this V1ResourceQuotaStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._hard - - @hard.setter - def hard(self, hard): - """Sets the hard of this V1ResourceQuotaStatus. - - Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ # noqa: E501 - - :param hard: The hard of this V1ResourceQuotaStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._hard = hard - - @property - def used(self): - """Gets the used of this V1ResourceQuotaStatus. # noqa: E501 - - Used is the current observed total usage of the resource in the namespace. # noqa: E501 - - :return: The used of this V1ResourceQuotaStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._used - - @used.setter - def used(self, used): - """Sets the used of this V1ResourceQuotaStatus. - - Used is the current observed total usage of the resource in the namespace. # noqa: E501 - - :param used: The used of this V1ResourceQuotaStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._used = used - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceQuotaStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceQuotaStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_requirements.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_requirements.py deleted file mode 100644 index dbe9960..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_requirements.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceRequirements(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'claims': 'list[V1ResourceClaim]', - 'limits': 'dict(str, str)', - 'requests': 'dict(str, str)' - } - - attribute_map = { - 'claims': 'claims', - 'limits': 'limits', - 'requests': 'requests' - } - - def __init__(self, claims=None, limits=None, requests=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceRequirements - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._claims = None - self._limits = None - self._requests = None - self.discriminator = None - - if claims is not None: - self.claims = claims - if limits is not None: - self.limits = limits - if requests is not None: - self.requests = requests - - @property - def claims(self): - """Gets the claims of this V1ResourceRequirements. # noqa: E501 - - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. # noqa: E501 - - :return: The claims of this V1ResourceRequirements. # noqa: E501 - :rtype: list[V1ResourceClaim] - """ - return self._claims - - @claims.setter - def claims(self, claims): - """Sets the claims of this V1ResourceRequirements. - - Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. # noqa: E501 - - :param claims: The claims of this V1ResourceRequirements. # noqa: E501 - :type: list[V1ResourceClaim] - """ - - self._claims = claims - - @property - def limits(self): - """Gets the limits of this V1ResourceRequirements. # noqa: E501 - - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :return: The limits of this V1ResourceRequirements. # noqa: E501 - :rtype: dict(str, str) - """ - return self._limits - - @limits.setter - def limits(self, limits): - """Sets the limits of this V1ResourceRequirements. - - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :param limits: The limits of this V1ResourceRequirements. # noqa: E501 - :type: dict(str, str) - """ - - self._limits = limits - - @property - def requests(self): - """Gets the requests of this V1ResourceRequirements. # noqa: E501 - - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :return: The requests of this V1ResourceRequirements. # noqa: E501 - :rtype: dict(str, str) - """ - return self._requests - - @requests.setter - def requests(self, requests): - """Sets the requests of this V1ResourceRequirements. - - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :param requests: The requests of this V1ResourceRequirements. # noqa: E501 - :type: dict(str, str) - """ - - self._requests = requests - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceRequirements): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceRequirements): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_rule.py deleted file mode 100644 index 1f26b12..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_resource_rule.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ResourceRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'resource_names': 'list[str]', - 'resources': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'resource_names': 'resourceNames', - 'resources': 'resources', - 'verbs': 'verbs' - } - - def __init__(self, api_groups=None, resource_names=None, resources=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1ResourceRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._resource_names = None - self._resources = None - self._verbs = None - self.discriminator = None - - if api_groups is not None: - self.api_groups = api_groups - if resource_names is not None: - self.resource_names = resource_names - if resources is not None: - self.resources = resources - self.verbs = verbs - - @property - def api_groups(self): - """Gets the api_groups of this V1ResourceRule. # noqa: E501 - - APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"*\" means all. # noqa: E501 - - :return: The api_groups of this V1ResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1ResourceRule. - - APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"*\" means all. # noqa: E501 - - :param api_groups: The api_groups of this V1ResourceRule. # noqa: E501 - :type: list[str] - """ - - self._api_groups = api_groups - - @property - def resource_names(self): - """Gets the resource_names of this V1ResourceRule. # noqa: E501 - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all. # noqa: E501 - - :return: The resource_names of this V1ResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._resource_names - - @resource_names.setter - def resource_names(self, resource_names): - """Sets the resource_names of this V1ResourceRule. - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all. # noqa: E501 - - :param resource_names: The resource_names of this V1ResourceRule. # noqa: E501 - :type: list[str] - """ - - self._resource_names = resource_names - - @property - def resources(self): - """Gets the resources of this V1ResourceRule. # noqa: E501 - - Resources is a list of resources this rule applies to. \"*\" means all in the specified apiGroups. \"*/foo\" represents the subresource 'foo' for all resources in the specified apiGroups. # noqa: E501 - - :return: The resources of this V1ResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1ResourceRule. - - Resources is a list of resources this rule applies to. \"*\" means all in the specified apiGroups. \"*/foo\" represents the subresource 'foo' for all resources in the specified apiGroups. # noqa: E501 - - :param resources: The resources of this V1ResourceRule. # noqa: E501 - :type: list[str] - """ - - self._resources = resources - - @property - def verbs(self): - """Gets the verbs of this V1ResourceRule. # noqa: E501 - - Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all. # noqa: E501 - - :return: The verbs of this V1ResourceRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1ResourceRule. - - Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all. # noqa: E501 - - :param verbs: The verbs of this V1ResourceRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ResourceRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ResourceRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role.py deleted file mode 100644 index ca8fe9b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Role(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'rules': 'list[V1PolicyRule]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'rules': 'rules' - } - - def __init__(self, api_version=None, kind=None, metadata=None, rules=None, local_vars_configuration=None): # noqa: E501 - """V1Role - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._rules = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if rules is not None: - self.rules = rules - - @property - def api_version(self): - """Gets the api_version of this V1Role. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Role. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Role. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Role. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Role. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Role. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Role. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Role. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Role. # noqa: E501 - - - :return: The metadata of this V1Role. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Role. - - - :param metadata: The metadata of this V1Role. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def rules(self): - """Gets the rules of this V1Role. # noqa: E501 - - Rules holds all the PolicyRules for this Role # noqa: E501 - - :return: The rules of this V1Role. # noqa: E501 - :rtype: list[V1PolicyRule] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1Role. - - Rules holds all the PolicyRules for this Role # noqa: E501 - - :param rules: The rules of this V1Role. # noqa: E501 - :type: list[V1PolicyRule] - """ - - self._rules = rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Role): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Role): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding.py deleted file mode 100644 index d99170d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding.py +++ /dev/null @@ -1,231 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RoleBinding(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'role_ref': 'V1RoleRef', - 'subjects': 'list[RbacV1Subject]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'role_ref': 'roleRef', - 'subjects': 'subjects' - } - - def __init__(self, api_version=None, kind=None, metadata=None, role_ref=None, subjects=None, local_vars_configuration=None): # noqa: E501 - """V1RoleBinding - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._role_ref = None - self._subjects = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.role_ref = role_ref - if subjects is not None: - self.subjects = subjects - - @property - def api_version(self): - """Gets the api_version of this V1RoleBinding. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1RoleBinding. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1RoleBinding. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1RoleBinding. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1RoleBinding. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1RoleBinding. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RoleBinding. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1RoleBinding. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1RoleBinding. # noqa: E501 - - - :return: The metadata of this V1RoleBinding. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1RoleBinding. - - - :param metadata: The metadata of this V1RoleBinding. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def role_ref(self): - """Gets the role_ref of this V1RoleBinding. # noqa: E501 - - - :return: The role_ref of this V1RoleBinding. # noqa: E501 - :rtype: V1RoleRef - """ - return self._role_ref - - @role_ref.setter - def role_ref(self, role_ref): - """Sets the role_ref of this V1RoleBinding. - - - :param role_ref: The role_ref of this V1RoleBinding. # noqa: E501 - :type: V1RoleRef - """ - if self.local_vars_configuration.client_side_validation and role_ref is None: # noqa: E501 - raise ValueError("Invalid value for `role_ref`, must not be `None`") # noqa: E501 - - self._role_ref = role_ref - - @property - def subjects(self): - """Gets the subjects of this V1RoleBinding. # noqa: E501 - - Subjects holds references to the objects the role applies to. # noqa: E501 - - :return: The subjects of this V1RoleBinding. # noqa: E501 - :rtype: list[RbacV1Subject] - """ - return self._subjects - - @subjects.setter - def subjects(self, subjects): - """Sets the subjects of this V1RoleBinding. - - Subjects holds references to the objects the role applies to. # noqa: E501 - - :param subjects: The subjects of this V1RoleBinding. # noqa: E501 - :type: list[RbacV1Subject] - """ - - self._subjects = subjects - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RoleBinding): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RoleBinding): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding_list.py deleted file mode 100644 index 9842017..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_binding_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RoleBindingList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1RoleBinding]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1RoleBindingList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1RoleBindingList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1RoleBindingList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1RoleBindingList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1RoleBindingList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1RoleBindingList. # noqa: E501 - - Items is a list of RoleBindings # noqa: E501 - - :return: The items of this V1RoleBindingList. # noqa: E501 - :rtype: list[V1RoleBinding] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1RoleBindingList. - - Items is a list of RoleBindings # noqa: E501 - - :param items: The items of this V1RoleBindingList. # noqa: E501 - :type: list[V1RoleBinding] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1RoleBindingList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1RoleBindingList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RoleBindingList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1RoleBindingList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1RoleBindingList. # noqa: E501 - - - :return: The metadata of this V1RoleBindingList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1RoleBindingList. - - - :param metadata: The metadata of this V1RoleBindingList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RoleBindingList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RoleBindingList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_list.py deleted file mode 100644 index 6c8ba73..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RoleList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Role]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1RoleList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1RoleList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1RoleList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1RoleList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1RoleList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1RoleList. # noqa: E501 - - Items is a list of Roles # noqa: E501 - - :return: The items of this V1RoleList. # noqa: E501 - :rtype: list[V1Role] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1RoleList. - - Items is a list of Roles # noqa: E501 - - :param items: The items of this V1RoleList. # noqa: E501 - :type: list[V1Role] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1RoleList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1RoleList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RoleList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1RoleList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1RoleList. # noqa: E501 - - - :return: The metadata of this V1RoleList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1RoleList. - - - :param metadata: The metadata of this V1RoleList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RoleList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RoleList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_ref.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_ref.py deleted file mode 100644 index 499d03c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_role_ref.py +++ /dev/null @@ -1,181 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RoleRef(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name' - } - - def __init__(self, api_group=None, kind=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1RoleRef - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self.discriminator = None - - self.api_group = api_group - self.kind = kind - self.name = name - - @property - def api_group(self): - """Gets the api_group of this V1RoleRef. # noqa: E501 - - APIGroup is the group for the resource being referenced # noqa: E501 - - :return: The api_group of this V1RoleRef. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1RoleRef. - - APIGroup is the group for the resource being referenced # noqa: E501 - - :param api_group: The api_group of this V1RoleRef. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and api_group is None: # noqa: E501 - raise ValueError("Invalid value for `api_group`, must not be `None`") # noqa: E501 - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1RoleRef. # noqa: E501 - - Kind is the type of resource being referenced # noqa: E501 - - :return: The kind of this V1RoleRef. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RoleRef. - - Kind is the type of resource being referenced # noqa: E501 - - :param kind: The kind of this V1RoleRef. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1RoleRef. # noqa: E501 - - Name is the name of resource being referenced # noqa: E501 - - :return: The name of this V1RoleRef. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1RoleRef. - - Name is the name of resource being referenced # noqa: E501 - - :param name: The name of this V1RoleRef. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RoleRef): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RoleRef): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_daemon_set.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_daemon_set.py deleted file mode 100644 index 87169a8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_daemon_set.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RollingUpdateDaemonSet(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'max_surge': 'object', - 'max_unavailable': 'object' - } - - attribute_map = { - 'max_surge': 'maxSurge', - 'max_unavailable': 'maxUnavailable' - } - - def __init__(self, max_surge=None, max_unavailable=None, local_vars_configuration=None): # noqa: E501 - """V1RollingUpdateDaemonSet - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._max_surge = None - self._max_unavailable = None - self.discriminator = None - - if max_surge is not None: - self.max_surge = max_surge - if max_unavailable is not None: - self.max_unavailable = max_unavailable - - @property - def max_surge(self): - """Gets the max_surge of this V1RollingUpdateDaemonSet. # noqa: E501 - - The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. # noqa: E501 - - :return: The max_surge of this V1RollingUpdateDaemonSet. # noqa: E501 - :rtype: object - """ - return self._max_surge - - @max_surge.setter - def max_surge(self, max_surge): - """Sets the max_surge of this V1RollingUpdateDaemonSet. - - The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. # noqa: E501 - - :param max_surge: The max_surge of this V1RollingUpdateDaemonSet. # noqa: E501 - :type: object - """ - - self._max_surge = max_surge - - @property - def max_unavailable(self): - """Gets the max_unavailable of this V1RollingUpdateDaemonSet. # noqa: E501 - - The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update. # noqa: E501 - - :return: The max_unavailable of this V1RollingUpdateDaemonSet. # noqa: E501 - :rtype: object - """ - return self._max_unavailable - - @max_unavailable.setter - def max_unavailable(self, max_unavailable): - """Sets the max_unavailable of this V1RollingUpdateDaemonSet. - - The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update. # noqa: E501 - - :param max_unavailable: The max_unavailable of this V1RollingUpdateDaemonSet. # noqa: E501 - :type: object - """ - - self._max_unavailable = max_unavailable - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RollingUpdateDaemonSet): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RollingUpdateDaemonSet): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_deployment.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_deployment.py deleted file mode 100644 index 75f424c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_deployment.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RollingUpdateDeployment(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'max_surge': 'object', - 'max_unavailable': 'object' - } - - attribute_map = { - 'max_surge': 'maxSurge', - 'max_unavailable': 'maxUnavailable' - } - - def __init__(self, max_surge=None, max_unavailable=None, local_vars_configuration=None): # noqa: E501 - """V1RollingUpdateDeployment - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._max_surge = None - self._max_unavailable = None - self.discriminator = None - - if max_surge is not None: - self.max_surge = max_surge - if max_unavailable is not None: - self.max_unavailable = max_unavailable - - @property - def max_surge(self): - """Gets the max_surge of this V1RollingUpdateDeployment. # noqa: E501 - - The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. # noqa: E501 - - :return: The max_surge of this V1RollingUpdateDeployment. # noqa: E501 - :rtype: object - """ - return self._max_surge - - @max_surge.setter - def max_surge(self, max_surge): - """Sets the max_surge of this V1RollingUpdateDeployment. - - The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods. # noqa: E501 - - :param max_surge: The max_surge of this V1RollingUpdateDeployment. # noqa: E501 - :type: object - """ - - self._max_surge = max_surge - - @property - def max_unavailable(self): - """Gets the max_unavailable of this V1RollingUpdateDeployment. # noqa: E501 - - The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. # noqa: E501 - - :return: The max_unavailable of this V1RollingUpdateDeployment. # noqa: E501 - :rtype: object - """ - return self._max_unavailable - - @max_unavailable.setter - def max_unavailable(self, max_unavailable): - """Sets the max_unavailable of this V1RollingUpdateDeployment. - - The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods. # noqa: E501 - - :param max_unavailable: The max_unavailable of this V1RollingUpdateDeployment. # noqa: E501 - :type: object - """ - - self._max_unavailable = max_unavailable - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RollingUpdateDeployment): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RollingUpdateDeployment): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_stateful_set_strategy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_stateful_set_strategy.py deleted file mode 100644 index 3d4a3ab..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rolling_update_stateful_set_strategy.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RollingUpdateStatefulSetStrategy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'max_unavailable': 'object', - 'partition': 'int' - } - - attribute_map = { - 'max_unavailable': 'maxUnavailable', - 'partition': 'partition' - } - - def __init__(self, max_unavailable=None, partition=None, local_vars_configuration=None): # noqa: E501 - """V1RollingUpdateStatefulSetStrategy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._max_unavailable = None - self._partition = None - self.discriminator = None - - if max_unavailable is not None: - self.max_unavailable = max_unavailable - if partition is not None: - self.partition = partition - - @property - def max_unavailable(self): - """Gets the max_unavailable of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - - The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. # noqa: E501 - - :return: The max_unavailable of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - :rtype: object - """ - return self._max_unavailable - - @max_unavailable.setter - def max_unavailable(self, max_unavailable): - """Sets the max_unavailable of this V1RollingUpdateStatefulSetStrategy. - - The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable. # noqa: E501 - - :param max_unavailable: The max_unavailable of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - :type: object - """ - - self._max_unavailable = max_unavailable - - @property - def partition(self): - """Gets the partition of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - - Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0. # noqa: E501 - - :return: The partition of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - :rtype: int - """ - return self._partition - - @partition.setter - def partition(self, partition): - """Sets the partition of this V1RollingUpdateStatefulSetStrategy. - - Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0. # noqa: E501 - - :param partition: The partition of this V1RollingUpdateStatefulSetStrategy. # noqa: E501 - :type: int - """ - - self._partition = partition - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RollingUpdateStatefulSetStrategy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RollingUpdateStatefulSetStrategy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rule_with_operations.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rule_with_operations.py deleted file mode 100644 index d3e2a6b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_rule_with_operations.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RuleWithOperations(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'api_versions': 'list[str]', - 'operations': 'list[str]', - 'resources': 'list[str]', - 'scope': 'str' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'api_versions': 'apiVersions', - 'operations': 'operations', - 'resources': 'resources', - 'scope': 'scope' - } - - def __init__(self, api_groups=None, api_versions=None, operations=None, resources=None, scope=None, local_vars_configuration=None): # noqa: E501 - """V1RuleWithOperations - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._api_versions = None - self._operations = None - self._resources = None - self._scope = None - self.discriminator = None - - if api_groups is not None: - self.api_groups = api_groups - if api_versions is not None: - self.api_versions = api_versions - if operations is not None: - self.operations = operations - if resources is not None: - self.resources = resources - if scope is not None: - self.scope = scope - - @property - def api_groups(self): - """Gets the api_groups of this V1RuleWithOperations. # noqa: E501 - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_groups of this V1RuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1RuleWithOperations. - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_groups: The api_groups of this V1RuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_groups = api_groups - - @property - def api_versions(self): - """Gets the api_versions of this V1RuleWithOperations. # noqa: E501 - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_versions of this V1RuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_versions - - @api_versions.setter - def api_versions(self, api_versions): - """Sets the api_versions of this V1RuleWithOperations. - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_versions: The api_versions of this V1RuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_versions = api_versions - - @property - def operations(self): - """Gets the operations of this V1RuleWithOperations. # noqa: E501 - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The operations of this V1RuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._operations - - @operations.setter - def operations(self, operations): - """Sets the operations of this V1RuleWithOperations. - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param operations: The operations of this V1RuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._operations = operations - - @property - def resources(self): - """Gets the resources of this V1RuleWithOperations. # noqa: E501 - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :return: The resources of this V1RuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1RuleWithOperations. - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :param resources: The resources of this V1RuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._resources = resources - - @property - def scope(self): - """Gets the scope of this V1RuleWithOperations. # noqa: E501 - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :return: The scope of this V1RuleWithOperations. # noqa: E501 - :rtype: str - """ - return self._scope - - @scope.setter - def scope(self, scope): - """Sets the scope of this V1RuleWithOperations. - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :param scope: The scope of this V1RuleWithOperations. # noqa: E501 - :type: str - """ - - self._scope = scope - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RuleWithOperations): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RuleWithOperations): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class.py deleted file mode 100644 index 1a7b885..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class.py +++ /dev/null @@ -1,257 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RuntimeClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'handler': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'overhead': 'V1Overhead', - 'scheduling': 'V1Scheduling' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'handler': 'handler', - 'kind': 'kind', - 'metadata': 'metadata', - 'overhead': 'overhead', - 'scheduling': 'scheduling' - } - - def __init__(self, api_version=None, handler=None, kind=None, metadata=None, overhead=None, scheduling=None, local_vars_configuration=None): # noqa: E501 - """V1RuntimeClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._handler = None - self._kind = None - self._metadata = None - self._overhead = None - self._scheduling = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.handler = handler - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if overhead is not None: - self.overhead = overhead - if scheduling is not None: - self.scheduling = scheduling - - @property - def api_version(self): - """Gets the api_version of this V1RuntimeClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1RuntimeClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1RuntimeClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1RuntimeClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def handler(self): - """Gets the handler of this V1RuntimeClass. # noqa: E501 - - handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called \"runc\" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable. # noqa: E501 - - :return: The handler of this V1RuntimeClass. # noqa: E501 - :rtype: str - """ - return self._handler - - @handler.setter - def handler(self, handler): - """Sets the handler of this V1RuntimeClass. - - handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration. It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called \"runc\" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable. # noqa: E501 - - :param handler: The handler of this V1RuntimeClass. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and handler is None: # noqa: E501 - raise ValueError("Invalid value for `handler`, must not be `None`") # noqa: E501 - - self._handler = handler - - @property - def kind(self): - """Gets the kind of this V1RuntimeClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1RuntimeClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RuntimeClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1RuntimeClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1RuntimeClass. # noqa: E501 - - - :return: The metadata of this V1RuntimeClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1RuntimeClass. - - - :param metadata: The metadata of this V1RuntimeClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def overhead(self): - """Gets the overhead of this V1RuntimeClass. # noqa: E501 - - - :return: The overhead of this V1RuntimeClass. # noqa: E501 - :rtype: V1Overhead - """ - return self._overhead - - @overhead.setter - def overhead(self, overhead): - """Sets the overhead of this V1RuntimeClass. - - - :param overhead: The overhead of this V1RuntimeClass. # noqa: E501 - :type: V1Overhead - """ - - self._overhead = overhead - - @property - def scheduling(self): - """Gets the scheduling of this V1RuntimeClass. # noqa: E501 - - - :return: The scheduling of this V1RuntimeClass. # noqa: E501 - :rtype: V1Scheduling - """ - return self._scheduling - - @scheduling.setter - def scheduling(self, scheduling): - """Sets the scheduling of this V1RuntimeClass. - - - :param scheduling: The scheduling of this V1RuntimeClass. # noqa: E501 - :type: V1Scheduling - """ - - self._scheduling = scheduling - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RuntimeClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RuntimeClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class_list.py deleted file mode 100644 index 27208b5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_runtime_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1RuntimeClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1RuntimeClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1RuntimeClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1RuntimeClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1RuntimeClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1RuntimeClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1RuntimeClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1RuntimeClassList. # noqa: E501 - - items is a list of schema objects. # noqa: E501 - - :return: The items of this V1RuntimeClassList. # noqa: E501 - :rtype: list[V1RuntimeClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1RuntimeClassList. - - items is a list of schema objects. # noqa: E501 - - :param items: The items of this V1RuntimeClassList. # noqa: E501 - :type: list[V1RuntimeClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1RuntimeClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1RuntimeClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1RuntimeClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1RuntimeClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1RuntimeClassList. # noqa: E501 - - - :return: The metadata of this V1RuntimeClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1RuntimeClassList. - - - :param metadata: The metadata of this V1RuntimeClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1RuntimeClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1RuntimeClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale.py deleted file mode 100644 index 0e96a22..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Scale(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1ScaleSpec', - 'status': 'V1ScaleStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Scale - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Scale. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Scale. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Scale. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Scale. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Scale. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Scale. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Scale. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Scale. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Scale. # noqa: E501 - - - :return: The metadata of this V1Scale. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Scale. - - - :param metadata: The metadata of this V1Scale. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Scale. # noqa: E501 - - - :return: The spec of this V1Scale. # noqa: E501 - :rtype: V1ScaleSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Scale. - - - :param spec: The spec of this V1Scale. # noqa: E501 - :type: V1ScaleSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Scale. # noqa: E501 - - - :return: The status of this V1Scale. # noqa: E501 - :rtype: V1ScaleStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Scale. - - - :param status: The status of this V1Scale. # noqa: E501 - :type: V1ScaleStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Scale): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Scale): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_persistent_volume_source.py deleted file mode 100644 index 2b0bbc8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_persistent_volume_source.py +++ /dev/null @@ -1,375 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScaleIOPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'gateway': 'str', - 'protection_domain': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1SecretReference', - 'ssl_enabled': 'bool', - 'storage_mode': 'str', - 'storage_pool': 'str', - 'system': 'str', - 'volume_name': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'gateway': 'gateway', - 'protection_domain': 'protectionDomain', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'ssl_enabled': 'sslEnabled', - 'storage_mode': 'storageMode', - 'storage_pool': 'storagePool', - 'system': 'system', - 'volume_name': 'volumeName' - } - - def __init__(self, fs_type=None, gateway=None, protection_domain=None, read_only=None, secret_ref=None, ssl_enabled=None, storage_mode=None, storage_pool=None, system=None, volume_name=None, local_vars_configuration=None): # noqa: E501 - """V1ScaleIOPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._gateway = None - self._protection_domain = None - self._read_only = None - self._secret_ref = None - self._ssl_enabled = None - self._storage_mode = None - self._storage_pool = None - self._system = None - self._volume_name = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.gateway = gateway - if protection_domain is not None: - self.protection_domain = protection_domain - if read_only is not None: - self.read_only = read_only - self.secret_ref = secret_ref - if ssl_enabled is not None: - self.ssl_enabled = ssl_enabled - if storage_mode is not None: - self.storage_mode = storage_mode - if storage_pool is not None: - self.storage_pool = storage_pool - self.system = system - if volume_name is not None: - self.volume_name = volume_name - - @property - def fs_type(self): - """Gets the fs_type of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\" # noqa: E501 - - :return: The fs_type of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1ScaleIOPersistentVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\" # noqa: E501 - - :param fs_type: The fs_type of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def gateway(self): - """Gets the gateway of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - gateway is the host address of the ScaleIO API Gateway. # noqa: E501 - - :return: The gateway of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._gateway - - @gateway.setter - def gateway(self, gateway): - """Sets the gateway of this V1ScaleIOPersistentVolumeSource. - - gateway is the host address of the ScaleIO API Gateway. # noqa: E501 - - :param gateway: The gateway of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and gateway is None: # noqa: E501 - raise ValueError("Invalid value for `gateway`, must not be `None`") # noqa: E501 - - self._gateway = gateway - - @property - def protection_domain(self): - """Gets the protection_domain of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. # noqa: E501 - - :return: The protection_domain of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._protection_domain - - @protection_domain.setter - def protection_domain(self, protection_domain): - """Sets the protection_domain of this V1ScaleIOPersistentVolumeSource. - - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. # noqa: E501 - - :param protection_domain: The protection_domain of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._protection_domain = protection_domain - - @property - def read_only(self): - """Gets the read_only of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1ScaleIOPersistentVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: V1SecretReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1ScaleIOPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: V1SecretReference - """ - if self.local_vars_configuration.client_side_validation and secret_ref is None: # noqa: E501 - raise ValueError("Invalid value for `secret_ref`, must not be `None`") # noqa: E501 - - self._secret_ref = secret_ref - - @property - def ssl_enabled(self): - """Gets the ssl_enabled of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - sslEnabled is the flag to enable/disable SSL communication with Gateway, default false # noqa: E501 - - :return: The ssl_enabled of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._ssl_enabled - - @ssl_enabled.setter - def ssl_enabled(self, ssl_enabled): - """Sets the ssl_enabled of this V1ScaleIOPersistentVolumeSource. - - sslEnabled is the flag to enable/disable SSL communication with Gateway, default false # noqa: E501 - - :param ssl_enabled: The ssl_enabled of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._ssl_enabled = ssl_enabled - - @property - def storage_mode(self): - """Gets the storage_mode of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. # noqa: E501 - - :return: The storage_mode of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_mode - - @storage_mode.setter - def storage_mode(self, storage_mode): - """Sets the storage_mode of this V1ScaleIOPersistentVolumeSource. - - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. # noqa: E501 - - :param storage_mode: The storage_mode of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_mode = storage_mode - - @property - def storage_pool(self): - """Gets the storage_pool of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - storagePool is the ScaleIO Storage Pool associated with the protection domain. # noqa: E501 - - :return: The storage_pool of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_pool - - @storage_pool.setter - def storage_pool(self, storage_pool): - """Sets the storage_pool of this V1ScaleIOPersistentVolumeSource. - - storagePool is the ScaleIO Storage Pool associated with the protection domain. # noqa: E501 - - :param storage_pool: The storage_pool of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_pool = storage_pool - - @property - def system(self): - """Gets the system of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - system is the name of the storage system as configured in ScaleIO. # noqa: E501 - - :return: The system of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._system - - @system.setter - def system(self, system): - """Sets the system of this V1ScaleIOPersistentVolumeSource. - - system is the name of the storage system as configured in ScaleIO. # noqa: E501 - - :param system: The system of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and system is None: # noqa: E501 - raise ValueError("Invalid value for `system`, must not be `None`") # noqa: E501 - - self._system = system - - @property - def volume_name(self): - """Gets the volume_name of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. # noqa: E501 - - :return: The volume_name of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_name - - @volume_name.setter - def volume_name(self, volume_name): - """Sets the volume_name of this V1ScaleIOPersistentVolumeSource. - - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. # noqa: E501 - - :param volume_name: The volume_name of this V1ScaleIOPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_name = volume_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScaleIOPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScaleIOPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_volume_source.py deleted file mode 100644 index 6d6ea77..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_io_volume_source.py +++ /dev/null @@ -1,375 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScaleIOVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'gateway': 'str', - 'protection_domain': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference', - 'ssl_enabled': 'bool', - 'storage_mode': 'str', - 'storage_pool': 'str', - 'system': 'str', - 'volume_name': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'gateway': 'gateway', - 'protection_domain': 'protectionDomain', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'ssl_enabled': 'sslEnabled', - 'storage_mode': 'storageMode', - 'storage_pool': 'storagePool', - 'system': 'system', - 'volume_name': 'volumeName' - } - - def __init__(self, fs_type=None, gateway=None, protection_domain=None, read_only=None, secret_ref=None, ssl_enabled=None, storage_mode=None, storage_pool=None, system=None, volume_name=None, local_vars_configuration=None): # noqa: E501 - """V1ScaleIOVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._gateway = None - self._protection_domain = None - self._read_only = None - self._secret_ref = None - self._ssl_enabled = None - self._storage_mode = None - self._storage_pool = None - self._system = None - self._volume_name = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - self.gateway = gateway - if protection_domain is not None: - self.protection_domain = protection_domain - if read_only is not None: - self.read_only = read_only - self.secret_ref = secret_ref - if ssl_enabled is not None: - self.ssl_enabled = ssl_enabled - if storage_mode is not None: - self.storage_mode = storage_mode - if storage_pool is not None: - self.storage_pool = storage_pool - self.system = system - if volume_name is not None: - self.volume_name = volume_name - - @property - def fs_type(self): - """Gets the fs_type of this V1ScaleIOVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\". # noqa: E501 - - :return: The fs_type of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1ScaleIOVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\". # noqa: E501 - - :param fs_type: The fs_type of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def gateway(self): - """Gets the gateway of this V1ScaleIOVolumeSource. # noqa: E501 - - gateway is the host address of the ScaleIO API Gateway. # noqa: E501 - - :return: The gateway of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._gateway - - @gateway.setter - def gateway(self, gateway): - """Sets the gateway of this V1ScaleIOVolumeSource. - - gateway is the host address of the ScaleIO API Gateway. # noqa: E501 - - :param gateway: The gateway of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and gateway is None: # noqa: E501 - raise ValueError("Invalid value for `gateway`, must not be `None`") # noqa: E501 - - self._gateway = gateway - - @property - def protection_domain(self): - """Gets the protection_domain of this V1ScaleIOVolumeSource. # noqa: E501 - - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. # noqa: E501 - - :return: The protection_domain of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._protection_domain - - @protection_domain.setter - def protection_domain(self, protection_domain): - """Sets the protection_domain of this V1ScaleIOVolumeSource. - - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. # noqa: E501 - - :param protection_domain: The protection_domain of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - - self._protection_domain = protection_domain - - @property - def read_only(self): - """Gets the read_only of this V1ScaleIOVolumeSource. # noqa: E501 - - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1ScaleIOVolumeSource. - - readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1ScaleIOVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1ScaleIOVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1ScaleIOVolumeSource. - - - :param secret_ref: The secret_ref of this V1ScaleIOVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - if self.local_vars_configuration.client_side_validation and secret_ref is None: # noqa: E501 - raise ValueError("Invalid value for `secret_ref`, must not be `None`") # noqa: E501 - - self._secret_ref = secret_ref - - @property - def ssl_enabled(self): - """Gets the ssl_enabled of this V1ScaleIOVolumeSource. # noqa: E501 - - sslEnabled Flag enable/disable SSL communication with Gateway, default false # noqa: E501 - - :return: The ssl_enabled of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._ssl_enabled - - @ssl_enabled.setter - def ssl_enabled(self, ssl_enabled): - """Sets the ssl_enabled of this V1ScaleIOVolumeSource. - - sslEnabled Flag enable/disable SSL communication with Gateway, default false # noqa: E501 - - :param ssl_enabled: The ssl_enabled of this V1ScaleIOVolumeSource. # noqa: E501 - :type: bool - """ - - self._ssl_enabled = ssl_enabled - - @property - def storage_mode(self): - """Gets the storage_mode of this V1ScaleIOVolumeSource. # noqa: E501 - - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. # noqa: E501 - - :return: The storage_mode of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_mode - - @storage_mode.setter - def storage_mode(self, storage_mode): - """Sets the storage_mode of this V1ScaleIOVolumeSource. - - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. # noqa: E501 - - :param storage_mode: The storage_mode of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_mode = storage_mode - - @property - def storage_pool(self): - """Gets the storage_pool of this V1ScaleIOVolumeSource. # noqa: E501 - - storagePool is the ScaleIO Storage Pool associated with the protection domain. # noqa: E501 - - :return: The storage_pool of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_pool - - @storage_pool.setter - def storage_pool(self, storage_pool): - """Sets the storage_pool of this V1ScaleIOVolumeSource. - - storagePool is the ScaleIO Storage Pool associated with the protection domain. # noqa: E501 - - :param storage_pool: The storage_pool of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_pool = storage_pool - - @property - def system(self): - """Gets the system of this V1ScaleIOVolumeSource. # noqa: E501 - - system is the name of the storage system as configured in ScaleIO. # noqa: E501 - - :return: The system of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._system - - @system.setter - def system(self, system): - """Sets the system of this V1ScaleIOVolumeSource. - - system is the name of the storage system as configured in ScaleIO. # noqa: E501 - - :param system: The system of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and system is None: # noqa: E501 - raise ValueError("Invalid value for `system`, must not be `None`") # noqa: E501 - - self._system = system - - @property - def volume_name(self): - """Gets the volume_name of this V1ScaleIOVolumeSource. # noqa: E501 - - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. # noqa: E501 - - :return: The volume_name of this V1ScaleIOVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_name - - @volume_name.setter - def volume_name(self, volume_name): - """Sets the volume_name of this V1ScaleIOVolumeSource. - - volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. # noqa: E501 - - :param volume_name: The volume_name of this V1ScaleIOVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_name = volume_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScaleIOVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScaleIOVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_spec.py deleted file mode 100644 index 63ad67b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_spec.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScaleSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'replicas': 'int' - } - - attribute_map = { - 'replicas': 'replicas' - } - - def __init__(self, replicas=None, local_vars_configuration=None): # noqa: E501 - """V1ScaleSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._replicas = None - self.discriminator = None - - if replicas is not None: - self.replicas = replicas - - @property - def replicas(self): - """Gets the replicas of this V1ScaleSpec. # noqa: E501 - - replicas is the desired number of instances for the scaled object. # noqa: E501 - - :return: The replicas of this V1ScaleSpec. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ScaleSpec. - - replicas is the desired number of instances for the scaled object. # noqa: E501 - - :param replicas: The replicas of this V1ScaleSpec. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScaleSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScaleSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_status.py deleted file mode 100644 index e4a2c49..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scale_status.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScaleStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'replicas': 'int', - 'selector': 'str' - } - - attribute_map = { - 'replicas': 'replicas', - 'selector': 'selector' - } - - def __init__(self, replicas=None, selector=None, local_vars_configuration=None): # noqa: E501 - """V1ScaleStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._replicas = None - self._selector = None - self.discriminator = None - - self.replicas = replicas - if selector is not None: - self.selector = selector - - @property - def replicas(self): - """Gets the replicas of this V1ScaleStatus. # noqa: E501 - - replicas is the actual number of observed instances of the scaled object. # noqa: E501 - - :return: The replicas of this V1ScaleStatus. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1ScaleStatus. - - replicas is the actual number of observed instances of the scaled object. # noqa: E501 - - :param replicas: The replicas of this V1ScaleStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and replicas is None: # noqa: E501 - raise ValueError("Invalid value for `replicas`, must not be `None`") # noqa: E501 - - self._replicas = replicas - - @property - def selector(self): - """Gets the selector of this V1ScaleStatus. # noqa: E501 - - selector is the label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ # noqa: E501 - - :return: The selector of this V1ScaleStatus. # noqa: E501 - :rtype: str - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1ScaleStatus. - - selector is the label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ # noqa: E501 - - :param selector: The selector of this V1ScaleStatus. # noqa: E501 - :type: str - """ - - self._selector = selector - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScaleStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScaleStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scheduling.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scheduling.py deleted file mode 100644 index 091bde2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scheduling.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Scheduling(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'node_selector': 'dict(str, str)', - 'tolerations': 'list[V1Toleration]' - } - - attribute_map = { - 'node_selector': 'nodeSelector', - 'tolerations': 'tolerations' - } - - def __init__(self, node_selector=None, tolerations=None, local_vars_configuration=None): # noqa: E501 - """V1Scheduling - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._node_selector = None - self._tolerations = None - self.discriminator = None - - if node_selector is not None: - self.node_selector = node_selector - if tolerations is not None: - self.tolerations = tolerations - - @property - def node_selector(self): - """Gets the node_selector of this V1Scheduling. # noqa: E501 - - nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission. # noqa: E501 - - :return: The node_selector of this V1Scheduling. # noqa: E501 - :rtype: dict(str, str) - """ - return self._node_selector - - @node_selector.setter - def node_selector(self, node_selector): - """Sets the node_selector of this V1Scheduling. - - nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission. # noqa: E501 - - :param node_selector: The node_selector of this V1Scheduling. # noqa: E501 - :type: dict(str, str) - """ - - self._node_selector = node_selector - - @property - def tolerations(self): - """Gets the tolerations of this V1Scheduling. # noqa: E501 - - tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass. # noqa: E501 - - :return: The tolerations of this V1Scheduling. # noqa: E501 - :rtype: list[V1Toleration] - """ - return self._tolerations - - @tolerations.setter - def tolerations(self, tolerations): - """Sets the tolerations of this V1Scheduling. - - tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass. # noqa: E501 - - :param tolerations: The tolerations of this V1Scheduling. # noqa: E501 - :type: list[V1Toleration] - """ - - self._tolerations = tolerations - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Scheduling): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Scheduling): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scope_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scope_selector.py deleted file mode 100644 index 5643fb3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scope_selector.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScopeSelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_expressions': 'list[V1ScopedResourceSelectorRequirement]' - } - - attribute_map = { - 'match_expressions': 'matchExpressions' - } - - def __init__(self, match_expressions=None, local_vars_configuration=None): # noqa: E501 - """V1ScopeSelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_expressions = None - self.discriminator = None - - if match_expressions is not None: - self.match_expressions = match_expressions - - @property - def match_expressions(self): - """Gets the match_expressions of this V1ScopeSelector. # noqa: E501 - - A list of scope selector requirements by scope of the resources. # noqa: E501 - - :return: The match_expressions of this V1ScopeSelector. # noqa: E501 - :rtype: list[V1ScopedResourceSelectorRequirement] - """ - return self._match_expressions - - @match_expressions.setter - def match_expressions(self, match_expressions): - """Sets the match_expressions of this V1ScopeSelector. - - A list of scope selector requirements by scope of the resources. # noqa: E501 - - :param match_expressions: The match_expressions of this V1ScopeSelector. # noqa: E501 - :type: list[V1ScopedResourceSelectorRequirement] - """ - - self._match_expressions = match_expressions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScopeSelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScopeSelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scoped_resource_selector_requirement.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scoped_resource_selector_requirement.py deleted file mode 100644 index 6620a00..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_scoped_resource_selector_requirement.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ScopedResourceSelectorRequirement(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'operator': 'str', - 'scope_name': 'str', - 'values': 'list[str]' - } - - attribute_map = { - 'operator': 'operator', - 'scope_name': 'scopeName', - 'values': 'values' - } - - def __init__(self, operator=None, scope_name=None, values=None, local_vars_configuration=None): # noqa: E501 - """V1ScopedResourceSelectorRequirement - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._operator = None - self._scope_name = None - self._values = None - self.discriminator = None - - self.operator = operator - self.scope_name = scope_name - if values is not None: - self.values = values - - @property - def operator(self): - """Gets the operator of this V1ScopedResourceSelectorRequirement. # noqa: E501 - - Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. # noqa: E501 - - :return: The operator of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._operator - - @operator.setter - def operator(self, operator): - """Sets the operator of this V1ScopedResourceSelectorRequirement. - - Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. # noqa: E501 - - :param operator: The operator of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and operator is None: # noqa: E501 - raise ValueError("Invalid value for `operator`, must not be `None`") # noqa: E501 - - self._operator = operator - - @property - def scope_name(self): - """Gets the scope_name of this V1ScopedResourceSelectorRequirement. # noqa: E501 - - The name of the scope that the selector applies to. # noqa: E501 - - :return: The scope_name of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :rtype: str - """ - return self._scope_name - - @scope_name.setter - def scope_name(self, scope_name): - """Sets the scope_name of this V1ScopedResourceSelectorRequirement. - - The name of the scope that the selector applies to. # noqa: E501 - - :param scope_name: The scope_name of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and scope_name is None: # noqa: E501 - raise ValueError("Invalid value for `scope_name`, must not be `None`") # noqa: E501 - - self._scope_name = scope_name - - @property - def values(self): - """Gets the values of this V1ScopedResourceSelectorRequirement. # noqa: E501 - - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. # noqa: E501 - - :return: The values of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :rtype: list[str] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this V1ScopedResourceSelectorRequirement. - - An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. # noqa: E501 - - :param values: The values of this V1ScopedResourceSelectorRequirement. # noqa: E501 - :type: list[str] - """ - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ScopedResourceSelectorRequirement): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ScopedResourceSelectorRequirement): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_se_linux_options.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_se_linux_options.py deleted file mode 100644 index 71a9702..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_se_linux_options.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SELinuxOptions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'level': 'str', - 'role': 'str', - 'type': 'str', - 'user': 'str' - } - - attribute_map = { - 'level': 'level', - 'role': 'role', - 'type': 'type', - 'user': 'user' - } - - def __init__(self, level=None, role=None, type=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1SELinuxOptions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._level = None - self._role = None - self._type = None - self._user = None - self.discriminator = None - - if level is not None: - self.level = level - if role is not None: - self.role = role - if type is not None: - self.type = type - if user is not None: - self.user = user - - @property - def level(self): - """Gets the level of this V1SELinuxOptions. # noqa: E501 - - Level is SELinux level label that applies to the container. # noqa: E501 - - :return: The level of this V1SELinuxOptions. # noqa: E501 - :rtype: str - """ - return self._level - - @level.setter - def level(self, level): - """Sets the level of this V1SELinuxOptions. - - Level is SELinux level label that applies to the container. # noqa: E501 - - :param level: The level of this V1SELinuxOptions. # noqa: E501 - :type: str - """ - - self._level = level - - @property - def role(self): - """Gets the role of this V1SELinuxOptions. # noqa: E501 - - Role is a SELinux role label that applies to the container. # noqa: E501 - - :return: The role of this V1SELinuxOptions. # noqa: E501 - :rtype: str - """ - return self._role - - @role.setter - def role(self, role): - """Sets the role of this V1SELinuxOptions. - - Role is a SELinux role label that applies to the container. # noqa: E501 - - :param role: The role of this V1SELinuxOptions. # noqa: E501 - :type: str - """ - - self._role = role - - @property - def type(self): - """Gets the type of this V1SELinuxOptions. # noqa: E501 - - Type is a SELinux type label that applies to the container. # noqa: E501 - - :return: The type of this V1SELinuxOptions. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1SELinuxOptions. - - Type is a SELinux type label that applies to the container. # noqa: E501 - - :param type: The type of this V1SELinuxOptions. # noqa: E501 - :type: str - """ - - self._type = type - - @property - def user(self): - """Gets the user of this V1SELinuxOptions. # noqa: E501 - - User is a SELinux user label that applies to the container. # noqa: E501 - - :return: The user of this V1SELinuxOptions. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1SELinuxOptions. - - User is a SELinux user label that applies to the container. # noqa: E501 - - :param user: The user of this V1SELinuxOptions. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SELinuxOptions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SELinuxOptions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_seccomp_profile.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_seccomp_profile.py deleted file mode 100644 index e35d6c2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_seccomp_profile.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SeccompProfile(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'localhost_profile': 'str', - 'type': 'str' - } - - attribute_map = { - 'localhost_profile': 'localhostProfile', - 'type': 'type' - } - - def __init__(self, localhost_profile=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1SeccompProfile - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._localhost_profile = None - self._type = None - self.discriminator = None - - if localhost_profile is not None: - self.localhost_profile = localhost_profile - self.type = type - - @property - def localhost_profile(self): - """Gets the localhost_profile of this V1SeccompProfile. # noqa: E501 - - localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is \"Localhost\". Must NOT be set for any other type. # noqa: E501 - - :return: The localhost_profile of this V1SeccompProfile. # noqa: E501 - :rtype: str - """ - return self._localhost_profile - - @localhost_profile.setter - def localhost_profile(self, localhost_profile): - """Sets the localhost_profile of this V1SeccompProfile. - - localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is \"Localhost\". Must NOT be set for any other type. # noqa: E501 - - :param localhost_profile: The localhost_profile of this V1SeccompProfile. # noqa: E501 - :type: str - """ - - self._localhost_profile = localhost_profile - - @property - def type(self): - """Gets the type of this V1SeccompProfile. # noqa: E501 - - type indicates which kind of seccomp profile will be applied. Valid options are: Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. # noqa: E501 - - :return: The type of this V1SeccompProfile. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1SeccompProfile. - - type indicates which kind of seccomp profile will be applied. Valid options are: Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. # noqa: E501 - - :param type: The type of this V1SeccompProfile. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SeccompProfile): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SeccompProfile): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret.py deleted file mode 100644 index 2571fd6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret.py +++ /dev/null @@ -1,288 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Secret(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'data': 'dict(str, str)', - 'immutable': 'bool', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'string_data': 'dict(str, str)', - 'type': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'data': 'data', - 'immutable': 'immutable', - 'kind': 'kind', - 'metadata': 'metadata', - 'string_data': 'stringData', - 'type': 'type' - } - - def __init__(self, api_version=None, data=None, immutable=None, kind=None, metadata=None, string_data=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1Secret - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._data = None - self._immutable = None - self._kind = None - self._metadata = None - self._string_data = None - self._type = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if data is not None: - self.data = data - if immutable is not None: - self.immutable = immutable - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if string_data is not None: - self.string_data = string_data - if type is not None: - self.type = type - - @property - def api_version(self): - """Gets the api_version of this V1Secret. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Secret. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Secret. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Secret. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def data(self): - """Gets the data of this V1Secret. # noqa: E501 - - Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 # noqa: E501 - - :return: The data of this V1Secret. # noqa: E501 - :rtype: dict(str, str) - """ - return self._data - - @data.setter - def data(self, data): - """Sets the data of this V1Secret. - - Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 # noqa: E501 - - :param data: The data of this V1Secret. # noqa: E501 - :type: dict(str, str) - """ - - self._data = data - - @property - def immutable(self): - """Gets the immutable of this V1Secret. # noqa: E501 - - Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. # noqa: E501 - - :return: The immutable of this V1Secret. # noqa: E501 - :rtype: bool - """ - return self._immutable - - @immutable.setter - def immutable(self, immutable): - """Sets the immutable of this V1Secret. - - Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. # noqa: E501 - - :param immutable: The immutable of this V1Secret. # noqa: E501 - :type: bool - """ - - self._immutable = immutable - - @property - def kind(self): - """Gets the kind of this V1Secret. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Secret. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Secret. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Secret. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Secret. # noqa: E501 - - - :return: The metadata of this V1Secret. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Secret. - - - :param metadata: The metadata of this V1Secret. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def string_data(self): - """Gets the string_data of this V1Secret. # noqa: E501 - - stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API. # noqa: E501 - - :return: The string_data of this V1Secret. # noqa: E501 - :rtype: dict(str, str) - """ - return self._string_data - - @string_data.setter - def string_data(self, string_data): - """Sets the string_data of this V1Secret. - - stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API. # noqa: E501 - - :param string_data: The string_data of this V1Secret. # noqa: E501 - :type: dict(str, str) - """ - - self._string_data = string_data - - @property - def type(self): - """Gets the type of this V1Secret. # noqa: E501 - - Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types # noqa: E501 - - :return: The type of this V1Secret. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1Secret. - - Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types # noqa: E501 - - :param type: The type of this V1Secret. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Secret): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Secret): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_env_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_env_source.py deleted file mode 100644 index 567a85f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_env_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretEnvSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1SecretEnvSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._optional = None - self.discriminator = None - - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def name(self): - """Gets the name of this V1SecretEnvSource. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1SecretEnvSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1SecretEnvSource. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1SecretEnvSource. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1SecretEnvSource. # noqa: E501 - - Specify whether the Secret must be defined # noqa: E501 - - :return: The optional of this V1SecretEnvSource. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1SecretEnvSource. - - Specify whether the Secret must be defined # noqa: E501 - - :param optional: The optional of this V1SecretEnvSource. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretEnvSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretEnvSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_key_selector.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_key_selector.py deleted file mode 100644 index 31dea43..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_key_selector.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretKeySelector(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'key': 'key', - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, key=None, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1SecretKeySelector - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._name = None - self._optional = None - self.discriminator = None - - self.key = key - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def key(self): - """Gets the key of this V1SecretKeySelector. # noqa: E501 - - The key of the secret to select from. Must be a valid secret key. # noqa: E501 - - :return: The key of this V1SecretKeySelector. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1SecretKeySelector. - - The key of the secret to select from. Must be a valid secret key. # noqa: E501 - - :param key: The key of this V1SecretKeySelector. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def name(self): - """Gets the name of this V1SecretKeySelector. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1SecretKeySelector. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1SecretKeySelector. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1SecretKeySelector. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1SecretKeySelector. # noqa: E501 - - Specify whether the Secret or its key must be defined # noqa: E501 - - :return: The optional of this V1SecretKeySelector. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1SecretKeySelector. - - Specify whether the Secret or its key must be defined # noqa: E501 - - :param optional: The optional of this V1SecretKeySelector. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretKeySelector): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretKeySelector): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_list.py deleted file mode 100644 index d040033..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Secret]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1SecretList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1SecretList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1SecretList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1SecretList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1SecretList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1SecretList. # noqa: E501 - - Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret # noqa: E501 - - :return: The items of this V1SecretList. # noqa: E501 - :rtype: list[V1Secret] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1SecretList. - - Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret # noqa: E501 - - :param items: The items of this V1SecretList. # noqa: E501 - :type: list[V1Secret] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1SecretList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1SecretList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1SecretList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1SecretList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1SecretList. # noqa: E501 - - - :return: The metadata of this V1SecretList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1SecretList. - - - :param metadata: The metadata of this V1SecretList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_projection.py deleted file mode 100644 index fdc68a6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_projection.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'items': 'list[V1KeyToPath]', - 'name': 'str', - 'optional': 'bool' - } - - attribute_map = { - 'items': 'items', - 'name': 'name', - 'optional': 'optional' - } - - def __init__(self, items=None, name=None, optional=None, local_vars_configuration=None): # noqa: E501 - """V1SecretProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._items = None - self._name = None - self._optional = None - self.discriminator = None - - if items is not None: - self.items = items - if name is not None: - self.name = name - if optional is not None: - self.optional = optional - - @property - def items(self): - """Gets the items of this V1SecretProjection. # noqa: E501 - - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :return: The items of this V1SecretProjection. # noqa: E501 - :rtype: list[V1KeyToPath] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1SecretProjection. - - items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :param items: The items of this V1SecretProjection. # noqa: E501 - :type: list[V1KeyToPath] - """ - - self._items = items - - @property - def name(self): - """Gets the name of this V1SecretProjection. # noqa: E501 - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1SecretProjection. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1SecretProjection. - - Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1SecretProjection. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def optional(self): - """Gets the optional of this V1SecretProjection. # noqa: E501 - - optional field specify whether the Secret or its key must be defined # noqa: E501 - - :return: The optional of this V1SecretProjection. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1SecretProjection. - - optional field specify whether the Secret or its key must be defined # noqa: E501 - - :param optional: The optional of this V1SecretProjection. # noqa: E501 - :type: bool - """ - - self._optional = optional - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_reference.py deleted file mode 100644 index 29d5fed..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_reference.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1SecretReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self.discriminator = None - - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - - @property - def name(self): - """Gets the name of this V1SecretReference. # noqa: E501 - - name is unique within a namespace to reference a secret resource. # noqa: E501 - - :return: The name of this V1SecretReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1SecretReference. - - name is unique within a namespace to reference a secret resource. # noqa: E501 - - :param name: The name of this V1SecretReference. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1SecretReference. # noqa: E501 - - namespace defines the space within which the secret name must be unique. # noqa: E501 - - :return: The namespace of this V1SecretReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1SecretReference. - - namespace defines the space within which the secret name must be unique. # noqa: E501 - - :param namespace: The namespace of this V1SecretReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_volume_source.py deleted file mode 100644 index 0827716..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_secret_volume_source.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecretVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'default_mode': 'int', - 'items': 'list[V1KeyToPath]', - 'optional': 'bool', - 'secret_name': 'str' - } - - attribute_map = { - 'default_mode': 'defaultMode', - 'items': 'items', - 'optional': 'optional', - 'secret_name': 'secretName' - } - - def __init__(self, default_mode=None, items=None, optional=None, secret_name=None, local_vars_configuration=None): # noqa: E501 - """V1SecretVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._default_mode = None - self._items = None - self._optional = None - self._secret_name = None - self.discriminator = None - - if default_mode is not None: - self.default_mode = default_mode - if items is not None: - self.items = items - if optional is not None: - self.optional = optional - if secret_name is not None: - self.secret_name = secret_name - - @property - def default_mode(self): - """Gets the default_mode of this V1SecretVolumeSource. # noqa: E501 - - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :return: The default_mode of this V1SecretVolumeSource. # noqa: E501 - :rtype: int - """ - return self._default_mode - - @default_mode.setter - def default_mode(self, default_mode): - """Sets the default_mode of this V1SecretVolumeSource. - - defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. # noqa: E501 - - :param default_mode: The default_mode of this V1SecretVolumeSource. # noqa: E501 - :type: int - """ - - self._default_mode = default_mode - - @property - def items(self): - """Gets the items of this V1SecretVolumeSource. # noqa: E501 - - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :return: The items of this V1SecretVolumeSource. # noqa: E501 - :rtype: list[V1KeyToPath] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1SecretVolumeSource. - - items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. # noqa: E501 - - :param items: The items of this V1SecretVolumeSource. # noqa: E501 - :type: list[V1KeyToPath] - """ - - self._items = items - - @property - def optional(self): - """Gets the optional of this V1SecretVolumeSource. # noqa: E501 - - optional field specify whether the Secret or its keys must be defined # noqa: E501 - - :return: The optional of this V1SecretVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._optional - - @optional.setter - def optional(self, optional): - """Sets the optional of this V1SecretVolumeSource. - - optional field specify whether the Secret or its keys must be defined # noqa: E501 - - :param optional: The optional of this V1SecretVolumeSource. # noqa: E501 - :type: bool - """ - - self._optional = optional - - @property - def secret_name(self): - """Gets the secret_name of this V1SecretVolumeSource. # noqa: E501 - - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret # noqa: E501 - - :return: The secret_name of this V1SecretVolumeSource. # noqa: E501 - :rtype: str - """ - return self._secret_name - - @secret_name.setter - def secret_name(self, secret_name): - """Sets the secret_name of this V1SecretVolumeSource. - - secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret # noqa: E501 - - :param secret_name: The secret_name of this V1SecretVolumeSource. # noqa: E501 - :type: str - """ - - self._secret_name = secret_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecretVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecretVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_security_context.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_security_context.py deleted file mode 100644 index 87c32af..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_security_context.py +++ /dev/null @@ -1,394 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SecurityContext(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allow_privilege_escalation': 'bool', - 'capabilities': 'V1Capabilities', - 'privileged': 'bool', - 'proc_mount': 'str', - 'read_only_root_filesystem': 'bool', - 'run_as_group': 'int', - 'run_as_non_root': 'bool', - 'run_as_user': 'int', - 'se_linux_options': 'V1SELinuxOptions', - 'seccomp_profile': 'V1SeccompProfile', - 'windows_options': 'V1WindowsSecurityContextOptions' - } - - attribute_map = { - 'allow_privilege_escalation': 'allowPrivilegeEscalation', - 'capabilities': 'capabilities', - 'privileged': 'privileged', - 'proc_mount': 'procMount', - 'read_only_root_filesystem': 'readOnlyRootFilesystem', - 'run_as_group': 'runAsGroup', - 'run_as_non_root': 'runAsNonRoot', - 'run_as_user': 'runAsUser', - 'se_linux_options': 'seLinuxOptions', - 'seccomp_profile': 'seccompProfile', - 'windows_options': 'windowsOptions' - } - - def __init__(self, allow_privilege_escalation=None, capabilities=None, privileged=None, proc_mount=None, read_only_root_filesystem=None, run_as_group=None, run_as_non_root=None, run_as_user=None, se_linux_options=None, seccomp_profile=None, windows_options=None, local_vars_configuration=None): # noqa: E501 - """V1SecurityContext - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allow_privilege_escalation = None - self._capabilities = None - self._privileged = None - self._proc_mount = None - self._read_only_root_filesystem = None - self._run_as_group = None - self._run_as_non_root = None - self._run_as_user = None - self._se_linux_options = None - self._seccomp_profile = None - self._windows_options = None - self.discriminator = None - - if allow_privilege_escalation is not None: - self.allow_privilege_escalation = allow_privilege_escalation - if capabilities is not None: - self.capabilities = capabilities - if privileged is not None: - self.privileged = privileged - if proc_mount is not None: - self.proc_mount = proc_mount - if read_only_root_filesystem is not None: - self.read_only_root_filesystem = read_only_root_filesystem - if run_as_group is not None: - self.run_as_group = run_as_group - if run_as_non_root is not None: - self.run_as_non_root = run_as_non_root - if run_as_user is not None: - self.run_as_user = run_as_user - if se_linux_options is not None: - self.se_linux_options = se_linux_options - if seccomp_profile is not None: - self.seccomp_profile = seccomp_profile - if windows_options is not None: - self.windows_options = windows_options - - @property - def allow_privilege_escalation(self): - """Gets the allow_privilege_escalation of this V1SecurityContext. # noqa: E501 - - AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The allow_privilege_escalation of this V1SecurityContext. # noqa: E501 - :rtype: bool - """ - return self._allow_privilege_escalation - - @allow_privilege_escalation.setter - def allow_privilege_escalation(self, allow_privilege_escalation): - """Sets the allow_privilege_escalation of this V1SecurityContext. - - AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param allow_privilege_escalation: The allow_privilege_escalation of this V1SecurityContext. # noqa: E501 - :type: bool - """ - - self._allow_privilege_escalation = allow_privilege_escalation - - @property - def capabilities(self): - """Gets the capabilities of this V1SecurityContext. # noqa: E501 - - - :return: The capabilities of this V1SecurityContext. # noqa: E501 - :rtype: V1Capabilities - """ - return self._capabilities - - @capabilities.setter - def capabilities(self, capabilities): - """Sets the capabilities of this V1SecurityContext. - - - :param capabilities: The capabilities of this V1SecurityContext. # noqa: E501 - :type: V1Capabilities - """ - - self._capabilities = capabilities - - @property - def privileged(self): - """Gets the privileged of this V1SecurityContext. # noqa: E501 - - Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The privileged of this V1SecurityContext. # noqa: E501 - :rtype: bool - """ - return self._privileged - - @privileged.setter - def privileged(self, privileged): - """Sets the privileged of this V1SecurityContext. - - Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param privileged: The privileged of this V1SecurityContext. # noqa: E501 - :type: bool - """ - - self._privileged = privileged - - @property - def proc_mount(self): - """Gets the proc_mount of this V1SecurityContext. # noqa: E501 - - procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The proc_mount of this V1SecurityContext. # noqa: E501 - :rtype: str - """ - return self._proc_mount - - @proc_mount.setter - def proc_mount(self, proc_mount): - """Sets the proc_mount of this V1SecurityContext. - - procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param proc_mount: The proc_mount of this V1SecurityContext. # noqa: E501 - :type: str - """ - - self._proc_mount = proc_mount - - @property - def read_only_root_filesystem(self): - """Gets the read_only_root_filesystem of this V1SecurityContext. # noqa: E501 - - Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The read_only_root_filesystem of this V1SecurityContext. # noqa: E501 - :rtype: bool - """ - return self._read_only_root_filesystem - - @read_only_root_filesystem.setter - def read_only_root_filesystem(self, read_only_root_filesystem): - """Sets the read_only_root_filesystem of this V1SecurityContext. - - Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param read_only_root_filesystem: The read_only_root_filesystem of this V1SecurityContext. # noqa: E501 - :type: bool - """ - - self._read_only_root_filesystem = read_only_root_filesystem - - @property - def run_as_group(self): - """Gets the run_as_group of this V1SecurityContext. # noqa: E501 - - The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The run_as_group of this V1SecurityContext. # noqa: E501 - :rtype: int - """ - return self._run_as_group - - @run_as_group.setter - def run_as_group(self, run_as_group): - """Sets the run_as_group of this V1SecurityContext. - - The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param run_as_group: The run_as_group of this V1SecurityContext. # noqa: E501 - :type: int - """ - - self._run_as_group = run_as_group - - @property - def run_as_non_root(self): - """Gets the run_as_non_root of this V1SecurityContext. # noqa: E501 - - Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :return: The run_as_non_root of this V1SecurityContext. # noqa: E501 - :rtype: bool - """ - return self._run_as_non_root - - @run_as_non_root.setter - def run_as_non_root(self, run_as_non_root): - """Sets the run_as_non_root of this V1SecurityContext. - - Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :param run_as_non_root: The run_as_non_root of this V1SecurityContext. # noqa: E501 - :type: bool - """ - - self._run_as_non_root = run_as_non_root - - @property - def run_as_user(self): - """Gets the run_as_user of this V1SecurityContext. # noqa: E501 - - The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :return: The run_as_user of this V1SecurityContext. # noqa: E501 - :rtype: int - """ - return self._run_as_user - - @run_as_user.setter - def run_as_user(self, run_as_user): - """Sets the run_as_user of this V1SecurityContext. - - The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. # noqa: E501 - - :param run_as_user: The run_as_user of this V1SecurityContext. # noqa: E501 - :type: int - """ - - self._run_as_user = run_as_user - - @property - def se_linux_options(self): - """Gets the se_linux_options of this V1SecurityContext. # noqa: E501 - - - :return: The se_linux_options of this V1SecurityContext. # noqa: E501 - :rtype: V1SELinuxOptions - """ - return self._se_linux_options - - @se_linux_options.setter - def se_linux_options(self, se_linux_options): - """Sets the se_linux_options of this V1SecurityContext. - - - :param se_linux_options: The se_linux_options of this V1SecurityContext. # noqa: E501 - :type: V1SELinuxOptions - """ - - self._se_linux_options = se_linux_options - - @property - def seccomp_profile(self): - """Gets the seccomp_profile of this V1SecurityContext. # noqa: E501 - - - :return: The seccomp_profile of this V1SecurityContext. # noqa: E501 - :rtype: V1SeccompProfile - """ - return self._seccomp_profile - - @seccomp_profile.setter - def seccomp_profile(self, seccomp_profile): - """Sets the seccomp_profile of this V1SecurityContext. - - - :param seccomp_profile: The seccomp_profile of this V1SecurityContext. # noqa: E501 - :type: V1SeccompProfile - """ - - self._seccomp_profile = seccomp_profile - - @property - def windows_options(self): - """Gets the windows_options of this V1SecurityContext. # noqa: E501 - - - :return: The windows_options of this V1SecurityContext. # noqa: E501 - :rtype: V1WindowsSecurityContextOptions - """ - return self._windows_options - - @windows_options.setter - def windows_options(self, windows_options): - """Sets the windows_options of this V1SecurityContext. - - - :param windows_options: The windows_options of this V1SecurityContext. # noqa: E501 - :type: V1WindowsSecurityContextOptions - """ - - self._windows_options = windows_options - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SecurityContext): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SecurityContext): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review.py deleted file mode 100644 index 1624695..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectAccessReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1SelfSubjectAccessReviewSpec', - 'status': 'V1SubjectAccessReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectAccessReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1SelfSubjectAccessReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1SelfSubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1SelfSubjectAccessReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1SelfSubjectAccessReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1SelfSubjectAccessReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1SelfSubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1SelfSubjectAccessReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1SelfSubjectAccessReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1SelfSubjectAccessReview. # noqa: E501 - - - :return: The metadata of this V1SelfSubjectAccessReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1SelfSubjectAccessReview. - - - :param metadata: The metadata of this V1SelfSubjectAccessReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1SelfSubjectAccessReview. # noqa: E501 - - - :return: The spec of this V1SelfSubjectAccessReview. # noqa: E501 - :rtype: V1SelfSubjectAccessReviewSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1SelfSubjectAccessReview. - - - :param spec: The spec of this V1SelfSubjectAccessReview. # noqa: E501 - :type: V1SelfSubjectAccessReviewSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1SelfSubjectAccessReview. # noqa: E501 - - - :return: The status of this V1SelfSubjectAccessReview. # noqa: E501 - :rtype: V1SubjectAccessReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1SelfSubjectAccessReview. - - - :param status: The status of this V1SelfSubjectAccessReview. # noqa: E501 - :type: V1SubjectAccessReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectAccessReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectAccessReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review_spec.py deleted file mode 100644 index ff3dee4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_access_review_spec.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectAccessReviewSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_attributes': 'V1NonResourceAttributes', - 'resource_attributes': 'V1ResourceAttributes' - } - - attribute_map = { - 'non_resource_attributes': 'nonResourceAttributes', - 'resource_attributes': 'resourceAttributes' - } - - def __init__(self, non_resource_attributes=None, resource_attributes=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectAccessReviewSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_attributes = None - self._resource_attributes = None - self.discriminator = None - - if non_resource_attributes is not None: - self.non_resource_attributes = non_resource_attributes - if resource_attributes is not None: - self.resource_attributes = resource_attributes - - @property - def non_resource_attributes(self): - """Gets the non_resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - - - :return: The non_resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - :rtype: V1NonResourceAttributes - """ - return self._non_resource_attributes - - @non_resource_attributes.setter - def non_resource_attributes(self, non_resource_attributes): - """Sets the non_resource_attributes of this V1SelfSubjectAccessReviewSpec. - - - :param non_resource_attributes: The non_resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - :type: V1NonResourceAttributes - """ - - self._non_resource_attributes = non_resource_attributes - - @property - def resource_attributes(self): - """Gets the resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - - - :return: The resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - :rtype: V1ResourceAttributes - """ - return self._resource_attributes - - @resource_attributes.setter - def resource_attributes(self, resource_attributes): - """Sets the resource_attributes of this V1SelfSubjectAccessReviewSpec. - - - :param resource_attributes: The resource_attributes of this V1SelfSubjectAccessReviewSpec. # noqa: E501 - :type: V1ResourceAttributes - """ - - self._resource_attributes = resource_attributes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectAccessReviewSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectAccessReviewSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review.py deleted file mode 100644 index bdbac65..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'status': 'V1SelfSubjectReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1SelfSubjectReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1SelfSubjectReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1SelfSubjectReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1SelfSubjectReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1SelfSubjectReview. # noqa: E501 - - - :return: The metadata of this V1SelfSubjectReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1SelfSubjectReview. - - - :param metadata: The metadata of this V1SelfSubjectReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def status(self): - """Gets the status of this V1SelfSubjectReview. # noqa: E501 - - - :return: The status of this V1SelfSubjectReview. # noqa: E501 - :rtype: V1SelfSubjectReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1SelfSubjectReview. - - - :param status: The status of this V1SelfSubjectReview. # noqa: E501 - :type: V1SelfSubjectReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review_status.py deleted file mode 100644 index 279268d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_review_status.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'user_info': 'V1UserInfo' - } - - attribute_map = { - 'user_info': 'userInfo' - } - - def __init__(self, user_info=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._user_info = None - self.discriminator = None - - if user_info is not None: - self.user_info = user_info - - @property - def user_info(self): - """Gets the user_info of this V1SelfSubjectReviewStatus. # noqa: E501 - - - :return: The user_info of this V1SelfSubjectReviewStatus. # noqa: E501 - :rtype: V1UserInfo - """ - return self._user_info - - @user_info.setter - def user_info(self, user_info): - """Sets the user_info of this V1SelfSubjectReviewStatus. - - - :param user_info: The user_info of this V1SelfSubjectReviewStatus. # noqa: E501 - :type: V1UserInfo - """ - - self._user_info = user_info - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review.py deleted file mode 100644 index 92c75c1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectRulesReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1SelfSubjectRulesReviewSpec', - 'status': 'V1SubjectRulesReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectRulesReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1SelfSubjectRulesReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1SelfSubjectRulesReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1SelfSubjectRulesReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1SelfSubjectRulesReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1SelfSubjectRulesReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1SelfSubjectRulesReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1SelfSubjectRulesReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1SelfSubjectRulesReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1SelfSubjectRulesReview. # noqa: E501 - - - :return: The metadata of this V1SelfSubjectRulesReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1SelfSubjectRulesReview. - - - :param metadata: The metadata of this V1SelfSubjectRulesReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1SelfSubjectRulesReview. # noqa: E501 - - - :return: The spec of this V1SelfSubjectRulesReview. # noqa: E501 - :rtype: V1SelfSubjectRulesReviewSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1SelfSubjectRulesReview. - - - :param spec: The spec of this V1SelfSubjectRulesReview. # noqa: E501 - :type: V1SelfSubjectRulesReviewSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1SelfSubjectRulesReview. # noqa: E501 - - - :return: The status of this V1SelfSubjectRulesReview. # noqa: E501 - :rtype: V1SubjectRulesReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1SelfSubjectRulesReview. - - - :param status: The status of this V1SelfSubjectRulesReview. # noqa: E501 - :type: V1SubjectRulesReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectRulesReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectRulesReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review_spec.py deleted file mode 100644 index de4962b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_self_subject_rules_review_spec.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SelfSubjectRulesReviewSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'namespace': 'str' - } - - attribute_map = { - 'namespace': 'namespace' - } - - def __init__(self, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1SelfSubjectRulesReviewSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._namespace = None - self.discriminator = None - - if namespace is not None: - self.namespace = namespace - - @property - def namespace(self): - """Gets the namespace of this V1SelfSubjectRulesReviewSpec. # noqa: E501 - - Namespace to evaluate rules for. Required. # noqa: E501 - - :return: The namespace of this V1SelfSubjectRulesReviewSpec. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1SelfSubjectRulesReviewSpec. - - Namespace to evaluate rules for. Required. # noqa: E501 - - :param namespace: The namespace of this V1SelfSubjectRulesReviewSpec. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SelfSubjectRulesReviewSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SelfSubjectRulesReviewSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_server_address_by_client_cidr.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_server_address_by_client_cidr.py deleted file mode 100644 index d9b7f80..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_server_address_by_client_cidr.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServerAddressByClientCIDR(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'client_cidr': 'str', - 'server_address': 'str' - } - - attribute_map = { - 'client_cidr': 'clientCIDR', - 'server_address': 'serverAddress' - } - - def __init__(self, client_cidr=None, server_address=None, local_vars_configuration=None): # noqa: E501 - """V1ServerAddressByClientCIDR - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._client_cidr = None - self._server_address = None - self.discriminator = None - - self.client_cidr = client_cidr - self.server_address = server_address - - @property - def client_cidr(self): - """Gets the client_cidr of this V1ServerAddressByClientCIDR. # noqa: E501 - - The CIDR with which clients can match their IP to figure out the server address that they should use. # noqa: E501 - - :return: The client_cidr of this V1ServerAddressByClientCIDR. # noqa: E501 - :rtype: str - """ - return self._client_cidr - - @client_cidr.setter - def client_cidr(self, client_cidr): - """Sets the client_cidr of this V1ServerAddressByClientCIDR. - - The CIDR with which clients can match their IP to figure out the server address that they should use. # noqa: E501 - - :param client_cidr: The client_cidr of this V1ServerAddressByClientCIDR. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and client_cidr is None: # noqa: E501 - raise ValueError("Invalid value for `client_cidr`, must not be `None`") # noqa: E501 - - self._client_cidr = client_cidr - - @property - def server_address(self): - """Gets the server_address of this V1ServerAddressByClientCIDR. # noqa: E501 - - Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port. # noqa: E501 - - :return: The server_address of this V1ServerAddressByClientCIDR. # noqa: E501 - :rtype: str - """ - return self._server_address - - @server_address.setter - def server_address(self, server_address): - """Sets the server_address of this V1ServerAddressByClientCIDR. - - Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port. # noqa: E501 - - :param server_address: The server_address of this V1ServerAddressByClientCIDR. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and server_address is None: # noqa: E501 - raise ValueError("Invalid value for `server_address`, must not be `None`") # noqa: E501 - - self._server_address = server_address - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServerAddressByClientCIDR): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServerAddressByClientCIDR): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service.py deleted file mode 100644 index 484b29b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Service(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1ServiceSpec', - 'status': 'V1ServiceStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Service - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Service. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Service. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Service. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Service. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1Service. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Service. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Service. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Service. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1Service. # noqa: E501 - - - :return: The metadata of this V1Service. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Service. - - - :param metadata: The metadata of this V1Service. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1Service. # noqa: E501 - - - :return: The spec of this V1Service. # noqa: E501 - :rtype: V1ServiceSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1Service. - - - :param spec: The spec of this V1Service. # noqa: E501 - :type: V1ServiceSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1Service. # noqa: E501 - - - :return: The status of this V1Service. # noqa: E501 - :rtype: V1ServiceStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Service. - - - :param status: The status of this V1Service. # noqa: E501 - :type: V1ServiceStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Service): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Service): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account.py deleted file mode 100644 index 770405c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account.py +++ /dev/null @@ -1,260 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceAccount(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'automount_service_account_token': 'bool', - 'image_pull_secrets': 'list[V1LocalObjectReference]', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'secrets': 'list[V1ObjectReference]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'automount_service_account_token': 'automountServiceAccountToken', - 'image_pull_secrets': 'imagePullSecrets', - 'kind': 'kind', - 'metadata': 'metadata', - 'secrets': 'secrets' - } - - def __init__(self, api_version=None, automount_service_account_token=None, image_pull_secrets=None, kind=None, metadata=None, secrets=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceAccount - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._automount_service_account_token = None - self._image_pull_secrets = None - self._kind = None - self._metadata = None - self._secrets = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if automount_service_account_token is not None: - self.automount_service_account_token = automount_service_account_token - if image_pull_secrets is not None: - self.image_pull_secrets = image_pull_secrets - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if secrets is not None: - self.secrets = secrets - - @property - def api_version(self): - """Gets the api_version of this V1ServiceAccount. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ServiceAccount. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ServiceAccount. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ServiceAccount. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def automount_service_account_token(self): - """Gets the automount_service_account_token of this V1ServiceAccount. # noqa: E501 - - AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level. # noqa: E501 - - :return: The automount_service_account_token of this V1ServiceAccount. # noqa: E501 - :rtype: bool - """ - return self._automount_service_account_token - - @automount_service_account_token.setter - def automount_service_account_token(self, automount_service_account_token): - """Sets the automount_service_account_token of this V1ServiceAccount. - - AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level. # noqa: E501 - - :param automount_service_account_token: The automount_service_account_token of this V1ServiceAccount. # noqa: E501 - :type: bool - """ - - self._automount_service_account_token = automount_service_account_token - - @property - def image_pull_secrets(self): - """Gets the image_pull_secrets of this V1ServiceAccount. # noqa: E501 - - ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod # noqa: E501 - - :return: The image_pull_secrets of this V1ServiceAccount. # noqa: E501 - :rtype: list[V1LocalObjectReference] - """ - return self._image_pull_secrets - - @image_pull_secrets.setter - def image_pull_secrets(self, image_pull_secrets): - """Sets the image_pull_secrets of this V1ServiceAccount. - - ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod # noqa: E501 - - :param image_pull_secrets: The image_pull_secrets of this V1ServiceAccount. # noqa: E501 - :type: list[V1LocalObjectReference] - """ - - self._image_pull_secrets = image_pull_secrets - - @property - def kind(self): - """Gets the kind of this V1ServiceAccount. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ServiceAccount. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ServiceAccount. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ServiceAccount. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ServiceAccount. # noqa: E501 - - - :return: The metadata of this V1ServiceAccount. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ServiceAccount. - - - :param metadata: The metadata of this V1ServiceAccount. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def secrets(self): - """Gets the secrets of this V1ServiceAccount. # noqa: E501 - - Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \"kubernetes.io/enforce-mountable-secrets\" annotation set to \"true\". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret # noqa: E501 - - :return: The secrets of this V1ServiceAccount. # noqa: E501 - :rtype: list[V1ObjectReference] - """ - return self._secrets - - @secrets.setter - def secrets(self, secrets): - """Sets the secrets of this V1ServiceAccount. - - Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \"kubernetes.io/enforce-mountable-secrets\" annotation set to \"true\". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret # noqa: E501 - - :param secrets: The secrets of this V1ServiceAccount. # noqa: E501 - :type: list[V1ObjectReference] - """ - - self._secrets = secrets - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceAccount): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceAccount): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_list.py deleted file mode 100644 index 68b71c4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceAccountList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ServiceAccount]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceAccountList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ServiceAccountList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ServiceAccountList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ServiceAccountList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ServiceAccountList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ServiceAccountList. # noqa: E501 - - List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ # noqa: E501 - - :return: The items of this V1ServiceAccountList. # noqa: E501 - :rtype: list[V1ServiceAccount] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ServiceAccountList. - - List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ # noqa: E501 - - :param items: The items of this V1ServiceAccountList. # noqa: E501 - :type: list[V1ServiceAccount] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ServiceAccountList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ServiceAccountList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ServiceAccountList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ServiceAccountList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ServiceAccountList. # noqa: E501 - - - :return: The metadata of this V1ServiceAccountList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ServiceAccountList. - - - :param metadata: The metadata of this V1ServiceAccountList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceAccountList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceAccountList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_subject.py deleted file mode 100644 index 889f625..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_subject.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceAccountSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceAccountSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self.discriminator = None - - self.name = name - self.namespace = namespace - - @property - def name(self): - """Gets the name of this V1ServiceAccountSubject. # noqa: E501 - - `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required. # noqa: E501 - - :return: The name of this V1ServiceAccountSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ServiceAccountSubject. - - `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required. # noqa: E501 - - :param name: The name of this V1ServiceAccountSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1ServiceAccountSubject. # noqa: E501 - - `namespace` is the namespace of matching ServiceAccount objects. Required. # noqa: E501 - - :return: The namespace of this V1ServiceAccountSubject. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1ServiceAccountSubject. - - `namespace` is the namespace of matching ServiceAccount objects. Required. # noqa: E501 - - :param namespace: The namespace of this V1ServiceAccountSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and namespace is None: # noqa: E501 - raise ValueError("Invalid value for `namespace`, must not be `None`") # noqa: E501 - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceAccountSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceAccountSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_token_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_token_projection.py deleted file mode 100644 index f658555..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_account_token_projection.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceAccountTokenProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audience': 'str', - 'expiration_seconds': 'int', - 'path': 'str' - } - - attribute_map = { - 'audience': 'audience', - 'expiration_seconds': 'expirationSeconds', - 'path': 'path' - } - - def __init__(self, audience=None, expiration_seconds=None, path=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceAccountTokenProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audience = None - self._expiration_seconds = None - self._path = None - self.discriminator = None - - if audience is not None: - self.audience = audience - if expiration_seconds is not None: - self.expiration_seconds = expiration_seconds - self.path = path - - @property - def audience(self): - """Gets the audience of this V1ServiceAccountTokenProjection. # noqa: E501 - - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. # noqa: E501 - - :return: The audience of this V1ServiceAccountTokenProjection. # noqa: E501 - :rtype: str - """ - return self._audience - - @audience.setter - def audience(self, audience): - """Sets the audience of this V1ServiceAccountTokenProjection. - - audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. # noqa: E501 - - :param audience: The audience of this V1ServiceAccountTokenProjection. # noqa: E501 - :type: str - """ - - self._audience = audience - - @property - def expiration_seconds(self): - """Gets the expiration_seconds of this V1ServiceAccountTokenProjection. # noqa: E501 - - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. # noqa: E501 - - :return: The expiration_seconds of this V1ServiceAccountTokenProjection. # noqa: E501 - :rtype: int - """ - return self._expiration_seconds - - @expiration_seconds.setter - def expiration_seconds(self, expiration_seconds): - """Sets the expiration_seconds of this V1ServiceAccountTokenProjection. - - expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. # noqa: E501 - - :param expiration_seconds: The expiration_seconds of this V1ServiceAccountTokenProjection. # noqa: E501 - :type: int - """ - - self._expiration_seconds = expiration_seconds - - @property - def path(self): - """Gets the path of this V1ServiceAccountTokenProjection. # noqa: E501 - - path is the path relative to the mount point of the file to project the token into. # noqa: E501 - - :return: The path of this V1ServiceAccountTokenProjection. # noqa: E501 - :rtype: str - """ - return self._path - - @path.setter - def path(self, path): - """Sets the path of this V1ServiceAccountTokenProjection. - - path is the path relative to the mount point of the file to project the token into. # noqa: E501 - - :param path: The path of this V1ServiceAccountTokenProjection. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and path is None: # noqa: E501 - raise ValueError("Invalid value for `path`, must not be `None`") # noqa: E501 - - self._path = path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceAccountTokenProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceAccountTokenProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_backend_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_backend_port.py deleted file mode 100644 index 60af2d8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_backend_port.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceBackendPort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'number': 'int' - } - - attribute_map = { - 'name': 'name', - 'number': 'number' - } - - def __init__(self, name=None, number=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceBackendPort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._number = None - self.discriminator = None - - if name is not None: - self.name = name - if number is not None: - self.number = number - - @property - def name(self): - """Gets the name of this V1ServiceBackendPort. # noqa: E501 - - name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\". # noqa: E501 - - :return: The name of this V1ServiceBackendPort. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ServiceBackendPort. - - name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\". # noqa: E501 - - :param name: The name of this V1ServiceBackendPort. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def number(self): - """Gets the number of this V1ServiceBackendPort. # noqa: E501 - - number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\". # noqa: E501 - - :return: The number of this V1ServiceBackendPort. # noqa: E501 - :rtype: int - """ - return self._number - - @number.setter - def number(self, number): - """Sets the number of this V1ServiceBackendPort. - - number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\". # noqa: E501 - - :param number: The number of this V1ServiceBackendPort. # noqa: E501 - :type: int - """ - - self._number = number - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceBackendPort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceBackendPort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_list.py deleted file mode 100644 index 593e4d9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1Service]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ServiceList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ServiceList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ServiceList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ServiceList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ServiceList. # noqa: E501 - - List of services # noqa: E501 - - :return: The items of this V1ServiceList. # noqa: E501 - :rtype: list[V1Service] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ServiceList. - - List of services # noqa: E501 - - :param items: The items of this V1ServiceList. # noqa: E501 - :type: list[V1Service] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ServiceList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ServiceList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ServiceList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ServiceList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ServiceList. # noqa: E501 - - - :return: The metadata of this V1ServiceList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ServiceList. - - - :param metadata: The metadata of this V1ServiceList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_port.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_port.py deleted file mode 100644 index e428d1f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_port.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServicePort(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'app_protocol': 'str', - 'name': 'str', - 'node_port': 'int', - 'port': 'int', - 'protocol': 'str', - 'target_port': 'object' - } - - attribute_map = { - 'app_protocol': 'appProtocol', - 'name': 'name', - 'node_port': 'nodePort', - 'port': 'port', - 'protocol': 'protocol', - 'target_port': 'targetPort' - } - - def __init__(self, app_protocol=None, name=None, node_port=None, port=None, protocol=None, target_port=None, local_vars_configuration=None): # noqa: E501 - """V1ServicePort - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._app_protocol = None - self._name = None - self._node_port = None - self._port = None - self._protocol = None - self._target_port = None - self.discriminator = None - - if app_protocol is not None: - self.app_protocol = app_protocol - if name is not None: - self.name = name - if node_port is not None: - self.node_port = node_port - self.port = port - if protocol is not None: - self.protocol = protocol - if target_port is not None: - self.target_port = target_port - - @property - def app_protocol(self): - """Gets the app_protocol of this V1ServicePort. # noqa: E501 - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :return: The app_protocol of this V1ServicePort. # noqa: E501 - :rtype: str - """ - return self._app_protocol - - @app_protocol.setter - def app_protocol(self, app_protocol): - """Sets the app_protocol of this V1ServicePort. - - The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. # noqa: E501 - - :param app_protocol: The app_protocol of this V1ServicePort. # noqa: E501 - :type: str - """ - - self._app_protocol = app_protocol - - @property - def name(self): - """Gets the name of this V1ServicePort. # noqa: E501 - - The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. # noqa: E501 - - :return: The name of this V1ServicePort. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ServicePort. - - The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. # noqa: E501 - - :param name: The name of this V1ServicePort. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def node_port(self): - """Gets the node_port of this V1ServicePort. # noqa: E501 - - The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport # noqa: E501 - - :return: The node_port of this V1ServicePort. # noqa: E501 - :rtype: int - """ - return self._node_port - - @node_port.setter - def node_port(self, node_port): - """Sets the node_port of this V1ServicePort. - - The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport # noqa: E501 - - :param node_port: The node_port of this V1ServicePort. # noqa: E501 - :type: int - """ - - self._node_port = node_port - - @property - def port(self): - """Gets the port of this V1ServicePort. # noqa: E501 - - The port that will be exposed by this service. # noqa: E501 - - :return: The port of this V1ServicePort. # noqa: E501 - :rtype: int - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1ServicePort. - - The port that will be exposed by this service. # noqa: E501 - - :param port: The port of this V1ServicePort. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - @property - def protocol(self): - """Gets the protocol of this V1ServicePort. # noqa: E501 - - The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP. # noqa: E501 - - :return: The protocol of this V1ServicePort. # noqa: E501 - :rtype: str - """ - return self._protocol - - @protocol.setter - def protocol(self, protocol): - """Sets the protocol of this V1ServicePort. - - The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP. # noqa: E501 - - :param protocol: The protocol of this V1ServicePort. # noqa: E501 - :type: str - """ - - self._protocol = protocol - - @property - def target_port(self): - """Gets the target_port of this V1ServicePort. # noqa: E501 - - Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service # noqa: E501 - - :return: The target_port of this V1ServicePort. # noqa: E501 - :rtype: object - """ - return self._target_port - - @target_port.setter - def target_port(self, target_port): - """Sets the target_port of this V1ServicePort. - - Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service # noqa: E501 - - :param target_port: The target_port of this V1ServicePort. # noqa: E501 - :type: object - """ - - self._target_port = target_port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServicePort): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServicePort): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_spec.py deleted file mode 100644 index fe1841a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_spec.py +++ /dev/null @@ -1,624 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allocate_load_balancer_node_ports': 'bool', - 'cluster_ip': 'str', - 'cluster_i_ps': 'list[str]', - 'external_i_ps': 'list[str]', - 'external_name': 'str', - 'external_traffic_policy': 'str', - 'health_check_node_port': 'int', - 'internal_traffic_policy': 'str', - 'ip_families': 'list[str]', - 'ip_family_policy': 'str', - 'load_balancer_class': 'str', - 'load_balancer_ip': 'str', - 'load_balancer_source_ranges': 'list[str]', - 'ports': 'list[V1ServicePort]', - 'publish_not_ready_addresses': 'bool', - 'selector': 'dict(str, str)', - 'session_affinity': 'str', - 'session_affinity_config': 'V1SessionAffinityConfig', - 'type': 'str' - } - - attribute_map = { - 'allocate_load_balancer_node_ports': 'allocateLoadBalancerNodePorts', - 'cluster_ip': 'clusterIP', - 'cluster_i_ps': 'clusterIPs', - 'external_i_ps': 'externalIPs', - 'external_name': 'externalName', - 'external_traffic_policy': 'externalTrafficPolicy', - 'health_check_node_port': 'healthCheckNodePort', - 'internal_traffic_policy': 'internalTrafficPolicy', - 'ip_families': 'ipFamilies', - 'ip_family_policy': 'ipFamilyPolicy', - 'load_balancer_class': 'loadBalancerClass', - 'load_balancer_ip': 'loadBalancerIP', - 'load_balancer_source_ranges': 'loadBalancerSourceRanges', - 'ports': 'ports', - 'publish_not_ready_addresses': 'publishNotReadyAddresses', - 'selector': 'selector', - 'session_affinity': 'sessionAffinity', - 'session_affinity_config': 'sessionAffinityConfig', - 'type': 'type' - } - - def __init__(self, allocate_load_balancer_node_ports=None, cluster_ip=None, cluster_i_ps=None, external_i_ps=None, external_name=None, external_traffic_policy=None, health_check_node_port=None, internal_traffic_policy=None, ip_families=None, ip_family_policy=None, load_balancer_class=None, load_balancer_ip=None, load_balancer_source_ranges=None, ports=None, publish_not_ready_addresses=None, selector=None, session_affinity=None, session_affinity_config=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allocate_load_balancer_node_ports = None - self._cluster_ip = None - self._cluster_i_ps = None - self._external_i_ps = None - self._external_name = None - self._external_traffic_policy = None - self._health_check_node_port = None - self._internal_traffic_policy = None - self._ip_families = None - self._ip_family_policy = None - self._load_balancer_class = None - self._load_balancer_ip = None - self._load_balancer_source_ranges = None - self._ports = None - self._publish_not_ready_addresses = None - self._selector = None - self._session_affinity = None - self._session_affinity_config = None - self._type = None - self.discriminator = None - - if allocate_load_balancer_node_ports is not None: - self.allocate_load_balancer_node_ports = allocate_load_balancer_node_ports - if cluster_ip is not None: - self.cluster_ip = cluster_ip - if cluster_i_ps is not None: - self.cluster_i_ps = cluster_i_ps - if external_i_ps is not None: - self.external_i_ps = external_i_ps - if external_name is not None: - self.external_name = external_name - if external_traffic_policy is not None: - self.external_traffic_policy = external_traffic_policy - if health_check_node_port is not None: - self.health_check_node_port = health_check_node_port - if internal_traffic_policy is not None: - self.internal_traffic_policy = internal_traffic_policy - if ip_families is not None: - self.ip_families = ip_families - if ip_family_policy is not None: - self.ip_family_policy = ip_family_policy - if load_balancer_class is not None: - self.load_balancer_class = load_balancer_class - if load_balancer_ip is not None: - self.load_balancer_ip = load_balancer_ip - if load_balancer_source_ranges is not None: - self.load_balancer_source_ranges = load_balancer_source_ranges - if ports is not None: - self.ports = ports - if publish_not_ready_addresses is not None: - self.publish_not_ready_addresses = publish_not_ready_addresses - if selector is not None: - self.selector = selector - if session_affinity is not None: - self.session_affinity = session_affinity - if session_affinity_config is not None: - self.session_affinity_config = session_affinity_config - if type is not None: - self.type = type - - @property - def allocate_load_balancer_node_ports(self): - """Gets the allocate_load_balancer_node_ports of this V1ServiceSpec. # noqa: E501 - - allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. # noqa: E501 - - :return: The allocate_load_balancer_node_ports of this V1ServiceSpec. # noqa: E501 - :rtype: bool - """ - return self._allocate_load_balancer_node_ports - - @allocate_load_balancer_node_ports.setter - def allocate_load_balancer_node_ports(self, allocate_load_balancer_node_ports): - """Sets the allocate_load_balancer_node_ports of this V1ServiceSpec. - - allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. # noqa: E501 - - :param allocate_load_balancer_node_ports: The allocate_load_balancer_node_ports of this V1ServiceSpec. # noqa: E501 - :type: bool - """ - - self._allocate_load_balancer_node_ports = allocate_load_balancer_node_ports - - @property - def cluster_ip(self): - """Gets the cluster_ip of this V1ServiceSpec. # noqa: E501 - - clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are \"None\", empty string (\"\"), or a valid IP address. Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :return: The cluster_ip of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._cluster_ip - - @cluster_ip.setter - def cluster_ip(self, cluster_ip): - """Sets the cluster_ip of this V1ServiceSpec. - - clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are \"None\", empty string (\"\"), or a valid IP address. Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :param cluster_ip: The cluster_ip of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._cluster_ip = cluster_ip - - @property - def cluster_i_ps(self): - """Gets the cluster_i_ps of this V1ServiceSpec. # noqa: E501 - - ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are \"None\", empty string (\"\"), or a valid IP address. Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value. This field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :return: The cluster_i_ps of this V1ServiceSpec. # noqa: E501 - :rtype: list[str] - """ - return self._cluster_i_ps - - @cluster_i_ps.setter - def cluster_i_ps(self, cluster_i_ps): - """Sets the cluster_i_ps of this V1ServiceSpec. - - ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above). Valid values are \"None\", empty string (\"\"), or a valid IP address. Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. If this field is not specified, it will be initialized from the clusterIP field. If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value. This field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :param cluster_i_ps: The cluster_i_ps of this V1ServiceSpec. # noqa: E501 - :type: list[str] - """ - - self._cluster_i_ps = cluster_i_ps - - @property - def external_i_ps(self): - """Gets the external_i_ps of this V1ServiceSpec. # noqa: E501 - - externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. # noqa: E501 - - :return: The external_i_ps of this V1ServiceSpec. # noqa: E501 - :rtype: list[str] - """ - return self._external_i_ps - - @external_i_ps.setter - def external_i_ps(self, external_i_ps): - """Sets the external_i_ps of this V1ServiceSpec. - - externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. # noqa: E501 - - :param external_i_ps: The external_i_ps of this V1ServiceSpec. # noqa: E501 - :type: list[str] - """ - - self._external_i_ps = external_i_ps - - @property - def external_name(self): - """Gets the external_name of this V1ServiceSpec. # noqa: E501 - - externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\". # noqa: E501 - - :return: The external_name of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._external_name - - @external_name.setter - def external_name(self, external_name): - """Sets the external_name of this V1ServiceSpec. - - externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\". # noqa: E501 - - :param external_name: The external_name of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._external_name = external_name - - @property - def external_traffic_policy(self): - """Gets the external_traffic_policy of this V1ServiceSpec. # noqa: E501 - - externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node. # noqa: E501 - - :return: The external_traffic_policy of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._external_traffic_policy - - @external_traffic_policy.setter - def external_traffic_policy(self, external_traffic_policy): - """Sets the external_traffic_policy of this V1ServiceSpec. - - externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node. # noqa: E501 - - :param external_traffic_policy: The external_traffic_policy of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._external_traffic_policy = external_traffic_policy - - @property - def health_check_node_port(self): - """Gets the health_check_node_port of this V1ServiceSpec. # noqa: E501 - - healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set. # noqa: E501 - - :return: The health_check_node_port of this V1ServiceSpec. # noqa: E501 - :rtype: int - """ - return self._health_check_node_port - - @health_check_node_port.setter - def health_check_node_port(self, health_check_node_port): - """Sets the health_check_node_port of this V1ServiceSpec. - - healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set. # noqa: E501 - - :param health_check_node_port: The health_check_node_port of this V1ServiceSpec. # noqa: E501 - :type: int - """ - - self._health_check_node_port = health_check_node_port - - @property - def internal_traffic_policy(self): - """Gets the internal_traffic_policy of this V1ServiceSpec. # noqa: E501 - - InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. If set to \"Local\", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). # noqa: E501 - - :return: The internal_traffic_policy of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._internal_traffic_policy - - @internal_traffic_policy.setter - def internal_traffic_policy(self, internal_traffic_policy): - """Sets the internal_traffic_policy of this V1ServiceSpec. - - InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. If set to \"Local\", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). # noqa: E501 - - :param internal_traffic_policy: The internal_traffic_policy of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._internal_traffic_policy = internal_traffic_policy - - @property - def ip_families(self): - """Gets the ip_families of this V1ServiceSpec. # noqa: E501 - - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \"IPv4\" and \"IPv6\". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \"headless\" services. This field will be wiped when updating a Service to type ExternalName. This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. # noqa: E501 - - :return: The ip_families of this V1ServiceSpec. # noqa: E501 - :rtype: list[str] - """ - return self._ip_families - - @ip_families.setter - def ip_families(self, ip_families): - """Sets the ip_families of this V1ServiceSpec. - - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \"IPv4\" and \"IPv6\". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \"headless\" services. This field will be wiped when updating a Service to type ExternalName. This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. # noqa: E501 - - :param ip_families: The ip_families of this V1ServiceSpec. # noqa: E501 - :type: list[str] - """ - - self._ip_families = ip_families - - @property - def ip_family_policy(self): - """Gets the ip_family_policy of this V1ServiceSpec. # noqa: E501 - - IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be \"SingleStack\" (a single IP family), \"PreferDualStack\" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or \"RequireDualStack\" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. # noqa: E501 - - :return: The ip_family_policy of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._ip_family_policy - - @ip_family_policy.setter - def ip_family_policy(self, ip_family_policy): - """Sets the ip_family_policy of this V1ServiceSpec. - - IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be \"SingleStack\" (a single IP family), \"PreferDualStack\" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or \"RequireDualStack\" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. # noqa: E501 - - :param ip_family_policy: The ip_family_policy of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._ip_family_policy = ip_family_policy - - @property - def load_balancer_class(self): - """Gets the load_balancer_class of this V1ServiceSpec. # noqa: E501 - - loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. # noqa: E501 - - :return: The load_balancer_class of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._load_balancer_class - - @load_balancer_class.setter - def load_balancer_class(self, load_balancer_class): - """Sets the load_balancer_class of this V1ServiceSpec. - - loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. # noqa: E501 - - :param load_balancer_class: The load_balancer_class of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._load_balancer_class = load_balancer_class - - @property - def load_balancer_ip(self): - """Gets the load_balancer_ip of this V1ServiceSpec. # noqa: E501 - - Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available. # noqa: E501 - - :return: The load_balancer_ip of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._load_balancer_ip - - @load_balancer_ip.setter - def load_balancer_ip(self, load_balancer_ip): - """Sets the load_balancer_ip of this V1ServiceSpec. - - Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available. # noqa: E501 - - :param load_balancer_ip: The load_balancer_ip of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._load_balancer_ip = load_balancer_ip - - @property - def load_balancer_source_ranges(self): - """Gets the load_balancer_source_ranges of this V1ServiceSpec. # noqa: E501 - - If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ # noqa: E501 - - :return: The load_balancer_source_ranges of this V1ServiceSpec. # noqa: E501 - :rtype: list[str] - """ - return self._load_balancer_source_ranges - - @load_balancer_source_ranges.setter - def load_balancer_source_ranges(self, load_balancer_source_ranges): - """Sets the load_balancer_source_ranges of this V1ServiceSpec. - - If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ # noqa: E501 - - :param load_balancer_source_ranges: The load_balancer_source_ranges of this V1ServiceSpec. # noqa: E501 - :type: list[str] - """ - - self._load_balancer_source_ranges = load_balancer_source_ranges - - @property - def ports(self): - """Gets the ports of this V1ServiceSpec. # noqa: E501 - - The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :return: The ports of this V1ServiceSpec. # noqa: E501 - :rtype: list[V1ServicePort] - """ - return self._ports - - @ports.setter - def ports(self, ports): - """Sets the ports of this V1ServiceSpec. - - The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :param ports: The ports of this V1ServiceSpec. # noqa: E501 - :type: list[V1ServicePort] - """ - - self._ports = ports - - @property - def publish_not_ready_addresses(self): - """Gets the publish_not_ready_addresses of this V1ServiceSpec. # noqa: E501 - - publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered \"ready\" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior. # noqa: E501 - - :return: The publish_not_ready_addresses of this V1ServiceSpec. # noqa: E501 - :rtype: bool - """ - return self._publish_not_ready_addresses - - @publish_not_ready_addresses.setter - def publish_not_ready_addresses(self, publish_not_ready_addresses): - """Sets the publish_not_ready_addresses of this V1ServiceSpec. - - publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered \"ready\" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior. # noqa: E501 - - :param publish_not_ready_addresses: The publish_not_ready_addresses of this V1ServiceSpec. # noqa: E501 - :type: bool - """ - - self._publish_not_ready_addresses = publish_not_ready_addresses - - @property - def selector(self): - """Gets the selector of this V1ServiceSpec. # noqa: E501 - - Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ # noqa: E501 - - :return: The selector of this V1ServiceSpec. # noqa: E501 - :rtype: dict(str, str) - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1ServiceSpec. - - Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ # noqa: E501 - - :param selector: The selector of this V1ServiceSpec. # noqa: E501 - :type: dict(str, str) - """ - - self._selector = selector - - @property - def session_affinity(self): - """Gets the session_affinity of this V1ServiceSpec. # noqa: E501 - - Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :return: The session_affinity of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._session_affinity - - @session_affinity.setter - def session_affinity(self, session_affinity): - """Sets the session_affinity of this V1ServiceSpec. - - Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies # noqa: E501 - - :param session_affinity: The session_affinity of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._session_affinity = session_affinity - - @property - def session_affinity_config(self): - """Gets the session_affinity_config of this V1ServiceSpec. # noqa: E501 - - - :return: The session_affinity_config of this V1ServiceSpec. # noqa: E501 - :rtype: V1SessionAffinityConfig - """ - return self._session_affinity_config - - @session_affinity_config.setter - def session_affinity_config(self, session_affinity_config): - """Sets the session_affinity_config of this V1ServiceSpec. - - - :param session_affinity_config: The session_affinity_config of this V1ServiceSpec. # noqa: E501 - :type: V1SessionAffinityConfig - """ - - self._session_affinity_config = session_affinity_config - - @property - def type(self): - """Gets the type of this V1ServiceSpec. # noqa: E501 - - type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \"ExternalName\" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types # noqa: E501 - - :return: The type of this V1ServiceSpec. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1ServiceSpec. - - type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \"ExternalName\" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types # noqa: E501 - - :param type: The type of this V1ServiceSpec. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_status.py deleted file mode 100644 index 40b55be..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_service_status.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ServiceStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1Condition]', - 'load_balancer': 'V1LoadBalancerStatus' - } - - attribute_map = { - 'conditions': 'conditions', - 'load_balancer': 'loadBalancer' - } - - def __init__(self, conditions=None, load_balancer=None, local_vars_configuration=None): # noqa: E501 - """V1ServiceStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._load_balancer = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if load_balancer is not None: - self.load_balancer = load_balancer - - @property - def conditions(self): - """Gets the conditions of this V1ServiceStatus. # noqa: E501 - - Current service state # noqa: E501 - - :return: The conditions of this V1ServiceStatus. # noqa: E501 - :rtype: list[V1Condition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1ServiceStatus. - - Current service state # noqa: E501 - - :param conditions: The conditions of this V1ServiceStatus. # noqa: E501 - :type: list[V1Condition] - """ - - self._conditions = conditions - - @property - def load_balancer(self): - """Gets the load_balancer of this V1ServiceStatus. # noqa: E501 - - - :return: The load_balancer of this V1ServiceStatus. # noqa: E501 - :rtype: V1LoadBalancerStatus - """ - return self._load_balancer - - @load_balancer.setter - def load_balancer(self, load_balancer): - """Sets the load_balancer of this V1ServiceStatus. - - - :param load_balancer: The load_balancer of this V1ServiceStatus. # noqa: E501 - :type: V1LoadBalancerStatus - """ - - self._load_balancer = load_balancer - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ServiceStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ServiceStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_session_affinity_config.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_session_affinity_config.py deleted file mode 100644 index 7c51852..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_session_affinity_config.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SessionAffinityConfig(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'client_ip': 'V1ClientIPConfig' - } - - attribute_map = { - 'client_ip': 'clientIP' - } - - def __init__(self, client_ip=None, local_vars_configuration=None): # noqa: E501 - """V1SessionAffinityConfig - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._client_ip = None - self.discriminator = None - - if client_ip is not None: - self.client_ip = client_ip - - @property - def client_ip(self): - """Gets the client_ip of this V1SessionAffinityConfig. # noqa: E501 - - - :return: The client_ip of this V1SessionAffinityConfig. # noqa: E501 - :rtype: V1ClientIPConfig - """ - return self._client_ip - - @client_ip.setter - def client_ip(self, client_ip): - """Sets the client_ip of this V1SessionAffinityConfig. - - - :param client_ip: The client_ip of this V1SessionAffinityConfig. # noqa: E501 - :type: V1ClientIPConfig - """ - - self._client_ip = client_ip - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SessionAffinityConfig): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SessionAffinityConfig): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sleep_action.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sleep_action.py deleted file mode 100644 index e068f3d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sleep_action.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SleepAction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'seconds': 'int' - } - - attribute_map = { - 'seconds': 'seconds' - } - - def __init__(self, seconds=None, local_vars_configuration=None): # noqa: E501 - """V1SleepAction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._seconds = None - self.discriminator = None - - self.seconds = seconds - - @property - def seconds(self): - """Gets the seconds of this V1SleepAction. # noqa: E501 - - Seconds is the number of seconds to sleep. # noqa: E501 - - :return: The seconds of this V1SleepAction. # noqa: E501 - :rtype: int - """ - return self._seconds - - @seconds.setter - def seconds(self, seconds): - """Sets the seconds of this V1SleepAction. - - Seconds is the number of seconds to sleep. # noqa: E501 - - :param seconds: The seconds of this V1SleepAction. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and seconds is None: # noqa: E501 - raise ValueError("Invalid value for `seconds`, must not be `None`") # noqa: E501 - - self._seconds = seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SleepAction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SleepAction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set.py deleted file mode 100644 index bfedf0a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSet(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1StatefulSetSpec', - 'status': 'V1StatefulSetStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSet - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1StatefulSet. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1StatefulSet. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1StatefulSet. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1StatefulSet. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1StatefulSet. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1StatefulSet. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1StatefulSet. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1StatefulSet. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1StatefulSet. # noqa: E501 - - - :return: The metadata of this V1StatefulSet. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1StatefulSet. - - - :param metadata: The metadata of this V1StatefulSet. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1StatefulSet. # noqa: E501 - - - :return: The spec of this V1StatefulSet. # noqa: E501 - :rtype: V1StatefulSetSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1StatefulSet. - - - :param spec: The spec of this V1StatefulSet. # noqa: E501 - :type: V1StatefulSetSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1StatefulSet. # noqa: E501 - - - :return: The status of this V1StatefulSet. # noqa: E501 - :rtype: V1StatefulSetStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1StatefulSet. - - - :param status: The status of this V1StatefulSet. # noqa: E501 - :type: V1StatefulSetStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSet): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSet): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_condition.py deleted file mode 100644 index 21d2c89..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1StatefulSetCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1StatefulSetCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1StatefulSetCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1StatefulSetCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1StatefulSetCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1StatefulSetCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1StatefulSetCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1StatefulSetCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1StatefulSetCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1StatefulSetCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1StatefulSetCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1StatefulSetCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1StatefulSetCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1StatefulSetCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1StatefulSetCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1StatefulSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1StatefulSetCondition. # noqa: E501 - - Type of statefulset condition. # noqa: E501 - - :return: The type of this V1StatefulSetCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1StatefulSetCondition. - - Type of statefulset condition. # noqa: E501 - - :param type: The type of this V1StatefulSetCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_list.py deleted file mode 100644 index 596c4d4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1StatefulSet]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1StatefulSetList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1StatefulSetList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1StatefulSetList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1StatefulSetList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1StatefulSetList. # noqa: E501 - - Items is the list of stateful sets. # noqa: E501 - - :return: The items of this V1StatefulSetList. # noqa: E501 - :rtype: list[V1StatefulSet] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1StatefulSetList. - - Items is the list of stateful sets. # noqa: E501 - - :param items: The items of this V1StatefulSetList. # noqa: E501 - :type: list[V1StatefulSet] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1StatefulSetList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1StatefulSetList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1StatefulSetList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1StatefulSetList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1StatefulSetList. # noqa: E501 - - - :return: The metadata of this V1StatefulSetList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1StatefulSetList. - - - :param metadata: The metadata of this V1StatefulSetList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_ordinals.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_ordinals.py deleted file mode 100644 index 75dcd1e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_ordinals.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetOrdinals(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'start': 'int' - } - - attribute_map = { - 'start': 'start' - } - - def __init__(self, start=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetOrdinals - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._start = None - self.discriminator = None - - if start is not None: - self.start = start - - @property - def start(self): - """Gets the start of this V1StatefulSetOrdinals. # noqa: E501 - - start is the number representing the first replica's index. It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range: [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas). If unset, defaults to 0. Replica indices will be in the range: [0, .spec.replicas). # noqa: E501 - - :return: The start of this V1StatefulSetOrdinals. # noqa: E501 - :rtype: int - """ - return self._start - - @start.setter - def start(self, start): - """Sets the start of this V1StatefulSetOrdinals. - - start is the number representing the first replica's index. It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range: [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas). If unset, defaults to 0. Replica indices will be in the range: [0, .spec.replicas). # noqa: E501 - - :param start: The start of this V1StatefulSetOrdinals. # noqa: E501 - :type: int - """ - - self._start = start - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetOrdinals): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetOrdinals): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_persistent_volume_claim_retention_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_persistent_volume_claim_retention_policy.py deleted file mode 100644 index 28e93aa..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_persistent_volume_claim_retention_policy.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetPersistentVolumeClaimRetentionPolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'when_deleted': 'str', - 'when_scaled': 'str' - } - - attribute_map = { - 'when_deleted': 'whenDeleted', - 'when_scaled': 'whenScaled' - } - - def __init__(self, when_deleted=None, when_scaled=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetPersistentVolumeClaimRetentionPolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._when_deleted = None - self._when_scaled = None - self.discriminator = None - - if when_deleted is not None: - self.when_deleted = when_deleted - if when_scaled is not None: - self.when_scaled = when_scaled - - @property - def when_deleted(self): - """Gets the when_deleted of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - - WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted. # noqa: E501 - - :return: The when_deleted of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - :rtype: str - """ - return self._when_deleted - - @when_deleted.setter - def when_deleted(self, when_deleted): - """Sets the when_deleted of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. - - WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted. # noqa: E501 - - :param when_deleted: The when_deleted of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - :type: str - """ - - self._when_deleted = when_deleted - - @property - def when_scaled(self): - """Gets the when_scaled of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - - WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted. # noqa: E501 - - :return: The when_scaled of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - :rtype: str - """ - return self._when_scaled - - @when_scaled.setter - def when_scaled(self, when_scaled): - """Sets the when_scaled of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. - - WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted. # noqa: E501 - - :param when_scaled: The when_scaled of this V1StatefulSetPersistentVolumeClaimRetentionPolicy. # noqa: E501 - :type: str - """ - - self._when_scaled = when_scaled - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetPersistentVolumeClaimRetentionPolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetPersistentVolumeClaimRetentionPolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_spec.py deleted file mode 100644 index 97c9b5b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_spec.py +++ /dev/null @@ -1,395 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'min_ready_seconds': 'int', - 'ordinals': 'V1StatefulSetOrdinals', - 'persistent_volume_claim_retention_policy': 'V1StatefulSetPersistentVolumeClaimRetentionPolicy', - 'pod_management_policy': 'str', - 'replicas': 'int', - 'revision_history_limit': 'int', - 'selector': 'V1LabelSelector', - 'service_name': 'str', - 'template': 'V1PodTemplateSpec', - 'update_strategy': 'V1StatefulSetUpdateStrategy', - 'volume_claim_templates': 'list[V1PersistentVolumeClaim]' - } - - attribute_map = { - 'min_ready_seconds': 'minReadySeconds', - 'ordinals': 'ordinals', - 'persistent_volume_claim_retention_policy': 'persistentVolumeClaimRetentionPolicy', - 'pod_management_policy': 'podManagementPolicy', - 'replicas': 'replicas', - 'revision_history_limit': 'revisionHistoryLimit', - 'selector': 'selector', - 'service_name': 'serviceName', - 'template': 'template', - 'update_strategy': 'updateStrategy', - 'volume_claim_templates': 'volumeClaimTemplates' - } - - def __init__(self, min_ready_seconds=None, ordinals=None, persistent_volume_claim_retention_policy=None, pod_management_policy=None, replicas=None, revision_history_limit=None, selector=None, service_name=None, template=None, update_strategy=None, volume_claim_templates=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._min_ready_seconds = None - self._ordinals = None - self._persistent_volume_claim_retention_policy = None - self._pod_management_policy = None - self._replicas = None - self._revision_history_limit = None - self._selector = None - self._service_name = None - self._template = None - self._update_strategy = None - self._volume_claim_templates = None - self.discriminator = None - - if min_ready_seconds is not None: - self.min_ready_seconds = min_ready_seconds - if ordinals is not None: - self.ordinals = ordinals - if persistent_volume_claim_retention_policy is not None: - self.persistent_volume_claim_retention_policy = persistent_volume_claim_retention_policy - if pod_management_policy is not None: - self.pod_management_policy = pod_management_policy - if replicas is not None: - self.replicas = replicas - if revision_history_limit is not None: - self.revision_history_limit = revision_history_limit - self.selector = selector - self.service_name = service_name - self.template = template - if update_strategy is not None: - self.update_strategy = update_strategy - if volume_claim_templates is not None: - self.volume_claim_templates = volume_claim_templates - - @property - def min_ready_seconds(self): - """Gets the min_ready_seconds of this V1StatefulSetSpec. # noqa: E501 - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :return: The min_ready_seconds of this V1StatefulSetSpec. # noqa: E501 - :rtype: int - """ - return self._min_ready_seconds - - @min_ready_seconds.setter - def min_ready_seconds(self, min_ready_seconds): - """Sets the min_ready_seconds of this V1StatefulSetSpec. - - Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) # noqa: E501 - - :param min_ready_seconds: The min_ready_seconds of this V1StatefulSetSpec. # noqa: E501 - :type: int - """ - - self._min_ready_seconds = min_ready_seconds - - @property - def ordinals(self): - """Gets the ordinals of this V1StatefulSetSpec. # noqa: E501 - - - :return: The ordinals of this V1StatefulSetSpec. # noqa: E501 - :rtype: V1StatefulSetOrdinals - """ - return self._ordinals - - @ordinals.setter - def ordinals(self, ordinals): - """Sets the ordinals of this V1StatefulSetSpec. - - - :param ordinals: The ordinals of this V1StatefulSetSpec. # noqa: E501 - :type: V1StatefulSetOrdinals - """ - - self._ordinals = ordinals - - @property - def persistent_volume_claim_retention_policy(self): - """Gets the persistent_volume_claim_retention_policy of this V1StatefulSetSpec. # noqa: E501 - - - :return: The persistent_volume_claim_retention_policy of this V1StatefulSetSpec. # noqa: E501 - :rtype: V1StatefulSetPersistentVolumeClaimRetentionPolicy - """ - return self._persistent_volume_claim_retention_policy - - @persistent_volume_claim_retention_policy.setter - def persistent_volume_claim_retention_policy(self, persistent_volume_claim_retention_policy): - """Sets the persistent_volume_claim_retention_policy of this V1StatefulSetSpec. - - - :param persistent_volume_claim_retention_policy: The persistent_volume_claim_retention_policy of this V1StatefulSetSpec. # noqa: E501 - :type: V1StatefulSetPersistentVolumeClaimRetentionPolicy - """ - - self._persistent_volume_claim_retention_policy = persistent_volume_claim_retention_policy - - @property - def pod_management_policy(self): - """Gets the pod_management_policy of this V1StatefulSetSpec. # noqa: E501 - - podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once. # noqa: E501 - - :return: The pod_management_policy of this V1StatefulSetSpec. # noqa: E501 - :rtype: str - """ - return self._pod_management_policy - - @pod_management_policy.setter - def pod_management_policy(self, pod_management_policy): - """Sets the pod_management_policy of this V1StatefulSetSpec. - - podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once. # noqa: E501 - - :param pod_management_policy: The pod_management_policy of this V1StatefulSetSpec. # noqa: E501 - :type: str - """ - - self._pod_management_policy = pod_management_policy - - @property - def replicas(self): - """Gets the replicas of this V1StatefulSetSpec. # noqa: E501 - - replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1. # noqa: E501 - - :return: The replicas of this V1StatefulSetSpec. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1StatefulSetSpec. - - replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1. # noqa: E501 - - :param replicas: The replicas of this V1StatefulSetSpec. # noqa: E501 - :type: int - """ - - self._replicas = replicas - - @property - def revision_history_limit(self): - """Gets the revision_history_limit of this V1StatefulSetSpec. # noqa: E501 - - revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10. # noqa: E501 - - :return: The revision_history_limit of this V1StatefulSetSpec. # noqa: E501 - :rtype: int - """ - return self._revision_history_limit - - @revision_history_limit.setter - def revision_history_limit(self, revision_history_limit): - """Sets the revision_history_limit of this V1StatefulSetSpec. - - revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10. # noqa: E501 - - :param revision_history_limit: The revision_history_limit of this V1StatefulSetSpec. # noqa: E501 - :type: int - """ - - self._revision_history_limit = revision_history_limit - - @property - def selector(self): - """Gets the selector of this V1StatefulSetSpec. # noqa: E501 - - - :return: The selector of this V1StatefulSetSpec. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1StatefulSetSpec. - - - :param selector: The selector of this V1StatefulSetSpec. # noqa: E501 - :type: V1LabelSelector - """ - if self.local_vars_configuration.client_side_validation and selector is None: # noqa: E501 - raise ValueError("Invalid value for `selector`, must not be `None`") # noqa: E501 - - self._selector = selector - - @property - def service_name(self): - """Gets the service_name of this V1StatefulSetSpec. # noqa: E501 - - serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller. # noqa: E501 - - :return: The service_name of this V1StatefulSetSpec. # noqa: E501 - :rtype: str - """ - return self._service_name - - @service_name.setter - def service_name(self, service_name): - """Sets the service_name of this V1StatefulSetSpec. - - serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller. # noqa: E501 - - :param service_name: The service_name of this V1StatefulSetSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and service_name is None: # noqa: E501 - raise ValueError("Invalid value for `service_name`, must not be `None`") # noqa: E501 - - self._service_name = service_name - - @property - def template(self): - """Gets the template of this V1StatefulSetSpec. # noqa: E501 - - - :return: The template of this V1StatefulSetSpec. # noqa: E501 - :rtype: V1PodTemplateSpec - """ - return self._template - - @template.setter - def template(self, template): - """Sets the template of this V1StatefulSetSpec. - - - :param template: The template of this V1StatefulSetSpec. # noqa: E501 - :type: V1PodTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and template is None: # noqa: E501 - raise ValueError("Invalid value for `template`, must not be `None`") # noqa: E501 - - self._template = template - - @property - def update_strategy(self): - """Gets the update_strategy of this V1StatefulSetSpec. # noqa: E501 - - - :return: The update_strategy of this V1StatefulSetSpec. # noqa: E501 - :rtype: V1StatefulSetUpdateStrategy - """ - return self._update_strategy - - @update_strategy.setter - def update_strategy(self, update_strategy): - """Sets the update_strategy of this V1StatefulSetSpec. - - - :param update_strategy: The update_strategy of this V1StatefulSetSpec. # noqa: E501 - :type: V1StatefulSetUpdateStrategy - """ - - self._update_strategy = update_strategy - - @property - def volume_claim_templates(self): - """Gets the volume_claim_templates of this V1StatefulSetSpec. # noqa: E501 - - volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name. # noqa: E501 - - :return: The volume_claim_templates of this V1StatefulSetSpec. # noqa: E501 - :rtype: list[V1PersistentVolumeClaim] - """ - return self._volume_claim_templates - - @volume_claim_templates.setter - def volume_claim_templates(self, volume_claim_templates): - """Sets the volume_claim_templates of this V1StatefulSetSpec. - - volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name. # noqa: E501 - - :param volume_claim_templates: The volume_claim_templates of this V1StatefulSetSpec. # noqa: E501 - :type: list[V1PersistentVolumeClaim] - """ - - self._volume_claim_templates = volume_claim_templates - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_status.py deleted file mode 100644 index cc9713b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_status.py +++ /dev/null @@ -1,375 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'available_replicas': 'int', - 'collision_count': 'int', - 'conditions': 'list[V1StatefulSetCondition]', - 'current_replicas': 'int', - 'current_revision': 'str', - 'observed_generation': 'int', - 'ready_replicas': 'int', - 'replicas': 'int', - 'update_revision': 'str', - 'updated_replicas': 'int' - } - - attribute_map = { - 'available_replicas': 'availableReplicas', - 'collision_count': 'collisionCount', - 'conditions': 'conditions', - 'current_replicas': 'currentReplicas', - 'current_revision': 'currentRevision', - 'observed_generation': 'observedGeneration', - 'ready_replicas': 'readyReplicas', - 'replicas': 'replicas', - 'update_revision': 'updateRevision', - 'updated_replicas': 'updatedReplicas' - } - - def __init__(self, available_replicas=None, collision_count=None, conditions=None, current_replicas=None, current_revision=None, observed_generation=None, ready_replicas=None, replicas=None, update_revision=None, updated_replicas=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._available_replicas = None - self._collision_count = None - self._conditions = None - self._current_replicas = None - self._current_revision = None - self._observed_generation = None - self._ready_replicas = None - self._replicas = None - self._update_revision = None - self._updated_replicas = None - self.discriminator = None - - if available_replicas is not None: - self.available_replicas = available_replicas - if collision_count is not None: - self.collision_count = collision_count - if conditions is not None: - self.conditions = conditions - if current_replicas is not None: - self.current_replicas = current_replicas - if current_revision is not None: - self.current_revision = current_revision - if observed_generation is not None: - self.observed_generation = observed_generation - if ready_replicas is not None: - self.ready_replicas = ready_replicas - self.replicas = replicas - if update_revision is not None: - self.update_revision = update_revision - if updated_replicas is not None: - self.updated_replicas = updated_replicas - - @property - def available_replicas(self): - """Gets the available_replicas of this V1StatefulSetStatus. # noqa: E501 - - Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. # noqa: E501 - - :return: The available_replicas of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._available_replicas - - @available_replicas.setter - def available_replicas(self, available_replicas): - """Sets the available_replicas of this V1StatefulSetStatus. - - Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. # noqa: E501 - - :param available_replicas: The available_replicas of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._available_replicas = available_replicas - - @property - def collision_count(self): - """Gets the collision_count of this V1StatefulSetStatus. # noqa: E501 - - collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. # noqa: E501 - - :return: The collision_count of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._collision_count - - @collision_count.setter - def collision_count(self, collision_count): - """Sets the collision_count of this V1StatefulSetStatus. - - collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. # noqa: E501 - - :param collision_count: The collision_count of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._collision_count = collision_count - - @property - def conditions(self): - """Gets the conditions of this V1StatefulSetStatus. # noqa: E501 - - Represents the latest available observations of a statefulset's current state. # noqa: E501 - - :return: The conditions of this V1StatefulSetStatus. # noqa: E501 - :rtype: list[V1StatefulSetCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1StatefulSetStatus. - - Represents the latest available observations of a statefulset's current state. # noqa: E501 - - :param conditions: The conditions of this V1StatefulSetStatus. # noqa: E501 - :type: list[V1StatefulSetCondition] - """ - - self._conditions = conditions - - @property - def current_replicas(self): - """Gets the current_replicas of this V1StatefulSetStatus. # noqa: E501 - - currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision. # noqa: E501 - - :return: The current_replicas of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._current_replicas - - @current_replicas.setter - def current_replicas(self, current_replicas): - """Sets the current_replicas of this V1StatefulSetStatus. - - currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision. # noqa: E501 - - :param current_replicas: The current_replicas of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._current_replicas = current_replicas - - @property - def current_revision(self): - """Gets the current_revision of this V1StatefulSetStatus. # noqa: E501 - - currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). # noqa: E501 - - :return: The current_revision of this V1StatefulSetStatus. # noqa: E501 - :rtype: str - """ - return self._current_revision - - @current_revision.setter - def current_revision(self, current_revision): - """Sets the current_revision of this V1StatefulSetStatus. - - currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). # noqa: E501 - - :param current_revision: The current_revision of this V1StatefulSetStatus. # noqa: E501 - :type: str - """ - - self._current_revision = current_revision - - @property - def observed_generation(self): - """Gets the observed_generation of this V1StatefulSetStatus. # noqa: E501 - - observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server. # noqa: E501 - - :return: The observed_generation of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1StatefulSetStatus. - - observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server. # noqa: E501 - - :param observed_generation: The observed_generation of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def ready_replicas(self): - """Gets the ready_replicas of this V1StatefulSetStatus. # noqa: E501 - - readyReplicas is the number of pods created for this StatefulSet with a Ready Condition. # noqa: E501 - - :return: The ready_replicas of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._ready_replicas - - @ready_replicas.setter - def ready_replicas(self, ready_replicas): - """Sets the ready_replicas of this V1StatefulSetStatus. - - readyReplicas is the number of pods created for this StatefulSet with a Ready Condition. # noqa: E501 - - :param ready_replicas: The ready_replicas of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._ready_replicas = ready_replicas - - @property - def replicas(self): - """Gets the replicas of this V1StatefulSetStatus. # noqa: E501 - - replicas is the number of Pods created by the StatefulSet controller. # noqa: E501 - - :return: The replicas of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._replicas - - @replicas.setter - def replicas(self, replicas): - """Sets the replicas of this V1StatefulSetStatus. - - replicas is the number of Pods created by the StatefulSet controller. # noqa: E501 - - :param replicas: The replicas of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and replicas is None: # noqa: E501 - raise ValueError("Invalid value for `replicas`, must not be `None`") # noqa: E501 - - self._replicas = replicas - - @property - def update_revision(self): - """Gets the update_revision of this V1StatefulSetStatus. # noqa: E501 - - updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) # noqa: E501 - - :return: The update_revision of this V1StatefulSetStatus. # noqa: E501 - :rtype: str - """ - return self._update_revision - - @update_revision.setter - def update_revision(self, update_revision): - """Sets the update_revision of this V1StatefulSetStatus. - - updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) # noqa: E501 - - :param update_revision: The update_revision of this V1StatefulSetStatus. # noqa: E501 - :type: str - """ - - self._update_revision = update_revision - - @property - def updated_replicas(self): - """Gets the updated_replicas of this V1StatefulSetStatus. # noqa: E501 - - updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision. # noqa: E501 - - :return: The updated_replicas of this V1StatefulSetStatus. # noqa: E501 - :rtype: int - """ - return self._updated_replicas - - @updated_replicas.setter - def updated_replicas(self, updated_replicas): - """Sets the updated_replicas of this V1StatefulSetStatus. - - updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision. # noqa: E501 - - :param updated_replicas: The updated_replicas of this V1StatefulSetStatus. # noqa: E501 - :type: int - """ - - self._updated_replicas = updated_replicas - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_update_strategy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_update_strategy.py deleted file mode 100644 index 7b6e6d0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_stateful_set_update_strategy.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatefulSetUpdateStrategy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'rolling_update': 'V1RollingUpdateStatefulSetStrategy', - 'type': 'str' - } - - attribute_map = { - 'rolling_update': 'rollingUpdate', - 'type': 'type' - } - - def __init__(self, rolling_update=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1StatefulSetUpdateStrategy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._rolling_update = None - self._type = None - self.discriminator = None - - if rolling_update is not None: - self.rolling_update = rolling_update - if type is not None: - self.type = type - - @property - def rolling_update(self): - """Gets the rolling_update of this V1StatefulSetUpdateStrategy. # noqa: E501 - - - :return: The rolling_update of this V1StatefulSetUpdateStrategy. # noqa: E501 - :rtype: V1RollingUpdateStatefulSetStrategy - """ - return self._rolling_update - - @rolling_update.setter - def rolling_update(self, rolling_update): - """Sets the rolling_update of this V1StatefulSetUpdateStrategy. - - - :param rolling_update: The rolling_update of this V1StatefulSetUpdateStrategy. # noqa: E501 - :type: V1RollingUpdateStatefulSetStrategy - """ - - self._rolling_update = rolling_update - - @property - def type(self): - """Gets the type of this V1StatefulSetUpdateStrategy. # noqa: E501 - - Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate. # noqa: E501 - - :return: The type of this V1StatefulSetUpdateStrategy. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1StatefulSetUpdateStrategy. - - Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate. # noqa: E501 - - :param type: The type of this V1StatefulSetUpdateStrategy. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatefulSetUpdateStrategy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatefulSetUpdateStrategy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status.py deleted file mode 100644 index d1c7b6a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status.py +++ /dev/null @@ -1,314 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Status(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'code': 'int', - 'details': 'V1StatusDetails', - 'kind': 'str', - 'message': 'str', - 'metadata': 'V1ListMeta', - 'reason': 'str', - 'status': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'code': 'code', - 'details': 'details', - 'kind': 'kind', - 'message': 'message', - 'metadata': 'metadata', - 'reason': 'reason', - 'status': 'status' - } - - def __init__(self, api_version=None, code=None, details=None, kind=None, message=None, metadata=None, reason=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1Status - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._code = None - self._details = None - self._kind = None - self._message = None - self._metadata = None - self._reason = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if code is not None: - self.code = code - if details is not None: - self.details = details - if kind is not None: - self.kind = kind - if message is not None: - self.message = message - if metadata is not None: - self.metadata = metadata - if reason is not None: - self.reason = reason - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1Status. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1Status. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1Status. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1Status. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def code(self): - """Gets the code of this V1Status. # noqa: E501 - - Suggested HTTP return code for this status, 0 if not set. # noqa: E501 - - :return: The code of this V1Status. # noqa: E501 - :rtype: int - """ - return self._code - - @code.setter - def code(self, code): - """Sets the code of this V1Status. - - Suggested HTTP return code for this status, 0 if not set. # noqa: E501 - - :param code: The code of this V1Status. # noqa: E501 - :type: int - """ - - self._code = code - - @property - def details(self): - """Gets the details of this V1Status. # noqa: E501 - - - :return: The details of this V1Status. # noqa: E501 - :rtype: V1StatusDetails - """ - return self._details - - @details.setter - def details(self, details): - """Sets the details of this V1Status. - - - :param details: The details of this V1Status. # noqa: E501 - :type: V1StatusDetails - """ - - self._details = details - - @property - def kind(self): - """Gets the kind of this V1Status. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1Status. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1Status. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1Status. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def message(self): - """Gets the message of this V1Status. # noqa: E501 - - A human-readable description of the status of this operation. # noqa: E501 - - :return: The message of this V1Status. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1Status. - - A human-readable description of the status of this operation. # noqa: E501 - - :param message: The message of this V1Status. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def metadata(self): - """Gets the metadata of this V1Status. # noqa: E501 - - - :return: The metadata of this V1Status. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1Status. - - - :param metadata: The metadata of this V1Status. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - @property - def reason(self): - """Gets the reason of this V1Status. # noqa: E501 - - A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. # noqa: E501 - - :return: The reason of this V1Status. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1Status. - - A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it. # noqa: E501 - - :param reason: The reason of this V1Status. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1Status. # noqa: E501 - - Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status # noqa: E501 - - :return: The status of this V1Status. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1Status. - - Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status # noqa: E501 - - :param status: The status of this V1Status. # noqa: E501 - :type: str - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Status): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Status): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_cause.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_cause.py deleted file mode 100644 index c548fa0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_cause.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatusCause(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'field': 'str', - 'message': 'str', - 'reason': 'str' - } - - attribute_map = { - 'field': 'field', - 'message': 'message', - 'reason': 'reason' - } - - def __init__(self, field=None, message=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1StatusCause - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._field = None - self._message = None - self._reason = None - self.discriminator = None - - if field is not None: - self.field = field - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - - @property - def field(self): - """Gets the field of this V1StatusCause. # noqa: E501 - - The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. Examples: \"name\" - the field \"name\" on the current resource \"items[0].name\" - the field \"name\" on the first array entry in \"items\" # noqa: E501 - - :return: The field of this V1StatusCause. # noqa: E501 - :rtype: str - """ - return self._field - - @field.setter - def field(self, field): - """Sets the field of this V1StatusCause. - - The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. Examples: \"name\" - the field \"name\" on the current resource \"items[0].name\" - the field \"name\" on the first array entry in \"items\" # noqa: E501 - - :param field: The field of this V1StatusCause. # noqa: E501 - :type: str - """ - - self._field = field - - @property - def message(self): - """Gets the message of this V1StatusCause. # noqa: E501 - - A human-readable description of the cause of the error. This field may be presented as-is to a reader. # noqa: E501 - - :return: The message of this V1StatusCause. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1StatusCause. - - A human-readable description of the cause of the error. This field may be presented as-is to a reader. # noqa: E501 - - :param message: The message of this V1StatusCause. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1StatusCause. # noqa: E501 - - A machine-readable description of the cause of the error. If this value is empty there is no information available. # noqa: E501 - - :return: The reason of this V1StatusCause. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1StatusCause. - - A machine-readable description of the cause of the error. If this value is empty there is no information available. # noqa: E501 - - :param reason: The reason of this V1StatusCause. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatusCause): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatusCause): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_details.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_details.py deleted file mode 100644 index e47f4ca..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_status_details.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StatusDetails(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'causes': 'list[V1StatusCause]', - 'group': 'str', - 'kind': 'str', - 'name': 'str', - 'retry_after_seconds': 'int', - 'uid': 'str' - } - - attribute_map = { - 'causes': 'causes', - 'group': 'group', - 'kind': 'kind', - 'name': 'name', - 'retry_after_seconds': 'retryAfterSeconds', - 'uid': 'uid' - } - - def __init__(self, causes=None, group=None, kind=None, name=None, retry_after_seconds=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1StatusDetails - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._causes = None - self._group = None - self._kind = None - self._name = None - self._retry_after_seconds = None - self._uid = None - self.discriminator = None - - if causes is not None: - self.causes = causes - if group is not None: - self.group = group - if kind is not None: - self.kind = kind - if name is not None: - self.name = name - if retry_after_seconds is not None: - self.retry_after_seconds = retry_after_seconds - if uid is not None: - self.uid = uid - - @property - def causes(self): - """Gets the causes of this V1StatusDetails. # noqa: E501 - - The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes. # noqa: E501 - - :return: The causes of this V1StatusDetails. # noqa: E501 - :rtype: list[V1StatusCause] - """ - return self._causes - - @causes.setter - def causes(self, causes): - """Sets the causes of this V1StatusDetails. - - The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes. # noqa: E501 - - :param causes: The causes of this V1StatusDetails. # noqa: E501 - :type: list[V1StatusCause] - """ - - self._causes = causes - - @property - def group(self): - """Gets the group of this V1StatusDetails. # noqa: E501 - - The group attribute of the resource associated with the status StatusReason. # noqa: E501 - - :return: The group of this V1StatusDetails. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1StatusDetails. - - The group attribute of the resource associated with the status StatusReason. # noqa: E501 - - :param group: The group of this V1StatusDetails. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def kind(self): - """Gets the kind of this V1StatusDetails. # noqa: E501 - - The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1StatusDetails. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1StatusDetails. - - The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1StatusDetails. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1StatusDetails. # noqa: E501 - - The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described). # noqa: E501 - - :return: The name of this V1StatusDetails. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1StatusDetails. - - The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described). # noqa: E501 - - :param name: The name of this V1StatusDetails. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def retry_after_seconds(self): - """Gets the retry_after_seconds of this V1StatusDetails. # noqa: E501 - - If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action. # noqa: E501 - - :return: The retry_after_seconds of this V1StatusDetails. # noqa: E501 - :rtype: int - """ - return self._retry_after_seconds - - @retry_after_seconds.setter - def retry_after_seconds(self, retry_after_seconds): - """Sets the retry_after_seconds of this V1StatusDetails. - - If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action. # noqa: E501 - - :param retry_after_seconds: The retry_after_seconds of this V1StatusDetails. # noqa: E501 - :type: int - """ - - self._retry_after_seconds = retry_after_seconds - - @property - def uid(self): - """Gets the uid of this V1StatusDetails. # noqa: E501 - - UID of the resource. (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :return: The uid of this V1StatusDetails. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1StatusDetails. - - UID of the resource. (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids # noqa: E501 - - :param uid: The uid of this V1StatusDetails. # noqa: E501 - :type: str - """ - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StatusDetails): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StatusDetails): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class.py deleted file mode 100644 index 345a419..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class.py +++ /dev/null @@ -1,373 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StorageClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allow_volume_expansion': 'bool', - 'allowed_topologies': 'list[V1TopologySelectorTerm]', - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'mount_options': 'list[str]', - 'parameters': 'dict(str, str)', - 'provisioner': 'str', - 'reclaim_policy': 'str', - 'volume_binding_mode': 'str' - } - - attribute_map = { - 'allow_volume_expansion': 'allowVolumeExpansion', - 'allowed_topologies': 'allowedTopologies', - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'mount_options': 'mountOptions', - 'parameters': 'parameters', - 'provisioner': 'provisioner', - 'reclaim_policy': 'reclaimPolicy', - 'volume_binding_mode': 'volumeBindingMode' - } - - def __init__(self, allow_volume_expansion=None, allowed_topologies=None, api_version=None, kind=None, metadata=None, mount_options=None, parameters=None, provisioner=None, reclaim_policy=None, volume_binding_mode=None, local_vars_configuration=None): # noqa: E501 - """V1StorageClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allow_volume_expansion = None - self._allowed_topologies = None - self._api_version = None - self._kind = None - self._metadata = None - self._mount_options = None - self._parameters = None - self._provisioner = None - self._reclaim_policy = None - self._volume_binding_mode = None - self.discriminator = None - - if allow_volume_expansion is not None: - self.allow_volume_expansion = allow_volume_expansion - if allowed_topologies is not None: - self.allowed_topologies = allowed_topologies - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if mount_options is not None: - self.mount_options = mount_options - if parameters is not None: - self.parameters = parameters - self.provisioner = provisioner - if reclaim_policy is not None: - self.reclaim_policy = reclaim_policy - if volume_binding_mode is not None: - self.volume_binding_mode = volume_binding_mode - - @property - def allow_volume_expansion(self): - """Gets the allow_volume_expansion of this V1StorageClass. # noqa: E501 - - allowVolumeExpansion shows whether the storage class allow volume expand. # noqa: E501 - - :return: The allow_volume_expansion of this V1StorageClass. # noqa: E501 - :rtype: bool - """ - return self._allow_volume_expansion - - @allow_volume_expansion.setter - def allow_volume_expansion(self, allow_volume_expansion): - """Sets the allow_volume_expansion of this V1StorageClass. - - allowVolumeExpansion shows whether the storage class allow volume expand. # noqa: E501 - - :param allow_volume_expansion: The allow_volume_expansion of this V1StorageClass. # noqa: E501 - :type: bool - """ - - self._allow_volume_expansion = allow_volume_expansion - - @property - def allowed_topologies(self): - """Gets the allowed_topologies of this V1StorageClass. # noqa: E501 - - allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature. # noqa: E501 - - :return: The allowed_topologies of this V1StorageClass. # noqa: E501 - :rtype: list[V1TopologySelectorTerm] - """ - return self._allowed_topologies - - @allowed_topologies.setter - def allowed_topologies(self, allowed_topologies): - """Sets the allowed_topologies of this V1StorageClass. - - allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature. # noqa: E501 - - :param allowed_topologies: The allowed_topologies of this V1StorageClass. # noqa: E501 - :type: list[V1TopologySelectorTerm] - """ - - self._allowed_topologies = allowed_topologies - - @property - def api_version(self): - """Gets the api_version of this V1StorageClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1StorageClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1StorageClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1StorageClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1StorageClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1StorageClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1StorageClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1StorageClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1StorageClass. # noqa: E501 - - - :return: The metadata of this V1StorageClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1StorageClass. - - - :param metadata: The metadata of this V1StorageClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def mount_options(self): - """Gets the mount_options of this V1StorageClass. # noqa: E501 - - mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid. # noqa: E501 - - :return: The mount_options of this V1StorageClass. # noqa: E501 - :rtype: list[str] - """ - return self._mount_options - - @mount_options.setter - def mount_options(self, mount_options): - """Sets the mount_options of this V1StorageClass. - - mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid. # noqa: E501 - - :param mount_options: The mount_options of this V1StorageClass. # noqa: E501 - :type: list[str] - """ - - self._mount_options = mount_options - - @property - def parameters(self): - """Gets the parameters of this V1StorageClass. # noqa: E501 - - parameters holds the parameters for the provisioner that should create volumes of this storage class. # noqa: E501 - - :return: The parameters of this V1StorageClass. # noqa: E501 - :rtype: dict(str, str) - """ - return self._parameters - - @parameters.setter - def parameters(self, parameters): - """Sets the parameters of this V1StorageClass. - - parameters holds the parameters for the provisioner that should create volumes of this storage class. # noqa: E501 - - :param parameters: The parameters of this V1StorageClass. # noqa: E501 - :type: dict(str, str) - """ - - self._parameters = parameters - - @property - def provisioner(self): - """Gets the provisioner of this V1StorageClass. # noqa: E501 - - provisioner indicates the type of the provisioner. # noqa: E501 - - :return: The provisioner of this V1StorageClass. # noqa: E501 - :rtype: str - """ - return self._provisioner - - @provisioner.setter - def provisioner(self, provisioner): - """Sets the provisioner of this V1StorageClass. - - provisioner indicates the type of the provisioner. # noqa: E501 - - :param provisioner: The provisioner of this V1StorageClass. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and provisioner is None: # noqa: E501 - raise ValueError("Invalid value for `provisioner`, must not be `None`") # noqa: E501 - - self._provisioner = provisioner - - @property - def reclaim_policy(self): - """Gets the reclaim_policy of this V1StorageClass. # noqa: E501 - - reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. Defaults to Delete. # noqa: E501 - - :return: The reclaim_policy of this V1StorageClass. # noqa: E501 - :rtype: str - """ - return self._reclaim_policy - - @reclaim_policy.setter - def reclaim_policy(self, reclaim_policy): - """Sets the reclaim_policy of this V1StorageClass. - - reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. Defaults to Delete. # noqa: E501 - - :param reclaim_policy: The reclaim_policy of this V1StorageClass. # noqa: E501 - :type: str - """ - - self._reclaim_policy = reclaim_policy - - @property - def volume_binding_mode(self): - """Gets the volume_binding_mode of this V1StorageClass. # noqa: E501 - - volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature. # noqa: E501 - - :return: The volume_binding_mode of this V1StorageClass. # noqa: E501 - :rtype: str - """ - return self._volume_binding_mode - - @volume_binding_mode.setter - def volume_binding_mode(self, volume_binding_mode): - """Sets the volume_binding_mode of this V1StorageClass. - - volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature. # noqa: E501 - - :param volume_binding_mode: The volume_binding_mode of this V1StorageClass. # noqa: E501 - :type: str - """ - - self._volume_binding_mode = volume_binding_mode - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StorageClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StorageClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class_list.py deleted file mode 100644 index aa10ce0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StorageClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1StorageClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1StorageClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1StorageClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1StorageClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1StorageClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1StorageClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1StorageClassList. # noqa: E501 - - items is the list of StorageClasses # noqa: E501 - - :return: The items of this V1StorageClassList. # noqa: E501 - :rtype: list[V1StorageClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1StorageClassList. - - items is the list of StorageClasses # noqa: E501 - - :param items: The items of this V1StorageClassList. # noqa: E501 - :type: list[V1StorageClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1StorageClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1StorageClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1StorageClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1StorageClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1StorageClassList. # noqa: E501 - - - :return: The metadata of this V1StorageClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1StorageClassList. - - - :param metadata: The metadata of this V1StorageClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StorageClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StorageClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_persistent_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_persistent_volume_source.py deleted file mode 100644 index f95b966..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_persistent_volume_source.py +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StorageOSPersistentVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1ObjectReference', - 'volume_name': 'str', - 'volume_namespace': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'volume_name': 'volumeName', - 'volume_namespace': 'volumeNamespace' - } - - def __init__(self, fs_type=None, read_only=None, secret_ref=None, volume_name=None, volume_namespace=None, local_vars_configuration=None): # noqa: E501 - """V1StorageOSPersistentVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._read_only = None - self._secret_ref = None - self._volume_name = None - self._volume_namespace = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - if volume_name is not None: - self.volume_name = volume_name - if volume_namespace is not None: - self.volume_namespace = volume_namespace - - @property - def fs_type(self): - """Gets the fs_type of this V1StorageOSPersistentVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1StorageOSPersistentVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def read_only(self): - """Gets the read_only of this V1StorageOSPersistentVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1StorageOSPersistentVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1StorageOSPersistentVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :rtype: V1ObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1StorageOSPersistentVolumeSource. - - - :param secret_ref: The secret_ref of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :type: V1ObjectReference - """ - - self._secret_ref = secret_ref - - @property - def volume_name(self): - """Gets the volume_name of this V1StorageOSPersistentVolumeSource. # noqa: E501 - - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. # noqa: E501 - - :return: The volume_name of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_name - - @volume_name.setter - def volume_name(self, volume_name): - """Sets the volume_name of this V1StorageOSPersistentVolumeSource. - - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. # noqa: E501 - - :param volume_name: The volume_name of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_name = volume_name - - @property - def volume_namespace(self): - """Gets the volume_namespace of this V1StorageOSPersistentVolumeSource. # noqa: E501 - - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. # noqa: E501 - - :return: The volume_namespace of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_namespace - - @volume_namespace.setter - def volume_namespace(self, volume_namespace): - """Sets the volume_namespace of this V1StorageOSPersistentVolumeSource. - - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. # noqa: E501 - - :param volume_namespace: The volume_namespace of this V1StorageOSPersistentVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_namespace = volume_namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StorageOSPersistentVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StorageOSPersistentVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_volume_source.py deleted file mode 100644 index 3ea37a4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_storage_os_volume_source.py +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1StorageOSVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'read_only': 'bool', - 'secret_ref': 'V1LocalObjectReference', - 'volume_name': 'str', - 'volume_namespace': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'read_only': 'readOnly', - 'secret_ref': 'secretRef', - 'volume_name': 'volumeName', - 'volume_namespace': 'volumeNamespace' - } - - def __init__(self, fs_type=None, read_only=None, secret_ref=None, volume_name=None, volume_namespace=None, local_vars_configuration=None): # noqa: E501 - """V1StorageOSVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._read_only = None - self._secret_ref = None - self._volume_name = None - self._volume_namespace = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if read_only is not None: - self.read_only = read_only - if secret_ref is not None: - self.secret_ref = secret_ref - if volume_name is not None: - self.volume_name = volume_name - if volume_namespace is not None: - self.volume_namespace = volume_namespace - - @property - def fs_type(self): - """Gets the fs_type of this V1StorageOSVolumeSource. # noqa: E501 - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1StorageOSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1StorageOSVolumeSource. - - fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1StorageOSVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def read_only(self): - """Gets the read_only of this V1StorageOSVolumeSource. # noqa: E501 - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :return: The read_only of this V1StorageOSVolumeSource. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1StorageOSVolumeSource. - - readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. # noqa: E501 - - :param read_only: The read_only of this V1StorageOSVolumeSource. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def secret_ref(self): - """Gets the secret_ref of this V1StorageOSVolumeSource. # noqa: E501 - - - :return: The secret_ref of this V1StorageOSVolumeSource. # noqa: E501 - :rtype: V1LocalObjectReference - """ - return self._secret_ref - - @secret_ref.setter - def secret_ref(self, secret_ref): - """Sets the secret_ref of this V1StorageOSVolumeSource. - - - :param secret_ref: The secret_ref of this V1StorageOSVolumeSource. # noqa: E501 - :type: V1LocalObjectReference - """ - - self._secret_ref = secret_ref - - @property - def volume_name(self): - """Gets the volume_name of this V1StorageOSVolumeSource. # noqa: E501 - - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. # noqa: E501 - - :return: The volume_name of this V1StorageOSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_name - - @volume_name.setter - def volume_name(self, volume_name): - """Sets the volume_name of this V1StorageOSVolumeSource. - - volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. # noqa: E501 - - :param volume_name: The volume_name of this V1StorageOSVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_name = volume_name - - @property - def volume_namespace(self): - """Gets the volume_namespace of this V1StorageOSVolumeSource. # noqa: E501 - - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. # noqa: E501 - - :return: The volume_namespace of this V1StorageOSVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_namespace - - @volume_namespace.setter - def volume_namespace(self, volume_namespace): - """Sets the volume_namespace of this V1StorageOSVolumeSource. - - volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. # noqa: E501 - - :param volume_namespace: The volume_namespace of this V1StorageOSVolumeSource. # noqa: E501 - :type: str - """ - - self._volume_namespace = volume_namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1StorageOSVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1StorageOSVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review.py deleted file mode 100644 index 262fdbf..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SubjectAccessReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1SubjectAccessReviewSpec', - 'status': 'V1SubjectAccessReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1SubjectAccessReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1SubjectAccessReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1SubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1SubjectAccessReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1SubjectAccessReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1SubjectAccessReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1SubjectAccessReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1SubjectAccessReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1SubjectAccessReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1SubjectAccessReview. # noqa: E501 - - - :return: The metadata of this V1SubjectAccessReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1SubjectAccessReview. - - - :param metadata: The metadata of this V1SubjectAccessReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1SubjectAccessReview. # noqa: E501 - - - :return: The spec of this V1SubjectAccessReview. # noqa: E501 - :rtype: V1SubjectAccessReviewSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1SubjectAccessReview. - - - :param spec: The spec of this V1SubjectAccessReview. # noqa: E501 - :type: V1SubjectAccessReviewSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1SubjectAccessReview. # noqa: E501 - - - :return: The status of this V1SubjectAccessReview. # noqa: E501 - :rtype: V1SubjectAccessReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1SubjectAccessReview. - - - :param status: The status of this V1SubjectAccessReview. # noqa: E501 - :type: V1SubjectAccessReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SubjectAccessReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SubjectAccessReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_spec.py deleted file mode 100644 index fa6660d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_spec.py +++ /dev/null @@ -1,258 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SubjectAccessReviewSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'extra': 'dict(str, list[str])', - 'groups': 'list[str]', - 'non_resource_attributes': 'V1NonResourceAttributes', - 'resource_attributes': 'V1ResourceAttributes', - 'uid': 'str', - 'user': 'str' - } - - attribute_map = { - 'extra': 'extra', - 'groups': 'groups', - 'non_resource_attributes': 'nonResourceAttributes', - 'resource_attributes': 'resourceAttributes', - 'uid': 'uid', - 'user': 'user' - } - - def __init__(self, extra=None, groups=None, non_resource_attributes=None, resource_attributes=None, uid=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1SubjectAccessReviewSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._extra = None - self._groups = None - self._non_resource_attributes = None - self._resource_attributes = None - self._uid = None - self._user = None - self.discriminator = None - - if extra is not None: - self.extra = extra - if groups is not None: - self.groups = groups - if non_resource_attributes is not None: - self.non_resource_attributes = non_resource_attributes - if resource_attributes is not None: - self.resource_attributes = resource_attributes - if uid is not None: - self.uid = uid - if user is not None: - self.user = user - - @property - def extra(self): - """Gets the extra of this V1SubjectAccessReviewSpec. # noqa: E501 - - Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here. # noqa: E501 - - :return: The extra of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: dict(str, list[str]) - """ - return self._extra - - @extra.setter - def extra(self, extra): - """Sets the extra of this V1SubjectAccessReviewSpec. - - Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here. # noqa: E501 - - :param extra: The extra of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: dict(str, list[str]) - """ - - self._extra = extra - - @property - def groups(self): - """Gets the groups of this V1SubjectAccessReviewSpec. # noqa: E501 - - Groups is the groups you're testing for. # noqa: E501 - - :return: The groups of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: list[str] - """ - return self._groups - - @groups.setter - def groups(self, groups): - """Sets the groups of this V1SubjectAccessReviewSpec. - - Groups is the groups you're testing for. # noqa: E501 - - :param groups: The groups of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: list[str] - """ - - self._groups = groups - - @property - def non_resource_attributes(self): - """Gets the non_resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - - - :return: The non_resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: V1NonResourceAttributes - """ - return self._non_resource_attributes - - @non_resource_attributes.setter - def non_resource_attributes(self, non_resource_attributes): - """Sets the non_resource_attributes of this V1SubjectAccessReviewSpec. - - - :param non_resource_attributes: The non_resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: V1NonResourceAttributes - """ - - self._non_resource_attributes = non_resource_attributes - - @property - def resource_attributes(self): - """Gets the resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - - - :return: The resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: V1ResourceAttributes - """ - return self._resource_attributes - - @resource_attributes.setter - def resource_attributes(self, resource_attributes): - """Sets the resource_attributes of this V1SubjectAccessReviewSpec. - - - :param resource_attributes: The resource_attributes of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: V1ResourceAttributes - """ - - self._resource_attributes = resource_attributes - - @property - def uid(self): - """Gets the uid of this V1SubjectAccessReviewSpec. # noqa: E501 - - UID information about the requesting user. # noqa: E501 - - :return: The uid of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1SubjectAccessReviewSpec. - - UID information about the requesting user. # noqa: E501 - - :param uid: The uid of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: str - """ - - self._uid = uid - - @property - def user(self): - """Gets the user of this V1SubjectAccessReviewSpec. # noqa: E501 - - User is the user you're testing for. If you specify \"User\" but not \"Groups\", then is it interpreted as \"What if User were not a member of any groups # noqa: E501 - - :return: The user of this V1SubjectAccessReviewSpec. # noqa: E501 - :rtype: str - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1SubjectAccessReviewSpec. - - User is the user you're testing for. If you specify \"User\" but not \"Groups\", then is it interpreted as \"What if User were not a member of any groups # noqa: E501 - - :param user: The user of this V1SubjectAccessReviewSpec. # noqa: E501 - :type: str - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SubjectAccessReviewSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SubjectAccessReviewSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_status.py deleted file mode 100644 index 65deef8..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_access_review_status.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SubjectAccessReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allowed': 'bool', - 'denied': 'bool', - 'evaluation_error': 'str', - 'reason': 'str' - } - - attribute_map = { - 'allowed': 'allowed', - 'denied': 'denied', - 'evaluation_error': 'evaluationError', - 'reason': 'reason' - } - - def __init__(self, allowed=None, denied=None, evaluation_error=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1SubjectAccessReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allowed = None - self._denied = None - self._evaluation_error = None - self._reason = None - self.discriminator = None - - self.allowed = allowed - if denied is not None: - self.denied = denied - if evaluation_error is not None: - self.evaluation_error = evaluation_error - if reason is not None: - self.reason = reason - - @property - def allowed(self): - """Gets the allowed of this V1SubjectAccessReviewStatus. # noqa: E501 - - Allowed is required. True if the action would be allowed, false otherwise. # noqa: E501 - - :return: The allowed of this V1SubjectAccessReviewStatus. # noqa: E501 - :rtype: bool - """ - return self._allowed - - @allowed.setter - def allowed(self, allowed): - """Sets the allowed of this V1SubjectAccessReviewStatus. - - Allowed is required. True if the action would be allowed, false otherwise. # noqa: E501 - - :param allowed: The allowed of this V1SubjectAccessReviewStatus. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and allowed is None: # noqa: E501 - raise ValueError("Invalid value for `allowed`, must not be `None`") # noqa: E501 - - self._allowed = allowed - - @property - def denied(self): - """Gets the denied of this V1SubjectAccessReviewStatus. # noqa: E501 - - Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true. # noqa: E501 - - :return: The denied of this V1SubjectAccessReviewStatus. # noqa: E501 - :rtype: bool - """ - return self._denied - - @denied.setter - def denied(self, denied): - """Sets the denied of this V1SubjectAccessReviewStatus. - - Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true. # noqa: E501 - - :param denied: The denied of this V1SubjectAccessReviewStatus. # noqa: E501 - :type: bool - """ - - self._denied = denied - - @property - def evaluation_error(self): - """Gets the evaluation_error of this V1SubjectAccessReviewStatus. # noqa: E501 - - EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. # noqa: E501 - - :return: The evaluation_error of this V1SubjectAccessReviewStatus. # noqa: E501 - :rtype: str - """ - return self._evaluation_error - - @evaluation_error.setter - def evaluation_error(self, evaluation_error): - """Sets the evaluation_error of this V1SubjectAccessReviewStatus. - - EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. # noqa: E501 - - :param evaluation_error: The evaluation_error of this V1SubjectAccessReviewStatus. # noqa: E501 - :type: str - """ - - self._evaluation_error = evaluation_error - - @property - def reason(self): - """Gets the reason of this V1SubjectAccessReviewStatus. # noqa: E501 - - Reason is optional. It indicates why a request was allowed or denied. # noqa: E501 - - :return: The reason of this V1SubjectAccessReviewStatus. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1SubjectAccessReviewStatus. - - Reason is optional. It indicates why a request was allowed or denied. # noqa: E501 - - :param reason: The reason of this V1SubjectAccessReviewStatus. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SubjectAccessReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SubjectAccessReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_rules_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_rules_review_status.py deleted file mode 100644 index b0d3818..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_subject_rules_review_status.py +++ /dev/null @@ -1,209 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1SubjectRulesReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'evaluation_error': 'str', - 'incomplete': 'bool', - 'non_resource_rules': 'list[V1NonResourceRule]', - 'resource_rules': 'list[V1ResourceRule]' - } - - attribute_map = { - 'evaluation_error': 'evaluationError', - 'incomplete': 'incomplete', - 'non_resource_rules': 'nonResourceRules', - 'resource_rules': 'resourceRules' - } - - def __init__(self, evaluation_error=None, incomplete=None, non_resource_rules=None, resource_rules=None, local_vars_configuration=None): # noqa: E501 - """V1SubjectRulesReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._evaluation_error = None - self._incomplete = None - self._non_resource_rules = None - self._resource_rules = None - self.discriminator = None - - if evaluation_error is not None: - self.evaluation_error = evaluation_error - self.incomplete = incomplete - self.non_resource_rules = non_resource_rules - self.resource_rules = resource_rules - - @property - def evaluation_error(self): - """Gets the evaluation_error of this V1SubjectRulesReviewStatus. # noqa: E501 - - EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete. # noqa: E501 - - :return: The evaluation_error of this V1SubjectRulesReviewStatus. # noqa: E501 - :rtype: str - """ - return self._evaluation_error - - @evaluation_error.setter - def evaluation_error(self, evaluation_error): - """Sets the evaluation_error of this V1SubjectRulesReviewStatus. - - EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete. # noqa: E501 - - :param evaluation_error: The evaluation_error of this V1SubjectRulesReviewStatus. # noqa: E501 - :type: str - """ - - self._evaluation_error = evaluation_error - - @property - def incomplete(self): - """Gets the incomplete of this V1SubjectRulesReviewStatus. # noqa: E501 - - Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. # noqa: E501 - - :return: The incomplete of this V1SubjectRulesReviewStatus. # noqa: E501 - :rtype: bool - """ - return self._incomplete - - @incomplete.setter - def incomplete(self, incomplete): - """Sets the incomplete of this V1SubjectRulesReviewStatus. - - Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. # noqa: E501 - - :param incomplete: The incomplete of this V1SubjectRulesReviewStatus. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and incomplete is None: # noqa: E501 - raise ValueError("Invalid value for `incomplete`, must not be `None`") # noqa: E501 - - self._incomplete = incomplete - - @property - def non_resource_rules(self): - """Gets the non_resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - - NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete. # noqa: E501 - - :return: The non_resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - :rtype: list[V1NonResourceRule] - """ - return self._non_resource_rules - - @non_resource_rules.setter - def non_resource_rules(self, non_resource_rules): - """Sets the non_resource_rules of this V1SubjectRulesReviewStatus. - - NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete. # noqa: E501 - - :param non_resource_rules: The non_resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - :type: list[V1NonResourceRule] - """ - if self.local_vars_configuration.client_side_validation and non_resource_rules is None: # noqa: E501 - raise ValueError("Invalid value for `non_resource_rules`, must not be `None`") # noqa: E501 - - self._non_resource_rules = non_resource_rules - - @property - def resource_rules(self): - """Gets the resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - - ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete. # noqa: E501 - - :return: The resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - :rtype: list[V1ResourceRule] - """ - return self._resource_rules - - @resource_rules.setter - def resource_rules(self, resource_rules): - """Sets the resource_rules of this V1SubjectRulesReviewStatus. - - ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete. # noqa: E501 - - :param resource_rules: The resource_rules of this V1SubjectRulesReviewStatus. # noqa: E501 - :type: list[V1ResourceRule] - """ - if self.local_vars_configuration.client_side_validation and resource_rules is None: # noqa: E501 - raise ValueError("Invalid value for `resource_rules`, must not be `None`") # noqa: E501 - - self._resource_rules = resource_rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1SubjectRulesReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1SubjectRulesReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sysctl.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sysctl.py deleted file mode 100644 index dfb4426..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_sysctl.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Sysctl(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'value': 'str' - } - - attribute_map = { - 'name': 'name', - 'value': 'value' - } - - def __init__(self, name=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1Sysctl - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._value = None - self.discriminator = None - - self.name = name - self.value = value - - @property - def name(self): - """Gets the name of this V1Sysctl. # noqa: E501 - - Name of a property to set # noqa: E501 - - :return: The name of this V1Sysctl. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1Sysctl. - - Name of a property to set # noqa: E501 - - :param name: The name of this V1Sysctl. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def value(self): - """Gets the value of this V1Sysctl. # noqa: E501 - - Value of a property to set # noqa: E501 - - :return: The value of this V1Sysctl. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1Sysctl. - - Value of a property to set # noqa: E501 - - :param value: The value of this V1Sysctl. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and value is None: # noqa: E501 - raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Sysctl): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Sysctl): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_taint.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_taint.py deleted file mode 100644 index f20e4f9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_taint.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Taint(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'effect': 'str', - 'key': 'str', - 'time_added': 'datetime', - 'value': 'str' - } - - attribute_map = { - 'effect': 'effect', - 'key': 'key', - 'time_added': 'timeAdded', - 'value': 'value' - } - - def __init__(self, effect=None, key=None, time_added=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1Taint - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._effect = None - self._key = None - self._time_added = None - self._value = None - self.discriminator = None - - self.effect = effect - self.key = key - if time_added is not None: - self.time_added = time_added - if value is not None: - self.value = value - - @property - def effect(self): - """Gets the effect of this V1Taint. # noqa: E501 - - Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute. # noqa: E501 - - :return: The effect of this V1Taint. # noqa: E501 - :rtype: str - """ - return self._effect - - @effect.setter - def effect(self, effect): - """Sets the effect of this V1Taint. - - Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute. # noqa: E501 - - :param effect: The effect of this V1Taint. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and effect is None: # noqa: E501 - raise ValueError("Invalid value for `effect`, must not be `None`") # noqa: E501 - - self._effect = effect - - @property - def key(self): - """Gets the key of this V1Taint. # noqa: E501 - - Required. The taint key to be applied to a node. # noqa: E501 - - :return: The key of this V1Taint. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1Taint. - - Required. The taint key to be applied to a node. # noqa: E501 - - :param key: The key of this V1Taint. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def time_added(self): - """Gets the time_added of this V1Taint. # noqa: E501 - - TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints. # noqa: E501 - - :return: The time_added of this V1Taint. # noqa: E501 - :rtype: datetime - """ - return self._time_added - - @time_added.setter - def time_added(self, time_added): - """Sets the time_added of this V1Taint. - - TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints. # noqa: E501 - - :param time_added: The time_added of this V1Taint. # noqa: E501 - :type: datetime - """ - - self._time_added = time_added - - @property - def value(self): - """Gets the value of this V1Taint. # noqa: E501 - - The taint value corresponding to the taint key. # noqa: E501 - - :return: The value of this V1Taint. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1Taint. - - The taint value corresponding to the taint key. # noqa: E501 - - :param value: The value of this V1Taint. # noqa: E501 - :type: str - """ - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Taint): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Taint): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_tcp_socket_action.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_tcp_socket_action.py deleted file mode 100644 index 9bf6b7e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_tcp_socket_action.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TCPSocketAction(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'host': 'str', - 'port': 'object' - } - - attribute_map = { - 'host': 'host', - 'port': 'port' - } - - def __init__(self, host=None, port=None, local_vars_configuration=None): # noqa: E501 - """V1TCPSocketAction - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._host = None - self._port = None - self.discriminator = None - - if host is not None: - self.host = host - self.port = port - - @property - def host(self): - """Gets the host of this V1TCPSocketAction. # noqa: E501 - - Optional: Host name to connect to, defaults to the pod IP. # noqa: E501 - - :return: The host of this V1TCPSocketAction. # noqa: E501 - :rtype: str - """ - return self._host - - @host.setter - def host(self, host): - """Sets the host of this V1TCPSocketAction. - - Optional: Host name to connect to, defaults to the pod IP. # noqa: E501 - - :param host: The host of this V1TCPSocketAction. # noqa: E501 - :type: str - """ - - self._host = host - - @property - def port(self): - """Gets the port of this V1TCPSocketAction. # noqa: E501 - - Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. # noqa: E501 - - :return: The port of this V1TCPSocketAction. # noqa: E501 - :rtype: object - """ - return self._port - - @port.setter - def port(self, port): - """Sets the port of this V1TCPSocketAction. - - Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. # noqa: E501 - - :param port: The port of this V1TCPSocketAction. # noqa: E501 - :type: object - """ - if self.local_vars_configuration.client_side_validation and port is None: # noqa: E501 - raise ValueError("Invalid value for `port`, must not be `None`") # noqa: E501 - - self._port = port - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TCPSocketAction): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TCPSocketAction): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_spec.py deleted file mode 100644 index 4a3d777..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_spec.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TokenRequestSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audiences': 'list[str]', - 'bound_object_ref': 'V1BoundObjectReference', - 'expiration_seconds': 'int' - } - - attribute_map = { - 'audiences': 'audiences', - 'bound_object_ref': 'boundObjectRef', - 'expiration_seconds': 'expirationSeconds' - } - - def __init__(self, audiences=None, bound_object_ref=None, expiration_seconds=None, local_vars_configuration=None): # noqa: E501 - """V1TokenRequestSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audiences = None - self._bound_object_ref = None - self._expiration_seconds = None - self.discriminator = None - - self.audiences = audiences - if bound_object_ref is not None: - self.bound_object_ref = bound_object_ref - if expiration_seconds is not None: - self.expiration_seconds = expiration_seconds - - @property - def audiences(self): - """Gets the audiences of this V1TokenRequestSpec. # noqa: E501 - - Audiences are the intendend audiences of the token. A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences. # noqa: E501 - - :return: The audiences of this V1TokenRequestSpec. # noqa: E501 - :rtype: list[str] - """ - return self._audiences - - @audiences.setter - def audiences(self, audiences): - """Sets the audiences of this V1TokenRequestSpec. - - Audiences are the intendend audiences of the token. A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences. # noqa: E501 - - :param audiences: The audiences of this V1TokenRequestSpec. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and audiences is None: # noqa: E501 - raise ValueError("Invalid value for `audiences`, must not be `None`") # noqa: E501 - - self._audiences = audiences - - @property - def bound_object_ref(self): - """Gets the bound_object_ref of this V1TokenRequestSpec. # noqa: E501 - - - :return: The bound_object_ref of this V1TokenRequestSpec. # noqa: E501 - :rtype: V1BoundObjectReference - """ - return self._bound_object_ref - - @bound_object_ref.setter - def bound_object_ref(self, bound_object_ref): - """Sets the bound_object_ref of this V1TokenRequestSpec. - - - :param bound_object_ref: The bound_object_ref of this V1TokenRequestSpec. # noqa: E501 - :type: V1BoundObjectReference - """ - - self._bound_object_ref = bound_object_ref - - @property - def expiration_seconds(self): - """Gets the expiration_seconds of this V1TokenRequestSpec. # noqa: E501 - - ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response. # noqa: E501 - - :return: The expiration_seconds of this V1TokenRequestSpec. # noqa: E501 - :rtype: int - """ - return self._expiration_seconds - - @expiration_seconds.setter - def expiration_seconds(self, expiration_seconds): - """Sets the expiration_seconds of this V1TokenRequestSpec. - - ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response. # noqa: E501 - - :param expiration_seconds: The expiration_seconds of this V1TokenRequestSpec. # noqa: E501 - :type: int - """ - - self._expiration_seconds = expiration_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TokenRequestSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TokenRequestSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_status.py deleted file mode 100644 index d1e7bf9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_request_status.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TokenRequestStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expiration_timestamp': 'datetime', - 'token': 'str' - } - - attribute_map = { - 'expiration_timestamp': 'expirationTimestamp', - 'token': 'token' - } - - def __init__(self, expiration_timestamp=None, token=None, local_vars_configuration=None): # noqa: E501 - """V1TokenRequestStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expiration_timestamp = None - self._token = None - self.discriminator = None - - self.expiration_timestamp = expiration_timestamp - self.token = token - - @property - def expiration_timestamp(self): - """Gets the expiration_timestamp of this V1TokenRequestStatus. # noqa: E501 - - ExpirationTimestamp is the time of expiration of the returned token. # noqa: E501 - - :return: The expiration_timestamp of this V1TokenRequestStatus. # noqa: E501 - :rtype: datetime - """ - return self._expiration_timestamp - - @expiration_timestamp.setter - def expiration_timestamp(self, expiration_timestamp): - """Sets the expiration_timestamp of this V1TokenRequestStatus. - - ExpirationTimestamp is the time of expiration of the returned token. # noqa: E501 - - :param expiration_timestamp: The expiration_timestamp of this V1TokenRequestStatus. # noqa: E501 - :type: datetime - """ - if self.local_vars_configuration.client_side_validation and expiration_timestamp is None: # noqa: E501 - raise ValueError("Invalid value for `expiration_timestamp`, must not be `None`") # noqa: E501 - - self._expiration_timestamp = expiration_timestamp - - @property - def token(self): - """Gets the token of this V1TokenRequestStatus. # noqa: E501 - - Token is the opaque bearer token. # noqa: E501 - - :return: The token of this V1TokenRequestStatus. # noqa: E501 - :rtype: str - """ - return self._token - - @token.setter - def token(self, token): - """Sets the token of this V1TokenRequestStatus. - - Token is the opaque bearer token. # noqa: E501 - - :param token: The token of this V1TokenRequestStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and token is None: # noqa: E501 - raise ValueError("Invalid value for `token`, must not be `None`") # noqa: E501 - - self._token = token - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TokenRequestStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TokenRequestStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review.py deleted file mode 100644 index fe8300c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TokenReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1TokenReviewSpec', - 'status': 'V1TokenReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1TokenReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1TokenReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1TokenReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1TokenReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1TokenReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1TokenReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1TokenReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1TokenReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1TokenReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1TokenReview. # noqa: E501 - - - :return: The metadata of this V1TokenReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1TokenReview. - - - :param metadata: The metadata of this V1TokenReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1TokenReview. # noqa: E501 - - - :return: The spec of this V1TokenReview. # noqa: E501 - :rtype: V1TokenReviewSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1TokenReview. - - - :param spec: The spec of this V1TokenReview. # noqa: E501 - :type: V1TokenReviewSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1TokenReview. # noqa: E501 - - - :return: The status of this V1TokenReview. # noqa: E501 - :rtype: V1TokenReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1TokenReview. - - - :param status: The status of this V1TokenReview. # noqa: E501 - :type: V1TokenReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TokenReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TokenReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_spec.py deleted file mode 100644 index 4a15515..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_spec.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TokenReviewSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audiences': 'list[str]', - 'token': 'str' - } - - attribute_map = { - 'audiences': 'audiences', - 'token': 'token' - } - - def __init__(self, audiences=None, token=None, local_vars_configuration=None): # noqa: E501 - """V1TokenReviewSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audiences = None - self._token = None - self.discriminator = None - - if audiences is not None: - self.audiences = audiences - if token is not None: - self.token = token - - @property - def audiences(self): - """Gets the audiences of this V1TokenReviewSpec. # noqa: E501 - - Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver. # noqa: E501 - - :return: The audiences of this V1TokenReviewSpec. # noqa: E501 - :rtype: list[str] - """ - return self._audiences - - @audiences.setter - def audiences(self, audiences): - """Sets the audiences of this V1TokenReviewSpec. - - Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver. # noqa: E501 - - :param audiences: The audiences of this V1TokenReviewSpec. # noqa: E501 - :type: list[str] - """ - - self._audiences = audiences - - @property - def token(self): - """Gets the token of this V1TokenReviewSpec. # noqa: E501 - - Token is the opaque bearer token. # noqa: E501 - - :return: The token of this V1TokenReviewSpec. # noqa: E501 - :rtype: str - """ - return self._token - - @token.setter - def token(self, token): - """Sets the token of this V1TokenReviewSpec. - - Token is the opaque bearer token. # noqa: E501 - - :param token: The token of this V1TokenReviewSpec. # noqa: E501 - :type: str - """ - - self._token = token - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TokenReviewSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TokenReviewSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_status.py deleted file mode 100644 index 6b8e5d6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_token_review_status.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TokenReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audiences': 'list[str]', - 'authenticated': 'bool', - 'error': 'str', - 'user': 'V1UserInfo' - } - - attribute_map = { - 'audiences': 'audiences', - 'authenticated': 'authenticated', - 'error': 'error', - 'user': 'user' - } - - def __init__(self, audiences=None, authenticated=None, error=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1TokenReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audiences = None - self._authenticated = None - self._error = None - self._user = None - self.discriminator = None - - if audiences is not None: - self.audiences = audiences - if authenticated is not None: - self.authenticated = authenticated - if error is not None: - self.error = error - if user is not None: - self.user = user - - @property - def audiences(self): - """Gets the audiences of this V1TokenReviewStatus. # noqa: E501 - - Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server. # noqa: E501 - - :return: The audiences of this V1TokenReviewStatus. # noqa: E501 - :rtype: list[str] - """ - return self._audiences - - @audiences.setter - def audiences(self, audiences): - """Sets the audiences of this V1TokenReviewStatus. - - Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server. # noqa: E501 - - :param audiences: The audiences of this V1TokenReviewStatus. # noqa: E501 - :type: list[str] - """ - - self._audiences = audiences - - @property - def authenticated(self): - """Gets the authenticated of this V1TokenReviewStatus. # noqa: E501 - - Authenticated indicates that the token was associated with a known user. # noqa: E501 - - :return: The authenticated of this V1TokenReviewStatus. # noqa: E501 - :rtype: bool - """ - return self._authenticated - - @authenticated.setter - def authenticated(self, authenticated): - """Sets the authenticated of this V1TokenReviewStatus. - - Authenticated indicates that the token was associated with a known user. # noqa: E501 - - :param authenticated: The authenticated of this V1TokenReviewStatus. # noqa: E501 - :type: bool - """ - - self._authenticated = authenticated - - @property - def error(self): - """Gets the error of this V1TokenReviewStatus. # noqa: E501 - - Error indicates that the token couldn't be checked # noqa: E501 - - :return: The error of this V1TokenReviewStatus. # noqa: E501 - :rtype: str - """ - return self._error - - @error.setter - def error(self, error): - """Sets the error of this V1TokenReviewStatus. - - Error indicates that the token couldn't be checked # noqa: E501 - - :param error: The error of this V1TokenReviewStatus. # noqa: E501 - :type: str - """ - - self._error = error - - @property - def user(self): - """Gets the user of this V1TokenReviewStatus. # noqa: E501 - - - :return: The user of this V1TokenReviewStatus. # noqa: E501 - :rtype: V1UserInfo - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1TokenReviewStatus. - - - :param user: The user of this V1TokenReviewStatus. # noqa: E501 - :type: V1UserInfo - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TokenReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TokenReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_toleration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_toleration.py deleted file mode 100644 index 91c0be5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_toleration.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Toleration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'effect': 'str', - 'key': 'str', - 'operator': 'str', - 'toleration_seconds': 'int', - 'value': 'str' - } - - attribute_map = { - 'effect': 'effect', - 'key': 'key', - 'operator': 'operator', - 'toleration_seconds': 'tolerationSeconds', - 'value': 'value' - } - - def __init__(self, effect=None, key=None, operator=None, toleration_seconds=None, value=None, local_vars_configuration=None): # noqa: E501 - """V1Toleration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._effect = None - self._key = None - self._operator = None - self._toleration_seconds = None - self._value = None - self.discriminator = None - - if effect is not None: - self.effect = effect - if key is not None: - self.key = key - if operator is not None: - self.operator = operator - if toleration_seconds is not None: - self.toleration_seconds = toleration_seconds - if value is not None: - self.value = value - - @property - def effect(self): - """Gets the effect of this V1Toleration. # noqa: E501 - - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. # noqa: E501 - - :return: The effect of this V1Toleration. # noqa: E501 - :rtype: str - """ - return self._effect - - @effect.setter - def effect(self, effect): - """Sets the effect of this V1Toleration. - - Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. # noqa: E501 - - :param effect: The effect of this V1Toleration. # noqa: E501 - :type: str - """ - - self._effect = effect - - @property - def key(self): - """Gets the key of this V1Toleration. # noqa: E501 - - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. # noqa: E501 - - :return: The key of this V1Toleration. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1Toleration. - - Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. # noqa: E501 - - :param key: The key of this V1Toleration. # noqa: E501 - :type: str - """ - - self._key = key - - @property - def operator(self): - """Gets the operator of this V1Toleration. # noqa: E501 - - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. # noqa: E501 - - :return: The operator of this V1Toleration. # noqa: E501 - :rtype: str - """ - return self._operator - - @operator.setter - def operator(self, operator): - """Sets the operator of this V1Toleration. - - Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. # noqa: E501 - - :param operator: The operator of this V1Toleration. # noqa: E501 - :type: str - """ - - self._operator = operator - - @property - def toleration_seconds(self): - """Gets the toleration_seconds of this V1Toleration. # noqa: E501 - - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. # noqa: E501 - - :return: The toleration_seconds of this V1Toleration. # noqa: E501 - :rtype: int - """ - return self._toleration_seconds - - @toleration_seconds.setter - def toleration_seconds(self, toleration_seconds): - """Sets the toleration_seconds of this V1Toleration. - - TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. # noqa: E501 - - :param toleration_seconds: The toleration_seconds of this V1Toleration. # noqa: E501 - :type: int - """ - - self._toleration_seconds = toleration_seconds - - @property - def value(self): - """Gets the value of this V1Toleration. # noqa: E501 - - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. # noqa: E501 - - :return: The value of this V1Toleration. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V1Toleration. - - Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. # noqa: E501 - - :param value: The value of this V1Toleration. # noqa: E501 - :type: str - """ - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Toleration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Toleration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_label_requirement.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_label_requirement.py deleted file mode 100644 index e0aa2af..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_label_requirement.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TopologySelectorLabelRequirement(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'values': 'list[str]' - } - - attribute_map = { - 'key': 'key', - 'values': 'values' - } - - def __init__(self, key=None, values=None, local_vars_configuration=None): # noqa: E501 - """V1TopologySelectorLabelRequirement - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._values = None - self.discriminator = None - - self.key = key - self.values = values - - @property - def key(self): - """Gets the key of this V1TopologySelectorLabelRequirement. # noqa: E501 - - The label key that the selector applies to. # noqa: E501 - - :return: The key of this V1TopologySelectorLabelRequirement. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1TopologySelectorLabelRequirement. - - The label key that the selector applies to. # noqa: E501 - - :param key: The key of this V1TopologySelectorLabelRequirement. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def values(self): - """Gets the values of this V1TopologySelectorLabelRequirement. # noqa: E501 - - An array of string values. One value must match the label to be selected. Each entry in Values is ORed. # noqa: E501 - - :return: The values of this V1TopologySelectorLabelRequirement. # noqa: E501 - :rtype: list[str] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this V1TopologySelectorLabelRequirement. - - An array of string values. One value must match the label to be selected. Each entry in Values is ORed. # noqa: E501 - - :param values: The values of this V1TopologySelectorLabelRequirement. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and values is None: # noqa: E501 - raise ValueError("Invalid value for `values`, must not be `None`") # noqa: E501 - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TopologySelectorLabelRequirement): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TopologySelectorLabelRequirement): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_term.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_term.py deleted file mode 100644 index d211048..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_selector_term.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TopologySelectorTerm(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_label_expressions': 'list[V1TopologySelectorLabelRequirement]' - } - - attribute_map = { - 'match_label_expressions': 'matchLabelExpressions' - } - - def __init__(self, match_label_expressions=None, local_vars_configuration=None): # noqa: E501 - """V1TopologySelectorTerm - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_label_expressions = None - self.discriminator = None - - if match_label_expressions is not None: - self.match_label_expressions = match_label_expressions - - @property - def match_label_expressions(self): - """Gets the match_label_expressions of this V1TopologySelectorTerm. # noqa: E501 - - A list of topology selector requirements by labels. # noqa: E501 - - :return: The match_label_expressions of this V1TopologySelectorTerm. # noqa: E501 - :rtype: list[V1TopologySelectorLabelRequirement] - """ - return self._match_label_expressions - - @match_label_expressions.setter - def match_label_expressions(self, match_label_expressions): - """Sets the match_label_expressions of this V1TopologySelectorTerm. - - A list of topology selector requirements by labels. # noqa: E501 - - :param match_label_expressions: The match_label_expressions of this V1TopologySelectorTerm. # noqa: E501 - :type: list[V1TopologySelectorLabelRequirement] - """ - - self._match_label_expressions = match_label_expressions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TopologySelectorTerm): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TopologySelectorTerm): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_spread_constraint.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_spread_constraint.py deleted file mode 100644 index d3b6f6a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_topology_spread_constraint.py +++ /dev/null @@ -1,319 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TopologySpreadConstraint(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'label_selector': 'V1LabelSelector', - 'match_label_keys': 'list[str]', - 'max_skew': 'int', - 'min_domains': 'int', - 'node_affinity_policy': 'str', - 'node_taints_policy': 'str', - 'topology_key': 'str', - 'when_unsatisfiable': 'str' - } - - attribute_map = { - 'label_selector': 'labelSelector', - 'match_label_keys': 'matchLabelKeys', - 'max_skew': 'maxSkew', - 'min_domains': 'minDomains', - 'node_affinity_policy': 'nodeAffinityPolicy', - 'node_taints_policy': 'nodeTaintsPolicy', - 'topology_key': 'topologyKey', - 'when_unsatisfiable': 'whenUnsatisfiable' - } - - def __init__(self, label_selector=None, match_label_keys=None, max_skew=None, min_domains=None, node_affinity_policy=None, node_taints_policy=None, topology_key=None, when_unsatisfiable=None, local_vars_configuration=None): # noqa: E501 - """V1TopologySpreadConstraint - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._label_selector = None - self._match_label_keys = None - self._max_skew = None - self._min_domains = None - self._node_affinity_policy = None - self._node_taints_policy = None - self._topology_key = None - self._when_unsatisfiable = None - self.discriminator = None - - if label_selector is not None: - self.label_selector = label_selector - if match_label_keys is not None: - self.match_label_keys = match_label_keys - self.max_skew = max_skew - if min_domains is not None: - self.min_domains = min_domains - if node_affinity_policy is not None: - self.node_affinity_policy = node_affinity_policy - if node_taints_policy is not None: - self.node_taints_policy = node_taints_policy - self.topology_key = topology_key - self.when_unsatisfiable = when_unsatisfiable - - @property - def label_selector(self): - """Gets the label_selector of this V1TopologySpreadConstraint. # noqa: E501 - - - :return: The label_selector of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._label_selector - - @label_selector.setter - def label_selector(self, label_selector): - """Sets the label_selector of this V1TopologySpreadConstraint. - - - :param label_selector: The label_selector of this V1TopologySpreadConstraint. # noqa: E501 - :type: V1LabelSelector - """ - - self._label_selector = label_selector - - @property - def match_label_keys(self): - """Gets the match_label_keys of this V1TopologySpreadConstraint. # noqa: E501 - - MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). # noqa: E501 - - :return: The match_label_keys of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: list[str] - """ - return self._match_label_keys - - @match_label_keys.setter - def match_label_keys(self, match_label_keys): - """Sets the match_label_keys of this V1TopologySpreadConstraint. - - MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). # noqa: E501 - - :param match_label_keys: The match_label_keys of this V1TopologySpreadConstraint. # noqa: E501 - :type: list[str] - """ - - self._match_label_keys = match_label_keys - - @property - def max_skew(self): - """Gets the max_skew of this V1TopologySpreadConstraint. # noqa: E501 - - MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed. # noqa: E501 - - :return: The max_skew of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: int - """ - return self._max_skew - - @max_skew.setter - def max_skew(self, max_skew): - """Sets the max_skew of this V1TopologySpreadConstraint. - - MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed. # noqa: E501 - - :param max_skew: The max_skew of this V1TopologySpreadConstraint. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and max_skew is None: # noqa: E501 - raise ValueError("Invalid value for `max_skew`, must not be `None`") # noqa: E501 - - self._max_skew = max_skew - - @property - def min_domains(self): - """Gets the min_domains of this V1TopologySpreadConstraint. # noqa: E501 - - MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). # noqa: E501 - - :return: The min_domains of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: int - """ - return self._min_domains - - @min_domains.setter - def min_domains(self, min_domains): - """Sets the min_domains of this V1TopologySpreadConstraint. - - MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). # noqa: E501 - - :param min_domains: The min_domains of this V1TopologySpreadConstraint. # noqa: E501 - :type: int - """ - - self._min_domains = min_domains - - @property - def node_affinity_policy(self): - """Gets the node_affinity_policy of this V1TopologySpreadConstraint. # noqa: E501 - - NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. # noqa: E501 - - :return: The node_affinity_policy of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: str - """ - return self._node_affinity_policy - - @node_affinity_policy.setter - def node_affinity_policy(self, node_affinity_policy): - """Sets the node_affinity_policy of this V1TopologySpreadConstraint. - - NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. # noqa: E501 - - :param node_affinity_policy: The node_affinity_policy of this V1TopologySpreadConstraint. # noqa: E501 - :type: str - """ - - self._node_affinity_policy = node_affinity_policy - - @property - def node_taints_policy(self): - """Gets the node_taints_policy of this V1TopologySpreadConstraint. # noqa: E501 - - NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. # noqa: E501 - - :return: The node_taints_policy of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: str - """ - return self._node_taints_policy - - @node_taints_policy.setter - def node_taints_policy(self, node_taints_policy): - """Sets the node_taints_policy of this V1TopologySpreadConstraint. - - NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. # noqa: E501 - - :param node_taints_policy: The node_taints_policy of this V1TopologySpreadConstraint. # noqa: E501 - :type: str - """ - - self._node_taints_policy = node_taints_policy - - @property - def topology_key(self): - """Gets the topology_key of this V1TopologySpreadConstraint. # noqa: E501 - - TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field. # noqa: E501 - - :return: The topology_key of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: str - """ - return self._topology_key - - @topology_key.setter - def topology_key(self, topology_key): - """Sets the topology_key of this V1TopologySpreadConstraint. - - TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field. # noqa: E501 - - :param topology_key: The topology_key of this V1TopologySpreadConstraint. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and topology_key is None: # noqa: E501 - raise ValueError("Invalid value for `topology_key`, must not be `None`") # noqa: E501 - - self._topology_key = topology_key - - @property - def when_unsatisfiable(self): - """Gets the when_unsatisfiable of this V1TopologySpreadConstraint. # noqa: E501 - - WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field. # noqa: E501 - - :return: The when_unsatisfiable of this V1TopologySpreadConstraint. # noqa: E501 - :rtype: str - """ - return self._when_unsatisfiable - - @when_unsatisfiable.setter - def when_unsatisfiable(self, when_unsatisfiable): - """Sets the when_unsatisfiable of this V1TopologySpreadConstraint. - - WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field. # noqa: E501 - - :param when_unsatisfiable: The when_unsatisfiable of this V1TopologySpreadConstraint. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and when_unsatisfiable is None: # noqa: E501 - raise ValueError("Invalid value for `when_unsatisfiable`, must not be `None`") # noqa: E501 - - self._when_unsatisfiable = when_unsatisfiable - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TopologySpreadConstraint): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TopologySpreadConstraint): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_local_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_local_object_reference.py deleted file mode 100644 index 9232fd1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_local_object_reference.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TypedLocalObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name' - } - - def __init__(self, api_group=None, kind=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1TypedLocalObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - - @property - def api_group(self): - """Gets the api_group of this V1TypedLocalObjectReference. # noqa: E501 - - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :return: The api_group of this V1TypedLocalObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1TypedLocalObjectReference. - - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :param api_group: The api_group of this V1TypedLocalObjectReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1TypedLocalObjectReference. # noqa: E501 - - Kind is the type of resource being referenced # noqa: E501 - - :return: The kind of this V1TypedLocalObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1TypedLocalObjectReference. - - Kind is the type of resource being referenced # noqa: E501 - - :param kind: The kind of this V1TypedLocalObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1TypedLocalObjectReference. # noqa: E501 - - Name is the name of resource being referenced # noqa: E501 - - :return: The name of this V1TypedLocalObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1TypedLocalObjectReference. - - Name is the name of resource being referenced # noqa: E501 - - :param name: The name of this V1TypedLocalObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TypedLocalObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TypedLocalObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_object_reference.py deleted file mode 100644 index 71849fa..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_typed_object_reference.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1TypedObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, api_group=None, kind=None, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1TypedObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self._namespace = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - if namespace is not None: - self.namespace = namespace - - @property - def api_group(self): - """Gets the api_group of this V1TypedObjectReference. # noqa: E501 - - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :return: The api_group of this V1TypedObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1TypedObjectReference. - - APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. # noqa: E501 - - :param api_group: The api_group of this V1TypedObjectReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1TypedObjectReference. # noqa: E501 - - Kind is the type of resource being referenced # noqa: E501 - - :return: The kind of this V1TypedObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1TypedObjectReference. - - Kind is the type of resource being referenced # noqa: E501 - - :param kind: The kind of this V1TypedObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1TypedObjectReference. # noqa: E501 - - Name is the name of resource being referenced # noqa: E501 - - :return: The name of this V1TypedObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1TypedObjectReference. - - Name is the name of resource being referenced # noqa: E501 - - :param name: The name of this V1TypedObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1TypedObjectReference. # noqa: E501 - - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. # noqa: E501 - - :return: The namespace of this V1TypedObjectReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1TypedObjectReference. - - Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. # noqa: E501 - - :param namespace: The namespace of this V1TypedObjectReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1TypedObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1TypedObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_uncounted_terminated_pods.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_uncounted_terminated_pods.py deleted file mode 100644 index a87874c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_uncounted_terminated_pods.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1UncountedTerminatedPods(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'failed': 'list[str]', - 'succeeded': 'list[str]' - } - - attribute_map = { - 'failed': 'failed', - 'succeeded': 'succeeded' - } - - def __init__(self, failed=None, succeeded=None, local_vars_configuration=None): # noqa: E501 - """V1UncountedTerminatedPods - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._failed = None - self._succeeded = None - self.discriminator = None - - if failed is not None: - self.failed = failed - if succeeded is not None: - self.succeeded = succeeded - - @property - def failed(self): - """Gets the failed of this V1UncountedTerminatedPods. # noqa: E501 - - failed holds UIDs of failed Pods. # noqa: E501 - - :return: The failed of this V1UncountedTerminatedPods. # noqa: E501 - :rtype: list[str] - """ - return self._failed - - @failed.setter - def failed(self, failed): - """Sets the failed of this V1UncountedTerminatedPods. - - failed holds UIDs of failed Pods. # noqa: E501 - - :param failed: The failed of this V1UncountedTerminatedPods. # noqa: E501 - :type: list[str] - """ - - self._failed = failed - - @property - def succeeded(self): - """Gets the succeeded of this V1UncountedTerminatedPods. # noqa: E501 - - succeeded holds UIDs of succeeded Pods. # noqa: E501 - - :return: The succeeded of this V1UncountedTerminatedPods. # noqa: E501 - :rtype: list[str] - """ - return self._succeeded - - @succeeded.setter - def succeeded(self, succeeded): - """Sets the succeeded of this V1UncountedTerminatedPods. - - succeeded holds UIDs of succeeded Pods. # noqa: E501 - - :param succeeded: The succeeded of this V1UncountedTerminatedPods. # noqa: E501 - :type: list[str] - """ - - self._succeeded = succeeded - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1UncountedTerminatedPods): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1UncountedTerminatedPods): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_info.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_info.py deleted file mode 100644 index a886a90..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_info.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1UserInfo(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'extra': 'dict(str, list[str])', - 'groups': 'list[str]', - 'uid': 'str', - 'username': 'str' - } - - attribute_map = { - 'extra': 'extra', - 'groups': 'groups', - 'uid': 'uid', - 'username': 'username' - } - - def __init__(self, extra=None, groups=None, uid=None, username=None, local_vars_configuration=None): # noqa: E501 - """V1UserInfo - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._extra = None - self._groups = None - self._uid = None - self._username = None - self.discriminator = None - - if extra is not None: - self.extra = extra - if groups is not None: - self.groups = groups - if uid is not None: - self.uid = uid - if username is not None: - self.username = username - - @property - def extra(self): - """Gets the extra of this V1UserInfo. # noqa: E501 - - Any additional information provided by the authenticator. # noqa: E501 - - :return: The extra of this V1UserInfo. # noqa: E501 - :rtype: dict(str, list[str]) - """ - return self._extra - - @extra.setter - def extra(self, extra): - """Sets the extra of this V1UserInfo. - - Any additional information provided by the authenticator. # noqa: E501 - - :param extra: The extra of this V1UserInfo. # noqa: E501 - :type: dict(str, list[str]) - """ - - self._extra = extra - - @property - def groups(self): - """Gets the groups of this V1UserInfo. # noqa: E501 - - The names of groups this user is a part of. # noqa: E501 - - :return: The groups of this V1UserInfo. # noqa: E501 - :rtype: list[str] - """ - return self._groups - - @groups.setter - def groups(self, groups): - """Sets the groups of this V1UserInfo. - - The names of groups this user is a part of. # noqa: E501 - - :param groups: The groups of this V1UserInfo. # noqa: E501 - :type: list[str] - """ - - self._groups = groups - - @property - def uid(self): - """Gets the uid of this V1UserInfo. # noqa: E501 - - A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs. # noqa: E501 - - :return: The uid of this V1UserInfo. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1UserInfo. - - A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs. # noqa: E501 - - :param uid: The uid of this V1UserInfo. # noqa: E501 - :type: str - """ - - self._uid = uid - - @property - def username(self): - """Gets the username of this V1UserInfo. # noqa: E501 - - The name that uniquely identifies this user among all active users. # noqa: E501 - - :return: The username of this V1UserInfo. # noqa: E501 - :rtype: str - """ - return self._username - - @username.setter - def username(self, username): - """Sets the username of this V1UserInfo. - - The name that uniquely identifies this user among all active users. # noqa: E501 - - :param username: The username of this V1UserInfo. # noqa: E501 - :type: str - """ - - self._username = username - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1UserInfo): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1UserInfo): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_subject.py deleted file mode 100644 index ad2f1c9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_user_subject.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1UserSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1UserSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1UserSubject. # noqa: E501 - - `name` is the username that matches, or \"*\" to match all usernames. Required. # noqa: E501 - - :return: The name of this V1UserSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1UserSubject. - - `name` is the username that matches, or \"*\" to match all usernames. Required. # noqa: E501 - - :param name: The name of this V1UserSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1UserSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1UserSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook.py deleted file mode 100644 index 3f90213..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook.py +++ /dev/null @@ -1,400 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ValidatingWebhook(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'admission_review_versions': 'list[str]', - 'client_config': 'AdmissionregistrationV1WebhookClientConfig', - 'failure_policy': 'str', - 'match_conditions': 'list[V1MatchCondition]', - 'match_policy': 'str', - 'name': 'str', - 'namespace_selector': 'V1LabelSelector', - 'object_selector': 'V1LabelSelector', - 'rules': 'list[V1RuleWithOperations]', - 'side_effects': 'str', - 'timeout_seconds': 'int' - } - - attribute_map = { - 'admission_review_versions': 'admissionReviewVersions', - 'client_config': 'clientConfig', - 'failure_policy': 'failurePolicy', - 'match_conditions': 'matchConditions', - 'match_policy': 'matchPolicy', - 'name': 'name', - 'namespace_selector': 'namespaceSelector', - 'object_selector': 'objectSelector', - 'rules': 'rules', - 'side_effects': 'sideEffects', - 'timeout_seconds': 'timeoutSeconds' - } - - def __init__(self, admission_review_versions=None, client_config=None, failure_policy=None, match_conditions=None, match_policy=None, name=None, namespace_selector=None, object_selector=None, rules=None, side_effects=None, timeout_seconds=None, local_vars_configuration=None): # noqa: E501 - """V1ValidatingWebhook - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._admission_review_versions = None - self._client_config = None - self._failure_policy = None - self._match_conditions = None - self._match_policy = None - self._name = None - self._namespace_selector = None - self._object_selector = None - self._rules = None - self._side_effects = None - self._timeout_seconds = None - self.discriminator = None - - self.admission_review_versions = admission_review_versions - self.client_config = client_config - if failure_policy is not None: - self.failure_policy = failure_policy - if match_conditions is not None: - self.match_conditions = match_conditions - if match_policy is not None: - self.match_policy = match_policy - self.name = name - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if object_selector is not None: - self.object_selector = object_selector - if rules is not None: - self.rules = rules - self.side_effects = side_effects - if timeout_seconds is not None: - self.timeout_seconds = timeout_seconds - - @property - def admission_review_versions(self): - """Gets the admission_review_versions of this V1ValidatingWebhook. # noqa: E501 - - AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. # noqa: E501 - - :return: The admission_review_versions of this V1ValidatingWebhook. # noqa: E501 - :rtype: list[str] - """ - return self._admission_review_versions - - @admission_review_versions.setter - def admission_review_versions(self, admission_review_versions): - """Sets the admission_review_versions of this V1ValidatingWebhook. - - AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. # noqa: E501 - - :param admission_review_versions: The admission_review_versions of this V1ValidatingWebhook. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and admission_review_versions is None: # noqa: E501 - raise ValueError("Invalid value for `admission_review_versions`, must not be `None`") # noqa: E501 - - self._admission_review_versions = admission_review_versions - - @property - def client_config(self): - """Gets the client_config of this V1ValidatingWebhook. # noqa: E501 - - - :return: The client_config of this V1ValidatingWebhook. # noqa: E501 - :rtype: AdmissionregistrationV1WebhookClientConfig - """ - return self._client_config - - @client_config.setter - def client_config(self, client_config): - """Sets the client_config of this V1ValidatingWebhook. - - - :param client_config: The client_config of this V1ValidatingWebhook. # noqa: E501 - :type: AdmissionregistrationV1WebhookClientConfig - """ - if self.local_vars_configuration.client_side_validation and client_config is None: # noqa: E501 - raise ValueError("Invalid value for `client_config`, must not be `None`") # noqa: E501 - - self._client_config = client_config - - @property - def failure_policy(self): - """Gets the failure_policy of this V1ValidatingWebhook. # noqa: E501 - - FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :return: The failure_policy of this V1ValidatingWebhook. # noqa: E501 - :rtype: str - """ - return self._failure_policy - - @failure_policy.setter - def failure_policy(self, failure_policy): - """Sets the failure_policy of this V1ValidatingWebhook. - - FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :param failure_policy: The failure_policy of this V1ValidatingWebhook. # noqa: E501 - :type: str - """ - - self._failure_policy = failure_policy - - @property - def match_conditions(self): - """Gets the match_conditions of this V1ValidatingWebhook. # noqa: E501 - - MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. 2. If ALL matchConditions evaluate to TRUE, the webhook is called. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the error is ignored and the webhook is skipped This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. # noqa: E501 - - :return: The match_conditions of this V1ValidatingWebhook. # noqa: E501 - :rtype: list[V1MatchCondition] - """ - return self._match_conditions - - @match_conditions.setter - def match_conditions(self, match_conditions): - """Sets the match_conditions of this V1ValidatingWebhook. - - MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the webhook is skipped. 2. If ALL matchConditions evaluate to TRUE, the webhook is called. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the error is ignored and the webhook is skipped This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. # noqa: E501 - - :param match_conditions: The match_conditions of this V1ValidatingWebhook. # noqa: E501 - :type: list[V1MatchCondition] - """ - - self._match_conditions = match_conditions - - @property - def match_policy(self): - """Gets the match_policy of this V1ValidatingWebhook. # noqa: E501 - - matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. Defaults to \"Equivalent\" # noqa: E501 - - :return: The match_policy of this V1ValidatingWebhook. # noqa: E501 - :rtype: str - """ - return self._match_policy - - @match_policy.setter - def match_policy(self, match_policy): - """Sets the match_policy of this V1ValidatingWebhook. - - matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook. Defaults to \"Equivalent\" # noqa: E501 - - :param match_policy: The match_policy of this V1ValidatingWebhook. # noqa: E501 - :type: str - """ - - self._match_policy = match_policy - - @property - def name(self): - """Gets the name of this V1ValidatingWebhook. # noqa: E501 - - The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required. # noqa: E501 - - :return: The name of this V1ValidatingWebhook. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1ValidatingWebhook. - - The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required. # noqa: E501 - - :param name: The name of this V1ValidatingWebhook. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1ValidatingWebhook. # noqa: E501 - - - :return: The namespace_selector of this V1ValidatingWebhook. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1ValidatingWebhook. - - - :param namespace_selector: The namespace_selector of this V1ValidatingWebhook. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def object_selector(self): - """Gets the object_selector of this V1ValidatingWebhook. # noqa: E501 - - - :return: The object_selector of this V1ValidatingWebhook. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._object_selector - - @object_selector.setter - def object_selector(self, object_selector): - """Sets the object_selector of this V1ValidatingWebhook. - - - :param object_selector: The object_selector of this V1ValidatingWebhook. # noqa: E501 - :type: V1LabelSelector - """ - - self._object_selector = object_selector - - @property - def rules(self): - """Gets the rules of this V1ValidatingWebhook. # noqa: E501 - - Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. # noqa: E501 - - :return: The rules of this V1ValidatingWebhook. # noqa: E501 - :rtype: list[V1RuleWithOperations] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1ValidatingWebhook. - - Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects. # noqa: E501 - - :param rules: The rules of this V1ValidatingWebhook. # noqa: E501 - :type: list[V1RuleWithOperations] - """ - - self._rules = rules - - @property - def side_effects(self): - """Gets the side_effects of this V1ValidatingWebhook. # noqa: E501 - - SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. # noqa: E501 - - :return: The side_effects of this V1ValidatingWebhook. # noqa: E501 - :rtype: str - """ - return self._side_effects - - @side_effects.setter - def side_effects(self, side_effects): - """Sets the side_effects of this V1ValidatingWebhook. - - SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. # noqa: E501 - - :param side_effects: The side_effects of this V1ValidatingWebhook. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and side_effects is None: # noqa: E501 - raise ValueError("Invalid value for `side_effects`, must not be `None`") # noqa: E501 - - self._side_effects = side_effects - - @property - def timeout_seconds(self): - """Gets the timeout_seconds of this V1ValidatingWebhook. # noqa: E501 - - TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. # noqa: E501 - - :return: The timeout_seconds of this V1ValidatingWebhook. # noqa: E501 - :rtype: int - """ - return self._timeout_seconds - - @timeout_seconds.setter - def timeout_seconds(self, timeout_seconds): - """Sets the timeout_seconds of this V1ValidatingWebhook. - - TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds. # noqa: E501 - - :param timeout_seconds: The timeout_seconds of this V1ValidatingWebhook. # noqa: E501 - :type: int - """ - - self._timeout_seconds = timeout_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ValidatingWebhook): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ValidatingWebhook): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration.py deleted file mode 100644 index de7aca9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ValidatingWebhookConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'webhooks': 'list[V1ValidatingWebhook]' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'webhooks': 'webhooks' - } - - def __init__(self, api_version=None, kind=None, metadata=None, webhooks=None, local_vars_configuration=None): # noqa: E501 - """V1ValidatingWebhookConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._webhooks = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if webhooks is not None: - self.webhooks = webhooks - - @property - def api_version(self): - """Gets the api_version of this V1ValidatingWebhookConfiguration. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ValidatingWebhookConfiguration. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ValidatingWebhookConfiguration. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ValidatingWebhookConfiguration. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1ValidatingWebhookConfiguration. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ValidatingWebhookConfiguration. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ValidatingWebhookConfiguration. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ValidatingWebhookConfiguration. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ValidatingWebhookConfiguration. # noqa: E501 - - - :return: The metadata of this V1ValidatingWebhookConfiguration. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ValidatingWebhookConfiguration. - - - :param metadata: The metadata of this V1ValidatingWebhookConfiguration. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def webhooks(self): - """Gets the webhooks of this V1ValidatingWebhookConfiguration. # noqa: E501 - - Webhooks is a list of webhooks and the affected resources and operations. # noqa: E501 - - :return: The webhooks of this V1ValidatingWebhookConfiguration. # noqa: E501 - :rtype: list[V1ValidatingWebhook] - """ - return self._webhooks - - @webhooks.setter - def webhooks(self, webhooks): - """Sets the webhooks of this V1ValidatingWebhookConfiguration. - - Webhooks is a list of webhooks and the affected resources and operations. # noqa: E501 - - :param webhooks: The webhooks of this V1ValidatingWebhookConfiguration. # noqa: E501 - :type: list[V1ValidatingWebhook] - """ - - self._webhooks = webhooks - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ValidatingWebhookConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ValidatingWebhookConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration_list.py deleted file mode 100644 index e87209a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validating_webhook_configuration_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ValidatingWebhookConfigurationList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1ValidatingWebhookConfiguration]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1ValidatingWebhookConfigurationList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1ValidatingWebhookConfigurationList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1ValidatingWebhookConfigurationList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1ValidatingWebhookConfigurationList. # noqa: E501 - - List of ValidatingWebhookConfiguration. # noqa: E501 - - :return: The items of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :rtype: list[V1ValidatingWebhookConfiguration] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1ValidatingWebhookConfigurationList. - - List of ValidatingWebhookConfiguration. # noqa: E501 - - :param items: The items of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :type: list[V1ValidatingWebhookConfiguration] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1ValidatingWebhookConfigurationList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1ValidatingWebhookConfigurationList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1ValidatingWebhookConfigurationList. # noqa: E501 - - - :return: The metadata of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1ValidatingWebhookConfigurationList. - - - :param metadata: The metadata of this V1ValidatingWebhookConfigurationList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ValidatingWebhookConfigurationList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ValidatingWebhookConfigurationList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validation_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validation_rule.py deleted file mode 100644 index e6159aa..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_validation_rule.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1ValidationRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'field_path': 'str', - 'message': 'str', - 'message_expression': 'str', - 'optional_old_self': 'bool', - 'reason': 'str', - 'rule': 'str' - } - - attribute_map = { - 'field_path': 'fieldPath', - 'message': 'message', - 'message_expression': 'messageExpression', - 'optional_old_self': 'optionalOldSelf', - 'reason': 'reason', - 'rule': 'rule' - } - - def __init__(self, field_path=None, message=None, message_expression=None, optional_old_self=None, reason=None, rule=None, local_vars_configuration=None): # noqa: E501 - """V1ValidationRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._field_path = None - self._message = None - self._message_expression = None - self._optional_old_self = None - self._reason = None - self._rule = None - self.discriminator = None - - if field_path is not None: - self.field_path = field_path - if message is not None: - self.message = message - if message_expression is not None: - self.message_expression = message_expression - if optional_old_self is not None: - self.optional_old_self = optional_old_self - if reason is not None: - self.reason = reason - self.rule = rule - - @property - def field_path(self): - """Gets the field_path of this V1ValidationRule. # noqa: E501 - - fieldPath represents the field path returned when the validation fails. It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` # noqa: E501 - - :return: The field_path of this V1ValidationRule. # noqa: E501 - :rtype: str - """ - return self._field_path - - @field_path.setter - def field_path(self, field_path): - """Sets the field_path of this V1ValidationRule. - - fieldPath represents the field path returned when the validation fails. It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` # noqa: E501 - - :param field_path: The field_path of this V1ValidationRule. # noqa: E501 - :type: str - """ - - self._field_path = field_path - - @property - def message(self): - """Gets the message of this V1ValidationRule. # noqa: E501 - - Message represents the message displayed when validation fails. The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" # noqa: E501 - - :return: The message of this V1ValidationRule. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1ValidationRule. - - Message represents the message displayed when validation fails. The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" # noqa: E501 - - :param message: The message of this V1ValidationRule. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def message_expression(self): - """Gets the message_expression of this V1ValidationRule. # noqa: E501 - - MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: \"x must be less than max (\"+string(self.max)+\")\" # noqa: E501 - - :return: The message_expression of this V1ValidationRule. # noqa: E501 - :rtype: str - """ - return self._message_expression - - @message_expression.setter - def message_expression(self, message_expression): - """Sets the message_expression of this V1ValidationRule. - - MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: \"x must be less than max (\"+string(self.max)+\")\" # noqa: E501 - - :param message_expression: The message_expression of this V1ValidationRule. # noqa: E501 - :type: str - """ - - self._message_expression = message_expression - - @property - def optional_old_self(self): - """Gets the optional_old_self of this V1ValidationRule. # noqa: E501 - - optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value. When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created. You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes May not be set unless `oldSelf` is used in `rule`. # noqa: E501 - - :return: The optional_old_self of this V1ValidationRule. # noqa: E501 - :rtype: bool - """ - return self._optional_old_self - - @optional_old_self.setter - def optional_old_self(self, optional_old_self): - """Sets the optional_old_self of this V1ValidationRule. - - optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value. When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created. You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes May not be set unless `oldSelf` is used in `rule`. # noqa: E501 - - :param optional_old_self: The optional_old_self of this V1ValidationRule. # noqa: E501 - :type: bool - """ - - self._optional_old_self = optional_old_self - - @property - def reason(self): - """Gets the reason of this V1ValidationRule. # noqa: E501 - - reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. # noqa: E501 - - :return: The reason of this V1ValidationRule. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1ValidationRule. - - reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. # noqa: E501 - - :param reason: The reason of this V1ValidationRule. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def rule(self): - """Gets the rule of this V1ValidationRule. # noqa: E501 - - Rule represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {\"rule\": \"self.status.actual <= self.spec.maxDesired\"} If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"} - Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"} The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible. Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as: - A schema with no type and x-kubernetes-preserve-unknown-fields set to true - An array where the items schema is of an \"unknown type\" - An object where the additionalProperties schema is of an \"unknown type\" Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"} - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"} - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"} Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`. By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional variable whose value() is the same type as `self`. See the documentation for the `optionalOldSelf` field for details. Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true. # noqa: E501 - - :return: The rule of this V1ValidationRule. # noqa: E501 - :rtype: str - """ - return self._rule - - @rule.setter - def rule(self, rule): - """Sets the rule of this V1ValidationRule. - - Rule represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {\"rule\": \"self.status.actual <= self.spec.maxDesired\"} If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"} - Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"} The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible. Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as: - A schema with no type and x-kubernetes-preserve-unknown-fields set to true - An array where the items schema is of an \"unknown type\" - An object where the additionalProperties schema is of an \"unknown type\" Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"} - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"} - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"} Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`. By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional variable whose value() is the same type as `self`. See the documentation for the `optionalOldSelf` field for details. Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true. # noqa: E501 - - :param rule: The rule of this V1ValidationRule. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and rule is None: # noqa: E501 - raise ValueError("Invalid value for `rule`, must not be `None`") # noqa: E501 - - self._rule = rule - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1ValidationRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1ValidationRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume.py deleted file mode 100644 index 26d344c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume.py +++ /dev/null @@ -1,877 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1Volume(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'aws_elastic_block_store': 'V1AWSElasticBlockStoreVolumeSource', - 'azure_disk': 'V1AzureDiskVolumeSource', - 'azure_file': 'V1AzureFileVolumeSource', - 'cephfs': 'V1CephFSVolumeSource', - 'cinder': 'V1CinderVolumeSource', - 'config_map': 'V1ConfigMapVolumeSource', - 'csi': 'V1CSIVolumeSource', - 'downward_api': 'V1DownwardAPIVolumeSource', - 'empty_dir': 'V1EmptyDirVolumeSource', - 'ephemeral': 'V1EphemeralVolumeSource', - 'fc': 'V1FCVolumeSource', - 'flex_volume': 'V1FlexVolumeSource', - 'flocker': 'V1FlockerVolumeSource', - 'gce_persistent_disk': 'V1GCEPersistentDiskVolumeSource', - 'git_repo': 'V1GitRepoVolumeSource', - 'glusterfs': 'V1GlusterfsVolumeSource', - 'host_path': 'V1HostPathVolumeSource', - 'iscsi': 'V1ISCSIVolumeSource', - 'name': 'str', - 'nfs': 'V1NFSVolumeSource', - 'persistent_volume_claim': 'V1PersistentVolumeClaimVolumeSource', - 'photon_persistent_disk': 'V1PhotonPersistentDiskVolumeSource', - 'portworx_volume': 'V1PortworxVolumeSource', - 'projected': 'V1ProjectedVolumeSource', - 'quobyte': 'V1QuobyteVolumeSource', - 'rbd': 'V1RBDVolumeSource', - 'scale_io': 'V1ScaleIOVolumeSource', - 'secret': 'V1SecretVolumeSource', - 'storageos': 'V1StorageOSVolumeSource', - 'vsphere_volume': 'V1VsphereVirtualDiskVolumeSource' - } - - attribute_map = { - 'aws_elastic_block_store': 'awsElasticBlockStore', - 'azure_disk': 'azureDisk', - 'azure_file': 'azureFile', - 'cephfs': 'cephfs', - 'cinder': 'cinder', - 'config_map': 'configMap', - 'csi': 'csi', - 'downward_api': 'downwardAPI', - 'empty_dir': 'emptyDir', - 'ephemeral': 'ephemeral', - 'fc': 'fc', - 'flex_volume': 'flexVolume', - 'flocker': 'flocker', - 'gce_persistent_disk': 'gcePersistentDisk', - 'git_repo': 'gitRepo', - 'glusterfs': 'glusterfs', - 'host_path': 'hostPath', - 'iscsi': 'iscsi', - 'name': 'name', - 'nfs': 'nfs', - 'persistent_volume_claim': 'persistentVolumeClaim', - 'photon_persistent_disk': 'photonPersistentDisk', - 'portworx_volume': 'portworxVolume', - 'projected': 'projected', - 'quobyte': 'quobyte', - 'rbd': 'rbd', - 'scale_io': 'scaleIO', - 'secret': 'secret', - 'storageos': 'storageos', - 'vsphere_volume': 'vsphereVolume' - } - - def __init__(self, aws_elastic_block_store=None, azure_disk=None, azure_file=None, cephfs=None, cinder=None, config_map=None, csi=None, downward_api=None, empty_dir=None, ephemeral=None, fc=None, flex_volume=None, flocker=None, gce_persistent_disk=None, git_repo=None, glusterfs=None, host_path=None, iscsi=None, name=None, nfs=None, persistent_volume_claim=None, photon_persistent_disk=None, portworx_volume=None, projected=None, quobyte=None, rbd=None, scale_io=None, secret=None, storageos=None, vsphere_volume=None, local_vars_configuration=None): # noqa: E501 - """V1Volume - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._aws_elastic_block_store = None - self._azure_disk = None - self._azure_file = None - self._cephfs = None - self._cinder = None - self._config_map = None - self._csi = None - self._downward_api = None - self._empty_dir = None - self._ephemeral = None - self._fc = None - self._flex_volume = None - self._flocker = None - self._gce_persistent_disk = None - self._git_repo = None - self._glusterfs = None - self._host_path = None - self._iscsi = None - self._name = None - self._nfs = None - self._persistent_volume_claim = None - self._photon_persistent_disk = None - self._portworx_volume = None - self._projected = None - self._quobyte = None - self._rbd = None - self._scale_io = None - self._secret = None - self._storageos = None - self._vsphere_volume = None - self.discriminator = None - - if aws_elastic_block_store is not None: - self.aws_elastic_block_store = aws_elastic_block_store - if azure_disk is not None: - self.azure_disk = azure_disk - if azure_file is not None: - self.azure_file = azure_file - if cephfs is not None: - self.cephfs = cephfs - if cinder is not None: - self.cinder = cinder - if config_map is not None: - self.config_map = config_map - if csi is not None: - self.csi = csi - if downward_api is not None: - self.downward_api = downward_api - if empty_dir is not None: - self.empty_dir = empty_dir - if ephemeral is not None: - self.ephemeral = ephemeral - if fc is not None: - self.fc = fc - if flex_volume is not None: - self.flex_volume = flex_volume - if flocker is not None: - self.flocker = flocker - if gce_persistent_disk is not None: - self.gce_persistent_disk = gce_persistent_disk - if git_repo is not None: - self.git_repo = git_repo - if glusterfs is not None: - self.glusterfs = glusterfs - if host_path is not None: - self.host_path = host_path - if iscsi is not None: - self.iscsi = iscsi - self.name = name - if nfs is not None: - self.nfs = nfs - if persistent_volume_claim is not None: - self.persistent_volume_claim = persistent_volume_claim - if photon_persistent_disk is not None: - self.photon_persistent_disk = photon_persistent_disk - if portworx_volume is not None: - self.portworx_volume = portworx_volume - if projected is not None: - self.projected = projected - if quobyte is not None: - self.quobyte = quobyte - if rbd is not None: - self.rbd = rbd - if scale_io is not None: - self.scale_io = scale_io - if secret is not None: - self.secret = secret - if storageos is not None: - self.storageos = storageos - if vsphere_volume is not None: - self.vsphere_volume = vsphere_volume - - @property - def aws_elastic_block_store(self): - """Gets the aws_elastic_block_store of this V1Volume. # noqa: E501 - - - :return: The aws_elastic_block_store of this V1Volume. # noqa: E501 - :rtype: V1AWSElasticBlockStoreVolumeSource - """ - return self._aws_elastic_block_store - - @aws_elastic_block_store.setter - def aws_elastic_block_store(self, aws_elastic_block_store): - """Sets the aws_elastic_block_store of this V1Volume. - - - :param aws_elastic_block_store: The aws_elastic_block_store of this V1Volume. # noqa: E501 - :type: V1AWSElasticBlockStoreVolumeSource - """ - - self._aws_elastic_block_store = aws_elastic_block_store - - @property - def azure_disk(self): - """Gets the azure_disk of this V1Volume. # noqa: E501 - - - :return: The azure_disk of this V1Volume. # noqa: E501 - :rtype: V1AzureDiskVolumeSource - """ - return self._azure_disk - - @azure_disk.setter - def azure_disk(self, azure_disk): - """Sets the azure_disk of this V1Volume. - - - :param azure_disk: The azure_disk of this V1Volume. # noqa: E501 - :type: V1AzureDiskVolumeSource - """ - - self._azure_disk = azure_disk - - @property - def azure_file(self): - """Gets the azure_file of this V1Volume. # noqa: E501 - - - :return: The azure_file of this V1Volume. # noqa: E501 - :rtype: V1AzureFileVolumeSource - """ - return self._azure_file - - @azure_file.setter - def azure_file(self, azure_file): - """Sets the azure_file of this V1Volume. - - - :param azure_file: The azure_file of this V1Volume. # noqa: E501 - :type: V1AzureFileVolumeSource - """ - - self._azure_file = azure_file - - @property - def cephfs(self): - """Gets the cephfs of this V1Volume. # noqa: E501 - - - :return: The cephfs of this V1Volume. # noqa: E501 - :rtype: V1CephFSVolumeSource - """ - return self._cephfs - - @cephfs.setter - def cephfs(self, cephfs): - """Sets the cephfs of this V1Volume. - - - :param cephfs: The cephfs of this V1Volume. # noqa: E501 - :type: V1CephFSVolumeSource - """ - - self._cephfs = cephfs - - @property - def cinder(self): - """Gets the cinder of this V1Volume. # noqa: E501 - - - :return: The cinder of this V1Volume. # noqa: E501 - :rtype: V1CinderVolumeSource - """ - return self._cinder - - @cinder.setter - def cinder(self, cinder): - """Sets the cinder of this V1Volume. - - - :param cinder: The cinder of this V1Volume. # noqa: E501 - :type: V1CinderVolumeSource - """ - - self._cinder = cinder - - @property - def config_map(self): - """Gets the config_map of this V1Volume. # noqa: E501 - - - :return: The config_map of this V1Volume. # noqa: E501 - :rtype: V1ConfigMapVolumeSource - """ - return self._config_map - - @config_map.setter - def config_map(self, config_map): - """Sets the config_map of this V1Volume. - - - :param config_map: The config_map of this V1Volume. # noqa: E501 - :type: V1ConfigMapVolumeSource - """ - - self._config_map = config_map - - @property - def csi(self): - """Gets the csi of this V1Volume. # noqa: E501 - - - :return: The csi of this V1Volume. # noqa: E501 - :rtype: V1CSIVolumeSource - """ - return self._csi - - @csi.setter - def csi(self, csi): - """Sets the csi of this V1Volume. - - - :param csi: The csi of this V1Volume. # noqa: E501 - :type: V1CSIVolumeSource - """ - - self._csi = csi - - @property - def downward_api(self): - """Gets the downward_api of this V1Volume. # noqa: E501 - - - :return: The downward_api of this V1Volume. # noqa: E501 - :rtype: V1DownwardAPIVolumeSource - """ - return self._downward_api - - @downward_api.setter - def downward_api(self, downward_api): - """Sets the downward_api of this V1Volume. - - - :param downward_api: The downward_api of this V1Volume. # noqa: E501 - :type: V1DownwardAPIVolumeSource - """ - - self._downward_api = downward_api - - @property - def empty_dir(self): - """Gets the empty_dir of this V1Volume. # noqa: E501 - - - :return: The empty_dir of this V1Volume. # noqa: E501 - :rtype: V1EmptyDirVolumeSource - """ - return self._empty_dir - - @empty_dir.setter - def empty_dir(self, empty_dir): - """Sets the empty_dir of this V1Volume. - - - :param empty_dir: The empty_dir of this V1Volume. # noqa: E501 - :type: V1EmptyDirVolumeSource - """ - - self._empty_dir = empty_dir - - @property - def ephemeral(self): - """Gets the ephemeral of this V1Volume. # noqa: E501 - - - :return: The ephemeral of this V1Volume. # noqa: E501 - :rtype: V1EphemeralVolumeSource - """ - return self._ephemeral - - @ephemeral.setter - def ephemeral(self, ephemeral): - """Sets the ephemeral of this V1Volume. - - - :param ephemeral: The ephemeral of this V1Volume. # noqa: E501 - :type: V1EphemeralVolumeSource - """ - - self._ephemeral = ephemeral - - @property - def fc(self): - """Gets the fc of this V1Volume. # noqa: E501 - - - :return: The fc of this V1Volume. # noqa: E501 - :rtype: V1FCVolumeSource - """ - return self._fc - - @fc.setter - def fc(self, fc): - """Sets the fc of this V1Volume. - - - :param fc: The fc of this V1Volume. # noqa: E501 - :type: V1FCVolumeSource - """ - - self._fc = fc - - @property - def flex_volume(self): - """Gets the flex_volume of this V1Volume. # noqa: E501 - - - :return: The flex_volume of this V1Volume. # noqa: E501 - :rtype: V1FlexVolumeSource - """ - return self._flex_volume - - @flex_volume.setter - def flex_volume(self, flex_volume): - """Sets the flex_volume of this V1Volume. - - - :param flex_volume: The flex_volume of this V1Volume. # noqa: E501 - :type: V1FlexVolumeSource - """ - - self._flex_volume = flex_volume - - @property - def flocker(self): - """Gets the flocker of this V1Volume. # noqa: E501 - - - :return: The flocker of this V1Volume. # noqa: E501 - :rtype: V1FlockerVolumeSource - """ - return self._flocker - - @flocker.setter - def flocker(self, flocker): - """Sets the flocker of this V1Volume. - - - :param flocker: The flocker of this V1Volume. # noqa: E501 - :type: V1FlockerVolumeSource - """ - - self._flocker = flocker - - @property - def gce_persistent_disk(self): - """Gets the gce_persistent_disk of this V1Volume. # noqa: E501 - - - :return: The gce_persistent_disk of this V1Volume. # noqa: E501 - :rtype: V1GCEPersistentDiskVolumeSource - """ - return self._gce_persistent_disk - - @gce_persistent_disk.setter - def gce_persistent_disk(self, gce_persistent_disk): - """Sets the gce_persistent_disk of this V1Volume. - - - :param gce_persistent_disk: The gce_persistent_disk of this V1Volume. # noqa: E501 - :type: V1GCEPersistentDiskVolumeSource - """ - - self._gce_persistent_disk = gce_persistent_disk - - @property - def git_repo(self): - """Gets the git_repo of this V1Volume. # noqa: E501 - - - :return: The git_repo of this V1Volume. # noqa: E501 - :rtype: V1GitRepoVolumeSource - """ - return self._git_repo - - @git_repo.setter - def git_repo(self, git_repo): - """Sets the git_repo of this V1Volume. - - - :param git_repo: The git_repo of this V1Volume. # noqa: E501 - :type: V1GitRepoVolumeSource - """ - - self._git_repo = git_repo - - @property - def glusterfs(self): - """Gets the glusterfs of this V1Volume. # noqa: E501 - - - :return: The glusterfs of this V1Volume. # noqa: E501 - :rtype: V1GlusterfsVolumeSource - """ - return self._glusterfs - - @glusterfs.setter - def glusterfs(self, glusterfs): - """Sets the glusterfs of this V1Volume. - - - :param glusterfs: The glusterfs of this V1Volume. # noqa: E501 - :type: V1GlusterfsVolumeSource - """ - - self._glusterfs = glusterfs - - @property - def host_path(self): - """Gets the host_path of this V1Volume. # noqa: E501 - - - :return: The host_path of this V1Volume. # noqa: E501 - :rtype: V1HostPathVolumeSource - """ - return self._host_path - - @host_path.setter - def host_path(self, host_path): - """Sets the host_path of this V1Volume. - - - :param host_path: The host_path of this V1Volume. # noqa: E501 - :type: V1HostPathVolumeSource - """ - - self._host_path = host_path - - @property - def iscsi(self): - """Gets the iscsi of this V1Volume. # noqa: E501 - - - :return: The iscsi of this V1Volume. # noqa: E501 - :rtype: V1ISCSIVolumeSource - """ - return self._iscsi - - @iscsi.setter - def iscsi(self, iscsi): - """Sets the iscsi of this V1Volume. - - - :param iscsi: The iscsi of this V1Volume. # noqa: E501 - :type: V1ISCSIVolumeSource - """ - - self._iscsi = iscsi - - @property - def name(self): - """Gets the name of this V1Volume. # noqa: E501 - - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V1Volume. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1Volume. - - name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V1Volume. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def nfs(self): - """Gets the nfs of this V1Volume. # noqa: E501 - - - :return: The nfs of this V1Volume. # noqa: E501 - :rtype: V1NFSVolumeSource - """ - return self._nfs - - @nfs.setter - def nfs(self, nfs): - """Sets the nfs of this V1Volume. - - - :param nfs: The nfs of this V1Volume. # noqa: E501 - :type: V1NFSVolumeSource - """ - - self._nfs = nfs - - @property - def persistent_volume_claim(self): - """Gets the persistent_volume_claim of this V1Volume. # noqa: E501 - - - :return: The persistent_volume_claim of this V1Volume. # noqa: E501 - :rtype: V1PersistentVolumeClaimVolumeSource - """ - return self._persistent_volume_claim - - @persistent_volume_claim.setter - def persistent_volume_claim(self, persistent_volume_claim): - """Sets the persistent_volume_claim of this V1Volume. - - - :param persistent_volume_claim: The persistent_volume_claim of this V1Volume. # noqa: E501 - :type: V1PersistentVolumeClaimVolumeSource - """ - - self._persistent_volume_claim = persistent_volume_claim - - @property - def photon_persistent_disk(self): - """Gets the photon_persistent_disk of this V1Volume. # noqa: E501 - - - :return: The photon_persistent_disk of this V1Volume. # noqa: E501 - :rtype: V1PhotonPersistentDiskVolumeSource - """ - return self._photon_persistent_disk - - @photon_persistent_disk.setter - def photon_persistent_disk(self, photon_persistent_disk): - """Sets the photon_persistent_disk of this V1Volume. - - - :param photon_persistent_disk: The photon_persistent_disk of this V1Volume. # noqa: E501 - :type: V1PhotonPersistentDiskVolumeSource - """ - - self._photon_persistent_disk = photon_persistent_disk - - @property - def portworx_volume(self): - """Gets the portworx_volume of this V1Volume. # noqa: E501 - - - :return: The portworx_volume of this V1Volume. # noqa: E501 - :rtype: V1PortworxVolumeSource - """ - return self._portworx_volume - - @portworx_volume.setter - def portworx_volume(self, portworx_volume): - """Sets the portworx_volume of this V1Volume. - - - :param portworx_volume: The portworx_volume of this V1Volume. # noqa: E501 - :type: V1PortworxVolumeSource - """ - - self._portworx_volume = portworx_volume - - @property - def projected(self): - """Gets the projected of this V1Volume. # noqa: E501 - - - :return: The projected of this V1Volume. # noqa: E501 - :rtype: V1ProjectedVolumeSource - """ - return self._projected - - @projected.setter - def projected(self, projected): - """Sets the projected of this V1Volume. - - - :param projected: The projected of this V1Volume. # noqa: E501 - :type: V1ProjectedVolumeSource - """ - - self._projected = projected - - @property - def quobyte(self): - """Gets the quobyte of this V1Volume. # noqa: E501 - - - :return: The quobyte of this V1Volume. # noqa: E501 - :rtype: V1QuobyteVolumeSource - """ - return self._quobyte - - @quobyte.setter - def quobyte(self, quobyte): - """Sets the quobyte of this V1Volume. - - - :param quobyte: The quobyte of this V1Volume. # noqa: E501 - :type: V1QuobyteVolumeSource - """ - - self._quobyte = quobyte - - @property - def rbd(self): - """Gets the rbd of this V1Volume. # noqa: E501 - - - :return: The rbd of this V1Volume. # noqa: E501 - :rtype: V1RBDVolumeSource - """ - return self._rbd - - @rbd.setter - def rbd(self, rbd): - """Sets the rbd of this V1Volume. - - - :param rbd: The rbd of this V1Volume. # noqa: E501 - :type: V1RBDVolumeSource - """ - - self._rbd = rbd - - @property - def scale_io(self): - """Gets the scale_io of this V1Volume. # noqa: E501 - - - :return: The scale_io of this V1Volume. # noqa: E501 - :rtype: V1ScaleIOVolumeSource - """ - return self._scale_io - - @scale_io.setter - def scale_io(self, scale_io): - """Sets the scale_io of this V1Volume. - - - :param scale_io: The scale_io of this V1Volume. # noqa: E501 - :type: V1ScaleIOVolumeSource - """ - - self._scale_io = scale_io - - @property - def secret(self): - """Gets the secret of this V1Volume. # noqa: E501 - - - :return: The secret of this V1Volume. # noqa: E501 - :rtype: V1SecretVolumeSource - """ - return self._secret - - @secret.setter - def secret(self, secret): - """Sets the secret of this V1Volume. - - - :param secret: The secret of this V1Volume. # noqa: E501 - :type: V1SecretVolumeSource - """ - - self._secret = secret - - @property - def storageos(self): - """Gets the storageos of this V1Volume. # noqa: E501 - - - :return: The storageos of this V1Volume. # noqa: E501 - :rtype: V1StorageOSVolumeSource - """ - return self._storageos - - @storageos.setter - def storageos(self, storageos): - """Sets the storageos of this V1Volume. - - - :param storageos: The storageos of this V1Volume. # noqa: E501 - :type: V1StorageOSVolumeSource - """ - - self._storageos = storageos - - @property - def vsphere_volume(self): - """Gets the vsphere_volume of this V1Volume. # noqa: E501 - - - :return: The vsphere_volume of this V1Volume. # noqa: E501 - :rtype: V1VsphereVirtualDiskVolumeSource - """ - return self._vsphere_volume - - @vsphere_volume.setter - def vsphere_volume(self, vsphere_volume): - """Sets the vsphere_volume of this V1Volume. - - - :param vsphere_volume: The vsphere_volume of this V1Volume. # noqa: E501 - :type: V1VsphereVirtualDiskVolumeSource - """ - - self._vsphere_volume = vsphere_volume - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1Volume): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1Volume): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment.py deleted file mode 100644 index 011f976..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeAttachment(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1VolumeAttachmentSpec', - 'status': 'V1VolumeAttachmentStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeAttachment - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1VolumeAttachment. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1VolumeAttachment. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1VolumeAttachment. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1VolumeAttachment. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1VolumeAttachment. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1VolumeAttachment. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1VolumeAttachment. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1VolumeAttachment. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1VolumeAttachment. # noqa: E501 - - - :return: The metadata of this V1VolumeAttachment. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1VolumeAttachment. - - - :param metadata: The metadata of this V1VolumeAttachment. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1VolumeAttachment. # noqa: E501 - - - :return: The spec of this V1VolumeAttachment. # noqa: E501 - :rtype: V1VolumeAttachmentSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1VolumeAttachment. - - - :param spec: The spec of this V1VolumeAttachment. # noqa: E501 - :type: V1VolumeAttachmentSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1VolumeAttachment. # noqa: E501 - - - :return: The status of this V1VolumeAttachment. # noqa: E501 - :rtype: V1VolumeAttachmentStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1VolumeAttachment. - - - :param status: The status of this V1VolumeAttachment. # noqa: E501 - :type: V1VolumeAttachmentStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeAttachment): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeAttachment): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_list.py deleted file mode 100644 index 9d5a9c9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeAttachmentList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1VolumeAttachment]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeAttachmentList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1VolumeAttachmentList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1VolumeAttachmentList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1VolumeAttachmentList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1VolumeAttachmentList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1VolumeAttachmentList. # noqa: E501 - - items is the list of VolumeAttachments # noqa: E501 - - :return: The items of this V1VolumeAttachmentList. # noqa: E501 - :rtype: list[V1VolumeAttachment] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1VolumeAttachmentList. - - items is the list of VolumeAttachments # noqa: E501 - - :param items: The items of this V1VolumeAttachmentList. # noqa: E501 - :type: list[V1VolumeAttachment] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1VolumeAttachmentList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1VolumeAttachmentList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1VolumeAttachmentList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1VolumeAttachmentList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1VolumeAttachmentList. # noqa: E501 - - - :return: The metadata of this V1VolumeAttachmentList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1VolumeAttachmentList. - - - :param metadata: The metadata of this V1VolumeAttachmentList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeAttachmentList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeAttachmentList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_source.py deleted file mode 100644 index c385580..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_source.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeAttachmentSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'inline_volume_spec': 'V1PersistentVolumeSpec', - 'persistent_volume_name': 'str' - } - - attribute_map = { - 'inline_volume_spec': 'inlineVolumeSpec', - 'persistent_volume_name': 'persistentVolumeName' - } - - def __init__(self, inline_volume_spec=None, persistent_volume_name=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeAttachmentSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._inline_volume_spec = None - self._persistent_volume_name = None - self.discriminator = None - - if inline_volume_spec is not None: - self.inline_volume_spec = inline_volume_spec - if persistent_volume_name is not None: - self.persistent_volume_name = persistent_volume_name - - @property - def inline_volume_spec(self): - """Gets the inline_volume_spec of this V1VolumeAttachmentSource. # noqa: E501 - - - :return: The inline_volume_spec of this V1VolumeAttachmentSource. # noqa: E501 - :rtype: V1PersistentVolumeSpec - """ - return self._inline_volume_spec - - @inline_volume_spec.setter - def inline_volume_spec(self, inline_volume_spec): - """Sets the inline_volume_spec of this V1VolumeAttachmentSource. - - - :param inline_volume_spec: The inline_volume_spec of this V1VolumeAttachmentSource. # noqa: E501 - :type: V1PersistentVolumeSpec - """ - - self._inline_volume_spec = inline_volume_spec - - @property - def persistent_volume_name(self): - """Gets the persistent_volume_name of this V1VolumeAttachmentSource. # noqa: E501 - - persistentVolumeName represents the name of the persistent volume to attach. # noqa: E501 - - :return: The persistent_volume_name of this V1VolumeAttachmentSource. # noqa: E501 - :rtype: str - """ - return self._persistent_volume_name - - @persistent_volume_name.setter - def persistent_volume_name(self, persistent_volume_name): - """Sets the persistent_volume_name of this V1VolumeAttachmentSource. - - persistentVolumeName represents the name of the persistent volume to attach. # noqa: E501 - - :param persistent_volume_name: The persistent_volume_name of this V1VolumeAttachmentSource. # noqa: E501 - :type: str - """ - - self._persistent_volume_name = persistent_volume_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeAttachmentSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeAttachmentSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_spec.py deleted file mode 100644 index ab833bd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_spec.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeAttachmentSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'attacher': 'str', - 'node_name': 'str', - 'source': 'V1VolumeAttachmentSource' - } - - attribute_map = { - 'attacher': 'attacher', - 'node_name': 'nodeName', - 'source': 'source' - } - - def __init__(self, attacher=None, node_name=None, source=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeAttachmentSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._attacher = None - self._node_name = None - self._source = None - self.discriminator = None - - self.attacher = attacher - self.node_name = node_name - self.source = source - - @property - def attacher(self): - """Gets the attacher of this V1VolumeAttachmentSpec. # noqa: E501 - - attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName(). # noqa: E501 - - :return: The attacher of this V1VolumeAttachmentSpec. # noqa: E501 - :rtype: str - """ - return self._attacher - - @attacher.setter - def attacher(self, attacher): - """Sets the attacher of this V1VolumeAttachmentSpec. - - attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName(). # noqa: E501 - - :param attacher: The attacher of this V1VolumeAttachmentSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and attacher is None: # noqa: E501 - raise ValueError("Invalid value for `attacher`, must not be `None`") # noqa: E501 - - self._attacher = attacher - - @property - def node_name(self): - """Gets the node_name of this V1VolumeAttachmentSpec. # noqa: E501 - - nodeName represents the node that the volume should be attached to. # noqa: E501 - - :return: The node_name of this V1VolumeAttachmentSpec. # noqa: E501 - :rtype: str - """ - return self._node_name - - @node_name.setter - def node_name(self, node_name): - """Sets the node_name of this V1VolumeAttachmentSpec. - - nodeName represents the node that the volume should be attached to. # noqa: E501 - - :param node_name: The node_name of this V1VolumeAttachmentSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and node_name is None: # noqa: E501 - raise ValueError("Invalid value for `node_name`, must not be `None`") # noqa: E501 - - self._node_name = node_name - - @property - def source(self): - """Gets the source of this V1VolumeAttachmentSpec. # noqa: E501 - - - :return: The source of this V1VolumeAttachmentSpec. # noqa: E501 - :rtype: V1VolumeAttachmentSource - """ - return self._source - - @source.setter - def source(self, source): - """Sets the source of this V1VolumeAttachmentSpec. - - - :param source: The source of this V1VolumeAttachmentSpec. # noqa: E501 - :type: V1VolumeAttachmentSource - """ - if self.local_vars_configuration.client_side_validation and source is None: # noqa: E501 - raise ValueError("Invalid value for `source`, must not be `None`") # noqa: E501 - - self._source = source - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeAttachmentSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeAttachmentSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_status.py deleted file mode 100644 index 79a822a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_attachment_status.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeAttachmentStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'attach_error': 'V1VolumeError', - 'attached': 'bool', - 'attachment_metadata': 'dict(str, str)', - 'detach_error': 'V1VolumeError' - } - - attribute_map = { - 'attach_error': 'attachError', - 'attached': 'attached', - 'attachment_metadata': 'attachmentMetadata', - 'detach_error': 'detachError' - } - - def __init__(self, attach_error=None, attached=None, attachment_metadata=None, detach_error=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeAttachmentStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._attach_error = None - self._attached = None - self._attachment_metadata = None - self._detach_error = None - self.discriminator = None - - if attach_error is not None: - self.attach_error = attach_error - self.attached = attached - if attachment_metadata is not None: - self.attachment_metadata = attachment_metadata - if detach_error is not None: - self.detach_error = detach_error - - @property - def attach_error(self): - """Gets the attach_error of this V1VolumeAttachmentStatus. # noqa: E501 - - - :return: The attach_error of this V1VolumeAttachmentStatus. # noqa: E501 - :rtype: V1VolumeError - """ - return self._attach_error - - @attach_error.setter - def attach_error(self, attach_error): - """Sets the attach_error of this V1VolumeAttachmentStatus. - - - :param attach_error: The attach_error of this V1VolumeAttachmentStatus. # noqa: E501 - :type: V1VolumeError - """ - - self._attach_error = attach_error - - @property - def attached(self): - """Gets the attached of this V1VolumeAttachmentStatus. # noqa: E501 - - attached indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher. # noqa: E501 - - :return: The attached of this V1VolumeAttachmentStatus. # noqa: E501 - :rtype: bool - """ - return self._attached - - @attached.setter - def attached(self, attached): - """Sets the attached of this V1VolumeAttachmentStatus. - - attached indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher. # noqa: E501 - - :param attached: The attached of this V1VolumeAttachmentStatus. # noqa: E501 - :type: bool - """ - if self.local_vars_configuration.client_side_validation and attached is None: # noqa: E501 - raise ValueError("Invalid value for `attached`, must not be `None`") # noqa: E501 - - self._attached = attached - - @property - def attachment_metadata(self): - """Gets the attachment_metadata of this V1VolumeAttachmentStatus. # noqa: E501 - - attachmentMetadata is populated with any information returned by the attach operation, upon successful attach, that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher. # noqa: E501 - - :return: The attachment_metadata of this V1VolumeAttachmentStatus. # noqa: E501 - :rtype: dict(str, str) - """ - return self._attachment_metadata - - @attachment_metadata.setter - def attachment_metadata(self, attachment_metadata): - """Sets the attachment_metadata of this V1VolumeAttachmentStatus. - - attachmentMetadata is populated with any information returned by the attach operation, upon successful attach, that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher. # noqa: E501 - - :param attachment_metadata: The attachment_metadata of this V1VolumeAttachmentStatus. # noqa: E501 - :type: dict(str, str) - """ - - self._attachment_metadata = attachment_metadata - - @property - def detach_error(self): - """Gets the detach_error of this V1VolumeAttachmentStatus. # noqa: E501 - - - :return: The detach_error of this V1VolumeAttachmentStatus. # noqa: E501 - :rtype: V1VolumeError - """ - return self._detach_error - - @detach_error.setter - def detach_error(self, detach_error): - """Sets the detach_error of this V1VolumeAttachmentStatus. - - - :param detach_error: The detach_error of this V1VolumeAttachmentStatus. # noqa: E501 - :type: V1VolumeError - """ - - self._detach_error = detach_error - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeAttachmentStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeAttachmentStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_device.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_device.py deleted file mode 100644 index 9b107c9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_device.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeDevice(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'device_path': 'str', - 'name': 'str' - } - - attribute_map = { - 'device_path': 'devicePath', - 'name': 'name' - } - - def __init__(self, device_path=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeDevice - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._device_path = None - self._name = None - self.discriminator = None - - self.device_path = device_path - self.name = name - - @property - def device_path(self): - """Gets the device_path of this V1VolumeDevice. # noqa: E501 - - devicePath is the path inside of the container that the device will be mapped to. # noqa: E501 - - :return: The device_path of this V1VolumeDevice. # noqa: E501 - :rtype: str - """ - return self._device_path - - @device_path.setter - def device_path(self, device_path): - """Sets the device_path of this V1VolumeDevice. - - devicePath is the path inside of the container that the device will be mapped to. # noqa: E501 - - :param device_path: The device_path of this V1VolumeDevice. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and device_path is None: # noqa: E501 - raise ValueError("Invalid value for `device_path`, must not be `None`") # noqa: E501 - - self._device_path = device_path - - @property - def name(self): - """Gets the name of this V1VolumeDevice. # noqa: E501 - - name must match the name of a persistentVolumeClaim in the pod # noqa: E501 - - :return: The name of this V1VolumeDevice. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1VolumeDevice. - - name must match the name of a persistentVolumeClaim in the pod # noqa: E501 - - :param name: The name of this V1VolumeDevice. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeDevice): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeDevice): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_error.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_error.py deleted file mode 100644 index 79df660..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_error.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeError(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'message': 'str', - 'time': 'datetime' - } - - attribute_map = { - 'message': 'message', - 'time': 'time' - } - - def __init__(self, message=None, time=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeError - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._message = None - self._time = None - self.discriminator = None - - if message is not None: - self.message = message - if time is not None: - self.time = time - - @property - def message(self): - """Gets the message of this V1VolumeError. # noqa: E501 - - message represents the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information. # noqa: E501 - - :return: The message of this V1VolumeError. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1VolumeError. - - message represents the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information. # noqa: E501 - - :param message: The message of this V1VolumeError. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def time(self): - """Gets the time of this V1VolumeError. # noqa: E501 - - time represents the time the error was encountered. # noqa: E501 - - :return: The time of this V1VolumeError. # noqa: E501 - :rtype: datetime - """ - return self._time - - @time.setter - def time(self, time): - """Sets the time of this V1VolumeError. - - time represents the time the error was encountered. # noqa: E501 - - :param time: The time of this V1VolumeError. # noqa: E501 - :type: datetime - """ - - self._time = time - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeError): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeError): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_mount.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_mount.py deleted file mode 100644 index 4054488..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_mount.py +++ /dev/null @@ -1,264 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeMount(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'mount_path': 'str', - 'mount_propagation': 'str', - 'name': 'str', - 'read_only': 'bool', - 'sub_path': 'str', - 'sub_path_expr': 'str' - } - - attribute_map = { - 'mount_path': 'mountPath', - 'mount_propagation': 'mountPropagation', - 'name': 'name', - 'read_only': 'readOnly', - 'sub_path': 'subPath', - 'sub_path_expr': 'subPathExpr' - } - - def __init__(self, mount_path=None, mount_propagation=None, name=None, read_only=None, sub_path=None, sub_path_expr=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeMount - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._mount_path = None - self._mount_propagation = None - self._name = None - self._read_only = None - self._sub_path = None - self._sub_path_expr = None - self.discriminator = None - - self.mount_path = mount_path - if mount_propagation is not None: - self.mount_propagation = mount_propagation - self.name = name - if read_only is not None: - self.read_only = read_only - if sub_path is not None: - self.sub_path = sub_path - if sub_path_expr is not None: - self.sub_path_expr = sub_path_expr - - @property - def mount_path(self): - """Gets the mount_path of this V1VolumeMount. # noqa: E501 - - Path within the container at which the volume should be mounted. Must not contain ':'. # noqa: E501 - - :return: The mount_path of this V1VolumeMount. # noqa: E501 - :rtype: str - """ - return self._mount_path - - @mount_path.setter - def mount_path(self, mount_path): - """Sets the mount_path of this V1VolumeMount. - - Path within the container at which the volume should be mounted. Must not contain ':'. # noqa: E501 - - :param mount_path: The mount_path of this V1VolumeMount. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and mount_path is None: # noqa: E501 - raise ValueError("Invalid value for `mount_path`, must not be `None`") # noqa: E501 - - self._mount_path = mount_path - - @property - def mount_propagation(self): - """Gets the mount_propagation of this V1VolumeMount. # noqa: E501 - - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. # noqa: E501 - - :return: The mount_propagation of this V1VolumeMount. # noqa: E501 - :rtype: str - """ - return self._mount_propagation - - @mount_propagation.setter - def mount_propagation(self, mount_propagation): - """Sets the mount_propagation of this V1VolumeMount. - - mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. # noqa: E501 - - :param mount_propagation: The mount_propagation of this V1VolumeMount. # noqa: E501 - :type: str - """ - - self._mount_propagation = mount_propagation - - @property - def name(self): - """Gets the name of this V1VolumeMount. # noqa: E501 - - This must match the Name of a Volume. # noqa: E501 - - :return: The name of this V1VolumeMount. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1VolumeMount. - - This must match the Name of a Volume. # noqa: E501 - - :param name: The name of this V1VolumeMount. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def read_only(self): - """Gets the read_only of this V1VolumeMount. # noqa: E501 - - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. # noqa: E501 - - :return: The read_only of this V1VolumeMount. # noqa: E501 - :rtype: bool - """ - return self._read_only - - @read_only.setter - def read_only(self, read_only): - """Sets the read_only of this V1VolumeMount. - - Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. # noqa: E501 - - :param read_only: The read_only of this V1VolumeMount. # noqa: E501 - :type: bool - """ - - self._read_only = read_only - - @property - def sub_path(self): - """Gets the sub_path of this V1VolumeMount. # noqa: E501 - - Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root). # noqa: E501 - - :return: The sub_path of this V1VolumeMount. # noqa: E501 - :rtype: str - """ - return self._sub_path - - @sub_path.setter - def sub_path(self, sub_path): - """Sets the sub_path of this V1VolumeMount. - - Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root). # noqa: E501 - - :param sub_path: The sub_path of this V1VolumeMount. # noqa: E501 - :type: str - """ - - self._sub_path = sub_path - - @property - def sub_path_expr(self): - """Gets the sub_path_expr of this V1VolumeMount. # noqa: E501 - - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive. # noqa: E501 - - :return: The sub_path_expr of this V1VolumeMount. # noqa: E501 - :rtype: str - """ - return self._sub_path_expr - - @sub_path_expr.setter - def sub_path_expr(self, sub_path_expr): - """Sets the sub_path_expr of this V1VolumeMount. - - Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive. # noqa: E501 - - :param sub_path_expr: The sub_path_expr of this V1VolumeMount. # noqa: E501 - :type: str - """ - - self._sub_path_expr = sub_path_expr - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeMount): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeMount): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_affinity.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_affinity.py deleted file mode 100644 index 612918c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_affinity.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeNodeAffinity(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'required': 'V1NodeSelector' - } - - attribute_map = { - 'required': 'required' - } - - def __init__(self, required=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeNodeAffinity - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._required = None - self.discriminator = None - - if required is not None: - self.required = required - - @property - def required(self): - """Gets the required of this V1VolumeNodeAffinity. # noqa: E501 - - - :return: The required of this V1VolumeNodeAffinity. # noqa: E501 - :rtype: V1NodeSelector - """ - return self._required - - @required.setter - def required(self, required): - """Sets the required of this V1VolumeNodeAffinity. - - - :param required: The required of this V1VolumeNodeAffinity. # noqa: E501 - :type: V1NodeSelector - """ - - self._required = required - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeNodeAffinity): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeNodeAffinity): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_resources.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_resources.py deleted file mode 100644 index 35cb545..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_node_resources.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeNodeResources(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'count': 'int' - } - - attribute_map = { - 'count': 'count' - } - - def __init__(self, count=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeNodeResources - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._count = None - self.discriminator = None - - if count is not None: - self.count = count - - @property - def count(self): - """Gets the count of this V1VolumeNodeResources. # noqa: E501 - - count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded. # noqa: E501 - - :return: The count of this V1VolumeNodeResources. # noqa: E501 - :rtype: int - """ - return self._count - - @count.setter - def count(self, count): - """Sets the count of this V1VolumeNodeResources. - - count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded. # noqa: E501 - - :param count: The count of this V1VolumeNodeResources. # noqa: E501 - :type: int - """ - - self._count = count - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeNodeResources): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeNodeResources): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_projection.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_projection.py deleted file mode 100644 index db16e9e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_projection.py +++ /dev/null @@ -1,224 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeProjection(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'cluster_trust_bundle': 'V1ClusterTrustBundleProjection', - 'config_map': 'V1ConfigMapProjection', - 'downward_api': 'V1DownwardAPIProjection', - 'secret': 'V1SecretProjection', - 'service_account_token': 'V1ServiceAccountTokenProjection' - } - - attribute_map = { - 'cluster_trust_bundle': 'clusterTrustBundle', - 'config_map': 'configMap', - 'downward_api': 'downwardAPI', - 'secret': 'secret', - 'service_account_token': 'serviceAccountToken' - } - - def __init__(self, cluster_trust_bundle=None, config_map=None, downward_api=None, secret=None, service_account_token=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeProjection - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._cluster_trust_bundle = None - self._config_map = None - self._downward_api = None - self._secret = None - self._service_account_token = None - self.discriminator = None - - if cluster_trust_bundle is not None: - self.cluster_trust_bundle = cluster_trust_bundle - if config_map is not None: - self.config_map = config_map - if downward_api is not None: - self.downward_api = downward_api - if secret is not None: - self.secret = secret - if service_account_token is not None: - self.service_account_token = service_account_token - - @property - def cluster_trust_bundle(self): - """Gets the cluster_trust_bundle of this V1VolumeProjection. # noqa: E501 - - - :return: The cluster_trust_bundle of this V1VolumeProjection. # noqa: E501 - :rtype: V1ClusterTrustBundleProjection - """ - return self._cluster_trust_bundle - - @cluster_trust_bundle.setter - def cluster_trust_bundle(self, cluster_trust_bundle): - """Sets the cluster_trust_bundle of this V1VolumeProjection. - - - :param cluster_trust_bundle: The cluster_trust_bundle of this V1VolumeProjection. # noqa: E501 - :type: V1ClusterTrustBundleProjection - """ - - self._cluster_trust_bundle = cluster_trust_bundle - - @property - def config_map(self): - """Gets the config_map of this V1VolumeProjection. # noqa: E501 - - - :return: The config_map of this V1VolumeProjection. # noqa: E501 - :rtype: V1ConfigMapProjection - """ - return self._config_map - - @config_map.setter - def config_map(self, config_map): - """Sets the config_map of this V1VolumeProjection. - - - :param config_map: The config_map of this V1VolumeProjection. # noqa: E501 - :type: V1ConfigMapProjection - """ - - self._config_map = config_map - - @property - def downward_api(self): - """Gets the downward_api of this V1VolumeProjection. # noqa: E501 - - - :return: The downward_api of this V1VolumeProjection. # noqa: E501 - :rtype: V1DownwardAPIProjection - """ - return self._downward_api - - @downward_api.setter - def downward_api(self, downward_api): - """Sets the downward_api of this V1VolumeProjection. - - - :param downward_api: The downward_api of this V1VolumeProjection. # noqa: E501 - :type: V1DownwardAPIProjection - """ - - self._downward_api = downward_api - - @property - def secret(self): - """Gets the secret of this V1VolumeProjection. # noqa: E501 - - - :return: The secret of this V1VolumeProjection. # noqa: E501 - :rtype: V1SecretProjection - """ - return self._secret - - @secret.setter - def secret(self, secret): - """Sets the secret of this V1VolumeProjection. - - - :param secret: The secret of this V1VolumeProjection. # noqa: E501 - :type: V1SecretProjection - """ - - self._secret = secret - - @property - def service_account_token(self): - """Gets the service_account_token of this V1VolumeProjection. # noqa: E501 - - - :return: The service_account_token of this V1VolumeProjection. # noqa: E501 - :rtype: V1ServiceAccountTokenProjection - """ - return self._service_account_token - - @service_account_token.setter - def service_account_token(self, service_account_token): - """Sets the service_account_token of this V1VolumeProjection. - - - :param service_account_token: The service_account_token of this V1VolumeProjection. # noqa: E501 - :type: V1ServiceAccountTokenProjection - """ - - self._service_account_token = service_account_token - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeProjection): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeProjection): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_resource_requirements.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_resource_requirements.py deleted file mode 100644 index 2104320..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_volume_resource_requirements.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VolumeResourceRequirements(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'limits': 'dict(str, str)', - 'requests': 'dict(str, str)' - } - - attribute_map = { - 'limits': 'limits', - 'requests': 'requests' - } - - def __init__(self, limits=None, requests=None, local_vars_configuration=None): # noqa: E501 - """V1VolumeResourceRequirements - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._limits = None - self._requests = None - self.discriminator = None - - if limits is not None: - self.limits = limits - if requests is not None: - self.requests = requests - - @property - def limits(self): - """Gets the limits of this V1VolumeResourceRequirements. # noqa: E501 - - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :return: The limits of this V1VolumeResourceRequirements. # noqa: E501 - :rtype: dict(str, str) - """ - return self._limits - - @limits.setter - def limits(self, limits): - """Sets the limits of this V1VolumeResourceRequirements. - - Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :param limits: The limits of this V1VolumeResourceRequirements. # noqa: E501 - :type: dict(str, str) - """ - - self._limits = limits - - @property - def requests(self): - """Gets the requests of this V1VolumeResourceRequirements. # noqa: E501 - - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :return: The requests of this V1VolumeResourceRequirements. # noqa: E501 - :rtype: dict(str, str) - """ - return self._requests - - @requests.setter - def requests(self, requests): - """Sets the requests of this V1VolumeResourceRequirements. - - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ # noqa: E501 - - :param requests: The requests of this V1VolumeResourceRequirements. # noqa: E501 - :type: dict(str, str) - """ - - self._requests = requests - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VolumeResourceRequirements): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VolumeResourceRequirements): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_vsphere_virtual_disk_volume_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_vsphere_virtual_disk_volume_source.py deleted file mode 100644 index bf38f7b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_vsphere_virtual_disk_volume_source.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1VsphereVirtualDiskVolumeSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fs_type': 'str', - 'storage_policy_id': 'str', - 'storage_policy_name': 'str', - 'volume_path': 'str' - } - - attribute_map = { - 'fs_type': 'fsType', - 'storage_policy_id': 'storagePolicyID', - 'storage_policy_name': 'storagePolicyName', - 'volume_path': 'volumePath' - } - - def __init__(self, fs_type=None, storage_policy_id=None, storage_policy_name=None, volume_path=None, local_vars_configuration=None): # noqa: E501 - """V1VsphereVirtualDiskVolumeSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fs_type = None - self._storage_policy_id = None - self._storage_policy_name = None - self._volume_path = None - self.discriminator = None - - if fs_type is not None: - self.fs_type = fs_type - if storage_policy_id is not None: - self.storage_policy_id = storage_policy_id - if storage_policy_name is not None: - self.storage_policy_name = storage_policy_name - self.volume_path = volume_path - - @property - def fs_type(self): - """Gets the fs_type of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :return: The fs_type of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._fs_type - - @fs_type.setter - def fs_type(self, fs_type): - """Sets the fs_type of this V1VsphereVirtualDiskVolumeSource. - - fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. # noqa: E501 - - :param fs_type: The fs_type of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._fs_type = fs_type - - @property - def storage_policy_id(self): - """Gets the storage_policy_id of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. # noqa: E501 - - :return: The storage_policy_id of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_policy_id - - @storage_policy_id.setter - def storage_policy_id(self, storage_policy_id): - """Sets the storage_policy_id of this V1VsphereVirtualDiskVolumeSource. - - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. # noqa: E501 - - :param storage_policy_id: The storage_policy_id of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_policy_id = storage_policy_id - - @property - def storage_policy_name(self): - """Gets the storage_policy_name of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - - storagePolicyName is the storage Policy Based Management (SPBM) profile name. # noqa: E501 - - :return: The storage_policy_name of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._storage_policy_name - - @storage_policy_name.setter - def storage_policy_name(self, storage_policy_name): - """Sets the storage_policy_name of this V1VsphereVirtualDiskVolumeSource. - - storagePolicyName is the storage Policy Based Management (SPBM) profile name. # noqa: E501 - - :param storage_policy_name: The storage_policy_name of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :type: str - """ - - self._storage_policy_name = storage_policy_name - - @property - def volume_path(self): - """Gets the volume_path of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - - volumePath is the path that identifies vSphere volume vmdk # noqa: E501 - - :return: The volume_path of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :rtype: str - """ - return self._volume_path - - @volume_path.setter - def volume_path(self, volume_path): - """Sets the volume_path of this V1VsphereVirtualDiskVolumeSource. - - volumePath is the path that identifies vSphere volume vmdk # noqa: E501 - - :param volume_path: The volume_path of this V1VsphereVirtualDiskVolumeSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and volume_path is None: # noqa: E501 - raise ValueError("Invalid value for `volume_path`, must not be `None`") # noqa: E501 - - self._volume_path = volume_path - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1VsphereVirtualDiskVolumeSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1VsphereVirtualDiskVolumeSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_watch_event.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_watch_event.py deleted file mode 100644 index 9e8ef6d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_watch_event.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1WatchEvent(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'object': 'object', - 'type': 'str' - } - - attribute_map = { - 'object': 'object', - 'type': 'type' - } - - def __init__(self, object=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1WatchEvent - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._object = None - self._type = None - self.discriminator = None - - self.object = object - self.type = type - - @property - def object(self): - """Gets the object of this V1WatchEvent. # noqa: E501 - - Object is: * If Type is Added or Modified: the new state of the object. * If Type is Deleted: the state of the object immediately before deletion. * If Type is Error: *Status is recommended; other types may make sense depending on context. # noqa: E501 - - :return: The object of this V1WatchEvent. # noqa: E501 - :rtype: object - """ - return self._object - - @object.setter - def object(self, object): - """Sets the object of this V1WatchEvent. - - Object is: * If Type is Added or Modified: the new state of the object. * If Type is Deleted: the state of the object immediately before deletion. * If Type is Error: *Status is recommended; other types may make sense depending on context. # noqa: E501 - - :param object: The object of this V1WatchEvent. # noqa: E501 - :type: object - """ - if self.local_vars_configuration.client_side_validation and object is None: # noqa: E501 - raise ValueError("Invalid value for `object`, must not be `None`") # noqa: E501 - - self._object = object - - @property - def type(self): - """Gets the type of this V1WatchEvent. # noqa: E501 - - - :return: The type of this V1WatchEvent. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1WatchEvent. - - - :param type: The type of this V1WatchEvent. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1WatchEvent): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1WatchEvent): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_webhook_conversion.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_webhook_conversion.py deleted file mode 100644 index 1bb563a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_webhook_conversion.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1WebhookConversion(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'client_config': 'ApiextensionsV1WebhookClientConfig', - 'conversion_review_versions': 'list[str]' - } - - attribute_map = { - 'client_config': 'clientConfig', - 'conversion_review_versions': 'conversionReviewVersions' - } - - def __init__(self, client_config=None, conversion_review_versions=None, local_vars_configuration=None): # noqa: E501 - """V1WebhookConversion - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._client_config = None - self._conversion_review_versions = None - self.discriminator = None - - if client_config is not None: - self.client_config = client_config - self.conversion_review_versions = conversion_review_versions - - @property - def client_config(self): - """Gets the client_config of this V1WebhookConversion. # noqa: E501 - - - :return: The client_config of this V1WebhookConversion. # noqa: E501 - :rtype: ApiextensionsV1WebhookClientConfig - """ - return self._client_config - - @client_config.setter - def client_config(self, client_config): - """Sets the client_config of this V1WebhookConversion. - - - :param client_config: The client_config of this V1WebhookConversion. # noqa: E501 - :type: ApiextensionsV1WebhookClientConfig - """ - - self._client_config = client_config - - @property - def conversion_review_versions(self): - """Gets the conversion_review_versions of this V1WebhookConversion. # noqa: E501 - - conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail. # noqa: E501 - - :return: The conversion_review_versions of this V1WebhookConversion. # noqa: E501 - :rtype: list[str] - """ - return self._conversion_review_versions - - @conversion_review_versions.setter - def conversion_review_versions(self, conversion_review_versions): - """Sets the conversion_review_versions of this V1WebhookConversion. - - conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail. # noqa: E501 - - :param conversion_review_versions: The conversion_review_versions of this V1WebhookConversion. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and conversion_review_versions is None: # noqa: E501 - raise ValueError("Invalid value for `conversion_review_versions`, must not be `None`") # noqa: E501 - - self._conversion_review_versions = conversion_review_versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1WebhookConversion): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1WebhookConversion): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_weighted_pod_affinity_term.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_weighted_pod_affinity_term.py deleted file mode 100644 index d017245..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_weighted_pod_affinity_term.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1WeightedPodAffinityTerm(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'pod_affinity_term': 'V1PodAffinityTerm', - 'weight': 'int' - } - - attribute_map = { - 'pod_affinity_term': 'podAffinityTerm', - 'weight': 'weight' - } - - def __init__(self, pod_affinity_term=None, weight=None, local_vars_configuration=None): # noqa: E501 - """V1WeightedPodAffinityTerm - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._pod_affinity_term = None - self._weight = None - self.discriminator = None - - self.pod_affinity_term = pod_affinity_term - self.weight = weight - - @property - def pod_affinity_term(self): - """Gets the pod_affinity_term of this V1WeightedPodAffinityTerm. # noqa: E501 - - - :return: The pod_affinity_term of this V1WeightedPodAffinityTerm. # noqa: E501 - :rtype: V1PodAffinityTerm - """ - return self._pod_affinity_term - - @pod_affinity_term.setter - def pod_affinity_term(self, pod_affinity_term): - """Sets the pod_affinity_term of this V1WeightedPodAffinityTerm. - - - :param pod_affinity_term: The pod_affinity_term of this V1WeightedPodAffinityTerm. # noqa: E501 - :type: V1PodAffinityTerm - """ - if self.local_vars_configuration.client_side_validation and pod_affinity_term is None: # noqa: E501 - raise ValueError("Invalid value for `pod_affinity_term`, must not be `None`") # noqa: E501 - - self._pod_affinity_term = pod_affinity_term - - @property - def weight(self): - """Gets the weight of this V1WeightedPodAffinityTerm. # noqa: E501 - - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. # noqa: E501 - - :return: The weight of this V1WeightedPodAffinityTerm. # noqa: E501 - :rtype: int - """ - return self._weight - - @weight.setter - def weight(self, weight): - """Sets the weight of this V1WeightedPodAffinityTerm. - - weight associated with matching the corresponding podAffinityTerm, in the range 1-100. # noqa: E501 - - :param weight: The weight of this V1WeightedPodAffinityTerm. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and weight is None: # noqa: E501 - raise ValueError("Invalid value for `weight`, must not be `None`") # noqa: E501 - - self._weight = weight - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1WeightedPodAffinityTerm): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1WeightedPodAffinityTerm): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_windows_security_context_options.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_windows_security_context_options.py deleted file mode 100644 index bc26934..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1_windows_security_context_options.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1WindowsSecurityContextOptions(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'gmsa_credential_spec': 'str', - 'gmsa_credential_spec_name': 'str', - 'host_process': 'bool', - 'run_as_user_name': 'str' - } - - attribute_map = { - 'gmsa_credential_spec': 'gmsaCredentialSpec', - 'gmsa_credential_spec_name': 'gmsaCredentialSpecName', - 'host_process': 'hostProcess', - 'run_as_user_name': 'runAsUserName' - } - - def __init__(self, gmsa_credential_spec=None, gmsa_credential_spec_name=None, host_process=None, run_as_user_name=None, local_vars_configuration=None): # noqa: E501 - """V1WindowsSecurityContextOptions - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._gmsa_credential_spec = None - self._gmsa_credential_spec_name = None - self._host_process = None - self._run_as_user_name = None - self.discriminator = None - - if gmsa_credential_spec is not None: - self.gmsa_credential_spec = gmsa_credential_spec - if gmsa_credential_spec_name is not None: - self.gmsa_credential_spec_name = gmsa_credential_spec_name - if host_process is not None: - self.host_process = host_process - if run_as_user_name is not None: - self.run_as_user_name = run_as_user_name - - @property - def gmsa_credential_spec(self): - """Gets the gmsa_credential_spec of this V1WindowsSecurityContextOptions. # noqa: E501 - - GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. # noqa: E501 - - :return: The gmsa_credential_spec of this V1WindowsSecurityContextOptions. # noqa: E501 - :rtype: str - """ - return self._gmsa_credential_spec - - @gmsa_credential_spec.setter - def gmsa_credential_spec(self, gmsa_credential_spec): - """Sets the gmsa_credential_spec of this V1WindowsSecurityContextOptions. - - GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. # noqa: E501 - - :param gmsa_credential_spec: The gmsa_credential_spec of this V1WindowsSecurityContextOptions. # noqa: E501 - :type: str - """ - - self._gmsa_credential_spec = gmsa_credential_spec - - @property - def gmsa_credential_spec_name(self): - """Gets the gmsa_credential_spec_name of this V1WindowsSecurityContextOptions. # noqa: E501 - - GMSACredentialSpecName is the name of the GMSA credential spec to use. # noqa: E501 - - :return: The gmsa_credential_spec_name of this V1WindowsSecurityContextOptions. # noqa: E501 - :rtype: str - """ - return self._gmsa_credential_spec_name - - @gmsa_credential_spec_name.setter - def gmsa_credential_spec_name(self, gmsa_credential_spec_name): - """Sets the gmsa_credential_spec_name of this V1WindowsSecurityContextOptions. - - GMSACredentialSpecName is the name of the GMSA credential spec to use. # noqa: E501 - - :param gmsa_credential_spec_name: The gmsa_credential_spec_name of this V1WindowsSecurityContextOptions. # noqa: E501 - :type: str - """ - - self._gmsa_credential_spec_name = gmsa_credential_spec_name - - @property - def host_process(self): - """Gets the host_process of this V1WindowsSecurityContextOptions. # noqa: E501 - - HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. # noqa: E501 - - :return: The host_process of this V1WindowsSecurityContextOptions. # noqa: E501 - :rtype: bool - """ - return self._host_process - - @host_process.setter - def host_process(self, host_process): - """Sets the host_process of this V1WindowsSecurityContextOptions. - - HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. # noqa: E501 - - :param host_process: The host_process of this V1WindowsSecurityContextOptions. # noqa: E501 - :type: bool - """ - - self._host_process = host_process - - @property - def run_as_user_name(self): - """Gets the run_as_user_name of this V1WindowsSecurityContextOptions. # noqa: E501 - - The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :return: The run_as_user_name of this V1WindowsSecurityContextOptions. # noqa: E501 - :rtype: str - """ - return self._run_as_user_name - - @run_as_user_name.setter - def run_as_user_name(self, run_as_user_name): - """Sets the run_as_user_name of this V1WindowsSecurityContextOptions. - - The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. # noqa: E501 - - :param run_as_user_name: The run_as_user_name of this V1WindowsSecurityContextOptions. # noqa: E501 - :type: str - """ - - self._run_as_user_name = run_as_user_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1WindowsSecurityContextOptions): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1WindowsSecurityContextOptions): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_audit_annotation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_audit_annotation.py deleted file mode 100644 index ea9e7d1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_audit_annotation.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1AuditAnnotation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'value_expression': 'str' - } - - attribute_map = { - 'key': 'key', - 'value_expression': 'valueExpression' - } - - def __init__(self, key=None, value_expression=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1AuditAnnotation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._value_expression = None - self.discriminator = None - - self.key = key - self.value_expression = value_expression - - @property - def key(self): - """Gets the key of this V1alpha1AuditAnnotation. # noqa: E501 - - key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\". If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. Required. # noqa: E501 - - :return: The key of this V1alpha1AuditAnnotation. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1alpha1AuditAnnotation. - - key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\". If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. Required. # noqa: E501 - - :param key: The key of this V1alpha1AuditAnnotation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def value_expression(self): - """Gets the value_expression of this V1alpha1AuditAnnotation. # noqa: E501 - - valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. Required. # noqa: E501 - - :return: The value_expression of this V1alpha1AuditAnnotation. # noqa: E501 - :rtype: str - """ - return self._value_expression - - @value_expression.setter - def value_expression(self, value_expression): - """Sets the value_expression of this V1alpha1AuditAnnotation. - - valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. Required. # noqa: E501 - - :param value_expression: The value_expression of this V1alpha1AuditAnnotation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and value_expression is None: # noqa: E501 - raise ValueError("Invalid value for `value_expression`, must not be `None`") # noqa: E501 - - self._value_expression = value_expression - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1AuditAnnotation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1AuditAnnotation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle.py deleted file mode 100644 index efac3f4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ClusterTrustBundle(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha1ClusterTrustBundleSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ClusterTrustBundle - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ClusterTrustBundle. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ClusterTrustBundle. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ClusterTrustBundle. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ClusterTrustBundle. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1ClusterTrustBundle. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ClusterTrustBundle. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ClusterTrustBundle. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ClusterTrustBundle. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ClusterTrustBundle. # noqa: E501 - - - :return: The metadata of this V1alpha1ClusterTrustBundle. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ClusterTrustBundle. - - - :param metadata: The metadata of this V1alpha1ClusterTrustBundle. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1ClusterTrustBundle. # noqa: E501 - - - :return: The spec of this V1alpha1ClusterTrustBundle. # noqa: E501 - :rtype: V1alpha1ClusterTrustBundleSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1ClusterTrustBundle. - - - :param spec: The spec of this V1alpha1ClusterTrustBundle. # noqa: E501 - :type: V1alpha1ClusterTrustBundleSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ClusterTrustBundle): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ClusterTrustBundle): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_list.py deleted file mode 100644 index b0ab25d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ClusterTrustBundleList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1ClusterTrustBundle]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ClusterTrustBundleList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ClusterTrustBundleList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ClusterTrustBundleList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1ClusterTrustBundleList. # noqa: E501 - - items is a collection of ClusterTrustBundle objects # noqa: E501 - - :return: The items of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :rtype: list[V1alpha1ClusterTrustBundle] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1ClusterTrustBundleList. - - items is a collection of ClusterTrustBundle objects # noqa: E501 - - :param items: The items of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :type: list[V1alpha1ClusterTrustBundle] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1ClusterTrustBundleList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ClusterTrustBundleList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ClusterTrustBundleList. # noqa: E501 - - - :return: The metadata of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ClusterTrustBundleList. - - - :param metadata: The metadata of this V1alpha1ClusterTrustBundleList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ClusterTrustBundleList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ClusterTrustBundleList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_spec.py deleted file mode 100644 index 01f856a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_cluster_trust_bundle_spec.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ClusterTrustBundleSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'signer_name': 'str', - 'trust_bundle': 'str' - } - - attribute_map = { - 'signer_name': 'signerName', - 'trust_bundle': 'trustBundle' - } - - def __init__(self, signer_name=None, trust_bundle=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ClusterTrustBundleSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._signer_name = None - self._trust_bundle = None - self.discriminator = None - - if signer_name is not None: - self.signer_name = signer_name - self.trust_bundle = trust_bundle - - @property - def signer_name(self): - """Gets the signer_name of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - - signerName indicates the associated signer, if any. In order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName= verb=attest. If signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`. If signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix. List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector. # noqa: E501 - - :return: The signer_name of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - :rtype: str - """ - return self._signer_name - - @signer_name.setter - def signer_name(self, signer_name): - """Sets the signer_name of this V1alpha1ClusterTrustBundleSpec. - - signerName indicates the associated signer, if any. In order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName= verb=attest. If signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`. If signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix. List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector. # noqa: E501 - - :param signer_name: The signer_name of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - :type: str - """ - - self._signer_name = signer_name - - @property - def trust_bundle(self): - """Gets the trust_bundle of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - - trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates. The data must consist only of PEM certificate blocks that parse as valid X.509 certificates. Each certificate must include a basic constraints extension with the CA bit set. The API server will reject objects that contain duplicate certificates, or that use PEM block headers. Users of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data. # noqa: E501 - - :return: The trust_bundle of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - :rtype: str - """ - return self._trust_bundle - - @trust_bundle.setter - def trust_bundle(self, trust_bundle): - """Sets the trust_bundle of this V1alpha1ClusterTrustBundleSpec. - - trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates. The data must consist only of PEM certificate blocks that parse as valid X.509 certificates. Each certificate must include a basic constraints extension with the CA bit set. The API server will reject objects that contain duplicate certificates, or that use PEM block headers. Users of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data. # noqa: E501 - - :param trust_bundle: The trust_bundle of this V1alpha1ClusterTrustBundleSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and trust_bundle is None: # noqa: E501 - raise ValueError("Invalid value for `trust_bundle`, must not be `None`") # noqa: E501 - - self._trust_bundle = trust_bundle - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ClusterTrustBundleSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ClusterTrustBundleSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_expression_warning.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_expression_warning.py deleted file mode 100644 index 3e99e1d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_expression_warning.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ExpressionWarning(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'field_ref': 'str', - 'warning': 'str' - } - - attribute_map = { - 'field_ref': 'fieldRef', - 'warning': 'warning' - } - - def __init__(self, field_ref=None, warning=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ExpressionWarning - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._field_ref = None - self._warning = None - self.discriminator = None - - self.field_ref = field_ref - self.warning = warning - - @property - def field_ref(self): - """Gets the field_ref of this V1alpha1ExpressionWarning. # noqa: E501 - - The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\" # noqa: E501 - - :return: The field_ref of this V1alpha1ExpressionWarning. # noqa: E501 - :rtype: str - """ - return self._field_ref - - @field_ref.setter - def field_ref(self, field_ref): - """Sets the field_ref of this V1alpha1ExpressionWarning. - - The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\" # noqa: E501 - - :param field_ref: The field_ref of this V1alpha1ExpressionWarning. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and field_ref is None: # noqa: E501 - raise ValueError("Invalid value for `field_ref`, must not be `None`") # noqa: E501 - - self._field_ref = field_ref - - @property - def warning(self): - """Gets the warning of this V1alpha1ExpressionWarning. # noqa: E501 - - The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler. # noqa: E501 - - :return: The warning of this V1alpha1ExpressionWarning. # noqa: E501 - :rtype: str - """ - return self._warning - - @warning.setter - def warning(self, warning): - """Sets the warning of this V1alpha1ExpressionWarning. - - The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler. # noqa: E501 - - :param warning: The warning of this V1alpha1ExpressionWarning. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and warning is None: # noqa: E501 - raise ValueError("Invalid value for `warning`, must not be `None`") # noqa: E501 - - self._warning = warning - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ExpressionWarning): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ExpressionWarning): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address.py deleted file mode 100644 index 8314d1a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1IPAddress(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha1IPAddressSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1IPAddress - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1alpha1IPAddress. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1IPAddress. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1IPAddress. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1IPAddress. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1IPAddress. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1IPAddress. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1IPAddress. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1IPAddress. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1IPAddress. # noqa: E501 - - - :return: The metadata of this V1alpha1IPAddress. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1IPAddress. - - - :param metadata: The metadata of this V1alpha1IPAddress. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1IPAddress. # noqa: E501 - - - :return: The spec of this V1alpha1IPAddress. # noqa: E501 - :rtype: V1alpha1IPAddressSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1IPAddress. - - - :param spec: The spec of this V1alpha1IPAddress. # noqa: E501 - :type: V1alpha1IPAddressSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1IPAddress): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1IPAddress): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_list.py deleted file mode 100644 index 21bcfc2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1IPAddressList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1IPAddress]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1IPAddressList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1IPAddressList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1IPAddressList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1IPAddressList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1IPAddressList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1IPAddressList. # noqa: E501 - - items is the list of IPAddresses. # noqa: E501 - - :return: The items of this V1alpha1IPAddressList. # noqa: E501 - :rtype: list[V1alpha1IPAddress] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1IPAddressList. - - items is the list of IPAddresses. # noqa: E501 - - :param items: The items of this V1alpha1IPAddressList. # noqa: E501 - :type: list[V1alpha1IPAddress] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1IPAddressList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1IPAddressList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1IPAddressList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1IPAddressList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1IPAddressList. # noqa: E501 - - - :return: The metadata of this V1alpha1IPAddressList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1IPAddressList. - - - :param metadata: The metadata of this V1alpha1IPAddressList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1IPAddressList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1IPAddressList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_spec.py deleted file mode 100644 index d8ad6b4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_ip_address_spec.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1IPAddressSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'parent_ref': 'V1alpha1ParentReference' - } - - attribute_map = { - 'parent_ref': 'parentRef' - } - - def __init__(self, parent_ref=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1IPAddressSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._parent_ref = None - self.discriminator = None - - if parent_ref is not None: - self.parent_ref = parent_ref - - @property - def parent_ref(self): - """Gets the parent_ref of this V1alpha1IPAddressSpec. # noqa: E501 - - - :return: The parent_ref of this V1alpha1IPAddressSpec. # noqa: E501 - :rtype: V1alpha1ParentReference - """ - return self._parent_ref - - @parent_ref.setter - def parent_ref(self, parent_ref): - """Sets the parent_ref of this V1alpha1IPAddressSpec. - - - :param parent_ref: The parent_ref of this V1alpha1IPAddressSpec. # noqa: E501 - :type: V1alpha1ParentReference - """ - - self._parent_ref = parent_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1IPAddressSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1IPAddressSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_condition.py deleted file mode 100644 index 07197a1..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_condition.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1MatchCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'name': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'name': 'name' - } - - def __init__(self, expression=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1MatchCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._name = None - self.discriminator = None - - self.expression = expression - self.name = name - - @property - def expression(self): - """Gets the expression of this V1alpha1MatchCondition. # noqa: E501 - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :return: The expression of this V1alpha1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1alpha1MatchCondition. - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :param expression: The expression of this V1alpha1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def name(self): - """Gets the name of this V1alpha1MatchCondition. # noqa: E501 - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :return: The name of this V1alpha1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha1MatchCondition. - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :param name: The name of this V1alpha1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1MatchCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1MatchCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_resources.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_resources.py deleted file mode 100644 index 55f00c7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_match_resources.py +++ /dev/null @@ -1,230 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1MatchResources(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'exclude_resource_rules': 'list[V1alpha1NamedRuleWithOperations]', - 'match_policy': 'str', - 'namespace_selector': 'V1LabelSelector', - 'object_selector': 'V1LabelSelector', - 'resource_rules': 'list[V1alpha1NamedRuleWithOperations]' - } - - attribute_map = { - 'exclude_resource_rules': 'excludeResourceRules', - 'match_policy': 'matchPolicy', - 'namespace_selector': 'namespaceSelector', - 'object_selector': 'objectSelector', - 'resource_rules': 'resourceRules' - } - - def __init__(self, exclude_resource_rules=None, match_policy=None, namespace_selector=None, object_selector=None, resource_rules=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1MatchResources - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._exclude_resource_rules = None - self._match_policy = None - self._namespace_selector = None - self._object_selector = None - self._resource_rules = None - self.discriminator = None - - if exclude_resource_rules is not None: - self.exclude_resource_rules = exclude_resource_rules - if match_policy is not None: - self.match_policy = match_policy - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if object_selector is not None: - self.object_selector = object_selector - if resource_rules is not None: - self.resource_rules = resource_rules - - @property - def exclude_resource_rules(self): - """Gets the exclude_resource_rules of this V1alpha1MatchResources. # noqa: E501 - - ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) # noqa: E501 - - :return: The exclude_resource_rules of this V1alpha1MatchResources. # noqa: E501 - :rtype: list[V1alpha1NamedRuleWithOperations] - """ - return self._exclude_resource_rules - - @exclude_resource_rules.setter - def exclude_resource_rules(self, exclude_resource_rules): - """Sets the exclude_resource_rules of this V1alpha1MatchResources. - - ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) # noqa: E501 - - :param exclude_resource_rules: The exclude_resource_rules of this V1alpha1MatchResources. # noqa: E501 - :type: list[V1alpha1NamedRuleWithOperations] - """ - - self._exclude_resource_rules = exclude_resource_rules - - @property - def match_policy(self): - """Gets the match_policy of this V1alpha1MatchResources. # noqa: E501 - - matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. Defaults to \"Equivalent\" # noqa: E501 - - :return: The match_policy of this V1alpha1MatchResources. # noqa: E501 - :rtype: str - """ - return self._match_policy - - @match_policy.setter - def match_policy(self, match_policy): - """Sets the match_policy of this V1alpha1MatchResources. - - matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. Defaults to \"Equivalent\" # noqa: E501 - - :param match_policy: The match_policy of this V1alpha1MatchResources. # noqa: E501 - :type: str - """ - - self._match_policy = match_policy - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1alpha1MatchResources. # noqa: E501 - - - :return: The namespace_selector of this V1alpha1MatchResources. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1alpha1MatchResources. - - - :param namespace_selector: The namespace_selector of this V1alpha1MatchResources. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def object_selector(self): - """Gets the object_selector of this V1alpha1MatchResources. # noqa: E501 - - - :return: The object_selector of this V1alpha1MatchResources. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._object_selector - - @object_selector.setter - def object_selector(self, object_selector): - """Sets the object_selector of this V1alpha1MatchResources. - - - :param object_selector: The object_selector of this V1alpha1MatchResources. # noqa: E501 - :type: V1LabelSelector - """ - - self._object_selector = object_selector - - @property - def resource_rules(self): - """Gets the resource_rules of this V1alpha1MatchResources. # noqa: E501 - - ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. # noqa: E501 - - :return: The resource_rules of this V1alpha1MatchResources. # noqa: E501 - :rtype: list[V1alpha1NamedRuleWithOperations] - """ - return self._resource_rules - - @resource_rules.setter - def resource_rules(self, resource_rules): - """Sets the resource_rules of this V1alpha1MatchResources. - - ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. # noqa: E501 - - :param resource_rules: The resource_rules of this V1alpha1MatchResources. # noqa: E501 - :type: list[V1alpha1NamedRuleWithOperations] - """ - - self._resource_rules = resource_rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1MatchResources): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1MatchResources): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_named_rule_with_operations.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_named_rule_with_operations.py deleted file mode 100644 index 5de7ab4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_named_rule_with_operations.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1NamedRuleWithOperations(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'api_versions': 'list[str]', - 'operations': 'list[str]', - 'resource_names': 'list[str]', - 'resources': 'list[str]', - 'scope': 'str' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'api_versions': 'apiVersions', - 'operations': 'operations', - 'resource_names': 'resourceNames', - 'resources': 'resources', - 'scope': 'scope' - } - - def __init__(self, api_groups=None, api_versions=None, operations=None, resource_names=None, resources=None, scope=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1NamedRuleWithOperations - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._api_versions = None - self._operations = None - self._resource_names = None - self._resources = None - self._scope = None - self.discriminator = None - - if api_groups is not None: - self.api_groups = api_groups - if api_versions is not None: - self.api_versions = api_versions - if operations is not None: - self.operations = operations - if resource_names is not None: - self.resource_names = resource_names - if resources is not None: - self.resources = resources - if scope is not None: - self.scope = scope - - @property - def api_groups(self): - """Gets the api_groups of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_groups of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1alpha1NamedRuleWithOperations. - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_groups: The api_groups of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_groups = api_groups - - @property - def api_versions(self): - """Gets the api_versions of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_versions of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_versions - - @api_versions.setter - def api_versions(self, api_versions): - """Sets the api_versions of this V1alpha1NamedRuleWithOperations. - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_versions: The api_versions of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_versions = api_versions - - @property - def operations(self): - """Gets the operations of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The operations of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._operations - - @operations.setter - def operations(self, operations): - """Sets the operations of this V1alpha1NamedRuleWithOperations. - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param operations: The operations of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._operations = operations - - @property - def resource_names(self): - """Gets the resource_names of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :return: The resource_names of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._resource_names - - @resource_names.setter - def resource_names(self, resource_names): - """Sets the resource_names of this V1alpha1NamedRuleWithOperations. - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :param resource_names: The resource_names of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._resource_names = resource_names - - @property - def resources(self): - """Gets the resources of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :return: The resources of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1alpha1NamedRuleWithOperations. - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :param resources: The resources of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._resources = resources - - @property - def scope(self): - """Gets the scope of this V1alpha1NamedRuleWithOperations. # noqa: E501 - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :return: The scope of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :rtype: str - """ - return self._scope - - @scope.setter - def scope(self, scope): - """Sets the scope of this V1alpha1NamedRuleWithOperations. - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :param scope: The scope of this V1alpha1NamedRuleWithOperations. # noqa: E501 - :type: str - """ - - self._scope = scope - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1NamedRuleWithOperations): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1NamedRuleWithOperations): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_kind.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_kind.py deleted file mode 100644 index 56abb9d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_kind.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ParamKind(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind' - } - - def __init__(self, api_version=None, kind=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ParamKind - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ParamKind. # noqa: E501 - - APIVersion is the API group version the resources belong to. In format of \"group/version\". Required. # noqa: E501 - - :return: The api_version of this V1alpha1ParamKind. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ParamKind. - - APIVersion is the API group version the resources belong to. In format of \"group/version\". Required. # noqa: E501 - - :param api_version: The api_version of this V1alpha1ParamKind. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1ParamKind. # noqa: E501 - - Kind is the API kind the resources belong to. Required. # noqa: E501 - - :return: The kind of this V1alpha1ParamKind. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ParamKind. - - Kind is the API kind the resources belong to. Required. # noqa: E501 - - :param kind: The kind of this V1alpha1ParamKind. # noqa: E501 - :type: str - """ - - self._kind = kind - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ParamKind): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ParamKind): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_ref.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_ref.py deleted file mode 100644 index 1e3291b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_param_ref.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ParamRef(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str', - 'parameter_not_found_action': 'str', - 'selector': 'V1LabelSelector' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace', - 'parameter_not_found_action': 'parameterNotFoundAction', - 'selector': 'selector' - } - - def __init__(self, name=None, namespace=None, parameter_not_found_action=None, selector=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ParamRef - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self._parameter_not_found_action = None - self._selector = None - self.discriminator = None - - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if parameter_not_found_action is not None: - self.parameter_not_found_action = parameter_not_found_action - if selector is not None: - self.selector = selector - - @property - def name(self): - """Gets the name of this V1alpha1ParamRef. # noqa: E501 - - `name` is the name of the resource being referenced. `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. # noqa: E501 - - :return: The name of this V1alpha1ParamRef. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha1ParamRef. - - `name` is the name of the resource being referenced. `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. # noqa: E501 - - :param name: The name of this V1alpha1ParamRef. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1alpha1ParamRef. # noqa: E501 - - namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. # noqa: E501 - - :return: The namespace of this V1alpha1ParamRef. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1alpha1ParamRef. - - namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. # noqa: E501 - - :param namespace: The namespace of this V1alpha1ParamRef. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def parameter_not_found_action(self): - """Gets the parameter_not_found_action of this V1alpha1ParamRef. # noqa: E501 - - `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. Allowed values are `Allow` or `Deny` Default to `Deny` # noqa: E501 - - :return: The parameter_not_found_action of this V1alpha1ParamRef. # noqa: E501 - :rtype: str - """ - return self._parameter_not_found_action - - @parameter_not_found_action.setter - def parameter_not_found_action(self, parameter_not_found_action): - """Sets the parameter_not_found_action of this V1alpha1ParamRef. - - `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. Allowed values are `Allow` or `Deny` Default to `Deny` # noqa: E501 - - :param parameter_not_found_action: The parameter_not_found_action of this V1alpha1ParamRef. # noqa: E501 - :type: str - """ - - self._parameter_not_found_action = parameter_not_found_action - - @property - def selector(self): - """Gets the selector of this V1alpha1ParamRef. # noqa: E501 - - - :return: The selector of this V1alpha1ParamRef. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1alpha1ParamRef. - - - :param selector: The selector of this V1alpha1ParamRef. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ParamRef): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ParamRef): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_parent_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_parent_reference.py deleted file mode 100644 index 41c8948..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_parent_reference.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ParentReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group': 'str', - 'name': 'str', - 'namespace': 'str', - 'resource': 'str' - } - - attribute_map = { - 'group': 'group', - 'name': 'name', - 'namespace': 'namespace', - 'resource': 'resource' - } - - def __init__(self, group=None, name=None, namespace=None, resource=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ParentReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group = None - self._name = None - self._namespace = None - self._resource = None - self.discriminator = None - - if group is not None: - self.group = group - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if resource is not None: - self.resource = resource - - @property - def group(self): - """Gets the group of this V1alpha1ParentReference. # noqa: E501 - - Group is the group of the object being referenced. # noqa: E501 - - :return: The group of this V1alpha1ParentReference. # noqa: E501 - :rtype: str - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1alpha1ParentReference. - - Group is the group of the object being referenced. # noqa: E501 - - :param group: The group of this V1alpha1ParentReference. # noqa: E501 - :type: str - """ - - self._group = group - - @property - def name(self): - """Gets the name of this V1alpha1ParentReference. # noqa: E501 - - Name is the name of the object being referenced. # noqa: E501 - - :return: The name of this V1alpha1ParentReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha1ParentReference. - - Name is the name of the object being referenced. # noqa: E501 - - :param name: The name of this V1alpha1ParentReference. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1alpha1ParentReference. # noqa: E501 - - Namespace is the namespace of the object being referenced. # noqa: E501 - - :return: The namespace of this V1alpha1ParentReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1alpha1ParentReference. - - Namespace is the namespace of the object being referenced. # noqa: E501 - - :param namespace: The namespace of this V1alpha1ParentReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def resource(self): - """Gets the resource of this V1alpha1ParentReference. # noqa: E501 - - Resource is the resource of the object being referenced. # noqa: E501 - - :return: The resource of this V1alpha1ParentReference. # noqa: E501 - :rtype: str - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V1alpha1ParentReference. - - Resource is the resource of the object being referenced. # noqa: E501 - - :param resource: The resource of this V1alpha1ParentReference. # noqa: E501 - :type: str - """ - - self._resource = resource - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ParentReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ParentReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review.py deleted file mode 100644 index 30af777..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1SelfSubjectReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'status': 'V1alpha1SelfSubjectReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1SelfSubjectReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha1SelfSubjectReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1SelfSubjectReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1SelfSubjectReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1SelfSubjectReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1SelfSubjectReview. # noqa: E501 - - - :return: The metadata of this V1alpha1SelfSubjectReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1SelfSubjectReview. - - - :param metadata: The metadata of this V1alpha1SelfSubjectReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def status(self): - """Gets the status of this V1alpha1SelfSubjectReview. # noqa: E501 - - - :return: The status of this V1alpha1SelfSubjectReview. # noqa: E501 - :rtype: V1alpha1SelfSubjectReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha1SelfSubjectReview. - - - :param status: The status of this V1alpha1SelfSubjectReview. # noqa: E501 - :type: V1alpha1SelfSubjectReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1SelfSubjectReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1SelfSubjectReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review_status.py deleted file mode 100644 index d606a92..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_self_subject_review_status.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1SelfSubjectReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'user_info': 'V1UserInfo' - } - - attribute_map = { - 'user_info': 'userInfo' - } - - def __init__(self, user_info=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1SelfSubjectReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._user_info = None - self.discriminator = None - - if user_info is not None: - self.user_info = user_info - - @property - def user_info(self): - """Gets the user_info of this V1alpha1SelfSubjectReviewStatus. # noqa: E501 - - - :return: The user_info of this V1alpha1SelfSubjectReviewStatus. # noqa: E501 - :rtype: V1UserInfo - """ - return self._user_info - - @user_info.setter - def user_info(self, user_info): - """Sets the user_info of this V1alpha1SelfSubjectReviewStatus. - - - :param user_info: The user_info of this V1alpha1SelfSubjectReviewStatus. # noqa: E501 - :type: V1UserInfo - """ - - self._user_info = user_info - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1SelfSubjectReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1SelfSubjectReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_server_storage_version.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_server_storage_version.py deleted file mode 100644 index 75d0181..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_server_storage_version.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ServerStorageVersion(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_server_id': 'str', - 'decodable_versions': 'list[str]', - 'encoding_version': 'str', - 'served_versions': 'list[str]' - } - - attribute_map = { - 'api_server_id': 'apiServerID', - 'decodable_versions': 'decodableVersions', - 'encoding_version': 'encodingVersion', - 'served_versions': 'servedVersions' - } - - def __init__(self, api_server_id=None, decodable_versions=None, encoding_version=None, served_versions=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ServerStorageVersion - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_server_id = None - self._decodable_versions = None - self._encoding_version = None - self._served_versions = None - self.discriminator = None - - if api_server_id is not None: - self.api_server_id = api_server_id - if decodable_versions is not None: - self.decodable_versions = decodable_versions - if encoding_version is not None: - self.encoding_version = encoding_version - if served_versions is not None: - self.served_versions = served_versions - - @property - def api_server_id(self): - """Gets the api_server_id of this V1alpha1ServerStorageVersion. # noqa: E501 - - The ID of the reporting API server. # noqa: E501 - - :return: The api_server_id of this V1alpha1ServerStorageVersion. # noqa: E501 - :rtype: str - """ - return self._api_server_id - - @api_server_id.setter - def api_server_id(self, api_server_id): - """Sets the api_server_id of this V1alpha1ServerStorageVersion. - - The ID of the reporting API server. # noqa: E501 - - :param api_server_id: The api_server_id of this V1alpha1ServerStorageVersion. # noqa: E501 - :type: str - """ - - self._api_server_id = api_server_id - - @property - def decodable_versions(self): - """Gets the decodable_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - - The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions. # noqa: E501 - - :return: The decodable_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - :rtype: list[str] - """ - return self._decodable_versions - - @decodable_versions.setter - def decodable_versions(self, decodable_versions): - """Sets the decodable_versions of this V1alpha1ServerStorageVersion. - - The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions. # noqa: E501 - - :param decodable_versions: The decodable_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - :type: list[str] - """ - - self._decodable_versions = decodable_versions - - @property - def encoding_version(self): - """Gets the encoding_version of this V1alpha1ServerStorageVersion. # noqa: E501 - - The API server encodes the object to this version when persisting it in the backend (e.g., etcd). # noqa: E501 - - :return: The encoding_version of this V1alpha1ServerStorageVersion. # noqa: E501 - :rtype: str - """ - return self._encoding_version - - @encoding_version.setter - def encoding_version(self, encoding_version): - """Sets the encoding_version of this V1alpha1ServerStorageVersion. - - The API server encodes the object to this version when persisting it in the backend (e.g., etcd). # noqa: E501 - - :param encoding_version: The encoding_version of this V1alpha1ServerStorageVersion. # noqa: E501 - :type: str - """ - - self._encoding_version = encoding_version - - @property - def served_versions(self): - """Gets the served_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - - The API server can serve these versions. DecodableVersions must include all ServedVersions. # noqa: E501 - - :return: The served_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - :rtype: list[str] - """ - return self._served_versions - - @served_versions.setter - def served_versions(self, served_versions): - """Sets the served_versions of this V1alpha1ServerStorageVersion. - - The API server can serve these versions. DecodableVersions must include all ServedVersions. # noqa: E501 - - :param served_versions: The served_versions of this V1alpha1ServerStorageVersion. # noqa: E501 - :type: list[str] - """ - - self._served_versions = served_versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ServerStorageVersion): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ServerStorageVersion): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr.py deleted file mode 100644 index 90d66ea..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ServiceCIDR(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha1ServiceCIDRSpec', - 'status': 'V1alpha1ServiceCIDRStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ServiceCIDR - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ServiceCIDR. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ServiceCIDR. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ServiceCIDR. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ServiceCIDR. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1ServiceCIDR. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ServiceCIDR. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ServiceCIDR. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ServiceCIDR. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ServiceCIDR. # noqa: E501 - - - :return: The metadata of this V1alpha1ServiceCIDR. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ServiceCIDR. - - - :param metadata: The metadata of this V1alpha1ServiceCIDR. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1ServiceCIDR. # noqa: E501 - - - :return: The spec of this V1alpha1ServiceCIDR. # noqa: E501 - :rtype: V1alpha1ServiceCIDRSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1ServiceCIDR. - - - :param spec: The spec of this V1alpha1ServiceCIDR. # noqa: E501 - :type: V1alpha1ServiceCIDRSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1alpha1ServiceCIDR. # noqa: E501 - - - :return: The status of this V1alpha1ServiceCIDR. # noqa: E501 - :rtype: V1alpha1ServiceCIDRStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha1ServiceCIDR. - - - :param status: The status of this V1alpha1ServiceCIDR. # noqa: E501 - :type: V1alpha1ServiceCIDRStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ServiceCIDR): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ServiceCIDR): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_list.py deleted file mode 100644 index 9f4b0bf..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ServiceCIDRList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1ServiceCIDR]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ServiceCIDRList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ServiceCIDRList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ServiceCIDRList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ServiceCIDRList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ServiceCIDRList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1ServiceCIDRList. # noqa: E501 - - items is the list of ServiceCIDRs. # noqa: E501 - - :return: The items of this V1alpha1ServiceCIDRList. # noqa: E501 - :rtype: list[V1alpha1ServiceCIDR] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1ServiceCIDRList. - - items is the list of ServiceCIDRs. # noqa: E501 - - :param items: The items of this V1alpha1ServiceCIDRList. # noqa: E501 - :type: list[V1alpha1ServiceCIDR] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1ServiceCIDRList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ServiceCIDRList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ServiceCIDRList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ServiceCIDRList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ServiceCIDRList. # noqa: E501 - - - :return: The metadata of this V1alpha1ServiceCIDRList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ServiceCIDRList. - - - :param metadata: The metadata of this V1alpha1ServiceCIDRList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ServiceCIDRList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ServiceCIDRList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_spec.py deleted file mode 100644 index ca559c6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_spec.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ServiceCIDRSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'cidrs': 'list[str]' - } - - attribute_map = { - 'cidrs': 'cidrs' - } - - def __init__(self, cidrs=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ServiceCIDRSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._cidrs = None - self.discriminator = None - - if cidrs is not None: - self.cidrs = cidrs - - @property - def cidrs(self): - """Gets the cidrs of this V1alpha1ServiceCIDRSpec. # noqa: E501 - - CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. # noqa: E501 - - :return: The cidrs of this V1alpha1ServiceCIDRSpec. # noqa: E501 - :rtype: list[str] - """ - return self._cidrs - - @cidrs.setter - def cidrs(self, cidrs): - """Sets the cidrs of this V1alpha1ServiceCIDRSpec. - - CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. # noqa: E501 - - :param cidrs: The cidrs of this V1alpha1ServiceCIDRSpec. # noqa: E501 - :type: list[str] - """ - - self._cidrs = cidrs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ServiceCIDRSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ServiceCIDRSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_status.py deleted file mode 100644 index d42e49d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_service_cidr_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ServiceCIDRStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1Condition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ServiceCIDRStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1alpha1ServiceCIDRStatus. # noqa: E501 - - conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state # noqa: E501 - - :return: The conditions of this V1alpha1ServiceCIDRStatus. # noqa: E501 - :rtype: list[V1Condition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1alpha1ServiceCIDRStatus. - - conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state # noqa: E501 - - :param conditions: The conditions of this V1alpha1ServiceCIDRStatus. # noqa: E501 - :type: list[V1Condition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ServiceCIDRStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ServiceCIDRStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version.py deleted file mode 100644 index ae10532..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version.py +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1StorageVersion(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'object', - 'status': 'V1alpha1StorageVersionStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1StorageVersion - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha1StorageVersion. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1StorageVersion. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1StorageVersion. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1StorageVersion. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1StorageVersion. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1StorageVersion. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1StorageVersion. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1StorageVersion. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1StorageVersion. # noqa: E501 - - - :return: The metadata of this V1alpha1StorageVersion. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1StorageVersion. - - - :param metadata: The metadata of this V1alpha1StorageVersion. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1StorageVersion. # noqa: E501 - - Spec is an empty spec. It is here to comply with Kubernetes API style. # noqa: E501 - - :return: The spec of this V1alpha1StorageVersion. # noqa: E501 - :rtype: object - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1StorageVersion. - - Spec is an empty spec. It is here to comply with Kubernetes API style. # noqa: E501 - - :param spec: The spec of this V1alpha1StorageVersion. # noqa: E501 - :type: object - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1alpha1StorageVersion. # noqa: E501 - - - :return: The status of this V1alpha1StorageVersion. # noqa: E501 - :rtype: V1alpha1StorageVersionStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha1StorageVersion. - - - :param status: The status of this V1alpha1StorageVersion. # noqa: E501 - :type: V1alpha1StorageVersionStatus - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1StorageVersion): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1StorageVersion): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_condition.py deleted file mode 100644 index b19eec7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_condition.py +++ /dev/null @@ -1,265 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1StorageVersionCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'observed_generation': 'int', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'observed_generation': 'observedGeneration', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, observed_generation=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1StorageVersionCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._observed_generation = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if observed_generation is not None: - self.observed_generation = observed_generation - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1alpha1StorageVersionCondition. # noqa: E501 - - Last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1alpha1StorageVersionCondition. - - Last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1alpha1StorageVersionCondition. # noqa: E501 - - A human readable message indicating details about the transition. # noqa: E501 - - :return: The message of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1alpha1StorageVersionCondition. - - A human readable message indicating details about the transition. # noqa: E501 - - :param message: The message of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def observed_generation(self): - """Gets the observed_generation of this V1alpha1StorageVersionCondition. # noqa: E501 - - If set, this represents the .metadata.generation that the condition was set based upon. # noqa: E501 - - :return: The observed_generation of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1alpha1StorageVersionCondition. - - If set, this represents the .metadata.generation that the condition was set based upon. # noqa: E501 - - :param observed_generation: The observed_generation of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def reason(self): - """Gets the reason of this V1alpha1StorageVersionCondition. # noqa: E501 - - The reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1alpha1StorageVersionCondition. - - The reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and reason is None: # noqa: E501 - raise ValueError("Invalid value for `reason`, must not be `None`") # noqa: E501 - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1alpha1StorageVersionCondition. # noqa: E501 - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :return: The status of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha1StorageVersionCondition. - - Status of the condition, one of True, False, Unknown. # noqa: E501 - - :param status: The status of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V1alpha1StorageVersionCondition. # noqa: E501 - - Type of the condition. # noqa: E501 - - :return: The type of this V1alpha1StorageVersionCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1alpha1StorageVersionCondition. - - Type of the condition. # noqa: E501 - - :param type: The type of this V1alpha1StorageVersionCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1StorageVersionCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1StorageVersionCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_list.py deleted file mode 100644 index eaf39bc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1StorageVersionList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1StorageVersion]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1StorageVersionList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1StorageVersionList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1StorageVersionList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1StorageVersionList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1StorageVersionList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1StorageVersionList. # noqa: E501 - - Items holds a list of StorageVersion # noqa: E501 - - :return: The items of this V1alpha1StorageVersionList. # noqa: E501 - :rtype: list[V1alpha1StorageVersion] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1StorageVersionList. - - Items holds a list of StorageVersion # noqa: E501 - - :param items: The items of this V1alpha1StorageVersionList. # noqa: E501 - :type: list[V1alpha1StorageVersion] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1StorageVersionList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1StorageVersionList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1StorageVersionList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1StorageVersionList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1StorageVersionList. # noqa: E501 - - - :return: The metadata of this V1alpha1StorageVersionList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1StorageVersionList. - - - :param metadata: The metadata of this V1alpha1StorageVersionList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1StorageVersionList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1StorageVersionList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_status.py deleted file mode 100644 index 2ab300a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_storage_version_status.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1StorageVersionStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'common_encoding_version': 'str', - 'conditions': 'list[V1alpha1StorageVersionCondition]', - 'storage_versions': 'list[V1alpha1ServerStorageVersion]' - } - - attribute_map = { - 'common_encoding_version': 'commonEncodingVersion', - 'conditions': 'conditions', - 'storage_versions': 'storageVersions' - } - - def __init__(self, common_encoding_version=None, conditions=None, storage_versions=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1StorageVersionStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._common_encoding_version = None - self._conditions = None - self._storage_versions = None - self.discriminator = None - - if common_encoding_version is not None: - self.common_encoding_version = common_encoding_version - if conditions is not None: - self.conditions = conditions - if storage_versions is not None: - self.storage_versions = storage_versions - - @property - def common_encoding_version(self): - """Gets the common_encoding_version of this V1alpha1StorageVersionStatus. # noqa: E501 - - If all API server instances agree on the same encoding storage version, then this field is set to that version. Otherwise this field is left empty. API servers should finish updating its storageVersionStatus entry before serving write operations, so that this field will be in sync with the reality. # noqa: E501 - - :return: The common_encoding_version of this V1alpha1StorageVersionStatus. # noqa: E501 - :rtype: str - """ - return self._common_encoding_version - - @common_encoding_version.setter - def common_encoding_version(self, common_encoding_version): - """Sets the common_encoding_version of this V1alpha1StorageVersionStatus. - - If all API server instances agree on the same encoding storage version, then this field is set to that version. Otherwise this field is left empty. API servers should finish updating its storageVersionStatus entry before serving write operations, so that this field will be in sync with the reality. # noqa: E501 - - :param common_encoding_version: The common_encoding_version of this V1alpha1StorageVersionStatus. # noqa: E501 - :type: str - """ - - self._common_encoding_version = common_encoding_version - - @property - def conditions(self): - """Gets the conditions of this V1alpha1StorageVersionStatus. # noqa: E501 - - The latest available observations of the storageVersion's state. # noqa: E501 - - :return: The conditions of this V1alpha1StorageVersionStatus. # noqa: E501 - :rtype: list[V1alpha1StorageVersionCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1alpha1StorageVersionStatus. - - The latest available observations of the storageVersion's state. # noqa: E501 - - :param conditions: The conditions of this V1alpha1StorageVersionStatus. # noqa: E501 - :type: list[V1alpha1StorageVersionCondition] - """ - - self._conditions = conditions - - @property - def storage_versions(self): - """Gets the storage_versions of this V1alpha1StorageVersionStatus. # noqa: E501 - - The reported versions per API server instance. # noqa: E501 - - :return: The storage_versions of this V1alpha1StorageVersionStatus. # noqa: E501 - :rtype: list[V1alpha1ServerStorageVersion] - """ - return self._storage_versions - - @storage_versions.setter - def storage_versions(self, storage_versions): - """Sets the storage_versions of this V1alpha1StorageVersionStatus. - - The reported versions per API server instance. # noqa: E501 - - :param storage_versions: The storage_versions of this V1alpha1StorageVersionStatus. # noqa: E501 - :type: list[V1alpha1ServerStorageVersion] - """ - - self._storage_versions = storage_versions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1StorageVersionStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1StorageVersionStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_type_checking.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_type_checking.py deleted file mode 100644 index cc5568b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_type_checking.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1TypeChecking(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression_warnings': 'list[V1alpha1ExpressionWarning]' - } - - attribute_map = { - 'expression_warnings': 'expressionWarnings' - } - - def __init__(self, expression_warnings=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1TypeChecking - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression_warnings = None - self.discriminator = None - - if expression_warnings is not None: - self.expression_warnings = expression_warnings - - @property - def expression_warnings(self): - """Gets the expression_warnings of this V1alpha1TypeChecking. # noqa: E501 - - The type checking warnings for each expression. # noqa: E501 - - :return: The expression_warnings of this V1alpha1TypeChecking. # noqa: E501 - :rtype: list[V1alpha1ExpressionWarning] - """ - return self._expression_warnings - - @expression_warnings.setter - def expression_warnings(self, expression_warnings): - """Sets the expression_warnings of this V1alpha1TypeChecking. - - The type checking warnings for each expression. # noqa: E501 - - :param expression_warnings: The expression_warnings of this V1alpha1TypeChecking. # noqa: E501 - :type: list[V1alpha1ExpressionWarning] - """ - - self._expression_warnings = expression_warnings - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1TypeChecking): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1TypeChecking): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy.py deleted file mode 100644 index 92cbf2e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha1ValidatingAdmissionPolicySpec', - 'status': 'V1alpha1ValidatingAdmissionPolicyStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ValidatingAdmissionPolicy. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ValidatingAdmissionPolicy. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The metadata of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ValidatingAdmissionPolicy. - - - :param metadata: The metadata of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The spec of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1alpha1ValidatingAdmissionPolicySpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1ValidatingAdmissionPolicy. - - - :param spec: The spec of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1alpha1ValidatingAdmissionPolicySpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The status of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1alpha1ValidatingAdmissionPolicyStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha1ValidatingAdmissionPolicy. - - - :param status: The status of this V1alpha1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1alpha1ValidatingAdmissionPolicyStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding.py deleted file mode 100644 index 39ee81e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicyBinding(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha1ValidatingAdmissionPolicyBindingSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicyBinding - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ValidatingAdmissionPolicyBinding. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ValidatingAdmissionPolicyBinding. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - - - :return: The metadata of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ValidatingAdmissionPolicyBinding. - - - :param metadata: The metadata of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - - - :return: The spec of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: V1alpha1ValidatingAdmissionPolicyBindingSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha1ValidatingAdmissionPolicyBinding. - - - :param spec: The spec of this V1alpha1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: V1alpha1ValidatingAdmissionPolicyBindingSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBinding): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBinding): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_list.py deleted file mode 100644 index 7dfe70a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_list.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicyBindingList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1ValidatingAdmissionPolicyBinding]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicyBindingList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if items is not None: - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ValidatingAdmissionPolicyBindingList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - List of PolicyBinding. # noqa: E501 - - :return: The items of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: list[V1alpha1ValidatingAdmissionPolicyBinding] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1ValidatingAdmissionPolicyBindingList. - - List of PolicyBinding. # noqa: E501 - - :param items: The items of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: list[V1alpha1ValidatingAdmissionPolicyBinding] - """ - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ValidatingAdmissionPolicyBindingList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - - :return: The metadata of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ValidatingAdmissionPolicyBindingList. - - - :param metadata: The metadata of this V1alpha1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBindingList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBindingList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_spec.py deleted file mode 100644 index 36f465f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_binding_spec.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicyBindingSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_resources': 'V1alpha1MatchResources', - 'param_ref': 'V1alpha1ParamRef', - 'policy_name': 'str', - 'validation_actions': 'list[str]' - } - - attribute_map = { - 'match_resources': 'matchResources', - 'param_ref': 'paramRef', - 'policy_name': 'policyName', - 'validation_actions': 'validationActions' - } - - def __init__(self, match_resources=None, param_ref=None, policy_name=None, validation_actions=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicyBindingSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_resources = None - self._param_ref = None - self._policy_name = None - self._validation_actions = None - self.discriminator = None - - if match_resources is not None: - self.match_resources = match_resources - if param_ref is not None: - self.param_ref = param_ref - if policy_name is not None: - self.policy_name = policy_name - if validation_actions is not None: - self.validation_actions = validation_actions - - @property - def match_resources(self): - """Gets the match_resources of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - - :return: The match_resources of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: V1alpha1MatchResources - """ - return self._match_resources - - @match_resources.setter - def match_resources(self, match_resources): - """Sets the match_resources of this V1alpha1ValidatingAdmissionPolicyBindingSpec. - - - :param match_resources: The match_resources of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: V1alpha1MatchResources - """ - - self._match_resources = match_resources - - @property - def param_ref(self): - """Gets the param_ref of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - - :return: The param_ref of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: V1alpha1ParamRef - """ - return self._param_ref - - @param_ref.setter - def param_ref(self, param_ref): - """Sets the param_ref of this V1alpha1ValidatingAdmissionPolicyBindingSpec. - - - :param param_ref: The param_ref of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: V1alpha1ParamRef - """ - - self._param_ref = param_ref - - @property - def policy_name(self): - """Gets the policy_name of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. # noqa: E501 - - :return: The policy_name of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: str - """ - return self._policy_name - - @policy_name.setter - def policy_name(self, policy_name): - """Sets the policy_name of this V1alpha1ValidatingAdmissionPolicyBindingSpec. - - PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. # noqa: E501 - - :param policy_name: The policy_name of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: str - """ - - self._policy_name = policy_name - - @property - def validation_actions(self): - """Gets the validation_actions of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions. Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. The supported actions values are: \"Deny\" specifies that a validation failure results in a denied request. \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"` Clients should expect to handle additional values by ignoring any values not recognized. \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. Required. # noqa: E501 - - :return: The validation_actions of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: list[str] - """ - return self._validation_actions - - @validation_actions.setter - def validation_actions(self, validation_actions): - """Sets the validation_actions of this V1alpha1ValidatingAdmissionPolicyBindingSpec. - - validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions. Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. The supported actions values are: \"Deny\" specifies that a validation failure results in a denied request. \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"` Clients should expect to handle additional values by ignoring any values not recognized. \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. Required. # noqa: E501 - - :param validation_actions: The validation_actions of this V1alpha1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: list[str] - """ - - self._validation_actions = validation_actions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBindingSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyBindingSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_list.py deleted file mode 100644 index caad243..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_list.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicyList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1ValidatingAdmissionPolicy]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicyList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if items is not None: - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1ValidatingAdmissionPolicyList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - - List of ValidatingAdmissionPolicy. # noqa: E501 - - :return: The items of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: list[V1alpha1ValidatingAdmissionPolicy] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1ValidatingAdmissionPolicyList. - - List of ValidatingAdmissionPolicy. # noqa: E501 - - :param items: The items of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :type: list[V1alpha1ValidatingAdmissionPolicy] - """ - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1ValidatingAdmissionPolicyList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - - - :return: The metadata of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1ValidatingAdmissionPolicyList. - - - :param metadata: The metadata of this V1alpha1ValidatingAdmissionPolicyList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_spec.py deleted file mode 100644 index 8587f68..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_spec.py +++ /dev/null @@ -1,286 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicySpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audit_annotations': 'list[V1alpha1AuditAnnotation]', - 'failure_policy': 'str', - 'match_conditions': 'list[V1alpha1MatchCondition]', - 'match_constraints': 'V1alpha1MatchResources', - 'param_kind': 'V1alpha1ParamKind', - 'validations': 'list[V1alpha1Validation]', - 'variables': 'list[V1alpha1Variable]' - } - - attribute_map = { - 'audit_annotations': 'auditAnnotations', - 'failure_policy': 'failurePolicy', - 'match_conditions': 'matchConditions', - 'match_constraints': 'matchConstraints', - 'param_kind': 'paramKind', - 'validations': 'validations', - 'variables': 'variables' - } - - def __init__(self, audit_annotations=None, failure_policy=None, match_conditions=None, match_constraints=None, param_kind=None, validations=None, variables=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicySpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audit_annotations = None - self._failure_policy = None - self._match_conditions = None - self._match_constraints = None - self._param_kind = None - self._validations = None - self._variables = None - self.discriminator = None - - if audit_annotations is not None: - self.audit_annotations = audit_annotations - if failure_policy is not None: - self.failure_policy = failure_policy - if match_conditions is not None: - self.match_conditions = match_conditions - if match_constraints is not None: - self.match_constraints = match_constraints - if param_kind is not None: - self.param_kind = param_kind - if validations is not None: - self.validations = validations - if variables is not None: - self.variables = variables - - @property - def audit_annotations(self): - """Gets the audit_annotations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. # noqa: E501 - - :return: The audit_annotations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1alpha1AuditAnnotation] - """ - return self._audit_annotations - - @audit_annotations.setter - def audit_annotations(self, audit_annotations): - """Sets the audit_annotations of this V1alpha1ValidatingAdmissionPolicySpec. - - auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. # noqa: E501 - - :param audit_annotations: The audit_annotations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1alpha1AuditAnnotation] - """ - - self._audit_annotations = audit_annotations - - @property - def failure_policy(self): - """Gets the failure_policy of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. failurePolicy does not define how validations that evaluate to false are handled. When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. Allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :return: The failure_policy of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: str - """ - return self._failure_policy - - @failure_policy.setter - def failure_policy(self, failure_policy): - """Sets the failure_policy of this V1alpha1ValidatingAdmissionPolicySpec. - - failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. failurePolicy does not define how validations that evaluate to false are handled. When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. Allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :param failure_policy: The failure_policy of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: str - """ - - self._failure_policy = failure_policy - - @property - def match_conditions(self): - """Gets the match_conditions of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the policy is skipped # noqa: E501 - - :return: The match_conditions of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1alpha1MatchCondition] - """ - return self._match_conditions - - @match_conditions.setter - def match_conditions(self, match_conditions): - """Sets the match_conditions of this V1alpha1ValidatingAdmissionPolicySpec. - - MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the policy is skipped # noqa: E501 - - :param match_conditions: The match_conditions of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1alpha1MatchCondition] - """ - - self._match_conditions = match_conditions - - @property - def match_constraints(self): - """Gets the match_constraints of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - - :return: The match_constraints of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: V1alpha1MatchResources - """ - return self._match_constraints - - @match_constraints.setter - def match_constraints(self, match_constraints): - """Sets the match_constraints of this V1alpha1ValidatingAdmissionPolicySpec. - - - :param match_constraints: The match_constraints of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: V1alpha1MatchResources - """ - - self._match_constraints = match_constraints - - @property - def param_kind(self): - """Gets the param_kind of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - - :return: The param_kind of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: V1alpha1ParamKind - """ - return self._param_kind - - @param_kind.setter - def param_kind(self, param_kind): - """Sets the param_kind of this V1alpha1ValidatingAdmissionPolicySpec. - - - :param param_kind: The param_kind of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: V1alpha1ParamKind - """ - - self._param_kind = param_kind - - @property - def validations(self): - """Gets the validations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. # noqa: E501 - - :return: The validations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1alpha1Validation] - """ - return self._validations - - @validations.setter - def validations(self, validations): - """Sets the validations of this V1alpha1ValidatingAdmissionPolicySpec. - - Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. # noqa: E501 - - :param validations: The validations of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1alpha1Validation] - """ - - self._validations = validations - - @property - def variables(self): - """Gets the variables of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - - Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. # noqa: E501 - - :return: The variables of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1alpha1Variable] - """ - return self._variables - - @variables.setter - def variables(self, variables): - """Sets the variables of this V1alpha1ValidatingAdmissionPolicySpec. - - Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. # noqa: E501 - - :param variables: The variables of this V1alpha1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1alpha1Variable] - """ - - self._variables = variables - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicySpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicySpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_status.py deleted file mode 100644 index 66f3054..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validating_admission_policy_status.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1ValidatingAdmissionPolicyStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1Condition]', - 'observed_generation': 'int', - 'type_checking': 'V1alpha1TypeChecking' - } - - attribute_map = { - 'conditions': 'conditions', - 'observed_generation': 'observedGeneration', - 'type_checking': 'typeChecking' - } - - def __init__(self, conditions=None, observed_generation=None, type_checking=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1ValidatingAdmissionPolicyStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._observed_generation = None - self._type_checking = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if observed_generation is not None: - self.observed_generation = observed_generation - if type_checking is not None: - self.type_checking = type_checking - - @property - def conditions(self): - """Gets the conditions of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - - The conditions represent the latest available observations of a policy's current state. # noqa: E501 - - :return: The conditions of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: list[V1Condition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1alpha1ValidatingAdmissionPolicyStatus. - - The conditions represent the latest available observations of a policy's current state. # noqa: E501 - - :param conditions: The conditions of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: list[V1Condition] - """ - - self._conditions = conditions - - @property - def observed_generation(self): - """Gets the observed_generation of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - - The generation observed by the controller. # noqa: E501 - - :return: The observed_generation of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1alpha1ValidatingAdmissionPolicyStatus. - - The generation observed by the controller. # noqa: E501 - - :param observed_generation: The observed_generation of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def type_checking(self): - """Gets the type_checking of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - - - :return: The type_checking of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: V1alpha1TypeChecking - """ - return self._type_checking - - @type_checking.setter - def type_checking(self, type_checking): - """Sets the type_checking of this V1alpha1ValidatingAdmissionPolicyStatus. - - - :param type_checking: The type_checking of this V1alpha1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: V1alpha1TypeChecking - """ - - self._type_checking = type_checking - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1ValidatingAdmissionPolicyStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validation.py deleted file mode 100644 index 8501d26..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_validation.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1Validation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'message': 'str', - 'message_expression': 'str', - 'reason': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'message': 'message', - 'message_expression': 'messageExpression', - 'reason': 'reason' - } - - def __init__(self, expression=None, message=None, message_expression=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1Validation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._message = None - self._message_expression = None - self._reason = None - self.discriminator = None - - self.expression = expression - if message is not None: - self.message = message - if message_expression is not None: - self.message_expression = message_expression - if reason is not None: - self.reason = reason - - @property - def expression(self): - """Gets the expression of this V1alpha1Validation. # noqa: E501 - - Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. For example, a variable named 'foo' can be accessed as 'variables.foo'. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ > 0\"} - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop > 0\"} - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d > 0\"} Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. Required. # noqa: E501 - - :return: The expression of this V1alpha1Validation. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1alpha1Validation. - - Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. For example, a variable named 'foo' can be accessed as 'variables.foo'. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ > 0\"} - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop > 0\"} - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d > 0\"} Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. Required. # noqa: E501 - - :param expression: The expression of this V1alpha1Validation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def message(self): - """Gets the message of this V1alpha1Validation. # noqa: E501 - - Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\". # noqa: E501 - - :return: The message of this V1alpha1Validation. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1alpha1Validation. - - Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\". # noqa: E501 - - :param message: The message of this V1alpha1Validation. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def message_expression(self): - """Gets the message_expression of this V1alpha1Validation. # noqa: E501 - - messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\" # noqa: E501 - - :return: The message_expression of this V1alpha1Validation. # noqa: E501 - :rtype: str - """ - return self._message_expression - - @message_expression.setter - def message_expression(self, message_expression): - """Sets the message_expression of this V1alpha1Validation. - - messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\" # noqa: E501 - - :param message_expression: The message_expression of this V1alpha1Validation. # noqa: E501 - :type: str - """ - - self._message_expression = message_expression - - @property - def reason(self): - """Gets the reason of this V1alpha1Validation. # noqa: E501 - - Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client. # noqa: E501 - - :return: The reason of this V1alpha1Validation. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1alpha1Validation. - - Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client. # noqa: E501 - - :param reason: The reason of this V1alpha1Validation. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1Validation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1Validation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_variable.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_variable.py deleted file mode 100644 index d22d947..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_variable.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1Variable(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'name': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'name': 'name' - } - - def __init__(self, expression=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1Variable - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._name = None - self.discriminator = None - - self.expression = expression - self.name = name - - @property - def expression(self): - """Gets the expression of this V1alpha1Variable. # noqa: E501 - - Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. # noqa: E501 - - :return: The expression of this V1alpha1Variable. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1alpha1Variable. - - Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. # noqa: E501 - - :param expression: The expression of this V1alpha1Variable. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def name(self): - """Gets the name of this V1alpha1Variable. # noqa: E501 - - Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo` # noqa: E501 - - :return: The name of this V1alpha1Variable. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha1Variable. - - Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo` # noqa: E501 - - :param name: The name of this V1alpha1Variable. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1Variable): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1Variable): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class.py deleted file mode 100644 index d3ebdc4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class.py +++ /dev/null @@ -1,233 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1VolumeAttributesClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'driver_name': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'parameters': 'dict(str, str)' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'driver_name': 'driverName', - 'kind': 'kind', - 'metadata': 'metadata', - 'parameters': 'parameters' - } - - def __init__(self, api_version=None, driver_name=None, kind=None, metadata=None, parameters=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1VolumeAttributesClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._driver_name = None - self._kind = None - self._metadata = None - self._parameters = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.driver_name = driver_name - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if parameters is not None: - self.parameters = parameters - - @property - def api_version(self): - """Gets the api_version of this V1alpha1VolumeAttributesClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1VolumeAttributesClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1VolumeAttributesClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1VolumeAttributesClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def driver_name(self): - """Gets the driver_name of this V1alpha1VolumeAttributesClass. # noqa: E501 - - Name of the CSI driver This field is immutable. # noqa: E501 - - :return: The driver_name of this V1alpha1VolumeAttributesClass. # noqa: E501 - :rtype: str - """ - return self._driver_name - - @driver_name.setter - def driver_name(self, driver_name): - """Sets the driver_name of this V1alpha1VolumeAttributesClass. - - Name of the CSI driver This field is immutable. # noqa: E501 - - :param driver_name: The driver_name of this V1alpha1VolumeAttributesClass. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver_name is None: # noqa: E501 - raise ValueError("Invalid value for `driver_name`, must not be `None`") # noqa: E501 - - self._driver_name = driver_name - - @property - def kind(self): - """Gets the kind of this V1alpha1VolumeAttributesClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1VolumeAttributesClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1VolumeAttributesClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1VolumeAttributesClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1VolumeAttributesClass. # noqa: E501 - - - :return: The metadata of this V1alpha1VolumeAttributesClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1VolumeAttributesClass. - - - :param metadata: The metadata of this V1alpha1VolumeAttributesClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def parameters(self): - """Gets the parameters of this V1alpha1VolumeAttributesClass. # noqa: E501 - - parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \"Infeasible\" state in the modifyVolumeStatus field. # noqa: E501 - - :return: The parameters of this V1alpha1VolumeAttributesClass. # noqa: E501 - :rtype: dict(str, str) - """ - return self._parameters - - @parameters.setter - def parameters(self, parameters): - """Sets the parameters of this V1alpha1VolumeAttributesClass. - - parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \"Infeasible\" state in the modifyVolumeStatus field. # noqa: E501 - - :param parameters: The parameters of this V1alpha1VolumeAttributesClass. # noqa: E501 - :type: dict(str, str) - """ - - self._parameters = parameters - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1VolumeAttributesClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1VolumeAttributesClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class_list.py deleted file mode 100644 index 48a022a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha1_volume_attributes_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha1VolumeAttributesClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha1VolumeAttributesClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha1VolumeAttributesClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha1VolumeAttributesClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha1VolumeAttributesClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha1VolumeAttributesClassList. # noqa: E501 - - items is the list of VolumeAttributesClass objects. # noqa: E501 - - :return: The items of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :rtype: list[V1alpha1VolumeAttributesClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha1VolumeAttributesClassList. - - items is the list of VolumeAttributesClass objects. # noqa: E501 - - :param items: The items of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :type: list[V1alpha1VolumeAttributesClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha1VolumeAttributesClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha1VolumeAttributesClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha1VolumeAttributesClassList. # noqa: E501 - - - :return: The metadata of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha1VolumeAttributesClassList. - - - :param metadata: The metadata of this V1alpha1VolumeAttributesClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha1VolumeAttributesClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha1VolumeAttributesClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_allocation_result.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_allocation_result.py deleted file mode 100644 index 405d8eb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_allocation_result.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2AllocationResult(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'available_on_nodes': 'V1NodeSelector', - 'resource_handles': 'list[V1alpha2ResourceHandle]', - 'shareable': 'bool' - } - - attribute_map = { - 'available_on_nodes': 'availableOnNodes', - 'resource_handles': 'resourceHandles', - 'shareable': 'shareable' - } - - def __init__(self, available_on_nodes=None, resource_handles=None, shareable=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2AllocationResult - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._available_on_nodes = None - self._resource_handles = None - self._shareable = None - self.discriminator = None - - if available_on_nodes is not None: - self.available_on_nodes = available_on_nodes - if resource_handles is not None: - self.resource_handles = resource_handles - if shareable is not None: - self.shareable = shareable - - @property - def available_on_nodes(self): - """Gets the available_on_nodes of this V1alpha2AllocationResult. # noqa: E501 - - - :return: The available_on_nodes of this V1alpha2AllocationResult. # noqa: E501 - :rtype: V1NodeSelector - """ - return self._available_on_nodes - - @available_on_nodes.setter - def available_on_nodes(self, available_on_nodes): - """Sets the available_on_nodes of this V1alpha2AllocationResult. - - - :param available_on_nodes: The available_on_nodes of this V1alpha2AllocationResult. # noqa: E501 - :type: V1NodeSelector - """ - - self._available_on_nodes = available_on_nodes - - @property - def resource_handles(self): - """Gets the resource_handles of this V1alpha2AllocationResult. # noqa: E501 - - ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed. Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in. # noqa: E501 - - :return: The resource_handles of this V1alpha2AllocationResult. # noqa: E501 - :rtype: list[V1alpha2ResourceHandle] - """ - return self._resource_handles - - @resource_handles.setter - def resource_handles(self, resource_handles): - """Sets the resource_handles of this V1alpha2AllocationResult. - - ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed. Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in. # noqa: E501 - - :param resource_handles: The resource_handles of this V1alpha2AllocationResult. # noqa: E501 - :type: list[V1alpha2ResourceHandle] - """ - - self._resource_handles = resource_handles - - @property - def shareable(self): - """Gets the shareable of this V1alpha2AllocationResult. # noqa: E501 - - Shareable determines whether the resource supports more than one consumer at a time. # noqa: E501 - - :return: The shareable of this V1alpha2AllocationResult. # noqa: E501 - :rtype: bool - """ - return self._shareable - - @shareable.setter - def shareable(self, shareable): - """Sets the shareable of this V1alpha2AllocationResult. - - Shareable determines whether the resource supports more than one consumer at a time. # noqa: E501 - - :param shareable: The shareable of this V1alpha2AllocationResult. # noqa: E501 - :type: bool - """ - - self._shareable = shareable - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2AllocationResult): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2AllocationResult): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context.py deleted file mode 100644 index 19ecd6c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2PodSchedulingContext(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha2PodSchedulingContextSpec', - 'status': 'V1alpha2PodSchedulingContextStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2PodSchedulingContext - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha2PodSchedulingContext. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2PodSchedulingContext. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2PodSchedulingContext. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2PodSchedulingContext. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha2PodSchedulingContext. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2PodSchedulingContext. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2PodSchedulingContext. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2PodSchedulingContext. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2PodSchedulingContext. # noqa: E501 - - - :return: The metadata of this V1alpha2PodSchedulingContext. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2PodSchedulingContext. - - - :param metadata: The metadata of this V1alpha2PodSchedulingContext. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha2PodSchedulingContext. # noqa: E501 - - - :return: The spec of this V1alpha2PodSchedulingContext. # noqa: E501 - :rtype: V1alpha2PodSchedulingContextSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha2PodSchedulingContext. - - - :param spec: The spec of this V1alpha2PodSchedulingContext. # noqa: E501 - :type: V1alpha2PodSchedulingContextSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1alpha2PodSchedulingContext. # noqa: E501 - - - :return: The status of this V1alpha2PodSchedulingContext. # noqa: E501 - :rtype: V1alpha2PodSchedulingContextStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha2PodSchedulingContext. - - - :param status: The status of this V1alpha2PodSchedulingContext. # noqa: E501 - :type: V1alpha2PodSchedulingContextStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2PodSchedulingContext): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2PodSchedulingContext): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_list.py deleted file mode 100644 index 6da1c60..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2PodSchedulingContextList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha2PodSchedulingContext]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2PodSchedulingContextList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha2PodSchedulingContextList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2PodSchedulingContextList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2PodSchedulingContextList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2PodSchedulingContextList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha2PodSchedulingContextList. # noqa: E501 - - Items is the list of PodSchedulingContext objects. # noqa: E501 - - :return: The items of this V1alpha2PodSchedulingContextList. # noqa: E501 - :rtype: list[V1alpha2PodSchedulingContext] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha2PodSchedulingContextList. - - Items is the list of PodSchedulingContext objects. # noqa: E501 - - :param items: The items of this V1alpha2PodSchedulingContextList. # noqa: E501 - :type: list[V1alpha2PodSchedulingContext] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha2PodSchedulingContextList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2PodSchedulingContextList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2PodSchedulingContextList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2PodSchedulingContextList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2PodSchedulingContextList. # noqa: E501 - - - :return: The metadata of this V1alpha2PodSchedulingContextList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2PodSchedulingContextList. - - - :param metadata: The metadata of this V1alpha2PodSchedulingContextList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2PodSchedulingContextList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2PodSchedulingContextList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_spec.py deleted file mode 100644 index 51a6335..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_spec.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2PodSchedulingContextSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'potential_nodes': 'list[str]', - 'selected_node': 'str' - } - - attribute_map = { - 'potential_nodes': 'potentialNodes', - 'selected_node': 'selectedNode' - } - - def __init__(self, potential_nodes=None, selected_node=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2PodSchedulingContextSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._potential_nodes = None - self._selected_node = None - self.discriminator = None - - if potential_nodes is not None: - self.potential_nodes = potential_nodes - if selected_node is not None: - self.selected_node = selected_node - - @property - def potential_nodes(self): - """Gets the potential_nodes of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - - PotentialNodes lists nodes where the Pod might be able to run. The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced. # noqa: E501 - - :return: The potential_nodes of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - :rtype: list[str] - """ - return self._potential_nodes - - @potential_nodes.setter - def potential_nodes(self, potential_nodes): - """Sets the potential_nodes of this V1alpha2PodSchedulingContextSpec. - - PotentialNodes lists nodes where the Pod might be able to run. The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced. # noqa: E501 - - :param potential_nodes: The potential_nodes of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - :type: list[str] - """ - - self._potential_nodes = potential_nodes - - @property - def selected_node(self): - """Gets the selected_node of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - - SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted. # noqa: E501 - - :return: The selected_node of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - :rtype: str - """ - return self._selected_node - - @selected_node.setter - def selected_node(self, selected_node): - """Sets the selected_node of this V1alpha2PodSchedulingContextSpec. - - SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted. # noqa: E501 - - :param selected_node: The selected_node of this V1alpha2PodSchedulingContextSpec. # noqa: E501 - :type: str - """ - - self._selected_node = selected_node - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2PodSchedulingContextSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2PodSchedulingContextSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_status.py deleted file mode 100644 index 8499f98..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_pod_scheduling_context_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2PodSchedulingContextStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'resource_claims': 'list[V1alpha2ResourceClaimSchedulingStatus]' - } - - attribute_map = { - 'resource_claims': 'resourceClaims' - } - - def __init__(self, resource_claims=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2PodSchedulingContextStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._resource_claims = None - self.discriminator = None - - if resource_claims is not None: - self.resource_claims = resource_claims - - @property - def resource_claims(self): - """Gets the resource_claims of this V1alpha2PodSchedulingContextStatus. # noqa: E501 - - ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses \"WaitForFirstConsumer\" allocation mode. # noqa: E501 - - :return: The resource_claims of this V1alpha2PodSchedulingContextStatus. # noqa: E501 - :rtype: list[V1alpha2ResourceClaimSchedulingStatus] - """ - return self._resource_claims - - @resource_claims.setter - def resource_claims(self, resource_claims): - """Sets the resource_claims of this V1alpha2PodSchedulingContextStatus. - - ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses \"WaitForFirstConsumer\" allocation mode. # noqa: E501 - - :param resource_claims: The resource_claims of this V1alpha2PodSchedulingContextStatus. # noqa: E501 - :type: list[V1alpha2ResourceClaimSchedulingStatus] - """ - - self._resource_claims = resource_claims - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2PodSchedulingContextStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2PodSchedulingContextStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim.py deleted file mode 100644 index 6e10db6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim.py +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaim(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha2ResourceClaimSpec', - 'status': 'V1alpha2ResourceClaimStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaim - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClaim. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClaim. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClaim. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClaim. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClaim. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClaim. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClaim. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClaim. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClaim. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClaim. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClaim. - - - :param metadata: The metadata of this V1alpha2ResourceClaim. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha2ResourceClaim. # noqa: E501 - - - :return: The spec of this V1alpha2ResourceClaim. # noqa: E501 - :rtype: V1alpha2ResourceClaimSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha2ResourceClaim. - - - :param spec: The spec of this V1alpha2ResourceClaim. # noqa: E501 - :type: V1alpha2ResourceClaimSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1alpha2ResourceClaim. # noqa: E501 - - - :return: The status of this V1alpha2ResourceClaim. # noqa: E501 - :rtype: V1alpha2ResourceClaimStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1alpha2ResourceClaim. - - - :param status: The status of this V1alpha2ResourceClaim. # noqa: E501 - :type: V1alpha2ResourceClaimStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaim): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaim): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_consumer_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_consumer_reference.py deleted file mode 100644 index a8af6af..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_consumer_reference.py +++ /dev/null @@ -1,209 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimConsumerReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'name': 'str', - 'resource': 'str', - 'uid': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'name': 'name', - 'resource': 'resource', - 'uid': 'uid' - } - - def __init__(self, api_group=None, name=None, resource=None, uid=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimConsumerReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._name = None - self._resource = None - self._uid = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.name = name - self.resource = resource - self.uid = uid - - @property - def api_group(self): - """Gets the api_group of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :return: The api_group of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1alpha2ResourceClaimConsumerReference. - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :param api_group: The api_group of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def name(self): - """Gets the name of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - - Name is the name of resource being referenced. # noqa: E501 - - :return: The name of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha2ResourceClaimConsumerReference. - - Name is the name of resource being referenced. # noqa: E501 - - :param name: The name of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def resource(self): - """Gets the resource of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - - Resource is the type of resource being referenced, for example \"pods\". # noqa: E501 - - :return: The resource of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :rtype: str - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V1alpha2ResourceClaimConsumerReference. - - Resource is the type of resource being referenced, for example \"pods\". # noqa: E501 - - :param resource: The resource of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and resource is None: # noqa: E501 - raise ValueError("Invalid value for `resource`, must not be `None`") # noqa: E501 - - self._resource = resource - - @property - def uid(self): - """Gets the uid of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - - UID identifies exactly one incarnation of the resource. # noqa: E501 - - :return: The uid of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :rtype: str - """ - return self._uid - - @uid.setter - def uid(self, uid): - """Sets the uid of this V1alpha2ResourceClaimConsumerReference. - - UID identifies exactly one incarnation of the resource. # noqa: E501 - - :param uid: The uid of this V1alpha2ResourceClaimConsumerReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and uid is None: # noqa: E501 - raise ValueError("Invalid value for `uid`, must not be `None`") # noqa: E501 - - self._uid = uid - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimConsumerReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimConsumerReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_list.py deleted file mode 100644 index 0eec3df..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha2ResourceClaim]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClaimList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClaimList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClaimList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClaimList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha2ResourceClaimList. # noqa: E501 - - Items is the list of resource claims. # noqa: E501 - - :return: The items of this V1alpha2ResourceClaimList. # noqa: E501 - :rtype: list[V1alpha2ResourceClaim] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha2ResourceClaimList. - - Items is the list of resource claims. # noqa: E501 - - :param items: The items of this V1alpha2ResourceClaimList. # noqa: E501 - :type: list[V1alpha2ResourceClaim] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClaimList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClaimList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClaimList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClaimList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClaimList. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClaimList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClaimList. - - - :param metadata: The metadata of this V1alpha2ResourceClaimList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_parameters_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_parameters_reference.py deleted file mode 100644 index 76705fa..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_parameters_reference.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimParametersReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name' - } - - def __init__(self, api_group=None, kind=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimParametersReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - - @property - def api_group(self): - """Gets the api_group of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :return: The api_group of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1alpha2ResourceClaimParametersReference. - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :param api_group: The api_group of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - - Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example \"ConfigMap\". # noqa: E501 - - :return: The kind of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClaimParametersReference. - - Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example \"ConfigMap\". # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - - Name is the name of resource being referenced. # noqa: E501 - - :return: The name of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha2ResourceClaimParametersReference. - - Name is the name of resource being referenced. # noqa: E501 - - :param name: The name of this V1alpha2ResourceClaimParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimParametersReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimParametersReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_scheduling_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_scheduling_status.py deleted file mode 100644 index 0e21529..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_scheduling_status.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimSchedulingStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'unsuitable_nodes': 'list[str]' - } - - attribute_map = { - 'name': 'name', - 'unsuitable_nodes': 'unsuitableNodes' - } - - def __init__(self, name=None, unsuitable_nodes=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimSchedulingStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._unsuitable_nodes = None - self.discriminator = None - - if name is not None: - self.name = name - if unsuitable_nodes is not None: - self.unsuitable_nodes = unsuitable_nodes - - @property - def name(self): - """Gets the name of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - - Name matches the pod.spec.resourceClaims[*].Name field. # noqa: E501 - - :return: The name of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha2ResourceClaimSchedulingStatus. - - Name matches the pod.spec.resourceClaims[*].Name field. # noqa: E501 - - :param name: The name of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def unsuitable_nodes(self): - """Gets the unsuitable_nodes of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - - UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for. The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced. # noqa: E501 - - :return: The unsuitable_nodes of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - :rtype: list[str] - """ - return self._unsuitable_nodes - - @unsuitable_nodes.setter - def unsuitable_nodes(self, unsuitable_nodes): - """Sets the unsuitable_nodes of this V1alpha2ResourceClaimSchedulingStatus. - - UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for. The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced. # noqa: E501 - - :param unsuitable_nodes: The unsuitable_nodes of this V1alpha2ResourceClaimSchedulingStatus. # noqa: E501 - :type: list[str] - """ - - self._unsuitable_nodes = unsuitable_nodes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimSchedulingStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimSchedulingStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_spec.py deleted file mode 100644 index ccbf6f0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_spec.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allocation_mode': 'str', - 'parameters_ref': 'V1alpha2ResourceClaimParametersReference', - 'resource_class_name': 'str' - } - - attribute_map = { - 'allocation_mode': 'allocationMode', - 'parameters_ref': 'parametersRef', - 'resource_class_name': 'resourceClassName' - } - - def __init__(self, allocation_mode=None, parameters_ref=None, resource_class_name=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allocation_mode = None - self._parameters_ref = None - self._resource_class_name = None - self.discriminator = None - - if allocation_mode is not None: - self.allocation_mode = allocation_mode - if parameters_ref is not None: - self.parameters_ref = parameters_ref - self.resource_class_name = resource_class_name - - @property - def allocation_mode(self): - """Gets the allocation_mode of this V1alpha2ResourceClaimSpec. # noqa: E501 - - Allocation can start immediately or when a Pod wants to use the resource. \"WaitForFirstConsumer\" is the default. # noqa: E501 - - :return: The allocation_mode of this V1alpha2ResourceClaimSpec. # noqa: E501 - :rtype: str - """ - return self._allocation_mode - - @allocation_mode.setter - def allocation_mode(self, allocation_mode): - """Sets the allocation_mode of this V1alpha2ResourceClaimSpec. - - Allocation can start immediately or when a Pod wants to use the resource. \"WaitForFirstConsumer\" is the default. # noqa: E501 - - :param allocation_mode: The allocation_mode of this V1alpha2ResourceClaimSpec. # noqa: E501 - :type: str - """ - - self._allocation_mode = allocation_mode - - @property - def parameters_ref(self): - """Gets the parameters_ref of this V1alpha2ResourceClaimSpec. # noqa: E501 - - - :return: The parameters_ref of this V1alpha2ResourceClaimSpec. # noqa: E501 - :rtype: V1alpha2ResourceClaimParametersReference - """ - return self._parameters_ref - - @parameters_ref.setter - def parameters_ref(self, parameters_ref): - """Sets the parameters_ref of this V1alpha2ResourceClaimSpec. - - - :param parameters_ref: The parameters_ref of this V1alpha2ResourceClaimSpec. # noqa: E501 - :type: V1alpha2ResourceClaimParametersReference - """ - - self._parameters_ref = parameters_ref - - @property - def resource_class_name(self): - """Gets the resource_class_name of this V1alpha2ResourceClaimSpec. # noqa: E501 - - ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment. # noqa: E501 - - :return: The resource_class_name of this V1alpha2ResourceClaimSpec. # noqa: E501 - :rtype: str - """ - return self._resource_class_name - - @resource_class_name.setter - def resource_class_name(self, resource_class_name): - """Sets the resource_class_name of this V1alpha2ResourceClaimSpec. - - ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment. # noqa: E501 - - :param resource_class_name: The resource_class_name of this V1alpha2ResourceClaimSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and resource_class_name is None: # noqa: E501 - raise ValueError("Invalid value for `resource_class_name`, must not be `None`") # noqa: E501 - - self._resource_class_name = resource_class_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_status.py deleted file mode 100644 index 451991b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_status.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'allocation': 'V1alpha2AllocationResult', - 'deallocation_requested': 'bool', - 'driver_name': 'str', - 'reserved_for': 'list[V1alpha2ResourceClaimConsumerReference]' - } - - attribute_map = { - 'allocation': 'allocation', - 'deallocation_requested': 'deallocationRequested', - 'driver_name': 'driverName', - 'reserved_for': 'reservedFor' - } - - def __init__(self, allocation=None, deallocation_requested=None, driver_name=None, reserved_for=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._allocation = None - self._deallocation_requested = None - self._driver_name = None - self._reserved_for = None - self.discriminator = None - - if allocation is not None: - self.allocation = allocation - if deallocation_requested is not None: - self.deallocation_requested = deallocation_requested - if driver_name is not None: - self.driver_name = driver_name - if reserved_for is not None: - self.reserved_for = reserved_for - - @property - def allocation(self): - """Gets the allocation of this V1alpha2ResourceClaimStatus. # noqa: E501 - - - :return: The allocation of this V1alpha2ResourceClaimStatus. # noqa: E501 - :rtype: V1alpha2AllocationResult - """ - return self._allocation - - @allocation.setter - def allocation(self, allocation): - """Sets the allocation of this V1alpha2ResourceClaimStatus. - - - :param allocation: The allocation of this V1alpha2ResourceClaimStatus. # noqa: E501 - :type: V1alpha2AllocationResult - """ - - self._allocation = allocation - - @property - def deallocation_requested(self): - """Gets the deallocation_requested of this V1alpha2ResourceClaimStatus. # noqa: E501 - - DeallocationRequested indicates that a ResourceClaim is to be deallocated. The driver then must deallocate this claim and reset the field together with clearing the Allocation field. While DeallocationRequested is set, no new consumers may be added to ReservedFor. # noqa: E501 - - :return: The deallocation_requested of this V1alpha2ResourceClaimStatus. # noqa: E501 - :rtype: bool - """ - return self._deallocation_requested - - @deallocation_requested.setter - def deallocation_requested(self, deallocation_requested): - """Sets the deallocation_requested of this V1alpha2ResourceClaimStatus. - - DeallocationRequested indicates that a ResourceClaim is to be deallocated. The driver then must deallocate this claim and reset the field together with clearing the Allocation field. While DeallocationRequested is set, no new consumers may be added to ReservedFor. # noqa: E501 - - :param deallocation_requested: The deallocation_requested of this V1alpha2ResourceClaimStatus. # noqa: E501 - :type: bool - """ - - self._deallocation_requested = deallocation_requested - - @property - def driver_name(self): - """Gets the driver_name of this V1alpha2ResourceClaimStatus. # noqa: E501 - - DriverName is a copy of the driver name from the ResourceClass at the time when allocation started. # noqa: E501 - - :return: The driver_name of this V1alpha2ResourceClaimStatus. # noqa: E501 - :rtype: str - """ - return self._driver_name - - @driver_name.setter - def driver_name(self, driver_name): - """Sets the driver_name of this V1alpha2ResourceClaimStatus. - - DriverName is a copy of the driver name from the ResourceClass at the time when allocation started. # noqa: E501 - - :param driver_name: The driver_name of this V1alpha2ResourceClaimStatus. # noqa: E501 - :type: str - """ - - self._driver_name = driver_name - - @property - def reserved_for(self): - """Gets the reserved_for of this V1alpha2ResourceClaimStatus. # noqa: E501 - - ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. There can be at most 32 such reservations. This may get increased in the future, but not reduced. # noqa: E501 - - :return: The reserved_for of this V1alpha2ResourceClaimStatus. # noqa: E501 - :rtype: list[V1alpha2ResourceClaimConsumerReference] - """ - return self._reserved_for - - @reserved_for.setter - def reserved_for(self, reserved_for): - """Sets the reserved_for of this V1alpha2ResourceClaimStatus. - - ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. There can be at most 32 such reservations. This may get increased in the future, but not reduced. # noqa: E501 - - :param reserved_for: The reserved_for of this V1alpha2ResourceClaimStatus. # noqa: E501 - :type: list[V1alpha2ResourceClaimConsumerReference] - """ - - self._reserved_for = reserved_for - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template.py deleted file mode 100644 index 7f4a52e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimTemplate(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha2ResourceClaimTemplateSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimTemplate - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClaimTemplate. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClaimTemplate. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClaimTemplate. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClaimTemplate. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClaimTemplate. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClaimTemplate. - - - :param metadata: The metadata of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha2ResourceClaimTemplate. # noqa: E501 - - - :return: The spec of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :rtype: V1alpha2ResourceClaimTemplateSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha2ResourceClaimTemplate. - - - :param spec: The spec of this V1alpha2ResourceClaimTemplate. # noqa: E501 - :type: V1alpha2ResourceClaimTemplateSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplate): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplate): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_list.py deleted file mode 100644 index 3e9aa2c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimTemplateList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha2ResourceClaimTemplate]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimTemplateList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClaimTemplateList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - - Items is the list of resource claim templates. # noqa: E501 - - :return: The items of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :rtype: list[V1alpha2ResourceClaimTemplate] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha2ResourceClaimTemplateList. - - Items is the list of resource claim templates. # noqa: E501 - - :param items: The items of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :type: list[V1alpha2ResourceClaimTemplate] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClaimTemplateList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClaimTemplateList. - - - :param metadata: The metadata of this V1alpha2ResourceClaimTemplateList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplateList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplateList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_spec.py deleted file mode 100644 index a731221..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_claim_template_spec.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClaimTemplateSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metadata': 'V1ObjectMeta', - 'spec': 'V1alpha2ResourceClaimSpec' - } - - attribute_map = { - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClaimTemplateSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metadata = None - self._spec = None - self.discriminator = None - - if metadata is not None: - self.metadata = metadata - self.spec = spec - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClaimTemplateSpec. - - - :param metadata: The metadata of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - - - :return: The spec of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - :rtype: V1alpha2ResourceClaimSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1alpha2ResourceClaimTemplateSpec. - - - :param spec: The spec of this V1alpha2ResourceClaimTemplateSpec. # noqa: E501 - :type: V1alpha2ResourceClaimSpec - """ - if self.local_vars_configuration.client_side_validation and spec is None: # noqa: E501 - raise ValueError("Invalid value for `spec`, must not be `None`") # noqa: E501 - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplateSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClaimTemplateSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class.py deleted file mode 100644 index 12b822f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class.py +++ /dev/null @@ -1,257 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClass(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'driver_name': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'parameters_ref': 'V1alpha2ResourceClassParametersReference', - 'suitable_nodes': 'V1NodeSelector' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'driver_name': 'driverName', - 'kind': 'kind', - 'metadata': 'metadata', - 'parameters_ref': 'parametersRef', - 'suitable_nodes': 'suitableNodes' - } - - def __init__(self, api_version=None, driver_name=None, kind=None, metadata=None, parameters_ref=None, suitable_nodes=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClass - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._driver_name = None - self._kind = None - self._metadata = None - self._parameters_ref = None - self._suitable_nodes = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.driver_name = driver_name - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if parameters_ref is not None: - self.parameters_ref = parameters_ref - if suitable_nodes is not None: - self.suitable_nodes = suitable_nodes - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClass. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClass. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClass. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClass. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def driver_name(self): - """Gets the driver_name of this V1alpha2ResourceClass. # noqa: E501 - - DriverName defines the name of the dynamic resource driver that is used for allocation of a ResourceClaim that uses this class. Resource drivers have a unique name in forward domain order (acme.example.com). # noqa: E501 - - :return: The driver_name of this V1alpha2ResourceClass. # noqa: E501 - :rtype: str - """ - return self._driver_name - - @driver_name.setter - def driver_name(self, driver_name): - """Sets the driver_name of this V1alpha2ResourceClass. - - DriverName defines the name of the dynamic resource driver that is used for allocation of a ResourceClaim that uses this class. Resource drivers have a unique name in forward domain order (acme.example.com). # noqa: E501 - - :param driver_name: The driver_name of this V1alpha2ResourceClass. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and driver_name is None: # noqa: E501 - raise ValueError("Invalid value for `driver_name`, must not be `None`") # noqa: E501 - - self._driver_name = driver_name - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClass. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClass. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClass. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClass. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClass. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClass. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClass. - - - :param metadata: The metadata of this V1alpha2ResourceClass. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def parameters_ref(self): - """Gets the parameters_ref of this V1alpha2ResourceClass. # noqa: E501 - - - :return: The parameters_ref of this V1alpha2ResourceClass. # noqa: E501 - :rtype: V1alpha2ResourceClassParametersReference - """ - return self._parameters_ref - - @parameters_ref.setter - def parameters_ref(self, parameters_ref): - """Sets the parameters_ref of this V1alpha2ResourceClass. - - - :param parameters_ref: The parameters_ref of this V1alpha2ResourceClass. # noqa: E501 - :type: V1alpha2ResourceClassParametersReference - """ - - self._parameters_ref = parameters_ref - - @property - def suitable_nodes(self): - """Gets the suitable_nodes of this V1alpha2ResourceClass. # noqa: E501 - - - :return: The suitable_nodes of this V1alpha2ResourceClass. # noqa: E501 - :rtype: V1NodeSelector - """ - return self._suitable_nodes - - @suitable_nodes.setter - def suitable_nodes(self, suitable_nodes): - """Sets the suitable_nodes of this V1alpha2ResourceClass. - - - :param suitable_nodes: The suitable_nodes of this V1alpha2ResourceClass. # noqa: E501 - :type: V1NodeSelector - """ - - self._suitable_nodes = suitable_nodes - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClass): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClass): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_list.py deleted file mode 100644 index 1bc29a6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClassList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1alpha2ResourceClass]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClassList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1alpha2ResourceClassList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1alpha2ResourceClassList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1alpha2ResourceClassList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1alpha2ResourceClassList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1alpha2ResourceClassList. # noqa: E501 - - Items is the list of resource classes. # noqa: E501 - - :return: The items of this V1alpha2ResourceClassList. # noqa: E501 - :rtype: list[V1alpha2ResourceClass] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1alpha2ResourceClassList. - - Items is the list of resource classes. # noqa: E501 - - :param items: The items of this V1alpha2ResourceClassList. # noqa: E501 - :type: list[V1alpha2ResourceClass] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClassList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1alpha2ResourceClassList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClassList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClassList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1alpha2ResourceClassList. # noqa: E501 - - - :return: The metadata of this V1alpha2ResourceClassList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1alpha2ResourceClassList. - - - :param metadata: The metadata of this V1alpha2ResourceClassList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClassList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClassList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_parameters_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_parameters_reference.py deleted file mode 100644 index bf8943a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_class_parameters_reference.py +++ /dev/null @@ -1,208 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceClassParametersReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_group': 'str', - 'kind': 'str', - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'api_group': 'apiGroup', - 'kind': 'kind', - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, api_group=None, kind=None, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceClassParametersReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_group = None - self._kind = None - self._name = None - self._namespace = None - self.discriminator = None - - if api_group is not None: - self.api_group = api_group - self.kind = kind - self.name = name - if namespace is not None: - self.namespace = namespace - - @property - def api_group(self): - """Gets the api_group of this V1alpha2ResourceClassParametersReference. # noqa: E501 - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :return: The api_group of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._api_group - - @api_group.setter - def api_group(self, api_group): - """Sets the api_group of this V1alpha2ResourceClassParametersReference. - - APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources. # noqa: E501 - - :param api_group: The api_group of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :type: str - """ - - self._api_group = api_group - - @property - def kind(self): - """Gets the kind of this V1alpha2ResourceClassParametersReference. # noqa: E501 - - Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata. # noqa: E501 - - :return: The kind of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1alpha2ResourceClassParametersReference. - - Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata. # noqa: E501 - - :param kind: The kind of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V1alpha2ResourceClassParametersReference. # noqa: E501 - - Name is the name of resource being referenced. # noqa: E501 - - :return: The name of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1alpha2ResourceClassParametersReference. - - Name is the name of resource being referenced. # noqa: E501 - - :param name: The name of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1alpha2ResourceClassParametersReference. # noqa: E501 - - Namespace that contains the referenced resource. Must be empty for cluster-scoped resources and non-empty for namespaced resources. # noqa: E501 - - :return: The namespace of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1alpha2ResourceClassParametersReference. - - Namespace that contains the referenced resource. Must be empty for cluster-scoped resources and non-empty for namespaced resources. # noqa: E501 - - :param namespace: The namespace of this V1alpha2ResourceClassParametersReference. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceClassParametersReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceClassParametersReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_handle.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_handle.py deleted file mode 100644 index 68fdb7b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1alpha2_resource_handle.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1alpha2ResourceHandle(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'data': 'str', - 'driver_name': 'str' - } - - attribute_map = { - 'data': 'data', - 'driver_name': 'driverName' - } - - def __init__(self, data=None, driver_name=None, local_vars_configuration=None): # noqa: E501 - """V1alpha2ResourceHandle - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._data = None - self._driver_name = None - self.discriminator = None - - if data is not None: - self.data = data - if driver_name is not None: - self.driver_name = driver_name - - @property - def data(self): - """Gets the data of this V1alpha2ResourceHandle. # noqa: E501 - - Data contains the opaque data associated with this ResourceHandle. It is set by the controller component of the resource driver whose name matches the DriverName set in the ResourceClaimStatus this ResourceHandle is embedded in. It is set at allocation time and is intended for processing by the kubelet plugin whose name matches the DriverName set in this ResourceHandle. The maximum size of this field is 16KiB. This may get increased in the future, but not reduced. # noqa: E501 - - :return: The data of this V1alpha2ResourceHandle. # noqa: E501 - :rtype: str - """ - return self._data - - @data.setter - def data(self, data): - """Sets the data of this V1alpha2ResourceHandle. - - Data contains the opaque data associated with this ResourceHandle. It is set by the controller component of the resource driver whose name matches the DriverName set in the ResourceClaimStatus this ResourceHandle is embedded in. It is set at allocation time and is intended for processing by the kubelet plugin whose name matches the DriverName set in this ResourceHandle. The maximum size of this field is 16KiB. This may get increased in the future, but not reduced. # noqa: E501 - - :param data: The data of this V1alpha2ResourceHandle. # noqa: E501 - :type: str - """ - - self._data = data - - @property - def driver_name(self): - """Gets the driver_name of this V1alpha2ResourceHandle. # noqa: E501 - - DriverName specifies the name of the resource driver whose kubelet plugin should be invoked to process this ResourceHandle's data once it lands on a node. This may differ from the DriverName set in ResourceClaimStatus this ResourceHandle is embedded in. # noqa: E501 - - :return: The driver_name of this V1alpha2ResourceHandle. # noqa: E501 - :rtype: str - """ - return self._driver_name - - @driver_name.setter - def driver_name(self, driver_name): - """Sets the driver_name of this V1alpha2ResourceHandle. - - DriverName specifies the name of the resource driver whose kubelet plugin should be invoked to process this ResourceHandle's data once it lands on a node. This may differ from the DriverName set in ResourceClaimStatus this ResourceHandle is embedded in. # noqa: E501 - - :param driver_name: The driver_name of this V1alpha2ResourceHandle. # noqa: E501 - :type: str - """ - - self._driver_name = driver_name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1alpha2ResourceHandle): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1alpha2ResourceHandle): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_audit_annotation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_audit_annotation.py deleted file mode 100644 index 1b3e421..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_audit_annotation.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1AuditAnnotation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'key': 'str', - 'value_expression': 'str' - } - - attribute_map = { - 'key': 'key', - 'value_expression': 'valueExpression' - } - - def __init__(self, key=None, value_expression=None, local_vars_configuration=None): # noqa: E501 - """V1beta1AuditAnnotation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._key = None - self._value_expression = None - self.discriminator = None - - self.key = key - self.value_expression = value_expression - - @property - def key(self): - """Gets the key of this V1beta1AuditAnnotation. # noqa: E501 - - key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\". If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. Required. # noqa: E501 - - :return: The key of this V1beta1AuditAnnotation. # noqa: E501 - :rtype: str - """ - return self._key - - @key.setter - def key(self, key): - """Sets the key of this V1beta1AuditAnnotation. - - key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\". If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. Required. # noqa: E501 - - :param key: The key of this V1beta1AuditAnnotation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and key is None: # noqa: E501 - raise ValueError("Invalid value for `key`, must not be `None`") # noqa: E501 - - self._key = key - - @property - def value_expression(self): - """Gets the value_expression of this V1beta1AuditAnnotation. # noqa: E501 - - valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. Required. # noqa: E501 - - :return: The value_expression of this V1beta1AuditAnnotation. # noqa: E501 - :rtype: str - """ - return self._value_expression - - @value_expression.setter - def value_expression(self, value_expression): - """Sets the value_expression of this V1beta1AuditAnnotation. - - valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. Required. # noqa: E501 - - :param value_expression: The value_expression of this V1beta1AuditAnnotation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and value_expression is None: # noqa: E501 - raise ValueError("Invalid value for `value_expression`, must not be `None`") # noqa: E501 - - self._value_expression = value_expression - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1AuditAnnotation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1AuditAnnotation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_expression_warning.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_expression_warning.py deleted file mode 100644 index 74555db..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_expression_warning.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ExpressionWarning(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'field_ref': 'str', - 'warning': 'str' - } - - attribute_map = { - 'field_ref': 'fieldRef', - 'warning': 'warning' - } - - def __init__(self, field_ref=None, warning=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ExpressionWarning - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._field_ref = None - self._warning = None - self.discriminator = None - - self.field_ref = field_ref - self.warning = warning - - @property - def field_ref(self): - """Gets the field_ref of this V1beta1ExpressionWarning. # noqa: E501 - - The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\" # noqa: E501 - - :return: The field_ref of this V1beta1ExpressionWarning. # noqa: E501 - :rtype: str - """ - return self._field_ref - - @field_ref.setter - def field_ref(self, field_ref): - """Sets the field_ref of this V1beta1ExpressionWarning. - - The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\" # noqa: E501 - - :param field_ref: The field_ref of this V1beta1ExpressionWarning. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and field_ref is None: # noqa: E501 - raise ValueError("Invalid value for `field_ref`, must not be `None`") # noqa: E501 - - self._field_ref = field_ref - - @property - def warning(self): - """Gets the warning of this V1beta1ExpressionWarning. # noqa: E501 - - The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler. # noqa: E501 - - :return: The warning of this V1beta1ExpressionWarning. # noqa: E501 - :rtype: str - """ - return self._warning - - @warning.setter - def warning(self, warning): - """Sets the warning of this V1beta1ExpressionWarning. - - The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler. # noqa: E501 - - :param warning: The warning of this V1beta1ExpressionWarning. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and warning is None: # noqa: E501 - raise ValueError("Invalid value for `warning`, must not be `None`") # noqa: E501 - - self._warning = warning - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ExpressionWarning): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ExpressionWarning): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_condition.py deleted file mode 100644 index d874c9b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_condition.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1MatchCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'name': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'name': 'name' - } - - def __init__(self, expression=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1beta1MatchCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._name = None - self.discriminator = None - - self.expression = expression - self.name = name - - @property - def expression(self): - """Gets the expression of this V1beta1MatchCondition. # noqa: E501 - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :return: The expression of this V1beta1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1beta1MatchCondition. - - Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ Required. # noqa: E501 - - :param expression: The expression of this V1beta1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def name(self): - """Gets the name of this V1beta1MatchCondition. # noqa: E501 - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :return: The name of this V1beta1MatchCondition. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta1MatchCondition. - - Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') Required. # noqa: E501 - - :param name: The name of this V1beta1MatchCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1MatchCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1MatchCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_resources.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_resources.py deleted file mode 100644 index 4e3dc71..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_match_resources.py +++ /dev/null @@ -1,230 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1MatchResources(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'exclude_resource_rules': 'list[V1beta1NamedRuleWithOperations]', - 'match_policy': 'str', - 'namespace_selector': 'V1LabelSelector', - 'object_selector': 'V1LabelSelector', - 'resource_rules': 'list[V1beta1NamedRuleWithOperations]' - } - - attribute_map = { - 'exclude_resource_rules': 'excludeResourceRules', - 'match_policy': 'matchPolicy', - 'namespace_selector': 'namespaceSelector', - 'object_selector': 'objectSelector', - 'resource_rules': 'resourceRules' - } - - def __init__(self, exclude_resource_rules=None, match_policy=None, namespace_selector=None, object_selector=None, resource_rules=None, local_vars_configuration=None): # noqa: E501 - """V1beta1MatchResources - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._exclude_resource_rules = None - self._match_policy = None - self._namespace_selector = None - self._object_selector = None - self._resource_rules = None - self.discriminator = None - - if exclude_resource_rules is not None: - self.exclude_resource_rules = exclude_resource_rules - if match_policy is not None: - self.match_policy = match_policy - if namespace_selector is not None: - self.namespace_selector = namespace_selector - if object_selector is not None: - self.object_selector = object_selector - if resource_rules is not None: - self.resource_rules = resource_rules - - @property - def exclude_resource_rules(self): - """Gets the exclude_resource_rules of this V1beta1MatchResources. # noqa: E501 - - ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) # noqa: E501 - - :return: The exclude_resource_rules of this V1beta1MatchResources. # noqa: E501 - :rtype: list[V1beta1NamedRuleWithOperations] - """ - return self._exclude_resource_rules - - @exclude_resource_rules.setter - def exclude_resource_rules(self, exclude_resource_rules): - """Sets the exclude_resource_rules of this V1beta1MatchResources. - - ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) # noqa: E501 - - :param exclude_resource_rules: The exclude_resource_rules of this V1beta1MatchResources. # noqa: E501 - :type: list[V1beta1NamedRuleWithOperations] - """ - - self._exclude_resource_rules = exclude_resource_rules - - @property - def match_policy(self): - """Gets the match_policy of this V1beta1MatchResources. # noqa: E501 - - matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. Defaults to \"Equivalent\" # noqa: E501 - - :return: The match_policy of this V1beta1MatchResources. # noqa: E501 - :rtype: str - """ - return self._match_policy - - @match_policy.setter - def match_policy(self, match_policy): - """Sets the match_policy of this V1beta1MatchResources. - - matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\". - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. Defaults to \"Equivalent\" # noqa: E501 - - :param match_policy: The match_policy of this V1beta1MatchResources. # noqa: E501 - :type: str - """ - - self._match_policy = match_policy - - @property - def namespace_selector(self): - """Gets the namespace_selector of this V1beta1MatchResources. # noqa: E501 - - - :return: The namespace_selector of this V1beta1MatchResources. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._namespace_selector - - @namespace_selector.setter - def namespace_selector(self, namespace_selector): - """Sets the namespace_selector of this V1beta1MatchResources. - - - :param namespace_selector: The namespace_selector of this V1beta1MatchResources. # noqa: E501 - :type: V1LabelSelector - """ - - self._namespace_selector = namespace_selector - - @property - def object_selector(self): - """Gets the object_selector of this V1beta1MatchResources. # noqa: E501 - - - :return: The object_selector of this V1beta1MatchResources. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._object_selector - - @object_selector.setter - def object_selector(self, object_selector): - """Sets the object_selector of this V1beta1MatchResources. - - - :param object_selector: The object_selector of this V1beta1MatchResources. # noqa: E501 - :type: V1LabelSelector - """ - - self._object_selector = object_selector - - @property - def resource_rules(self): - """Gets the resource_rules of this V1beta1MatchResources. # noqa: E501 - - ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. # noqa: E501 - - :return: The resource_rules of this V1beta1MatchResources. # noqa: E501 - :rtype: list[V1beta1NamedRuleWithOperations] - """ - return self._resource_rules - - @resource_rules.setter - def resource_rules(self, resource_rules): - """Sets the resource_rules of this V1beta1MatchResources. - - ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. # noqa: E501 - - :param resource_rules: The resource_rules of this V1beta1MatchResources. # noqa: E501 - :type: list[V1beta1NamedRuleWithOperations] - """ - - self._resource_rules = resource_rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1MatchResources): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1MatchResources): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_named_rule_with_operations.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_named_rule_with_operations.py deleted file mode 100644 index 28ca187..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_named_rule_with_operations.py +++ /dev/null @@ -1,262 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1NamedRuleWithOperations(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'api_versions': 'list[str]', - 'operations': 'list[str]', - 'resource_names': 'list[str]', - 'resources': 'list[str]', - 'scope': 'str' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'api_versions': 'apiVersions', - 'operations': 'operations', - 'resource_names': 'resourceNames', - 'resources': 'resources', - 'scope': 'scope' - } - - def __init__(self, api_groups=None, api_versions=None, operations=None, resource_names=None, resources=None, scope=None, local_vars_configuration=None): # noqa: E501 - """V1beta1NamedRuleWithOperations - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._api_versions = None - self._operations = None - self._resource_names = None - self._resources = None - self._scope = None - self.discriminator = None - - if api_groups is not None: - self.api_groups = api_groups - if api_versions is not None: - self.api_versions = api_versions - if operations is not None: - self.operations = operations - if resource_names is not None: - self.resource_names = resource_names - if resources is not None: - self.resources = resources - if scope is not None: - self.scope = scope - - @property - def api_groups(self): - """Gets the api_groups of this V1beta1NamedRuleWithOperations. # noqa: E501 - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_groups of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1beta1NamedRuleWithOperations. - - APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_groups: The api_groups of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_groups = api_groups - - @property - def api_versions(self): - """Gets the api_versions of this V1beta1NamedRuleWithOperations. # noqa: E501 - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The api_versions of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._api_versions - - @api_versions.setter - def api_versions(self, api_versions): - """Sets the api_versions of this V1beta1NamedRuleWithOperations. - - APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param api_versions: The api_versions of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._api_versions = api_versions - - @property - def operations(self): - """Gets the operations of this V1beta1NamedRuleWithOperations. # noqa: E501 - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :return: The operations of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._operations - - @operations.setter - def operations(self, operations): - """Sets the operations of this V1beta1NamedRuleWithOperations. - - Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. # noqa: E501 - - :param operations: The operations of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._operations = operations - - @property - def resource_names(self): - """Gets the resource_names of this V1beta1NamedRuleWithOperations. # noqa: E501 - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :return: The resource_names of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._resource_names - - @resource_names.setter - def resource_names(self, resource_names): - """Sets the resource_names of this V1beta1NamedRuleWithOperations. - - ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. # noqa: E501 - - :param resource_names: The resource_names of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._resource_names = resource_names - - @property - def resources(self): - """Gets the resources of this V1beta1NamedRuleWithOperations. # noqa: E501 - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :return: The resources of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1beta1NamedRuleWithOperations. - - Resources is a list of resources this rule applies to. For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources. If wildcard is present, the validation rule will ensure resources do not overlap with each other. Depending on the enclosing object, subresources might not be allowed. Required. # noqa: E501 - - :param resources: The resources of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: list[str] - """ - - self._resources = resources - - @property - def scope(self): - """Gets the scope of this V1beta1NamedRuleWithOperations. # noqa: E501 - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :return: The scope of this V1beta1NamedRuleWithOperations. # noqa: E501 - :rtype: str - """ - return self._scope - - @scope.setter - def scope(self, scope): - """Sets the scope of this V1beta1NamedRuleWithOperations. - - scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\". # noqa: E501 - - :param scope: The scope of this V1beta1NamedRuleWithOperations. # noqa: E501 - :type: str - """ - - self._scope = scope - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1NamedRuleWithOperations): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1NamedRuleWithOperations): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_kind.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_kind.py deleted file mode 100644 index d593daf..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_kind.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ParamKind(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind' - } - - def __init__(self, api_version=None, kind=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ParamKind - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - - @property - def api_version(self): - """Gets the api_version of this V1beta1ParamKind. # noqa: E501 - - APIVersion is the API group version the resources belong to. In format of \"group/version\". Required. # noqa: E501 - - :return: The api_version of this V1beta1ParamKind. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1ParamKind. - - APIVersion is the API group version the resources belong to. In format of \"group/version\". Required. # noqa: E501 - - :param api_version: The api_version of this V1beta1ParamKind. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta1ParamKind. # noqa: E501 - - Kind is the API kind the resources belong to. Required. # noqa: E501 - - :return: The kind of this V1beta1ParamKind. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1ParamKind. - - Kind is the API kind the resources belong to. Required. # noqa: E501 - - :param kind: The kind of this V1beta1ParamKind. # noqa: E501 - :type: str - """ - - self._kind = kind - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ParamKind): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ParamKind): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_ref.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_ref.py deleted file mode 100644 index fa661b7..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_param_ref.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ParamRef(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str', - 'parameter_not_found_action': 'str', - 'selector': 'V1LabelSelector' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace', - 'parameter_not_found_action': 'parameterNotFoundAction', - 'selector': 'selector' - } - - def __init__(self, name=None, namespace=None, parameter_not_found_action=None, selector=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ParamRef - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self._parameter_not_found_action = None - self._selector = None - self.discriminator = None - - if name is not None: - self.name = name - if namespace is not None: - self.namespace = namespace - if parameter_not_found_action is not None: - self.parameter_not_found_action = parameter_not_found_action - if selector is not None: - self.selector = selector - - @property - def name(self): - """Gets the name of this V1beta1ParamRef. # noqa: E501 - - name is the name of the resource being referenced. One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. # noqa: E501 - - :return: The name of this V1beta1ParamRef. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta1ParamRef. - - name is the name of the resource being referenced. One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. # noqa: E501 - - :param name: The name of this V1beta1ParamRef. # noqa: E501 - :type: str - """ - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1beta1ParamRef. # noqa: E501 - - namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. # noqa: E501 - - :return: The namespace of this V1beta1ParamRef. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1beta1ParamRef. - - namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. # noqa: E501 - - :param namespace: The namespace of this V1beta1ParamRef. # noqa: E501 - :type: str - """ - - self._namespace = namespace - - @property - def parameter_not_found_action(self): - """Gets the parameter_not_found_action of this V1beta1ParamRef. # noqa: E501 - - `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. Allowed values are `Allow` or `Deny` Required # noqa: E501 - - :return: The parameter_not_found_action of this V1beta1ParamRef. # noqa: E501 - :rtype: str - """ - return self._parameter_not_found_action - - @parameter_not_found_action.setter - def parameter_not_found_action(self, parameter_not_found_action): - """Sets the parameter_not_found_action of this V1beta1ParamRef. - - `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. Allowed values are `Allow` or `Deny` Required # noqa: E501 - - :param parameter_not_found_action: The parameter_not_found_action of this V1beta1ParamRef. # noqa: E501 - :type: str - """ - - self._parameter_not_found_action = parameter_not_found_action - - @property - def selector(self): - """Gets the selector of this V1beta1ParamRef. # noqa: E501 - - - :return: The selector of this V1beta1ParamRef. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V1beta1ParamRef. - - - :param selector: The selector of this V1beta1ParamRef. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ParamRef): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ParamRef): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review.py deleted file mode 100644 index aab556d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1SelfSubjectReview(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'status': 'V1beta1SelfSubjectReviewStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1beta1SelfSubjectReview - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1beta1SelfSubjectReview. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1SelfSubjectReview. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta1SelfSubjectReview. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta1SelfSubjectReview. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1SelfSubjectReview. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta1SelfSubjectReview. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta1SelfSubjectReview. # noqa: E501 - - - :return: The metadata of this V1beta1SelfSubjectReview. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta1SelfSubjectReview. - - - :param metadata: The metadata of this V1beta1SelfSubjectReview. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def status(self): - """Gets the status of this V1beta1SelfSubjectReview. # noqa: E501 - - - :return: The status of this V1beta1SelfSubjectReview. # noqa: E501 - :rtype: V1beta1SelfSubjectReviewStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta1SelfSubjectReview. - - - :param status: The status of this V1beta1SelfSubjectReview. # noqa: E501 - :type: V1beta1SelfSubjectReviewStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1SelfSubjectReview): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1SelfSubjectReview): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review_status.py deleted file mode 100644 index 347d438..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_self_subject_review_status.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1SelfSubjectReviewStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'user_info': 'V1UserInfo' - } - - attribute_map = { - 'user_info': 'userInfo' - } - - def __init__(self, user_info=None, local_vars_configuration=None): # noqa: E501 - """V1beta1SelfSubjectReviewStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._user_info = None - self.discriminator = None - - if user_info is not None: - self.user_info = user_info - - @property - def user_info(self): - """Gets the user_info of this V1beta1SelfSubjectReviewStatus. # noqa: E501 - - - :return: The user_info of this V1beta1SelfSubjectReviewStatus. # noqa: E501 - :rtype: V1UserInfo - """ - return self._user_info - - @user_info.setter - def user_info(self, user_info): - """Sets the user_info of this V1beta1SelfSubjectReviewStatus. - - - :param user_info: The user_info of this V1beta1SelfSubjectReviewStatus. # noqa: E501 - :type: V1UserInfo - """ - - self._user_info = user_info - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1SelfSubjectReviewStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1SelfSubjectReviewStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_type_checking.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_type_checking.py deleted file mode 100644 index aa2cf29..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_type_checking.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1TypeChecking(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression_warnings': 'list[V1beta1ExpressionWarning]' - } - - attribute_map = { - 'expression_warnings': 'expressionWarnings' - } - - def __init__(self, expression_warnings=None, local_vars_configuration=None): # noqa: E501 - """V1beta1TypeChecking - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression_warnings = None - self.discriminator = None - - if expression_warnings is not None: - self.expression_warnings = expression_warnings - - @property - def expression_warnings(self): - """Gets the expression_warnings of this V1beta1TypeChecking. # noqa: E501 - - The type checking warnings for each expression. # noqa: E501 - - :return: The expression_warnings of this V1beta1TypeChecking. # noqa: E501 - :rtype: list[V1beta1ExpressionWarning] - """ - return self._expression_warnings - - @expression_warnings.setter - def expression_warnings(self, expression_warnings): - """Sets the expression_warnings of this V1beta1TypeChecking. - - The type checking warnings for each expression. # noqa: E501 - - :param expression_warnings: The expression_warnings of this V1beta1TypeChecking. # noqa: E501 - :type: list[V1beta1ExpressionWarning] - """ - - self._expression_warnings = expression_warnings - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1TypeChecking): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1TypeChecking): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy.py deleted file mode 100644 index 9026e6a..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1beta1ValidatingAdmissionPolicySpec', - 'status': 'V1beta1ValidatingAdmissionPolicyStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1ValidatingAdmissionPolicy. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1ValidatingAdmissionPolicy. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The metadata of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta1ValidatingAdmissionPolicy. - - - :param metadata: The metadata of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The spec of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1beta1ValidatingAdmissionPolicySpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1beta1ValidatingAdmissionPolicy. - - - :param spec: The spec of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1beta1ValidatingAdmissionPolicySpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - - - :return: The status of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :rtype: V1beta1ValidatingAdmissionPolicyStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta1ValidatingAdmissionPolicy. - - - :param status: The status of this V1beta1ValidatingAdmissionPolicy. # noqa: E501 - :type: V1beta1ValidatingAdmissionPolicyStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding.py deleted file mode 100644 index 318a1c3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicyBinding(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1beta1ValidatingAdmissionPolicyBindingSpec' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicyBinding - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - - @property - def api_version(self): - """Gets the api_version of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1ValidatingAdmissionPolicyBinding. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1ValidatingAdmissionPolicyBinding. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - - - :return: The metadata of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta1ValidatingAdmissionPolicyBinding. - - - :param metadata: The metadata of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - - - :return: The spec of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :rtype: V1beta1ValidatingAdmissionPolicyBindingSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1beta1ValidatingAdmissionPolicyBinding. - - - :param spec: The spec of this V1beta1ValidatingAdmissionPolicyBinding. # noqa: E501 - :type: V1beta1ValidatingAdmissionPolicyBindingSpec - """ - - self._spec = spec - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBinding): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBinding): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_list.py deleted file mode 100644 index 5ada750..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_list.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicyBindingList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1beta1ValidatingAdmissionPolicyBinding]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicyBindingList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if items is not None: - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1ValidatingAdmissionPolicyBindingList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - List of PolicyBinding. # noqa: E501 - - :return: The items of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: list[V1beta1ValidatingAdmissionPolicyBinding] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1beta1ValidatingAdmissionPolicyBindingList. - - List of PolicyBinding. # noqa: E501 - - :param items: The items of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: list[V1beta1ValidatingAdmissionPolicyBinding] - """ - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1ValidatingAdmissionPolicyBindingList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - - - :return: The metadata of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta1ValidatingAdmissionPolicyBindingList. - - - :param metadata: The metadata of this V1beta1ValidatingAdmissionPolicyBindingList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBindingList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBindingList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_spec.py deleted file mode 100644 index 30da5c6..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_binding_spec.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicyBindingSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'match_resources': 'V1beta1MatchResources', - 'param_ref': 'V1beta1ParamRef', - 'policy_name': 'str', - 'validation_actions': 'list[str]' - } - - attribute_map = { - 'match_resources': 'matchResources', - 'param_ref': 'paramRef', - 'policy_name': 'policyName', - 'validation_actions': 'validationActions' - } - - def __init__(self, match_resources=None, param_ref=None, policy_name=None, validation_actions=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicyBindingSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._match_resources = None - self._param_ref = None - self._policy_name = None - self._validation_actions = None - self.discriminator = None - - if match_resources is not None: - self.match_resources = match_resources - if param_ref is not None: - self.param_ref = param_ref - if policy_name is not None: - self.policy_name = policy_name - if validation_actions is not None: - self.validation_actions = validation_actions - - @property - def match_resources(self): - """Gets the match_resources of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - - :return: The match_resources of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: V1beta1MatchResources - """ - return self._match_resources - - @match_resources.setter - def match_resources(self, match_resources): - """Sets the match_resources of this V1beta1ValidatingAdmissionPolicyBindingSpec. - - - :param match_resources: The match_resources of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: V1beta1MatchResources - """ - - self._match_resources = match_resources - - @property - def param_ref(self): - """Gets the param_ref of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - - :return: The param_ref of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: V1beta1ParamRef - """ - return self._param_ref - - @param_ref.setter - def param_ref(self, param_ref): - """Sets the param_ref of this V1beta1ValidatingAdmissionPolicyBindingSpec. - - - :param param_ref: The param_ref of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: V1beta1ParamRef - """ - - self._param_ref = param_ref - - @property - def policy_name(self): - """Gets the policy_name of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. # noqa: E501 - - :return: The policy_name of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: str - """ - return self._policy_name - - @policy_name.setter - def policy_name(self, policy_name): - """Sets the policy_name of this V1beta1ValidatingAdmissionPolicyBindingSpec. - - PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. # noqa: E501 - - :param policy_name: The policy_name of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: str - """ - - self._policy_name = policy_name - - @property - def validation_actions(self): - """Gets the validation_actions of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - - validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions. Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. The supported actions values are: \"Deny\" specifies that a validation failure results in a denied request. \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"` Clients should expect to handle additional values by ignoring any values not recognized. \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. Required. # noqa: E501 - - :return: The validation_actions of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :rtype: list[str] - """ - return self._validation_actions - - @validation_actions.setter - def validation_actions(self, validation_actions): - """Sets the validation_actions of this V1beta1ValidatingAdmissionPolicyBindingSpec. - - validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions. Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. The supported actions values are: \"Deny\" specifies that a validation failure results in a denied request. \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"` Clients should expect to handle additional values by ignoring any values not recognized. \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. Required. # noqa: E501 - - :param validation_actions: The validation_actions of this V1beta1ValidatingAdmissionPolicyBindingSpec. # noqa: E501 - :type: list[str] - """ - - self._validation_actions = validation_actions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBindingSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyBindingSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_list.py deleted file mode 100644 index 95ce5c3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_list.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicyList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1beta1ValidatingAdmissionPolicy]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicyList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if items is not None: - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta1ValidatingAdmissionPolicyList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - - List of ValidatingAdmissionPolicy. # noqa: E501 - - :return: The items of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: list[V1beta1ValidatingAdmissionPolicy] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1beta1ValidatingAdmissionPolicyList. - - List of ValidatingAdmissionPolicy. # noqa: E501 - - :param items: The items of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :type: list[V1beta1ValidatingAdmissionPolicy] - """ - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta1ValidatingAdmissionPolicyList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - - - :return: The metadata of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta1ValidatingAdmissionPolicyList. - - - :param metadata: The metadata of this V1beta1ValidatingAdmissionPolicyList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_spec.py deleted file mode 100644 index 885a632..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_spec.py +++ /dev/null @@ -1,286 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicySpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'audit_annotations': 'list[V1beta1AuditAnnotation]', - 'failure_policy': 'str', - 'match_conditions': 'list[V1beta1MatchCondition]', - 'match_constraints': 'V1beta1MatchResources', - 'param_kind': 'V1beta1ParamKind', - 'validations': 'list[V1beta1Validation]', - 'variables': 'list[V1beta1Variable]' - } - - attribute_map = { - 'audit_annotations': 'auditAnnotations', - 'failure_policy': 'failurePolicy', - 'match_conditions': 'matchConditions', - 'match_constraints': 'matchConstraints', - 'param_kind': 'paramKind', - 'validations': 'validations', - 'variables': 'variables' - } - - def __init__(self, audit_annotations=None, failure_policy=None, match_conditions=None, match_constraints=None, param_kind=None, validations=None, variables=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicySpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._audit_annotations = None - self._failure_policy = None - self._match_conditions = None - self._match_constraints = None - self._param_kind = None - self._validations = None - self._variables = None - self.discriminator = None - - if audit_annotations is not None: - self.audit_annotations = audit_annotations - if failure_policy is not None: - self.failure_policy = failure_policy - if match_conditions is not None: - self.match_conditions = match_conditions - if match_constraints is not None: - self.match_constraints = match_constraints - if param_kind is not None: - self.param_kind = param_kind - if validations is not None: - self.validations = validations - if variables is not None: - self.variables = variables - - @property - def audit_annotations(self): - """Gets the audit_annotations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. # noqa: E501 - - :return: The audit_annotations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1beta1AuditAnnotation] - """ - return self._audit_annotations - - @audit_annotations.setter - def audit_annotations(self, audit_annotations): - """Sets the audit_annotations of this V1beta1ValidatingAdmissionPolicySpec. - - auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. # noqa: E501 - - :param audit_annotations: The audit_annotations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1beta1AuditAnnotation] - """ - - self._audit_annotations = audit_annotations - - @property - def failure_policy(self): - """Gets the failure_policy of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. failurePolicy does not define how validations that evaluate to false are handled. When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. Allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :return: The failure_policy of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: str - """ - return self._failure_policy - - @failure_policy.setter - def failure_policy(self, failure_policy): - """Sets the failure_policy of this V1beta1ValidatingAdmissionPolicySpec. - - failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. failurePolicy does not define how validations that evaluate to false are handled. When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. Allowed values are Ignore or Fail. Defaults to Fail. # noqa: E501 - - :param failure_policy: The failure_policy of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: str - """ - - self._failure_policy = failure_policy - - @property - def match_conditions(self): - """Gets the match_conditions of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the policy is skipped # noqa: E501 - - :return: The match_conditions of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1beta1MatchCondition] - """ - return self._match_conditions - - @match_conditions.setter - def match_conditions(self, match_conditions): - """Sets the match_conditions of this V1beta1ValidatingAdmissionPolicySpec. - - MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. The exact matching logic is (in order): 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. 3. If any matchCondition evaluates to an error (but none are FALSE): - If failurePolicy=Fail, reject the request - If failurePolicy=Ignore, the policy is skipped # noqa: E501 - - :param match_conditions: The match_conditions of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1beta1MatchCondition] - """ - - self._match_conditions = match_conditions - - @property - def match_constraints(self): - """Gets the match_constraints of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - - :return: The match_constraints of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: V1beta1MatchResources - """ - return self._match_constraints - - @match_constraints.setter - def match_constraints(self, match_constraints): - """Sets the match_constraints of this V1beta1ValidatingAdmissionPolicySpec. - - - :param match_constraints: The match_constraints of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: V1beta1MatchResources - """ - - self._match_constraints = match_constraints - - @property - def param_kind(self): - """Gets the param_kind of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - - :return: The param_kind of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: V1beta1ParamKind - """ - return self._param_kind - - @param_kind.setter - def param_kind(self, param_kind): - """Sets the param_kind of this V1beta1ValidatingAdmissionPolicySpec. - - - :param param_kind: The param_kind of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: V1beta1ParamKind - """ - - self._param_kind = param_kind - - @property - def validations(self): - """Gets the validations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. # noqa: E501 - - :return: The validations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1beta1Validation] - """ - return self._validations - - @validations.setter - def validations(self, validations): - """Sets the validations of this V1beta1ValidatingAdmissionPolicySpec. - - Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. # noqa: E501 - - :param validations: The validations of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1beta1Validation] - """ - - self._validations = validations - - @property - def variables(self): - """Gets the variables of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - - Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. # noqa: E501 - - :return: The variables of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :rtype: list[V1beta1Variable] - """ - return self._variables - - @variables.setter - def variables(self, variables): - """Sets the variables of this V1beta1ValidatingAdmissionPolicySpec. - - Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. # noqa: E501 - - :param variables: The variables of this V1beta1ValidatingAdmissionPolicySpec. # noqa: E501 - :type: list[V1beta1Variable] - """ - - self._variables = variables - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicySpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicySpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_status.py deleted file mode 100644 index 6107ebc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validating_admission_policy_status.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1ValidatingAdmissionPolicyStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1Condition]', - 'observed_generation': 'int', - 'type_checking': 'V1beta1TypeChecking' - } - - attribute_map = { - 'conditions': 'conditions', - 'observed_generation': 'observedGeneration', - 'type_checking': 'typeChecking' - } - - def __init__(self, conditions=None, observed_generation=None, type_checking=None, local_vars_configuration=None): # noqa: E501 - """V1beta1ValidatingAdmissionPolicyStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._observed_generation = None - self._type_checking = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if observed_generation is not None: - self.observed_generation = observed_generation - if type_checking is not None: - self.type_checking = type_checking - - @property - def conditions(self): - """Gets the conditions of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - - The conditions represent the latest available observations of a policy's current state. # noqa: E501 - - :return: The conditions of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: list[V1Condition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1beta1ValidatingAdmissionPolicyStatus. - - The conditions represent the latest available observations of a policy's current state. # noqa: E501 - - :param conditions: The conditions of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: list[V1Condition] - """ - - self._conditions = conditions - - @property - def observed_generation(self): - """Gets the observed_generation of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - - The generation observed by the controller. # noqa: E501 - - :return: The observed_generation of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V1beta1ValidatingAdmissionPolicyStatus. - - The generation observed by the controller. # noqa: E501 - - :param observed_generation: The observed_generation of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - @property - def type_checking(self): - """Gets the type_checking of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - - - :return: The type_checking of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :rtype: V1beta1TypeChecking - """ - return self._type_checking - - @type_checking.setter - def type_checking(self, type_checking): - """Sets the type_checking of this V1beta1ValidatingAdmissionPolicyStatus. - - - :param type_checking: The type_checking of this V1beta1ValidatingAdmissionPolicyStatus. # noqa: E501 - :type: V1beta1TypeChecking - """ - - self._type_checking = type_checking - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1ValidatingAdmissionPolicyStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validation.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validation.py deleted file mode 100644 index 09a4a00..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_validation.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1Validation(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'message': 'str', - 'message_expression': 'str', - 'reason': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'message': 'message', - 'message_expression': 'messageExpression', - 'reason': 'reason' - } - - def __init__(self, expression=None, message=None, message_expression=None, reason=None, local_vars_configuration=None): # noqa: E501 - """V1beta1Validation - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._message = None - self._message_expression = None - self._reason = None - self.discriminator = None - - self.expression = expression - if message is not None: - self.message = message - if message_expression is not None: - self.message_expression = message_expression - if reason is not None: - self.reason = reason - - @property - def expression(self): - """Gets the expression of this V1beta1Validation. # noqa: E501 - - Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. For example, a variable named 'foo' can be accessed as 'variables.foo'. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ > 0\"} - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop > 0\"} - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d > 0\"} Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. Required. # noqa: E501 - - :return: The expression of this V1beta1Validation. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1beta1Validation. - - Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. For example, a variable named 'foo' can be accessed as 'variables.foo'. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\", \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\". Examples: - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ > 0\"} - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop > 0\"} - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d > 0\"} Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and non-intersecting elements in `Y` are appended, retaining their partial order. - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with non-intersecting keys are appended, retaining their partial order. Required. # noqa: E501 - - :param expression: The expression of this V1beta1Validation. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def message(self): - """Gets the message of this V1beta1Validation. # noqa: E501 - - Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\". # noqa: E501 - - :return: The message of this V1beta1Validation. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1beta1Validation. - - Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\". # noqa: E501 - - :param message: The message of this V1beta1Validation. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def message_expression(self): - """Gets the message_expression of this V1beta1Validation. # noqa: E501 - - messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\" # noqa: E501 - - :return: The message_expression of this V1beta1Validation. # noqa: E501 - :rtype: str - """ - return self._message_expression - - @message_expression.setter - def message_expression(self, message_expression): - """Sets the message_expression of this V1beta1Validation. - - messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\" # noqa: E501 - - :param message_expression: The message_expression of this V1beta1Validation. # noqa: E501 - :type: str - """ - - self._message_expression = message_expression - - @property - def reason(self): - """Gets the reason of this V1beta1Validation. # noqa: E501 - - Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client. # noqa: E501 - - :return: The reason of this V1beta1Validation. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1beta1Validation. - - Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client. # noqa: E501 - - :param reason: The reason of this V1beta1Validation. # noqa: E501 - :type: str - """ - - self._reason = reason - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1Validation): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1Validation): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_variable.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_variable.py deleted file mode 100644 index ad718cc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta1_variable.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta1Variable(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'expression': 'str', - 'name': 'str' - } - - attribute_map = { - 'expression': 'expression', - 'name': 'name' - } - - def __init__(self, expression=None, name=None, local_vars_configuration=None): # noqa: E501 - """V1beta1Variable - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._expression = None - self._name = None - self.discriminator = None - - self.expression = expression - self.name = name - - @property - def expression(self): - """Gets the expression of this V1beta1Variable. # noqa: E501 - - Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. # noqa: E501 - - :return: The expression of this V1beta1Variable. # noqa: E501 - :rtype: str - """ - return self._expression - - @expression.setter - def expression(self, expression): - """Sets the expression of this V1beta1Variable. - - Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. # noqa: E501 - - :param expression: The expression of this V1beta1Variable. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and expression is None: # noqa: E501 - raise ValueError("Invalid value for `expression`, must not be `None`") # noqa: E501 - - self._expression = expression - - @property - def name(self): - """Gets the name of this V1beta1Variable. # noqa: E501 - - Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo` # noqa: E501 - - :return: The name of this V1beta1Variable. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta1Variable. - - Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo` # noqa: E501 - - :param name: The name of this V1beta1Variable. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta1Variable): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta1Variable): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_exempt_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_exempt_priority_level_configuration.py deleted file mode 100644 index ca85309..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_exempt_priority_level_configuration.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3ExemptPriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'lendable_percent': 'int', - 'nominal_concurrency_shares': 'int' - } - - attribute_map = { - 'lendable_percent': 'lendablePercent', - 'nominal_concurrency_shares': 'nominalConcurrencyShares' - } - - def __init__(self, lendable_percent=None, nominal_concurrency_shares=None, local_vars_configuration=None): # noqa: E501 - """V1beta3ExemptPriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._lendable_percent = None - self._nominal_concurrency_shares = None - self.discriminator = None - - if lendable_percent is not None: - self.lendable_percent = lendable_percent - if nominal_concurrency_shares is not None: - self.nominal_concurrency_shares = nominal_concurrency_shares - - @property - def lendable_percent(self): - """Gets the lendable_percent of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :return: The lendable_percent of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._lendable_percent - - @lendable_percent.setter - def lendable_percent(self, lendable_percent): - """Sets the lendable_percent of this V1beta3ExemptPriorityLevelConfiguration. - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :param lendable_percent: The lendable_percent of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._lendable_percent = lendable_percent - - @property - def nominal_concurrency_shares(self): - """Gets the nominal_concurrency_shares of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. # noqa: E501 - - :return: The nominal_concurrency_shares of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._nominal_concurrency_shares - - @nominal_concurrency_shares.setter - def nominal_concurrency_shares(self, nominal_concurrency_shares): - """Sets the nominal_concurrency_shares of this V1beta3ExemptPriorityLevelConfiguration. - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. # noqa: E501 - - :param nominal_concurrency_shares: The nominal_concurrency_shares of this V1beta3ExemptPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._nominal_concurrency_shares = nominal_concurrency_shares - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3ExemptPriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3ExemptPriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_distinguisher_method.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_distinguisher_method.py deleted file mode 100644 index a1fb0b4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_distinguisher_method.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowDistinguisherMethod(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'type': 'str' - } - - attribute_map = { - 'type': 'type' - } - - def __init__(self, type=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowDistinguisherMethod - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._type = None - self.discriminator = None - - self.type = type - - @property - def type(self): - """Gets the type of this V1beta3FlowDistinguisherMethod. # noqa: E501 - - `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required. # noqa: E501 - - :return: The type of this V1beta3FlowDistinguisherMethod. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1beta3FlowDistinguisherMethod. - - `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required. # noqa: E501 - - :param type: The type of this V1beta3FlowDistinguisherMethod. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowDistinguisherMethod): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowDistinguisherMethod): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema.py deleted file mode 100644 index c9db0fc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowSchema(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1beta3FlowSchemaSpec', - 'status': 'V1beta3FlowSchemaStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowSchema - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1beta3FlowSchema. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta3FlowSchema. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta3FlowSchema. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta3FlowSchema. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta3FlowSchema. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta3FlowSchema. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta3FlowSchema. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta3FlowSchema. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta3FlowSchema. # noqa: E501 - - - :return: The metadata of this V1beta3FlowSchema. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta3FlowSchema. - - - :param metadata: The metadata of this V1beta3FlowSchema. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1beta3FlowSchema. # noqa: E501 - - - :return: The spec of this V1beta3FlowSchema. # noqa: E501 - :rtype: V1beta3FlowSchemaSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1beta3FlowSchema. - - - :param spec: The spec of this V1beta3FlowSchema. # noqa: E501 - :type: V1beta3FlowSchemaSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1beta3FlowSchema. # noqa: E501 - - - :return: The status of this V1beta3FlowSchema. # noqa: E501 - :rtype: V1beta3FlowSchemaStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta3FlowSchema. - - - :param status: The status of this V1beta3FlowSchema. # noqa: E501 - :type: V1beta3FlowSchemaStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowSchema): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowSchema): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_condition.py deleted file mode 100644 index 8131adb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_condition.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowSchemaCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowSchemaCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - if status is not None: - self.status = status - if type is not None: - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1beta3FlowSchemaCondition. # noqa: E501 - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1beta3FlowSchemaCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1beta3FlowSchemaCondition. - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1beta3FlowSchemaCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1beta3FlowSchemaCondition. # noqa: E501 - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1beta3FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1beta3FlowSchemaCondition. - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1beta3FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1beta3FlowSchemaCondition. # noqa: E501 - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1beta3FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1beta3FlowSchemaCondition. - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1beta3FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1beta3FlowSchemaCondition. # noqa: E501 - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :return: The status of this V1beta3FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta3FlowSchemaCondition. - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :param status: The status of this V1beta3FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._status = status - - @property - def type(self): - """Gets the type of this V1beta3FlowSchemaCondition. # noqa: E501 - - `type` is the type of the condition. Required. # noqa: E501 - - :return: The type of this V1beta3FlowSchemaCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1beta3FlowSchemaCondition. - - `type` is the type of the condition. Required. # noqa: E501 - - :param type: The type of this V1beta3FlowSchemaCondition. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowSchemaCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowSchemaCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_list.py deleted file mode 100644 index f6ff8dc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowSchemaList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1beta3FlowSchema]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowSchemaList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1beta3FlowSchemaList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta3FlowSchemaList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta3FlowSchemaList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta3FlowSchemaList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1beta3FlowSchemaList. # noqa: E501 - - `items` is a list of FlowSchemas. # noqa: E501 - - :return: The items of this V1beta3FlowSchemaList. # noqa: E501 - :rtype: list[V1beta3FlowSchema] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1beta3FlowSchemaList. - - `items` is a list of FlowSchemas. # noqa: E501 - - :param items: The items of this V1beta3FlowSchemaList. # noqa: E501 - :type: list[V1beta3FlowSchema] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1beta3FlowSchemaList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta3FlowSchemaList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta3FlowSchemaList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta3FlowSchemaList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta3FlowSchemaList. # noqa: E501 - - - :return: The metadata of this V1beta3FlowSchemaList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta3FlowSchemaList. - - - :param metadata: The metadata of this V1beta3FlowSchemaList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowSchemaList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowSchemaList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_spec.py deleted file mode 100644 index e2fe2d2..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_spec.py +++ /dev/null @@ -1,203 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowSchemaSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'distinguisher_method': 'V1beta3FlowDistinguisherMethod', - 'matching_precedence': 'int', - 'priority_level_configuration': 'V1beta3PriorityLevelConfigurationReference', - 'rules': 'list[V1beta3PolicyRulesWithSubjects]' - } - - attribute_map = { - 'distinguisher_method': 'distinguisherMethod', - 'matching_precedence': 'matchingPrecedence', - 'priority_level_configuration': 'priorityLevelConfiguration', - 'rules': 'rules' - } - - def __init__(self, distinguisher_method=None, matching_precedence=None, priority_level_configuration=None, rules=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowSchemaSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._distinguisher_method = None - self._matching_precedence = None - self._priority_level_configuration = None - self._rules = None - self.discriminator = None - - if distinguisher_method is not None: - self.distinguisher_method = distinguisher_method - if matching_precedence is not None: - self.matching_precedence = matching_precedence - self.priority_level_configuration = priority_level_configuration - if rules is not None: - self.rules = rules - - @property - def distinguisher_method(self): - """Gets the distinguisher_method of this V1beta3FlowSchemaSpec. # noqa: E501 - - - :return: The distinguisher_method of this V1beta3FlowSchemaSpec. # noqa: E501 - :rtype: V1beta3FlowDistinguisherMethod - """ - return self._distinguisher_method - - @distinguisher_method.setter - def distinguisher_method(self, distinguisher_method): - """Sets the distinguisher_method of this V1beta3FlowSchemaSpec. - - - :param distinguisher_method: The distinguisher_method of this V1beta3FlowSchemaSpec. # noqa: E501 - :type: V1beta3FlowDistinguisherMethod - """ - - self._distinguisher_method = distinguisher_method - - @property - def matching_precedence(self): - """Gets the matching_precedence of this V1beta3FlowSchemaSpec. # noqa: E501 - - `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. # noqa: E501 - - :return: The matching_precedence of this V1beta3FlowSchemaSpec. # noqa: E501 - :rtype: int - """ - return self._matching_precedence - - @matching_precedence.setter - def matching_precedence(self, matching_precedence): - """Sets the matching_precedence of this V1beta3FlowSchemaSpec. - - `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. # noqa: E501 - - :param matching_precedence: The matching_precedence of this V1beta3FlowSchemaSpec. # noqa: E501 - :type: int - """ - - self._matching_precedence = matching_precedence - - @property - def priority_level_configuration(self): - """Gets the priority_level_configuration of this V1beta3FlowSchemaSpec. # noqa: E501 - - - :return: The priority_level_configuration of this V1beta3FlowSchemaSpec. # noqa: E501 - :rtype: V1beta3PriorityLevelConfigurationReference - """ - return self._priority_level_configuration - - @priority_level_configuration.setter - def priority_level_configuration(self, priority_level_configuration): - """Sets the priority_level_configuration of this V1beta3FlowSchemaSpec. - - - :param priority_level_configuration: The priority_level_configuration of this V1beta3FlowSchemaSpec. # noqa: E501 - :type: V1beta3PriorityLevelConfigurationReference - """ - if self.local_vars_configuration.client_side_validation and priority_level_configuration is None: # noqa: E501 - raise ValueError("Invalid value for `priority_level_configuration`, must not be `None`") # noqa: E501 - - self._priority_level_configuration = priority_level_configuration - - @property - def rules(self): - """Gets the rules of this V1beta3FlowSchemaSpec. # noqa: E501 - - `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. # noqa: E501 - - :return: The rules of this V1beta3FlowSchemaSpec. # noqa: E501 - :rtype: list[V1beta3PolicyRulesWithSubjects] - """ - return self._rules - - @rules.setter - def rules(self, rules): - """Sets the rules of this V1beta3FlowSchemaSpec. - - `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. # noqa: E501 - - :param rules: The rules of this V1beta3FlowSchemaSpec. # noqa: E501 - :type: list[V1beta3PolicyRulesWithSubjects] - """ - - self._rules = rules - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowSchemaSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowSchemaSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_status.py deleted file mode 100644 index c3a6711..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_flow_schema_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3FlowSchemaStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1beta3FlowSchemaCondition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1beta3FlowSchemaStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1beta3FlowSchemaStatus. # noqa: E501 - - `conditions` is a list of the current states of FlowSchema. # noqa: E501 - - :return: The conditions of this V1beta3FlowSchemaStatus. # noqa: E501 - :rtype: list[V1beta3FlowSchemaCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1beta3FlowSchemaStatus. - - `conditions` is a list of the current states of FlowSchema. # noqa: E501 - - :param conditions: The conditions of this V1beta3FlowSchemaStatus. # noqa: E501 - :type: list[V1beta3FlowSchemaCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3FlowSchemaStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3FlowSchemaStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_group_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_group_subject.py deleted file mode 100644 index 2ae3f30..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_group_subject.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3GroupSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1beta3GroupSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1beta3GroupSubject. # noqa: E501 - - name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. # noqa: E501 - - :return: The name of this V1beta3GroupSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta3GroupSubject. - - name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. # noqa: E501 - - :param name: The name of this V1beta3GroupSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3GroupSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3GroupSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limit_response.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limit_response.py deleted file mode 100644 index c6f0726..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limit_response.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3LimitResponse(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'queuing': 'V1beta3QueuingConfiguration', - 'type': 'str' - } - - attribute_map = { - 'queuing': 'queuing', - 'type': 'type' - } - - def __init__(self, queuing=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1beta3LimitResponse - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._queuing = None - self._type = None - self.discriminator = None - - if queuing is not None: - self.queuing = queuing - self.type = type - - @property - def queuing(self): - """Gets the queuing of this V1beta3LimitResponse. # noqa: E501 - - - :return: The queuing of this V1beta3LimitResponse. # noqa: E501 - :rtype: V1beta3QueuingConfiguration - """ - return self._queuing - - @queuing.setter - def queuing(self, queuing): - """Sets the queuing of this V1beta3LimitResponse. - - - :param queuing: The queuing of this V1beta3LimitResponse. # noqa: E501 - :type: V1beta3QueuingConfiguration - """ - - self._queuing = queuing - - @property - def type(self): - """Gets the type of this V1beta3LimitResponse. # noqa: E501 - - `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required. # noqa: E501 - - :return: The type of this V1beta3LimitResponse. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1beta3LimitResponse. - - `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required. # noqa: E501 - - :param type: The type of this V1beta3LimitResponse. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3LimitResponse): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3LimitResponse): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limited_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limited_priority_level_configuration.py deleted file mode 100644 index ed38192..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_limited_priority_level_configuration.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3LimitedPriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'borrowing_limit_percent': 'int', - 'lendable_percent': 'int', - 'limit_response': 'V1beta3LimitResponse', - 'nominal_concurrency_shares': 'int' - } - - attribute_map = { - 'borrowing_limit_percent': 'borrowingLimitPercent', - 'lendable_percent': 'lendablePercent', - 'limit_response': 'limitResponse', - 'nominal_concurrency_shares': 'nominalConcurrencyShares' - } - - def __init__(self, borrowing_limit_percent=None, lendable_percent=None, limit_response=None, nominal_concurrency_shares=None, local_vars_configuration=None): # noqa: E501 - """V1beta3LimitedPriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._borrowing_limit_percent = None - self._lendable_percent = None - self._limit_response = None - self._nominal_concurrency_shares = None - self.discriminator = None - - if borrowing_limit_percent is not None: - self.borrowing_limit_percent = borrowing_limit_percent - if lendable_percent is not None: - self.lendable_percent = lendable_percent - if limit_response is not None: - self.limit_response = limit_response - if nominal_concurrency_shares is not None: - self.nominal_concurrency_shares = nominal_concurrency_shares - - @property - def borrowing_limit_percent(self): - """Gets the borrowing_limit_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - - `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. # noqa: E501 - - :return: The borrowing_limit_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._borrowing_limit_percent - - @borrowing_limit_percent.setter - def borrowing_limit_percent(self, borrowing_limit_percent): - """Sets the borrowing_limit_percent of this V1beta3LimitedPriorityLevelConfiguration. - - `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 ) The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. # noqa: E501 - - :param borrowing_limit_percent: The borrowing_limit_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._borrowing_limit_percent = borrowing_limit_percent - - @property - def lendable_percent(self): - """Gets the lendable_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :return: The lendable_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._lendable_percent - - @lendable_percent.setter - def lendable_percent(self, lendable_percent): - """Sets the lendable_percent of this V1beta3LimitedPriorityLevelConfiguration. - - `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) # noqa: E501 - - :param lendable_percent: The lendable_percent of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._lendable_percent = lendable_percent - - @property - def limit_response(self): - """Gets the limit_response of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - - - :return: The limit_response of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: V1beta3LimitResponse - """ - return self._limit_response - - @limit_response.setter - def limit_response(self, limit_response): - """Sets the limit_response of this V1beta3LimitedPriorityLevelConfiguration. - - - :param limit_response: The limit_response of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :type: V1beta3LimitResponse - """ - - self._limit_response = limit_response - - @property - def nominal_concurrency_shares(self): - """Gets the nominal_concurrency_shares of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30. # noqa: E501 - - :return: The nominal_concurrency_shares of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :rtype: int - """ - return self._nominal_concurrency_shares - - @nominal_concurrency_shares.setter - def nominal_concurrency_shares(self, nominal_concurrency_shares): - """Sets the nominal_concurrency_shares of this V1beta3LimitedPriorityLevelConfiguration. - - `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30. # noqa: E501 - - :param nominal_concurrency_shares: The nominal_concurrency_shares of this V1beta3LimitedPriorityLevelConfiguration. # noqa: E501 - :type: int - """ - - self._nominal_concurrency_shares = nominal_concurrency_shares - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3LimitedPriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3LimitedPriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_non_resource_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_non_resource_policy_rule.py deleted file mode 100644 index 3886279..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_non_resource_policy_rule.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3NonResourcePolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_ur_ls': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'non_resource_ur_ls': 'nonResourceURLs', - 'verbs': 'verbs' - } - - def __init__(self, non_resource_ur_ls=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1beta3NonResourcePolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_ur_ls = None - self._verbs = None - self.discriminator = None - - self.non_resource_ur_ls = non_resource_ur_ls - self.verbs = verbs - - @property - def non_resource_ur_ls(self): - """Gets the non_resource_ur_ls of this V1beta3NonResourcePolicyRule. # noqa: E501 - - `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example: - \"/healthz\" is legal - \"/hea*\" is illegal - \"/hea\" is legal but matches nothing - \"/hea/*\" also matches nothing - \"/healthz/*\" matches all per-component health checks. \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required. # noqa: E501 - - :return: The non_resource_ur_ls of this V1beta3NonResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._non_resource_ur_ls - - @non_resource_ur_ls.setter - def non_resource_ur_ls(self, non_resource_ur_ls): - """Sets the non_resource_ur_ls of this V1beta3NonResourcePolicyRule. - - `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example: - \"/healthz\" is legal - \"/hea*\" is illegal - \"/hea\" is legal but matches nothing - \"/hea/*\" also matches nothing - \"/healthz/*\" matches all per-component health checks. \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required. # noqa: E501 - - :param non_resource_ur_ls: The non_resource_ur_ls of this V1beta3NonResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and non_resource_ur_ls is None: # noqa: E501 - raise ValueError("Invalid value for `non_resource_ur_ls`, must not be `None`") # noqa: E501 - - self._non_resource_ur_ls = non_resource_ur_ls - - @property - def verbs(self): - """Gets the verbs of this V1beta3NonResourcePolicyRule. # noqa: E501 - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required. # noqa: E501 - - :return: The verbs of this V1beta3NonResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1beta3NonResourcePolicyRule. - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required. # noqa: E501 - - :param verbs: The verbs of this V1beta3NonResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3NonResourcePolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3NonResourcePolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_policy_rules_with_subjects.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_policy_rules_with_subjects.py deleted file mode 100644 index 2feff8c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_policy_rules_with_subjects.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PolicyRulesWithSubjects(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'non_resource_rules': 'list[V1beta3NonResourcePolicyRule]', - 'resource_rules': 'list[V1beta3ResourcePolicyRule]', - 'subjects': 'list[V1beta3Subject]' - } - - attribute_map = { - 'non_resource_rules': 'nonResourceRules', - 'resource_rules': 'resourceRules', - 'subjects': 'subjects' - } - - def __init__(self, non_resource_rules=None, resource_rules=None, subjects=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PolicyRulesWithSubjects - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._non_resource_rules = None - self._resource_rules = None - self._subjects = None - self.discriminator = None - - if non_resource_rules is not None: - self.non_resource_rules = non_resource_rules - if resource_rules is not None: - self.resource_rules = resource_rules - self.subjects = subjects - - @property - def non_resource_rules(self): - """Gets the non_resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - - `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. # noqa: E501 - - :return: The non_resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[V1beta3NonResourcePolicyRule] - """ - return self._non_resource_rules - - @non_resource_rules.setter - def non_resource_rules(self, non_resource_rules): - """Sets the non_resource_rules of this V1beta3PolicyRulesWithSubjects. - - `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. # noqa: E501 - - :param non_resource_rules: The non_resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :type: list[V1beta3NonResourcePolicyRule] - """ - - self._non_resource_rules = non_resource_rules - - @property - def resource_rules(self): - """Gets the resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - - `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty. # noqa: E501 - - :return: The resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[V1beta3ResourcePolicyRule] - """ - return self._resource_rules - - @resource_rules.setter - def resource_rules(self, resource_rules): - """Sets the resource_rules of this V1beta3PolicyRulesWithSubjects. - - `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty. # noqa: E501 - - :param resource_rules: The resource_rules of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :type: list[V1beta3ResourcePolicyRule] - """ - - self._resource_rules = resource_rules - - @property - def subjects(self): - """Gets the subjects of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - - subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. # noqa: E501 - - :return: The subjects of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :rtype: list[V1beta3Subject] - """ - return self._subjects - - @subjects.setter - def subjects(self, subjects): - """Sets the subjects of this V1beta3PolicyRulesWithSubjects. - - subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. # noqa: E501 - - :param subjects: The subjects of this V1beta3PolicyRulesWithSubjects. # noqa: E501 - :type: list[V1beta3Subject] - """ - if self.local_vars_configuration.client_side_validation and subjects is None: # noqa: E501 - raise ValueError("Invalid value for `subjects`, must not be `None`") # noqa: E501 - - self._subjects = subjects - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PolicyRulesWithSubjects): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PolicyRulesWithSubjects): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration.py deleted file mode 100644 index a4b80b5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V1beta3PriorityLevelConfigurationSpec', - 'status': 'V1beta3PriorityLevelConfigurationStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V1beta3PriorityLevelConfiguration. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta3PriorityLevelConfiguration. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V1beta3PriorityLevelConfiguration. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta3PriorityLevelConfiguration. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta3PriorityLevelConfiguration. # noqa: E501 - - - :return: The metadata of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta3PriorityLevelConfiguration. - - - :param metadata: The metadata of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V1beta3PriorityLevelConfiguration. # noqa: E501 - - - :return: The spec of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :rtype: V1beta3PriorityLevelConfigurationSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V1beta3PriorityLevelConfiguration. - - - :param spec: The spec of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :type: V1beta3PriorityLevelConfigurationSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V1beta3PriorityLevelConfiguration. # noqa: E501 - - - :return: The status of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :rtype: V1beta3PriorityLevelConfigurationStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta3PriorityLevelConfiguration. - - - :param status: The status of this V1beta3PriorityLevelConfiguration. # noqa: E501 - :type: V1beta3PriorityLevelConfigurationStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_condition.py deleted file mode 100644 index 35322a3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_condition.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfigurationCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfigurationCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - if status is not None: - self.status = status - if type is not None: - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :return: The last_transition_time of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V1beta3PriorityLevelConfigurationCondition. - - `lastTransitionTime` is the last time the condition transitioned from one status to another. # noqa: E501 - - :param last_transition_time: The last_transition_time of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :return: The message of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V1beta3PriorityLevelConfigurationCondition. - - `message` is a human-readable message indicating details about last transition. # noqa: E501 - - :param message: The message of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V1beta3PriorityLevelConfigurationCondition. - - `reason` is a unique, one-word, CamelCase reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :return: The status of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V1beta3PriorityLevelConfigurationCondition. - - `status` is the status of the condition. Can be True, False, Unknown. Required. # noqa: E501 - - :param status: The status of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._status = status - - @property - def type(self): - """Gets the type of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - - `type` is the type of the condition. Required. # noqa: E501 - - :return: The type of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1beta3PriorityLevelConfigurationCondition. - - `type` is the type of the condition. Required. # noqa: E501 - - :param type: The type of this V1beta3PriorityLevelConfigurationCondition. # noqa: E501 - :type: str - """ - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_list.py deleted file mode 100644 index e001f42..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfigurationList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V1beta3PriorityLevelConfiguration]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfigurationList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V1beta3PriorityLevelConfigurationList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - - `items` is a list of request-priorities. # noqa: E501 - - :return: The items of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :rtype: list[V1beta3PriorityLevelConfiguration] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V1beta3PriorityLevelConfigurationList. - - `items` is a list of request-priorities. # noqa: E501 - - :param items: The items of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :type: list[V1beta3PriorityLevelConfiguration] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta3PriorityLevelConfigurationList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - - - :return: The metadata of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V1beta3PriorityLevelConfigurationList. - - - :param metadata: The metadata of this V1beta3PriorityLevelConfigurationList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_reference.py deleted file mode 100644 index 4f8f8f3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_reference.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfigurationReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfigurationReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1beta3PriorityLevelConfigurationReference. # noqa: E501 - - `name` is the name of the priority level configuration being referenced Required. # noqa: E501 - - :return: The name of this V1beta3PriorityLevelConfigurationReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta3PriorityLevelConfigurationReference. - - `name` is the name of the priority level configuration being referenced Required. # noqa: E501 - - :param name: The name of this V1beta3PriorityLevelConfigurationReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_spec.py deleted file mode 100644 index c89c610..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_spec.py +++ /dev/null @@ -1,175 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfigurationSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'exempt': 'V1beta3ExemptPriorityLevelConfiguration', - 'limited': 'V1beta3LimitedPriorityLevelConfiguration', - 'type': 'str' - } - - attribute_map = { - 'exempt': 'exempt', - 'limited': 'limited', - 'type': 'type' - } - - def __init__(self, exempt=None, limited=None, type=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfigurationSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._exempt = None - self._limited = None - self._type = None - self.discriminator = None - - if exempt is not None: - self.exempt = exempt - if limited is not None: - self.limited = limited - self.type = type - - @property - def exempt(self): - """Gets the exempt of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - - - :return: The exempt of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: V1beta3ExemptPriorityLevelConfiguration - """ - return self._exempt - - @exempt.setter - def exempt(self, exempt): - """Sets the exempt of this V1beta3PriorityLevelConfigurationSpec. - - - :param exempt: The exempt of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :type: V1beta3ExemptPriorityLevelConfiguration - """ - - self._exempt = exempt - - @property - def limited(self): - """Gets the limited of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - - - :return: The limited of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: V1beta3LimitedPriorityLevelConfiguration - """ - return self._limited - - @limited.setter - def limited(self, limited): - """Sets the limited of this V1beta3PriorityLevelConfigurationSpec. - - - :param limited: The limited of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :type: V1beta3LimitedPriorityLevelConfiguration - """ - - self._limited = limited - - @property - def type(self): - """Gets the type of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - - `type` indicates whether this priority level is subject to limitation on request execution. A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. # noqa: E501 - - :return: The type of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V1beta3PriorityLevelConfigurationSpec. - - `type` indicates whether this priority level is subject to limitation on request execution. A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. # noqa: E501 - - :param type: The type of this V1beta3PriorityLevelConfigurationSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_status.py deleted file mode 100644 index c630951..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_priority_level_configuration_status.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3PriorityLevelConfigurationStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V1beta3PriorityLevelConfigurationCondition]' - } - - attribute_map = { - 'conditions': 'conditions' - } - - def __init__(self, conditions=None, local_vars_configuration=None): # noqa: E501 - """V1beta3PriorityLevelConfigurationStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - - @property - def conditions(self): - """Gets the conditions of this V1beta3PriorityLevelConfigurationStatus. # noqa: E501 - - `conditions` is the current state of \"request-priority\". # noqa: E501 - - :return: The conditions of this V1beta3PriorityLevelConfigurationStatus. # noqa: E501 - :rtype: list[V1beta3PriorityLevelConfigurationCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V1beta3PriorityLevelConfigurationStatus. - - `conditions` is the current state of \"request-priority\". # noqa: E501 - - :param conditions: The conditions of this V1beta3PriorityLevelConfigurationStatus. # noqa: E501 - :type: list[V1beta3PriorityLevelConfigurationCondition] - """ - - self._conditions = conditions - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3PriorityLevelConfigurationStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_queuing_configuration.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_queuing_configuration.py deleted file mode 100644 index b13994d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_queuing_configuration.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3QueuingConfiguration(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'hand_size': 'int', - 'queue_length_limit': 'int', - 'queues': 'int' - } - - attribute_map = { - 'hand_size': 'handSize', - 'queue_length_limit': 'queueLengthLimit', - 'queues': 'queues' - } - - def __init__(self, hand_size=None, queue_length_limit=None, queues=None, local_vars_configuration=None): # noqa: E501 - """V1beta3QueuingConfiguration - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._hand_size = None - self._queue_length_limit = None - self._queues = None - self.discriminator = None - - if hand_size is not None: - self.hand_size = hand_size - if queue_length_limit is not None: - self.queue_length_limit = queue_length_limit - if queues is not None: - self.queues = queues - - @property - def hand_size(self): - """Gets the hand_size of this V1beta3QueuingConfiguration. # noqa: E501 - - `handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. # noqa: E501 - - :return: The hand_size of this V1beta3QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._hand_size - - @hand_size.setter - def hand_size(self, hand_size): - """Sets the hand_size of this V1beta3QueuingConfiguration. - - `handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. # noqa: E501 - - :param hand_size: The hand_size of this V1beta3QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._hand_size = hand_size - - @property - def queue_length_limit(self): - """Gets the queue_length_limit of this V1beta3QueuingConfiguration. # noqa: E501 - - `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. # noqa: E501 - - :return: The queue_length_limit of this V1beta3QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._queue_length_limit - - @queue_length_limit.setter - def queue_length_limit(self, queue_length_limit): - """Sets the queue_length_limit of this V1beta3QueuingConfiguration. - - `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. # noqa: E501 - - :param queue_length_limit: The queue_length_limit of this V1beta3QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._queue_length_limit = queue_length_limit - - @property - def queues(self): - """Gets the queues of this V1beta3QueuingConfiguration. # noqa: E501 - - `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. # noqa: E501 - - :return: The queues of this V1beta3QueuingConfiguration. # noqa: E501 - :rtype: int - """ - return self._queues - - @queues.setter - def queues(self, queues): - """Sets the queues of this V1beta3QueuingConfiguration. - - `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. # noqa: E501 - - :param queues: The queues of this V1beta3QueuingConfiguration. # noqa: E501 - :type: int - """ - - self._queues = queues - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3QueuingConfiguration): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3QueuingConfiguration): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_resource_policy_rule.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_resource_policy_rule.py deleted file mode 100644 index 9a1f4e0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_resource_policy_rule.py +++ /dev/null @@ -1,237 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3ResourcePolicyRule(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_groups': 'list[str]', - 'cluster_scope': 'bool', - 'namespaces': 'list[str]', - 'resources': 'list[str]', - 'verbs': 'list[str]' - } - - attribute_map = { - 'api_groups': 'apiGroups', - 'cluster_scope': 'clusterScope', - 'namespaces': 'namespaces', - 'resources': 'resources', - 'verbs': 'verbs' - } - - def __init__(self, api_groups=None, cluster_scope=None, namespaces=None, resources=None, verbs=None, local_vars_configuration=None): # noqa: E501 - """V1beta3ResourcePolicyRule - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_groups = None - self._cluster_scope = None - self._namespaces = None - self._resources = None - self._verbs = None - self.discriminator = None - - self.api_groups = api_groups - if cluster_scope is not None: - self.cluster_scope = cluster_scope - if namespaces is not None: - self.namespaces = namespaces - self.resources = resources - self.verbs = verbs - - @property - def api_groups(self): - """Gets the api_groups of this V1beta3ResourcePolicyRule. # noqa: E501 - - `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required. # noqa: E501 - - :return: The api_groups of this V1beta3ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._api_groups - - @api_groups.setter - def api_groups(self, api_groups): - """Sets the api_groups of this V1beta3ResourcePolicyRule. - - `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required. # noqa: E501 - - :param api_groups: The api_groups of this V1beta3ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and api_groups is None: # noqa: E501 - raise ValueError("Invalid value for `api_groups`, must not be `None`") # noqa: E501 - - self._api_groups = api_groups - - @property - def cluster_scope(self): - """Gets the cluster_scope of this V1beta3ResourcePolicyRule. # noqa: E501 - - `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list. # noqa: E501 - - :return: The cluster_scope of this V1beta3ResourcePolicyRule. # noqa: E501 - :rtype: bool - """ - return self._cluster_scope - - @cluster_scope.setter - def cluster_scope(self, cluster_scope): - """Sets the cluster_scope of this V1beta3ResourcePolicyRule. - - `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list. # noqa: E501 - - :param cluster_scope: The cluster_scope of this V1beta3ResourcePolicyRule. # noqa: E501 - :type: bool - """ - - self._cluster_scope = cluster_scope - - @property - def namespaces(self): - """Gets the namespaces of this V1beta3ResourcePolicyRule. # noqa: E501 - - `namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\". Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. # noqa: E501 - - :return: The namespaces of this V1beta3ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._namespaces - - @namespaces.setter - def namespaces(self, namespaces): - """Sets the namespaces of this V1beta3ResourcePolicyRule. - - `namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\". Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. # noqa: E501 - - :param namespaces: The namespaces of this V1beta3ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - - self._namespaces = namespaces - - @property - def resources(self): - """Gets the resources of this V1beta3ResourcePolicyRule. # noqa: E501 - - `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ \"services\", \"nodes/status\" ]. This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required. # noqa: E501 - - :return: The resources of this V1beta3ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._resources - - @resources.setter - def resources(self, resources): - """Sets the resources of this V1beta3ResourcePolicyRule. - - `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ \"services\", \"nodes/status\" ]. This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required. # noqa: E501 - - :param resources: The resources of this V1beta3ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and resources is None: # noqa: E501 - raise ValueError("Invalid value for `resources`, must not be `None`") # noqa: E501 - - self._resources = resources - - @property - def verbs(self): - """Gets the verbs of this V1beta3ResourcePolicyRule. # noqa: E501 - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required. # noqa: E501 - - :return: The verbs of this V1beta3ResourcePolicyRule. # noqa: E501 - :rtype: list[str] - """ - return self._verbs - - @verbs.setter - def verbs(self, verbs): - """Sets the verbs of this V1beta3ResourcePolicyRule. - - `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required. # noqa: E501 - - :param verbs: The verbs of this V1beta3ResourcePolicyRule. # noqa: E501 - :type: list[str] - """ - if self.local_vars_configuration.client_side_validation and verbs is None: # noqa: E501 - raise ValueError("Invalid value for `verbs`, must not be `None`") # noqa: E501 - - self._verbs = verbs - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3ResourcePolicyRule): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3ResourcePolicyRule): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_service_account_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_service_account_subject.py deleted file mode 100644 index 534ede9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_service_account_subject.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3ServiceAccountSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'namespace': 'str' - } - - attribute_map = { - 'name': 'name', - 'namespace': 'namespace' - } - - def __init__(self, name=None, namespace=None, local_vars_configuration=None): # noqa: E501 - """V1beta3ServiceAccountSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._namespace = None - self.discriminator = None - - self.name = name - self.namespace = namespace - - @property - def name(self): - """Gets the name of this V1beta3ServiceAccountSubject. # noqa: E501 - - `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required. # noqa: E501 - - :return: The name of this V1beta3ServiceAccountSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta3ServiceAccountSubject. - - `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required. # noqa: E501 - - :param name: The name of this V1beta3ServiceAccountSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def namespace(self): - """Gets the namespace of this V1beta3ServiceAccountSubject. # noqa: E501 - - `namespace` is the namespace of matching ServiceAccount objects. Required. # noqa: E501 - - :return: The namespace of this V1beta3ServiceAccountSubject. # noqa: E501 - :rtype: str - """ - return self._namespace - - @namespace.setter - def namespace(self, namespace): - """Sets the namespace of this V1beta3ServiceAccountSubject. - - `namespace` is the namespace of matching ServiceAccount objects. Required. # noqa: E501 - - :param namespace: The namespace of this V1beta3ServiceAccountSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and namespace is None: # noqa: E501 - raise ValueError("Invalid value for `namespace`, must not be `None`") # noqa: E501 - - self._namespace = namespace - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3ServiceAccountSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3ServiceAccountSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_subject.py deleted file mode 100644 index 68d09bb..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_subject.py +++ /dev/null @@ -1,201 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3Subject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'group': 'V1beta3GroupSubject', - 'kind': 'str', - 'service_account': 'V1beta3ServiceAccountSubject', - 'user': 'V1beta3UserSubject' - } - - attribute_map = { - 'group': 'group', - 'kind': 'kind', - 'service_account': 'serviceAccount', - 'user': 'user' - } - - def __init__(self, group=None, kind=None, service_account=None, user=None, local_vars_configuration=None): # noqa: E501 - """V1beta3Subject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._group = None - self._kind = None - self._service_account = None - self._user = None - self.discriminator = None - - if group is not None: - self.group = group - self.kind = kind - if service_account is not None: - self.service_account = service_account - if user is not None: - self.user = user - - @property - def group(self): - """Gets the group of this V1beta3Subject. # noqa: E501 - - - :return: The group of this V1beta3Subject. # noqa: E501 - :rtype: V1beta3GroupSubject - """ - return self._group - - @group.setter - def group(self, group): - """Sets the group of this V1beta3Subject. - - - :param group: The group of this V1beta3Subject. # noqa: E501 - :type: V1beta3GroupSubject - """ - - self._group = group - - @property - def kind(self): - """Gets the kind of this V1beta3Subject. # noqa: E501 - - `kind` indicates which one of the other fields is non-empty. Required # noqa: E501 - - :return: The kind of this V1beta3Subject. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V1beta3Subject. - - `kind` indicates which one of the other fields is non-empty. Required # noqa: E501 - - :param kind: The kind of this V1beta3Subject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def service_account(self): - """Gets the service_account of this V1beta3Subject. # noqa: E501 - - - :return: The service_account of this V1beta3Subject. # noqa: E501 - :rtype: V1beta3ServiceAccountSubject - """ - return self._service_account - - @service_account.setter - def service_account(self, service_account): - """Sets the service_account of this V1beta3Subject. - - - :param service_account: The service_account of this V1beta3Subject. # noqa: E501 - :type: V1beta3ServiceAccountSubject - """ - - self._service_account = service_account - - @property - def user(self): - """Gets the user of this V1beta3Subject. # noqa: E501 - - - :return: The user of this V1beta3Subject. # noqa: E501 - :rtype: V1beta3UserSubject - """ - return self._user - - @user.setter - def user(self, user): - """Sets the user of this V1beta3Subject. - - - :param user: The user of this V1beta3Subject. # noqa: E501 - :type: V1beta3UserSubject - """ - - self._user = user - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3Subject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3Subject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_user_subject.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_user_subject.py deleted file mode 100644 index 0ad1a26..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v1beta3_user_subject.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V1beta3UserSubject(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str' - } - - attribute_map = { - 'name': 'name' - } - - def __init__(self, name=None, local_vars_configuration=None): # noqa: E501 - """V1beta3UserSubject - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self.discriminator = None - - self.name = name - - @property - def name(self): - """Gets the name of this V1beta3UserSubject. # noqa: E501 - - `name` is the username that matches, or \"*\" to match all usernames. Required. # noqa: E501 - - :return: The name of this V1beta3UserSubject. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V1beta3UserSubject. - - `name` is the username that matches, or \"*\" to match all usernames. Required. # noqa: E501 - - :param name: The name of this V1beta3UserSubject. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V1beta3UserSubject): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V1beta3UserSubject): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_source.py deleted file mode 100644 index 1a384de..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_source.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ContainerResourceMetricSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container': 'str', - 'name': 'str', - 'target': 'V2MetricTarget' - } - - attribute_map = { - 'container': 'container', - 'name': 'name', - 'target': 'target' - } - - def __init__(self, container=None, name=None, target=None, local_vars_configuration=None): # noqa: E501 - """V2ContainerResourceMetricSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container = None - self._name = None - self._target = None - self.discriminator = None - - self.container = container - self.name = name - self.target = target - - @property - def container(self): - """Gets the container of this V2ContainerResourceMetricSource. # noqa: E501 - - container is the name of the container in the pods of the scaling target # noqa: E501 - - :return: The container of this V2ContainerResourceMetricSource. # noqa: E501 - :rtype: str - """ - return self._container - - @container.setter - def container(self, container): - """Sets the container of this V2ContainerResourceMetricSource. - - container is the name of the container in the pods of the scaling target # noqa: E501 - - :param container: The container of this V2ContainerResourceMetricSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and container is None: # noqa: E501 - raise ValueError("Invalid value for `container`, must not be `None`") # noqa: E501 - - self._container = container - - @property - def name(self): - """Gets the name of this V2ContainerResourceMetricSource. # noqa: E501 - - name is the name of the resource in question. # noqa: E501 - - :return: The name of this V2ContainerResourceMetricSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2ContainerResourceMetricSource. - - name is the name of the resource in question. # noqa: E501 - - :param name: The name of this V2ContainerResourceMetricSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def target(self): - """Gets the target of this V2ContainerResourceMetricSource. # noqa: E501 - - - :return: The target of this V2ContainerResourceMetricSource. # noqa: E501 - :rtype: V2MetricTarget - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V2ContainerResourceMetricSource. - - - :param target: The target of this V2ContainerResourceMetricSource. # noqa: E501 - :type: V2MetricTarget - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ContainerResourceMetricSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ContainerResourceMetricSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_status.py deleted file mode 100644 index c1279e3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_container_resource_metric_status.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ContainerResourceMetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container': 'str', - 'current': 'V2MetricValueStatus', - 'name': 'str' - } - - attribute_map = { - 'container': 'container', - 'current': 'current', - 'name': 'name' - } - - def __init__(self, container=None, current=None, name=None, local_vars_configuration=None): # noqa: E501 - """V2ContainerResourceMetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container = None - self._current = None - self._name = None - self.discriminator = None - - self.container = container - self.current = current - self.name = name - - @property - def container(self): - """Gets the container of this V2ContainerResourceMetricStatus. # noqa: E501 - - container is the name of the container in the pods of the scaling target # noqa: E501 - - :return: The container of this V2ContainerResourceMetricStatus. # noqa: E501 - :rtype: str - """ - return self._container - - @container.setter - def container(self, container): - """Sets the container of this V2ContainerResourceMetricStatus. - - container is the name of the container in the pods of the scaling target # noqa: E501 - - :param container: The container of this V2ContainerResourceMetricStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and container is None: # noqa: E501 - raise ValueError("Invalid value for `container`, must not be `None`") # noqa: E501 - - self._container = container - - @property - def current(self): - """Gets the current of this V2ContainerResourceMetricStatus. # noqa: E501 - - - :return: The current of this V2ContainerResourceMetricStatus. # noqa: E501 - :rtype: V2MetricValueStatus - """ - return self._current - - @current.setter - def current(self, current): - """Sets the current of this V2ContainerResourceMetricStatus. - - - :param current: The current of this V2ContainerResourceMetricStatus. # noqa: E501 - :type: V2MetricValueStatus - """ - if self.local_vars_configuration.client_side_validation and current is None: # noqa: E501 - raise ValueError("Invalid value for `current`, must not be `None`") # noqa: E501 - - self._current = current - - @property - def name(self): - """Gets the name of this V2ContainerResourceMetricStatus. # noqa: E501 - - name is the name of the resource in question. # noqa: E501 - - :return: The name of this V2ContainerResourceMetricStatus. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2ContainerResourceMetricStatus. - - name is the name of the resource in question. # noqa: E501 - - :param name: The name of this V2ContainerResourceMetricStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ContainerResourceMetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ContainerResourceMetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_cross_version_object_reference.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_cross_version_object_reference.py deleted file mode 100644 index 44cb83c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_cross_version_object_reference.py +++ /dev/null @@ -1,180 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2CrossVersionObjectReference(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'name': 'str' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'name': 'name' - } - - def __init__(self, api_version=None, kind=None, name=None, local_vars_configuration=None): # noqa: E501 - """V2CrossVersionObjectReference - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._name = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.kind = kind - self.name = name - - @property - def api_version(self): - """Gets the api_version of this V2CrossVersionObjectReference. # noqa: E501 - - apiVersion is the API version of the referent # noqa: E501 - - :return: The api_version of this V2CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V2CrossVersionObjectReference. - - apiVersion is the API version of the referent # noqa: E501 - - :param api_version: The api_version of this V2CrossVersionObjectReference. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V2CrossVersionObjectReference. # noqa: E501 - - kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V2CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V2CrossVersionObjectReference. - - kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V2CrossVersionObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and kind is None: # noqa: E501 - raise ValueError("Invalid value for `kind`, must not be `None`") # noqa: E501 - - self._kind = kind - - @property - def name(self): - """Gets the name of this V2CrossVersionObjectReference. # noqa: E501 - - name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :return: The name of this V2CrossVersionObjectReference. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2CrossVersionObjectReference. - - name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names # noqa: E501 - - :param name: The name of this V2CrossVersionObjectReference. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2CrossVersionObjectReference): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2CrossVersionObjectReference): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_source.py deleted file mode 100644 index d7b28e3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_source.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ExternalMetricSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metric': 'V2MetricIdentifier', - 'target': 'V2MetricTarget' - } - - attribute_map = { - 'metric': 'metric', - 'target': 'target' - } - - def __init__(self, metric=None, target=None, local_vars_configuration=None): # noqa: E501 - """V2ExternalMetricSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metric = None - self._target = None - self.discriminator = None - - self.metric = metric - self.target = target - - @property - def metric(self): - """Gets the metric of this V2ExternalMetricSource. # noqa: E501 - - - :return: The metric of this V2ExternalMetricSource. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2ExternalMetricSource. - - - :param metric: The metric of this V2ExternalMetricSource. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - @property - def target(self): - """Gets the target of this V2ExternalMetricSource. # noqa: E501 - - - :return: The target of this V2ExternalMetricSource. # noqa: E501 - :rtype: V2MetricTarget - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V2ExternalMetricSource. - - - :param target: The target of this V2ExternalMetricSource. # noqa: E501 - :type: V2MetricTarget - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ExternalMetricSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ExternalMetricSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_status.py deleted file mode 100644 index 50ec9c3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_external_metric_status.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ExternalMetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'current': 'V2MetricValueStatus', - 'metric': 'V2MetricIdentifier' - } - - attribute_map = { - 'current': 'current', - 'metric': 'metric' - } - - def __init__(self, current=None, metric=None, local_vars_configuration=None): # noqa: E501 - """V2ExternalMetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._current = None - self._metric = None - self.discriminator = None - - self.current = current - self.metric = metric - - @property - def current(self): - """Gets the current of this V2ExternalMetricStatus. # noqa: E501 - - - :return: The current of this V2ExternalMetricStatus. # noqa: E501 - :rtype: V2MetricValueStatus - """ - return self._current - - @current.setter - def current(self, current): - """Sets the current of this V2ExternalMetricStatus. - - - :param current: The current of this V2ExternalMetricStatus. # noqa: E501 - :type: V2MetricValueStatus - """ - if self.local_vars_configuration.client_side_validation and current is None: # noqa: E501 - raise ValueError("Invalid value for `current`, must not be `None`") # noqa: E501 - - self._current = current - - @property - def metric(self): - """Gets the metric of this V2ExternalMetricStatus. # noqa: E501 - - - :return: The metric of this V2ExternalMetricStatus. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2ExternalMetricStatus. - - - :param metric: The metric of this V2ExternalMetricStatus. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ExternalMetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ExternalMetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler.py deleted file mode 100644 index f04027f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler.py +++ /dev/null @@ -1,228 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscaler(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'kind': 'str', - 'metadata': 'V1ObjectMeta', - 'spec': 'V2HorizontalPodAutoscalerSpec', - 'status': 'V2HorizontalPodAutoscalerStatus' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'kind': 'kind', - 'metadata': 'metadata', - 'spec': 'spec', - 'status': 'status' - } - - def __init__(self, api_version=None, kind=None, metadata=None, spec=None, status=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscaler - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._kind = None - self._metadata = None - self._spec = None - self._status = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - if spec is not None: - self.spec = spec - if status is not None: - self.status = status - - @property - def api_version(self): - """Gets the api_version of this V2HorizontalPodAutoscaler. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V2HorizontalPodAutoscaler. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V2HorizontalPodAutoscaler. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V2HorizontalPodAutoscaler. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def kind(self): - """Gets the kind of this V2HorizontalPodAutoscaler. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V2HorizontalPodAutoscaler. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V2HorizontalPodAutoscaler. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V2HorizontalPodAutoscaler. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V2HorizontalPodAutoscaler. # noqa: E501 - - - :return: The metadata of this V2HorizontalPodAutoscaler. # noqa: E501 - :rtype: V1ObjectMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V2HorizontalPodAutoscaler. - - - :param metadata: The metadata of this V2HorizontalPodAutoscaler. # noqa: E501 - :type: V1ObjectMeta - """ - - self._metadata = metadata - - @property - def spec(self): - """Gets the spec of this V2HorizontalPodAutoscaler. # noqa: E501 - - - :return: The spec of this V2HorizontalPodAutoscaler. # noqa: E501 - :rtype: V2HorizontalPodAutoscalerSpec - """ - return self._spec - - @spec.setter - def spec(self, spec): - """Sets the spec of this V2HorizontalPodAutoscaler. - - - :param spec: The spec of this V2HorizontalPodAutoscaler. # noqa: E501 - :type: V2HorizontalPodAutoscalerSpec - """ - - self._spec = spec - - @property - def status(self): - """Gets the status of this V2HorizontalPodAutoscaler. # noqa: E501 - - - :return: The status of this V2HorizontalPodAutoscaler. # noqa: E501 - :rtype: V2HorizontalPodAutoscalerStatus - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V2HorizontalPodAutoscaler. - - - :param status: The status of this V2HorizontalPodAutoscaler. # noqa: E501 - :type: V2HorizontalPodAutoscalerStatus - """ - - self._status = status - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscaler): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscaler): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_behavior.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_behavior.py deleted file mode 100644 index 2389a91..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_behavior.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscalerBehavior(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'scale_down': 'V2HPAScalingRules', - 'scale_up': 'V2HPAScalingRules' - } - - attribute_map = { - 'scale_down': 'scaleDown', - 'scale_up': 'scaleUp' - } - - def __init__(self, scale_down=None, scale_up=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscalerBehavior - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._scale_down = None - self._scale_up = None - self.discriminator = None - - if scale_down is not None: - self.scale_down = scale_down - if scale_up is not None: - self.scale_up = scale_up - - @property - def scale_down(self): - """Gets the scale_down of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - - - :return: The scale_down of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - :rtype: V2HPAScalingRules - """ - return self._scale_down - - @scale_down.setter - def scale_down(self, scale_down): - """Sets the scale_down of this V2HorizontalPodAutoscalerBehavior. - - - :param scale_down: The scale_down of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - :type: V2HPAScalingRules - """ - - self._scale_down = scale_down - - @property - def scale_up(self): - """Gets the scale_up of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - - - :return: The scale_up of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - :rtype: V2HPAScalingRules - """ - return self._scale_up - - @scale_up.setter - def scale_up(self, scale_up): - """Sets the scale_up of this V2HorizontalPodAutoscalerBehavior. - - - :param scale_up: The scale_up of this V2HorizontalPodAutoscalerBehavior. # noqa: E501 - :type: V2HPAScalingRules - """ - - self._scale_up = scale_up - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscalerBehavior): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscalerBehavior): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_condition.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_condition.py deleted file mode 100644 index 75e93dd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_condition.py +++ /dev/null @@ -1,236 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscalerCondition(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'last_transition_time': 'datetime', - 'message': 'str', - 'reason': 'str', - 'status': 'str', - 'type': 'str' - } - - attribute_map = { - 'last_transition_time': 'lastTransitionTime', - 'message': 'message', - 'reason': 'reason', - 'status': 'status', - 'type': 'type' - } - - def __init__(self, last_transition_time=None, message=None, reason=None, status=None, type=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscalerCondition - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._last_transition_time = None - self._message = None - self._reason = None - self._status = None - self._type = None - self.discriminator = None - - if last_transition_time is not None: - self.last_transition_time = last_transition_time - if message is not None: - self.message = message - if reason is not None: - self.reason = reason - self.status = status - self.type = type - - @property - def last_transition_time(self): - """Gets the last_transition_time of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - - lastTransitionTime is the last time the condition transitioned from one status to another # noqa: E501 - - :return: The last_transition_time of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :rtype: datetime - """ - return self._last_transition_time - - @last_transition_time.setter - def last_transition_time(self, last_transition_time): - """Sets the last_transition_time of this V2HorizontalPodAutoscalerCondition. - - lastTransitionTime is the last time the condition transitioned from one status to another # noqa: E501 - - :param last_transition_time: The last_transition_time of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :type: datetime - """ - - self._last_transition_time = last_transition_time - - @property - def message(self): - """Gets the message of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - - message is a human-readable explanation containing details about the transition # noqa: E501 - - :return: The message of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :rtype: str - """ - return self._message - - @message.setter - def message(self, message): - """Sets the message of this V2HorizontalPodAutoscalerCondition. - - message is a human-readable explanation containing details about the transition # noqa: E501 - - :param message: The message of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :type: str - """ - - self._message = message - - @property - def reason(self): - """Gets the reason of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - - reason is the reason for the condition's last transition. # noqa: E501 - - :return: The reason of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :rtype: str - """ - return self._reason - - @reason.setter - def reason(self, reason): - """Sets the reason of this V2HorizontalPodAutoscalerCondition. - - reason is the reason for the condition's last transition. # noqa: E501 - - :param reason: The reason of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :type: str - """ - - self._reason = reason - - @property - def status(self): - """Gets the status of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - - status is the status of the condition (True, False, Unknown) # noqa: E501 - - :return: The status of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :rtype: str - """ - return self._status - - @status.setter - def status(self, status): - """Sets the status of this V2HorizontalPodAutoscalerCondition. - - status is the status of the condition (True, False, Unknown) # noqa: E501 - - :param status: The status of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and status is None: # noqa: E501 - raise ValueError("Invalid value for `status`, must not be `None`") # noqa: E501 - - self._status = status - - @property - def type(self): - """Gets the type of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - - type describes the current condition # noqa: E501 - - :return: The type of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V2HorizontalPodAutoscalerCondition. - - type describes the current condition # noqa: E501 - - :param type: The type of this V2HorizontalPodAutoscalerCondition. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscalerCondition): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscalerCondition): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_list.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_list.py deleted file mode 100644 index 108e012..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_list.py +++ /dev/null @@ -1,205 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscalerList(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'api_version': 'str', - 'items': 'list[V2HorizontalPodAutoscaler]', - 'kind': 'str', - 'metadata': 'V1ListMeta' - } - - attribute_map = { - 'api_version': 'apiVersion', - 'items': 'items', - 'kind': 'kind', - 'metadata': 'metadata' - } - - def __init__(self, api_version=None, items=None, kind=None, metadata=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscalerList - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._api_version = None - self._items = None - self._kind = None - self._metadata = None - self.discriminator = None - - if api_version is not None: - self.api_version = api_version - self.items = items - if kind is not None: - self.kind = kind - if metadata is not None: - self.metadata = metadata - - @property - def api_version(self): - """Gets the api_version of this V2HorizontalPodAutoscalerList. # noqa: E501 - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :return: The api_version of this V2HorizontalPodAutoscalerList. # noqa: E501 - :rtype: str - """ - return self._api_version - - @api_version.setter - def api_version(self, api_version): - """Sets the api_version of this V2HorizontalPodAutoscalerList. - - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources # noqa: E501 - - :param api_version: The api_version of this V2HorizontalPodAutoscalerList. # noqa: E501 - :type: str - """ - - self._api_version = api_version - - @property - def items(self): - """Gets the items of this V2HorizontalPodAutoscalerList. # noqa: E501 - - items is the list of horizontal pod autoscaler objects. # noqa: E501 - - :return: The items of this V2HorizontalPodAutoscalerList. # noqa: E501 - :rtype: list[V2HorizontalPodAutoscaler] - """ - return self._items - - @items.setter - def items(self, items): - """Sets the items of this V2HorizontalPodAutoscalerList. - - items is the list of horizontal pod autoscaler objects. # noqa: E501 - - :param items: The items of this V2HorizontalPodAutoscalerList. # noqa: E501 - :type: list[V2HorizontalPodAutoscaler] - """ - if self.local_vars_configuration.client_side_validation and items is None: # noqa: E501 - raise ValueError("Invalid value for `items`, must not be `None`") # noqa: E501 - - self._items = items - - @property - def kind(self): - """Gets the kind of this V2HorizontalPodAutoscalerList. # noqa: E501 - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :return: The kind of this V2HorizontalPodAutoscalerList. # noqa: E501 - :rtype: str - """ - return self._kind - - @kind.setter - def kind(self, kind): - """Sets the kind of this V2HorizontalPodAutoscalerList. - - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds # noqa: E501 - - :param kind: The kind of this V2HorizontalPodAutoscalerList. # noqa: E501 - :type: str - """ - - self._kind = kind - - @property - def metadata(self): - """Gets the metadata of this V2HorizontalPodAutoscalerList. # noqa: E501 - - - :return: The metadata of this V2HorizontalPodAutoscalerList. # noqa: E501 - :rtype: V1ListMeta - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Sets the metadata of this V2HorizontalPodAutoscalerList. - - - :param metadata: The metadata of this V2HorizontalPodAutoscalerList. # noqa: E501 - :type: V1ListMeta - """ - - self._metadata = metadata - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscalerList): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscalerList): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_spec.py deleted file mode 100644 index d15cdb4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_spec.py +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscalerSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'behavior': 'V2HorizontalPodAutoscalerBehavior', - 'max_replicas': 'int', - 'metrics': 'list[V2MetricSpec]', - 'min_replicas': 'int', - 'scale_target_ref': 'V2CrossVersionObjectReference' - } - - attribute_map = { - 'behavior': 'behavior', - 'max_replicas': 'maxReplicas', - 'metrics': 'metrics', - 'min_replicas': 'minReplicas', - 'scale_target_ref': 'scaleTargetRef' - } - - def __init__(self, behavior=None, max_replicas=None, metrics=None, min_replicas=None, scale_target_ref=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscalerSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._behavior = None - self._max_replicas = None - self._metrics = None - self._min_replicas = None - self._scale_target_ref = None - self.discriminator = None - - if behavior is not None: - self.behavior = behavior - self.max_replicas = max_replicas - if metrics is not None: - self.metrics = metrics - if min_replicas is not None: - self.min_replicas = min_replicas - self.scale_target_ref = scale_target_ref - - @property - def behavior(self): - """Gets the behavior of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - - - :return: The behavior of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: V2HorizontalPodAutoscalerBehavior - """ - return self._behavior - - @behavior.setter - def behavior(self, behavior): - """Sets the behavior of this V2HorizontalPodAutoscalerSpec. - - - :param behavior: The behavior of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :type: V2HorizontalPodAutoscalerBehavior - """ - - self._behavior = behavior - - @property - def max_replicas(self): - """Gets the max_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - - maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas. # noqa: E501 - - :return: The max_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: int - """ - return self._max_replicas - - @max_replicas.setter - def max_replicas(self, max_replicas): - """Sets the max_replicas of this V2HorizontalPodAutoscalerSpec. - - maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas. # noqa: E501 - - :param max_replicas: The max_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and max_replicas is None: # noqa: E501 - raise ValueError("Invalid value for `max_replicas`, must not be `None`") # noqa: E501 - - self._max_replicas = max_replicas - - @property - def metrics(self): - """Gets the metrics of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - - metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization. # noqa: E501 - - :return: The metrics of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: list[V2MetricSpec] - """ - return self._metrics - - @metrics.setter - def metrics(self, metrics): - """Sets the metrics of this V2HorizontalPodAutoscalerSpec. - - metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization. # noqa: E501 - - :param metrics: The metrics of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :type: list[V2MetricSpec] - """ - - self._metrics = metrics - - @property - def min_replicas(self): - """Gets the min_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - - minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. # noqa: E501 - - :return: The min_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: int - """ - return self._min_replicas - - @min_replicas.setter - def min_replicas(self, min_replicas): - """Sets the min_replicas of this V2HorizontalPodAutoscalerSpec. - - minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. # noqa: E501 - - :param min_replicas: The min_replicas of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :type: int - """ - - self._min_replicas = min_replicas - - @property - def scale_target_ref(self): - """Gets the scale_target_ref of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - - - :return: The scale_target_ref of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :rtype: V2CrossVersionObjectReference - """ - return self._scale_target_ref - - @scale_target_ref.setter - def scale_target_ref(self, scale_target_ref): - """Sets the scale_target_ref of this V2HorizontalPodAutoscalerSpec. - - - :param scale_target_ref: The scale_target_ref of this V2HorizontalPodAutoscalerSpec. # noqa: E501 - :type: V2CrossVersionObjectReference - """ - if self.local_vars_configuration.client_side_validation and scale_target_ref is None: # noqa: E501 - raise ValueError("Invalid value for `scale_target_ref`, must not be `None`") # noqa: E501 - - self._scale_target_ref = scale_target_ref - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscalerSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscalerSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_status.py deleted file mode 100644 index 8587cf5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_horizontal_pod_autoscaler_status.py +++ /dev/null @@ -1,263 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HorizontalPodAutoscalerStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'conditions': 'list[V2HorizontalPodAutoscalerCondition]', - 'current_metrics': 'list[V2MetricStatus]', - 'current_replicas': 'int', - 'desired_replicas': 'int', - 'last_scale_time': 'datetime', - 'observed_generation': 'int' - } - - attribute_map = { - 'conditions': 'conditions', - 'current_metrics': 'currentMetrics', - 'current_replicas': 'currentReplicas', - 'desired_replicas': 'desiredReplicas', - 'last_scale_time': 'lastScaleTime', - 'observed_generation': 'observedGeneration' - } - - def __init__(self, conditions=None, current_metrics=None, current_replicas=None, desired_replicas=None, last_scale_time=None, observed_generation=None, local_vars_configuration=None): # noqa: E501 - """V2HorizontalPodAutoscalerStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._conditions = None - self._current_metrics = None - self._current_replicas = None - self._desired_replicas = None - self._last_scale_time = None - self._observed_generation = None - self.discriminator = None - - if conditions is not None: - self.conditions = conditions - if current_metrics is not None: - self.current_metrics = current_metrics - if current_replicas is not None: - self.current_replicas = current_replicas - self.desired_replicas = desired_replicas - if last_scale_time is not None: - self.last_scale_time = last_scale_time - if observed_generation is not None: - self.observed_generation = observed_generation - - @property - def conditions(self): - """Gets the conditions of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met. # noqa: E501 - - :return: The conditions of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: list[V2HorizontalPodAutoscalerCondition] - """ - return self._conditions - - @conditions.setter - def conditions(self, conditions): - """Sets the conditions of this V2HorizontalPodAutoscalerStatus. - - conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met. # noqa: E501 - - :param conditions: The conditions of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: list[V2HorizontalPodAutoscalerCondition] - """ - - self._conditions = conditions - - @property - def current_metrics(self): - """Gets the current_metrics of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - currentMetrics is the last read state of the metrics used by this autoscaler. # noqa: E501 - - :return: The current_metrics of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: list[V2MetricStatus] - """ - return self._current_metrics - - @current_metrics.setter - def current_metrics(self, current_metrics): - """Sets the current_metrics of this V2HorizontalPodAutoscalerStatus. - - currentMetrics is the last read state of the metrics used by this autoscaler. # noqa: E501 - - :param current_metrics: The current_metrics of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: list[V2MetricStatus] - """ - - self._current_metrics = current_metrics - - @property - def current_replicas(self): - """Gets the current_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler. # noqa: E501 - - :return: The current_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._current_replicas - - @current_replicas.setter - def current_replicas(self, current_replicas): - """Sets the current_replicas of this V2HorizontalPodAutoscalerStatus. - - currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler. # noqa: E501 - - :param current_replicas: The current_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - - self._current_replicas = current_replicas - - @property - def desired_replicas(self): - """Gets the desired_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler. # noqa: E501 - - :return: The desired_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._desired_replicas - - @desired_replicas.setter - def desired_replicas(self, desired_replicas): - """Sets the desired_replicas of this V2HorizontalPodAutoscalerStatus. - - desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler. # noqa: E501 - - :param desired_replicas: The desired_replicas of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and desired_replicas is None: # noqa: E501 - raise ValueError("Invalid value for `desired_replicas`, must not be `None`") # noqa: E501 - - self._desired_replicas = desired_replicas - - @property - def last_scale_time(self): - """Gets the last_scale_time of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed. # noqa: E501 - - :return: The last_scale_time of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: datetime - """ - return self._last_scale_time - - @last_scale_time.setter - def last_scale_time(self, last_scale_time): - """Sets the last_scale_time of this V2HorizontalPodAutoscalerStatus. - - lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed. # noqa: E501 - - :param last_scale_time: The last_scale_time of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: datetime - """ - - self._last_scale_time = last_scale_time - - @property - def observed_generation(self): - """Gets the observed_generation of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - - observedGeneration is the most recent generation observed by this autoscaler. # noqa: E501 - - :return: The observed_generation of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :rtype: int - """ - return self._observed_generation - - @observed_generation.setter - def observed_generation(self, observed_generation): - """Sets the observed_generation of this V2HorizontalPodAutoscalerStatus. - - observedGeneration is the most recent generation observed by this autoscaler. # noqa: E501 - - :param observed_generation: The observed_generation of this V2HorizontalPodAutoscalerStatus. # noqa: E501 - :type: int - """ - - self._observed_generation = observed_generation - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HorizontalPodAutoscalerStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HorizontalPodAutoscalerStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_policy.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_policy.py deleted file mode 100644 index 9debb54..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_policy.py +++ /dev/null @@ -1,181 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HPAScalingPolicy(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'period_seconds': 'int', - 'type': 'str', - 'value': 'int' - } - - attribute_map = { - 'period_seconds': 'periodSeconds', - 'type': 'type', - 'value': 'value' - } - - def __init__(self, period_seconds=None, type=None, value=None, local_vars_configuration=None): # noqa: E501 - """V2HPAScalingPolicy - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._period_seconds = None - self._type = None - self._value = None - self.discriminator = None - - self.period_seconds = period_seconds - self.type = type - self.value = value - - @property - def period_seconds(self): - """Gets the period_seconds of this V2HPAScalingPolicy. # noqa: E501 - - periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). # noqa: E501 - - :return: The period_seconds of this V2HPAScalingPolicy. # noqa: E501 - :rtype: int - """ - return self._period_seconds - - @period_seconds.setter - def period_seconds(self, period_seconds): - """Sets the period_seconds of this V2HPAScalingPolicy. - - periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). # noqa: E501 - - :param period_seconds: The period_seconds of this V2HPAScalingPolicy. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and period_seconds is None: # noqa: E501 - raise ValueError("Invalid value for `period_seconds`, must not be `None`") # noqa: E501 - - self._period_seconds = period_seconds - - @property - def type(self): - """Gets the type of this V2HPAScalingPolicy. # noqa: E501 - - type is used to specify the scaling policy. # noqa: E501 - - :return: The type of this V2HPAScalingPolicy. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V2HPAScalingPolicy. - - type is used to specify the scaling policy. # noqa: E501 - - :param type: The type of this V2HPAScalingPolicy. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - @property - def value(self): - """Gets the value of this V2HPAScalingPolicy. # noqa: E501 - - value contains the amount of change which is permitted by the policy. It must be greater than zero # noqa: E501 - - :return: The value of this V2HPAScalingPolicy. # noqa: E501 - :rtype: int - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V2HPAScalingPolicy. - - value contains the amount of change which is permitted by the policy. It must be greater than zero # noqa: E501 - - :param value: The value of this V2HPAScalingPolicy. # noqa: E501 - :type: int - """ - if self.local_vars_configuration.client_side_validation and value is None: # noqa: E501 - raise ValueError("Invalid value for `value`, must not be `None`") # noqa: E501 - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HPAScalingPolicy): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HPAScalingPolicy): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_rules.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_rules.py deleted file mode 100644 index c84fbc3..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_hpa_scaling_rules.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2HPAScalingRules(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'policies': 'list[V2HPAScalingPolicy]', - 'select_policy': 'str', - 'stabilization_window_seconds': 'int' - } - - attribute_map = { - 'policies': 'policies', - 'select_policy': 'selectPolicy', - 'stabilization_window_seconds': 'stabilizationWindowSeconds' - } - - def __init__(self, policies=None, select_policy=None, stabilization_window_seconds=None, local_vars_configuration=None): # noqa: E501 - """V2HPAScalingRules - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._policies = None - self._select_policy = None - self._stabilization_window_seconds = None - self.discriminator = None - - if policies is not None: - self.policies = policies - if select_policy is not None: - self.select_policy = select_policy - if stabilization_window_seconds is not None: - self.stabilization_window_seconds = stabilization_window_seconds - - @property - def policies(self): - """Gets the policies of this V2HPAScalingRules. # noqa: E501 - - policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid # noqa: E501 - - :return: The policies of this V2HPAScalingRules. # noqa: E501 - :rtype: list[V2HPAScalingPolicy] - """ - return self._policies - - @policies.setter - def policies(self, policies): - """Sets the policies of this V2HPAScalingRules. - - policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid # noqa: E501 - - :param policies: The policies of this V2HPAScalingRules. # noqa: E501 - :type: list[V2HPAScalingPolicy] - """ - - self._policies = policies - - @property - def select_policy(self): - """Gets the select_policy of this V2HPAScalingRules. # noqa: E501 - - selectPolicy is used to specify which policy should be used. If not set, the default value Max is used. # noqa: E501 - - :return: The select_policy of this V2HPAScalingRules. # noqa: E501 - :rtype: str - """ - return self._select_policy - - @select_policy.setter - def select_policy(self, select_policy): - """Sets the select_policy of this V2HPAScalingRules. - - selectPolicy is used to specify which policy should be used. If not set, the default value Max is used. # noqa: E501 - - :param select_policy: The select_policy of this V2HPAScalingRules. # noqa: E501 - :type: str - """ - - self._select_policy = select_policy - - @property - def stabilization_window_seconds(self): - """Gets the stabilization_window_seconds of this V2HPAScalingRules. # noqa: E501 - - stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). # noqa: E501 - - :return: The stabilization_window_seconds of this V2HPAScalingRules. # noqa: E501 - :rtype: int - """ - return self._stabilization_window_seconds - - @stabilization_window_seconds.setter - def stabilization_window_seconds(self, stabilization_window_seconds): - """Sets the stabilization_window_seconds of this V2HPAScalingRules. - - stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). # noqa: E501 - - :param stabilization_window_seconds: The stabilization_window_seconds of this V2HPAScalingRules. # noqa: E501 - :type: int - """ - - self._stabilization_window_seconds = stabilization_window_seconds - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2HPAScalingRules): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2HPAScalingRules): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_identifier.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_identifier.py deleted file mode 100644 index af60b42..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_identifier.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2MetricIdentifier(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'selector': 'V1LabelSelector' - } - - attribute_map = { - 'name': 'name', - 'selector': 'selector' - } - - def __init__(self, name=None, selector=None, local_vars_configuration=None): # noqa: E501 - """V2MetricIdentifier - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._selector = None - self.discriminator = None - - self.name = name - if selector is not None: - self.selector = selector - - @property - def name(self): - """Gets the name of this V2MetricIdentifier. # noqa: E501 - - name is the name of the given metric # noqa: E501 - - :return: The name of this V2MetricIdentifier. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2MetricIdentifier. - - name is the name of the given metric # noqa: E501 - - :param name: The name of this V2MetricIdentifier. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def selector(self): - """Gets the selector of this V2MetricIdentifier. # noqa: E501 - - - :return: The selector of this V2MetricIdentifier. # noqa: E501 - :rtype: V1LabelSelector - """ - return self._selector - - @selector.setter - def selector(self, selector): - """Sets the selector of this V2MetricIdentifier. - - - :param selector: The selector of this V2MetricIdentifier. # noqa: E501 - :type: V1LabelSelector - """ - - self._selector = selector - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2MetricIdentifier): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2MetricIdentifier): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_spec.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_spec.py deleted file mode 100644 index 40a1230..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_spec.py +++ /dev/null @@ -1,253 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2MetricSpec(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_resource': 'V2ContainerResourceMetricSource', - 'external': 'V2ExternalMetricSource', - 'object': 'V2ObjectMetricSource', - 'pods': 'V2PodsMetricSource', - 'resource': 'V2ResourceMetricSource', - 'type': 'str' - } - - attribute_map = { - 'container_resource': 'containerResource', - 'external': 'external', - 'object': 'object', - 'pods': 'pods', - 'resource': 'resource', - 'type': 'type' - } - - def __init__(self, container_resource=None, external=None, object=None, pods=None, resource=None, type=None, local_vars_configuration=None): # noqa: E501 - """V2MetricSpec - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_resource = None - self._external = None - self._object = None - self._pods = None - self._resource = None - self._type = None - self.discriminator = None - - if container_resource is not None: - self.container_resource = container_resource - if external is not None: - self.external = external - if object is not None: - self.object = object - if pods is not None: - self.pods = pods - if resource is not None: - self.resource = resource - self.type = type - - @property - def container_resource(self): - """Gets the container_resource of this V2MetricSpec. # noqa: E501 - - - :return: The container_resource of this V2MetricSpec. # noqa: E501 - :rtype: V2ContainerResourceMetricSource - """ - return self._container_resource - - @container_resource.setter - def container_resource(self, container_resource): - """Sets the container_resource of this V2MetricSpec. - - - :param container_resource: The container_resource of this V2MetricSpec. # noqa: E501 - :type: V2ContainerResourceMetricSource - """ - - self._container_resource = container_resource - - @property - def external(self): - """Gets the external of this V2MetricSpec. # noqa: E501 - - - :return: The external of this V2MetricSpec. # noqa: E501 - :rtype: V2ExternalMetricSource - """ - return self._external - - @external.setter - def external(self, external): - """Sets the external of this V2MetricSpec. - - - :param external: The external of this V2MetricSpec. # noqa: E501 - :type: V2ExternalMetricSource - """ - - self._external = external - - @property - def object(self): - """Gets the object of this V2MetricSpec. # noqa: E501 - - - :return: The object of this V2MetricSpec. # noqa: E501 - :rtype: V2ObjectMetricSource - """ - return self._object - - @object.setter - def object(self, object): - """Sets the object of this V2MetricSpec. - - - :param object: The object of this V2MetricSpec. # noqa: E501 - :type: V2ObjectMetricSource - """ - - self._object = object - - @property - def pods(self): - """Gets the pods of this V2MetricSpec. # noqa: E501 - - - :return: The pods of this V2MetricSpec. # noqa: E501 - :rtype: V2PodsMetricSource - """ - return self._pods - - @pods.setter - def pods(self, pods): - """Sets the pods of this V2MetricSpec. - - - :param pods: The pods of this V2MetricSpec. # noqa: E501 - :type: V2PodsMetricSource - """ - - self._pods = pods - - @property - def resource(self): - """Gets the resource of this V2MetricSpec. # noqa: E501 - - - :return: The resource of this V2MetricSpec. # noqa: E501 - :rtype: V2ResourceMetricSource - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V2MetricSpec. - - - :param resource: The resource of this V2MetricSpec. # noqa: E501 - :type: V2ResourceMetricSource - """ - - self._resource = resource - - @property - def type(self): - """Gets the type of this V2MetricSpec. # noqa: E501 - - type is the type of metric source. It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled # noqa: E501 - - :return: The type of this V2MetricSpec. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V2MetricSpec. - - type is the type of metric source. It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled # noqa: E501 - - :param type: The type of this V2MetricSpec. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2MetricSpec): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2MetricSpec): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_status.py deleted file mode 100644 index 386b65e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_status.py +++ /dev/null @@ -1,253 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2MetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'container_resource': 'V2ContainerResourceMetricStatus', - 'external': 'V2ExternalMetricStatus', - 'object': 'V2ObjectMetricStatus', - 'pods': 'V2PodsMetricStatus', - 'resource': 'V2ResourceMetricStatus', - 'type': 'str' - } - - attribute_map = { - 'container_resource': 'containerResource', - 'external': 'external', - 'object': 'object', - 'pods': 'pods', - 'resource': 'resource', - 'type': 'type' - } - - def __init__(self, container_resource=None, external=None, object=None, pods=None, resource=None, type=None, local_vars_configuration=None): # noqa: E501 - """V2MetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._container_resource = None - self._external = None - self._object = None - self._pods = None - self._resource = None - self._type = None - self.discriminator = None - - if container_resource is not None: - self.container_resource = container_resource - if external is not None: - self.external = external - if object is not None: - self.object = object - if pods is not None: - self.pods = pods - if resource is not None: - self.resource = resource - self.type = type - - @property - def container_resource(self): - """Gets the container_resource of this V2MetricStatus. # noqa: E501 - - - :return: The container_resource of this V2MetricStatus. # noqa: E501 - :rtype: V2ContainerResourceMetricStatus - """ - return self._container_resource - - @container_resource.setter - def container_resource(self, container_resource): - """Sets the container_resource of this V2MetricStatus. - - - :param container_resource: The container_resource of this V2MetricStatus. # noqa: E501 - :type: V2ContainerResourceMetricStatus - """ - - self._container_resource = container_resource - - @property - def external(self): - """Gets the external of this V2MetricStatus. # noqa: E501 - - - :return: The external of this V2MetricStatus. # noqa: E501 - :rtype: V2ExternalMetricStatus - """ - return self._external - - @external.setter - def external(self, external): - """Sets the external of this V2MetricStatus. - - - :param external: The external of this V2MetricStatus. # noqa: E501 - :type: V2ExternalMetricStatus - """ - - self._external = external - - @property - def object(self): - """Gets the object of this V2MetricStatus. # noqa: E501 - - - :return: The object of this V2MetricStatus. # noqa: E501 - :rtype: V2ObjectMetricStatus - """ - return self._object - - @object.setter - def object(self, object): - """Sets the object of this V2MetricStatus. - - - :param object: The object of this V2MetricStatus. # noqa: E501 - :type: V2ObjectMetricStatus - """ - - self._object = object - - @property - def pods(self): - """Gets the pods of this V2MetricStatus. # noqa: E501 - - - :return: The pods of this V2MetricStatus. # noqa: E501 - :rtype: V2PodsMetricStatus - """ - return self._pods - - @pods.setter - def pods(self, pods): - """Sets the pods of this V2MetricStatus. - - - :param pods: The pods of this V2MetricStatus. # noqa: E501 - :type: V2PodsMetricStatus - """ - - self._pods = pods - - @property - def resource(self): - """Gets the resource of this V2MetricStatus. # noqa: E501 - - - :return: The resource of this V2MetricStatus. # noqa: E501 - :rtype: V2ResourceMetricStatus - """ - return self._resource - - @resource.setter - def resource(self, resource): - """Sets the resource of this V2MetricStatus. - - - :param resource: The resource of this V2MetricStatus. # noqa: E501 - :type: V2ResourceMetricStatus - """ - - self._resource = resource - - @property - def type(self): - """Gets the type of this V2MetricStatus. # noqa: E501 - - type is the type of metric source. It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled # noqa: E501 - - :return: The type of this V2MetricStatus. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V2MetricStatus. - - type is the type of metric source. It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled # noqa: E501 - - :param type: The type of this V2MetricStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2MetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2MetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_target.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_target.py deleted file mode 100644 index ddf1c12..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_target.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2MetricTarget(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'average_utilization': 'int', - 'average_value': 'str', - 'type': 'str', - 'value': 'str' - } - - attribute_map = { - 'average_utilization': 'averageUtilization', - 'average_value': 'averageValue', - 'type': 'type', - 'value': 'value' - } - - def __init__(self, average_utilization=None, average_value=None, type=None, value=None, local_vars_configuration=None): # noqa: E501 - """V2MetricTarget - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._average_utilization = None - self._average_value = None - self._type = None - self._value = None - self.discriminator = None - - if average_utilization is not None: - self.average_utilization = average_utilization - if average_value is not None: - self.average_value = average_value - self.type = type - if value is not None: - self.value = value - - @property - def average_utilization(self): - """Gets the average_utilization of this V2MetricTarget. # noqa: E501 - - averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type # noqa: E501 - - :return: The average_utilization of this V2MetricTarget. # noqa: E501 - :rtype: int - """ - return self._average_utilization - - @average_utilization.setter - def average_utilization(self, average_utilization): - """Sets the average_utilization of this V2MetricTarget. - - averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type # noqa: E501 - - :param average_utilization: The average_utilization of this V2MetricTarget. # noqa: E501 - :type: int - """ - - self._average_utilization = average_utilization - - @property - def average_value(self): - """Gets the average_value of this V2MetricTarget. # noqa: E501 - - averageValue is the target value of the average of the metric across all relevant pods (as a quantity) # noqa: E501 - - :return: The average_value of this V2MetricTarget. # noqa: E501 - :rtype: str - """ - return self._average_value - - @average_value.setter - def average_value(self, average_value): - """Sets the average_value of this V2MetricTarget. - - averageValue is the target value of the average of the metric across all relevant pods (as a quantity) # noqa: E501 - - :param average_value: The average_value of this V2MetricTarget. # noqa: E501 - :type: str - """ - - self._average_value = average_value - - @property - def type(self): - """Gets the type of this V2MetricTarget. # noqa: E501 - - type represents whether the metric type is Utilization, Value, or AverageValue # noqa: E501 - - :return: The type of this V2MetricTarget. # noqa: E501 - :rtype: str - """ - return self._type - - @type.setter - def type(self, type): - """Sets the type of this V2MetricTarget. - - type represents whether the metric type is Utilization, Value, or AverageValue # noqa: E501 - - :param type: The type of this V2MetricTarget. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and type is None: # noqa: E501 - raise ValueError("Invalid value for `type`, must not be `None`") # noqa: E501 - - self._type = type - - @property - def value(self): - """Gets the value of this V2MetricTarget. # noqa: E501 - - value is the target value of the metric (as a quantity). # noqa: E501 - - :return: The value of this V2MetricTarget. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V2MetricTarget. - - value is the target value of the metric (as a quantity). # noqa: E501 - - :param value: The value of this V2MetricTarget. # noqa: E501 - :type: str - """ - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2MetricTarget): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2MetricTarget): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_value_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_value_status.py deleted file mode 100644 index e434ccc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_metric_value_status.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2MetricValueStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'average_utilization': 'int', - 'average_value': 'str', - 'value': 'str' - } - - attribute_map = { - 'average_utilization': 'averageUtilization', - 'average_value': 'averageValue', - 'value': 'value' - } - - def __init__(self, average_utilization=None, average_value=None, value=None, local_vars_configuration=None): # noqa: E501 - """V2MetricValueStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._average_utilization = None - self._average_value = None - self._value = None - self.discriminator = None - - if average_utilization is not None: - self.average_utilization = average_utilization - if average_value is not None: - self.average_value = average_value - if value is not None: - self.value = value - - @property - def average_utilization(self): - """Gets the average_utilization of this V2MetricValueStatus. # noqa: E501 - - currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. # noqa: E501 - - :return: The average_utilization of this V2MetricValueStatus. # noqa: E501 - :rtype: int - """ - return self._average_utilization - - @average_utilization.setter - def average_utilization(self, average_utilization): - """Sets the average_utilization of this V2MetricValueStatus. - - currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. # noqa: E501 - - :param average_utilization: The average_utilization of this V2MetricValueStatus. # noqa: E501 - :type: int - """ - - self._average_utilization = average_utilization - - @property - def average_value(self): - """Gets the average_value of this V2MetricValueStatus. # noqa: E501 - - averageValue is the current value of the average of the metric across all relevant pods (as a quantity) # noqa: E501 - - :return: The average_value of this V2MetricValueStatus. # noqa: E501 - :rtype: str - """ - return self._average_value - - @average_value.setter - def average_value(self, average_value): - """Sets the average_value of this V2MetricValueStatus. - - averageValue is the current value of the average of the metric across all relevant pods (as a quantity) # noqa: E501 - - :param average_value: The average_value of this V2MetricValueStatus. # noqa: E501 - :type: str - """ - - self._average_value = average_value - - @property - def value(self): - """Gets the value of this V2MetricValueStatus. # noqa: E501 - - value is the current value of the metric (as a quantity). # noqa: E501 - - :return: The value of this V2MetricValueStatus. # noqa: E501 - :rtype: str - """ - return self._value - - @value.setter - def value(self, value): - """Sets the value of this V2MetricValueStatus. - - value is the current value of the metric (as a quantity). # noqa: E501 - - :param value: The value of this V2MetricValueStatus. # noqa: E501 - :type: str - """ - - self._value = value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2MetricValueStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2MetricValueStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_source.py deleted file mode 100644 index b4b417b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_source.py +++ /dev/null @@ -1,175 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ObjectMetricSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'described_object': 'V2CrossVersionObjectReference', - 'metric': 'V2MetricIdentifier', - 'target': 'V2MetricTarget' - } - - attribute_map = { - 'described_object': 'describedObject', - 'metric': 'metric', - 'target': 'target' - } - - def __init__(self, described_object=None, metric=None, target=None, local_vars_configuration=None): # noqa: E501 - """V2ObjectMetricSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._described_object = None - self._metric = None - self._target = None - self.discriminator = None - - self.described_object = described_object - self.metric = metric - self.target = target - - @property - def described_object(self): - """Gets the described_object of this V2ObjectMetricSource. # noqa: E501 - - - :return: The described_object of this V2ObjectMetricSource. # noqa: E501 - :rtype: V2CrossVersionObjectReference - """ - return self._described_object - - @described_object.setter - def described_object(self, described_object): - """Sets the described_object of this V2ObjectMetricSource. - - - :param described_object: The described_object of this V2ObjectMetricSource. # noqa: E501 - :type: V2CrossVersionObjectReference - """ - if self.local_vars_configuration.client_side_validation and described_object is None: # noqa: E501 - raise ValueError("Invalid value for `described_object`, must not be `None`") # noqa: E501 - - self._described_object = described_object - - @property - def metric(self): - """Gets the metric of this V2ObjectMetricSource. # noqa: E501 - - - :return: The metric of this V2ObjectMetricSource. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2ObjectMetricSource. - - - :param metric: The metric of this V2ObjectMetricSource. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - @property - def target(self): - """Gets the target of this V2ObjectMetricSource. # noqa: E501 - - - :return: The target of this V2ObjectMetricSource. # noqa: E501 - :rtype: V2MetricTarget - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V2ObjectMetricSource. - - - :param target: The target of this V2ObjectMetricSource. # noqa: E501 - :type: V2MetricTarget - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ObjectMetricSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ObjectMetricSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_status.py deleted file mode 100644 index 8947e3f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_object_metric_status.py +++ /dev/null @@ -1,175 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ObjectMetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'current': 'V2MetricValueStatus', - 'described_object': 'V2CrossVersionObjectReference', - 'metric': 'V2MetricIdentifier' - } - - attribute_map = { - 'current': 'current', - 'described_object': 'describedObject', - 'metric': 'metric' - } - - def __init__(self, current=None, described_object=None, metric=None, local_vars_configuration=None): # noqa: E501 - """V2ObjectMetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._current = None - self._described_object = None - self._metric = None - self.discriminator = None - - self.current = current - self.described_object = described_object - self.metric = metric - - @property - def current(self): - """Gets the current of this V2ObjectMetricStatus. # noqa: E501 - - - :return: The current of this V2ObjectMetricStatus. # noqa: E501 - :rtype: V2MetricValueStatus - """ - return self._current - - @current.setter - def current(self, current): - """Sets the current of this V2ObjectMetricStatus. - - - :param current: The current of this V2ObjectMetricStatus. # noqa: E501 - :type: V2MetricValueStatus - """ - if self.local_vars_configuration.client_side_validation and current is None: # noqa: E501 - raise ValueError("Invalid value for `current`, must not be `None`") # noqa: E501 - - self._current = current - - @property - def described_object(self): - """Gets the described_object of this V2ObjectMetricStatus. # noqa: E501 - - - :return: The described_object of this V2ObjectMetricStatus. # noqa: E501 - :rtype: V2CrossVersionObjectReference - """ - return self._described_object - - @described_object.setter - def described_object(self, described_object): - """Sets the described_object of this V2ObjectMetricStatus. - - - :param described_object: The described_object of this V2ObjectMetricStatus. # noqa: E501 - :type: V2CrossVersionObjectReference - """ - if self.local_vars_configuration.client_side_validation and described_object is None: # noqa: E501 - raise ValueError("Invalid value for `described_object`, must not be `None`") # noqa: E501 - - self._described_object = described_object - - @property - def metric(self): - """Gets the metric of this V2ObjectMetricStatus. # noqa: E501 - - - :return: The metric of this V2ObjectMetricStatus. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2ObjectMetricStatus. - - - :param metric: The metric of this V2ObjectMetricStatus. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ObjectMetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ObjectMetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_source.py deleted file mode 100644 index e9a5837..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_source.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2PodsMetricSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'metric': 'V2MetricIdentifier', - 'target': 'V2MetricTarget' - } - - attribute_map = { - 'metric': 'metric', - 'target': 'target' - } - - def __init__(self, metric=None, target=None, local_vars_configuration=None): # noqa: E501 - """V2PodsMetricSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._metric = None - self._target = None - self.discriminator = None - - self.metric = metric - self.target = target - - @property - def metric(self): - """Gets the metric of this V2PodsMetricSource. # noqa: E501 - - - :return: The metric of this V2PodsMetricSource. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2PodsMetricSource. - - - :param metric: The metric of this V2PodsMetricSource. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - @property - def target(self): - """Gets the target of this V2PodsMetricSource. # noqa: E501 - - - :return: The target of this V2PodsMetricSource. # noqa: E501 - :rtype: V2MetricTarget - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V2PodsMetricSource. - - - :param target: The target of this V2PodsMetricSource. # noqa: E501 - :type: V2MetricTarget - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2PodsMetricSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2PodsMetricSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_status.py deleted file mode 100644 index 0df09ad..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_pods_metric_status.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2PodsMetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'current': 'V2MetricValueStatus', - 'metric': 'V2MetricIdentifier' - } - - attribute_map = { - 'current': 'current', - 'metric': 'metric' - } - - def __init__(self, current=None, metric=None, local_vars_configuration=None): # noqa: E501 - """V2PodsMetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._current = None - self._metric = None - self.discriminator = None - - self.current = current - self.metric = metric - - @property - def current(self): - """Gets the current of this V2PodsMetricStatus. # noqa: E501 - - - :return: The current of this V2PodsMetricStatus. # noqa: E501 - :rtype: V2MetricValueStatus - """ - return self._current - - @current.setter - def current(self, current): - """Sets the current of this V2PodsMetricStatus. - - - :param current: The current of this V2PodsMetricStatus. # noqa: E501 - :type: V2MetricValueStatus - """ - if self.local_vars_configuration.client_side_validation and current is None: # noqa: E501 - raise ValueError("Invalid value for `current`, must not be `None`") # noqa: E501 - - self._current = current - - @property - def metric(self): - """Gets the metric of this V2PodsMetricStatus. # noqa: E501 - - - :return: The metric of this V2PodsMetricStatus. # noqa: E501 - :rtype: V2MetricIdentifier - """ - return self._metric - - @metric.setter - def metric(self, metric): - """Sets the metric of this V2PodsMetricStatus. - - - :param metric: The metric of this V2PodsMetricStatus. # noqa: E501 - :type: V2MetricIdentifier - """ - if self.local_vars_configuration.client_side_validation and metric is None: # noqa: E501 - raise ValueError("Invalid value for `metric`, must not be `None`") # noqa: E501 - - self._metric = metric - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2PodsMetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2PodsMetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_source.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_source.py deleted file mode 100644 index 5d2fdca..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_source.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ResourceMetricSource(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'name': 'str', - 'target': 'V2MetricTarget' - } - - attribute_map = { - 'name': 'name', - 'target': 'target' - } - - def __init__(self, name=None, target=None, local_vars_configuration=None): # noqa: E501 - """V2ResourceMetricSource - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._name = None - self._target = None - self.discriminator = None - - self.name = name - self.target = target - - @property - def name(self): - """Gets the name of this V2ResourceMetricSource. # noqa: E501 - - name is the name of the resource in question. # noqa: E501 - - :return: The name of this V2ResourceMetricSource. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2ResourceMetricSource. - - name is the name of the resource in question. # noqa: E501 - - :param name: The name of this V2ResourceMetricSource. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - @property - def target(self): - """Gets the target of this V2ResourceMetricSource. # noqa: E501 - - - :return: The target of this V2ResourceMetricSource. # noqa: E501 - :rtype: V2MetricTarget - """ - return self._target - - @target.setter - def target(self, target): - """Sets the target of this V2ResourceMetricSource. - - - :param target: The target of this V2ResourceMetricSource. # noqa: E501 - :type: V2MetricTarget - """ - if self.local_vars_configuration.client_side_validation and target is None: # noqa: E501 - raise ValueError("Invalid value for `target`, must not be `None`") # noqa: E501 - - self._target = target - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ResourceMetricSource): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ResourceMetricSource): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_status.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_status.py deleted file mode 100644 index f9c57d4..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/v2_resource_metric_status.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class V2ResourceMetricStatus(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'current': 'V2MetricValueStatus', - 'name': 'str' - } - - attribute_map = { - 'current': 'current', - 'name': 'name' - } - - def __init__(self, current=None, name=None, local_vars_configuration=None): # noqa: E501 - """V2ResourceMetricStatus - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._current = None - self._name = None - self.discriminator = None - - self.current = current - self.name = name - - @property - def current(self): - """Gets the current of this V2ResourceMetricStatus. # noqa: E501 - - - :return: The current of this V2ResourceMetricStatus. # noqa: E501 - :rtype: V2MetricValueStatus - """ - return self._current - - @current.setter - def current(self, current): - """Sets the current of this V2ResourceMetricStatus. - - - :param current: The current of this V2ResourceMetricStatus. # noqa: E501 - :type: V2MetricValueStatus - """ - if self.local_vars_configuration.client_side_validation and current is None: # noqa: E501 - raise ValueError("Invalid value for `current`, must not be `None`") # noqa: E501 - - self._current = current - - @property - def name(self): - """Gets the name of this V2ResourceMetricStatus. # noqa: E501 - - name is the name of the resource in question. # noqa: E501 - - :return: The name of this V2ResourceMetricStatus. # noqa: E501 - :rtype: str - """ - return self._name - - @name.setter - def name(self, name): - """Sets the name of this V2ResourceMetricStatus. - - name is the name of the resource in question. # noqa: E501 - - :param name: The name of this V2ResourceMetricStatus. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501 - raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501 - - self._name = name - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, V2ResourceMetricStatus): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, V2ResourceMetricStatus): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/version_info.py b/venv/lib/python3.10/site-packages/kubernetes/client/models/version_info.py deleted file mode 100644 index cf69aef..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/models/version_info.py +++ /dev/null @@ -1,337 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kubernetes.client.configuration import Configuration - - -class VersionInfo(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'build_date': 'str', - 'compiler': 'str', - 'git_commit': 'str', - 'git_tree_state': 'str', - 'git_version': 'str', - 'go_version': 'str', - 'major': 'str', - 'minor': 'str', - 'platform': 'str' - } - - attribute_map = { - 'build_date': 'buildDate', - 'compiler': 'compiler', - 'git_commit': 'gitCommit', - 'git_tree_state': 'gitTreeState', - 'git_version': 'gitVersion', - 'go_version': 'goVersion', - 'major': 'major', - 'minor': 'minor', - 'platform': 'platform' - } - - def __init__(self, build_date=None, compiler=None, git_commit=None, git_tree_state=None, git_version=None, go_version=None, major=None, minor=None, platform=None, local_vars_configuration=None): # noqa: E501 - """VersionInfo - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._build_date = None - self._compiler = None - self._git_commit = None - self._git_tree_state = None - self._git_version = None - self._go_version = None - self._major = None - self._minor = None - self._platform = None - self.discriminator = None - - self.build_date = build_date - self.compiler = compiler - self.git_commit = git_commit - self.git_tree_state = git_tree_state - self.git_version = git_version - self.go_version = go_version - self.major = major - self.minor = minor - self.platform = platform - - @property - def build_date(self): - """Gets the build_date of this VersionInfo. # noqa: E501 - - - :return: The build_date of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._build_date - - @build_date.setter - def build_date(self, build_date): - """Sets the build_date of this VersionInfo. - - - :param build_date: The build_date of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and build_date is None: # noqa: E501 - raise ValueError("Invalid value for `build_date`, must not be `None`") # noqa: E501 - - self._build_date = build_date - - @property - def compiler(self): - """Gets the compiler of this VersionInfo. # noqa: E501 - - - :return: The compiler of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._compiler - - @compiler.setter - def compiler(self, compiler): - """Sets the compiler of this VersionInfo. - - - :param compiler: The compiler of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and compiler is None: # noqa: E501 - raise ValueError("Invalid value for `compiler`, must not be `None`") # noqa: E501 - - self._compiler = compiler - - @property - def git_commit(self): - """Gets the git_commit of this VersionInfo. # noqa: E501 - - - :return: The git_commit of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._git_commit - - @git_commit.setter - def git_commit(self, git_commit): - """Sets the git_commit of this VersionInfo. - - - :param git_commit: The git_commit of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and git_commit is None: # noqa: E501 - raise ValueError("Invalid value for `git_commit`, must not be `None`") # noqa: E501 - - self._git_commit = git_commit - - @property - def git_tree_state(self): - """Gets the git_tree_state of this VersionInfo. # noqa: E501 - - - :return: The git_tree_state of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._git_tree_state - - @git_tree_state.setter - def git_tree_state(self, git_tree_state): - """Sets the git_tree_state of this VersionInfo. - - - :param git_tree_state: The git_tree_state of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and git_tree_state is None: # noqa: E501 - raise ValueError("Invalid value for `git_tree_state`, must not be `None`") # noqa: E501 - - self._git_tree_state = git_tree_state - - @property - def git_version(self): - """Gets the git_version of this VersionInfo. # noqa: E501 - - - :return: The git_version of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._git_version - - @git_version.setter - def git_version(self, git_version): - """Sets the git_version of this VersionInfo. - - - :param git_version: The git_version of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and git_version is None: # noqa: E501 - raise ValueError("Invalid value for `git_version`, must not be `None`") # noqa: E501 - - self._git_version = git_version - - @property - def go_version(self): - """Gets the go_version of this VersionInfo. # noqa: E501 - - - :return: The go_version of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._go_version - - @go_version.setter - def go_version(self, go_version): - """Sets the go_version of this VersionInfo. - - - :param go_version: The go_version of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and go_version is None: # noqa: E501 - raise ValueError("Invalid value for `go_version`, must not be `None`") # noqa: E501 - - self._go_version = go_version - - @property - def major(self): - """Gets the major of this VersionInfo. # noqa: E501 - - - :return: The major of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._major - - @major.setter - def major(self, major): - """Sets the major of this VersionInfo. - - - :param major: The major of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and major is None: # noqa: E501 - raise ValueError("Invalid value for `major`, must not be `None`") # noqa: E501 - - self._major = major - - @property - def minor(self): - """Gets the minor of this VersionInfo. # noqa: E501 - - - :return: The minor of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._minor - - @minor.setter - def minor(self, minor): - """Sets the minor of this VersionInfo. - - - :param minor: The minor of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and minor is None: # noqa: E501 - raise ValueError("Invalid value for `minor`, must not be `None`") # noqa: E501 - - self._minor = minor - - @property - def platform(self): - """Gets the platform of this VersionInfo. # noqa: E501 - - - :return: The platform of this VersionInfo. # noqa: E501 - :rtype: str - """ - return self._platform - - @platform.setter - def platform(self, platform): - """Sets the platform of this VersionInfo. - - - :param platform: The platform of this VersionInfo. # noqa: E501 - :type: str - """ - if self.local_vars_configuration.client_side_validation and platform is None: # noqa: E501 - raise ValueError("Invalid value for `platform`, must not be `None`") # noqa: E501 - - self._platform = platform - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, VersionInfo): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, VersionInfo): - return True - - return self.to_dict() != other.to_dict() diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/rest.py b/venv/lib/python3.10/site-packages/kubernetes/client/rest.py deleted file mode 100644 index 799ab12..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/client/rest.py +++ /dev/null @@ -1,305 +0,0 @@ -# coding: utf-8 - -""" - Kubernetes - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: release-1.29 - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import io -import json -import logging -import re -import ssl - -import certifi -# python 2 and python 3 compatibility library -import six -from six.moves.urllib.parse import urlencode -import urllib3 - -from kubernetes.client.exceptions import ApiException, ApiValueError -from requests.utils import should_bypass_proxies - - -logger = logging.getLogger(__name__) - - -class RESTResponse(io.IOBase): - - def __init__(self, resp): - self.urllib3_response = resp - self.status = resp.status - self.reason = resp.reason - self.data = resp.data - - def getheaders(self): - """Returns a dictionary of the response headers.""" - return self.urllib3_response.getheaders() - - def getheader(self, name, default=None): - """Returns a given response header.""" - return self.urllib3_response.getheader(name, default) - - -class RESTClientObject(object): - - def __init__(self, configuration, pools_size=4, maxsize=None): - # urllib3.PoolManager will pass all kw parameters to connectionpool - # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501 - # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501 - # maxsize is the number of requests to host that are allowed in parallel # noqa: E501 - # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501 - - # cert_reqs - if configuration.verify_ssl: - cert_reqs = ssl.CERT_REQUIRED - else: - cert_reqs = ssl.CERT_NONE - - # ca_certs - if configuration.ssl_ca_cert: - ca_certs = configuration.ssl_ca_cert - else: - # if not set certificate file, use Mozilla's root certificates. - ca_certs = certifi.where() - - addition_pool_args = {} - if configuration.assert_hostname is not None: - addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501 - - if configuration.retries is not None: - addition_pool_args['retries'] = configuration.retries - - if configuration.tls_server_name: - addition_pool_args['server_hostname'] = configuration.tls_server_name - - if maxsize is None: - if configuration.connection_pool_maxsize is not None: - maxsize = configuration.connection_pool_maxsize - else: - maxsize = 4 - - # https pool manager - if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): - self.pool_manager = urllib3.ProxyManager( - num_pools=pools_size, - maxsize=maxsize, - cert_reqs=cert_reqs, - ca_certs=ca_certs, - cert_file=configuration.cert_file, - key_file=configuration.key_file, - proxy_url=configuration.proxy, - proxy_headers=configuration.proxy_headers, - **addition_pool_args - ) - else: - self.pool_manager = urllib3.PoolManager( - num_pools=pools_size, - maxsize=maxsize, - cert_reqs=cert_reqs, - ca_certs=ca_certs, - cert_file=configuration.cert_file, - key_file=configuration.key_file, - **addition_pool_args - ) - - def request(self, method, url, query_params=None, headers=None, - body=None, post_params=None, _preload_content=True, - _request_timeout=None): - """Perform requests. - - :param method: http request method - :param url: http request url - :param query_params: query parameters in the url - :param headers: http request headers - :param body: request json body, for `application/json` - :param post_params: request post parameters, - `application/x-www-form-urlencoded` - and `multipart/form-data` - :param _preload_content: if False, the urllib3.HTTPResponse object will - be returned without reading/decoding response - data. Default is True. - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - """ - method = method.upper() - assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', - 'PATCH', 'OPTIONS'] - - if post_params and body: - raise ApiValueError( - "body parameter cannot be used with post_params parameter." - ) - - post_params = post_params or {} - headers = headers or {} - - timeout = None - if _request_timeout: - if isinstance(_request_timeout, (int, ) if six.PY3 else (int, long)): # noqa: E501,F821 - timeout = urllib3.Timeout(total=_request_timeout) - elif (isinstance(_request_timeout, tuple) and - len(_request_timeout) == 2): - timeout = urllib3.Timeout( - connect=_request_timeout[0], read=_request_timeout[1]) - - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - - try: - # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` - if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: - if query_params: - url += '?' + urlencode(query_params) - if (re.search('json', headers['Content-Type'], re.IGNORECASE) or - headers['Content-Type'] == 'application/apply-patch+yaml'): - if headers['Content-Type'] == 'application/json-patch+json': - if not isinstance(body, list): - headers['Content-Type'] = \ - 'application/strategic-merge-patch+json' - request_body = None - if body is not None: - request_body = json.dumps(body) - r = self.pool_manager.request( - method, url, - body=request_body, - preload_content=_preload_content, - timeout=timeout, - headers=headers) - elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501 - r = self.pool_manager.request( - method, url, - fields=post_params, - encode_multipart=False, - preload_content=_preload_content, - timeout=timeout, - headers=headers) - elif headers['Content-Type'] == 'multipart/form-data': - # must del headers['Content-Type'], or the correct - # Content-Type which generated by urllib3 will be - # overwritten. - del headers['Content-Type'] - r = self.pool_manager.request( - method, url, - fields=post_params, - encode_multipart=True, - preload_content=_preload_content, - timeout=timeout, - headers=headers) - # Pass a `string` parameter directly in the body to support - # other content types than Json when `body` argument is - # provided in serialized form - elif isinstance(body, str) or isinstance(body, bytes): - request_body = body - r = self.pool_manager.request( - method, url, - body=request_body, - preload_content=_preload_content, - timeout=timeout, - headers=headers) - else: - # Cannot generate the request from given parameters - msg = """Cannot prepare a request message for provided - arguments. Please check that your arguments match - declared content type.""" - raise ApiException(status=0, reason=msg) - # For `GET`, `HEAD` - else: - r = self.pool_manager.request(method, url, - fields=query_params, - preload_content=_preload_content, - timeout=timeout, - headers=headers) - except urllib3.exceptions.SSLError as e: - msg = "{0}\n{1}".format(type(e).__name__, str(e)) - raise ApiException(status=0, reason=msg) - - if _preload_content: - r = RESTResponse(r) - - # In the python 3, the response.data is bytes. - # we need to decode it to string. - if six.PY3: - r.data = r.data.decode('utf8') - - # log response body - logger.debug("response body: %s", r.data) - - if not 200 <= r.status <= 299: - raise ApiException(http_resp=r) - - return r - - def GET(self, url, headers=None, query_params=None, _preload_content=True, - _request_timeout=None): - return self.request("GET", url, - headers=headers, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - query_params=query_params) - - def HEAD(self, url, headers=None, query_params=None, _preload_content=True, - _request_timeout=None): - return self.request("HEAD", url, - headers=headers, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - query_params=query_params) - - def OPTIONS(self, url, headers=None, query_params=None, post_params=None, - body=None, _preload_content=True, _request_timeout=None): - return self.request("OPTIONS", url, - headers=headers, - query_params=query_params, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - - def DELETE(self, url, headers=None, query_params=None, body=None, - _preload_content=True, _request_timeout=None): - return self.request("DELETE", url, - headers=headers, - query_params=query_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - - def POST(self, url, headers=None, query_params=None, post_params=None, - body=None, _preload_content=True, _request_timeout=None): - return self.request("POST", url, - headers=headers, - query_params=query_params, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - - def PUT(self, url, headers=None, query_params=None, post_params=None, - body=None, _preload_content=True, _request_timeout=None): - return self.request("PUT", url, - headers=headers, - query_params=query_params, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) - - def PATCH(self, url, headers=None, query_params=None, post_params=None, - body=None, _preload_content=True, _request_timeout=None): - return self.request("PATCH", url, - headers=headers, - query_params=query_params, - post_params=post_params, - _preload_content=_preload_content, - _request_timeout=_request_timeout, - body=body) diff --git a/venv/lib/python3.10/site-packages/kubernetes/config/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/config/__init__.py deleted file mode 100644 index 3f49ce0..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/config/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from os.path import exists, expanduser - -from .config_exception import ConfigException -from .incluster_config import load_incluster_config -from .kube_config import (KUBE_CONFIG_DEFAULT_LOCATION, - list_kube_config_contexts, load_kube_config, - load_kube_config_from_dict, new_client_from_config, new_client_from_config_dict) - - -def load_config(**kwargs): - """ - Wrapper function to load the kube_config. - It will initially try to load_kube_config from provided path, - then check if the KUBE_CONFIG_DEFAULT_LOCATION exists - If neither exists, it will fall back to load_incluster_config - and inform the user accordingly. - - :param kwargs: A combination of all possible kwargs that - can be passed to either load_kube_config or - load_incluster_config functions. - """ - if "config_file" in kwargs.keys(): - load_kube_config(**kwargs) - elif "kube_config_path" in kwargs.keys(): - kwargs["config_file"] = kwargs.pop("kube_config_path", None) - load_kube_config(**kwargs) - elif exists(expanduser(KUBE_CONFIG_DEFAULT_LOCATION)): - load_kube_config(**kwargs) - else: - print( - "kube_config_path not provided and " - "default location ({0}) does not exist. " - "Using inCluster Config. " - "This might not work.".format(KUBE_CONFIG_DEFAULT_LOCATION)) - load_incluster_config(**kwargs) diff --git a/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 16cfebfb3277f8fe82c87715d431720bf5091c51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1509 zcmaJ>PjA~c6end{c5Edvf_2!x15d*Yv{s8@z)%#$GA|v1774H>7@&(Flax(ZA_bC8 z;;uV&ryceIc4~lK`jvFuVdz&FcGx53G=^7<0H3J$|NY)0)$VQ|!TKHlkpI<1=uh{v zxdQn42DUi^!Vtp+Dsh6#APF#H0c#blvYoX3xm|S1FbVy+Q*_H-(kpk8owA?w%Rw?I zqa-SKlUCJMb zwP8PnZGHv9@JsX>U84)6_bp}}fnK6N@NXFKYCQ+6-$_4*Q{b?_1|GwY(0{dU%eHOj z6@G>FSMQOAto^!cJJ%q`$o95ljl%2=q}L~~e$-i2aZU22qz-yw6>+c-JLhBrtg+WV zw&YS21rbtMkrl;?SPi=|*@T@qBuS;!gP0=s?e`4uJ=kJ8WRndrr@hziB*IC68xILA9dXS`jb4HnE{Fo{-VKN-+~( zaCs3IVj5Q~J6H0{@q_!Z5tiSpp!L~|o7mx?CAV;FAd6FYLxfG!akZ)k9_>c(5kxhP zM9~3`@DMwCfP)~wVXOVmK}X*K;mK$}=_)gJFyEGz4A=eOHxHKXfO0b2Zltd_8EkaN vqoRAD?J?8tb=Ct%B1c@zTU46U2f(X)k4nXs1%K?G72~Xidr=T!f}_sAwL-l( diff --git a/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/config_exception.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/config_exception.cpython-310.pyc deleted file mode 100644 index b809ff7cd8718b24607b2f5ef81553f1fbf0ce7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmY*Vy-ve05I&~`g{oB<`Vt*lgIE|4s)P_*2iUq;seMhYBzB0Ms-58}cmrN3D{sNn zbHeW@-T&$IeP>6b0TABU<7OWLe1zgJ`cy2)+=Sc%C{XN`4B@4>Vk&xqX;0GR9~e~& zGB+fLKzp!?6rm=_c?@*o4 zvDSTNd}|BjX{}{tC3>%UcI~*6RZ?n`&PuBs-=W#@T(5a~@LOxH=9d@TX^*oqky(__MO#(3qfXdQ;_yk_OacuIj0e&teCzO~j{!K%h(|K8d!UK= zjGfLzC;M>9jApFK=E-fsKugknmQkr4>lw^L#`U)hb{m|4SEHe{AGX&81*83P?b?kM zzFND<9j1)Eq$g5U>O^r*hN)vJ!;Ae+s4VWwP(rAxjL5^b^p)Q6<({&Fq{ zx1*Q!?xEaE;+5sEZq(CAhD%*PIPhCxT0iK$3`HD5aP=UGn^CKdk@aNMUhW<$%k!c* zlAd=FlV$;!behi7&uIVR*+ego^#Z)R@jx1Lf*F5@sm~y@TjYc`94acnpD5{np(&I0=g&F)pz^<7#VqU-7XZK`Mj+-8Fo9=$nX-?Uav7zU z0QwisxhYovELtwunV7)6%M1 zF7IzHzTm~rS<1=rv~y)!?iP~ObJOC^^7Y*p{F<}2xYKv9>}ESl*MNV)*H#gowf_7f ziky7cnzOoAY+sA+J(wZ^7RGpBK=|e9yag)~N(G)AJz`=8iiV|AfSS}feG4hhpopY# zY-VIgk4r-`fG6CdT$>{UCM~WX(T8N$9%!-*k62qENAQ$0?JjwBm9v2k4_;q@#?_rBR$pKMum; z4WL|=MA&WnAVOcN;)&1`&0u9^Bo)D2XJr7e)6dCY;$A%{?>;0 x2KDYDe20M9$*rCV=F;e}whl+9YC)aA;k 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/incluster_config.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/incluster_config.cpython-310.pyc deleted file mode 100644 index fd9e8a01a334fba3c4016defeb788bedb3099d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3760 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 X95D@b{0u0LUzrJ{MavfW_rZSv!j<~> diff --git a/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/kube_config.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/config/__pycache__/kube_config.cpython-310.pyc deleted file mode 100644 index b15488ea46891e8987c67f7042cfad12fbe53590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25526 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 original_expiry) - self.assertEqual(BEARER_TOKEN_FORMAT % TEST_ANOTHER_DATA_BASE64, - loader.token) - - def test_gcp_refresh_api_key_hook(self): - class cred_old: - token = TEST_DATA_BASE64 - expiry = DATETIME_EXPIRY_PAST - - class cred_new: - token = TEST_ANOTHER_DATA_BASE64 - expiry = DATETIME_EXPIRY_FUTURE - fake_config = FakeConfig() - _get_google_credentials = mock.Mock() - _get_google_credentials.side_effect = [cred_old, cred_new] - - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="expired_gcp_refresh", - get_google_credentials=_get_google_credentials) - loader.load_and_set(fake_config) - original_expiry = _get_expiry(loader, "expired_gcp_refresh") - # Refresh the GCP token. - fake_config.refresh_api_key_hook(fake_config) - new_expiry = _get_expiry(loader, "expired_gcp_refresh") - - self.assertTrue(new_expiry > original_expiry) - self.assertEqual(BEARER_TOKEN_FORMAT % TEST_ANOTHER_DATA_BASE64, - loader.token) - - def test_oidc_no_refresh(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="oidc", - ) - self.assertTrue(loader._load_auth_provider_token()) - self.assertEqual(TEST_OIDC_TOKEN, loader.token) - - @mock.patch('kubernetes.config.kube_config.OAuth2Session.refresh_token') - @mock.patch('kubernetes.config.kube_config.ApiClient.request') - def test_oidc_with_refresh(self, mock_ApiClient, mock_OAuth2Session): - mock_response = mock.MagicMock() - type(mock_response).status = mock.PropertyMock( - return_value=200 - ) - type(mock_response).data = mock.PropertyMock( - return_value=json.dumps({ - "token_endpoint": "https://example.org/identity/token" - }) - ) - - mock_ApiClient.return_value = mock_response - - mock_OAuth2Session.return_value = {"id_token": "abc123", - "refresh_token": "newtoken123"} - - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="expired_oidc", - ) - self.assertTrue(loader._load_auth_provider_token()) - self.assertEqual("Bearer abc123", loader.token) - - @mock.patch('kubernetes.config.kube_config.OAuth2Session.refresh_token') - @mock.patch('kubernetes.config.kube_config.ApiClient.request') - def test_oidc_with_idp_ca_file_refresh(self, mock_ApiClient, mock_OAuth2Session): - mock_response = mock.MagicMock() - type(mock_response).status = mock.PropertyMock( - return_value=200 - ) - type(mock_response).data = mock.PropertyMock( - return_value=json.dumps({ - "token_endpoint": "https://example.org/identity/token" - }) - ) - - mock_ApiClient.return_value = mock_response - - mock_OAuth2Session.return_value = {"id_token": "abc123", - "refresh_token": "newtoken123"} - - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="expired_oidc_with_idp_ca_file", - ) - - - self.assertTrue(loader._load_auth_provider_token()) - self.assertEqual("Bearer abc123", loader.token) - - @mock.patch('kubernetes.config.kube_config.OAuth2Session.refresh_token') - @mock.patch('kubernetes.config.kube_config.ApiClient.request') - def test_oidc_with_refresh_nocert( - self, mock_ApiClient, mock_OAuth2Session): - mock_response = mock.MagicMock() - type(mock_response).status = mock.PropertyMock( - return_value=200 - ) - type(mock_response).data = mock.PropertyMock( - return_value=json.dumps({ - "token_endpoint": "https://example.org/identity/token" - }) - ) - - mock_ApiClient.return_value = mock_response - - mock_OAuth2Session.return_value = {"id_token": "abc123", - "refresh_token": "newtoken123"} - - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="expired_oidc_nocert", - ) - self.assertTrue(loader._load_auth_provider_token()) - self.assertEqual("Bearer abc123", loader.token) - - def test_oidc_fails_if_contains_reserved_chars(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="oidc_contains_reserved_character", - ) - self.assertEqual( - loader._load_oid_token("oidc_contains_reserved_character"), - None, - ) - - def test_oidc_fails_if_invalid_padding_length(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="oidc_invalid_padding_length", - ) - self.assertEqual( - loader._load_oid_token("oidc_invalid_padding_length"), - None, - ) - - def test_azure_no_refresh(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="azure", - ) - self.assertTrue(loader._load_auth_provider_token()) - self.assertEqual(TEST_AZURE_TOKEN_FULL, loader.token) - - def test_azure_with_expired_num(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="azure_num", - ) - provider = loader._user['auth-provider'] - self.assertTrue(loader._azure_is_expired(provider)) - - def test_azure_with_expired_str(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="azure_str", - ) - provider = loader._user['auth-provider'] - self.assertTrue(loader._azure_is_expired(provider)) - - def test_azure_with_expired_str_error(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="azure_str_error", - ) - provider = loader._user['auth-provider'] - self.assertRaises(ValueError, loader._azure_is_expired, provider) - - def test_azure_with_expired_int_error(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="azure_num_error", - ) - provider = loader._user['auth-provider'] - self.assertRaises(ValueError, loader._azure_is_expired, provider) - - def test_user_pass(self): - expected = FakeConfig(host=TEST_HOST, token=TEST_BASIC_TOKEN) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="user_pass").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_load_user_pass_token(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="user_pass") - self.assertTrue(loader._load_user_pass_token()) - self.assertEqual(TEST_BASIC_TOKEN, loader.token) - - def test_ssl_no_cert_files(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="ssl-no_file") - self.expect_exception( - loader.load_and_set, - "does not exist", - FakeConfig()) - - def test_ssl(self): - expected = FakeConfig( - host=TEST_SSL_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - ssl_ca_cert=self._create_temp_file(TEST_CERTIFICATE_AUTH), - verify_ssl=True - ) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="ssl").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_ssl_no_verification(self): - expected = FakeConfig( - host=TEST_SSL_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - verify_ssl=False, - ssl_ca_cert=None, - ) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="no_ssl_verification").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_tls_server_name(self): - expected = FakeConfig( - host=TEST_SSL_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - ssl_ca_cert=self._create_temp_file(TEST_CERTIFICATE_AUTH), - verify_ssl=True, - tls_server_name=TEST_TLS_SERVER_NAME - ) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="tls-server-name").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_list_contexts(self): - loader = KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="no_user") - actual_contexts = loader.list_contexts() - expected_contexts = ConfigNode("", self.TEST_KUBE_CONFIG)['contexts'] - for actual in actual_contexts: - expected = expected_contexts.get_with_name(actual['name']) - self.assertEqual(expected.value, actual) - - def test_current_context(self): - loader = KubeConfigLoader(config_dict=self.TEST_KUBE_CONFIG) - expected_contexts = ConfigNode("", self.TEST_KUBE_CONFIG)['contexts'] - self.assertEqual(expected_contexts.get_with_name("no_user").value, - loader.current_context) - - def test_set_active_context(self): - loader = KubeConfigLoader(config_dict=self.TEST_KUBE_CONFIG) - loader.set_active_context("ssl") - expected_contexts = ConfigNode("", self.TEST_KUBE_CONFIG)['contexts'] - self.assertEqual(expected_contexts.get_with_name("ssl").value, - loader.current_context) - - def test_ssl_with_relative_ssl_files(self): - expected = FakeConfig( - host=TEST_SSL_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - ssl_ca_cert=self._create_temp_file(TEST_CERTIFICATE_AUTH) - ) - try: - temp_dir = tempfile.mkdtemp() - actual = FakeConfig() - with open(os.path.join(temp_dir, "cert_test"), "wb") as fd: - fd.write(TEST_CERTIFICATE_AUTH.encode()) - with open(os.path.join(temp_dir, "client_cert"), "wb") as fd: - fd.write(TEST_CLIENT_CERT.encode()) - with open(os.path.join(temp_dir, "client_key"), "wb") as fd: - fd.write(TEST_CLIENT_KEY.encode()) - with open(os.path.join(temp_dir, "token_file"), "wb") as fd: - fd.write(TEST_DATA_BASE64.encode()) - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="ssl-local-file", - config_base_path=temp_dir).load_and_set(actual) - self.assertEqual(expected, actual) - finally: - shutil.rmtree(temp_dir) - - def test_load_kube_config_from_file_path(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - actual = FakeConfig() - load_kube_config(config_file=config_file, context="simple_token", - client_configuration=actual) - self.assertEqual(expected, actual) - - def test_load_kube_config_from_file_like_object(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file_like_object = io.StringIO() - # py3 (won't have unicode) vs py2 (requires it) - try: - unicode('') - config_file_like_object.write( - unicode( - yaml.safe_dump( - self.TEST_KUBE_CONFIG), - errors='replace')) - except NameError: - config_file_like_object.write( - yaml.safe_dump( - self.TEST_KUBE_CONFIG)) - actual = FakeConfig() - load_kube_config( - config_file=config_file_like_object, - context="simple_token", - client_configuration=actual) - self.assertEqual(expected, actual) - - def test_load_kube_config_from_dict(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - actual = FakeConfig() - load_kube_config_from_dict(config_dict=self.TEST_KUBE_CONFIG, - context="simple_token", - client_configuration=actual) - self.assertEqual(expected, actual) - - def test_load_kube_config_from_dict_with_temp_file_path(self): - expected = FakeConfig( - host=TEST_SSL_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - ssl_ca_cert=self._create_temp_file(TEST_CERTIFICATE_AUTH), - verify_ssl=True - ) - actual = FakeConfig() - tmp_path = os.path.join( - os.path.dirname( - os.path.dirname( - os.path.abspath(__file__))), - 'tmp_file_path_test') - load_kube_config_from_dict(config_dict=self.TEST_KUBE_CONFIG, - context="ssl", - client_configuration=actual, - temp_file_path=tmp_path) - self.assertFalse(True if not os.listdir(tmp_path) else False) - self.assertEqual(expected, actual) - _cleanup_temp_files - - def test_load_kube_config_from_empty_file_like_object(self): - config_file_like_object = io.StringIO() - self.assertRaises( - ConfigException, - load_kube_config, - config_file_like_object) - - def test_load_kube_config_from_empty_file(self): - config_file = self._create_temp_file( - yaml.safe_dump(None)) - self.assertRaises( - ConfigException, - load_kube_config, - config_file) - - def test_list_kube_config_contexts(self): - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - contexts, active_context = list_kube_config_contexts( - config_file=config_file) - self.assertDictEqual(self.TEST_KUBE_CONFIG['contexts'][0], - active_context) - if PY3: - self.assertCountEqual(self.TEST_KUBE_CONFIG['contexts'], - contexts) - else: - self.assertItemsEqual(self.TEST_KUBE_CONFIG['contexts'], - contexts) - - def test_new_client_from_config(self): - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - client = new_client_from_config( - config_file=config_file, context="simple_token") - self.assertEqual(TEST_HOST, client.configuration.host) - self.assertEqual(BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - client.configuration.api_key['authorization']) - - def test_new_client_from_config_dict(self): - client = new_client_from_config_dict( - config_dict=self.TEST_KUBE_CONFIG, context="simple_token") - self.assertEqual(TEST_HOST, client.configuration.host) - self.assertEqual(BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - client.configuration.api_key['authorization']) - - def test_no_users_section(self): - expected = FakeConfig(host=TEST_HOST) - actual = FakeConfig() - test_kube_config = self.TEST_KUBE_CONFIG.copy() - del test_kube_config['users'] - KubeConfigLoader( - config_dict=test_kube_config, - active_context="gcp").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_non_existing_user(self): - expected = FakeConfig(host=TEST_HOST) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="non_existing_user").load_and_set(actual) - self.assertEqual(expected, actual) - - @mock.patch('kubernetes.config.kube_config.ExecProvider.run') - def test_user_exec_auth(self, mock): - token = "dummy" - mock.return_value = { - "token": token - } - expected = FakeConfig(host=TEST_HOST, api_key={ - "authorization": BEARER_TOKEN_FORMAT % token}) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="exec_cred_user").load_and_set(actual) - self.assertEqual(expected, actual) - - @mock.patch('kubernetes.config.kube_config.ExecProvider.run') - def test_user_exec_auth_with_expiry(self, mock): - expired_token = "expired" - current_token = "current" - mock.side_effect = [ - { - "token": expired_token, - "expirationTimestamp": format_rfc3339(DATETIME_EXPIRY_PAST) - }, - { - "token": current_token, - "expirationTimestamp": format_rfc3339(DATETIME_EXPIRY_FUTURE) - } - ] - - fake_config = FakeConfig() - self.assertIsNone(fake_config.refresh_api_key_hook) - - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="exec_cred_user").load_and_set(fake_config) - # The kube config should use the first token returned from the - # exec provider. - self.assertEqual(fake_config.api_key["authorization"], - BEARER_TOKEN_FORMAT % expired_token) - # Should now be populated with a method to refresh expired tokens. - self.assertIsNotNone(fake_config.refresh_api_key_hook) - # Refresh the token; the kube config should be updated. - fake_config.refresh_api_key_hook(fake_config) - self.assertEqual(fake_config.api_key["authorization"], - BEARER_TOKEN_FORMAT % current_token) - - @mock.patch('kubernetes.config.kube_config.ExecProvider.run') - def test_user_exec_auth_certificates(self, mock): - mock.return_value = { - "clientCertificateData": TEST_CLIENT_CERT, - "clientKeyData": TEST_CLIENT_KEY, - } - expected = FakeConfig( - host=TEST_SSL_HOST, - cert_file=self._create_temp_file(TEST_CLIENT_CERT), - key_file=self._create_temp_file(TEST_CLIENT_KEY), - ssl_ca_cert=self._create_temp_file(TEST_CERTIFICATE_AUTH), - verify_ssl=True) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="exec_cred_user_certificate").load_and_set(actual) - self.assertEqual(expected, actual) - - @mock.patch('kubernetes.config.kube_config.ExecProvider.run', autospec=True) - def test_user_exec_cwd(self, mock): - capture = {} - def capture_cwd(exec_provider): - capture['cwd'] = exec_provider.cwd - mock.side_effect = capture_cwd - - expected = "/some/random/path" - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="exec_cred_user", - config_base_path=expected).load_and_set(FakeConfig()) - self.assertEqual(expected, capture['cwd']) - - def test_user_cmd_path(self): - A = namedtuple('A', ['token', 'expiry']) - token = "dummy" - return_value = A(token, parse_rfc3339(datetime.datetime.now())) - CommandTokenSource.token = mock.Mock(return_value=return_value) - expected = FakeConfig(api_key={ - "authorization": BEARER_TOKEN_FORMAT % token}) - actual = FakeConfig() - KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="contexttestcmdpath").load_and_set(actual) - self.assertEqual(expected, actual) - - def test_user_cmd_path_empty(self): - A = namedtuple('A', ['token', 'expiry']) - token = "dummy" - return_value = A(token, parse_rfc3339(datetime.datetime.now())) - CommandTokenSource.token = mock.Mock(return_value=return_value) - expected = FakeConfig(api_key={ - "authorization": BEARER_TOKEN_FORMAT % token}) - actual = FakeConfig() - self.expect_exception(lambda: KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="contexttestcmdpathempty").load_and_set(actual), - "missing access token cmd " - "(cmd-path is an empty string in your kubeconfig file)") - - def test_user_cmd_path_with_scope(self): - A = namedtuple('A', ['token', 'expiry']) - token = "dummy" - return_value = A(token, parse_rfc3339(datetime.datetime.now())) - CommandTokenSource.token = mock.Mock(return_value=return_value) - expected = FakeConfig(api_key={ - "authorization": BEARER_TOKEN_FORMAT % token}) - actual = FakeConfig() - self.expect_exception(lambda: KubeConfigLoader( - config_dict=self.TEST_KUBE_CONFIG, - active_context="contexttestcmdpathscope").load_and_set(actual), - "scopes can only be used when kubectl is using " - "a gcp service account key") - - def test__get_kube_config_loader_for_yaml_file_no_persist(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - actual = _get_kube_config_loader_for_yaml_file(config_file) - self.assertIsNone(actual._config_persister) - - def test__get_kube_config_loader_for_yaml_file_persist(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - actual = _get_kube_config_loader_for_yaml_file(config_file, - persist_config=True) - self.assertTrue(callable(actual._config_persister)) - self.assertEqual(actual._config_persister.__name__, "save_changes") - - def test__get_kube_config_loader_file_no_persist(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - actual = _get_kube_config_loader(filename=config_file) - self.assertIsNone(actual._config_persister) - - def test__get_kube_config_loader_file_persist(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - config_file = self._create_temp_file( - yaml.safe_dump(self.TEST_KUBE_CONFIG)) - actual = _get_kube_config_loader(filename=config_file, - persist_config=True) - self.assertTrue(callable(actual._config_persister)) - self.assertEquals(actual._config_persister.__name__, "save_changes") - - def test__get_kube_config_loader_dict_no_persist(self): - expected = FakeConfig(host=TEST_HOST, - token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64) - actual = _get_kube_config_loader( - config_dict=self.TEST_KUBE_CONFIG) - self.assertIsNone(actual._config_persister) - - -class TestKubernetesClientConfiguration(BaseTestCase): - # Verifies properties of kubernetes.client.Configuration. - # These tests guard against changes to the upstream configuration class, - # since GCP and Exec authorization use refresh_api_key_hook to refresh - # their tokens regularly. - - def test_refresh_api_key_hook_exists(self): - self.assertTrue(hasattr(Configuration(), 'refresh_api_key_hook')) - - def test_get_api_key_calls_refresh_api_key_hook(self): - identifier = 'authorization' - expected_token = 'expected_token' - old_token = 'old_token' - config = Configuration( - api_key={identifier: old_token}, - api_key_prefix={identifier: 'Bearer'} - ) - - def refresh_api_key_hook(client_config): - self.assertEqual(client_config, config) - client_config.api_key[identifier] = expected_token - config.refresh_api_key_hook = refresh_api_key_hook - - self.assertEqual('Bearer ' + expected_token, - config.get_api_key_with_prefix(identifier)) - - -class TestKubeConfigMerger(BaseTestCase): - TEST_KUBE_CONFIG_PART1 = { - "current-context": "no_user", - "contexts": [ - { - "name": "no_user", - "context": { - "cluster": "default" - } - }, - ], - "clusters": [ - { - "name": "default", - "cluster": { - "server": TEST_HOST - } - }, - ], - "users": [] - } - - TEST_KUBE_CONFIG_PART2 = { - "current-context": "", - "contexts": [ - { - "name": "ssl", - "context": { - "cluster": "ssl", - "user": "ssl" - } - }, - { - "name": "simple_token", - "context": { - "cluster": "default", - "user": "simple_token" - } - }, - ], - "clusters": [ - { - "name": "ssl", - "cluster": { - "server": TEST_SSL_HOST, - "certificate-authority-data": - TEST_CERTIFICATE_AUTH_BASE64, - } - }, - ], - "users": [ - { - "name": "ssl", - "user": { - "token": TEST_DATA_BASE64, - "client-certificate-data": TEST_CLIENT_CERT_BASE64, - "client-key-data": TEST_CLIENT_KEY_BASE64, - } - }, - ] - } - - TEST_KUBE_CONFIG_PART3 = { - "current-context": "no_user", - "contexts": [ - { - "name": "expired_oidc", - "context": { - "cluster": "default", - "user": "expired_oidc" - } - }, - { - "name": "ssl", - "context": { - "cluster": "skipped-part2-defined-this-context", - "user": "skipped" - } - }, - ], - "clusters": [ - ], - "users": [ - { - "name": "expired_oidc", - "user": { - "auth-provider": { - "name": "oidc", - "config": { - "client-id": "tectonic-kubectl", - "client-secret": "FAKE_SECRET", - "id-token": TEST_OIDC_EXPIRED_LOGIN, - "idp-certificate-authority-data": TEST_OIDC_CA, - "idp-issuer-url": "https://example.org/identity", - "refresh-token": - "lucWJjEhlxZW01cXI3YmVlcYnpxNGhzk" - } - } - } - }, - { - "name": "simple_token", - "user": { - "token": TEST_DATA_BASE64, - "username": TEST_USERNAME, # should be ignored - "password": TEST_PASSWORD, # should be ignored - } - }, - ] - } - TEST_KUBE_CONFIG_PART4 = { - "current-context": "no_user", - } - # Config with user having cmd-path - TEST_KUBE_CONFIG_PART5 = { - "contexts": [ - { - "name": "contexttestcmdpath", - "context": { - "cluster": "clustertestcmdpath", - "user": "usertestcmdpath" - } - } - ], - "clusters": [ - { - "name": "clustertestcmdpath", - "cluster": {} - } - ], - "users": [ - { - "name": "usertestcmdpath", - "user": { - "auth-provider": { - "name": "gcp", - "config": { - "cmd-path": "cmdtorun" - } - } - } - } - ] - } - TEST_KUBE_CONFIG_PART6 = { - "current-context": "no_user", - "contexts": [ - { - "name": "no_user", - "context": { - "cluster": "default" - } - }, - ], - "clusters": [ - { - "name": "default", - "cluster": { - "server": TEST_HOST - } - }, - ], - "users": None - } - - def _create_multi_config(self): - files = [] - for part in ( - self.TEST_KUBE_CONFIG_PART1, - self.TEST_KUBE_CONFIG_PART2, - self.TEST_KUBE_CONFIG_PART3, - self.TEST_KUBE_CONFIG_PART4, - self.TEST_KUBE_CONFIG_PART5, - self.TEST_KUBE_CONFIG_PART6): - files.append(self._create_temp_file(yaml.safe_dump(part))) - return ENV_KUBECONFIG_PATH_SEPARATOR.join(files) - - def test_list_kube_config_contexts(self): - kubeconfigs = self._create_multi_config() - expected_contexts = [ - {'context': {'cluster': 'default'}, 'name': 'no_user'}, - {'context': {'cluster': 'ssl', 'user': 'ssl'}, 'name': 'ssl'}, - {'context': {'cluster': 'default', 'user': 'simple_token'}, - 'name': 'simple_token'}, - {'context': {'cluster': 'default', 'user': 'expired_oidc'}, - 'name': 'expired_oidc'}, - {'context': {'cluster': 'clustertestcmdpath', - 'user': 'usertestcmdpath'}, - 'name': 'contexttestcmdpath'}] - - contexts, active_context = list_kube_config_contexts( - config_file=kubeconfigs) - - self.assertEqual(contexts, expected_contexts) - self.assertEqual(active_context, expected_contexts[0]) - - def test_new_client_from_config(self): - kubeconfigs = self._create_multi_config() - client = new_client_from_config( - config_file=kubeconfigs, context="simple_token") - self.assertEqual(TEST_HOST, client.configuration.host) - self.assertEqual(BEARER_TOKEN_FORMAT % TEST_DATA_BASE64, - client.configuration.api_key['authorization']) - - def test_save_changes(self): - kubeconfigs = self._create_multi_config() - - # load configuration, update token, save config - kconf = KubeConfigMerger(kubeconfigs) - user = kconf.config['users'].get_with_name('expired_oidc')['user'] - provider = user['auth-provider']['config'] - provider.value['id-token'] = "token-changed" - kconf.save_changes() - - # re-read configuration - kconf = KubeConfigMerger(kubeconfigs) - user = kconf.config['users'].get_with_name('expired_oidc')['user'] - provider = user['auth-provider']['config'] - - # new token - self.assertEqual(provider.value['id-token'], "token-changed") - - -if __name__ == '__main__': - unittest.main() diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/dynamic/__init__.py deleted file mode 100644 index a1d3d8f..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from .client import * # NOQA diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 3e2c44fe0c4cec052ce5e0f986b4c6dd2942b171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmYk0F$%&!5JhKIM8tRx1s%o4Lc|kTsC|gLV;qz0F4;{WSMdg3$=1p%Sh=zC!#w`H z>YFGULdablF1HTAt9||x9PGlmQGfy^ayWtN9AVOZi=ZarDW?0tzRa1le?Zv_`iGCg zt0@T6ie+gedC!=w9XeSimUTL_MmelW*O>DeZR4*-ujb1II`%ZPiOiCe9A?#-N=-gg e)##*PiE+%DeH_ni^BimnqpF;??H<<-9*w^=X*oFn diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/client.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/client.cpython-310.pyc deleted file mode 100644 index bc620693cb3ad6787983b2d073058f59326378ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10833 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 o`P~5DNZ~~!Ml~@tYDx``KIZU-#Ys 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 A&Hw-a diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_client.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_client.cpython-310.pyc deleted file mode 100644 index 16edca91e9edd574dbe635839627149024e5a197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10927 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_discovery.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/dynamic/__pycache__/test_discovery.cpython-310.pyc deleted file mode 100644 index 66a49bd0d9ae25cb072102a4d4ab3ca9d00c1986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1635 zcmb7EOK;;g5avU+WXCbG-d9r;J+HdhsM%hMVzJmF0SffsL%Y4`LMS5R$kxLpDFY6? zK!N0%Kd`6dxPM94p7t;F)EO#`Gd`vlrY`pfB)9wC3CvfVsT z-a$7%gOEhhoW$)&V+uOUS;1pY(Z+MH=)@hEd$N;v3qSTL`H9G`^e>6@6`ckbJnl*Q zD+zFb(VGT^X$ICJ)vh>JVQ#`TVI4JL+n-?Gy!FXb( zxTKO@k_#Gpl1uNB#2wj@T^Jz_{BtvWuZ%s;Oj<3JRyxJMtsBl6^dsnI2*Q$UdP7!3 zFiGGv9fw@whWP13S)pDlkyhntHmP-Dv#M;mtqRfeG&i4!hOCmmrqNkdsAy7WsjgCG zZ5GYGH<3v-+`62+npe_93so+nJUfZzOM6z8-yIx&8=1_iSMwyDB@<<$S$(2(sVq!o zo0<4SEDz?(rf-z}ZGMy|#(aslz-Wi;eE;sP4>r5*Bme=&?h>$oi6xd!*@{dd zu~+nhexNHl^`;%kFuhld65E~n*MYP4Zs-U0zfbTLx$dvniqF^$MJhp}JL6A4fIGR3 z+2XMA#+6hdYj%(>fS#bgfKP>r|PB18@ziOykWH zd)5S?7B(wX{9J5EAw-&_XG)xAxdLh$qqKdmYZZEpXHZ)*FzlLSUuo2yZZ^WGB=P&+&(}NBkhV2hwP~>8(_jlgZ>$FpN8CSF^SoLXP}d>VdteHC8=&+fFgS?x2zT#g zjqN-3XlteAbX!5hffNUL^CNhoo#U+_TuhGR!JGC 1 and kwargs.get('api_version'): - results = [ - result for result in results if result.group_version == kwargs['api_version'] - ] - # If there are multiple matches, prefer non-List kinds - if len(results) > 1 and not all([isinstance(x, ResourceList) for x in results]): - results = [result for result in results if not isinstance(result, ResourceList)] - if len(results) == 1: - return results[0] - elif not results: - raise ResourceNotFoundError('No matches found for {}'.format(kwargs)) - else: - raise ResourceNotUniqueError('Multiple matches found for {}: {}'.format(kwargs, results)) - - -class LazyDiscoverer(Discoverer): - """ A convenient container for storing discovered API resources. Allows - easy searching and retrieval of specific resources. - - Resources for the cluster are loaded lazily. - """ - - def __init__(self, client, cache_file): - Discoverer.__init__(self, client, cache_file) - self.__update_cache = False - - def discover(self): - self.__resources = self.parse_api_groups(request_resources=False) - - def __maybe_write_cache(self): - if self.__update_cache: - self._write_cache() - self.__update_cache = False - - @property - def api_groups(self): - return self.parse_api_groups(request_resources=False, update=True)['apis'].keys() - - def search(self, **kwargs): - # In first call, ignore ResourceNotFoundError and set default value for results - try: - results = self.__search(self.__build_search(**kwargs), self.__resources, []) - except ResourceNotFoundError: - results = [] - if not results: - self.invalidate_cache() - results = self.__search(self.__build_search(**kwargs), self.__resources, []) - self.__maybe_write_cache() - return results - - def __search(self, parts, resources, reqParams): - part = parts[0] - if part != '*': - - resourcePart = resources.get(part) - if not resourcePart: - return [] - elif isinstance(resourcePart, ResourceGroup): - if len(reqParams) != 2: - raise ValueError("prefix and group params should be present, have %s" % reqParams) - # Check if we've requested resources for this group - if not resourcePart.resources: - prefix, group, version = reqParams[0], reqParams[1], part - try: - resourcePart.resources = self.get_resources_for_api_version( - prefix, group, part, resourcePart.preferred) - except NotFoundError: - raise ResourceNotFoundError - - self._cache['resources'][prefix][group][version] = resourcePart - self.__update_cache = True - return self.__search(parts[1:], resourcePart.resources, reqParams) - elif isinstance(resourcePart, dict): - # In this case parts [0] will be a specified prefix, group, version - # as we recurse - return self.__search(parts[1:], resourcePart, reqParams + [part] ) - else: - if parts[1] != '*' and isinstance(parts[1], dict): - for _resource in resourcePart: - for term, value in parts[1].items(): - if getattr(_resource, term) == value: - return [_resource] - - return [] - else: - return resourcePart - else: - matches = [] - for key in resources.keys(): - matches.extend(self.__search([key] + parts[1:], resources, reqParams)) - return matches - - def __build_search(self, prefix=None, group=None, api_version=None, kind=None, **kwargs): - if not group and api_version and '/' in api_version: - group, api_version = api_version.split('/') - - items = [prefix, group, api_version, kind, kwargs] - return list(map(lambda x: x or '*', items)) - - def __iter__(self): - for prefix, groups in self.__resources.items(): - for group, versions in groups.items(): - for version, rg in versions.items(): - # Request resources for this groupVersion if we haven't yet - if not rg.resources: - rg.resources = self.get_resources_for_api_version( - prefix, group, version, rg.preferred) - self._cache['resources'][prefix][group][version] = rg - self.__update_cache = True - for _, resource in six.iteritems(rg.resources): - yield resource - self.__maybe_write_cache() - - -class EagerDiscoverer(Discoverer): - """ A convenient container for storing discovered API resources. Allows - easy searching and retrieval of specific resources. - - All resources are discovered for the cluster upon object instantiation. - """ - - def update(self, resources): - self.__resources = resources - - def __init__(self, client, cache_file): - Discoverer.__init__(self, client, cache_file) - - def discover(self): - self.__resources = self.parse_api_groups(request_resources=True) - - @property - def api_groups(self): - """ list available api groups """ - return self.parse_api_groups(request_resources=True, update=True)['apis'].keys() - - - def search(self, **kwargs): - """ Takes keyword arguments and returns matching resources. The search - will happen in the following order: - prefix: The api prefix for a resource, ie, /api, /oapi, /apis. Can usually be ignored - group: The api group of a resource. Will also be extracted from api_version if it is present there - api_version: The api version of a resource - kind: The kind of the resource - arbitrary arguments (see below), in random order - - The arbitrary arguments can be any valid attribute for an Resource object - """ - results = self.__search(self.__build_search(**kwargs), self.__resources) - if not results: - self.invalidate_cache() - results = self.__search(self.__build_search(**kwargs), self.__resources) - return results - - def __build_search(self, prefix=None, group=None, api_version=None, kind=None, **kwargs): - if not group and api_version and '/' in api_version: - group, api_version = api_version.split('/') - - items = [prefix, group, api_version, kind, kwargs] - return list(map(lambda x: x or '*', items)) - - def __search(self, parts, resources): - part = parts[0] - resourcePart = resources.get(part) - - if part != '*' and resourcePart: - if isinstance(resourcePart, ResourceGroup): - return self.__search(parts[1:], resourcePart.resources) - elif isinstance(resourcePart, dict): - return self.__search(parts[1:], resourcePart) - else: - if parts[1] != '*' and isinstance(parts[1], dict): - for _resource in resourcePart: - for term, value in parts[1].items(): - if getattr(_resource, term) == value: - return [_resource] - return [] - else: - return resourcePart - elif part == '*': - matches = [] - for key in resources.keys(): - matches.extend(self.__search([key] + parts[1:], resources)) - return matches - return [] - - def __iter__(self): - for _, groups in self.__resources.items(): - for _, versions in groups.items(): - for _, resources in versions.items(): - for _, resource in resources.items(): - yield resource - - -class ResourceGroup(object): - """Helper class for Discoverer container""" - def __init__(self, preferred, resources=None): - self.preferred = preferred - self.resources = resources or {} - - def to_dict(self): - return { - '_type': 'ResourceGroup', - 'preferred': self.preferred, - 'resources': self.resources, - } - - -class CacheEncoder(json.JSONEncoder): - - def default(self, o): - return o.to_dict() - - -class CacheDecoder(json.JSONDecoder): - def __init__(self, client, *args, **kwargs): - self.client = client - json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) - - def object_hook(self, obj): - if '_type' not in obj: - return obj - _type = obj.pop('_type') - if _type == 'Resource': - return Resource(client=self.client, **obj) - elif _type == 'ResourceList': - return ResourceList(self.client, **obj) - elif _type == 'ResourceGroup': - return ResourceGroup(obj['preferred'], resources=self.object_hook(obj['resources'])) - return obj diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/exceptions.py b/venv/lib/python3.10/site-packages/kubernetes/dynamic/exceptions.py deleted file mode 100644 index c8b908e..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/dynamic/exceptions.py +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import sys -import traceback - -from kubernetes.client.rest import ApiException - - -def api_exception(e): - """ - Returns the proper Exception class for the given kubernetes.client.rest.ApiException object - https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#success-codes - """ - _, _, exc_traceback = sys.exc_info() - tb = '\n'.join(traceback.format_tb(exc_traceback)) - return { - 400: BadRequestError, - 401: UnauthorizedError, - 403: ForbiddenError, - 404: NotFoundError, - 405: MethodNotAllowedError, - 409: ConflictError, - 410: GoneError, - 422: UnprocessibleEntityError, - 429: TooManyRequestsError, - 500: InternalServerError, - 503: ServiceUnavailableError, - 504: ServerTimeoutError, - }.get(e.status, DynamicApiError)(e, tb) - - -class DynamicApiError(ApiException): - """ Generic API Error for the dynamic client """ - def __init__(self, e, tb=None): - self.status = e.status - self.reason = e.reason - self.body = e.body - self.headers = e.headers - self.original_traceback = tb - - def __str__(self): - error_message = [str(self.status), "Reason: {}".format(self.reason)] - if self.headers: - error_message.append("HTTP response headers: {}".format(self.headers)) - - if self.body: - error_message.append("HTTP response body: {}".format(self.body)) - - if self.original_traceback: - error_message.append("Original traceback: \n{}".format(self.original_traceback)) - - return '\n'.join(error_message) - - def summary(self): - if self.body: - if self.headers and self.headers.get('Content-Type') == 'application/json': - message = json.loads(self.body).get('message') - if message: - return message - - return self.body - else: - return "{} Reason: {}".format(self.status, self.reason) - -class ResourceNotFoundError(Exception): - """ Resource was not found in available APIs """ -class ResourceNotUniqueError(Exception): - """ Parameters given matched multiple API resources """ - -class KubernetesValidateMissing(Exception): - """ kubernetes-validate is not installed """ - -# HTTP Errors -class BadRequestError(DynamicApiError): - """ 400: StatusBadRequest """ -class UnauthorizedError(DynamicApiError): - """ 401: StatusUnauthorized """ -class ForbiddenError(DynamicApiError): - """ 403: StatusForbidden """ -class NotFoundError(DynamicApiError): - """ 404: StatusNotFound """ -class MethodNotAllowedError(DynamicApiError): - """ 405: StatusMethodNotAllowed """ -class ConflictError(DynamicApiError): - """ 409: StatusConflict """ -class GoneError(DynamicApiError): - """ 410: StatusGone """ -class UnprocessibleEntityError(DynamicApiError): - """ 422: StatusUnprocessibleEntity """ -class TooManyRequestsError(DynamicApiError): - """ 429: StatusTooManyRequests """ -class InternalServerError(DynamicApiError): - """ 500: StatusInternalServer """ -class ServiceUnavailableError(DynamicApiError): - """ 503: StatusServiceUnavailable """ -class ServerTimeoutError(DynamicApiError): - """ 504: StatusServerTimeout """ diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/resource.py b/venv/lib/python3.10/site-packages/kubernetes/dynamic/resource.py deleted file mode 100644 index 58a60ec..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/dynamic/resource.py +++ /dev/null @@ -1,405 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import copy -import yaml -from functools import partial - -from pprint import pformat - - -class Resource(object): - """ Represents an API resource type, containing the information required to build urls for requests """ - - def __init__(self, prefix=None, group=None, api_version=None, kind=None, - namespaced=False, verbs=None, name=None, preferred=False, client=None, - singularName=None, shortNames=None, categories=None, subresources=None, **kwargs): - - if None in (api_version, kind, prefix): - raise ValueError("At least prefix, kind, and api_version must be provided") - - self.prefix = prefix - self.group = group - self.api_version = api_version - self.kind = kind - self.namespaced = namespaced - self.verbs = verbs - self.name = name - self.preferred = preferred - self.client = client - self.singular_name = singularName or (name[:-1] if name else "") - self.short_names = shortNames - self.categories = categories - self.subresources = { - k: Subresource(self, **v) for k, v in (subresources or {}).items() - } - - self.extra_args = kwargs - - def to_dict(self): - d = { - '_type': 'Resource', - 'prefix': self.prefix, - 'group': self.group, - 'api_version': self.api_version, - 'kind': self.kind, - 'namespaced': self.namespaced, - 'verbs': self.verbs, - 'name': self.name, - 'preferred': self.preferred, - 'singularName': self.singular_name, - 'shortNames': self.short_names, - 'categories': self.categories, - 'subresources': {k: sr.to_dict() for k, sr in self.subresources.items()}, - } - d.update(self.extra_args) - return d - - @property - def group_version(self): - if self.group: - return '{}/{}'.format(self.group, self.api_version) - return self.api_version - - def __repr__(self): - return '<{}({}/{})>'.format(self.__class__.__name__, self.group_version, self.name) - - @property - def urls(self): - full_prefix = '{}/{}'.format(self.prefix, self.group_version) - resource_name = self.name.lower() - return { - 'base': '/{}/{}'.format(full_prefix, resource_name), - 'namespaced_base': '/{}/namespaces/{{namespace}}/{}'.format(full_prefix, resource_name), - 'full': '/{}/{}/{{name}}'.format(full_prefix, resource_name), - 'namespaced_full': '/{}/namespaces/{{namespace}}/{}/{{name}}'.format(full_prefix, resource_name) - } - - def path(self, name=None, namespace=None): - url_type = [] - path_params = {} - if self.namespaced and namespace: - url_type.append('namespaced') - path_params['namespace'] = namespace - if name: - url_type.append('full') - path_params['name'] = name - else: - url_type.append('base') - return self.urls['_'.join(url_type)].format(**path_params) - - def __getattr__(self, name): - if name in self.subresources: - return self.subresources[name] - return partial(getattr(self.client, name), self) - - -class ResourceList(Resource): - """ Represents a list of API objects """ - - def __init__(self, client, group='', api_version='v1', base_kind='', kind=None, base_resource_lookup=None): - self.client = client - self.group = group - self.api_version = api_version - self.kind = kind or '{}List'.format(base_kind) - self.base_kind = base_kind - self.base_resource_lookup = base_resource_lookup - self.__base_resource = None - - def base_resource(self): - if self.__base_resource: - return self.__base_resource - elif self.base_resource_lookup: - self.__base_resource = self.client.resources.get(**self.base_resource_lookup) - return self.__base_resource - elif self.base_kind: - self.__base_resource = self.client.resources.get(group=self.group, api_version=self.api_version, kind=self.base_kind) - return self.__base_resource - return None - - def _items_to_resources(self, body): - """ Takes a List body and return a dictionary with the following structure: - { - 'api_version': str, - 'kind': str, - 'items': [{ - 'resource': Resource, - 'name': str, - 'namespace': str, - }] - } - """ - if body is None: - raise ValueError("You must provide a body when calling methods on a ResourceList") - - api_version = body['apiVersion'] - kind = body['kind'] - items = body.get('items') - if not items: - raise ValueError('The `items` field in the body must be populated when calling methods on a ResourceList') - - if self.kind != kind: - raise ValueError('Methods on a {} must be called with a body containing the same kind. Received {} instead'.format(self.kind, kind)) - - return { - 'api_version': api_version, - 'kind': kind, - 'items': [self._item_to_resource(item) for item in items] - } - - def _item_to_resource(self, item): - metadata = item.get('metadata', {}) - resource = self.base_resource() - if not resource: - api_version = item.get('apiVersion', self.api_version) - kind = item.get('kind', self.base_kind) - resource = self.client.resources.get(api_version=api_version, kind=kind) - return { - 'resource': resource, - 'definition': item, - 'name': metadata.get('name'), - 'namespace': metadata.get('namespace') - } - - def get(self, body, name=None, namespace=None, **kwargs): - if name: - raise ValueError('Operations on ResourceList objects do not support the `name` argument') - resource_list = self._items_to_resources(body) - response = copy.deepcopy(body) - - response['items'] = [ - item['resource'].get(name=item['name'], namespace=item['namespace'] or namespace, **kwargs).to_dict() - for item in resource_list['items'] - ] - return ResourceInstance(self, response) - - def delete(self, body, name=None, namespace=None, **kwargs): - if name: - raise ValueError('Operations on ResourceList objects do not support the `name` argument') - resource_list = self._items_to_resources(body) - response = copy.deepcopy(body) - - response['items'] = [ - item['resource'].delete(name=item['name'], namespace=item['namespace'] or namespace, **kwargs).to_dict() - for item in resource_list['items'] - ] - return ResourceInstance(self, response) - - def verb_mapper(self, verb, body, **kwargs): - resource_list = self._items_to_resources(body) - response = copy.deepcopy(body) - response['items'] = [ - getattr(item['resource'], verb)(body=item['definition'], **kwargs).to_dict() - for item in resource_list['items'] - ] - return ResourceInstance(self, response) - - def create(self, *args, **kwargs): - return self.verb_mapper('create', *args, **kwargs) - - def replace(self, *args, **kwargs): - return self.verb_mapper('replace', *args, **kwargs) - - def patch(self, *args, **kwargs): - return self.verb_mapper('patch', *args, **kwargs) - - def to_dict(self): - return { - '_type': 'ResourceList', - 'group': self.group, - 'api_version': self.api_version, - 'kind': self.kind, - 'base_kind': self.base_kind - } - - def __getattr__(self, name): - if self.base_resource(): - return getattr(self.base_resource(), name) - return None - - -class Subresource(Resource): - """ Represents a subresource of an API resource. This generally includes operations - like scale, as well as status objects for an instantiated resource - """ - - def __init__(self, parent, **kwargs): - self.parent = parent - self.prefix = parent.prefix - self.group = parent.group - self.api_version = parent.api_version - self.kind = kwargs.pop('kind') - self.name = kwargs.pop('name') - self.subresource = kwargs.pop('subresource', None) or self.name.split('/')[1] - self.namespaced = kwargs.pop('namespaced', False) - self.verbs = kwargs.pop('verbs', None) - self.extra_args = kwargs - - #TODO(fabianvf): Determine proper way to handle differences between resources + subresources - def create(self, body=None, name=None, namespace=None, **kwargs): - name = name or body.get('metadata', {}).get('name') - body = self.parent.client.serialize_body(body) - if self.parent.namespaced: - namespace = self.parent.client.ensure_namespace(self.parent, namespace, body) - path = self.path(name=name, namespace=namespace) - return self.parent.client.request('post', path, body=body, **kwargs) - - @property - def urls(self): - full_prefix = '{}/{}'.format(self.prefix, self.group_version) - return { - 'full': '/{}/{}/{{name}}/{}'.format(full_prefix, self.parent.name, self.subresource), - 'namespaced_full': '/{}/namespaces/{{namespace}}/{}/{{name}}/{}'.format(full_prefix, self.parent.name, self.subresource) - } - - def __getattr__(self, name): - return partial(getattr(self.parent.client, name), self) - - def to_dict(self): - d = { - 'kind': self.kind, - 'name': self.name, - 'subresource': self.subresource, - 'namespaced': self.namespaced, - 'verbs': self.verbs - } - d.update(self.extra_args) - return d - - -class ResourceInstance(object): - """ A parsed instance of an API resource. It exists solely to - ease interaction with API objects by allowing attributes to - be accessed with '.' notation. - """ - - def __init__(self, client, instance): - self.client = client - # If we have a list of resources, then set the apiVersion and kind of - # each resource in 'items' - kind = instance['kind'] - if kind.endswith('List') and 'items' in instance: - kind = instance['kind'][:-4] - if not instance['items']: - instance['items'] = [] - for item in instance['items']: - if 'apiVersion' not in item: - item['apiVersion'] = instance['apiVersion'] - if 'kind' not in item: - item['kind'] = kind - - self.attributes = self.__deserialize(instance) - self.__initialised = True - - def __deserialize(self, field): - if isinstance(field, dict): - return ResourceField(params={ - k: self.__deserialize(v) for k, v in field.items() - }) - elif isinstance(field, (list, tuple)): - return [self.__deserialize(item) for item in field] - else: - return field - - def __serialize(self, field): - if isinstance(field, ResourceField): - return { - k: self.__serialize(v) for k, v in field.__dict__.items() - } - elif isinstance(field, (list, tuple)): - return [self.__serialize(item) for item in field] - elif isinstance(field, ResourceInstance): - return field.to_dict() - else: - return field - - def to_dict(self): - return self.__serialize(self.attributes) - - def to_str(self): - return repr(self) - - def __repr__(self): - return "ResourceInstance[{}]:\n {}".format( - self.attributes.kind, - ' '.join(yaml.safe_dump(self.to_dict()).splitlines(True)) - ) - - def __getattr__(self, name): - if not '_ResourceInstance__initialised' in self.__dict__: - return super(ResourceInstance, self).__getattr__(name) - return getattr(self.attributes, name) - - def __setattr__(self, name, value): - if not '_ResourceInstance__initialised' in self.__dict__: - return super(ResourceInstance, self).__setattr__(name, value) - elif name in self.__dict__: - return super(ResourceInstance, self).__setattr__(name, value) - else: - self.attributes[name] = value - - def __getitem__(self, name): - return self.attributes[name] - - def __setitem__(self, name, value): - self.attributes[name] = value - - def __dir__(self): - return dir(type(self)) + list(self.attributes.__dict__.keys()) - - -class ResourceField(object): - """ A parsed instance of an API resource attribute. It exists - solely to ease interaction with API objects by allowing - attributes to be accessed with '.' notation - """ - - def __init__(self, params): - self.__dict__.update(**params) - - def __repr__(self): - return pformat(self.__dict__) - - def __eq__(self, other): - return self.__dict__ == other.__dict__ - - def __getitem__(self, name): - return self.__dict__.get(name) - - # Here resource.items will return items if available or resource.__dict__.items function if not - # resource.get will call resource.__dict__.get after attempting resource.__dict__.get('get') - def __getattr__(self, name): - return self.__dict__.get(name, getattr(self.__dict__, name, None)) - - def __setattr__(self, name, value): - self.__dict__[name] = value - - def __dir__(self): - return dir(type(self)) + list(self.__dict__.keys()) - - def __iter__(self): - for k, v in self.__dict__.items(): - yield (k, v) - - def to_dict(self): - return self.__serialize(self) - - def __serialize(self, field): - if isinstance(field, ResourceField): - return { - k: self.__serialize(v) for k, v in field.__dict__.items() - } - if isinstance(field, (list, tuple)): - return [self.__serialize(item) for item in field] - return field diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_client.py b/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_client.py deleted file mode 100644 index 2c31559..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_client.py +++ /dev/null @@ -1,566 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import time -import unittest -import uuid - -from kubernetes.e2e_test import base -from kubernetes.client import api_client - -from . import DynamicClient -from .resource import ResourceInstance, ResourceField -from .exceptions import ResourceNotFoundError - - -def short_uuid(): - id = str(uuid.uuid4()) - return id[-12:] - - -class TestDynamicClient(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.config = base.get_e2e_configuration() - - def test_cluster_custom_resources(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ClusterChangeMe') - - crd_api = client.resources.get( - api_version='apiextensions.k8s.io/v1beta1', - kind='CustomResourceDefinition') - name = 'clusterchangemes.apps.example.com' - crd_manifest = { - 'apiVersion': 'apiextensions.k8s.io/v1beta1', - 'kind': 'CustomResourceDefinition', - 'metadata': { - 'name': name, - }, - 'spec': { - 'group': 'apps.example.com', - 'names': { - 'kind': 'ClusterChangeMe', - 'listKind': 'ClusterChangeMeList', - 'plural': 'clusterchangemes', - 'singular': 'clusterchangeme', - }, - 'scope': 'Cluster', - 'version': 'v1', - 'subresources': { - 'status': {} - } - } - } - resp = crd_api.create(crd_manifest) - - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - resp = crd_api.get( - name=name, - ) - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - try: - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ClusterChangeMe') - except ResourceNotFoundError: - # Need to wait a sec for the discovery layer to get updated - time.sleep(2) - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ClusterChangeMe') - resp = changeme_api.get() - self.assertEqual(resp.items, []) - changeme_name = 'custom-resource' + short_uuid() - changeme_manifest = { - 'apiVersion': 'apps.example.com/v1', - 'kind': 'ClusterChangeMe', - 'metadata': { - 'name': changeme_name, - }, - 'spec': {} - } - - resp = changeme_api.create(body=changeme_manifest) - self.assertEqual(resp.metadata.name, changeme_name) - - resp = changeme_api.get(name=changeme_name) - self.assertEqual(resp.metadata.name, changeme_name) - - changeme_manifest['spec']['size'] = 3 - resp = changeme_api.patch( - body=changeme_manifest, - content_type='application/merge-patch+json' - ) - self.assertEqual(resp.spec.size, 3) - - resp = changeme_api.get(name=changeme_name) - self.assertEqual(resp.spec.size, 3) - - resp = changeme_api.get() - self.assertEqual(len(resp.items), 1) - - resp = changeme_api.delete( - name=changeme_name, - ) - - resp = changeme_api.get() - self.assertEqual(len(resp.items), 0) - - resp = crd_api.delete( - name=name, - ) - - time.sleep(2) - client.resources.invalidate_cache() - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ClusterChangeMe') - - def test_async_namespaced_custom_resources(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - - crd_api = client.resources.get( - api_version='apiextensions.k8s.io/v1beta1', - kind='CustomResourceDefinition') - - name = 'changemes.apps.example.com' - - crd_manifest = { - 'apiVersion': 'apiextensions.k8s.io/v1beta1', - 'kind': 'CustomResourceDefinition', - 'metadata': { - 'name': name, - }, - 'spec': { - 'group': 'apps.example.com', - 'names': { - 'kind': 'ChangeMe', - 'listKind': 'ChangeMeList', - 'plural': 'changemes', - 'singular': 'changeme', - }, - 'scope': 'Namespaced', - 'version': 'v1', - 'subresources': { - 'status': {} - } - } - } - async_resp = crd_api.create(crd_manifest, async_req=True) - - self.assertEqual(name, async_resp.metadata.name) - self.assertTrue(async_resp.status) - - async_resp = crd_api.get( - name=name, - async_req=True - ) - self.assertEqual(name, async_resp.metadata.name) - self.assertTrue(async_resp.status) - - try: - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - except ResourceNotFoundError: - # Need to wait a sec for the discovery layer to get updated - time.sleep(2) - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - - async_resp = changeme_api.get(async_req=True) - self.assertEqual(async_resp.items, []) - - changeme_name = 'custom-resource' + short_uuid() - changeme_manifest = { - 'apiVersion': 'apps.example.com/v1', - 'kind': 'ChangeMe', - 'metadata': { - 'name': changeme_name, - }, - 'spec': {} - } - - async_resp = changeme_api.create(body=changeme_manifest, namespace='default', async_req=True) - self.assertEqual(async_resp.metadata.name, changeme_name) - - async_resp = changeme_api.get(name=changeme_name, namespace='default', async_req=True) - self.assertEqual(async_resp.metadata.name, changeme_name) - - changeme_manifest['spec']['size'] = 3 - async_resp = changeme_api.patch( - body=changeme_manifest, - namespace='default', - content_type='application/merge-patch+json', - async_req=True - ) - self.assertEqual(async_resp.spec.size, 3) - - async_resp = changeme_api.get(name=changeme_name, namespace='default', async_req=True) - self.assertEqual(async_resp.spec.size, 3) - - async_resp = changeme_api.get(namespace='default', async_req=True) - self.assertEqual(len(async_resp.items), 1) - - async_resp = changeme_api.get(async_req=True) - self.assertEqual(len(async_resp.items), 1) - - async_resp = changeme_api.delete( - name=changeme_name, - namespace='default', - async_req=True - ) - - async_resp = changeme_api.get(namespace='default', async_req=True) - self.assertEqual(len(async_resp.items), 0) - - async_resp = changeme_api.get(async_req=True) - self.assertEqual(len(async_resp.items), 0) - - async_resp = crd_api.delete( - name=name, - async_req=True - ) - - time.sleep(2) - client.resources.invalidate_cache() - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - - def test_namespaced_custom_resources(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - - crd_api = client.resources.get( - api_version='apiextensions.k8s.io/v1beta1', - kind='CustomResourceDefinition') - name = 'changemes.apps.example.com' - crd_manifest = { - 'apiVersion': 'apiextensions.k8s.io/v1beta1', - 'kind': 'CustomResourceDefinition', - 'metadata': { - 'name': name, - }, - 'spec': { - 'group': 'apps.example.com', - 'names': { - 'kind': 'ChangeMe', - 'listKind': 'ChangeMeList', - 'plural': 'changemes', - 'singular': 'changeme', - }, - 'scope': 'Namespaced', - 'version': 'v1', - 'subresources': { - 'status': {} - } - } - } - resp = crd_api.create(crd_manifest) - - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - resp = crd_api.get( - name=name, - ) - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - try: - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - except ResourceNotFoundError: - # Need to wait a sec for the discovery layer to get updated - time.sleep(2) - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - resp = changeme_api.get() - self.assertEqual(resp.items, []) - changeme_name = 'custom-resource' + short_uuid() - changeme_manifest = { - 'apiVersion': 'apps.example.com/v1', - 'kind': 'ChangeMe', - 'metadata': { - 'name': changeme_name, - }, - 'spec': {} - } - - resp = changeme_api.create(body=changeme_manifest, namespace='default') - self.assertEqual(resp.metadata.name, changeme_name) - - resp = changeme_api.get(name=changeme_name, namespace='default') - self.assertEqual(resp.metadata.name, changeme_name) - - changeme_manifest['spec']['size'] = 3 - resp = changeme_api.patch( - body=changeme_manifest, - namespace='default', - content_type='application/merge-patch+json' - ) - self.assertEqual(resp.spec.size, 3) - - resp = changeme_api.get(name=changeme_name, namespace='default') - self.assertEqual(resp.spec.size, 3) - - resp = changeme_api.get(namespace='default') - self.assertEqual(len(resp.items), 1) - - resp = changeme_api.get() - self.assertEqual(len(resp.items), 1) - - resp = changeme_api.delete( - name=changeme_name, - namespace='default' - ) - - resp = changeme_api.get(namespace='default') - self.assertEqual(len(resp.items), 0) - - resp = changeme_api.get() - self.assertEqual(len(resp.items), 0) - - resp = crd_api.delete( - name=name, - ) - - time.sleep(2) - client.resources.invalidate_cache() - with self.assertRaises(ResourceNotFoundError): - changeme_api = client.resources.get( - api_version='apps.example.com/v1', kind='ChangeMe') - - def test_service_apis(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get(api_version='v1', kind='Service') - - name = 'frontend-' + short_uuid() - service_manifest = {'apiVersion': 'v1', - 'kind': 'Service', - 'metadata': {'labels': {'name': name}, - 'name': name, - 'resourceversion': 'v1'}, - 'spec': {'ports': [{'name': 'port', - 'port': 80, - 'protocol': 'TCP', - 'targetPort': 80}], - 'selector': {'name': name}}} - - resp = api.create( - body=service_manifest, - namespace='default' - ) - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - resp = api.get( - name=name, - namespace='default' - ) - self.assertEqual(name, resp.metadata.name) - self.assertTrue(resp.status) - - service_manifest['spec']['ports'] = [{'name': 'new', - 'port': 8080, - 'protocol': 'TCP', - 'targetPort': 8080}] - resp = api.patch( - body=service_manifest, - name=name, - namespace='default' - ) - self.assertEqual(2, len(resp.spec.ports)) - self.assertTrue(resp.status) - - resp = api.delete( - name=name, body={}, - namespace='default' - ) - - def test_replication_controller_apis(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get( - api_version='v1', kind='ReplicationController') - - name = 'frontend-' + short_uuid() - rc_manifest = { - 'apiVersion': 'v1', - 'kind': 'ReplicationController', - 'metadata': {'labels': {'name': name}, - 'name': name}, - 'spec': {'replicas': 2, - 'selector': {'name': name}, - 'template': {'metadata': { - 'labels': {'name': name}}, - 'spec': {'containers': [{ - 'image': 'nginx', - 'name': 'nginx', - 'ports': [{'containerPort': 80, - 'protocol': 'TCP'}]}]}}}} - - resp = api.create( - body=rc_manifest, namespace='default') - self.assertEqual(name, resp.metadata.name) - self.assertEqual(2, resp.spec.replicas) - - resp = api.get( - name=name, namespace='default') - self.assertEqual(name, resp.metadata.name) - self.assertEqual(2, resp.spec.replicas) - - api.delete( - name=name, - namespace='default', - propagation_policy='Background') - - def test_configmap_apis(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get(api_version='v1', kind='ConfigMap') - - name = 'test-configmap-' + short_uuid() - test_configmap = { - "kind": "ConfigMap", - "apiVersion": "v1", - "metadata": { - "name": name, - "labels": { - "e2e-test": "true", - }, - }, - "data": { - "config.json": "{\"command\":\"/usr/bin/mysqld_safe\"}", - "frontend.cnf": "[mysqld]\nbind-address = 10.0.0.3\n" - } - } - - resp = api.create( - body=test_configmap, namespace='default' - ) - self.assertEqual(name, resp.metadata.name) - - resp = api.get( - name=name, namespace='default', label_selector="e2e-test=true") - self.assertEqual(name, resp.metadata.name) - - test_configmap['data']['config.json'] = "{}" - resp = api.patch( - name=name, namespace='default', body=test_configmap) - - resp = api.delete( - name=name, body={}, namespace='default') - - resp = api.get( - namespace='default', - pretty=True, - label_selector="e2e-test=true") - self.assertEqual([], resp.items) - - def test_node_apis(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get(api_version='v1', kind='Node') - - for item in api.get().items: - node = api.get(name=item.metadata.name) - self.assertTrue(len(dict(node.metadata.labels)) > 0) - - # test_node_apis_partial_object_metadata lists all nodes in the cluster, - # but only retrieves object metadata - def test_node_apis_partial_object_metadata(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get(api_version='v1', kind='Node') - - params = { - 'header_params': { - 'Accept': 'application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.io'}} - resp = api.get(**params) - self.assertEqual('PartialObjectMetadataList', resp.kind) - self.assertEqual('meta.k8s.io/v1', resp.apiVersion) - - params = { - 'header_params': { - 'aCcePt': 'application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.io'}} - resp = api.get(**params) - self.assertEqual('PartialObjectMetadataList', resp.kind) - self.assertEqual('meta.k8s.io/v1', resp.apiVersion) - - def test_server_side_apply_api(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - api = client.resources.get( - api_version='v1', kind='Pod') - - name = 'pod-' + short_uuid() - pod_manifest = { - 'apiVersion': 'v1', - 'kind': 'Pod', - 'metadata': {'labels': {'name': name}, - 'name': name}, - 'spec': {'containers': [{ - 'image': 'nginx', - 'name': 'nginx', - 'ports': [{'containerPort': 80, - 'protocol': 'TCP'}]}]}} - - resp = api.server_side_apply( - namespace='default', body=pod_manifest, - field_manager='kubernetes-unittests', dry_run="All") - self.assertEqual('kubernetes-unittests', resp.metadata.managedFields[0].manager) - - -class TestDynamicClientSerialization(unittest.TestCase): - - @classmethod - def setUpClass(cls): - config = base.get_e2e_configuration() - cls.client = DynamicClient(api_client.ApiClient(configuration=config)) - cls.pod_manifest = { - 'apiVersion': 'v1', - 'kind': 'Pod', - 'metadata': {'name': 'foo-pod'}, - 'spec': {'containers': [{'name': "main", 'image': "busybox"}]}, - } - - def test_dict_type(self): - self.assertEqual(self.client.serialize_body(self.pod_manifest), self.pod_manifest) - - def test_resource_instance_type(self): - inst = ResourceInstance(self.client, self.pod_manifest) - self.assertEqual(self.client.serialize_body(inst), self.pod_manifest) - - def test_resource_field(self): - """`ResourceField` is a special type which overwrites `__getattr__` method to return `None` - when a non-existent attribute was accessed. which means it can pass any `hasattr(...)` tests. - """ - params = { - "foo": "bar", - "self": True - } - res = ResourceField(params=params) - self.assertEqual(res["foo"], params["foo"]) - self.assertEqual(res["self"], params["self"]) - self.assertEqual(self.client.serialize_body(res), params) diff --git a/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_discovery.py b/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_discovery.py deleted file mode 100644 index 639ccdd..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/dynamic/test_discovery.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import unittest - -from kubernetes.e2e_test import base -from kubernetes.client import api_client - -from . import DynamicClient - - -class TestDiscoverer(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.config = base.get_e2e_configuration() - - def test_init_cache_from_file(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - client.resources.get(api_version='v1', kind='Node') - mtime1 = os.path.getmtime(client.resources._Discoverer__cache_file) - - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - client.resources.get(api_version='v1', kind='Node') - mtime2 = os.path.getmtime(client.resources._Discoverer__cache_file) - - # test no Discoverer._write_cache called - self.assertTrue(mtime1 == mtime2) - - def test_cache_decoder_resource_and_subresource(self): - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - # first invalidate cache - client.resources.invalidate_cache() - - # do Discoverer.__init__ - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - # the resources of client will use _cache['resources'] in memory - deploy1 = client.resources.get(kind='Deployment') - - # do Discoverer.__init__ - client = DynamicClient(api_client.ApiClient(configuration=self.config)) - # the resources of client will use _cache['resources'] decode from cache file - deploy2 = client.resources.get(kind='Deployment') - - # test Resource is the same - self.assertTrue(deploy1 == deploy2) - - # test Subresource is the same - self.assertTrue(deploy1.status == deploy2.status) diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__init__.py deleted file mode 100644 index 37da225..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ac4c5c8bb7134f78a8aea3a25798ec307706f4cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 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 K`WH3DdhLISR^GV) diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelection_test.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelection_test.cpython-310.pyc deleted file mode 100644 index 3f0f1fd1dd8d1f9e8fa2eb3da2158dc3ef76f63d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8351 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 G>Hh$_ocK=w diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelectionrecord.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/__pycache__/leaderelectionrecord.cpython-310.pyc deleted file mode 100644 index f3d40731267b5136f52b240dd592ccb91ee42ddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmZuu%}yIJ5Vm(iNu%(ih+}zx9Ee+S;ee`072;CmKySHN#vT$Y8+)<6M5*=$ckaAF zUumzr1t(@Ujg+E}HJ@k3o*#eq2M0Zd^1^TKo^!@t$=MZ*u`y~KAY3!U41Yp>%%;p_ zzt}L>82?8y^v0<11OeET8#c`hH`x=L<|fCSPIK}Tl!0(nfKJxC8_+%&y@v@~A)6}w zK#gAzYF;zR>I{+BIbv3K5Oc$@BA;NAkhk%Co!@@ppZ!0nPOAxcl>fkk`WX0klil~Dst(%>d z-bC>L?m-mxR+Q^B_wIc3?W>43!C9&FLd_tGMRg0oK|&L!!*Ss+2Or$fQZg#nO;<|m zY?6|GAa)Txaauk8`}BV_j<)xS6HIn$2~svaDVN?<1=)Qm?<-YoPQqs_*}icHs7>Gq j$EcCW=(2v+MkYhv?mM@Mpg<{2_j1$ZJLN{Ab8z$yy`+{a diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/electionconfig.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/electionconfig.py deleted file mode 100644 index 7b0db63..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/electionconfig.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys -import logging -logging.basicConfig(level=logging.INFO) - - -class Config: - # Validate config, exit if an error is detected - def __init__(self, lock, lease_duration, renew_deadline, retry_period, onstarted_leading, onstopped_leading): - self.jitter_factor = 1.2 - - if lock is None: - sys.exit("lock cannot be None") - self.lock = lock - - if lease_duration <= renew_deadline: - sys.exit("lease_duration must be greater than renew_deadline") - - if renew_deadline <= self.jitter_factor * retry_period: - sys.exit("renewDeadline must be greater than retry_period*jitter_factor") - - if lease_duration < 1: - sys.exit("lease_duration must be greater than one") - - if renew_deadline < 1: - sys.exit("renew_deadline must be greater than one") - - if retry_period < 1: - sys.exit("retry_period must be greater than one") - - self.lease_duration = lease_duration - self.renew_deadline = renew_deadline - self.retry_period = retry_period - - if onstarted_leading is None: - sys.exit("callback onstarted_leading cannot be None") - self.onstarted_leading = onstarted_leading - - if onstopped_leading is None: - self.onstopped_leading = self.on_stoppedleading_callback - else: - self.onstopped_leading = onstopped_leading - - # Default callback for when the current candidate if a leader, stops leading - def on_stoppedleading_callback(self): - logging.info("stopped leading".format(self.lock.identity)) diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/example.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/example.py deleted file mode 100644 index 3b3336c..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/example.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import uuid -from kubernetes import client, config -from kubernetes.leaderelection import leaderelection -from kubernetes.leaderelection.resourcelock.configmaplock import ConfigMapLock -from kubernetes.leaderelection import electionconfig - - -# Authenticate using config file -config.load_kube_config(config_file=r"") - -# Parameters required from the user - -# A unique identifier for this candidate -candidate_id = uuid.uuid4() - -# Name of the lock object to be created -lock_name = "examplepython" - -# Kubernetes namespace -lock_namespace = "default" - - -# The function that a user wants to run once a candidate is elected as a leader -def example_func(): - print("I am leader") - - -# A user can choose not to provide any callbacks for what to do when a candidate fails to lead - onStoppedLeading() -# In that case, a default callback function will be used - -# Create config -config = electionconfig.Config(ConfigMapLock(lock_name, lock_namespace, candidate_id), lease_duration=17, - renew_deadline=15, retry_period=5, onstarted_leading=example_func, - onstopped_leading=None) - -# Enter leader election -leaderelection.LeaderElection(config).run() - -# User can choose to do another round of election or simply exit -print("Exited leader election") diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection.py deleted file mode 100644 index a707fba..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection.py +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import datetime -import sys -import time -import json -import threading -from .leaderelectionrecord import LeaderElectionRecord -import logging -# if condition to be removed when support for python2 will be removed -if sys.version_info > (3, 0): - from http import HTTPStatus -else: - import httplib -logging.basicConfig(level=logging.INFO) - -""" -This package implements leader election using an annotation in a Kubernetes object. -The onstarted_leading function is run in a thread and when it returns, if it does -it might not be safe to run it again in a process. - -At first all candidates are considered followers. The one to create a lock or update -an existing lock first becomes the leader and remains so until it keeps renewing its -lease. -""" - - -class LeaderElection: - def __init__(self, election_config): - if election_config is None: - sys.exit("argument config not passed") - - # Latest record observed in the created lock object - self.observed_record = None - - # The configuration set for this candidate - self.election_config = election_config - - # Latest update time of the lock - self.observed_time_milliseconds = 0 - - # Point of entry to Leader election - def run(self): - # Try to create/ acquire a lock - if self.acquire(): - logging.info("{} successfully acquired lease".format(self.election_config.lock.identity)) - - # Start leading and call OnStartedLeading() - threading.daemon = True - threading.Thread(target=self.election_config.onstarted_leading).start() - - self.renew_loop() - - # Failed to update lease, run OnStoppedLeading callback - self.election_config.onstopped_leading() - - def acquire(self): - # Follower - logging.info("{} is a follower".format(self.election_config.lock.identity)) - retry_period = self.election_config.retry_period - - while True: - succeeded = self.try_acquire_or_renew() - - if succeeded: - return True - - time.sleep(retry_period) - - def renew_loop(self): - # Leader - logging.info("Leader has entered renew loop and will try to update lease continuously") - - retry_period = self.election_config.retry_period - renew_deadline = self.election_config.renew_deadline * 1000 - - while True: - timeout = int(time.time() * 1000) + renew_deadline - succeeded = False - - while int(time.time() * 1000) < timeout: - succeeded = self.try_acquire_or_renew() - - if succeeded: - break - time.sleep(retry_period) - - if succeeded: - time.sleep(retry_period) - continue - - # failed to renew, return - return - - def try_acquire_or_renew(self): - now_timestamp = time.time() - now = datetime.datetime.fromtimestamp(now_timestamp) - - # Check if lock is created - lock_status, old_election_record = self.election_config.lock.get(self.election_config.lock.name, - self.election_config.lock.namespace) - - # create a default Election record for this candidate - leader_election_record = LeaderElectionRecord(self.election_config.lock.identity, - str(self.election_config.lease_duration), str(now), str(now)) - - # A lock is not created with that name, try to create one - if not lock_status: - # To be removed when support for python2 will be removed - if sys.version_info > (3, 0): - if json.loads(old_election_record.body)['code'] != HTTPStatus.NOT_FOUND: - logging.info("Error retrieving resource lock {} as {}".format(self.election_config.lock.name, - old_election_record.reason)) - return False - else: - if json.loads(old_election_record.body)['code'] != httplib.NOT_FOUND: - logging.info("Error retrieving resource lock {} as {}".format(self.election_config.lock.name, - old_election_record.reason)) - return False - - logging.info("{} is trying to create a lock".format(leader_election_record.holder_identity)) - create_status = self.election_config.lock.create(name=self.election_config.lock.name, - namespace=self.election_config.lock.namespace, - election_record=leader_election_record) - - if create_status is False: - logging.info("{} Failed to create lock".format(leader_election_record.holder_identity)) - return False - - self.observed_record = leader_election_record - self.observed_time_milliseconds = int(time.time() * 1000) - return True - - # A lock exists with that name - # Validate old_election_record - if old_election_record is None: - # try to update lock with proper annotation and election record - return self.update_lock(leader_election_record) - - if (old_election_record.holder_identity is None or old_election_record.lease_duration is None - or old_election_record.acquire_time is None or old_election_record.renew_time is None): - # try to update lock with proper annotation and election record - return self.update_lock(leader_election_record) - - # Report transitions - if self.observed_record and self.observed_record.holder_identity != old_election_record.holder_identity: - logging.info("Leader has switched to {}".format(old_election_record.holder_identity)) - - if self.observed_record is None or old_election_record.__dict__ != self.observed_record.__dict__: - self.observed_record = old_election_record - self.observed_time_milliseconds = int(time.time() * 1000) - - # If This candidate is not the leader and lease duration is yet to finish - if (self.election_config.lock.identity != self.observed_record.holder_identity - and self.observed_time_milliseconds + self.election_config.lease_duration * 1000 > int(now_timestamp * 1000)): - logging.info("yet to finish lease_duration, lease held by {} and has not expired".format(old_election_record.holder_identity)) - return False - - # If this candidate is the Leader - if self.election_config.lock.identity == self.observed_record.holder_identity: - # Leader updates renewTime, but keeps acquire_time unchanged - leader_election_record.acquire_time = self.observed_record.acquire_time - - return self.update_lock(leader_election_record) - - def update_lock(self, leader_election_record): - # Update object with latest election record - update_status = self.election_config.lock.update(self.election_config.lock.name, - self.election_config.lock.namespace, - leader_election_record) - - if update_status is False: - logging.info("{} failed to acquire lease".format(leader_election_record.holder_identity)) - return False - - self.observed_record = leader_election_record - self.observed_time_milliseconds = int(time.time() * 1000) - logging.info("leader {} has successfully acquired lease".format(leader_election_record.holder_identity)) - return True diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection_test.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection_test.py deleted file mode 100644 index 9fb6d9b..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelection_test.py +++ /dev/null @@ -1,270 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from . import leaderelection -from .leaderelectionrecord import LeaderElectionRecord -from kubernetes.client.rest import ApiException -from . import electionconfig -import unittest -import threading -import json -import time -import pytest - -thread_lock = threading.RLock() - -class LeaderElectionTest(unittest.TestCase): - def test_simple_leader_election(self): - election_history = [] - leadership_history = [] - - def on_create(): - election_history.append("create record") - leadership_history.append("get leadership") - - def on_update(): - election_history.append("update record") - - def on_change(): - election_history.append("change record") - - mock_lock = MockResourceLock("mock", "mock_namespace", "mock", thread_lock, on_create, on_update, on_change, None) - - def on_started_leading(): - leadership_history.append("start leading") - - def on_stopped_leading(): - leadership_history.append("stop leading") - - # Create config 4.5 4 3 - config = electionconfig.Config(lock=mock_lock, lease_duration=2.5, - renew_deadline=2, retry_period=1.5, onstarted_leading=on_started_leading, - onstopped_leading=on_stopped_leading) - - # Enter leader election - leaderelection.LeaderElection(config).run() - - self.assert_history(election_history, ["create record", "update record", "update record", "update record"]) - self.assert_history(leadership_history, ["get leadership", "start leading", "stop leading"]) - - def test_leader_election(self): - election_history = [] - leadership_history = [] - - def on_create_A(): - election_history.append("A creates record") - leadership_history.append("A gets leadership") - - def on_update_A(): - election_history.append("A updates record") - - def on_change_A(): - election_history.append("A gets leadership") - - mock_lock_A = MockResourceLock("mock", "mock_namespace", "MockA", thread_lock, on_create_A, on_update_A, on_change_A, None) - mock_lock_A.renew_count_max = 3 - - def on_started_leading_A(): - leadership_history.append("A starts leading") - - def on_stopped_leading_A(): - leadership_history.append("A stops leading") - - config_A = electionconfig.Config(lock=mock_lock_A, lease_duration=2.5, - renew_deadline=2, retry_period=1.5, onstarted_leading=on_started_leading_A, - onstopped_leading=on_stopped_leading_A) - - def on_create_B(): - election_history.append("B creates record") - leadership_history.append("B gets leadership") - - def on_update_B(): - election_history.append("B updates record") - - def on_change_B(): - leadership_history.append("B gets leadership") - - mock_lock_B = MockResourceLock("mock", "mock_namespace", "MockB", thread_lock, on_create_B, on_update_B, on_change_B, None) - mock_lock_B.renew_count_max = 4 - - def on_started_leading_B(): - leadership_history.append("B starts leading") - - def on_stopped_leading_B(): - leadership_history.append("B stops leading") - - config_B = electionconfig.Config(lock=mock_lock_B, lease_duration=2.5, - renew_deadline=2, retry_period=1.5, onstarted_leading=on_started_leading_B, - onstopped_leading=on_stopped_leading_B) - - mock_lock_B.leader_record = mock_lock_A.leader_record - - threading.daemon = True - # Enter leader election for A - threading.Thread(target=leaderelection.LeaderElection(config_A).run()).start() - - # Enter leader election for B - threading.Thread(target=leaderelection.LeaderElection(config_B).run()).start() - - time.sleep(5) - - self.assert_history(election_history, - ["A creates record", - "A updates record", - "A updates record", - "B updates record", - "B updates record", - "B updates record", - "B updates record"]) - self.assert_history(leadership_history, - ["A gets leadership", - "A starts leading", - "A stops leading", - "B gets leadership", - "B starts leading", - "B stops leading"]) - - - """Expected behavior: to check if the leader stops leading if it fails to update the lock within the renew_deadline - and stops leading after finally timing out. The difference between each try comes out to be approximately the sleep - time. - Example: - create record: 0s - on try update: 1.5s - on update: zzz s - on try update: 3s - on update: zzz s - on try update: 4.5s - on try update: 6s - Timeout - Leader Exits""" - def test_Leader_election_with_renew_deadline(self): - election_history = [] - leadership_history = [] - - def on_create(): - election_history.append("create record") - leadership_history.append("get leadership") - - def on_update(): - election_history.append("update record") - - def on_change(): - election_history.append("change record") - - def on_try_update(): - election_history.append("try update record") - - mock_lock = MockResourceLock("mock", "mock_namespace", "mock", thread_lock, on_create, on_update, on_change, on_try_update) - mock_lock.renew_count_max = 3 - - def on_started_leading(): - leadership_history.append("start leading") - - def on_stopped_leading(): - leadership_history.append("stop leading") - - # Create config - config = electionconfig.Config(lock=mock_lock, lease_duration=2.5, - renew_deadline=2, retry_period=1.5, onstarted_leading=on_started_leading, - onstopped_leading=on_stopped_leading) - - # Enter leader election - leaderelection.LeaderElection(config).run() - - self.assert_history(election_history, - ["create record", - "try update record", - "update record", - "try update record", - "update record", - "try update record", - "try update record"]) - - self.assert_history(leadership_history, ["get leadership", "start leading", "stop leading"]) - - def assert_history(self, history, expected): - self.assertIsNotNone(expected) - self.assertIsNotNone(history) - self.assertEqual(len(expected), len(history)) - - for idx in range(len(history)): - self.assertEqual(history[idx], expected[idx], - msg="Not equal at index {}, expected {}, got {}".format(idx, expected[idx], - history[idx])) - - -class MockResourceLock: - def __init__(self, name, namespace, identity, shared_lock, on_create=None, on_update=None, on_change=None, on_try_update=None): - # self.leader_record is shared between two MockResourceLock objects - self.leader_record = [] - self.renew_count = 0 - self.renew_count_max = 4 - self.name = name - self.namespace = namespace - self.identity = str(identity) - self.lock = shared_lock - - self.on_create = on_create - self.on_update = on_update - self.on_change = on_change - self.on_try_update = on_try_update - - def get(self, name, namespace): - self.lock.acquire() - try: - if self.leader_record: - return True, self.leader_record[0] - - ApiException.body = json.dumps({'code': 404}) - return False, ApiException - finally: - self.lock.release() - - def create(self, name, namespace, election_record): - self.lock.acquire() - try: - if len(self.leader_record) == 1: - return False - self.leader_record.append(election_record) - self.on_create() - self.renew_count += 1 - return True - finally: - self.lock.release() - - def update(self, name, namespace, updated_record): - self.lock.acquire() - try: - if self.on_try_update: - self.on_try_update() - if self.renew_count >= self.renew_count_max: - return False - - old_record = self.leader_record[0] - self.leader_record[0] = updated_record - - self.on_update() - - if old_record.holder_identity != updated_record.holder_identity: - self.on_change() - - self.renew_count += 1 - return True - finally: - self.lock.release() - - -if __name__ == '__main__': - unittest.main() diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelectionrecord.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelectionrecord.py deleted file mode 100644 index ebb550d..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/leaderelectionrecord.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -class LeaderElectionRecord: - # Annotation used in the lock object - def __init__(self, holder_identity, lease_duration, acquire_time, renew_time): - self.holder_identity = holder_identity - self.lease_duration = lease_duration - self.acquire_time = acquire_time - self.renew_time = renew_time diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__init__.py deleted file mode 100644 index 37da225..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 81a7cd69fc63b7899269e81c96906ae5eb0b641b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmYjMF%H5o5KB=9gv3J_+5@pLAjFQu01v3r{ZZ~aHg>5XxXc4r6Q8-YeB8960kr1OqfW>NOC@rDXf!lSVJFJpa z2VU1x^=?w@*3jQg>fJi8_ZxVctoj^Qes3_3)xI)V?U~hGWA2gBu787>jJ8=cKN`j# z|0UwXJkHX#Rk%?S^E5}9rM>tRJ!^q9?uJY-yaobZT7eafRuutRjMB>V|a zA~L;t(Xa=2On>i@)G0a6-VO8d#bXkqnQC3-lHBowO4a;s7 zYx`U~zGgUcs}EM?QeajhT6AOpE}NLE00N&cuSOaPhe??7-7p!Rg}djY z6E0GobGaL5okVTbVcRKMXIX+>`(!?Cv56+he>V~#ZQ>C&F=eu7gwf+sEckIe;6+XF zls_f4T^9t>Zf!pk{Ih$2M9~a~aS*3657USjKhYBfd=3hsKoNv#n&oPObAC}cBY#9I(w8{+#Y{ypuS zWdq(h9mSEzBA(}Q=ls{QBO`&erl)s@8IzqSJblth;*-wsB0tO0U+&)fpd;g)-^G5N zho@Y2mL8nDZ}Cwb!DTiQ5vL_}%Ei*#?(m}U0{A1&gWwhxBN6CE-E~d6>v$~7GU;x9 zJKow~1@Z1;SVS&fTvaH<8Vb#ShcZ5x7=0ibD7G%GsXej#R^OgF6Ni~2LvEt9&Mol{ zdO?d#Y6s?RLi;0w*+<62nYq+@Y06){p_ehM=H9F}K^*j*TgIh%X-+HJ4s#}zp7qE$ zG8`kXUwm#FQ!vrE&MFg^>Rsc{V6UnBB{)WxPtB)B+Z}&fg7!)r9Rdl9I4a%gXD59y ziyx=GObirw{5F8082B1o#l5CxDU-D2yXPhl<3Z9Qd zy65j4ixGd{Uu?Rsp||75y@iopHcA;fNbc_(gecH^!J+6bhgmB5PHFkDFxuAf;qgJc zAzIkU?%M)U8I)nb0{!g))>(K1o`;C{5TRHGj}+?|CpIAp8;&T}Ap#W`+F6Cumstt| z&O#=I;_0d&1TG^*2kc^X;x;vYj|`ezMUNIgpz1pick#%dLRfCg^z0jEOCh;w>vGF- ztvc#9P4BPP%kjolL}PVVsQC(*a~REyJ^|V2Te&?0&}IM_0WCI}`2tk@+?+b&CfeP8 z6@=~3De>H%&VdZ@c^AK#gKs^r%>ckzW8#tp(|AN6bP0s43K%L)!O#mgOa#?6Mqli+ zKE}YtrPqD1(<_3?J7obTFg7I0#)_sg>ka7thS{= zLWpRaVjIOV4s&-1+xf+K`#^Q4u+aw9iRXvX|6+Q0&~EC3q4C+h5&{~mKZ2d2!bXFk zEY?c6vN+0h5Zu<*ULOVu!bLU7PEWA|g+p9WxS9{z*OA>_U+m%hm?)f+j9rL#umbU8 z5_CE&@r~q0?aUugE8m82suqCkymVh$&P~9)WfI&0?Ej26%ddJ!EUyP%!L|znB~hn% z8E;eK0ZdyO(?GG^cls4V^L?Zv{c7JM5~q4*0@V)a8R-U4UAy=YsIGug*Yo)S@*L6q}v%H$5%!zL_q-MT`<S9lDC$8l$k-?$y%_|LM`5B{1ZAgckHpVO`vnQ|pN@{@LX@WRff`y#krXDL;hEm1 zcgMTwZ8Teg+S;w|)-q|{)xVItNHucBf3xaf){!#GH zvY>aJiD{6jpr&Xn8YiKQBkh>N`Q-56Pij#sE-k;L@a}7;{1%CTA?Yuo*}9?Ji;n{5 H-?aY=!$lJ= diff --git a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/configmaplock.py b/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/configmaplock.py deleted file mode 100644 index a4ccf49..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/leaderelection/resourcelock/configmaplock.py +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright 2021 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from kubernetes.client.rest import ApiException -from kubernetes import client, config -from kubernetes.client.api_client import ApiClient -from ..leaderelectionrecord import LeaderElectionRecord -import json -import logging -logging.basicConfig(level=logging.INFO) - - -class ConfigMapLock: - def __init__(self, name, namespace, identity): - """ - :param name: name of the lock - :param namespace: namespace - :param identity: A unique identifier that the candidate is using - """ - self.api_instance = client.CoreV1Api() - self.leader_electionrecord_annotationkey = 'control-plane.alpha.kubernetes.io/leader' - self.name = name - self.namespace = namespace - self.identity = str(identity) - self.configmap_reference = None - self.lock_record = { - 'holderIdentity': None, - 'leaseDurationSeconds': None, - 'acquireTime': None, - 'renewTime': None - } - - # get returns the election record from a ConfigMap Annotation - def get(self, name, namespace): - """ - :param name: Name of the configmap object information to get - :param namespace: Namespace in which the configmap object is to be searched - :return: 'True, election record' if object found else 'False, exception response' - """ - try: - api_response = self.api_instance.read_namespaced_config_map(name, namespace) - - # If an annotation does not exist - add the leader_electionrecord_annotationkey - annotations = api_response.metadata.annotations - if annotations is None or annotations == '': - api_response.metadata.annotations = {self.leader_electionrecord_annotationkey: ''} - self.configmap_reference = api_response - return True, None - - # If an annotation exists but, the leader_electionrecord_annotationkey does not then add it as a key - if not annotations.get(self.leader_electionrecord_annotationkey): - api_response.metadata.annotations = {self.leader_electionrecord_annotationkey: ''} - self.configmap_reference = api_response - return True, None - - lock_record = self.get_lock_object(json.loads(annotations[self.leader_electionrecord_annotationkey])) - - self.configmap_reference = api_response - return True, lock_record - except ApiException as e: - return False, e - - def create(self, name, namespace, election_record): - """ - :param electionRecord: Annotation string - :param name: Name of the configmap object to be created - :param namespace: Namespace in which the configmap object is to be created - :return: 'True' if object is created else 'False' if failed - """ - body = client.V1ConfigMap( - metadata={"name": name, - "annotations": {self.leader_electionrecord_annotationkey: json.dumps(self.get_lock_dict(election_record))}}) - - try: - api_response = self.api_instance.create_namespaced_config_map(namespace, body, pretty=True) - return True - except ApiException as e: - logging.info("Failed to create lock as {}".format(e)) - return False - - def update(self, name, namespace, updated_record): - """ - :param name: name of the lock to be updated - :param namespace: namespace the lock is in - :param updated_record: the updated election record - :return: True if update is successful False if it fails - """ - try: - # Set the updated record - self.configmap_reference.metadata.annotations[self.leader_electionrecord_annotationkey] = json.dumps(self.get_lock_dict(updated_record)) - api_response = self.api_instance.replace_namespaced_config_map(name=name, namespace=namespace, - body=self.configmap_reference) - return True - except ApiException as e: - logging.info("Failed to update lock as {}".format(e)) - return False - - def get_lock_object(self, lock_record): - leader_election_record = LeaderElectionRecord(None, None, None, None) - - if lock_record.get('holderIdentity'): - leader_election_record.holder_identity = lock_record['holderIdentity'] - if lock_record.get('leaseDurationSeconds'): - leader_election_record.lease_duration = lock_record['leaseDurationSeconds'] - if lock_record.get('acquireTime'): - leader_election_record.acquire_time = lock_record['acquireTime'] - if lock_record.get('renewTime'): - leader_election_record.renew_time = lock_record['renewTime'] - - return leader_election_record - - def get_lock_dict(self, leader_election_record): - self.lock_record['holderIdentity'] = leader_election_record.holder_identity - self.lock_record['leaseDurationSeconds'] = leader_election_record.lease_duration - self.lock_record['acquireTime'] = leader_election_record.acquire_time - self.lock_record['renewTime'] = leader_election_record.renew_time - - return self.lock_record \ No newline at end of file diff --git a/venv/lib/python3.10/site-packages/kubernetes/stream/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/stream/__init__.py deleted file mode 100644 index cd34652..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/stream/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2017 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from .stream import stream, portforward diff --git a/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 128a4f86bae5c676931cea57db617e4a7cd0b21e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmYjLJ5B>J5FIZFA)=(pB`A^!N<)EAPC$`#+pHXWvaxpk(Rel}SK$V^Qd%mmK!q0? zo;2^xN1FHIbou}VA8LD$3gB}b{-f+*Q!393S+J@H4>fpID+RXN!Q;)BDyK_zz01O+ zeLYE$VRk}`q)n$=%GeEi;y_Z`KVNJb7o0TBGM%sYFFx9#r`IuC9y82mKa6ZYC;$Ke diff --git a/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/stream.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/stream.cpython-310.pyc deleted file mode 100644 index ad256fc1b3cd8b4cada13e28f97c158ead66b220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 961 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 QUiLzE(fgvekU#c+0a+~$3jhEB diff --git a/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/ws_client_test.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/stream/__pycache__/ws_client_test.cpython-310.pyc deleted file mode 100644 index 3ea822730c89764b9a2a93fe7fb9e39bfbf80afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2435 zcmaJ?&2QT_6elTJl5IKPNxP4>K(PT+(ONBf35sDTmKDV?z`&LQMTHK6A~KF@S#l}5 zX$b@hv=vywdTqZU zlsqO`-6X;}@+izGc|tOJNO+T5+|2amH55w!Y^VO4U(*TYmoE8 ze<89Lewyt0gClj2XLs9oZu>=|#H~RT_oA*S{N8X+$V@083nfL=_YaFOP7{%-5J1%) z;Qn9=Z2cLY3a*$i+MuT4zO$%F**l3)41KOKnB9k7d=7&k0p%oMoO1Sx1O_*_34fE< zc8O<|?&IAZz2zg=F~%#IHgs+cx_0PwAUOSw{Omqu6FOmI@|q|*rpI*5-asHdXPkgO z*6|#VjW!OH8r<{!G>@b7ATN{;jv1{T78fy)-9*_1#%TSpSO7tKYbwq2ew1YGIPYuS z8QRS_Rh5GtsIAaMr2|;%8RPqf_|>Mg9on7g3PE^dF}f zZGQ9!9xIzsQ3$CXJRe4>#GCYt(kw)}UmEbh0t+Gy{yLnip#?JKCWhV2Tdacd3t$x% z3@%-3n17G1&xTCHw>8o{Lz?G^TOnP- zTYrGmz72sGJhd?pC&t8_)F#%%R^*sWoG}FZkjiZcPKPf+fI?;)LvRB2P-DxAJu{w} zfUW#maShG=QFB+v2Ch)Ggur^piO1%o4#93IdtB#h$82n3xSu2IfYj!Y4M40pWD^iu zKa%VEk!*E5yHhpKKD~-}3%9P*TwA=1`h!$pT;JQiy?xv7bWT?nSSP<-g9Hj{?El8{$$)0#d;+0wu8Ktx=~0y6JP1?)vd5{J=H9h6R%hZ+o)(K!_z zVjh_T2DzLEaBWoascHvUDbv<<-%xSXZy03I7b&=L2=|30}VN zp7ctres^Hw;sy+iF^beG@AFJU|mpXI{x=WV~#F1m3jK2K8mwK+b& z!mw 1: - channel = ord(data[0]) - data = data[1:] - if data: - if channel in [STDOUT_CHANNEL, STDERR_CHANNEL]: - # keeping all messages in the order they received - # for non-blocking call. - self._all.write(data) - if channel not in self._channels: - self._channels[channel] = data - else: - self._channels[channel] += data - - def run_forever(self, timeout=None): - """Wait till connection is closed or timeout reached. Buffer any input - received during this time.""" - if timeout: - start = time.time() - while self.is_open() and time.time() - start < timeout: - self.update(timeout=(timeout - time.time() + start)) - else: - while self.is_open(): - self.update(timeout=None) - @property - def returncode(self): - """ - The return code, A None value indicates that the process hasn't - terminated yet. - """ - if self.is_open(): - return None - else: - if self._returncode is None: - err = self.read_channel(ERROR_CHANNEL) - err = yaml.safe_load(err) - if err['status'] == "Success": - self._returncode = 0 - else: - self._returncode = int(err['details']['causes'][0]['message']) - return self._returncode - - def close(self, **kwargs): - """ - close websocket connection. - """ - self._connected = False - if self.sock: - self.sock.close(**kwargs) - - -WSResponse = collections.namedtuple('WSResponse', ['data']) - - -class PortForward: - def __init__(self, websocket, ports): - """A websocket client with support for port forwarding. - - Port Forward command sends on 2 channels per port, a read/write - data channel and a read only error channel. Both channels are sent an - initial frame containing the port number that channel is associated with. - """ - - self.websocket = websocket - self.local_ports = {} - for ix, port_number in enumerate(ports): - self.local_ports[port_number] = self._Port(ix, port_number) - # There is a thread run per PortForward instance which performs the translation between the - # raw socket data sent by the python application and the websocket protocol. This thread - # terminates after either side has closed all ports, and after flushing all pending data. - proxy = threading.Thread( - name="Kubernetes port forward proxy: %s" % ', '.join([str(port) for port in ports]), - target=self._proxy - ) - proxy.daemon = True - proxy.start() - - @property - def connected(self): - return self.websocket.connected - - def socket(self, port_number): - if port_number not in self.local_ports: - raise ValueError("Invalid port number") - return self.local_ports[port_number].socket - - def error(self, port_number): - if port_number not in self.local_ports: - raise ValueError("Invalid port number") - return self.local_ports[port_number].error - - def close(self): - for port in self.local_ports.values(): - port.socket.close() - - class _Port: - def __init__(self, ix, port_number): - # The remote port number - self.port_number = port_number - # The websocket channel byte number for this port - self.channel = six.int2byte(ix * 2) - # A socket pair is created to provide a means of translating the data flow - # between the python application and the kubernetes websocket. The self.python - # half of the socket pair is used by the _proxy method to receive and send data - # to the running python application. - s, self.python = socket.socketpair() - # The self.socket half of the pair is used by the python application to send - # and receive data to the eventual pod port. It is wrapped in the _Socket class - # because a socket pair is an AF_UNIX socket, not a AF_INET socket. This allows - # intercepting setting AF_INET socket options that would error against an AF_UNIX - # socket. - self.socket = self._Socket(s) - # Data accumulated from the websocket to be sent to the python application. - self.data = b'' - # All data sent from kubernetes on the port error channel. - self.error = None - - class _Socket: - def __init__(self, socket): - self._socket = socket - - def __getattr__(self, name): - return getattr(self._socket, name) - - def setsockopt(self, level, optname, value): - # The following socket option is not valid with a socket created from socketpair, - # and is set by the http.client.HTTPConnection.connect method. - if level == socket.IPPROTO_TCP and optname == socket.TCP_NODELAY: - return - self._socket.setsockopt(level, optname, value) - - # Proxy all socket data between the python code and the kubernetes websocket. - def _proxy(self): - channel_ports = [] - channel_initialized = [] - local_ports = {} - for port in self.local_ports.values(): - # Setup the data channel for this port number - channel_ports.append(port) - channel_initialized.append(False) - # Setup the error channel for this port number - channel_ports.append(port) - channel_initialized.append(False) - port.python.setblocking(True) - local_ports[port.python] = port - # The data to send on the websocket socket - kubernetes_data = b'' - while True: - rlist = [] # List of sockets to read from - wlist = [] # List of sockets to write to - if self.websocket.connected: - rlist.append(self.websocket) - if kubernetes_data: - wlist.append(self.websocket) - local_all_closed = True - for port in self.local_ports.values(): - if port.python.fileno() != -1: - if self.websocket.connected: - rlist.append(port.python) - if port.data: - wlist.append(port.python) - local_all_closed = False - else: - if port.data: - wlist.append(port.python) - local_all_closed = False - else: - port.python.close() - if local_all_closed and not (self.websocket.connected and kubernetes_data): - self.websocket.close() - return - r, w, _ = select.select(rlist, wlist, []) - for sock in r: - if sock == self.websocket: - pending = True - while pending: - opcode, frame = self.websocket.recv_data_frame(True) - if opcode == ABNF.OPCODE_BINARY: - if not frame.data: - raise RuntimeError("Unexpected frame data size") - channel = six.byte2int(frame.data) - if channel >= len(channel_ports): - raise RuntimeError("Unexpected channel number: %s" % channel) - port = channel_ports[channel] - if channel_initialized[channel]: - if channel % 2: - if port.error is None: - port.error = '' - port.error += frame.data[1:].decode() - port.python.close() - else: - port.data += frame.data[1:] - else: - if len(frame.data) != 3: - raise RuntimeError( - "Unexpected initial channel frame data size" - ) - port_number = six.byte2int(frame.data[1:2]) + (six.byte2int(frame.data[2:3]) * 256) - if port_number != port.port_number: - raise RuntimeError( - "Unexpected port number in initial channel frame: %s" % port_number - ) - channel_initialized[channel] = True - elif opcode not in (ABNF.OPCODE_PING, ABNF.OPCODE_PONG, ABNF.OPCODE_CLOSE): - raise RuntimeError("Unexpected websocket opcode: %s" % opcode) - if not (isinstance(self.websocket.sock, ssl.SSLSocket) and self.websocket.sock.pending()): - pending = False - else: - port = local_ports[sock] - if port.python.fileno() != -1: - data = port.python.recv(1024 * 1024) - if data: - kubernetes_data += ABNF.create_frame( - port.channel + data, - ABNF.OPCODE_BINARY, - ).format() - else: - port.python.close() - for sock in w: - if sock == self.websocket: - sent = self.websocket.sock.send(kubernetes_data) - kubernetes_data = kubernetes_data[sent:] - else: - port = local_ports[sock] - if port.python.fileno() != -1: - sent = port.python.send(port.data) - port.data = port.data[sent:] - - -def get_websocket_url(url, query_params=None): - parsed_url = urlparse(url) - parts = list(parsed_url) - if parsed_url.scheme == 'http': - parts[0] = 'ws' - elif parsed_url.scheme == 'https': - parts[0] = 'wss' - if query_params: - query = [] - for key, value in query_params: - if key == 'command' and isinstance(value, list): - for command in value: - query.append((key, command)) - else: - query.append((key, value)) - if query: - parts[4] = urlencode(query) - return urlunparse(parts) - - -def create_websocket(configuration, url, headers=None): - enableTrace(False) - - # We just need to pass the Authorization, ignore all the other - # http headers we get from the generated code - header = [] - if headers and 'authorization' in headers: - header.append("authorization: %s" % headers['authorization']) - if headers and 'sec-websocket-protocol' in headers: - header.append("sec-websocket-protocol: %s" % - headers['sec-websocket-protocol']) - else: - header.append("sec-websocket-protocol: v4.channel.k8s.io") - - if url.startswith('wss://') and configuration.verify_ssl: - ssl_opts = { - 'cert_reqs': ssl.CERT_REQUIRED, - 'ca_certs': configuration.ssl_ca_cert or certifi.where(), - } - if configuration.assert_hostname is not None: - ssl_opts['check_hostname'] = configuration.assert_hostname - else: - ssl_opts = {'cert_reqs': ssl.CERT_NONE} - - if configuration.cert_file: - ssl_opts['certfile'] = configuration.cert_file - if configuration.key_file: - ssl_opts['keyfile'] = configuration.key_file - if configuration.tls_server_name: - ssl_opts['server_hostname'] = configuration.tls_server_name - - websocket = WebSocket(sslopt=ssl_opts, skip_utf8_validation=False) - connect_opt = { - 'header': header - } - - if configuration.proxy or configuration.proxy_headers: - connect_opt = websocket_proxycare(connect_opt, configuration, url, headers) - - websocket.connect(url, **connect_opt) - return websocket - -def websocket_proxycare(connect_opt, configuration, url, headers): - """ An internal function to be called in api-client when a websocket - create is requested. - """ - if configuration.no_proxy: - connect_opt.update({ 'http_no_proxy': configuration.no_proxy.split(',') }) - - if configuration.proxy: - proxy_url = urlparse(configuration.proxy) - connect_opt.update({'http_proxy_host': proxy_url.hostname, 'http_proxy_port': proxy_url.port}) - if configuration.proxy_headers: - for key,value in configuration.proxy_headers.items(): - if key == 'proxy-authorization' and value.startswith('Basic'): - b64value = value.split()[1] - auth = urlsafe_b64decode(b64value).decode().split(':') - connect_opt.update({'http_proxy_auth': (auth[0], auth[1]) }) - return(connect_opt) - - -def websocket_call(configuration, _method, url, **kwargs): - """An internal function to be called in api-client when a websocket - connection is required. method, url, and kwargs are the parameters of - apiClient.request method.""" - - url = get_websocket_url(url, kwargs.get("query_params")) - headers = kwargs.get("headers") - _request_timeout = kwargs.get("_request_timeout", 60) - _preload_content = kwargs.get("_preload_content", True) - capture_all = kwargs.get("capture_all", True) - - try: - client = WSClient(configuration, url, headers, capture_all) - if not _preload_content: - return client - client.run_forever(timeout=_request_timeout) - return WSResponse('%s' % ''.join(client.read_all())) - except (Exception, KeyboardInterrupt, SystemExit) as e: - raise ApiException(status=0, reason=str(e)) - - -def portforward_call(configuration, _method, url, **kwargs): - """An internal function to be called in api-client when a websocket - connection is required for port forwarding. args and kwargs are the - parameters of apiClient.request method.""" - - query_params = kwargs.get("query_params") - - ports = [] - for param, value in query_params: - if param == 'ports': - for port in value.split(','): - try: - port_number = int(port) - except ValueError: - raise ApiValueError("Invalid port number: %s" % port) - if not (0 < port_number < 65536): - raise ApiValueError("Port number must be between 0 and 65536: %s" % port) - if port_number in ports: - raise ApiValueError("Duplicate port numbers: %s" % port) - ports.append(port_number) - if not ports: - raise ApiValueError("Missing required parameter `ports`") - - url = get_websocket_url(url, query_params) - headers = kwargs.get("headers") - - try: - websocket = create_websocket(configuration, url, headers) - return PortForward(websocket, ports) - except (Exception, KeyboardInterrupt, SystemExit) as e: - raise ApiException(status=0, reason=str(e)) diff --git a/venv/lib/python3.10/site-packages/kubernetes/stream/ws_client_test.py b/venv/lib/python3.10/site-packages/kubernetes/stream/ws_client_test.py deleted file mode 100644 index a7a11f5..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/stream/ws_client_test.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2018 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import unittest - -from .ws_client import get_websocket_url -from .ws_client import websocket_proxycare -from kubernetes.client.configuration import Configuration - -try: - import urllib3 - urllib3.disable_warnings() -except ImportError: - pass - -def dictval(dict, key, default=None): - try: - val = dict[key] - except KeyError: - val = default - return val - -class WSClientTest(unittest.TestCase): - - def test_websocket_client(self): - for url, ws_url in [ - ('http://localhost/api', 'ws://localhost/api'), - ('https://localhost/api', 'wss://localhost/api'), - ('https://domain.com/api', 'wss://domain.com/api'), - ('https://api.domain.com/api', 'wss://api.domain.com/api'), - ('http://api.domain.com', 'ws://api.domain.com'), - ('https://api.domain.com', 'wss://api.domain.com'), - ('http://api.domain.com/', 'ws://api.domain.com/'), - ('https://api.domain.com/', 'wss://api.domain.com/'), - ]: - self.assertEqual(get_websocket_url(url), ws_url) - - def test_websocket_proxycare(self): - for proxy, idpass, no_proxy, expect_host, expect_port, expect_auth, expect_noproxy in [ - ( None, None, None, None, None, None, None ), - ( 'http://proxy.example.com:8080/', None, None, 'proxy.example.com', 8080, None, None ), - ( 'http://proxy.example.com:8080/', 'user:pass', None, 'proxy.example.com', 8080, ('user','pass'), None), - ( 'http://proxy.example.com:8080/', 'user:pass', '', 'proxy.example.com', 8080, ('user','pass'), None), - ( 'http://proxy.example.com:8080/', 'user:pass', '*', 'proxy.example.com', 8080, ('user','pass'), ['*']), - ( 'http://proxy.example.com:8080/', 'user:pass', '.example.com', 'proxy.example.com', 8080, ('user','pass'), ['.example.com']), - ( 'http://proxy.example.com:8080/', 'user:pass', 'localhost,.local,.example.com', 'proxy.example.com', 8080, ('user','pass'), ['localhost','.local','.example.com']), - ]: - # setup input - config = Configuration() - if proxy is not None: - setattr(config, 'proxy', proxy) - if idpass is not None: - setattr(config, 'proxy_headers', urllib3.util.make_headers(proxy_basic_auth=idpass)) - if no_proxy is not None: - setattr(config, 'no_proxy', no_proxy) - # setup done - # test starts - connect_opt = websocket_proxycare( {}, config, None, None) - self.assertEqual( dictval(connect_opt,'http_proxy_host'), expect_host) - self.assertEqual( dictval(connect_opt,'http_proxy_port'), expect_port) - self.assertEqual( dictval(connect_opt,'http_proxy_auth'), expect_auth) - self.assertEqual( dictval(connect_opt,'http_no_proxy'), expect_noproxy) - -if __name__ == '__main__': - unittest.main() diff --git a/venv/lib/python3.10/site-packages/kubernetes/utils/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/utils/__init__.py deleted file mode 100644 index 217d9cc..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/utils/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2018 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import - -from .create_from_yaml import (FailToCreateError, create_from_dict, - create_from_yaml, create_from_directory) -from .quantity import parse_quantity diff --git a/venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 62ab0eb314387a62a617248a9fa60f9aa5554b74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmY+A%}N6?5XZA$?NV&52f-Kc&_f$V4<1B>qDK$vX)htWo3^3JW}Qq5`zpSHue4WB zeFaY@1;GyF$Nc|fm=7}^kBE=Y=yi3O5b_k%E#X2bx zoffH%i&$qxcJNa*(8FTr^X!ex276ygW>J62OKX%v!K7{t;64g|+Mhjhsou>J1V`}% zV4$B?2fd%k=fT++w=le`r4py)a#~YN`z0C4{#MsKA1Hl-CjbIRv z24n$4k0Sr8fZWS30^u?T{FHQKw4iGzD=?KnlyrM%sjYywvRThtQ(L+d&5kNr(ze5m zX>JzRSJX-r^Ojdzz802lT`8au=u?MMS<0AfBr>*WyFS0yrglm^gtOQ%;K}47p2oj! C9d>{K diff --git a/venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/create_from_yaml.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/utils/__pycache__/create_from_yaml.cpython-310.pyc deleted file mode 100644 index abe924ffd8a088f9ba79245fa5e4878dc19199a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8550 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: - :param async_req bool - :param bool include_uninitialized: If true, partially initialized - resources are included in the response. - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications - should not be persisted. An invalid or unrecognized dryRun - directive will result in an error response and no further - processing of the request. - Valid values are: - All: all dry run stages will be processed - - Returns: - The list containing the created kubernetes API objects. - - Raises: - FailToCreateError which holds list of `client.rest.ApiException` - instances for each object that failed to create. - """ - - if not yaml_dir: - raise ValueError( - '`yaml_dir` argument must be provided') - elif not os.path.isdir(yaml_dir): - raise ValueError( - '`yaml_dir` argument must be a path to directory') - - files = [os.path.join(yaml_dir, i) for i in os.listdir(yaml_dir) - if os.path.isfile(os.path.join(yaml_dir, i))] - if not files: - raise ValueError( - '`yaml_dir` contains no files') - - failures = [] - k8s_objects_all = [] - - for file in files: - try: - k8s_objects = create_from_yaml(k8s_client, file, - verbose=verbose, - namespace=namespace, - **kwargs) - k8s_objects_all.append(k8s_objects) - except FailToCreateError as failure: - failures.extend(failure.api_exceptions) - if failures: - raise FailToCreateError(failures) - return k8s_objects_all - - -def create_from_yaml( - k8s_client, - yaml_file=None, - yaml_objects=None, - verbose=False, - namespace="default", - **kwargs): - """ - Perform an action from a yaml file. Pass True for verbose to - print confirmation information. - Input: - yaml_file: string. Contains the path to yaml file. - k8s_client: an ApiClient object, initialized with the client args. - yaml_objects: List[dict]. Optional list of YAML objects; used instead - of reading the `yaml_file`. Default is None. - verbose: If True, print confirmation from the create action. - Default is False. - namespace: string. Contains the namespace to create all - resources inside. The namespace must preexist otherwise - the resource creation will fail. If the API object in - the yaml file already contains a namespace definition - this parameter has no effect. - - Available parameters for creating : - :param async_req bool - :param bool include_uninitialized: If true, partially initialized - resources are included in the response. - :param str pretty: If 'true', then the output is pretty printed. - :param str dry_run: When present, indicates that modifications - should not be persisted. An invalid or unrecognized dryRun - directive will result in an error response and no further - processing of the request. - Valid values are: - All: all dry run stages will be processed - - Returns: - The created kubernetes API objects. - - Raises: - FailToCreateError which holds list of `client.rest.ApiException` - instances for each object that failed to create. - """ - - def create_with(objects): - failures = [] - k8s_objects = [] - for yml_document in objects: - if yml_document is None: - continue - try: - created = create_from_dict(k8s_client, yml_document, verbose, - namespace=namespace, - **kwargs) - k8s_objects.append(created) - except FailToCreateError as failure: - failures.extend(failure.api_exceptions) - if failures: - raise FailToCreateError(failures) - return k8s_objects - - class Loader(yaml.loader.SafeLoader): - yaml_implicit_resolvers = yaml.loader.SafeLoader.yaml_implicit_resolvers.copy() - if "=" in yaml_implicit_resolvers: - yaml_implicit_resolvers.pop("=") - - if yaml_objects: - yml_document_all = yaml_objects - return create_with(yml_document_all) - elif yaml_file: - with open(os.path.abspath(yaml_file)) as f: - yml_document_all = yaml.load_all(f, Loader=Loader) - return create_with(yml_document_all) - else: - raise ValueError( - 'One of `yaml_file` or `yaml_objects` arguments must be provided') - - -def create_from_dict(k8s_client, data, verbose=False, namespace='default', - **kwargs): - """ - Perform an action from a dictionary containing valid kubernetes - API object (i.e. List, Service, etc). - - Input: - k8s_client: an ApiClient object, initialized with the client args. - data: a dictionary holding valid kubernetes objects - verbose: If True, print confirmation from the create action. - Default is False. - namespace: string. Contains the namespace to create all - resources inside. The namespace must preexist otherwise - the resource creation will fail. If the API object in - the yaml file already contains a namespace definition - this parameter has no effect. - - Returns: - The created kubernetes API objects. - - Raises: - FailToCreateError which holds list of `client.rest.ApiException` - instances for each object that failed to create. - """ - # If it is a list type, will need to iterate its items - api_exceptions = [] - k8s_objects = [] - - if "List" in data["kind"]: - # Could be "List" or "Pod/Service/...List" - # This is a list type. iterate within its items - kind = data["kind"].replace("List", "") - for yml_object in data["items"]: - # Mitigate cases when server returns a xxxList object - # See kubernetes-client/python#586 - if kind != "": - yml_object["apiVersion"] = data["apiVersion"] - yml_object["kind"] = kind - try: - created = create_from_yaml_single_item( - k8s_client, yml_object, verbose, namespace=namespace, - **kwargs) - k8s_objects.append(created) - except client.rest.ApiException as api_exception: - api_exceptions.append(api_exception) - else: - # This is a single object. Call the single item method - try: - created = create_from_yaml_single_item( - k8s_client, data, verbose, namespace=namespace, **kwargs) - k8s_objects.append(created) - except client.rest.ApiException as api_exception: - api_exceptions.append(api_exception) - - # In case we have exceptions waiting for us, raise them - if api_exceptions: - raise FailToCreateError(api_exceptions) - - return k8s_objects - - -def create_from_yaml_single_item( - k8s_client, yml_object, verbose=False, **kwargs): - group, _, version = yml_object["apiVersion"].partition("/") - if version == "": - version = group - group = "core" - # Take care for the case e.g. api_type is "apiextensions.k8s.io" - # Only replace the last instance - group = "".join(group.rsplit(".k8s.io", 1)) - # convert group name from DNS subdomain format to - # python class name convention - group = "".join(word.capitalize() for word in group.split('.')) - fcn_to_call = "{0}{1}Api".format(group, version.capitalize()) - k8s_api = getattr(client, fcn_to_call)(k8s_client) - # Replace CamelCased action_type into snake_case - kind = yml_object["kind"] - kind = UPPER_FOLLOWED_BY_LOWER_RE.sub(r'\1_\2', kind) - kind = LOWER_OR_NUM_FOLLOWED_BY_UPPER_RE.sub(r'\1_\2', kind).lower() - # Expect the user to create namespaced objects more often - if hasattr(k8s_api, "create_namespaced_{0}".format(kind)): - # Decide which namespace we are going to put the object in, - # if any - if "namespace" in yml_object["metadata"]: - namespace = yml_object["metadata"]["namespace"] - kwargs['namespace'] = namespace - resp = getattr(k8s_api, "create_namespaced_{0}".format(kind))( - body=yml_object, **kwargs) - else: - kwargs.pop('namespace', None) - resp = getattr(k8s_api, "create_{0}".format(kind))( - body=yml_object, **kwargs) - if verbose: - msg = "{0} created.".format(kind) - if hasattr(resp, 'status'): - msg += " status='{0}'".format(str(resp.status)) - print(msg) - return resp - - -class FailToCreateError(Exception): - """ - An exception class for handling error if an error occurred when - handling a yaml file. - """ - - def __init__(self, api_exceptions): - self.api_exceptions = api_exceptions - - def __str__(self): - msg = "" - for api_exception in self.api_exceptions: - msg += "Error from server ({0}): {1}".format( - api_exception.reason, api_exception.body) - return msg diff --git a/venv/lib/python3.10/site-packages/kubernetes/utils/quantity.py b/venv/lib/python3.10/site-packages/kubernetes/utils/quantity.py deleted file mode 100644 index 68e57d9..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/utils/quantity.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 2019 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from decimal import Decimal, InvalidOperation - - -def parse_quantity(quantity): - """ - Parse kubernetes canonical form quantity like 200Mi to a decimal number. - Supported SI suffixes: - base1024: Ki | Mi | Gi | Ti | Pi | Ei - base1000: n | u | m | "" | k | M | G | T | P | E - - See https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go - - Input: - quantity: string. kubernetes canonical form quantity - - Returns: - Decimal - - Raises: - ValueError on invalid or unknown input - """ - if isinstance(quantity, (int, float, Decimal)): - return Decimal(quantity) - - exponents = {"n": -3, "u": -2, "m": -1, "K": 1, "k": 1, "M": 2, - "G": 3, "T": 4, "P": 5, "E": 6} - - quantity = str(quantity) - number = quantity - suffix = None - if len(quantity) >= 2 and quantity[-1] == "i": - if quantity[-2] in exponents: - number = quantity[:-2] - suffix = quantity[-2:] - elif len(quantity) >= 1 and quantity[-1] in exponents: - number = quantity[:-1] - suffix = quantity[-1:] - - try: - number = Decimal(number) - except InvalidOperation: - raise ValueError("Invalid number format: {}".format(number)) - - if suffix is None: - return number - - if suffix.endswith("i"): - base = 1024 - elif len(suffix) == 1: - base = 1000 - else: - raise ValueError("{} has unknown suffix".format(quantity)) - - # handle SI inconsistency - if suffix == "ki": - raise ValueError("{} has unknown suffix".format(quantity)) - - if suffix[0] not in exponents: - raise ValueError("{} has unknown suffix".format(quantity)) - - exponent = Decimal(exponents[suffix[0]]) - return number * (base ** exponent) diff --git a/venv/lib/python3.10/site-packages/kubernetes/watch/__init__.py b/venv/lib/python3.10/site-packages/kubernetes/watch/__init__.py deleted file mode 100644 index ca9ac06..0000000 --- a/venv/lib/python3.10/site-packages/kubernetes/watch/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from .watch import Watch diff --git a/venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4c1ab8afacf631ef4c65ebc1536d55fe57a0e51d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmd1j<>g`kf?13~X{k&M439w^WB?RnZ~)?B0U(jWkiwY5kjogw$jFew6wIK>{E`tU ztjTzbH9WB-Im1tr=@x4_h*bpAx00cV1xSI3UrG8I`MIh3>7|*;Mfu68B_)~q*%rn6 z#mPm91(|v2x&`?u#rkEbd1d-JnMwKul_eSZdB%E%2KvRBC8@dviOJcC>8Zu~*`-OT qMR}pH&x diff --git a/venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/watch.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/watch/__pycache__/watch.cpython-310.pyc deleted file mode 100644 index ac84cf3b7900f52a22b8528fbf6a91b31f783052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5614 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 GgZ~E=3.6 -Description-Content-Type: text/x-rst -License-File: LICENSE -Provides-Extra: rsa -Requires-Dist: cryptography (>=3.0.0) ; extra == 'rsa' -Provides-Extra: signals -Requires-Dist: blinker (>=1.4.0) ; extra == 'signals' -Provides-Extra: signedtoken -Requires-Dist: cryptography (>=3.0.0) ; extra == 'signedtoken' -Requires-Dist: pyjwt (<3,>=2.0.0) ; extra == 'signedtoken' - -OAuthLib - Python Framework for OAuth1 & OAuth2 -=============================================== - -*A generic, spec-compliant, thorough implementation of the OAuth request-signing -logic for Python 3.6+.* - -.. image:: https://app.travis-ci.com/oauthlib/oauthlib.svg?branch=master - :target: https://app.travis-ci.com/oauthlib/oauthlib - :alt: Travis -.. image:: https://coveralls.io/repos/oauthlib/oauthlib/badge.svg?branch=master - :target: https://coveralls.io/r/oauthlib/oauthlib - :alt: Coveralls -.. image:: https://img.shields.io/pypi/pyversions/oauthlib.svg - :target: https://pypi.org/project/oauthlib/ - :alt: Download from PyPI -.. image:: https://img.shields.io/pypi/l/oauthlib.svg - :target: https://pypi.org/project/oauthlib/ - :alt: License -.. image:: https://app.fossa.io/api/projects/git%2Bgithub.com%2Foauthlib%2Foauthlib.svg?type=shield - :target: https://app.fossa.io/projects/git%2Bgithub.com%2Foauthlib%2Foauthlib?ref=badge_shield - :alt: FOSSA Status -.. image:: https://img.shields.io/readthedocs/oauthlib.svg - :target: https://oauthlib.readthedocs.io/en/latest/index.html - :alt: Read the Docs -.. image:: https://badges.gitter.im/oauthlib/oauthlib.svg - :target: https://gitter.im/oauthlib/Lobby - :alt: Chat on Gitter - - -.. image:: https://raw.githubusercontent.com/oauthlib/oauthlib/8d71b161fd145d11c40d55c9ab66ac134a303253/docs/logo/oauthlib-banner-700x192.png - :target: https://github.com/oauthlib/oauthlib/ - :alt: OAuth + Python = OAuthlib Python Framework - - -OAuth often seems complicated and difficult-to-implement. There are several -prominent libraries for handling OAuth requests, but they all suffer from one or -both of the following: - -1. They predate the `OAuth 1.0 spec`_, AKA RFC 5849. -2. They predate the `OAuth 2.0 spec`_, AKA RFC 6749. -3. They assume the usage of a specific HTTP request library. - -.. _`OAuth 1.0 spec`: https://tools.ietf.org/html/rfc5849 -.. _`OAuth 2.0 spec`: https://tools.ietf.org/html/rfc6749 - -OAuthLib is a framework which implements the logic of OAuth1 or OAuth2 without -assuming a specific HTTP request object or web framework. Use it to graft OAuth -client support onto your favorite HTTP library, or provide support onto your -favourite web framework. If you're a maintainer of such a library, write a thin -veneer on top of OAuthLib and get OAuth support for very little effort. - - -Documentation --------------- - -Full documentation is available on `Read the Docs`_. All contributions are very -welcome! The documentation is still quite sparse, please open an issue for what -you'd like to know, or discuss it in our `Gitter community`_, or even better, send a -pull request! - -.. _`Gitter community`: https://gitter.im/oauthlib/Lobby -.. _`Read the Docs`: https://oauthlib.readthedocs.io/en/latest/index.html - -Interested in making OAuth requests? ------------------------------------- - -Then you might be more interested in using `requests`_ which has OAuthLib -powered OAuth support provided by the `requests-oauthlib`_ library. - -.. _`requests`: https://github.com/requests/requests -.. _`requests-oauthlib`: https://github.com/requests/requests-oauthlib - -Which web frameworks are supported? ------------------------------------ - -The following packages provide OAuth support using OAuthLib. - -- For Django there is `django-oauth-toolkit`_, which includes `Django REST framework`_ support. -- For Flask there is `flask-oauthlib`_ and `Flask-Dance`_. -- For Pyramid there is `pyramid-oauthlib`_. -- For Bottle there is `bottle-oauthlib`_. - -If you have written an OAuthLib package that supports your favorite framework, -please open a Pull Request, updating the documentation. - -.. _`django-oauth-toolkit`: https://github.com/evonove/django-oauth-toolkit -.. _`flask-oauthlib`: https://github.com/lepture/flask-oauthlib -.. _`Django REST framework`: http://django-rest-framework.org -.. _`Flask-Dance`: https://github.com/singingwolfboy/flask-dance -.. _`pyramid-oauthlib`: https://github.com/tilgovi/pyramid-oauthlib -.. _`bottle-oauthlib`: https://github.com/thomsonreuters/bottle-oauthlib - -Using OAuthLib? Please get in touch! ------------------------------------- -Patching OAuth support onto an http request framework? Creating an OAuth -provider extension for a web framework? Simply using OAuthLib to Get Things Done -or to learn? - -No matter which we'd love to hear from you in our `Gitter community`_ or if you have -anything in particular you would like to have, change or comment on don't -hesitate for a second to send a pull request or open an issue. We might be quite -busy and therefore slow to reply but we love feedback! - -Chances are you have run into something annoying that you wish there was -documentation for, if you wish to gain eternal fame and glory, and a drink if we -have the pleasure to run into each other, please send a docs pull request =) - -.. _`Gitter community`: https://gitter.im/oauthlib/Lobby - -License -------- - -OAuthLib is yours to use and abuse according to the terms of the BSD license. -Check the LICENSE file for full details. - -Credits -------- - -OAuthLib has been started and maintained several years by Idan Gazit and other -amazing `AUTHORS`_. Thanks to their wonderful work, the open-source `community`_ -creation has been possible and the project can stay active and reactive to users -requests. - - -.. _`AUTHORS`: https://github.com/oauthlib/oauthlib/blob/master/AUTHORS -.. _`community`: https://github.com/oauthlib/ - -Changelog ---------- - -*OAuthLib is in active development, with the core of both OAuth1 and OAuth2 -completed, for providers as well as clients.* See `supported features`_ for -details. - -.. _`supported features`: https://oauthlib.readthedocs.io/en/latest/feature_matrix.html - -For a full changelog see ``CHANGELOG.rst``. diff --git a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/RECORD b/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/RECORD deleted file mode 100644 index 3b2200a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/RECORD +++ /dev/null @@ -1,142 +0,0 @@ -oauthlib-3.2.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -oauthlib-3.2.2.dist-info/LICENSE,sha256=PR4S2KxSwLbBSK9tKR9yQAuHIO0WwKxKiYaLbRSxyTk,1530 -oauthlib-3.2.2.dist-info/METADATA,sha256=zEM0Qha7hvi0hlwugHjMoKISoAJG8X-SeMDK3CECSG4,7454 -oauthlib-3.2.2.dist-info/RECORD,, -oauthlib-3.2.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 -oauthlib-3.2.2.dist-info/top_level.txt,sha256=gz2py0fFs1AhG1O7KpHPcIXOgXOwdIiCaSnmLkiR12Q,9 -oauthlib/__init__.py,sha256=XeBZVT7i8Hx3nnEIb0MaNWrFQmxS3sc4SvGkOKhnht4,686 -oauthlib/__pycache__/__init__.cpython-310.pyc,, -oauthlib/__pycache__/common.cpython-310.pyc,, -oauthlib/__pycache__/signals.cpython-310.pyc,, -oauthlib/__pycache__/uri_validate.cpython-310.pyc,, -oauthlib/common.py,sha256=VL5A-cXOkRbjMu7E79OxDymV7tLOt0Cm2y1xchEw_Ig,13377 -oauthlib/oauth1/__init__.py,sha256=47hEQ7s_FZXLyUt6XVE-DPC8vUMVsJl7_-HCkNM2IlM,822 -oauthlib/oauth1/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__init__.py,sha256=-5sJHDG3JRZQRJYlCjkj3CP2jZgqEg0OY5pVIxE4mxE,16744 -oauthlib/oauth1/rfc5849/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__pycache__/errors.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__pycache__/parameters.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__pycache__/request_validator.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__pycache__/signature.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/__pycache__/utils.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__init__.py,sha256=SeIECziJ-Sv_NCGnowG3P9UnX_VdFNldRqRywEaJvxY,327 -oauthlib/oauth1/rfc5849/endpoints/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/access_token.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/authorization.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/base.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/pre_configured.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/request_token.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/resource.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/__pycache__/signature_only.cpython-310.pyc,, -oauthlib/oauth1/rfc5849/endpoints/access_token.py,sha256=CRgLV5DqDiwVvbo8MiHySbTEKrxETJV29-VGu-2kQ7Y,9347 -oauthlib/oauth1/rfc5849/endpoints/authorization.py,sha256=zbU7TzO6nB6853UIqtTkhxUV-JTHOdOc-CvdQsIQKWk,6724 -oauthlib/oauth1/rfc5849/endpoints/base.py,sha256=W0IxgaFM7sNFpsis-mo3Ky59wbLl2PNlYjIeqUCvyak,11637 -oauthlib/oauth1/rfc5849/endpoints/pre_configured.py,sha256=Ie5oBUq_JTsXQdvfWhcMRjhH3OOxS_mRHbKBQ9TpsGg,543 -oauthlib/oauth1/rfc5849/endpoints/request_token.py,sha256=1eljiIUPkObutaNDD6J7Kx5Ens1bknqHIEnnEkQGF7k,9291 -oauthlib/oauth1/rfc5849/endpoints/resource.py,sha256=F6f2AecZ1fTdrC7DOERrIFUp2YQ5MLq8-a6VbQLM2ds,7374 -oauthlib/oauth1/rfc5849/endpoints/signature_only.py,sha256=MX5zV66v4-wrR4cu7OmOd_GF3L8ysM60HmEiHtRR0l8,3327 -oauthlib/oauth1/rfc5849/errors.py,sha256=WPvKVjPlgkCYp6TXvcwC8VETkhsZBzphKCkTJKDPNfM,2474 -oauthlib/oauth1/rfc5849/parameters.py,sha256=Abnxpix_Yy7P3A3vbkrV2bkFxtnR5TRTTKdOu9MKydo,4802 -oauthlib/oauth1/rfc5849/request_validator.py,sha256=7Tt1uyt4LAWhKCMrQc9GR_EShZyckPigDXkxDNvxiBE,30987 -oauthlib/oauth1/rfc5849/signature.py,sha256=WY0ArNQg-9HBU2Hl4cpfFfW0Y3WUsW7XRqgL4w5jLmE,32076 -oauthlib/oauth1/rfc5849/utils.py,sha256=IapG_jM6iMe4e0DYWWds1jp-wce2Lf_cuhFrtCP_2ls,2613 -oauthlib/oauth2/__init__.py,sha256=uPkdHF2NEpIM6Ybz-jPPEKU5e56eHptaOz2NPwppyys,1597 -oauthlib/oauth2/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__init__.py,sha256=sJcxfdG6HTloXzhkG8-PTJTVQWoCeNtnw6ODNCJNw58,404 -oauthlib/oauth2/rfc6749/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__pycache__/errors.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__pycache__/parameters.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__pycache__/request_validator.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__pycache__/tokens.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/__pycache__/utils.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__init__.py,sha256=TuYtiErfo0_Ej0816tIv5rBsrwA9BjYz3tu_ZM0X364,504 -oauthlib/oauth2/rfc6749/clients/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/backend_application.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/base.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/legacy_application.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/mobile_application.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/service_application.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/__pycache__/web_application.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/clients/backend_application.py,sha256=2kEw6T5Ii2TMSpvHlvi697_eMV9fXjkjqc8DY5sG310,3224 -oauthlib/oauth2/rfc6749/clients/base.py,sha256=6ZW6ewf4SdS2BBGc-rZunfsGYalOqeucToNN8j8f7lc,26652 -oauthlib/oauth2/rfc6749/clients/legacy_application.py,sha256=9V-PGgToIoQcvmG14g9WiQjsDgWs7OnvLpZfmiA2Z24,4032 -oauthlib/oauth2/rfc6749/clients/mobile_application.py,sha256=eos0OLJmy-e5FFRHD-sjzDjMu7DlQxqayslZfbBtTNE,8878 -oauthlib/oauth2/rfc6749/clients/service_application.py,sha256=wksSW2I-sth3ykXps_CssI0m7GC20lOh5jIl_mIjdQU,7812 -oauthlib/oauth2/rfc6749/clients/web_application.py,sha256=RMk0_wzV-36TdMtcoeZ0I-lSB5sHWDpyWFTg5JFYVFM,12088 -oauthlib/oauth2/rfc6749/endpoints/__init__.py,sha256=RL_txhULl35A74dbvlJ7nvqwp3GMCSCpg_4TvjoO-Xk,553 -oauthlib/oauth2/rfc6749/endpoints/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/authorization.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/base.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/introspect.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/metadata.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/pre_configured.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/resource.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/revocation.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/__pycache__/token.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/endpoints/authorization.py,sha256=2N2Cb_TQtpUPcqDIclsJnZERtaMKmH9uSgGoMZLFnUI,4584 -oauthlib/oauth2/rfc6749/endpoints/base.py,sha256=fUhCGaftD5bm5PstA6L2CqUNb9kHDpUj4_BsvLRbi4w,4130 -oauthlib/oauth2/rfc6749/endpoints/introspect.py,sha256=zMkbHNJUC0Ww4aqs-Px_Yil_bNPSDDcMlZVA4C1nOb0,4947 -oauthlib/oauth2/rfc6749/endpoints/metadata.py,sha256=NOqXwoD34n94pC3IczakrpXMrZSPDruLMUl2_2MjW6Q,10530 -oauthlib/oauth2/rfc6749/endpoints/pre_configured.py,sha256=ChhORao78XGGlnikJsLb6d_FZvKaLGBUM-te-84NeJ8,11954 -oauthlib/oauth2/rfc6749/endpoints/resource.py,sha256=vpXoovgpmByY-IuW0PDccS5IJGFoFiLVjLLUpGFmXX4,3248 -oauthlib/oauth2/rfc6749/endpoints/revocation.py,sha256=68Ukipz7UOdeBCmO5KTRo0vwbUFd8tTG22Ck0hFlumw,5212 -oauthlib/oauth2/rfc6749/endpoints/token.py,sha256=iJDlaSkVR8U6s1_T9fiyVnLgfCgOWsq9PFDcmzL74H4,4595 -oauthlib/oauth2/rfc6749/errors.py,sha256=5EE4Qs3ru34d33wqaFo-WGOofLLYK1jTov9sqG92CW0,12947 -oauthlib/oauth2/rfc6749/grant_types/__init__.py,sha256=im_XwEWmw3dhmzcdfyhkN38xZopBhL3cRShmmCtqQs0,368 -oauthlib/oauth2/rfc6749/grant_types/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/authorization_code.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/base.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/client_credentials.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/implicit.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/refresh_token.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/__pycache__/resource_owner_password_credentials.cpython-310.pyc,, -oauthlib/oauth2/rfc6749/grant_types/authorization_code.py,sha256=RPXH4qdy0byAFjgsEvD0iiOxSrGkbEj7hkweeT8pZRQ,26102 -oauthlib/oauth2/rfc6749/grant_types/base.py,sha256=x5Q6Fm9iScvbkiXU6J_dUzxpXJq-qb_N-TNPYuIiObU,10969 -oauthlib/oauth2/rfc6749/grant_types/client_credentials.py,sha256=Wr0CpWDVmHrIfOBPTYp9RxnISTfYdp5SjSaRAu77vUY,5079 -oauthlib/oauth2/rfc6749/grant_types/implicit.py,sha256=hYAEYOwToxo3eNpGRC9SyJue93tu37jZVL7MYiaErDs,16852 -oauthlib/oauth2/rfc6749/grant_types/refresh_token.py,sha256=3oYMvW0gVhIrjs17RP_SFyZrTNi6hjVrEh45Z1GcIA0,5891 -oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py,sha256=9FsDbrSNNylWKkEvgdafJDzlNncTRCOhIZODo-f4ZIM,8516 -oauthlib/oauth2/rfc6749/parameters.py,sha256=BUGD3N_H9pBRctUYEDCD7dwncqjcHv7hW1ZcHMMQJb4,19016 -oauthlib/oauth2/rfc6749/request_validator.py,sha256=BZj1OURgQh_sxG5agbSpLTeo_IVxvYUqqDKkoAGqCbM,28851 -oauthlib/oauth2/rfc6749/tokens.py,sha256=RMcY7F4fCAoxZbyUUDN9el_B_XRp4ELrY3pj5awA1Do,11116 -oauthlib/oauth2/rfc6749/utils.py,sha256=EKlU_U-FcYkdd8PvXo1irtHTqBXF7gKqdFKBadteZ64,2207 -oauthlib/oauth2/rfc8628/__init__.py,sha256=yfG2QHuDxrp7_9HNKPEeXYXA_qBVZqiRrhI7q2cG4NM,232 -oauthlib/oauth2/rfc8628/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc8628/clients/__init__.py,sha256=indCdGycy9cekvLOBxYbCwtyezEVhl3uKZzoShml-aY,201 -oauthlib/oauth2/rfc8628/clients/__pycache__/__init__.cpython-310.pyc,, -oauthlib/oauth2/rfc8628/clients/__pycache__/device.cpython-310.pyc,, -oauthlib/oauth2/rfc8628/clients/device.py,sha256=0QgAfokzgzh6Jx5Nbnkwi2F67N7HruEAc_ZRCWr-JH0,4052 -oauthlib/openid/__init__.py,sha256=qZQCKCdQt40myte_nxSYrWvzf1VVADqRl8om0-t6LzE,162 -oauthlib/openid/__pycache__/__init__.cpython-310.pyc,, -oauthlib/openid/connect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -oauthlib/openid/connect/__pycache__/__init__.cpython-310.pyc,, -oauthlib/openid/connect/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -oauthlib/openid/connect/core/__pycache__/__init__.cpython-310.pyc,, -oauthlib/openid/connect/core/__pycache__/exceptions.cpython-310.pyc,, -oauthlib/openid/connect/core/__pycache__/request_validator.cpython-310.pyc,, -oauthlib/openid/connect/core/__pycache__/tokens.cpython-310.pyc,, -oauthlib/openid/connect/core/endpoints/__init__.py,sha256=nQ6mGniUaM9X1ENG0tZlPgWgbLdlFESWGK-5_e8mp5Y,229 -oauthlib/openid/connect/core/endpoints/__pycache__/__init__.cpython-310.pyc,, -oauthlib/openid/connect/core/endpoints/__pycache__/pre_configured.cpython-310.pyc,, -oauthlib/openid/connect/core/endpoints/__pycache__/userinfo.cpython-310.pyc,, -oauthlib/openid/connect/core/endpoints/pre_configured.py,sha256=p4Bq4HHUTvCBYXlTHr3PXktABKjHFGC3yBmwxWifzKc,5426 -oauthlib/openid/connect/core/endpoints/userinfo.py,sha256=kc1Q3DN8xByk3Qe_S0LAlmJR2MkXnCnNFqLqVr8y3zU,4096 -oauthlib/openid/connect/core/exceptions.py,sha256=uMMjE7VMc16jyL7TIhpbCx48_MsHD2C_atoMIemBKVA,4790 -oauthlib/openid/connect/core/grant_types/__init__.py,sha256=geSZh6OFlupoC2tg9Bqqsnd31nu1-EheWNobzu86ZqU,426 -oauthlib/openid/connect/core/grant_types/__pycache__/__init__.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/authorization_code.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/base.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/dispatchers.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/hybrid.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/implicit.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/__pycache__/refresh_token.cpython-310.pyc,, -oauthlib/openid/connect/core/grant_types/authorization_code.py,sha256=WOlS5RlSjIk2VNNmC5O4svxfTeUJiXpL3o5Mqn5EULk,1441 -oauthlib/openid/connect/core/grant_types/base.py,sha256=o0Nn_k6X0VB6m6iKpvlm-QMbtWcYzGagX6Uq2XaBS20,15385 -oauthlib/openid/connect/core/grant_types/dispatchers.py,sha256=RsIHHV8ne8fvlU1bL0jIUNb2pb2DbtJ1RYGV2_Z5GVQ,3978 -oauthlib/openid/connect/core/grant_types/hybrid.py,sha256=PHWBazxe3qpJq02rpU93jaK7URxI_r1zl0Ee4ibcaPA,2742 -oauthlib/openid/connect/core/grant_types/implicit.py,sha256=UICxnDNoePZfTUbL5QCBWA231o8XIQEnxocSrPp9gzw,1971 -oauthlib/openid/connect/core/grant_types/refresh_token.py,sha256=8X0i1EHLgBIrlqP10rwJ5lXWO3f8iupmfn2E6DlLmnw,1035 -oauthlib/openid/connect/core/request_validator.py,sha256=-lo1BnAhMWVkCj2Qhpn22LbV6CDmx4Nh4tCOntCg9tQ,13767 -oauthlib/openid/connect/core/tokens.py,sha256=j8WPb5T8SbmprFUJdM2DjafNU_fa1eohkjUeaJagn0s,1605 -oauthlib/signals.py,sha256=_PKDXWqKW6X3IbQUxGqW4eJ5Yi3p8jdOqXPAKfI956E,1489 -oauthlib/uri_validate.py,sha256=1LwAANg5vBjaypKgbDF_qrt_u7rJPlfg1hTrD9oanEU,6112 diff --git a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/WHEEL b/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/WHEEL deleted file mode 100644 index becc9a6..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.37.1) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/top_level.txt deleted file mode 100644 index b5f3f0e..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib-3.2.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -oauthlib diff --git a/venv/lib/python3.10/site-packages/oauthlib/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/__init__.py deleted file mode 100644 index d9a5e38..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -""" - oauthlib - ~~~~~~~~ - - A generic, spec-compliant, thorough implementation of the OAuth - request-signing logic. - - :copyright: (c) 2019 by The OAuthlib Community - :license: BSD, see LICENSE for details. -""" -import logging -from logging import NullHandler - -__author__ = 'The OAuthlib Community' -__version__ = '3.2.2' - -logging.getLogger('oauthlib').addHandler(NullHandler()) - -_DEBUG = False - -def set_debug(debug_val): - """Set value of debug flag - - :param debug_val: Value to set. Must be a bool value. - """ - global _DEBUG - _DEBUG = debug_val - -def get_debug(): - """Get debug mode value. - - :return: `True` if debug mode is on, `False` otherwise - """ - return _DEBUG diff --git a/venv/lib/python3.10/site-packages/oauthlib/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index c82bd4c1c18356d0bf575c9a278b8c1fa736bd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 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 eHy<}2HFt~^&7wImmNoN*yjdtrj6Xc_|34%E diff --git a/venv/lib/python3.10/site-packages/oauthlib/__pycache__/signals.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/__pycache__/signals.cpython-310.pyc deleted file mode 100644 index 03115b3d26f0c8a1dea055410bcbd614773ec2ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1935 zcmZuyPjA~c6elIwmK`T;f@1%G0le&Bps_aWG89D-pj(GtQlJ?yR6B6ANZXtx(IcrC zHga0}C3f46`830>y6&{EupPGdB*$^OF?cT``S||+-m^J891vJP)7R7AJB0j!oBb8T z<_ySv4@{DjNSe~kKn60*gCa~rN@SGMZ%O%nL{zl?gcAJwn#hjqz9q7I9i$=bdNPJx z47<)7QqmPs;WbISs{2b%_J5^mEC&~4bg=ntz+k;Bmbofa=^b-=R*KxQiEv6XQ?f~} z%Z0K`PnozBIv0~%J!Zzwm0fA4n)g$Y!xN`-P?4|UZMItykTOI&8fQkS#SrI9YVROMxo>q)X)`?)DUAAj~~;Z~sx8Jait3nibdB?RzS0xL>s5~ z7)IV?2QOU&EG9>^ImuviZ=tC(AonG(U8*t3eHqFK(jB$PO*<`S0i&IWq&=V*s1Gy% zI!K4#btEKuG_Yt*%AFcRZ$QJJV*n}^#`1emwN zu2B>+0Tpx}%BJKPT5$NfD!ne$S6GixXuDvtjv#}s?k-mN{~aXP9gYS45dA|(W4bxM z7Zu)SaIsq`g&{T}AsBb5Y*deenuc6M@TRd9k^33E6=>^nXt9m$ zA+jT650GIU?IU0~UP@W_GEj@ zx6hR1-lW6*-Chhhx@^4t!pzu>I3*O0vt5;Yc!=X-@a+4QQ9izTgCt9U>!eg$JsM1Q#0iw V5_JMPq%qJDJ&A(9yB{4z{{m6f>s|l= diff --git a/venv/lib/python3.10/site-packages/oauthlib/__pycache__/uri_validate.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/__pycache__/uri_validate.cpython-310.pyc deleted file mode 100644 index 4697fd2c535408ed62876fc26db8500c57362258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3781 zcmbtX%~RV(6qjw;7#Rmh$OrjU0wxy5cK9riv_R6(Fw@WsNjn{ZqY>J*tzt{=N~WMB zy|n*CZ|yNNy>)u%p{Mq*(5W*$_1s%}>3h=pg9Il{Dn`$5-~ROWeeJ%*PNyXSp6?=C zMJ2Q=>#wVL3~7qaiZPxnXjWb0^6u&YdD7oEsshId__z z;oKQ=mUCyxInJFUqnsNh=Q($tT;SXVa*=Zv$tBKRBA3<6~-3s9BLJm5Iry;nogiLYcWwiCkuOU3RNfHtbprra-iIdvjejEqQDG z&g|0Sf|R8P25q>3)(RjKOrU{SYf zI$$56a$c^wZo^qF7AvOX7Al~nxmz&odU1Moaei(|`U@*^(@Smd9L(Ox16eA0BQTho zhQa*W&cOmQ@2!=*;SOXizpm%YC2v&DWaLaXbV+f#STCPlS%z`oH_SW*J_tp?@8m(S zQvjmD`?aiiV+db{K@n$Gkc=VOMp6Q@3ZM-HT}8<_kO_FN;~YmMHkH8gg zz7vA*gB}4v`&v;^CcWQ7a64khx`z3{0qkAlNx`TK!^Q=d#X5@B?=iaPxX1)WT zFTJv=B6+KsETM*G!zOVdc#!b76hK*QhqZPizqDM+Z7+|Pl#ZnIWO{1unRjy^^tNg+ zhs*Rx?vdO)g>qAJUJgnugl|09U(gAGf(SF6$%16P={6Y!;}s}FZ?T8sH&hKI^ya&L z85rr!w+z&3rc0S#w&@EQ21G^h`@>hw*pGuw8}Q9SyfgbcvaiM z1mP@h+J?_2QJkt zkDK%|R0hi?+Ft`svy2{4Z>$^F1LOWqChx8gk#s5E=IW* z#IhZuN`pl7f-u{5YrNQA-aULFZpe{Y*jJ<6+AuY6a_~bFqWBX|1@XnG=}ot4Gc$0e zZF|eRUMFT7*xSkAoaMOJxzUX~&KH~qe}4P_Mx&v7E^= zTGL&)BxnsCH&BoV=w+Ggmrcr`pkS||r_k9l*)r34@k2G=e~fY{)mF{mplVXqOA~B? z<5Zzo8TYPnb#SA>5(Qmt%NQ+#2rvupvZOL@z@4f6ARmYK4!nO40da-zBX0C5{C*Mp zA@)#s9@$hxKgy^duj{T+^2ofa!i)4*E~Txg1W zi%!uonBIW9O}=3hr?^k8{bJ4BEjA9Jw5{2~^o^nehhn~=8+&?%Iz=0c9uc5g+t+I* z(Op_-9Qp~<(LnYy8jDx&p$JREPfw3n3}%@KL=hRf$r3>PG`OHa7%78$0%b{@=tqK1 zgk%75L*a5A=r1^b0ttrdZI>O;cfm;*pj-IK)}_i%gcS|{s<&>Yls zhlfU?4s;*#YWm25&WEj2fe%|JoGJz2;2eOpp%eJ=U}yWu)^1k&+q+gxw>KRg2kJn3 z2*tztFfW5hhLK<)24%r8Oh{DoW`__j=pMf(C=N{U63VqE+unnEgpQbZ-iq&Oh{3r+dnMgRZ+ diff --git a/venv/lib/python3.10/site-packages/oauthlib/common.py b/venv/lib/python3.10/site-packages/oauthlib/common.py deleted file mode 100644 index 395e75e..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/common.py +++ /dev/null @@ -1,432 +0,0 @@ -""" -oauthlib.common -~~~~~~~~~~~~~~ - -This module provides data structures and utilities common -to all implementations of OAuth. -""" -import collections -import datetime -import logging -import re -import time -import urllib.parse as urlparse -from urllib.parse import ( - quote as _quote, unquote as _unquote, urlencode as _urlencode, -) - -from . import get_debug - -try: - from secrets import SystemRandom, randbits -except ImportError: - from random import SystemRandom, getrandbits as randbits - -UNICODE_ASCII_CHARACTER_SET = ('abcdefghijklmnopqrstuvwxyz' - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' - '0123456789') - -CLIENT_ID_CHARACTER_SET = (r' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN' - 'OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}') - -SANITIZE_PATTERN = re.compile(r'([^&;]*(?:password|token)[^=]*=)[^&;]+', re.IGNORECASE) -INVALID_HEX_PATTERN = re.compile(r'%[^0-9A-Fa-f]|%[0-9A-Fa-f][^0-9A-Fa-f]') - -always_safe = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' - 'abcdefghijklmnopqrstuvwxyz' - '0123456789' '_.-') - -log = logging.getLogger('oauthlib') - - -# 'safe' must be bytes (Python 2.6 requires bytes, other versions allow either) -def quote(s, safe=b'/'): - s = s.encode('utf-8') if isinstance(s, str) else s - s = _quote(s, safe) - # PY3 always returns unicode. PY2 may return either, depending on whether - # it had to modify the string. - if isinstance(s, bytes): - s = s.decode('utf-8') - return s - - -def unquote(s): - s = _unquote(s) - # PY3 always returns unicode. PY2 seems to always return what you give it, - # which differs from quote's behavior. Just to be safe, make sure it is - # unicode before we return. - if isinstance(s, bytes): - s = s.decode('utf-8') - return s - - -def urlencode(params): - utf8_params = encode_params_utf8(params) - urlencoded = _urlencode(utf8_params) - if isinstance(urlencoded, str): - return urlencoded - else: - return urlencoded.decode("utf-8") - - -def encode_params_utf8(params): - """Ensures that all parameters in a list of 2-element tuples are encoded to - bytestrings using UTF-8 - """ - encoded = [] - for k, v in params: - encoded.append(( - k.encode('utf-8') if isinstance(k, str) else k, - v.encode('utf-8') if isinstance(v, str) else v)) - return encoded - - -def decode_params_utf8(params): - """Ensures that all parameters in a list of 2-element tuples are decoded to - unicode using UTF-8. - """ - decoded = [] - for k, v in params: - decoded.append(( - k.decode('utf-8') if isinstance(k, bytes) else k, - v.decode('utf-8') if isinstance(v, bytes) else v)) - return decoded - - -urlencoded = set(always_safe) | set('=&;:%+~,*@!()/?\'$') - - -def urldecode(query): - """Decode a query string in x-www-form-urlencoded format into a sequence - of two-element tuples. - - Unlike urlparse.parse_qsl(..., strict_parsing=True) urldecode will enforce - correct formatting of the query string by validation. If validation fails - a ValueError will be raised. urllib.parse_qsl will only raise errors if - any of name-value pairs omits the equals sign. - """ - # Check if query contains invalid characters - if query and not set(query) <= urlencoded: - error = ("Error trying to decode a non urlencoded string. " - "Found invalid characters: %s " - "in the string: '%s'. " - "Please ensure the request/response body is " - "x-www-form-urlencoded.") - raise ValueError(error % (set(query) - urlencoded, query)) - - # Check for correctly hex encoded values using a regular expression - # All encoded values begin with % followed by two hex characters - # correct = %00, %A0, %0A, %FF - # invalid = %G0, %5H, %PO - if INVALID_HEX_PATTERN.search(query): - raise ValueError('Invalid hex encoding in query string.') - - # We want to allow queries such as "c2" whereas urlparse.parse_qsl - # with the strict_parsing flag will not. - params = urlparse.parse_qsl(query, keep_blank_values=True) - - # unicode all the things - return decode_params_utf8(params) - - -def extract_params(raw): - """Extract parameters and return them as a list of 2-tuples. - - Will successfully extract parameters from urlencoded query strings, - dicts, or lists of 2-tuples. Empty strings/dicts/lists will return an - empty list of parameters. Any other input will result in a return - value of None. - """ - if isinstance(raw, (bytes, str)): - try: - params = urldecode(raw) - except ValueError: - params = None - elif hasattr(raw, '__iter__'): - try: - dict(raw) - except ValueError: - params = None - except TypeError: - params = None - else: - params = list(raw.items() if isinstance(raw, dict) else raw) - params = decode_params_utf8(params) - else: - params = None - - return params - - -def generate_nonce(): - """Generate pseudorandom nonce that is unlikely to repeat. - - Per `section 3.3`_ of the OAuth 1 RFC 5849 spec. - Per `section 3.2.1`_ of the MAC Access Authentication spec. - - A random 64-bit number is appended to the epoch timestamp for both - randomness and to decrease the likelihood of collisions. - - .. _`section 3.2.1`: https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01#section-3.2.1 - .. _`section 3.3`: https://tools.ietf.org/html/rfc5849#section-3.3 - """ - return str(str(randbits(64)) + generate_timestamp()) - - -def generate_timestamp(): - """Get seconds since epoch (UTC). - - Per `section 3.3`_ of the OAuth 1 RFC 5849 spec. - Per `section 3.2.1`_ of the MAC Access Authentication spec. - - .. _`section 3.2.1`: https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01#section-3.2.1 - .. _`section 3.3`: https://tools.ietf.org/html/rfc5849#section-3.3 - """ - return str(int(time.time())) - - -def generate_token(length=30, chars=UNICODE_ASCII_CHARACTER_SET): - """Generates a non-guessable OAuth token - - OAuth (1 and 2) does not specify the format of tokens except that they - should be strings of random characters. Tokens should not be guessable - and entropy when generating the random characters is important. Which is - why SystemRandom is used instead of the default random.choice method. - """ - rand = SystemRandom() - return ''.join(rand.choice(chars) for x in range(length)) - - -def generate_signed_token(private_pem, request): - import jwt - - now = datetime.datetime.utcnow() - - claims = { - 'scope': request.scope, - 'exp': now + datetime.timedelta(seconds=request.expires_in) - } - - claims.update(request.claims) - - token = jwt.encode(claims, private_pem, 'RS256') - token = to_unicode(token, "UTF-8") - - return token - - -def verify_signed_token(public_pem, token): - import jwt - - return jwt.decode(token, public_pem, algorithms=['RS256']) - - -def generate_client_id(length=30, chars=CLIENT_ID_CHARACTER_SET): - """Generates an OAuth client_id - - OAuth 2 specify the format of client_id in - https://tools.ietf.org/html/rfc6749#appendix-A. - """ - return generate_token(length, chars) - - -def add_params_to_qs(query, params): - """Extend a query with a list of two-tuples.""" - if isinstance(params, dict): - params = params.items() - queryparams = urlparse.parse_qsl(query, keep_blank_values=True) - queryparams.extend(params) - return urlencode(queryparams) - - -def add_params_to_uri(uri, params, fragment=False): - """Add a list of two-tuples to the uri query components.""" - sch, net, path, par, query, fra = urlparse.urlparse(uri) - if fragment: - fra = add_params_to_qs(fra, params) - else: - query = add_params_to_qs(query, params) - return urlparse.urlunparse((sch, net, path, par, query, fra)) - - -def safe_string_equals(a, b): - """ Near-constant time string comparison. - - Used in order to avoid timing attacks on sensitive information such - as secret keys during request verification (`rootLabs`_). - - .. _`rootLabs`: http://rdist.root.org/2010/01/07/timing-independent-array-comparison/ - - """ - if len(a) != len(b): - return False - - result = 0 - for x, y in zip(a, b): - result |= ord(x) ^ ord(y) - return result == 0 - - -def to_unicode(data, encoding='UTF-8'): - """Convert a number of different types of objects to unicode.""" - if isinstance(data, str): - return data - - if isinstance(data, bytes): - return str(data, encoding=encoding) - - if hasattr(data, '__iter__'): - try: - dict(data) - except TypeError: - pass - except ValueError: - # Assume it's a one dimensional data structure - return (to_unicode(i, encoding) for i in data) - else: - # We support 2.6 which lacks dict comprehensions - if hasattr(data, 'items'): - data = data.items() - return {to_unicode(k, encoding): to_unicode(v, encoding) for k, v in data} - - return data - - -class CaseInsensitiveDict(dict): - - """Basic case insensitive dict with strings only keys.""" - - proxy = {} - - def __init__(self, data): - self.proxy = {k.lower(): k for k in data} - for k in data: - self[k] = data[k] - - def __contains__(self, k): - return k.lower() in self.proxy - - def __delitem__(self, k): - key = self.proxy[k.lower()] - super().__delitem__(key) - del self.proxy[k.lower()] - - def __getitem__(self, k): - key = self.proxy[k.lower()] - return super().__getitem__(key) - - def get(self, k, default=None): - return self[k] if k in self else default - - def __setitem__(self, k, v): - super().__setitem__(k, v) - self.proxy[k.lower()] = k - - def update(self, *args, **kwargs): - super().update(*args, **kwargs) - for k in dict(*args, **kwargs): - self.proxy[k.lower()] = k - - -class Request: - - """A malleable representation of a signable HTTP request. - - Body argument may contain any data, but parameters will only be decoded if - they are one of: - - * urlencoded query string - * dict - * list of 2-tuples - - Anything else will be treated as raw body data to be passed through - unmolested. - """ - - def __init__(self, uri, http_method='GET', body=None, headers=None, - encoding='utf-8'): - # Convert to unicode using encoding if given, else assume unicode - encode = lambda x: to_unicode(x, encoding) if encoding else x - - self.uri = encode(uri) - self.http_method = encode(http_method) - self.headers = CaseInsensitiveDict(encode(headers or {})) - self.body = encode(body) - self.decoded_body = extract_params(self.body) - self.oauth_params = [] - self.validator_log = {} - - self._params = { - "access_token": None, - "client": None, - "client_id": None, - "client_secret": None, - "code": None, - "code_challenge": None, - "code_challenge_method": None, - "code_verifier": None, - "extra_credentials": None, - "grant_type": None, - "redirect_uri": None, - "refresh_token": None, - "request_token": None, - "response_type": None, - "scope": None, - "scopes": None, - "state": None, - "token": None, - "user": None, - "token_type_hint": None, - - # OpenID Connect - "response_mode": None, - "nonce": None, - "display": None, - "prompt": None, - "claims": None, - "max_age": None, - "ui_locales": None, - "id_token_hint": None, - "login_hint": None, - "acr_values": None - } - self._params.update(dict(urldecode(self.uri_query))) - self._params.update(dict(self.decoded_body or [])) - - def __getattr__(self, name): - if name in self._params: - return self._params[name] - else: - raise AttributeError(name) - - def __repr__(self): - if not get_debug(): - return "" - body = self.body - headers = self.headers.copy() - if body: - body = SANITIZE_PATTERN.sub('\1', str(body)) - if 'Authorization' in headers: - headers['Authorization'] = '' - return ''.format( - self.uri, self.http_method, headers, body) - - @property - def uri_query(self): - return urlparse.urlparse(self.uri).query - - @property - def uri_query_params(self): - if not self.uri_query: - return [] - return urlparse.parse_qsl(self.uri_query, keep_blank_values=True, - strict_parsing=True) - - @property - def duplicate_params(self): - seen_keys = collections.defaultdict(int) - all_keys = (p[0] - for p in (self.decoded_body or []) + self.uri_query_params) - for k in all_keys: - seen_keys[k] += 1 - return [k for k, c in seen_keys.items() if c > 1] diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/__init__.py deleted file mode 100644 index 9caf12a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -""" -oauthlib.oauth1 -~~~~~~~~~~~~~~ - -This module is a wrapper for the most recent implementation of OAuth 1.0 Client -and Server classes. -""" -from .rfc5849 import ( - SIGNATURE_HMAC, SIGNATURE_HMAC_SHA1, SIGNATURE_HMAC_SHA256, - SIGNATURE_HMAC_SHA512, SIGNATURE_PLAINTEXT, SIGNATURE_RSA, - SIGNATURE_RSA_SHA1, SIGNATURE_RSA_SHA256, SIGNATURE_RSA_SHA512, - SIGNATURE_TYPE_AUTH_HEADER, SIGNATURE_TYPE_BODY, SIGNATURE_TYPE_QUERY, - Client, -) -from .rfc5849.endpoints import ( - AccessTokenEndpoint, AuthorizationEndpoint, RequestTokenEndpoint, - ResourceEndpoint, SignatureOnlyEndpoint, WebApplicationServer, -) -from .rfc5849.errors import ( - InsecureTransportError, InvalidClientError, InvalidRequestError, - InvalidSignatureMethodError, OAuth1Error, -) -from .rfc5849.request_validator import RequestValidator diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 9433c8278a3d524f3d8c51ede0e8a956e125d06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1200 zcmZvb%}(1u5XT+z;oy*vPauI-zUDwoXhBp$Rb7ahNadr6Y0F+LV{eibUa!0Bq=G|l zz4Zn92z@1Ad+ICn)LlD-M06$pH2a_N%t~`rJWNW`Z?RciD}3{YKkNsG zBLT@tI4f=fuYeVt1WB9%DVzproB; z<02^H5-8y^DB}vK;3}x%8mLA7l)Hg9!6x1UTeuGDxB(h?8*E3uw7Y|!foI-X%f z|6L*0BpAEsrWF}&<=fIy6l08-iitCEp~@{w{Yow0hg2OBss>}oeJoHZw4oQM2>UL? z+_C~hJe3U93!SG|+pRtI#6{epSe~N}Af56Iwrep4Sxfno;GJpa!@{8V?p!yn`W>@- zrk{kB<-IxR>g}-hRNOx}{GWW#-d{{{`Cjjx8=cQan14*sALwCuX&YCmKG8&xr>dyY zc#Ji!FFU4wWpvGMM?dZK7wbp9w-=|^i)kY9!&Rq$9cJPVH8WvFw{6InL2jYf@f@EZ zF9>U*lZ2xCsJC;u+J|2zkOj-Z#Xe+YLTxyYs}0b|vw{hQ7oK}Jm#d%Pjqdv{vZJ)| zmuaTMjh@G#&7%!!dCVs?=uk>%SnhdK%SBFn)>x~|wAo2waeF4t%br1gd?$A1qTiw& zZJLRYpEkO~N0HeI2t98;4`tJIh;5ocrbGMS=;bRa28r?slW0mHEsznA1+oIG0%9C# zPGC(SFHqnBrCFvHoHdovb>S=ulmyBG6@e-TD9m3FmuIvlJR1U=0$T!g4p4sxr14G6 zs7c}~w88zqB)TJF1^!yvm|&=lCdj75hCzU|+asnin-3Q9M!P<7m^OvpRO4f*`FFf+ z-iuayPh%*6yS`=LS|iA`hrx}Fwq}~hLxE|w{JSuF98c_PF<4CWBPAWns=Sjbrv3qB C>13Ax diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__init__.py deleted file mode 100644 index c559251..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__init__.py +++ /dev/null @@ -1,365 +0,0 @@ -""" -oauthlib.oauth1.rfc5849 -~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for signing and checking OAuth 1.0 RFC 5849 requests. - -It supports all three standard signature methods defined in RFC 5849: - -- HMAC-SHA1 -- RSA-SHA1 -- PLAINTEXT - -It also supports signature methods that are not defined in RFC 5849. These are -based on the standard ones but replace SHA-1 with the more secure SHA-256: - -- HMAC-SHA256 -- RSA-SHA256 - -""" -import base64 -import hashlib -import logging -import urllib.parse as urlparse - -from oauthlib.common import ( - Request, generate_nonce, generate_timestamp, to_unicode, urlencode, -) - -from . import parameters, signature - -log = logging.getLogger(__name__) - -# Available signature methods -# -# Note: SIGNATURE_HMAC and SIGNATURE_RSA are kept for backward compatibility -# with previous versions of this library, when it the only HMAC-based and -# RSA-based signature methods were HMAC-SHA1 and RSA-SHA1. But now that it -# supports other hashing algorithms besides SHA1, explicitly identifying which -# hashing algorithm is being used is recommended. -# -# Note: if additional values are defined here, don't forget to update the -# imports in "../__init__.py" so they are available outside this module. - -SIGNATURE_HMAC_SHA1 = "HMAC-SHA1" -SIGNATURE_HMAC_SHA256 = "HMAC-SHA256" -SIGNATURE_HMAC_SHA512 = "HMAC-SHA512" -SIGNATURE_HMAC = SIGNATURE_HMAC_SHA1 # deprecated variable for HMAC-SHA1 - -SIGNATURE_RSA_SHA1 = "RSA-SHA1" -SIGNATURE_RSA_SHA256 = "RSA-SHA256" -SIGNATURE_RSA_SHA512 = "RSA-SHA512" -SIGNATURE_RSA = SIGNATURE_RSA_SHA1 # deprecated variable for RSA-SHA1 - -SIGNATURE_PLAINTEXT = "PLAINTEXT" - -SIGNATURE_METHODS = ( - SIGNATURE_HMAC_SHA1, - SIGNATURE_HMAC_SHA256, - SIGNATURE_HMAC_SHA512, - SIGNATURE_RSA_SHA1, - SIGNATURE_RSA_SHA256, - SIGNATURE_RSA_SHA512, - SIGNATURE_PLAINTEXT -) - -SIGNATURE_TYPE_AUTH_HEADER = 'AUTH_HEADER' -SIGNATURE_TYPE_QUERY = 'QUERY' -SIGNATURE_TYPE_BODY = 'BODY' - -CONTENT_TYPE_FORM_URLENCODED = 'application/x-www-form-urlencoded' - - -class Client: - - """A client used to sign OAuth 1.0 RFC 5849 requests.""" - SIGNATURE_METHODS = { - SIGNATURE_HMAC_SHA1: signature.sign_hmac_sha1_with_client, - SIGNATURE_HMAC_SHA256: signature.sign_hmac_sha256_with_client, - SIGNATURE_HMAC_SHA512: signature.sign_hmac_sha512_with_client, - SIGNATURE_RSA_SHA1: signature.sign_rsa_sha1_with_client, - SIGNATURE_RSA_SHA256: signature.sign_rsa_sha256_with_client, - SIGNATURE_RSA_SHA512: signature.sign_rsa_sha512_with_client, - SIGNATURE_PLAINTEXT: signature.sign_plaintext_with_client - } - - @classmethod - def register_signature_method(cls, method_name, method_callback): - cls.SIGNATURE_METHODS[method_name] = method_callback - - def __init__(self, client_key, - client_secret=None, - resource_owner_key=None, - resource_owner_secret=None, - callback_uri=None, - signature_method=SIGNATURE_HMAC_SHA1, - signature_type=SIGNATURE_TYPE_AUTH_HEADER, - rsa_key=None, verifier=None, realm=None, - encoding='utf-8', decoding=None, - nonce=None, timestamp=None): - """Create an OAuth 1 client. - - :param client_key: Client key (consumer key), mandatory. - :param resource_owner_key: Resource owner key (oauth token). - :param resource_owner_secret: Resource owner secret (oauth token secret). - :param callback_uri: Callback used when obtaining request token. - :param signature_method: SIGNATURE_HMAC, SIGNATURE_RSA or SIGNATURE_PLAINTEXT. - :param signature_type: SIGNATURE_TYPE_AUTH_HEADER (default), - SIGNATURE_TYPE_QUERY or SIGNATURE_TYPE_BODY - depending on where you want to embed the oauth - credentials. - :param rsa_key: RSA key used with SIGNATURE_RSA. - :param verifier: Verifier used when obtaining an access token. - :param realm: Realm (scope) to which access is being requested. - :param encoding: If you provide non-unicode input you may use this - to have oauthlib automatically convert. - :param decoding: If you wish that the returned uri, headers and body - from sign be encoded back from unicode, then set - decoding to your preferred encoding, i.e. utf-8. - :param nonce: Use this nonce instead of generating one. (Mainly for testing) - :param timestamp: Use this timestamp instead of using current. (Mainly for testing) - """ - # Convert to unicode using encoding if given, else assume unicode - encode = lambda x: to_unicode(x, encoding) if encoding else x - - self.client_key = encode(client_key) - self.client_secret = encode(client_secret) - self.resource_owner_key = encode(resource_owner_key) - self.resource_owner_secret = encode(resource_owner_secret) - self.signature_method = encode(signature_method) - self.signature_type = encode(signature_type) - self.callback_uri = encode(callback_uri) - self.rsa_key = encode(rsa_key) - self.verifier = encode(verifier) - self.realm = encode(realm) - self.encoding = encode(encoding) - self.decoding = encode(decoding) - self.nonce = encode(nonce) - self.timestamp = encode(timestamp) - - def __repr__(self): - attrs = vars(self).copy() - attrs['client_secret'] = '****' if attrs['client_secret'] else None - attrs['rsa_key'] = '****' if attrs['rsa_key'] else None - attrs[ - 'resource_owner_secret'] = '****' if attrs['resource_owner_secret'] else None - attribute_str = ', '.join('{}={}'.format(k, v) for k, v in attrs.items()) - return '<{} {}>'.format(self.__class__.__name__, attribute_str) - - def get_oauth_signature(self, request): - """Get an OAuth signature to be used in signing a request - - To satisfy `section 3.4.1.2`_ item 2, if the request argument's - headers dict attribute contains a Host item, its value will - replace any netloc part of the request argument's uri attribute - value. - - .. _`section 3.4.1.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.2 - """ - if self.signature_method == SIGNATURE_PLAINTEXT: - # fast-path - return signature.sign_plaintext(self.client_secret, - self.resource_owner_secret) - - uri, headers, body = self._render(request) - - collected_params = signature.collect_parameters( - uri_query=urlparse.urlparse(uri).query, - body=body, - headers=headers) - log.debug("Collected params: {}".format(collected_params)) - - normalized_params = signature.normalize_parameters(collected_params) - normalized_uri = signature.base_string_uri(uri, headers.get('Host', None)) - log.debug("Normalized params: {}".format(normalized_params)) - log.debug("Normalized URI: {}".format(normalized_uri)) - - base_string = signature.signature_base_string(request.http_method, - normalized_uri, normalized_params) - - log.debug("Signing: signature base string: {}".format(base_string)) - - if self.signature_method not in self.SIGNATURE_METHODS: - raise ValueError('Invalid signature method.') - - sig = self.SIGNATURE_METHODS[self.signature_method](base_string, self) - - log.debug("Signature: {}".format(sig)) - return sig - - def get_oauth_params(self, request): - """Get the basic OAuth parameters to be used in generating a signature. - """ - nonce = (generate_nonce() - if self.nonce is None else self.nonce) - timestamp = (generate_timestamp() - if self.timestamp is None else self.timestamp) - params = [ - ('oauth_nonce', nonce), - ('oauth_timestamp', timestamp), - ('oauth_version', '1.0'), - ('oauth_signature_method', self.signature_method), - ('oauth_consumer_key', self.client_key), - ] - if self.resource_owner_key: - params.append(('oauth_token', self.resource_owner_key)) - if self.callback_uri: - params.append(('oauth_callback', self.callback_uri)) - if self.verifier: - params.append(('oauth_verifier', self.verifier)) - - # providing body hash for requests other than x-www-form-urlencoded - # as described in https://tools.ietf.org/html/draft-eaton-oauth-bodyhash-00#section-4.1.1 - # 4.1.1. When to include the body hash - # * [...] MUST NOT include an oauth_body_hash parameter on requests with form-encoded request bodies - # * [...] SHOULD include the oauth_body_hash parameter on all other requests. - # Note that SHA-1 is vulnerable. The spec acknowledges that in https://tools.ietf.org/html/draft-eaton-oauth-bodyhash-00#section-6.2 - # At this time, no further effort has been made to replace SHA-1 for the OAuth Request Body Hash extension. - content_type = request.headers.get('Content-Type', None) - content_type_eligible = content_type and content_type.find('application/x-www-form-urlencoded') < 0 - if request.body is not None and content_type_eligible: - params.append(('oauth_body_hash', base64.b64encode(hashlib.sha1(request.body.encode('utf-8')).digest()).decode('utf-8'))) - - return params - - def _render(self, request, formencode=False, realm=None): - """Render a signed request according to signature type - - Returns a 3-tuple containing the request URI, headers, and body. - - If the formencode argument is True and the body contains parameters, it - is escaped and returned as a valid formencoded string. - """ - # TODO what if there are body params on a header-type auth? - # TODO what if there are query params on a body-type auth? - - uri, headers, body = request.uri, request.headers, request.body - - # TODO: right now these prepare_* methods are very narrow in scope--they - # only affect their little thing. In some cases (for example, with - # header auth) it might be advantageous to allow these methods to touch - # other parts of the request, like the headers—so the prepare_headers - # method could also set the Content-Type header to x-www-form-urlencoded - # like the spec requires. This would be a fundamental change though, and - # I'm not sure how I feel about it. - if self.signature_type == SIGNATURE_TYPE_AUTH_HEADER: - headers = parameters.prepare_headers( - request.oauth_params, request.headers, realm=realm) - elif self.signature_type == SIGNATURE_TYPE_BODY and request.decoded_body is not None: - body = parameters.prepare_form_encoded_body( - request.oauth_params, request.decoded_body) - if formencode: - body = urlencode(body) - headers['Content-Type'] = 'application/x-www-form-urlencoded' - elif self.signature_type == SIGNATURE_TYPE_QUERY: - uri = parameters.prepare_request_uri_query( - request.oauth_params, request.uri) - else: - raise ValueError('Unknown signature type specified.') - - return uri, headers, body - - def sign(self, uri, http_method='GET', body=None, headers=None, realm=None): - """Sign a request - - Signs an HTTP request with the specified parts. - - Returns a 3-tuple of the signed request's URI, headers, and body. - Note that http_method is not returned as it is unaffected by the OAuth - signing process. Also worth noting is that duplicate parameters - will be included in the signature, regardless of where they are - specified (query, body). - - The body argument may be a dict, a list of 2-tuples, or a formencoded - string. The Content-Type header must be 'application/x-www-form-urlencoded' - if it is present. - - If the body argument is not one of the above, it will be returned - verbatim as it is unaffected by the OAuth signing process. Attempting to - sign a request with non-formencoded data using the OAuth body signature - type is invalid and will raise an exception. - - If the body does contain parameters, it will be returned as a properly- - formatted formencoded string. - - Body may not be included if the http_method is either GET or HEAD as - this changes the semantic meaning of the request. - - All string data MUST be unicode or be encoded with the same encoding - scheme supplied to the Client constructor, default utf-8. This includes - strings inside body dicts, for example. - """ - # normalize request data - request = Request(uri, http_method, body, headers, - encoding=self.encoding) - - # sanity check - content_type = request.headers.get('Content-Type', None) - multipart = content_type and content_type.startswith('multipart/') - should_have_params = content_type == CONTENT_TYPE_FORM_URLENCODED - has_params = request.decoded_body is not None - # 3.4.1.3.1. Parameter Sources - # [Parameters are collected from the HTTP request entity-body, but only - # if [...]: - # * The entity-body is single-part. - if multipart and has_params: - raise ValueError( - "Headers indicate a multipart body but body contains parameters.") - # * The entity-body follows the encoding requirements of the - # "application/x-www-form-urlencoded" content-type as defined by - # [W3C.REC-html40-19980424]. - elif should_have_params and not has_params: - raise ValueError( - "Headers indicate a formencoded body but body was not decodable.") - # * The HTTP request entity-header includes the "Content-Type" - # header field set to "application/x-www-form-urlencoded". - elif not should_have_params and has_params: - raise ValueError( - "Body contains parameters but Content-Type header was {} " - "instead of {}".format(content_type or "not set", - CONTENT_TYPE_FORM_URLENCODED)) - - # 3.5.2. Form-Encoded Body - # Protocol parameters can be transmitted in the HTTP request entity- - # body, but only if the following REQUIRED conditions are met: - # o The entity-body is single-part. - # o The entity-body follows the encoding requirements of the - # "application/x-www-form-urlencoded" content-type as defined by - # [W3C.REC-html40-19980424]. - # o The HTTP request entity-header includes the "Content-Type" header - # field set to "application/x-www-form-urlencoded". - elif self.signature_type == SIGNATURE_TYPE_BODY and not ( - should_have_params and has_params and not multipart): - raise ValueError( - 'Body signatures may only be used with form-urlencoded content') - - # We amend https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1 - # with the clause that parameters from body should only be included - # in non GET or HEAD requests. Extracting the request body parameters - # and including them in the signature base string would give semantic - # meaning to the body, which it should not have according to the - # HTTP 1.1 spec. - elif http_method.upper() in ('GET', 'HEAD') and has_params: - raise ValueError('GET/HEAD requests should not include body.') - - # generate the basic OAuth parameters - request.oauth_params = self.get_oauth_params(request) - - # generate the signature - request.oauth_params.append( - ('oauth_signature', self.get_oauth_signature(request))) - - # render the signed request and return it - uri, headers, body = self._render(request, formencode=True, - realm=(realm or self.realm)) - - if self.decoding: - log.debug('Encoding URI, headers and body to %s.', self.decoding) - uri = uri.encode(self.decoding) - body = body.encode(self.decoding) if body else body - new_headers = {} - for k, v in headers.items(): - new_headers[k.encode(self.decoding)] = v.encode(self.decoding) - headers = new_headers - return uri, headers, body diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 6f93982211256d50dd38c08204d4ae11c135384e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10491 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/errors.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/errors.cpython-310.pyc deleted file mode 100644 index 7e7ae178d3b3bdd25e789c01db81a59b129308fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3249 zcmb7G&2JPp6t`z*zb2ayzNw(drKRmkWS2k@P$5K`rZjC?DiV6wsv1qk-t55a%wT&$ z5;naAiEFRD!7)AbU+Dia*Pb|YO?lDA;4VE0{`z z?{LuxB9LL!0)tB8ND0L{AlwT>_@e94RDdVl^yjscN0%~J>}}y zO=XZ(QyGfLkGb%XX}lrY*wlA02-2p2xW#F^z^%4jEmSG5y&xURZC-p{Z3E7{{G7B) z0ubia=VY6HXgqc@g5Sz3ez;iO2Fuu!0DFy1sKb` z00!9JpCH&_gT{sOWsv9~j=sdDIo3^kUNj?x$Gw$Mu(_rA#YOh>!zDBMg=w*_^HA|1 zS{=z5${T(G>;Q#&AqygiP|ri^Ql146Ur(t(<-yH!;800itcfsAgakn>jW{HThI9et zCN=VG&|Ocn*!NQ@1#cWG>nATv2N{EDb;11Xj$v?tnG6vc)ZKfyw9H!fmk*T|M1GiZ z!Tc^{l@Grt7N=STuw;@}=tF;9zjArz$}DTL^($9ru6>1*YhTY?UuZa^Um!sT5qbDv zk%7=i2b~Rc+j}=gPsIw@y(-w#08Z5y-Xme7u&jWEySVMf!yLYW;dwyVF7POJzo-Kv z%)GrC8jS4)eV?2`5WwAi;QO&j9jpfkDBv)|9*B;RaA?IoL24t?-ufj|OLR9?qW}UT z|2t6Y{}CO?K`kIYb8LR;!8dpywD2*-*&5~;lqX*VYf!B^GVU4cb5zFyEX5N@Mh!yl z4+<vJ@(84jJlrgQ{%otxo^8FQtW~dM6Jr^hmGaY-6-_c{HdfB8s8TpFS;cjO zDA2B(6|mk-pw+2zvEtQBnXN?Fkrk*gatendFl6O{Sy{O!l!Bz%p;^^+{SZ#9>+X=Z ztIclQ6V25$@MY`^t%K&{8>$Iq#7iJMXOft!=9-Asns8+_lMUUCqpOYC%S{z%F_U=y zV-TvE!%HQf%r*y?O4E3u8p(#71ar_Ng~ruRPE(ss(;6*V4&6L4Rzw>^Cw&VThYjag zLFb{X8VnlhC{#_lZ7q=<+NxU;S+c5r8tXI(g@To7Sjn+Ci8C{tLatH};f*l^bA`Xv z=;pC;6Y^~zO8KZE8ajw>7wy^&JoGmh zoC*O$aph1$OWN;8>pN& zPu^VP)KFu7IlM>VXQ1NykwTl(}bz$8X=7DFD n(*)9hWXzT*>L3@h%B}oF-Nx)SHP|N8<>|uo)#>82eZu}1GifMC diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/parameters.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/parameters.cpython-310.pyc deleted file mode 100644 index bfb351608f472103c734520fc8e4285c61972c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3323 zcmb_fOLN@D5ys%PSa3=t~C@CpRvZR!4lu{6gncW46 z$7*Iki8MClD(UKTDmUtwAK{CC2ChE&FZh!546qhS(N^NhurNCV%yjp3fBp3^o1eE8 zX#YeHhTpxTDBp|8$)>~PPw=qE&|$?>Fv4n#64g@^&C`&WYq6dfo{^ZI33DAAaU-!j z3n|3fYvK#IfvuP51@dg%#P& z^c9e9{{RkBI%;XlH%EQwyuddZEFJW}(t9)(Z7~rD*;}nKrRrG~ZXIHfWeD=8la5i5-Pq z%wglIQp`b|%;0xm;H69VDS?v^=}_U%j7CR+^!1nom{9l9CEI~^pU_ibaC@%F_N-~ zM+c+>m=RXr%BVx02gxKRTU*sD@%ofiTQ%M&3F2hCeY0BL{#XhSt3{K@_W{Z*PYCt* z$>DZ;_44NWF22&+T-zItpZ5FbZsFNJNw?bp?rpB_?ct5VU_Yk$#<^=*G)e=WQ{q>t zvfaM@>CW|)hqrfnzr23C{p{YK@7%kx)Bk)ux%KSED7tar?LK<=>0g%nx9)$rJh*Z0 zejX)+aq!M|yEoYA4SN06)pHl7SsIe<_S*UeMCUSD+k_s&AI#T67{h$y^0_+?fFdBj zL4mv4wyOx7O=dvc|D4WlPliW|nt|r6LIkwrwxh;Z)9vcSDah8zoD33y#g@p5{yT8f0ETq8%l73|Z+}=GP=|LAN zM0aus=Sv4}Z?y|4NmeF7xF3uN>&|LOHR#Q_y8D_}+{s~iVN%i8%m}D`3i|_e)^Bya zg>1t{Eu*FCri%1`>kU&Czm~3RHnNb8=zFjzM~n;36SM^N>%=iCw11KTk=0v* z6xU2rzYtY2XI!vo404!|&|l#>@D-~m>6byxRKfzF3?Er=X zhyrTp=pQGGHq@?U<)*xWVCRzzAN~>`>YLMvg8hHOfCNFOI!Q;ZyrS=dHD`Tsah9=y z7yatygnh9xfn&fPE&K*;E1b*!nMMDfhO;a zlou*wuF3U6Ewn-}3~`AX!nZe__<%gkp~g9XeQ?M5EGP75o%mlS(%@GlQk?}IgNo== zab1+apyKjQ1sXb5VptpE4b#?@|^B}tZ61`GR3 zMHWMEei+4~ELCYDS+_cxh_lpn!dg*9Xq~au{|16u6(+b{R~D^B6$ssEA?v2~UaR#V Djv1eE diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/request_validator.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/request_validator.cpython-310.pyc deleted file mode 100644 index 6e11f31b17a917387fc3d05db1011692e656ae08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32785 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/signature.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/signature.cpython-310.pyc deleted file mode 100644 index 73f076611fee152c725f6e7c73cf7d64bafdf174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17813 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/utils.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index bab390d2093ab1d1ca087c36fd4acb132163f4fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2835 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/base.cpython-310.pyc deleted file mode 100644 index 9e25620f92fd67b951eff50af4c2903e47edf190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 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 Obt60@kA^W#{{901g}6Te diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/request_token.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/request_token.cpython-310.pyc deleted file mode 100644 index 6609b7fff7fba48df58a9053f5fa70f924db7036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6172 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 A_y7O^ diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/signature_only.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/signature_only.cpython-310.pyc deleted file mode 100644 index 66a0f53db08fc5c93ecb6e7ebb8e43a813a7f367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2327 zcmb6b+iuiGbjJ5}HX$j{meQhm0coY+CA5`jgb;xyPzeQ;grd5tEXOn6b>ho1V<+8} zgDSyK^r2Gn*thm~{Msjep;AT9*xqGF^2M0wiqL?Z%b}?0{7AuMBsu)q78nKq>u8tAIrv@|6uxmX))TGucL@lPjRNW3$ zc2Tc0`P0t)A|J-lzEcBh4iAH`Z+-QR!%{lRqBIwdhz6;j7o2%n8jtN4|8v>)-Y^m* z$!HNX0+64QC>g~pVQKE?QI?V{B>9jLDJV(@B+dp=Ad!zZKsU1H+#ow!_ergm{TfV1 z+piTkd$=+f=NT8TadYk7^99>%H4o&=`K7|;E^KiH4u-&O$WJPOCs5U{lNYHeBVLZ?z6 zZ0>CbI%qImGUjsMhb``bB@??ur>MlGQmUnPrk&`|PZwL? zX?%>%FhfZvst-;h=N z^IS`GV4hl~e$at!!(ITsnh1eMm)5cx`dyF-FBhAaXUd6Lnxc@ngQZgUI-t=xsnLm5 zn($_s8n;m?`7TrQHp*83YlX^7e9|d9;8clK%flC9xtGR!^Xf>vgOAD2%&WOaU|G(5#4kM)XS{L1X+?~sk77gk!1S^Y+kF0 zv-xwtMs-gJ{9-W7$?-4(ZZrsw{_ayDKesuXRwy-OpQ)c{8&;AoXg~UAxiTJ7nXkGkZ|!jbn7m z_KSgge#YYMYqv{_BpG`R#$9f;nwjk`&Q$QEU8*0)J-gBbi^ECSp65>VB?oI5_1I0KFq*g{Sw3uy{0y!58V_iX+JU@H>>JpeyfsLpN(DokH4M_bhy tu>28xg>ZfbcP_cqv~zM~2)PtiS+^TK@5nJO;GYlDuw{0YF1X}^`Y%QUt8M@Q diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/access_token.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/access_token.py deleted file mode 100644 index 13665db..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/access_token.py +++ /dev/null @@ -1,215 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.access_token -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of the access token provider logic of -OAuth 1.0 RFC 5849. It validates the correctness of access token requests, -creates and persists tokens as well as create the proper response to be -returned to the client. -""" -import logging - -from oauthlib.common import urlencode - -from .. import errors -from .base import BaseEndpoint - -log = logging.getLogger(__name__) - - -class AccessTokenEndpoint(BaseEndpoint): - - """An endpoint responsible for providing OAuth 1 access tokens. - - Typical use is to instantiate with a request validator and invoke the - ``create_access_token_response`` from a view function. The tuple returned - has all information necessary (body, status, headers) to quickly form - and return a proper response. See :doc:`/oauth1/validator` for details on which - validator methods to implement for this endpoint. - """ - - def create_access_token(self, request, credentials): - """Create and save a new access token. - - Similar to OAuth 2, indication of granted scopes will be included as a - space separated list in ``oauth_authorized_realms``. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The token as an urlencoded string. - """ - request.realms = self.request_validator.get_realms( - request.resource_owner_key, request) - token = { - 'oauth_token': self.token_generator(), - 'oauth_token_secret': self.token_generator(), - # Backport the authorized scopes indication used in OAuth2 - 'oauth_authorized_realms': ' '.join(request.realms) - } - token.update(credentials) - self.request_validator.save_access_token(token, request) - return urlencode(token.items()) - - def create_access_token_response(self, uri, http_method='GET', body=None, - headers=None, credentials=None): - """Create an access token response, with a new request token if valid. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :param credentials: A list of extra credentials to include in the token. - :returns: A tuple of 3 elements. - 1. A dict of headers to set on the response. - 2. The response body as a string. - 3. The response status code as an integer. - - An example of a valid request:: - - >>> from your_validator import your_validator - >>> from oauthlib.oauth1 import AccessTokenEndpoint - >>> endpoint = AccessTokenEndpoint(your_validator) - >>> h, b, s = endpoint.create_access_token_response( - ... 'https://your.provider/access_token?foo=bar', - ... headers={ - ... 'Authorization': 'OAuth oauth_token=234lsdkf....' - ... }, - ... credentials={ - ... 'my_specific': 'argument', - ... }) - >>> h - {'Content-Type': 'application/x-www-form-urlencoded'} - >>> b - 'oauth_token=lsdkfol23w54jlksdef&oauth_token_secret=qwe089234lkjsdf&oauth_authorized_realms=movies+pics&my_specific=argument' - >>> s - 200 - - An response to invalid request would have a different body and status:: - - >>> b - 'error=invalid_request&description=missing+resource+owner+key' - >>> s - 400 - - The same goes for an an unauthorized request: - - >>> b - '' - >>> s - 401 - """ - resp_headers = {'Content-Type': 'application/x-www-form-urlencoded'} - try: - request = self._create_request(uri, http_method, body, headers) - valid, processed_request = self.validate_access_token_request( - request) - if valid: - token = self.create_access_token(request, credentials or {}) - self.request_validator.invalidate_request_token( - request.client_key, - request.resource_owner_key, - request) - return resp_headers, token, 200 - else: - return {}, None, 401 - except errors.OAuth1Error as e: - return resp_headers, e.urlencoded, e.status_code - - def validate_access_token_request(self, request): - """Validate an access token request. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :raises: OAuth1Error if the request is invalid. - :returns: A tuple of 2 elements. - 1. The validation result (True or False). - 2. The request object. - """ - self._check_transport_security(request) - self._check_mandatory_parameters(request) - - if not request.resource_owner_key: - raise errors.InvalidRequestError( - description='Missing resource owner.') - - if not self.request_validator.check_request_token( - request.resource_owner_key): - raise errors.InvalidRequestError( - description='Invalid resource owner key format.') - - if not request.verifier: - raise errors.InvalidRequestError( - description='Missing verifier.') - - if not self.request_validator.check_verifier(request.verifier): - raise errors.InvalidRequestError( - description='Invalid verifier format.') - - if not self.request_validator.validate_timestamp_and_nonce( - request.client_key, request.timestamp, request.nonce, request, - request_token=request.resource_owner_key): - return False, request - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid client credentials. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy client is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable client enumeration - valid_client = self.request_validator.validate_client_key( - request.client_key, request) - if not valid_client: - request.client_key = self.request_validator.dummy_client - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid or expired token. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy token is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable resource owner enumeration - valid_resource_owner = self.request_validator.validate_request_token( - request.client_key, request.resource_owner_key, request) - if not valid_resource_owner: - request.resource_owner_key = self.request_validator.dummy_request_token - - # The server MUST verify (Section 3.2) the validity of the request, - # ensure that the resource owner has authorized the provisioning of - # token credentials to the client, and ensure that the temporary - # credentials have not expired or been used before. The server MUST - # also verify the verification code received from the client. - # .. _`Section 3.2`: https://tools.ietf.org/html/rfc5849#section-3.2 - # - # Note that early exit would enable resource owner authorization - # verifier enumertion. - valid_verifier = self.request_validator.validate_verifier( - request.client_key, - request.resource_owner_key, - request.verifier, - request) - - valid_signature = self._check_signature(request, is_token_request=True) - - # log the results to the validator_log - # this lets us handle internal reporting and analysis - request.validator_log['client'] = valid_client - request.validator_log['resource_owner'] = valid_resource_owner - request.validator_log['verifier'] = valid_verifier - request.validator_log['signature'] = valid_signature - - # We delay checking validity until the very end, using dummy values for - # calculations and fetching secrets/keys to ensure the flow of every - # request remains almost identical regardless of whether valid values - # have been supplied. This ensures near constant time execution and - # prevents malicious users from guessing sensitive information - v = all((valid_client, valid_resource_owner, valid_verifier, - valid_signature)) - if not v: - log.info("[Failure] request verification failed.") - log.info("Valid client:, %s", valid_client) - log.info("Valid token:, %s", valid_resource_owner) - log.info("Valid verifier:, %s", valid_verifier) - log.info("Valid signature:, %s", valid_signature) - return v, request diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/authorization.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/authorization.py deleted file mode 100644 index 00d9576..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/authorization.py +++ /dev/null @@ -1,158 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.authorization -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for signing and checking OAuth 1.0 RFC 5849 requests. -""" -from urllib.parse import urlencode - -from oauthlib.common import add_params_to_uri - -from .. import errors -from .base import BaseEndpoint - - -class AuthorizationEndpoint(BaseEndpoint): - - """An endpoint responsible for letting authenticated users authorize access - to their protected resources to a client. - - Typical use would be to have two views, one for displaying the authorization - form and one to process said form on submission. - - The first view will want to utilize ``get_realms_and_credentials`` to fetch - requested realms and useful client credentials, such as name and - description, to be used when creating the authorization form. - - During form processing you can use ``create_authorization_response`` to - validate the request, create a verifier as well as prepare the final - redirection URI used to send the user back to the client. - - See :doc:`/oauth1/validator` for details on which validator methods to implement - for this endpoint. - """ - - def create_verifier(self, request, credentials): - """Create and save a new request token. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param credentials: A dict of extra token credentials. - :returns: The verifier as a dict. - """ - verifier = { - 'oauth_token': request.resource_owner_key, - 'oauth_verifier': self.token_generator(), - } - verifier.update(credentials) - self.request_validator.save_verifier( - request.resource_owner_key, verifier, request) - return verifier - - def create_authorization_response(self, uri, http_method='GET', body=None, - headers=None, realms=None, credentials=None): - """Create an authorization response, with a new request token if valid. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :param credentials: A list of credentials to include in the verifier. - :returns: A tuple of 3 elements. - 1. A dict of headers to set on the response. - 2. The response body as a string. - 3. The response status code as an integer. - - If the callback URI tied to the current token is "oob", a response with - a 200 status code will be returned. In this case, it may be desirable to - modify the response to better display the verifier to the client. - - An example of an authorization request:: - - >>> from your_validator import your_validator - >>> from oauthlib.oauth1 import AuthorizationEndpoint - >>> endpoint = AuthorizationEndpoint(your_validator) - >>> h, b, s = endpoint.create_authorization_response( - ... 'https://your.provider/authorize?oauth_token=...', - ... credentials={ - ... 'extra': 'argument', - ... }) - >>> h - {'Location': 'https://the.client/callback?oauth_verifier=...&extra=argument'} - >>> b - None - >>> s - 302 - - An example of a request with an "oob" callback:: - - >>> from your_validator import your_validator - >>> from oauthlib.oauth1 import AuthorizationEndpoint - >>> endpoint = AuthorizationEndpoint(your_validator) - >>> h, b, s = endpoint.create_authorization_response( - ... 'https://your.provider/authorize?foo=bar', - ... credentials={ - ... 'extra': 'argument', - ... }) - >>> h - {'Content-Type': 'application/x-www-form-urlencoded'} - >>> b - 'oauth_verifier=...&extra=argument' - >>> s - 200 - """ - request = self._create_request(uri, http_method=http_method, body=body, - headers=headers) - - if not request.resource_owner_key: - raise errors.InvalidRequestError( - 'Missing mandatory parameter oauth_token.') - if not self.request_validator.verify_request_token( - request.resource_owner_key, request): - raise errors.InvalidClientError() - - request.realms = realms - if (request.realms and not self.request_validator.verify_realms( - request.resource_owner_key, request.realms, request)): - raise errors.InvalidRequestError( - description=('User granted access to realms outside of ' - 'what the client may request.')) - - verifier = self.create_verifier(request, credentials or {}) - redirect_uri = self.request_validator.get_redirect_uri( - request.resource_owner_key, request) - if redirect_uri == 'oob': - response_headers = { - 'Content-Type': 'application/x-www-form-urlencoded'} - response_body = urlencode(verifier) - return response_headers, response_body, 200 - else: - populated_redirect = add_params_to_uri( - redirect_uri, verifier.items()) - return {'Location': populated_redirect}, None, 302 - - def get_realms_and_credentials(self, uri, http_method='GET', body=None, - headers=None): - """Fetch realms and credentials for the presented request token. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :returns: A tuple of 2 elements. - 1. A list of request realms. - 2. A dict of credentials which may be useful in creating the - authorization form. - """ - request = self._create_request(uri, http_method=http_method, body=body, - headers=headers) - - if not self.request_validator.verify_request_token( - request.resource_owner_key, request): - raise errors.InvalidClientError() - - realms = self.request_validator.get_realms( - request.resource_owner_key, request) - return realms, {'resource_owner_key': request.resource_owner_key} diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py deleted file mode 100644 index 7831be7..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py +++ /dev/null @@ -1,244 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.base -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for signing and checking OAuth 1.0 RFC 5849 requests. -""" -import time - -from oauthlib.common import CaseInsensitiveDict, Request, generate_token - -from .. import ( - CONTENT_TYPE_FORM_URLENCODED, SIGNATURE_HMAC_SHA1, SIGNATURE_HMAC_SHA256, - SIGNATURE_HMAC_SHA512, SIGNATURE_PLAINTEXT, SIGNATURE_RSA_SHA1, - SIGNATURE_RSA_SHA256, SIGNATURE_RSA_SHA512, SIGNATURE_TYPE_AUTH_HEADER, - SIGNATURE_TYPE_BODY, SIGNATURE_TYPE_QUERY, errors, signature, utils, -) - - -class BaseEndpoint: - - def __init__(self, request_validator, token_generator=None): - self.request_validator = request_validator - self.token_generator = token_generator or generate_token - - def _get_signature_type_and_params(self, request): - """Extracts parameters from query, headers and body. Signature type - is set to the source in which parameters were found. - """ - # Per RFC5849, only the Authorization header may contain the 'realm' - # optional parameter. - header_params = signature.collect_parameters(headers=request.headers, - exclude_oauth_signature=False, with_realm=True) - body_params = signature.collect_parameters(body=request.body, - exclude_oauth_signature=False) - query_params = signature.collect_parameters(uri_query=request.uri_query, - exclude_oauth_signature=False) - - params = [] - params.extend(header_params) - params.extend(body_params) - params.extend(query_params) - signature_types_with_oauth_params = list(filter(lambda s: s[2], ( - (SIGNATURE_TYPE_AUTH_HEADER, params, - utils.filter_oauth_params(header_params)), - (SIGNATURE_TYPE_BODY, params, - utils.filter_oauth_params(body_params)), - (SIGNATURE_TYPE_QUERY, params, - utils.filter_oauth_params(query_params)) - ))) - - if len(signature_types_with_oauth_params) > 1: - found_types = [s[0] for s in signature_types_with_oauth_params] - raise errors.InvalidRequestError( - description=('oauth_ params must come from only 1 signature' - 'type but were found in %s', - ', '.join(found_types))) - - try: - signature_type, params, oauth_params = signature_types_with_oauth_params[ - 0] - except IndexError: - raise errors.InvalidRequestError( - description='Missing mandatory OAuth parameters.') - - return signature_type, params, oauth_params - - def _create_request(self, uri, http_method, body, headers): - # Only include body data from x-www-form-urlencoded requests - headers = CaseInsensitiveDict(headers or {}) - if ("Content-Type" in headers and - CONTENT_TYPE_FORM_URLENCODED in headers["Content-Type"]): - request = Request(uri, http_method, body, headers) - else: - request = Request(uri, http_method, '', headers) - - signature_type, params, oauth_params = ( - self._get_signature_type_and_params(request)) - - # The server SHOULD return a 400 (Bad Request) status code when - # receiving a request with duplicated protocol parameters. - if len(dict(oauth_params)) != len(oauth_params): - raise errors.InvalidRequestError( - description='Duplicate OAuth1 entries.') - - oauth_params = dict(oauth_params) - request.signature = oauth_params.get('oauth_signature') - request.client_key = oauth_params.get('oauth_consumer_key') - request.resource_owner_key = oauth_params.get('oauth_token') - request.nonce = oauth_params.get('oauth_nonce') - request.timestamp = oauth_params.get('oauth_timestamp') - request.redirect_uri = oauth_params.get('oauth_callback') - request.verifier = oauth_params.get('oauth_verifier') - request.signature_method = oauth_params.get('oauth_signature_method') - request.realm = dict(params).get('realm') - request.oauth_params = oauth_params - - # Parameters to Client depend on signature method which may vary - # for each request. Note that HMAC-SHA1 and PLAINTEXT share parameters - request.params = [(k, v) for k, v in params if k != "oauth_signature"] - - if 'realm' in request.headers.get('Authorization', ''): - request.params = [(k, v) - for k, v in request.params if k != "realm"] - - return request - - def _check_transport_security(self, request): - # TODO: move into oauthlib.common from oauth2.utils - if (self.request_validator.enforce_ssl and - not request.uri.lower().startswith("https://")): - raise errors.InsecureTransportError() - - def _check_mandatory_parameters(self, request): - # The server SHOULD return a 400 (Bad Request) status code when - # receiving a request with missing parameters. - if not all((request.signature, request.client_key, - request.nonce, request.timestamp, - request.signature_method)): - raise errors.InvalidRequestError( - description='Missing mandatory OAuth parameters.') - - # OAuth does not mandate a particular signature method, as each - # implementation can have its own unique requirements. Servers are - # free to implement and document their own custom methods. - # Recommending any particular method is beyond the scope of this - # specification. Implementers should review the Security - # Considerations section (`Section 4`_) before deciding on which - # method to support. - # .. _`Section 4`: https://tools.ietf.org/html/rfc5849#section-4 - if (not request.signature_method in - self.request_validator.allowed_signature_methods): - raise errors.InvalidSignatureMethodError( - description="Invalid signature, {} not in {!r}.".format( - request.signature_method, - self.request_validator.allowed_signature_methods)) - - # Servers receiving an authenticated request MUST validate it by: - # If the "oauth_version" parameter is present, ensuring its value is - # "1.0". - if ('oauth_version' in request.oauth_params and - request.oauth_params['oauth_version'] != '1.0'): - raise errors.InvalidRequestError( - description='Invalid OAuth version.') - - # The timestamp value MUST be a positive integer. Unless otherwise - # specified by the server's documentation, the timestamp is expressed - # in the number of seconds since January 1, 1970 00:00:00 GMT. - if len(request.timestamp) != 10: - raise errors.InvalidRequestError( - description='Invalid timestamp size') - - try: - ts = int(request.timestamp) - - except ValueError: - raise errors.InvalidRequestError( - description='Timestamp must be an integer.') - - else: - # To avoid the need to retain an infinite number of nonce values for - # future checks, servers MAY choose to restrict the time period after - # which a request with an old timestamp is rejected. - if abs(time.time() - ts) > self.request_validator.timestamp_lifetime: - raise errors.InvalidRequestError( - description=('Timestamp given is invalid, differ from ' - 'allowed by over %s seconds.' % ( - self.request_validator.timestamp_lifetime))) - - # Provider specific validation of parameters, used to enforce - # restrictions such as character set and length. - if not self.request_validator.check_client_key(request.client_key): - raise errors.InvalidRequestError( - description='Invalid client key format.') - - if not self.request_validator.check_nonce(request.nonce): - raise errors.InvalidRequestError( - description='Invalid nonce format.') - - def _check_signature(self, request, is_token_request=False): - # ---- RSA Signature verification ---- - if request.signature_method == SIGNATURE_RSA_SHA1 or \ - request.signature_method == SIGNATURE_RSA_SHA256 or \ - request.signature_method == SIGNATURE_RSA_SHA512: - # RSA-based signature method - - # The server verifies the signature per `[RFC3447] section 8.2.2`_ - # .. _`[RFC3447] section 8.2.2`: https://tools.ietf.org/html/rfc3447#section-8.2.1 - - rsa_key = self.request_validator.get_rsa_key( - request.client_key, request) - - if request.signature_method == SIGNATURE_RSA_SHA1: - valid_signature = signature.verify_rsa_sha1(request, rsa_key) - elif request.signature_method == SIGNATURE_RSA_SHA256: - valid_signature = signature.verify_rsa_sha256(request, rsa_key) - elif request.signature_method == SIGNATURE_RSA_SHA512: - valid_signature = signature.verify_rsa_sha512(request, rsa_key) - else: - valid_signature = False - - # ---- HMAC or Plaintext Signature verification ---- - else: - # Non-RSA based signature method - - # Servers receiving an authenticated request MUST validate it by: - # Recalculating the request signature independently as described in - # `Section 3.4`_ and comparing it to the value received from the - # client via the "oauth_signature" parameter. - # .. _`Section 3.4`: https://tools.ietf.org/html/rfc5849#section-3.4 - - client_secret = self.request_validator.get_client_secret( - request.client_key, request) - - resource_owner_secret = None - if request.resource_owner_key: - if is_token_request: - resource_owner_secret = \ - self.request_validator.get_request_token_secret( - request.client_key, request.resource_owner_key, - request) - else: - resource_owner_secret = \ - self.request_validator.get_access_token_secret( - request.client_key, request.resource_owner_key, - request) - - if request.signature_method == SIGNATURE_HMAC_SHA1: - valid_signature = signature.verify_hmac_sha1( - request, client_secret, resource_owner_secret) - elif request.signature_method == SIGNATURE_HMAC_SHA256: - valid_signature = signature.verify_hmac_sha256( - request, client_secret, resource_owner_secret) - elif request.signature_method == SIGNATURE_HMAC_SHA512: - valid_signature = signature.verify_hmac_sha512( - request, client_secret, resource_owner_secret) - elif request.signature_method == SIGNATURE_PLAINTEXT: - valid_signature = signature.verify_plaintext( - request, client_secret, resource_owner_secret) - else: - valid_signature = False - - return valid_signature diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/pre_configured.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/pre_configured.py deleted file mode 100644 index 23e3cfc..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/pre_configured.py +++ /dev/null @@ -1,14 +0,0 @@ -from . import ( - AccessTokenEndpoint, AuthorizationEndpoint, RequestTokenEndpoint, - ResourceEndpoint, -) - - -class WebApplicationServer(RequestTokenEndpoint, AuthorizationEndpoint, - AccessTokenEndpoint, ResourceEndpoint): - - def __init__(self, request_validator): - RequestTokenEndpoint.__init__(self, request_validator) - AuthorizationEndpoint.__init__(self, request_validator) - AccessTokenEndpoint.__init__(self, request_validator) - ResourceEndpoint.__init__(self, request_validator) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/request_token.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/request_token.py deleted file mode 100644 index 0323cfb..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/request_token.py +++ /dev/null @@ -1,209 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.request_token -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of the request token provider logic of -OAuth 1.0 RFC 5849. It validates the correctness of request token requests, -creates and persists tokens as well as create the proper response to be -returned to the client. -""" -import logging - -from oauthlib.common import urlencode - -from .. import errors -from .base import BaseEndpoint - -log = logging.getLogger(__name__) - - -class RequestTokenEndpoint(BaseEndpoint): - - """An endpoint responsible for providing OAuth 1 request tokens. - - Typical use is to instantiate with a request validator and invoke the - ``create_request_token_response`` from a view function. The tuple returned - has all information necessary (body, status, headers) to quickly form - and return a proper response. See :doc:`/oauth1/validator` for details on which - validator methods to implement for this endpoint. - """ - - def create_request_token(self, request, credentials): - """Create and save a new request token. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param credentials: A dict of extra token credentials. - :returns: The token as an urlencoded string. - """ - token = { - 'oauth_token': self.token_generator(), - 'oauth_token_secret': self.token_generator(), - 'oauth_callback_confirmed': 'true' - } - token.update(credentials) - self.request_validator.save_request_token(token, request) - return urlencode(token.items()) - - def create_request_token_response(self, uri, http_method='GET', body=None, - headers=None, credentials=None): - """Create a request token response, with a new request token if valid. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :param credentials: A list of extra credentials to include in the token. - :returns: A tuple of 3 elements. - 1. A dict of headers to set on the response. - 2. The response body as a string. - 3. The response status code as an integer. - - An example of a valid request:: - - >>> from your_validator import your_validator - >>> from oauthlib.oauth1 import RequestTokenEndpoint - >>> endpoint = RequestTokenEndpoint(your_validator) - >>> h, b, s = endpoint.create_request_token_response( - ... 'https://your.provider/request_token?foo=bar', - ... headers={ - ... 'Authorization': 'OAuth realm=movies user, oauth_....' - ... }, - ... credentials={ - ... 'my_specific': 'argument', - ... }) - >>> h - {'Content-Type': 'application/x-www-form-urlencoded'} - >>> b - 'oauth_token=lsdkfol23w54jlksdef&oauth_token_secret=qwe089234lkjsdf&oauth_callback_confirmed=true&my_specific=argument' - >>> s - 200 - - An response to invalid request would have a different body and status:: - - >>> b - 'error=invalid_request&description=missing+callback+uri' - >>> s - 400 - - The same goes for an an unauthorized request: - - >>> b - '' - >>> s - 401 - """ - resp_headers = {'Content-Type': 'application/x-www-form-urlencoded'} - try: - request = self._create_request(uri, http_method, body, headers) - valid, processed_request = self.validate_request_token_request( - request) - if valid: - token = self.create_request_token(request, credentials or {}) - return resp_headers, token, 200 - else: - return {}, None, 401 - except errors.OAuth1Error as e: - return resp_headers, e.urlencoded, e.status_code - - def validate_request_token_request(self, request): - """Validate a request token request. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :raises: OAuth1Error if the request is invalid. - :returns: A tuple of 2 elements. - 1. The validation result (True or False). - 2. The request object. - """ - self._check_transport_security(request) - self._check_mandatory_parameters(request) - - if request.realm: - request.realms = request.realm.split(' ') - else: - request.realms = self.request_validator.get_default_realms( - request.client_key, request) - if not self.request_validator.check_realms(request.realms): - raise errors.InvalidRequestError( - description='Invalid realm {}. Allowed are {!r}.'.format( - request.realms, self.request_validator.realms)) - - if not request.redirect_uri: - raise errors.InvalidRequestError( - description='Missing callback URI.') - - if not self.request_validator.validate_timestamp_and_nonce( - request.client_key, request.timestamp, request.nonce, request, - request_token=request.resource_owner_key): - return False, request - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid client credentials. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy client is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable client enumeration - valid_client = self.request_validator.validate_client_key( - request.client_key, request) - if not valid_client: - request.client_key = self.request_validator.dummy_client - - # Note that `realm`_ is only used in authorization headers and how - # it should be interpreted is not included in the OAuth spec. - # However they could be seen as a scope or realm to which the - # client has access and as such every client should be checked - # to ensure it is authorized access to that scope or realm. - # .. _`realm`: https://tools.ietf.org/html/rfc2617#section-1.2 - # - # Note that early exit would enable client realm access enumeration. - # - # The require_realm indicates this is the first step in the OAuth - # workflow where a client requests access to a specific realm. - # This first step (obtaining request token) need not require a realm - # and can then be identified by checking the require_resource_owner - # flag and absence of realm. - # - # Clients obtaining an access token will not supply a realm and it will - # not be checked. Instead the previously requested realm should be - # transferred from the request token to the access token. - # - # Access to protected resources will always validate the realm but note - # that the realm is now tied to the access token and not provided by - # the client. - valid_realm = self.request_validator.validate_requested_realms( - request.client_key, request.realms, request) - - # Callback is normally never required, except for requests for - # a Temporary Credential as described in `Section 2.1`_ - # .._`Section 2.1`: https://tools.ietf.org/html/rfc5849#section-2.1 - valid_redirect = self.request_validator.validate_redirect_uri( - request.client_key, request.redirect_uri, request) - if not request.redirect_uri: - raise NotImplementedError('Redirect URI must either be provided ' - 'or set to a default during validation.') - - valid_signature = self._check_signature(request) - - # log the results to the validator_log - # this lets us handle internal reporting and analysis - request.validator_log['client'] = valid_client - request.validator_log['realm'] = valid_realm - request.validator_log['callback'] = valid_redirect - request.validator_log['signature'] = valid_signature - - # We delay checking validity until the very end, using dummy values for - # calculations and fetching secrets/keys to ensure the flow of every - # request remains almost identical regardless of whether valid values - # have been supplied. This ensures near constant time execution and - # prevents malicious users from guessing sensitive information - v = all((valid_client, valid_realm, valid_redirect, valid_signature)) - if not v: - log.info("[Failure] request verification failed.") - log.info("Valid client: %s.", valid_client) - log.info("Valid realm: %s.", valid_realm) - log.info("Valid callback: %s.", valid_redirect) - log.info("Valid signature: %s.", valid_signature) - return v, request diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/resource.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/resource.py deleted file mode 100644 index 8641152..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/resource.py +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.resource -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of the resource protection provider logic of -OAuth 1.0 RFC 5849. -""" -import logging - -from .. import errors -from .base import BaseEndpoint - -log = logging.getLogger(__name__) - - -class ResourceEndpoint(BaseEndpoint): - - """An endpoint responsible for protecting resources. - - Typical use is to instantiate with a request validator and invoke the - ``validate_protected_resource_request`` in a decorator around a view - function. If the request is valid, invoke and return the response of the - view. If invalid create and return an error response directly from the - decorator. - - See :doc:`/oauth1/validator` for details on which validator methods to implement - for this endpoint. - - An example decorator:: - - from functools import wraps - from your_validator import your_validator - from oauthlib.oauth1 import ResourceEndpoint - endpoint = ResourceEndpoint(your_validator) - - def require_oauth(realms=None): - def decorator(f): - @wraps(f) - def wrapper(request, *args, **kwargs): - v, r = provider.validate_protected_resource_request( - request.url, - http_method=request.method, - body=request.data, - headers=request.headers, - realms=realms or []) - if v: - return f(*args, **kwargs) - else: - return abort(403) - """ - - def validate_protected_resource_request(self, uri, http_method='GET', - body=None, headers=None, realms=None): - """Create a request token response, with a new request token if valid. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :param realms: A list of realms the resource is protected under. - This will be supplied to the ``validate_realms`` - method of the request validator. - :returns: A tuple of 2 elements. - 1. True if valid, False otherwise. - 2. An oauthlib.common.Request object. - """ - try: - request = self._create_request(uri, http_method, body, headers) - except errors.OAuth1Error: - return False, None - - try: - self._check_transport_security(request) - self._check_mandatory_parameters(request) - except errors.OAuth1Error: - return False, request - - if not request.resource_owner_key: - return False, request - - if not self.request_validator.check_access_token( - request.resource_owner_key): - return False, request - - if not self.request_validator.validate_timestamp_and_nonce( - request.client_key, request.timestamp, request.nonce, request, - access_token=request.resource_owner_key): - return False, request - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid client credentials. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy client is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable client enumeration - valid_client = self.request_validator.validate_client_key( - request.client_key, request) - if not valid_client: - request.client_key = self.request_validator.dummy_client - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid or expired token. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy token is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable resource owner enumeration - valid_resource_owner = self.request_validator.validate_access_token( - request.client_key, request.resource_owner_key, request) - if not valid_resource_owner: - request.resource_owner_key = self.request_validator.dummy_access_token - - # Note that `realm`_ is only used in authorization headers and how - # it should be interpreted is not included in the OAuth spec. - # However they could be seen as a scope or realm to which the - # client has access and as such every client should be checked - # to ensure it is authorized access to that scope or realm. - # .. _`realm`: https://tools.ietf.org/html/rfc2617#section-1.2 - # - # Note that early exit would enable client realm access enumeration. - # - # The require_realm indicates this is the first step in the OAuth - # workflow where a client requests access to a specific realm. - # This first step (obtaining request token) need not require a realm - # and can then be identified by checking the require_resource_owner - # flag and absence of realm. - # - # Clients obtaining an access token will not supply a realm and it will - # not be checked. Instead the previously requested realm should be - # transferred from the request token to the access token. - # - # Access to protected resources will always validate the realm but note - # that the realm is now tied to the access token and not provided by - # the client. - valid_realm = self.request_validator.validate_realms(request.client_key, - request.resource_owner_key, request, uri=request.uri, - realms=realms) - - valid_signature = self._check_signature(request) - - # log the results to the validator_log - # this lets us handle internal reporting and analysis - request.validator_log['client'] = valid_client - request.validator_log['resource_owner'] = valid_resource_owner - request.validator_log['realm'] = valid_realm - request.validator_log['signature'] = valid_signature - - # We delay checking validity until the very end, using dummy values for - # calculations and fetching secrets/keys to ensure the flow of every - # request remains almost identical regardless of whether valid values - # have been supplied. This ensures near constant time execution and - # prevents malicious users from guessing sensitive information - v = all((valid_client, valid_resource_owner, valid_realm, - valid_signature)) - if not v: - log.info("[Failure] request verification failed.") - log.info("Valid client: %s", valid_client) - log.info("Valid token: %s", valid_resource_owner) - log.info("Valid realm: %s", valid_realm) - log.info("Valid signature: %s", valid_signature) - return v, request diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/signature_only.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/signature_only.py deleted file mode 100644 index d693ccb..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/signature_only.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth1.rfc5849.endpoints.signature_only -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of the signing logic of OAuth 1.0 RFC 5849. -""" - -import logging - -from .. import errors -from .base import BaseEndpoint - -log = logging.getLogger(__name__) - - -class SignatureOnlyEndpoint(BaseEndpoint): - - """An endpoint only responsible for verifying an oauth signature.""" - - def validate_request(self, uri, http_method='GET', - body=None, headers=None): - """Validate a signed OAuth request. - - :param uri: The full URI of the token request. - :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc. - :param body: The request body as a string. - :param headers: The request headers as a dict. - :returns: A tuple of 2 elements. - 1. True if valid, False otherwise. - 2. An oauthlib.common.Request object. - """ - try: - request = self._create_request(uri, http_method, body, headers) - except errors.OAuth1Error as err: - log.info( - 'Exception caught while validating request, %s.' % err) - return False, None - - try: - self._check_transport_security(request) - self._check_mandatory_parameters(request) - except errors.OAuth1Error as err: - log.info( - 'Exception caught while validating request, %s.' % err) - return False, request - - if not self.request_validator.validate_timestamp_and_nonce( - request.client_key, request.timestamp, request.nonce, request): - log.debug('[Failure] verification failed: timestamp/nonce') - return False, request - - # The server SHOULD return a 401 (Unauthorized) status code when - # receiving a request with invalid client credentials. - # Note: This is postponed in order to avoid timing attacks, instead - # a dummy client is assigned and used to maintain near constant - # time request verification. - # - # Note that early exit would enable client enumeration - valid_client = self.request_validator.validate_client_key( - request.client_key, request) - if not valid_client: - request.client_key = self.request_validator.dummy_client - - valid_signature = self._check_signature(request) - - # log the results to the validator_log - # this lets us handle internal reporting and analysis - request.validator_log['client'] = valid_client - request.validator_log['signature'] = valid_signature - - # We delay checking validity until the very end, using dummy values for - # calculations and fetching secrets/keys to ensure the flow of every - # request remains almost identical regardless of whether valid values - # have been supplied. This ensures near constant time execution and - # prevents malicious users from guessing sensitive information - v = all((valid_client, valid_signature)) - if not v: - log.info("[Failure] request verification failed.") - log.info("Valid client: %s", valid_client) - log.info("Valid signature: %s", valid_signature) - return v, request diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/errors.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/errors.py deleted file mode 100644 index 8774d40..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/errors.py +++ /dev/null @@ -1,76 +0,0 @@ -""" -oauthlib.oauth1.rfc5849.errors -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Error used both by OAuth 1 clients and provicers to represent the spec -defined error responses for all four core grant types. -""" -from oauthlib.common import add_params_to_uri, urlencode - - -class OAuth1Error(Exception): - error = None - description = '' - - def __init__(self, description=None, uri=None, status_code=400, - request=None): - """ - description: A human-readable ASCII [USASCII] text providing - additional information, used to assist the client - developer in understanding the error that occurred. - Values for the "error_description" parameter MUST NOT - include characters outside the set - x20-21 / x23-5B / x5D-7E. - - uri: A URI identifying a human-readable web page with information - about the error, used to provide the client developer with - additional information about the error. Values for the - "error_uri" parameter MUST conform to the URI- Reference - syntax, and thus MUST NOT include characters outside the set - x21 / x23-5B / x5D-7E. - - state: A CSRF protection value received from the client. - - request: Oauthlib Request object - """ - self.description = description or self.description - message = '({}) {}'.format(self.error, self.description) - if request: - message += ' ' + repr(request) - super().__init__(message) - - self.uri = uri - self.status_code = status_code - - def in_uri(self, uri): - return add_params_to_uri(uri, self.twotuples) - - @property - def twotuples(self): - error = [('error', self.error)] - if self.description: - error.append(('error_description', self.description)) - if self.uri: - error.append(('error_uri', self.uri)) - return error - - @property - def urlencoded(self): - return urlencode(self.twotuples) - - -class InsecureTransportError(OAuth1Error): - error = 'insecure_transport_protocol' - description = 'Only HTTPS connections are permitted.' - - -class InvalidSignatureMethodError(OAuth1Error): - error = 'invalid_signature_method' - - -class InvalidRequestError(OAuth1Error): - error = 'invalid_request' - - -class InvalidClientError(OAuth1Error): - error = 'invalid_client' diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/parameters.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/parameters.py deleted file mode 100644 index 2163772..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/parameters.py +++ /dev/null @@ -1,133 +0,0 @@ -""" -oauthlib.parameters -~~~~~~~~~~~~~~~~~~~ - -This module contains methods related to `section 3.5`_ of the OAuth 1.0a spec. - -.. _`section 3.5`: https://tools.ietf.org/html/rfc5849#section-3.5 -""" -from urllib.parse import urlparse, urlunparse - -from oauthlib.common import extract_params, urlencode - -from . import utils - - -# TODO: do we need filter_params now that oauth_params are handled by Request? -# We can easily pass in just oauth protocol params. -@utils.filter_params -def prepare_headers(oauth_params, headers=None, realm=None): - """**Prepare the Authorization header.** - Per `section 3.5.1`_ of the spec. - - Protocol parameters can be transmitted using the HTTP "Authorization" - header field as defined by `RFC2617`_ with the auth-scheme name set to - "OAuth" (case insensitive). - - For example:: - - Authorization: OAuth realm="Example", - oauth_consumer_key="0685bd9184jfhq22", - oauth_token="ad180jjd733klru7", - oauth_signature_method="HMAC-SHA1", - oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", - oauth_timestamp="137131200", - oauth_nonce="4572616e48616d6d65724c61686176", - oauth_version="1.0" - - - .. _`section 3.5.1`: https://tools.ietf.org/html/rfc5849#section-3.5.1 - .. _`RFC2617`: https://tools.ietf.org/html/rfc2617 - """ - headers = headers or {} - - # Protocol parameters SHALL be included in the "Authorization" header - # field as follows: - authorization_header_parameters_parts = [] - for oauth_parameter_name, value in oauth_params: - # 1. Parameter names and values are encoded per Parameter Encoding - # (`Section 3.6`_) - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - escaped_name = utils.escape(oauth_parameter_name) - escaped_value = utils.escape(value) - - # 2. Each parameter's name is immediately followed by an "=" character - # (ASCII code 61), a """ character (ASCII code 34), the parameter - # value (MAY be empty), and another """ character (ASCII code 34). - part = '{}="{}"'.format(escaped_name, escaped_value) - - authorization_header_parameters_parts.append(part) - - # 3. Parameters are separated by a "," character (ASCII code 44) and - # OPTIONAL linear whitespace per `RFC2617`_. - # - # .. _`RFC2617`: https://tools.ietf.org/html/rfc2617 - authorization_header_parameters = ', '.join( - authorization_header_parameters_parts) - - # 4. The OPTIONAL "realm" parameter MAY be added and interpreted per - # `RFC2617 section 1.2`_. - # - # .. _`RFC2617 section 1.2`: https://tools.ietf.org/html/rfc2617#section-1.2 - if realm: - # NOTE: realm should *not* be escaped - authorization_header_parameters = ('realm="%s", ' % realm + - authorization_header_parameters) - - # the auth-scheme name set to "OAuth" (case insensitive). - authorization_header = 'OAuth %s' % authorization_header_parameters - - # contribute the Authorization header to the given headers - full_headers = {} - full_headers.update(headers) - full_headers['Authorization'] = authorization_header - return full_headers - - -def _append_params(oauth_params, params): - """Append OAuth params to an existing set of parameters. - - Both params and oauth_params is must be lists of 2-tuples. - - Per `section 3.5.2`_ and `3.5.3`_ of the spec. - - .. _`section 3.5.2`: https://tools.ietf.org/html/rfc5849#section-3.5.2 - .. _`3.5.3`: https://tools.ietf.org/html/rfc5849#section-3.5.3 - - """ - merged = list(params) - merged.extend(oauth_params) - # The request URI / entity-body MAY include other request-specific - # parameters, in which case, the protocol parameters SHOULD be appended - # following the request-specific parameters, properly separated by an "&" - # character (ASCII code 38) - merged.sort(key=lambda i: i[0].startswith('oauth_')) - return merged - - -def prepare_form_encoded_body(oauth_params, body): - """Prepare the Form-Encoded Body. - - Per `section 3.5.2`_ of the spec. - - .. _`section 3.5.2`: https://tools.ietf.org/html/rfc5849#section-3.5.2 - - """ - # append OAuth params to the existing body - return _append_params(oauth_params, body) - - -def prepare_request_uri_query(oauth_params, uri): - """Prepare the Request URI Query. - - Per `section 3.5.3`_ of the spec. - - .. _`section 3.5.3`: https://tools.ietf.org/html/rfc5849#section-3.5.3 - - """ - # append OAuth params to the existing set of query components - sch, net, path, par, query, fra = urlparse(uri) - query = urlencode( - _append_params(oauth_params, extract_params(query) or [])) - return urlunparse((sch, net, path, par, query, fra)) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/request_validator.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/request_validator.py deleted file mode 100644 index e937aab..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/request_validator.py +++ /dev/null @@ -1,849 +0,0 @@ -""" -oauthlib.oauth1.rfc5849 -~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for signing and checking OAuth 1.0 RFC 5849 requests. -""" -from . import SIGNATURE_METHODS, utils - - -class RequestValidator: - - """A validator/datastore interaction base class for OAuth 1 providers. - - OAuth providers should inherit from RequestValidator and implement the - methods and properties outlined below. Further details are provided in the - documentation for each method and property. - - Methods used to check the format of input parameters. Common tests include - length, character set, membership, range or pattern. These tests are - referred to as `whitelisting or blacklisting`_. Whitelisting is better - but blacklisting can be useful to spot malicious activity. - The following have methods a default implementation: - - - check_client_key - - check_request_token - - check_access_token - - check_nonce - - check_verifier - - check_realms - - The methods above default to whitelist input parameters, checking that they - are alphanumerical and between a minimum and maximum length. Rather than - overloading the methods a few properties can be used to configure these - methods. - - * @safe_characters -> (character set) - * @client_key_length -> (min, max) - * @request_token_length -> (min, max) - * @access_token_length -> (min, max) - * @nonce_length -> (min, max) - * @verifier_length -> (min, max) - * @realms -> [list, of, realms] - - Methods used to validate/invalidate input parameters. These checks usually - hit either persistent or temporary storage such as databases or the - filesystem. See each methods documentation for detailed usage. - The following methods must be implemented: - - - validate_client_key - - validate_request_token - - validate_access_token - - validate_timestamp_and_nonce - - validate_redirect_uri - - validate_requested_realms - - validate_realms - - validate_verifier - - invalidate_request_token - - Methods used to retrieve sensitive information from storage. - The following methods must be implemented: - - - get_client_secret - - get_request_token_secret - - get_access_token_secret - - get_rsa_key - - get_realms - - get_default_realms - - get_redirect_uri - - Methods used to save credentials. - The following methods must be implemented: - - - save_request_token - - save_verifier - - save_access_token - - Methods used to verify input parameters. This methods are used during - authorizing request token by user (AuthorizationEndpoint), to check if - parameters are valid. During token authorization request is not signed, - thus 'validation' methods can not be used. The following methods must be - implemented: - - - verify_realms - - verify_request_token - - To prevent timing attacks it is necessary to not exit early even if the - client key or resource owner key is invalid. Instead dummy values should - be used during the remaining verification process. It is very important - that the dummy client and token are valid input parameters to the methods - get_client_secret, get_rsa_key and get_(access/request)_token_secret and - that the running time of those methods when given a dummy value remain - equivalent to the running time when given a valid client/resource owner. - The following properties must be implemented: - - * @dummy_client - * @dummy_request_token - * @dummy_access_token - - Example implementations have been provided, note that the database used is - a simple dictionary and serves only an illustrative purpose. Use whichever - database suits your project and how to access it is entirely up to you. - The methods are introduced in an order which should make understanding - their use more straightforward and as such it could be worth reading what - follows in chronological order. - - .. _`whitelisting or blacklisting`: https://www.schneier.com/blog/archives/2011/01/whitelisting_vs.html - """ - - def __init__(self): - pass - - @property - def allowed_signature_methods(self): - return SIGNATURE_METHODS - - @property - def safe_characters(self): - return set(utils.UNICODE_ASCII_CHARACTER_SET) - - @property - def client_key_length(self): - return 20, 30 - - @property - def request_token_length(self): - return 20, 30 - - @property - def access_token_length(self): - return 20, 30 - - @property - def timestamp_lifetime(self): - return 600 - - @property - def nonce_length(self): - return 20, 30 - - @property - def verifier_length(self): - return 20, 30 - - @property - def realms(self): - return [] - - @property - def enforce_ssl(self): - return True - - def check_client_key(self, client_key): - """Check that the client key only contains safe characters - and is no shorter than lower and no longer than upper. - """ - lower, upper = self.client_key_length - return (set(client_key) <= self.safe_characters and - lower <= len(client_key) <= upper) - - def check_request_token(self, request_token): - """Checks that the request token contains only safe characters - and is no shorter than lower and no longer than upper. - """ - lower, upper = self.request_token_length - return (set(request_token) <= self.safe_characters and - lower <= len(request_token) <= upper) - - def check_access_token(self, request_token): - """Checks that the token contains only safe characters - and is no shorter than lower and no longer than upper. - """ - lower, upper = self.access_token_length - return (set(request_token) <= self.safe_characters and - lower <= len(request_token) <= upper) - - def check_nonce(self, nonce): - """Checks that the nonce only contains only safe characters - and is no shorter than lower and no longer than upper. - """ - lower, upper = self.nonce_length - return (set(nonce) <= self.safe_characters and - lower <= len(nonce) <= upper) - - def check_verifier(self, verifier): - """Checks that the verifier contains only safe characters - and is no shorter than lower and no longer than upper. - """ - lower, upper = self.verifier_length - return (set(verifier) <= self.safe_characters and - lower <= len(verifier) <= upper) - - def check_realms(self, realms): - """Check that the realm is one of a set allowed realms.""" - return all(r in self.realms for r in realms) - - def _subclass_must_implement(self, fn): - """ - Returns a NotImplementedError for a function that should be implemented. - :param fn: name of the function - """ - m = "Missing function implementation in {}: {}".format(type(self), fn) - return NotImplementedError(m) - - @property - def dummy_client(self): - """Dummy client used when an invalid client key is supplied. - - :returns: The dummy client key string. - - The dummy client should be associated with either a client secret, - a rsa key or both depending on which signature methods are supported. - Providers should make sure that - - get_client_secret(dummy_client) - get_rsa_key(dummy_client) - - return a valid secret or key for the dummy client. - - This method is used by - - * AccessTokenEndpoint - * RequestTokenEndpoint - * ResourceEndpoint - * SignatureOnlyEndpoint - """ - raise self._subclass_must_implement("dummy_client") - - @property - def dummy_request_token(self): - """Dummy request token used when an invalid token was supplied. - - :returns: The dummy request token string. - - The dummy request token should be associated with a request token - secret such that get_request_token_secret(.., dummy_request_token) - returns a valid secret. - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("dummy_request_token") - - @property - def dummy_access_token(self): - """Dummy access token used when an invalid token was supplied. - - :returns: The dummy access token string. - - The dummy access token should be associated with an access token - secret such that get_access_token_secret(.., dummy_access_token) - returns a valid secret. - - This method is used by - - * ResourceEndpoint - """ - raise self._subclass_must_implement("dummy_access_token") - - def get_client_secret(self, client_key, request): - """Retrieves the client secret associated with the client key. - - :param client_key: The client/consumer key. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The client secret as a string. - - This method must allow the use of a dummy client_key value. - Fetching the secret using the dummy key must take the same amount of - time as fetching a secret for a valid client:: - - # Unlikely to be near constant time as it uses two database - # lookups for a valid client, and only one for an invalid. - from your_datastore import ClientSecret - if ClientSecret.has(client_key): - return ClientSecret.get(client_key) - else: - return 'dummy' - - # Aim to mimic number of latency inducing operations no matter - # whether the client is valid or not. - from your_datastore import ClientSecret - return ClientSecret.get(client_key, 'dummy') - - Note that the returned key must be in plaintext. - - This method is used by - - * AccessTokenEndpoint - * RequestTokenEndpoint - * ResourceEndpoint - * SignatureOnlyEndpoint - """ - raise self._subclass_must_implement('get_client_secret') - - def get_request_token_secret(self, client_key, token, request): - """Retrieves the shared secret associated with the request token. - - :param client_key: The client/consumer key. - :param token: The request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The token secret as a string. - - This method must allow the use of a dummy values and the running time - must be roughly equivalent to that of the running time of valid values:: - - # Unlikely to be near constant time as it uses two database - # lookups for a valid client, and only one for an invalid. - from your_datastore import RequestTokenSecret - if RequestTokenSecret.has(client_key): - return RequestTokenSecret.get((client_key, request_token)) - else: - return 'dummy' - - # Aim to mimic number of latency inducing operations no matter - # whether the client is valid or not. - from your_datastore import RequestTokenSecret - return ClientSecret.get((client_key, request_token), 'dummy') - - Note that the returned key must be in plaintext. - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement('get_request_token_secret') - - def get_access_token_secret(self, client_key, token, request): - """Retrieves the shared secret associated with the access token. - - :param client_key: The client/consumer key. - :param token: The access token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The token secret as a string. - - This method must allow the use of a dummy values and the running time - must be roughly equivalent to that of the running time of valid values:: - - # Unlikely to be near constant time as it uses two database - # lookups for a valid client, and only one for an invalid. - from your_datastore import AccessTokenSecret - if AccessTokenSecret.has(client_key): - return AccessTokenSecret.get((client_key, request_token)) - else: - return 'dummy' - - # Aim to mimic number of latency inducing operations no matter - # whether the client is valid or not. - from your_datastore import AccessTokenSecret - return ClientSecret.get((client_key, request_token), 'dummy') - - Note that the returned key must be in plaintext. - - This method is used by - - * ResourceEndpoint - """ - raise self._subclass_must_implement("get_access_token_secret") - - def get_default_realms(self, client_key, request): - """Get the default realms for a client. - - :param client_key: The client/consumer key. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The list of default realms associated with the client. - - The list of default realms will be set during client registration and - is outside the scope of OAuthLib. - - This method is used by - - * RequestTokenEndpoint - """ - raise self._subclass_must_implement("get_default_realms") - - def get_realms(self, token, request): - """Get realms associated with a request token. - - :param token: The request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The list of realms associated with the request token. - - This method is used by - - * AuthorizationEndpoint - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("get_realms") - - def get_redirect_uri(self, token, request): - """Get the redirect URI associated with a request token. - - :param token: The request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The redirect URI associated with the request token. - - It may be desirable to return a custom URI if the redirect is set to "oob". - In this case, the user will be redirected to the returned URI and at that - endpoint the verifier can be displayed. - - This method is used by - - * AuthorizationEndpoint - """ - raise self._subclass_must_implement("get_redirect_uri") - - def get_rsa_key(self, client_key, request): - """Retrieves a previously stored client provided RSA key. - - :param client_key: The client/consumer key. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: The rsa public key as a string. - - This method must allow the use of a dummy client_key value. Fetching - the rsa key using the dummy key must take the same amount of time - as fetching a key for a valid client. The dummy key must also be of - the same bit length as client keys. - - Note that the key must be returned in plaintext. - - This method is used by - - * AccessTokenEndpoint - * RequestTokenEndpoint - * ResourceEndpoint - * SignatureOnlyEndpoint - """ - raise self._subclass_must_implement("get_rsa_key") - - def invalidate_request_token(self, client_key, request_token, request): - """Invalidates a used request token. - - :param client_key: The client/consumer key. - :param request_token: The request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: None - - Per `Section 2.3`_ of the spec: - - "The server MUST (...) ensure that the temporary - credentials have not expired or been used before." - - .. _`Section 2.3`: https://tools.ietf.org/html/rfc5849#section-2.3 - - This method should ensure that provided token won't validate anymore. - It can be simply removing RequestToken from storage or setting - specific flag that makes it invalid (note that such flag should be - also validated during request token validation). - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("invalidate_request_token") - - def validate_client_key(self, client_key, request): - """Validates that supplied client key is a registered and valid client. - - :param client_key: The client/consumer key. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - Note that if the dummy client is supplied it should validate in same - or nearly the same amount of time as a valid one. - - Ensure latency inducing tasks are mimiced even for dummy clients. - For example, use:: - - from your_datastore import Client - try: - return Client.exists(client_key, access_token) - except DoesNotExist: - return False - - Rather than:: - - from your_datastore import Client - if access_token == self.dummy_access_token: - return False - else: - return Client.exists(client_key, access_token) - - This method is used by - - * AccessTokenEndpoint - * RequestTokenEndpoint - * ResourceEndpoint - * SignatureOnlyEndpoint - """ - raise self._subclass_must_implement("validate_client_key") - - def validate_request_token(self, client_key, token, request): - """Validates that supplied request token is registered and valid. - - :param client_key: The client/consumer key. - :param token: The request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - Note that if the dummy request_token is supplied it should validate in - the same nearly the same amount of time as a valid one. - - Ensure latency inducing tasks are mimiced even for dummy clients. - For example, use:: - - from your_datastore import RequestToken - try: - return RequestToken.exists(client_key, access_token) - except DoesNotExist: - return False - - Rather than:: - - from your_datastore import RequestToken - if access_token == self.dummy_access_token: - return False - else: - return RequestToken.exists(client_key, access_token) - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("validate_request_token") - - def validate_access_token(self, client_key, token, request): - """Validates that supplied access token is registered and valid. - - :param client_key: The client/consumer key. - :param token: The access token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - Note that if the dummy access token is supplied it should validate in - the same or nearly the same amount of time as a valid one. - - Ensure latency inducing tasks are mimiced even for dummy clients. - For example, use:: - - from your_datastore import AccessToken - try: - return AccessToken.exists(client_key, access_token) - except DoesNotExist: - return False - - Rather than:: - - from your_datastore import AccessToken - if access_token == self.dummy_access_token: - return False - else: - return AccessToken.exists(client_key, access_token) - - This method is used by - - * ResourceEndpoint - """ - raise self._subclass_must_implement("validate_access_token") - - def validate_timestamp_and_nonce(self, client_key, timestamp, nonce, - request, request_token=None, access_token=None): - """Validates that the nonce has not been used before. - - :param client_key: The client/consumer key. - :param timestamp: The ``oauth_timestamp`` parameter. - :param nonce: The ``oauth_nonce`` parameter. - :param request_token: Request token string, if any. - :param access_token: Access token string, if any. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - Per `Section 3.3`_ of the spec. - - "A nonce is a random string, uniquely generated by the client to allow - the server to verify that a request has never been made before and - helps prevent replay attacks when requests are made over a non-secure - channel. The nonce value MUST be unique across all requests with the - same timestamp, client credentials, and token combinations." - - .. _`Section 3.3`: https://tools.ietf.org/html/rfc5849#section-3.3 - - One of the first validation checks that will be made is for the validity - of the nonce and timestamp, which are associated with a client key and - possibly a token. If invalid then immediately fail the request - by returning False. If the nonce/timestamp pair has been used before and - you may just have detected a replay attack. Therefore it is an essential - part of OAuth security that you not allow nonce/timestamp reuse. - Note that this validation check is done before checking the validity of - the client and token.:: - - nonces_and_timestamps_database = [ - (u'foo', 1234567890, u'rannoMstrInghere', u'bar') - ] - - def validate_timestamp_and_nonce(self, client_key, timestamp, nonce, - request_token=None, access_token=None): - - return ((client_key, timestamp, nonce, request_token or access_token) - not in self.nonces_and_timestamps_database) - - This method is used by - - * AccessTokenEndpoint - * RequestTokenEndpoint - * ResourceEndpoint - * SignatureOnlyEndpoint - """ - raise self._subclass_must_implement("validate_timestamp_and_nonce") - - def validate_redirect_uri(self, client_key, redirect_uri, request): - """Validates the client supplied redirection URI. - - :param client_key: The client/consumer key. - :param redirect_uri: The URI the client which to redirect back to after - authorization is successful. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - It is highly recommended that OAuth providers require their clients - to register all redirection URIs prior to using them in requests and - register them as absolute URIs. See `CWE-601`_ for more information - about open redirection attacks. - - By requiring registration of all redirection URIs it should be - straightforward for the provider to verify whether the supplied - redirect_uri is valid or not. - - Alternatively per `Section 2.1`_ of the spec: - - "If the client is unable to receive callbacks or a callback URI has - been established via other means, the parameter value MUST be set to - "oob" (case sensitive), to indicate an out-of-band configuration." - - .. _`CWE-601`: http://cwe.mitre.org/top25/index.html#CWE-601 - .. _`Section 2.1`: https://tools.ietf.org/html/rfc5849#section-2.1 - - This method is used by - - * RequestTokenEndpoint - """ - raise self._subclass_must_implement("validate_redirect_uri") - - def validate_requested_realms(self, client_key, realms, request): - """Validates that the client may request access to the realm. - - :param client_key: The client/consumer key. - :param realms: The list of realms that client is requesting access to. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - This method is invoked when obtaining a request token and should - tie a realm to the request token and after user authorization - this realm restriction should transfer to the access token. - - This method is used by - - * RequestTokenEndpoint - """ - raise self._subclass_must_implement("validate_requested_realms") - - def validate_realms(self, client_key, token, request, uri=None, - realms=None): - """Validates access to the request realm. - - :param client_key: The client/consumer key. - :param token: A request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param uri: The URI the realms is protecting. - :param realms: A list of realms that must have been granted to - the access token. - :returns: True or False - - How providers choose to use the realm parameter is outside the OAuth - specification but it is commonly used to restrict access to a subset - of protected resources such as "photos". - - realms is a convenience parameter which can be used to provide - a per view method pre-defined list of allowed realms. - - Can be as simple as:: - - from your_datastore import RequestToken - request_token = RequestToken.get(token, None) - - if not request_token: - return False - return set(request_token.realms).issuperset(set(realms)) - - This method is used by - - * ResourceEndpoint - """ - raise self._subclass_must_implement("validate_realms") - - def validate_verifier(self, client_key, token, verifier, request): - """Validates a verification code. - - :param client_key: The client/consumer key. - :param token: A request token string. - :param verifier: The authorization verifier string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - OAuth providers issue a verification code to clients after the - resource owner authorizes access. This code is used by the client to - obtain token credentials and the provider must verify that the - verifier is valid and associated with the client as well as the - resource owner. - - Verifier validation should be done in near constant time - (to avoid verifier enumeration). To achieve this we need a - constant time string comparison which is provided by OAuthLib - in ``oauthlib.common.safe_string_equals``:: - - from your_datastore import Verifier - correct_verifier = Verifier.get(client_key, request_token) - from oauthlib.common import safe_string_equals - return safe_string_equals(verifier, correct_verifier) - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("validate_verifier") - - def verify_request_token(self, token, request): - """Verify that the given OAuth1 request token is valid. - - :param token: A request token string. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - This method is used only in AuthorizationEndpoint to check whether the - oauth_token given in the authorization URL is valid or not. - This request is not signed and thus similar ``validate_request_token`` - method can not be used. - - This method is used by - - * AuthorizationEndpoint - """ - raise self._subclass_must_implement("verify_request_token") - - def verify_realms(self, token, realms, request): - """Verify authorized realms to see if they match those given to token. - - :param token: An access token string. - :param realms: A list of realms the client attempts to access. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :returns: True or False - - This prevents the list of authorized realms sent by the client during - the authorization step to be altered to include realms outside what - was bound with the request token. - - Can be as simple as:: - - valid_realms = self.get_realms(token) - return all((r in valid_realms for r in realms)) - - This method is used by - - * AuthorizationEndpoint - """ - raise self._subclass_must_implement("verify_realms") - - def save_access_token(self, token, request): - """Save an OAuth1 access token. - - :param token: A dict with token credentials. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - The token dictionary will at minimum include - - * ``oauth_token`` the access token string. - * ``oauth_token_secret`` the token specific secret used in signing. - * ``oauth_authorized_realms`` a space separated list of realms. - - Client key can be obtained from ``request.client_key``. - - The list of realms (not joined string) can be obtained from - ``request.realm``. - - This method is used by - - * AccessTokenEndpoint - """ - raise self._subclass_must_implement("save_access_token") - - def save_request_token(self, token, request): - """Save an OAuth1 request token. - - :param token: A dict with token credentials. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - The token dictionary will at minimum include - - * ``oauth_token`` the request token string. - * ``oauth_token_secret`` the token specific secret used in signing. - * ``oauth_callback_confirmed`` the string ``true``. - - Client key can be obtained from ``request.client_key``. - - This method is used by - - * RequestTokenEndpoint - """ - raise self._subclass_must_implement("save_request_token") - - def save_verifier(self, token, verifier, request): - """Associate an authorization verifier with a request token. - - :param token: A request token string. - :param verifier: A dictionary containing the oauth_verifier and - oauth_token - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - We need to associate verifiers with tokens for validation during the - access token request. - - Note that unlike save_x_token token here is the ``oauth_token`` token - string from the request token saved previously. - - This method is used by - - * AuthorizationEndpoint - """ - raise self._subclass_must_implement("save_verifier") diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/signature.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/signature.py deleted file mode 100644 index 9cb1a51..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/signature.py +++ /dev/null @@ -1,852 +0,0 @@ -""" -This module is an implementation of `section 3.4`_ of RFC 5849. - -**Usage** - -Steps for signing a request: - -1. Collect parameters from the request using ``collect_parameters``. -2. Normalize those parameters using ``normalize_parameters``. -3. Create the *base string URI* using ``base_string_uri``. -4. Create the *signature base string* from the above three components - using ``signature_base_string``. -5. Pass the *signature base string* and the client credentials to one of the - sign-with-client functions. The HMAC-based signing functions needs - client credentials with secrets. The RSA-based signing functions needs - client credentials with an RSA private key. - -To verify a request, pass the request and credentials to one of the verify -functions. The HMAC-based signing functions needs the shared secrets. The -RSA-based verify functions needs the RSA public key. - -**Scope** - -All of the functions in this module should be considered internal to OAuthLib, -since they are not imported into the "oauthlib.oauth1" module. Programs using -OAuthLib should not use directly invoke any of the functions in this module. - -**Deprecated functions** - -The "sign_" methods that are not "_with_client" have been deprecated. They may -be removed in a future release. Since they are all internal functions, this -should have no impact on properly behaving programs. - -.. _`section 3.4`: https://tools.ietf.org/html/rfc5849#section-3.4 -""" - -import binascii -import hashlib -import hmac -import ipaddress -import logging -import urllib.parse as urlparse -import warnings - -from oauthlib.common import extract_params, safe_string_equals, urldecode - -from . import utils - -log = logging.getLogger(__name__) - - -# ==== Common functions ========================================== - -def signature_base_string( - http_method: str, - base_str_uri: str, - normalized_encoded_request_parameters: str) -> str: - """ - Construct the signature base string. - - The *signature base string* is the value that is calculated and signed by - the client. It is also independently calculated by the server to verify - the signature, and therefore must produce the exact same value at both - ends or the signature won't verify. - - The rules for calculating the *signature base string* are defined in - section 3.4.1.1`_ of RFC 5849. - - .. _`section 3.4.1.1`: https://tools.ietf.org/html/rfc5849#section-3.4.1.1 - """ - - # The signature base string is constructed by concatenating together, - # in order, the following HTTP request elements: - - # 1. The HTTP request method in uppercase. For example: "HEAD", - # "GET", "POST", etc. If the request uses a custom HTTP method, it - # MUST be encoded (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - base_string = utils.escape(http_method.upper()) - - # 2. An "&" character (ASCII code 38). - base_string += '&' - - # 3. The base string URI from `Section 3.4.1.2`_, after being encoded - # (`Section 3.6`_). - # - # .. _`Section 3.4.1.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.2 - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - base_string += utils.escape(base_str_uri) - - # 4. An "&" character (ASCII code 38). - base_string += '&' - - # 5. The request parameters as normalized in `Section 3.4.1.3.2`_, after - # being encoded (`Section 3.6`). - # - # .. _`Sec 3.4.1.3.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - base_string += utils.escape(normalized_encoded_request_parameters) - - return base_string - - -def base_string_uri(uri: str, host: str = None) -> str: - """ - Calculates the _base string URI_. - - The *base string URI* is one of the components that make up the - *signature base string*. - - The ``host`` is optional. If provided, it is used to override any host and - port values in the ``uri``. The value for ``host`` is usually extracted from - the "Host" request header from the HTTP request. Its value may be just the - hostname, or the hostname followed by a colon and a TCP/IP port number - (hostname:port). If a value for the``host`` is provided but it does not - contain a port number, the default port number is used (i.e. if the ``uri`` - contained a port number, it will be discarded). - - The rules for calculating the *base string URI* are defined in - section 3.4.1.2`_ of RFC 5849. - - .. _`section 3.4.1.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.2 - - :param uri: URI - :param host: hostname with optional port number, separated by a colon - :return: base string URI - """ - - if not isinstance(uri, str): - raise ValueError('uri must be a string.') - - # FIXME: urlparse does not support unicode - output = urlparse.urlparse(uri) - scheme = output.scheme - hostname = output.hostname - port = output.port - path = output.path - params = output.params - - # The scheme, authority, and path of the request resource URI `RFC3986` - # are included by constructing an "http" or "https" URI representing - # the request resource (without the query or fragment) as follows: - # - # .. _`RFC3986`: https://tools.ietf.org/html/rfc3986 - - if not scheme: - raise ValueError('missing scheme') - - # Per `RFC 2616 section 5.1.2`_: - # - # Note that the absolute path cannot be empty; if none is present in - # the original URI, it MUST be given as "/" (the server root). - # - # .. _`RFC 2616 5.1.2`: https://tools.ietf.org/html/rfc2616#section-5.1.2 - if not path: - path = '/' - - # 1. The scheme and host MUST be in lowercase. - scheme = scheme.lower() - # Note: if ``host`` is used, it will be converted to lowercase below - if hostname is not None: - hostname = hostname.lower() - - # 2. The host and port values MUST match the content of the HTTP - # request "Host" header field. - if host is not None: - # NOTE: override value in uri with provided host - # Host argument is equal to netloc. It means it's missing scheme. - # Add it back, before parsing. - - host = host.lower() - host = f"{scheme}://{host}" - output = urlparse.urlparse(host) - hostname = output.hostname - port = output.port - - # 3. The port MUST be included if it is not the default port for the - # scheme, and MUST be excluded if it is the default. Specifically, - # the port MUST be excluded when making an HTTP request `RFC2616`_ - # to port 80 or when making an HTTPS request `RFC2818`_ to port 443. - # All other non-default port numbers MUST be included. - # - # .. _`RFC2616`: https://tools.ietf.org/html/rfc2616 - # .. _`RFC2818`: https://tools.ietf.org/html/rfc2818 - - if hostname is None: - raise ValueError('missing host') - - # NOTE: Try guessing if we're dealing with IP or hostname - try: - hostname = ipaddress.ip_address(hostname) - except ValueError: - pass - - if isinstance(hostname, ipaddress.IPv6Address): - hostname = f"[{hostname}]" - elif isinstance(hostname, ipaddress.IPv4Address): - hostname = f"{hostname}" - - if port is not None and not (0 < port <= 65535): - raise ValueError('port out of range') # 16-bit unsigned ints - if (scheme, port) in (('http', 80), ('https', 443)): - netloc = hostname # default port for scheme: exclude port num - elif port: - netloc = f"{hostname}:{port}" # use hostname:port - else: - netloc = hostname - - v = urlparse.urlunparse((scheme, netloc, path, params, '', '')) - - # RFC 5849 does not specify which characters are encoded in the - # "base string URI", nor how they are encoded - which is very bad, since - # the signatures won't match if there are any differences. Fortunately, - # most URIs only use characters that are clearly not encoded (e.g. digits - # and A-Z, a-z), so have avoided any differences between implementations. - # - # The example from its section 3.4.1.2 illustrates that spaces in - # the path are percent encoded. But it provides no guidance as to what other - # characters (if any) must be encoded (nor how); nor if characters in the - # other components are to be encoded or not. - # - # This implementation **assumes** that **only** the space is percent-encoded - # and it is done to the entire value (not just to spaces in the path). - # - # This code may need to be changed if it is discovered that other characters - # are expected to be encoded. - # - # Note: the "base string URI" returned by this function will be encoded - # again before being concatenated into the "signature base string". So any - # spaces in the URI will actually appear in the "signature base string" - # as "%2520" (the "%20" further encoded according to section 3.6). - - return v.replace(' ', '%20') - - -def collect_parameters(uri_query='', body=None, headers=None, - exclude_oauth_signature=True, with_realm=False): - """ - Gather the request parameters from all the parameter sources. - - This function is used to extract all the parameters, which are then passed - to ``normalize_parameters`` to produce one of the components that make up - the *signature base string*. - - Parameters starting with `oauth_` will be unescaped. - - Body parameters must be supplied as a dict, a list of 2-tuples, or a - form encoded query string. - - Headers must be supplied as a dict. - - The rules where the parameters must be sourced from are defined in - `section 3.4.1.3.1`_ of RFC 5849. - - .. _`Sec 3.4.1.3.1`: https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1 - """ - if body is None: - body = [] - headers = headers or {} - params = [] - - # The parameters from the following sources are collected into a single - # list of name/value pairs: - - # * The query component of the HTTP request URI as defined by - # `RFC3986, Section 3.4`_. The query component is parsed into a list - # of name/value pairs by treating it as an - # "application/x-www-form-urlencoded" string, separating the names - # and values and decoding them as defined by W3C.REC-html40-19980424 - # `W3C-HTML-4.0`_, Section 17.13.4. - # - # .. _`RFC3986, Sec 3.4`: https://tools.ietf.org/html/rfc3986#section-3.4 - # .. _`W3C-HTML-4.0`: https://www.w3.org/TR/1998/REC-html40-19980424/ - if uri_query: - params.extend(urldecode(uri_query)) - - # * The OAuth HTTP "Authorization" header field (`Section 3.5.1`_) if - # present. The header's content is parsed into a list of name/value - # pairs excluding the "realm" parameter if present. The parameter - # values are decoded as defined by `Section 3.5.1`_. - # - # .. _`Section 3.5.1`: https://tools.ietf.org/html/rfc5849#section-3.5.1 - if headers: - headers_lower = {k.lower(): v for k, v in headers.items()} - authorization_header = headers_lower.get('authorization') - if authorization_header is not None: - params.extend([i for i in utils.parse_authorization_header( - authorization_header) if with_realm or i[0] != 'realm']) - - # * The HTTP request entity-body, but only if all of the following - # conditions are met: - # * The entity-body is single-part. - # - # * The entity-body follows the encoding requirements of the - # "application/x-www-form-urlencoded" content-type as defined by - # W3C.REC-html40-19980424 `W3C-HTML-4.0`_. - - # * The HTTP request entity-header includes the "Content-Type" - # header field set to "application/x-www-form-urlencoded". - # - # .. _`W3C-HTML-4.0`: https://www.w3.org/TR/1998/REC-html40-19980424/ - - # TODO: enforce header param inclusion conditions - bodyparams = extract_params(body) or [] - params.extend(bodyparams) - - # ensure all oauth params are unescaped - unescaped_params = [] - for k, v in params: - if k.startswith('oauth_'): - v = utils.unescape(v) - unescaped_params.append((k, v)) - - # The "oauth_signature" parameter MUST be excluded from the signature - # base string if present. - if exclude_oauth_signature: - unescaped_params = list(filter(lambda i: i[0] != 'oauth_signature', - unescaped_params)) - - return unescaped_params - - -def normalize_parameters(params) -> str: - """ - Calculate the normalized request parameters. - - The *normalized request parameters* is one of the components that make up - the *signature base string*. - - The rules for parameter normalization are defined in `section 3.4.1.3.2`_ of - RFC 5849. - - .. _`Sec 3.4.1.3.2`: https://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - """ - - # The parameters collected in `Section 3.4.1.3`_ are normalized into a - # single string as follows: - # - # .. _`Section 3.4.1.3`: https://tools.ietf.org/html/rfc5849#section-3.4.1.3 - - # 1. First, the name and value of each parameter are encoded - # (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - key_values = [(utils.escape(k), utils.escape(v)) for k, v in params] - - # 2. The parameters are sorted by name, using ascending byte value - # ordering. If two or more parameters share the same name, they - # are sorted by their value. - key_values.sort() - - # 3. The name of each parameter is concatenated to its corresponding - # value using an "=" character (ASCII code 61) as a separator, even - # if the value is empty. - parameter_parts = ['{}={}'.format(k, v) for k, v in key_values] - - # 4. The sorted name/value pairs are concatenated together into a - # single string by using an "&" character (ASCII code 38) as - # separator. - return '&'.join(parameter_parts) - - -# ==== Common functions for HMAC-based signature methods ========= - -def _sign_hmac(hash_algorithm_name: str, - sig_base_str: str, - client_secret: str, - resource_owner_secret: str): - """ - **HMAC-SHA256** - - The "HMAC-SHA256" signature method uses the HMAC-SHA256 signature - algorithm as defined in `RFC4634`_:: - - digest = HMAC-SHA256 (key, text) - - Per `section 3.4.2`_ of the spec. - - .. _`RFC4634`: https://tools.ietf.org/html/rfc4634 - .. _`section 3.4.2`: https://tools.ietf.org/html/rfc5849#section-3.4.2 - """ - - # The HMAC-SHA256 function variables are used in following way: - - # text is set to the value of the signature base string from - # `Section 3.4.1.1`_. - # - # .. _`Section 3.4.1.1`: https://tools.ietf.org/html/rfc5849#section-3.4.1.1 - text = sig_base_str - - # key is set to the concatenated values of: - # 1. The client shared-secret, after being encoded (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - key = utils.escape(client_secret or '') - - # 2. An "&" character (ASCII code 38), which MUST be included - # even when either secret is empty. - key += '&' - - # 3. The token shared-secret, after being encoded (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - key += utils.escape(resource_owner_secret or '') - - # Get the hashing algorithm to use - - m = { - 'SHA-1': hashlib.sha1, - 'SHA-256': hashlib.sha256, - 'SHA-512': hashlib.sha512, - } - hash_alg = m[hash_algorithm_name] - - # Calculate the signature - - # FIXME: HMAC does not support unicode! - key_utf8 = key.encode('utf-8') - text_utf8 = text.encode('utf-8') - signature = hmac.new(key_utf8, text_utf8, hash_alg) - - # digest is used to set the value of the "oauth_signature" protocol - # parameter, after the result octet string is base64-encoded - # per `RFC2045, Section 6.8`. - # - # .. _`RFC2045, Sec 6.8`: https://tools.ietf.org/html/rfc2045#section-6.8 - return binascii.b2a_base64(signature.digest())[:-1].decode('utf-8') - - -def _verify_hmac(hash_algorithm_name: str, - request, - client_secret=None, - resource_owner_secret=None): - """Verify a HMAC-SHA1 signature. - - Per `section 3.4`_ of the spec. - - .. _`section 3.4`: https://tools.ietf.org/html/rfc5849#section-3.4 - - To satisfy `RFC2616 section 5.2`_ item 1, the request argument's uri - attribute MUST be an absolute URI whose netloc part identifies the - origin server or gateway on which the resource resides. Any Host - item of the request argument's headers dict attribute will be - ignored. - - .. _`RFC2616 section 5.2`: https://tools.ietf.org/html/rfc2616#section-5.2 - - """ - norm_params = normalize_parameters(request.params) - bs_uri = base_string_uri(request.uri) - sig_base_str = signature_base_string(request.http_method, bs_uri, - norm_params) - signature = _sign_hmac(hash_algorithm_name, sig_base_str, - client_secret, resource_owner_secret) - match = safe_string_equals(signature, request.signature) - if not match: - log.debug('Verify HMAC failed: signature base string: %s', sig_base_str) - return match - - -# ==== HMAC-SHA1 ================================================= - -def sign_hmac_sha1_with_client(sig_base_str, client): - return _sign_hmac('SHA-1', sig_base_str, - client.client_secret, client.resource_owner_secret) - - -def verify_hmac_sha1(request, client_secret=None, resource_owner_secret=None): - return _verify_hmac('SHA-1', request, client_secret, resource_owner_secret) - - -def sign_hmac_sha1(base_string, client_secret, resource_owner_secret): - """ - Deprecated function for calculating a HMAC-SHA1 signature. - - This function has been replaced by invoking ``sign_hmac`` with "SHA-1" - as the hash algorithm name. - - This function was invoked by sign_hmac_sha1_with_client and - test_signatures.py, but does any application invoke it directly? If not, - it can be removed. - """ - warnings.warn('use sign_hmac_sha1_with_client instead of sign_hmac_sha1', - DeprecationWarning) - - # For some unknown reason, the original implementation assumed base_string - # could either be bytes or str. The signature base string calculating - # function always returned a str, so the new ``sign_rsa`` only expects that. - - base_string = base_string.decode('ascii') \ - if isinstance(base_string, bytes) else base_string - - return _sign_hmac('SHA-1', base_string, - client_secret, resource_owner_secret) - - -# ==== HMAC-SHA256 =============================================== - -def sign_hmac_sha256_with_client(sig_base_str, client): - return _sign_hmac('SHA-256', sig_base_str, - client.client_secret, client.resource_owner_secret) - - -def verify_hmac_sha256(request, client_secret=None, resource_owner_secret=None): - return _verify_hmac('SHA-256', request, - client_secret, resource_owner_secret) - - -def sign_hmac_sha256(base_string, client_secret, resource_owner_secret): - """ - Deprecated function for calculating a HMAC-SHA256 signature. - - This function has been replaced by invoking ``sign_hmac`` with "SHA-256" - as the hash algorithm name. - - This function was invoked by sign_hmac_sha256_with_client and - test_signatures.py, but does any application invoke it directly? If not, - it can be removed. - """ - warnings.warn( - 'use sign_hmac_sha256_with_client instead of sign_hmac_sha256', - DeprecationWarning) - - # For some unknown reason, the original implementation assumed base_string - # could either be bytes or str. The signature base string calculating - # function always returned a str, so the new ``sign_rsa`` only expects that. - - base_string = base_string.decode('ascii') \ - if isinstance(base_string, bytes) else base_string - - return _sign_hmac('SHA-256', base_string, - client_secret, resource_owner_secret) - - -# ==== HMAC-SHA512 =============================================== - -def sign_hmac_sha512_with_client(sig_base_str: str, - client): - return _sign_hmac('SHA-512', sig_base_str, - client.client_secret, client.resource_owner_secret) - - -def verify_hmac_sha512(request, - client_secret: str = None, - resource_owner_secret: str = None): - return _verify_hmac('SHA-512', request, - client_secret, resource_owner_secret) - - -# ==== Common functions for RSA-based signature methods ========== - -_jwt_rsa = {} # cache of RSA-hash implementations from PyJWT jwt.algorithms - - -def _get_jwt_rsa_algorithm(hash_algorithm_name: str): - """ - Obtains an RSAAlgorithm object that implements RSA with the hash algorithm. - - This method maintains the ``_jwt_rsa`` cache. - - Returns a jwt.algorithm.RSAAlgorithm. - """ - if hash_algorithm_name in _jwt_rsa: - # Found in cache: return it - return _jwt_rsa[hash_algorithm_name] - else: - # Not in cache: instantiate a new RSAAlgorithm - - # PyJWT has some nice pycrypto/cryptography abstractions - import jwt.algorithms as jwt_algorithms - m = { - 'SHA-1': jwt_algorithms.hashes.SHA1, - 'SHA-256': jwt_algorithms.hashes.SHA256, - 'SHA-512': jwt_algorithms.hashes.SHA512, - } - v = jwt_algorithms.RSAAlgorithm(m[hash_algorithm_name]) - - _jwt_rsa[hash_algorithm_name] = v # populate cache - - return v - - -def _prepare_key_plus(alg, keystr): - """ - Prepare a PEM encoded key (public or private), by invoking the `prepare_key` - method on alg with the keystr. - - The keystr should be a string or bytes. If the keystr is bytes, it is - decoded as UTF-8 before being passed to prepare_key. Otherwise, it - is passed directly. - """ - if isinstance(keystr, bytes): - keystr = keystr.decode('utf-8') - return alg.prepare_key(keystr) - - -def _sign_rsa(hash_algorithm_name: str, - sig_base_str: str, - rsa_private_key: str): - """ - Calculate the signature for an RSA-based signature method. - - The ``alg`` is used to calculate the digest over the signature base string. - For the "RSA_SHA1" signature method, the alg must be SHA-1. While OAuth 1.0a - only defines the RSA-SHA1 signature method, this function can be used for - other non-standard signature methods that only differ from RSA-SHA1 by the - digest algorithm. - - Signing for the RSA-SHA1 signature method is defined in - `section 3.4.3`_ of RFC 5849. - - The RSASSA-PKCS1-v1_5 signature algorithm used defined by - `RFC3447, Section 8.2`_ (also known as PKCS#1), with the `alg` as the - hash function for EMSA-PKCS1-v1_5. To - use this method, the client MUST have established client credentials - with the server that included its RSA public key (in a manner that is - beyond the scope of this specification). - - .. _`section 3.4.3`: https://tools.ietf.org/html/rfc5849#section-3.4.3 - .. _`RFC3447, Section 8.2`: https://tools.ietf.org/html/rfc3447#section-8.2 - """ - - # Get the implementation of RSA-hash - - alg = _get_jwt_rsa_algorithm(hash_algorithm_name) - - # Check private key - - if not rsa_private_key: - raise ValueError('rsa_private_key required for RSA with ' + - alg.hash_alg.name + ' signature method') - - # Convert the "signature base string" into a sequence of bytes (M) - # - # The signature base string, by definition, only contain printable US-ASCII - # characters. So encoding it as 'ascii' will always work. It will raise a - # ``UnicodeError`` if it can't encode the value, which will never happen - # if the signature base string was created correctly. Therefore, using - # 'ascii' encoding provides an extra level of error checking. - - m = sig_base_str.encode('ascii') - - # Perform signing: S = RSASSA-PKCS1-V1_5-SIGN (K, M) - - key = _prepare_key_plus(alg, rsa_private_key) - s = alg.sign(m, key) - - # base64-encoded per RFC2045 section 6.8. - # - # 1. While b2a_base64 implements base64 defined by RFC 3548. As used here, - # it is the same as base64 defined by RFC 2045. - # 2. b2a_base64 includes a "\n" at the end of its result ([:-1] removes it) - # 3. b2a_base64 produces a binary string. Use decode to produce a str. - # It should only contain only printable US-ASCII characters. - - return binascii.b2a_base64(s)[:-1].decode('ascii') - - -def _verify_rsa(hash_algorithm_name: str, - request, - rsa_public_key: str): - """ - Verify a base64 encoded signature for a RSA-based signature method. - - The ``alg`` is used to calculate the digest over the signature base string. - For the "RSA_SHA1" signature method, the alg must be SHA-1. While OAuth 1.0a - only defines the RSA-SHA1 signature method, this function can be used for - other non-standard signature methods that only differ from RSA-SHA1 by the - digest algorithm. - - Verification for the RSA-SHA1 signature method is defined in - `section 3.4.3`_ of RFC 5849. - - .. _`section 3.4.3`: https://tools.ietf.org/html/rfc5849#section-3.4.3 - - To satisfy `RFC2616 section 5.2`_ item 1, the request argument's uri - attribute MUST be an absolute URI whose netloc part identifies the - origin server or gateway on which the resource resides. Any Host - item of the request argument's headers dict attribute will be - ignored. - - .. _`RFC2616 Sec 5.2`: https://tools.ietf.org/html/rfc2616#section-5.2 - """ - - try: - # Calculate the *signature base string* of the actual received request - - norm_params = normalize_parameters(request.params) - bs_uri = base_string_uri(request.uri) - sig_base_str = signature_base_string( - request.http_method, bs_uri, norm_params) - - # Obtain the signature that was received in the request - - sig = binascii.a2b_base64(request.signature.encode('ascii')) - - # Get the implementation of RSA-with-hash algorithm to use - - alg = _get_jwt_rsa_algorithm(hash_algorithm_name) - - # Verify the received signature was produced by the private key - # corresponding to the `rsa_public_key`, signing exact same - # *signature base string*. - # - # RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S) - - key = _prepare_key_plus(alg, rsa_public_key) - - # The signature base string only contain printable US-ASCII characters. - # The ``encode`` method with the default "strict" error handling will - # raise a ``UnicodeError`` if it can't encode the value. So using - # "ascii" will always work. - - verify_ok = alg.verify(sig_base_str.encode('ascii'), key, sig) - - if not verify_ok: - log.debug('Verify failed: RSA with ' + alg.hash_alg.name + - ': signature base string=%s' + sig_base_str) - return verify_ok - - except UnicodeError: - # A properly encoded signature will only contain printable US-ASCII - # characters. The ``encode`` method with the default "strict" error - # handling will raise a ``UnicodeError`` if it can't decode the value. - # So using "ascii" will work with all valid signatures. But an - # incorrectly or maliciously produced signature could contain other - # bytes. - # - # This implementation treats that situation as equivalent to the - # signature verification having failed. - # - # Note: simply changing the encode to use 'utf-8' will not remove this - # case, since an incorrect or malicious request can contain bytes which - # are invalid as UTF-8. - return False - - -# ==== RSA-SHA1 ================================================== - -def sign_rsa_sha1_with_client(sig_base_str, client): - # For some reason, this function originally accepts both str and bytes. - # This behaviour is preserved here. But won't be done for the newer - # sign_rsa_sha256_with_client and sign_rsa_sha512_with_client functions, - # which will only accept strings. The function to calculate a - # "signature base string" always produces a string, so it is not clear - # why support for bytes would ever be needed. - sig_base_str = sig_base_str.decode('ascii')\ - if isinstance(sig_base_str, bytes) else sig_base_str - - return _sign_rsa('SHA-1', sig_base_str, client.rsa_key) - - -def verify_rsa_sha1(request, rsa_public_key: str): - return _verify_rsa('SHA-1', request, rsa_public_key) - - -def sign_rsa_sha1(base_string, rsa_private_key): - """ - Deprecated function for calculating a RSA-SHA1 signature. - - This function has been replaced by invoking ``sign_rsa`` with "SHA-1" - as the hash algorithm name. - - This function was invoked by sign_rsa_sha1_with_client and - test_signatures.py, but does any application invoke it directly? If not, - it can be removed. - """ - warnings.warn('use _sign_rsa("SHA-1", ...) instead of sign_rsa_sha1', - DeprecationWarning) - - if isinstance(base_string, bytes): - base_string = base_string.decode('ascii') - - return _sign_rsa('SHA-1', base_string, rsa_private_key) - - -# ==== RSA-SHA256 ================================================ - -def sign_rsa_sha256_with_client(sig_base_str: str, client): - return _sign_rsa('SHA-256', sig_base_str, client.rsa_key) - - -def verify_rsa_sha256(request, rsa_public_key: str): - return _verify_rsa('SHA-256', request, rsa_public_key) - - -# ==== RSA-SHA512 ================================================ - -def sign_rsa_sha512_with_client(sig_base_str: str, client): - return _sign_rsa('SHA-512', sig_base_str, client.rsa_key) - - -def verify_rsa_sha512(request, rsa_public_key: str): - return _verify_rsa('SHA-512', request, rsa_public_key) - - -# ==== PLAINTEXT ================================================= - -def sign_plaintext_with_client(_signature_base_string, client): - # _signature_base_string is not used because the signature with PLAINTEXT - # is just the secret: it isn't a real signature. - return sign_plaintext(client.client_secret, client.resource_owner_secret) - - -def sign_plaintext(client_secret, resource_owner_secret): - """Sign a request using plaintext. - - Per `section 3.4.4`_ of the spec. - - The "PLAINTEXT" method does not employ a signature algorithm. It - MUST be used with a transport-layer mechanism such as TLS or SSL (or - sent over a secure channel with equivalent protections). It does not - utilize the signature base string or the "oauth_timestamp" and - "oauth_nonce" parameters. - - .. _`section 3.4.4`: https://tools.ietf.org/html/rfc5849#section-3.4.4 - - """ - - # The "oauth_signature" protocol parameter is set to the concatenated - # value of: - - # 1. The client shared-secret, after being encoded (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - signature = utils.escape(client_secret or '') - - # 2. An "&" character (ASCII code 38), which MUST be included even - # when either secret is empty. - signature += '&' - - # 3. The token shared-secret, after being encoded (`Section 3.6`_). - # - # .. _`Section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - signature += utils.escape(resource_owner_secret or '') - - return signature - - -def verify_plaintext(request, client_secret=None, resource_owner_secret=None): - """Verify a PLAINTEXT signature. - - Per `section 3.4`_ of the spec. - - .. _`section 3.4`: https://tools.ietf.org/html/rfc5849#section-3.4 - """ - signature = sign_plaintext(client_secret, resource_owner_secret) - match = safe_string_equals(signature, request.signature) - if not match: - log.debug('Verify PLAINTEXT failed') - return match diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/utils.py b/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/utils.py deleted file mode 100644 index 8fb8302..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/utils.py +++ /dev/null @@ -1,83 +0,0 @@ -""" -oauthlib.utils -~~~~~~~~~~~~~~ - -This module contains utility methods used by various parts of the OAuth -spec. -""" -import urllib.request as urllib2 - -from oauthlib.common import quote, unquote - -UNICODE_ASCII_CHARACTER_SET = ('abcdefghijklmnopqrstuvwxyz' - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' - '0123456789') - - -def filter_params(target): - """Decorator which filters params to remove non-oauth_* parameters - - Assumes the decorated method takes a params dict or list of tuples as its - first argument. - """ - def wrapper(params, *args, **kwargs): - params = filter_oauth_params(params) - return target(params, *args, **kwargs) - - wrapper.__doc__ = target.__doc__ - return wrapper - - -def filter_oauth_params(params): - """Removes all non oauth parameters from a dict or a list of params.""" - is_oauth = lambda kv: kv[0].startswith("oauth_") - if isinstance(params, dict): - return list(filter(is_oauth, list(params.items()))) - else: - return list(filter(is_oauth, params)) - - -def escape(u): - """Escape a unicode string in an OAuth-compatible fashion. - - Per `section 3.6`_ of the spec. - - .. _`section 3.6`: https://tools.ietf.org/html/rfc5849#section-3.6 - - """ - if not isinstance(u, str): - raise ValueError('Only unicode objects are escapable. ' + - 'Got {!r} of type {}.'.format(u, type(u))) - # Letters, digits, and the characters '_.-' are already treated as safe - # by urllib.quote(). We need to add '~' to fully support rfc5849. - return quote(u, safe=b'~') - - -def unescape(u): - if not isinstance(u, str): - raise ValueError('Only unicode objects are unescapable.') - return unquote(u) - - -def parse_keqv_list(l): - """A unicode-safe version of urllib2.parse_keqv_list""" - # With Python 2.6, parse_http_list handles unicode fine - return urllib2.parse_keqv_list(l) - - -def parse_http_list(u): - """A unicode-safe version of urllib2.parse_http_list""" - # With Python 2.6, parse_http_list handles unicode fine - return urllib2.parse_http_list(u) - - -def parse_authorization_header(authorization_header): - """Parse an OAuth authorization header into a list of 2-tuples""" - auth_scheme = 'OAuth '.lower() - if authorization_header[:len(auth_scheme)].lower().startswith(auth_scheme): - items = parse_http_list(authorization_header[len(auth_scheme):]) - try: - return list(parse_keqv_list(items).items()) - except (IndexError, ValueError): - pass - raise ValueError('Malformed authorization header') diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/__init__.py deleted file mode 100644 index deefb1a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -oauthlib.oauth2 -~~~~~~~~~~~~~~ - -This module is a wrapper for the most recent implementation of OAuth 2.0 Client -and Server classes. -""" -from .rfc6749.clients import ( - BackendApplicationClient, Client, LegacyApplicationClient, - MobileApplicationClient, ServiceApplicationClient, WebApplicationClient, -) -from .rfc6749.endpoints import ( - AuthorizationEndpoint, BackendApplicationServer, IntrospectEndpoint, - LegacyApplicationServer, MetadataEndpoint, MobileApplicationServer, - ResourceEndpoint, RevocationEndpoint, Server, TokenEndpoint, - WebApplicationServer, -) -from .rfc6749.errors import ( - AccessDeniedError, FatalClientError, InsecureTransportError, - InvalidClientError, InvalidClientIdError, InvalidGrantError, - InvalidRedirectURIError, InvalidRequestError, InvalidRequestFatalError, - InvalidScopeError, MismatchingRedirectURIError, MismatchingStateError, - MissingClientIdError, MissingCodeError, MissingRedirectURIError, - MissingResponseTypeError, MissingTokenError, MissingTokenTypeError, - OAuth2Error, ServerError, TemporarilyUnavailableError, TokenExpiredError, - UnauthorizedClientError, UnsupportedGrantTypeError, - UnsupportedResponseTypeError, UnsupportedTokenTypeError, -) -from .rfc6749.grant_types import ( - AuthorizationCodeGrant, ClientCredentialsGrant, ImplicitGrant, - RefreshTokenGrant, ResourceOwnerPasswordCredentialsGrant, -) -from .rfc6749.request_validator import RequestValidator -from .rfc6749.tokens import BearerToken, OAuth2Token -from .rfc6749.utils import is_secure_transport -from .rfc8628.clients import DeviceClient diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e5069b20f7c568d6dc237f6c1e7e93b7e784817d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2194 zcmZvdOH<=U5P)qkHrNGkZ88`c^IQBsw_Cr4=Ab|rgfJsPV3Q}>>_gjNF1VfmHG-e=!!!V3l$l?f$ z;3$k@4sw`>JdVK_j>C8`Ct*$CBuruf3Rr|9mY{@FFon}FjWaNVvoMQuFo*Lnj|;GX z8fdr(i?{?!xD3m<0xP%*tGEVhxDM;M0UKC`GH${qZow9A!#3`~4pyKNd~d+2;x6ps z9_(QaYPb*kcmM~1E@{2OLpTh^DeE=Xp^isz6ub{w-{Bj06O4zfw|ET4YMj1^l`~)e zOgnnpYgzod5)5kTKb}45^ks`n4IQ&>F-?th?Oy1v%Y=602+eCTrIVf}n89pMfoWSg$T zZSPybh3oLg&TLOO(q)F%weAfxGR~bdPd9Z>e>Ck0y<^&7(rF8Wbxp?_?9K@j)0HJ7 z>+GeYa@Q5VSY2pTp7!%6hQXx#$ZXEcPeM4t&wa1LvBC_8lERrSnb8*PQs}mH9pQy? zwbDD?;^tG^iD$C2$Y(y1{-7L0lZ%n4!A!3D#k*>pgB=iV+-HQqYYe`Uwfb072b6F_BV$e8-$cM}-uFq#Pp9RV6ZnVM3NLLKr3F2zkPo z0*rJ$QO`&*PMQhAB%wek5=w+A!ZcxqFiV&t%o7#}8ex&JL|7)Q5LO9mgmuCOp-k8$ zY!S8GdL`$M50Fe?)p4Bs-)PbnFplF zc4oFcZb|WqWK@RwVXfXR!=aM?9TRn$Mfgvzwj5;D+cr0ZV=&L-)h~5fm4>>a)Lz?h z9aC2Cn0;4O7hKhSP{+ExU)kHOO75{8S6w#xEtA#G6&Ma`)n=31+-o)~?t?%0HoW`Z a(G?}BN{N`3I!L(5+01Yv7axx2;{OA4%E_$& diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__init__.py deleted file mode 100644 index 4b75a8a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -import functools -import logging - -from .endpoints.base import BaseEndpoint, catch_errors_and_unavailability -from .errors import ( - FatalClientError, OAuth2Error, ServerError, TemporarilyUnavailableError, -) - -log = logging.getLogger(__name__) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 02b773851c8d4e5ed8117922e93d92432ead2871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmZuuzmL-}7+;B+@21k&BHWU<`%YigZ;M79&DH}F@m zzyu@zQdXw>7nrcyp2WZ><>h;^^S)<4HJzr&)wkek{WU=7wzcenD-7SDiIB6 z$b&N2y~8r30~+yxh{{L|%VB^VAM%li%UC33BF5!dq-7c)2!9;GtS%$R662#}UorevnpSw}Qet;x8m zS(Qlu3N&3SomEPjRxnw+|7g}|)iLVXr?<{Uw#-kmtIKmgKTq%7S<%OPcOPgG_LFzS zz=foZV$$|cDq^b*2CbDg*h%45l8!J=R*W;dT}1u-l32peIdi@){J#EZH)MGr*PuJl zd-C`OM5DAb&9|Q)ggERL7qdRbn5qine!OmFWtHNlkKNH~=e(T3!Ia5Y&Z72N>BvDp zf}K4*^j}6EVh@R58`oezI0evsg0Un5oczFP{z7{0cX{~3ij5Lb)Ge#Ds=!)S+@6}k zRGKty_Hm=ADLRl{;Q}n0t=%a3EPr}Z7-r$PA=NFZ!4wY>@0(?Dh`7L*NoFz5n{A)G W-bebz-?y1Kh)@zI!908v%%Z;qhS3QC diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/errors.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/errors.cpython-310.pyc deleted file mode 100644 index 40935fac0efb2734f5552c879f599949912ebb64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14673 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 t$XD~pd~F{{d;BDAfP} diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/parameters.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/parameters.cpython-310.pyc deleted file mode 100644 index b85ad383984d29d6594eb920da1274ee6fcb9e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16850 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 I<%viC18*FjQY$5r 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/tokens.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/__pycache__/tokens.cpython-310.pyc deleted file mode 100644 index a07e02e63bb953d4359276aea90dd61fcafa04fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9930 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 PAJy@ni*80Y7NY+Ff1|`i diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__init__.py deleted file mode 100644 index 8fc6c95..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming OAuth 2.0 RFC6749. -""" -from .backend_application import BackendApplicationClient -from .base import AUTH_HEADER, BODY, URI_QUERY, Client -from .legacy_application import LegacyApplicationClient -from .mobile_application import MobileApplicationClient -from .service_application import ServiceApplicationClient -from .web_application import WebApplicationClient diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 9d6e49ee5af9ee82bb2d1ce5f5404fee4d262d95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 zcmZuv-EPw`7){!=Y14L{7!tkoZ7&v&g7}dTqT7mw1Wa_R&@3b?aop6J9fvqADi=Hf zFTf-4O1b5VH$YrryF*Z|pOxcdpZN2ad`I?rfurM_JDvY>9p{Hx{2w*Fc%dKlK||so zCvlS+cSQ}=T*K?UE6ucHiSI(MD~{8$1vl)UmwDyP}7Bmiv59^if~) z)`c@{fBqWCXjv{ei$hCBVKFC<9zT28-91r;fxTsP$~mx+QanysLA1kBgvLS_%b`$tf*k{;&z^P-e0_}4QVGJ-drfy8!6 hL5x|(N{qvNUA3NVyz<;MSM6!=+^#=xyLRlme*n@@?MeUu diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/backend_application.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/backend_application.cpython-310.pyc deleted file mode 100644 index 1db86f30e6e69a8295cc2137cd71c367b8207549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3509 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/legacy_application.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/legacy_application.cpython-310.pyc deleted file mode 100644 index 57b70405361f6957d472f9c297aa7ccec7a0b185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4398 zcmb7I&vV+e}lnV=EVRIv@xv$&EoQ zvbzvXm+d8<$*uQxdh8|tMgI<7d&loK zzxhwc|N6e?{hJ=@SAd5P@YDBkOS}s&@smdC&l(pE-%FZFkTz$*Mc{kC@{*mT^~y_H zJovJCv6JjR^Lp)U7ShLbI7nij*^qqKt`I zp7I&bOk{-2m>jdqNC{bJmdc5US;l$7lg?Nw7RyW*Gm%ZOE@8Qnmm;C3-#vmB?6`lQ zJ$>>a?ceWw(|}1me|0xkJdYF)jeO3tQ1LGcuFW^Tn{9oV3hW%?Y3pj1Px=@G?p^o* zr;+#<&7^S=eC3UO0_RoxVrQ?lx0`g5cCz=%zi55s1>OZg^Tz5&pYll*FCOK2Dq?Gy z+bY@t=#N-ljPRbtc6(N6vcgO`Q(VhJ#hl4`#udvWt>;oD*4{#Ml|?ho5}|l((nY`1 zVYtr!$GTVnyv&Fw)oh}o%rLXaE%Le$CK{0!GAkvHG}mlC<%(aY$uxqqm{El`P%^a^ z>8Z%sTmX8g?u1x-4w)|EDZ>gfDdCrb49dB}D%hzP+VB~JKO;63lWDquE5)Tq`2>C@ zi=qu`ePzZrl@g&%XBq_(qns|= z>#(QG%+Z2U7cR5gQc!3kVegjF_&Rc4i{hAT1P^6w4e}XB48W49lEq{Se+j5V!pbai zAiJR3hSw@r2N*6J@r4A5SY=`aClQY!aa%F}{ z2dC97V3ax|&OvQ93V71Df>!M+yJO<2>LThPUVZ~V{WfmK`_lW|U;1NTc+18={lEI) zW)CFepYxpHCKV=>3Fs0bPh$bYCWGvYNEgPS9@U?rwFGo{M!4^ zp9WJoRn3!tAp=)ZS=poQT_c@#g7 z;Q2vS0^HzuP?mr}8C?UUHHa{*=XAbMZCG}XOeEXi_Fu9a__ALaw(`!N#4UVWUAq|2 z?>G4A4{%$0pL@$z;=k`Lcks7?zd_P0JoP4K{LEhle-2Coon*8-Zpvu&se0h1M6Kmwgz4?4L!J ztB9^altx9h#eMb>A4f%MShsscJ53})HW3!~!7&Q>z|mQyFW4aANHRg1jTYBy1UbWJ zDDu=1J?K9ehFA6zS)3LLM?O;rgET*3!*f;eA(^e=SnJQ>dU{y8_{RO#XxJ#OlrM6i z$)i~nxFt+LitIrn;wtuL@pU6X)Vk(rtVLPfDl!P|tv=#9A)9yCHUnF*mOag8$#tU| zz{maf05N-lHVK6Qx~jRr=pb?a?$ywD{nJ(OA4{3?vVhTUWtuqZMO=JrgQ;FD;HT1w zRrWbHCti4`W;DA~%t;Hn6cdqmK zR^=~!Ox?Neq5r6nl9S79IjpTh^Hny4*1=bLwz`|vN+H*-IAcRN=Lns$i$}sxw$DYH zuCYTuR2~J$+FBQdt>zq)k?U{>NP=iMw7pwMFb;>C^hVO4JC>NQ7-%>=sqr4IfB5hr z8!L(Cl}z58d*~1&mAR>itqrYYl;EA-wBVq-z%c+x-R<45wqKoV%4i7*n04QH+8s;T zJ%n-Y{BYVGMGDWBmrnoCodOq{@8WQgCfz@7@6z1>bXrNcSMm8NB;Rv#tdw`HhxJfoO^wO*$zWiRFS;+d8TX}{45nt5R;|NNP|$2;I(ode-U_NS;{PW} zI}SYphu$QLa{s#u!JDBhYJygs z4eY&LwMXxNKsQ>XZqv$TL6F}3P!%DMwE7~u@7 hsCl*@)}-5gEJ*G5oyHI8KLDD#(7@l{-S_V_{|j&0L(TvI diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/mobile_application.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/mobile_application.cpython-310.pyc deleted file mode 100644 index e0377d2af167016b73b8c05552b70a14e8aceee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9201 zcmc&)OK%(373M>dZPiYbv}n+-E)>+16lrKl&P#~g$d9yc;|FY~1r!9s;mjpD(Qsxm zcSf`vrJDxms@=Efq6NC?raz)TgWIn17rIHmbMBoNMIv@#poBRhhcoAWzVjGISFWr! z@cL8p(cqtJjmE#}OZBycFCXHquH)b}jv8LmYX!}5>!>wuAGMneuk9@bOXKCE{`jdedpcl@2~!L{%dvh$;ek? z9C=wF1wJ{U@W*i=$1+Tv)Q>_D4aA9)_)(@r5Dk4-gi?CaTOCA+aHCLVV?P|?K2O9+ zbmDvT?ZF|W5WChj@#v#l#NS%|rUkV&TGKaTCsEQSCcf*Zb|O^_DsuW-oJjm8?P21C zshuVMH%+>wIbFFG_z=g%x7w?XZy(~Vws4S*qb97@@|s6&uXVI^seP&KUG$c`<*%DZ z%ibjqHo~VBuMJDBPT#l}_5DB|#v}$Ss+l;Wl}6)G#91Hbh0BaZmimGJj1)^pu#yoS z+Iv#4v|v|1d{>glp6H+QDR?Ey5?6}?)-th#c$h?K?If)d~QGReL z9M_df`F(`cIs$_wi3X_*#fi_SH$)oM_=udxV?Tr_DuX2|7E??DLiw<`QII4r)!QO+ zr@}@2j-6vrkj^-O5OfKJaBkM}4qO{Mhyg$K$!a4=m&h+NsZx$-1aOr2&p0%USD#d! zul=5$#+){6JLnYkQ-_St27r>sGE`#SPvJi>38R!1QCS>ENy--RmC78_8A2v<038tn zeBTC}7`~6<)F1oL$o0rM9hyu>$A}WgA6|!^ z`I0;z5FS-IOiob7u;cPX8)qsNeTYV`LG(lert60(^nwOpNZy|lIvw`3Njb4z>cWY_ zREn@CtSUJ`E?4>|L>sXeF`Ah`fa^~Dn&2Bui8BxpB?xSbC^6Y+RQ@Cke8l1Tt176W zqoiDID6m-MMdT-Bs3uhtL&$kJ3|lbl885OrCQnmn1IZWw<@ z4&?DoHViUkslhLjln_E=>=uQz5ed+W(AEe9=vUGtfsu#dN5cZ=fj&L-RSI+Hy2OO^ z`Pm4+DP4y$pMI^HhM*UW0NfPW8ib5IH4<9_IXiYvDH!F`I3j4A3t22%1U3nisbUsc zRhL7frEo4uI<-a%o*hGD6JHJP>@lY33HbPOfG;SHE3c>?jvZ!o5fwhXd z6T;G&o8|$+$Vk^yiEunF^JLvY6d;R{J**K?p@1DrWGrsgD35y+U~@D^rAIK#k24v1 zaRi?bkAjv49OAQ9F>Uwh_GB{IMkb86vm`JMT_boLJL#4H3X0xg9D}6)RNU;@`=yTi zEFOHL{Y`zwz7P){KDqng{^7?K+aUju)y**pmBs0+C_s^|iAXA+e^E{%gw!a?0#A&b z6Nymb5<0uRk zl0y^#9+IN>1c1mPuoj@9y8|V9J+zxLQoSBs*z0+bn^E726La)NJ4RAeav?WOkVysDdW@n@g?*9kP>wLVFVhJ*nc}su9v7P+=sWJQ zF1>YpT})Eub@2W}=ADoom+4+z36MILT1KRd=2O>k%wN z?Nti;yt;r;)yQ=iyNgT(Kyj78J=ATX*kC>>fN4ulC?ETMWML3cs|l=NlD(d`jO}~9 zUSY&^J6g7Mch2 zgAp#}lF;kzS1^mredERr-TBWFS%fzDKyAwn4msbbi;b*6r~s1cXY3lyPEi$ zn8^n<6XFD+>zz@W#%jOYl}{a-A1&nf425}@{H!qcfnj^KW~u|WMrVN*)^kg;RRjEk zLKMg9cd6&4jCpC|LWQ!p9I#=2x_9`~-H-4O3~?-2z68Y>x(`0>ATkG-Xggb?gFZgZ zV8_m9bsrXLSDf^G9=NKx7#?pG3|@l#gD5)a^qu78nV%>U!LsOEmawZ0!M@1DHI1S` zS-wmM767X|O2`dO&sNg@{zFDZrgz`$aiwgUEl$5T@+qh#sDP68#j2Pduh}_-_ zO15Y1%_pT{`o$#UdkS**H`>$7)s&bnbGgJH>P0q|5?YKUZ5)m+6?ibcQUijGmFbd_ z!C=}3+9Vh02EOYOK22A2$@oVj`98k>=gaOW8q4l5^HG;vnWldC_&wD{o8-i(V%u@# zsV+*|Nf(Q-f*8G*KOrk3gw#ZB)ZafZ}NRr;vAyhH(x>dlZD&3K&9_0G&$ zrYh(mv^J;~5nvDbo z$%7K(WI>H4od0F&sFZ8dY4c?9gn9&1VA!(UNx+Dhx6zUmn*{3K&~;IVoJ)lrYhHY- zf2mZJ_Z4#itb__$9sTu;Nw?;$zixp^B;BvhHZwJEK@Ohz&Xds-1e2kU=bNJMqLWCJ zr*L1~MxBD~9kfWaqNA->#eWsXiQ_AYmXIf<-8)HwZp){AnF(2R#(s$2*!L;{dq{%< zEg}b5P+n>#GAEcgr;6G)?&}LnZ*J;Xv{{3}9$EZ%XX{ zlG@a?xyd0i!yFiZAS;{Tv<#)Zw}vAaPU?n;M_7V$aMsO01d0%b7b)hjtmI`&-s^M5 zpkr|{PV<snyD4Wo_iTZEH3*r>#)f& zmt`Go_Rng}zp8z!j@i#=1*{GT6%RU`Su<1A6FfGN+%c?=BRpH7CjnToQb&SEH!9uO zuW={KeMEq{_JK;V;=Qr91yBQ!>|h}tiVyU2;u{O@$pdG$VYY#mc+zX5JSFbHLVJ{3t3;g=PT@- zT|9Cf5}u7wiRq)RRInMdR@PcQSW61~;yEeQ@2=00t!{*cvEGlo z)4~sB%F}5?J0%wO9Xi}+HXQ4n$Mkaz#TnGr`0_QH3D!6t>5+Zlty##+f);(ulQqxP zjk5aJhJWg)UTiAH9fc`tq%eEGAgSuKet)Bt&=kz`a6U}af3`?2;BfTgIEwKYIF-7i zwVf1ucr4+i!nHJ$CYS;nB?TU#_2E_gF#XBm6z$`8MWguZcVBH@#$fwwci~98FwZyI z_wPdmye~{I+IEOXN47m(wQY?x_1eoFrWU;9wx5A>lIq~Dn#C3!DK`xLYkG$M!O%(ec+}sMf8S#z%%%_ZnXsUW3;jmAiGXbjN5l5C7N2vT z^3iPW3`NXFp_lrc;miq`7)3rG@gQ*$5e6(Auzg30FpZfX?h2O$oO|4B4noP?Fo@HU z2zK$F$08Z-3y-co-2xTtqII6#zJ7)Fx0>IAOJlobX3ZqD(?GbP$G=$1)7=rRB>MO7L^#yZuKjpVsvW|;!^g?9WM8U%eSJ)7p@Y5roj0tDB5CC+Q&R| z6;&)vgf9+>>14>+&EM>>J_jq3?Mf#|tY(wpn42aRW9CB6ea_ODdn^fA&M`^faa|tA zn1m$Qc!x{=^g$+#EBw7rg4JRd_{FU6wwB5Lb|cqXeh&UcSwY) zwPHR3iNcLZ$Lpj)Pwa}s@mVZ(11Cu(XHfDUKLC{@tl{i(dIY)w1HPML8yEsH818e~ zDkQMM#v&PpX#&zcA-S6nqmnrhSqLqk@Q68ydY1(cB{$~^-#kP+2$g?@p%l1@yNJuPRxNR zj7jxR=I>3@n3N`lU7D0JmM0aAmB|9e1{F*8z1Aw5!!ra$M-7TzY)*32~H13|Vb_F-rc5ZSPHUhT}dmquZrL_&)l zKP2CU@kyn=Txax9zH21KKIpMwL!0cDz956rmQS>ksTBc)2d+Gb$da`Zj_;;tJ|QcI z`)INqL@j7ts@JBJ<^;rP|2_rP!qT!g07Px%n#v?_{|?7C!kCC>IM@QKb?f} zP`E>F()kkFTXQdlvmk8t`OxtPSoHLDu7iF4z@c!v!Fs(x7+%gVEjJt;7p92gluOMD zMU+qO-q|4&P8@+K5wNp(;4E9$kF}t2M~oDwQ=uFYX#OtA4-pwbcitvQIV2DAj)W{j zNemQdk3X^$UFOoW*b&AK!c?}k@m?;>ia6}`j`QfG9)i8gH`x}_jz1&mK*cxEbHv*b zt0}Zl<~of{hG3EK07(lk>*Wy^t!EiouQyDRDBkRJ<_YfTq}oyHK8gChu_Je5(C&Hg z-7tWqVIrkus$zEJsL;;(PRw(U+<^VTnwSN?#3UibwkP|F+hjUnqc4Eu61;T`F z%#d?EE3+19Cr`tDAp>WCvx57fTyEr!g@NH z+ekh|Hn*Y!*#Kn>-+kPt!bn{j}sim2_rYcZtK|cn&8N@_&hMyaa@xaGddQ zX<|n82?GDa<;ilqnv}fqBl8P$QjT80EP{UYGJY$QQuG>r7n15^A$lXJJ+3_g>U-IE zWMZZoozpXqOmE@qg@-F%^{R1i<>BgNWwQDM!z-nR`~WN0CaW*ujW5j4&wKUB;=Uno zP8J{6z4{Y#vf?$~GrXpny{l%MYIgBGW3uwNF{wpeVLUOBl9nDfvF@_B^rZZ7Em@qb zJu)AzfwrZ|qPL8vv4*#T--gBr7;y9hj5)WDR#$zb;P}Da|33tvP>& z5nPeHFk;7p7pimyL*PQ$S`M=-*YNihfB2nyM%I@L#jl>fb+iJ zj6yj>bM*h8SJn}~TK|*T1xOxfI<_6anJvoL4+z`~jlEbR0MQem2?YtKx%g@h6i>B4 zO57pA2OxII1~ME0Uyn5eLY|>zEgIHa>}_`Go%82UN_;9ec=MFa$N{cWbxckY8zWh} zDj;~LVCn(P)!hD@v^SAjQ`2-u@K;64kO^4na``g^Z8-m{5fS2O2*mw*!@g7UBpM;HXs! zB&Rr-d)X>P!QOi7cvy_x5VeSkM(VVHv3VVtlY9KVoOMWwifdID^mb&*dqjT>w4@}` zo8Io_LVA`Rk<@UI#0oOf2*{i}qawKH{DNho4CZ_)n$&BlQD|hYX(8B71t8%-!lqQA zqxx1=5oZ1a`c6ZT9tZdkq&e{nEIFmCcL#+9bx1B*7p)6D8@Si;f$LCXa)~;fv-P}6 zYt8I@Q&q7i2>-({^f@r>l>XfOz^dKnz;p@{E2p2imNS5L<=LZfFJ1Pk0&BMIl<3*X zwko2P{d))|K6M>(u?kX!$k%wvpN)@{BnN^Y&J7L)=OS8?@*|T;lkn}Zj zX9^d2m9Aj)5x0G+`kJ%!TU59!|AT+YJ?K>#iNkv5dd%sgX90B1l`$cX>I!-W*L6&o z(mqH7t?g-VWP|mo#eo&#h`XrN{R6ZoT!r?r*K8%Kq<~pRvoHWKiY5`6Z60}cdB7!_ zO1*REH0M34lEz#@VuEjmdgxE)}nv&z}e&ca0A?ofK)pn3?lCj#}h^5m@oZB044 zPSU{^dn#efT6R}-V{2>9zhLB4fY8*mSHnJ{2G@+I&u+A@TGTLUD@*&pr8pD@(7Eo17QH$sdqivJv{9@nq7JH{ZO)>HWg)S7 zyxsRhcW;wXSv|W+)_m(zbTM>Eoj0x7$2&W>Iv1=9Q?lu~kHZ+a$BC`E9?4S=TtO!U zqHga{bB>ygMZMQ~&>oM+ZPH9Tm42SDpQb`_Y*TQ4AC12^FKv+}<3~6DaH5PFzq@4h zssV_LSqtzfN`5l6{rCC7&0+r|S9~gNUcY;I(<9Ek)i zRppQn_C6Xfn7#M(3pd~O+uh;#)-zt1@dokRM@(NUfqEMWa!#y#)(YirXPAuqPF_F1 z5$ojER>^Hju%w>+_TdLxXgcT3I+!mt^hSA44$TAz9y|a>jGVpsG?BYGc3fLQ-+v)1 z12$%5;PI@Ck}4}B3U|xGNm^z3684cV)9?z0!`2nm%u<^a(f`d@1z>msSC~?D1Fddz zmNC2Kpg-tVb>`}p?ejv1s<(u{7K&XB9#(S!1d}v_}YGwbrsS)=>?P ztodu|OkI;Ql(RmEYI}gCAjv9}p|f%nMp-qDJa}YQ)mA4<#1ic;e?$ZIiL<7%DP?@E z=Ojd9oYY6@HfQ+1+n56G?$SKsm9I^gewEJFXu!WuMplNBx(f>WW)&w%r2HY>dto}9 zp{LFi|HS0FvPl}3aVP!|L;bhSQpK#B^)kNZ^X7_K{YSmNWR}o7seD)Zu3lL&>!lTQ zrL$&n-mN&OtUiqB%G8x^y% zR4SFsmG4TgYi{Pp=l`ajZ#Cowz56oQTUx?^$yi<72J)3N->H{du64 en4?AMMX99zp62fZa=n<^YEVIKsf3Stru=Vq{7*3e diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/web_application.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/__pycache__/web_application.cpython-310.pyc deleted file mode 100644 index bdfd1ed3a303ed5e3d3201185f424997c365b1ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12126 zcmdT~-*X#Ba^3~NUpPrV>*VCl$t4pe76=^)NTg)TEK?UslqDS{N)f3z#Z(Gd>8U5Qk9^@6|lS0 z)7{hE^L6(`moJwceE!LO*}hwMoPVbu*-r^S{v3abF5KC7xXTNnyYKQMFNK9}alhCt z?U%YU`!lY?XZUP5+nw8=bDc*HpX2jiIecEseOcU}=Y?ITx^Vi><;WYvoiJ$C^q19| zZ2KR6bo=A--%b9M%X^(bv2Mf%pBNsfzNtE zaKX#%NHRa_sX;gB9bg=1eHk4EoPIsu1Q%?zc9XsQ^a0IZD}MtCot3Da)bJxN8d9h}sEXmceJSvkXdFnd7dHkn7`~U>ilal(!>d0Z2o-

    0nF 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 E16WCn{{R30 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/backend_application.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/backend_application.py deleted file mode 100644 index e11e8fa..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/backend_application.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -from ..parameters import prepare_token_request -from .base import Client - - -class BackendApplicationClient(Client): - - """A public client utilizing the client credentials grant workflow. - - The client can request an access token using only its client - credentials (or other supported means of authentication) when the - client is requesting access to the protected resources under its - control, or those of another resource owner which has been previously - arranged with the authorization server (the method of which is beyond - the scope of this specification). - - The client credentials grant type MUST only be used by confidential - clients. - - Since the client authentication is used as the authorization grant, - no additional authorization request is needed. - """ - - grant_type = 'client_credentials' - - def prepare_request_body(self, body='', scope=None, - include_client_id=False, **kwargs): - """Add the client credentials to the request body. - - The client makes a request to the token endpoint by adding the - following parameters using the "application/x-www-form-urlencoded" - format per `Appendix B`_ in the HTTP request entity-body: - - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - :param scope: The scope of the access request as described by - `Section 3.3`_. - - :param include_client_id: `True` to send the `client_id` in the - body of the upstream request. This is required - if the client is not authenticating with the - authorization server as described in - `Section 3.2.1`_. False otherwise (default). - :type include_client_id: Boolean - - :param kwargs: Extra credentials to include in the token request. - - The client MUST authenticate with the authorization server as - described in `Section 3.2.1`_. - - The prepared body will include all provided credentials as well as - the ``grant_type`` parameter set to ``client_credentials``:: - - >>> from oauthlib.oauth2 import BackendApplicationClient - >>> client = BackendApplicationClient('your_id') - >>> client.prepare_request_body(scope=['hello', 'world']) - 'grant_type=client_credentials&scope=hello+world' - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc6749#section-3.2.1 - """ - kwargs['client_id'] = self.client_id - kwargs['include_client_id'] = include_client_id - scope = self.scope if scope is None else scope - return prepare_token_request(self.grant_type, body=body, - scope=scope, **kwargs) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/base.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/base.py deleted file mode 100644 index d5eb0cc..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/base.py +++ /dev/null @@ -1,604 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming OAuth 2.0 RFC6749. -""" -import base64 -import hashlib -import re -import secrets -import time -import warnings - -from oauthlib.common import generate_token -from oauthlib.oauth2.rfc6749 import tokens -from oauthlib.oauth2.rfc6749.errors import ( - InsecureTransportError, TokenExpiredError, -) -from oauthlib.oauth2.rfc6749.parameters import ( - parse_token_response, prepare_token_request, - prepare_token_revocation_request, -) -from oauthlib.oauth2.rfc6749.utils import is_secure_transport - -AUTH_HEADER = 'auth_header' -URI_QUERY = 'query' -BODY = 'body' - -FORM_ENC_HEADERS = { - 'Content-Type': 'application/x-www-form-urlencoded' -} - - -class Client: - """Base OAuth2 client responsible for access token management. - - This class also acts as a generic interface providing methods common to all - client types such as ``prepare_authorization_request`` and - ``prepare_token_revocation_request``. The ``prepare_x_request`` methods are - the recommended way of interacting with clients (as opposed to the abstract - prepare uri/body/etc methods). They are recommended over the older set - because they are easier to use (more consistent) and add a few additional - security checks, such as HTTPS and state checking. - - Some of these methods require further implementation only provided by the - specific purpose clients such as - :py:class:`oauthlib.oauth2.MobileApplicationClient` and thus you should always - seek to use the client class matching the OAuth workflow you need. For - Python, this is usually :py:class:`oauthlib.oauth2.WebApplicationClient`. - - """ - refresh_token_key = 'refresh_token' - - def __init__(self, client_id, - default_token_placement=AUTH_HEADER, - token_type='Bearer', - access_token=None, - refresh_token=None, - mac_key=None, - mac_algorithm=None, - token=None, - scope=None, - state=None, - redirect_url=None, - state_generator=generate_token, - code_verifier=None, - code_challenge=None, - code_challenge_method=None, - **kwargs): - """Initialize a client with commonly used attributes. - - :param client_id: Client identifier given by the OAuth provider upon - registration. - - :param default_token_placement: Tokens can be supplied in the Authorization - header (default), the URL query component (``query``) or the request - body (``body``). - - :param token_type: OAuth 2 token type. Defaults to Bearer. Change this - if you specify the ``access_token`` parameter and know it is of a - different token type, such as a MAC, JWT or SAML token. Can - also be supplied as ``token_type`` inside the ``token`` dict parameter. - - :param access_token: An access token (string) used to authenticate - requests to protected resources. Can also be supplied inside the - ``token`` dict parameter. - - :param refresh_token: A refresh token (string) used to refresh expired - tokens. Can also be supplied inside the ``token`` dict parameter. - - :param mac_key: Encryption key used with MAC tokens. - - :param mac_algorithm: Hashing algorithm for MAC tokens. - - :param token: A dict of token attributes such as ``access_token``, - ``token_type`` and ``expires_at``. - - :param scope: A list of default scopes to request authorization for. - - :param state: A CSRF protection string used during authorization. - - :param redirect_url: The redirection endpoint on the client side to which - the user returns after authorization. - - :param state_generator: A no argument state generation callable. Defaults - to :py:meth:`oauthlib.common.generate_token`. - - :param code_verifier: PKCE parameter. A cryptographically random string that is used to correlate the - authorization request to the token request. - - :param code_challenge: PKCE parameter. A challenge derived from the code verifier that is sent in the - authorization request, to be verified against later. - - :param code_challenge_method: PKCE parameter. A method that was used to derive code challenge. - Defaults to "plain" if not present in the request. - """ - - self.client_id = client_id - self.default_token_placement = default_token_placement - self.token_type = token_type - self.access_token = access_token - self.refresh_token = refresh_token - self.mac_key = mac_key - self.mac_algorithm = mac_algorithm - self.token = token or {} - self.scope = scope - self.state_generator = state_generator - self.state = state - self.redirect_url = redirect_url - self.code_verifier = code_verifier - self.code_challenge = code_challenge - self.code_challenge_method = code_challenge_method - self.code = None - self.expires_in = None - self._expires_at = None - self.populate_token_attributes(self.token) - - @property - def token_types(self): - """Supported token types and their respective methods - - Additional tokens can be supported by extending this dictionary. - - The Bearer token spec is stable and safe to use. - - The MAC token spec is not yet stable and support for MAC tokens - is experimental and currently matching version 00 of the spec. - """ - return { - 'Bearer': self._add_bearer_token, - 'MAC': self._add_mac_token - } - - def prepare_request_uri(self, *args, **kwargs): - """Abstract method used to create request URIs.""" - raise NotImplementedError("Must be implemented by inheriting classes.") - - def prepare_request_body(self, *args, **kwargs): - """Abstract method used to create request bodies.""" - raise NotImplementedError("Must be implemented by inheriting classes.") - - def parse_request_uri_response(self, *args, **kwargs): - """Abstract method used to parse redirection responses.""" - raise NotImplementedError("Must be implemented by inheriting classes.") - - def add_token(self, uri, http_method='GET', body=None, headers=None, - token_placement=None, **kwargs): - """Add token to the request uri, body or authorization header. - - The access token type provides the client with the information - required to successfully utilize the access token to make a protected - resource request (along with type-specific attributes). The client - MUST NOT use an access token if it does not understand the token - type. - - For example, the "bearer" token type defined in - [`I-D.ietf-oauth-v2-bearer`_] is utilized by simply including the access - token string in the request: - - .. code-block:: http - - GET /resource/1 HTTP/1.1 - Host: example.com - Authorization: Bearer mF_9.B5f-4.1JqM - - while the "mac" token type defined in [`I-D.ietf-oauth-v2-http-mac`_] is - utilized by issuing a MAC key together with the access token which is - used to sign certain components of the HTTP requests: - - .. code-block:: http - - GET /resource/1 HTTP/1.1 - Host: example.com - Authorization: MAC id="h480djs93hd8", - nonce="274312:dj83hs9s", - mac="kDZvddkndxvhGRXZhvuDjEWhGeE=" - - .. _`I-D.ietf-oauth-v2-bearer`: https://tools.ietf.org/html/rfc6749#section-12.2 - .. _`I-D.ietf-oauth-v2-http-mac`: https://tools.ietf.org/html/rfc6749#section-12.2 - """ - if not is_secure_transport(uri): - raise InsecureTransportError() - - token_placement = token_placement or self.default_token_placement - - case_insensitive_token_types = { - k.lower(): v for k, v in self.token_types.items()} - if not self.token_type.lower() in case_insensitive_token_types: - raise ValueError("Unsupported token type: %s" % self.token_type) - - if not (self.access_token or self.token.get('access_token')): - raise ValueError("Missing access token.") - - if self._expires_at and self._expires_at < time.time(): - raise TokenExpiredError() - - return case_insensitive_token_types[self.token_type.lower()](uri, http_method, body, - headers, token_placement, **kwargs) - - def prepare_authorization_request(self, authorization_url, state=None, - redirect_url=None, scope=None, **kwargs): - """Prepare the authorization request. - - This is the first step in many OAuth flows in which the user is - redirected to a certain authorization URL. This method adds - required parameters to the authorization URL. - - :param authorization_url: Provider authorization endpoint URL. - :param state: CSRF protection string. Will be automatically created if - not provided. The generated state is available via the ``state`` - attribute. Clients should verify that the state is unchanged and - present in the authorization response. This verification is done - automatically if using the ``authorization_response`` parameter - with ``prepare_token_request``. - :param redirect_url: Redirect URL to which the user will be returned - after authorization. Must be provided unless previously setup with - the provider. If provided then it must also be provided in the - token request. - :param scope: List of scopes to request. Must be equal to - or a subset of the scopes granted when obtaining the refresh - token. If none is provided, the ones provided in the constructor are - used. - :param kwargs: Additional parameters to included in the request. - :returns: The prepared request tuple with (url, headers, body). - """ - if not is_secure_transport(authorization_url): - raise InsecureTransportError() - - self.state = state or self.state_generator() - self.redirect_url = redirect_url or self.redirect_url - # do not assign scope to self automatically anymore - scope = self.scope if scope is None else scope - auth_url = self.prepare_request_uri( - authorization_url, redirect_uri=self.redirect_url, - scope=scope, state=self.state, **kwargs) - return auth_url, FORM_ENC_HEADERS, '' - - def prepare_token_request(self, token_url, authorization_response=None, - redirect_url=None, state=None, body='', **kwargs): - """Prepare a token creation request. - - Note that these requests usually require client authentication, either - by including client_id or a set of provider specific authentication - credentials. - - :param token_url: Provider token creation endpoint URL. - :param authorization_response: The full redirection URL string, i.e. - the location to which the user was redirected after successful - authorization. Used to mine credentials needed to obtain a token - in this step, such as authorization code. - :param redirect_url: The redirect_url supplied with the authorization - request (if there was one). - :param state: - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - :param kwargs: Additional parameters to included in the request. - :returns: The prepared request tuple with (url, headers, body). - """ - if not is_secure_transport(token_url): - raise InsecureTransportError() - - state = state or self.state - if authorization_response: - self.parse_request_uri_response( - authorization_response, state=state) - self.redirect_url = redirect_url or self.redirect_url - body = self.prepare_request_body(body=body, - redirect_uri=self.redirect_url, **kwargs) - - return token_url, FORM_ENC_HEADERS, body - - def prepare_refresh_token_request(self, token_url, refresh_token=None, - body='', scope=None, **kwargs): - """Prepare an access token refresh request. - - Expired access tokens can be replaced by new access tokens without - going through the OAuth dance if the client obtained a refresh token. - This refresh token and authentication credentials can be used to - obtain a new access token, and possibly a new refresh token. - - :param token_url: Provider token refresh endpoint URL. - :param refresh_token: Refresh token string. - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - :param scope: List of scopes to request. Must be equal to - or a subset of the scopes granted when obtaining the refresh - token. If none is provided, the ones provided in the constructor are - used. - :param kwargs: Additional parameters to included in the request. - :returns: The prepared request tuple with (url, headers, body). - """ - if not is_secure_transport(token_url): - raise InsecureTransportError() - - # do not assign scope to self automatically anymore - scope = self.scope if scope is None else scope - body = self.prepare_refresh_body(body=body, - refresh_token=refresh_token, scope=scope, **kwargs) - return token_url, FORM_ENC_HEADERS, body - - def prepare_token_revocation_request(self, revocation_url, token, - token_type_hint="access_token", body='', callback=None, **kwargs): - """Prepare a token revocation request. - - :param revocation_url: Provider token revocation endpoint URL. - :param token: The access or refresh token to be revoked (string). - :param token_type_hint: ``"access_token"`` (default) or - ``"refresh_token"``. This is optional and if you wish to not pass it you - must provide ``token_type_hint=None``. - :param body: - :param callback: A jsonp callback such as ``package.callback`` to be invoked - upon receiving the response. Not that it should not include a () suffix. - :param kwargs: Additional parameters to included in the request. - :returns: The prepared request tuple with (url, headers, body). - - Note that JSONP request may use GET requests as the parameters will - be added to the request URL query as opposed to the request body. - - An example of a revocation request - - .. code-block:: http - - POST /revoke HTTP/1.1 - Host: server.example.com - Content-Type: application/x-www-form-urlencoded - Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW - - token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token - - An example of a jsonp revocation request - - .. code-block:: http - - GET /revoke?token=agabcdefddddafdd&callback=package.myCallback HTTP/1.1 - Host: server.example.com - Content-Type: application/x-www-form-urlencoded - Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW - - and an error response - - .. code-block:: javascript - - package.myCallback({"error":"unsupported_token_type"}); - - Note that these requests usually require client credentials, client_id in - the case for public clients and provider specific authentication - credentials for confidential clients. - """ - if not is_secure_transport(revocation_url): - raise InsecureTransportError() - - return prepare_token_revocation_request(revocation_url, token, - token_type_hint=token_type_hint, body=body, callback=callback, - **kwargs) - - def parse_request_body_response(self, body, scope=None, **kwargs): - """Parse the JSON response body. - - If the access token request is valid and authorized, the - authorization server issues an access token as described in - `Section 5.1`_. A refresh token SHOULD NOT be included. If the request - failed client authentication or is invalid, the authorization server - returns an error response as described in `Section 5.2`_. - - :param body: The response body from the token request. - :param scope: Scopes originally requested. If none is provided, the ones - provided in the constructor are used. - :return: Dictionary of token parameters. - :raises: Warning if scope has changed. :py:class:`oauthlib.oauth2.errors.OAuth2Error` - if response is invalid. - - These response are json encoded and could easily be parsed without - the assistance of OAuthLib. However, there are a few subtle issues - to be aware of regarding the response which are helpfully addressed - through the raising of various errors. - - A successful response should always contain - - **access_token** - The access token issued by the authorization server. Often - a random string. - - **token_type** - The type of the token issued as described in `Section 7.1`_. - Commonly ``Bearer``. - - While it is not mandated it is recommended that the provider include - - **expires_in** - The lifetime in seconds of the access token. For - example, the value "3600" denotes that the access token will - expire in one hour from the time the response was generated. - If omitted, the authorization server SHOULD provide the - expiration time via other means or document the default value. - - **scope** - Providers may supply this in all responses but are required to only - if it has changed since the authorization request. - - .. _`Section 5.1`: https://tools.ietf.org/html/rfc6749#section-5.1 - .. _`Section 5.2`: https://tools.ietf.org/html/rfc6749#section-5.2 - .. _`Section 7.1`: https://tools.ietf.org/html/rfc6749#section-7.1 - """ - scope = self.scope if scope is None else scope - self.token = parse_token_response(body, scope=scope) - self.populate_token_attributes(self.token) - return self.token - - def prepare_refresh_body(self, body='', refresh_token=None, scope=None, **kwargs): - """Prepare an access token request, using a refresh token. - - If the authorization server issued a refresh token to the client, the - client makes a refresh request to the token endpoint by adding the - following parameters using the `application/x-www-form-urlencoded` - format in the HTTP request entity-body: - - :param refresh_token: REQUIRED. The refresh token issued to the client. - :param scope: OPTIONAL. The scope of the access request as described by - Section 3.3. The requested scope MUST NOT include any scope - not originally granted by the resource owner, and if omitted is - treated as equal to the scope originally granted by the - resource owner. Note that if none is provided, the ones provided - in the constructor are used if any. - """ - refresh_token = refresh_token or self.refresh_token - scope = self.scope if scope is None else scope - return prepare_token_request(self.refresh_token_key, body=body, scope=scope, - refresh_token=refresh_token, **kwargs) - - def _add_bearer_token(self, uri, http_method='GET', body=None, - headers=None, token_placement=None): - """Add a bearer token to the request uri, body or authorization header.""" - if token_placement == AUTH_HEADER: - headers = tokens.prepare_bearer_headers(self.access_token, headers) - - elif token_placement == URI_QUERY: - uri = tokens.prepare_bearer_uri(self.access_token, uri) - - elif token_placement == BODY: - body = tokens.prepare_bearer_body(self.access_token, body) - - else: - raise ValueError("Invalid token placement.") - return uri, headers, body - - def create_code_verifier(self, length): - """Create PKCE **code_verifier** used in computing **code_challenge**. - See `RFC7636 Section 4.1`_ - - :param length: REQUIRED. The length of the code_verifier. - - The client first creates a code verifier, "code_verifier", for each - OAuth 2.0 [RFC6749] Authorization Request, in the following manner: - - .. code-block:: text - - code_verifier = high-entropy cryptographic random STRING using the - unreserved characters [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" - from Section 2.3 of [RFC3986], with a minimum length of 43 characters - and a maximum length of 128 characters. - - .. _`RFC7636 Section 4.1`: https://tools.ietf.org/html/rfc7636#section-4.1 - """ - code_verifier = None - - if not length >= 43: - raise ValueError("Length must be greater than or equal to 43") - - if not length <= 128: - raise ValueError("Length must be less than or equal to 128") - - allowed_characters = re.compile('^[A-Zaa-z0-9-._~]') - code_verifier = secrets.token_urlsafe(length) - - if not re.search(allowed_characters, code_verifier): - raise ValueError("code_verifier contains invalid characters") - - self.code_verifier = code_verifier - - return code_verifier - - def create_code_challenge(self, code_verifier, code_challenge_method=None): - """Create PKCE **code_challenge** derived from the **code_verifier**. - See `RFC7636 Section 4.2`_ - - :param code_verifier: REQUIRED. The **code_verifier** generated from `create_code_verifier()`. - :param code_challenge_method: OPTIONAL. The method used to derive the **code_challenge**. Acceptable values include `S256`. DEFAULT is `plain`. - - The client then creates a code challenge derived from the code - verifier by using one of the following transformations on the code - verifier:: - - plain - code_challenge = code_verifier - S256 - code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) - - If the client is capable of using `S256`, it MUST use `S256`, as - `S256` is Mandatory To Implement (MTI) on the server. Clients are - permitted to use `plain` only if they cannot support `S256` for some - technical reason and know via out-of-band configuration that the - server supports `plain`. - - The plain transformation is for compatibility with existing - deployments and for constrained environments that can't use the S256 transformation. - - .. _`RFC7636 Section 4.2`: https://tools.ietf.org/html/rfc7636#section-4.2 - """ - code_challenge = None - - if code_verifier == None: - raise ValueError("Invalid code_verifier") - - if code_challenge_method == None: - code_challenge_method = "plain" - self.code_challenge_method = code_challenge_method - code_challenge = code_verifier - self.code_challenge = code_challenge - - if code_challenge_method == "S256": - h = hashlib.sha256() - h.update(code_verifier.encode(encoding='ascii')) - sha256_val = h.digest() - code_challenge = bytes.decode(base64.urlsafe_b64encode(sha256_val)) - # replace '+' with '-', '/' with '_', and remove trailing '=' - code_challenge = code_challenge.replace("+", "-").replace("/", "_").replace("=", "") - self.code_challenge = code_challenge - - return code_challenge - - def _add_mac_token(self, uri, http_method='GET', body=None, - headers=None, token_placement=AUTH_HEADER, ext=None, **kwargs): - """Add a MAC token to the request authorization header. - - Warning: MAC token support is experimental as the spec is not yet stable. - """ - if token_placement != AUTH_HEADER: - raise ValueError("Invalid token placement.") - - headers = tokens.prepare_mac_header(self.access_token, uri, - self.mac_key, http_method, headers=headers, body=body, ext=ext, - hash_algorithm=self.mac_algorithm, **kwargs) - return uri, headers, body - - def _populate_attributes(self, response): - warnings.warn("Please switch to the public method " - "populate_token_attributes.", DeprecationWarning) - return self.populate_token_attributes(response) - - def populate_code_attributes(self, response): - """Add attributes from an auth code response to self.""" - - if 'code' in response: - self.code = response.get('code') - - def populate_token_attributes(self, response): - """Add attributes from a token exchange response to self.""" - - if 'access_token' in response: - self.access_token = response.get('access_token') - - if 'refresh_token' in response: - self.refresh_token = response.get('refresh_token') - - if 'token_type' in response: - self.token_type = response.get('token_type') - - if 'expires_in' in response: - self.expires_in = response.get('expires_in') - self._expires_at = time.time() + int(self.expires_in) - - if 'expires_at' in response: - try: - self._expires_at = int(response.get('expires_at')) - except: - self._expires_at = None - - if 'mac_key' in response: - self.mac_key = response.get('mac_key') - - if 'mac_algorithm' in response: - self.mac_algorithm = response.get('mac_algorithm') diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/legacy_application.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/legacy_application.py deleted file mode 100644 index 9920981..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/legacy_application.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -from ..parameters import prepare_token_request -from .base import Client - - -class LegacyApplicationClient(Client): - - """A public client using the resource owner password and username directly. - - The resource owner password credentials grant type is suitable in - cases where the resource owner has a trust relationship with the - client, such as the device operating system or a highly privileged - application. The authorization server should take special care when - enabling this grant type, and only allow it when other flows are not - viable. - - The grant type is suitable for clients capable of obtaining the - resource owner's credentials (username and password, typically using - an interactive form). It is also used to migrate existing clients - using direct authentication schemes such as HTTP Basic or Digest - authentication to OAuth by converting the stored credentials to an - access token. - - The method through which the client obtains the resource owner - credentials is beyond the scope of this specification. The client - MUST discard the credentials once an access token has been obtained. - """ - - grant_type = 'password' - - def __init__(self, client_id, **kwargs): - super().__init__(client_id, **kwargs) - - def prepare_request_body(self, username, password, body='', scope=None, - include_client_id=False, **kwargs): - """Add the resource owner password and username to the request body. - - The client makes a request to the token endpoint by adding the - following parameters using the "application/x-www-form-urlencoded" - format per `Appendix B`_ in the HTTP request entity-body: - - :param username: The resource owner username. - :param password: The resource owner password. - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - :param scope: The scope of the access request as described by - `Section 3.3`_. - :param include_client_id: `True` to send the `client_id` in the - body of the upstream request. This is required - if the client is not authenticating with the - authorization server as described in - `Section 3.2.1`_. False otherwise (default). - :type include_client_id: Boolean - :param kwargs: Extra credentials to include in the token request. - - If the client type is confidential or the client was issued client - credentials (or assigned other authentication requirements), the - client MUST authenticate with the authorization server as described - in `Section 3.2.1`_. - - The prepared body will include all provided credentials as well as - the ``grant_type`` parameter set to ``password``:: - - >>> from oauthlib.oauth2 import LegacyApplicationClient - >>> client = LegacyApplicationClient('your_id') - >>> client.prepare_request_body(username='foo', password='bar', scope=['hello', 'world']) - 'grant_type=password&username=foo&scope=hello+world&password=bar' - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc6749#section-3.2.1 - """ - kwargs['client_id'] = self.client_id - kwargs['include_client_id'] = include_client_id - scope = self.scope if scope is None else scope - return prepare_token_request(self.grant_type, body=body, username=username, - password=password, scope=scope, **kwargs) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/mobile_application.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/mobile_application.py deleted file mode 100644 index b10b41c..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/mobile_application.py +++ /dev/null @@ -1,174 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -from ..parameters import parse_implicit_response, prepare_grant_uri -from .base import Client - - -class MobileApplicationClient(Client): - - """A public client utilizing the implicit code grant workflow. - - A user-agent-based application is a public client in which the - client code is downloaded from a web server and executes within a - user-agent (e.g. web browser) on the device used by the resource - owner. Protocol data and credentials are easily accessible (and - often visible) to the resource owner. Since such applications - reside within the user-agent, they can make seamless use of the - user-agent capabilities when requesting authorization. - - The implicit grant type is used to obtain access tokens (it does not - support the issuance of refresh tokens) and is optimized for public - clients known to operate a particular redirection URI. These clients - are typically implemented in a browser using a scripting language - such as JavaScript. - - As a redirection-based flow, the client must be capable of - interacting with the resource owner's user-agent (typically a web - browser) and capable of receiving incoming requests (via redirection) - from the authorization server. - - Unlike the authorization code grant type in which the client makes - separate requests for authorization and access token, the client - receives the access token as the result of the authorization request. - - The implicit grant type does not include client authentication, and - relies on the presence of the resource owner and the registration of - the redirection URI. Because the access token is encoded into the - redirection URI, it may be exposed to the resource owner and other - applications residing on the same device. - """ - - response_type = 'token' - - def prepare_request_uri(self, uri, redirect_uri=None, scope=None, - state=None, **kwargs): - """Prepare the implicit grant request URI. - - The client constructs the request URI by adding the following - parameters to the query component of the authorization endpoint URI - using the "application/x-www-form-urlencoded" format, per `Appendix B`_: - - :param redirect_uri: OPTIONAL. The redirect URI must be an absolute URI - and it should have been registered with the OAuth - provider prior to use. As described in `Section 3.1.2`_. - - :param scope: OPTIONAL. The scope of the access request as described by - Section 3.3`_. These may be any string but are commonly - URIs or various categories such as ``videos`` or ``documents``. - - :param state: RECOMMENDED. An opaque value used by the client to maintain - state between the request and callback. The authorization - server includes this value when redirecting the user-agent back - to the client. The parameter SHOULD be used for preventing - cross-site request forgery as described in `Section 10.12`_. - - :param kwargs: Extra arguments to include in the request URI. - - In addition to supplied parameters, OAuthLib will append the ``client_id`` - that was provided in the constructor as well as the mandatory ``response_type`` - argument, set to ``token``:: - - >>> from oauthlib.oauth2 import MobileApplicationClient - >>> client = MobileApplicationClient('your_id') - >>> client.prepare_request_uri('https://example.com') - 'https://example.com?client_id=your_id&response_type=token' - >>> client.prepare_request_uri('https://example.com', redirect_uri='https://a.b/callback') - 'https://example.com?client_id=your_id&response_type=token&redirect_uri=https%3A%2F%2Fa.b%2Fcallback' - >>> client.prepare_request_uri('https://example.com', scope=['profile', 'pictures']) - 'https://example.com?client_id=your_id&response_type=token&scope=profile+pictures' - >>> client.prepare_request_uri('https://example.com', foo='bar') - 'https://example.com?client_id=your_id&response_type=token&foo=bar' - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 2.2`: https://tools.ietf.org/html/rfc6749#section-2.2 - .. _`Section 3.1.2`: https://tools.ietf.org/html/rfc6749#section-3.1.2 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 10.12`: https://tools.ietf.org/html/rfc6749#section-10.12 - """ - scope = self.scope if scope is None else scope - return prepare_grant_uri(uri, self.client_id, self.response_type, - redirect_uri=redirect_uri, state=state, scope=scope, **kwargs) - - def parse_request_uri_response(self, uri, state=None, scope=None): - """Parse the response URI fragment. - - If the resource owner grants the access request, the authorization - server issues an access token and delivers it to the client by adding - the following parameters to the fragment component of the redirection - URI using the "application/x-www-form-urlencoded" format: - - :param uri: The callback URI that resulted from the user being redirected - back from the provider to you, the client. - :param state: The state provided in the authorization request. - :param scope: The scopes provided in the authorization request. - :return: Dictionary of token parameters. - :raises: OAuth2Error if response is invalid. - - A successful response should always contain - - **access_token** - The access token issued by the authorization server. Often - a random string. - - **token_type** - The type of the token issued as described in `Section 7.1`_. - Commonly ``Bearer``. - - **state** - If you provided the state parameter in the authorization phase, then - the provider is required to include that exact state value in the - response. - - While it is not mandated it is recommended that the provider include - - **expires_in** - The lifetime in seconds of the access token. For - example, the value "3600" denotes that the access token will - expire in one hour from the time the response was generated. - If omitted, the authorization server SHOULD provide the - expiration time via other means or document the default value. - - **scope** - Providers may supply this in all responses but are required to only - if it has changed since the authorization request. - - A few example responses can be seen below:: - - >>> response_uri = 'https://example.com/callback#access_token=sdlfkj452&state=ss345asyht&token_type=Bearer&scope=hello+world' - >>> from oauthlib.oauth2 import MobileApplicationClient - >>> client = MobileApplicationClient('your_id') - >>> client.parse_request_uri_response(response_uri) - { - 'access_token': 'sdlfkj452', - 'token_type': 'Bearer', - 'state': 'ss345asyht', - 'scope': [u'hello', u'world'] - } - >>> client.parse_request_uri_response(response_uri, state='other') - Traceback (most recent call last): - File "", line 1, in - File "oauthlib/oauth2/rfc6749/__init__.py", line 598, in parse_request_uri_response - **scope** - File "oauthlib/oauth2/rfc6749/parameters.py", line 197, in parse_implicit_response - raise ValueError("Mismatching or missing state in params.") - ValueError: Mismatching or missing state in params. - >>> def alert_scope_changed(message, old, new): - ... print(message, old, new) - ... - >>> oauthlib.signals.scope_changed.connect(alert_scope_changed) - >>> client.parse_request_body_response(response_body, scope=['other']) - ('Scope has changed from "other" to "hello world".', ['other'], ['hello', 'world']) - - .. _`Section 7.1`: https://tools.ietf.org/html/rfc6749#section-7.1 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - """ - scope = self.scope if scope is None else scope - self.token = parse_implicit_response(uri, state=state, scope=scope) - self.populate_token_attributes(self.token) - return self.token diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/service_application.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/service_application.py deleted file mode 100644 index 8fb1737..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/service_application.py +++ /dev/null @@ -1,189 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -import time - -from oauthlib.common import to_unicode - -from ..parameters import prepare_token_request -from .base import Client - - -class ServiceApplicationClient(Client): - """A public client utilizing the JWT bearer grant. - - JWT bearer tokes can be used to request an access token when a client - wishes to utilize an existing trust relationship, expressed through the - semantics of (and digital signature or keyed message digest calculated - over) the JWT, without a direct user approval step at the authorization - server. - - This grant type does not involve an authorization step. It may be - used by both public and confidential clients. - """ - - grant_type = 'urn:ietf:params:oauth:grant-type:jwt-bearer' - - def __init__(self, client_id, private_key=None, subject=None, issuer=None, - audience=None, **kwargs): - """Initialize a JWT client with defaults for implicit use later. - - :param client_id: Client identifier given by the OAuth provider upon - registration. - - :param private_key: Private key used for signing and encrypting. - Must be given as a string. - - :param subject: The principal that is the subject of the JWT, i.e. - which user is the token requested on behalf of. - For example, ``foo@example.com. - - :param issuer: The JWT MUST contain an "iss" (issuer) claim that - contains a unique identifier for the entity that issued - the JWT. For example, ``your-client@provider.com``. - - :param audience: A value identifying the authorization server as an - intended audience, e.g. - ``https://provider.com/oauth2/token``. - - :param kwargs: Additional arguments to pass to base client, such as - state and token. See ``Client.__init__.__doc__`` for - details. - """ - super().__init__(client_id, **kwargs) - self.private_key = private_key - self.subject = subject - self.issuer = issuer - self.audience = audience - - def prepare_request_body(self, - private_key=None, - subject=None, - issuer=None, - audience=None, - expires_at=None, - issued_at=None, - extra_claims=None, - body='', - scope=None, - include_client_id=False, - **kwargs): - """Create and add a JWT assertion to the request body. - - :param private_key: Private key used for signing and encrypting. - Must be given as a string. - - :param subject: (sub) The principal that is the subject of the JWT, - i.e. which user is the token requested on behalf of. - For example, ``foo@example.com. - - :param issuer: (iss) The JWT MUST contain an "iss" (issuer) claim that - contains a unique identifier for the entity that issued - the JWT. For example, ``your-client@provider.com``. - - :param audience: (aud) A value identifying the authorization server as an - intended audience, e.g. - ``https://provider.com/oauth2/token``. - - :param expires_at: A unix expiration timestamp for the JWT. Defaults - to an hour from now, i.e. ``time.time() + 3600``. - - :param issued_at: A unix timestamp of when the JWT was created. - Defaults to now, i.e. ``time.time()``. - - :param extra_claims: A dict of additional claims to include in the JWT. - - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - - :param scope: The scope of the access request. - - :param include_client_id: `True` to send the `client_id` in the - body of the upstream request. This is required - if the client is not authenticating with the - authorization server as described in - `Section 3.2.1`_. False otherwise (default). - :type include_client_id: Boolean - - :param not_before: A unix timestamp after which the JWT may be used. - Not included unless provided. * - - :param jwt_id: A unique JWT token identifier. Not included unless - provided. * - - :param kwargs: Extra credentials to include in the token request. - - Parameters marked with a `*` above are not explicit arguments in the - function signature, but are specially documented arguments for items - appearing in the generic `**kwargs` keyworded input. - - The "scope" parameter may be used, as defined in the Assertion - Framework for OAuth 2.0 Client Authentication and Authorization Grants - [I-D.ietf-oauth-assertions] specification, to indicate the requested - scope. - - Authentication of the client is optional, as described in - `Section 3.2.1`_ of OAuth 2.0 [RFC6749] and consequently, the - "client_id" is only needed when a form of client authentication that - relies on the parameter is used. - - The following non-normative example demonstrates an Access Token - Request with a JWT as an authorization grant (with extra line breaks - for display purposes only): - - .. code-block: http - - POST /token.oauth2 HTTP/1.1 - Host: as.example.com - Content-Type: application/x-www-form-urlencoded - - grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer - &assertion=eyJhbGciOiJFUzI1NiJ9. - eyJpc3Mi[...omitted for brevity...]. - J9l-ZhwP[...omitted for brevity...] - - .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc6749#section-3.2.1 - """ - import jwt - - key = private_key or self.private_key - if not key: - raise ValueError('An encryption key must be supplied to make JWT' - ' token requests.') - claim = { - 'iss': issuer or self.issuer, - 'aud': audience or self.audience, - 'sub': subject or self.subject, - 'exp': int(expires_at or time.time() + 3600), - 'iat': int(issued_at or time.time()), - } - - for attr in ('iss', 'aud', 'sub'): - if claim[attr] is None: - raise ValueError( - 'Claim must include %s but none was given.' % attr) - - if 'not_before' in kwargs: - claim['nbf'] = kwargs.pop('not_before') - - if 'jwt_id' in kwargs: - claim['jti'] = kwargs.pop('jwt_id') - - claim.update(extra_claims or {}) - - assertion = jwt.encode(claim, key, 'RS256') - assertion = to_unicode(assertion) - - kwargs['client_id'] = self.client_id - kwargs['include_client_id'] = include_client_id - scope = self.scope if scope is None else scope - return prepare_token_request(self.grant_type, - body=body, - assertion=assertion, - scope=scope, - **kwargs) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/web_application.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/web_application.py deleted file mode 100644 index 50890fb..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/clients/web_application.py +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -import warnings - -from ..parameters import ( - parse_authorization_code_response, prepare_grant_uri, - prepare_token_request, -) -from .base import Client - - -class WebApplicationClient(Client): - - """A client utilizing the authorization code grant workflow. - - A web application is a confidential client running on a web - server. Resource owners access the client via an HTML user - interface rendered in a user-agent on the device used by the - resource owner. The client credentials as well as any access - token issued to the client are stored on the web server and are - not exposed to or accessible by the resource owner. - - The authorization code grant type is used to obtain both access - tokens and refresh tokens and is optimized for confidential clients. - As a redirection-based flow, the client must be capable of - interacting with the resource owner's user-agent (typically a web - browser) and capable of receiving incoming requests (via redirection) - from the authorization server. - """ - - grant_type = 'authorization_code' - - def __init__(self, client_id, code=None, **kwargs): - super().__init__(client_id, **kwargs) - self.code = code - - def prepare_request_uri(self, uri, redirect_uri=None, scope=None, - state=None, code_challenge=None, code_challenge_method='plain', **kwargs): - """Prepare the authorization code request URI - - The client constructs the request URI by adding the following - parameters to the query component of the authorization endpoint URI - using the "application/x-www-form-urlencoded" format, per `Appendix B`_: - - :param redirect_uri: OPTIONAL. The redirect URI must be an absolute URI - and it should have been registered with the OAuth - provider prior to use. As described in `Section 3.1.2`_. - - :param scope: OPTIONAL. The scope of the access request as described by - Section 3.3`_. These may be any string but are commonly - URIs or various categories such as ``videos`` or ``documents``. - - :param state: RECOMMENDED. An opaque value used by the client to maintain - state between the request and callback. The authorization - server includes this value when redirecting the user-agent back - to the client. The parameter SHOULD be used for preventing - cross-site request forgery as described in `Section 10.12`_. - - :param code_challenge: OPTIONAL. PKCE parameter. REQUIRED if PKCE is enforced. - A challenge derived from the code_verifier that is sent in the - authorization request, to be verified against later. - - :param code_challenge_method: OPTIONAL. PKCE parameter. A method that was used to derive code challenge. - Defaults to "plain" if not present in the request. - - :param kwargs: Extra arguments to include in the request URI. - - In addition to supplied parameters, OAuthLib will append the ``client_id`` - that was provided in the constructor as well as the mandatory ``response_type`` - argument, set to ``code``:: - - >>> from oauthlib.oauth2 import WebApplicationClient - >>> client = WebApplicationClient('your_id') - >>> client.prepare_request_uri('https://example.com') - 'https://example.com?client_id=your_id&response_type=code' - >>> client.prepare_request_uri('https://example.com', redirect_uri='https://a.b/callback') - 'https://example.com?client_id=your_id&response_type=code&redirect_uri=https%3A%2F%2Fa.b%2Fcallback' - >>> client.prepare_request_uri('https://example.com', scope=['profile', 'pictures']) - 'https://example.com?client_id=your_id&response_type=code&scope=profile+pictures' - >>> client.prepare_request_uri('https://example.com', code_challenge='kjasBS523KdkAILD2k78NdcJSk2k3KHG6') - 'https://example.com?client_id=your_id&response_type=code&code_challenge=kjasBS523KdkAILD2k78NdcJSk2k3KHG6' - >>> client.prepare_request_uri('https://example.com', code_challenge_method='S256') - 'https://example.com?client_id=your_id&response_type=code&code_challenge_method=S256' - >>> client.prepare_request_uri('https://example.com', foo='bar') - 'https://example.com?client_id=your_id&response_type=code&foo=bar' - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 2.2`: https://tools.ietf.org/html/rfc6749#section-2.2 - .. _`Section 3.1.2`: https://tools.ietf.org/html/rfc6749#section-3.1.2 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 10.12`: https://tools.ietf.org/html/rfc6749#section-10.12 - """ - scope = self.scope if scope is None else scope - return prepare_grant_uri(uri, self.client_id, 'code', - redirect_uri=redirect_uri, scope=scope, state=state, code_challenge=code_challenge, - code_challenge_method=code_challenge_method, **kwargs) - - def prepare_request_body(self, code=None, redirect_uri=None, body='', - include_client_id=True, code_verifier=None, **kwargs): - """Prepare the access token request body. - - The client makes a request to the token endpoint by adding the - following parameters using the "application/x-www-form-urlencoded" - format in the HTTP request entity-body: - - :param code: REQUIRED. The authorization code received from the - authorization server. - - :param redirect_uri: REQUIRED, if the "redirect_uri" parameter was included in the - authorization request as described in `Section 4.1.1`_, and their - values MUST be identical. - - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - - :param include_client_id: `True` (default) to send the `client_id` in the - body of the upstream request. This is required - if the client is not authenticating with the - authorization server as described in `Section 3.2.1`_. - :type include_client_id: Boolean - - :param code_verifier: OPTIONAL. A cryptographically random string that is used to correlate the - authorization request to the token request. - - :param kwargs: Extra parameters to include in the token request. - - In addition OAuthLib will add the ``grant_type`` parameter set to - ``authorization_code``. - - If the client type is confidential or the client was issued client - credentials (or assigned other authentication requirements), the - client MUST authenticate with the authorization server as described - in `Section 3.2.1`_:: - - >>> from oauthlib.oauth2 import WebApplicationClient - >>> client = WebApplicationClient('your_id') - >>> client.prepare_request_body(code='sh35ksdf09sf') - 'grant_type=authorization_code&code=sh35ksdf09sf' - >>> client.prepare_request_body(code_verifier='KB46DCKJ873NCGXK5GD682NHDKK34GR') - 'grant_type=authorization_code&code_verifier=KB46DCKJ873NCGXK5GD682NHDKK34GR' - >>> client.prepare_request_body(code='sh35ksdf09sf', foo='bar') - 'grant_type=authorization_code&code=sh35ksdf09sf&foo=bar' - - `Section 3.2.1` also states: - In the "authorization_code" "grant_type" request to the token - endpoint, an unauthenticated client MUST send its "client_id" to - prevent itself from inadvertently accepting a code intended for a - client with a different "client_id". This protects the client from - substitution of the authentication code. (It provides no additional - security for the protected resource.) - - .. _`Section 4.1.1`: https://tools.ietf.org/html/rfc6749#section-4.1.1 - .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc6749#section-3.2.1 - """ - code = code or self.code - if 'client_id' in kwargs: - warnings.warn("`client_id` has been deprecated in favor of " - "`include_client_id`, a boolean value which will " - "include the already configured `self.client_id`.", - DeprecationWarning) - if kwargs['client_id'] != self.client_id: - raise ValueError("`client_id` was supplied as an argument, but " - "it does not match `self.client_id`") - - kwargs['client_id'] = self.client_id - kwargs['include_client_id'] = include_client_id - return prepare_token_request(self.grant_type, code=code, body=body, - redirect_uri=redirect_uri, code_verifier=code_verifier, **kwargs) - - def parse_request_uri_response(self, uri, state=None): - """Parse the URI query for code and state. - - If the resource owner grants the access request, the authorization - server issues an authorization code and delivers it to the client by - adding the following parameters to the query component of the - redirection URI using the "application/x-www-form-urlencoded" format: - - :param uri: The callback URI that resulted from the user being redirected - back from the provider to you, the client. - :param state: The state provided in the authorization request. - - **code** - The authorization code generated by the authorization server. - The authorization code MUST expire shortly after it is issued - to mitigate the risk of leaks. A maximum authorization code - lifetime of 10 minutes is RECOMMENDED. The client MUST NOT - use the authorization code more than once. If an authorization - code is used more than once, the authorization server MUST deny - the request and SHOULD revoke (when possible) all tokens - previously issued based on that authorization code. - The authorization code is bound to the client identifier and - redirection URI. - - **state** - If the "state" parameter was present in the authorization request. - - This method is mainly intended to enforce strict state checking with - the added benefit of easily extracting parameters from the URI:: - - >>> from oauthlib.oauth2 import WebApplicationClient - >>> client = WebApplicationClient('your_id') - >>> uri = 'https://example.com/callback?code=sdfkjh345&state=sfetw45' - >>> client.parse_request_uri_response(uri, state='sfetw45') - {'state': 'sfetw45', 'code': 'sdfkjh345'} - >>> client.parse_request_uri_response(uri, state='other') - Traceback (most recent call last): - File "", line 1, in - File "oauthlib/oauth2/rfc6749/__init__.py", line 357, in parse_request_uri_response - back from the provider to you, the client. - File "oauthlib/oauth2/rfc6749/parameters.py", line 153, in parse_authorization_code_response - raise MismatchingStateError() - oauthlib.oauth2.rfc6749.errors.MismatchingStateError - """ - response = parse_authorization_code_response(uri, state=state) - self.populate_code_attributes(response) - return response diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__init__.py deleted file mode 100644 index 1695b41..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -oauthlib.oauth2.rfc6749 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 RFC6749. -""" -from .authorization import AuthorizationEndpoint -from .introspect import IntrospectEndpoint -from .metadata import MetadataEndpoint -from .pre_configured import ( - BackendApplicationServer, LegacyApplicationServer, MobileApplicationServer, - Server, WebApplicationServer, -) -from .resource import ResourceEndpoint -from .revocation import RevocationEndpoint -from .token import TokenEndpoint diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index d1652cc23c4e9f155a7551a73486216a561bd728..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmZuv%Z}496iwQ+P1AG;1q2Hg*>*9_OhG&(gcuM=NDN4wk&wKJ(%4O{@guUGNSy`$ z0e`?RWy^|RV8wOXsVdD}DL2RG$o9FuSB}Sl1M$;ctfn2u`C}J{0i5#=KFuIu2RYcq z9p>^5>bMqnS(kgrYq7_AypQ@V?y&*)kkV5r=oy;I4+f}DYmO`XW$~9&ragSrw{i2 zS@73|=a{<9BP&TouiMi<3S3Gm3<#6Y!YHXrlA8lIIwvN>naTECuX*x5%dd#QXJyG~ z-kx(oR83U#_zNkrd~=6zE|-*%+d_Z0^Wk^0yrqJxXhF2BR8IEygVP16<@VkKc6=$p z)D7`<`k)!4DVBMfHe=hAea*^F2nwL;UAd|YMC0>arOLDVQK?7@@4KQ!r3h9%AXVR{ zflaFWbVK*48+xG|x&HyJ@(PCl diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/authorization.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/authorization.cpython-310.pyc deleted file mode 100644 index 81753949c2458d8fade57c29a5a6c8e62b1f6b0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/introspect.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/introspect.cpython-310.pyc deleted file mode 100644 index 8afbffe7f8ff61d0fd235c5425b9fef3b696679f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5095 zcmb7ITW{mW6(%X_Vp;Y&Y0{<}Af0Y{fr7P^xXGpsf+Ft5Nem?3t*syki-M*(Ba3T_ z!_1I&Bxr*I$!q)Gq7Po6FZ~yN><{RZUfY-b3k8DoJ41?+x85S9!Qp5wXU_FIXDl~1 z+7_Na+K0oV?^xD9>Bs8h;>SC9wTFgVp2cnM#I|Rfuj4uR*5caO^<3NHF0aS+al>n% z-{8%-Ic|Ba@tU`0Tf(_)i}gpg*LmOKExz`Z#n(jZ%bK^rog=H;p8lgPgFG9>(MivA zc6w?U-g)!&U-U%6QyC>$53iCs6=Bx?;@dy%_HM$WaT<%UNU|V{WWwZ-Wh24v?czkX z(|eU259FCh*nV{aRvq`+?Ou=h*Ur7gMp>5XxBC4|%2@XzkqvuNo%ToBIPQb>H}Blp zX+MV6tb?vSZyt)za-p-w4hHah-5kBMr<7EWZ5ngtonHl7?3KdKe-H*)IPwLp(0-6` zKTm@5Ac}*ND2}p8NTgSv%2aP-R9G;PMdtBp-0@sq^Xk0A>%8%m?KMPm&0TZ(hB1Ww zrR}wNo3DRmd28H-F*fJVE)}t0DEJ##Uk6@*!IE|`W51zGS4m4Y3p3Hyl1 zaw`rGwxeVy)wnQza3b>z6v3<6)mvePi!_!KauiKeLY$FnIv$IcQiL)&7ZY|JQNjL8 z9<0v9=h?#P3QmVgjti+)#b1$~{4-TDgSQJ#yeOe%u0jE?#IJ$GtT+dwhRS&m!@Z1F z!cgc^GR@2}u?WthY4+(V(=2AtTv|AR}=W6uP*cXpa_m9j_A@1^I?^Z$pV86gw(@A~0Pde-PGI zB8&R;-o>jKn#{ViXVxRzwr2SH&dfX-Fd^MTnnqh1qlYgqflYFM9Iy!o*CMf0fqUf35FjJS5$ zo;4n<4D$$?%U}Znyu=615{Y9BfLE*p8Ym4^~YtSB+(R=V7z@kw|^!V@aUiB=Rfr-lQ zmZCI2f3e&tfB_4D^h+3+*MPk9Iu|GTsiM?9Z{#UpLCl*Yz#ag2?vk|gb+TWs{ZL|% z;@{g^p=R_uubYo|!+Z>q_#-R=`Fxy$5KNNIYpG1TYw8A_RfA;SI#n=!k=5qziR2UY z0@3e~G5rM>%>~1@@ETzpL}P7)EShJC+Rf0o^HnJe@9kq=zlz3LcWlRQe7#wB?6$pS zZ{n|G-?Ur5bG~lWUE9U1`*o}SUAu+(m+a~Gexh4t@YVfF~w8 z2}c$^r|Q+Jo?G;|jXKB){sa);OLSi5pHdYRZN{`kDmH#PSWVYeu0{b7$4JIcPj$IQ zs4PPwDYB%=af{O^O4%|oBMrkt15=-vqi?N7$miP^7Z=+U!`r!vMM7@FZ>=!;N*R-f zd%ym8|8Vc!9+hoWRV{oyH_4hSu~EO zU~C~FY9M)*r#Q1f*oshDh+e_gSOVQvHyZ;QVyCE16C=Js&W}Dm8dRiE{~?zGP&LdK zsBi=@M9GBWIF3m>W@3^0OADEb09@^^;O=$BBB>-gO#p~bDCIWkCyT;74pfYCm5!-6 zf>f*dA}nerWAegg(4M4PSp*IegUeXzL3Km8U@j{9=C zVH-|caq|SFH;(^LN^e}Hw1|;!L#5h@TZZ?XuYyPmUnc%Zz{_mz-Ml)QO58ijbmDz) zIX8|prJo{@y%&}fWfAHZF6X_toXL?5uiQ|&jwvbB50Ph|C=Aqd7(2wPsm^cTY9q6^ zk@u&)YjXSlsFf6L@7Bx};^3g$rdw5lYbtJ4ZQmbDp2yVh`2J^k5SKGe--oC8zS_WM z?|DOhp@ULQ+T3GQ6ARSK)DXWbGSCf6QH7)EnnRPCnwI4{?v`t}9j8G>P3N1=EwiG# zseVeUzmI0#M16M(<$5<3m#bbV$77ikwPB<9$4*iDxhMF~kGU`!X69?BBKr{AvF1la l@Of&8hwGS|x85#P@JsqXk|w5ItJP}R9jD`Lfy?J={{eA@A>sf4 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/metadata.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/metadata.cpython-310.pyc deleted file mode 100644 index 01404b738d2b3656fa550c7ac123d245eade703c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8849 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/pre_configured.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/pre_configured.cpython-310.pyc deleted file mode 100644 index 0f6cdc8df339c3c01b0b9991ebde3753219024b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8022 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 RD$?c)l0Gl#Rb4R;{|k6Ml=1)o diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/resource.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/resource.cpython-310.pyc deleted file mode 100644 index 161538a4777baa291e284ced1ba9ce44743db8bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3905 zcmai1TW{RP6(+g&)k;>wcR9ykc#MU-7x@+CGLx4Ah*k*KMxy1=#uL2+ial(^)2 zW+-_VtD=Pkv@iVu?UVHAm!iLiuX)OI-umKxXGpHJlF$<1?2w!}xB1R@&c=(2O$*mQ z?5+O4TbA`bJ)FPFc=#o5^#lXAdKS026WTo+zopO_mU<=I;$>b5%fm{qGOYHhwk7P7 zny8=Jy~fuTukzZl#cQJSs?=+8=c(1MPyX4Ay+jYfV5egy>mAwm@7=%ip!uh(uV!<5 z5GXc`c@heSnHRBOI10s3MB39q9I?314m=seiDF^A8~7{|f(zd4$CCMRq>^C}?P4Ei zBN-nAoSuI38LVLIoi(=gc1U&HPNzJS2Kl`d}y6(`c48S4ED zipk4Z1`~m}`Myw!>6oIRg|7u?GT);*%_hUOJrK+f14K4oj(u0GW;|{DFyk+11?&&tpFbue-1?@9}W)_n?IzEB3l=R)xEYNJ= zDHg?=iI<~5!W&wWe^X5P@hB7H$50H%jWyqTQ`AVLus0fa)eGpFFdju^+rR*{)W2-bvhH4=W%4}dVj^-iMM zu84&6!f?!j=pYUc5b4Os0Tl7U&k}%e9!mf_-zfB$G&>vw{=k@$BP-F! z6G9}JH+RN5&O!vU2wDh(V21(n^eRWV7>Ni+hCtD0Jst^)<0T*lN+oB9O5{Tcao%OZ zz<3082=gidD-X3Y)+DOH_^-CNzhgIxlrj=-A|eJ-Y#=-?BXtF;RWJI=e_%P*PhRx;AchJ z1EHW%Z_K<<#eiT=hR}>df)5g30Lq=1kBuS%z(DJfdf4rXmmX1W$B&2I86W&23$<%3 z`gDJDJw-!sVa_vFB^7BHaUpmK|G^hIu-0C_8ZJpRt>(sWb zsWY`)XNo7c#I2{+YkRX@mc+AZ-F1T~(5{=-GQ(85a>c-0R+g z@xvt?sn?cVgtY&t?jRnD?rswJGWLbmL3jTX)m6UqMnJ{KBXCCdKtu;!6twPW3~WUk zo!e_&6=?DC$n*ETU7@-~$;&3|-Mr*=fnQToRJS0+&S)&_(7cLURWUT}s@=3FD_a-X zy;JznbV%7ffisAZwG+?4z8Z)a2Heff`W@V`zQgW59M^GL_K9<9eQCWyZ_LYoca9ug znmVs+d41~e$_jen733kWQ4j1r2L86QCW&Y~;8YZfs-M?TVqXwCqt=x17}b(GoveRF zJz#l#r50CsDnNh0gMME~5{1fyu52f30%i<6`;I1tx)noojN=Tjct+~fu9!A5FQgsz zd!R|_V2ENolSKvBv;|?XFQEHOBD)o!21nyIby1$$C*i_Fh1!qeL+T0()n~F|wi}qf zrqE-0AM_i%sO>odIcw7;bM8dL3wY?CP8MoC*7XW}=Gz6q`0TH`^^LrI9xjD5Xu;&HjI3 z-g4a+i5KQyYOc#;-*rvVO6!2pNJu@-=$$ezBL-qYd4mQr?p)SVmCdXs;v|AqKgUqF z%1(X7sWfe;RNRj3*sV9MmZX*K1xY0`t$}BDfwA7TqQ+8>GK`~)y2?9%k!cJhnUFS6 ndcMI9bmnb5%M}_(-c=^0^+%c4l&@Jd%T~SCa+aN@^G@l%0^VM} diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/revocation.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/revocation.cpython-310.pyc deleted file mode 100644 index 676397149d09e0febb688788060d89e93d8b69ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5191 zcmbtYPmkNi6(^~`tJT_0>NG(Dq|>Bnt-_MB8#`?`MG@C^+5pMgU9S;DX~3m8qZMt6 zqs&mdSw$NZh_C$s1$wZLz4UYRGw|Az&+REd;r`wXNom(xqd_TXI2_Krd4GTJ4dup0 z%fa<$cX#xM%Z~F8dRV=xcz7Rwy^DrB1BbiZi`{{XdnNWJl|jXIc$L@U>ZCTPpiaBsI&K9I70Sb-9d$WgDS5KYHQWC z8s8wpJ#+_k(ZF++U*K!J_0avs9W?nmZ$ESfYrG1BUCdrws;gjX{x_@0rI4&NUaQ4$ z6*JjP3(khejBF0GM34ppVI1K>vs5yo@j$R3429MV@?m78gdXE1jHP>q-c31~$Rs|7 zIU~)EqBv$l!KQ&q3mcP(rHba(@WuXib;ldD?FPOfI@rkfu#d1q_0H|PdpjS5q`cyy zeg*%V`0F2|Nu5XT!g=hv&H{JeTX@s&2p$)!n97ecJNouRZHL zy+SE!4Rga9n&P4XB49M0p+o4yE4=!b%1JFHt$WZj(C1IpllpvPLH4MVJyP#ch1b#d zT;~%fxn6bB>hT@dIcd1gykp)r7WGBrG0+QE$Wbm*gWrBf?1C3w;F4|D!;Kl^wXci;jz=~a! z2QA(XCs9gK93&;BC^6n_V;0;Jqjc@aRBW?TZ#CnRB{F4U0B`^iX0R=1A0s+SLSb;* z!bC|d3=ȉvxDvv9mz9VILPi2xx&vBHjm;~rxlOC=<9bJdWW&eT+DQPRt^!_t#M zz@YQhf@6S5a$wg2YNBu!2g=HbDY_&S#MqewS$K@W0Ab<=MRwN^-CKl(g8q^QPF_uFGw7euwR$t+Svg4|i z7-0?@BjGaGZYIv*ky31F9qc6Ho^A^)8@@Y zb~P|jm|h4qicV$TzG?N=-2Abg-IrGYu&U;V( z4t(ldQk2NE*YY*OUy6>dai**i%Y&@O#c+0@D5qpq65614)(m0eAy7A~Tcc+6*%bLf zC{$-owr&I1CsP{0AGB?d+We5!Y&yGWZYGKNWYErBKfK5Up23_;`9oKs%puqrQg5`@ZLTZvEe0t?AaEdS1)DYZds0%S^K~56_UP-i~41TeiskO2*?r!xhXdk zJ+JIl%3js>xC<=yf?C6IZY6rAEb!!7p^z|^T?r!-(AH}Zc{)|IkO~XJ`%XDUWy!2|dk%sNRC>V)wn zp@L_sveM%&*>HOa#1`tW?B4qQy$^S9{iXwOBuVUWIu24JLJmDgL0+64h!l82DQXqd z&UhQUa{JEShqrfbd_+`lSV#$ma%O27n8~5mtSmWRW)h0WW#oX0jZ4iwzVRuPhQiR) zeWm(H0a76*AV5iOEaIt=;yl>GL?)+cG>PWc#8&cH$_KM4HvI5(X3SG6?2l@j@(Gs5 zbSPO}yfocGgp$e#j=YevkMG^xE7=lX0{nr_@DeQoMM(>#8P&QdVxbrFqNw`{gHSn0 z%3NmHbA=-H*z9peL03&}Y!eoeI5IfcTFqFwOdQS_=60fT+a?9}AaPG4Qi~n!C>*sBEH&@P?1E_`_ zlpIB|K#vlpaRv>(wXFtLOj2-uO3x+$tX7x=$S9kuH37jHljEobBzZ}~D)=R;f&Ynh`Nj7+XdewZKRNc})+PLG&K6$=+QX+%R)jg+jETW$5; z!A2zcXZyK%_x;aTb~Z=vRm(pA)SaJ7-pp5Y;S1%aXGmS&|E{F2pHGTp_->@I;xwt# zntwjA=YLozB{xPqy-T6s=hM$sST5b^)CQM*6+~M2GVzB2&r7SptEWd%NvB1LGkAIV zZW3woLmT9SSC%jG;?uV|X7Jkb%?ye6)Va6gnfgWj5Gnmk9im>w*ggF1N%Ji#AzCOd z=Dl;ui04#g9dGA@PQ@HScXm20I;tl~%{Z#Je19VO4Cie>Yy18evmnmjG<=`S(Dzjv z`ww0+)C(2lTGHkutWZrj>P>2h-4zk&jIOAjQcW~emFZW|G@Ytftyf*o^W4@`uSsQ8 z`)RvpW_32yPcSEIppHC%Y6lmK(|Ip6pG9m9TDPBw@)C21Z%F1NgyAJyLni+S%Q5Fi lprvS2L;O76vgR+X27X0fq%?hAs5;GN+iQE5+?IE_@*f^(AFu!b diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/token.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/token.cpython-310.pyc deleted file mode 100644 index e49106a1cba3a75cc920db32c22d743be2beb7a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4340 zcma)9O>^7E83w>_h?2jZ#?3T{6?eoLi%i^3(t6sacH*{~#*oZ zNFs;nCBF6tv?uB4-_n18Yfm}*)s>%i!=rvI=LKU1TK_q)1trz-}*C!hZOm-b)J zzij((#HBM%!YpDAdVcKiaT>8PibhE2mJYCMk1vB##63hT(9OP=Tu<7c5ZG zq_cv`nE5eW9El_wj-2BW4`B5Yj{*#uz>tYZk1{*ySp&N6kT00iXOjepNi$@Sz%C@S zqJ)!vn<27RTVbSGuP`TAa(LM%UV z?tkrd925~^6eQy`iID}j^^yX#hffX;;X6W4>4WvhBcz)j>e{3~g3gah5vecyF;h&) zB0JV$)b^9Sy+?;jC!B%shvfItfV+2#{H7cqDV55*y&gO9iA=h%vX}a5^qDsL*9)U* z?&8{Z9{o}4rjh?w!uG-tEZTPV5=Bz9m;;@HqF@^;9UZvWN)M%xMQR>Zg`$yTq-c>^ zT1*fzU+gM&0$&A~4+ZB((%C5!;SYz0j{&r%G|hsLh=@qmxlQ`Ci1o^pNF9Vz2Z{e063V2ZiN-&>F z2#|6rel~HAnJD6tjJYnafk?*Mi_)r+CEp%4K8%x6Mizs}l3~oJP%=kzt)%wPNe*W@ zLwlpKqzZ$@B~yghm33x-{S%PsI#OS-hz+%4$ZO_U7+|og#j8k)FoSCLEtIQ0~ znptQoGmLrF&^Rz&n0uX?s9|Q_^gJGO<#~DA(d}?K<sH%&s> zJ7V!s4`-=fIzd9mKkI({QBQKkc2hri<`0?d%}-lJ=gu6&-kkkqPutN=CxVWKpW&8G zG`3mC&o-ym4_6Nl-8nV^9f{@__30+GU*dFO%#5eNRJ73Tm|_EeFHEt8KkZx5T%kuC zLX8KwUs`DD*7V(VZ7aCERiU^_f=X4J)W1dzfw-dR0v^Alq3dX-&bpd6!}Nx>MKX~W z)f|Q+SMSkN=P2LD6$B2oCSR)CAEo-{-zs#F2dc(|l6xKj# zzr`GJ5ikBkFMkLWMe*0kE+{ef0&3?M^8K@}>HC7GHzg53&&IqU`)t$0V zE3@X)>KUHB+N_4QKC6rOW_9!$vxfL!)<6#{p0-YH%xs{yab|tnQti{t(9$EVvkEG> zb-Fd9c^A&;qoOkX^uY=C#h^UjXKkV?qAol3qzJBL>gdS2}( z;UsU2m>=S-G2QusOPmRU5$zAlRCI311&u=XEz#{<6coAqI*6TzP*E~ONw$KL$KBND zJG}8CE>&LBk8WN6N%s2!~%z2FARz3K^{OXel9*Z0FR=I)L4(KM0DD_!ka1!sK-;jg>+9>y}2P%7^pgYRqL%+8=AL3 spHEr2S?ya z-Lm2etgu7NYsEwv|1)EazT}skP7GW;2mOHx0C@GqZL#J%RsB?3}F0#f5aQA=xq z*L7Ym!ZfUO$Qwm7ZC1L$TSb&cm2UEdB2HtcTeqMaJzmB#EA5c8`=k=vi5}p+{oTVP z*O{=$P82oq(?249bIhO{Ojl3cLaEtfW|kK-sgb3|^!huZ6QP?MkrnJU-t!ru%prb zKc*|VVnO&DM%VoyVlxyS`m&=xL6G$%y5W0kj;!K9(t{v1Bl)$g>2AIN9l4`Q?IIeTr>3 m^9$zRenEtoU>2c7O{URNAxX*UvA4&xT?#=vYzO{X3O)e6Z^YaH diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/authorization_code.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/authorization_code.cpython-310.pyc deleted file mode 100644 index 680284f000a6943ff5520243d962969365574c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18303 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 Xox&lL$^+ulKPhPiJ)h2xpBVmcc^d%m diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/base.cpython-310.pyc deleted file mode 100644 index e392c3fe968e83ddf578beba95e28506ed5b9ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9280 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 BbR7Ty diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/implicit.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/implicit.cpython-310.pyc deleted file mode 100644 index f29deed07c224e19ba6dddccd578b61dfe8d6cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12867 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 G?tcJw%FOHl diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/refresh_token.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/refresh_token.cpython-310.pyc deleted file mode 100644 index 7ccb17d74dacf29e76c7f6238e066083cf043735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4649 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 dOun4duPS{%rhl^vl587wyAIbZnhonzR_ diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py deleted file mode 100644 index 858855a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py +++ /dev/null @@ -1,548 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import base64 -import hashlib -import json -import logging - -from oauthlib import common - -from .. import errors -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -def code_challenge_method_s256(verifier, challenge): - """ - If the "code_challenge_method" from `Section 4.3`_ was "S256", the - received "code_verifier" is hashed by SHA-256, base64url-encoded, and - then compared to the "code_challenge", i.e.: - - BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) == code_challenge - - How to implement a base64url-encoding - function without padding, based upon the standard base64-encoding - function that uses padding. - - To be concrete, example C# code implementing these functions is shown - below. Similar code could be used in other languages. - - static string base64urlencode(byte [] arg) - { - string s = Convert.ToBase64String(arg); // Regular base64 encoder - s = s.Split('=')[0]; // Remove any trailing '='s - s = s.Replace('+', '-'); // 62nd char of encoding - s = s.Replace('/', '_'); // 63rd char of encoding - return s; - } - - In python urlsafe_b64encode is already replacing '+' and '/', but preserve - the trailing '='. So we have to remove it. - - .. _`Section 4.3`: https://tools.ietf.org/html/rfc7636#section-4.3 - """ - return base64.urlsafe_b64encode( - hashlib.sha256(verifier.encode()).digest() - ).decode().rstrip('=') == challenge - - -def code_challenge_method_plain(verifier, challenge): - """ - If the "code_challenge_method" from `Section 4.3`_ was "plain", they are - compared directly, i.e.: - - code_verifier == code_challenge. - - .. _`Section 4.3`: https://tools.ietf.org/html/rfc7636#section-4.3 - """ - return verifier == challenge - - -class AuthorizationCodeGrant(GrantTypeBase): - - """`Authorization Code Grant`_ - - The authorization code grant type is used to obtain both access - tokens and refresh tokens and is optimized for confidential clients. - Since this is a redirection-based flow, the client must be capable of - interacting with the resource owner's user-agent (typically a web - browser) and capable of receiving incoming requests (via redirection) - from the authorization server:: - - +----------+ - | Resource | - | Owner | - | | - +----------+ - ^ - | - (B) - +----|-----+ Client Identifier +---------------+ - | -+----(A)-- & Redirection URI ---->| | - | User- | | Authorization | - | Agent -+----(B)-- User authenticates --->| Server | - | | | | - | -+----(C)-- Authorization Code ---<| | - +-|----|---+ +---------------+ - | | ^ v - (A) (C) | | - | | | | - ^ v | | - +---------+ | | - | |>---(D)-- Authorization Code ---------' | - | Client | & Redirection URI | - | | | - | |<---(E)----- Access Token -------------------' - +---------+ (w/ Optional Refresh Token) - - Note: The lines illustrating steps (A), (B), and (C) are broken into - two parts as they pass through the user-agent. - - Figure 3: Authorization Code Flow - - The flow illustrated in Figure 3 includes the following steps: - - (A) The client initiates the flow by directing the resource owner's - user-agent to the authorization endpoint. The client includes - its client identifier, requested scope, local state, and a - redirection URI to which the authorization server will send the - user-agent back once access is granted (or denied). - - (B) The authorization server authenticates the resource owner (via - the user-agent) and establishes whether the resource owner - grants or denies the client's access request. - - (C) Assuming the resource owner grants access, the authorization - server redirects the user-agent back to the client using the - redirection URI provided earlier (in the request or during - client registration). The redirection URI includes an - authorization code and any local state provided by the client - earlier. - - (D) The client requests an access token from the authorization - server's token endpoint by including the authorization code - received in the previous step. When making the request, the - client authenticates with the authorization server. The client - includes the redirection URI used to obtain the authorization - code for verification. - - (E) The authorization server authenticates the client, validates the - authorization code, and ensures that the redirection URI - received matches the URI used to redirect the client in - step (C). If valid, the authorization server responds back with - an access token and, optionally, a refresh token. - - OAuth 2.0 public clients utilizing the Authorization Code Grant are - susceptible to the authorization code interception attack. - - A technique to mitigate against the threat through the use of Proof Key for Code - Exchange (PKCE, pronounced "pixy") is implemented in the current oauthlib - implementation. - - .. _`Authorization Code Grant`: https://tools.ietf.org/html/rfc6749#section-4.1 - .. _`PKCE`: https://tools.ietf.org/html/rfc7636 - """ - - default_response_mode = 'query' - response_types = ['code'] - - # This dict below is private because as RFC mention it: - # "S256" is Mandatory To Implement (MTI) on the server. - # - _code_challenge_methods = { - 'plain': code_challenge_method_plain, - 'S256': code_challenge_method_s256 - } - - def create_authorization_code(self, request): - """ - Generates an authorization grant represented as a dictionary. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - grant = {'code': common.generate_token()} - if hasattr(request, 'state') and request.state: - grant['state'] = request.state - log.debug('Created authorization code grant %r for request %r.', - grant, request) - return grant - - def create_authorization_response(self, request, token_handler): - """ - The client constructs the request URI by adding the following - parameters to the query component of the authorization endpoint URI - using the "application/x-www-form-urlencoded" format, per `Appendix B`_: - - response_type - REQUIRED. Value MUST be set to "code" for standard OAuth2 - authorization flow. For OpenID Connect it must be one of - "code token", "code id_token", or "code token id_token" - we - essentially test that "code" appears in the response_type. - client_id - REQUIRED. The client identifier as described in `Section 2.2`_. - redirect_uri - OPTIONAL. As described in `Section 3.1.2`_. - scope - OPTIONAL. The scope of the access request as described by - `Section 3.3`_. - state - RECOMMENDED. An opaque value used by the client to maintain - state between the request and callback. The authorization - server includes this value when redirecting the user-agent back - to the client. The parameter SHOULD be used for preventing - cross-site request forgery as described in `Section 10.12`_. - - The client directs the resource owner to the constructed URI using an - HTTP redirection response, or by other means available to it via the - user-agent. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - :returns: headers, body, status - :raises: FatalClientError on invalid redirect URI or client id. - - A few examples:: - - >>> from your_validator import your_validator - >>> request = Request('https://example.com/authorize?client_id=valid' - ... '&redirect_uri=http%3A%2F%2Fclient.com%2F') - >>> from oauthlib.common import Request - >>> from oauthlib.oauth2 import AuthorizationCodeGrant, BearerToken - >>> token = BearerToken(your_validator) - >>> grant = AuthorizationCodeGrant(your_validator) - >>> request.scopes = ['authorized', 'in', 'some', 'form'] - >>> grant.create_authorization_response(request, token) - (u'http://client.com/?error=invalid_request&error_description=Missing+response_type+parameter.', None, None, 400) - >>> request = Request('https://example.com/authorize?client_id=valid' - ... '&redirect_uri=http%3A%2F%2Fclient.com%2F' - ... '&response_type=code') - >>> request.scopes = ['authorized', 'in', 'some', 'form'] - >>> grant.create_authorization_response(request, token) - (u'http://client.com/?code=u3F05aEObJuP2k7DordviIgW5wl52N', None, None, 200) - >>> # If the client id or redirect uri fails validation - >>> grant.create_authorization_response(request, token) - Traceback (most recent call last): - File "", line 1, in - File "oauthlib/oauth2/rfc6749/grant_types.py", line 515, in create_authorization_response - >>> grant.create_authorization_response(request, token) - File "oauthlib/oauth2/rfc6749/grant_types.py", line 591, in validate_authorization_request - oauthlib.oauth2.rfc6749.errors.InvalidClientIdError - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 2.2`: https://tools.ietf.org/html/rfc6749#section-2.2 - .. _`Section 3.1.2`: https://tools.ietf.org/html/rfc6749#section-3.1.2 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 10.12`: https://tools.ietf.org/html/rfc6749#section-10.12 - """ - try: - self.validate_authorization_request(request) - log.debug('Pre resource owner authorization validation ok for %r.', - request) - - # If the request fails due to a missing, invalid, or mismatching - # redirection URI, or if the client identifier is missing or invalid, - # the authorization server SHOULD inform the resource owner of the - # error and MUST NOT automatically redirect the user-agent to the - # invalid redirection URI. - except errors.FatalClientError as e: - log.debug('Fatal client error during validation of %r. %r.', - request, e) - raise - - # If the resource owner denies the access request or if the request - # fails for reasons other than a missing or invalid redirection URI, - # the authorization server informs the client by adding the following - # parameters to the query component of the redirection URI using the - # "application/x-www-form-urlencoded" format, per Appendix B: - # https://tools.ietf.org/html/rfc6749#appendix-B - except errors.OAuth2Error as e: - log.debug('Client error during validation of %r. %r.', request, e) - request.redirect_uri = request.redirect_uri or self.error_uri - redirect_uri = common.add_params_to_uri( - request.redirect_uri, e.twotuples, - fragment=request.response_mode == "fragment") - return {'Location': redirect_uri}, None, 302 - - grant = self.create_authorization_code(request) - for modifier in self._code_modifiers: - grant = modifier(grant, token_handler, request) - if 'access_token' in grant: - self.request_validator.save_token(grant, request) - log.debug('Saving grant %r for %r.', grant, request) - self.request_validator.save_authorization_code( - request.client_id, grant, request) - return self.prepare_authorization_response( - request, grant, {}, None, 302) - - def create_token_response(self, request, token_handler): - """Validate the authorization code. - - The client MUST NOT use the authorization code more than once. If an - authorization code is used more than once, the authorization server - MUST deny the request and SHOULD revoke (when possible) all tokens - previously issued based on that authorization code. The authorization - code is bound to the client identifier and redirection URI. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - """ - headers = self._get_default_headers() - try: - self.validate_token_request(request) - log.debug('Token request validation ok for %r.', request) - except errors.OAuth2Error as e: - log.debug('Client error during validation of %r. %r.', request, e) - headers.update(e.headers) - return headers, e.json, e.status_code - - token = token_handler.create_token(request, refresh_token=self.refresh_token) - - for modifier in self._token_modifiers: - token = modifier(token, token_handler, request) - - self.request_validator.save_token(token, request) - self.request_validator.invalidate_authorization_code( - request.client_id, request.code, request) - headers.update(self._create_cors_headers(request)) - return headers, json.dumps(token), 200 - - def validate_authorization_request(self, request): - """Check the authorization request for normal and fatal errors. - - A normal error could be a missing response_type parameter or the client - attempting to access scope it is not allowed to ask authorization for. - Normal errors can safely be included in the redirection URI and - sent back to the client. - - Fatal errors occur when the client_id or redirect_uri is invalid or - missing. These must be caught by the provider and handled, how this - is done is outside of the scope of OAuthLib but showing an error - page describing the issue is a good idea. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - - # First check for fatal errors - - # If the request fails due to a missing, invalid, or mismatching - # redirection URI, or if the client identifier is missing or invalid, - # the authorization server SHOULD inform the resource owner of the - # error and MUST NOT automatically redirect the user-agent to the - # invalid redirection URI. - - # First check duplicate parameters - for param in ('client_id', 'response_type', 'redirect_uri', 'scope', 'state'): - try: - duplicate_params = request.duplicate_params - except ValueError: - raise errors.InvalidRequestFatalError(description='Unable to parse query string', request=request) - if param in duplicate_params: - raise errors.InvalidRequestFatalError(description='Duplicate %s parameter.' % param, request=request) - - # REQUIRED. The client identifier as described in Section 2.2. - # https://tools.ietf.org/html/rfc6749#section-2.2 - if not request.client_id: - raise errors.MissingClientIdError(request=request) - - if not self.request_validator.validate_client_id(request.client_id, request): - raise errors.InvalidClientIdError(request=request) - - # OPTIONAL. As described in Section 3.1.2. - # https://tools.ietf.org/html/rfc6749#section-3.1.2 - log.debug('Validating redirection uri %s for client %s.', - request.redirect_uri, request.client_id) - - # OPTIONAL. As described in Section 3.1.2. - # https://tools.ietf.org/html/rfc6749#section-3.1.2 - self._handle_redirects(request) - - # Then check for normal errors. - - # If the resource owner denies the access request or if the request - # fails for reasons other than a missing or invalid redirection URI, - # the authorization server informs the client by adding the following - # parameters to the query component of the redirection URI using the - # "application/x-www-form-urlencoded" format, per Appendix B. - # https://tools.ietf.org/html/rfc6749#appendix-B - - # Note that the correct parameters to be added are automatically - # populated through the use of specific exceptions. - - request_info = {} - for validator in self.custom_validators.pre_auth: - request_info.update(validator(request)) - - # REQUIRED. - if request.response_type is None: - raise errors.MissingResponseTypeError(request=request) - # Value MUST be set to "code" or one of the OpenID authorization code including - # response_types "code token", "code id_token", "code token id_token" - elif not 'code' in request.response_type and request.response_type != 'none': - raise errors.UnsupportedResponseTypeError(request=request) - - if not self.request_validator.validate_response_type(request.client_id, - request.response_type, - request.client, request): - - log.debug('Client %s is not authorized to use response_type %s.', - request.client_id, request.response_type) - raise errors.UnauthorizedClientError(request=request) - - # OPTIONAL. Validate PKCE request or reply with "error"/"invalid_request" - # https://tools.ietf.org/html/rfc6749#section-4.4.1 - if self.request_validator.is_pkce_required(request.client_id, request) is True: - if request.code_challenge is None: - raise errors.MissingCodeChallengeError(request=request) - - if request.code_challenge is not None: - request_info["code_challenge"] = request.code_challenge - - # OPTIONAL, defaults to "plain" if not present in the request. - if request.code_challenge_method is None: - request.code_challenge_method = "plain" - - if request.code_challenge_method not in self._code_challenge_methods: - raise errors.UnsupportedCodeChallengeMethodError(request=request) - request_info["code_challenge_method"] = request.code_challenge_method - - # OPTIONAL. The scope of the access request as described by Section 3.3 - # https://tools.ietf.org/html/rfc6749#section-3.3 - self.validate_scopes(request) - - request_info.update({ - 'client_id': request.client_id, - 'redirect_uri': request.redirect_uri, - 'response_type': request.response_type, - 'state': request.state, - 'request': request - }) - - for validator in self.custom_validators.post_auth: - request_info.update(validator(request)) - - return request.scopes, request_info - - def validate_token_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - # REQUIRED. Value MUST be set to "authorization_code". - if request.grant_type not in ('authorization_code', 'openid'): - raise errors.UnsupportedGrantTypeError(request=request) - - for validator in self.custom_validators.pre_token: - validator(request) - - if request.code is None: - raise errors.InvalidRequestError( - description='Missing code parameter.', request=request) - - for param in ('client_id', 'grant_type', 'redirect_uri'): - if param in request.duplicate_params: - raise errors.InvalidRequestError(description='Duplicate %s parameter.' % param, - request=request) - - if self.request_validator.client_authentication_required(request): - # If the client type is confidential or the client was issued client - # credentials (or assigned other authentication requirements), the - # client MUST authenticate with the authorization server as described - # in Section 3.2.1. - # https://tools.ietf.org/html/rfc6749#section-3.2.1 - if not self.request_validator.authenticate_client(request): - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - elif not self.request_validator.authenticate_client_id(request.client_id, request): - # REQUIRED, if the client is not authenticating with the - # authorization server as described in Section 3.2.1. - # https://tools.ietf.org/html/rfc6749#section-3.2.1 - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - - if not hasattr(request.client, 'client_id'): - raise NotImplementedError('Authenticate client must set the ' - 'request.client.client_id attribute ' - 'in authenticate_client.') - - request.client_id = request.client_id or request.client.client_id - - # Ensure client is authorized use of this grant type - self.validate_grant_type(request) - - # REQUIRED. The authorization code received from the - # authorization server. - if not self.request_validator.validate_code(request.client_id, - request.code, request.client, request): - log.debug('Client, %r (%r), is not allowed access to scopes %r.', - request.client_id, request.client, request.scopes) - raise errors.InvalidGrantError(request=request) - - # OPTIONAL. Validate PKCE code_verifier - challenge = self.request_validator.get_code_challenge(request.code, request) - - if challenge is not None: - if request.code_verifier is None: - raise errors.MissingCodeVerifierError(request=request) - - challenge_method = self.request_validator.get_code_challenge_method(request.code, request) - if challenge_method is None: - raise errors.InvalidGrantError(request=request, description="Challenge method not found") - - if challenge_method not in self._code_challenge_methods: - raise errors.ServerError( - description="code_challenge_method {} is not supported.".format(challenge_method), - request=request - ) - - if not self.validate_code_challenge(challenge, - challenge_method, - request.code_verifier): - log.debug('request provided a invalid code_verifier.') - raise errors.InvalidGrantError(request=request) - elif self.request_validator.is_pkce_required(request.client_id, request) is True: - if request.code_verifier is None: - raise errors.MissingCodeVerifierError(request=request) - raise errors.InvalidGrantError(request=request, description="Challenge not found") - - for attr in ('user', 'scopes'): - if getattr(request, attr, None) is None: - log.debug('request.%s was not set on code validation.', attr) - - # REQUIRED, if the "redirect_uri" parameter was included in the - # authorization request as described in Section 4.1.1, and their - # values MUST be identical. - if request.redirect_uri is None: - request.using_default_redirect_uri = True - request.redirect_uri = self.request_validator.get_default_redirect_uri( - request.client_id, request) - log.debug('Using default redirect_uri %s.', request.redirect_uri) - if not request.redirect_uri: - raise errors.MissingRedirectURIError(request=request) - else: - request.using_default_redirect_uri = False - log.debug('Using provided redirect_uri %s', request.redirect_uri) - - if not self.request_validator.confirm_redirect_uri(request.client_id, request.code, - request.redirect_uri, request.client, - request): - log.debug('Redirect_uri (%r) invalid for client %r (%r).', - request.redirect_uri, request.client_id, request.client) - raise errors.MismatchingRedirectURIError(request=request) - - for validator in self.custom_validators.post_token: - validator(request) - - def validate_code_challenge(self, challenge, challenge_method, verifier): - if challenge_method in self._code_challenge_methods: - return self._code_challenge_methods[challenge_method](verifier, challenge) - raise NotImplementedError('Unknown challenge_method %s' % challenge_method) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/base.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/base.py deleted file mode 100644 index ca343a1..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/base.py +++ /dev/null @@ -1,268 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging -from itertools import chain - -from oauthlib.common import add_params_to_uri -from oauthlib.oauth2.rfc6749 import errors, utils -from oauthlib.uri_validate import is_absolute_uri - -from ..request_validator import RequestValidator -from ..utils import is_secure_transport - -log = logging.getLogger(__name__) - - -class ValidatorsContainer: - """ - Container object for holding custom validator callables to be invoked - as part of the grant type `validate_authorization_request()` or - `validate_authorization_request()` methods on the various grant types. - - Authorization validators must be callables that take a request object and - return a dict, which may contain items to be added to the `request_info` - returned from the grant_type after validation. - - Token validators must be callables that take a request object and - return None. - - Both authorization validators and token validators may raise OAuth2 - exceptions if validation conditions fail. - - Authorization validators added to `pre_auth` will be run BEFORE - the standard validations (but after the critical ones that raise - fatal errors) as part of `validate_authorization_request()` - - Authorization validators added to `post_auth` will be run AFTER - the standard validations as part of `validate_authorization_request()` - - Token validators added to `pre_token` will be run BEFORE - the standard validations as part of `validate_token_request()` - - Token validators added to `post_token` will be run AFTER - the standard validations as part of `validate_token_request()` - - For example: - - >>> def my_auth_validator(request): - ... return {'myval': True} - >>> auth_code_grant = AuthorizationCodeGrant(request_validator) - >>> auth_code_grant.custom_validators.pre_auth.append(my_auth_validator) - >>> def my_token_validator(request): - ... if not request.everything_okay: - ... raise errors.OAuth2Error("uh-oh") - >>> auth_code_grant.custom_validators.post_token.append(my_token_validator) - """ - - def __init__(self, post_auth, post_token, - pre_auth, pre_token): - self.pre_auth = pre_auth - self.post_auth = post_auth - self.pre_token = pre_token - self.post_token = post_token - - @property - def all_pre(self): - return chain(self.pre_auth, self.pre_token) - - @property - def all_post(self): - return chain(self.post_auth, self.post_token) - - -class GrantTypeBase: - error_uri = None - request_validator = None - default_response_mode = 'fragment' - refresh_token = True - response_types = ['code'] - - def __init__(self, request_validator=None, **kwargs): - self.request_validator = request_validator or RequestValidator() - - # Transforms class variables into instance variables: - self.response_types = self.response_types - self.refresh_token = self.refresh_token - self._setup_custom_validators(kwargs) - self._code_modifiers = [] - self._token_modifiers = [] - - for kw, val in kwargs.items(): - setattr(self, kw, val) - - def _setup_custom_validators(self, kwargs): - post_auth = kwargs.get('post_auth', []) - post_token = kwargs.get('post_token', []) - pre_auth = kwargs.get('pre_auth', []) - pre_token = kwargs.get('pre_token', []) - if not hasattr(self, 'validate_authorization_request'): - if post_auth or pre_auth: - msg = ("{} does not support authorization validators. Use " - "token validators instead.").format(self.__class__.__name__) - raise ValueError(msg) - # Using tuples here because they can't be appended to: - post_auth, pre_auth = (), () - self.custom_validators = ValidatorsContainer(post_auth, post_token, - pre_auth, pre_token) - - def register_response_type(self, response_type): - self.response_types.append(response_type) - - def register_code_modifier(self, modifier): - self._code_modifiers.append(modifier) - - def register_token_modifier(self, modifier): - self._token_modifiers.append(modifier) - - def create_authorization_response(self, request, token_handler): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - """ - raise NotImplementedError('Subclasses must implement this method.') - - def create_token_response(self, request, token_handler): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - """ - raise NotImplementedError('Subclasses must implement this method.') - - def add_token(self, token, token_handler, request): - """ - :param token: - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - # Only add a hybrid access token on auth step if asked for - if not request.response_type in ["token", "code token", "id_token token", "code id_token token"]: - return token - - token.update(token_handler.create_token(request, refresh_token=False)) - return token - - def validate_grant_type(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - client_id = getattr(request, 'client_id', None) - if not self.request_validator.validate_grant_type(client_id, - request.grant_type, request.client, request): - log.debug('Unauthorized from %r (%r) access to grant type %s.', - request.client_id, request.client, request.grant_type) - raise errors.UnauthorizedClientError(request=request) - - def validate_scopes(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - if not request.scopes: - request.scopes = utils.scope_to_list(request.scope) or utils.scope_to_list( - self.request_validator.get_default_scopes(request.client_id, request)) - log.debug('Validating access to scopes %r for client %r (%r).', - request.scopes, request.client_id, request.client) - if not self.request_validator.validate_scopes(request.client_id, - request.scopes, request.client, request): - raise errors.InvalidScopeError(request=request) - - def prepare_authorization_response(self, request, token, headers, body, status): - """Place token according to response mode. - - Base classes can define a default response mode for their authorization - response by overriding the static `default_response_mode` member. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token: - :param headers: - :param body: - :param status: - """ - request.response_mode = request.response_mode or self.default_response_mode - - if request.response_mode not in ('query', 'fragment'): - log.debug('Overriding invalid response mode %s with %s', - request.response_mode, self.default_response_mode) - request.response_mode = self.default_response_mode - - token_items = token.items() - - if request.response_type == 'none': - state = token.get('state', None) - if state: - token_items = [('state', state)] - else: - token_items = [] - - if request.response_mode == 'query': - headers['Location'] = add_params_to_uri( - request.redirect_uri, token_items, fragment=False) - return headers, body, status - - if request.response_mode == 'fragment': - headers['Location'] = add_params_to_uri( - request.redirect_uri, token_items, fragment=True) - return headers, body, status - - raise NotImplementedError( - 'Subclasses must set a valid default_response_mode') - - def _get_default_headers(self): - """Create default headers for grant responses.""" - return { - 'Content-Type': 'application/json', - 'Cache-Control': 'no-store', - 'Pragma': 'no-cache', - } - - def _handle_redirects(self, request): - if request.redirect_uri is not None: - request.using_default_redirect_uri = False - log.debug('Using provided redirect_uri %s', request.redirect_uri) - if not is_absolute_uri(request.redirect_uri): - raise errors.InvalidRedirectURIError(request=request) - - # The authorization server MUST verify that the redirection URI - # to which it will redirect the access token matches a - # redirection URI registered by the client as described in - # Section 3.1.2. - # https://tools.ietf.org/html/rfc6749#section-3.1.2 - if not self.request_validator.validate_redirect_uri( - request.client_id, request.redirect_uri, request): - raise errors.MismatchingRedirectURIError(request=request) - else: - request.redirect_uri = self.request_validator.get_default_redirect_uri( - request.client_id, request) - request.using_default_redirect_uri = True - log.debug('Using default redirect_uri %s.', request.redirect_uri) - if not request.redirect_uri: - raise errors.MissingRedirectURIError(request=request) - if not is_absolute_uri(request.redirect_uri): - raise errors.InvalidRedirectURIError(request=request) - - def _create_cors_headers(self, request): - """If CORS is allowed, create the appropriate headers.""" - if 'origin' not in request.headers: - return {} - - origin = request.headers['origin'] - if not is_secure_transport(origin): - log.debug('Origin "%s" is not HTTPS, CORS not allowed.', origin) - return {} - elif not self.request_validator.is_origin_allowed( - request.client_id, origin, request): - log.debug('Invalid origin "%s", CORS not allowed.', origin) - return {} - else: - log.debug('Valid origin "%s", injecting CORS headers.', origin) - return {'Access-Control-Allow-Origin': origin} diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/client_credentials.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/client_credentials.py deleted file mode 100644 index e7b4618..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/client_credentials.py +++ /dev/null @@ -1,123 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import json -import logging - -from .. import errors -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class ClientCredentialsGrant(GrantTypeBase): - - """`Client Credentials Grant`_ - - The client can request an access token using only its client - credentials (or other supported means of authentication) when the - client is requesting access to the protected resources under its - control, or those of another resource owner that have been previously - arranged with the authorization server (the method of which is beyond - the scope of this specification). - - The client credentials grant type MUST only be used by confidential - clients:: - - +---------+ +---------------+ - : : : : - : :>-- A - Client Authentication --->: Authorization : - : Client : : Server : - : :<-- B ---- Access Token ---------<: : - : : : : - +---------+ +---------------+ - - Figure 6: Client Credentials Flow - - The flow illustrated in Figure 6 includes the following steps: - - (A) The client authenticates with the authorization server and - requests an access token from the token endpoint. - - (B) The authorization server authenticates the client, and if valid, - issues an access token. - - .. _`Client Credentials Grant`: https://tools.ietf.org/html/rfc6749#section-4.4 - """ - - def create_token_response(self, request, token_handler): - """Return token or error in JSON format. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - If the access token request is valid and authorized, the - authorization server issues an access token as described in - `Section 5.1`_. A refresh token SHOULD NOT be included. If the request - failed client authentication or is invalid, the authorization server - returns an error response as described in `Section 5.2`_. - - .. _`Section 5.1`: https://tools.ietf.org/html/rfc6749#section-5.1 - .. _`Section 5.2`: https://tools.ietf.org/html/rfc6749#section-5.2 - """ - headers = self._get_default_headers() - try: - log.debug('Validating access token request, %r.', request) - self.validate_token_request(request) - except errors.OAuth2Error as e: - log.debug('Client error in token request. %s.', e) - headers.update(e.headers) - return headers, e.json, e.status_code - - token = token_handler.create_token(request, refresh_token=False) - - for modifier in self._token_modifiers: - token = modifier(token) - - self.request_validator.save_token(token, request) - - log.debug('Issuing token to client id %r (%r), %r.', - request.client_id, request.client, token) - return headers, json.dumps(token), 200 - - def validate_token_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - for validator in self.custom_validators.pre_token: - validator(request) - - if not getattr(request, 'grant_type', None): - raise errors.InvalidRequestError('Request is missing grant type.', - request=request) - - if not request.grant_type == 'client_credentials': - raise errors.UnsupportedGrantTypeError(request=request) - - for param in ('grant_type', 'scope'): - if param in request.duplicate_params: - raise errors.InvalidRequestError(description='Duplicate %s parameter.' % param, - request=request) - - log.debug('Authenticating client, %r.', request) - if not self.request_validator.authenticate_client(request): - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - else: - if not hasattr(request.client, 'client_id'): - raise NotImplementedError('Authenticate client must set the ' - 'request.client.client_id attribute ' - 'in authenticate_client.') - # Ensure client is authorized use of this grant type - self.validate_grant_type(request) - - request.client_id = request.client_id or request.client.client_id - log.debug('Authorizing access to client %r.', request.client_id) - self.validate_scopes(request) - - for validator in self.custom_validators.post_token: - validator(request) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/implicit.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/implicit.py deleted file mode 100644 index 6110b6f..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/implicit.py +++ /dev/null @@ -1,376 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib import common - -from .. import errors -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class ImplicitGrant(GrantTypeBase): - - """`Implicit Grant`_ - - The implicit grant type is used to obtain access tokens (it does not - support the issuance of refresh tokens) and is optimized for public - clients known to operate a particular redirection URI. These clients - are typically implemented in a browser using a scripting language - such as JavaScript. - - Unlike the authorization code grant type, in which the client makes - separate requests for authorization and for an access token, the - client receives the access token as the result of the authorization - request. - - The implicit grant type does not include client authentication, and - relies on the presence of the resource owner and the registration of - the redirection URI. Because the access token is encoded into the - redirection URI, it may be exposed to the resource owner and other - applications residing on the same device:: - - +----------+ - | Resource | - | Owner | - | | - +----------+ - ^ - | - (B) - +----|-----+ Client Identifier +---------------+ - | -+----(A)-- & Redirection URI --->| | - | User- | | Authorization | - | Agent -|----(B)-- User authenticates -->| Server | - | | | | - | |<---(C)--- Redirection URI ----<| | - | | with Access Token +---------------+ - | | in Fragment - | | +---------------+ - | |----(D)--- Redirection URI ---->| Web-Hosted | - | | without Fragment | Client | - | | | Resource | - | (F) |<---(E)------- Script ---------<| | - | | +---------------+ - +-|--------+ - | | - (A) (G) Access Token - | | - ^ v - +---------+ - | | - | Client | - | | - +---------+ - - Note: The lines illustrating steps (A) and (B) are broken into two - parts as they pass through the user-agent. - - Figure 4: Implicit Grant Flow - - The flow illustrated in Figure 4 includes the following steps: - - (A) The client initiates the flow by directing the resource owner's - user-agent to the authorization endpoint. The client includes - its client identifier, requested scope, local state, and a - redirection URI to which the authorization server will send the - user-agent back once access is granted (or denied). - - (B) The authorization server authenticates the resource owner (via - the user-agent) and establishes whether the resource owner - grants or denies the client's access request. - - (C) Assuming the resource owner grants access, the authorization - server redirects the user-agent back to the client using the - redirection URI provided earlier. The redirection URI includes - the access token in the URI fragment. - - (D) The user-agent follows the redirection instructions by making a - request to the web-hosted client resource (which does not - include the fragment per [RFC2616]). The user-agent retains the - fragment information locally. - - (E) The web-hosted client resource returns a web page (typically an - HTML document with an embedded script) capable of accessing the - full redirection URI including the fragment retained by the - user-agent, and extracting the access token (and other - parameters) contained in the fragment. - - (F) The user-agent executes the script provided by the web-hosted - client resource locally, which extracts the access token. - - (G) The user-agent passes the access token to the client. - - See `Section 10.3`_ and `Section 10.16`_ for important security considerations - when using the implicit grant. - - .. _`Implicit Grant`: https://tools.ietf.org/html/rfc6749#section-4.2 - .. _`Section 10.3`: https://tools.ietf.org/html/rfc6749#section-10.3 - .. _`Section 10.16`: https://tools.ietf.org/html/rfc6749#section-10.16 - """ - - response_types = ['token'] - grant_allows_refresh_token = False - - def create_authorization_response(self, request, token_handler): - """Create an authorization response. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - The client constructs the request URI by adding the following - parameters to the query component of the authorization endpoint URI - using the "application/x-www-form-urlencoded" format, per `Appendix B`_: - - response_type - REQUIRED. Value MUST be set to "token" for standard OAuth2 implicit flow - or "id_token token" or just "id_token" for OIDC implicit flow - - client_id - REQUIRED. The client identifier as described in `Section 2.2`_. - - redirect_uri - OPTIONAL. As described in `Section 3.1.2`_. - - scope - OPTIONAL. The scope of the access request as described by - `Section 3.3`_. - - state - RECOMMENDED. An opaque value used by the client to maintain - state between the request and callback. The authorization - server includes this value when redirecting the user-agent back - to the client. The parameter SHOULD be used for preventing - cross-site request forgery as described in `Section 10.12`_. - - The authorization server validates the request to ensure that all - required parameters are present and valid. The authorization server - MUST verify that the redirection URI to which it will redirect the - access token matches a redirection URI registered by the client as - described in `Section 3.1.2`_. - - .. _`Section 2.2`: https://tools.ietf.org/html/rfc6749#section-2.2 - .. _`Section 3.1.2`: https://tools.ietf.org/html/rfc6749#section-3.1.2 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 10.12`: https://tools.ietf.org/html/rfc6749#section-10.12 - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - """ - return self.create_token_response(request, token_handler) - - def create_token_response(self, request, token_handler): - """Return token or error embedded in the URI fragment. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - If the resource owner grants the access request, the authorization - server issues an access token and delivers it to the client by adding - the following parameters to the fragment component of the redirection - URI using the "application/x-www-form-urlencoded" format, per - `Appendix B`_: - - access_token - REQUIRED. The access token issued by the authorization server. - - token_type - REQUIRED. The type of the token issued as described in - `Section 7.1`_. Value is case insensitive. - - expires_in - RECOMMENDED. The lifetime in seconds of the access token. For - example, the value "3600" denotes that the access token will - expire in one hour from the time the response was generated. - If omitted, the authorization server SHOULD provide the - expiration time via other means or document the default value. - - scope - OPTIONAL, if identical to the scope requested by the client; - otherwise, REQUIRED. The scope of the access token as - described by `Section 3.3`_. - - state - REQUIRED if the "state" parameter was present in the client - authorization request. The exact value received from the - client. - - The authorization server MUST NOT issue a refresh token. - - .. _`Appendix B`: https://tools.ietf.org/html/rfc6749#appendix-B - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 7.1`: https://tools.ietf.org/html/rfc6749#section-7.1 - """ - try: - self.validate_token_request(request) - - # If the request fails due to a missing, invalid, or mismatching - # redirection URI, or if the client identifier is missing or invalid, - # the authorization server SHOULD inform the resource owner of the - # error and MUST NOT automatically redirect the user-agent to the - # invalid redirection URI. - except errors.FatalClientError as e: - log.debug('Fatal client error during validation of %r. %r.', - request, e) - raise - - # If the resource owner denies the access request or if the request - # fails for reasons other than a missing or invalid redirection URI, - # the authorization server informs the client by adding the following - # parameters to the fragment component of the redirection URI using the - # "application/x-www-form-urlencoded" format, per Appendix B: - # https://tools.ietf.org/html/rfc6749#appendix-B - except errors.OAuth2Error as e: - log.debug('Client error during validation of %r. %r.', request, e) - return {'Location': common.add_params_to_uri(request.redirect_uri, e.twotuples, - fragment=True)}, None, 302 - - # In OIDC implicit flow it is possible to have a request_type that does not include the access_token! - # "id_token token" - return the access token and the id token - # "id_token" - don't return the access token - if "token" in request.response_type.split(): - token = token_handler.create_token(request, refresh_token=False) - else: - token = {} - - if request.state is not None: - token['state'] = request.state - - for modifier in self._token_modifiers: - token = modifier(token, token_handler, request) - - # In OIDC implicit flow it is possible to have a request_type that does - # not include the access_token! In this case there is no need to save a token. - if "token" in request.response_type.split(): - self.request_validator.save_token(token, request) - - return self.prepare_authorization_response( - request, token, {}, None, 302) - - def validate_authorization_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - return self.validate_token_request(request) - - def validate_token_request(self, request): - """Check the token request for normal and fatal errors. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - This method is very similar to validate_authorization_request in - the AuthorizationCodeGrant but differ in a few subtle areas. - - A normal error could be a missing response_type parameter or the client - attempting to access scope it is not allowed to ask authorization for. - Normal errors can safely be included in the redirection URI and - sent back to the client. - - Fatal errors occur when the client_id or redirect_uri is invalid or - missing. These must be caught by the provider and handled, how this - is done is outside of the scope of OAuthLib but showing an error - page describing the issue is a good idea. - """ - - # First check for fatal errors - - # If the request fails due to a missing, invalid, or mismatching - # redirection URI, or if the client identifier is missing or invalid, - # the authorization server SHOULD inform the resource owner of the - # error and MUST NOT automatically redirect the user-agent to the - # invalid redirection URI. - - # First check duplicate parameters - for param in ('client_id', 'response_type', 'redirect_uri', 'scope', 'state'): - try: - duplicate_params = request.duplicate_params - except ValueError: - raise errors.InvalidRequestFatalError(description='Unable to parse query string', request=request) - if param in duplicate_params: - raise errors.InvalidRequestFatalError(description='Duplicate %s parameter.' % param, request=request) - - # REQUIRED. The client identifier as described in Section 2.2. - # https://tools.ietf.org/html/rfc6749#section-2.2 - if not request.client_id: - raise errors.MissingClientIdError(request=request) - - if not self.request_validator.validate_client_id(request.client_id, request): - raise errors.InvalidClientIdError(request=request) - - # OPTIONAL. As described in Section 3.1.2. - # https://tools.ietf.org/html/rfc6749#section-3.1.2 - self._handle_redirects(request) - - # Then check for normal errors. - - request_info = self._run_custom_validators(request, - self.custom_validators.all_pre) - - # If the resource owner denies the access request or if the request - # fails for reasons other than a missing or invalid redirection URI, - # the authorization server informs the client by adding the following - # parameters to the fragment component of the redirection URI using the - # "application/x-www-form-urlencoded" format, per Appendix B. - # https://tools.ietf.org/html/rfc6749#appendix-B - - # Note that the correct parameters to be added are automatically - # populated through the use of specific exceptions - - # REQUIRED. - if request.response_type is None: - raise errors.MissingResponseTypeError(request=request) - # Value MUST be one of our registered types: "token" by default or if using OIDC "id_token" or "id_token token" - elif not set(request.response_type.split()).issubset(self.response_types): - raise errors.UnsupportedResponseTypeError(request=request) - - log.debug('Validating use of response_type token for client %r (%r).', - request.client_id, request.client) - if not self.request_validator.validate_response_type(request.client_id, - request.response_type, - request.client, request): - - log.debug('Client %s is not authorized to use response_type %s.', - request.client_id, request.response_type) - raise errors.UnauthorizedClientError(request=request) - - # OPTIONAL. The scope of the access request as described by Section 3.3 - # https://tools.ietf.org/html/rfc6749#section-3.3 - self.validate_scopes(request) - - request_info.update({ - 'client_id': request.client_id, - 'redirect_uri': request.redirect_uri, - 'response_type': request.response_type, - 'state': request.state, - 'request': request, - }) - - request_info = self._run_custom_validators( - request, - self.custom_validators.all_post, - request_info - ) - - return request.scopes, request_info - - def _run_custom_validators(self, - request, - validations, - request_info=None): - # Make a copy so we don't modify the existing request_info dict - request_info = {} if request_info is None else request_info.copy() - # For implicit grant, auth_validators and token_validators are - # basically equivalent since the token is returned from the - # authorization endpoint. - for validator in validations: - result = validator(request) - if result is not None: - request_info.update(result) - return request_info diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/refresh_token.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/refresh_token.py deleted file mode 100644 index ce33df0..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/refresh_token.py +++ /dev/null @@ -1,136 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import json -import logging - -from .. import errors, utils -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class RefreshTokenGrant(GrantTypeBase): - - """`Refresh token grant`_ - - .. _`Refresh token grant`: https://tools.ietf.org/html/rfc6749#section-6 - """ - - def __init__(self, request_validator=None, - issue_new_refresh_tokens=True, - **kwargs): - super().__init__( - request_validator, - issue_new_refresh_tokens=issue_new_refresh_tokens, - **kwargs) - - def create_token_response(self, request, token_handler): - """Create a new access token from a refresh_token. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - If valid and authorized, the authorization server issues an access - token as described in `Section 5.1`_. If the request failed - verification or is invalid, the authorization server returns an error - response as described in `Section 5.2`_. - - The authorization server MAY issue a new refresh token, in which case - the client MUST discard the old refresh token and replace it with the - new refresh token. The authorization server MAY revoke the old - refresh token after issuing a new refresh token to the client. If a - new refresh token is issued, the refresh token scope MUST be - identical to that of the refresh token included by the client in the - request. - - .. _`Section 5.1`: https://tools.ietf.org/html/rfc6749#section-5.1 - .. _`Section 5.2`: https://tools.ietf.org/html/rfc6749#section-5.2 - """ - headers = self._get_default_headers() - try: - log.debug('Validating refresh token request, %r.', request) - self.validate_token_request(request) - except errors.OAuth2Error as e: - log.debug('Client error in token request, %s.', e) - headers.update(e.headers) - return headers, e.json, e.status_code - - token = token_handler.create_token(request, - refresh_token=self.issue_new_refresh_tokens) - - for modifier in self._token_modifiers: - token = modifier(token, token_handler, request) - - self.request_validator.save_token(token, request) - - log.debug('Issuing new token to client id %r (%r), %r.', - request.client_id, request.client, token) - headers.update(self._create_cors_headers(request)) - return headers, json.dumps(token), 200 - - def validate_token_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - # REQUIRED. Value MUST be set to "refresh_token". - if request.grant_type != 'refresh_token': - raise errors.UnsupportedGrantTypeError(request=request) - - for validator in self.custom_validators.pre_token: - validator(request) - - if request.refresh_token is None: - raise errors.InvalidRequestError( - description='Missing refresh token parameter.', - request=request) - - # Because refresh tokens are typically long-lasting credentials used to - # request additional access tokens, the refresh token is bound to the - # client to which it was issued. If the client type is confidential or - # the client was issued client credentials (or assigned other - # authentication requirements), the client MUST authenticate with the - # authorization server as described in Section 3.2.1. - # https://tools.ietf.org/html/rfc6749#section-3.2.1 - if self.request_validator.client_authentication_required(request): - log.debug('Authenticating client, %r.', request) - if not self.request_validator.authenticate_client(request): - log.debug('Invalid client (%r), denying access.', request) - raise errors.InvalidClientError(request=request) - elif not self.request_validator.authenticate_client_id(request.client_id, request): - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - - # Ensure client is authorized use of this grant type - self.validate_grant_type(request) - - # REQUIRED. The refresh token issued to the client. - log.debug('Validating refresh token %s for client %r.', - request.refresh_token, request.client) - if not self.request_validator.validate_refresh_token( - request.refresh_token, request.client, request): - log.debug('Invalid refresh token, %s, for client %r.', - request.refresh_token, request.client) - raise errors.InvalidGrantError(request=request) - - original_scopes = utils.scope_to_list( - self.request_validator.get_original_scopes( - request.refresh_token, request)) - - if request.scope: - request.scopes = utils.scope_to_list(request.scope) - if (not all(s in original_scopes for s in request.scopes) - and not self.request_validator.is_within_original_scope( - request.scopes, request.refresh_token, request)): - log.debug('Refresh token %s lack requested scopes, %r.', - request.refresh_token, request.scopes) - raise errors.InvalidScopeError(request=request) - else: - request.scopes = original_scopes - - for validator in self.custom_validators.post_token: - validator(request) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py deleted file mode 100644 index 4b0de5b..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py +++ /dev/null @@ -1,199 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import json -import logging - -from .. import errors -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class ResourceOwnerPasswordCredentialsGrant(GrantTypeBase): - - """`Resource Owner Password Credentials Grant`_ - - The resource owner password credentials grant type is suitable in - cases where the resource owner has a trust relationship with the - client, such as the device operating system or a highly privileged - application. The authorization server should take special care when - enabling this grant type and only allow it when other flows are not - viable. - - This grant type is suitable for clients capable of obtaining the - resource owner's credentials (username and password, typically using - an interactive form). It is also used to migrate existing clients - using direct authentication schemes such as HTTP Basic or Digest - authentication to OAuth by converting the stored credentials to an - access token:: - - +----------+ - | Resource | - | Owner | - | | - +----------+ - v - | Resource Owner - (A) Password Credentials - | - v - +---------+ +---------------+ - | |>--(B)---- Resource Owner ------->| | - | | Password Credentials | Authorization | - | Client | | Server | - | |<--(C)---- Access Token ---------<| | - | | (w/ Optional Refresh Token) | | - +---------+ +---------------+ - - Figure 5: Resource Owner Password Credentials Flow - - The flow illustrated in Figure 5 includes the following steps: - - (A) The resource owner provides the client with its username and - password. - - (B) The client requests an access token from the authorization - server's token endpoint by including the credentials received - from the resource owner. When making the request, the client - authenticates with the authorization server. - - (C) The authorization server authenticates the client and validates - the resource owner credentials, and if valid, issues an access - token. - - .. _`Resource Owner Password Credentials Grant`: https://tools.ietf.org/html/rfc6749#section-4.3 - """ - - def create_token_response(self, request, token_handler): - """Return token or error in json format. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param token_handler: A token handler instance, for example of type - oauthlib.oauth2.BearerToken. - - If the access token request is valid and authorized, the - authorization server issues an access token and optional refresh - token as described in `Section 5.1`_. If the request failed client - authentication or is invalid, the authorization server returns an - error response as described in `Section 5.2`_. - - .. _`Section 5.1`: https://tools.ietf.org/html/rfc6749#section-5.1 - .. _`Section 5.2`: https://tools.ietf.org/html/rfc6749#section-5.2 - """ - headers = self._get_default_headers() - try: - if self.request_validator.client_authentication_required(request): - log.debug('Authenticating client, %r.', request) - if not self.request_validator.authenticate_client(request): - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - elif not self.request_validator.authenticate_client_id(request.client_id, request): - log.debug('Client authentication failed, %r.', request) - raise errors.InvalidClientError(request=request) - log.debug('Validating access token request, %r.', request) - self.validate_token_request(request) - except errors.OAuth2Error as e: - log.debug('Client error in token request, %s.', e) - headers.update(e.headers) - return headers, e.json, e.status_code - - token = token_handler.create_token(request, self.refresh_token) - - for modifier in self._token_modifiers: - token = modifier(token) - - self.request_validator.save_token(token, request) - - log.debug('Issuing token %r to client id %r (%r) and username %s.', - token, request.client_id, request.client, request.username) - return headers, json.dumps(token), 200 - - def validate_token_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - The client makes a request to the token endpoint by adding the - following parameters using the "application/x-www-form-urlencoded" - format per Appendix B with a character encoding of UTF-8 in the HTTP - request entity-body: - - grant_type - REQUIRED. Value MUST be set to "password". - - username - REQUIRED. The resource owner username. - - password - REQUIRED. The resource owner password. - - scope - OPTIONAL. The scope of the access request as described by - `Section 3.3`_. - - If the client type is confidential or the client was issued client - credentials (or assigned other authentication requirements), the - client MUST authenticate with the authorization server as described - in `Section 3.2.1`_. - - The authorization server MUST: - - o require client authentication for confidential clients or for any - client that was issued client credentials (or with other - authentication requirements), - - o authenticate the client if client authentication is included, and - - o validate the resource owner password credentials using its - existing password validation algorithm. - - Since this access token request utilizes the resource owner's - password, the authorization server MUST protect the endpoint against - brute force attacks (e.g., using rate-limitation or generating - alerts). - - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc6749#section-3.2.1 - """ - for validator in self.custom_validators.pre_token: - validator(request) - - for param in ('grant_type', 'username', 'password'): - if not getattr(request, param, None): - raise errors.InvalidRequestError( - 'Request is missing %s parameter.' % param, request=request) - - for param in ('grant_type', 'username', 'password', 'scope'): - if param in request.duplicate_params: - raise errors.InvalidRequestError(description='Duplicate %s parameter.' % param, request=request) - - # This error should rarely (if ever) occur if requests are routed to - # grant type handlers based on the grant_type parameter. - if not request.grant_type == 'password': - raise errors.UnsupportedGrantTypeError(request=request) - - log.debug('Validating username %s.', request.username) - if not self.request_validator.validate_user(request.username, - request.password, request.client, request): - raise errors.InvalidGrantError( - 'Invalid credentials given.', request=request) - else: - if not hasattr(request.client, 'client_id'): - raise NotImplementedError( - 'Validate user must set the ' - 'request.client.client_id attribute ' - 'in authenticate_client.') - log.debug('Authorizing access to user %r.', request.user) - - # Ensure client is authorized use of this grant type - self.validate_grant_type(request) - - if request.client: - request.client_id = request.client_id or request.client.client_id - self.validate_scopes(request) - - for validator in self.custom_validators.post_token: - validator(request) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/parameters.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/parameters.py deleted file mode 100644 index 8f6ce2c..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/parameters.py +++ /dev/null @@ -1,471 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.parameters -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module contains methods related to `Section 4`_ of the OAuth 2 RFC. - -.. _`Section 4`: https://tools.ietf.org/html/rfc6749#section-4 -""" -import json -import os -import time -import urllib.parse as urlparse - -from oauthlib.common import add_params_to_qs, add_params_to_uri -from oauthlib.signals import scope_changed - -from .errors import ( - InsecureTransportError, MismatchingStateError, MissingCodeError, - MissingTokenError, MissingTokenTypeError, raise_from_error, -) -from .tokens import OAuth2Token -from .utils import is_secure_transport, list_to_scope, scope_to_list - - -def prepare_grant_uri(uri, client_id, response_type, redirect_uri=None, - scope=None, state=None, code_challenge=None, code_challenge_method='plain', **kwargs): - """Prepare the authorization grant request URI. - - The client constructs the request URI by adding the following - parameters to the query component of the authorization endpoint URI - using the ``application/x-www-form-urlencoded`` format as defined by - [`W3C.REC-html401-19991224`_]: - - :param uri: - :param client_id: The client identifier as described in `Section 2.2`_. - :param response_type: To indicate which OAuth 2 grant/flow is required, - "code" and "token". - :param redirect_uri: The client provided URI to redirect back to after - authorization as described in `Section 3.1.2`_. - :param scope: The scope of the access request as described by - `Section 3.3`_. - :param state: An opaque value used by the client to maintain - state between the request and callback. The authorization - server includes this value when redirecting the user-agent - back to the client. The parameter SHOULD be used for - preventing cross-site request forgery as described in - `Section 10.12`_. - :param code_challenge: PKCE parameter. A challenge derived from the - code_verifier that is sent in the authorization - request, to be verified against later. - :param code_challenge_method: PKCE parameter. A method that was used to derive the - code_challenge. Defaults to "plain" if not present in the request. - :param kwargs: Extra arguments to embed in the grant/authorization URL. - - An example of an authorization code grant authorization URL: - - .. code-block:: http - - GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz - &code_challenge=kjasBS523KdkAILD2k78NdcJSk2k3KHG6&code_challenge_method=S256 - &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1 - Host: server.example.com - - .. _`W3C.REC-html401-19991224`: https://tools.ietf.org/html/rfc6749#ref-W3C.REC-html401-19991224 - .. _`Section 2.2`: https://tools.ietf.org/html/rfc6749#section-2.2 - .. _`Section 3.1.2`: https://tools.ietf.org/html/rfc6749#section-3.1.2 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`section 10.12`: https://tools.ietf.org/html/rfc6749#section-10.12 - """ - if not is_secure_transport(uri): - raise InsecureTransportError() - - params = [(('response_type', response_type)), - (('client_id', client_id))] - - if redirect_uri: - params.append(('redirect_uri', redirect_uri)) - if scope: - params.append(('scope', list_to_scope(scope))) - if state: - params.append(('state', state)) - if code_challenge is not None: - params.append(('code_challenge', code_challenge)) - params.append(('code_challenge_method', code_challenge_method)) - - for k in kwargs: - if kwargs[k]: - params.append((str(k), kwargs[k])) - - return add_params_to_uri(uri, params) - - -def prepare_token_request(grant_type, body='', include_client_id=True, code_verifier=None, **kwargs): - """Prepare the access token request. - - The client makes a request to the token endpoint by adding the - following parameters using the ``application/x-www-form-urlencoded`` - format in the HTTP request entity-body: - - :param grant_type: To indicate grant type being used, i.e. "password", - "authorization_code" or "client_credentials". - - :param body: Existing request body (URL encoded string) to embed parameters - into. This may contain extra parameters. Default ''. - - :param include_client_id: `True` (default) to send the `client_id` in the - body of the upstream request. This is required - if the client is not authenticating with the - authorization server as described in - `Section 3.2.1`_. - :type include_client_id: Boolean - - :param client_id: Unicode client identifier. Will only appear if - `include_client_id` is True. * - - :param client_secret: Unicode client secret. Will only appear if set to a - value that is not `None`. Invoking this function with - an empty string will send an empty `client_secret` - value to the server. * - - :param code: If using authorization_code grant, pass the previously - obtained authorization code as the ``code`` argument. * - - :param redirect_uri: If the "redirect_uri" parameter was included in the - authorization request as described in - `Section 4.1.1`_, and their values MUST be identical. * - - :param code_verifier: PKCE parameter. A cryptographically random string that is used to correlate the - authorization request to the token request. - - :param kwargs: Extra arguments to embed in the request body. - - Parameters marked with a `*` above are not explicit arguments in the - function signature, but are specially documented arguments for items - appearing in the generic `**kwargs` keyworded input. - - An example of an authorization code token request body: - - .. code-block:: http - - grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA - &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb - - .. _`Section 4.1.1`: https://tools.ietf.org/html/rfc6749#section-4.1.1 - """ - params = [('grant_type', grant_type)] - - if 'scope' in kwargs: - kwargs['scope'] = list_to_scope(kwargs['scope']) - - # pull the `client_id` out of the kwargs. - client_id = kwargs.pop('client_id', None) - if include_client_id: - if client_id is not None: - params.append(('client_id', client_id)) - - # use code_verifier if code_challenge was passed in the authorization request - if code_verifier is not None: - params.append(('code_verifier', code_verifier)) - - # the kwargs iteration below only supports including boolean truth (truthy) - # values, but some servers may require an empty string for `client_secret` - client_secret = kwargs.pop('client_secret', None) - if client_secret is not None: - params.append(('client_secret', client_secret)) - - # this handles: `code`, `redirect_uri`, and other undocumented params - for k in kwargs: - if kwargs[k]: - params.append((str(k), kwargs[k])) - - return add_params_to_qs(body, params) - - -def prepare_token_revocation_request(url, token, token_type_hint="access_token", - callback=None, body='', **kwargs): - """Prepare a token revocation request. - - The client constructs the request by including the following parameters - using the ``application/x-www-form-urlencoded`` format in the HTTP request - entity-body: - - :param token: REQUIRED. The token that the client wants to get revoked. - - :param token_type_hint: OPTIONAL. A hint about the type of the token - submitted for revocation. Clients MAY pass this - parameter in order to help the authorization server - to optimize the token lookup. If the server is - unable to locate the token using the given hint, it - MUST extend its search across all of its supported - token types. An authorization server MAY ignore - this parameter, particularly if it is able to detect - the token type automatically. - - This specification defines two values for `token_type_hint`: - - * access_token: An access token as defined in [RFC6749], - `Section 1.4`_ - - * refresh_token: A refresh token as defined in [RFC6749], - `Section 1.5`_ - - Specific implementations, profiles, and extensions of this - specification MAY define other values for this parameter using the - registry defined in `Section 4.1.2`_. - - .. _`Section 1.4`: https://tools.ietf.org/html/rfc6749#section-1.4 - .. _`Section 1.5`: https://tools.ietf.org/html/rfc6749#section-1.5 - .. _`Section 4.1.2`: https://tools.ietf.org/html/rfc7009#section-4.1.2 - - """ - if not is_secure_transport(url): - raise InsecureTransportError() - - params = [('token', token)] - - if token_type_hint: - params.append(('token_type_hint', token_type_hint)) - - for k in kwargs: - if kwargs[k]: - params.append((str(k), kwargs[k])) - - headers = {'Content-Type': 'application/x-www-form-urlencoded'} - - if callback: - params.append(('callback', callback)) - return add_params_to_uri(url, params), headers, body - else: - return url, headers, add_params_to_qs(body, params) - - -def parse_authorization_code_response(uri, state=None): - """Parse authorization grant response URI into a dict. - - If the resource owner grants the access request, the authorization - server issues an authorization code and delivers it to the client by - adding the following parameters to the query component of the - redirection URI using the ``application/x-www-form-urlencoded`` format: - - **code** - REQUIRED. The authorization code generated by the - authorization server. The authorization code MUST expire - shortly after it is issued to mitigate the risk of leaks. A - maximum authorization code lifetime of 10 minutes is - RECOMMENDED. The client MUST NOT use the authorization code - more than once. If an authorization code is used more than - once, the authorization server MUST deny the request and SHOULD - revoke (when possible) all tokens previously issued based on - that authorization code. The authorization code is bound to - the client identifier and redirection URI. - - **state** - REQUIRED if the "state" parameter was present in the client - authorization request. The exact value received from the - client. - - :param uri: The full redirect URL back to the client. - :param state: The state parameter from the authorization request. - - For example, the authorization server redirects the user-agent by - sending the following HTTP response: - - .. code-block:: http - - HTTP/1.1 302 Found - Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA - &state=xyz - - """ - if not is_secure_transport(uri): - raise InsecureTransportError() - - query = urlparse.urlparse(uri).query - params = dict(urlparse.parse_qsl(query)) - - if state and params.get('state', None) != state: - raise MismatchingStateError() - - if 'error' in params: - raise_from_error(params.get('error'), params) - - if not 'code' in params: - raise MissingCodeError("Missing code parameter in response.") - - return params - - -def parse_implicit_response(uri, state=None, scope=None): - """Parse the implicit token response URI into a dict. - - If the resource owner grants the access request, the authorization - server issues an access token and delivers it to the client by adding - the following parameters to the fragment component of the redirection - URI using the ``application/x-www-form-urlencoded`` format: - - **access_token** - REQUIRED. The access token issued by the authorization server. - - **token_type** - REQUIRED. The type of the token issued as described in - Section 7.1. Value is case insensitive. - - **expires_in** - RECOMMENDED. The lifetime in seconds of the access token. For - example, the value "3600" denotes that the access token will - expire in one hour from the time the response was generated. - If omitted, the authorization server SHOULD provide the - expiration time via other means or document the default value. - - **scope** - OPTIONAL, if identical to the scope requested by the client, - otherwise REQUIRED. The scope of the access token as described - by Section 3.3. - - **state** - REQUIRED if the "state" parameter was present in the client - authorization request. The exact value received from the - client. - - :param uri: - :param state: - :param scope: - - Similar to the authorization code response, but with a full token provided - in the URL fragment: - - .. code-block:: http - - HTTP/1.1 302 Found - Location: http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA - &state=xyz&token_type=example&expires_in=3600 - """ - if not is_secure_transport(uri): - raise InsecureTransportError() - - fragment = urlparse.urlparse(uri).fragment - params = dict(urlparse.parse_qsl(fragment, keep_blank_values=True)) - - for key in ('expires_in',): - if key in params: # cast things to int - params[key] = int(params[key]) - - if 'scope' in params: - params['scope'] = scope_to_list(params['scope']) - - if 'expires_in' in params: - params['expires_at'] = time.time() + int(params['expires_in']) - - if state and params.get('state', None) != state: - raise ValueError("Mismatching or missing state in params.") - - params = OAuth2Token(params, old_scope=scope) - validate_token_parameters(params) - return params - - -def parse_token_response(body, scope=None): - """Parse the JSON token response body into a dict. - - The authorization server issues an access token and optional refresh - token, and constructs the response by adding the following parameters - to the entity body of the HTTP response with a 200 (OK) status code: - - access_token - REQUIRED. The access token issued by the authorization server. - token_type - REQUIRED. The type of the token issued as described in - `Section 7.1`_. Value is case insensitive. - expires_in - RECOMMENDED. The lifetime in seconds of the access token. For - example, the value "3600" denotes that the access token will - expire in one hour from the time the response was generated. - If omitted, the authorization server SHOULD provide the - expiration time via other means or document the default value. - refresh_token - OPTIONAL. The refresh token which can be used to obtain new - access tokens using the same authorization grant as described - in `Section 6`_. - scope - OPTIONAL, if identical to the scope requested by the client, - otherwise REQUIRED. The scope of the access token as described - by `Section 3.3`_. - - The parameters are included in the entity body of the HTTP response - using the "application/json" media type as defined by [`RFC4627`_]. The - parameters are serialized into a JSON structure by adding each - parameter at the highest structure level. Parameter names and string - values are included as JSON strings. Numerical values are included - as JSON numbers. The order of parameters does not matter and can - vary. - - :param body: The full json encoded response body. - :param scope: The scope requested during authorization. - - For example: - - .. code-block:: http - - HTTP/1.1 200 OK - Content-Type: application/json - Cache-Control: no-store - Pragma: no-cache - - { - "access_token":"2YotnFZFEjr1zCsicMWpAA", - "token_type":"example", - "expires_in":3600, - "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", - "example_parameter":"example_value" - } - - .. _`Section 7.1`: https://tools.ietf.org/html/rfc6749#section-7.1 - .. _`Section 6`: https://tools.ietf.org/html/rfc6749#section-6 - .. _`Section 3.3`: https://tools.ietf.org/html/rfc6749#section-3.3 - .. _`RFC4627`: https://tools.ietf.org/html/rfc4627 - """ - try: - params = json.loads(body) - except ValueError: - - # Fall back to URL-encoded string, to support old implementations, - # including (at time of writing) Facebook. See: - # https://github.com/oauthlib/oauthlib/issues/267 - - params = dict(urlparse.parse_qsl(body)) - for key in ('expires_in',): - if key in params: # cast things to int - params[key] = int(params[key]) - - if 'scope' in params: - params['scope'] = scope_to_list(params['scope']) - - if 'expires_in' in params: - if params['expires_in'] is None: - params.pop('expires_in') - else: - params['expires_at'] = time.time() + int(params['expires_in']) - - params = OAuth2Token(params, old_scope=scope) - validate_token_parameters(params) - return params - - -def validate_token_parameters(params): - """Ensures token presence, token type, expiration and scope in params.""" - if 'error' in params: - raise_from_error(params.get('error'), params) - - if not 'access_token' in params: - raise MissingTokenError(description="Missing access token parameter.") - - if not 'token_type' in params: - if os.environ.get('OAUTHLIB_STRICT_TOKEN_TYPE'): - raise MissingTokenTypeError() - - # If the issued access token scope is different from the one requested by - # the client, the authorization server MUST include the "scope" response - # parameter to inform the client of the actual scope granted. - # https://tools.ietf.org/html/rfc6749#section-3.3 - if params.scope_changed: - message = 'Scope has changed from "{old}" to "{new}".'.format( - old=params.old_scope, new=params.scope, - ) - scope_changed.send(message=message, old=params.old_scopes, new=params.scopes) - if not os.environ.get('OAUTHLIB_RELAX_TOKEN_SCOPE', None): - w = Warning(message) - w.token = params - w.old_scope = params.old_scopes - w.new_scope = params.scopes - raise w diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/request_validator.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/request_validator.py deleted file mode 100644 index 3910c0b..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/request_validator.py +++ /dev/null @@ -1,680 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.request_validator -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -log = logging.getLogger(__name__) - - -class RequestValidator: - - def client_authentication_required(self, request, *args, **kwargs): - """Determine if client authentication is required for current request. - - According to the rfc6749, client authentication is required in the following cases: - - Resource Owner Password Credentials Grant, when Client type is Confidential or when - Client was issued client credentials or whenever Client provided client - authentication, see `Section 4.3.2`_. - - Authorization Code Grant, when Client type is Confidential or when Client was issued - client credentials or whenever Client provided client authentication, - see `Section 4.1.3`_. - - Refresh Token Grant, when Client type is Confidential or when Client was issued - client credentials or whenever Client provided client authentication, see - `Section 6`_ - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Resource Owner Password Credentials Grant - - Refresh Token Grant - - .. _`Section 4.3.2`: https://tools.ietf.org/html/rfc6749#section-4.3.2 - .. _`Section 4.1.3`: https://tools.ietf.org/html/rfc6749#section-4.1.3 - .. _`Section 6`: https://tools.ietf.org/html/rfc6749#section-6 - """ - return True - - def authenticate_client(self, request, *args, **kwargs): - """Authenticate client through means outside the OAuth 2 spec. - - Means of authentication is negotiated beforehand and may for example - be `HTTP Basic Authentication Scheme`_ which utilizes the Authorization - header. - - Headers may be accesses through request.headers and parameters found in - both body and query can be obtained by direct attribute access, i.e. - request.client_id for client_id in the URL query. - - The authentication process is required to contain the identification of - the client (i.e. search the database based on the client_id). In case the - client doesn't exist based on the received client_id, this method has to - return False and the HTTP response created by the library will contain - 'invalid_client' message. - - After the client identification succeeds, this method needs to set the - client on the request, i.e. request.client = client. A client object's - class must contain the 'client_id' attribute and the 'client_id' must have - a value. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Resource Owner Password Credentials Grant (may be disabled) - - Client Credentials Grant - - Refresh Token Grant - - .. _`HTTP Basic Authentication Scheme`: https://tools.ietf.org/html/rfc1945#section-11.1 - """ - raise NotImplementedError('Subclasses must implement this method.') - - def authenticate_client_id(self, client_id, request, *args, **kwargs): - """Ensure client_id belong to a non-confidential client. - - A non-confidential client is one that is not required to authenticate - through other means, such as using HTTP Basic. - - Note, while not strictly necessary it can often be very convenient - to set request.client to the client object associated with the - given client_id. - - :param client_id: Unicode client identifier. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def confirm_redirect_uri(self, client_id, code, redirect_uri, client, request, - *args, **kwargs): - """Ensure that the authorization process represented by this authorization - code began with this 'redirect_uri'. - - If the client specifies a redirect_uri when obtaining code then that - redirect URI must be bound to the code and verified equal in this - method, according to RFC 6749 section 4.1.3. Do not compare against - the client's allowed redirect URIs, but against the URI used when the - code was saved. - - :param client_id: Unicode client identifier. - :param code: Unicode authorization_code. - :param redirect_uri: Unicode absolute URI. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant (during token request) - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_default_redirect_uri(self, client_id, request, *args, **kwargs): - """Get the default redirect URI for the client. - - :param client_id: Unicode client identifier. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: The default redirect URI for the client - - Method is used by: - - Authorization Code Grant - - Implicit Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_default_scopes(self, client_id, request, *args, **kwargs): - """Get the default scopes for the client. - - :param client_id: Unicode client identifier. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: List of default scopes - - Method is used by all core grant types: - - Authorization Code Grant - - Implicit Grant - - Resource Owner Password Credentials Grant - - Client Credentials grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_original_scopes(self, refresh_token, request, *args, **kwargs): - """Get the list of scopes associated with the refresh token. - - :param refresh_token: Unicode refresh token. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: List of scopes. - - Method is used by: - - Refresh token grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def is_within_original_scope(self, request_scopes, refresh_token, request, *args, **kwargs): - """Check if requested scopes are within a scope of the refresh token. - - When access tokens are refreshed the scope of the new token - needs to be within the scope of the original token. This is - ensured by checking that all requested scopes strings are on - the list returned by the get_original_scopes. If this check - fails, is_within_original_scope is called. The method can be - used in situations where returning all valid scopes from the - get_original_scopes is not practical. - - :param request_scopes: A list of scopes that were requested by client. - :param refresh_token: Unicode refresh_token. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Refresh token grant - """ - return False - - def introspect_token(self, token, token_type_hint, request, *args, **kwargs): - """Introspect an access or refresh token. - - Called once the introspect request is validated. This method should - verify the *token* and either return a dictionary with the list of - claims associated, or `None` in case the token is unknown. - - Below the list of registered claims you should be interested in: - - - scope : space-separated list of scopes - - client_id : client identifier - - username : human-readable identifier for the resource owner - - token_type : type of the token - - exp : integer timestamp indicating when this token will expire - - iat : integer timestamp indicating when this token was issued - - nbf : integer timestamp indicating when it can be "not-before" used - - sub : subject of the token - identifier of the resource owner - - aud : list of string identifiers representing the intended audience - - iss : string representing issuer of this token - - jti : string identifier for the token - - Note that most of them are coming directly from JWT RFC. More details - can be found in `Introspect Claims`_ or `JWT Claims`_. - - The implementation can use *token_type_hint* to improve lookup - efficiency, but must fallback to other types to be compliant with RFC. - - The dict of claims is added to request.token after this method. - - :param token: The token string. - :param token_type_hint: access_token or refresh_token. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - Method is used by: - - Introspect Endpoint (all grants are compatible) - - .. _`Introspect Claims`: https://tools.ietf.org/html/rfc7662#section-2.2 - .. _`JWT Claims`: https://tools.ietf.org/html/rfc7519#section-4 - """ - raise NotImplementedError('Subclasses must implement this method.') - - def invalidate_authorization_code(self, client_id, code, request, *args, **kwargs): - """Invalidate an authorization code after use. - - :param client_id: Unicode client identifier. - :param code: The authorization code grant (request.code). - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - Method is used by: - - Authorization Code Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def revoke_token(self, token, token_type_hint, request, *args, **kwargs): - """Revoke an access or refresh token. - - :param token: The token string. - :param token_type_hint: access_token or refresh_token. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - Method is used by: - - Revocation Endpoint - """ - raise NotImplementedError('Subclasses must implement this method.') - - def rotate_refresh_token(self, request): - """Determine whether to rotate the refresh token. Default, yes. - - When access tokens are refreshed the old refresh token can be kept - or replaced with a new one (rotated). Return True to rotate and - and False for keeping original. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Refresh Token Grant - """ - return True - - def save_authorization_code(self, client_id, code, request, *args, **kwargs): - """Persist the authorization_code. - - The code should at minimum be stored with: - - the client_id (``client_id``) - - the redirect URI used (``request.redirect_uri``) - - a resource owner / user (``request.user``) - - the authorized scopes (``request.scopes``) - - To support PKCE, you MUST associate the code with: - - Code Challenge (``request.code_challenge``) and - - Code Challenge Method (``request.code_challenge_method``) - - To support OIDC, you MUST associate the code with: - - nonce, if present (``code["nonce"]``) - - The ``code`` argument is actually a dictionary, containing at least a - ``code`` key with the actual authorization code: - - ``{'code': 'sdf345jsdf0934f'}`` - - It may also have a ``claims`` parameter which, when present, will be a dict - deserialized from JSON as described at - http://openid.net/specs/openid-connect-core-1_0.html#ClaimsParameter - This value should be saved in this method and used again in ``.validate_code``. - - :param client_id: Unicode client identifier. - :param code: A dict of the authorization code grant and, optionally, state. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - Method is used by: - - Authorization Code Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def save_token(self, token, request, *args, **kwargs): - """Persist the token with a token type specific method. - - Currently, only save_bearer_token is supported. - - :param token: A (Bearer) token dict. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - return self.save_bearer_token(token, request, *args, **kwargs) - - def save_bearer_token(self, token, request, *args, **kwargs): - """Persist the Bearer token. - - The Bearer token should at minimum be associated with: - - a client and it's client_id, if available - - a resource owner / user (request.user) - - authorized scopes (request.scopes) - - an expiration time - - a refresh token, if issued - - a claims document, if present in request.claims - - The Bearer token dict may hold a number of items:: - - { - 'token_type': 'Bearer', - 'access_token': 'askfjh234as9sd8', - 'expires_in': 3600, - 'scope': 'string of space separated authorized scopes', - 'refresh_token': '23sdf876234', # if issued - 'state': 'given_by_client', # if supplied by client (implicit ONLY) - } - - Note that while "scope" is a string-separated list of authorized scopes, - the original list is still available in request.scopes. - - The token dict is passed as a reference so any changes made to the dictionary - will go back to the user. If additional information must return to the client - user, and it is only possible to get this information after writing the token - to storage, it should be added to the token dictionary. If the token - dictionary must be modified but the changes should not go back to the user, - a copy of the dictionary must be made before making the changes. - - Also note that if an Authorization Code grant request included a valid claims - parameter (for OpenID Connect) then the request.claims property will contain - the claims dict, which should be saved for later use when generating the - id_token and/or UserInfo response content. - - :param token: A Bearer token dict. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: The default redirect URI for the client - - Method is used by all core grant types issuing Bearer tokens: - - Authorization Code Grant - - Implicit Grant - - Resource Owner Password Credentials Grant (might not associate a client) - - Client Credentials grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_bearer_token(self, token, scopes, request): - """Ensure the Bearer token is valid and authorized access to scopes. - - :param token: A string of random characters. - :param scopes: A list of scopes associated with the protected resource. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - - A key to OAuth 2 security and restricting impact of leaked tokens is - the short expiration time of tokens, *always ensure the token has not - expired!*. - - Two different approaches to scope validation: - - 1) all(scopes). The token must be authorized access to all scopes - associated with the resource. For example, the - token has access to ``read-only`` and ``images``, - thus the client can view images but not upload new. - Allows for fine grained access control through - combining various scopes. - - 2) any(scopes). The token must be authorized access to one of the - scopes associated with the resource. For example, - token has access to ``read-only-images``. - Allows for fine grained, although arguably less - convenient, access control. - - A powerful way to use scopes would mimic UNIX ACLs and see a scope - as a group with certain privileges. For a restful API these might - map to HTTP verbs instead of read, write and execute. - - Note, the request.user attribute can be set to the resource owner - associated with this token. Similarly the request.client and - request.scopes attribute can be set to associated client object - and authorized scopes. If you then use a decorator such as the - one provided for django these attributes will be made available - in all protected views as keyword arguments. - - :param token: Unicode Bearer token - :param scopes: List of scopes (defined by you) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is indirectly used by all core Bearer token issuing grant types: - - Authorization Code Grant - - Implicit Grant - - Resource Owner Password Credentials Grant - - Client Credentials Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_client_id(self, client_id, request, *args, **kwargs): - """Ensure client_id belong to a valid and active client. - - Note, while not strictly necessary it can often be very convenient - to set request.client to the client object associated with the - given client_id. - - :param client_id: Unicode client identifier. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Implicit Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_code(self, client_id, code, client, request, *args, **kwargs): - """Verify that the authorization_code is valid and assigned to the given - client. - - Before returning true, set the following based on the information stored - with the code in 'save_authorization_code': - - - request.user - - request.scopes - - request.claims (if given) - - OBS! The request.user attribute should be set to the resource owner - associated with this authorization code. Similarly request.scopes - must also be set. - - The request.claims property, if it was given, should assigned a dict. - - If PKCE is enabled (see 'is_pkce_required' and 'save_authorization_code') - you MUST set the following based on the information stored: - - - request.code_challenge - - request.code_challenge_method - - :param client_id: Unicode client identifier. - :param code: Unicode authorization code. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_grant_type(self, client_id, grant_type, client, request, *args, **kwargs): - """Ensure client is authorized to use the grant_type requested. - - :param client_id: Unicode client identifier. - :param grant_type: Unicode grant type, i.e. authorization_code, password. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Resource Owner Password Credentials Grant - - Client Credentials Grant - - Refresh Token Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_redirect_uri(self, client_id, redirect_uri, request, *args, **kwargs): - """Ensure client is authorized to redirect to the redirect_uri requested. - - All clients should register the absolute URIs of all URIs they intend - to redirect to. The registration is outside of the scope of oauthlib. - - :param client_id: Unicode client identifier. - :param redirect_uri: Unicode absolute URI. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Implicit Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_refresh_token(self, refresh_token, client, request, *args, **kwargs): - """Ensure the Bearer token is valid and authorized access to scopes. - - OBS! The request.user attribute should be set to the resource owner - associated with this refresh token. - - :param refresh_token: Unicode refresh token. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant (indirectly by issuing refresh tokens) - - Resource Owner Password Credentials Grant (also indirectly) - - Refresh Token Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_response_type(self, client_id, response_type, client, request, *args, **kwargs): - """Ensure client is authorized to use the response_type requested. - - :param client_id: Unicode client identifier. - :param response_type: Unicode response type, i.e. code, token. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - Implicit Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_scopes(self, client_id, scopes, client, request, *args, **kwargs): - """Ensure the client is authorized access to requested scopes. - - :param client_id: Unicode client identifier. - :param scopes: List of scopes (defined by you). - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by all core grant types: - - Authorization Code Grant - - Implicit Grant - - Resource Owner Password Credentials Grant - - Client Credentials Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_user(self, username, password, client, request, *args, **kwargs): - """Ensure the username and password is valid. - - OBS! The validation should also set the user attribute of the request - to a valid resource owner, i.e. request.user = username or similar. If - not set you will be unable to associate a token with a user in the - persistence method used (commonly, save_bearer_token). - - :param username: Unicode username. - :param password: Unicode password. - :param client: Client object set by you, see ``.authenticate_client``. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Resource Owner Password Credentials Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def is_pkce_required(self, client_id, request): - """Determine if current request requires PKCE. Default, False. - This is called for both "authorization" and "token" requests. - - Override this method by ``return True`` to enable PKCE for everyone. - You might want to enable it only for public clients. - Note that PKCE can also be used in addition of a client authentication. - - OAuth 2.0 public clients utilizing the Authorization Code Grant are - susceptible to the authorization code interception attack. This - specification describes the attack as well as a technique to mitigate - against the threat through the use of Proof Key for Code Exchange - (PKCE, pronounced "pixy"). See `RFC7636`_. - - :param client_id: Client identifier. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - Authorization Code Grant - - .. _`RFC7636`: https://tools.ietf.org/html/rfc7636 - """ - return False - - def get_code_challenge(self, code, request): - """Is called for every "token" requests. - - When the server issues the authorization code in the authorization - response, it MUST associate the ``code_challenge`` and - ``code_challenge_method`` values with the authorization code so it can - be verified later. - - Typically, the ``code_challenge`` and ``code_challenge_method`` values - are stored in encrypted form in the ``code`` itself but could - alternatively be stored on the server associated with the code. The - server MUST NOT include the ``code_challenge`` value in client requests - in a form that other entities can extract. - - Return the ``code_challenge`` associated to the code. - If ``None`` is returned, code is considered to not be associated to any - challenges. - - :param code: Authorization code. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: code_challenge string - - Method is used by: - - Authorization Code Grant - when PKCE is active - - """ - return None - - def get_code_challenge_method(self, code, request): - """Is called during the "token" request processing, when a - ``code_verifier`` and a ``code_challenge`` has been provided. - - See ``.get_code_challenge``. - - Must return ``plain`` or ``S256``. You can return a custom value if you have - implemented your own ``AuthorizationCodeGrant`` class. - - :param code: Authorization code. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: code_challenge_method string - - Method is used by: - - Authorization Code Grant - when PKCE is active - - """ - raise NotImplementedError('Subclasses must implement this method.') - - def is_origin_allowed(self, client_id, origin, request, *args, **kwargs): - """Indicate if the given origin is allowed to access the token endpoint - via Cross-Origin Resource Sharing (CORS). CORS is used by browser-based - clients, such as Single-Page Applications, to perform the Authorization - Code Grant. - - (Note: If performing Authorization Code Grant via a public client such - as a browser, you should use PKCE as well.) - - If this method returns true, the appropriate CORS headers will be added - to the response. By default this method always returns False, meaning - CORS is disabled. - - :param client_id: Unicode client identifier. - :param redirect_uri: Unicode origin. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: bool - - Method is used by: - - Authorization Code Grant - - Refresh Token Grant - - """ - return False diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/tokens.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/tokens.py deleted file mode 100644 index 0757d07..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/tokens.py +++ /dev/null @@ -1,356 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.tokens -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module contains methods for adding two types of access tokens to requests. - -- Bearer https://tools.ietf.org/html/rfc6750 -- MAC https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01 -""" -import hashlib -import hmac -import warnings -from binascii import b2a_base64 -from urllib.parse import urlparse - -from oauthlib import common -from oauthlib.common import add_params_to_qs, add_params_to_uri - -from . import utils - - -class OAuth2Token(dict): - - def __init__(self, params, old_scope=None): - super().__init__(params) - self._new_scope = None - if 'scope' in params and params['scope']: - self._new_scope = set(utils.scope_to_list(params['scope'])) - if old_scope is not None: - self._old_scope = set(utils.scope_to_list(old_scope)) - if self._new_scope is None: - # the rfc says that if the scope hasn't changed, it's optional - # in params so set the new scope to the old scope - self._new_scope = self._old_scope - else: - self._old_scope = self._new_scope - - @property - def scope_changed(self): - return self._new_scope != self._old_scope - - @property - def old_scope(self): - return utils.list_to_scope(self._old_scope) - - @property - def old_scopes(self): - return list(self._old_scope) - - @property - def scope(self): - return utils.list_to_scope(self._new_scope) - - @property - def scopes(self): - return list(self._new_scope) - - @property - def missing_scopes(self): - return list(self._old_scope - self._new_scope) - - @property - def additional_scopes(self): - return list(self._new_scope - self._old_scope) - - -def prepare_mac_header(token, uri, key, http_method, - nonce=None, - headers=None, - body=None, - ext='', - hash_algorithm='hmac-sha-1', - issue_time=None, - draft=0): - """Add an `MAC Access Authentication`_ signature to headers. - - Unlike OAuth 1, this HMAC signature does not require inclusion of the - request payload/body, neither does it use a combination of client_secret - and token_secret but rather a mac_key provided together with the access - token. - - Currently two algorithms are supported, "hmac-sha-1" and "hmac-sha-256", - `extension algorithms`_ are not supported. - - Example MAC Authorization header, linebreaks added for clarity - - Authorization: MAC id="h480djs93hd8", - nonce="1336363200:dj83hs9s", - mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM=" - - .. _`MAC Access Authentication`: https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01 - .. _`extension algorithms`: https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01#section-7.1 - - :param token: - :param uri: Request URI. - :param key: MAC given provided by token endpoint. - :param http_method: HTTP Request method. - :param nonce: - :param headers: Request headers as a dictionary. - :param body: - :param ext: - :param hash_algorithm: HMAC algorithm provided by token endpoint. - :param issue_time: Time when the MAC credentials were issued (datetime). - :param draft: MAC authentication specification version. - :return: headers dictionary with the authorization field added. - """ - http_method = http_method.upper() - host, port = utils.host_from_uri(uri) - - if hash_algorithm.lower() == 'hmac-sha-1': - h = hashlib.sha1 - elif hash_algorithm.lower() == 'hmac-sha-256': - h = hashlib.sha256 - else: - raise ValueError('unknown hash algorithm') - - if draft == 0: - nonce = nonce or '{}:{}'.format(utils.generate_age(issue_time), - common.generate_nonce()) - else: - ts = common.generate_timestamp() - nonce = common.generate_nonce() - - sch, net, path, par, query, fra = urlparse(uri) - - if query: - request_uri = path + '?' + query - else: - request_uri = path - - # Hash the body/payload - if body is not None and draft == 0: - body = body.encode('utf-8') - bodyhash = b2a_base64(h(body).digest())[:-1].decode('utf-8') - else: - bodyhash = '' - - # Create the normalized base string - base = [] - if draft == 0: - base.append(nonce) - else: - base.append(ts) - base.append(nonce) - base.append(http_method.upper()) - base.append(request_uri) - base.append(host) - base.append(port) - if draft == 0: - base.append(bodyhash) - base.append(ext or '') - base_string = '\n'.join(base) + '\n' - - # hmac struggles with unicode strings - http://bugs.python.org/issue5285 - if isinstance(key, str): - key = key.encode('utf-8') - sign = hmac.new(key, base_string.encode('utf-8'), h) - sign = b2a_base64(sign.digest())[:-1].decode('utf-8') - - header = [] - header.append('MAC id="%s"' % token) - if draft != 0: - header.append('ts="%s"' % ts) - header.append('nonce="%s"' % nonce) - if bodyhash: - header.append('bodyhash="%s"' % bodyhash) - if ext: - header.append('ext="%s"' % ext) - header.append('mac="%s"' % sign) - - headers = headers or {} - headers['Authorization'] = ', '.join(header) - return headers - - -def prepare_bearer_uri(token, uri): - """Add a `Bearer Token`_ to the request URI. - Not recommended, use only if client can't use authorization header or body. - - http://www.example.com/path?access_token=h480djs93hd8 - - .. _`Bearer Token`: https://tools.ietf.org/html/rfc6750 - - :param token: - :param uri: - """ - return add_params_to_uri(uri, [(('access_token', token))]) - - -def prepare_bearer_headers(token, headers=None): - """Add a `Bearer Token`_ to the request URI. - Recommended method of passing bearer tokens. - - Authorization: Bearer h480djs93hd8 - - .. _`Bearer Token`: https://tools.ietf.org/html/rfc6750 - - :param token: - :param headers: - """ - headers = headers or {} - headers['Authorization'] = 'Bearer %s' % token - return headers - - -def prepare_bearer_body(token, body=''): - """Add a `Bearer Token`_ to the request body. - - access_token=h480djs93hd8 - - .. _`Bearer Token`: https://tools.ietf.org/html/rfc6750 - - :param token: - :param body: - """ - return add_params_to_qs(body, [(('access_token', token))]) - - -def random_token_generator(request, refresh_token=False): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param refresh_token: - """ - return common.generate_token() - - -def signed_token_generator(private_pem, **kwargs): - """ - :param private_pem: - """ - def signed_token_generator(request): - request.claims = kwargs - return common.generate_signed_token(private_pem, request) - - return signed_token_generator - - -def get_token_from_header(request): - """ - Helper function to extract a token from the request header. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :return: Return the token or None if the Authorization header is malformed. - """ - token = None - - if 'Authorization' in request.headers: - split_header = request.headers.get('Authorization').split() - if len(split_header) == 2 and split_header[0].lower() == 'bearer': - token = split_header[1] - else: - token = request.access_token - - return token - - -class TokenBase: - __slots__ = () - - def __call__(self, request, refresh_token=False): - raise NotImplementedError('Subclasses must implement this method.') - - def validate_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - raise NotImplementedError('Subclasses must implement this method.') - - def estimate_type(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - raise NotImplementedError('Subclasses must implement this method.') - - -class BearerToken(TokenBase): - __slots__ = ( - 'request_validator', 'token_generator', - 'refresh_token_generator', 'expires_in' - ) - - def __init__(self, request_validator=None, token_generator=None, - expires_in=None, refresh_token_generator=None): - self.request_validator = request_validator - self.token_generator = token_generator or random_token_generator - self.refresh_token_generator = ( - refresh_token_generator or self.token_generator - ) - self.expires_in = expires_in or 3600 - - def create_token(self, request, refresh_token=False, **kwargs): - """ - Create a BearerToken, by default without refresh token. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :param refresh_token: - """ - if "save_token" in kwargs: - warnings.warn("`save_token` has been deprecated, it was not called internally." - "If you do, call `request_validator.save_token()` instead.", - DeprecationWarning) - - if callable(self.expires_in): - expires_in = self.expires_in(request) - else: - expires_in = self.expires_in - - request.expires_in = expires_in - - token = { - 'access_token': self.token_generator(request), - 'expires_in': expires_in, - 'token_type': 'Bearer', - } - - # If provided, include - this is optional in some cases https://tools.ietf.org/html/rfc6749#section-3.3 but - # there is currently no mechanism to coordinate issuing a token for only a subset of the requested scopes so - # all tokens issued are for the entire set of requested scopes. - if request.scopes is not None: - token['scope'] = ' '.join(request.scopes) - - if refresh_token: - if (request.refresh_token and - not self.request_validator.rotate_refresh_token(request)): - token['refresh_token'] = request.refresh_token - else: - token['refresh_token'] = self.refresh_token_generator(request) - - token.update(request.extra_credentials or {}) - return OAuth2Token(token) - - def validate_request(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - token = get_token_from_header(request) - return self.request_validator.validate_bearer_token( - token, request.scopes, request) - - def estimate_type(self, request): - """ - :param request: OAuthlib request. - :type request: oauthlib.common.Request - """ - if request.headers.get('Authorization', '').split(' ')[0].lower() == 'bearer': - return 9 - elif request.access_token is not None: - return 5 - else: - return 0 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/utils.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/utils.py deleted file mode 100644 index 7dc27b3..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/utils.py +++ /dev/null @@ -1,83 +0,0 @@ -""" -oauthlib.utils -~~~~~~~~~~~~~~ - -This module contains utility methods used by various parts of the OAuth 2 spec. -""" -import datetime -import os -from urllib.parse import quote, urlparse - -from oauthlib.common import urldecode - - -def list_to_scope(scope): - """Convert a list of scopes to a space separated string.""" - if isinstance(scope, str) or scope is None: - return scope - elif isinstance(scope, (set, tuple, list)): - return " ".join([str(s) for s in scope]) - else: - raise ValueError("Invalid scope (%s), must be string, tuple, set, or list." % scope) - - -def scope_to_list(scope): - """Convert a space separated string to a list of scopes.""" - if isinstance(scope, (tuple, list, set)): - return [str(s) for s in scope] - elif scope is None: - return None - else: - return scope.strip().split(" ") - - -def params_from_uri(uri): - params = dict(urldecode(urlparse(uri).query)) - if 'scope' in params: - params['scope'] = scope_to_list(params['scope']) - return params - - -def host_from_uri(uri): - """Extract hostname and port from URI. - - Will use default port for HTTP and HTTPS if none is present in the URI. - """ - default_ports = { - 'HTTP': '80', - 'HTTPS': '443', - } - - sch, netloc, path, par, query, fra = urlparse(uri) - if ':' in netloc: - netloc, port = netloc.split(':', 1) - else: - port = default_ports.get(sch.upper()) - - return netloc, port - - -def escape(u): - """Escape a string in an OAuth-compatible fashion. - - TODO: verify whether this can in fact be used for OAuth 2 - - """ - if not isinstance(u, str): - raise ValueError('Only unicode objects are escapable.') - return quote(u.encode('utf-8'), safe=b'~') - - -def generate_age(issue_time): - """Generate a age parameter for MAC authentication draft 00.""" - td = datetime.datetime.now() - issue_time - age = (td.microseconds + (td.seconds + td.days * 24 * 3600) - * 10 ** 6) / 10 ** 6 - return str(age) - - -def is_secure_transport(uri): - """Check if the uri is over ssl.""" - if os.environ.get('OAUTHLIB_INSECURE_TRANSPORT'): - return True - return uri.lower().startswith('https://') diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__init__.py deleted file mode 100644 index 531929d..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -oauthlib.oauth2.rfc8628 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OAuth 2.0 Device Authorization RFC8628. -""" -import logging - -log = logging.getLogger(__name__) diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 53aa8c7f389b86ab226d73d497a853891b33ea2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmZutu};G<5KWpwN~H1uOkO)QExvXNJSb!+7#%=?B*Lj{J=P$r(O(fJu6DPx`W#`*R=s=N<$v z{=6@Hcit#izeR@E)go69@dhNZO~v#$nMRNQM-<&Jlp}?abq)j(*F+U%4h86nSITH& zQqpj%OzlW+G9`!xkRYSfSR#yeb)j^IbCQ(SG)i{t_8hMuNjxE!&?o_<R&sWA z(H#{>pZFo~X0+3Wj7cLHYeU?Tp+vivL3NE7Y&&2~^8&CNVE5ItAx>@5m!b<(0L^M8 ztPxOEiY}*)I$?Q=U{dH{%68hsBWlU*R YF&3Arc5t$F>D0&VZWmME8-)A4Z~VlJR{#J2 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__init__.py deleted file mode 100644 index 130b52e..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -""" -oauthlib.oauth2.rfc8628 -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming OAuth 2.0 Device Authorization RFC8628. -""" -from .device import DeviceClient diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 423ee4fb57d121a49dbd84d0353e8fa8a0d14dc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmZutu};G<5OvZDkVPd1KEP{-#wAFo145u8Mvw|q7t7dAdTL?^+lkZ;{0Ac=pTaM6 zW#Si@a1xLhILUYKN!Go0&x}SGg?fn=*?X8DE%{q<-TRWG-6QuC+2m GNBiG>MS_z6 diff --git a/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/device.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc8628/clients/__pycache__/device.cpython-310.pyc deleted file mode 100644 index 6e21facef53d7df7c8c1e7de1d4f53c83fb5500f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4239 zcmbVP&2JmW72jDdKSepREgNmoq!Xv9Of*_1lHt09E!6QxQ?yVEN4>BOmdl-?xY2%j zW>&NWx+p3Gx%F6}Ko1GfOHTbC`Zx5%V|(hq(2Mil%q~eO)WKa~XXo?Ho8SA*dvDYA z^_B(CU&*u4zuvN}|6pVJaiH-tc;)Y*U{>E^gxL{^?Y>R0UWqEP(|6)(zpC3#REz8V zx~^BFM%?T-b-fm~;d5WS>u((8oYW|>94cqr&gzR`j1xX=V}~ln>MdK@xr{rVwjL3i8_>0^Ez2ApC$72&B7`RwTVC;0Q6O9f)Dhte}^JXJ25tw*6$xU~$@j0dRJ@>3}q@;+3! z)hA#_n~{En*?s2=YXnwg&Z|bh%G#{P>aR$@)~q(0Y@M~(8no(PSdP_ifQ_!q+6EGH z1pnW}vL4bbAHor7ppQp$6-MDH;;6=)GJ_!6b%Ed{6-T2eow%(Qh35d~6^jF~U~yP9 zrXK`cN~%GixzwgAMFuJ3XgDpxzo10Os4rz2gudd8PC~Hfk~U_k1WBVX0WzQxVM6DI zoolsH`$NE8QFW4m)}Z5%gJ!UaN@+S&KFArSYHYMxQXk35;A|toB`AYtHC;g4Fj2r1 zBcl`-CdI*Iz!PLJos7BQ%f}dU4M+hkEN3Z~G)Wa5`^SKd767^ly@43{KxH-d72Xt? zhsqzqt-*_saRDE56F?e}v|y~OMVx++i=-EFHR>6b_w@DbX&|-{h@Jt;Ltq1YiF-&r zbRlc-${#|ZtTXF#G9@DtT2uS)Seobag&kG{pg6Dm0{V(l~)0lS; z^Dq!;z?BNSNB3k`2Exw(%k3;>vU|*v<1RR%Zgv8sO?KUnKJ3a+@$C$5w13EDw{%mc zvePZxRM+e;y9Nz6I}vTr?+18x1YwhGkkcEF^^JI>FN<5AWAhj z{z~I5c66Vk>QnoS6up(l)@N5=R;QI|^}CjMf-_WOT0JAC$INVHp>YUkNr|Q0d zm|@LYnh72Idr&k;ja;)gNz2|Kj(v?Z>;}0>>_4{b z)55(MrdT0lW<3p1`SLkump$kOOs#2^k^9!vfv*kU3afx^HeiH+Z7MG-3T;vuft>(1 zaI}8|e3AEvpZ`w~`H;cQ)uhn(2OUZ20*5I(F+LJq)RLc!{Uf;Q{(K^=LH}kPB|w^` z;8W=EghFU4T(Q2&C}w#tABAXOxdK07Tr5bMPrd~vD&tr8#r9+}*+y5for{Pkc-`48 zbRjW#l|qM44i0`(>NOXG2PwQgs$l#GI7)WXqfcHy^g<<}Qcz=RHN z!Q&x#y1B}7z6HviKXCfg1;8*n@J}$(YtPJIK+s%T>;eTwejX{hwPk!AN+`6`9PU9I zan}vZCJ^Q#ES35Kh>U{|2~o4*$!d*2&frrX=%i%V-5q$}h9gXZC}$k}73K+E$a-{e zAaXvyb4#$Q-h4109$?T~HWn(s`az^i?eh%aK5zo@Lm*6p&IF)hieI0fek$VBnHtG8dB& zYPTWgqrp2%=GLKn1^6GQX~g|xaRCcrnAif$c%tb90gBq?i%g`s}=vtp!F8-UNmp8Sz^9kB#I7Dy~bt3%u*m zu~M1rb-T=m{}6$H0>Z@v%1y;#m!&~>tl|jshPywx^V9br$w9xcz3T#N=jXm4cz5vs zi`~6U=$$taihn&zy55-!HCe#bZ(X5%OwG_fv$Z7(>zLkgOfsO;0*tFVEhs|2pxA+V zlZpTDU=5Rii;;hG6&dcrM2WLo?>ERb(k3=>UfZPh`t;q$%emL8wH*RFi??C%{?kqq zv(3bhIb@qH&ojT7P;YzQ^W2Y$k-F!BK|RmpHJI>;?_=>U6tndr`wW1WFlCXrT*WDv zy@)0hm=|f48vpmOY*EhgMZODx`E8hV7>> from oauthlib.oauth2 import DeviceClient - >>> client = DeviceClient('your_id', 'your_code') - >>> client.prepare_request_body(scope=['hello', 'world']) - 'grant_type=urn:ietf:params:oauth:grant-type:device_code&scope=hello+world' - - .. _`Section 3.2.1`: https://datatracker.ietf.org/doc/html/rfc6749#section-3.2.1 - .. _`Section 3.3`: https://datatracker.ietf.org/doc/html/rfc6749#section-3.3 - .. _`Section 3.4`: https://datatracker.ietf.org/doc/html/rfc8628#section-3.4 - """ - - kwargs['client_id'] = self.client_id - kwargs['include_client_id'] = include_client_id - scope = self.scope if scope is None else scope - return prepare_token_request(self.grant_type, body=body, device_code=device_code, - scope=scope, **kwargs) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/openid/__init__.py deleted file mode 100644 index e317437..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -""" -oauthlib.openid -~~~~~~~~~~~~~~ - -""" -from .connect.core.endpoints import Server, UserInfoEndpoint -from .connect.core.request_validator import RequestValidator diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index d4e909e258801f52f0e7cea0144cfae46869378b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmY*UJxc^J5Z%vH77n(u6aCP%4m9+8l9I3b?B|8mQrK%$jhoNj){kdmUzLMu(l7$$Zmi zWF}!C&<`Uk?0_tL$qjOFPLlPdC6*herCQE33QGo11M$g--nbR2i~9VGSm|J<8DFy{ jShCAbw%G}#Qb|W?tvBQ0RfnQ);X35EVQUtZc^Ur#-_UZ! diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index adf3d29f74d45ae95708f43e8fba1587b2fd1e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmYk0F%H5o3`JAa0U`Au46Q*d3frF#qoKR5m&L!&QCF<^-mvyhI@p1Bt5Xk5D4162d@X^$kwG} z<6%NOK}R=mb7l; zD?S&+N<=-f%RS{g;a^!Sr)Zx?)Z!}E+4(74I{)x7(DH!LjHDfF41u8Ad+^#ROQtC; z*B&M`6ZCWgJBOCduG((EQ^3+H-KhpWuo^>~KG>q68Z;Y&I>dAcQj(z{Wo75r@-T2c M_IOM?{30S3U$BHVpa1{> diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/exceptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index ed4b2c65b2f3d699dbf4048aeb2175803185ea09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5768 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 SMSLgmt>daSs_D00uYV1O6-vbb diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/request_validator.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/request_validator.cpython-310.pyc deleted file mode 100644 index a8debc1a83f873842d15b9b54ce317aa80b61bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14501 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 K<5QF8CjJ9FuvJ|E diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/tokens.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/__pycache__/tokens.cpython-310.pyc deleted file mode 100644 index 5cdf86b7f1b111f5d0715201e3f718309882f06b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1708 zcmah}&u`l{6ecNIkrg{ly0k;LVeoBG(OO$NY#lHR#e#Lf4nC{_2IxX4A{{G{C6%Pp z#ZY!>4*M5&OOE}QbloZc!YXzf6-s3KY4`wjg#Bv z!sG=s{REsKF%eX-oX%Oy=1%O)-Pon%XCfToUJ&6*_ST7eqW6k~-tx~NS(sU#9gfRN z7MU2QWl_k~K(FN3lqa&#!5{x?L2xk3^k`m+MJ`8hhDovl=F-ecp-0nFjS?ZU;%M~C zZwI6HSm;JdzFtUe^fudt2^u?n)@Nd1>7cPIhQbpY7ZfP*MgM}to(RMy^c#W! zMO%#zDcht%x7q0u=BG)X3B0zscPEeLVe<}{n?U|vWw67uVv_bCsg>cFLEDF> zAA_rDO*pAptm6i9<8)PmYT=cDU`3ww>L zWj<{K>>e)LfOkY~!uX#&nw4`I9WAm{m8mo)i%y>FNT({PplVMmsA6;~i_-|C5>;nV z*5cXtt1ly+8TqtI(v##!>Zt6*6t!ZCIx#`7WMp~LaXUE4s(4sFx|0a%G4R3A1GF!N3rphQ6h0vnH3crdRabDI8oo2eN9)fvjV8>A=4N zcO4{cxwo%mV&o{Xg0$s*GFoUK=U4^lUxb z^eqsJVS9Z@2mA|&)u=_Edeo=x&GOM2#ogEskYIBAcmTd^Ya~qV*6b3hc}4Ar33f$= zb4t{%a9@%3Wt+rIo;7qFvTNk$8f9~hB~cVy=vd%QpiQETev_G5(@V=mVbl)B+^NhE z-l%L2dg11*l9)^f=`-rWZ~1Ty>Ak?voq&b(W$2^ki)1c2ZvxKScM`?}&R;K*yxZw> zuJh7p&eagJ*hcpeI;`Zaq}F^ZtThs^G1ez8Wj#iNo1pIx20gnw3B6{6b5W+8$DgnM vp<_GP8>?yh&9`5F*S+)#scI!*9}+zMzpick?^_5zAekCp9+&KTyS;w_4eYZV diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__init__.py deleted file mode 100644 index 7017ff4..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -oauthlib.oopenid.core -~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various logic needed -for consuming and providing OpenID Connect -""" -from .pre_configured import Server -from .userinfo import UserInfoEndpoint diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 0096ffab6230ca14ba604e3083b10c7c55bfbbbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 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 Zg`y_D2dA3Ww4mOAs$x}dn=RvQ^M6lIzyJUM diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/pre_configured.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/pre_configured.py deleted file mode 100644 index 8ce8bee..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/pre_configured.py +++ /dev/null @@ -1,97 +0,0 @@ -""" -oauthlib.openid.connect.core.endpoints.pre_configured -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of various endpoints needed -for providing OpenID Connect servers. -""" -from oauthlib.oauth2.rfc6749.endpoints import ( - AuthorizationEndpoint, IntrospectEndpoint, ResourceEndpoint, - RevocationEndpoint, TokenEndpoint, -) -from oauthlib.oauth2.rfc6749.grant_types import ( - AuthorizationCodeGrant as OAuth2AuthorizationCodeGrant, - ClientCredentialsGrant, ImplicitGrant as OAuth2ImplicitGrant, - RefreshTokenGrant, ResourceOwnerPasswordCredentialsGrant, -) -from oauthlib.oauth2.rfc6749.tokens import BearerToken - -from ..grant_types import AuthorizationCodeGrant, HybridGrant, ImplicitGrant -from ..grant_types.dispatchers import ( - AuthorizationCodeGrantDispatcher, AuthorizationTokenGrantDispatcher, - ImplicitTokenGrantDispatcher, -) -from ..tokens import JWTToken -from .userinfo import UserInfoEndpoint - - -class Server(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpoint, - ResourceEndpoint, RevocationEndpoint, UserInfoEndpoint): - - """An all-in-one endpoint featuring all four major grant types.""" - - def __init__(self, request_validator, token_expires_in=None, - token_generator=None, refresh_token_generator=None, - *args, **kwargs): - """Construct a new all-grants-in-one server. - - :param request_validator: An implementation of - oauthlib.oauth2.RequestValidator. - :param token_expires_in: An int or a function to generate a token - expiration offset (in seconds) given a - oauthlib.common.Request object. - :param token_generator: A function to generate a token from a request. - :param refresh_token_generator: A function to generate a token from a - request for the refresh token. - :param kwargs: Extra parameters to pass to authorization-, - token-, resource-, and revocation-endpoint constructors. - """ - self.auth_grant = OAuth2AuthorizationCodeGrant(request_validator) - self.implicit_grant = OAuth2ImplicitGrant(request_validator) - self.password_grant = ResourceOwnerPasswordCredentialsGrant( - request_validator) - self.credentials_grant = ClientCredentialsGrant(request_validator) - self.refresh_grant = RefreshTokenGrant(request_validator) - self.openid_connect_auth = AuthorizationCodeGrant(request_validator) - self.openid_connect_implicit = ImplicitGrant(request_validator) - self.openid_connect_hybrid = HybridGrant(request_validator) - - self.bearer = BearerToken(request_validator, token_generator, - token_expires_in, refresh_token_generator) - - self.jwt = JWTToken(request_validator, token_generator, - token_expires_in, refresh_token_generator) - - self.auth_grant_choice = AuthorizationCodeGrantDispatcher(default_grant=self.auth_grant, oidc_grant=self.openid_connect_auth) - self.implicit_grant_choice = ImplicitTokenGrantDispatcher(default_grant=self.implicit_grant, oidc_grant=self.openid_connect_implicit) - - # See http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#Combinations for valid combinations - # internally our AuthorizationEndpoint will ensure they can appear in any order for any valid combination - AuthorizationEndpoint.__init__(self, default_response_type='code', - response_types={ - 'code': self.auth_grant_choice, - 'token': self.implicit_grant_choice, - 'id_token': self.openid_connect_implicit, - 'id_token token': self.openid_connect_implicit, - 'code token': self.openid_connect_hybrid, - 'code id_token': self.openid_connect_hybrid, - 'code id_token token': self.openid_connect_hybrid, - 'none': self.auth_grant - }, - default_token_type=self.bearer) - - self.token_grant_choice = AuthorizationTokenGrantDispatcher(request_validator, default_grant=self.auth_grant, oidc_grant=self.openid_connect_auth) - - TokenEndpoint.__init__(self, default_grant_type='authorization_code', - grant_types={ - 'authorization_code': self.token_grant_choice, - 'password': self.password_grant, - 'client_credentials': self.credentials_grant, - 'refresh_token': self.refresh_grant, - }, - default_token_type=self.bearer) - ResourceEndpoint.__init__(self, default_token='Bearer', - token_types={'Bearer': self.bearer, 'JWT': self.jwt}) - RevocationEndpoint.__init__(self, request_validator) - IntrospectEndpoint.__init__(self, request_validator) - UserInfoEndpoint.__init__(self, request_validator) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/userinfo.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/userinfo.py deleted file mode 100644 index 7aa2bbe..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/endpoints/userinfo.py +++ /dev/null @@ -1,106 +0,0 @@ -""" -oauthlib.openid.connect.core.endpoints.userinfo -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module is an implementation of userinfo endpoint. -""" -import json -import logging - -from oauthlib.common import Request -from oauthlib.oauth2.rfc6749 import errors -from oauthlib.oauth2.rfc6749.endpoints.base import ( - BaseEndpoint, catch_errors_and_unavailability, -) -from oauthlib.oauth2.rfc6749.tokens import BearerToken - -log = logging.getLogger(__name__) - - -class UserInfoEndpoint(BaseEndpoint): - """Authorizes access to userinfo resource. - """ - def __init__(self, request_validator): - self.bearer = BearerToken(request_validator, None, None, None) - self.request_validator = request_validator - BaseEndpoint.__init__(self) - - @catch_errors_and_unavailability - def create_userinfo_response(self, uri, http_method='GET', body=None, headers=None): - """Validate BearerToken and return userinfo from RequestValidator - - The UserInfo Endpoint MUST return a - content-type header to indicate which format is being returned. The - content-type of the HTTP response MUST be application/json if the - response body is a text JSON object; the response body SHOULD be encoded - using UTF-8. - """ - request = Request(uri, http_method, body, headers) - request.scopes = ["openid"] - self.validate_userinfo_request(request) - - claims = self.request_validator.get_userinfo_claims(request) - if claims is None: - log.error('Userinfo MUST have claims for %r.', request) - raise errors.ServerError(status_code=500) - - if isinstance(claims, dict): - resp_headers = { - 'Content-Type': 'application/json' - } - if "sub" not in claims: - log.error('Userinfo MUST have "sub" for %r.', request) - raise errors.ServerError(status_code=500) - body = json.dumps(claims) - elif isinstance(claims, str): - resp_headers = { - 'Content-Type': 'application/jwt' - } - body = claims - else: - log.error('Userinfo return unknown response for %r.', request) - raise errors.ServerError(status_code=500) - log.debug('Userinfo access valid for %r.', request) - return resp_headers, body, 200 - - def validate_userinfo_request(self, request): - """Ensure the request is valid. - - 5.3.1. UserInfo Request - The Client sends the UserInfo Request using either HTTP GET or HTTP - POST. The Access Token obtained from an OpenID Connect Authentication - Request MUST be sent as a Bearer Token, per `Section 2`_ of OAuth 2.0 - Bearer Token Usage [RFC6750]. - - It is RECOMMENDED that the request use the HTTP GET method and the - Access Token be sent using the Authorization header field. - - The following is a non-normative example of a UserInfo Request: - - .. code-block:: http - - GET /userinfo HTTP/1.1 - Host: server.example.com - Authorization: Bearer SlAV32hkKG - - 5.3.3. UserInfo Error Response - When an error condition occurs, the UserInfo Endpoint returns an Error - Response as defined in `Section 3`_ of OAuth 2.0 Bearer Token Usage - [RFC6750]. (HTTP errors unrelated to RFC 6750 are returned to the User - Agent using the appropriate HTTP status code.) - - The following is a non-normative example of a UserInfo Error Response: - - .. code-block:: http - - HTTP/1.1 401 Unauthorized - WWW-Authenticate: Bearer error="invalid_token", - error_description="The Access Token expired" - - .. _`Section 2`: https://datatracker.ietf.org/doc/html/rfc6750#section-2 - .. _`Section 3`: https://datatracker.ietf.org/doc/html/rfc6750#section-3 - """ - if not self.bearer.validate_request(request): - raise errors.InvalidTokenError() - if "openid" not in request.scopes: - raise errors.InsufficientScopeError() diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/exceptions.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/exceptions.py deleted file mode 100644 index 099b84e..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/exceptions.py +++ /dev/null @@ -1,149 +0,0 @@ -""" -oauthlib.oauth2.rfc6749.errors -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Error used both by OAuth 2 clients and providers to represent the spec -defined error responses for all four core grant types. -""" -from oauthlib.oauth2.rfc6749.errors import FatalClientError, OAuth2Error - - -class FatalOpenIDClientError(FatalClientError): - pass - - -class OpenIDClientError(OAuth2Error): - pass - - -class InteractionRequired(OpenIDClientError): - """ - The Authorization Server requires End-User interaction to proceed. - - This error MAY be returned when the prompt parameter value in the - Authentication Request is none, but the Authentication Request cannot be - completed without displaying a user interface for End-User interaction. - """ - error = 'interaction_required' - status_code = 401 - - -class LoginRequired(OpenIDClientError): - """ - The Authorization Server requires End-User authentication. - - This error MAY be returned when the prompt parameter value in the - Authentication Request is none, but the Authentication Request cannot be - completed without displaying a user interface for End-User authentication. - """ - error = 'login_required' - status_code = 401 - - -class AccountSelectionRequired(OpenIDClientError): - """ - The End-User is REQUIRED to select a session at the Authorization Server. - - The End-User MAY be authenticated at the Authorization Server with - different associated accounts, but the End-User did not select a session. - This error MAY be returned when the prompt parameter value in the - Authentication Request is none, but the Authentication Request cannot be - completed without displaying a user interface to prompt for a session to - use. - """ - error = 'account_selection_required' - - -class ConsentRequired(OpenIDClientError): - """ - The Authorization Server requires End-User consent. - - This error MAY be returned when the prompt parameter value in the - Authentication Request is none, but the Authentication Request cannot be - completed without displaying a user interface for End-User consent. - """ - error = 'consent_required' - status_code = 401 - - -class InvalidRequestURI(OpenIDClientError): - """ - The request_uri in the Authorization Request returns an error or - contains invalid data. - """ - error = 'invalid_request_uri' - description = 'The request_uri in the Authorization Request returns an ' \ - 'error or contains invalid data.' - - -class InvalidRequestObject(OpenIDClientError): - """ - The request parameter contains an invalid Request Object. - """ - error = 'invalid_request_object' - description = 'The request parameter contains an invalid Request Object.' - - -class RequestNotSupported(OpenIDClientError): - """ - The OP does not support use of the request parameter. - """ - error = 'request_not_supported' - description = 'The request parameter is not supported.' - - -class RequestURINotSupported(OpenIDClientError): - """ - The OP does not support use of the request_uri parameter. - """ - error = 'request_uri_not_supported' - description = 'The request_uri parameter is not supported.' - - -class RegistrationNotSupported(OpenIDClientError): - """ - The OP does not support use of the registration parameter. - """ - error = 'registration_not_supported' - description = 'The registration parameter is not supported.' - - -class InvalidTokenError(OAuth2Error): - """ - The access token provided is expired, revoked, malformed, or - invalid for other reasons. The resource SHOULD respond with - the HTTP 401 (Unauthorized) status code. The client MAY - request a new access token and retry the protected resource - request. - """ - error = 'invalid_token' - status_code = 401 - description = ("The access token provided is expired, revoked, malformed, " - "or invalid for other reasons.") - - -class InsufficientScopeError(OAuth2Error): - """ - The request requires higher privileges than provided by the - access token. The resource server SHOULD respond with the HTTP - 403 (Forbidden) status code and MAY include the "scope" - attribute with the scope necessary to access the protected - resource. - """ - error = 'insufficient_scope' - status_code = 403 - description = ("The request requires higher privileges than provided by " - "the access token.") - - -def raise_from_error(error, params=None): - import inspect - import sys - kwargs = { - 'description': params.get('error_description'), - 'uri': params.get('error_uri'), - 'state': params.get('state') - } - for _, cls in inspect.getmembers(sys.modules[__name__], inspect.isclass): - if cls.error == error: - raise cls(**kwargs) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__init__.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__init__.py deleted file mode 100644 index 8dad5f6..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -""" -oauthlib.openid.connect.core.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -from .authorization_code import AuthorizationCodeGrant -from .base import GrantTypeBase -from .dispatchers import ( - AuthorizationCodeGrantDispatcher, AuthorizationTokenGrantDispatcher, - ImplicitTokenGrantDispatcher, -) -from .hybrid import HybridGrant -from .implicit import ImplicitGrant -from .refresh_token import RefreshTokenGrant diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 20318f0527cc49f47df58950c33244e772723d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcma)3yN=U96txq_b{sn_2vJc$nPNR4nk^9GB>@e^?iOg8kux(JkK%b~X0lRJ?0@hH z@JVi|_ysENcsJQa+JYh!CNKC!{vpK7TDW W+jRU*pw-PmB~h7_@#8q?qxdhEhu`G@ diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/authorization_code.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/authorization_code.cpython-310.pyc deleted file mode 100644 index bd7a3b5b18df77efdad799d347544193d5dca3a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1686 zcma)6&yO256t-tPlS!1IEff$^1tTFLMWQoMssa*1r9JcjS|qk7U#zL^B;K8jr?w}M zC~)aYJ;9yZuEeGP(p)+9%ncze&y!@cutmZn|F*w*?|q-29*qVF%CGpl$$5m(?|yQ% z5SZMDY9Bx&5Jduupu`kIAC|#9qy!^DL{vuen8p}MeAbi6Ii~$bNW`LdibPMw&q5lC z;0TSA)zLr~jhmI~Nv3OADUoqqRgydCjm)N|s2p?4TH3)+|FaBUf^q0@jN7-q0%&d2 zs&GnI54DhwJl;zT`>;LgW{&~ha+uxyY8#z_hNyD5zkrkV3p(aY2c323(l-Mkf!D@V$O=@8aGY4r<8iWt%XjD&-h^-P7Zn z7za4G2yk+d1O$_dgJAXEtAm^E?sCuXu6TF7m!5ZfADVS|j7$QIL%+agu*OHg?=e0L zU?qe~phoNPocu^!{0vxMgEH3Pnuy?M;<;b_F-W)Np{}em4R>i#rQUK?l<7hm3kpy5 zB;7^-L)aH-DP8Jj^78gI1*KL^;hsrl#m%yIsdCxi^7!MKOs|LS>hIi4*>o-;vLc01 zW2H!)z63DR86_9e8BOE}qWcrH@Vr2#^-%eyq*FbXd<>aLCx8e0yF zwv!aS1&aQcMm-Yi4%0p_m4xJ>L`(cK9U3W=fz-kpquR(ewKS#={EQ>x(_R~OYNn%& zsAmwr5;Wc0#>~71XI|j8&loQYYZ=>Uc?ioL%sVjX1a#0RIQG(kFTmuloAK)X{}9kW z-U~h)$6k+BF_(x$^Ip6S64TJi*P usqycj?E^pG05F94O+OFeFZ=huk6xR6v2pZEpO~$;nxKRXgCPNH!@mItTj^*3 diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/base.cpython-310.pyc deleted file mode 100644 index 839e39476802ded14cad84fbfc35451bdd0226e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13007 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 diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/dispatchers.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/dispatchers.cpython-310.pyc deleted file mode 100644 index 6c0abcf3c6ce4a843fcc61fe2a8c6eeaaaf78d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4133 zcmbtX&2!U66xX+9nr=D}@488QdC&^!g7^sqc-Y>n~_p!hIDPCHtDe(NE-rxTHEk*eY z8`F;gjSVRBAqb{0HB>qZSN2t|9jG1sp29SyKU0|gRO=YfGMEW1lN(R@Alt%4u(5$q5l+%w2jSVRBEC{Z2RHk$^25Ukw=uIuF{Se5$m-sy{ z+6^J9>5#6C}wp!N7G*^<8S`a#sa+K-uR?eb{16$V?a{$A3HqZ`fZ*IF`2_|?AW zKlZv@wqkFP^l(Pp=TX2~ejG*IPvBR8a@>KN?Db(H8yg~<{XL<H>ty13$ zUeaNF1Ip1CAZEODis{UFhQ2bH^-SrQtio*gwOEza;J3mw@P0jWzK1QwA{cr}5Jz`o z#_!?2CY~MsQ*+>X*bAfs|6b&H%!4mz zBlwd6mx;Ur@5PemZ}+@i?raJ!`*9>Wx#U|P-q?iInBzIp2md)il zBzAa^Knj2^&@vO>O(!n8Cvo0%wmiw16Gx;6Un2d|DfY%$lSbM;dbfPAj$yeA#%sqS-LXsLaa!M&@RE7Qg%+P{#u&PJzI3R0n~mTC;4!uGS42@u73(!R0of2uwym$_qaMumygQJj4LbqvXGY z8UG6XN;E4n8in(ndrrgH8 zkQ~7s1gxnbM{`GhJ-^G>=g83vH!7*ogc*&A(TPVL0l0jyjJ3lSt=2x%L~JCJZxaLpc>kI z2$dW*m^#uE^kx@VY>Z%W8d3z-JUNd?^T*ui?;j z6qBPy(ZDgw>z#a0}<9syOOGDltng3c6i!S$xR zOS>T#Uxk4mq0sd~oW-!s`l`VGhMiS_b$5ZPXH^LNFHq+qUx_XyJetI92m$Gx;}*&6 Z+xge>9sKB)cxBsQ^s>HUuB@G1`wz_S5~ctE diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/hybrid.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/hybrid.cpython-310.pyc deleted file mode 100644 index e94d6f0b0c9d0ac9dad6d8a85c78d8602f667114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 zcma)7&u`l{6c!~}mSs6h+BD6Eto?CQ{nU9Trcly{9$)p34+P^6@t6w} z%;59-eEH94np8qwklBZxUiK3>^HrjFil?kLYd%oB0Js5U8PsGhGnsWtsP)1a0AZ|k z>QY-{hqVE>UKqAP9U!CAbiX;-ml@N??4{_=qT$|nDc{4RoMs38TGMU3j zO)^rOe~{k@%vsE=jRPyTYvZiNtaCzOB_R76wPxtRIcT4`u(mV*;sNfiV7NSO+k<(H znE}4G_nHkkV>Q+kBTtPxkjZe&i|VqM0;@sB;z}IyV(RIk#+Nr=`xNNOS4MwLwjeCo zfv$P?N4%lkH(wL=ODUe7#8o1PyrQ=lA0(5!iX~U2C=`#!a5UYLe3+?<%jG<(h;F14 zRf+M^X+=AwP*sd7Y@DP75whmaOpAK*S}04KmEAEIJTV(&T+&X$<{>ve!UX~J_O&}Y z-fN4#)!2&XgIV0p;V}fIWDl9Z?(%6g5@Q|>Cs`^*%Bw1i4nI|qN@Y@J#c-z-Ohre$ zIEo;HqVfcEU3?sV^kJm3itm(3dYBBkiWWH*&EksYIRj%gC}$|UZUYk35JF0qMy<=Z}4C)3Rp`GyPg6lJ?;h#h!P&T0!fl<)ya zw>E35whl~2UfLip6SKEfh$7{{P)kipF69QSmuS?tEzKqE%_tou1zfsj%So&D0-Xs0VvF`Ei&C+^?LQv-k5;e^SfY)o}Yo|=j0c&HkDUHJ*x>u zaAe4BK$hCB>>BDOvtF9NLWB^PJ^k)JV;Pp6BoF3^1B2jr#EW1c@?0FlwFcFQ2d}9= zc!2pdfX|^9%v;}-T@1*FZn`rsT0y3Qai$dRG6qI4FHZu^WKbqD8FR>q5KP|&tES61 zNGU7Pp?*u=#_iUjqrK~F!mQD(OI;o36tQ*{WXT&*6LQ@!cm_WnwQqc_2I1+ z`T!J;Abpe*7Ba%TGn{)b(GVbDowG3aogT0*=$)6yM|ogVRo26xB-fl;i-q?qnEFc) z27wQ}zydGGulQ%YKosUVVdMg1&kJ+wMQa9U^3ZmVV1)Im@f zsq#=TYUClW=UZznaqCwQU%T_oBdEl|4RG?fQS!SJY6>;tCf`$hB(&j*Dy|z@Ywl{3 zZFkKt zM;VYVYfj8q)*qzz-_Nu#e7`Bm!(zmBwx(sa3_4rU65a}&U(qrXD>9|cNgGlsYGEkd zu@&6|5nzJJCBflkL?RqwAN!ZL$b9bx%IW&I(z0PatZs9(EYT?l%Zwwe;)ORsOSyn1 ze1Hr-MH8|B&MZ9m<}vb<4;=6YZAY8Ja3FW5mUYSdzPbf|z&vZXQX8PFZ4h9Oo!#M{ zZ!X~<7d5K@{qBlLuW;L=w5$rPDP01-Wj$Co@50nJ*ex94Jv@KsW`5V}_m3Uma=Z)w z8+3}!Ao)ChO(;U zF%W1g&wlnlX`M#*Z-_g7a#B6KnpTHF0o$lJEdN#a0DnnD#*4x~@}MD0S1?FQpO zC(+oW0lV8^Q}z;dU@F_;ea|84w&(G>6Gc6g>P@@R(bb`6|9cOnwq9Zn_<@5EI0H}c zr|-}2-9+-gTd0o*{jOzU4G~k?M$|UZtg?Dc>5ExWEx)KYY!r?FHh^|>RoIeO)w;MY zMi;FM)RxGSMTa0l6p^^M+i{m#KW@8}GFieY-Aax|fMR}U-9V{R4pKENKl=E?Pg5YC zRNA4G-}|>s*BUHc*Up`#?CGul9Ij~9v1$+QrLW;kaQn7hdl10YZEyv28$MV<@tM8v SwN1%Kp&yeN$9_b1y}tk|we2qe diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/refresh_token.cpython-310.pyc b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/__pycache__/refresh_token.cpython-310.pyc deleted file mode 100644 index 9a18471ace976bca87cca55fa727f4b8d4e40801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1447 zcma)6J&)Tq7$zmz)+sh{DFPhOq0mqiFwjUzTC^z;1Zgs4XmJH{H)$ah^0myKEGi`J z#s?!AazM83*)Bkr{3WiPGI#5ezLc%ID{ct^@k8YM^*j%$CX<9qcb8#Fnkjh zp$Lx1G(J5_RJpYCT0YNI3yl;RS4{)l;;133blF&D*DaXj)n~TkBPK@&=EyA~CMtzlMaS^>G z5h(^(%SZ=!_>lX)Z{Cl`>=*pZ*VtKtKIn!@x(WWGf6@(M_?-tE@_YE6B6b8lg@^8@ zh8IgPmaWQKiqb0mflMQJ@Y~M_*1cjAb=k_My4@;a z@)b0z9NEj;wVkWxyX@|r+(-+z+mfG@6_~u|H{bG`@A$=0qw`CCbG;>Nn_SkeUCfwl zq-E?258oKOAq{BoDWLJE{owS=YcOQJ0r#Ny&Ch*_o(z*>hhUR)xMqpeCxEjvRrAZfnM?{LVr2&yzb>TpR)e=_V zlSmuYaP-F!X@P{*YdqO)bWRP53JJO36a#CVmB(B0o@;zo=K z#nJt!R#k<-6?c0LXWisprf2+zAHVhqNKsC9^RzVrwKxac{)FxrdI?cwG86@4O> hUeYea0GAi;5+@fw*w*;aKUbadBN9jBU>sqh;eY-~m?!`M diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/authorization_code.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/authorization_code.py deleted file mode 100644 index 6b2dcc3..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/authorization_code.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -oauthlib.openid.connect.core.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib.oauth2.rfc6749.grant_types.authorization_code import ( - AuthorizationCodeGrant as OAuth2AuthorizationCodeGrant, -) - -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class AuthorizationCodeGrant(GrantTypeBase): - - def __init__(self, request_validator=None, **kwargs): - self.proxy_target = OAuth2AuthorizationCodeGrant( - request_validator=request_validator, **kwargs) - self.custom_validators.post_auth.append( - self.openid_authorization_validator) - self.register_token_modifier(self.add_id_token) - - def add_id_token(self, token, token_handler, request): - """ - Construct an initial version of id_token, and let the - request_validator sign or encrypt it. - - The authorization_code version of this method is used to - retrieve the nonce accordingly to the code storage. - """ - # Treat it as normal OAuth 2 auth code request if openid is not present - if not request.scopes or 'openid' not in request.scopes: - return token - - nonce = self.request_validator.get_authorization_code_nonce( - request.client_id, - request.code, - request.redirect_uri, - request - ) - return super().add_id_token(token, token_handler, request, nonce=nonce) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/base.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/base.py deleted file mode 100644 index 33411da..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/base.py +++ /dev/null @@ -1,326 +0,0 @@ -import base64 -import hashlib -import logging -import time -from json import loads - -from oauthlib.oauth2.rfc6749.errors import ( - ConsentRequired, InvalidRequestError, LoginRequired, -) - -log = logging.getLogger(__name__) - - -class GrantTypeBase: - - # Just proxy the majority of method calls through to the - # proxy_target grant type handler, which will usually be either - # the standard OAuth2 AuthCode or Implicit grant types. - def __getattr__(self, attr): - return getattr(self.proxy_target, attr) - - def __setattr__(self, attr, value): - proxied_attrs = {'refresh_token', 'response_types'} - if attr in proxied_attrs: - setattr(self.proxy_target, attr, value) - else: - super(OpenIDConnectBase, self).__setattr__(attr, value) - - def validate_authorization_request(self, request): - """Validates the OpenID Connect authorization request parameters. - - :returns: (list of scopes, dict of request info) - """ - return self.proxy_target.validate_authorization_request(request) - - def _inflate_claims(self, request): - # this may be called multiple times in a single request so make sure we only de-serialize the claims once - if request.claims and not isinstance(request.claims, dict): - # specific claims are requested during the Authorization Request and may be requested for inclusion - # in either the id_token or the UserInfo endpoint response - # see http://openid.net/specs/openid-connect-core-1_0.html#ClaimsParameter - try: - request.claims = loads(request.claims) - except Exception as ex: - raise InvalidRequestError(description="Malformed claims parameter", - uri="http://openid.net/specs/openid-connect-core-1_0.html#ClaimsParameter") - - def id_token_hash(self, value, hashfunc=hashlib.sha256): - """ - Its value is the base64url encoding of the left-most half of the - hash of the octets of the ASCII representation of the access_token - value, where the hash algorithm used is the hash algorithm used in - the alg Header Parameter of the ID Token's JOSE Header. - - For instance, if the alg is RS256, hash the access_token value - with SHA-256, then take the left-most 128 bits and - base64url-encode them. - For instance, if the alg is HS512, hash the code value with - SHA-512, then take the left-most 256 bits and base64url-encode - them. The c_hash value is a case-sensitive string. - - Example of hash from OIDC specification (bound to a JWS using RS256): - - code: - Qcb0Orv1zh30vL1MPRsbm-diHiMwcLyZvn1arpZv-Jxf_11jnpEX3Tgfvk - - c_hash: - LDktKdoQak3Pk0cnXxCltA - """ - digest = hashfunc(value.encode()).digest() - left_most = len(digest) // 2 - return base64.urlsafe_b64encode(digest[:left_most]).decode().rstrip("=") - - def add_id_token(self, token, token_handler, request, nonce=None): - """ - Construct an initial version of id_token, and let the - request_validator sign or encrypt it. - - The initial version can contain the fields below, accordingly - to the spec: - - aud - - iat - - nonce - - at_hash - - c_hash - """ - # Treat it as normal OAuth 2 auth code request if openid is not present - if not request.scopes or 'openid' not in request.scopes: - return token - - # Only add an id token on auth/token step if asked for. - if request.response_type and 'id_token' not in request.response_type: - return token - - # Implementation mint its own id_token without help. - id_token = self.request_validator.get_id_token(token, token_handler, request) - if id_token: - token['id_token'] = id_token - return token - - # Fallback for asking some help from oauthlib framework. - # Start with technicals fields bound to the specification. - id_token = {} - id_token['aud'] = request.client_id - id_token['iat'] = int(time.time()) - - # nonce is REQUIRED when response_type value is: - # - id_token token (Implicit) - # - id_token (Implicit) - # - code id_token (Hybrid) - # - code id_token token (Hybrid) - # - # nonce is OPTIONAL when response_type value is: - # - code (Authorization Code) - # - code token (Hybrid) - if nonce is not None: - id_token["nonce"] = nonce - - # at_hash is REQUIRED when response_type value is: - # - id_token token (Implicit) - # - code id_token token (Hybrid) - # - # at_hash is OPTIONAL when: - # - code (Authorization code) - # - code id_token (Hybrid) - # - code token (Hybrid) - # - # at_hash MAY NOT be used when: - # - id_token (Implicit) - if "access_token" in token: - id_token["at_hash"] = self.id_token_hash(token["access_token"]) - - # c_hash is REQUIRED when response_type value is: - # - code id_token (Hybrid) - # - code id_token token (Hybrid) - # - # c_hash is OPTIONAL for others. - if "code" in token: - id_token["c_hash"] = self.id_token_hash(token["code"]) - - # Call request_validator to complete/sign/encrypt id_token - token['id_token'] = self.request_validator.finalize_id_token(id_token, token, token_handler, request) - - return token - - def openid_authorization_validator(self, request): - """Perform OpenID Connect specific authorization request validation. - - nonce - OPTIONAL. String value used to associate a Client session with - an ID Token, and to mitigate replay attacks. The value is - passed through unmodified from the Authentication Request to - the ID Token. Sufficient entropy MUST be present in the nonce - values used to prevent attackers from guessing values - - display - OPTIONAL. ASCII string value that specifies how the - Authorization Server displays the authentication and consent - user interface pages to the End-User. The defined values are: - - page - The Authorization Server SHOULD display the - authentication and consent UI consistent with a full User - Agent page view. If the display parameter is not specified, - this is the default display mode. - - popup - The Authorization Server SHOULD display the - authentication and consent UI consistent with a popup User - Agent window. The popup User Agent window should be of an - appropriate size for a login-focused dialog and should not - obscure the entire window that it is popping up over. - - touch - The Authorization Server SHOULD display the - authentication and consent UI consistent with a device that - leverages a touch interface. - - wap - The Authorization Server SHOULD display the - authentication and consent UI consistent with a "feature - phone" type display. - - The Authorization Server MAY also attempt to detect the - capabilities of the User Agent and present an appropriate - display. - - prompt - OPTIONAL. Space delimited, case sensitive list of ASCII string - values that specifies whether the Authorization Server prompts - the End-User for reauthentication and consent. The defined - values are: - - none - The Authorization Server MUST NOT display any - authentication or consent user interface pages. An error is - returned if an End-User is not already authenticated or the - Client does not have pre-configured consent for the - requested Claims or does not fulfill other conditions for - processing the request. The error code will typically be - login_required, interaction_required, or another code - defined in Section 3.1.2.6. This can be used as a method to - check for existing authentication and/or consent. - - login - The Authorization Server SHOULD prompt the End-User - for reauthentication. If it cannot reauthenticate the - End-User, it MUST return an error, typically - login_required. - - consent - The Authorization Server SHOULD prompt the - End-User for consent before returning information to the - Client. If it cannot obtain consent, it MUST return an - error, typically consent_required. - - select_account - The Authorization Server SHOULD prompt the - End-User to select a user account. This enables an End-User - who has multiple accounts at the Authorization Server to - select amongst the multiple accounts that they might have - current sessions for. If it cannot obtain an account - selection choice made by the End-User, it MUST return an - error, typically account_selection_required. - - The prompt parameter can be used by the Client to make sure - that the End-User is still present for the current session or - to bring attention to the request. If this parameter contains - none with any other value, an error is returned. - - max_age - OPTIONAL. Maximum Authentication Age. Specifies the allowable - elapsed time in seconds since the last time the End-User was - actively authenticated by the OP. If the elapsed time is - greater than this value, the OP MUST attempt to actively - re-authenticate the End-User. (The max_age request parameter - corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] max_auth_age - request parameter.) When max_age is used, the ID Token returned - MUST include an auth_time Claim Value. - - ui_locales - OPTIONAL. End-User's preferred languages and scripts for the - user interface, represented as a space-separated list of BCP47 - [RFC5646] language tag values, ordered by preference. For - instance, the value "fr-CA fr en" represents a preference for - French as spoken in Canada, then French (without a region - designation), followed by English (without a region - designation). An error SHOULD NOT result if some or all of the - requested locales are not supported by the OpenID Provider. - - id_token_hint - OPTIONAL. ID Token previously issued by the Authorization - Server being passed as a hint about the End-User's current or - past authenticated session with the Client. If the End-User - identified by the ID Token is logged in or is logged in by the - request, then the Authorization Server returns a positive - response; otherwise, it SHOULD return an error, such as - login_required. When possible, an id_token_hint SHOULD be - present when prompt=none is used and an invalid_request error - MAY be returned if it is not; however, the server SHOULD - respond successfully when possible, even if it is not present. - The Authorization Server need not be listed as an audience of - the ID Token when it is used as an id_token_hint value. If the - ID Token received by the RP from the OP is encrypted, to use it - as an id_token_hint, the Client MUST decrypt the signed ID - Token contained within the encrypted ID Token. The Client MAY - re-encrypt the signed ID token to the Authentication Server - using a key that enables the server to decrypt the ID Token, - and use the re-encrypted ID token as the id_token_hint value. - - login_hint - OPTIONAL. Hint to the Authorization Server about the login - identifier the End-User might use to log in (if necessary). - This hint can be used by an RP if it first asks the End-User - for their e-mail address (or other identifier) and then wants - to pass that value as a hint to the discovered authorization - service. It is RECOMMENDED that the hint value match the value - used for discovery. This value MAY also be a phone number in - the format specified for the phone_number Claim. The use of - this parameter is left to the OP's discretion. - - acr_values - OPTIONAL. Requested Authentication Context Class Reference - values. Space-separated string that specifies the acr values - that the Authorization Server is being requested to use for - processing this Authentication Request, with the values - appearing in order of preference. The Authentication Context - Class satisfied by the authentication performed is returned as - the acr Claim Value, as specified in Section 2. The acr Claim - is requested as a Voluntary Claim by this parameter. - """ - - # Treat it as normal OAuth 2 auth code request if openid is not present - if not request.scopes or 'openid' not in request.scopes: - return {} - - prompt = request.prompt if request.prompt else [] - if hasattr(prompt, 'split'): - prompt = prompt.strip().split() - prompt = set(prompt) - - if 'none' in prompt: - - if len(prompt) > 1: - msg = "Prompt none is mutually exclusive with other values." - raise InvalidRequestError(request=request, description=msg) - - if not self.request_validator.validate_silent_login(request): - raise LoginRequired(request=request) - - if not self.request_validator.validate_silent_authorization(request): - raise ConsentRequired(request=request) - - self._inflate_claims(request) - - if not self.request_validator.validate_user_match( - request.id_token_hint, request.scopes, request.claims, request): - msg = "Session user does not match client supplied user." - raise LoginRequired(request=request, description=msg) - - request_info = { - 'display': request.display, - 'nonce': request.nonce, - 'prompt': prompt, - 'ui_locales': request.ui_locales.split() if request.ui_locales else [], - 'id_token_hint': request.id_token_hint, - 'login_hint': request.login_hint, - 'claims': request.claims - } - - return request_info - - -OpenIDConnectBase = GrantTypeBase diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/dispatchers.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/dispatchers.py deleted file mode 100644 index 5aa7d46..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/dispatchers.py +++ /dev/null @@ -1,101 +0,0 @@ -import logging - -log = logging.getLogger(__name__) - - -class Dispatcher: - default_grant = None - oidc_grant = None - - -class AuthorizationCodeGrantDispatcher(Dispatcher): - """ - This is an adapter class that will route simple Authorization Code - requests, those that have `response_type=code` and a scope including - `openid` to either the `default_grant` or the `oidc_grant` based on - the scopes requested. - """ - def __init__(self, default_grant=None, oidc_grant=None): - self.default_grant = default_grant - self.oidc_grant = oidc_grant - - def _handler_for_request(self, request): - handler = self.default_grant - - if request.scopes and "openid" in request.scopes: - handler = self.oidc_grant - - log.debug('Selecting handler for request %r.', handler) - return handler - - def create_authorization_response(self, request, token_handler): - """Read scope and route to the designated handler.""" - return self._handler_for_request(request).create_authorization_response(request, token_handler) - - def validate_authorization_request(self, request): - """Read scope and route to the designated handler.""" - return self._handler_for_request(request).validate_authorization_request(request) - - -class ImplicitTokenGrantDispatcher(Dispatcher): - """ - This is an adapter class that will route simple Authorization - requests, those that have `id_token` in `response_type` and a scope - including `openid` to either the `default_grant` or the `oidc_grant` - based on the scopes requested. - """ - def __init__(self, default_grant=None, oidc_grant=None): - self.default_grant = default_grant - self.oidc_grant = oidc_grant - - def _handler_for_request(self, request): - handler = self.default_grant - - if request.scopes and "openid" in request.scopes and 'id_token' in request.response_type: - handler = self.oidc_grant - - log.debug('Selecting handler for request %r.', handler) - return handler - - def create_authorization_response(self, request, token_handler): - """Read scope and route to the designated handler.""" - return self._handler_for_request(request).create_authorization_response(request, token_handler) - - def validate_authorization_request(self, request): - """Read scope and route to the designated handler.""" - return self._handler_for_request(request).validate_authorization_request(request) - - -class AuthorizationTokenGrantDispatcher(Dispatcher): - """ - This is an adapter class that will route simple Token requests, those that authorization_code have a scope - including 'openid' to either the default_grant or the oidc_grant based on the scopes requested. - """ - def __init__(self, request_validator, default_grant=None, oidc_grant=None): - self.default_grant = default_grant - self.oidc_grant = oidc_grant - self.request_validator = request_validator - - def _handler_for_request(self, request): - handler = self.default_grant - scopes = () - parameters = dict(request.decoded_body) - client_id = parameters.get('client_id', None) - code = parameters.get('code', None) - redirect_uri = parameters.get('redirect_uri', None) - - # If code is not present fallback to `default_grant` which will - # raise an error for the missing `code` in `create_token_response` step. - if code: - scopes = self.request_validator.get_authorization_code_scopes(client_id, code, redirect_uri, request) - - if 'openid' in scopes: - handler = self.oidc_grant - - log.debug('Selecting handler for request %r.', handler) - return handler - - def create_token_response(self, request, token_handler): - """Read scope and route to the designated handler.""" - handler = self._handler_for_request(request) - return handler.create_token_response(request, token_handler) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/hybrid.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/hybrid.py deleted file mode 100644 index 7cb0758..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/hybrid.py +++ /dev/null @@ -1,63 +0,0 @@ -""" -oauthlib.openid.connect.core.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib.oauth2.rfc6749.errors import InvalidRequestError -from oauthlib.oauth2.rfc6749.grant_types.authorization_code import ( - AuthorizationCodeGrant as OAuth2AuthorizationCodeGrant, -) - -from ..request_validator import RequestValidator -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class HybridGrant(GrantTypeBase): - - def __init__(self, request_validator=None, **kwargs): - self.request_validator = request_validator or RequestValidator() - - self.proxy_target = OAuth2AuthorizationCodeGrant( - request_validator=request_validator, **kwargs) - # All hybrid response types should be fragment-encoded. - self.proxy_target.default_response_mode = "fragment" - self.register_response_type('code id_token') - self.register_response_type('code token') - self.register_response_type('code id_token token') - self.custom_validators.post_auth.append( - self.openid_authorization_validator) - # Hybrid flows can return the id_token from the authorization - # endpoint as part of the 'code' response - self.register_code_modifier(self.add_token) - self.register_code_modifier(self.add_id_token) - self.register_token_modifier(self.add_id_token) - - def add_id_token(self, token, token_handler, request): - return super().add_id_token(token, token_handler, request, nonce=request.nonce) - - def openid_authorization_validator(self, request): - """Additional validation when following the Authorization Code flow. - """ - request_info = super().openid_authorization_validator(request) - if not request_info: # returns immediately if OAuth2.0 - return request_info - - # REQUIRED if the Response Type of the request is `code - # id_token` or `code id_token token` and OPTIONAL when the - # Response Type of the request is `code token`. It is a string - # value used to associate a Client session with an ID Token, - # and to mitigate replay attacks. The value is passed through - # unmodified from the Authentication Request to the ID - # Token. Sufficient entropy MUST be present in the `nonce` - # values used to prevent attackers from guessing values. For - # implementation notes, see Section 15.5.2. - if request.response_type in ["code id_token", "code id_token token"]: - if not request.nonce: - raise InvalidRequestError( - request=request, - description='Request is missing mandatory nonce parameter.' - ) - return request_info diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/implicit.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/implicit.py deleted file mode 100644 index a4fe604..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/implicit.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -oauthlib.openid.connect.core.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib.oauth2.rfc6749.errors import InvalidRequestError -from oauthlib.oauth2.rfc6749.grant_types.implicit import ( - ImplicitGrant as OAuth2ImplicitGrant, -) - -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class ImplicitGrant(GrantTypeBase): - - def __init__(self, request_validator=None, **kwargs): - self.proxy_target = OAuth2ImplicitGrant( - request_validator=request_validator, **kwargs) - self.register_response_type('id_token') - self.register_response_type('id_token token') - self.custom_validators.post_auth.append( - self.openid_authorization_validator) - self.register_token_modifier(self.add_id_token) - - def add_id_token(self, token, token_handler, request): - if 'state' not in token and request.state: - token['state'] = request.state - return super().add_id_token(token, token_handler, request, nonce=request.nonce) - - def openid_authorization_validator(self, request): - """Additional validation when following the implicit flow. - """ - request_info = super().openid_authorization_validator(request) - if not request_info: # returns immediately if OAuth2.0 - return request_info - - # REQUIRED. String value used to associate a Client session with an ID - # Token, and to mitigate replay attacks. The value is passed through - # unmodified from the Authentication Request to the ID Token. - # Sufficient entropy MUST be present in the nonce values used to - # prevent attackers from guessing values. For implementation notes, see - # Section 15.5.2. - if not request.nonce: - raise InvalidRequestError( - request=request, - description='Request is missing mandatory nonce parameter.' - ) - return request_info diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/refresh_token.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/refresh_token.py deleted file mode 100644 index 43e4499..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/grant_types/refresh_token.py +++ /dev/null @@ -1,34 +0,0 @@ -""" -oauthlib.openid.connect.core.grant_types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib.oauth2.rfc6749.grant_types.refresh_token import ( - RefreshTokenGrant as OAuth2RefreshTokenGrant, -) - -from .base import GrantTypeBase - -log = logging.getLogger(__name__) - - -class RefreshTokenGrant(GrantTypeBase): - - def __init__(self, request_validator=None, **kwargs): - self.proxy_target = OAuth2RefreshTokenGrant( - request_validator=request_validator, **kwargs) - self.register_token_modifier(self.add_id_token) - - def add_id_token(self, token, token_handler, request): - """ - Construct an initial version of id_token, and let the - request_validator sign or encrypt it. - - The authorization_code version of this method is used to - retrieve the nonce accordingly to the code storage. - """ - if not self.request_validator.refresh_id_token(request): - return token - - return super().add_id_token(token, token_handler, request) diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/request_validator.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/request_validator.py deleted file mode 100644 index 47c4cd9..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/request_validator.py +++ /dev/null @@ -1,320 +0,0 @@ -""" -oauthlib.openid.connect.core.request_validator -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -""" -import logging - -from oauthlib.oauth2.rfc6749.request_validator import ( - RequestValidator as OAuth2RequestValidator, -) - -log = logging.getLogger(__name__) - - -class RequestValidator(OAuth2RequestValidator): - - def get_authorization_code_scopes(self, client_id, code, redirect_uri, request): - """ Extracts scopes from saved authorization code. - - The scopes returned by this method is used to route token requests - based on scopes passed to Authorization Code requests. - - With that the token endpoint knows when to include OpenIDConnect - id_token in token response only based on authorization code scopes. - - Only code param should be sufficient to retrieve grant code from - any storage you are using, `client_id` and `redirect_uri` can have a - blank value `""` don't forget to check it before using those values - in a select query if a database is used. - - :param client_id: Unicode client identifier - :param code: Unicode authorization code grant - :param redirect_uri: Unicode absolute URI - :return: A list of scope - - Method is used by: - - Authorization Token Grant Dispatcher - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_authorization_code_nonce(self, client_id, code, redirect_uri, request): - """ Extracts nonce from saved authorization code. - - If present in the Authentication Request, Authorization - Servers MUST include a nonce Claim in the ID Token with the - Claim Value being the nonce value sent in the Authentication - Request. Authorization Servers SHOULD perform no other - processing on nonce values used. The nonce value is a - case-sensitive string. - - Only code param should be sufficient to retrieve grant code from - any storage you are using. However, `client_id` and `redirect_uri` - have been validated and can be used also. - - :param client_id: Unicode client identifier - :param code: Unicode authorization code grant - :param redirect_uri: Unicode absolute URI - :return: Unicode nonce - - Method is used by: - - Authorization Token Grant Dispatcher - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_jwt_bearer_token(self, token, token_handler, request): - """Get JWT Bearer token or OpenID Connect ID token - - If using OpenID Connect this SHOULD call `oauthlib.oauth2.RequestValidator.get_id_token` - - :param token: A Bearer token dict - :param token_handler: the token handler (BearerToken class) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :return: The JWT Bearer token or OpenID Connect ID token (a JWS signed JWT) - - Method is used by JWT Bearer and OpenID Connect tokens: - - JWTToken.create_token - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_id_token(self, token, token_handler, request): - """Get OpenID Connect ID token - - This method is OPTIONAL and is NOT RECOMMENDED. - `finalize_id_token` SHOULD be implemented instead. However, if you - want a full control over the minting of the `id_token`, you - MAY want to override `get_id_token` instead of using - `finalize_id_token`. - - In the OpenID Connect workflows when an ID Token is requested this method is called. - Subclasses should implement the construction, signing and optional encryption of the - ID Token as described in the OpenID Connect spec. - - In addition to the standard OAuth2 request properties, the request may also contain - these OIDC specific properties which are useful to this method: - - - nonce, if workflow is implicit or hybrid and it was provided - - claims, if provided to the original Authorization Code request - - The token parameter is a dict which may contain an ``access_token`` entry, in which - case the resulting ID Token *should* include a calculated ``at_hash`` claim. - - Similarly, when the request parameter has a ``code`` property defined, the ID Token - *should* include a calculated ``c_hash`` claim. - - http://openid.net/specs/openid-connect-core-1_0.html (sections `3.1.3.6`_, `3.2.2.10`_, `3.3.2.11`_) - - .. _`3.1.3.6`: http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken - .. _`3.2.2.10`: http://openid.net/specs/openid-connect-core-1_0.html#ImplicitIDToken - .. _`3.3.2.11`: http://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken - - :param token: A Bearer token dict - :param token_handler: the token handler (BearerToken class) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :return: The ID Token (a JWS signed JWT) - """ - return None - - def finalize_id_token(self, id_token, token, token_handler, request): - """Finalize OpenID Connect ID token & Sign or Encrypt. - - In the OpenID Connect workflows when an ID Token is requested - this method is called. Subclasses should implement the - construction, signing and optional encryption of the ID Token - as described in the OpenID Connect spec. - - The `id_token` parameter is a dict containing a couple of OIDC - technical fields related to the specification. Prepopulated - attributes are: - - - `aud`, equals to `request.client_id`. - - `iat`, equals to current time. - - `nonce`, if present, is equals to the `nonce` from the - authorization request. - - `at_hash`, hash of `access_token`, if relevant. - - `c_hash`, hash of `code`, if relevant. - - This method MUST provide required fields as below: - - - `iss`, REQUIRED. Issuer Identifier for the Issuer of the response. - - `sub`, REQUIRED. Subject Identifier - - `exp`, REQUIRED. Expiration time on or after which the ID - Token MUST NOT be accepted by the RP when performing - authentication with the OP. - - Additionals claims must be added, note that `request.scope` - should be used to determine the list of claims. - - More information can be found at `OpenID Connect Core#Claims`_ - - .. _`OpenID Connect Core#Claims`: https://openid.net/specs/openid-connect-core-1_0.html#Claims - - :param id_token: A dict containing technical fields of id_token - :param token: A Bearer token dict - :param token_handler: the token handler (BearerToken class) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :return: The ID Token (a JWS signed JWT or JWE encrypted JWT) - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_jwt_bearer_token(self, token, scopes, request): - """Ensure the JWT Bearer token or OpenID Connect ID token are valids and authorized access to scopes. - - If using OpenID Connect this SHOULD call `oauthlib.oauth2.RequestValidator.get_id_token` - - If not using OpenID Connect this can `return None` to avoid 5xx rather 401/3 response. - - OpenID connect core 1.0 describe how to validate an id_token: - - http://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation - - http://openid.net/specs/openid-connect-core-1_0.html#ImplicitIDTValidation - - http://openid.net/specs/openid-connect-core-1_0.html#HybridIDTValidation - - http://openid.net/specs/openid-connect-core-1_0.html#HybridIDTValidation2 - - :param token: Unicode Bearer token - :param scopes: List of scopes (defined by you) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is indirectly used by all core OpenID connect JWT token issuing grant types: - - Authorization Code Grant - - Implicit Grant - - Hybrid Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_id_token(self, token, scopes, request): - """Ensure the id token is valid and authorized access to scopes. - - OpenID connect core 1.0 describe how to validate an id_token: - - http://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation - - http://openid.net/specs/openid-connect-core-1_0.html#ImplicitIDTValidation - - http://openid.net/specs/openid-connect-core-1_0.html#HybridIDTValidation - - http://openid.net/specs/openid-connect-core-1_0.html#HybridIDTValidation2 - - :param token: Unicode Bearer token - :param scopes: List of scopes (defined by you) - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is indirectly used by all core OpenID connect JWT token issuing grant types: - - Authorization Code Grant - - Implicit Grant - - Hybrid Grant - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_silent_authorization(self, request): - """Ensure the logged in user has authorized silent OpenID authorization. - - Silent OpenID authorization allows access tokens and id tokens to be - granted to clients without any user prompt or interaction. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - OpenIDConnectAuthCode - - OpenIDConnectImplicit - - OpenIDConnectHybrid - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_silent_login(self, request): - """Ensure session user has authorized silent OpenID login. - - If no user is logged in or has not authorized silent login, this - method should return False. - - If the user is logged in but associated with multiple accounts and - not selected which one to link to the token then this method should - raise an oauthlib.oauth2.AccountSelectionRequired error. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - OpenIDConnectAuthCode - - OpenIDConnectImplicit - - OpenIDConnectHybrid - """ - raise NotImplementedError('Subclasses must implement this method.') - - def validate_user_match(self, id_token_hint, scopes, claims, request): - """Ensure client supplied user id hint matches session user. - - If the sub claim or id_token_hint is supplied then the session - user must match the given ID. - - :param id_token_hint: User identifier string. - :param scopes: List of OAuth 2 scopes and OpenID claims (strings). - :param claims: OpenID Connect claims dict. - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - - OpenIDConnectAuthCode - - OpenIDConnectImplicit - - OpenIDConnectHybrid - """ - raise NotImplementedError('Subclasses must implement this method.') - - def get_userinfo_claims(self, request): - """Return the UserInfo claims in JSON or Signed or Encrypted. - - The UserInfo Claims MUST be returned as the members of a JSON object - unless a signed or encrypted response was requested during Client - Registration. The Claims defined in Section 5.1 can be returned, as can - additional Claims not specified there. - - For privacy reasons, OpenID Providers MAY elect to not return values for - some requested Claims. - - If a Claim is not returned, that Claim Name SHOULD be omitted from the - JSON object representing the Claims; it SHOULD NOT be present with a - null or empty string value. - - The sub (subject) Claim MUST always be returned in the UserInfo - Response. - - Upon receipt of the UserInfo Request, the UserInfo Endpoint MUST return - the JSON Serialization of the UserInfo Response as in Section 13.3 in - the HTTP response body unless a different format was specified during - Registration [OpenID.Registration]. - - If the UserInfo Response is signed and/or encrypted, then the Claims are - returned in a JWT and the content-type MUST be application/jwt. The - response MAY be encrypted without also being signed. If both signing and - encryption are requested, the response MUST be signed then encrypted, - with the result being a Nested JWT, as defined in [JWT]. - - If signed, the UserInfo Response SHOULD contain the Claims iss (issuer) - and aud (audience) as members. The iss value SHOULD be the OP's Issuer - Identifier URL. The aud value SHOULD be or include the RP's Client ID - value. - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: Claims as a dict OR JWT/JWS/JWE as a string - - Method is used by: - UserInfoEndpoint - """ - - def refresh_id_token(self, request): - """Whether the id token should be refreshed. Default, True - - :param request: OAuthlib request. - :type request: oauthlib.common.Request - :rtype: True or False - - Method is used by: - RefreshTokenGrant - """ - return True diff --git a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/tokens.py b/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/tokens.py deleted file mode 100644 index 936ab52..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/openid/connect/core/tokens.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -authlib.openid.connect.core.tokens -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This module contains methods for adding JWT tokens to requests. -""" -from oauthlib.oauth2.rfc6749.tokens import ( - TokenBase, get_token_from_header, random_token_generator, -) - - -class JWTToken(TokenBase): - __slots__ = ( - 'request_validator', 'token_generator', - 'refresh_token_generator', 'expires_in' - ) - - def __init__(self, request_validator=None, token_generator=None, - expires_in=None, refresh_token_generator=None): - self.request_validator = request_validator - self.token_generator = token_generator or random_token_generator - self.refresh_token_generator = ( - refresh_token_generator or self.token_generator - ) - self.expires_in = expires_in or 3600 - - def create_token(self, request, refresh_token=False): - """Create a JWT Token, using requestvalidator method.""" - - if callable(self.expires_in): - expires_in = self.expires_in(request) - else: - expires_in = self.expires_in - - request.expires_in = expires_in - - return self.request_validator.get_jwt_bearer_token(None, None, request) - - def validate_request(self, request): - token = get_token_from_header(request) - return self.request_validator.validate_jwt_bearer_token( - token, request.scopes, request) - - def estimate_type(self, request): - token = get_token_from_header(request) - if token and token.startswith('ey') and token.count('.') in (2, 4): - return 10 - return 0 diff --git a/venv/lib/python3.10/site-packages/oauthlib/signals.py b/venv/lib/python3.10/site-packages/oauthlib/signals.py deleted file mode 100644 index 8fd347a..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/signals.py +++ /dev/null @@ -1,40 +0,0 @@ -""" - Implements signals based on blinker if available, otherwise - falls silently back to a noop. Shamelessly stolen from flask.signals: - https://github.com/mitsuhiko/flask/blob/master/flask/signals.py -""" -signals_available = False -try: - from blinker import Namespace - signals_available = True -except ImportError: # noqa - class Namespace: - def signal(self, name, doc=None): - return _FakeSignal(name, doc) - - class _FakeSignal: - """If blinker is unavailable, create a fake class with the same - interface that allows sending of signals but will fail with an - error on anything else. Instead of doing anything on send, it - will just ignore the arguments and do nothing instead. - """ - - def __init__(self, name, doc=None): - self.name = name - self.__doc__ = doc - def _fail(self, *args, **kwargs): - raise RuntimeError('signalling support is unavailable ' - 'because the blinker library is ' - 'not installed.') - send = lambda *a, **kw: None - connect = disconnect = has_receivers_for = receivers_for = \ - temporarily_connected_to = connected_to = _fail - del _fail - -# The namespace for code signals. If you are not oauthlib code, do -# not put signals in here. Create your own namespace instead. -_signals = Namespace() - - -# Core signals. -scope_changed = _signals.signal('scope-changed') diff --git a/venv/lib/python3.10/site-packages/oauthlib/uri_validate.py b/venv/lib/python3.10/site-packages/oauthlib/uri_validate.py deleted file mode 100644 index a6fe0fb..0000000 --- a/venv/lib/python3.10/site-packages/oauthlib/uri_validate.py +++ /dev/null @@ -1,190 +0,0 @@ -""" -Regex for URIs - -These regex are directly derived from the collected ABNF in RFC3986 -(except for DIGIT, ALPHA and HEXDIG, defined by RFC2234). - -They should be processed with re.VERBOSE. - -Thanks Mark Nottingham for this code - https://gist.github.com/138549 -""" -import re - -# basics - -DIGIT = r"[\x30-\x39]" - -ALPHA = r"[\x41-\x5A\x61-\x7A]" - -HEXDIG = r"[\x30-\x39A-Fa-f]" - -# pct-encoded = "%" HEXDIG HEXDIG -pct_encoded = r" %% %(HEXDIG)s %(HEXDIG)s" % locals() - -# unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" -unreserved = r"(?: %(ALPHA)s | %(DIGIT)s | \- | \. | _ | ~ )" % locals() - -# gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" -gen_delims = r"(?: : | / | \? | \# | \[ | \] | @ )" - -# sub-delims = "!" / "$" / "&" / "'" / "(" / ")" -# / "*" / "+" / "," / ";" / "=" -sub_delims = r"""(?: ! | \$ | & | ' | \( | \) | - \* | \+ | , | ; | = )""" - -# pchar = unreserved / pct-encoded / sub-delims / ":" / "@" -pchar = r"(?: %(unreserved)s | %(pct_encoded)s | %(sub_delims)s | : | @ )" % locals( -) - -# reserved = gen-delims / sub-delims -reserved = r"(?: %(gen_delims)s | %(sub_delims)s )" % locals() - - -# scheme - -# scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) -scheme = r"%(ALPHA)s (?: %(ALPHA)s | %(DIGIT)s | \+ | \- | \. )*" % locals() - - -# authority - -# dec-octet = DIGIT ; 0-9 -# / %x31-39 DIGIT ; 10-99 -# / "1" 2DIGIT ; 100-199 -# / "2" %x30-34 DIGIT ; 200-249 -# / "25" %x30-35 ; 250-255 -dec_octet = r"""(?: %(DIGIT)s | - [\x31-\x39] %(DIGIT)s | - 1 %(DIGIT)s{2} | - 2 [\x30-\x34] %(DIGIT)s | - 25 [\x30-\x35] - ) -""" % locals() - -# IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet -IPv4address = r"%(dec_octet)s \. %(dec_octet)s \. %(dec_octet)s \. %(dec_octet)s" % locals( -) - -# IPv6address -IPv6address = r"([A-Fa-f0-9:]+[:$])[A-Fa-f0-9]{1,4}" - -# IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) -IPvFuture = r"v %(HEXDIG)s+ \. (?: %(unreserved)s | %(sub_delims)s | : )+" % locals() - -# IP-literal = "[" ( IPv6address / IPvFuture ) "]" -IP_literal = r"\[ (?: %(IPv6address)s | %(IPvFuture)s ) \]" % locals() - -# reg-name = *( unreserved / pct-encoded / sub-delims ) -reg_name = r"(?: %(unreserved)s | %(pct_encoded)s | %(sub_delims)s )*" % locals() - -# userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) -userinfo = r"(?: %(unreserved)s | %(pct_encoded)s | %(sub_delims)s | : )" % locals( -) - -# host = IP-literal / IPv4address / reg-name -host = r"(?: %(IP_literal)s | %(IPv4address)s | %(reg_name)s )" % locals() - -# port = *DIGIT -port = r"(?: %(DIGIT)s )*" % locals() - -# authority = [ userinfo "@" ] host [ ":" port ] -authority = r"(?: %(userinfo)s @)? %(host)s (?: : %(port)s)?" % locals() - -# Path - -# segment = *pchar -segment = r"%(pchar)s*" % locals() - -# segment-nz = 1*pchar -segment_nz = r"%(pchar)s+" % locals() - -# segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) -# ; non-zero-length segment without any colon ":" -segment_nz_nc = r"(?: %(unreserved)s | %(pct_encoded)s | %(sub_delims)s | @ )+" % locals() - -# path-abempty = *( "/" segment ) -path_abempty = r"(?: / %(segment)s )*" % locals() - -# path-absolute = "/" [ segment-nz *( "/" segment ) ] -path_absolute = r"/ (?: %(segment_nz)s (?: / %(segment)s )* )?" % locals() - -# path-noscheme = segment-nz-nc *( "/" segment ) -path_noscheme = r"%(segment_nz_nc)s (?: / %(segment)s )*" % locals() - -# path-rootless = segment-nz *( "/" segment ) -path_rootless = r"%(segment_nz)s (?: / %(segment)s )*" % locals() - -# path-empty = 0 -path_empty = r"" # FIXME - -# path = path-abempty ; begins with "/" or is empty -# / path-absolute ; begins with "/" but not "//" -# / path-noscheme ; begins with a non-colon segment -# / path-rootless ; begins with a segment -# / path-empty ; zero characters -path = r"""(?: %(path_abempty)s | - %(path_absolute)s | - %(path_noscheme)s | - %(path_rootless)s | - %(path_empty)s - ) -""" % locals() - -### Query and Fragment - -# query = *( pchar / "/" / "?" ) -query = r"(?: %(pchar)s | / | \? )*" % locals() - -# fragment = *( pchar / "/" / "?" ) -fragment = r"(?: %(pchar)s | / | \? )*" % locals() - -# URIs - -# hier-part = "//" authority path-abempty -# / path-absolute -# / path-rootless -# / path-empty -hier_part = r"""(?: (?: // %(authority)s %(path_abempty)s ) | - %(path_absolute)s | - %(path_rootless)s | - %(path_empty)s - ) -""" % locals() - -# relative-part = "//" authority path-abempty -# / path-absolute -# / path-noscheme -# / path-empty -relative_part = r"""(?: (?: // %(authority)s %(path_abempty)s ) | - %(path_absolute)s | - %(path_noscheme)s | - %(path_empty)s - ) -""" % locals() - -# relative-ref = relative-part [ "?" query ] [ "#" fragment ] -relative_ref = r"%(relative_part)s (?: \? %(query)s)? (?: \# %(fragment)s)?" % locals( -) - -# URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] -URI = r"^(?: %(scheme)s : %(hier_part)s (?: \? %(query)s )? (?: \# %(fragment)s )? )$" % locals( -) - -# URI-reference = URI / relative-ref -URI_reference = r"^(?: %(URI)s | %(relative_ref)s )$" % locals() - -# absolute-URI = scheme ":" hier-part [ "?" query ] -absolute_URI = r"^(?: %(scheme)s : %(hier_part)s (?: \? %(query)s )? )$" % locals( -) - - -def is_uri(uri): - return re.match(URI, uri, re.VERBOSE) - - -def is_uri_reference(uri): - return re.match(URI_reference, uri, re.VERBOSE) - - -def is_absolute_uri(uri): - return re.match(absolute_URI, uri, re.VERBOSE) diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/INSTALLER b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/LICENSE b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/LICENSE deleted file mode 100644 index 6808661..0000000 --- a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Wang Dàpéng - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/METADATA b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/METADATA deleted file mode 100644 index 219ea73..0000000 --- a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/METADATA +++ /dev/null @@ -1,87 +0,0 @@ -Metadata-Version: 2.1 -Name: pick -Version: 2.3.2 -Summary: Pick an option in the terminal with a simple GUI -Home-page: https://github.com/aisk/pick -License: MIT -Keywords: terminal,gui -Author: wong2 -Author-email: wonderfuly@gmail.com -Requires-Python: >=3.7 -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Requires-Dist: windows-curses (>=2.2.0,<3.0.0) ; sys_platform == "win32" -Project-URL: Repository, https://github.com/aisk/pick -Description-Content-Type: text/markdown - -# pick - -[![image](https://github.com/aisk/pick/actions/workflows/ci.yml/badge.svg)](https://github.com/aisk/pick/actions/workflows/ci.yml) -[![PyPI](https://img.shields.io/pypi/v/pick.svg)](https://pypi.python.org/pypi/pick) -[![PyPI](https://img.shields.io/pypi/dm/pick)](https://pypi.python.org/pypi/pick) - -**pick** is a small python library to help you create curses based -interactive selection list in the terminal. - -| Basic | Multiselect | -| :--------------------: | :--------------------------: | -| ![](example/basic.gif) | ![](example/multiselect.gif) | - -## Installation - - $ pip install pick - -## Usage - -**pick** comes with a simple api: - - >>> from pick import pick - - >>> title = 'Please choose your favorite programming language: ' - >>> options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell'] - >>> option, index = pick(options, title) - >>> print(option) - >>> print(index) - -**outputs**: - - >>> C++ - >>> 4 - -**pick** multiselect example: - - >>> from pick import pick - - >>> title = 'Please choose your favorite programming language (press SPACE to mark, ENTER to continue): ' - >>> options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell'] - >>> selected = pick(options, title, multiselect=True, min_selection_count=1) - >>> print(selected) - -**outputs**: - - >>> [('Java', 0), ('C++', 4)] - -## Options - -- `options`: a list of options to choose from -- `title`: (optional) a title above options list -- `indicator`: (optional) custom the selection indicator, defaults to `*` -- `default_index`: (optional) set this if the default selected option - is not the first one -- `multiselect`: (optional), if set to True its possible to select - multiple items by hitting SPACE -- `min_selection_count`: (optional) for multi select feature to - dictate a minimum of selected items before continuing -- `screen`: (optional), if you are using `pick` within an existing curses application set this to your existing `screen` object. It is assumed this has initialised in the standard way (e.g. via `curses.wrapper()`, or `curses.noecho(); curses.cbreak(); screen.kepad(True)`) -- `position`: (optional), if you are using `pick` within an existing curses application use this to set the first position to write to. e.g., `position=pick.Position(y=1, x=1)` - -## Community Projects - -[pickpack](https://github.com/anafvana/pickpack): A fork of `pick` to select tree data. - diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/RECORD b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/RECORD deleted file mode 100644 index 0e16f94..0000000 --- a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/RECORD +++ /dev/null @@ -1,9 +0,0 @@ -pick-2.3.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pick-2.3.2.dist-info/LICENSE,sha256=v25oVOh8vb2_Z6IWcZ80aMWEds3Xq8EYR2X-WScy8GU,1080 -pick-2.3.2.dist-info/METADATA,sha256=NJIsGJ0opmwkaYUtmNqPPGvRP4Hw-XKQ2RfT-RJCTqM,3288 -pick-2.3.2.dist-info/RECORD,, -pick-2.3.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pick-2.3.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88 -pick/__init__.py,sha256=HxRtK3pjd6oGVj8EZ8k50cdRjLtxpawK2H7gio3ACRY,7938 -pick/__pycache__/__init__.cpython-310.pyc,, -pick/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/REQUESTED b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/WHEEL b/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/WHEEL deleted file mode 100644 index d73ccaa..0000000 --- a/venv/lib/python3.10/site-packages/pick-2.3.2.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: poetry-core 1.9.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/venv/lib/python3.10/site-packages/pick/__init__.py b/venv/lib/python3.10/site-packages/pick/__init__.py deleted file mode 100644 index d730b1d..0000000 --- a/venv/lib/python3.10/site-packages/pick/__init__.py +++ /dev/null @@ -1,247 +0,0 @@ -import curses -from collections import namedtuple -from dataclasses import dataclass, field -from typing import Any, Generic, List, Optional, Sequence, Tuple, TypeVar, Union - -__all__ = ["Picker", "pick", "Option"] - - -@dataclass -class Option: - label: str - value: Any = None - description: Optional[str] = None - - -KEYS_ENTER = (curses.KEY_ENTER, ord("\n"), ord("\r")) -KEYS_UP = (curses.KEY_UP, ord("k")) -KEYS_DOWN = (curses.KEY_DOWN, ord("j")) -KEYS_SELECT = (curses.KEY_RIGHT, ord(" ")) - -SYMBOL_CIRCLE_FILLED = "(x)" -SYMBOL_CIRCLE_EMPTY = "( )" - -OPTION_T = TypeVar("OPTION_T", str, Option) -PICK_RETURN_T = Tuple[OPTION_T, int] - -Position = namedtuple('Position', ['y', 'x']) - -@dataclass -class Picker(Generic[OPTION_T]): - options: Sequence[OPTION_T] - title: Optional[str] = None - indicator: str = "*" - default_index: int = 0 - multiselect: bool = False - min_selection_count: int = 0 - selected_indexes: List[int] = field(init=False, default_factory=list) - index: int = field(init=False, default=0) - screen: Optional["curses._CursesWindow"] = None - position: Position = Position(0, 0) - clear_screen: bool = True - - def __post_init__(self) -> None: - if len(self.options) == 0: - raise ValueError("options should not be an empty list") - - if self.default_index >= len(self.options): - raise ValueError("default_index should be less than the length of options") - - if self.multiselect and self.min_selection_count > len(self.options): - raise ValueError( - "min_selection_count is bigger than the available options, you will not be able to make any selection" - ) - - self.index = self.default_index - - def move_up(self) -> None: - self.index -= 1 - if self.index < 0: - self.index = len(self.options) - 1 - - def move_down(self) -> None: - self.index += 1 - if self.index >= len(self.options): - self.index = 0 - - def mark_index(self) -> None: - if self.multiselect: - if self.index in self.selected_indexes: - self.selected_indexes.remove(self.index) - else: - self.selected_indexes.append(self.index) - - def get_selected(self) -> Union[List[PICK_RETURN_T], PICK_RETURN_T]: - """return the current selected option as a tuple: (option, index) - or as a list of tuples (in case multiselect==True) - """ - if self.multiselect: - return_tuples = [] - for selected in self.selected_indexes: - return_tuples.append((self.options[selected], selected)) - return return_tuples - else: - return self.options[self.index], self.index - - def get_title_lines(self) -> List[str]: - if self.title: - return self.title.split("\n") + [""] - return [] - - def get_option_lines(self) -> List[str]: - lines: List[str] = [] - for index, option in enumerate(self.options): - if index == self.index: - prefix = self.indicator - else: - prefix = len(self.indicator) * " " - - if self.multiselect: - symbol = ( - SYMBOL_CIRCLE_FILLED - if index in self.selected_indexes - else SYMBOL_CIRCLE_EMPTY - ) - prefix = f"{prefix} {symbol}" - - option_as_str = option.label if isinstance(option, Option) else option - lines.append(f"{prefix} {option_as_str}") - - return lines - - def get_lines(self) -> Tuple[List[str], int]: - title_lines = self.get_title_lines() - option_lines = self.get_option_lines() - lines = title_lines + option_lines - current_line = self.index + len(title_lines) + 1 - return lines, current_line - - def get_description_lines(self, description: str, length: int) -> List[str]: - description_words = description.split(" ") - description_lines: List[str] = [] - - line = "" - for i, word in enumerate(description_words): - if len(line + " " + word) <= length: - if i == 0: - line += word - else: - line += " " + word - else: - description_lines.append(line) - line = word - - description_lines.append(line) - - return description_lines - - def draw(self, screen: "curses._CursesWindow") -> None: - """draw the curses ui on the screen, handle scroll if needed""" - if self.clear_screen: - screen.clear() - - y, x = self.position # start point - - max_y, max_x = screen.getmaxyx() - max_rows = max_y - y # the max rows we can draw - - lines, current_line = self.get_lines() - - # calculate how many lines we should scroll, relative to the top - scroll_top = 0 - if current_line > max_rows: - scroll_top = current_line - max_rows - - lines_to_draw = lines[scroll_top : scroll_top + max_rows] - - description_present = False - for option in self.options: - if not isinstance(option, Option) or option.description is not None: - description_present = True - break - - for line in lines_to_draw: - if description_present: - screen.addnstr(y, x, line, max_x // 2 - 2) - else: - screen.addnstr(y, x, line, max_x - 2) - y += 1 - - option = self.options[self.index] - if isinstance(option, Option) and option.description is not None: - description_lines = self.get_description_lines(option.description, max_x // 2) - - for i, line in enumerate(description_lines): - screen.addnstr(i + 3, max_x // 2, line, 2 * max_x // 2 - 2) - - screen.refresh() - - def run_loop( - self, screen: "curses._CursesWindow", position: Position - ) -> Union[List[PICK_RETURN_T], PICK_RETURN_T]: - while True: - self.draw(screen) - c = screen.getch() - if c in KEYS_UP: - self.move_up() - elif c in KEYS_DOWN: - self.move_down() - elif c in KEYS_ENTER: - if ( - self.multiselect - and len(self.selected_indexes) < self.min_selection_count - ): - continue - return self.get_selected() - elif c in KEYS_SELECT and self.multiselect: - self.mark_index() - - def config_curses(self) -> None: - try: - # use the default colors of the terminal - curses.use_default_colors() - # hide the cursor - curses.curs_set(0) - except: - # Curses failed to initialize color support, eg. when TERM=vt100 - curses.initscr() - - def _start(self, screen: "curses._CursesWindow"): - self.config_curses() - return self.run_loop(screen, self.position) - - def start(self): - if self.screen: - # Given an existing screen - # don't make any lasting changes - last_cur = curses.curs_set(0) - ret = self.run_loop(self.screen, self.position) - if last_cur: - curses.curs_set(last_cur) - return ret - return curses.wrapper(self._start) - - -def pick( - options: Sequence[OPTION_T], - title: Optional[str] = None, - indicator: str = "*", - default_index: int = 0, - multiselect: bool = False, - min_selection_count: int = 0, - screen: Optional["curses._CursesWindow"] = None, - position: Position = Position(0, 0), - clear_screen = True, -): - picker: Picker = Picker( - options, - title, - indicator, - default_index, - multiselect, - min_selection_count, - screen, - position, - clear_screen, - ) - return picker.start() diff --git a/venv/lib/python3.10/site-packages/pick/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pick/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index da96fd378b1d8bf251acdb5183fd3cae59158cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6667 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 -License: MIT -Project-URL: Homepage, https://pip.pypa.io/ -Project-URL: Documentation, https://pip.pypa.io -Project-URL: Source, https://github.com/pypa/pip -Project-URL: Changelog, https://pip.pypa.io/en/stable/news/ -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Topic :: Software Development :: Build Tools -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.7 -Description-Content-Type: text/x-rst -License-File: LICENSE.txt -License-File: AUTHORS.txt - -pip - The Python Package Installer -================================== - -.. image:: https://img.shields.io/pypi/v/pip.svg - :target: https://pypi.org/project/pip/ - :alt: PyPI - -.. image:: https://img.shields.io/pypi/pyversions/pip - :target: https://pypi.org/project/pip - :alt: PyPI - Python Version - -.. image:: https://readthedocs.org/projects/pip/badge/?version=latest - :target: https://pip.pypa.io/en/latest - :alt: Documentation - -pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. - -Please take a look at our documentation for how to install and use pip: - -* `Installation`_ -* `Usage`_ - -We release updates regularly, with a new version every 3 months. Find more details in our documentation: - -* `Release notes`_ -* `Release process`_ - -If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms: - -* `Issue tracking`_ -* `Discourse channel`_ -* `User IRC`_ - -If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms: - -* `GitHub page`_ -* `Development documentation`_ -* `Development IRC`_ - -Code of Conduct ---------------- - -Everyone interacting in the pip project's codebases, issue trackers, chat -rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_. - -.. _package installer: https://packaging.python.org/guides/tool-recommendations/ -.. _Python Package Index: https://pypi.org -.. _Installation: https://pip.pypa.io/en/stable/installation/ -.. _Usage: https://pip.pypa.io/en/stable/ -.. _Release notes: https://pip.pypa.io/en/stable/news.html -.. _Release process: https://pip.pypa.io/en/latest/development/release-process/ -.. _GitHub page: https://github.com/pypa/pip -.. _Development documentation: https://pip.pypa.io/en/latest/development -.. _Issue tracking: https://github.com/pypa/pip/issues -.. _Discourse channel: https://discuss.python.org/c/packaging -.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa -.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev -.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md diff --git a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/RECORD b/venv/lib/python3.10/site-packages/pip-24.0.dist-info/RECORD deleted file mode 100644 index b653c76..0000000 --- a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/RECORD +++ /dev/null @@ -1,1025 +0,0 @@ -../../../bin/pip,sha256=ZOKQzKZRvdnZkG3bcJefmNrHi7ma79fvyrelH1FdGsM,256 -../../../bin/pip3,sha256=ZOKQzKZRvdnZkG3bcJefmNrHi7ma79fvyrelH1FdGsM,256 -../../../bin/pip3.10,sha256=ZOKQzKZRvdnZkG3bcJefmNrHi7ma79fvyrelH1FdGsM,256 -../../../bin/pip3.10,sha256=ZOKQzKZRvdnZkG3bcJefmNrHi7ma79fvyrelH1FdGsM,256 -pip-24.0.dist-info/AUTHORS.txt,sha256=SwXm4nkwRkmtnO1ZY-dLy7EPeoQNXMNLby5CN3GlNhY,10388 -pip-24.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip-24.0.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 -pip-24.0.dist-info/METADATA,sha256=kNEfJ3_Vho2mee4lfJdlbd5RHIqsfQJSMUB-bOkIOeI,3581 -pip-24.0.dist-info/RECORD,, -pip-24.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip-24.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 -pip-24.0.dist-info/entry_points.txt,sha256=ynZN1_707_L23Oa8_O5LOxEoccj1nDa4xHT5galfN7o,125 -pip-24.0.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip/__init__.py,sha256=oAk1nFpLmUVS5Ln7NxvNoGUn5Vkn6FGQjPaNDf8Q8pk,355 -pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854 -pip/__pip-runner__.py,sha256=EnrfKmKMzWAdqg_JicLCOP9Y95Ux7zHh4ObvqLtQcjo,1444 -pip/__pycache__/__init__.cpython-310.pyc,, -pip/__pycache__/__main__.cpython-310.pyc,, -pip/__pycache__/__pip-runner__.cpython-310.pyc,, -pip/_internal/__init__.py,sha256=iqZ5-YQsQV08tkUc7L806Reop6tguLFWf70ySF6be0Y,515 -pip/_internal/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/__pycache__/build_env.cpython-310.pyc,, -pip/_internal/__pycache__/cache.cpython-310.pyc,, -pip/_internal/__pycache__/configuration.cpython-310.pyc,, -pip/_internal/__pycache__/exceptions.cpython-310.pyc,, -pip/_internal/__pycache__/main.cpython-310.pyc,, -pip/_internal/__pycache__/pyproject.cpython-310.pyc,, -pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc,, -pip/_internal/__pycache__/wheel_builder.cpython-310.pyc,, -pip/_internal/build_env.py,sha256=1ESpqw0iupS_K7phZK5zshVE5Czy9BtGLFU4W6Enva8,10243 -pip/_internal/cache.py,sha256=uiYD-9F0Bv1C8ZyWE85lpzDmQf7hcUkgL99GmI8I41Q,10370 -pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 -pip/_internal/cli/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc,, -pip/_internal/cli/__pycache__/base_command.cpython-310.pyc,, -pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc,, -pip/_internal/cli/__pycache__/command_context.cpython-310.pyc,, -pip/_internal/cli/__pycache__/main.cpython-310.pyc,, -pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc,, -pip/_internal/cli/__pycache__/parser.cpython-310.pyc,, -pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc,, -pip/_internal/cli/__pycache__/req_command.cpython-310.pyc,, -pip/_internal/cli/__pycache__/spinners.cpython-310.pyc,, -pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc,, -pip/_internal/cli/autocompletion.py,sha256=_br_5NgSxSuvPjMF0MLHzS5s6BpSkQAQHKrLK89VauM,6690 -pip/_internal/cli/base_command.py,sha256=iuVWGa2oTq7gBReo0er3Z0tXJ2oqBIC6QjDHcnDhKXY,8733 -pip/_internal/cli/cmdoptions.py,sha256=1EIm8yMixQMELO4QzogdIoWkvIlQqlAW0YnPeOmnvEA,30064 -pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774 -pip/_internal/cli/main.py,sha256=Uzxt_YD1hIvB1AW5mxt6IVcht5G712AtMqdo51UMhmQ,2816 -pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338 -pip/_internal/cli/parser.py,sha256=KW6C3-7-4ErTNB0TfLTKwOdHcd-qefCeGnrOoE2r0RQ,10781 -pip/_internal/cli/progress_bars.py,sha256=So4mPoSjXkXiSHiTzzquH3VVyVD_njXlHJSExYPXAow,1968 -pip/_internal/cli/req_command.py,sha256=c7_XHABnXmD3_qlK9-r37KqdKBAcgmVKvQ2WcTrNLfc,18369 -pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118 -pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 -pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882 -pip/_internal/commands/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/commands/__pycache__/cache.cpython-310.pyc,, -pip/_internal/commands/__pycache__/check.cpython-310.pyc,, -pip/_internal/commands/__pycache__/completion.cpython-310.pyc,, -pip/_internal/commands/__pycache__/configuration.cpython-310.pyc,, -pip/_internal/commands/__pycache__/debug.cpython-310.pyc,, -pip/_internal/commands/__pycache__/download.cpython-310.pyc,, -pip/_internal/commands/__pycache__/freeze.cpython-310.pyc,, -pip/_internal/commands/__pycache__/hash.cpython-310.pyc,, -pip/_internal/commands/__pycache__/help.cpython-310.pyc,, -pip/_internal/commands/__pycache__/index.cpython-310.pyc,, -pip/_internal/commands/__pycache__/inspect.cpython-310.pyc,, -pip/_internal/commands/__pycache__/install.cpython-310.pyc,, -pip/_internal/commands/__pycache__/list.cpython-310.pyc,, -pip/_internal/commands/__pycache__/search.cpython-310.pyc,, -pip/_internal/commands/__pycache__/show.cpython-310.pyc,, -pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc,, -pip/_internal/commands/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/commands/cache.py,sha256=xg76_ZFEBC6zoQ3gXLRfMZJft4z2a0RwH4GEFZC6nnU,7944 -pip/_internal/commands/check.py,sha256=Rb13Q28yoLh0j1gpx5SU0jlResNct21eQCRsnaO9xKA,1782 -pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287 -pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766 -pip/_internal/commands/debug.py,sha256=63972uUCeMIGOdMMVeIUGrOjTOqTVWplFC82a-hcKyA,6777 -pip/_internal/commands/download.py,sha256=e4hw088zGo26WmJaMIRvCniLlLmoOjqolGyfHjsCkCQ,5335 -pip/_internal/commands/freeze.py,sha256=2qjQrH9KWi5Roav0CuR7vc7hWm4uOi_0l6tp3ESKDHM,3172 -pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703 -pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132 -pip/_internal/commands/index.py,sha256=CNXQer_PeZKSJooURcCFCBEKGfwyNoUWYP_MWczAcOM,4775 -pip/_internal/commands/inspect.py,sha256=2wSPt9yfr3r6g-s2S5L6PvRtaHNVyb4TuodMStJ39cw,3188 -pip/_internal/commands/install.py,sha256=VxDd-BD3a27ApeE2OK34rfBXS6Zo2wtemK9-HCwPqxM,28782 -pip/_internal/commands/list.py,sha256=7wRUUmdyyOknl-WZYbO_LtFQxHlWod3pjOY9yYH435o,12450 -pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697 -pip/_internal/commands/show.py,sha256=t5jia4zcYJRJZy4U_Von7zMl03hJmmcofj6oDNTnj7Y,6419 -pip/_internal/commands/uninstall.py,sha256=OIqO9tqadY8kM4HwhFf1Q62fUIp7v8KDrTRo8yWMz7Y,3886 -pip/_internal/commands/wheel.py,sha256=CSnX8Pmf1oPCnd7j7bn1_f58G9KHNiAblvVJ5zykN-A,6476 -pip/_internal/configuration.py,sha256=XkAiBS0hpzsM-LF0Qu5hvPWO_Bs67-oQKRYFBuMbESs,14006 -pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 -pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/base.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/installed.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc,, -pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/distributions/base.py,sha256=oRSEvnv2ZjBnargamnv2fcJa1n6gUDKaW0g6CWSEpWs,1743 -pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842 -pip/_internal/distributions/sdist.py,sha256=4K3V0VNMllHbBzCJibjwd_tylUKpmIdu2AQyhplvCQo,6709 -pip/_internal/distributions/wheel.py,sha256=-ma3sOtUQj0AxXCEb6_Fhmjl3nh4k3A0HC2taAb2N-4,1277 -pip/_internal/exceptions.py,sha256=TmF1iNFEneSWaemwlg6a5bpPuq2cMHK7d1-SvjsQHb0,23634 -pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 -pip/_internal/index/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/index/__pycache__/collector.cpython-310.pyc,, -pip/_internal/index/__pycache__/package_finder.cpython-310.pyc,, -pip/_internal/index/__pycache__/sources.cpython-310.pyc,, -pip/_internal/index/collector.py,sha256=sH0tL_cOoCk6pLLfCSGVjFM4rPEJtllF-VobvAvLSH4,16590 -pip/_internal/index/package_finder.py,sha256=S_nC8gzVIMY6ikWfKoSOzRtoesUqnfNhAPl_BwSOusA,37843 -pip/_internal/index/sources.py,sha256=dJegiR9f86kslaAHcv9-R5L_XBf5Rzm_FkyPteDuPxI,8688 -pip/_internal/locations/__init__.py,sha256=Dh8LJWG8LRlDK4JIj9sfRF96TREzE--N_AIlx7Tqoe4,15365 -pip/_internal/locations/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc,, -pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc,, -pip/_internal/locations/__pycache__/base.cpython-310.pyc,, -pip/_internal/locations/_distutils.py,sha256=H9ZHK_35rdDV1Qsmi4QeaBULjFT4Mbu6QuoVGkJ6QHI,6009 -pip/_internal/locations/_sysconfig.py,sha256=jyNVtUfMIf0mtyY-Xp1m9yQ8iwECozSVVFmjkN9a2yw,7680 -pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556 -pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 -pip/_internal/metadata/__init__.py,sha256=9pU3W3s-6HtjFuYhWcLTYVmSaziklPv7k2x8p7X1GmA,4339 -pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/_json.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/base.cpython-310.pyc,, -pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc,, -pip/_internal/metadata/_json.py,sha256=Rz5M5ciSNvITwaTQR6NfN8TgKgM5WfTws4D6CFknovE,2627 -pip/_internal/metadata/base.py,sha256=l3Wgku4xlgr8s4p6fS-3qQ4QKOpPbWLRwi5d9omEFG4,25907 -pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135 -pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc,, -pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc,, -pip/_internal/metadata/importlib/_compat.py,sha256=GAe_prIfCE4iUylrnr_2dJRlkkBVRUbOidEoID7LPoE,1882 -pip/_internal/metadata/importlib/_dists.py,sha256=UPl1wUujFqiwiltRJ1tMF42WRINO1sSpNNlYQ2mX0mk,8297 -pip/_internal/metadata/importlib/_envs.py,sha256=XTaFIYERP2JF0QUZuPx2ETiugXbPEcZ8q8ZKeht6Lpc,7456 -pip/_internal/metadata/pkg_resources.py,sha256=opjw4IBSqHvie6sXJ_cbT42meygoPEUfNURJuWZY7sk,10035 -pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 -pip/_internal/models/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/models/__pycache__/candidate.cpython-310.pyc,, -pip/_internal/models/__pycache__/direct_url.cpython-310.pyc,, -pip/_internal/models/__pycache__/format_control.cpython-310.pyc,, -pip/_internal/models/__pycache__/index.cpython-310.pyc,, -pip/_internal/models/__pycache__/installation_report.cpython-310.pyc,, -pip/_internal/models/__pycache__/link.cpython-310.pyc,, -pip/_internal/models/__pycache__/scheme.cpython-310.pyc,, -pip/_internal/models/__pycache__/search_scope.cpython-310.pyc,, -pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc,, -pip/_internal/models/__pycache__/target_python.cpython-310.pyc,, -pip/_internal/models/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/models/candidate.py,sha256=hEPu8VdGE5qVASv6vLz-R-Rgh5-7LMbai1jgthMCd8M,931 -pip/_internal/models/direct_url.py,sha256=FwouYBKcqckh7B-k2H3HVgRhhFTukFwqiS3kfvtFLSk,6889 -pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486 -pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030 -pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818 -pip/_internal/models/link.py,sha256=XirOAGv1jgMu7vu87kuPbohGj7VHpwVrd2q3KUgVQNg,20777 -pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738 -pip/_internal/models/search_scope.py,sha256=ASVyyZxiJILw7bTIVVpJx8J293M3Hk5F33ilGn0e80c,4643 -pip/_internal/models/selection_prefs.py,sha256=KZdi66gsR-_RUXUr9uejssk3rmTHrQVJWeNA2sV-VSY,1907 -pip/_internal/models/target_python.py,sha256=34EkorrMuRvRp-bjqHKJ-bOO71m9xdjN2b8WWFEC2HU,4272 -pip/_internal/models/wheel.py,sha256=YqazoIZyma_Q1ejFa1C7NHKQRRWlvWkdK96VRKmDBeI,3600 -pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 -pip/_internal/network/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/network/__pycache__/auth.cpython-310.pyc,, -pip/_internal/network/__pycache__/cache.cpython-310.pyc,, -pip/_internal/network/__pycache__/download.cpython-310.pyc,, -pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc,, -pip/_internal/network/__pycache__/session.cpython-310.pyc,, -pip/_internal/network/__pycache__/utils.cpython-310.pyc,, -pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc,, -pip/_internal/network/auth.py,sha256=TC-OcW2KU4W6R1hU4qPgQXvVH54adACpZz6sWq-R9NA,20541 -pip/_internal/network/cache.py,sha256=48A971qCzKNFvkb57uGEk7-0xaqPS0HWj2711QNTxkU,3935 -pip/_internal/network/download.py,sha256=i0Tn55CD5D7XYEFY3TxiYaCf0OaaTQ6SScNgCsSeV14,6086 -pip/_internal/network/lazy_wheel.py,sha256=2PXVduYZPCPZkkQFe1J1GbfHJWeCU--FXonGyIfw9eU,7638 -pip/_internal/network/session.py,sha256=9tqEDD8JiVaFdplOEXJxNo9cjRfBZ6RIa0yQQ_qBNiM,18698 -pip/_internal/network/utils.py,sha256=6A5SrUJEEUHxbGtbscwU2NpCyz-3ztiDlGWHpRRhsJ8,4073 -pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838 -pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/operations/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/operations/__pycache__/check.cpython-310.pyc,, -pip/_internal/operations/__pycache__/freeze.cpython-310.pyc,, -pip/_internal/operations/__pycache__/prepare.cpython-310.pyc,, -pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc,, -pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc,, -pip/_internal/operations/build/build_tracker.py,sha256=z-H5DOknZdBa3dh2Vq6VBMY5qLYIKmlj2p6CGZK5Lc8,4832 -pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422 -pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474 -pip/_internal/operations/build/metadata_legacy.py,sha256=o-eU21As175hDC7dluM1fJJ_FqokTIShyWpjKaIpHZw,2198 -pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075 -pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417 -pip/_internal/operations/build/wheel_legacy.py,sha256=C9j6rukgQI1n_JeQLoZGuDdfUwzCXShyIdPTp6edbMQ,3064 -pip/_internal/operations/check.py,sha256=fsqA88iGaqftCr2tlP3sSU202CSkoODRtW0O-JU9M4Y,6806 -pip/_internal/operations/freeze.py,sha256=uqoeTAf6HOYVMR2UgAT8N85UZoGEVEoQdan_Ao6SOfk,9816 -pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 -pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc,, -pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/operations/install/editable_legacy.py,sha256=YeR0KadWXw_ZheC1NtAG1qVIEkOgRGHc23x-YtGW7NU,1282 -pip/_internal/operations/install/wheel.py,sha256=9hGb1c4bRnPIb2FG7CtUSPfPxqprmHQBtwIAlWPNTtE,27311 -pip/_internal/operations/prepare.py,sha256=57Oq87HfunX3Rbqp47FdaJr9cHbAKUm_3gv7WhBAqbE,28128 -pip/_internal/pyproject.py,sha256=4Xszp11xgr126yzG6BbJA0oaQ9WXuhb0jyUb-y_6lPQ,7152 -pip/_internal/req/__init__.py,sha256=TELFgZOof3lhMmaICVWL9U7PlhXo9OufokbMAJ6J2GI,2738 -pip/_internal/req/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/req/__pycache__/constructors.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_file.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_install.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_set.cpython-310.pyc,, -pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc,, -pip/_internal/req/constructors.py,sha256=8hlY56imEthLORRwmloyKz3YOyXymIaKsNB6P9ewvNI,19018 -pip/_internal/req/req_file.py,sha256=M8ttOZL-PwAj7scPElhW3ZD2hiD9mm_6FJAGIbwAzEI,17790 -pip/_internal/req/req_install.py,sha256=wtOPxkyRSM8comTks8oL1Gp2oyGqbH7JwIDRci2QiPk,35460 -pip/_internal/req/req_set.py,sha256=iMYDUToSgkxFyrP_OrTtPSgw4dwjRyGRDpGooTqeA4Y,4704 -pip/_internal/req/req_uninstall.py,sha256=nmvTQaRCC0iu-5Tw0djlXJhSj6WmqHRvT3qkkEdC35E,24551 -pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/resolution/__pycache__/base.cpython-310.pyc,, -pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583 -pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc,, -pip/_internal/resolution/legacy/resolver.py,sha256=Xk24jQ62GvLr4Mc7IjN_qiO88qp0BImzVmPIFz9QLOE,24025 -pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc,, -pip/_internal/resolution/resolvelib/base.py,sha256=jg5COmHLhmBIKOR-4spdJD3jyULYa1BdsqiBu2YJnJ4,5173 -pip/_internal/resolution/resolvelib/candidates.py,sha256=19Ki91Po-MSxBknGIfOGkaWkFdOznN0W_nKv7jL28L0,21052 -pip/_internal/resolution/resolvelib/factory.py,sha256=vqqk-hjchdhShwWVdeW2_A-5ZblLhE_nC_v3Mhz4Svc,32292 -pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705 -pip/_internal/resolution/resolvelib/provider.py,sha256=4t23ivjruqM6hKBX1KpGiTt-M4HGhRcZnGLV0c01K7U,9824 -pip/_internal/resolution/resolvelib/reporter.py,sha256=YFm9hQvz4DFCbjZeFTQ56hTz3Ac-mDBnHkeNRVvMHLY,3100 -pip/_internal/resolution/resolvelib/requirements.py,sha256=-kJONP0WjDfdTvBAs2vUXPgAnOyNIBEAXY4b72ogtPE,5696 -pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592 -pip/_internal/self_outdated_check.py,sha256=saxQLB8UzIFtMScquytG10TOTsYVFJQ_mkW1NY-46wE,8378 -pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_internal/utils/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc,, -pip/_internal/utils/__pycache__/_log.cpython-310.pyc,, -pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc,, -pip/_internal/utils/__pycache__/compat.cpython-310.pyc,, -pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc,, -pip/_internal/utils/__pycache__/datetime.cpython-310.pyc,, -pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc,, -pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc,, -pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc,, -pip/_internal/utils/__pycache__/encoding.cpython-310.pyc,, -pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc,, -pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc,, -pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc,, -pip/_internal/utils/__pycache__/glibc.cpython-310.pyc,, -pip/_internal/utils/__pycache__/hashes.cpython-310.pyc,, -pip/_internal/utils/__pycache__/logging.cpython-310.pyc,, -pip/_internal/utils/__pycache__/misc.cpython-310.pyc,, -pip/_internal/utils/__pycache__/models.cpython-310.pyc,, -pip/_internal/utils/__pycache__/packaging.cpython-310.pyc,, -pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc,, -pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc,, -pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc,, -pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc,, -pip/_internal/utils/__pycache__/urls.cpython-310.pyc,, -pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc,, -pip/_internal/utils/__pycache__/wheel.cpython-310.pyc,, -pip/_internal/utils/_jaraco_text.py,sha256=yvDGelTVugRayPaOF2k4ab0Ky4d3uOkAfuOQjASjImY,3351 -pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015 -pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665 -pip/_internal/utils/compat.py,sha256=ACyBfLgj3_XG-iA5omEDrXqDM0cQKzi8h8HRBInzG6Q,1884 -pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377 -pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242 -pip/_internal/utils/deprecation.py,sha256=NKo8VqLioJ4nnXXGmW4KdasxF90EFHkZaHeX1fT08C8,3627 -pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206 -pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463 -pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169 -pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064 -pip/_internal/utils/filesystem.py,sha256=RhMIXUaNVMGjc3rhsDahWQ4MavvEQDdqXqgq-F6fpw8,5122 -pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 -pip/_internal/utils/glibc.py,sha256=Mesxxgg3BLxheLZx-dSf30b6gKpOgdVXw6W--uHSszQ,3113 -pip/_internal/utils/hashes.py,sha256=MjOigC75z6qoRMkgHiHqot7eqxfwDZSrEflJMPm-bHE,5118 -pip/_internal/utils/logging.py,sha256=fdtuZJ-AKkqwDTANDvGcBEpssL8el7T1jnwk1CnZl3Y,11603 -pip/_internal/utils/misc.py,sha256=fNXwaeeikvnUt4CPMFIL4-IQbZDxxjj4jDpzCi4ZsOw,23623 -pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193 -pip/_internal/utils/packaging.py,sha256=5Wm6_x7lKrlqVjPI5MBN_RurcRHwVYoQ7Ksrs84de7s,2108 -pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435 -pip/_internal/utils/subprocess.py,sha256=zzdimb75jVLE1GU4WlTZ055gczhD7n1y1xTcNc7vNZQ,9207 -pip/_internal/utils/temp_dir.py,sha256=DUAw22uFruQdK43i2L2K53C-CDjRCPeAsBKJpu-rHQ4,9312 -pip/_internal/utils/unpacking.py,sha256=SBb2iV1crb89MDRTEKY86R4A_UOWApTQn9VQVcMDOlE,8821 -pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759 -pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456 -pip/_internal/utils/wheel.py,sha256=i4BwUNHattzN0ixy3HBAF04tZPRh2CcxaT6t86viwkE,4499 -pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 -pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/git.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc,, -pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc,, -pip/_internal/vcs/bazaar.py,sha256=j0oin0fpGRHcCFCxEcpPCQoFEvA-DMLULKdGP8Nv76o,3519 -pip/_internal/vcs/git.py,sha256=CeKBGJnl6uskvvjkAUXrJVxbHJrpS_B_pyfFdjL3CRc,18121 -pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249 -pip/_internal/vcs/subversion.py,sha256=vhZs8L-TNggXqM1bbhl-FpbxE3TrIB6Tgnx8fh3S2HE,11729 -pip/_internal/vcs/versioncontrol.py,sha256=3eIjtOMYvOY5qP6BMYIYDZ375CSuec6kSEB0bOo1cSs,22787 -pip/_internal/wheel_builder.py,sha256=qTTzQV8F6b1jNsFCda1TRQC8J7gK-m7iuRNgKo7Dj68,11801 -pip/_vendor/__init__.py,sha256=U51NPwXdA-wXOiANIQncYjcMp6txgeOL5nHxksJeyas,4993 -pip/_vendor/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/__pycache__/six.cpython-310.pyc,, -pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc,, -pip/_vendor/cachecontrol/__init__.py,sha256=ctHagMhQXuvQDdm4TirZrwDOT5H8oBNAJqzdKI6sovk,676 -pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc,, -pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc,, -pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737 -pip/_vendor/cachecontrol/adapter.py,sha256=_CcWvUP9048qAZjsNqViaHbdcLs9mmFNixVfpO7oebE,6392 -pip/_vendor/cachecontrol/cache.py,sha256=OTQj72tUf8C1uEgczdl3Gc8vkldSzsTITKtDGKMx4z8,1952 -pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303 -pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc,, -pip/_vendor/cachecontrol/caches/file_cache.py,sha256=3z8AWKD-vfKeiJqIzLmJyIYtR2yd6Tsh3u1TyLRQoIQ,5352 -pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386 -pip/_vendor/cachecontrol/controller.py,sha256=keCFA3ZaNVaWTwHd6F1zqWhb4vyvNx_UvZuo5iIYMfo,18384 -pip/_vendor/cachecontrol/filewrapper.py,sha256=STttGmIPBvZzt2b51dUOwoWX5crcMCpKZOisM3f5BNc,4292 -pip/_vendor/cachecontrol/heuristics.py,sha256=fdFbk9W8IeLrjteIz_fK4mj2HD_Y7COXF2Uc8TgjT1c,4828 -pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/cachecontrol/serialize.py,sha256=0dHeMaDwysVAAnGVlhMOP4tDliohgNK0Jxk_zsOiWxw,7173 -pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417 -pip/_vendor/certifi/__init__.py,sha256=L_j-d0kYuA_MzA2_2hraF1ovf6KT6DTquRdV3paQwOk,94 -pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 -pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/certifi/__pycache__/core.cpython-310.pyc,, -pip/_vendor/certifi/cacert.pem,sha256=eU0Dn_3yd8BH4m8sfVj4Glhl2KDrcCSg-sEWT-pNJ88,281617 -pip/_vendor/certifi/core.py,sha256=ZwiOsv-sD_ouU1ft8wy_xZ3LQ7UbcVzyqj2XNyrsZis,4279 -pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/__init__.py,sha256=57R-HSxj0PWmILMN0GFmUNqEMfrEVSamXyjD-W6_fbs,4797 -pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc,, -pip/_vendor/chardet/__pycache__/version.cpython-310.pyc,, -pip/_vendor/chardet/big5freq.py,sha256=ltcfP-3PjlNHCoo5e4a7C4z-2DhBTXRfY6jbMbB7P30,31274 -pip/_vendor/chardet/big5prober.py,sha256=lPMfwCX6v2AaPgvFh_cSWZcgLDbWiFCHLZ_p9RQ9uxE,1763 -pip/_vendor/chardet/chardistribution.py,sha256=13B8XUG4oXDuLdXvfbIWwLFeR-ZU21AqTS1zcdON8bU,10032 -pip/_vendor/chardet/charsetgroupprober.py,sha256=UKK3SaIZB2PCdKSIS0gnvMtLR9JJX62M-fZJu3OlWyg,3915 -pip/_vendor/chardet/charsetprober.py,sha256=L3t8_wIOov8em-vZWOcbkdsrwe43N6_gqNh5pH7WPd4,5420 -pip/_vendor/chardet/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc,, -pip/_vendor/chardet/cli/chardetect.py,sha256=zibMVg5RpKb-ME9_7EYG4ZM2Sf07NHcQzZ12U-rYJho,3242 -pip/_vendor/chardet/codingstatemachine.py,sha256=K7k69sw3jY5DmTXoSJQVsUtFIQKYPQVOSJJhBuGv_yE,3732 -pip/_vendor/chardet/codingstatemachinedict.py,sha256=0GY3Hi2qIZvDrOOJ3AtqppM1RsYxr_66ER4EHjuMiMc,542 -pip/_vendor/chardet/cp949prober.py,sha256=0jKRV7fECuWI16rNnks0ZECKA1iZYCIEaP8A1ZvjUSI,1860 -pip/_vendor/chardet/enums.py,sha256=TzECiZoCKNMqgwU76cPCeKWFBqaWvAdLMev5_bCkhY8,1683 -pip/_vendor/chardet/escprober.py,sha256=Kho48X65xE0scFylIdeJjM2bcbvRvv0h0WUbMWrJD3A,4006 -pip/_vendor/chardet/escsm.py,sha256=AqyXpA2FQFD7k-buBty_7itGEYkhmVa8X09NLRul3QM,12176 -pip/_vendor/chardet/eucjpprober.py,sha256=5KYaM9fsxkRYzw1b5k0fL-j_-ezIw-ij9r97a9MHxLY,3934 -pip/_vendor/chardet/euckrfreq.py,sha256=3mHuRvXfsq_QcQysDQFb8qSudvTiol71C6Ic2w57tKM,13566 -pip/_vendor/chardet/euckrprober.py,sha256=hiFT6wM174GIwRvqDsIcuOc-dDsq2uPKMKbyV8-1Xnc,1753 -pip/_vendor/chardet/euctwfreq.py,sha256=2alILE1Lh5eqiFJZjzRkMQXolNJRHY5oBQd-vmZYFFM,36913 -pip/_vendor/chardet/euctwprober.py,sha256=NxbpNdBtU0VFI0bKfGfDkpP7S2_8_6FlO87dVH0ogws,1753 -pip/_vendor/chardet/gb2312freq.py,sha256=49OrdXzD-HXqwavkqjo8Z7gvs58hONNzDhAyMENNkvY,20735 -pip/_vendor/chardet/gb2312prober.py,sha256=KPEBueaSLSvBpFeINMu0D6TgHcR90e5PaQawifzF4o0,1759 -pip/_vendor/chardet/hebrewprober.py,sha256=96T_Lj_OmW-fK7JrSHojYjyG3fsGgbzkoTNleZ3kfYE,14537 -pip/_vendor/chardet/jisfreq.py,sha256=mm8tfrwqhpOd3wzZKS4NJqkYBQVcDfTM2JiQ5aW932E,25796 -pip/_vendor/chardet/johabfreq.py,sha256=dBpOYG34GRX6SL8k_LbS9rxZPMjLjoMlgZ03Pz5Hmqc,42498 -pip/_vendor/chardet/johabprober.py,sha256=O1Qw9nVzRnun7vZp4UZM7wvJSv9W941mEU9uDMnY3DU,1752 -pip/_vendor/chardet/jpcntx.py,sha256=uhHrYWkLxE_rF5OkHKInm0HUsrjgKHHVQvtt3UcvotA,27055 -pip/_vendor/chardet/langbulgarianmodel.py,sha256=vmbvYFP8SZkSxoBvLkFqKiH1sjma5ihk3PTpdy71Rr4,104562 -pip/_vendor/chardet/langgreekmodel.py,sha256=JfB7bupjjJH2w3X_mYnQr9cJA_7EuITC2cRW13fUjeI,98484 -pip/_vendor/chardet/langhebrewmodel.py,sha256=3HXHaLQPNAGcXnJjkIJfozNZLTvTJmf4W5Awi6zRRKc,98196 -pip/_vendor/chardet/langhungarianmodel.py,sha256=WxbeQIxkv8YtApiNqxQcvj-tMycsoI4Xy-fwkDHpP_Y,101363 -pip/_vendor/chardet/langrussianmodel.py,sha256=s395bTZ87ESTrZCOdgXbEjZ9P1iGPwCl_8xSsac_DLY,128035 -pip/_vendor/chardet/langthaimodel.py,sha256=7bJlQitRpTnVGABmbSznHnJwOHDy3InkTvtFUx13WQI,102774 -pip/_vendor/chardet/langturkishmodel.py,sha256=XY0eGdTIy4eQ9Xg1LVPZacb-UBhHBR-cq0IpPVHowKc,95372 -pip/_vendor/chardet/latin1prober.py,sha256=p15EEmFbmQUwbKLC7lOJVGHEZwcG45ubEZYTGu01J5g,5380 -pip/_vendor/chardet/macromanprober.py,sha256=9anfzmY6TBfUPDyBDOdY07kqmTHpZ1tK0jL-p1JWcOY,6077 -pip/_vendor/chardet/mbcharsetprober.py,sha256=Wr04WNI4F3X_VxEverNG-H25g7u-MDDKlNt-JGj-_uU,3715 -pip/_vendor/chardet/mbcsgroupprober.py,sha256=iRpaNBjV0DNwYPu_z6TiHgRpwYahiM7ztI_4kZ4Uz9A,2131 -pip/_vendor/chardet/mbcssm.py,sha256=hUtPvDYgWDaA2dWdgLsshbwRfm3Q5YRlRogdmeRUNQw,30391 -pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc,, -pip/_vendor/chardet/metadata/languages.py,sha256=FhvBIdZFxRQ-dTwkb_0madRKgVBCaUMQz9I5xqjE5iQ,13560 -pip/_vendor/chardet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/chardet/resultdict.py,sha256=ez4FRvN5KaSosJeJ2WzUyKdDdg35HDy_SSLPXKCdt5M,402 -pip/_vendor/chardet/sbcharsetprober.py,sha256=-nd3F90i7GpXLjehLVHqVBE0KlWzGvQUPETLBNn4o6U,6400 -pip/_vendor/chardet/sbcsgroupprober.py,sha256=gcgI0fOfgw_3YTClpbra_MNxwyEyJ3eUXraoLHYb59E,4137 -pip/_vendor/chardet/sjisprober.py,sha256=aqQufMzRw46ZpFlzmYaYeT2-nzmKb-hmcrApppJ862k,4007 -pip/_vendor/chardet/universaldetector.py,sha256=xYBrg4x0dd9WnT8qclfADVD9ondrUNkqPmvte1pa520,14848 -pip/_vendor/chardet/utf1632prober.py,sha256=pw1epGdMj1hDGiCu1AHqqzOEfjX8MVdiW7O1BlT8-eQ,8505 -pip/_vendor/chardet/utf8prober.py,sha256=8m08Ub5490H4jQ6LYXvFysGtgKoKsHUd2zH_i8_TnVw,2812 -pip/_vendor/chardet/version.py,sha256=lGtJcxGM44Qz4Cbk4rbbmrKxnNr1-97U25TameLehZw,244 -pip/_vendor/colorama/__init__.py,sha256=wePQA4U20tKgYARySLEC047ucNX-g8pRLpYBuiHlLb8,266 -pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc,, -pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc,, -pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 -pip/_vendor/colorama/ansitowin32.py,sha256=vPNYa3OZbxjbuFyaVo0Tmhmy1FZ1lKMWCnT7odXpItk,11128 -pip/_vendor/colorama/initialise.py,sha256=-hIny86ClXo39ixh5iSCfUIa2f_h_bgKRDW7gqs-KLU,3325 -pip/_vendor/colorama/tests/__init__.py,sha256=MkgPAEzGQd-Rq0w0PZXSX2LadRWhUECcisJY8lSrm4Q,75 -pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc,, -pip/_vendor/colorama/tests/ansi_test.py,sha256=FeViDrUINIZcr505PAxvU4AjXz1asEiALs9GXMhwRaE,2839 -pip/_vendor/colorama/tests/ansitowin32_test.py,sha256=RN7AIhMJ5EqDsYaCjVo-o4u8JzDD4ukJbmevWKS70rY,10678 -pip/_vendor/colorama/tests/initialise_test.py,sha256=BbPy-XfyHwJ6zKozuQOvNvQZzsx9vdb_0bYXn7hsBTc,6741 -pip/_vendor/colorama/tests/isatty_test.py,sha256=Pg26LRpv0yQDB5Ac-sxgVXG7hsA1NYvapFgApZfYzZg,1866 -pip/_vendor/colorama/tests/utils.py,sha256=1IIRylG39z5-dzq09R_ngufxyPZxgldNbrxKxUGwGKE,1079 -pip/_vendor/colorama/tests/winterm_test.py,sha256=qoWFPEjym5gm2RuMwpf3pOis3a5r_PJZFCzK254JL8A,3709 -pip/_vendor/colorama/win32.py,sha256=YQOKwMTwtGBbsY4dL5HYTvwTeP9wIQra5MvPNddpxZs,6181 -pip/_vendor/colorama/winterm.py,sha256=XCQFDHjPi6AHYNdZwy0tA02H-Jh48Jp-HvCjeLeLp3U,7134 -pip/_vendor/distlib/__init__.py,sha256=hJKF7FHoqbmGckncDuEINWo_OYkDNiHODtYXSMcvjcc,625 -pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/database.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/index.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/util.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/version.cpython-310.pyc,, -pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc,, -pip/_vendor/distlib/compat.py,sha256=Un-uIBvy02w-D267OG4VEhuddqWgKj9nNkxVltAb75w,41487 -pip/_vendor/distlib/database.py,sha256=0V9Qvs0Vrxa2F_-hLWitIyVyRifJ0pCxyOI-kEOBwsA,51965 -pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797 -pip/_vendor/distlib/locators.py,sha256=o1r_M86_bRLafSpetmyfX8KRtFu-_Q58abvQrnOSnbA,51767 -pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168 -pip/_vendor/distlib/markers.py,sha256=n3DfOh1yvZ_8EW7atMyoYeZFXjYla0Nz0itQlojCd0A,5268 -pip/_vendor/distlib/metadata.py,sha256=pB9WZ9mBfmQxc9OVIldLS5CjOoQRvKAvUwwQyKwKQtQ,39693 -pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 -pip/_vendor/distlib/scripts.py,sha256=nQFXN6G7nOWNDUyxirUep-3WOlJhB7McvCs9zOnkGTI,18315 -pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792 -pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784 -pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032 -pip/_vendor/distlib/util.py,sha256=XSznxEi_i3T20UJuaVc0qXHz5ksGUCW1khYlBprN_QE,67530 -pip/_vendor/distlib/version.py,sha256=9pXkduchve_aN7JG6iL9VTYV_kqNSGoc2Dwl8JuySnQ,23747 -pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648 -pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448 -pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888 -pip/_vendor/distlib/wheel.py,sha256=FVQCve8u-L0QYk5-YTZc7s4WmNQdvjRWTK08KXzZVX4,43958 -pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981 -pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64 -pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/distro/__pycache__/distro.cpython-310.pyc,, -pip/_vendor/distro/distro.py,sha256=UZO1LjIhtFCMdlbiz39gj3raV-Amf3SBwzGzfApiMHw,49330 -pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 -pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/codec.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/core.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc,, -pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc,, -pip/_vendor/idna/codec.py,sha256=6ly5odKfqrytKT9_7UrlGklHnf1DSK2r9C6cSM4sa28,3374 -pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321 -pip/_vendor/idna/core.py,sha256=1JxchwKzkxBSn7R_oCE12oBu3eVux0VzdxolmIad24M,12950 -pip/_vendor/idna/idnadata.py,sha256=xUjqKqiJV8Ho_XzBpAtv5JFoVPSupK-SUXvtjygUHqw,44375 -pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881 -pip/_vendor/idna/package_data.py,sha256=C_jHJzmX8PI4xq0jpzmcTMxpb5lDsq4o5VyxQzlVrZE,21 -pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/idna/uts46data.py,sha256=zvjZU24s58_uAS850Mcd0NnD0X7_gCMAMjzWNIeUJdc,206539 -pip/_vendor/msgpack/__init__.py,sha256=hyGhlnmcJkxryJBKC3X5FnEph375kQoL_mG8LZUuXgY,1132 -pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc,, -pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc,, -pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 -pip/_vendor/msgpack/ext.py,sha256=C5MK8JhVYGYFWPvxsORsqZAnvOXefYQ57m1Ym0luW5M,6079 -pip/_vendor/msgpack/fallback.py,sha256=tvNBHyxxFbuVlC8GZShETClJxjLiDMOja4XwwyvNm2g,34544 -pip/_vendor/packaging/__about__.py,sha256=ugASIO2w1oUyH8_COqQ2X_s0rDhjbhQC3yJocD03h2c,661 -pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497 -pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/packaging/__pycache__/version.cpython-310.pyc,, -pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488 -pip/_vendor/packaging/_musllinux.py,sha256=_KGgY_qc7vhMGpoqss25n2hiLCNKRtvz9mCrS7gkqyc,4378 -pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431 -pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487 -pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676 -pip/_vendor/packaging/specifiers.py,sha256=LRQ0kFsHrl5qfcFNEEJrIFYsnIHQUJXY9fIsakTrrqE,30110 -pip/_vendor/packaging/tags.py,sha256=lmsnGNiJ8C4D_Pf9PbM0qgbZvD9kmB9lpZBQUZa3R_Y,15699 -pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200 -pip/_vendor/packaging/version.py,sha256=_fLRNrFrxYcHVfyo8vk9j8s6JM8N_xsSxVFr6RJyco8,14665 -pip/_vendor/pkg_resources/__init__.py,sha256=hTAeJCNYb7dJseIDVsYK3mPQep_gphj4tQh-bspX8bg,109364 -pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/platformdirs/__init__.py,sha256=SkhEYVyC_HUHC6KX7n4M_6coyRMtEB38QMyOYIAX6Yk,20155 -pip/_vendor/platformdirs/__main__.py,sha256=fVvSiTzr2-RM6IsjWjj4fkaOtDOgDhUWv6sA99do4CQ,1476 -pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc,, -pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc,, -pip/_vendor/platformdirs/android.py,sha256=y_EEMKwYl2-bzYBDovksSn8m76on0Lda8eyJksVQE9U,7211 -pip/_vendor/platformdirs/api.py,sha256=jWtX06jAJytYrkJDOqEls97mCkyHRSZkoqUlbMK5Qew,7132 -pip/_vendor/platformdirs/macos.py,sha256=LueVOoVgGWDBwQb8OFwXkVKfVn33CM1Lkwf1-A86tRQ,3678 -pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/platformdirs/unix.py,sha256=22JhR8ZY0aLxSVCFnKrc6f1iz6Gv42K24Daj7aTjfSg,8809 -pip/_vendor/platformdirs/version.py,sha256=mavZTQIJIXfdewEaSTn7EWrNfPZWeRofb-74xqW5f2M,160 -pip/_vendor/platformdirs/windows.py,sha256=4TtbPGoWG2PRgI11uquDa7eRk8TcxvnUNuuMGZItnXc,9573 -pip/_vendor/pygments/__init__.py,sha256=6AuDljQtvf89DTNUyWM7k3oUlP_lq70NU-INKKteOBY,2983 -pip/_vendor/pygments/__main__.py,sha256=es8EKMvXj5yToIfQ-pf3Dv5TnIeeM6sME0LW-n4ecHo,353 -pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/console.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/style.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/token.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc,, -pip/_vendor/pygments/__pycache__/util.cpython-310.pyc,, -pip/_vendor/pygments/cmdline.py,sha256=byxYJp9gnjVeyhRlZ3UTMgo_LhkXh1afvN8wJBtAcc8,23685 -pip/_vendor/pygments/console.py,sha256=2wZ5W-U6TudJD1_NLUwjclMpbomFM91lNv11_60sfGY,1697 -pip/_vendor/pygments/filter.py,sha256=j5aLM9a9wSx6eH1oy473oSkJ02hGWNptBlVo4s1g_30,1938 -pip/_vendor/pygments/filters/__init__.py,sha256=h_koYkUFo-FFUxjs564JHUAz7O3yJpVwI6fKN3MYzG0,40386 -pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/formatter.py,sha256=J9OL9hXLJKZk7moUgKwpjW9HNf4WlJFg_o_-Z_S_tTY,4178 -pip/_vendor/pygments/formatters/__init__.py,sha256=_xgAcdFKr0QNYwh_i98AU9hvfP3X2wAkhElFcRRF3Uo,5424 -pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc,, -pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc,, -pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176 -pip/_vendor/pygments/formatters/bbcode.py,sha256=r1b7wzWTJouADDLh-Z11iRi4iQxD0JKJ1qHl6mOYxsA,3314 -pip/_vendor/pygments/formatters/groff.py,sha256=xy8Zf3tXOo6MWrXh7yPGWx3lVEkg_DhY4CxmsDb0IVo,5094 -pip/_vendor/pygments/formatters/html.py,sha256=PIzAyilNqaTzSSP2slDG2VDLE3qNioWy2rgtSSoviuI,35610 -pip/_vendor/pygments/formatters/img.py,sha256=XKXmg2_XONrR4mtq2jfEU8XCsoln3VSGTw-UYiEokys,21938 -pip/_vendor/pygments/formatters/irc.py,sha256=Ep-m8jd3voFO6Fv57cUGFmz6JVA67IEgyiBOwv0N4a0,4981 -pip/_vendor/pygments/formatters/latex.py,sha256=FGzJ-YqSTE8z_voWPdzvLY5Tq8jE_ygjGjM6dXZJ8-k,19351 -pip/_vendor/pygments/formatters/other.py,sha256=gPxkk5BdAzWTCgbEHg1lpLi-1F6ZPh5A_aotgLXHnzg,5073 -pip/_vendor/pygments/formatters/pangomarkup.py,sha256=6LKnQc8yh49f802bF0sPvbzck4QivMYqqoXAPaYP8uU,2212 -pip/_vendor/pygments/formatters/rtf.py,sha256=aA0v_psW6KZI3N18TKDifxeL6mcF8EDXcPXDWI4vhVQ,5014 -pip/_vendor/pygments/formatters/svg.py,sha256=dQONWypbzfvzGCDtdp3M_NJawScJvM2DiHbx1k-ww7g,7335 -pip/_vendor/pygments/formatters/terminal.py,sha256=FG-rpjRpFmNpiGB4NzIucvxq6sQIXB3HOTo2meTKtrU,4674 -pip/_vendor/pygments/formatters/terminal256.py,sha256=13SJ3D5pFdqZ9zROE6HbWnBDwHvOGE8GlsmqGhprRp4,11753 -pip/_vendor/pygments/lexer.py,sha256=2BpqLlT2ExvOOi7vnjK5nB4Fp-m52ldiPaXMox5uwug,34618 -pip/_vendor/pygments/lexers/__init__.py,sha256=j5KEi5O_VQ5GS59H49l-10gzUOkWKxlwGeVMlGO2MMk,12130 -pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc,, -pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc,, -pip/_vendor/pygments/lexers/_mapping.py,sha256=Hts4r_ZQ8icftGM7gkBPeED5lyVSv4affFgXYE6Ap04,72281 -pip/_vendor/pygments/lexers/python.py,sha256=c7jnmKFU9DLxTJW0UbwXt6Z9FJqbBlVsWA1Qr9xSA_w,53424 -pip/_vendor/pygments/modeline.py,sha256=eF2vO4LpOGoPvIKKkbPfnyut8hT4UiebZPpb-BYGQdI,986 -pip/_vendor/pygments/plugin.py,sha256=j1Fh310RbV2DQ9nvkmkqvlj38gdyuYKllLnGxbc8sJM,2591 -pip/_vendor/pygments/regexopt.py,sha256=jg1ALogcYGU96TQS9isBl6dCrvw5y5--BP_K-uFk_8s,3072 -pip/_vendor/pygments/scanner.py,sha256=b_nu5_f3HCgSdp5S_aNRBQ1MSCm4ZjDwec2OmTRickw,3092 -pip/_vendor/pygments/sphinxext.py,sha256=wBFYm180qea9JKt__UzhRlNRNhczPDFDaqGD21sbuso,6882 -pip/_vendor/pygments/style.py,sha256=C4qyoJrUTkq-OV3iO-8Vz3UtWYpJwSTdh5_vlGCGdNQ,6257 -pip/_vendor/pygments/styles/__init__.py,sha256=he7HjQx7sC0d2kfTVLjUs0J15mtToJM6M1brwIm9--Q,3700 -pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pygments/token.py,sha256=seNsmcch9OEHXYirh8Ool7w8xDhfNTbLj5rHAC-gc_o,6184 -pip/_vendor/pygments/unistring.py,sha256=FaUfG14NBJEKLQoY9qj6JYeXrpYcLmKulghdxOGFaOc,63223 -pip/_vendor/pygments/util.py,sha256=AEVY0qonyyEMgv4Do2dINrrqUAwUk2XYSqHM650uzek,10230 -pip/_vendor/pyparsing/__init__.py,sha256=9m1JbE2JTLdBG0Mb6B0lEaZj181Wx5cuPXZpsbHEYgE,9116 -pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc,, -pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc,, -pip/_vendor/pyparsing/actions.py,sha256=05uaIPOznJPQ7VgRdmGCmG4sDnUPtwgv5qOYIqbL2UY,6567 -pip/_vendor/pyparsing/common.py,sha256=p-3c83E5-DjlkF35G0O9-kjQRpoejP-2_z0hxZ-eol4,13387 -pip/_vendor/pyparsing/core.py,sha256=yvuRlLpXSF8mgk-QhiW3OVLqD9T0rsj9tbibhRH4Yaw,224445 -pip/_vendor/pyparsing/diagram/__init__.py,sha256=nxmDOoYF9NXuLaGYy01tKFjkNReWJlrGFuJNWEiTo84,24215 -pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyparsing/exceptions.py,sha256=6Jc6W1eDZBzyFu1J0YrcdNFVBC-RINujZmveSnB8Rxw,9523 -pip/_vendor/pyparsing/helpers.py,sha256=BZJHCA8SS0pYio30KGQTc9w2qMOaK4YpZ7hcvHbnTgk,38646 -pip/_vendor/pyparsing/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/pyparsing/results.py,sha256=9dyqQ-w3MjfmxWbFt8KEPU6IfXeyRdoWp2Og802rUQY,26692 -pip/_vendor/pyparsing/testing.py,sha256=eJncg0p83zm1FTPvM9auNT6oavIvXaibmRFDf1qmwkY,13488 -pip/_vendor/pyparsing/unicode.py,sha256=fAPdsJiARFbkPAih6NkYry0dpj4jPqelGVMlE4wWFW8,10646 -pip/_vendor/pyparsing/util.py,sha256=vTMzTdwSDyV8d_dSgquUTdWgBFoA_W30nfxEJDsshRQ,8670 -pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491 -pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138 -pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920 -pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546 -pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc,, -pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927 -pip/_vendor/requests/__init__.py,sha256=owujob4dk45Siy4EYtbCKR6wcFph7E04a_v_OuAacBA,5169 -pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/api.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/auth.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/certs.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/compat.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/help.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/models.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/packages.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/structures.cpython-310.pyc,, -pip/_vendor/requests/__pycache__/utils.cpython-310.pyc,, -pip/_vendor/requests/__version__.py,sha256=ssI3Ezt7PaxgkOW45GhtwPUclo_SO_ygtIm4A74IOfw,435 -pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495 -pip/_vendor/requests/adapters.py,sha256=idj6cZcId3L5xNNeJ7ieOLtw3awJk5A64xUfetHwq3M,19697 -pip/_vendor/requests/api.py,sha256=q61xcXq4tmiImrvcSVLTbFyCiD2F-L_-hWKGbz4y8vg,6449 -pip/_vendor/requests/auth.py,sha256=h-HLlVx9j8rKV5hfSAycP2ApOSglTz77R0tz7qCbbEE,10187 -pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575 -pip/_vendor/requests/compat.py,sha256=IhK9quyX0RRuWTNcg6d2JGSAOUbM6mym2p_2XjLTwf4,1286 -pip/_vendor/requests/cookies.py,sha256=kD3kNEcCj-mxbtf5fJsSaT86eGoEYpD3X0CSgpzl7BM,18560 -pip/_vendor/requests/exceptions.py,sha256=FA-_kVwBZ2jhXauRctN_ewHVK25b-fj0Azyz1THQ0Kk,3823 -pip/_vendor/requests/help.py,sha256=FnAAklv8MGm_qb2UilDQgS6l0cUttiCFKUjx0zn2XNA,3879 -pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733 -pip/_vendor/requests/models.py,sha256=dDZ-iThotky-Noq9yy97cUEJhr3wnY6mv-xR_ePg_lk,35288 -pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 -pip/_vendor/requests/sessions.py,sha256=-LvTzrPtetSTrR3buxu4XhdgMrJFLB1q5D7P--L2Xhw,30373 -pip/_vendor/requests/status_codes.py,sha256=FvHmT5uH-_uimtRz5hH9VCbt7VV-Nei2J9upbej6j8g,4235 -pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912 -pip/_vendor/requests/utils.py,sha256=kOPn0qYD6xRTzaxbqTdYiSInBZHl6379AJsyIgzYGLY,33460 -pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537 -pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc,, -pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc,, -pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc,, -pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156 -pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871 -pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601 -pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511 -pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963 -pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090 -pip/_vendor/rich/__main__.py,sha256=TT8sb9PTnsnKhhrGuHkLN0jdN0dtKhtPkEr9CidDbPM,8478 -pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/abc.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/align.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/bar.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/box.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/cells.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/color.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/columns.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/console.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/containers.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/control.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/errors.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/json.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/layout.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/live.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/logging.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/markup.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/measure.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/padding.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/pager.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/palette.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/panel.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/progress.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/region.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/repr.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/rule.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/scope.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/screen.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/segment.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/status.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/style.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/styled.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/table.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/text.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/theme.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/themes.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc,, -pip/_vendor/rich/__pycache__/tree.cpython-310.pyc,, -pip/_vendor/rich/_cell_widths.py,sha256=2n4EiJi3X9sqIq0O16kUZ_zy6UYMd3xFfChlKfnW1Hc,10096 -pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235 -pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064 -pip/_vendor/rich/_export_format.py,sha256=qxgV3nKnXQu1hfbnRVswPYy-AwIg1X0LSC47cK5s8jk,2100 -pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265 -pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799 -pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695 -pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225 -pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236 -pip/_vendor/rich/_null_file.py,sha256=tGSXk_v-IZmbj1GAzHit8A3kYIQMiCpVsCFfsC-_KJ4,1387 -pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063 -pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423 -pip/_vendor/rich/_ratio.py,sha256=2lLSliL025Y-YMfdfGbutkQDevhcyDqc-DtUYW9mU70,5472 -pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919 -pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351 -pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417 -pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820 -pip/_vendor/rich/_windows.py,sha256=dvNl9TmfPzNVxiKk5WDFihErZ5796g2UC9-KGGyfXmk,1926 -pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783 -pip/_vendor/rich/_wrap.py,sha256=xfV_9t0Sg6rzimmrDru8fCVmUlalYAcHLDfrJZnbbwQ,1840 -pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890 -pip/_vendor/rich/align.py,sha256=Ji-Yokfkhnfe_xMmr4ISjZB07TJXggBCOYoYa-HDAr8,10368 -pip/_vendor/rich/ansi.py,sha256=iD6532QYqnBm6hADulKjrV8l8kFJ-9fEVooHJHH3hMg,6906 -pip/_vendor/rich/bar.py,sha256=a7UD303BccRCrEhGjfMElpv5RFYIinaAhAuqYqhUvmw,3264 -pip/_vendor/rich/box.py,sha256=FJ6nI3jD7h2XNFU138bJUt2HYmWOlRbltoCEuIAZhew,9842 -pip/_vendor/rich/cells.py,sha256=627ztJs9zOL-38HJ7kXBerR-gT8KBfYC8UzEwMJDYYo,4509 -pip/_vendor/rich/color.py,sha256=9Gh958U3f75WVdLTeC0U9nkGTn2n0wnojKpJ6jQEkIE,18224 -pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054 -pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131 -pip/_vendor/rich/console.py,sha256=pDvkbLkvtZIMIwQx_jkZ-seyNl4zGBLviXoWXte9fwg,99218 -pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288 -pip/_vendor/rich/containers.py,sha256=aKgm5UDHn5Nmui6IJaKdsZhbHClh_X7D-_Wg8Ehrr7s,5497 -pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630 -pip/_vendor/rich/default_styles.py,sha256=-Fe318kMVI_IwciK5POpThcO0-9DYJ67TZAN6DlmlmM,8082 -pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972 -pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501 -pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642 -pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683 -pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508 -pip/_vendor/rich/highlighter.py,sha256=p3C1g4QYzezFKdR7NF9EhPbzQDvdPUhGRgSyGGEmPko,9584 -pip/_vendor/rich/json.py,sha256=EYp9ucj-nDjYDkHCV6Mk1ve8nUOpuFLaW76X50Mis2M,5032 -pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252 -pip/_vendor/rich/layout.py,sha256=RFYL6HdCFsHf9WRpcvi3w-fpj-8O5dMZ8W96VdKNdbI,14007 -pip/_vendor/rich/live.py,sha256=vZzYvu7fqwlv3Gthl2xiw1Dc_O80VlGcCV0DOHwCyDM,14273 -pip/_vendor/rich/live_render.py,sha256=zElm3PrfSIvjOce28zETHMIUf9pFYSUA5o0AflgUP64,3667 -pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903 -pip/_vendor/rich/markup.py,sha256=xzF4uAafiEeEYDJYt_vUnJOGoTU8RrH-PH7WcWYXjCg,8198 -pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305 -pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970 -pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828 -pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396 -pip/_vendor/rich/panel.py,sha256=wGMe40J8KCGgQoM0LyjRErmGIkv2bsYA71RCXThD0xE,10574 -pip/_vendor/rich/pretty.py,sha256=eLEYN9xVaMNuA6EJVYm4li7HdOHxCqmVKvnOqJpyFt0,35852 -pip/_vendor/rich/progress.py,sha256=n4KF9vky8_5iYeXcyZPEvzyLplWlDvFLkM5JI0Bs08A,59706 -pip/_vendor/rich/progress_bar.py,sha256=cEoBfkc3lLwqba4XKsUpy4vSQKDh2QQ5J2J94-ACFoo,8165 -pip/_vendor/rich/prompt.py,sha256=x0mW-pIPodJM4ry6grgmmLrl8VZp99kqcmdnBe70YYA,11303 -pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391 -pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166 -pip/_vendor/rich/repr.py,sha256=9Z8otOmM-tyxnyTodvXlectP60lwahjGiDTrbrxPSTg,4431 -pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602 -pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843 -pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591 -pip/_vendor/rich/segment.py,sha256=XLnJEFvcV3bjaVzMNUJiem3n8lvvI9TJ5PTu-IG2uTg,24247 -pip/_vendor/rich/spinner.py,sha256=15koCmF0DQeD8-k28Lpt6X_zJQUlzEhgo_6A6uy47lc,4339 -pip/_vendor/rich/status.py,sha256=gJsIXIZeSo3urOyxRUjs6VrhX5CZrA0NxIQ-dxhCnwo,4425 -pip/_vendor/rich/style.py,sha256=3hiocH_4N8vwRm3-8yFWzM7tSwjjEven69XqWasSQwM,27073 -pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258 -pip/_vendor/rich/syntax.py,sha256=jgDiVCK6cpR0NmBOpZmIu-Ud4eaW7fHvjJZkDbjpcSA,35173 -pip/_vendor/rich/table.py,sha256=-WzesL-VJKsaiDU3uyczpJMHy6VCaSewBYJwx8RudI8,39684 -pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370 -pip/_vendor/rich/text.py,sha256=_8JBlSau0c2z8ENOZMi1hJ7M1ZGY408E4-hXjHyyg1A,45525 -pip/_vendor/rich/theme.py,sha256=belFJogzA0W0HysQabKaHOc3RWH2ko3fQAJhoN-AFdo,3777 -pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102 -pip/_vendor/rich/traceback.py,sha256=yCLVrCtyoFNENd9mkm2xeG3KmqkTwH9xpFOO7p2Bq0A,29604 -pip/_vendor/rich/tree.py,sha256=BMbUYNjS9uodNPfvtY_odmU09GA5QzcMbQ5cJZhllQI,9169 -pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549 -pip/_vendor/tenacity/__init__.py,sha256=3kvAL6KClq8GFo2KFhmOzskRKSDQI-ubrlfZ8AQEEI0,20493 -pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc,, -pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc,, -pip/_vendor/tenacity/_asyncio.py,sha256=Qi6wgQsGa9MQibYRy3OXqcDQswIZZ00dLOoSUGN-6o8,3551 -pip/_vendor/tenacity/_utils.py,sha256=ubs6a7sxj3JDNRKWCyCU2j5r1CB7rgyONgZzYZq6D_4,2179 -pip/_vendor/tenacity/after.py,sha256=S5NCISScPeIrKwIeXRwdJl3kV9Q4nqZfnNPDx6Hf__g,1682 -pip/_vendor/tenacity/before.py,sha256=dIZE9gmBTffisfwNkK0F1xFwGPV41u5GK70UY4Pi5Kc,1562 -pip/_vendor/tenacity/before_sleep.py,sha256=YmpgN9Y7HGlH97U24vvq_YWb5deaK4_DbiD8ZuFmy-E,2372 -pip/_vendor/tenacity/nap.py,sha256=fRWvnz1aIzbIq9Ap3gAkAZgDH6oo5zxMrU6ZOVByq0I,1383 -pip/_vendor/tenacity/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/tenacity/retry.py,sha256=jrzD_mxA5mSTUEdiYB7SHpxltjhPSYZSnSRATb-ggRc,8746 -pip/_vendor/tenacity/stop.py,sha256=YMJs7ZgZfND65PRLqlGB_agpfGXlemx_5Hm4PKnBqpQ,3086 -pip/_vendor/tenacity/tornadoweb.py,sha256=po29_F1Mt8qZpsFjX7EVwAT0ydC_NbVia9gVi7R_wXA,2142 -pip/_vendor/tenacity/wait.py,sha256=3FcBJoCDgym12_dN6xfK8C1gROY0Hn4NSI2u8xv50uE,8024 -pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396 -pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc,, -pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc,, -pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633 -pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943 -pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254 -pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26 -pip/_vendor/truststore/__init__.py,sha256=qzTLSH8PvAkY1fr6QQ2vV-KwE_M83wdXugtpJaP_AbM,403 -pip/_vendor/truststore/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/truststore/__pycache__/_api.cpython-310.pyc,, -pip/_vendor/truststore/__pycache__/_macos.cpython-310.pyc,, -pip/_vendor/truststore/__pycache__/_openssl.cpython-310.pyc,, -pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-310.pyc,, -pip/_vendor/truststore/__pycache__/_windows.cpython-310.pyc,, -pip/_vendor/truststore/_api.py,sha256=xjuEu_rlH4hcdJTROImEyOEqdw-F8t5vO2H2BToY0Ro,9893 -pip/_vendor/truststore/_macos.py,sha256=BjvAKoAjXhdIPuxpY124HJIFswDb0pq8DjynzJOVwqc,17694 -pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324 -pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130 -pip/_vendor/truststore/_windows.py,sha256=1x_EhROeJ9QK1sMAjfnZC7awYI8UnBJYL-TjACUYI4A,17468 -pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/typing_extensions.py,sha256=EWpcpyQnVmc48E9fSyPGs-vXgHcAk9tQABQIxmMsCGk,111130 -pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333 -pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc,, -pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc,, -pip/_vendor/urllib3/_collections.py,sha256=Rp1mVyBgc_UlAcp6M3at1skJBXR5J43NawRTvW2g_XY,10811 -pip/_vendor/urllib3/_version.py,sha256=azoM7M7BUADl2kBhMVR6PPf2GhBDI90me1fcnzTwdcw,64 -pip/_vendor/urllib3/connection.py,sha256=92k9td_y4PEiTIjNufCUa1NzMB3J3w0LEdyokYgXnW8,20300 -pip/_vendor/urllib3/connectionpool.py,sha256=ItVDasDnPRPP9R8bNxY7tPBlC724nJ9nlxVgXG_SLbI,39990 -pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957 -pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc,, -pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632 -pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 -pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036 -pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528 -pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081 -pip/_vendor/urllib3/contrib/securetransport.py,sha256=yhZdmVjY6PI6EeFbp7qYOp6-vp1Rkv2NMuOGaEj7pmc,34448 -pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097 -pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217 -pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579 -pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440 -pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc,, -pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 -pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343 -pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665 -pip/_vendor/urllib3/poolmanager.py,sha256=0i8cJgrqupza67IBPZ_u9jXvnSxr5UBlVEiUqdkPtYI,19752 -pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691 -pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641 -pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 -pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc,, -pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc,, -pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901 -pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605 -pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498 -pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997 -pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 -pip/_vendor/urllib3/util/retry.py,sha256=Z6WEf518eTOXP5jr5QSQ9gqJI0DVYt3Xs3EKnYaTmus,22013 -pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177 -pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758 -pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895 -pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168 -pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296 -pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403 -pip/_vendor/vendor.txt,sha256=4NKk7fQhVsZw0U-0zmm9Q2LgGyaPXacFbnJAaS0Q6EY,493 -pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579 -pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc,, -pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc,, -pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 -pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 -pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563 -pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307 -pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286 diff --git a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/REQUESTED b/venv/lib/python3.10/site-packages/pip-24.0.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/WHEEL b/venv/lib/python3.10/site-packages/pip-24.0.dist-info/WHEEL deleted file mode 100644 index 98c0d20..0000000 --- a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.42.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/entry_points.txt b/venv/lib/python3.10/site-packages/pip-24.0.dist-info/entry_points.txt deleted file mode 100644 index 5367846..0000000 --- a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/entry_points.txt +++ /dev/null @@ -1,4 +0,0 @@ -[console_scripts] -pip = pip._internal.cli.main:main -pip3 = pip._internal.cli.main:main -pip3.10 = pip._internal.cli.main:main diff --git a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/top_level.txt b/venv/lib/python3.10/site-packages/pip-24.0.dist-info/top_level.txt deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.10/site-packages/pip-24.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.10/site-packages/pip/__init__.py b/venv/lib/python3.10/site-packages/pip/__init__.py deleted file mode 100644 index be0e3ed..0000000 --- a/venv/lib/python3.10/site-packages/pip/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from typing import List, Optional - -__version__ = "24.0" - - -def main(args: Optional[List[str]] = None) -> int: - """This is an internal API only meant for use by pip's own console scripts. - - For additional details, see https://github.com/pypa/pip/issues/7498. - """ - from pip._internal.utils.entrypoints import _wrapper - - return _wrapper(args) diff --git a/venv/lib/python3.10/site-packages/pip/__main__.py b/venv/lib/python3.10/site-packages/pip/__main__.py deleted file mode 100644 index 5991326..0000000 --- a/venv/lib/python3.10/site-packages/pip/__main__.py +++ /dev/null @@ -1,24 +0,0 @@ -import os -import sys - -# Remove '' and current working directory from the first entry -# of sys.path, if present to avoid using current directory -# in pip commands check, freeze, install, list and show, -# when invoked as python -m pip -if sys.path[0] in ("", os.getcwd()): - sys.path.pop(0) - -# If we are running from a wheel, add the wheel to sys.path -# This allows the usage python pip-*.whl/pip install pip-*.whl -if __package__ == "": - # __file__ is pip-*.whl/pip/__main__.py - # first dirname call strips of '/__main__.py', second strips off '/pip' - # Resulting path is the name of the wheel itself - # Add that to sys.path so we can import pip - path = os.path.dirname(os.path.dirname(__file__)) - sys.path.insert(0, path) - -if __name__ == "__main__": - from pip._internal.cli.main import main as _main - - sys.exit(_main()) diff --git a/venv/lib/python3.10/site-packages/pip/__pip-runner__.py b/venv/lib/python3.10/site-packages/pip/__pip-runner__.py deleted file mode 100644 index 49a148a..0000000 --- a/venv/lib/python3.10/site-packages/pip/__pip-runner__.py +++ /dev/null @@ -1,50 +0,0 @@ -"""Execute exactly this copy of pip, within a different environment. - -This file is named as it is, to ensure that this module can't be imported via -an import statement. -""" - -# /!\ This version compatibility check section must be Python 2 compatible. /!\ - -import sys - -# Copied from setup.py -PYTHON_REQUIRES = (3, 7) - - -def version_str(version): # type: ignore - return ".".join(str(v) for v in version) - - -if sys.version_info[:2] < PYTHON_REQUIRES: - raise SystemExit( - "This version of pip does not support python {} (requires >={}).".format( - version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES) - ) - ) - -# From here on, we can use Python 3 features, but the syntax must remain -# Python 2 compatible. - -import runpy # noqa: E402 -from importlib.machinery import PathFinder # noqa: E402 -from os.path import dirname # noqa: E402 - -PIP_SOURCES_ROOT = dirname(dirname(__file__)) - - -class PipImportRedirectingFinder: - @classmethod - def find_spec(self, fullname, path=None, target=None): # type: ignore - if fullname != "pip": - return None - - spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target) - assert spec, (PIP_SOURCES_ROOT, fullname) - return spec - - -sys.meta_path.insert(0, PipImportRedirectingFinder()) - -assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module" -runpy.run_module("pip", run_name="__main__", alter_sys=True) diff --git a/venv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 56d147903aa271b10570e93831095d8a202413a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmYjP&59H;5Kg*#W_w2$Jb2lYxygXrS#`lxL=-^~WEFodb7?Z2nwhZONl2w<>192+ z@8C1|N`3X@D|oUpqHK|>R6^DFefe<*2Qx-?%|EUh&e+eixM>qwyd=jH3Yux&vW_o! zmn|~RbhgNKsSC(}LvhFsnV!I8Rp_bSyPhnjI{(Dx`@g7@&9kw1XE2WCdmoLns=X{8 zom9tXW1+$t$7z7r2b(nfw~VsnugUQ)1a{Qh}kP|#3T7#krF zx_I^Bt#Gy-LiCBn>aBs-ky|MNFQR(&*ppM zG!6+nq(=xjh4EHhZy_K(U|o+n#xUljde^d(c_Zwn`to__bl<{@bQPF*?yw>g`5)kX BrRV?v diff --git a/venv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index d9d874ec3ec8119f04d861e9967670da86c131fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmYk1O>WyT5QS$b$x$6U2#UafkKl#H7Tt7F1UW$#3EG7>ges10*7_kt#);SQL9Au2 z#BEl&LV*GuIWABFeB^w5m^W<3<00_c3Ncc-= zn1U7rhp2<4*g`w)=^@t8Ap#{@Y($$8FdLlotiui$;^<2?kmv+EKj?^^H=Gfd!|Hr7 zVupt?jh>I4G~RRiJkT3~_&(T?Em%5V@TTvCaKD3|8ceM;#*D z*l@0t&5KRGBBjEaHf^0()OT5$vPT0`J8FGT`WGe>Yiy=W?TNi*R+J{|bK00E2+1)$ z#PnqR3$!1Z9p(3Txo#?ws|QoGO+nrpx%uj(E85(edNsF=c5+MgR+i?cv^&3U>Mz;n xPtqAr^V5hk+zerc;TUxl}dr`Lt2t95`&QC9XqMp$;{Mt zO4CgxAmx$&&`Jo2zratKSDyM8cv+5TvP&1V9-U)*eEgle)5XO)f^m&|gWnbq`pa(a zk1A}Q0O>!0aTFqsIf-$Ixf2rZ@`Y;@Is%`#obbvoAj07cH`=o~-gE-sH=?^{WG@q>tJwm%r~_h-hqtFD_VQ;)!pLrS_vV zoA~L#&t&$<|3SjP#AiO2gMm;YF}_I7rAm_#tb=;}$X*%9Sokm}Y$UkPv@Z>8ANeK) zX+2f~keMmrM=2kJbi|SmjsG03jj~i3xOOgCoh9?VuMIPz)Nu!KM%^~Kb6~!+;g7KW zH6M2E0__6nbzmIdfQQ_Fh+JxKhYf>DVE7(xS6F~ zcg`VVomf8aWD|3oCLafnw>nxHv6->xlnsUMK&U&E0^d~QBoT_zAe-d1?V(7-MW%LI z)Yk)Bfw?-DEQ~E#4N&sNJ%nY8ZDX;H z)gnxHc76F-k=MD{yc&F-3dnJ4d_B%=()`jP|HYO6krHQPso;F)(-&9m0F>7cnK}MK zCR`|M3YW^3M+E3^4C~etApHQCK+r}gB*KA4vMIF1?sA*Jh5W&x%=U|F=?Op+k%17G z3c8Vnc{QMGk)@&{wqP-Z-a2(u#b(o>8$88^4Dr;tb*|j0t2dq^L#B98bm7zmWu%)s zkdC&aYL|_Yl$LD;>n5dVV^$af zyG9fU6$C?LxKALD^=U_ z3@Rhpw9 int: - """This is preserved for old console scripts that may still be referencing - it. - - For additional details, see https://github.com/pypa/pip/issues/7498. - """ - from pip._internal.utils.entrypoints import _wrapper - - return _wrapper(args) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 571746a66751ee8712197c679c93420dbcd4b0a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 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 gj|c?4DV?Qw1Reu{`K)Bpeg diff --git a/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc deleted file mode 100644 index 64c022e671d3c549e4ff240f0b8b413545bf4d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9047 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc deleted file mode 100644 index f769f4797bd2a66c4a471c3ef097498dd3257771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11650 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 B%V_`r diff --git a/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index ec86aaf4f2e824bd4d1b58b2150f1e30907742f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25470 zcma)kdvF}bncwd0>;sDjLGUS2lt$Exkcg$;mMKvN2!bLda!Kch_FDbAf?XXnp;F_HLlX1afTJBiCX zo=PN~L@D7U9ix^kCFQ?SGUR`%l#>5u$&~-;Qd<6JN*Vc|EoJdPRm;@}N(1$LDPJEf z4JKKaSsSVkmxk*jrIGrU(w6#YX|%qzw6#7~8k6_w+P3=k()Rj}(hkXIYCG$@O1tX2 zOS|j$mF|;g+1mZ}J*7QzpQ}Ak-&@+7Ot`~p8TAj;9;`o9dPv^o(Uw)RBS$g8UpX}2bCQ1<`RAP%kbgn)uOR=T^BLqnBl*L~zvO%t`OixIuOffQc^UbaCI30( zUvUm2e^~O9$iM1*4*AbXehT?XXA1c#w}2;R=?I=2ai;NP+C3sqrt##cGlM5H^374? zk2$X)|C;1ykU#F6K>ma~gE2XV{Oise$iE@^*N{KyoI?JTz=F=a4@q^}m7qdFKN17u) zGc)Ds<1^E5oG88)m`AIXR**XZ@at1QQe0SFM zmNAwtn#oS%rde}?k?=-;=LJJ&0hg;#v|VeBCxeXZRqSOKcjkHb9X?5ykK5iNZn7t< zY`lis(Id9!9t8lZI@jie;n~=UhS$RAu=%QT>u#eJBt3Sh)mDv4l06Q8yf<-8kS$7XEw5t`>thlXK_2A`~yn|jv*~`F!iRGr_9lYu`t{$va=MF9dH=2#-3eP-! z&_k~#!rAi<0!a?WNOI7P5wftn5{#6qUiq>+XU~-@=>MZ=_9FwyXi`0Ze?hhq4svE$ zx%1U`f=m@-+h|o-h(G>MYk!ZH=d8oYjLUq#j~o zvAEd+ddSf0WDg&1E9;(@x#lp8?EQYckV(#GGs(O$YUGpV-4Vn5xq1?BD!6)n#EnT@ z9}zFy1ej`q3>D0jL?RXB&QzCYlxiw}+xbP;n!`j`m^91fvqJF$Gsu<84ZH4^%R#UwB97(~xuiT<2PsF5Kko-fB1kWQ zftOOQ>82gym4uVR{Ky>ris@vWtYf$t*95c7xmlFS3F92Vvp9!$`8D~$HTj{ij$y}~ zAN_h_KIx1&TizQf4S*e+^M*6(Yz5oRgBcHk84uy<@O&m@#v@GulOjE#C^ zqOAoN5ZP9{Q3bKHu-sgrZv~{ht4zgiSa!_=TWC~jZO4_`Y{#h*Zo6g?L?H12)B^_5 zBI!QZRLFs1yVk^nb#1YV25kil(}MucK+I-`HE8Hz2v7(m+Cl{+1fY%>Hp^?R)X28t zfdQMb9ebHvMwki*PxlFYZW*kOUyyH+XL-wj?41desk;+%?P?9QdbS{y1p{%fgS1po z95(~=GFF{>9vB%6up3y;^;Te_!prJKJoWd4RQ%#T`DWh%Yu`0nHPGO`OF=g5g^)6i zO)$WbkxJBO@VR=4$u1-@LC+$S!^Qt8T;5lZfNUk&2{lUM=76|)!>=bC<3{ppAo5Ge z>qZNN?MBkuji)Jjis$9jDhOXWxtc<1u9`^Gs~M!3)il!VY8Gj(HE<(wEAQa#(%{k% zBnrG+O5%U!X8Lv#vMUK;wkSj3@6`hv50voYW!1b|bzJ9R|Bus+^#xF#Ef<*q| zJIPmkd8mKza%&FrEuc&#letYB+6ObxAexsDF@DQ+(f{QqrQVRb${3iZ$@YDE@Xg7H`LT-sYsPTe>c18_MS> z)38l0U0J@{i|PdoXpmB_6J%Cg3NCk&7yXPi*Q`00{K1O{FCDTj>P!lmAkpS5T>6*4 zjEvPLIlAF0U;4RApv&^jAYNTWdtn{EVOjpJi*+y_ z@G;#k=_$${vH*zu{OuPjD_}AL2+=ltdlJ<4kTpKgS=B+__A1qCx!I_#XhK2ZN3Zo> zk}+;-R2FgT7zzcMO0x!zxE8rbf!ttEW%3$G_T{pN!rm+riO{3p3=9;73e+>UReFZd?+Nj{^$4|5RU#**gG{YUzelwN4YM}@$t zg8)c9&Ey#*L5kw#mU7u{U^Io{lN1i{eVz%0DmBSuh6(AB8ey`9$tfhka7aQczzcla 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

    @56 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 H+IsaLZ1@2N diff --git a/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc deleted file mode 100644 index 6f22e81fedd00c67c060cfaca606a7ab6f9882ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6946 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 t`_449Z_R@CXUu$zAoWk$>A|R}XQLWMP1AmS Union[Tuple[str], Tuple[str, str]]: - return (a, b) if a != b else (a,) - - -class _Prefix: - def __init__(self, path: str) -> None: - self.path = path - self.setup = False - scheme = get_scheme("", prefix=path) - self.bin_dir = scheme.scripts - self.lib_dirs = _dedup(scheme.purelib, scheme.platlib) - - -def get_runnable_pip() -> str: - """Get a file to pass to a Python executable, to run the currently-running pip. - - This is used to run a pip subprocess, for installing requirements into the build - environment. - """ - source = pathlib.Path(pip_location).resolve().parent - - if not source.is_dir(): - # This would happen if someone is using pip from inside a zip file. In that - # case, we can use that directly. - return str(source) - - return os.fsdecode(source / "__pip-runner__.py") - - -def _get_system_sitepackages() -> Set[str]: - """Get system site packages - - Usually from site.getsitepackages, - but fallback on `get_purelib()/get_platlib()` if unavailable - (e.g. in a virtualenv created by virtualenv<20) - - Returns normalized set of strings. - """ - if hasattr(site, "getsitepackages"): - system_sites = site.getsitepackages() - else: - # virtualenv < 20 overwrites site.py without getsitepackages - # fallback on get_purelib/get_platlib. - # this is known to miss things, but shouldn't in the cases - # where getsitepackages() has been removed (inside a virtualenv) - system_sites = [get_purelib(), get_platlib()] - return {os.path.normcase(path) for path in system_sites} - - -class BuildEnvironment: - """Creates and manages an isolated environment to install build deps""" - - def __init__(self) -> None: - temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True) - - self._prefixes = OrderedDict( - (name, _Prefix(os.path.join(temp_dir.path, name))) - for name in ("normal", "overlay") - ) - - self._bin_dirs: List[str] = [] - self._lib_dirs: List[str] = [] - for prefix in reversed(list(self._prefixes.values())): - self._bin_dirs.append(prefix.bin_dir) - self._lib_dirs.extend(prefix.lib_dirs) - - # Customize site to: - # - ensure .pth files are honored - # - prevent access to system site packages - system_sites = _get_system_sitepackages() - - self._site_dir = os.path.join(temp_dir.path, "site") - if not os.path.exists(self._site_dir): - os.mkdir(self._site_dir) - with open( - os.path.join(self._site_dir, "sitecustomize.py"), "w", encoding="utf-8" - ) as fp: - fp.write( - textwrap.dedent( - """ - import os, site, sys - - # First, drop system-sites related paths. - original_sys_path = sys.path[:] - known_paths = set() - for path in {system_sites!r}: - site.addsitedir(path, known_paths=known_paths) - system_paths = set( - os.path.normcase(path) - for path in sys.path[len(original_sys_path):] - ) - original_sys_path = [ - path for path in original_sys_path - if os.path.normcase(path) not in system_paths - ] - sys.path = original_sys_path - - # Second, add lib directories. - # ensuring .pth file are processed. - for path in {lib_dirs!r}: - assert not path in sys.path - site.addsitedir(path) - """ - ).format(system_sites=system_sites, lib_dirs=self._lib_dirs) - ) - - def __enter__(self) -> None: - self._save_env = { - name: os.environ.get(name, None) - for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH") - } - - path = self._bin_dirs[:] - old_path = self._save_env["PATH"] - if old_path: - path.extend(old_path.split(os.pathsep)) - - pythonpath = [self._site_dir] - - os.environ.update( - { - "PATH": os.pathsep.join(path), - "PYTHONNOUSERSITE": "1", - "PYTHONPATH": os.pathsep.join(pythonpath), - } - ) - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - for varname, old_value in self._save_env.items(): - if old_value is None: - os.environ.pop(varname, None) - else: - os.environ[varname] = old_value - - def check_requirements( - self, reqs: Iterable[str] - ) -> Tuple[Set[Tuple[str, str]], Set[str]]: - """Return 2 sets: - - conflicting requirements: set of (installed, wanted) reqs tuples - - missing requirements: set of reqs - """ - missing = set() - conflicting = set() - if reqs: - env = ( - get_environment(self._lib_dirs) - if hasattr(self, "_lib_dirs") - else get_default_environment() - ) - for req_str in reqs: - req = Requirement(req_str) - # We're explicitly evaluating with an empty extra value, since build - # environments are not provided any mechanism to select specific extras. - if req.marker is not None and not req.marker.evaluate({"extra": ""}): - continue - dist = env.get_distribution(req.name) - if not dist: - missing.add(req_str) - continue - if isinstance(dist.version, Version): - installed_req_str = f"{req.name}=={dist.version}" - else: - installed_req_str = f"{req.name}==={dist.version}" - if not req.specifier.contains(dist.version, prereleases=True): - conflicting.add((installed_req_str, req_str)) - # FIXME: Consider direct URL? - return conflicting, missing - - def install_requirements( - self, - finder: "PackageFinder", - requirements: Iterable[str], - prefix_as_string: str, - *, - kind: str, - ) -> None: - prefix = self._prefixes[prefix_as_string] - assert not prefix.setup - prefix.setup = True - if not requirements: - return - self._install_requirements( - get_runnable_pip(), - finder, - requirements, - prefix, - kind=kind, - ) - - @staticmethod - def _install_requirements( - pip_runnable: str, - finder: "PackageFinder", - requirements: Iterable[str], - prefix: _Prefix, - *, - kind: str, - ) -> None: - args: List[str] = [ - sys.executable, - pip_runnable, - "install", - "--ignore-installed", - "--no-user", - "--prefix", - prefix.path, - "--no-warn-script-location", - ] - if logger.getEffectiveLevel() <= logging.DEBUG: - args.append("-v") - for format_control in ("no_binary", "only_binary"): - formats = getattr(finder.format_control, format_control) - args.extend( - ( - "--" + format_control.replace("_", "-"), - ",".join(sorted(formats or {":none:"})), - ) - ) - - index_urls = finder.index_urls - if index_urls: - args.extend(["-i", index_urls[0]]) - for extra_index in index_urls[1:]: - args.extend(["--extra-index-url", extra_index]) - else: - args.append("--no-index") - for link in finder.find_links: - args.extend(["--find-links", link]) - - for host in finder.trusted_hosts: - args.extend(["--trusted-host", host]) - if finder.allow_all_prereleases: - args.append("--pre") - if finder.prefer_binary: - args.append("--prefer-binary") - args.append("--") - args.extend(requirements) - extra_environ = {"_PIP_STANDALONE_CERT": where()} - with open_spinner(f"Installing {kind}") as spinner: - call_subprocess( - args, - command_desc=f"pip subprocess to install {kind}", - spinner=spinner, - extra_environ=extra_environ, - ) - - -class NoOpBuildEnvironment(BuildEnvironment): - """A no-op drop-in replacement for BuildEnvironment""" - - def __init__(self) -> None: - pass - - def __enter__(self) -> None: - pass - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - pass - - def cleanup(self) -> None: - pass - - def install_requirements( - self, - finder: "PackageFinder", - requirements: Iterable[str], - prefix_as_string: str, - *, - kind: str, - ) -> None: - raise NotImplementedError() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cache.py b/venv/lib/python3.10/site-packages/pip/_internal/cache.py deleted file mode 100644 index f45ac23..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cache.py +++ /dev/null @@ -1,290 +0,0 @@ -"""Cache Management -""" - -import hashlib -import json -import logging -import os -from pathlib import Path -from typing import Any, Dict, List, Optional - -from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.exceptions import InvalidWheelFilename -from pip._internal.models.direct_url import DirectUrl -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds -from pip._internal.utils.urls import path_to_url - -logger = logging.getLogger(__name__) - -ORIGIN_JSON_NAME = "origin.json" - - -def _hash_dict(d: Dict[str, str]) -> str: - """Return a stable sha224 of a dictionary.""" - s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True) - return hashlib.sha224(s.encode("ascii")).hexdigest() - - -class Cache: - """An abstract class - provides cache directories for data from links - - :param cache_dir: The root of the cache. - """ - - def __init__(self, cache_dir: str) -> None: - super().__init__() - assert not cache_dir or os.path.isabs(cache_dir) - self.cache_dir = cache_dir or None - - def _get_cache_path_parts(self, link: Link) -> List[str]: - """Get parts of part that must be os.path.joined with cache_dir""" - - # We want to generate an url to use as our cache key, we don't want to - # just re-use the URL because it might have other items in the fragment - # and we don't care about those. - key_parts = {"url": link.url_without_fragment} - if link.hash_name is not None and link.hash is not None: - key_parts[link.hash_name] = link.hash - if link.subdirectory_fragment: - key_parts["subdirectory"] = link.subdirectory_fragment - - # Include interpreter name, major and minor version in cache key - # to cope with ill-behaved sdists that build a different wheel - # depending on the python version their setup.py is being run on, - # and don't encode the difference in compatibility tags. - # https://github.com/pypa/pip/issues/7296 - key_parts["interpreter_name"] = interpreter_name() - key_parts["interpreter_version"] = interpreter_version() - - # Encode our key url with sha224, we'll use this because it has similar - # security properties to sha256, but with a shorter total output (and - # thus less secure). However the differences don't make a lot of - # difference for our use case here. - hashed = _hash_dict(key_parts) - - # We want to nest the directories some to prevent having a ton of top - # level directories where we might run out of sub directories on some - # FS. - parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] - - return parts - - def _get_candidates(self, link: Link, canonical_package_name: str) -> List[Any]: - can_not_cache = not self.cache_dir or not canonical_package_name or not link - if can_not_cache: - return [] - - path = self.get_path_for_link(link) - if os.path.isdir(path): - return [(candidate, path) for candidate in os.listdir(path)] - return [] - - def get_path_for_link(self, link: Link) -> str: - """Return a directory to store cached items in for link.""" - raise NotImplementedError() - - def get( - self, - link: Link, - package_name: Optional[str], - supported_tags: List[Tag], - ) -> Link: - """Returns a link to a cached item if it exists, otherwise returns the - passed link. - """ - raise NotImplementedError() - - -class SimpleWheelCache(Cache): - """A cache of wheels for future installs.""" - - def __init__(self, cache_dir: str) -> None: - super().__init__(cache_dir) - - def get_path_for_link(self, link: Link) -> str: - """Return a directory to store cached wheels for link - - Because there are M wheels for any one sdist, we provide a directory - to cache them in, and then consult that directory when looking up - cache hits. - - We only insert things into the cache if they have plausible version - numbers, so that we don't contaminate the cache with things that were - not unique. E.g. ./package might have dozens of installs done for it - and build a version of 0.0...and if we built and cached a wheel, we'd - end up using the same wheel even if the source has been edited. - - :param link: The link of the sdist for which this will cache wheels. - """ - parts = self._get_cache_path_parts(link) - assert self.cache_dir - # Store wheels within the root cache_dir - return os.path.join(self.cache_dir, "wheels", *parts) - - def get( - self, - link: Link, - package_name: Optional[str], - supported_tags: List[Tag], - ) -> Link: - candidates = [] - - if not package_name: - return link - - canonical_package_name = canonicalize_name(package_name) - for wheel_name, wheel_dir in self._get_candidates(link, canonical_package_name): - try: - wheel = Wheel(wheel_name) - except InvalidWheelFilename: - continue - if canonicalize_name(wheel.name) != canonical_package_name: - logger.debug( - "Ignoring cached wheel %s for %s as it " - "does not match the expected distribution name %s.", - wheel_name, - link, - package_name, - ) - continue - if not wheel.supported(supported_tags): - # Built for a different python/arch/etc - continue - candidates.append( - ( - wheel.support_index_min(supported_tags), - wheel_name, - wheel_dir, - ) - ) - - if not candidates: - return link - - _, wheel_name, wheel_dir = min(candidates) - return Link(path_to_url(os.path.join(wheel_dir, wheel_name))) - - -class EphemWheelCache(SimpleWheelCache): - """A SimpleWheelCache that creates it's own temporary cache directory""" - - def __init__(self) -> None: - self._temp_dir = TempDirectory( - kind=tempdir_kinds.EPHEM_WHEEL_CACHE, - globally_managed=True, - ) - - super().__init__(self._temp_dir.path) - - -class CacheEntry: - def __init__( - self, - link: Link, - persistent: bool, - ): - self.link = link - self.persistent = persistent - self.origin: Optional[DirectUrl] = None - origin_direct_url_path = Path(self.link.file_path).parent / ORIGIN_JSON_NAME - if origin_direct_url_path.exists(): - try: - self.origin = DirectUrl.from_json( - origin_direct_url_path.read_text(encoding="utf-8") - ) - except Exception as e: - logger.warning( - "Ignoring invalid cache entry origin file %s for %s (%s)", - origin_direct_url_path, - link.filename, - e, - ) - - -class WheelCache(Cache): - """Wraps EphemWheelCache and SimpleWheelCache into a single Cache - - This Cache allows for gracefully degradation, using the ephem wheel cache - when a certain link is not found in the simple wheel cache first. - """ - - def __init__(self, cache_dir: str) -> None: - super().__init__(cache_dir) - self._wheel_cache = SimpleWheelCache(cache_dir) - self._ephem_cache = EphemWheelCache() - - def get_path_for_link(self, link: Link) -> str: - return self._wheel_cache.get_path_for_link(link) - - def get_ephem_path_for_link(self, link: Link) -> str: - return self._ephem_cache.get_path_for_link(link) - - def get( - self, - link: Link, - package_name: Optional[str], - supported_tags: List[Tag], - ) -> Link: - cache_entry = self.get_cache_entry(link, package_name, supported_tags) - if cache_entry is None: - return link - return cache_entry.link - - def get_cache_entry( - self, - link: Link, - package_name: Optional[str], - supported_tags: List[Tag], - ) -> Optional[CacheEntry]: - """Returns a CacheEntry with a link to a cached item if it exists or - None. The cache entry indicates if the item was found in the persistent - or ephemeral cache. - """ - retval = self._wheel_cache.get( - link=link, - package_name=package_name, - supported_tags=supported_tags, - ) - if retval is not link: - return CacheEntry(retval, persistent=True) - - retval = self._ephem_cache.get( - link=link, - package_name=package_name, - supported_tags=supported_tags, - ) - if retval is not link: - return CacheEntry(retval, persistent=False) - - return None - - @staticmethod - def record_download_origin(cache_dir: str, download_info: DirectUrl) -> None: - origin_path = Path(cache_dir) / ORIGIN_JSON_NAME - if origin_path.exists(): - try: - origin = DirectUrl.from_json(origin_path.read_text(encoding="utf-8")) - except Exception as e: - logger.warning( - "Could not read origin file %s in cache entry (%s). " - "Will attempt to overwrite it.", - origin_path, - e, - ) - else: - # TODO: use DirectUrl.equivalent when - # https://github.com/pypa/pip/pull/10564 is merged. - if origin.url != download_info.url: - logger.warning( - "Origin URL %s in cache entry %s does not match download URL " - "%s. This is likely a pip bug or a cache corruption issue. " - "Will overwrite it with the new value.", - origin.url, - cache_dir, - download_info.url, - ) - origin_path.write_text(download_info.to_json(), encoding="utf-8") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py deleted file mode 100644 index e589bb9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Subpackage containing all of pip's command line interface related code -""" - -# This file intentionally does not import submodules diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 799dfac6c8849fe747430bd61807b7dd63467fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmYk1u}%Xq42E-EdaBfS$X0b|4Ps$Hh>eYbZY)un_^wuSag^jLmANm&D|O{9nDA8$ z{E}_`_VE4Y<#M4!m*%~@$o!tne>GxWq)IEzs}JRyom$U6Uw7j^S$DKOYR9o!iWGZo zL(tsmL}^uIKMXc{9VnuvSTT3jq0Sg=MK5QMi??-iog3rX8S|y`OenYZ%`(AT^$WWWP;3AI diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc deleted file mode 100644 index 8b6a37efcb8ccf52eed7d38675d007d30a996962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5411 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 QiV5%@;y&Dd@y67D0dR^^CjbBd diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc deleted file mode 100644 index 77d59665643d4232841edcfdb1354d1ba76389ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6492 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 Os;E(mEU#!xoBs!_Hq@*D diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc deleted file mode 100644 index f973355430cafb83936bfa2240bb07e657303e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23512 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc deleted file mode 100644 index 1a00c5ccf00bf2323ef3b9be0b1cc39e92071b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1315 zcmZux%Z}7W6unh`wC(9`CNN1rK`5~Ef^iTV7AT4`3MfeQf*BFvO~tsX2ZLW!xrdn% zizGb~t0=z!OMa=gS@8=Iiq)8I+dHcm6v*zpZW}xFCFPh?@ykN?t=8?=mg|w$P{VYRaR&FO2>|!?hKaugT;n-RjqW^HQJ8$j#~9F)0T_9 zy_nfBZw@kDWObL5=k-Ck(=hiC6r@Z-%H_r@m@~@pWSlz6l}vfky99II=jtw5>dQcl zRB#EaRl(eqp^Q%4G<*dvq!HFIwikAq3bU1~G>gNZYwK&(Ep$E0Ss!%(nsdC7TQHXq zI#|MM_6CqW_7Vi|oF(AXm4Kf4>`v@i&n#M{Z6HKZ7o8Ax6DOj|5KfuW&Z*JfCE-^)?uD94AY>G+RqD?T3PU$);le{dFeBfY}({_8L$Cy??mHG$~^Vygk zUp|AY?Nw>9Gn;)*7`dQsnqLuqM|z%u_V2+Ttfvf)uc3wgwLt=Wh(!K^PZzJH!=Rqt z0Q1cY#?a2-(eRZc!MJ9ZR(_lhvloCV?A?jEo?t9JB{)ZL;UjF}%#PRTr=^C>{I`hv zoU;J0EB{6g|L44O{Owr&|tnop!$tR^;6xi`AhbO zp;*`~cK*xSP82m~)eS6Y6Sr#G|4A+SYqVX&+t2}t*q9$*JuBr;{n3wN7H^O)>#S0! z%Sec-k&BY%VsN{P(u!aP< K30p|bdFKOfnK6g} diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc deleted file mode 100644 index c53822e9061788325f3f85a51ec351921cfd80ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1509 zcmZWpOKTiQ5bo}I?o;cPEK5loHUtyapdFiBLI@$j@xdTuqZ~wrz%ZU}tw!p3(A_I} zmt7OEbM!9=fmLq#OMT7B_nZQGRQCu)PG;zOb#>J@Rb5l{dTj*HYkYW&Itcw{l$(zS z%2%-DFF+`Y5yg~n9AnE#Oe}X|$8tAzE%#y%xWoM-h=U@GLu}5uyj8U0wv|2JDY|jj z%0BNE{kU)CfNvCocwps_-ztXj5Fdaq7}WC>V`w4`9@XM&~brX_rq*N=s$1nhPws|9OPYBv>AseQrJOq3Zm zNv|FsxT*RhSn_uuOQ`G&iH<_2rmpBmvWr$okyD2fbZyb!2xArd)@Zc5DMX16h zdWF9yE4(5{sQko5sx^Ot(F%MQ??bHixJ|XM68-&0$=Cb)+OrqT zc$m=IqwM)?D$F&~Zjt8Y*cUCMgjqq8GA&pm*$e2f7n#OP2UnN)S0u*Z`$rO;R0WHs zvpf@3W@;6keI_HBiL{0a?9~;O(K##6Bc4Bx>bW|p%1b#B; z7%L`Vf})J)kpVQR=i+0?GJz!x32`60zK{LCL(eCK3_u^k+Q#7zp3IICs9%y1{$dWFK zTq@fjefR%v27hAbUfBNW?f>{RKLgp+f9KszC^oad6KUHXZ@#-dQ#qH-y=hIE+Hd+9 zCbnttkslf8j#NTBP*Yn5+pQbqzHte^Xy)KcGePnLATA0?h?{qSyQGVow@pSL{sWl( Br;Gpq diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc deleted file mode 100644 index 8eea5277c7c178d33d0052c9e04dedf4aa8c0372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2998 zcmZuz&2JpH6(>2fv$L}wT76iy?4+H#soO1TZJZohw2F~dwi^S1ELbrDOe+jVOYUl< z`3lLAt;K8+R4&j<4?Pmj~*hxBRH|VClpl9aIWGU?j{d754Hgh*wNmqkaGj1ho>9ycmx*n{< z+@tLY39i!)>y8QSQtzc5+@L+S0UU>IY@o4CmuMfjH|a8KXb!A2*+xAc6C<%g+aPg^ zl07t7oqq6ZU&PrYVSbTBBj%5D?vL_JNM4R4Ecj7IefFZrwUjRpnV&{+<`)qcjC)^# zYtYWXQufEOkji~h$T-iUL^VDsi-ZlZ>Q9&qd6{L=LBhf!E`aBaQkok{F(7JXJI}`P zq~5w~^s2X?6*SVvKVajiOr-dTCB>thr;(J5!=~;iPgA&>2x&Z$YE7Ra;xtYo9$qfN zNuBLl>>=m5-nOLW;1b~p;{tA~T*Kh`M6HZCizExRd0}my>YDeZLgjEKOP-Ci(U(69 z20Bx=;SmWCY4SwkGej*(fZBg)%ut2q);YpR+Gj8h8`7CKrE}y~=$yYk zSoNqg!L&);mq@nfopba6o#E?fMrdo^t;jjZhrJ3x{JiPCZF6m5;#A*Hycs4FRIvKT z!r%V*@${zmqXI1Uw-%1N@BeNQjr~W;nI!o^lnffGQHp57)KWxgcnIzfYa!Kw6shB& z>?}%|vbDBP6dGYL|MI8((tu|V9&sDU1nl1L{vNEIkqT4v%BHv?N9Yy$!ul)uOlKoe z_wG={lHDz$(J>e)hTxqc=!N8h>>ZAh zcz7ibHj7i`Z6%Q5aD(FhK%3+Oagam$7tY1>&UbTXb1TV5Q6lcc;BuqF-e8IAY~gx4 z?*dU9G!~{d%;}KRb)0hmy#&0>QPR#>+MNo}TuAtioerN-Tm2 zw$0=G$8EZ#XL;DMJj)^OR~_3Xpw+ni|K^6NnO#sO(Gi{#s0GaLn6YKX?@;^z?XS+T z;n@{}8X+^XkcK+oKd1dPEdDci1s2FEQk=fw33V%`ER*s0G^};j=~F-rGX9?S z&>E1A-NCNa!$2{)upRrqwq;h8twa1Rx9D`xkYwEQ0*XnZGX%{6&!OPYF_aFOSx_>B z?^7(TBl`sNec8~QGd!~^o1zl&A4-Q3&4a=M{vUB=%jOxHkXfT@%yq-jZN}33Dc*wi zG;^k&Y|Xu@agJxrs(I9&IiI3z!$z`o)R6!+r=Mapb1?!r2O5<93Q?zWLBFl_Q&{_h z`y4+=s#mbrDS>Wph1(L!`;Wb;nQb3JCApM8$R9%_n!S` z_vw@EhkJX|cee8~p?;Q2Ul+M#{;tU?-;{8j0lvcbxNeBk8;_zmVbqto4>;&Ur}4{- zGVV{wFMVa}*7~IpTrRWYEPtK>{u*raZ@^y2h2asOFv~%CjHw}%fIUnZkbY4 zUJX&EU+8q@cY&xTG`yJSnMpO?)_mQJb(%|-QRRv90J`>w385^wmGTzQmQ(2Xd*3V? z+*Hjcd-cE)r%*6ZDw6A#t{fq0UP{$?&Y`iWW)f#iutHf01C<2_e;DX6&4=sUR!&qD za063e8c@^xgbljQ);l_9Pn{_k)AK0k%H)IyyPgg?o zh8A!ot3T3A0;xBaOBp9(GmQa4G)~oE2G&MN0@iAnP!@be))}aMe5HSy2xvG_?pB)9 gGGX_11qjWu5qJ{(xrRHWgZuE;R3pp!_wTHJ4OO&0#{d8T diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc deleted file mode 100644 index bfb5020892ee6c94fb4eab5f99777fccbf72dfce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9924 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc deleted file mode 100644 index fcf1ee275d1cfb150f81f9d14eef37c3122ee38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13170 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc deleted file mode 100644 index 7ce80584a0459fa9e2f089d86ff4bdc3e3a9193f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmYk1&q~8U5XLuc`Uf%KL9hp3poex9FCIj!O~hc`$R??f%M!C|x-`u$*=?bBU&dF; z)l*)nAOFxK1av%E(m$*Lu%b%ctJkO%}qZb~spP+Kgsb75Oa3wYj=3Aas zB4b)}xV~0UWmPJ9nNOsk3hr3Bg9U$sa<5mSyqaEKK*cqi$TVB0Ia5$_2?;MXtID*1 kS;3*wsopA*3Ch$|?(5;rM$m1+Zrj(@v4IV2>rg}M2lGf>d;kCd diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py deleted file mode 100644 index e5950b9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py +++ /dev/null @@ -1,172 +0,0 @@ -"""Logic that powers autocompletion installed by ``pip completion``. -""" - -import optparse -import os -import sys -from itertools import chain -from typing import Any, Iterable, List, Optional - -from pip._internal.cli.main_parser import create_main_parser -from pip._internal.commands import commands_dict, create_command -from pip._internal.metadata import get_default_environment - - -def autocomplete() -> None: - """Entry Point for completion of main and subcommand options.""" - # Don't complete if user hasn't sourced bash_completion file. - if "PIP_AUTO_COMPLETE" not in os.environ: - return - cwords = os.environ["COMP_WORDS"].split()[1:] - cword = int(os.environ["COMP_CWORD"]) - try: - current = cwords[cword - 1] - except IndexError: - current = "" - - parser = create_main_parser() - subcommands = list(commands_dict) - options = [] - - # subcommand - subcommand_name: Optional[str] = None - for word in cwords: - if word in subcommands: - subcommand_name = word - break - # subcommand options - if subcommand_name is not None: - # special case: 'help' subcommand has no options - if subcommand_name == "help": - sys.exit(1) - # special case: list locally installed dists for show and uninstall - should_list_installed = not current.startswith("-") and subcommand_name in [ - "show", - "uninstall", - ] - if should_list_installed: - env = get_default_environment() - lc = current.lower() - installed = [ - dist.canonical_name - for dist in env.iter_installed_distributions(local_only=True) - if dist.canonical_name.startswith(lc) - and dist.canonical_name not in cwords[1:] - ] - # if there are no dists installed, fall back to option completion - if installed: - for dist in installed: - print(dist) - sys.exit(1) - - should_list_installables = ( - not current.startswith("-") and subcommand_name == "install" - ) - if should_list_installables: - for path in auto_complete_paths(current, "path"): - print(path) - sys.exit(1) - - subcommand = create_command(subcommand_name) - - for opt in subcommand.parser.option_list_all: - if opt.help != optparse.SUPPRESS_HELP: - options += [ - (opt_str, opt.nargs) for opt_str in opt._long_opts + opt._short_opts - ] - - # filter out previously specified options from available options - prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]] - options = [(x, v) for (x, v) in options if x not in prev_opts] - # filter options by current input - options = [(k, v) for k, v in options if k.startswith(current)] - # get completion type given cwords and available subcommand options - completion_type = get_path_completion_type( - cwords, - cword, - subcommand.parser.option_list_all, - ) - # get completion files and directories if ``completion_type`` is - # ````, ``

    `` or ```` - if completion_type: - paths = auto_complete_paths(current, completion_type) - options = [(path, 0) for path in paths] - for option in options: - opt_label = option[0] - # append '=' to options which require args - if option[1] and option[0][:2] == "--": - opt_label += "=" - print(opt_label) - else: - # show main parser options only when necessary - - opts = [i.option_list for i in parser.option_groups] - opts.append(parser.option_list) - flattened_opts = chain.from_iterable(opts) - if current.startswith("-"): - for opt in flattened_opts: - if opt.help != optparse.SUPPRESS_HELP: - subcommands += opt._long_opts + opt._short_opts - else: - # get completion type given cwords and all available options - completion_type = get_path_completion_type(cwords, cword, flattened_opts) - if completion_type: - subcommands = list(auto_complete_paths(current, completion_type)) - - print(" ".join([x for x in subcommands if x.startswith(current)])) - sys.exit(1) - - -def get_path_completion_type( - cwords: List[str], cword: int, opts: Iterable[Any] -) -> Optional[str]: - """Get the type of path completion (``file``, ``dir``, ``path`` or None) - - :param cwords: same as the environmental variable ``COMP_WORDS`` - :param cword: same as the environmental variable ``COMP_CWORD`` - :param opts: The available options to check - :return: path completion type (``file``, ``dir``, ``path`` or None) - """ - if cword < 2 or not cwords[cword - 2].startswith("-"): - return None - for opt in opts: - if opt.help == optparse.SUPPRESS_HELP: - continue - for o in str(opt).split("/"): - if cwords[cword - 2].split("=")[0] == o: - if not opt.metavar or any( - x in ("path", "file", "dir") for x in opt.metavar.split("/") - ): - return opt.metavar - return None - - -def auto_complete_paths(current: str, completion_type: str) -> Iterable[str]: - """If ``completion_type`` is ``file`` or ``path``, list all regular files - and directories starting with ``current``; otherwise only list directories - starting with ``current``. - - :param current: The word to be completed - :param completion_type: path completion type(``file``, ``path`` or ``dir``) - :return: A generator of regular files and/or directories - """ - directory, filename = os.path.split(current) - current_path = os.path.abspath(directory) - # Don't complete paths if they can't be accessed - if not os.access(current_path, os.R_OK): - return - filename = os.path.normcase(filename) - # list all files that start with ``filename`` - file_list = ( - x for x in os.listdir(current_path) if os.path.normcase(x).startswith(filename) - ) - for f in file_list: - opt = os.path.join(current_path, f) - comp_file = os.path.normcase(os.path.join(directory, f)) - # complete regular files when there is not ```` after option - # complete directories when there is ````, ```` or - # ````after option - if completion_type != "dir" and os.path.isfile(opt): - yield comp_file - elif os.path.isdir(opt): - yield os.path.join(comp_file, "") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py deleted file mode 100644 index db9d5cc..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py +++ /dev/null @@ -1,236 +0,0 @@ -"""Base Command class, and related routines""" - -import functools -import logging -import logging.config -import optparse -import os -import sys -import traceback -from optparse import Values -from typing import Any, Callable, List, Optional, Tuple - -from pip._vendor.rich import traceback as rich_traceback - -from pip._internal.cli import cmdoptions -from pip._internal.cli.command_context import CommandContextMixIn -from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter -from pip._internal.cli.status_codes import ( - ERROR, - PREVIOUS_BUILD_DIR_ERROR, - UNKNOWN_ERROR, - VIRTUALENV_NOT_FOUND, -) -from pip._internal.exceptions import ( - BadCommand, - CommandError, - DiagnosticPipError, - InstallationError, - NetworkConnectionError, - PreviousBuildDirError, - UninstallationError, -) -from pip._internal.utils.filesystem import check_path_owner -from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging -from pip._internal.utils.misc import get_prog, normalize_path -from pip._internal.utils.temp_dir import TempDirectoryTypeRegistry as TempDirRegistry -from pip._internal.utils.temp_dir import global_tempdir_manager, tempdir_registry -from pip._internal.utils.virtualenv import running_under_virtualenv - -__all__ = ["Command"] - -logger = logging.getLogger(__name__) - - -class Command(CommandContextMixIn): - usage: str = "" - ignore_require_venv: bool = False - - def __init__(self, name: str, summary: str, isolated: bool = False) -> None: - super().__init__() - - self.name = name - self.summary = summary - self.parser = ConfigOptionParser( - usage=self.usage, - prog=f"{get_prog()} {name}", - formatter=UpdatingDefaultsHelpFormatter(), - add_help_option=False, - name=name, - description=self.__doc__, - isolated=isolated, - ) - - self.tempdir_registry: Optional[TempDirRegistry] = None - - # Commands should add options to this option group - optgroup_name = f"{self.name.capitalize()} Options" - self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) - - # Add the general options - gen_opts = cmdoptions.make_option_group( - cmdoptions.general_group, - self.parser, - ) - self.parser.add_option_group(gen_opts) - - self.add_options() - - def add_options(self) -> None: - pass - - def handle_pip_version_check(self, options: Values) -> None: - """ - This is a no-op so that commands by default do not do the pip version - check. - """ - # Make sure we do the pip version check if the index_group options - # are present. - assert not hasattr(options, "no_index") - - def run(self, options: Values, args: List[str]) -> int: - raise NotImplementedError - - def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]: - # factored out for testability - return self.parser.parse_args(args) - - def main(self, args: List[str]) -> int: - try: - with self.main_context(): - return self._main(args) - finally: - logging.shutdown() - - def _main(self, args: List[str]) -> int: - # We must initialize this before the tempdir manager, otherwise the - # configuration would not be accessible by the time we clean up the - # tempdir manager. - self.tempdir_registry = self.enter_context(tempdir_registry()) - # Intentionally set as early as possible so globally-managed temporary - # directories are available to the rest of the code. - self.enter_context(global_tempdir_manager()) - - options, args = self.parse_args(args) - - # Set verbosity so that it can be used elsewhere. - self.verbosity = options.verbose - options.quiet - - level_number = setup_logging( - verbosity=self.verbosity, - no_color=options.no_color, - user_log_file=options.log, - ) - - always_enabled_features = set(options.features_enabled) & set( - cmdoptions.ALWAYS_ENABLED_FEATURES - ) - if always_enabled_features: - logger.warning( - "The following features are always enabled: %s. ", - ", ".join(sorted(always_enabled_features)), - ) - - # Make sure that the --python argument isn't specified after the - # subcommand. We can tell, because if --python was specified, - # we should only reach this point if we're running in the created - # subprocess, which has the _PIP_RUNNING_IN_SUBPROCESS environment - # variable set. - if options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: - logger.critical( - "The --python option must be placed before the pip subcommand name" - ) - sys.exit(ERROR) - - # TODO: Try to get these passing down from the command? - # without resorting to os.environ to hold these. - # This also affects isolated builds and it should. - - if options.no_input: - os.environ["PIP_NO_INPUT"] = "1" - - if options.exists_action: - os.environ["PIP_EXISTS_ACTION"] = " ".join(options.exists_action) - - if options.require_venv and not self.ignore_require_venv: - # If a venv is required check if it can really be found - if not running_under_virtualenv(): - logger.critical("Could not find an activated virtualenv (required).") - sys.exit(VIRTUALENV_NOT_FOUND) - - if options.cache_dir: - options.cache_dir = normalize_path(options.cache_dir) - if not check_path_owner(options.cache_dir): - logger.warning( - "The directory '%s' or its parent directory is not owned " - "or is not writable by the current user. The cache " - "has been disabled. Check the permissions and owner of " - "that directory. If executing pip with sudo, you should " - "use sudo's -H flag.", - options.cache_dir, - ) - options.cache_dir = None - - def intercepts_unhandled_exc( - run_func: Callable[..., int] - ) -> Callable[..., int]: - @functools.wraps(run_func) - def exc_logging_wrapper(*args: Any) -> int: - try: - status = run_func(*args) - assert isinstance(status, int) - return status - except DiagnosticPipError as exc: - logger.error("%s", exc, extra={"rich": True}) - logger.debug("Exception information:", exc_info=True) - - return ERROR - except PreviousBuildDirError as exc: - logger.critical(str(exc)) - logger.debug("Exception information:", exc_info=True) - - return PREVIOUS_BUILD_DIR_ERROR - except ( - InstallationError, - UninstallationError, - BadCommand, - NetworkConnectionError, - ) as exc: - logger.critical(str(exc)) - logger.debug("Exception information:", exc_info=True) - - return ERROR - except CommandError as exc: - logger.critical("%s", exc) - logger.debug("Exception information:", exc_info=True) - - return ERROR - except BrokenStdoutLoggingError: - # Bypass our logger and write any remaining messages to - # stderr because stdout no longer works. - print("ERROR: Pipe to stdout was broken", file=sys.stderr) - if level_number <= logging.DEBUG: - traceback.print_exc(file=sys.stderr) - - return ERROR - except KeyboardInterrupt: - logger.critical("Operation cancelled by user") - logger.debug("Exception information:", exc_info=True) - - return ERROR - except BaseException: - logger.critical("Exception:", exc_info=True) - - return UNKNOWN_ERROR - - return exc_logging_wrapper - - try: - if not options.debug_mode: - run = intercepts_unhandled_exc(self.run) - else: - run = self.run - rich_traceback.install(show_locals=True) - return run(options, args) - finally: - self.handle_pip_version_check(options) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py deleted file mode 100644 index d05e502..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py +++ /dev/null @@ -1,1074 +0,0 @@ -""" -shared options and groups - -The principle here is to define options once, but *not* instantiate them -globally. One reason being that options with action='append' can carry state -between parses. pip parses general options twice internally, and shouldn't -pass on state. To be consistent, all options will follow this design. -""" - -# The following comment should be removed at some point in the future. -# mypy: strict-optional=False - -import importlib.util -import logging -import os -import textwrap -from functools import partial -from optparse import SUPPRESS_HELP, Option, OptionGroup, OptionParser, Values -from textwrap import dedent -from typing import Any, Callable, Dict, Optional, Tuple - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.cli.parser import ConfigOptionParser -from pip._internal.exceptions import CommandError -from pip._internal.locations import USER_CACHE_DIR, get_src_prefix -from pip._internal.models.format_control import FormatControl -from pip._internal.models.index import PyPI -from pip._internal.models.target_python import TargetPython -from pip._internal.utils.hashes import STRONG_HASHES -from pip._internal.utils.misc import strtobool - -logger = logging.getLogger(__name__) - - -def raise_option_error(parser: OptionParser, option: Option, msg: str) -> None: - """ - Raise an option parsing error using parser.error(). - - Args: - parser: an OptionParser instance. - option: an Option instance. - msg: the error text. - """ - msg = f"{option} error: {msg}" - msg = textwrap.fill(" ".join(msg.split())) - parser.error(msg) - - -def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser) -> OptionGroup: - """ - Return an OptionGroup object - group -- assumed to be dict with 'name' and 'options' keys - parser -- an optparse Parser - """ - option_group = OptionGroup(parser, group["name"]) - for option in group["options"]: - option_group.add_option(option()) - return option_group - - -def check_dist_restriction(options: Values, check_target: bool = False) -> None: - """Function for determining if custom platform options are allowed. - - :param options: The OptionParser options. - :param check_target: Whether or not to check if --target is being used. - """ - dist_restriction_set = any( - [ - options.python_version, - options.platforms, - options.abis, - options.implementation, - ] - ) - - binary_only = FormatControl(set(), {":all:"}) - sdist_dependencies_allowed = ( - options.format_control != binary_only and not options.ignore_dependencies - ) - - # Installations or downloads using dist restrictions must not combine - # source distributions and dist-specific wheels, as they are not - # guaranteed to be locally compatible. - if dist_restriction_set and sdist_dependencies_allowed: - raise CommandError( - "When restricting platform and interpreter constraints using " - "--python-version, --platform, --abi, or --implementation, " - "either --no-deps must be set, or --only-binary=:all: must be " - "set and --no-binary must not be set (or must be set to " - ":none:)." - ) - - if check_target: - if not options.dry_run and dist_restriction_set and not options.target_dir: - raise CommandError( - "Can not use any platform or abi specific options unless " - "installing via '--target' or using '--dry-run'" - ) - - -def _path_option_check(option: Option, opt: str, value: str) -> str: - return os.path.expanduser(value) - - -def _package_name_option_check(option: Option, opt: str, value: str) -> str: - return canonicalize_name(value) - - -class PipOption(Option): - TYPES = Option.TYPES + ("path", "package_name") - TYPE_CHECKER = Option.TYPE_CHECKER.copy() - TYPE_CHECKER["package_name"] = _package_name_option_check - TYPE_CHECKER["path"] = _path_option_check - - -########### -# options # -########### - -help_: Callable[..., Option] = partial( - Option, - "-h", - "--help", - dest="help", - action="help", - help="Show help.", -) - -debug_mode: Callable[..., Option] = partial( - Option, - "--debug", - dest="debug_mode", - action="store_true", - default=False, - help=( - "Let unhandled exceptions propagate outside the main subroutine, " - "instead of logging them to stderr." - ), -) - -isolated_mode: Callable[..., Option] = partial( - Option, - "--isolated", - dest="isolated_mode", - action="store_true", - default=False, - help=( - "Run pip in an isolated mode, ignoring environment variables and user " - "configuration." - ), -) - -require_virtualenv: Callable[..., Option] = partial( - Option, - "--require-virtualenv", - "--require-venv", - dest="require_venv", - action="store_true", - default=False, - help=( - "Allow pip to only run in a virtual environment; " - "exit with an error otherwise." - ), -) - -override_externally_managed: Callable[..., Option] = partial( - Option, - "--break-system-packages", - dest="override_externally_managed", - action="store_true", - help="Allow pip to modify an EXTERNALLY-MANAGED Python installation", -) - -python: Callable[..., Option] = partial( - Option, - "--python", - dest="python", - help="Run pip with the specified Python interpreter.", -) - -verbose: Callable[..., Option] = partial( - Option, - "-v", - "--verbose", - dest="verbose", - action="count", - default=0, - help="Give more output. Option is additive, and can be used up to 3 times.", -) - -no_color: Callable[..., Option] = partial( - Option, - "--no-color", - dest="no_color", - action="store_true", - default=False, - help="Suppress colored output.", -) - -version: Callable[..., Option] = partial( - Option, - "-V", - "--version", - dest="version", - action="store_true", - help="Show version and exit.", -) - -quiet: Callable[..., Option] = partial( - Option, - "-q", - "--quiet", - dest="quiet", - action="count", - default=0, - help=( - "Give less output. Option is additive, and can be used up to 3" - " times (corresponding to WARNING, ERROR, and CRITICAL logging" - " levels)." - ), -) - -progress_bar: Callable[..., Option] = partial( - Option, - "--progress-bar", - dest="progress_bar", - type="choice", - choices=["on", "off"], - default="on", - help="Specify whether the progress bar should be used [on, off] (default: on)", -) - -log: Callable[..., Option] = partial( - PipOption, - "--log", - "--log-file", - "--local-log", - dest="log", - metavar="path", - type="path", - help="Path to a verbose appending log.", -) - -no_input: Callable[..., Option] = partial( - Option, - # Don't ask for input - "--no-input", - dest="no_input", - action="store_true", - default=False, - help="Disable prompting for input.", -) - -keyring_provider: Callable[..., Option] = partial( - Option, - "--keyring-provider", - dest="keyring_provider", - choices=["auto", "disabled", "import", "subprocess"], - default="auto", - help=( - "Enable the credential lookup via the keyring library if user input is allowed." - " Specify which mechanism to use [disabled, import, subprocess]." - " (default: disabled)" - ), -) - -proxy: Callable[..., Option] = partial( - Option, - "--proxy", - dest="proxy", - type="str", - default="", - help="Specify a proxy in the form scheme://[user:passwd@]proxy.server:port.", -) - -retries: Callable[..., Option] = partial( - Option, - "--retries", - dest="retries", - type="int", - default=5, - help="Maximum number of retries each connection should attempt " - "(default %default times).", -) - -timeout: Callable[..., Option] = partial( - Option, - "--timeout", - "--default-timeout", - metavar="sec", - dest="timeout", - type="float", - default=15, - help="Set the socket timeout (default %default seconds).", -) - - -def exists_action() -> Option: - return Option( - # Option when path already exist - "--exists-action", - dest="exists_action", - type="choice", - choices=["s", "i", "w", "b", "a"], - default=[], - action="append", - metavar="action", - help="Default action when a path already exists: " - "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.", - ) - - -cert: Callable[..., Option] = partial( - PipOption, - "--cert", - dest="cert", - type="path", - metavar="path", - help=( - "Path to PEM-encoded CA certificate bundle. " - "If provided, overrides the default. " - "See 'SSL Certificate Verification' in pip documentation " - "for more information." - ), -) - -client_cert: Callable[..., Option] = partial( - PipOption, - "--client-cert", - dest="client_cert", - type="path", - default=None, - metavar="path", - help="Path to SSL client certificate, a single file containing the " - "private key and the certificate in PEM format.", -) - -index_url: Callable[..., Option] = partial( - Option, - "-i", - "--index-url", - "--pypi-url", - dest="index_url", - metavar="URL", - default=PyPI.simple_url, - help="Base URL of the Python Package Index (default %default). " - "This should point to a repository compliant with PEP 503 " - "(the simple repository API) or a local directory laid out " - "in the same format.", -) - - -def extra_index_url() -> Option: - return Option( - "--extra-index-url", - dest="extra_index_urls", - metavar="URL", - action="append", - default=[], - help="Extra URLs of package indexes to use in addition to " - "--index-url. Should follow the same rules as " - "--index-url.", - ) - - -no_index: Callable[..., Option] = partial( - Option, - "--no-index", - dest="no_index", - action="store_true", - default=False, - help="Ignore package index (only looking at --find-links URLs instead).", -) - - -def find_links() -> Option: - return Option( - "-f", - "--find-links", - dest="find_links", - action="append", - default=[], - metavar="url", - help="If a URL or path to an html file, then parse for links to " - "archives such as sdist (.tar.gz) or wheel (.whl) files. " - "If a local path or file:// URL that's a directory, " - "then look for archives in the directory listing. " - "Links to VCS project URLs are not supported.", - ) - - -def trusted_host() -> Option: - return Option( - "--trusted-host", - dest="trusted_hosts", - action="append", - metavar="HOSTNAME", - default=[], - help="Mark this host or host:port pair as trusted, even though it " - "does not have valid or any HTTPS.", - ) - - -def constraints() -> Option: - return Option( - "-c", - "--constraint", - dest="constraints", - action="append", - default=[], - metavar="file", - help="Constrain versions using the given constraints file. " - "This option can be used multiple times.", - ) - - -def requirements() -> Option: - return Option( - "-r", - "--requirement", - dest="requirements", - action="append", - default=[], - metavar="file", - help="Install from the given requirements file. " - "This option can be used multiple times.", - ) - - -def editable() -> Option: - return Option( - "-e", - "--editable", - dest="editables", - action="append", - default=[], - metavar="path/url", - help=( - "Install a project in editable mode (i.e. setuptools " - '"develop mode") from a local project path or a VCS url.' - ), - ) - - -def _handle_src(option: Option, opt_str: str, value: str, parser: OptionParser) -> None: - value = os.path.abspath(value) - setattr(parser.values, option.dest, value) - - -src: Callable[..., Option] = partial( - PipOption, - "--src", - "--source", - "--source-dir", - "--source-directory", - dest="src_dir", - type="path", - metavar="dir", - default=get_src_prefix(), - action="callback", - callback=_handle_src, - help="Directory to check out editable projects into. " - 'The default in a virtualenv is "/src". ' - 'The default for global installs is "/src".', -) - - -def _get_format_control(values: Values, option: Option) -> Any: - """Get a format_control object.""" - return getattr(values, option.dest) - - -def _handle_no_binary( - option: Option, opt_str: str, value: str, parser: OptionParser -) -> None: - existing = _get_format_control(parser.values, option) - FormatControl.handle_mutual_excludes( - value, - existing.no_binary, - existing.only_binary, - ) - - -def _handle_only_binary( - option: Option, opt_str: str, value: str, parser: OptionParser -) -> None: - existing = _get_format_control(parser.values, option) - FormatControl.handle_mutual_excludes( - value, - existing.only_binary, - existing.no_binary, - ) - - -def no_binary() -> Option: - format_control = FormatControl(set(), set()) - return Option( - "--no-binary", - dest="format_control", - action="callback", - callback=_handle_no_binary, - type="str", - default=format_control, - help="Do not use binary packages. Can be supplied multiple times, and " - 'each time adds to the existing value. Accepts either ":all:" to ' - 'disable all binary packages, ":none:" to empty the set (notice ' - "the colons), or one or more package names with commas between " - "them (no colons). Note that some packages are tricky to compile " - "and may fail to install when this option is used on them.", - ) - - -def only_binary() -> Option: - format_control = FormatControl(set(), set()) - return Option( - "--only-binary", - dest="format_control", - action="callback", - callback=_handle_only_binary, - type="str", - default=format_control, - help="Do not use source packages. Can be supplied multiple times, and " - 'each time adds to the existing value. Accepts either ":all:" to ' - 'disable all source packages, ":none:" to empty the set, or one ' - "or more package names with commas between them. Packages " - "without binary distributions will fail to install when this " - "option is used on them.", - ) - - -platforms: Callable[..., Option] = partial( - Option, - "--platform", - dest="platforms", - metavar="platform", - action="append", - default=None, - help=( - "Only use wheels compatible with . Defaults to the " - "platform of the running system. Use this option multiple times to " - "specify multiple platforms supported by the target interpreter." - ), -) - - -# This was made a separate function for unit-testing purposes. -def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Optional[str]]: - """ - Convert a version string like "3", "37", or "3.7.3" into a tuple of ints. - - :return: A 2-tuple (version_info, error_msg), where `error_msg` is - non-None if and only if there was a parsing error. - """ - if not value: - # The empty string is the same as not providing a value. - return (None, None) - - parts = value.split(".") - if len(parts) > 3: - return ((), "at most three version parts are allowed") - - if len(parts) == 1: - # Then we are in the case of "3" or "37". - value = parts[0] - if len(value) > 1: - parts = [value[0], value[1:]] - - try: - version_info = tuple(int(part) for part in parts) - except ValueError: - return ((), "each version part must be an integer") - - return (version_info, None) - - -def _handle_python_version( - option: Option, opt_str: str, value: str, parser: OptionParser -) -> None: - """ - Handle a provided --python-version value. - """ - version_info, error_msg = _convert_python_version(value) - if error_msg is not None: - msg = f"invalid --python-version value: {value!r}: {error_msg}" - raise_option_error(parser, option=option, msg=msg) - - parser.values.python_version = version_info - - -python_version: Callable[..., Option] = partial( - Option, - "--python-version", - dest="python_version", - metavar="python_version", - action="callback", - callback=_handle_python_version, - type="str", - default=None, - help=dedent( - """\ - The Python interpreter version to use for wheel and "Requires-Python" - compatibility checks. Defaults to a version derived from the running - interpreter. The version can be specified using up to three dot-separated - integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor - version can also be given as a string without dots (e.g. "37" for 3.7.0). - """ - ), -) - - -implementation: Callable[..., Option] = partial( - Option, - "--implementation", - dest="implementation", - metavar="implementation", - default=None, - help=( - "Only use wheels compatible with Python " - "implementation , e.g. 'pp', 'jy', 'cp', " - " or 'ip'. If not specified, then the current " - "interpreter implementation is used. Use 'py' to force " - "implementation-agnostic wheels." - ), -) - - -abis: Callable[..., Option] = partial( - Option, - "--abi", - dest="abis", - metavar="abi", - action="append", - default=None, - help=( - "Only use wheels compatible with Python abi , e.g. 'pypy_41'. " - "If not specified, then the current interpreter abi tag is used. " - "Use this option multiple times to specify multiple abis supported " - "by the target interpreter. Generally you will need to specify " - "--implementation, --platform, and --python-version when using this " - "option." - ), -) - - -def add_target_python_options(cmd_opts: OptionGroup) -> None: - cmd_opts.add_option(platforms()) - cmd_opts.add_option(python_version()) - cmd_opts.add_option(implementation()) - cmd_opts.add_option(abis()) - - -def make_target_python(options: Values) -> TargetPython: - target_python = TargetPython( - platforms=options.platforms, - py_version_info=options.python_version, - abis=options.abis, - implementation=options.implementation, - ) - - return target_python - - -def prefer_binary() -> Option: - return Option( - "--prefer-binary", - dest="prefer_binary", - action="store_true", - default=False, - help=( - "Prefer binary packages over source packages, even if the " - "source packages are newer." - ), - ) - - -cache_dir: Callable[..., Option] = partial( - PipOption, - "--cache-dir", - dest="cache_dir", - default=USER_CACHE_DIR, - metavar="dir", - type="path", - help="Store the cache data in .", -) - - -def _handle_no_cache_dir( - option: Option, opt: str, value: str, parser: OptionParser -) -> None: - """ - Process a value provided for the --no-cache-dir option. - - This is an optparse.Option callback for the --no-cache-dir option. - """ - # The value argument will be None if --no-cache-dir is passed via the - # command-line, since the option doesn't accept arguments. However, - # the value can be non-None if the option is triggered e.g. by an - # environment variable, like PIP_NO_CACHE_DIR=true. - if value is not None: - # Then parse the string value to get argument error-checking. - try: - strtobool(value) - except ValueError as exc: - raise_option_error(parser, option=option, msg=str(exc)) - - # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool() - # converted to 0 (like "false" or "no") caused cache_dir to be disabled - # rather than enabled (logic would say the latter). Thus, we disable - # the cache directory not just on values that parse to True, but (for - # backwards compatibility reasons) also on values that parse to False. - # In other words, always set it to False if the option is provided in - # some (valid) form. - parser.values.cache_dir = False - - -no_cache: Callable[..., Option] = partial( - Option, - "--no-cache-dir", - dest="cache_dir", - action="callback", - callback=_handle_no_cache_dir, - help="Disable the cache.", -) - -no_deps: Callable[..., Option] = partial( - Option, - "--no-deps", - "--no-dependencies", - dest="ignore_dependencies", - action="store_true", - default=False, - help="Don't install package dependencies.", -) - -ignore_requires_python: Callable[..., Option] = partial( - Option, - "--ignore-requires-python", - dest="ignore_requires_python", - action="store_true", - help="Ignore the Requires-Python information.", -) - -no_build_isolation: Callable[..., Option] = partial( - Option, - "--no-build-isolation", - dest="build_isolation", - action="store_false", - default=True, - help="Disable isolation when building a modern source distribution. " - "Build dependencies specified by PEP 518 must be already installed " - "if this option is used.", -) - -check_build_deps: Callable[..., Option] = partial( - Option, - "--check-build-dependencies", - dest="check_build_deps", - action="store_true", - default=False, - help="Check the build dependencies when PEP517 is used.", -) - - -def _handle_no_use_pep517( - option: Option, opt: str, value: str, parser: OptionParser -) -> None: - """ - Process a value provided for the --no-use-pep517 option. - - This is an optparse.Option callback for the no_use_pep517 option. - """ - # Since --no-use-pep517 doesn't accept arguments, the value argument - # will be None if --no-use-pep517 is passed via the command-line. - # However, the value can be non-None if the option is triggered e.g. - # by an environment variable, for example "PIP_NO_USE_PEP517=true". - if value is not None: - msg = """A value was passed for --no-use-pep517, - probably using either the PIP_NO_USE_PEP517 environment variable - or the "no-use-pep517" config file option. Use an appropriate value - of the PIP_USE_PEP517 environment variable or the "use-pep517" - config file option instead. - """ - raise_option_error(parser, option=option, msg=msg) - - # If user doesn't wish to use pep517, we check if setuptools and wheel are installed - # and raise error if it is not. - packages = ("setuptools", "wheel") - if not all(importlib.util.find_spec(package) for package in packages): - msg = ( - f"It is not possible to use --no-use-pep517 " - f"without {' and '.join(packages)} installed." - ) - raise_option_error(parser, option=option, msg=msg) - - # Otherwise, --no-use-pep517 was passed via the command-line. - parser.values.use_pep517 = False - - -use_pep517: Any = partial( - Option, - "--use-pep517", - dest="use_pep517", - action="store_true", - default=None, - help="Use PEP 517 for building source distributions " - "(use --no-use-pep517 to force legacy behaviour).", -) - -no_use_pep517: Any = partial( - Option, - "--no-use-pep517", - dest="use_pep517", - action="callback", - callback=_handle_no_use_pep517, - default=None, - help=SUPPRESS_HELP, -) - - -def _handle_config_settings( - option: Option, opt_str: str, value: str, parser: OptionParser -) -> None: - key, sep, val = value.partition("=") - if sep != "=": - parser.error(f"Arguments to {opt_str} must be of the form KEY=VAL") - dest = getattr(parser.values, option.dest) - if dest is None: - dest = {} - setattr(parser.values, option.dest, dest) - if key in dest: - if isinstance(dest[key], list): - dest[key].append(val) - else: - dest[key] = [dest[key], val] - else: - dest[key] = val - - -config_settings: Callable[..., Option] = partial( - Option, - "-C", - "--config-settings", - dest="config_settings", - type=str, - action="callback", - callback=_handle_config_settings, - metavar="settings", - help="Configuration settings to be passed to the PEP 517 build backend. " - "Settings take the form KEY=VALUE. Use multiple --config-settings options " - "to pass multiple keys to the backend.", -) - -build_options: Callable[..., Option] = partial( - Option, - "--build-option", - dest="build_options", - metavar="options", - action="append", - help="Extra arguments to be supplied to 'setup.py bdist_wheel'.", -) - -global_options: Callable[..., Option] = partial( - Option, - "--global-option", - dest="global_options", - action="append", - metavar="options", - help="Extra global options to be supplied to the setup.py " - "call before the install or bdist_wheel command.", -) - -no_clean: Callable[..., Option] = partial( - Option, - "--no-clean", - action="store_true", - default=False, - help="Don't clean up build directories.", -) - -pre: Callable[..., Option] = partial( - Option, - "--pre", - action="store_true", - default=False, - help="Include pre-release and development versions. By default, " - "pip only finds stable versions.", -) - -disable_pip_version_check: Callable[..., Option] = partial( - Option, - "--disable-pip-version-check", - dest="disable_pip_version_check", - action="store_true", - default=False, - help="Don't periodically check PyPI to determine whether a new version " - "of pip is available for download. Implied with --no-index.", -) - -root_user_action: Callable[..., Option] = partial( - Option, - "--root-user-action", - dest="root_user_action", - default="warn", - choices=["warn", "ignore"], - help="Action if pip is run as a root user. By default, a warning message is shown.", -) - - -def _handle_merge_hash( - option: Option, opt_str: str, value: str, parser: OptionParser -) -> None: - """Given a value spelled "algo:digest", append the digest to a list - pointed to in a dict by the algo name.""" - if not parser.values.hashes: - parser.values.hashes = {} - try: - algo, digest = value.split(":", 1) - except ValueError: - parser.error( - f"Arguments to {opt_str} must be a hash name " - "followed by a value, like --hash=sha256:" - "abcde..." - ) - if algo not in STRONG_HASHES: - parser.error( - "Allowed hash algorithms for {} are {}.".format( - opt_str, ", ".join(STRONG_HASHES) - ) - ) - parser.values.hashes.setdefault(algo, []).append(digest) - - -hash: Callable[..., Option] = partial( - Option, - "--hash", - # Hash values eventually end up in InstallRequirement.hashes due to - # __dict__ copying in process_line(). - dest="hashes", - action="callback", - callback=_handle_merge_hash, - type="string", - help="Verify that the package's archive matches this " - "hash before installing. Example: --hash=sha256:abcdef...", -) - - -require_hashes: Callable[..., Option] = partial( - Option, - "--require-hashes", - dest="require_hashes", - action="store_true", - default=False, - help="Require a hash to check each requirement against, for " - "repeatable installs. This option is implied when any package in a " - "requirements file has a --hash option.", -) - - -list_path: Callable[..., Option] = partial( - PipOption, - "--path", - dest="path", - type="path", - action="append", - help="Restrict to the specified installation path for listing " - "packages (can be used multiple times).", -) - - -def check_list_path_option(options: Values) -> None: - if options.path and (options.user or options.local): - raise CommandError("Cannot combine '--path' with '--user' or '--local'") - - -list_exclude: Callable[..., Option] = partial( - PipOption, - "--exclude", - dest="excludes", - action="append", - metavar="package", - type="package_name", - help="Exclude specified package from the output", -) - - -no_python_version_warning: Callable[..., Option] = partial( - Option, - "--no-python-version-warning", - dest="no_python_version_warning", - action="store_true", - default=False, - help="Silence deprecation warnings for upcoming unsupported Pythons.", -) - - -# Features that are now always on. A warning is printed if they are used. -ALWAYS_ENABLED_FEATURES = [ - "no-binary-enable-wheel-cache", # always on since 23.1 -] - -use_new_feature: Callable[..., Option] = partial( - Option, - "--use-feature", - dest="features_enabled", - metavar="feature", - action="append", - default=[], - choices=[ - "fast-deps", - "truststore", - ] - + ALWAYS_ENABLED_FEATURES, - help="Enable new functionality, that may be backward incompatible.", -) - -use_deprecated_feature: Callable[..., Option] = partial( - Option, - "--use-deprecated", - dest="deprecated_features_enabled", - metavar="feature", - action="append", - default=[], - choices=[ - "legacy-resolver", - ], - help=("Enable deprecated functionality, that will be removed in the future."), -) - - -########## -# groups # -########## - -general_group: Dict[str, Any] = { - "name": "General Options", - "options": [ - help_, - debug_mode, - isolated_mode, - require_virtualenv, - python, - verbose, - version, - quiet, - log, - no_input, - keyring_provider, - proxy, - retries, - timeout, - exists_action, - trusted_host, - cert, - client_cert, - cache_dir, - no_cache, - disable_pip_version_check, - no_color, - no_python_version_warning, - use_new_feature, - use_deprecated_feature, - ], -} - -index_group: Dict[str, Any] = { - "name": "Package Index Options", - "options": [ - index_url, - extra_index_url, - no_index, - find_links, - ], -} diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py deleted file mode 100644 index 139995a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py +++ /dev/null @@ -1,27 +0,0 @@ -from contextlib import ExitStack, contextmanager -from typing import ContextManager, Generator, TypeVar - -_T = TypeVar("_T", covariant=True) - - -class CommandContextMixIn: - def __init__(self) -> None: - super().__init__() - self._in_main_context = False - self._main_context = ExitStack() - - @contextmanager - def main_context(self) -> Generator[None, None, None]: - assert not self._in_main_context - - self._in_main_context = True - try: - with self._main_context: - yield - finally: - self._in_main_context = False - - def enter_context(self, context_provider: ContextManager[_T]) -> _T: - assert self._in_main_context - - return self._main_context.enter_context(context_provider) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/main.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/main.py deleted file mode 100644 index 7e061f5..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/main.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Primary application entrypoint. -""" -import locale -import logging -import os -import sys -import warnings -from typing import List, Optional - -from pip._internal.cli.autocompletion import autocomplete -from pip._internal.cli.main_parser import parse_command -from pip._internal.commands import create_command -from pip._internal.exceptions import PipError -from pip._internal.utils import deprecation - -logger = logging.getLogger(__name__) - - -# Do not import and use main() directly! Using it directly is actively -# discouraged by pip's maintainers. The name, location and behavior of -# this function is subject to change, so calling it directly is not -# portable across different pip versions. - -# In addition, running pip in-process is unsupported and unsafe. This is -# elaborated in detail at -# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program. -# That document also provides suggestions that should work for nearly -# all users that are considering importing and using main() directly. - -# However, we know that certain users will still want to invoke pip -# in-process. If you understand and accept the implications of using pip -# in an unsupported manner, the best approach is to use runpy to avoid -# depending on the exact location of this entry point. - -# The following example shows how to use runpy to invoke pip in that -# case: -# -# sys.argv = ["pip", your, args, here] -# runpy.run_module("pip", run_name="__main__") -# -# Note that this will exit the process after running, unlike a direct -# call to main. As it is not safe to do any processing after calling -# main, this should not be an issue in practice. - - -def main(args: Optional[List[str]] = None) -> int: - if args is None: - args = sys.argv[1:] - - # Suppress the pkg_resources deprecation warning - # Note - we use a module of .*pkg_resources to cover - # the normal case (pip._vendor.pkg_resources) and the - # devendored case (a bare pkg_resources) - warnings.filterwarnings( - action="ignore", category=DeprecationWarning, module=".*pkg_resources" - ) - - # Configure our deprecation warnings to be sent through loggers - deprecation.install_warning_logger() - - autocomplete() - - try: - cmd_name, cmd_args = parse_command(args) - except PipError as exc: - sys.stderr.write(f"ERROR: {exc}") - sys.stderr.write(os.linesep) - sys.exit(1) - - # Needed for locale.getpreferredencoding(False) to work - # in pip._internal.utils.encoding.auto_decode - try: - locale.setlocale(locale.LC_ALL, "") - except locale.Error as e: - # setlocale can apparently crash if locale are uninitialized - logger.debug("Ignoring error %s when setting locale", e) - command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) - - return command.main(cmd_args) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py deleted file mode 100644 index 5ade356..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py +++ /dev/null @@ -1,134 +0,0 @@ -"""A single place for constructing and exposing the main parser -""" - -import os -import subprocess -import sys -from typing import List, Optional, Tuple - -from pip._internal.build_env import get_runnable_pip -from pip._internal.cli import cmdoptions -from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter -from pip._internal.commands import commands_dict, get_similar_commands -from pip._internal.exceptions import CommandError -from pip._internal.utils.misc import get_pip_version, get_prog - -__all__ = ["create_main_parser", "parse_command"] - - -def create_main_parser() -> ConfigOptionParser: - """Creates and returns the main parser for pip's CLI""" - - parser = ConfigOptionParser( - usage="\n%prog [options]", - add_help_option=False, - formatter=UpdatingDefaultsHelpFormatter(), - name="global", - prog=get_prog(), - ) - parser.disable_interspersed_args() - - parser.version = get_pip_version() - - # add the general options - gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) - parser.add_option_group(gen_opts) - - # so the help formatter knows - parser.main = True # type: ignore - - # create command listing for description - description = [""] + [ - f"{name:27} {command_info.summary}" - for name, command_info in commands_dict.items() - ] - parser.description = "\n".join(description) - - return parser - - -def identify_python_interpreter(python: str) -> Optional[str]: - # If the named file exists, use it. - # If it's a directory, assume it's a virtual environment and - # look for the environment's Python executable. - if os.path.exists(python): - if os.path.isdir(python): - # bin/python for Unix, Scripts/python.exe for Windows - # Try both in case of odd cases like cygwin. - for exe in ("bin/python", "Scripts/python.exe"): - py = os.path.join(python, exe) - if os.path.exists(py): - return py - else: - return python - - # Could not find the interpreter specified - return None - - -def parse_command(args: List[str]) -> Tuple[str, List[str]]: - parser = create_main_parser() - - # Note: parser calls disable_interspersed_args(), so the result of this - # call is to split the initial args into the general options before the - # subcommand and everything else. - # For example: - # args: ['--timeout=5', 'install', '--user', 'INITools'] - # general_options: ['--timeout==5'] - # args_else: ['install', '--user', 'INITools'] - general_options, args_else = parser.parse_args(args) - - # --python - if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: - # Re-invoke pip using the specified Python interpreter - interpreter = identify_python_interpreter(general_options.python) - if interpreter is None: - raise CommandError( - f"Could not locate Python interpreter {general_options.python}" - ) - - pip_cmd = [ - interpreter, - get_runnable_pip(), - ] - pip_cmd.extend(args) - - # Set a flag so the child doesn't re-invoke itself, causing - # an infinite loop. - os.environ["_PIP_RUNNING_IN_SUBPROCESS"] = "1" - returncode = 0 - try: - proc = subprocess.run(pip_cmd) - returncode = proc.returncode - except (subprocess.SubprocessError, OSError) as exc: - raise CommandError(f"Failed to run pip under {interpreter}: {exc}") - sys.exit(returncode) - - # --version - if general_options.version: - sys.stdout.write(parser.version) - sys.stdout.write(os.linesep) - sys.exit() - - # pip || pip help -> print_help() - if not args_else or (args_else[0] == "help" and len(args_else) == 1): - parser.print_help() - sys.exit() - - # the subcommand name - cmd_name = args_else[0] - - if cmd_name not in commands_dict: - guess = get_similar_commands(cmd_name) - - msg = [f'unknown command "{cmd_name}"'] - if guess: - msg.append(f'maybe you meant "{guess}"') - - raise CommandError(" - ".join(msg)) - - # all the args without the subcommand - cmd_args = args[:] - cmd_args.remove(cmd_name) - - return cmd_name, cmd_args diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py deleted file mode 100644 index ae554b2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py +++ /dev/null @@ -1,294 +0,0 @@ -"""Base option parser setup""" - -import logging -import optparse -import shutil -import sys -import textwrap -from contextlib import suppress -from typing import Any, Dict, Generator, List, Tuple - -from pip._internal.cli.status_codes import UNKNOWN_ERROR -from pip._internal.configuration import Configuration, ConfigurationError -from pip._internal.utils.misc import redact_auth_from_url, strtobool - -logger = logging.getLogger(__name__) - - -class PrettyHelpFormatter(optparse.IndentedHelpFormatter): - """A prettier/less verbose help formatter for optparse.""" - - def __init__(self, *args: Any, **kwargs: Any) -> None: - # help position must be aligned with __init__.parseopts.description - kwargs["max_help_position"] = 30 - kwargs["indent_increment"] = 1 - kwargs["width"] = shutil.get_terminal_size()[0] - 2 - super().__init__(*args, **kwargs) - - def format_option_strings(self, option: optparse.Option) -> str: - return self._format_option_strings(option) - - def _format_option_strings( - self, option: optparse.Option, mvarfmt: str = " <{}>", optsep: str = ", " - ) -> str: - """ - Return a comma-separated list of option strings and metavars. - - :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') - :param mvarfmt: metavar format string - :param optsep: separator - """ - opts = [] - - if option._short_opts: - opts.append(option._short_opts[0]) - if option._long_opts: - opts.append(option._long_opts[0]) - if len(opts) > 1: - opts.insert(1, optsep) - - if option.takes_value(): - assert option.dest is not None - metavar = option.metavar or option.dest.lower() - opts.append(mvarfmt.format(metavar.lower())) - - return "".join(opts) - - def format_heading(self, heading: str) -> str: - if heading == "Options": - return "" - return heading + ":\n" - - def format_usage(self, usage: str) -> str: - """ - Ensure there is only one newline between usage and the first heading - if there is no description. - """ - msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " ")) - return msg - - def format_description(self, description: str) -> str: - # leave full control over description to us - if description: - if hasattr(self.parser, "main"): - label = "Commands" - else: - label = "Description" - # some doc strings have initial newlines, some don't - description = description.lstrip("\n") - # some doc strings have final newlines and spaces, some don't - description = description.rstrip() - # dedent, then reindent - description = self.indent_lines(textwrap.dedent(description), " ") - description = f"{label}:\n{description}\n" - return description - else: - return "" - - def format_epilog(self, epilog: str) -> str: - # leave full control over epilog to us - if epilog: - return epilog - else: - return "" - - def indent_lines(self, text: str, indent: str) -> str: - new_lines = [indent + line for line in text.split("\n")] - return "\n".join(new_lines) - - -class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): - """Custom help formatter for use in ConfigOptionParser. - - This is updates the defaults before expanding them, allowing - them to show up correctly in the help listing. - - Also redact auth from url type options - """ - - def expand_default(self, option: optparse.Option) -> str: - default_values = None - if self.parser is not None: - assert isinstance(self.parser, ConfigOptionParser) - self.parser._update_defaults(self.parser.defaults) - assert option.dest is not None - default_values = self.parser.defaults.get(option.dest) - help_text = super().expand_default(option) - - if default_values and option.metavar == "URL": - if isinstance(default_values, str): - default_values = [default_values] - - # If its not a list, we should abort and just return the help text - if not isinstance(default_values, list): - default_values = [] - - for val in default_values: - help_text = help_text.replace(val, redact_auth_from_url(val)) - - return help_text - - -class CustomOptionParser(optparse.OptionParser): - def insert_option_group( - self, idx: int, *args: Any, **kwargs: Any - ) -> optparse.OptionGroup: - """Insert an OptionGroup at a given position.""" - group = self.add_option_group(*args, **kwargs) - - self.option_groups.pop() - self.option_groups.insert(idx, group) - - return group - - @property - def option_list_all(self) -> List[optparse.Option]: - """Get a list of all options, including those in option groups.""" - res = self.option_list[:] - for i in self.option_groups: - res.extend(i.option_list) - - return res - - -class ConfigOptionParser(CustomOptionParser): - """Custom option parser which updates its defaults by checking the - configuration files and environmental variables""" - - def __init__( - self, - *args: Any, - name: str, - isolated: bool = False, - **kwargs: Any, - ) -> None: - self.name = name - self.config = Configuration(isolated) - - assert self.name - super().__init__(*args, **kwargs) - - def check_default(self, option: optparse.Option, key: str, val: Any) -> Any: - try: - return option.check_value(key, val) - except optparse.OptionValueError as exc: - print(f"An error occurred during configuration: {exc}") - sys.exit(3) - - def _get_ordered_configuration_items( - self, - ) -> Generator[Tuple[str, Any], None, None]: - # Configuration gives keys in an unordered manner. Order them. - override_order = ["global", self.name, ":env:"] - - # Pool the options into different groups - section_items: Dict[str, List[Tuple[str, Any]]] = { - name: [] for name in override_order - } - for section_key, val in self.config.items(): - # ignore empty values - if not val: - logger.debug( - "Ignoring configuration key '%s' as it's value is empty.", - section_key, - ) - continue - - section, key = section_key.split(".", 1) - if section in override_order: - section_items[section].append((key, val)) - - # Yield each group in their override order - for section in override_order: - for key, val in section_items[section]: - yield key, val - - def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]: - """Updates the given defaults with values from the config files and - the environ. Does a little special handling for certain types of - options (lists).""" - - # Accumulate complex default state. - self.values = optparse.Values(self.defaults) - late_eval = set() - # Then set the options with those values - for key, val in self._get_ordered_configuration_items(): - # '--' because configuration supports only long names - option = self.get_option("--" + key) - - # Ignore options not present in this parser. E.g. non-globals put - # in [global] by users that want them to apply to all applicable - # commands. - if option is None: - continue - - assert option.dest is not None - - if option.action in ("store_true", "store_false"): - try: - val = strtobool(val) - except ValueError: - self.error( - f"{val} is not a valid value for {key} option, " - "please specify a boolean value like yes/no, " - "true/false or 1/0 instead." - ) - elif option.action == "count": - with suppress(ValueError): - val = strtobool(val) - with suppress(ValueError): - val = int(val) - if not isinstance(val, int) or val < 0: - self.error( - f"{val} is not a valid value for {key} option, " - "please instead specify either a non-negative integer " - "or a boolean value like yes/no or false/true " - "which is equivalent to 1/0." - ) - elif option.action == "append": - val = val.split() - val = [self.check_default(option, key, v) for v in val] - elif option.action == "callback": - assert option.callback is not None - late_eval.add(option.dest) - opt_str = option.get_opt_string() - val = option.convert_value(opt_str, val) - # From take_action - args = option.callback_args or () - kwargs = option.callback_kwargs or {} - option.callback(option, opt_str, val, self, *args, **kwargs) - else: - val = self.check_default(option, key, val) - - defaults[option.dest] = val - - for key in late_eval: - defaults[key] = getattr(self.values, key) - self.values = None - return defaults - - def get_default_values(self) -> optparse.Values: - """Overriding to make updating the defaults after instantiation of - the option parser possible, _update_defaults() does the dirty work.""" - if not self.process_default_values: - # Old, pre-Optik 1.5 behaviour. - return optparse.Values(self.defaults) - - # Load the configuration, or error out in case of an error - try: - self.config.load() - except ConfigurationError as err: - self.exit(UNKNOWN_ERROR, str(err)) - - defaults = self._update_defaults(self.defaults.copy()) # ours - for option in self._get_all_options(): - assert option.dest is not None - default = defaults.get(option.dest) - if isinstance(default, str): - opt_str = option.get_opt_string() - defaults[option.dest] = option.check_value(opt_str, default) - return optparse.Values(defaults) - - def error(self, msg: str) -> None: - self.print_usage(sys.stderr) - self.exit(UNKNOWN_ERROR, f"{msg}\n") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py deleted file mode 100644 index 0ad1403..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py +++ /dev/null @@ -1,68 +0,0 @@ -import functools -from typing import Callable, Generator, Iterable, Iterator, Optional, Tuple - -from pip._vendor.rich.progress import ( - BarColumn, - DownloadColumn, - FileSizeColumn, - Progress, - ProgressColumn, - SpinnerColumn, - TextColumn, - TimeElapsedColumn, - TimeRemainingColumn, - TransferSpeedColumn, -) - -from pip._internal.utils.logging import get_indentation - -DownloadProgressRenderer = Callable[[Iterable[bytes]], Iterator[bytes]] - - -def _rich_progress_bar( - iterable: Iterable[bytes], - *, - bar_type: str, - size: int, -) -> Generator[bytes, None, None]: - assert bar_type == "on", "This should only be used in the default mode." - - if not size: - total = float("inf") - columns: Tuple[ProgressColumn, ...] = ( - TextColumn("[progress.description]{task.description}"), - SpinnerColumn("line", speed=1.5), - FileSizeColumn(), - TransferSpeedColumn(), - TimeElapsedColumn(), - ) - else: - total = size - columns = ( - TextColumn("[progress.description]{task.description}"), - BarColumn(), - DownloadColumn(), - TransferSpeedColumn(), - TextColumn("eta"), - TimeRemainingColumn(), - ) - - progress = Progress(*columns, refresh_per_second=30) - task_id = progress.add_task(" " * (get_indentation() + 2), total=total) - with progress: - for chunk in iterable: - yield chunk - progress.update(task_id, advance=len(chunk)) - - -def get_download_progress_renderer( - *, bar_type: str, size: Optional[int] = None -) -> DownloadProgressRenderer: - """Get an object that can be used to render the download progress. - - Returns a callable, that takes an iterable to "wrap". - """ - if bar_type == "on": - return functools.partial(_rich_progress_bar, bar_type=bar_type, size=size) - else: - return iter # no-op, when passed an iterator diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py deleted file mode 100644 index 6f2f79c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py +++ /dev/null @@ -1,505 +0,0 @@ -"""Contains the Command base classes that depend on PipSession. - -The classes in this module are in a separate module so the commands not -needing download / PackageFinder capability don't unnecessarily import the -PackageFinder machinery and all its vendored dependencies, etc. -""" - -import logging -import os -import sys -from functools import partial -from optparse import Values -from typing import TYPE_CHECKING, Any, List, Optional, Tuple - -from pip._internal.cache import WheelCache -from pip._internal.cli import cmdoptions -from pip._internal.cli.base_command import Command -from pip._internal.cli.command_context import CommandContextMixIn -from pip._internal.exceptions import CommandError, PreviousBuildDirError -from pip._internal.index.collector import LinkCollector -from pip._internal.index.package_finder import PackageFinder -from pip._internal.models.selection_prefs import SelectionPreferences -from pip._internal.models.target_python import TargetPython -from pip._internal.network.session import PipSession -from pip._internal.operations.build.build_tracker import BuildTracker -from pip._internal.operations.prepare import RequirementPreparer -from pip._internal.req.constructors import ( - install_req_from_editable, - install_req_from_line, - install_req_from_parsed_requirement, - install_req_from_req_string, -) -from pip._internal.req.req_file import parse_requirements -from pip._internal.req.req_install import InstallRequirement -from pip._internal.resolution.base import BaseResolver -from pip._internal.self_outdated_check import pip_self_version_check -from pip._internal.utils.temp_dir import ( - TempDirectory, - TempDirectoryTypeRegistry, - tempdir_kinds, -) -from pip._internal.utils.virtualenv import running_under_virtualenv - -if TYPE_CHECKING: - from ssl import SSLContext - -logger = logging.getLogger(__name__) - - -def _create_truststore_ssl_context() -> Optional["SSLContext"]: - if sys.version_info < (3, 10): - raise CommandError("The truststore feature is only available for Python 3.10+") - - try: - import ssl - except ImportError: - logger.warning("Disabling truststore since ssl support is missing") - return None - - try: - from pip._vendor import truststore - except ImportError as e: - raise CommandError(f"The truststore feature is unavailable: {e}") - - return truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT) - - -class SessionCommandMixin(CommandContextMixIn): - - """ - A class mixin for command classes needing _build_session(). - """ - - def __init__(self) -> None: - super().__init__() - self._session: Optional[PipSession] = None - - @classmethod - def _get_index_urls(cls, options: Values) -> Optional[List[str]]: - """Return a list of index urls from user-provided options.""" - index_urls = [] - if not getattr(options, "no_index", False): - url = getattr(options, "index_url", None) - if url: - index_urls.append(url) - urls = getattr(options, "extra_index_urls", None) - if urls: - index_urls.extend(urls) - # Return None rather than an empty list - return index_urls or None - - def get_default_session(self, options: Values) -> PipSession: - """Get a default-managed session.""" - if self._session is None: - self._session = self.enter_context(self._build_session(options)) - # there's no type annotation on requests.Session, so it's - # automatically ContextManager[Any] and self._session becomes Any, - # then https://github.com/python/mypy/issues/7696 kicks in - assert self._session is not None - return self._session - - def _build_session( - self, - options: Values, - retries: Optional[int] = None, - timeout: Optional[int] = None, - fallback_to_certifi: bool = False, - ) -> PipSession: - cache_dir = options.cache_dir - assert not cache_dir or os.path.isabs(cache_dir) - - if "truststore" in options.features_enabled: - try: - ssl_context = _create_truststore_ssl_context() - except Exception: - if not fallback_to_certifi: - raise - ssl_context = None - else: - ssl_context = None - - session = PipSession( - cache=os.path.join(cache_dir, "http-v2") if cache_dir else None, - retries=retries if retries is not None else options.retries, - trusted_hosts=options.trusted_hosts, - index_urls=self._get_index_urls(options), - ssl_context=ssl_context, - ) - - # Handle custom ca-bundles from the user - if options.cert: - session.verify = options.cert - - # Handle SSL client certificate - if options.client_cert: - session.cert = options.client_cert - - # Handle timeouts - if options.timeout or timeout: - session.timeout = timeout if timeout is not None else options.timeout - - # Handle configured proxies - if options.proxy: - session.proxies = { - "http": options.proxy, - "https": options.proxy, - } - - # Determine if we can prompt the user for authentication or not - session.auth.prompting = not options.no_input - session.auth.keyring_provider = options.keyring_provider - - return session - - -class IndexGroupCommand(Command, SessionCommandMixin): - - """ - Abstract base class for commands with the index_group options. - - This also corresponds to the commands that permit the pip version check. - """ - - def handle_pip_version_check(self, options: Values) -> None: - """ - Do the pip version check if not disabled. - - This overrides the default behavior of not doing the check. - """ - # Make sure the index_group options are present. - assert hasattr(options, "no_index") - - if options.disable_pip_version_check or options.no_index: - return - - # Otherwise, check if we're using the latest version of pip available. - session = self._build_session( - options, - retries=0, - timeout=min(5, options.timeout), - # This is set to ensure the function does not fail when truststore is - # specified in use-feature but cannot be loaded. This usually raises a - # CommandError and shows a nice user-facing error, but this function is not - # called in that try-except block. - fallback_to_certifi=True, - ) - with session: - pip_self_version_check(session, options) - - -KEEPABLE_TEMPDIR_TYPES = [ - tempdir_kinds.BUILD_ENV, - tempdir_kinds.EPHEM_WHEEL_CACHE, - tempdir_kinds.REQ_BUILD, -] - - -def warn_if_run_as_root() -> None: - """Output a warning for sudo users on Unix. - - In a virtual environment, sudo pip still writes to virtualenv. - On Windows, users may run pip as Administrator without issues. - This warning only applies to Unix root users outside of virtualenv. - """ - if running_under_virtualenv(): - return - if not hasattr(os, "getuid"): - return - # On Windows, there are no "system managed" Python packages. Installing as - # Administrator via pip is the correct way of updating system environments. - # - # We choose sys.platform over utils.compat.WINDOWS here to enable Mypy platform - # checks: https://mypy.readthedocs.io/en/stable/common_issues.html - if sys.platform == "win32" or sys.platform == "cygwin": - return - - if os.getuid() != 0: - return - - logger.warning( - "Running pip as the 'root' user can result in broken permissions and " - "conflicting behaviour with the system package manager. " - "It is recommended to use a virtual environment instead: " - "https://pip.pypa.io/warnings/venv" - ) - - -def with_cleanup(func: Any) -> Any: - """Decorator for common logic related to managing temporary - directories. - """ - - def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None: - for t in KEEPABLE_TEMPDIR_TYPES: - registry.set_delete(t, False) - - def wrapper( - self: RequirementCommand, options: Values, args: List[Any] - ) -> Optional[int]: - assert self.tempdir_registry is not None - if options.no_clean: - configure_tempdir_registry(self.tempdir_registry) - - try: - return func(self, options, args) - except PreviousBuildDirError: - # This kind of conflict can occur when the user passes an explicit - # build directory with a pre-existing folder. In that case we do - # not want to accidentally remove it. - configure_tempdir_registry(self.tempdir_registry) - raise - - return wrapper - - -class RequirementCommand(IndexGroupCommand): - def __init__(self, *args: Any, **kw: Any) -> None: - super().__init__(*args, **kw) - - self.cmd_opts.add_option(cmdoptions.no_clean()) - - @staticmethod - def determine_resolver_variant(options: Values) -> str: - """Determines which resolver should be used, based on the given options.""" - if "legacy-resolver" in options.deprecated_features_enabled: - return "legacy" - - return "resolvelib" - - @classmethod - def make_requirement_preparer( - cls, - temp_build_dir: TempDirectory, - options: Values, - build_tracker: BuildTracker, - session: PipSession, - finder: PackageFinder, - use_user_site: bool, - download_dir: Optional[str] = None, - verbosity: int = 0, - ) -> RequirementPreparer: - """ - Create a RequirementPreparer instance for the given parameters. - """ - temp_build_dir_path = temp_build_dir.path - assert temp_build_dir_path is not None - legacy_resolver = False - - resolver_variant = cls.determine_resolver_variant(options) - if resolver_variant == "resolvelib": - lazy_wheel = "fast-deps" in options.features_enabled - if lazy_wheel: - logger.warning( - "pip is using lazily downloaded wheels using HTTP " - "range requests to obtain dependency information. " - "This experimental feature is enabled through " - "--use-feature=fast-deps and it is not ready for " - "production." - ) - else: - legacy_resolver = True - lazy_wheel = False - if "fast-deps" in options.features_enabled: - logger.warning( - "fast-deps has no effect when used with the legacy resolver." - ) - - return RequirementPreparer( - build_dir=temp_build_dir_path, - src_dir=options.src_dir, - download_dir=download_dir, - build_isolation=options.build_isolation, - check_build_deps=options.check_build_deps, - build_tracker=build_tracker, - session=session, - progress_bar=options.progress_bar, - finder=finder, - require_hashes=options.require_hashes, - use_user_site=use_user_site, - lazy_wheel=lazy_wheel, - verbosity=verbosity, - legacy_resolver=legacy_resolver, - ) - - @classmethod - def make_resolver( - cls, - preparer: RequirementPreparer, - finder: PackageFinder, - options: Values, - wheel_cache: Optional[WheelCache] = None, - use_user_site: bool = False, - ignore_installed: bool = True, - ignore_requires_python: bool = False, - force_reinstall: bool = False, - upgrade_strategy: str = "to-satisfy-only", - use_pep517: Optional[bool] = None, - py_version_info: Optional[Tuple[int, ...]] = None, - ) -> BaseResolver: - """ - Create a Resolver instance for the given parameters. - """ - make_install_req = partial( - install_req_from_req_string, - isolated=options.isolated_mode, - use_pep517=use_pep517, - ) - resolver_variant = cls.determine_resolver_variant(options) - # The long import name and duplicated invocation is needed to convince - # Mypy into correctly typechecking. Otherwise it would complain the - # "Resolver" class being redefined. - if resolver_variant == "resolvelib": - import pip._internal.resolution.resolvelib.resolver - - return pip._internal.resolution.resolvelib.resolver.Resolver( - preparer=preparer, - finder=finder, - wheel_cache=wheel_cache, - make_install_req=make_install_req, - use_user_site=use_user_site, - ignore_dependencies=options.ignore_dependencies, - ignore_installed=ignore_installed, - ignore_requires_python=ignore_requires_python, - force_reinstall=force_reinstall, - upgrade_strategy=upgrade_strategy, - py_version_info=py_version_info, - ) - import pip._internal.resolution.legacy.resolver - - return pip._internal.resolution.legacy.resolver.Resolver( - preparer=preparer, - finder=finder, - wheel_cache=wheel_cache, - make_install_req=make_install_req, - use_user_site=use_user_site, - ignore_dependencies=options.ignore_dependencies, - ignore_installed=ignore_installed, - ignore_requires_python=ignore_requires_python, - force_reinstall=force_reinstall, - upgrade_strategy=upgrade_strategy, - py_version_info=py_version_info, - ) - - def get_requirements( - self, - args: List[str], - options: Values, - finder: PackageFinder, - session: PipSession, - ) -> List[InstallRequirement]: - """ - Parse command-line arguments into the corresponding requirements. - """ - requirements: List[InstallRequirement] = [] - for filename in options.constraints: - for parsed_req in parse_requirements( - filename, - constraint=True, - finder=finder, - options=options, - session=session, - ): - req_to_add = install_req_from_parsed_requirement( - parsed_req, - isolated=options.isolated_mode, - user_supplied=False, - ) - requirements.append(req_to_add) - - for req in args: - req_to_add = install_req_from_line( - req, - comes_from=None, - isolated=options.isolated_mode, - use_pep517=options.use_pep517, - user_supplied=True, - config_settings=getattr(options, "config_settings", None), - ) - requirements.append(req_to_add) - - for req in options.editables: - req_to_add = install_req_from_editable( - req, - user_supplied=True, - isolated=options.isolated_mode, - use_pep517=options.use_pep517, - config_settings=getattr(options, "config_settings", None), - ) - requirements.append(req_to_add) - - # NOTE: options.require_hashes may be set if --require-hashes is True - for filename in options.requirements: - for parsed_req in parse_requirements( - filename, finder=finder, options=options, session=session - ): - req_to_add = install_req_from_parsed_requirement( - parsed_req, - isolated=options.isolated_mode, - use_pep517=options.use_pep517, - user_supplied=True, - config_settings=parsed_req.options.get("config_settings") - if parsed_req.options - else None, - ) - requirements.append(req_to_add) - - # If any requirement has hash options, enable hash checking. - if any(req.has_hash_options for req in requirements): - options.require_hashes = True - - if not (args or options.editables or options.requirements): - opts = {"name": self.name} - if options.find_links: - raise CommandError( - "You must give at least one requirement to {name} " - '(maybe you meant "pip {name} {links}"?)'.format( - **dict(opts, links=" ".join(options.find_links)) - ) - ) - else: - raise CommandError( - "You must give at least one requirement to {name} " - '(see "pip help {name}")'.format(**opts) - ) - - return requirements - - @staticmethod - def trace_basic_info(finder: PackageFinder) -> None: - """ - Trace basic information about the provided objects. - """ - # Display where finder is looking for packages - search_scope = finder.search_scope - locations = search_scope.get_formatted_locations() - if locations: - logger.info(locations) - - def _build_package_finder( - self, - options: Values, - session: PipSession, - target_python: Optional[TargetPython] = None, - ignore_requires_python: Optional[bool] = None, - ) -> PackageFinder: - """ - Create a package finder appropriate to this requirement command. - - :param ignore_requires_python: Whether to ignore incompatible - "Requires-Python" values in links. Defaults to False. - """ - link_collector = LinkCollector.create(session, options=options) - selection_prefs = SelectionPreferences( - allow_yanked=True, - format_control=options.format_control, - allow_all_prereleases=options.pre, - prefer_binary=options.prefer_binary, - ignore_requires_python=ignore_requires_python, - ) - - return PackageFinder.create( - link_collector=link_collector, - selection_prefs=selection_prefs, - target_python=target_python, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py deleted file mode 100644 index cf2b976..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py +++ /dev/null @@ -1,159 +0,0 @@ -import contextlib -import itertools -import logging -import sys -import time -from typing import IO, Generator, Optional - -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.logging import get_indentation - -logger = logging.getLogger(__name__) - - -class SpinnerInterface: - def spin(self) -> None: - raise NotImplementedError() - - def finish(self, final_status: str) -> None: - raise NotImplementedError() - - -class InteractiveSpinner(SpinnerInterface): - def __init__( - self, - message: str, - file: Optional[IO[str]] = None, - spin_chars: str = "-\\|/", - # Empirically, 8 updates/second looks nice - min_update_interval_seconds: float = 0.125, - ): - self._message = message - if file is None: - file = sys.stdout - self._file = file - self._rate_limiter = RateLimiter(min_update_interval_seconds) - self._finished = False - - self._spin_cycle = itertools.cycle(spin_chars) - - self._file.write(" " * get_indentation() + self._message + " ... ") - self._width = 0 - - def _write(self, status: str) -> None: - assert not self._finished - # Erase what we wrote before by backspacing to the beginning, writing - # spaces to overwrite the old text, and then backspacing again - backup = "\b" * self._width - self._file.write(backup + " " * self._width + backup) - # Now we have a blank slate to add our status - self._file.write(status) - self._width = len(status) - self._file.flush() - self._rate_limiter.reset() - - def spin(self) -> None: - if self._finished: - return - if not self._rate_limiter.ready(): - return - self._write(next(self._spin_cycle)) - - def finish(self, final_status: str) -> None: - if self._finished: - return - self._write(final_status) - self._file.write("\n") - self._file.flush() - self._finished = True - - -# Used for dumb terminals, non-interactive installs (no tty), etc. -# We still print updates occasionally (once every 60 seconds by default) to -# act as a keep-alive for systems like Travis-CI that take lack-of-output as -# an indication that a task has frozen. -class NonInteractiveSpinner(SpinnerInterface): - def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None: - self._message = message - self._finished = False - self._rate_limiter = RateLimiter(min_update_interval_seconds) - self._update("started") - - def _update(self, status: str) -> None: - assert not self._finished - self._rate_limiter.reset() - logger.info("%s: %s", self._message, status) - - def spin(self) -> None: - if self._finished: - return - if not self._rate_limiter.ready(): - return - self._update("still running...") - - def finish(self, final_status: str) -> None: - if self._finished: - return - self._update(f"finished with status '{final_status}'") - self._finished = True - - -class RateLimiter: - def __init__(self, min_update_interval_seconds: float) -> None: - self._min_update_interval_seconds = min_update_interval_seconds - self._last_update: float = 0 - - def ready(self) -> bool: - now = time.time() - delta = now - self._last_update - return delta >= self._min_update_interval_seconds - - def reset(self) -> None: - self._last_update = time.time() - - -@contextlib.contextmanager -def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]: - # Interactive spinner goes directly to sys.stdout rather than being routed - # through the logging system, but it acts like it has level INFO, - # i.e. it's only displayed if we're at level INFO or better. - # Non-interactive spinner goes through the logging system, so it is always - # in sync with logging configuration. - if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: - spinner: SpinnerInterface = InteractiveSpinner(message) - else: - spinner = NonInteractiveSpinner(message) - try: - with hidden_cursor(sys.stdout): - yield spinner - except KeyboardInterrupt: - spinner.finish("canceled") - raise - except Exception: - spinner.finish("error") - raise - else: - spinner.finish("done") - - -HIDE_CURSOR = "\x1b[?25l" -SHOW_CURSOR = "\x1b[?25h" - - -@contextlib.contextmanager -def hidden_cursor(file: IO[str]) -> Generator[None, None, None]: - # The Windows terminal does not support the hide/show cursor ANSI codes, - # even via colorama. So don't even try. - if WINDOWS: - yield - # We don't want to clutter the output with control characters if we're - # writing to a file, or if the user is running with --quiet. - # See https://github.com/pypa/pip/issues/3418 - elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: - yield - else: - file.write(HIDE_CURSOR) - try: - yield - finally: - file.write(SHOW_CURSOR) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py b/venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py deleted file mode 100644 index 5e29502..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py +++ /dev/null @@ -1,6 +0,0 @@ -SUCCESS = 0 -ERROR = 1 -UNKNOWN_ERROR = 2 -VIRTUALENV_NOT_FOUND = 3 -PREVIOUS_BUILD_DIR_ERROR = 4 -NO_MATCHES_FOUND = 23 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py deleted file mode 100644 index 858a410..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py +++ /dev/null @@ -1,132 +0,0 @@ -""" -Package containing all pip commands -""" - -import importlib -from collections import namedtuple -from typing import Any, Dict, Optional - -from pip._internal.cli.base_command import Command - -CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary") - -# This dictionary does a bunch of heavy lifting for help output: -# - Enables avoiding additional (costly) imports for presenting `--help`. -# - The ordering matters for help display. -# -# Even though the module path starts with the same "pip._internal.commands" -# prefix, the full path makes testing easier (specifically when modifying -# `commands_dict` in test setup / teardown). -commands_dict: Dict[str, CommandInfo] = { - "install": CommandInfo( - "pip._internal.commands.install", - "InstallCommand", - "Install packages.", - ), - "download": CommandInfo( - "pip._internal.commands.download", - "DownloadCommand", - "Download packages.", - ), - "uninstall": CommandInfo( - "pip._internal.commands.uninstall", - "UninstallCommand", - "Uninstall packages.", - ), - "freeze": CommandInfo( - "pip._internal.commands.freeze", - "FreezeCommand", - "Output installed packages in requirements format.", - ), - "inspect": CommandInfo( - "pip._internal.commands.inspect", - "InspectCommand", - "Inspect the python environment.", - ), - "list": CommandInfo( - "pip._internal.commands.list", - "ListCommand", - "List installed packages.", - ), - "show": CommandInfo( - "pip._internal.commands.show", - "ShowCommand", - "Show information about installed packages.", - ), - "check": CommandInfo( - "pip._internal.commands.check", - "CheckCommand", - "Verify installed packages have compatible dependencies.", - ), - "config": CommandInfo( - "pip._internal.commands.configuration", - "ConfigurationCommand", - "Manage local and global configuration.", - ), - "search": CommandInfo( - "pip._internal.commands.search", - "SearchCommand", - "Search PyPI for packages.", - ), - "cache": CommandInfo( - "pip._internal.commands.cache", - "CacheCommand", - "Inspect and manage pip's wheel cache.", - ), - "index": CommandInfo( - "pip._internal.commands.index", - "IndexCommand", - "Inspect information available from package indexes.", - ), - "wheel": CommandInfo( - "pip._internal.commands.wheel", - "WheelCommand", - "Build wheels from your requirements.", - ), - "hash": CommandInfo( - "pip._internal.commands.hash", - "HashCommand", - "Compute hashes of package archives.", - ), - "completion": CommandInfo( - "pip._internal.commands.completion", - "CompletionCommand", - "A helper command used for command completion.", - ), - "debug": CommandInfo( - "pip._internal.commands.debug", - "DebugCommand", - "Show information useful for debugging.", - ), - "help": CommandInfo( - "pip._internal.commands.help", - "HelpCommand", - "Show help for commands.", - ), -} - - -def create_command(name: str, **kwargs: Any) -> Command: - """ - Create an instance of the Command class with the given name. - """ - module_path, class_name, summary = commands_dict[name] - module = importlib.import_module(module_path) - command_class = getattr(module, class_name) - command = command_class(name=name, summary=summary, **kwargs) - - return command - - -def get_similar_commands(name: str) -> Optional[str]: - """Command name auto-correct.""" - from difflib import get_close_matches - - name = name.lower() - - close_commands = get_close_matches(name, commands_dict.keys()) - - if close_commands: - return close_commands[0] - else: - return None diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 74de4d2d4f31e0e2e63f81bb3e33c3ef16622440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3254 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc deleted file mode 100644 index 6685a93dd4cf556640d980c2ea42b2636dda4169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1633 zcmZuxUys~05V!Mxv)SGsPLwO93POEY;1UoLAcPRoQSov*q&v}v&??Ht-re+)IA=R| z+Ew=H?t{P^d?ml~#24V9LMr3z_PRxQ*OQs?*faC-x|NrB)gT%4vQzriFd0@s5>%sP z)a%^xUbU0#U_{ZcyL9h2ob3OIh(`vuhzzK6V3oMw`4>(VJ_ zRa(?SW@Sl<`sh02bz0I{mM_vP%0 zy9gMH5=>BH5S*CANGxJfn^@GL?ja&J^`;JShfbL^#i`XqdCA$z(ApX-H^8YeMV1pdwnn>xcb#+;BDve_@T(sXSNihErC?XF@rg z%9hu;xs|{O_yNpgnBsRJ65XI@#>!k-5_jee#z-3a3p#t{boLME`TdpKnH}Wx!d!Ws ztvS#RR|9Dg+_|0C4Ty1wZlGE&A71Wt4y-j!E06XDC*co(wH@tz` zy8QC;lg<_=odeV2r_w%0U}g0YIe?yhy8QUD2;tA^Wm|Bn`A@^^d6CbkaelZc{~T+3%aQGF-5BjdX7oEk8JA;e@jbTEF(8%|$q6ZB3%F%RM-hYxuYe zM7f(P;=13st%siEdJfhZHO`2+DoFn>woIjd+qYm1z-oJv{57hj85 z>%ZWeOR>Mx?tKZ^y_|IzDGjGLl~p^GHtbymhule#TM+_zxV zEWl-3-v@u<8z4URaDY9-2Wo774tD-AUU{C6_wRJ;HRq-AD)23^xA1azyEh^@^mObi zFYS{|Q{|^=#YkIH;Da>1Y_n1$1CpDjgyq24t$^o%8xRNAHLpw|xiTSk{=U{}RJOUQ%Bct(9-nVO%ztjCA_JMdPfXfVwU3`E8+cyr(e*q7~zQ_Oo diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc deleted file mode 100644 index f381e4d3f5c2249e5c98d6e963f73eaf866692cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4321 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 aSM6n|>Moa->&px0PF0r{$_tlH&;KttbOT}l diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc deleted file mode 100644 index 45d7509726484eca70a93b48d0859218e0815bd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4248 zcmbVP-EZ8+5hr;(9*_5-lPt@YKT_6#n;a17>ZWOmLN(mlZPCItf;i0s(}1P8t2;{k z@-8XmgcDFyes%u_>7fsO?LSjsU;EVmATZLRzg_aA)2Yov@4)5E?(FRD?96Y5S+D14 z_`TLY-TV8xru{=Qi$4?06FmHHXoyDiSo5m4?&;u-*hm^)LzjJx*i4#UQ_*H@B`vR| z=w@suZLh6pD|V8O*GalwSMja5m-M~9qV0Gk8F&Llx8v1h&0ABn6W>VIz4hd#cQe`W zHdJ3HzLnheZtEJ=&Nk_tbKSf9D~)tX@3lsHv~$|XV3xewwi)h@)fb=Rq;SVk|1CpOr;k%1!q^qe=b@I|_@8O+$IQ#a|1|6Fhte z4b|iwc?QwF1~EL7bV!p}uT8H>Ez+VbVpE&8H*s^+*|SKSIIqo9-Rlq&mg|a@XW3C2 zX91}X9z54I&2jOY54btb7>p@*_gI$v#8HD=?kCeve(k;wQ@L3&q0Eg^LcfCP-I7P? z*kzX{b$L$1XfL9SZ`YGQfBMqRS+ z6{Ic=_|!cLrfva+>L^n;fM^y|m!^ji%Tnn%a(I_stVBt5*x>HmpsxE6n#b-JwNrfQ z?ksHL(n^orFKUx-DWh&($Zu~~Iu;sS6rkKO;h=uUj)x}+M$XN`01T-PsobBS**@zxUG zTH@^`zP-ddOMGXE?=JDZCBDDJuPpI{C4O~@U%TY@b)pl4G>9ofytuKyP7vO2Y+Zw0 zZb}PD%Yfb}jQv~SZ=V|{x_qB)lJ-nLH#DFxbmx(!fUO~A?_WobC`EAWVDRzw&=jUzMYIxH1cw0=EkgH#GA@KU zp>fWn8w~FV8^A5$lM5#xio#x)OjV*20?h%v(8@)3A%?hUrI}A?&P9J5XS+c>2Vl|0 zz%EY2rlOOj@pR7gaz^(ko3jnhLeW5<=+}DvNx&x*>&Vz;lyiR2U>`={6``d`dNCMQaSK)Ow5=O>_6_yOP5}WeiSCZAmaaL6# ztAN2Dv#iWTM}bAnSb4xWW#UGZ;#Ji1szGEtlhb%lIMobkZ#fK>zl?Wf=P9-vn)a-R+o$spJ3eesf(vzB~86I-zYZ ztRq@AlnN6i01q2ja{lXsxImm2a6+QbbYB~5Xcg`teq?l+Gkw2#D#x0IRnao4&RTN( zq*2&2{Zv0O5p{^TSz{*U9b&vOPnwYG6x~xq>4{bJ(BJPOEhDDQH;t1PMptGA<}_!G zbMwS52B7WJDrQ$_&_A=FuPN6g(6zrttT*;a8`O&th_T}bDZ`RwtL$p$3e+G3Il+I6oqy0&rwa@O&dP+n0 z?7ke6^s5s6@60u*(aza-&NWz~%l=ZhvdlR9?yP&R%l#J*fH9pHpAAj+Ls(g~IKl|g zEP7X*o4qFo?YWZ-8^R(qrUez|0X$UFtcIN~R}c6A$yH--`AjWxE;3>Ch53q94%%(Z>)~3f0coLpgH=MIEH&_Tk`r z8LG97D!A)fgA)H}LTSv8@4PI-5GUO$<9NDI7q}1kTiqSLD+VqHRZ_7+B9`!`n3_1rF$q^ zU;%(>LBA?kTdI>$AZ&n_s(fK`C|(3uCPPGQD)d?C_b+VrM2`3BaX=$%RT-{dfyLZ- zVjyd03NYnSs4OX3IH8(wN9wQ+RVgpJ9O%kXJraL+D$F!UsJO+0L+Zy-dVt=AZ3rvK za|%~M1*7ipzsPVu0q%P59tA9&m+SR~av$Zae_5@vp4^DJpG7INK@R(DgjeMfA4y7j z7W-H>%2$30O0?mIb#gSZH_m=0d+qt*#LB{k<%fcB<{l3RXkbtwan<}lPHnI<{VfQ- zkH#{rhGTRMM|TVxxL2W}saxN4TZUmN-ula5xJy%yF z!~3EYXX7#Q6MG*5!UoD$`A@DQtYRv2ms-tRMQYlM z5!@EyM}09e3u~#fiFd9GBEXB1Ll&iv@+I$st3p{$nJOdrwgRuJoqu4e;PjR@fW^1v z25R`ILi6@jwPg|E>ne$mz$H>tz@glF>A;ns0#ga23J2PV{^u|(Lii8LkkZOvOJK64J7kG#7%^c>l?n`&F56a~SM;16e)(7X_Z!NaNc3)a- zmv>$?Cij_rY7O?@Kr`!PU~BJ>QCe|1aCGjE0t5dGD`@2LcO#5-hic%#-E( z7g-kNjL_4kj~{<|dP*W@g7YN@)|HB-$uum_=Tduut4icCowWTqARc2#GNQ81Y-XQZ z(8)O&IBy!@y@5?Z>V~|Ox_7~a#PMO0&x(IoVi$7;yq%2~MaIYTDv3oAbET5;`LEryCN67C znusTlwGdGrYx5T3tj#+|7IV2j^H$N z!P*001%f}T62UW`D;dlRkwt3cn{As_k>EiJi(n@-)=FTnFB)hyq=B{SitV8yo{9`+>ybXVs?HTSqxX5{0ePb)HrlXNZ>e19^*koYaYyb z&PAk5b+i8Sr78pum8kev%coz@>S(!0gsP$x)c`k%RIrF- zFi(qVlm<~8BdL!ARs?yWR=Tbx(@P4mcLH`aa0R8Z_z{7J1OkAiHyq+N(2d~o_(`5# zuBC0F_*NQhO6!JHjYiAnaEPqXeqDA#;LGDLYK7!^Qj+=Mku5Q`cZ^*>3I2M$bdG~T zV@oZg(ZO)YpT}v%_>i+iMbngPM84sKYtHh~mo+C?bJphsGf`w~=LyP$fv?+m5kmM- zYCmEIgNH;Dle$Cs8J3Y+;7u?|tlhIB$xX%4Ju|yHU3+CD$XNF%g@q!CRORQQs7fko zlBctGi(2>gK>0HqD8B*lY-juDc>nhLTO7yx&gsjx=d)|F# zd32|GjkeCztyKllZY1V1rZT<$$N-xtOg8U5p+Eb_4D(`&H`;>s$ZYRl8?Fp&yLlBc|Ha$ z-Q7xS?VFqk3xuNXP`K4-lYAs~JCQ{ip=iR~2r}^qYHQmc+{4q$m7wbgva|N8l3`u# z$M(vFvUd7myx{S9xN-f;lY*WcaYW$91b#|#ToW7p^|4`Ap!CwIqEFKvN-;_WUOR!L z5H0WqO);YRj|hBB;Fkc}O%oKCO)pTtc@0tJf5NQ%2|(NS?4Eh?e8+KId;N2O`QIIM zTzk2H*U{KLaOxLe(9`WO%%hBlq4q=4vq}l?h2b-lk=0Bq3|SF_-K->f3EfSLd5AZg zN0}63QkL2RLG2(cs)TN!&k(;M-mU5eqeogi03d^zj-qWrW6yPb=ix8R%;3G+NNvPm zojW94d+L(99YL{ZPMYkagBWc(no*o4wWA*XAAdB(8yc=!9zh*|{+>lBf2xvLhLUW2 zGWqbXq@px+9xdXiE?>s?`h&ZxDwU*igu@U6CbYCWMI&Rn81Xe}Pko8G>i1bkw?D1D a@EO%1No(6y&)&0pXlm-;PUFD6-}xUK9VdSP diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc deleted file mode 100644 index edfc13ac6b9d5d1d16d66ba17178a8ae9c77da0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2151 zcmZuy+io015S{M1?#*^CB*BC*5pl#y@opl7grX1;8IvGIwq%nFr7^(#+&0tgYRW^HGKGNZ1o?yBzTI#s8(=yaL}Jg>;s;5WxG{=mun z18c_DFys^jGZ;yYVD?J_QqO5X;g_anW(5{Oo0-~~6F9YQrEca0Uai|{BWniDtQEBC zxs$fDPSD8~f`xkSri97wP3XQ zm4U-LY~hs^TxDe2=q~;Vw=_1oL_5!-wBiyp>uDkt{JLvJmPI-1Qf;qqZEbF8cl-Ob zwe{_7Sm}KG=-KAhcRTChlSkW6bZ2{KYjfjqJy}P4OYn$=@uY}RHDbK%Yo^SFyq@y3S+vv?DtX|fhrTFi!MI=b~F zlB3gmk6$-^cwh!!<$mOkz~&bN(9$A~QooGi7ts(bA|53#d9PXf?~J(QejMfgF83?R znSYR|k-xfHZ%=aAF8F?x2%hm=Nq>-}+*gIq3Ro|Bq@vxF*C!>pR8gABUOgKxuau$~ z`acz=N{U=Q_aETahkmcu+tH5TsuKA|Oy;0Ly$xdxhP)4AV(b}vgb_xWsVK9Q$?U1c zoT;to2{|FmeeDwTa;7fx(EEg9r2saKjWJz~#;w)WC><7%k5Q%@Z&h2WLh$h|h<=9C zxd~$f81DN;&Jn#|j>hzk-?g>HxK!GWM@15IshudsxU|doAgWTOtr1U4fiZMF?Zp`j zA#$mk5vw)u6&@Ic3qm`CLSzwa+AES=J7pv!7y1%F$c4g<;2sV|QI%MslBa{;4e=4| z{G0VhMaKKXDv3oAbET60i!Wtg#v&?{e7IT`O!i;${AE8)cKhX_8Ws8Hy?b~25^8ew zv<76qOv-+k+P-OGJIBE1K|)l_gcgw^o{e^<<|J>Tp9M} zc53%D`Pz!aP{t-4a`xDuARcwHAA&NWvV|#}5=HmS6G9ASZ5tD^XCIjp`i=3tePk(z zk%=`im5cJ29z#RfUs4_Sh>b1*=lj+hMq0Md_)<4MSGMux!sF zxs(iZsN(RHpCM*ld<+K)iUQGwXqC_=L@!ow4NGWF;H^aq#3Brdck$rfmTQqFy|GYR z#4YrxAwqkMN1r|K9$1!QF8nErbGh$=Fr6Cml4sUUyH1TyFzLDr_$#KP?EFa7|3 z3zlIS$0m^2oZ2Tq+v^4^kVXL<5e*S;BK81t6fKey8 zO`D_*FMZSe*Rz)X@hpM%?lo~2zvrgKa0sjvH*w|x8)i&L5VfNYk+HKp-2g)N&I#Fz z)1NgkduQ&_m;Jxk5#pum9VK&nfuri1rjR>%*rDb^jtGd$=T2w0mg5qz6; I$y~nuAH@+b2=byhS4;IAsFbv2e0}7iXPG+fDyC>ilFHBf$Ad2A}uSHD21f# z>_U5~{R4V03fRZ~C0={#U&y5$YIlQe&{^=)aIhSH^UX-@?rwy@Zt(YKHAUzzyV*8~ zp{KCacK{4AT%!i37+c?|ora`j^hr${H+4s!)?VYM{^+}P(1dA-(N~Ch%)dd*=k7I0 zBNoiiQTR7xMMv0pKjn4L6?pX9N@;ldCvDT@f?0R=jaki z4S-?L5j0(r##z#aEJ4GCHvsL2XzBfo#12K8&L3f9f70&@=5b?=~2MJA93Q#RDBrhC}!wyp8V0>>z^w zTw>sLM9l7{;*3>=Hunn2bIr4L)a;d9XR2zdI+vTET0H2*g=nwDMy~kqH9lNCX!7|f zkLPV4H#`?QK3tIaI6m4j`(4#dvr1?#MP5%gSIQmWASV`f0ZjCbVEonCcIn!Hmv)iqEE>e4MCC z^W!crF7lGA1Zqv*)S7H+O)S%CH#bD~;vKk79RTcM$D2449AM|4fCTuSL-D(SffHfs zEbebj>J-jB2Q7natR%}!lx0oJ`kI43$+DMyUfUXB=Vuvf3vk?C0VnfbRf<;fO!Aj~ z1y5UqbgWQzYzBx$YHA9ph>>5AXjs6Mt3k)yp_e$Vg_3_*jQ!Z-U1w Up`O^GS9ahgXo9Wq6TC zb}3mb6{L~dH>2ot8$fz0@|Whd4@F-31DuQdomo;Am9#)hVrS=a=FH`M=R0S!Mx$on z_mJJ${QH7o{DT@Ne>NKL;K~1mf*YL0MnG>fW{DY?jOtcwC3avZPT(YN;3k!zl6Zlq z$LzS8)Phy7yN#1DL3Z^l1ME(Mo#eKvj} zc`P_XW39!M`*9c#MBZ|g^=`VS zyqkrP;YKW!eJjcf<$c&MqAU$#<$RQ)(lS-!mgt4uy^n>=(V;5i3Ut-F3D2~Aj@JCm zl#2%+$ZXKRo+U|`a!ht^+`04N9aUNX==${=>+2A^(3eqKbU0S)L}^}xaU9Z;Xl!OJ zOV!7dZ%CO*we%k3WVA6Lk+rONKO3Z6dAFm!9*4fhttj2Tp2e}~7MY}u+hKP*?1}dy z?1ws*)&&hh!EGrvg%oKQ7r<2gZYX=AxV=~0!$ENzXk8aMosvd(WmJexHYoaoqD$9z z@;8IVJ9zRhQ3xYo+z3q00*jl0&8@)Ui`?avhj!p{PgHnSc%r&&a9h+iU0&le7@4U$ zRfjL>@w%wW;WSV%-YT3EX8lUBJ51nBCSjz&9a0goE`2w^oat8)Jqw4zl$Co#J zyXNC}GtK)rxldOs6MfBoxD!S(S=`^0S>pH0%Yq1uC-SzQcX#-bev^*NeVO(AoznWb ze{DQrRSPIrieezswJyUwOnxRRf?Vf5^ z$~ICQ0}RjERFXjjrk2Tx-#pE zqKH> z-O^$66}?`&kFz{If9_-5{49z(n=|Ja{cY1``2Wy!me}yzO#;stdhHVvRi!+Cu54U) z-nF1(@^eukb7+wK4HcNs*fJuvZx!s&v?N~wK&*c@3S8}bZ2E;s&YE*l2`!Y4*iT?Z&Xz~|35tdL ziQyWbA`t95pTn!l_b%HtT9q~BO?+Tj;POg`@uS@D4kRe0i1++3^~Hm}kWqqm82jT} zZTmM1KMD8z4dF|XWIKYdbnk^}PjG1QLw|DsAEL2Xgt_o{BM{P{@IjQB^mjvy4QOT+0n)VahHktiou3|Hj)qy43_Ds_{$84wh9bwG-!u(-4H-#;zP?fyoXw{hV zVfh@?b{!OxUj-FvYlO8?0c`*kBgWYybKfa|u@Tz>TDbMd+II^Zqt3`30b!3U(1tVo z?J)~pmm(|#Y&GG_P4X1!hkei^3`K)5Lvc@xfibcDv4$4Y_w_!7IK;ecx3d?f+k&ez zWea5od@=?>u8#xRW{mLG=}zLCnguVE!HlFgbNLny)^a2=9z(fZy-m4U{RF!RHQ}BM+p-bl>dA9#x5)xBIO~RSzS=%k_@8%wezJS7 z+`Ee3H3KA1w|?SAMKNpo^?`34%i#tG9V3e|HZs-u9xd$hZgjW_oXb{_^ExV+O-%< zf;Lawk9FN814}_B7DLm&@|d-TXWuF7hmrJVZ%A@?L99&@k)?(bDJf`w86qSkSc3tW6%2;BB5!>>TThbJeE zb>^{}>9IPJnv%+F=6>f^Jmx-e!ET_oC!S^F?IB>DwQKCcKbM|eVof%D<$tgU48Dxj z){u{`wU(6E>7-#IIvrK(bdrn@Vyf3Wo%@3@9*`<`6e~V;Uy(o@(c~w8(9|Xuu$5`q7k}{6E~#qilVeUhk_L7nC%(J z_-vci?DKQxC9waurfL3wIPkq|o8P&P`K{^J9$#G6vsx`xq5J~wqda7RWwuMZRBo|H znX1%FlgpI*)_bg=89ayls!d1anQWH~AA? zM-MX{U7Z79_r#u`qiPm7OpESp652GNdO1>@h+xuv{|wdGYR2ueSNG38w=!M{pr cYkmoZ2amjfPmQ{X4-TY;OL(6CYvz*mZ$LiRB>(^b diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc deleted file mode 100644 index f6c3855a60d05dfcc832993e501a8ce285a442cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2972 zcmZuzOLH8z5gyE79y_~BE=7tK8A+MEvng{|s$85DOMXyxN+}ne3KbtF<(e7|u*)Im zB>>A5x0WZWD!J(3yARaSe;_{wSD*YBY{zjoW>=zQV+*|vpaC?#{?M4Z-w!P)&&b~= zs%KeWVdHwC(0C83{4WS*F;ZAD{@Vp9?bs%$JB3ryn3itrmR{_cK3e!?5C=wgi%uEF zq0zmfTlV6f(fy)duElFc4~q425D$#rDK^R*@eQMg#b&t`Z9Svr?*bE?ucukv~bA(gicMs?O-d<5>X`w@@YQYmFX8fc1(W43apGLqBHA@RPEC7+J z=s1b(k`v0V_oZ26YD=PLO@tYf^#xZ^9;AD4c+_pNe|cd`UEwyqJ7xiJ!x? zZ>Hnpy5!^OEYC!pai#L{={s^PGm$oVHQj4!CdX%h*BD4XZVXrcIJ$ptjPCBOz!*1q zGfv>PaZ#nkIBRc{9D@VM#8GpuyRRIUw_#^_7lcRb_Gf$FdYz>XJ>Itie~Zj_AHBxp z(X}PCzoeR`shG;lfz?*U1qCbi$;Tj+bww5gX`}1~IdLw@359%54x+;QD9&1^JJ4WubeY+fVJIHZG7!`U%5`LMma9>>wT4qkBLOOh1fpq#(VjF7$ZW|by&2cp-K zUU#o$2XKwDRHegyOT6vum}jTSOZqM8Ci>_aHH5qkToFKz<#Og=tDGveYkU%jh;}4b zVhuDApumJFFk^@=h@mTxG~$;ieg#6i2#3^Od%Idl3^);vI&k89pvYYiAqfeEpGUm^ z*`7@XsDBswl+17Z7%1@vn35rotAef|p$?$RGY~)?tU#SF>z|X3dDWxo|K~ zEo^4*Th$F11Ns1YaO`)=T~Ht#P%I}vEW5P=8}GspQrus-(C6*r>c03B$N<_tw1FMN z;1H+~lw744gm`16C5WQQMj^`uTsnM#bii4z(kBIf46_{51EUa%N&PCmLU#mz3eT(J zY}kqWFPB8(={_32TwNf;w7+Df-dU}mK>k0$T~}_1bubhU(E8S^$p0&c*U|7AR~7HV z@X%|ciiktVxHMac4_4FLsA94*Y!|-=?R}{7*C413QT*QX0_nz+& zY+=mjx8I2G8y8D#z(R-ca0W?Ir6o@i9VST$&tHLhFG-%lld&A}lZ4e7bZ_R<3Lh9m z4)BIsQ=MsdCgE)mzkme=l1E?~0#YlX9mtO29qfazHA~>AGg(>I>+qYZeX@TN8&qhy+`ONtHr3z z-C#8;Q*jEPM&`EZ!F3yvXUFFLX$QK^os2h(!7A5}vLbKuK)d+${t;l4EZ+iwU#t4= zkLHdbC#abOGkEsQE!W$x8?D&b;%2hS?&}utZC1z;=D)N}9{Sc#836mGVWsZCXWYkt u92eq40~f*w4Mg>)LZO5GmJSc_9X8KbVD-or>Dj%uk{%=!&`D@-IX?iYY%|IL diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc deleted file mode 100644 index 904ba3f656b58d8ea9a709eaacf3a7853ae6015b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17726 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 PzNby*CVP%d|I+^g7A%r< diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc deleted file mode 100644 index b7606d6e3ae119613c4b4a1ae486771285f3b7da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5365 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc deleted file mode 100644 index 17388cb66940aed0dca5f0edd68bd4822917d797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6526 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc deleted file mode 100644 index d889c2995807d996736dc90ec9641518b5524278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3333 zcmZuzZEqXL5xzIx9Z#f0S(YllcHz{uS(IdwehE?`FzN(F(9|fZxInKBPN&-?dD6X5 zyL*yFP(WJytA0UIK>FB!(BHCO`>Fq+Z-_gyM^TLIBRSli+nJr6nP+Cpb~`ZOd1L-| z*k3b@f8b>KX~5(e{KVgZP=lJ85#qm1;%sTmcxUR=Rb}QcqH}rTVyPa=_oB39_rRS~e z2l;lmo!<%Xm!UxpcHM(p61nZ3#T~oQgi?fOe z7&%|1Lc;%g5*KBWCUKTdSyaS117?uqw4BJaEO4p!yv*~spj}IC>@p#MJ?H#7eU%n! z<0R%qlnx_a6;UiAUY4lY+kN@``4_vpxXG7=ka3p9sPYTWOAgFilb8z@aduRtoaL;L z0(RI;>!rw#hP=$9EG?M&;2pM>rpw|Wy`79%au~5!lJNpIJdMEcc*LlBI^m^ciHs)c zq}H34G#$dh(WVH#Cuu>;6Oo{=mLC@;&)_FM0m6*Xq(*2_GqkA{I&_6LsQbnV8`NVi z^_j=~JCGBsIdo~02Jj}J4#c3PIxma)A?DtTe_c1ban4&@aGPk_r;< zXN<^_R96~EUJ6O(>KMHiBfl!jlY+2U39I8rV$MFTmG#JPD$WRnz*jQO#6oIG(Mc-D zWN&YBD#v9(1e4XIKRLZxu($V9axzYnu{Ms7jK#-{?6Wbrjua)ynT%;HW3-hrh(Qjq z1BqCYVVW^PP8b-lFuSkS^vG_)(}^S}Jf2J#7uO5O{^@&+q3oDtho7K8X2yYW zU{aG>)TYkJz;vMAxo2Lz@i7e`OC6C_QEcSyrWe&?n^U zF{EDYO#)Q{;!G+5f_at6bb=X~=8&n~hH@wq5-dm%OUk2c7{eOnVLlwkTsdQwP2dQp z(?+j%%7n6!1VWaaMUq!+`tj#w@kEkX9Fk$lNm3TWl;;|oq#Q0KK4lrxg{j}Q`6dK_ zZy~vZ1cTG{ln>P_0=r>{nCcN&#j%vD4%Vg!PQjzOvG>Yj#(7HF`-+CEiwsvAkg|+R zREou7#LH>|70eMV8~)AUAAsurq=Rvpv%#oJ6J91v%5-q}i5Q3kvN|nBy-7*M09<`M z$kP2m4X~f}Kl*SWQptK(xE}!G2T@wo^=pvSl~)WF$Okm4mFr`Pr?9v9F%Z|ZmOqyJ zFSm8gasS)#I_7P2dVi4^^D5L|Ql`8)c$5?Kkw|RNd-Y(W#8Rj;A37Z5_k}StFU>PM zHO`!w^||rQ-Lr-?XN{S800r{gI&)|4fz2Px+?gXC9KSYqjH9N+47X+t%xhnKv_MHnq=f;B1`vvN`i_XnTG`+lNO_W{&t;LYW23*na^8&i~!NHeQ>5HbH(x zgtGP8Fb&zJ-pn~RsDF;wb1qgd4ZRaux&|vdAiGYRhYk(E{^qR7U(K2qw=O~Uh{5{} zx^igoKgru#+a?xv?5ln%O6YEkPItd7j-i**Wkh{S9&?h83dnX!dKz_$ctWb{<_aZy z0_{l9KhO693?(R-=n4^hZRg2lNT@JBdCr|~C9x;EfW|tDgoCF{upGrg#@9lY$3U_q5ANj zBM2y+uzrAeY4Uzt8Q2d8|kdRsT=rx02KJQN}%frjTfEzH#g8;=;tXk zj%z410diky1o0g-|6?Q=ily-AXz85vck1weh7D2N2jUwo6FwGv%npv=(=j_v(Acv7 E4_da<0ssI2 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index 3d52d19e5a68027141ca7374f3fea9c76412cd1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4979 zcmai2Uys|y5hp2%qW+%FcRv4j7^kkQ#wR5x+9r+>1hL~Zh2a8mS|dyYmPf86o=K73 zrS5WqR0KJ{`XLYPQy=agilRV2M!!P)uuld0)DKXgO^~9$SxR@Z(xeo)+}WL-*`3|_ z&8*U9v!>yBs=wdAe?im!PQ>zKf_MwB_$!J~3-wrYi?8nLiZ)yWUn4FhrfcfdSBlGt z(K5 zHLj9rEY5xOj(;jqmY5l^F$4sDR-j76%Z|%{LvG|T33>i^D5~f)m zr6bWXG)eqXC>#4xKJa=7kZL ztx?JoKaM8M%lv!@J}YZcRxj z#zyFOXkGbs2Fv;bMp6<#zp2Kh{XXNu$%oAG!##hL6GPf}Mrp2uz*K3HMR7D56q-fa z&-Z=KoN&ykk?k>l;6%k%b)9>dVUkie%l#-8HyyzkiC5B;Rh=*m#4Tr-=b5#4Rb zXMPAS>gq;mkBxe`*a7BaJtcL!kUG~s`KOZLIM*|t4xEqX$L(Y1 z_R>B$B4a_+j~IW`>2|x{Fk+iOHwarA#q8S#e6-D=XD<*AbnoKeI%6LH{{e9t`0>dQ zI{x1_=Jx!Ak?h_Hv$QxIjE^1!IFu)kftro?4qowF^h~u~ZC4NV&d{#3Y#nR*;5))no0&B`58jTiRHEm9@y|)Ztk8(`-Nj;rqlQ6V%VPQ z$A;oADA=3mPy@28KbRQX`;+?iw(^^8Ld2@7DsU`;p4=}`MzsoZq13sJ_BU^mufd7Q z%R<)o$8qieNQex^9Db5J`ze1+{txy7O}iaansB^aRucIBp3h}vK31AT7H2e-QMwJh zi24VzI!e8HwI+bZ49Gub_a@ixrlT9VQ*=2|zre1-_h}A$0Q3;L_!iEewETcV5I+xs zBWP=r^7eMd+2q6bMnOCd8C-yEbA})!fD8&K_gI`}6sSmvpa9l&-ac5Y^QJ>klaAs8 zxaKGnP5}_7yqyxiOxjLVa`KMOC21ofQX~?x=7*{V+0sabv|u#YiI>5s7QPdWe10J7 zq{f>QP0SP+v>?yGJ_?GwNTk3*l2rrrc^S)o`09^k6aA;8+b#lQF#^Fr$a;X4A(~=W zg|t~1DWH>$CCC!8BzPdVq5&c$^X5GQ5j7t|T?HzXs0P6vXF_;8*wr-%?neWPzBx{S zkj+Bt92I425T`qSya>v&HJ9rReKBN0t|$IuHt+QYJRN7U4okC7=7g2`Tre&-5L6h? zpW{TxHU*3OvQ~^BbN^A}ufeciu--6DSZ^?n0-gpmx!&W~L=Ta`&oIyJEDc3(kB#BjtL>V{$c zyIpVV-}JML1+Sr7U$$-HJ83h}QZo%x$L~L_@}@pH|45}>MSjp-QZ6eCi<>?lh@gad zES_~#>Ub4M|5<_bkp{5PXQe41d8$uKfDwT8RNpNfg7!+eS=0$mj>@@p2*{q5^9ow+ z2C`j(_h+SSz}t?-8=$h-qk+doHeJ- z-7WrPT0J^9Z4&>Jetv%1Jk2mn*q0!mh5`Xxq_L+|Qi{ejIo7D1aM=ueL@vy0` zJ<^{1&eZbn9Q;MsW^G-YY~Hb)V{pEqzK7T!9~vt&!L_{-FM9R*VFtpcFLILlI=v#`jp1%UiLnw3=mKJU?x zS5Qof446WU5~*_E>&TaoRkHAwb6qIhom{)88XSZ!1w(*tB(U=&RE-p!m*oasFy_$+ zz*VgH?A$c-yx1!Yz*{thO)8owWD}7B%LnM??30|+9g(k5hYfgCw;LEA(wA|SH;9Wa zjIydsp=^0U0pAjzcVfVIiM2WJ2j0UPr`D5g+AId}6;S|a>Zh^-G*(<48fYOX;;ts` zNEBw3=Y+qoxq;<~j6mmcD%carT2 z-iAzmk&2VulP2kwYbp(eVdLToCM_`>=TR)pAO)0Ge)dq^0HqbDg8|N7h16lor8)8w zCQC6J@hSOnj0S!+yowi@v~AeBQ6er2Eol4F zuAHGBV^eQo49UU!)mGX5)cB%Nv31j!v>z=84ot6O@C{7v0WO`k=aGdyPu4u_bU4Na zd9vYoPsV;c@2Pkmu48B}j|C8g-@;fZh z=eyI4ah1G@t~x?Rx%ihup^3XPKg>$yScQ(YQxp}w{I86=uOIo#WfVR XMn|`` can be a glob expression or a package name. - """ - - ignore_require_venv = True - usage = """ - %prog dir - %prog info - %prog list [] [--format=[human, abspath]] - %prog remove - %prog purge - """ - - def add_options(self) -> None: - self.cmd_opts.add_option( - "--format", - action="store", - dest="list_format", - default="human", - choices=("human", "abspath"), - help="Select the output format among: human (default) or abspath", - ) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - handlers = { - "dir": self.get_cache_dir, - "info": self.get_cache_info, - "list": self.list_cache_items, - "remove": self.remove_cache_items, - "purge": self.purge_cache, - } - - if not options.cache_dir: - logger.error("pip cache commands can not function since cache is disabled.") - return ERROR - - # Determine action - if not args or args[0] not in handlers: - logger.error( - "Need an action (%s) to perform.", - ", ".join(sorted(handlers)), - ) - return ERROR - - action = args[0] - - # Error handling happens here, not in the action-handlers. - try: - handlers[action](options, args[1:]) - except PipError as e: - logger.error(e.args[0]) - return ERROR - - return SUCCESS - - def get_cache_dir(self, options: Values, args: List[Any]) -> None: - if args: - raise CommandError("Too many arguments") - - logger.info(options.cache_dir) - - def get_cache_info(self, options: Values, args: List[Any]) -> None: - if args: - raise CommandError("Too many arguments") - - num_http_files = len(self._find_http_files(options)) - num_packages = len(self._find_wheels(options, "*")) - - http_cache_location = self._cache_dir(options, "http-v2") - old_http_cache_location = self._cache_dir(options, "http") - wheels_cache_location = self._cache_dir(options, "wheels") - http_cache_size = filesystem.format_size( - filesystem.directory_size(http_cache_location) - + filesystem.directory_size(old_http_cache_location) - ) - wheels_cache_size = filesystem.format_directory_size(wheels_cache_location) - - message = ( - textwrap.dedent( - """ - Package index page cache location (pip v23.3+): {http_cache_location} - Package index page cache location (older pips): {old_http_cache_location} - Package index page cache size: {http_cache_size} - Number of HTTP files: {num_http_files} - Locally built wheels location: {wheels_cache_location} - Locally built wheels size: {wheels_cache_size} - Number of locally built wheels: {package_count} - """ # noqa: E501 - ) - .format( - http_cache_location=http_cache_location, - old_http_cache_location=old_http_cache_location, - http_cache_size=http_cache_size, - num_http_files=num_http_files, - wheels_cache_location=wheels_cache_location, - package_count=num_packages, - wheels_cache_size=wheels_cache_size, - ) - .strip() - ) - - logger.info(message) - - def list_cache_items(self, options: Values, args: List[Any]) -> None: - if len(args) > 1: - raise CommandError("Too many arguments") - - if args: - pattern = args[0] - else: - pattern = "*" - - files = self._find_wheels(options, pattern) - if options.list_format == "human": - self.format_for_human(files) - else: - self.format_for_abspath(files) - - def format_for_human(self, files: List[str]) -> None: - if not files: - logger.info("No locally built wheels cached.") - return - - results = [] - for filename in files: - wheel = os.path.basename(filename) - size = filesystem.format_file_size(filename) - results.append(f" - {wheel} ({size})") - logger.info("Cache contents:\n") - logger.info("\n".join(sorted(results))) - - def format_for_abspath(self, files: List[str]) -> None: - if files: - logger.info("\n".join(sorted(files))) - - def remove_cache_items(self, options: Values, args: List[Any]) -> None: - if len(args) > 1: - raise CommandError("Too many arguments") - - if not args: - raise CommandError("Please provide a pattern") - - files = self._find_wheels(options, args[0]) - - no_matching_msg = "No matching packages" - if args[0] == "*": - # Only fetch http files if no specific pattern given - files += self._find_http_files(options) - else: - # Add the pattern to the log message - no_matching_msg += f' for pattern "{args[0]}"' - - if not files: - logger.warning(no_matching_msg) - - for filename in files: - os.unlink(filename) - logger.verbose("Removed %s", filename) - logger.info("Files removed: %s", len(files)) - - def purge_cache(self, options: Values, args: List[Any]) -> None: - if args: - raise CommandError("Too many arguments") - - return self.remove_cache_items(options, ["*"]) - - def _cache_dir(self, options: Values, subdir: str) -> str: - return os.path.join(options.cache_dir, subdir) - - def _find_http_files(self, options: Values) -> List[str]: - old_http_dir = self._cache_dir(options, "http") - new_http_dir = self._cache_dir(options, "http-v2") - return filesystem.find_files(old_http_dir, "*") + filesystem.find_files( - new_http_dir, "*" - ) - - def _find_wheels(self, options: Values, pattern: str) -> List[str]: - wheel_dir = self._cache_dir(options, "wheels") - - # The wheel filename format, as specified in PEP 427, is: - # {distribution}-{version}(-{build})?-{python}-{abi}-{platform}.whl - # - # Additionally, non-alphanumeric values in the distribution are - # normalized to underscores (_), meaning hyphens can never occur - # before `-{version}`. - # - # Given that information: - # - If the pattern we're given contains a hyphen (-), the user is - # providing at least the version. Thus, we can just append `*.whl` - # to match the rest of it. - # - If the pattern we're given doesn't contain a hyphen (-), the - # user is only providing the name. Thus, we append `-*.whl` to - # match the hyphen before the version, followed by anything else. - # - # PEP 427: https://www.python.org/dev/peps/pep-0427/ - pattern = pattern + ("*.whl" if "-" in pattern else "-*.whl") - - return filesystem.find_files(wheel_dir, pattern) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/check.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/check.py deleted file mode 100644 index 5efd0a3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/check.py +++ /dev/null @@ -1,54 +0,0 @@ -import logging -from optparse import Values -from typing import List - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.operations.check import ( - check_package_set, - create_package_set_from_installed, - warn_legacy_versions_and_specifiers, -) -from pip._internal.utils.misc import write_output - -logger = logging.getLogger(__name__) - - -class CheckCommand(Command): - """Verify installed packages have compatible dependencies.""" - - usage = """ - %prog [options]""" - - def run(self, options: Values, args: List[str]) -> int: - package_set, parsing_probs = create_package_set_from_installed() - warn_legacy_versions_and_specifiers(package_set) - missing, conflicting = check_package_set(package_set) - - for project_name in missing: - version = package_set[project_name].version - for dependency in missing[project_name]: - write_output( - "%s %s requires %s, which is not installed.", - project_name, - version, - dependency[0], - ) - - for project_name in conflicting: - version = package_set[project_name].version - for dep_name, dep_version, req in conflicting[project_name]: - write_output( - "%s %s has requirement %s, but you have %s %s.", - project_name, - version, - req, - dep_name, - dep_version, - ) - - if missing or conflicting or parsing_probs: - return ERROR - else: - write_output("No broken requirements found.") - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py deleted file mode 100644 index 9e89e27..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py +++ /dev/null @@ -1,130 +0,0 @@ -import sys -import textwrap -from optparse import Values -from typing import List - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.utils.misc import get_prog - -BASE_COMPLETION = """ -# pip {shell} completion start{script}# pip {shell} completion end -""" - -COMPLETION_SCRIPTS = { - "bash": """ - _pip_completion() - {{ - COMPREPLY=( $( COMP_WORDS="${{COMP_WORDS[*]}}" \\ - COMP_CWORD=$COMP_CWORD \\ - PIP_AUTO_COMPLETE=1 $1 2>/dev/null ) ) - }} - complete -o default -F _pip_completion {prog} - """, - "zsh": """ - #compdef -P pip[0-9.]# - __pip() {{ - compadd $( COMP_WORDS="$words[*]" \\ - COMP_CWORD=$((CURRENT-1)) \\ - PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null ) - }} - if [[ $zsh_eval_context[-1] == loadautofunc ]]; then - # autoload from fpath, call function directly - __pip "$@" - else - # eval/source/. command, register function for later - compdef __pip -P 'pip[0-9.]#' - fi - """, - "fish": """ - function __fish_complete_pip - set -lx COMP_WORDS (commandline -o) "" - set -lx COMP_CWORD ( \\ - math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ - ) - set -lx PIP_AUTO_COMPLETE 1 - string split \\ -- (eval $COMP_WORDS[1]) - end - complete -fa "(__fish_complete_pip)" -c {prog} - """, - "powershell": """ - if ((Test-Path Function:\\TabExpansion) -and -not ` - (Test-Path Function:\\_pip_completeBackup)) {{ - Rename-Item Function:\\TabExpansion _pip_completeBackup - }} - function TabExpansion($line, $lastWord) {{ - $lastBlock = [regex]::Split($line, '[|;]')[-1].TrimStart() - if ($lastBlock.StartsWith("{prog} ")) {{ - $Env:COMP_WORDS=$lastBlock - $Env:COMP_CWORD=$lastBlock.Split().Length - 1 - $Env:PIP_AUTO_COMPLETE=1 - (& {prog}).Split() - Remove-Item Env:COMP_WORDS - Remove-Item Env:COMP_CWORD - Remove-Item Env:PIP_AUTO_COMPLETE - }} - elseif (Test-Path Function:\\_pip_completeBackup) {{ - # Fall back on existing tab expansion - _pip_completeBackup $line $lastWord - }} - }} - """, -} - - -class CompletionCommand(Command): - """A helper command to be used for command completion.""" - - ignore_require_venv = True - - def add_options(self) -> None: - self.cmd_opts.add_option( - "--bash", - "-b", - action="store_const", - const="bash", - dest="shell", - help="Emit completion code for bash", - ) - self.cmd_opts.add_option( - "--zsh", - "-z", - action="store_const", - const="zsh", - dest="shell", - help="Emit completion code for zsh", - ) - self.cmd_opts.add_option( - "--fish", - "-f", - action="store_const", - const="fish", - dest="shell", - help="Emit completion code for fish", - ) - self.cmd_opts.add_option( - "--powershell", - "-p", - action="store_const", - const="powershell", - dest="shell", - help="Emit completion code for powershell", - ) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - """Prints the completion code of the given shell""" - shells = COMPLETION_SCRIPTS.keys() - shell_options = ["--" + shell for shell in sorted(shells)] - if options.shell in shells: - script = textwrap.dedent( - COMPLETION_SCRIPTS.get(options.shell, "").format(prog=get_prog()) - ) - print(BASE_COMPLETION.format(script=script, shell=options.shell)) - return SUCCESS - else: - sys.stderr.write( - "ERROR: You must pass {}\n".format(" or ".join(shell_options)) - ) - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py deleted file mode 100644 index 1a1dc6b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py +++ /dev/null @@ -1,280 +0,0 @@ -import logging -import os -import subprocess -from optparse import Values -from typing import Any, List, Optional - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.configuration import ( - Configuration, - Kind, - get_configuration_files, - kinds, -) -from pip._internal.exceptions import PipError -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import get_prog, write_output - -logger = logging.getLogger(__name__) - - -class ConfigurationCommand(Command): - """ - Manage local and global configuration. - - Subcommands: - - - list: List the active configuration (or from the file specified) - - edit: Edit the configuration file in an editor - - get: Get the value associated with command.option - - set: Set the command.option=value - - unset: Unset the value associated with command.option - - debug: List the configuration files and values defined under them - - Configuration keys should be dot separated command and option name, - with the special prefix "global" affecting any command. For example, - "pip config set global.index-url https://example.org/" would configure - the index url for all commands, but "pip config set download.timeout 10" - would configure a 10 second timeout only for "pip download" commands. - - If none of --user, --global and --site are passed, a virtual - environment configuration file is used if one is active and the file - exists. Otherwise, all modifications happen to the user file by - default. - """ - - ignore_require_venv = True - usage = """ - %prog [] list - %prog [] [--editor ] edit - - %prog [] get command.option - %prog [] set command.option value - %prog [] unset command.option - %prog [] debug - """ - - def add_options(self) -> None: - self.cmd_opts.add_option( - "--editor", - dest="editor", - action="store", - default=None, - help=( - "Editor to use to edit the file. Uses VISUAL or EDITOR " - "environment variables if not provided." - ), - ) - - self.cmd_opts.add_option( - "--global", - dest="global_file", - action="store_true", - default=False, - help="Use the system-wide configuration file only", - ) - - self.cmd_opts.add_option( - "--user", - dest="user_file", - action="store_true", - default=False, - help="Use the user configuration file only", - ) - - self.cmd_opts.add_option( - "--site", - dest="site_file", - action="store_true", - default=False, - help="Use the current environment configuration file only", - ) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - handlers = { - "list": self.list_values, - "edit": self.open_in_editor, - "get": self.get_name, - "set": self.set_name_value, - "unset": self.unset_name, - "debug": self.list_config_values, - } - - # Determine action - if not args or args[0] not in handlers: - logger.error( - "Need an action (%s) to perform.", - ", ".join(sorted(handlers)), - ) - return ERROR - - action = args[0] - - # Determine which configuration files are to be loaded - # Depends on whether the command is modifying. - try: - load_only = self._determine_file( - options, need_value=(action in ["get", "set", "unset", "edit"]) - ) - except PipError as e: - logger.error(e.args[0]) - return ERROR - - # Load a new configuration - self.configuration = Configuration( - isolated=options.isolated_mode, load_only=load_only - ) - self.configuration.load() - - # Error handling happens here, not in the action-handlers. - try: - handlers[action](options, args[1:]) - except PipError as e: - logger.error(e.args[0]) - return ERROR - - return SUCCESS - - def _determine_file(self, options: Values, need_value: bool) -> Optional[Kind]: - file_options = [ - key - for key, value in ( - (kinds.USER, options.user_file), - (kinds.GLOBAL, options.global_file), - (kinds.SITE, options.site_file), - ) - if value - ] - - if not file_options: - if not need_value: - return None - # Default to user, unless there's a site file. - elif any( - os.path.exists(site_config_file) - for site_config_file in get_configuration_files()[kinds.SITE] - ): - return kinds.SITE - else: - return kinds.USER - elif len(file_options) == 1: - return file_options[0] - - raise PipError( - "Need exactly one file to operate upon " - "(--user, --site, --global) to perform." - ) - - def list_values(self, options: Values, args: List[str]) -> None: - self._get_n_args(args, "list", n=0) - - for key, value in sorted(self.configuration.items()): - write_output("%s=%r", key, value) - - def get_name(self, options: Values, args: List[str]) -> None: - key = self._get_n_args(args, "get [name]", n=1) - value = self.configuration.get_value(key) - - write_output("%s", value) - - def set_name_value(self, options: Values, args: List[str]) -> None: - key, value = self._get_n_args(args, "set [name] [value]", n=2) - self.configuration.set_value(key, value) - - self._save_configuration() - - def unset_name(self, options: Values, args: List[str]) -> None: - key = self._get_n_args(args, "unset [name]", n=1) - self.configuration.unset_value(key) - - self._save_configuration() - - def list_config_values(self, options: Values, args: List[str]) -> None: - """List config key-value pairs across different config files""" - self._get_n_args(args, "debug", n=0) - - self.print_env_var_values() - # Iterate over config files and print if they exist, and the - # key-value pairs present in them if they do - for variant, files in sorted(self.configuration.iter_config_files()): - write_output("%s:", variant) - for fname in files: - with indent_log(): - file_exists = os.path.exists(fname) - write_output("%s, exists: %r", fname, file_exists) - if file_exists: - self.print_config_file_values(variant) - - def print_config_file_values(self, variant: Kind) -> None: - """Get key-value pairs from the file of a variant""" - for name, value in self.configuration.get_values_in_config(variant).items(): - with indent_log(): - write_output("%s: %s", name, value) - - def print_env_var_values(self) -> None: - """Get key-values pairs present as environment variables""" - write_output("%s:", "env_var") - with indent_log(): - for key, value in sorted(self.configuration.get_environ_vars()): - env_var = f"PIP_{key.upper()}" - write_output("%s=%r", env_var, value) - - def open_in_editor(self, options: Values, args: List[str]) -> None: - editor = self._determine_editor(options) - - fname = self.configuration.get_file_to_edit() - if fname is None: - raise PipError("Could not determine appropriate file.") - elif '"' in fname: - # This shouldn't happen, unless we see a username like that. - # If that happens, we'd appreciate a pull request fixing this. - raise PipError( - f'Can not open an editor for a file name containing "\n{fname}' - ) - - try: - subprocess.check_call(f'{editor} "{fname}"', shell=True) - except FileNotFoundError as e: - if not e.filename: - e.filename = editor - raise - except subprocess.CalledProcessError as e: - raise PipError(f"Editor Subprocess exited with exit code {e.returncode}") - - def _get_n_args(self, args: List[str], example: str, n: int) -> Any: - """Helper to make sure the command got the right number of arguments""" - if len(args) != n: - msg = ( - f"Got unexpected number of arguments, expected {n}. " - f'(example: "{get_prog()} config {example}")' - ) - raise PipError(msg) - - if n == 1: - return args[0] - else: - return args - - def _save_configuration(self) -> None: - # We successfully ran a modifying command. Need to save the - # configuration. - try: - self.configuration.save() - except Exception: - logger.exception( - "Unable to save configuration. Please report this as a bug." - ) - raise PipError("Internal Error.") - - def _determine_editor(self, options: Values) -> str: - if options.editor is not None: - return options.editor - elif "VISUAL" in os.environ: - return os.environ["VISUAL"] - elif "EDITOR" in os.environ: - return os.environ["EDITOR"] - else: - raise PipError("Could not determine editor to use.") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py deleted file mode 100644 index 7e5271c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py +++ /dev/null @@ -1,201 +0,0 @@ -import importlib.resources -import locale -import logging -import os -import sys -from optparse import Values -from types import ModuleType -from typing import Any, Dict, List, Optional - -import pip._vendor -from pip._vendor.certifi import where -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.cli import cmdoptions -from pip._internal.cli.base_command import Command -from pip._internal.cli.cmdoptions import make_target_python -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.configuration import Configuration -from pip._internal.metadata import get_environment -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import get_pip_version - -logger = logging.getLogger(__name__) - - -def show_value(name: str, value: Any) -> None: - logger.info("%s: %s", name, value) - - -def show_sys_implementation() -> None: - logger.info("sys.implementation:") - implementation_name = sys.implementation.name - with indent_log(): - show_value("name", implementation_name) - - -def create_vendor_txt_map() -> Dict[str, str]: - with importlib.resources.open_text("pip._vendor", "vendor.txt") as f: - # Purge non version specifying lines. - # Also, remove any space prefix or suffixes (including comments). - lines = [ - line.strip().split(" ", 1)[0] for line in f.readlines() if "==" in line - ] - - # Transform into "module" -> version dict. - return dict(line.split("==", 1) for line in lines) - - -def get_module_from_module_name(module_name: str) -> Optional[ModuleType]: - # Module name can be uppercase in vendor.txt for some reason... - module_name = module_name.lower().replace("-", "_") - # PATCH: setuptools is actually only pkg_resources. - if module_name == "setuptools": - module_name = "pkg_resources" - - try: - __import__(f"pip._vendor.{module_name}", globals(), locals(), level=0) - return getattr(pip._vendor, module_name) - except ImportError: - # We allow 'truststore' to fail to import due - # to being unavailable on Python 3.9 and earlier. - if module_name == "truststore" and sys.version_info < (3, 10): - return None - raise - - -def get_vendor_version_from_module(module_name: str) -> Optional[str]: - module = get_module_from_module_name(module_name) - version = getattr(module, "__version__", None) - - if module and not version: - # Try to find version in debundled module info. - assert module.__file__ is not None - env = get_environment([os.path.dirname(module.__file__)]) - dist = env.get_distribution(module_name) - if dist: - version = str(dist.version) - - return version - - -def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> None: - """Log the actual version and print extra info if there is - a conflict or if the actual version could not be imported. - """ - for module_name, expected_version in vendor_txt_versions.items(): - extra_message = "" - actual_version = get_vendor_version_from_module(module_name) - if not actual_version: - extra_message = ( - " (Unable to locate actual module version, using" - " vendor.txt specified version)" - ) - actual_version = expected_version - elif parse_version(actual_version) != parse_version(expected_version): - extra_message = ( - " (CONFLICT: vendor.txt suggests version should" - f" be {expected_version})" - ) - logger.info("%s==%s%s", module_name, actual_version, extra_message) - - -def show_vendor_versions() -> None: - logger.info("vendored library versions:") - - vendor_txt_versions = create_vendor_txt_map() - with indent_log(): - show_actual_vendor_versions(vendor_txt_versions) - - -def show_tags(options: Values) -> None: - tag_limit = 10 - - target_python = make_target_python(options) - tags = target_python.get_sorted_tags() - - # Display the target options that were explicitly provided. - formatted_target = target_python.format_given() - suffix = "" - if formatted_target: - suffix = f" (target: {formatted_target})" - - msg = f"Compatible tags: {len(tags)}{suffix}" - logger.info(msg) - - if options.verbose < 1 and len(tags) > tag_limit: - tags_limited = True - tags = tags[:tag_limit] - else: - tags_limited = False - - with indent_log(): - for tag in tags: - logger.info(str(tag)) - - if tags_limited: - msg = f"...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" - logger.info(msg) - - -def ca_bundle_info(config: Configuration) -> str: - levels = {key.split(".", 1)[0] for key, _ in config.items()} - if not levels: - return "Not specified" - - levels_that_override_global = ["install", "wheel", "download"] - global_overriding_level = [ - level for level in levels if level in levels_that_override_global - ] - if not global_overriding_level: - return "global" - - if "global" in levels: - levels.remove("global") - return ", ".join(levels) - - -class DebugCommand(Command): - """ - Display debug information. - """ - - usage = """ - %prog """ - ignore_require_venv = True - - def add_options(self) -> None: - cmdoptions.add_target_python_options(self.cmd_opts) - self.parser.insert_option_group(0, self.cmd_opts) - self.parser.config.load() - - def run(self, options: Values, args: List[str]) -> int: - logger.warning( - "This command is only meant for debugging. " - "Do not use this with automation for parsing and getting these " - "details, since the output and options of this command may " - "change without notice." - ) - show_value("pip version", get_pip_version()) - show_value("sys.version", sys.version) - show_value("sys.executable", sys.executable) - show_value("sys.getdefaultencoding", sys.getdefaultencoding()) - show_value("sys.getfilesystemencoding", sys.getfilesystemencoding()) - show_value( - "locale.getpreferredencoding", - locale.getpreferredencoding(), - ) - show_value("sys.platform", sys.platform) - show_sys_implementation() - - show_value("'cert' config value", ca_bundle_info(self.parser.config)) - show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE")) - show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE")) - show_value("pip._vendor.certifi.where()", where()) - show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED) - - show_vendor_versions() - - show_tags(options) - - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py deleted file mode 100644 index 54247a7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py +++ /dev/null @@ -1,147 +0,0 @@ -import logging -import os -from optparse import Values -from typing import List - -from pip._internal.cli import cmdoptions -from pip._internal.cli.cmdoptions import make_target_python -from pip._internal.cli.req_command import RequirementCommand, with_cleanup -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.operations.build.build_tracker import get_build_tracker -from pip._internal.req.req_install import check_legacy_setup_py_options -from pip._internal.utils.misc import ensure_dir, normalize_path, write_output -from pip._internal.utils.temp_dir import TempDirectory - -logger = logging.getLogger(__name__) - - -class DownloadCommand(RequirementCommand): - """ - Download packages from: - - - PyPI (and other indexes) using requirement specifiers. - - VCS project urls. - - Local project directories. - - Local or remote source archives. - - pip also supports downloading from "requirements files", which provide - an easy way to specify a whole environment to be downloaded. - """ - - usage = """ - %prog [options] [package-index-options] ... - %prog [options] -r [package-index-options] ... - %prog [options] ... - %prog [options] ... - %prog [options] ...""" - - def add_options(self) -> None: - self.cmd_opts.add_option(cmdoptions.constraints()) - self.cmd_opts.add_option(cmdoptions.requirements()) - self.cmd_opts.add_option(cmdoptions.no_deps()) - self.cmd_opts.add_option(cmdoptions.global_options()) - self.cmd_opts.add_option(cmdoptions.no_binary()) - self.cmd_opts.add_option(cmdoptions.only_binary()) - self.cmd_opts.add_option(cmdoptions.prefer_binary()) - self.cmd_opts.add_option(cmdoptions.src()) - self.cmd_opts.add_option(cmdoptions.pre()) - self.cmd_opts.add_option(cmdoptions.require_hashes()) - self.cmd_opts.add_option(cmdoptions.progress_bar()) - self.cmd_opts.add_option(cmdoptions.no_build_isolation()) - self.cmd_opts.add_option(cmdoptions.use_pep517()) - self.cmd_opts.add_option(cmdoptions.no_use_pep517()) - self.cmd_opts.add_option(cmdoptions.check_build_deps()) - self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) - - self.cmd_opts.add_option( - "-d", - "--dest", - "--destination-dir", - "--destination-directory", - dest="download_dir", - metavar="dir", - default=os.curdir, - help="Download packages into .", - ) - - cmdoptions.add_target_python_options(self.cmd_opts) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, self.cmd_opts) - - @with_cleanup - def run(self, options: Values, args: List[str]) -> int: - options.ignore_installed = True - # editable doesn't really make sense for `pip download`, but the bowels - # of the RequirementSet code require that property. - options.editables = [] - - cmdoptions.check_dist_restriction(options) - - options.download_dir = normalize_path(options.download_dir) - ensure_dir(options.download_dir) - - session = self.get_default_session(options) - - target_python = make_target_python(options) - finder = self._build_package_finder( - options=options, - session=session, - target_python=target_python, - ignore_requires_python=options.ignore_requires_python, - ) - - build_tracker = self.enter_context(get_build_tracker()) - - directory = TempDirectory( - delete=not options.no_clean, - kind="download", - globally_managed=True, - ) - - reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options(options, reqs) - - preparer = self.make_requirement_preparer( - temp_build_dir=directory, - options=options, - build_tracker=build_tracker, - session=session, - finder=finder, - download_dir=options.download_dir, - use_user_site=False, - verbosity=self.verbosity, - ) - - resolver = self.make_resolver( - preparer=preparer, - finder=finder, - options=options, - ignore_requires_python=options.ignore_requires_python, - use_pep517=options.use_pep517, - py_version_info=options.python_version, - ) - - self.trace_basic_info(finder) - - requirement_set = resolver.resolve(reqs, check_supported_wheels=True) - - downloaded: List[str] = [] - for req in requirement_set.requirements.values(): - if req.satisfied_by is None: - assert req.name is not None - preparer.save_linked_requirement(req) - downloaded.append(req.name) - - preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) - requirement_set.warn_legacy_versions_and_specifiers() - - if downloaded: - write_output("Successfully downloaded %s", " ".join(downloaded)) - - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py deleted file mode 100644 index fd9d88a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py +++ /dev/null @@ -1,108 +0,0 @@ -import sys -from optparse import Values -from typing import AbstractSet, List - -from pip._internal.cli import cmdoptions -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.operations.freeze import freeze -from pip._internal.utils.compat import stdlib_pkgs - - -def _should_suppress_build_backends() -> bool: - return sys.version_info < (3, 12) - - -def _dev_pkgs() -> AbstractSet[str]: - pkgs = {"pip"} - - if _should_suppress_build_backends(): - pkgs |= {"setuptools", "distribute", "wheel"} - - return pkgs - - -class FreezeCommand(Command): - """ - Output installed packages in requirements format. - - packages are listed in a case-insensitive sorted order. - """ - - usage = """ - %prog [options]""" - log_streams = ("ext://sys.stderr", "ext://sys.stderr") - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-r", - "--requirement", - dest="requirements", - action="append", - default=[], - metavar="file", - help=( - "Use the order in the given requirements file and its " - "comments when generating output. This option can be " - "used multiple times." - ), - ) - self.cmd_opts.add_option( - "-l", - "--local", - dest="local", - action="store_true", - default=False, - help=( - "If in a virtualenv that has global access, do not output " - "globally-installed packages." - ), - ) - self.cmd_opts.add_option( - "--user", - dest="user", - action="store_true", - default=False, - help="Only output packages installed in user-site.", - ) - self.cmd_opts.add_option(cmdoptions.list_path()) - self.cmd_opts.add_option( - "--all", - dest="freeze_all", - action="store_true", - help=( - "Do not skip these packages in the output:" - " {}".format(", ".join(_dev_pkgs())) - ), - ) - self.cmd_opts.add_option( - "--exclude-editable", - dest="exclude_editable", - action="store_true", - help="Exclude editable package from output.", - ) - self.cmd_opts.add_option(cmdoptions.list_exclude()) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - skip = set(stdlib_pkgs) - if not options.freeze_all: - skip.update(_dev_pkgs()) - - if options.excludes: - skip.update(options.excludes) - - cmdoptions.check_list_path_option(options) - - for line in freeze( - requirement=options.requirements, - local_only=options.local, - user_only=options.user, - paths=options.path, - isolated=options.isolated_mode, - skip=skip, - exclude_editable=options.exclude_editable, - ): - sys.stdout.write(line + "\n") - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py deleted file mode 100644 index 042dac8..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py +++ /dev/null @@ -1,59 +0,0 @@ -import hashlib -import logging -import sys -from optparse import Values -from typing import List - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES -from pip._internal.utils.misc import read_chunks, write_output - -logger = logging.getLogger(__name__) - - -class HashCommand(Command): - """ - Compute a hash of a local package archive. - - These can be used with --hash in a requirements file to do repeatable - installs. - """ - - usage = "%prog [options] ..." - ignore_require_venv = True - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-a", - "--algorithm", - dest="algorithm", - choices=STRONG_HASHES, - action="store", - default=FAVORITE_HASH, - help="The hash algorithm to use: one of {}".format( - ", ".join(STRONG_HASHES) - ), - ) - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - if not args: - self.parser.print_usage(sys.stderr) - return ERROR - - algorithm = options.algorithm - for path in args: - write_output( - "%s:\n--hash=%s:%s", path, algorithm, _hash_of_file(path, algorithm) - ) - return SUCCESS - - -def _hash_of_file(path: str, algorithm: str) -> str: - """Return the hash digest of a file.""" - with open(path, "rb") as archive: - hash = hashlib.new(algorithm) - for chunk in read_chunks(archive): - hash.update(chunk) - return hash.hexdigest() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/help.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/help.py deleted file mode 100644 index 6206631..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/help.py +++ /dev/null @@ -1,41 +0,0 @@ -from optparse import Values -from typing import List - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.exceptions import CommandError - - -class HelpCommand(Command): - """Show help for commands""" - - usage = """ - %prog """ - ignore_require_venv = True - - def run(self, options: Values, args: List[str]) -> int: - from pip._internal.commands import ( - commands_dict, - create_command, - get_similar_commands, - ) - - try: - # 'pip help' with no args is handled by pip.__init__.parseopt() - cmd_name = args[0] # the command we need help for - except IndexError: - return SUCCESS - - if cmd_name not in commands_dict: - guess = get_similar_commands(cmd_name) - - msg = [f'unknown command "{cmd_name}"'] - if guess: - msg.append(f'maybe you meant "{guess}"') - - raise CommandError(" - ".join(msg)) - - command = create_command(cmd_name) - command.parser.print_help() - - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/index.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/index.py deleted file mode 100644 index f55e9e4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/index.py +++ /dev/null @@ -1,139 +0,0 @@ -import logging -from optparse import Values -from typing import Any, Iterable, List, Optional, Union - -from pip._vendor.packaging.version import LegacyVersion, Version - -from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import IndexGroupCommand -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.commands.search import print_dist_installation_info -from pip._internal.exceptions import CommandError, DistributionNotFound, PipError -from pip._internal.index.collector import LinkCollector -from pip._internal.index.package_finder import PackageFinder -from pip._internal.models.selection_prefs import SelectionPreferences -from pip._internal.models.target_python import TargetPython -from pip._internal.network.session import PipSession -from pip._internal.utils.misc import write_output - -logger = logging.getLogger(__name__) - - -class IndexCommand(IndexGroupCommand): - """ - Inspect information available from package indexes. - """ - - ignore_require_venv = True - usage = """ - %prog versions - """ - - def add_options(self) -> None: - cmdoptions.add_target_python_options(self.cmd_opts) - - self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) - self.cmd_opts.add_option(cmdoptions.pre()) - self.cmd_opts.add_option(cmdoptions.no_binary()) - self.cmd_opts.add_option(cmdoptions.only_binary()) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - handlers = { - "versions": self.get_available_package_versions, - } - - logger.warning( - "pip index is currently an experimental command. " - "It may be removed/changed in a future release " - "without prior warning." - ) - - # Determine action - if not args or args[0] not in handlers: - logger.error( - "Need an action (%s) to perform.", - ", ".join(sorted(handlers)), - ) - return ERROR - - action = args[0] - - # Error handling happens here, not in the action-handlers. - try: - handlers[action](options, args[1:]) - except PipError as e: - logger.error(e.args[0]) - return ERROR - - return SUCCESS - - def _build_package_finder( - self, - options: Values, - session: PipSession, - target_python: Optional[TargetPython] = None, - ignore_requires_python: Optional[bool] = None, - ) -> PackageFinder: - """ - Create a package finder appropriate to the index command. - """ - link_collector = LinkCollector.create(session, options=options) - - # Pass allow_yanked=False to ignore yanked versions. - selection_prefs = SelectionPreferences( - allow_yanked=False, - allow_all_prereleases=options.pre, - ignore_requires_python=ignore_requires_python, - ) - - return PackageFinder.create( - link_collector=link_collector, - selection_prefs=selection_prefs, - target_python=target_python, - ) - - def get_available_package_versions(self, options: Values, args: List[Any]) -> None: - if len(args) != 1: - raise CommandError("You need to specify exactly one argument") - - target_python = cmdoptions.make_target_python(options) - query = args[0] - - with self._build_session(options) as session: - finder = self._build_package_finder( - options=options, - session=session, - target_python=target_python, - ignore_requires_python=options.ignore_requires_python, - ) - - versions: Iterable[Union[LegacyVersion, Version]] = ( - candidate.version for candidate in finder.find_all_candidates(query) - ) - - if not options.pre: - # Remove prereleases - versions = ( - version for version in versions if not version.is_prerelease - ) - versions = set(versions) - - if not versions: - raise DistributionNotFound( - f"No matching distribution found for {query}" - ) - - formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)] - latest = formatted_versions[0] - - write_output(f"{query} ({latest})") - write_output("Available versions: {}".format(", ".join(formatted_versions))) - print_dist_installation_info(query, latest) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py deleted file mode 100644 index 27c8fa3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py +++ /dev/null @@ -1,92 +0,0 @@ -import logging -from optparse import Values -from typing import Any, Dict, List - -from pip._vendor.packaging.markers import default_environment -from pip._vendor.rich import print_json - -from pip import __version__ -from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import Command -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.metadata import BaseDistribution, get_environment -from pip._internal.utils.compat import stdlib_pkgs -from pip._internal.utils.urls import path_to_url - -logger = logging.getLogger(__name__) - - -class InspectCommand(Command): - """ - Inspect the content of a Python environment and produce a report in JSON format. - """ - - ignore_require_venv = True - usage = """ - %prog [options]""" - - def add_options(self) -> None: - self.cmd_opts.add_option( - "--local", - action="store_true", - default=False, - help=( - "If in a virtualenv that has global access, do not list " - "globally-installed packages." - ), - ) - self.cmd_opts.add_option( - "--user", - dest="user", - action="store_true", - default=False, - help="Only output packages installed in user-site.", - ) - self.cmd_opts.add_option(cmdoptions.list_path()) - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - cmdoptions.check_list_path_option(options) - dists = get_environment(options.path).iter_installed_distributions( - local_only=options.local, - user_only=options.user, - skip=set(stdlib_pkgs), - ) - output = { - "version": "1", - "pip_version": __version__, - "installed": [self._dist_to_dict(dist) for dist in dists], - "environment": default_environment(), - # TODO tags? scheme? - } - print_json(data=output) - return SUCCESS - - def _dist_to_dict(self, dist: BaseDistribution) -> Dict[str, Any]: - res: Dict[str, Any] = { - "metadata": dist.metadata_dict, - "metadata_location": dist.info_location, - } - # direct_url. Note that we don't have download_info (as in the installation - # report) since it is not recorded in installed metadata. - direct_url = dist.direct_url - if direct_url is not None: - res["direct_url"] = direct_url.to_dict() - else: - # Emulate direct_url for legacy editable installs. - editable_project_location = dist.editable_project_location - if editable_project_location is not None: - res["direct_url"] = { - "url": path_to_url(editable_project_location), - "dir_info": { - "editable": True, - }, - } - # installer - installer = dist.installer - if dist.installer: - res["installer"] = installer - # requested - if dist.installed_with_dist_info: - res["requested"] = dist.requested - return res diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/install.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/install.py deleted file mode 100644 index e944bb9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/install.py +++ /dev/null @@ -1,774 +0,0 @@ -import errno -import json -import operator -import os -import shutil -import site -from optparse import SUPPRESS_HELP, Values -from typing import List, Optional - -from pip._vendor.rich import print_json - -from pip._internal.cache import WheelCache -from pip._internal.cli import cmdoptions -from pip._internal.cli.cmdoptions import make_target_python -from pip._internal.cli.req_command import ( - RequirementCommand, - warn_if_run_as_root, - with_cleanup, -) -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.exceptions import CommandError, InstallationError -from pip._internal.locations import get_scheme -from pip._internal.metadata import get_environment -from pip._internal.models.installation_report import InstallationReport -from pip._internal.operations.build.build_tracker import get_build_tracker -from pip._internal.operations.check import ConflictDetails, check_install_conflicts -from pip._internal.req import install_given_reqs -from pip._internal.req.req_install import ( - InstallRequirement, - check_legacy_setup_py_options, -) -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.filesystem import test_writable_dir -from pip._internal.utils.logging import getLogger -from pip._internal.utils.misc import ( - check_externally_managed, - ensure_dir, - get_pip_version, - protect_pip_from_modification_on_windows, - write_output, -) -from pip._internal.utils.temp_dir import TempDirectory -from pip._internal.utils.virtualenv import ( - running_under_virtualenv, - virtualenv_no_global, -) -from pip._internal.wheel_builder import build, should_build_for_install_command - -logger = getLogger(__name__) - - -class InstallCommand(RequirementCommand): - """ - Install packages from: - - - PyPI (and other indexes) using requirement specifiers. - - VCS project urls. - - Local project directories. - - Local or remote source archives. - - pip also supports installing from "requirements files", which provide - an easy way to specify a whole environment to be installed. - """ - - usage = """ - %prog [options] [package-index-options] ... - %prog [options] -r [package-index-options] ... - %prog [options] [-e] ... - %prog [options] [-e] ... - %prog [options] ...""" - - def add_options(self) -> None: - self.cmd_opts.add_option(cmdoptions.requirements()) - self.cmd_opts.add_option(cmdoptions.constraints()) - self.cmd_opts.add_option(cmdoptions.no_deps()) - self.cmd_opts.add_option(cmdoptions.pre()) - - self.cmd_opts.add_option(cmdoptions.editable()) - self.cmd_opts.add_option( - "--dry-run", - action="store_true", - dest="dry_run", - default=False, - help=( - "Don't actually install anything, just print what would be. " - "Can be used in combination with --ignore-installed " - "to 'resolve' the requirements." - ), - ) - self.cmd_opts.add_option( - "-t", - "--target", - dest="target_dir", - metavar="dir", - default=None, - help=( - "Install packages into . " - "By default this will not replace existing files/folders in " - ". Use --upgrade to replace existing packages in " - "with new versions." - ), - ) - cmdoptions.add_target_python_options(self.cmd_opts) - - self.cmd_opts.add_option( - "--user", - dest="use_user_site", - action="store_true", - help=( - "Install to the Python user install directory for your " - "platform. Typically ~/.local/, or %APPDATA%\\Python on " - "Windows. (See the Python documentation for site.USER_BASE " - "for full details.)" - ), - ) - self.cmd_opts.add_option( - "--no-user", - dest="use_user_site", - action="store_false", - help=SUPPRESS_HELP, - ) - self.cmd_opts.add_option( - "--root", - dest="root_path", - metavar="dir", - default=None, - help="Install everything relative to this alternate root directory.", - ) - self.cmd_opts.add_option( - "--prefix", - dest="prefix_path", - metavar="dir", - default=None, - help=( - "Installation prefix where lib, bin and other top-level " - "folders are placed. Note that the resulting installation may " - "contain scripts and other resources which reference the " - "Python interpreter of pip, and not that of ``--prefix``. " - "See also the ``--python`` option if the intention is to " - "install packages into another (possibly pip-free) " - "environment." - ), - ) - - self.cmd_opts.add_option(cmdoptions.src()) - - self.cmd_opts.add_option( - "-U", - "--upgrade", - dest="upgrade", - action="store_true", - help=( - "Upgrade all specified packages to the newest available " - "version. The handling of dependencies depends on the " - "upgrade-strategy used." - ), - ) - - self.cmd_opts.add_option( - "--upgrade-strategy", - dest="upgrade_strategy", - default="only-if-needed", - choices=["only-if-needed", "eager"], - help=( - "Determines how dependency upgrading should be handled " - "[default: %default]. " - '"eager" - dependencies are upgraded regardless of ' - "whether the currently installed version satisfies the " - "requirements of the upgraded package(s). " - '"only-if-needed" - are upgraded only when they do not ' - "satisfy the requirements of the upgraded package(s)." - ), - ) - - self.cmd_opts.add_option( - "--force-reinstall", - dest="force_reinstall", - action="store_true", - help="Reinstall all packages even if they are already up-to-date.", - ) - - self.cmd_opts.add_option( - "-I", - "--ignore-installed", - dest="ignore_installed", - action="store_true", - help=( - "Ignore the installed packages, overwriting them. " - "This can break your system if the existing package " - "is of a different version or was installed " - "with a different package manager!" - ), - ) - - self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) - self.cmd_opts.add_option(cmdoptions.no_build_isolation()) - self.cmd_opts.add_option(cmdoptions.use_pep517()) - self.cmd_opts.add_option(cmdoptions.no_use_pep517()) - self.cmd_opts.add_option(cmdoptions.check_build_deps()) - self.cmd_opts.add_option(cmdoptions.override_externally_managed()) - - self.cmd_opts.add_option(cmdoptions.config_settings()) - self.cmd_opts.add_option(cmdoptions.global_options()) - - self.cmd_opts.add_option( - "--compile", - action="store_true", - dest="compile", - default=True, - help="Compile Python source files to bytecode", - ) - - self.cmd_opts.add_option( - "--no-compile", - action="store_false", - dest="compile", - help="Do not compile Python source files to bytecode", - ) - - self.cmd_opts.add_option( - "--no-warn-script-location", - action="store_false", - dest="warn_script_location", - default=True, - help="Do not warn when installing scripts outside PATH", - ) - self.cmd_opts.add_option( - "--no-warn-conflicts", - action="store_false", - dest="warn_about_conflicts", - default=True, - help="Do not warn about broken dependencies", - ) - self.cmd_opts.add_option(cmdoptions.no_binary()) - self.cmd_opts.add_option(cmdoptions.only_binary()) - self.cmd_opts.add_option(cmdoptions.prefer_binary()) - self.cmd_opts.add_option(cmdoptions.require_hashes()) - self.cmd_opts.add_option(cmdoptions.progress_bar()) - self.cmd_opts.add_option(cmdoptions.root_user_action()) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, self.cmd_opts) - - self.cmd_opts.add_option( - "--report", - dest="json_report_file", - metavar="file", - default=None, - help=( - "Generate a JSON file describing what pip did to install " - "the provided requirements. " - "Can be used in combination with --dry-run and --ignore-installed " - "to 'resolve' the requirements. " - "When - is used as file name it writes to stdout. " - "When writing to stdout, please combine with the --quiet option " - "to avoid mixing pip logging output with JSON output." - ), - ) - - @with_cleanup - def run(self, options: Values, args: List[str]) -> int: - if options.use_user_site and options.target_dir is not None: - raise CommandError("Can not combine '--user' and '--target'") - - # Check whether the environment we're installing into is externally - # managed, as specified in PEP 668. Specifying --root, --target, or - # --prefix disables the check, since there's no reliable way to locate - # the EXTERNALLY-MANAGED file for those cases. An exception is also - # made specifically for "--dry-run --report" for convenience. - installing_into_current_environment = ( - not (options.dry_run and options.json_report_file) - and options.root_path is None - and options.target_dir is None - and options.prefix_path is None - ) - if ( - installing_into_current_environment - and not options.override_externally_managed - ): - check_externally_managed() - - upgrade_strategy = "to-satisfy-only" - if options.upgrade: - upgrade_strategy = options.upgrade_strategy - - cmdoptions.check_dist_restriction(options, check_target=True) - - logger.verbose("Using %s", get_pip_version()) - options.use_user_site = decide_user_install( - options.use_user_site, - prefix_path=options.prefix_path, - target_dir=options.target_dir, - root_path=options.root_path, - isolated_mode=options.isolated_mode, - ) - - target_temp_dir: Optional[TempDirectory] = None - target_temp_dir_path: Optional[str] = None - if options.target_dir: - options.ignore_installed = True - options.target_dir = os.path.abspath(options.target_dir) - if ( - # fmt: off - os.path.exists(options.target_dir) and - not os.path.isdir(options.target_dir) - # fmt: on - ): - raise CommandError( - "Target path exists but is not a directory, will not continue." - ) - - # Create a target directory for using with the target option - target_temp_dir = TempDirectory(kind="target") - target_temp_dir_path = target_temp_dir.path - self.enter_context(target_temp_dir) - - global_options = options.global_options or [] - - session = self.get_default_session(options) - - target_python = make_target_python(options) - finder = self._build_package_finder( - options=options, - session=session, - target_python=target_python, - ignore_requires_python=options.ignore_requires_python, - ) - build_tracker = self.enter_context(get_build_tracker()) - - directory = TempDirectory( - delete=not options.no_clean, - kind="install", - globally_managed=True, - ) - - try: - reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options(options, reqs) - - wheel_cache = WheelCache(options.cache_dir) - - # Only when installing is it permitted to use PEP 660. - # In other circumstances (pip wheel, pip download) we generate - # regular (i.e. non editable) metadata and wheels. - for req in reqs: - req.permit_editable_wheels = True - - preparer = self.make_requirement_preparer( - temp_build_dir=directory, - options=options, - build_tracker=build_tracker, - session=session, - finder=finder, - use_user_site=options.use_user_site, - verbosity=self.verbosity, - ) - resolver = self.make_resolver( - preparer=preparer, - finder=finder, - options=options, - wheel_cache=wheel_cache, - use_user_site=options.use_user_site, - ignore_installed=options.ignore_installed, - ignore_requires_python=options.ignore_requires_python, - force_reinstall=options.force_reinstall, - upgrade_strategy=upgrade_strategy, - use_pep517=options.use_pep517, - ) - - self.trace_basic_info(finder) - - requirement_set = resolver.resolve( - reqs, check_supported_wheels=not options.target_dir - ) - - if options.json_report_file: - report = InstallationReport(requirement_set.requirements_to_install) - if options.json_report_file == "-": - print_json(data=report.to_dict()) - else: - with open(options.json_report_file, "w", encoding="utf-8") as f: - json.dump(report.to_dict(), f, indent=2, ensure_ascii=False) - - if options.dry_run: - # In non dry-run mode, the legacy versions and specifiers check - # will be done as part of conflict detection. - requirement_set.warn_legacy_versions_and_specifiers() - would_install_items = sorted( - (r.metadata["name"], r.metadata["version"]) - for r in requirement_set.requirements_to_install - ) - if would_install_items: - write_output( - "Would install %s", - " ".join("-".join(item) for item in would_install_items), - ) - return SUCCESS - - try: - pip_req = requirement_set.get_requirement("pip") - except KeyError: - modifying_pip = False - else: - # If we're not replacing an already installed pip, - # we're not modifying it. - modifying_pip = pip_req.satisfied_by is None - protect_pip_from_modification_on_windows(modifying_pip=modifying_pip) - - reqs_to_build = [ - r - for r in requirement_set.requirements.values() - if should_build_for_install_command(r) - ] - - _, build_failures = build( - reqs_to_build, - wheel_cache=wheel_cache, - verify=True, - build_options=[], - global_options=global_options, - ) - - if build_failures: - raise InstallationError( - "Could not build wheels for {}, which is required to " - "install pyproject.toml-based projects".format( - ", ".join(r.name for r in build_failures) # type: ignore - ) - ) - - to_install = resolver.get_installation_order(requirement_set) - - # Check for conflicts in the package set we're installing. - conflicts: Optional[ConflictDetails] = None - should_warn_about_conflicts = ( - not options.ignore_dependencies and options.warn_about_conflicts - ) - if should_warn_about_conflicts: - conflicts = self._determine_conflicts(to_install) - - # Don't warn about script install locations if - # --target or --prefix has been specified - warn_script_location = options.warn_script_location - if options.target_dir or options.prefix_path: - warn_script_location = False - - installed = install_given_reqs( - to_install, - global_options, - root=options.root_path, - home=target_temp_dir_path, - prefix=options.prefix_path, - warn_script_location=warn_script_location, - use_user_site=options.use_user_site, - pycompile=options.compile, - ) - - lib_locations = get_lib_location_guesses( - user=options.use_user_site, - home=target_temp_dir_path, - root=options.root_path, - prefix=options.prefix_path, - isolated=options.isolated_mode, - ) - env = get_environment(lib_locations) - - installed.sort(key=operator.attrgetter("name")) - items = [] - for result in installed: - item = result.name - try: - installed_dist = env.get_distribution(item) - if installed_dist is not None: - item = f"{item}-{installed_dist.version}" - except Exception: - pass - items.append(item) - - if conflicts is not None: - self._warn_about_conflicts( - conflicts, - resolver_variant=self.determine_resolver_variant(options), - ) - - installed_desc = " ".join(items) - if installed_desc: - write_output( - "Successfully installed %s", - installed_desc, - ) - except OSError as error: - show_traceback = self.verbosity >= 1 - - message = create_os_error_message( - error, - show_traceback, - options.use_user_site, - ) - logger.error(message, exc_info=show_traceback) - - return ERROR - - if options.target_dir: - assert target_temp_dir - self._handle_target_dir( - options.target_dir, target_temp_dir, options.upgrade - ) - if options.root_user_action == "warn": - warn_if_run_as_root() - return SUCCESS - - def _handle_target_dir( - self, target_dir: str, target_temp_dir: TempDirectory, upgrade: bool - ) -> None: - ensure_dir(target_dir) - - # Checking both purelib and platlib directories for installed - # packages to be moved to target directory - lib_dir_list = [] - - # Checking both purelib and platlib directories for installed - # packages to be moved to target directory - scheme = get_scheme("", home=target_temp_dir.path) - purelib_dir = scheme.purelib - platlib_dir = scheme.platlib - data_dir = scheme.data - - if os.path.exists(purelib_dir): - lib_dir_list.append(purelib_dir) - if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: - lib_dir_list.append(platlib_dir) - if os.path.exists(data_dir): - lib_dir_list.append(data_dir) - - for lib_dir in lib_dir_list: - for item in os.listdir(lib_dir): - if lib_dir == data_dir: - ddir = os.path.join(data_dir, item) - if any(s.startswith(ddir) for s in lib_dir_list[:-1]): - continue - target_item_dir = os.path.join(target_dir, item) - if os.path.exists(target_item_dir): - if not upgrade: - logger.warning( - "Target directory %s already exists. Specify " - "--upgrade to force replacement.", - target_item_dir, - ) - continue - if os.path.islink(target_item_dir): - logger.warning( - "Target directory %s already exists and is " - "a link. pip will not automatically replace " - "links, please remove if replacement is " - "desired.", - target_item_dir, - ) - continue - if os.path.isdir(target_item_dir): - shutil.rmtree(target_item_dir) - else: - os.remove(target_item_dir) - - shutil.move(os.path.join(lib_dir, item), target_item_dir) - - def _determine_conflicts( - self, to_install: List[InstallRequirement] - ) -> Optional[ConflictDetails]: - try: - return check_install_conflicts(to_install) - except Exception: - logger.exception( - "Error while checking for conflicts. Please file an issue on " - "pip's issue tracker: https://github.com/pypa/pip/issues/new" - ) - return None - - def _warn_about_conflicts( - self, conflict_details: ConflictDetails, resolver_variant: str - ) -> None: - package_set, (missing, conflicting) = conflict_details - if not missing and not conflicting: - return - - parts: List[str] = [] - if resolver_variant == "legacy": - parts.append( - "pip's legacy dependency resolver does not consider dependency " - "conflicts when selecting packages. This behaviour is the " - "source of the following dependency conflicts." - ) - else: - assert resolver_variant == "resolvelib" - parts.append( - "pip's dependency resolver does not currently take into account " - "all the packages that are installed. This behaviour is the " - "source of the following dependency conflicts." - ) - - # NOTE: There is some duplication here, with commands/check.py - for project_name in missing: - version = package_set[project_name][0] - for dependency in missing[project_name]: - message = ( - f"{project_name} {version} requires {dependency[1]}, " - "which is not installed." - ) - parts.append(message) - - for project_name in conflicting: - version = package_set[project_name][0] - for dep_name, dep_version, req in conflicting[project_name]: - message = ( - "{name} {version} requires {requirement}, but {you} have " - "{dep_name} {dep_version} which is incompatible." - ).format( - name=project_name, - version=version, - requirement=req, - dep_name=dep_name, - dep_version=dep_version, - you=("you" if resolver_variant == "resolvelib" else "you'll"), - ) - parts.append(message) - - logger.critical("\n".join(parts)) - - -def get_lib_location_guesses( - user: bool = False, - home: Optional[str] = None, - root: Optional[str] = None, - isolated: bool = False, - prefix: Optional[str] = None, -) -> List[str]: - scheme = get_scheme( - "", - user=user, - home=home, - root=root, - isolated=isolated, - prefix=prefix, - ) - return [scheme.purelib, scheme.platlib] - - -def site_packages_writable(root: Optional[str], isolated: bool) -> bool: - return all( - test_writable_dir(d) - for d in set(get_lib_location_guesses(root=root, isolated=isolated)) - ) - - -def decide_user_install( - use_user_site: Optional[bool], - prefix_path: Optional[str] = None, - target_dir: Optional[str] = None, - root_path: Optional[str] = None, - isolated_mode: bool = False, -) -> bool: - """Determine whether to do a user install based on the input options. - - If use_user_site is False, no additional checks are done. - If use_user_site is True, it is checked for compatibility with other - options. - If use_user_site is None, the default behaviour depends on the environment, - which is provided by the other arguments. - """ - # In some cases (config from tox), use_user_site can be set to an integer - # rather than a bool, which 'use_user_site is False' wouldn't catch. - if (use_user_site is not None) and (not use_user_site): - logger.debug("Non-user install by explicit request") - return False - - if use_user_site: - if prefix_path: - raise CommandError( - "Can not combine '--user' and '--prefix' as they imply " - "different installation locations" - ) - if virtualenv_no_global(): - raise InstallationError( - "Can not perform a '--user' install. User site-packages " - "are not visible in this virtualenv." - ) - logger.debug("User install by explicit request") - return True - - # If we are here, user installs have not been explicitly requested/avoided - assert use_user_site is None - - # user install incompatible with --prefix/--target - if prefix_path or target_dir: - logger.debug("Non-user install due to --prefix or --target option") - return False - - # If user installs are not enabled, choose a non-user install - if not site.ENABLE_USER_SITE: - logger.debug("Non-user install because user site-packages disabled") - return False - - # If we have permission for a non-user install, do that, - # otherwise do a user install. - if site_packages_writable(root=root_path, isolated=isolated_mode): - logger.debug("Non-user install because site-packages writeable") - return False - - logger.info( - "Defaulting to user installation because normal site-packages " - "is not writeable" - ) - return True - - -def create_os_error_message( - error: OSError, show_traceback: bool, using_user_site: bool -) -> str: - """Format an error message for an OSError - - It may occur anytime during the execution of the install command. - """ - parts = [] - - # Mention the error if we are not going to show a traceback - parts.append("Could not install packages due to an OSError") - if not show_traceback: - parts.append(": ") - parts.append(str(error)) - else: - parts.append(".") - - # Spilt the error indication from a helper message (if any) - parts[-1] += "\n" - - # Suggest useful actions to the user: - # (1) using user site-packages or (2) verifying the permissions - if error.errno == errno.EACCES: - user_option_part = "Consider using the `--user` option" - permissions_part = "Check the permissions" - - if not running_under_virtualenv() and not using_user_site: - parts.extend( - [ - user_option_part, - " or ", - permissions_part.lower(), - ] - ) - else: - parts.append(permissions_part) - parts.append(".\n") - - # Suggest the user to enable Long Paths if path length is - # more than 260 - if ( - WINDOWS - and error.errno == errno.ENOENT - and error.filename - and len(error.filename) > 260 - ): - parts.append( - "HINT: This error might have occurred since " - "this system does not have Windows Long Path " - "support enabled. You can find information on " - "how to enable this at " - "https://pip.pypa.io/warnings/enable-long-paths\n" - ) - - return "".join(parts).strip() + "\n" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/list.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/list.py deleted file mode 100644 index e551dda..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/list.py +++ /dev/null @@ -1,368 +0,0 @@ -import json -import logging -from optparse import Values -from typing import TYPE_CHECKING, Generator, List, Optional, Sequence, Tuple, cast - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import IndexGroupCommand -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.exceptions import CommandError -from pip._internal.index.collector import LinkCollector -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution, get_environment -from pip._internal.models.selection_prefs import SelectionPreferences -from pip._internal.network.session import PipSession -from pip._internal.utils.compat import stdlib_pkgs -from pip._internal.utils.misc import tabulate, write_output - -if TYPE_CHECKING: - from pip._internal.metadata.base import DistributionVersion - - class _DistWithLatestInfo(BaseDistribution): - """Give the distribution object a couple of extra fields. - - These will be populated during ``get_outdated()``. This is dirty but - makes the rest of the code much cleaner. - """ - - latest_version: DistributionVersion - latest_filetype: str - - _ProcessedDists = Sequence[_DistWithLatestInfo] - - -logger = logging.getLogger(__name__) - - -class ListCommand(IndexGroupCommand): - """ - List installed packages, including editables. - - Packages are listed in a case-insensitive sorted order. - """ - - ignore_require_venv = True - usage = """ - %prog [options]""" - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-o", - "--outdated", - action="store_true", - default=False, - help="List outdated packages", - ) - self.cmd_opts.add_option( - "-u", - "--uptodate", - action="store_true", - default=False, - help="List uptodate packages", - ) - self.cmd_opts.add_option( - "-e", - "--editable", - action="store_true", - default=False, - help="List editable projects.", - ) - self.cmd_opts.add_option( - "-l", - "--local", - action="store_true", - default=False, - help=( - "If in a virtualenv that has global access, do not list " - "globally-installed packages." - ), - ) - self.cmd_opts.add_option( - "--user", - dest="user", - action="store_true", - default=False, - help="Only output packages installed in user-site.", - ) - self.cmd_opts.add_option(cmdoptions.list_path()) - self.cmd_opts.add_option( - "--pre", - action="store_true", - default=False, - help=( - "Include pre-release and development versions. By default, " - "pip only finds stable versions." - ), - ) - - self.cmd_opts.add_option( - "--format", - action="store", - dest="list_format", - default="columns", - choices=("columns", "freeze", "json"), - help=( - "Select the output format among: columns (default), freeze, or json. " - "The 'freeze' format cannot be used with the --outdated option." - ), - ) - - self.cmd_opts.add_option( - "--not-required", - action="store_true", - dest="not_required", - help="List packages that are not dependencies of installed packages.", - ) - - self.cmd_opts.add_option( - "--exclude-editable", - action="store_false", - dest="include_editable", - help="Exclude editable package from output.", - ) - self.cmd_opts.add_option( - "--include-editable", - action="store_true", - dest="include_editable", - help="Include editable package from output.", - default=True, - ) - self.cmd_opts.add_option(cmdoptions.list_exclude()) - index_opts = cmdoptions.make_option_group(cmdoptions.index_group, self.parser) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, self.cmd_opts) - - def _build_package_finder( - self, options: Values, session: PipSession - ) -> PackageFinder: - """ - Create a package finder appropriate to this list command. - """ - link_collector = LinkCollector.create(session, options=options) - - # Pass allow_yanked=False to ignore yanked versions. - selection_prefs = SelectionPreferences( - allow_yanked=False, - allow_all_prereleases=options.pre, - ) - - return PackageFinder.create( - link_collector=link_collector, - selection_prefs=selection_prefs, - ) - - def run(self, options: Values, args: List[str]) -> int: - if options.outdated and options.uptodate: - raise CommandError("Options --outdated and --uptodate cannot be combined.") - - if options.outdated and options.list_format == "freeze": - raise CommandError( - "List format 'freeze' cannot be used with the --outdated option." - ) - - cmdoptions.check_list_path_option(options) - - skip = set(stdlib_pkgs) - if options.excludes: - skip.update(canonicalize_name(n) for n in options.excludes) - - packages: "_ProcessedDists" = [ - cast("_DistWithLatestInfo", d) - for d in get_environment(options.path).iter_installed_distributions( - local_only=options.local, - user_only=options.user, - editables_only=options.editable, - include_editables=options.include_editable, - skip=skip, - ) - ] - - # get_not_required must be called firstly in order to find and - # filter out all dependencies correctly. Otherwise a package - # can't be identified as requirement because some parent packages - # could be filtered out before. - if options.not_required: - packages = self.get_not_required(packages, options) - - if options.outdated: - packages = self.get_outdated(packages, options) - elif options.uptodate: - packages = self.get_uptodate(packages, options) - - self.output_package_listing(packages, options) - return SUCCESS - - def get_outdated( - self, packages: "_ProcessedDists", options: Values - ) -> "_ProcessedDists": - return [ - dist - for dist in self.iter_packages_latest_infos(packages, options) - if dist.latest_version > dist.version - ] - - def get_uptodate( - self, packages: "_ProcessedDists", options: Values - ) -> "_ProcessedDists": - return [ - dist - for dist in self.iter_packages_latest_infos(packages, options) - if dist.latest_version == dist.version - ] - - def get_not_required( - self, packages: "_ProcessedDists", options: Values - ) -> "_ProcessedDists": - dep_keys = { - canonicalize_name(dep.name) - for dist in packages - for dep in (dist.iter_dependencies() or ()) - } - - # Create a set to remove duplicate packages, and cast it to a list - # to keep the return type consistent with get_outdated and - # get_uptodate - return list({pkg for pkg in packages if pkg.canonical_name not in dep_keys}) - - def iter_packages_latest_infos( - self, packages: "_ProcessedDists", options: Values - ) -> Generator["_DistWithLatestInfo", None, None]: - with self._build_session(options) as session: - finder = self._build_package_finder(options, session) - - def latest_info( - dist: "_DistWithLatestInfo", - ) -> Optional["_DistWithLatestInfo"]: - all_candidates = finder.find_all_candidates(dist.canonical_name) - if not options.pre: - # Remove prereleases - all_candidates = [ - candidate - for candidate in all_candidates - if not candidate.version.is_prerelease - ] - - evaluator = finder.make_candidate_evaluator( - project_name=dist.canonical_name, - ) - best_candidate = evaluator.sort_best_candidate(all_candidates) - if best_candidate is None: - return None - - remote_version = best_candidate.version - if best_candidate.link.is_wheel: - typ = "wheel" - else: - typ = "sdist" - dist.latest_version = remote_version - dist.latest_filetype = typ - return dist - - for dist in map(latest_info, packages): - if dist is not None: - yield dist - - def output_package_listing( - self, packages: "_ProcessedDists", options: Values - ) -> None: - packages = sorted( - packages, - key=lambda dist: dist.canonical_name, - ) - if options.list_format == "columns" and packages: - data, header = format_for_columns(packages, options) - self.output_package_listing_columns(data, header) - elif options.list_format == "freeze": - for dist in packages: - if options.verbose >= 1: - write_output( - "%s==%s (%s)", dist.raw_name, dist.version, dist.location - ) - else: - write_output("%s==%s", dist.raw_name, dist.version) - elif options.list_format == "json": - write_output(format_for_json(packages, options)) - - def output_package_listing_columns( - self, data: List[List[str]], header: List[str] - ) -> None: - # insert the header first: we need to know the size of column names - if len(data) > 0: - data.insert(0, header) - - pkg_strings, sizes = tabulate(data) - - # Create and add a separator. - if len(data) > 0: - pkg_strings.insert(1, " ".join("-" * x for x in sizes)) - - for val in pkg_strings: - write_output(val) - - -def format_for_columns( - pkgs: "_ProcessedDists", options: Values -) -> Tuple[List[List[str]], List[str]]: - """ - Convert the package data into something usable - by output_package_listing_columns. - """ - header = ["Package", "Version"] - - running_outdated = options.outdated - if running_outdated: - header.extend(["Latest", "Type"]) - - has_editables = any(x.editable for x in pkgs) - if has_editables: - header.append("Editable project location") - - if options.verbose >= 1: - header.append("Location") - if options.verbose >= 1: - header.append("Installer") - - data = [] - for proj in pkgs: - # if we're working on the 'outdated' list, separate out the - # latest_version and type - row = [proj.raw_name, str(proj.version)] - - if running_outdated: - row.append(str(proj.latest_version)) - row.append(proj.latest_filetype) - - if has_editables: - row.append(proj.editable_project_location or "") - - if options.verbose >= 1: - row.append(proj.location or "") - if options.verbose >= 1: - row.append(proj.installer) - - data.append(row) - - return data, header - - -def format_for_json(packages: "_ProcessedDists", options: Values) -> str: - data = [] - for dist in packages: - info = { - "name": dist.raw_name, - "version": str(dist.version), - } - if options.verbose >= 1: - info["location"] = dist.location or "" - info["installer"] = dist.installer - if options.outdated: - info["latest_version"] = str(dist.latest_version) - info["latest_filetype"] = dist.latest_filetype - editable_project_location = dist.editable_project_location - if editable_project_location: - info["editable_project_location"] = editable_project_location - data.append(info) - return json.dumps(data) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/search.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/search.py deleted file mode 100644 index 03ed925..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/search.py +++ /dev/null @@ -1,174 +0,0 @@ -import logging -import shutil -import sys -import textwrap -import xmlrpc.client -from collections import OrderedDict -from optparse import Values -from typing import TYPE_CHECKING, Dict, List, Optional - -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.cli.base_command import Command -from pip._internal.cli.req_command import SessionCommandMixin -from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS -from pip._internal.exceptions import CommandError -from pip._internal.metadata import get_default_environment -from pip._internal.models.index import PyPI -from pip._internal.network.xmlrpc import PipXmlrpcTransport -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import write_output - -if TYPE_CHECKING: - from typing import TypedDict - - class TransformedHit(TypedDict): - name: str - summary: str - versions: List[str] - - -logger = logging.getLogger(__name__) - - -class SearchCommand(Command, SessionCommandMixin): - """Search for PyPI packages whose name or summary contains .""" - - usage = """ - %prog [options] """ - ignore_require_venv = True - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-i", - "--index", - dest="index", - metavar="URL", - default=PyPI.pypi_url, - help="Base URL of Python Package Index (default %default)", - ) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - if not args: - raise CommandError("Missing required argument (search query).") - query = args - pypi_hits = self.search(query, options) - hits = transform_hits(pypi_hits) - - terminal_width = None - if sys.stdout.isatty(): - terminal_width = shutil.get_terminal_size()[0] - - print_results(hits, terminal_width=terminal_width) - if pypi_hits: - return SUCCESS - return NO_MATCHES_FOUND - - def search(self, query: List[str], options: Values) -> List[Dict[str, str]]: - index_url = options.index - - session = self.get_default_session(options) - - transport = PipXmlrpcTransport(index_url, session) - pypi = xmlrpc.client.ServerProxy(index_url, transport) - try: - hits = pypi.search({"name": query, "summary": query}, "or") - except xmlrpc.client.Fault as fault: - message = "XMLRPC request failed [code: {code}]\n{string}".format( - code=fault.faultCode, - string=fault.faultString, - ) - raise CommandError(message) - assert isinstance(hits, list) - return hits - - -def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]: - """ - The list from pypi is really a list of versions. We want a list of - packages with the list of versions stored inline. This converts the - list from pypi into one we can use. - """ - packages: Dict[str, "TransformedHit"] = OrderedDict() - for hit in hits: - name = hit["name"] - summary = hit["summary"] - version = hit["version"] - - if name not in packages.keys(): - packages[name] = { - "name": name, - "summary": summary, - "versions": [version], - } - else: - packages[name]["versions"].append(version) - - # if this is the highest version, replace summary and score - if version == highest_version(packages[name]["versions"]): - packages[name]["summary"] = summary - - return list(packages.values()) - - -def print_dist_installation_info(name: str, latest: str) -> None: - env = get_default_environment() - dist = env.get_distribution(name) - if dist is not None: - with indent_log(): - if dist.version == latest: - write_output("INSTALLED: %s (latest)", dist.version) - else: - write_output("INSTALLED: %s", dist.version) - if parse_version(latest).pre: - write_output( - "LATEST: %s (pre-release; install" - " with `pip install --pre`)", - latest, - ) - else: - write_output("LATEST: %s", latest) - - -def print_results( - hits: List["TransformedHit"], - name_column_width: Optional[int] = None, - terminal_width: Optional[int] = None, -) -> None: - if not hits: - return - if name_column_width is None: - name_column_width = ( - max( - [ - len(hit["name"]) + len(highest_version(hit.get("versions", ["-"]))) - for hit in hits - ] - ) - + 4 - ) - - for hit in hits: - name = hit["name"] - summary = hit["summary"] or "" - latest = highest_version(hit.get("versions", ["-"])) - if terminal_width is not None: - target_width = terminal_width - name_column_width - 5 - if target_width > 10: - # wrap and indent summary to fit terminal - summary_lines = textwrap.wrap(summary, target_width) - summary = ("\n" + " " * (name_column_width + 3)).join(summary_lines) - - name_latest = f"{name} ({latest})" - line = f"{name_latest:{name_column_width}} - {summary}" - try: - write_output(line) - print_dist_installation_info(name, latest) - except UnicodeEncodeError: - pass - - -def highest_version(versions: List[str]) -> str: - return max(versions, key=parse_version) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/show.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/show.py deleted file mode 100644 index 3f10701..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/show.py +++ /dev/null @@ -1,189 +0,0 @@ -import logging -from optparse import Values -from typing import Generator, Iterable, Iterator, List, NamedTuple, Optional - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.cli.base_command import Command -from pip._internal.cli.status_codes import ERROR, SUCCESS -from pip._internal.metadata import BaseDistribution, get_default_environment -from pip._internal.utils.misc import write_output - -logger = logging.getLogger(__name__) - - -class ShowCommand(Command): - """ - Show information about one or more installed packages. - - The output is in RFC-compliant mail header format. - """ - - usage = """ - %prog [options] ...""" - ignore_require_venv = True - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-f", - "--files", - dest="files", - action="store_true", - default=False, - help="Show the full list of installed files for each package.", - ) - - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - if not args: - logger.warning("ERROR: Please provide a package name or names.") - return ERROR - query = args - - results = search_packages_info(query) - if not print_results( - results, list_files=options.files, verbose=options.verbose - ): - return ERROR - return SUCCESS - - -class _PackageInfo(NamedTuple): - name: str - version: str - location: str - editable_project_location: Optional[str] - requires: List[str] - required_by: List[str] - installer: str - metadata_version: str - classifiers: List[str] - summary: str - homepage: str - project_urls: List[str] - author: str - author_email: str - license: str - entry_points: List[str] - files: Optional[List[str]] - - -def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None]: - """ - Gather details from installed distributions. Print distribution name, - version, location, and installed files. Installed files requires a - pip generated 'installed-files.txt' in the distributions '.egg-info' - directory. - """ - env = get_default_environment() - - installed = {dist.canonical_name: dist for dist in env.iter_all_distributions()} - query_names = [canonicalize_name(name) for name in query] - missing = sorted( - [name for name, pkg in zip(query, query_names) if pkg not in installed] - ) - if missing: - logger.warning("Package(s) not found: %s", ", ".join(missing)) - - def _get_requiring_packages(current_dist: BaseDistribution) -> Iterator[str]: - return ( - dist.metadata["Name"] or "UNKNOWN" - for dist in installed.values() - if current_dist.canonical_name - in {canonicalize_name(d.name) for d in dist.iter_dependencies()} - ) - - for query_name in query_names: - try: - dist = installed[query_name] - except KeyError: - continue - - requires = sorted((req.name for req in dist.iter_dependencies()), key=str.lower) - required_by = sorted(_get_requiring_packages(dist), key=str.lower) - - try: - entry_points_text = dist.read_text("entry_points.txt") - entry_points = entry_points_text.splitlines(keepends=False) - except FileNotFoundError: - entry_points = [] - - files_iter = dist.iter_declared_entries() - if files_iter is None: - files: Optional[List[str]] = None - else: - files = sorted(files_iter) - - metadata = dist.metadata - - yield _PackageInfo( - name=dist.raw_name, - version=str(dist.version), - location=dist.location or "", - editable_project_location=dist.editable_project_location, - requires=requires, - required_by=required_by, - installer=dist.installer, - metadata_version=dist.metadata_version or "", - classifiers=metadata.get_all("Classifier", []), - summary=metadata.get("Summary", ""), - homepage=metadata.get("Home-page", ""), - project_urls=metadata.get_all("Project-URL", []), - author=metadata.get("Author", ""), - author_email=metadata.get("Author-email", ""), - license=metadata.get("License", ""), - entry_points=entry_points, - files=files, - ) - - -def print_results( - distributions: Iterable[_PackageInfo], - list_files: bool, - verbose: bool, -) -> bool: - """ - Print the information from installed distributions found. - """ - results_printed = False - for i, dist in enumerate(distributions): - results_printed = True - if i > 0: - write_output("---") - - write_output("Name: %s", dist.name) - write_output("Version: %s", dist.version) - write_output("Summary: %s", dist.summary) - write_output("Home-page: %s", dist.homepage) - write_output("Author: %s", dist.author) - write_output("Author-email: %s", dist.author_email) - write_output("License: %s", dist.license) - write_output("Location: %s", dist.location) - if dist.editable_project_location is not None: - write_output( - "Editable project location: %s", dist.editable_project_location - ) - write_output("Requires: %s", ", ".join(dist.requires)) - write_output("Required-by: %s", ", ".join(dist.required_by)) - - if verbose: - write_output("Metadata-Version: %s", dist.metadata_version) - write_output("Installer: %s", dist.installer) - write_output("Classifiers:") - for classifier in dist.classifiers: - write_output(" %s", classifier) - write_output("Entry-points:") - for entry in dist.entry_points: - write_output(" %s", entry.strip()) - write_output("Project-URLs:") - for project_url in dist.project_urls: - write_output(" %s", project_url) - if list_files: - write_output("Files:") - if dist.files is None: - write_output("Cannot locate RECORD or installed-files.txt") - else: - for line in dist.files: - write_output(" %s", line.strip()) - return results_printed diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py deleted file mode 100644 index f198fc3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py +++ /dev/null @@ -1,113 +0,0 @@ -import logging -from optparse import Values -from typing import List - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.cli import cmdoptions -from pip._internal.cli.base_command import Command -from pip._internal.cli.req_command import SessionCommandMixin, warn_if_run_as_root -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.exceptions import InstallationError -from pip._internal.req import parse_requirements -from pip._internal.req.constructors import ( - install_req_from_line, - install_req_from_parsed_requirement, -) -from pip._internal.utils.misc import ( - check_externally_managed, - protect_pip_from_modification_on_windows, -) - -logger = logging.getLogger(__name__) - - -class UninstallCommand(Command, SessionCommandMixin): - """ - Uninstall packages. - - pip is able to uninstall most installed packages. Known exceptions are: - - - Pure distutils packages installed with ``python setup.py install``, which - leave behind no metadata to determine what files were installed. - - Script wrappers installed by ``python setup.py develop``. - """ - - usage = """ - %prog [options] ... - %prog [options] -r ...""" - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-r", - "--requirement", - dest="requirements", - action="append", - default=[], - metavar="file", - help=( - "Uninstall all the packages listed in the given requirements " - "file. This option can be used multiple times." - ), - ) - self.cmd_opts.add_option( - "-y", - "--yes", - dest="yes", - action="store_true", - help="Don't ask for confirmation of uninstall deletions.", - ) - self.cmd_opts.add_option(cmdoptions.root_user_action()) - self.cmd_opts.add_option(cmdoptions.override_externally_managed()) - self.parser.insert_option_group(0, self.cmd_opts) - - def run(self, options: Values, args: List[str]) -> int: - session = self.get_default_session(options) - - reqs_to_uninstall = {} - for name in args: - req = install_req_from_line( - name, - isolated=options.isolated_mode, - ) - if req.name: - reqs_to_uninstall[canonicalize_name(req.name)] = req - else: - logger.warning( - "Invalid requirement: %r ignored -" - " the uninstall command expects named" - " requirements.", - name, - ) - for filename in options.requirements: - for parsed_req in parse_requirements( - filename, options=options, session=session - ): - req = install_req_from_parsed_requirement( - parsed_req, isolated=options.isolated_mode - ) - if req.name: - reqs_to_uninstall[canonicalize_name(req.name)] = req - if not reqs_to_uninstall: - raise InstallationError( - f"You must give at least one requirement to {self.name} (see " - f'"pip help {self.name}")' - ) - - if not options.override_externally_managed: - check_externally_managed() - - protect_pip_from_modification_on_windows( - modifying_pip="pip" in reqs_to_uninstall - ) - - for req in reqs_to_uninstall.values(): - uninstall_pathset = req.uninstall( - auto_confirm=options.yes, - verbose=self.verbosity > 0, - ) - if uninstall_pathset: - uninstall_pathset.commit() - if options.root_user_action == "warn": - warn_if_run_as_root() - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py deleted file mode 100644 index ed578aa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py +++ /dev/null @@ -1,183 +0,0 @@ -import logging -import os -import shutil -from optparse import Values -from typing import List - -from pip._internal.cache import WheelCache -from pip._internal.cli import cmdoptions -from pip._internal.cli.req_command import RequirementCommand, with_cleanup -from pip._internal.cli.status_codes import SUCCESS -from pip._internal.exceptions import CommandError -from pip._internal.operations.build.build_tracker import get_build_tracker -from pip._internal.req.req_install import ( - InstallRequirement, - check_legacy_setup_py_options, -) -from pip._internal.utils.misc import ensure_dir, normalize_path -from pip._internal.utils.temp_dir import TempDirectory -from pip._internal.wheel_builder import build, should_build_for_wheel_command - -logger = logging.getLogger(__name__) - - -class WheelCommand(RequirementCommand): - """ - Build Wheel archives for your requirements and dependencies. - - Wheel is a built-package format, and offers the advantage of not - recompiling your software during every install. For more details, see the - wheel docs: https://wheel.readthedocs.io/en/latest/ - - 'pip wheel' uses the build system interface as described here: - https://pip.pypa.io/en/stable/reference/build-system/ - - """ - - usage = """ - %prog [options] ... - %prog [options] -r ... - %prog [options] [-e] ... - %prog [options] [-e] ... - %prog [options] ...""" - - def add_options(self) -> None: - self.cmd_opts.add_option( - "-w", - "--wheel-dir", - dest="wheel_dir", - metavar="dir", - default=os.curdir, - help=( - "Build wheels into , where the default is the " - "current working directory." - ), - ) - self.cmd_opts.add_option(cmdoptions.no_binary()) - self.cmd_opts.add_option(cmdoptions.only_binary()) - self.cmd_opts.add_option(cmdoptions.prefer_binary()) - self.cmd_opts.add_option(cmdoptions.no_build_isolation()) - self.cmd_opts.add_option(cmdoptions.use_pep517()) - self.cmd_opts.add_option(cmdoptions.no_use_pep517()) - self.cmd_opts.add_option(cmdoptions.check_build_deps()) - self.cmd_opts.add_option(cmdoptions.constraints()) - self.cmd_opts.add_option(cmdoptions.editable()) - self.cmd_opts.add_option(cmdoptions.requirements()) - self.cmd_opts.add_option(cmdoptions.src()) - self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) - self.cmd_opts.add_option(cmdoptions.no_deps()) - self.cmd_opts.add_option(cmdoptions.progress_bar()) - - self.cmd_opts.add_option( - "--no-verify", - dest="no_verify", - action="store_true", - default=False, - help="Don't verify if built wheel is valid.", - ) - - self.cmd_opts.add_option(cmdoptions.config_settings()) - self.cmd_opts.add_option(cmdoptions.build_options()) - self.cmd_opts.add_option(cmdoptions.global_options()) - - self.cmd_opts.add_option( - "--pre", - action="store_true", - default=False, - help=( - "Include pre-release and development versions. By default, " - "pip only finds stable versions." - ), - ) - - self.cmd_opts.add_option(cmdoptions.require_hashes()) - - index_opts = cmdoptions.make_option_group( - cmdoptions.index_group, - self.parser, - ) - - self.parser.insert_option_group(0, index_opts) - self.parser.insert_option_group(0, self.cmd_opts) - - @with_cleanup - def run(self, options: Values, args: List[str]) -> int: - session = self.get_default_session(options) - - finder = self._build_package_finder(options, session) - - options.wheel_dir = normalize_path(options.wheel_dir) - ensure_dir(options.wheel_dir) - - build_tracker = self.enter_context(get_build_tracker()) - - directory = TempDirectory( - delete=not options.no_clean, - kind="wheel", - globally_managed=True, - ) - - reqs = self.get_requirements(args, options, finder, session) - check_legacy_setup_py_options(options, reqs) - - wheel_cache = WheelCache(options.cache_dir) - - preparer = self.make_requirement_preparer( - temp_build_dir=directory, - options=options, - build_tracker=build_tracker, - session=session, - finder=finder, - download_dir=options.wheel_dir, - use_user_site=False, - verbosity=self.verbosity, - ) - - resolver = self.make_resolver( - preparer=preparer, - finder=finder, - options=options, - wheel_cache=wheel_cache, - ignore_requires_python=options.ignore_requires_python, - use_pep517=options.use_pep517, - ) - - self.trace_basic_info(finder) - - requirement_set = resolver.resolve(reqs, check_supported_wheels=True) - - reqs_to_build: List[InstallRequirement] = [] - for req in requirement_set.requirements.values(): - if req.is_wheel: - preparer.save_linked_requirement(req) - elif should_build_for_wheel_command(req): - reqs_to_build.append(req) - - preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) - requirement_set.warn_legacy_versions_and_specifiers() - - # build wheels - build_successes, build_failures = build( - reqs_to_build, - wheel_cache=wheel_cache, - verify=(not options.no_verify), - build_options=options.build_options or [], - global_options=options.global_options or [], - ) - for req in build_successes: - assert req.link and req.link.is_wheel - assert req.local_file_path - # copy from cache to target directory - try: - shutil.copy(req.local_file_path, options.wheel_dir) - except OSError as e: - logger.warning( - "Building wheel for %s failed: %s", - req.name, - e, - ) - build_failures.append(req) - if len(build_failures) != 0: - raise CommandError("Failed to build one or more wheels") - - return SUCCESS diff --git a/venv/lib/python3.10/site-packages/pip/_internal/configuration.py b/venv/lib/python3.10/site-packages/pip/_internal/configuration.py deleted file mode 100644 index c25273d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/configuration.py +++ /dev/null @@ -1,383 +0,0 @@ -"""Configuration management setup - -Some terminology: -- name - As written in config files. -- value - Value associated with a name -- key - Name combined with it's section (section.name) -- variant - A single word describing where the configuration key-value pair came from -""" - -import configparser -import locale -import os -import sys -from typing import Any, Dict, Iterable, List, NewType, Optional, Tuple - -from pip._internal.exceptions import ( - ConfigurationError, - ConfigurationFileCouldNotBeLoaded, -) -from pip._internal.utils import appdirs -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.logging import getLogger -from pip._internal.utils.misc import ensure_dir, enum - -RawConfigParser = configparser.RawConfigParser # Shorthand -Kind = NewType("Kind", str) - -CONFIG_BASENAME = "pip.ini" if WINDOWS else "pip.conf" -ENV_NAMES_IGNORED = "version", "help" - -# The kinds of configurations there are. -kinds = enum( - USER="user", # User Specific - GLOBAL="global", # System Wide - SITE="site", # [Virtual] Environment Specific - ENV="env", # from PIP_CONFIG_FILE - ENV_VAR="env-var", # from Environment Variables -) -OVERRIDE_ORDER = kinds.GLOBAL, kinds.USER, kinds.SITE, kinds.ENV, kinds.ENV_VAR -VALID_LOAD_ONLY = kinds.USER, kinds.GLOBAL, kinds.SITE - -logger = getLogger(__name__) - - -# NOTE: Maybe use the optionx attribute to normalize keynames. -def _normalize_name(name: str) -> str: - """Make a name consistent regardless of source (environment or file)""" - name = name.lower().replace("_", "-") - if name.startswith("--"): - name = name[2:] # only prefer long opts - return name - - -def _disassemble_key(name: str) -> List[str]: - if "." not in name: - error_message = ( - "Key does not contain dot separated section and key. " - f"Perhaps you wanted to use 'global.{name}' instead?" - ) - raise ConfigurationError(error_message) - return name.split(".", 1) - - -def get_configuration_files() -> Dict[Kind, List[str]]: - global_config_files = [ - os.path.join(path, CONFIG_BASENAME) for path in appdirs.site_config_dirs("pip") - ] - - site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME) - legacy_config_file = os.path.join( - os.path.expanduser("~"), - "pip" if WINDOWS else ".pip", - CONFIG_BASENAME, - ) - new_config_file = os.path.join(appdirs.user_config_dir("pip"), CONFIG_BASENAME) - return { - kinds.GLOBAL: global_config_files, - kinds.SITE: [site_config_file], - kinds.USER: [legacy_config_file, new_config_file], - } - - -class Configuration: - """Handles management of configuration. - - Provides an interface to accessing and managing configuration files. - - This class converts provides an API that takes "section.key-name" style - keys and stores the value associated with it as "key-name" under the - section "section". - - This allows for a clean interface wherein the both the section and the - key-name are preserved in an easy to manage form in the configuration files - and the data stored is also nice. - """ - - def __init__(self, isolated: bool, load_only: Optional[Kind] = None) -> None: - super().__init__() - - if load_only is not None and load_only not in VALID_LOAD_ONLY: - raise ConfigurationError( - "Got invalid value for load_only - should be one of {}".format( - ", ".join(map(repr, VALID_LOAD_ONLY)) - ) - ) - self.isolated = isolated - self.load_only = load_only - - # Because we keep track of where we got the data from - self._parsers: Dict[Kind, List[Tuple[str, RawConfigParser]]] = { - variant: [] for variant in OVERRIDE_ORDER - } - self._config: Dict[Kind, Dict[str, Any]] = { - variant: {} for variant in OVERRIDE_ORDER - } - self._modified_parsers: List[Tuple[str, RawConfigParser]] = [] - - def load(self) -> None: - """Loads configuration from configuration files and environment""" - self._load_config_files() - if not self.isolated: - self._load_environment_vars() - - def get_file_to_edit(self) -> Optional[str]: - """Returns the file with highest priority in configuration""" - assert self.load_only is not None, "Need to be specified a file to be editing" - - try: - return self._get_parser_to_modify()[0] - except IndexError: - return None - - def items(self) -> Iterable[Tuple[str, Any]]: - """Returns key-value pairs like dict.items() representing the loaded - configuration - """ - return self._dictionary.items() - - def get_value(self, key: str) -> Any: - """Get a value from the configuration.""" - orig_key = key - key = _normalize_name(key) - try: - return self._dictionary[key] - except KeyError: - # disassembling triggers a more useful error message than simply - # "No such key" in the case that the key isn't in the form command.option - _disassemble_key(key) - raise ConfigurationError(f"No such key - {orig_key}") - - def set_value(self, key: str, value: Any) -> None: - """Modify a value in the configuration.""" - key = _normalize_name(key) - self._ensure_have_load_only() - - assert self.load_only - fname, parser = self._get_parser_to_modify() - - if parser is not None: - section, name = _disassemble_key(key) - - # Modify the parser and the configuration - if not parser.has_section(section): - parser.add_section(section) - parser.set(section, name, value) - - self._config[self.load_only][key] = value - self._mark_as_modified(fname, parser) - - def unset_value(self, key: str) -> None: - """Unset a value in the configuration.""" - orig_key = key - key = _normalize_name(key) - self._ensure_have_load_only() - - assert self.load_only - if key not in self._config[self.load_only]: - raise ConfigurationError(f"No such key - {orig_key}") - - fname, parser = self._get_parser_to_modify() - - if parser is not None: - section, name = _disassemble_key(key) - if not ( - parser.has_section(section) and parser.remove_option(section, name) - ): - # The option was not removed. - raise ConfigurationError( - "Fatal Internal error [id=1]. Please report as a bug." - ) - - # The section may be empty after the option was removed. - if not parser.items(section): - parser.remove_section(section) - self._mark_as_modified(fname, parser) - - del self._config[self.load_only][key] - - def save(self) -> None: - """Save the current in-memory state.""" - self._ensure_have_load_only() - - for fname, parser in self._modified_parsers: - logger.info("Writing to %s", fname) - - # Ensure directory exists. - ensure_dir(os.path.dirname(fname)) - - # Ensure directory's permission(need to be writeable) - try: - with open(fname, "w") as f: - parser.write(f) - except OSError as error: - raise ConfigurationError( - f"An error occurred while writing to the configuration file " - f"{fname}: {error}" - ) - - # - # Private routines - # - - def _ensure_have_load_only(self) -> None: - if self.load_only is None: - raise ConfigurationError("Needed a specific file to be modifying.") - logger.debug("Will be working with %s variant only", self.load_only) - - @property - def _dictionary(self) -> Dict[str, Any]: - """A dictionary representing the loaded configuration.""" - # NOTE: Dictionaries are not populated if not loaded. So, conditionals - # are not needed here. - retval = {} - - for variant in OVERRIDE_ORDER: - retval.update(self._config[variant]) - - return retval - - def _load_config_files(self) -> None: - """Loads configuration from configuration files""" - config_files = dict(self.iter_config_files()) - if config_files[kinds.ENV][0:1] == [os.devnull]: - logger.debug( - "Skipping loading configuration files due to " - "environment's PIP_CONFIG_FILE being os.devnull" - ) - return - - for variant, files in config_files.items(): - for fname in files: - # If there's specific variant set in `load_only`, load only - # that variant, not the others. - if self.load_only is not None and variant != self.load_only: - logger.debug("Skipping file '%s' (variant: %s)", fname, variant) - continue - - parser = self._load_file(variant, fname) - - # Keeping track of the parsers used - self._parsers[variant].append((fname, parser)) - - def _load_file(self, variant: Kind, fname: str) -> RawConfigParser: - logger.verbose("For variant '%s', will try loading '%s'", variant, fname) - parser = self._construct_parser(fname) - - for section in parser.sections(): - items = parser.items(section) - self._config[variant].update(self._normalized_keys(section, items)) - - return parser - - def _construct_parser(self, fname: str) -> RawConfigParser: - parser = configparser.RawConfigParser() - # If there is no such file, don't bother reading it but create the - # parser anyway, to hold the data. - # Doing this is useful when modifying and saving files, where we don't - # need to construct a parser. - if os.path.exists(fname): - locale_encoding = locale.getpreferredencoding(False) - try: - parser.read(fname, encoding=locale_encoding) - except UnicodeDecodeError: - # See https://github.com/pypa/pip/issues/4963 - raise ConfigurationFileCouldNotBeLoaded( - reason=f"contains invalid {locale_encoding} characters", - fname=fname, - ) - except configparser.Error as error: - # See https://github.com/pypa/pip/issues/4893 - raise ConfigurationFileCouldNotBeLoaded(error=error) - return parser - - def _load_environment_vars(self) -> None: - """Loads configuration from environment variables""" - self._config[kinds.ENV_VAR].update( - self._normalized_keys(":env:", self.get_environ_vars()) - ) - - def _normalized_keys( - self, section: str, items: Iterable[Tuple[str, Any]] - ) -> Dict[str, Any]: - """Normalizes items to construct a dictionary with normalized keys. - - This routine is where the names become keys and are made the same - regardless of source - configuration files or environment. - """ - normalized = {} - for name, val in items: - key = section + "." + _normalize_name(name) - normalized[key] = val - return normalized - - def get_environ_vars(self) -> Iterable[Tuple[str, str]]: - """Returns a generator with all environmental vars with prefix PIP_""" - for key, val in os.environ.items(): - if key.startswith("PIP_"): - name = key[4:].lower() - if name not in ENV_NAMES_IGNORED: - yield name, val - - # XXX: This is patched in the tests. - def iter_config_files(self) -> Iterable[Tuple[Kind, List[str]]]: - """Yields variant and configuration files associated with it. - - This should be treated like items of a dictionary. The order - here doesn't affect what gets overridden. That is controlled - by OVERRIDE_ORDER. However this does control the order they are - displayed to the user. It's probably most ergononmic to display - things in the same order as OVERRIDE_ORDER - """ - # SMELL: Move the conditions out of this function - - env_config_file = os.environ.get("PIP_CONFIG_FILE", None) - config_files = get_configuration_files() - - yield kinds.GLOBAL, config_files[kinds.GLOBAL] - - # per-user config is not loaded when env_config_file exists - should_load_user_config = not self.isolated and not ( - env_config_file and os.path.exists(env_config_file) - ) - if should_load_user_config: - # The legacy config file is overridden by the new config file - yield kinds.USER, config_files[kinds.USER] - - # virtualenv config - yield kinds.SITE, config_files[kinds.SITE] - - if env_config_file is not None: - yield kinds.ENV, [env_config_file] - else: - yield kinds.ENV, [] - - def get_values_in_config(self, variant: Kind) -> Dict[str, Any]: - """Get values present in a config file""" - return self._config[variant] - - def _get_parser_to_modify(self) -> Tuple[str, RawConfigParser]: - # Determine which parser to modify - assert self.load_only - parsers = self._parsers[self.load_only] - if not parsers: - # This should not happen if everything works correctly. - raise ConfigurationError( - "Fatal Internal error [id=2]. Please report as a bug." - ) - - # Use the highest priority parser. - return parsers[-1] - - # XXX: This is patched in the tests. - def _mark_as_modified(self, fname: str, parser: RawConfigParser) -> None: - file_parser_tuple = (fname, parser) - if file_parser_tuple not in self._modified_parsers: - self._modified_parsers.append(file_parser_tuple) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self._dictionary!r})" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py deleted file mode 100644 index 9a89a83..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from pip._internal.distributions.base import AbstractDistribution -from pip._internal.distributions.sdist import SourceDistribution -from pip._internal.distributions.wheel import WheelDistribution -from pip._internal.req.req_install import InstallRequirement - - -def make_distribution_for_install_requirement( - install_req: InstallRequirement, -) -> AbstractDistribution: - """Returns a Distribution for the given InstallRequirement""" - # Editable requirements will always be source distributions. They use the - # legacy logic until we create a modern standard for them. - if install_req.editable: - return SourceDistribution(install_req) - - # If it's a wheel, it's a WheelDistribution - if install_req.is_wheel: - return WheelDistribution(install_req) - - # Otherwise, a SourceDistribution - return SourceDistribution(install_req) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 2ec5d82299b9e2a0e35a1921ac97b90f49c11cf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmaJ<&2H2%5Vn(SlD6AQthgctiAxTRK^)+K5D0|Cg~RRvDVNBJXLrpyKee5rqTcAs z@JhLI;uSameS?nelk$^Ov;8$A<*viZ0i=PsmpnOeMhJ1*&<2Mi4<2scBBB z^F8I&e(sOHuY!7(&qhB`VIAcW`ZI_`2y`8YNW@n`9*ct&Ne{naFOt&X?#t3x%`5v_ z;x5bH%C^D$V%7G#f*aX8@3#QzMso4CF_tT}gtK01sG+gLk-W|o8qS7LgY9)wQ8)9q zINw8kg=!w4xg;Nmjx4<-pXtg)o<6bub+pf>^wX2&*vlk5nZiictxoI~l8rovCix#x z8VoTAX?dwYBg?I^!UQVN63mrm?T*7`{snh6KlDf5v6gb|x#i0qqzc?%!5s z##Xzqw)cfgq HCqI4x`*-I@ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc deleted file mode 100644 index fbb7187b1e3afa883e54d8799e5e7d20f35275d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2484 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 F=YP;Lw4(q3 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index a47c8843ba5b7ce3f8243ff773d60c5bda539246..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1851 zcmaJ>-*4kY5caO^#7Wa@4wZ5hAX$A2a5jh+9?QwvR-%44&uUp0c~%xHNb9Tu+&uhbs*TEW^Lc^a zV!9x6+~5Bu%P+HYcvRE^)WmJapJp1ijoO1pMG1PT4OHLF0m}C198CIz)KqMF%PE%a z5#Zt>PJN03oP-G{;esVDc!Gluy<=y_g)6)pZ_ScE?ghB^MeoK-2AJni1h6LtIJp?k z0U+Ar>>70=iLIN$YBC@X9o&vK_bCKK3^2Mk~tVt#FroGSm!Ehiu(M1BZZEyp}vmGVj4F~ zGne&;(FgCxx-f8`VnOtD+!Rfm7PSF|B#5_@*0C)_)GXWabWxNdB_3RYN(*s_VQ7xR zKVOkzLTZBhF2*|{Q$*N=fb&QI`|UVzGgo$yXJa~Yffw9b{1>)BQxGpX8g`# z&DImYKg#!u!8_0w~!FR+pNIb znF$vf;V#U37IFpU5^EbG(DY|puBE#5q2OwPpjXJI4r_9}dglxbu>+Z6LOI(ZjaVr1 zD&&*8#7tKAY(+6H1<0~%P)HtXM=|NOF1l|IN{L;XQc`J?nR)BcvFc+n6*Z4?QB1hH zgP+#7VZLCFI-uQS>cvg9cG~eC9&7S4_Q!0*USq3wZ9LnxiT?9;+nd=Jp*`qGP-t1& z)@aB19P-Pw+ZNF1)0{ZI8KiH>ul8`EMkI*v6VGO%j%ecz5)|Xh8NJ>0A?ze`o8k%H z=os5u#job`zjyJ`2vYkXrfEA&(@Kg3Rz7V None: - super().__init__() - self.req = req - - @abc.abstractproperty - def build_tracker_id(self) -> Optional[str]: - """A string that uniquely identifies this requirement to the build tracker. - - If None, then this dist has no work to do in the build tracker, and - ``.prepare_distribution_metadata()`` will not be called.""" - raise NotImplementedError() - - @abc.abstractmethod - def get_metadata_distribution(self) -> BaseDistribution: - raise NotImplementedError() - - @abc.abstractmethod - def prepare_distribution_metadata( - self, - finder: PackageFinder, - build_isolation: bool, - check_build_deps: bool, - ) -> None: - raise NotImplementedError() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py b/venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py deleted file mode 100644 index ab8d53b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import Optional - -from pip._internal.distributions.base import AbstractDistribution -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution - - -class InstalledDistribution(AbstractDistribution): - """Represents an installed package. - - This does not need any preparation as the required information has already - been computed. - """ - - @property - def build_tracker_id(self) -> Optional[str]: - return None - - def get_metadata_distribution(self) -> BaseDistribution: - assert self.req.satisfied_by is not None, "not actually installed" - return self.req.satisfied_by - - def prepare_distribution_metadata( - self, - finder: PackageFinder, - build_isolation: bool, - check_build_deps: bool, - ) -> None: - pass diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py b/venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py deleted file mode 100644 index 15ff42b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py +++ /dev/null @@ -1,156 +0,0 @@ -import logging -from typing import Iterable, Optional, Set, Tuple - -from pip._internal.build_env import BuildEnvironment -from pip._internal.distributions.base import AbstractDistribution -from pip._internal.exceptions import InstallationError -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution -from pip._internal.utils.subprocess import runner_with_spinner_message - -logger = logging.getLogger(__name__) - - -class SourceDistribution(AbstractDistribution): - """Represents a source distribution. - - The preparation step for these needs metadata for the packages to be - generated, either using PEP 517 or using the legacy `setup.py egg_info`. - """ - - @property - def build_tracker_id(self) -> Optional[str]: - """Identify this requirement uniquely by its link.""" - assert self.req.link - return self.req.link.url_without_fragment - - def get_metadata_distribution(self) -> BaseDistribution: - return self.req.get_dist() - - def prepare_distribution_metadata( - self, - finder: PackageFinder, - build_isolation: bool, - check_build_deps: bool, - ) -> None: - # Load pyproject.toml, to determine whether PEP 517 is to be used - self.req.load_pyproject_toml() - - # Set up the build isolation, if this requirement should be isolated - should_isolate = self.req.use_pep517 and build_isolation - if should_isolate: - # Setup an isolated environment and install the build backend static - # requirements in it. - self._prepare_build_backend(finder) - # Check that if the requirement is editable, it either supports PEP 660 or - # has a setup.py or a setup.cfg. This cannot be done earlier because we need - # to setup the build backend to verify it supports build_editable, nor can - # it be done later, because we want to avoid installing build requirements - # needlessly. Doing it here also works around setuptools generating - # UNKNOWN.egg-info when running get_requires_for_build_wheel on a directory - # without setup.py nor setup.cfg. - self.req.isolated_editable_sanity_check() - # Install the dynamic build requirements. - self._install_build_reqs(finder) - # Check if the current environment provides build dependencies - should_check_deps = self.req.use_pep517 and check_build_deps - if should_check_deps: - pyproject_requires = self.req.pyproject_requires - assert pyproject_requires is not None - conflicting, missing = self.req.build_env.check_requirements( - pyproject_requires - ) - if conflicting: - self._raise_conflicts("the backend dependencies", conflicting) - if missing: - self._raise_missing_reqs(missing) - self.req.prepare_metadata() - - def _prepare_build_backend(self, finder: PackageFinder) -> None: - # Isolate in a BuildEnvironment and install the build-time - # requirements. - pyproject_requires = self.req.pyproject_requires - assert pyproject_requires is not None - - self.req.build_env = BuildEnvironment() - self.req.build_env.install_requirements( - finder, pyproject_requires, "overlay", kind="build dependencies" - ) - conflicting, missing = self.req.build_env.check_requirements( - self.req.requirements_to_check - ) - if conflicting: - self._raise_conflicts("PEP 517/518 supported requirements", conflicting) - if missing: - logger.warning( - "Missing build requirements in pyproject.toml for %s.", - self.req, - ) - logger.warning( - "The project does not specify a build backend, and " - "pip cannot fall back to setuptools without %s.", - " and ".join(map(repr, sorted(missing))), - ) - - def _get_build_requires_wheel(self) -> Iterable[str]: - with self.req.build_env: - runner = runner_with_spinner_message("Getting requirements to build wheel") - backend = self.req.pep517_backend - assert backend is not None - with backend.subprocess_runner(runner): - return backend.get_requires_for_build_wheel() - - def _get_build_requires_editable(self) -> Iterable[str]: - with self.req.build_env: - runner = runner_with_spinner_message( - "Getting requirements to build editable" - ) - backend = self.req.pep517_backend - assert backend is not None - with backend.subprocess_runner(runner): - return backend.get_requires_for_build_editable() - - def _install_build_reqs(self, finder: PackageFinder) -> None: - # Install any extra build dependencies that the backend requests. - # This must be done in a second pass, as the pyproject.toml - # dependencies must be installed before we can call the backend. - if ( - self.req.editable - and self.req.permit_editable_wheels - and self.req.supports_pyproject_editable() - ): - build_reqs = self._get_build_requires_editable() - else: - build_reqs = self._get_build_requires_wheel() - conflicting, missing = self.req.build_env.check_requirements(build_reqs) - if conflicting: - self._raise_conflicts("the backend dependencies", conflicting) - self.req.build_env.install_requirements( - finder, missing, "normal", kind="backend dependencies" - ) - - def _raise_conflicts( - self, conflicting_with: str, conflicting_reqs: Set[Tuple[str, str]] - ) -> None: - format_string = ( - "Some build dependencies for {requirement} " - "conflict with {conflicting_with}: {description}." - ) - error_message = format_string.format( - requirement=self.req, - conflicting_with=conflicting_with, - description=", ".join( - f"{installed} is incompatible with {wanted}" - for installed, wanted in sorted(conflicting_reqs) - ), - ) - raise InstallationError(error_message) - - def _raise_missing_reqs(self, missing: Set[str]) -> None: - format_string = ( - "Some build dependencies for {requirement} are missing: {missing}." - ) - error_message = format_string.format( - requirement=self.req, missing=", ".join(map(repr, sorted(missing))) - ) - raise InstallationError(error_message) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py deleted file mode 100644 index eb16e25..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Optional - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.distributions.base import AbstractDistribution -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import ( - BaseDistribution, - FilesystemWheel, - get_wheel_distribution, -) - - -class WheelDistribution(AbstractDistribution): - """Represents a wheel distribution. - - This does not need any preparation as wheels can be directly unpacked. - """ - - @property - def build_tracker_id(self) -> Optional[str]: - return None - - def get_metadata_distribution(self) -> BaseDistribution: - """Loads the metadata from the wheel file into memory and returns a - Distribution that uses it, not relying on the wheel file or - requirement. - """ - assert self.req.local_file_path, "Set as part of preparation during download" - assert self.req.name, "Wheels are never unnamed" - wheel = FilesystemWheel(self.req.local_file_path) - return get_wheel_distribution(wheel, canonicalize_name(self.req.name)) - - def prepare_distribution_metadata( - self, - finder: PackageFinder, - build_isolation: bool, - check_build_deps: bool, - ) -> None: - pass diff --git a/venv/lib/python3.10/site-packages/pip/_internal/exceptions.py b/venv/lib/python3.10/site-packages/pip/_internal/exceptions.py deleted file mode 100644 index 5007a62..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/exceptions.py +++ /dev/null @@ -1,728 +0,0 @@ -"""Exceptions used throughout package. - -This module MUST NOT try to import from anything within `pip._internal` to -operate. This is expected to be importable from any/all files within the -subpackage and, thus, should not depend on them. -""" - -import configparser -import contextlib -import locale -import logging -import pathlib -import re -import sys -from itertools import chain, groupby, repeat -from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Union - -from pip._vendor.requests.models import Request, Response -from pip._vendor.rich.console import Console, ConsoleOptions, RenderResult -from pip._vendor.rich.markup import escape -from pip._vendor.rich.text import Text - -if TYPE_CHECKING: - from hashlib import _Hash - from typing import Literal - - from pip._internal.metadata import BaseDistribution - from pip._internal.req.req_install import InstallRequirement - -logger = logging.getLogger(__name__) - - -# -# Scaffolding -# -def _is_kebab_case(s: str) -> bool: - return re.match(r"^[a-z]+(-[a-z]+)*$", s) is not None - - -def _prefix_with_indent( - s: Union[Text, str], - console: Console, - *, - prefix: str, - indent: str, -) -> Text: - if isinstance(s, Text): - text = s - else: - text = console.render_str(s) - - return console.render_str(prefix, overflow="ignore") + console.render_str( - f"\n{indent}", overflow="ignore" - ).join(text.split(allow_blank=True)) - - -class PipError(Exception): - """The base pip error.""" - - -class DiagnosticPipError(PipError): - """An error, that presents diagnostic information to the user. - - This contains a bunch of logic, to enable pretty presentation of our error - messages. Each error gets a unique reference. Each error can also include - additional context, a hint and/or a note -- which are presented with the - main error message in a consistent style. - - This is adapted from the error output styling in `sphinx-theme-builder`. - """ - - reference: str - - def __init__( - self, - *, - kind: 'Literal["error", "warning"]' = "error", - reference: Optional[str] = None, - message: Union[str, Text], - context: Optional[Union[str, Text]], - hint_stmt: Optional[Union[str, Text]], - note_stmt: Optional[Union[str, Text]] = None, - link: Optional[str] = None, - ) -> None: - # Ensure a proper reference is provided. - if reference is None: - assert hasattr(self, "reference"), "error reference not provided!" - reference = self.reference - assert _is_kebab_case(reference), "error reference must be kebab-case!" - - self.kind = kind - self.reference = reference - - self.message = message - self.context = context - - self.note_stmt = note_stmt - self.hint_stmt = hint_stmt - - self.link = link - - super().__init__(f"<{self.__class__.__name__}: {self.reference}>") - - def __repr__(self) -> str: - return ( - f"<{self.__class__.__name__}(" - f"reference={self.reference!r}, " - f"message={self.message!r}, " - f"context={self.context!r}, " - f"note_stmt={self.note_stmt!r}, " - f"hint_stmt={self.hint_stmt!r}" - ")>" - ) - - def __rich_console__( - self, - console: Console, - options: ConsoleOptions, - ) -> RenderResult: - colour = "red" if self.kind == "error" else "yellow" - - yield f"[{colour} bold]{self.kind}[/]: [bold]{self.reference}[/]" - yield "" - - if not options.ascii_only: - # Present the main message, with relevant context indented. - if self.context is not None: - yield _prefix_with_indent( - self.message, - console, - prefix=f"[{colour}]×[/] ", - indent=f"[{colour}]│[/] ", - ) - yield _prefix_with_indent( - self.context, - console, - prefix=f"[{colour}]╰─>[/] ", - indent=f"[{colour}] [/] ", - ) - else: - yield _prefix_with_indent( - self.message, - console, - prefix="[red]×[/] ", - indent=" ", - ) - else: - yield self.message - if self.context is not None: - yield "" - yield self.context - - if self.note_stmt is not None or self.hint_stmt is not None: - yield "" - - if self.note_stmt is not None: - yield _prefix_with_indent( - self.note_stmt, - console, - prefix="[magenta bold]note[/]: ", - indent=" ", - ) - if self.hint_stmt is not None: - yield _prefix_with_indent( - self.hint_stmt, - console, - prefix="[cyan bold]hint[/]: ", - indent=" ", - ) - - if self.link is not None: - yield "" - yield f"Link: {self.link}" - - -# -# Actual Errors -# -class ConfigurationError(PipError): - """General exception in configuration""" - - -class InstallationError(PipError): - """General exception during installation""" - - -class UninstallationError(PipError): - """General exception during uninstallation""" - - -class MissingPyProjectBuildRequires(DiagnosticPipError): - """Raised when pyproject.toml has `build-system`, but no `build-system.requires`.""" - - reference = "missing-pyproject-build-system-requires" - - def __init__(self, *, package: str) -> None: - super().__init__( - message=f"Can not process {escape(package)}", - context=Text( - "This package has an invalid pyproject.toml file.\n" - "The [build-system] table is missing the mandatory `requires` key." - ), - note_stmt="This is an issue with the package mentioned above, not pip.", - hint_stmt=Text("See PEP 518 for the detailed specification."), - ) - - -class InvalidPyProjectBuildRequires(DiagnosticPipError): - """Raised when pyproject.toml an invalid `build-system.requires`.""" - - reference = "invalid-pyproject-build-system-requires" - - def __init__(self, *, package: str, reason: str) -> None: - super().__init__( - message=f"Can not process {escape(package)}", - context=Text( - "This package has an invalid `build-system.requires` key in " - f"pyproject.toml.\n{reason}" - ), - note_stmt="This is an issue with the package mentioned above, not pip.", - hint_stmt=Text("See PEP 518 for the detailed specification."), - ) - - -class NoneMetadataError(PipError): - """Raised when accessing a Distribution's "METADATA" or "PKG-INFO". - - This signifies an inconsistency, when the Distribution claims to have - the metadata file (if not, raise ``FileNotFoundError`` instead), but is - not actually able to produce its content. This may be due to permission - errors. - """ - - def __init__( - self, - dist: "BaseDistribution", - metadata_name: str, - ) -> None: - """ - :param dist: A Distribution object. - :param metadata_name: The name of the metadata being accessed - (can be "METADATA" or "PKG-INFO"). - """ - self.dist = dist - self.metadata_name = metadata_name - - def __str__(self) -> str: - # Use `dist` in the error message because its stringification - # includes more information, like the version and location. - return f"None {self.metadata_name} metadata found for distribution: {self.dist}" - - -class UserInstallationInvalid(InstallationError): - """A --user install is requested on an environment without user site.""" - - def __str__(self) -> str: - return "User base directory is not specified" - - -class InvalidSchemeCombination(InstallationError): - def __str__(self) -> str: - before = ", ".join(str(a) for a in self.args[:-1]) - return f"Cannot set {before} and {self.args[-1]} together" - - -class DistributionNotFound(InstallationError): - """Raised when a distribution cannot be found to satisfy a requirement""" - - -class RequirementsFileParseError(InstallationError): - """Raised when a general error occurs parsing a requirements file line.""" - - -class BestVersionAlreadyInstalled(PipError): - """Raised when the most up-to-date version of a package is already - installed.""" - - -class BadCommand(PipError): - """Raised when virtualenv or a command is not found""" - - -class CommandError(PipError): - """Raised when there is an error in command-line arguments""" - - -class PreviousBuildDirError(PipError): - """Raised when there's a previous conflicting build directory""" - - -class NetworkConnectionError(PipError): - """HTTP connection error""" - - def __init__( - self, - error_msg: str, - response: Optional[Response] = None, - request: Optional[Request] = None, - ) -> None: - """ - Initialize NetworkConnectionError with `request` and `response` - objects. - """ - self.response = response - self.request = request - self.error_msg = error_msg - if ( - self.response is not None - and not self.request - and hasattr(response, "request") - ): - self.request = self.response.request - super().__init__(error_msg, response, request) - - def __str__(self) -> str: - return str(self.error_msg) - - -class InvalidWheelFilename(InstallationError): - """Invalid wheel filename.""" - - -class UnsupportedWheel(InstallationError): - """Unsupported wheel.""" - - -class InvalidWheel(InstallationError): - """Invalid (e.g. corrupt) wheel.""" - - def __init__(self, location: str, name: str): - self.location = location - self.name = name - - def __str__(self) -> str: - return f"Wheel '{self.name}' located at {self.location} is invalid." - - -class MetadataInconsistent(InstallationError): - """Built metadata contains inconsistent information. - - This is raised when the metadata contains values (e.g. name and version) - that do not match the information previously obtained from sdist filename, - user-supplied ``#egg=`` value, or an install requirement name. - """ - - def __init__( - self, ireq: "InstallRequirement", field: str, f_val: str, m_val: str - ) -> None: - self.ireq = ireq - self.field = field - self.f_val = f_val - self.m_val = m_val - - def __str__(self) -> str: - return ( - f"Requested {self.ireq} has inconsistent {self.field}: " - f"expected {self.f_val!r}, but metadata has {self.m_val!r}" - ) - - -class InstallationSubprocessError(DiagnosticPipError, InstallationError): - """A subprocess call failed.""" - - reference = "subprocess-exited-with-error" - - def __init__( - self, - *, - command_description: str, - exit_code: int, - output_lines: Optional[List[str]], - ) -> None: - if output_lines is None: - output_prompt = Text("See above for output.") - else: - output_prompt = ( - Text.from_markup(f"[red][{len(output_lines)} lines of output][/]\n") - + Text("".join(output_lines)) - + Text.from_markup(R"[red]\[end of output][/]") - ) - - super().__init__( - message=( - f"[green]{escape(command_description)}[/] did not run successfully.\n" - f"exit code: {exit_code}" - ), - context=output_prompt, - hint_stmt=None, - note_stmt=( - "This error originates from a subprocess, and is likely not a " - "problem with pip." - ), - ) - - self.command_description = command_description - self.exit_code = exit_code - - def __str__(self) -> str: - return f"{self.command_description} exited with {self.exit_code}" - - -class MetadataGenerationFailed(InstallationSubprocessError, InstallationError): - reference = "metadata-generation-failed" - - def __init__( - self, - *, - package_details: str, - ) -> None: - super(InstallationSubprocessError, self).__init__( - message="Encountered error while generating package metadata.", - context=escape(package_details), - hint_stmt="See above for details.", - note_stmt="This is an issue with the package mentioned above, not pip.", - ) - - def __str__(self) -> str: - return "metadata generation failed" - - -class HashErrors(InstallationError): - """Multiple HashError instances rolled into one for reporting""" - - def __init__(self) -> None: - self.errors: List["HashError"] = [] - - def append(self, error: "HashError") -> None: - self.errors.append(error) - - def __str__(self) -> str: - lines = [] - self.errors.sort(key=lambda e: e.order) - for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): - lines.append(cls.head) - lines.extend(e.body() for e in errors_of_cls) - if lines: - return "\n".join(lines) - return "" - - def __bool__(self) -> bool: - return bool(self.errors) - - -class HashError(InstallationError): - """ - A failure to verify a package against known-good hashes - - :cvar order: An int sorting hash exception classes by difficulty of - recovery (lower being harder), so the user doesn't bother fretting - about unpinned packages when he has deeper issues, like VCS - dependencies, to deal with. Also keeps error reports in a - deterministic order. - :cvar head: A section heading for display above potentially many - exceptions of this kind - :ivar req: The InstallRequirement that triggered this error. This is - pasted on after the exception is instantiated, because it's not - typically available earlier. - - """ - - req: Optional["InstallRequirement"] = None - head = "" - order: int = -1 - - def body(self) -> str: - """Return a summary of me for display under the heading. - - This default implementation simply prints a description of the - triggering requirement. - - :param req: The InstallRequirement that provoked this error, with - its link already populated by the resolver's _populate_link(). - - """ - return f" {self._requirement_name()}" - - def __str__(self) -> str: - return f"{self.head}\n{self.body()}" - - def _requirement_name(self) -> str: - """Return a description of the requirement that triggered me. - - This default implementation returns long description of the req, with - line numbers - - """ - return str(self.req) if self.req else "unknown package" - - -class VcsHashUnsupported(HashError): - """A hash was provided for a version-control-system-based requirement, but - we don't have a method for hashing those.""" - - order = 0 - head = ( - "Can't verify hashes for these requirements because we don't " - "have a way to hash version control repositories:" - ) - - -class DirectoryUrlHashUnsupported(HashError): - """A hash was provided for a version-control-system-based requirement, but - we don't have a method for hashing those.""" - - order = 1 - head = ( - "Can't verify hashes for these file:// requirements because they " - "point to directories:" - ) - - -class HashMissing(HashError): - """A hash was needed for a requirement but is absent.""" - - order = 2 - head = ( - "Hashes are required in --require-hashes mode, but they are " - "missing from some requirements. Here is a list of those " - "requirements along with the hashes their downloaded archives " - "actually had. Add lines like these to your requirements files to " - "prevent tampering. (If you did not enable --require-hashes " - "manually, note that it turns on automatically when any package " - "has a hash.)" - ) - - def __init__(self, gotten_hash: str) -> None: - """ - :param gotten_hash: The hash of the (possibly malicious) archive we - just downloaded - """ - self.gotten_hash = gotten_hash - - def body(self) -> str: - # Dodge circular import. - from pip._internal.utils.hashes import FAVORITE_HASH - - package = None - if self.req: - # In the case of URL-based requirements, display the original URL - # seen in the requirements file rather than the package name, - # so the output can be directly copied into the requirements file. - package = ( - self.req.original_link - if self.req.is_direct - # In case someone feeds something downright stupid - # to InstallRequirement's constructor. - else getattr(self.req, "req", None) - ) - return " {} --hash={}:{}".format( - package or "unknown package", FAVORITE_HASH, self.gotten_hash - ) - - -class HashUnpinned(HashError): - """A requirement had a hash specified but was not pinned to a specific - version.""" - - order = 3 - head = ( - "In --require-hashes mode, all requirements must have their " - "versions pinned with ==. These do not:" - ) - - -class HashMismatch(HashError): - """ - Distribution file hash values don't match. - - :ivar package_name: The name of the package that triggered the hash - mismatch. Feel free to write to this after the exception is raise to - improve its error message. - - """ - - order = 4 - head = ( - "THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS " - "FILE. If you have updated the package versions, please update " - "the hashes. Otherwise, examine the package contents carefully; " - "someone may have tampered with them." - ) - - def __init__(self, allowed: Dict[str, List[str]], gots: Dict[str, "_Hash"]) -> None: - """ - :param allowed: A dict of algorithm names pointing to lists of allowed - hex digests - :param gots: A dict of algorithm names pointing to hashes we - actually got from the files under suspicion - """ - self.allowed = allowed - self.gots = gots - - def body(self) -> str: - return f" {self._requirement_name()}:\n{self._hash_comparison()}" - - def _hash_comparison(self) -> str: - """ - Return a comparison of actual and expected hash values. - - Example:: - - Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde - or 123451234512345123451234512345123451234512345 - Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef - - """ - - def hash_then_or(hash_name: str) -> "chain[str]": - # For now, all the decent hashes have 6-char names, so we can get - # away with hard-coding space literals. - return chain([hash_name], repeat(" or")) - - lines: List[str] = [] - for hash_name, expecteds in self.allowed.items(): - prefix = hash_then_or(hash_name) - lines.extend((f" Expected {next(prefix)} {e}") for e in expecteds) - lines.append( - f" Got {self.gots[hash_name].hexdigest()}\n" - ) - return "\n".join(lines) - - -class UnsupportedPythonVersion(InstallationError): - """Unsupported python version according to Requires-Python package - metadata.""" - - -class ConfigurationFileCouldNotBeLoaded(ConfigurationError): - """When there are errors while loading a configuration file""" - - def __init__( - self, - reason: str = "could not be loaded", - fname: Optional[str] = None, - error: Optional[configparser.Error] = None, - ) -> None: - super().__init__(error) - self.reason = reason - self.fname = fname - self.error = error - - def __str__(self) -> str: - if self.fname is not None: - message_part = f" in {self.fname}." - else: - assert self.error is not None - message_part = f".\n{self.error}\n" - return f"Configuration file {self.reason}{message_part}" - - -_DEFAULT_EXTERNALLY_MANAGED_ERROR = f"""\ -The Python environment under {sys.prefix} is managed externally, and may not be -manipulated by the user. Please use specific tooling from the distributor of -the Python installation to interact with this environment instead. -""" - - -class ExternallyManagedEnvironment(DiagnosticPipError): - """The current environment is externally managed. - - This is raised when the current environment is externally managed, as - defined by `PEP 668`_. The ``EXTERNALLY-MANAGED`` configuration is checked - and displayed when the error is bubbled up to the user. - - :param error: The error message read from ``EXTERNALLY-MANAGED``. - """ - - reference = "externally-managed-environment" - - def __init__(self, error: Optional[str]) -> None: - if error is None: - context = Text(_DEFAULT_EXTERNALLY_MANAGED_ERROR) - else: - context = Text(error) - super().__init__( - message="This environment is externally managed", - context=context, - note_stmt=( - "If you believe this is a mistake, please contact your " - "Python installation or OS distribution provider. " - "You can override this, at the risk of breaking your Python " - "installation or OS, by passing --break-system-packages." - ), - hint_stmt=Text("See PEP 668 for the detailed specification."), - ) - - @staticmethod - def _iter_externally_managed_error_keys() -> Iterator[str]: - # LC_MESSAGES is in POSIX, but not the C standard. The most common - # platform that does not implement this category is Windows, where - # using other categories for console message localization is equally - # unreliable, so we fall back to the locale-less vendor message. This - # can always be re-evaluated when a vendor proposes a new alternative. - try: - category = locale.LC_MESSAGES - except AttributeError: - lang: Optional[str] = None - else: - lang, _ = locale.getlocale(category) - if lang is not None: - yield f"Error-{lang}" - for sep in ("-", "_"): - before, found, _ = lang.partition(sep) - if not found: - continue - yield f"Error-{before}" - yield "Error" - - @classmethod - def from_config( - cls, - config: Union[pathlib.Path, str], - ) -> "ExternallyManagedEnvironment": - parser = configparser.ConfigParser(interpolation=None) - try: - parser.read(config, encoding="utf-8") - section = parser["externally-managed"] - for key in cls._iter_externally_managed_error_keys(): - with contextlib.suppress(KeyError): - return cls(section[key]) - except KeyError: - pass - except (OSError, UnicodeDecodeError, configparser.ParsingError): - from pip._internal.utils._log import VERBOSE - - exc_info = logger.isEnabledFor(VERBOSE) - logger.warning("Failed to read %s", config, exc_info=exc_info) - return cls(None) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py deleted file mode 100644 index 7a17b7b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -"""Index interaction code -""" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index a7ea3cc2675d455b52fb0bba2680a9d624012670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmYjLu?_)26x`FeNYpyfD$XMsg@{(8pwn#D?sHz8eVg4SsQrvzy4GK)?5Rxh=4B?C z%y75c5ed(1bLgl4Zp1&bB$nwyp2&!uFxgfNTaVt#8oUk2M)XQYVmr`mu(KX!bz4fq zTFRI3t(5xF2jR$Pgz`e#v&I++PO|_(d*#TMg<})oiuMW>?ZMsSk?nLe8AG6mg;V;Z lN(|u0f&8^vRRJ|4KqiBtlp}Yq^ZA+0rNTusJT&#W_yS<0KSlrm diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc deleted file mode 100644 index 4fa652f0569ce74c34d4b817cdbfd8afee31906b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15320 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

    >x z9Yhc`B&qBP79^s#64`X&BI^@j!c~N<`b_A=ZWCsskQ>x>h-SFm!p%^S5Ks0FVnC1@ zf5DL)6h)_dh}J1+1~4c@I3QcAiJ4YD36maBpDrie)@k|K@KKmCUZ8WI^aUDVj2uF| z5#E%p6SnItA`}2N5xfF3Rrv=vkL{)Q+HP9^ZT90*^$iq5 zh-6E06)_Y3YZN~zs9dwf-hd;l7_EFIO0B`+T}(f)B?yyI&b;-&L0ogo-Bgra^Lp@p z7IO&IxIHM_Wds#&ZST3?Kt%J_c9p_r9}&?Qm5An9CK~7mwA9$;N76j z-E1$tSX?^S%ii@+8^atEcXLs8alDu7WqY1V--k<{%<`>Umy%g7ah6i1`yJsAkxk&> zb%Pj;CtTzwTHN?WD~+J3{02N9=(h#<9zhdP);6C*pWN*m8K0QtV*AEv8kym2H@zIq z9eI=C3Gxub%dvN(hR`%>r7b2v_aZPV0T!5?h`=zcT2mpcDPv!VHEQ-eCoyU^G7;7y zy$ymOYe6iqZz#p?To9-@qXJlRf&K~15N8eeVWl9WB&#Up&8EM@CN9FwAQ8KMNTvW5(L71V*H_h?wv{qp`$MosaSv8ffEok-=9n((*9bChQE#Jl-d7 zKh^iqheS5?8^zNZT;W9&>uRo&Lh7anRp%-Ii8yoc&EOJME#X{v=`{Mt6A0~sZ>p&t=)Q_HCZKa_EgRu#c$@M& z0ld~)1H1f$2>kwD)BiR5EU)K9G4(~|<{?0KrZ?SmQA&3f8ubO~DX!}s5Ov>=4wO*~ zgdqXpNgZ;+zq5cqAfl!um=H*V3RGrn$zKtR;4I8M0LHB9sb#p(Sq8ho`!=G#>|b6% z%t90Z$3R#?T6~eQ#Gw%w;FJ(eqU#Pzd@J~{#t82E0-4@;)~>>2IfmVP=J!o}Af~vB z4HOxh8Oy-6lhFD$5if~!85rV2vKGD8sfB{q*tHuJs&P^G6P`sDVk8YLr8rwf%1c+P zJ2^k;4vxU&rg^2oL;D(-|2T&jL`vCPb?OM}r*Etv<0USd9$}jn3)-~$@3L5*buhJX zl+9_$1fGRxuID~-9OrW<<$RWLoll*#^CKtYJaV%6|1+`e2~PLWjlYmOY$K;5{Q`}F z^b1lhgY*me9PS$U9{0c#gBQtL$N)*yh}}kRe`<@Qy{kr40Wu*kshkmT-l$&1%ngl;Iq^~Wgs-kH3Ww9NW$a<5l1E4n@y%UNYjs?sB)R60PU^b+B$Zsv%db@~4aXYv$1~bs(W%NL9 z$AmFx3h-O9a5z}li`cGVv7(_oh8Y&Hd|79lp?%p_&~V6Z!+R5U{#ihy{~-!Eifk!s zA0QweTfnZu`jzx1R)_N#RydC46F`KA%YE!QlPJ4;Hz8$H$06s6xFCK6AKdw#4fCb& z9Rzu?ewb2NX|b0|61|SB&zaT#7%c_BKJW%^#@_Jzk^D<1(34a>`H7iwdsxqCN0KipkQgqmjw*7ZT(tLklHmw)@hI=nqD4 z=NJ@}c=Su*3B&{aBYt?ZA?FuB_a6}GZ=gT~ilFG9XYmUx)|Vo7^mc>?gb+4__85x& zGFL|J?xi!ZV)PoS*Tj7o+Hh_*JzQDD0aW@D9Z`MQ0EnjuXCr3EC*=F#tum>cnw1zE zz`KV|MpD#K1BElhC1EoWxkfGR=cgnW$7ZJ2rlo8}Zv192>`u*a86@j`3UNs>#+Zl8 z{765*%Ykx2D~tMwmn`K|yaB+246I7+MD`U+LXeT1tas2MP%e3yX$ewtggoq8mc0I* zjLDfHZ-zgZ>S@sZ#mHOCt>w{b1ZKY&{Q4sDxuXj8@Gb0j<_*rlQHprV!kKU|%b4;^ zro8J#<3OXWa?H7X(`x@S*NV2RT({w5AbCP~;AAk}@@;_!Unf?2wsqIDEySSteFPNc zEpEj%`2afno6_>G_YfvV$^50-oEln{|~Kqto%{Zdb=vz z&GmB8PKN98Dy|`!Pza*oKv6m|Lyzg5-=lqRu?p}Ou<%bEj z*k_Eb4X*B3(Ox)L*5W=jexE6(Ewhj87xW&`gC=owFX5yN`HtBiXgYEntxVi*1ohf7 zR3*|Rs)P6lTjBJ=Qb(KC%S-g7?gTf)*pOA!8yFWRip( zy>i$GUrG)FA%7~E?)9q)o6B&U05G|!C(=<=;Om(m1Rd%(P2>fMP-bK{=4Q*?-+1N> z48>r@{VXnXE{VM-Ck!Zu%KkMp>a>vuN|1n=Ha3E1iK7QUCVN6J5WdNePy3@0);7qm zbdO_p3{OM9<}c|E0z55d_h8Z>*EKJ$Ko~atI&6r>9M2R4CwzoKC>pyHXqX(x@&lgQ zI^p9OLIY>PkR6E7N+gso(h4V3BvpF|9Yx&6**i7eW-R+6UtK~W8C`K1Vy6@8_xUQ_ z2(h{PZPp7g`Cn!7RumolTV>7}W$|9}GnC*aVM3uKM-=1?jB(Bwni9FJx3D(Bf(k8m zCABfe>KIVJ@r+rVy@vH*H6s7ag7QX1oMr$0?37vP-jUj4=Tn|tOc!j&8E1Nk-<-^6?w;Zgq%J** zkK8HmqvC&uEi#Jx|G<3&_aD0GvCDR|-bdq)a8Kjirx+vUd|FKDU&fT&tf5~DPiJt2 z%tQ1o@DD78lj&XWv;rKfJvsdBoP@;LheKw6 zv#r4pzOgH)=i{+zRfLJ;o(5-@hOw!C1ugFreN@7EYuui+<=qp@qRu*lEBt8`{beZ| zc^`2s5Hf)N!HLa`%EB3dLy_}v_Lbjqfv5684&N=D0;RK%#+lN5FoK{%As9uB-BF{e zC?`#eYAhJT`|)6l#NNl%7K}EbCW2A5HQ0(TlbB;tZNuAbiYk74Jj&=zg0_zC{+jp; zS4`fp0nQX(H96i!=4A7JyeSDP!`Be*okwa|LHL?OK%q(MLfx}lKZBfzB?(=%5h0?7 zFH=$?$?-6F>T(Lz9PVLOn=y|Bg7p)ozWJVbG31N55Xyl}oVmk^OoCcpH*L<7mN!kiI1UD!_EZX$rAX!(5-fQw2d4fkYf2%iJ*|zXqdK5Rw?Dw~GJ&Muqym^f${BI^v8uV?!z%wj)Q{og>1SzCq9c z41$8lPFoIsM0y!njzl?ZICz_o;`;muHE?h?l~Dt+ydT+z2X-V8O){XUVKyM#fr0_$ z?`H2J5yRuI5)u~AM-q&BCt4tc>XeTfD|na+;@rvkppApk`t+~#X~Fqu%Idy6Obd0m z8d0#GJQ(x>nf)qe(7%Qv_WD!-7hynmrF@(lNUwMtr|xtuF`_BX^l!5Jz@gCJt>Mn z;dcoVx7KsIJBBCRpa#6Ygc@>^*v-Wy!olQ{C>R*>5L?sfo*q!99QJ@wV-5o`yhs}5 z$xM=6a!}YrBi9L2EJN%m)t(V9Nn-kU_+k@96~%QNoZt9^{=$lGch9DU(Z?J#j0>=* znD3QivhgGg%H-&{Ik`Yshk_$iT)c!CehC$1BJGc@kL{10xfJu3_q=NvFsMWKRUvlf8|{aVW{L_Y(K~gtM{DW$IIKfrxfGfl4ln8ly65CR;)^&bG2 z{`YwQ#AxJ^tGFby!q6X*Ye-B>)C_*FMAU5UATEMBy}iHh+#-$<8F3ELil+qxHV_oq z;by|mpJWKL-f1nJ{%<6Dh6OSfEKb|`%tH`2Z)YBNk9|>`494odJg`d+h9#;mV=IVt zgIFbXn;a~BWS@xbJm4D$KOyd4#g~apK9~7lZr=If z#E6^J3IzmWoy_O?421h*93o4(pN&K6OP1mD?sI?R?v(8FrK!!f_s?(@Q!J>jB-jU} z^PdHbm8U75OakDyQ9~|M)5MEbw8sy0s0@xLS(9wR4c2~_#d9nKasQDuA@ub^NS=!E zA8^ShQ9+o{akBlaf#c>sbv!5Se!BjKd4$4`oc)vbR0`RIB){Oe#ZN`W8k^zoVW`p- z6TFqe3jT-@d$$w zNdryc7kjXvOb6mC&fp*vh)a`YHP7m3N_tJ>(%>z}TAqcVOgtb7uTuZTBlt&`autV6 zR7Yz%s+GwNZ~9<_nk-t`_q0#t^;4wl?r*$9n)d&JW@DSJoOb8%XZ({#&h3HayZm53?+z(9*iX(T5wVRUnG?O zCW>?C`lohH7~);FpJDNJ7T;n~WpSNFhlL!vxX+p}%qnYZELtocun>bq_=jxrH2#Ub zljeVMPJ@T6@Ovm+%X1m<-}uJ^DaY+Xk(u~{98cjJ^Ec_ZP7#Mv^G?B;N{x?9WXGqb z+^LDFw~Hg=g^9E?xx+5*8Q|!!3*rV?&s51dbrE3BnLW7<_;MgYyrJ4Hy>e2#CQP z+8N2e-}f@JDyvJg%l<=zTdG%?FW;5l``&lISIv=;TmpY@85fs+{mY5O@A0PhZwNQ1 z@$tUTOeCB{G2s}FSu=`;e49m6zLUkId|O3JzEi~%zLT|dJyXoov&C$Es5n&56?66B z;&44*%-2VXBlXeZsKNHE+E{(OI4;+z+C+V_I4RfZ+EjhII4#$i+K&3p;!e5F;(Awc zw_Fd^_SE+l_ty6n_tp0o_tzgNJ|OwI+JXAP;=#IIwB>%d_F(-`@sM2SYY){QE+DGfBi>Hmma>Cj7BS!Ig_i^`yn?~`BJL--&`}ZW=5%;V+ zzhv%7@Kaon`?JW~=?=SR@qA$^jr>Pe8;T(32)t7H3i?1N(5$6bUj@&eh=bafh=N>}M0@{BH-$&hfv>-R-Rk1{CzLDUMt9dzNXx=vvIEBwaT@c>-f`WF$h(? ziWh4(7Mrbw=6VCU=Ni}1xbxbI>(&;kHJ5$(9kZsCda!Y=%~!r&y*WZ)dAe_U}T}G>gCp%W}~H=HDmx7jcfQGzT}owW#v+( zxyEwSmt3}t+830&(39TX!2R6dyv_ z^UdXDSK(&twU_4S&zI)E_454UrE?!&L{|ExvbQ1)=Qxv%R;kt`pz~MPt2L+8a9g!z z1@}8DD{kdlN$JMD(puR6^rcrXT=@9K%kyWu?OsBKq01XLR;%r2q zxafN8wU$3}p=TB)yL~$*puN)5>;?o91m})9RSslPEvrSRE^5E3UGU*vr-HZUak+vuOwKY*#(I(yXrmcd%OQ8`ai|UA769Bc8N# zD41h!R#!Y^183LWxtu&b2}~^4!^Q-FC++9$CuUn*V0Lo}YqrIeyrx_aGhS^h%TRP% z(gX)vFRwP$Y`qG=Bdw@r*do`yV8dK*cY|l>qz&}cFWaJU zs!Ou!TH)l(9QN!+vxR0+M-^Ccq5VSC+fo_C!r9iD0192k>c)D%T*#?I7`Zeb_#20StM*oos_wdKyP>80!)U#qSi2i}3)gSsCV4skqqSXz>WKDV~v?<;AVLd5Q0 z*-v0J-YF#JsA*V+Y2@yXTKwiG{l2x^{6i}QxVgD=Yr)KBS7CbZ1>(Jq>86XOUbbY{rpf z6IrACFK@`xZQvY3$D4`mNV*%K_D4-k^uOGX1?>J6=g8r_E{kx zU@2?Oh9^Xm>)X}ONehT$o-Dhv4f5EkR@Q4}Wd}gk6r?>pyS6d&smC6F;`L9@ee_c& zW}kiiqlJeT{d`bLX4N0XY-tHZ-)Hn3c>YLB7;~_A{XC?M=8ck`Jz0P1Q9!7YK@$G) zn&@~2AMZ&dowQ@DCsf)oH`AR|Cs9gtz?MozCymtXB#|b`U`kfUKnf)Q&`6elGZ`=# z((Qo!_YV4`eHpA~-2=~|7*nf)PzCGJCPM1>@2MPrM_oP2`{1epICP!h#uiwhQ_f0j z1?(;8ea^nL(p;}O_Epy|+n(Es*Z>D3jPJ7DA&9mm@O_8(*8)P7iRugDO!n|0_`ddehV<7kT#8$VrxRZ z2wGFf_?G9^mgGjggdBB_$;(V$VM3vyhfR<}khxVG)mEwWChjzw*lQVSGi~U9IkUZ! z%rK(Ob72LMMk*wC;a?sXk)(bMPaI>@>=>&FwS$tiw*%MaS{}qO*-EZjPO_8yp~P3r zCFrDhl2QkmLLxU-)0?Trt&Xvkxt;j5xoK^tIw|iM>SP^DN~c;w*A4ZIoT>8v*lC1AQ`d=Nno>0Y3${9krqO_C?+GfokYiC-cC^dG| z*i1vi7=?y0zTpM>MRIk*8D28e&@8A|v?e?0)v22x;j7cvlIoU|*S$I;Ur9>8J9NLu z-MO{vc49NrNpJ1$WNsVYk2<4UdvLe+b^_W+)*0($e<SwDq7fjiavgtz-sz-phfgRp8nM7D+ehmjt3cD|k59PSK%x8dbF zCf;Hf;P(h%uVHXR_t~1+Dmc4Q&!lFCwvKiL0}6Y}KN;#(Ts&t<&7rLbDHn|+Ab=p! zR;(g&5*#wBqQJsI33;@KEvRsTL z#8fL((FzdgSjbeM>n+jT&^xkYzb*-Hb@A;DLouQ7X*>lJ%+q-Y5 zCZxtdh7uXcp5eIe7==6LF}uB2UIR>s6DE}b$yRyUvuD~bXpYon7xs)=Z`e?ZfJe~S z?Ah5sMI(^BmFA5|E`WN@MhbpfOFHd6cr|_5|7Pv|AFFyEg@tgGq4j|8{Z%ZDM0=lB z>7ywIhLDXZ1;wIZb~VHH#5TRPy;tmEA_G9vJr=e>wYTu7KLk}W5N*$+Cx1lWK#e2r zil(5R=Yu@Nj8Z6O_(}Io*!?_6pes3l>(UJ4Vv}tYm7q3j~*!(vn8fGKLsH}!IHVGn(J$Ru3JbnQGcwPAyyf+ z$R1~z%riO8i;`{I&CY^3iPi-iew5<^uVWERF)tvmhL6W-$|fu`XPG0`Uz?_R*G!u4!y@q>Ugc|M z+Pss_n15|%bANTRz63AEW)dF@G85Ftvx(OaLXk|bT96eoT2MYA+hoye_GZvG?td1^Y&grB}AD*OB7q6Y{5PxJ<4k` z>qc2Mq(Sgg*A_D)R7qiSQ7xF^!Exx3P*ByPZl$5YJ>wNGis740_rWjF?<(-$aEcmQ zb(W!lm)Bg_smV7XP=TTgv*paQD8Ur>=0E%@4{J72+1WHtE8}|Adoi^dDR4JrHz7+^tpe5Qy!Lc~52d|4Gb6wCPPy6K; z#kwEN1zrg4YjeP1yj*0G3K{rebrNQ0uL7S5M}=z93wnwS9X4*NUFutrw0GaHX!~H# zlW*HZJB`@@q9^e#-?rIK;;X_2!#^y!L=qnlpLa)A~Mo)cr$xM_R>UXnLV z2il8Lcnsk|=qHID%%A4m31L}16jGGMp;OCl!+mp2J@+B>_O6A}=4W>&+D8F8ENw9A zV1oSFulFyF&a zJPK#lv>467lCAf$8Oy{!ux_gBCfF_6Grp0VHnPcaq`aC0Terx9SqtTIG_wDdHLSjX z1}pf){xY~bjgNN>Nv{of$Q&}AAqTc#*ncf2<)qcPEE(8l!JzSeX8WQH zL)1&{mmAo4*AfO2Ati)TqI=lZbpJhS6qet2p*QvSk-)nuVj{0~ZdXhZ35DX!$FTf7 zF28g(XS5#}1oFsEQ!p1`b?TF(6e)wc&P2qcZXa?b9epRBF0dnddnpQ;86eI3p(tcp zqwgt}*@iw@WS+*yD;Cixb5NmiVFtEBED>2-LS7*==Dv{(Q{S03Nk_ioOak;2_y-z z23KljPi(@?26zW;%y4N-qy(6$a3A~{G& zOa^?39)=efIkv5yK`*Rr{9Rb|G}B!*fnOvJ8eOyAgaoK*Kuo9!?J1xzix3c_vGBzp z7J;t}>=Q|lG{iAWjS8q zsvAX#>3kNtRvy|$8f3k_|Ap-l7tuP82>@syqGaz<=g=V&R4EEZ`=CVbv}i|yX1k1N zgqRdO2NA%6Mz7TOpyoS<9(I>RkUIET79dT16Mel)s(HTwh6V3CK=ozR#;}g|4~wj! z3*25T0LA2(-MNvDLbQMdk zJoSA{et=1L7+pe2D)mWDDJ3xwQo~Gx58q8k`eg2Fle>3XLd~`jQ?jAc_;`PWq?eew z7PxT||HzZ~f*+?qCez}Jg-;g#*ev|9X?JLq-q;~r4U1Pc5qf126qncaoqbXpK3aDa zWwNY8zpk{=t!bhry|$_1m@|&D<7`iVFImonGYP^x;Y_*X$el#aw6g;_Q$1zVtb->z zon3e`-ScDza(6p>kh@bt)b{(6+bL>WTV?y*!UKhc9%K=TBG48@Zm_R{|2wjh!7y%6 z)euu3l`^<@ssTw}T+ptRmjQTT&BBghe+nZvv|zZ+3rzOMkI-VG5zXqLyO~zvCXMRw z^5Sl+Wo(&n1*AIWR#IF7lru8$64N6LkMY}-r;_DA0OFj1p$MzBJb=ptqED~YTZ<(z z2hlg{G!^BBVpwSW47{b#v`Iki8LcUa?+e!SvVFNHm@OieB(GXRiwxK>K0`!buh79q zTb!tWu&Ro>s;!*cD18KXupIFD(2E(gT&1&?zE2MKipGg6u_0(R@rrg;qtsl~pf`6Z zoKr+DUMWzo(=GInpIBRg9WjtN`GNsE(ke@QgmLLaq`^S3bbA_Dgpl?kQLWD82bpwb zK&puaOH5ljj40nb;^G)>pgl%X#BC-kHE$69>Xt?Al#aRtOUQbRP!c5C>ID+D!#NDh>o8(86`~g@ z&S)t@gqxW@v0|yJpn`VMG{)cfvSbaH@DTyJN)0>%Zzg@Bc-b$TZ@`1r_xl*)z;KGie8`!GpLPKzH%SAt8&Srklps0C;jFu`s z5aatmAhOX<@ZBf*?jxa(8sAph$lq)4`v5qIfE{yJ6M*FCoGQ;j0w-o-4FUO>Ah@eH zlaA>mVfIX}nhtbbTxl#co%Gu#@$n0Z??^1cKnndA4rS(S(yYobQhwlChC?(3{DtXu zHRI&o#)KD!+aHT?PMgsL8wZLxnl#eyx!vMPeC6L_4DBd~MQAsTn-!v6S{r_D8sFPR zI@q3Q@_`^FXlGpS1GYbO3ev5h+piMj z4$y zwM@tkcTH-y5(p^3!v3BvjMcwDIrS4r-ZA`a$TRdi1Z$d8D?t8T0-4iyAkjYkO@cRS z48-IHyB0FfC5HZ!*W8UlR^4X)KSct=msnZE1f+h1**_}TnveKH!ca=AmF_Ao{)8qQ zJz&xtg$j*-KsO0D+(1mwZ~iaYmAw9*`{K+m5gLSYF3VMJnNWlb>o3!HC&$T$7$=&3 ze>B}b_BVl)nB!t3U<5rxqT2t$4Hhayv=+QDSjbd;RNvZyaJHJl(@Z

    EEWUNkgvK?!QV&zb|0LmB9p@sE^>`b8Cvqqx_ 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 Kwd7X*^S=S!j}BY_ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/collector.py b/venv/lib/python3.10/site-packages/pip/_internal/index/collector.py deleted file mode 100644 index 08c8bdd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/index/collector.py +++ /dev/null @@ -1,507 +0,0 @@ -""" -The main purpose of this module is to expose LinkCollector.collect_sources(). -""" - -import collections -import email.message -import functools -import itertools -import json -import logging -import os -import urllib.parse -import urllib.request -from html.parser import HTMLParser -from optparse import Values -from typing import ( - TYPE_CHECKING, - Callable, - Dict, - Iterable, - List, - MutableMapping, - NamedTuple, - Optional, - Sequence, - Tuple, - Union, -) - -from pip._vendor import requests -from pip._vendor.requests import Response -from pip._vendor.requests.exceptions import RetryError, SSLError - -from pip._internal.exceptions import NetworkConnectionError -from pip._internal.models.link import Link -from pip._internal.models.search_scope import SearchScope -from pip._internal.network.session import PipSession -from pip._internal.network.utils import raise_for_status -from pip._internal.utils.filetypes import is_archive_file -from pip._internal.utils.misc import redact_auth_from_url -from pip._internal.vcs import vcs - -from .sources import CandidatesFromPage, LinkSource, build_source - -if TYPE_CHECKING: - from typing import Protocol -else: - Protocol = object - -logger = logging.getLogger(__name__) - -ResponseHeaders = MutableMapping[str, str] - - -def _match_vcs_scheme(url: str) -> Optional[str]: - """Look for VCS schemes in the URL. - - Returns the matched VCS scheme, or None if there's no match. - """ - for scheme in vcs.schemes: - if url.lower().startswith(scheme) and url[len(scheme)] in "+:": - return scheme - return None - - -class _NotAPIContent(Exception): - def __init__(self, content_type: str, request_desc: str) -> None: - super().__init__(content_type, request_desc) - self.content_type = content_type - self.request_desc = request_desc - - -def _ensure_api_header(response: Response) -> None: - """ - Check the Content-Type header to ensure the response contains a Simple - API Response. - - Raises `_NotAPIContent` if the content type is not a valid content-type. - """ - content_type = response.headers.get("Content-Type", "Unknown") - - content_type_l = content_type.lower() - if content_type_l.startswith( - ( - "text/html", - "application/vnd.pypi.simple.v1+html", - "application/vnd.pypi.simple.v1+json", - ) - ): - return - - raise _NotAPIContent(content_type, response.request.method) - - -class _NotHTTP(Exception): - pass - - -def _ensure_api_response(url: str, session: PipSession) -> None: - """ - Send a HEAD request to the URL, and ensure the response contains a simple - API Response. - - Raises `_NotHTTP` if the URL is not available for a HEAD request, or - `_NotAPIContent` if the content type is not a valid content type. - """ - scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) - if scheme not in {"http", "https"}: - raise _NotHTTP() - - resp = session.head(url, allow_redirects=True) - raise_for_status(resp) - - _ensure_api_header(resp) - - -def _get_simple_response(url: str, session: PipSession) -> Response: - """Access an Simple API response with GET, and return the response. - - This consists of three parts: - - 1. If the URL looks suspiciously like an archive, send a HEAD first to - check the Content-Type is HTML or Simple API, to avoid downloading a - large file. Raise `_NotHTTP` if the content type cannot be determined, or - `_NotAPIContent` if it is not HTML or a Simple API. - 2. Actually perform the request. Raise HTTP exceptions on network failures. - 3. Check the Content-Type header to make sure we got a Simple API response, - and raise `_NotAPIContent` otherwise. - """ - if is_archive_file(Link(url).filename): - _ensure_api_response(url, session=session) - - logger.debug("Getting page %s", redact_auth_from_url(url)) - - resp = session.get( - url, - headers={ - "Accept": ", ".join( - [ - "application/vnd.pypi.simple.v1+json", - "application/vnd.pypi.simple.v1+html; q=0.1", - "text/html; q=0.01", - ] - ), - # We don't want to blindly returned cached data for - # /simple/, because authors generally expecting that - # twine upload && pip install will function, but if - # they've done a pip install in the last ~10 minutes - # it won't. Thus by setting this to zero we will not - # blindly use any cached data, however the benefit of - # using max-age=0 instead of no-cache, is that we will - # still support conditional requests, so we will still - # minimize traffic sent in cases where the page hasn't - # changed at all, we will just always incur the round - # trip for the conditional GET now instead of only - # once per 10 minutes. - # For more information, please see pypa/pip#5670. - "Cache-Control": "max-age=0", - }, - ) - raise_for_status(resp) - - # The check for archives above only works if the url ends with - # something that looks like an archive. However that is not a - # requirement of an url. Unless we issue a HEAD request on every - # url we cannot know ahead of time for sure if something is a - # Simple API response or not. However we can check after we've - # downloaded it. - _ensure_api_header(resp) - - logger.debug( - "Fetched page %s as %s", - redact_auth_from_url(url), - resp.headers.get("Content-Type", "Unknown"), - ) - - return resp - - -def _get_encoding_from_headers(headers: ResponseHeaders) -> Optional[str]: - """Determine if we have any encoding information in our headers.""" - if headers and "Content-Type" in headers: - m = email.message.Message() - m["content-type"] = headers["Content-Type"] - charset = m.get_param("charset") - if charset: - return str(charset) - return None - - -class CacheablePageContent: - def __init__(self, page: "IndexContent") -> None: - assert page.cache_link_parsing - self.page = page - - def __eq__(self, other: object) -> bool: - return isinstance(other, type(self)) and self.page.url == other.page.url - - def __hash__(self) -> int: - return hash(self.page.url) - - -class ParseLinks(Protocol): - def __call__(self, page: "IndexContent") -> Iterable[Link]: - ... - - -def with_cached_index_content(fn: ParseLinks) -> ParseLinks: - """ - Given a function that parses an Iterable[Link] from an IndexContent, cache the - function's result (keyed by CacheablePageContent), unless the IndexContent - `page` has `page.cache_link_parsing == False`. - """ - - @functools.lru_cache(maxsize=None) - def wrapper(cacheable_page: CacheablePageContent) -> List[Link]: - return list(fn(cacheable_page.page)) - - @functools.wraps(fn) - def wrapper_wrapper(page: "IndexContent") -> List[Link]: - if page.cache_link_parsing: - return wrapper(CacheablePageContent(page)) - return list(fn(page)) - - return wrapper_wrapper - - -@with_cached_index_content -def parse_links(page: "IndexContent") -> Iterable[Link]: - """ - Parse a Simple API's Index Content, and yield its anchor elements as Link objects. - """ - - content_type_l = page.content_type.lower() - if content_type_l.startswith("application/vnd.pypi.simple.v1+json"): - data = json.loads(page.content) - for file in data.get("files", []): - link = Link.from_json(file, page.url) - if link is None: - continue - yield link - return - - parser = HTMLLinkParser(page.url) - encoding = page.encoding or "utf-8" - parser.feed(page.content.decode(encoding)) - - url = page.url - base_url = parser.base_url or url - for anchor in parser.anchors: - link = Link.from_element(anchor, page_url=url, base_url=base_url) - if link is None: - continue - yield link - - -class IndexContent: - """Represents one response (or page), along with its URL""" - - def __init__( - self, - content: bytes, - content_type: str, - encoding: Optional[str], - url: str, - cache_link_parsing: bool = True, - ) -> None: - """ - :param encoding: the encoding to decode the given content. - :param url: the URL from which the HTML was downloaded. - :param cache_link_parsing: whether links parsed from this page's url - should be cached. PyPI index urls should - have this set to False, for example. - """ - self.content = content - self.content_type = content_type - self.encoding = encoding - self.url = url - self.cache_link_parsing = cache_link_parsing - - def __str__(self) -> str: - return redact_auth_from_url(self.url) - - -class HTMLLinkParser(HTMLParser): - """ - HTMLParser that keeps the first base HREF and a list of all anchor - elements' attributes. - """ - - def __init__(self, url: str) -> None: - super().__init__(convert_charrefs=True) - - self.url: str = url - self.base_url: Optional[str] = None - self.anchors: List[Dict[str, Optional[str]]] = [] - - def handle_starttag(self, tag: str, attrs: List[Tuple[str, Optional[str]]]) -> None: - if tag == "base" and self.base_url is None: - href = self.get_href(attrs) - if href is not None: - self.base_url = href - elif tag == "a": - self.anchors.append(dict(attrs)) - - def get_href(self, attrs: List[Tuple[str, Optional[str]]]) -> Optional[str]: - for name, value in attrs: - if name == "href": - return value - return None - - -def _handle_get_simple_fail( - link: Link, - reason: Union[str, Exception], - meth: Optional[Callable[..., None]] = None, -) -> None: - if meth is None: - meth = logger.debug - meth("Could not fetch URL %s: %s - skipping", link, reason) - - -def _make_index_content( - response: Response, cache_link_parsing: bool = True -) -> IndexContent: - encoding = _get_encoding_from_headers(response.headers) - return IndexContent( - response.content, - response.headers["Content-Type"], - encoding=encoding, - url=response.url, - cache_link_parsing=cache_link_parsing, - ) - - -def _get_index_content(link: Link, *, session: PipSession) -> Optional["IndexContent"]: - url = link.url.split("#", 1)[0] - - # Check for VCS schemes that do not support lookup as web pages. - vcs_scheme = _match_vcs_scheme(url) - if vcs_scheme: - logger.warning( - "Cannot look at %s URL %s because it does not support lookup as web pages.", - vcs_scheme, - link, - ) - return None - - # Tack index.html onto file:// URLs that point to directories - scheme, _, path, _, _, _ = urllib.parse.urlparse(url) - if scheme == "file" and os.path.isdir(urllib.request.url2pathname(path)): - # add trailing slash if not present so urljoin doesn't trim - # final segment - if not url.endswith("/"): - url += "/" - # TODO: In the future, it would be nice if pip supported PEP 691 - # style responses in the file:// URLs, however there's no - # standard file extension for application/vnd.pypi.simple.v1+json - # so we'll need to come up with something on our own. - url = urllib.parse.urljoin(url, "index.html") - logger.debug(" file: URL is directory, getting %s", url) - - try: - resp = _get_simple_response(url, session=session) - except _NotHTTP: - logger.warning( - "Skipping page %s because it looks like an archive, and cannot " - "be checked by a HTTP HEAD request.", - link, - ) - except _NotAPIContent as exc: - logger.warning( - "Skipping page %s because the %s request got Content-Type: %s. " - "The only supported Content-Types are application/vnd.pypi.simple.v1+json, " - "application/vnd.pypi.simple.v1+html, and text/html", - link, - exc.request_desc, - exc.content_type, - ) - except NetworkConnectionError as exc: - _handle_get_simple_fail(link, exc) - except RetryError as exc: - _handle_get_simple_fail(link, exc) - except SSLError as exc: - reason = "There was a problem confirming the ssl certificate: " - reason += str(exc) - _handle_get_simple_fail(link, reason, meth=logger.info) - except requests.ConnectionError as exc: - _handle_get_simple_fail(link, f"connection error: {exc}") - except requests.Timeout: - _handle_get_simple_fail(link, "timed out") - else: - return _make_index_content(resp, cache_link_parsing=link.cache_link_parsing) - return None - - -class CollectedSources(NamedTuple): - find_links: Sequence[Optional[LinkSource]] - index_urls: Sequence[Optional[LinkSource]] - - -class LinkCollector: - - """ - Responsible for collecting Link objects from all configured locations, - making network requests as needed. - - The class's main method is its collect_sources() method. - """ - - def __init__( - self, - session: PipSession, - search_scope: SearchScope, - ) -> None: - self.search_scope = search_scope - self.session = session - - @classmethod - def create( - cls, - session: PipSession, - options: Values, - suppress_no_index: bool = False, - ) -> "LinkCollector": - """ - :param session: The Session to use to make requests. - :param suppress_no_index: Whether to ignore the --no-index option - when constructing the SearchScope object. - """ - index_urls = [options.index_url] + options.extra_index_urls - if options.no_index and not suppress_no_index: - logger.debug( - "Ignoring indexes: %s", - ",".join(redact_auth_from_url(url) for url in index_urls), - ) - index_urls = [] - - # Make sure find_links is a list before passing to create(). - find_links = options.find_links or [] - - search_scope = SearchScope.create( - find_links=find_links, - index_urls=index_urls, - no_index=options.no_index, - ) - link_collector = LinkCollector( - session=session, - search_scope=search_scope, - ) - return link_collector - - @property - def find_links(self) -> List[str]: - return self.search_scope.find_links - - def fetch_response(self, location: Link) -> Optional[IndexContent]: - """ - Fetch an HTML page containing package links. - """ - return _get_index_content(location, session=self.session) - - def collect_sources( - self, - project_name: str, - candidates_from_page: CandidatesFromPage, - ) -> CollectedSources: - # The OrderedDict calls deduplicate sources by URL. - index_url_sources = collections.OrderedDict( - build_source( - loc, - candidates_from_page=candidates_from_page, - page_validator=self.session.is_secure_origin, - expand_dir=False, - cache_link_parsing=False, - project_name=project_name, - ) - for loc in self.search_scope.get_index_urls_locations(project_name) - ).values() - find_links_sources = collections.OrderedDict( - build_source( - loc, - candidates_from_page=candidates_from_page, - page_validator=self.session.is_secure_origin, - expand_dir=True, - cache_link_parsing=True, - project_name=project_name, - ) - for loc in self.find_links - ).values() - - if logger.isEnabledFor(logging.DEBUG): - lines = [ - f"* {s.link}" - for s in itertools.chain(find_links_sources, index_url_sources) - if s is not None and s.link is not None - ] - lines = [ - f"{len(lines)} location(s) to search " - f"for versions of {project_name}:" - ] + lines - logger.debug("\n".join(lines)) - - return CollectedSources( - find_links=list(find_links_sources), - index_urls=list(index_url_sources), - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py b/venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py deleted file mode 100644 index ec9ebc3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py +++ /dev/null @@ -1,1027 +0,0 @@ -"""Routines related to PyPI, indexes""" - -import enum -import functools -import itertools -import logging -import re -from typing import TYPE_CHECKING, FrozenSet, Iterable, List, Optional, Set, Tuple, Union - -from pip._vendor.packaging import specifiers -from pip._vendor.packaging.tags import Tag -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import _BaseVersion -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.exceptions import ( - BestVersionAlreadyInstalled, - DistributionNotFound, - InvalidWheelFilename, - UnsupportedWheel, -) -from pip._internal.index.collector import LinkCollector, parse_links -from pip._internal.models.candidate import InstallationCandidate -from pip._internal.models.format_control import FormatControl -from pip._internal.models.link import Link -from pip._internal.models.search_scope import SearchScope -from pip._internal.models.selection_prefs import SelectionPreferences -from pip._internal.models.target_python import TargetPython -from pip._internal.models.wheel import Wheel -from pip._internal.req import InstallRequirement -from pip._internal.utils._log import getLogger -from pip._internal.utils.filetypes import WHEEL_EXTENSION -from pip._internal.utils.hashes import Hashes -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import build_netloc -from pip._internal.utils.packaging import check_requires_python -from pip._internal.utils.unpacking import SUPPORTED_EXTENSIONS - -if TYPE_CHECKING: - from pip._vendor.typing_extensions import TypeGuard - -__all__ = ["FormatControl", "BestCandidateResult", "PackageFinder"] - - -logger = getLogger(__name__) - -BuildTag = Union[Tuple[()], Tuple[int, str]] -CandidateSortingKey = Tuple[int, int, int, _BaseVersion, Optional[int], BuildTag] - - -def _check_link_requires_python( - link: Link, - version_info: Tuple[int, int, int], - ignore_requires_python: bool = False, -) -> bool: - """ - Return whether the given Python version is compatible with a link's - "Requires-Python" value. - - :param version_info: A 3-tuple of ints representing the Python - major-minor-micro version to check. - :param ignore_requires_python: Whether to ignore the "Requires-Python" - value if the given Python version isn't compatible. - """ - try: - is_compatible = check_requires_python( - link.requires_python, - version_info=version_info, - ) - except specifiers.InvalidSpecifier: - logger.debug( - "Ignoring invalid Requires-Python (%r) for link: %s", - link.requires_python, - link, - ) - else: - if not is_compatible: - version = ".".join(map(str, version_info)) - if not ignore_requires_python: - logger.verbose( - "Link requires a different Python (%s not in: %r): %s", - version, - link.requires_python, - link, - ) - return False - - logger.debug( - "Ignoring failed Requires-Python check (%s not in: %r) for link: %s", - version, - link.requires_python, - link, - ) - - return True - - -class LinkType(enum.Enum): - candidate = enum.auto() - different_project = enum.auto() - yanked = enum.auto() - format_unsupported = enum.auto() - format_invalid = enum.auto() - platform_mismatch = enum.auto() - requires_python_mismatch = enum.auto() - - -class LinkEvaluator: - - """ - Responsible for evaluating links for a particular project. - """ - - _py_version_re = re.compile(r"-py([123]\.?[0-9]?)$") - - # Don't include an allow_yanked default value to make sure each call - # site considers whether yanked releases are allowed. This also causes - # that decision to be made explicit in the calling code, which helps - # people when reading the code. - def __init__( - self, - project_name: str, - canonical_name: str, - formats: FrozenSet[str], - target_python: TargetPython, - allow_yanked: bool, - ignore_requires_python: Optional[bool] = None, - ) -> None: - """ - :param project_name: The user supplied package name. - :param canonical_name: The canonical package name. - :param formats: The formats allowed for this package. Should be a set - with 'binary' or 'source' or both in it. - :param target_python: The target Python interpreter to use when - evaluating link compatibility. This is used, for example, to - check wheel compatibility, as well as when checking the Python - version, e.g. the Python version embedded in a link filename - (or egg fragment) and against an HTML link's optional PEP 503 - "data-requires-python" attribute. - :param allow_yanked: Whether files marked as yanked (in the sense - of PEP 592) are permitted to be candidates for install. - :param ignore_requires_python: Whether to ignore incompatible - PEP 503 "data-requires-python" values in HTML links. Defaults - to False. - """ - if ignore_requires_python is None: - ignore_requires_python = False - - self._allow_yanked = allow_yanked - self._canonical_name = canonical_name - self._ignore_requires_python = ignore_requires_python - self._formats = formats - self._target_python = target_python - - self.project_name = project_name - - def evaluate_link(self, link: Link) -> Tuple[LinkType, str]: - """ - Determine whether a link is a candidate for installation. - - :return: A tuple (result, detail), where *result* is an enum - representing whether the evaluation found a candidate, or the reason - why one is not found. If a candidate is found, *detail* will be the - candidate's version string; if one is not found, it contains the - reason the link fails to qualify. - """ - version = None - if link.is_yanked and not self._allow_yanked: - reason = link.yanked_reason or "" - return (LinkType.yanked, f"yanked for reason: {reason}") - - if link.egg_fragment: - egg_info = link.egg_fragment - ext = link.ext - else: - egg_info, ext = link.splitext() - if not ext: - return (LinkType.format_unsupported, "not a file") - if ext not in SUPPORTED_EXTENSIONS: - return ( - LinkType.format_unsupported, - f"unsupported archive format: {ext}", - ) - if "binary" not in self._formats and ext == WHEEL_EXTENSION: - reason = f"No binaries permitted for {self.project_name}" - return (LinkType.format_unsupported, reason) - if "macosx10" in link.path and ext == ".zip": - return (LinkType.format_unsupported, "macosx10 one") - if ext == WHEEL_EXTENSION: - try: - wheel = Wheel(link.filename) - except InvalidWheelFilename: - return ( - LinkType.format_invalid, - "invalid wheel filename", - ) - if canonicalize_name(wheel.name) != self._canonical_name: - reason = f"wrong project name (not {self.project_name})" - return (LinkType.different_project, reason) - - supported_tags = self._target_python.get_unsorted_tags() - if not wheel.supported(supported_tags): - # Include the wheel's tags in the reason string to - # simplify troubleshooting compatibility issues. - file_tags = ", ".join(wheel.get_formatted_file_tags()) - reason = ( - f"none of the wheel's tags ({file_tags}) are compatible " - f"(run pip debug --verbose to show compatible tags)" - ) - return (LinkType.platform_mismatch, reason) - - version = wheel.version - - # This should be up by the self.ok_binary check, but see issue 2700. - if "source" not in self._formats and ext != WHEEL_EXTENSION: - reason = f"No sources permitted for {self.project_name}" - return (LinkType.format_unsupported, reason) - - if not version: - version = _extract_version_from_fragment( - egg_info, - self._canonical_name, - ) - if not version: - reason = f"Missing project version for {self.project_name}" - return (LinkType.format_invalid, reason) - - match = self._py_version_re.search(version) - if match: - version = version[: match.start()] - py_version = match.group(1) - if py_version != self._target_python.py_version: - return ( - LinkType.platform_mismatch, - "Python version is incorrect", - ) - - supports_python = _check_link_requires_python( - link, - version_info=self._target_python.py_version_info, - ignore_requires_python=self._ignore_requires_python, - ) - if not supports_python: - reason = f"{version} Requires-Python {link.requires_python}" - return (LinkType.requires_python_mismatch, reason) - - logger.debug("Found link %s, version: %s", link, version) - - return (LinkType.candidate, version) - - -def filter_unallowed_hashes( - candidates: List[InstallationCandidate], - hashes: Optional[Hashes], - project_name: str, -) -> List[InstallationCandidate]: - """ - Filter out candidates whose hashes aren't allowed, and return a new - list of candidates. - - If at least one candidate has an allowed hash, then all candidates with - either an allowed hash or no hash specified are returned. Otherwise, - the given candidates are returned. - - Including the candidates with no hash specified when there is a match - allows a warning to be logged if there is a more preferred candidate - with no hash specified. Returning all candidates in the case of no - matches lets pip report the hash of the candidate that would otherwise - have been installed (e.g. permitting the user to more easily update - their requirements file with the desired hash). - """ - if not hashes: - logger.debug( - "Given no hashes to check %s links for project %r: " - "discarding no candidates", - len(candidates), - project_name, - ) - # Make sure we're not returning back the given value. - return list(candidates) - - matches_or_no_digest = [] - # Collect the non-matches for logging purposes. - non_matches = [] - match_count = 0 - for candidate in candidates: - link = candidate.link - if not link.has_hash: - pass - elif link.is_hash_allowed(hashes=hashes): - match_count += 1 - else: - non_matches.append(candidate) - continue - - matches_or_no_digest.append(candidate) - - if match_count: - filtered = matches_or_no_digest - else: - # Make sure we're not returning back the given value. - filtered = list(candidates) - - if len(filtered) == len(candidates): - discard_message = "discarding no candidates" - else: - discard_message = "discarding {} non-matches:\n {}".format( - len(non_matches), - "\n ".join(str(candidate.link) for candidate in non_matches), - ) - - logger.debug( - "Checked %s links for project %r against %s hashes " - "(%s matches, %s no digest): %s", - len(candidates), - project_name, - hashes.digest_count, - match_count, - len(matches_or_no_digest) - match_count, - discard_message, - ) - - return filtered - - -class CandidatePreferences: - - """ - Encapsulates some of the preferences for filtering and sorting - InstallationCandidate objects. - """ - - def __init__( - self, - prefer_binary: bool = False, - allow_all_prereleases: bool = False, - ) -> None: - """ - :param allow_all_prereleases: Whether to allow all pre-releases. - """ - self.allow_all_prereleases = allow_all_prereleases - self.prefer_binary = prefer_binary - - -class BestCandidateResult: - """A collection of candidates, returned by `PackageFinder.find_best_candidate`. - - This class is only intended to be instantiated by CandidateEvaluator's - `compute_best_candidate()` method. - """ - - def __init__( - self, - candidates: List[InstallationCandidate], - applicable_candidates: List[InstallationCandidate], - best_candidate: Optional[InstallationCandidate], - ) -> None: - """ - :param candidates: A sequence of all available candidates found. - :param applicable_candidates: The applicable candidates. - :param best_candidate: The most preferred candidate found, or None - if no applicable candidates were found. - """ - assert set(applicable_candidates) <= set(candidates) - - if best_candidate is None: - assert not applicable_candidates - else: - assert best_candidate in applicable_candidates - - self._applicable_candidates = applicable_candidates - self._candidates = candidates - - self.best_candidate = best_candidate - - def iter_all(self) -> Iterable[InstallationCandidate]: - """Iterate through all candidates.""" - return iter(self._candidates) - - def iter_applicable(self) -> Iterable[InstallationCandidate]: - """Iterate through the applicable candidates.""" - return iter(self._applicable_candidates) - - -class CandidateEvaluator: - - """ - Responsible for filtering and sorting candidates for installation based - on what tags are valid. - """ - - @classmethod - def create( - cls, - project_name: str, - target_python: Optional[TargetPython] = None, - prefer_binary: bool = False, - allow_all_prereleases: bool = False, - specifier: Optional[specifiers.BaseSpecifier] = None, - hashes: Optional[Hashes] = None, - ) -> "CandidateEvaluator": - """Create a CandidateEvaluator object. - - :param target_python: The target Python interpreter to use when - checking compatibility. If None (the default), a TargetPython - object will be constructed from the running Python. - :param specifier: An optional object implementing `filter` - (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable - versions. - :param hashes: An optional collection of allowed hashes. - """ - if target_python is None: - target_python = TargetPython() - if specifier is None: - specifier = specifiers.SpecifierSet() - - supported_tags = target_python.get_sorted_tags() - - return cls( - project_name=project_name, - supported_tags=supported_tags, - specifier=specifier, - prefer_binary=prefer_binary, - allow_all_prereleases=allow_all_prereleases, - hashes=hashes, - ) - - def __init__( - self, - project_name: str, - supported_tags: List[Tag], - specifier: specifiers.BaseSpecifier, - prefer_binary: bool = False, - allow_all_prereleases: bool = False, - hashes: Optional[Hashes] = None, - ) -> None: - """ - :param supported_tags: The PEP 425 tags supported by the target - Python in order of preference (most preferred first). - """ - self._allow_all_prereleases = allow_all_prereleases - self._hashes = hashes - self._prefer_binary = prefer_binary - self._project_name = project_name - self._specifier = specifier - self._supported_tags = supported_tags - # Since the index of the tag in the _supported_tags list is used - # as a priority, precompute a map from tag to index/priority to be - # used in wheel.find_most_preferred_tag. - self._wheel_tag_preferences = { - tag: idx for idx, tag in enumerate(supported_tags) - } - - def get_applicable_candidates( - self, - candidates: List[InstallationCandidate], - ) -> List[InstallationCandidate]: - """ - Return the applicable candidates from a list of candidates. - """ - # Using None infers from the specifier instead. - allow_prereleases = self._allow_all_prereleases or None - specifier = self._specifier - versions = { - str(v) - for v in specifier.filter( - # We turn the version object into a str here because otherwise - # when we're debundled but setuptools isn't, Python will see - # packaging.version.Version and - # pkg_resources._vendor.packaging.version.Version as different - # types. This way we'll use a str as a common data interchange - # format. If we stop using the pkg_resources provided specifier - # and start using our own, we can drop the cast to str(). - (str(c.version) for c in candidates), - prereleases=allow_prereleases, - ) - } - - # Again, converting version to str to deal with debundling. - applicable_candidates = [c for c in candidates if str(c.version) in versions] - - filtered_applicable_candidates = filter_unallowed_hashes( - candidates=applicable_candidates, - hashes=self._hashes, - project_name=self._project_name, - ) - - return sorted(filtered_applicable_candidates, key=self._sort_key) - - def _sort_key(self, candidate: InstallationCandidate) -> CandidateSortingKey: - """ - Function to pass as the `key` argument to a call to sorted() to sort - InstallationCandidates by preference. - - Returns a tuple such that tuples sorting as greater using Python's - default comparison operator are more preferred. - - The preference is as follows: - - First and foremost, candidates with allowed (matching) hashes are - always preferred over candidates without matching hashes. This is - because e.g. if the only candidate with an allowed hash is yanked, - we still want to use that candidate. - - Second, excepting hash considerations, candidates that have been - yanked (in the sense of PEP 592) are always less preferred than - candidates that haven't been yanked. Then: - - If not finding wheels, they are sorted by version only. - If finding wheels, then the sort order is by version, then: - 1. existing installs - 2. wheels ordered via Wheel.support_index_min(self._supported_tags) - 3. source archives - If prefer_binary was set, then all wheels are sorted above sources. - - Note: it was considered to embed this logic into the Link - comparison operators, but then different sdist links - with the same version, would have to be considered equal - """ - valid_tags = self._supported_tags - support_num = len(valid_tags) - build_tag: BuildTag = () - binary_preference = 0 - link = candidate.link - if link.is_wheel: - # can raise InvalidWheelFilename - wheel = Wheel(link.filename) - try: - pri = -( - wheel.find_most_preferred_tag( - valid_tags, self._wheel_tag_preferences - ) - ) - except ValueError: - raise UnsupportedWheel( - f"{wheel.filename} is not a supported wheel for this platform. It " - "can't be sorted." - ) - if self._prefer_binary: - binary_preference = 1 - if wheel.build_tag is not None: - match = re.match(r"^(\d+)(.*)$", wheel.build_tag) - assert match is not None, "guaranteed by filename validation" - build_tag_groups = match.groups() - build_tag = (int(build_tag_groups[0]), build_tag_groups[1]) - else: # sdist - pri = -(support_num) - has_allowed_hash = int(link.is_hash_allowed(self._hashes)) - yank_value = -1 * int(link.is_yanked) # -1 for yanked. - return ( - has_allowed_hash, - yank_value, - binary_preference, - candidate.version, - pri, - build_tag, - ) - - def sort_best_candidate( - self, - candidates: List[InstallationCandidate], - ) -> Optional[InstallationCandidate]: - """ - Return the best candidate per the instance's sort order, or None if - no candidate is acceptable. - """ - if not candidates: - return None - best_candidate = max(candidates, key=self._sort_key) - return best_candidate - - def compute_best_candidate( - self, - candidates: List[InstallationCandidate], - ) -> BestCandidateResult: - """ - Compute and return a `BestCandidateResult` instance. - """ - applicable_candidates = self.get_applicable_candidates(candidates) - - best_candidate = self.sort_best_candidate(applicable_candidates) - - return BestCandidateResult( - candidates, - applicable_candidates=applicable_candidates, - best_candidate=best_candidate, - ) - - -class PackageFinder: - """This finds packages. - - This is meant to match easy_install's technique for looking for - packages, by reading pages and looking for appropriate links. - """ - - def __init__( - self, - link_collector: LinkCollector, - target_python: TargetPython, - allow_yanked: bool, - format_control: Optional[FormatControl] = None, - candidate_prefs: Optional[CandidatePreferences] = None, - ignore_requires_python: Optional[bool] = None, - ) -> None: - """ - This constructor is primarily meant to be used by the create() class - method and from tests. - - :param format_control: A FormatControl object, used to control - the selection of source packages / binary packages when consulting - the index and links. - :param candidate_prefs: Options to use when creating a - CandidateEvaluator object. - """ - if candidate_prefs is None: - candidate_prefs = CandidatePreferences() - - format_control = format_control or FormatControl(set(), set()) - - self._allow_yanked = allow_yanked - self._candidate_prefs = candidate_prefs - self._ignore_requires_python = ignore_requires_python - self._link_collector = link_collector - self._target_python = target_python - - self.format_control = format_control - - # These are boring links that have already been logged somehow. - self._logged_links: Set[Tuple[Link, LinkType, str]] = set() - - # Don't include an allow_yanked default value to make sure each call - # site considers whether yanked releases are allowed. This also causes - # that decision to be made explicit in the calling code, which helps - # people when reading the code. - @classmethod - def create( - cls, - link_collector: LinkCollector, - selection_prefs: SelectionPreferences, - target_python: Optional[TargetPython] = None, - ) -> "PackageFinder": - """Create a PackageFinder. - - :param selection_prefs: The candidate selection preferences, as a - SelectionPreferences object. - :param target_python: The target Python interpreter to use when - checking compatibility. If None (the default), a TargetPython - object will be constructed from the running Python. - """ - if target_python is None: - target_python = TargetPython() - - candidate_prefs = CandidatePreferences( - prefer_binary=selection_prefs.prefer_binary, - allow_all_prereleases=selection_prefs.allow_all_prereleases, - ) - - return cls( - candidate_prefs=candidate_prefs, - link_collector=link_collector, - target_python=target_python, - allow_yanked=selection_prefs.allow_yanked, - format_control=selection_prefs.format_control, - ignore_requires_python=selection_prefs.ignore_requires_python, - ) - - @property - def target_python(self) -> TargetPython: - return self._target_python - - @property - def search_scope(self) -> SearchScope: - return self._link_collector.search_scope - - @search_scope.setter - def search_scope(self, search_scope: SearchScope) -> None: - self._link_collector.search_scope = search_scope - - @property - def find_links(self) -> List[str]: - return self._link_collector.find_links - - @property - def index_urls(self) -> List[str]: - return self.search_scope.index_urls - - @property - def trusted_hosts(self) -> Iterable[str]: - for host_port in self._link_collector.session.pip_trusted_origins: - yield build_netloc(*host_port) - - @property - def allow_all_prereleases(self) -> bool: - return self._candidate_prefs.allow_all_prereleases - - def set_allow_all_prereleases(self) -> None: - self._candidate_prefs.allow_all_prereleases = True - - @property - def prefer_binary(self) -> bool: - return self._candidate_prefs.prefer_binary - - def set_prefer_binary(self) -> None: - self._candidate_prefs.prefer_binary = True - - def requires_python_skipped_reasons(self) -> List[str]: - reasons = { - detail - for _, result, detail in self._logged_links - if result == LinkType.requires_python_mismatch - } - return sorted(reasons) - - def make_link_evaluator(self, project_name: str) -> LinkEvaluator: - canonical_name = canonicalize_name(project_name) - formats = self.format_control.get_allowed_formats(canonical_name) - - return LinkEvaluator( - project_name=project_name, - canonical_name=canonical_name, - formats=formats, - target_python=self._target_python, - allow_yanked=self._allow_yanked, - ignore_requires_python=self._ignore_requires_python, - ) - - def _sort_links(self, links: Iterable[Link]) -> List[Link]: - """ - Returns elements of links in order, non-egg links first, egg links - second, while eliminating duplicates - """ - eggs, no_eggs = [], [] - seen: Set[Link] = set() - for link in links: - if link not in seen: - seen.add(link) - if link.egg_fragment: - eggs.append(link) - else: - no_eggs.append(link) - return no_eggs + eggs - - def _log_skipped_link(self, link: Link, result: LinkType, detail: str) -> None: - entry = (link, result, detail) - if entry not in self._logged_links: - # Put the link at the end so the reason is more visible and because - # the link string is usually very long. - logger.debug("Skipping link: %s: %s", detail, link) - self._logged_links.add(entry) - - def get_install_candidate( - self, link_evaluator: LinkEvaluator, link: Link - ) -> Optional[InstallationCandidate]: - """ - If the link is a candidate for install, convert it to an - InstallationCandidate and return it. Otherwise, return None. - """ - result, detail = link_evaluator.evaluate_link(link) - if result != LinkType.candidate: - self._log_skipped_link(link, result, detail) - return None - - return InstallationCandidate( - name=link_evaluator.project_name, - link=link, - version=detail, - ) - - def evaluate_links( - self, link_evaluator: LinkEvaluator, links: Iterable[Link] - ) -> List[InstallationCandidate]: - """ - Convert links that are candidates to InstallationCandidate objects. - """ - candidates = [] - for link in self._sort_links(links): - candidate = self.get_install_candidate(link_evaluator, link) - if candidate is not None: - candidates.append(candidate) - - return candidates - - def process_project_url( - self, project_url: Link, link_evaluator: LinkEvaluator - ) -> List[InstallationCandidate]: - logger.debug( - "Fetching project page and analyzing links: %s", - project_url, - ) - index_response = self._link_collector.fetch_response(project_url) - if index_response is None: - return [] - - page_links = list(parse_links(index_response)) - - with indent_log(): - package_links = self.evaluate_links( - link_evaluator, - links=page_links, - ) - - return package_links - - @functools.lru_cache(maxsize=None) - def find_all_candidates(self, project_name: str) -> List[InstallationCandidate]: - """Find all available InstallationCandidate for project_name - - This checks index_urls and find_links. - All versions found are returned as an InstallationCandidate list. - - See LinkEvaluator.evaluate_link() for details on which files - are accepted. - """ - link_evaluator = self.make_link_evaluator(project_name) - - collected_sources = self._link_collector.collect_sources( - project_name=project_name, - candidates_from_page=functools.partial( - self.process_project_url, - link_evaluator=link_evaluator, - ), - ) - - page_candidates_it = itertools.chain.from_iterable( - source.page_candidates() - for sources in collected_sources - for source in sources - if source is not None - ) - page_candidates = list(page_candidates_it) - - file_links_it = itertools.chain.from_iterable( - source.file_links() - for sources in collected_sources - for source in sources - if source is not None - ) - file_candidates = self.evaluate_links( - link_evaluator, - sorted(file_links_it, reverse=True), - ) - - if logger.isEnabledFor(logging.DEBUG) and file_candidates: - paths = [] - for candidate in file_candidates: - assert candidate.link.url # we need to have a URL - try: - paths.append(candidate.link.file_path) - except Exception: - paths.append(candidate.link.url) # it's not a local file - - logger.debug("Local files found: %s", ", ".join(paths)) - - # This is an intentional priority ordering - return file_candidates + page_candidates - - def make_candidate_evaluator( - self, - project_name: str, - specifier: Optional[specifiers.BaseSpecifier] = None, - hashes: Optional[Hashes] = None, - ) -> CandidateEvaluator: - """Create a CandidateEvaluator object to use.""" - candidate_prefs = self._candidate_prefs - return CandidateEvaluator.create( - project_name=project_name, - target_python=self._target_python, - prefer_binary=candidate_prefs.prefer_binary, - allow_all_prereleases=candidate_prefs.allow_all_prereleases, - specifier=specifier, - hashes=hashes, - ) - - @functools.lru_cache(maxsize=None) - def find_best_candidate( - self, - project_name: str, - specifier: Optional[specifiers.BaseSpecifier] = None, - hashes: Optional[Hashes] = None, - ) -> BestCandidateResult: - """Find matches for the given project and specifier. - - :param specifier: An optional object implementing `filter` - (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable - versions. - - :return: A `BestCandidateResult` instance. - """ - candidates = self.find_all_candidates(project_name) - candidate_evaluator = self.make_candidate_evaluator( - project_name=project_name, - specifier=specifier, - hashes=hashes, - ) - return candidate_evaluator.compute_best_candidate(candidates) - - def find_requirement( - self, req: InstallRequirement, upgrade: bool - ) -> Optional[InstallationCandidate]: - """Try to find a Link matching req - - Expects req, an InstallRequirement and upgrade, a boolean - Returns a InstallationCandidate if found, - Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise - """ - hashes = req.hashes(trust_internet=False) - best_candidate_result = self.find_best_candidate( - req.name, - specifier=req.specifier, - hashes=hashes, - ) - best_candidate = best_candidate_result.best_candidate - - installed_version: Optional[_BaseVersion] = None - if req.satisfied_by is not None: - installed_version = req.satisfied_by.version - - def _format_versions(cand_iter: Iterable[InstallationCandidate]) -> str: - # This repeated parse_version and str() conversion is needed to - # handle different vendoring sources from pip and pkg_resources. - # If we stop using the pkg_resources provided specifier and start - # using our own, we can drop the cast to str(). - return ( - ", ".join( - sorted( - {str(c.version) for c in cand_iter}, - key=parse_version, - ) - ) - or "none" - ) - - if installed_version is None and best_candidate is None: - logger.critical( - "Could not find a version that satisfies the requirement %s " - "(from versions: %s)", - req, - _format_versions(best_candidate_result.iter_all()), - ) - - raise DistributionNotFound(f"No matching distribution found for {req}") - - def _should_install_candidate( - candidate: Optional[InstallationCandidate], - ) -> "TypeGuard[InstallationCandidate]": - if installed_version is None: - return True - if best_candidate is None: - return False - return best_candidate.version > installed_version - - if not upgrade and installed_version is not None: - if _should_install_candidate(best_candidate): - logger.debug( - "Existing installed version (%s) satisfies requirement " - "(most up-to-date version is %s)", - installed_version, - best_candidate.version, - ) - else: - logger.debug( - "Existing installed version (%s) is most up-to-date and " - "satisfies requirement", - installed_version, - ) - return None - - if _should_install_candidate(best_candidate): - logger.debug( - "Using version %s (newest of versions: %s)", - best_candidate.version, - _format_versions(best_candidate_result.iter_applicable()), - ) - return best_candidate - - # We have an existing version, and its the best version - logger.debug( - "Installed version (%s) is most up-to-date (past versions: %s)", - installed_version, - _format_versions(best_candidate_result.iter_applicable()), - ) - raise BestVersionAlreadyInstalled - - -def _find_name_version_sep(fragment: str, canonical_name: str) -> int: - """Find the separator's index based on the package's canonical name. - - :param fragment: A + filename "fragment" (stem) or - egg fragment. - :param canonical_name: The package's canonical name. - - This function is needed since the canonicalized name does not necessarily - have the same length as the egg info's name part. An example:: - - >>> fragment = 'foo__bar-1.0' - >>> canonical_name = 'foo-bar' - >>> _find_name_version_sep(fragment, canonical_name) - 8 - """ - # Project name and version must be separated by one single dash. Find all - # occurrences of dashes; if the string in front of it matches the canonical - # name, this is the one separating the name and version parts. - for i, c in enumerate(fragment): - if c != "-": - continue - if canonicalize_name(fragment[:i]) == canonical_name: - return i - raise ValueError(f"{fragment} does not match {canonical_name}") - - -def _extract_version_from_fragment(fragment: str, canonical_name: str) -> Optional[str]: - """Parse the version string from a + filename - "fragment" (stem) or egg fragment. - - :param fragment: The string to parse. E.g. foo-2.1 - :param canonical_name: The canonicalized name of the package this - belongs to. - """ - try: - version_start = _find_name_version_sep(fragment, canonical_name) + 1 - except ValueError: - return None - version = fragment[version_start:] - if not version: - return None - return version diff --git a/venv/lib/python3.10/site-packages/pip/_internal/index/sources.py b/venv/lib/python3.10/site-packages/pip/_internal/index/sources.py deleted file mode 100644 index f4626d7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/index/sources.py +++ /dev/null @@ -1,285 +0,0 @@ -import logging -import mimetypes -import os -from collections import defaultdict -from typing import Callable, Dict, Iterable, List, Optional, Tuple - -from pip._vendor.packaging.utils import ( - InvalidSdistFilename, - InvalidVersion, - InvalidWheelFilename, - canonicalize_name, - parse_sdist_filename, - parse_wheel_filename, -) - -from pip._internal.models.candidate import InstallationCandidate -from pip._internal.models.link import Link -from pip._internal.utils.urls import path_to_url, url_to_path -from pip._internal.vcs import is_url - -logger = logging.getLogger(__name__) - -FoundCandidates = Iterable[InstallationCandidate] -FoundLinks = Iterable[Link] -CandidatesFromPage = Callable[[Link], Iterable[InstallationCandidate]] -PageValidator = Callable[[Link], bool] - - -class LinkSource: - @property - def link(self) -> Optional[Link]: - """Returns the underlying link, if there's one.""" - raise NotImplementedError() - - def page_candidates(self) -> FoundCandidates: - """Candidates found by parsing an archive listing HTML file.""" - raise NotImplementedError() - - def file_links(self) -> FoundLinks: - """Links found by specifying archives directly.""" - raise NotImplementedError() - - -def _is_html_file(file_url: str) -> bool: - return mimetypes.guess_type(file_url, strict=False)[0] == "text/html" - - -class _FlatDirectoryToUrls: - """Scans directory and caches results""" - - def __init__(self, path: str) -> None: - self._path = path - self._page_candidates: List[str] = [] - self._project_name_to_urls: Dict[str, List[str]] = defaultdict(list) - self._scanned_directory = False - - def _scan_directory(self) -> None: - """Scans directory once and populates both page_candidates - and project_name_to_urls at the same time - """ - for entry in os.scandir(self._path): - url = path_to_url(entry.path) - if _is_html_file(url): - self._page_candidates.append(url) - continue - - # File must have a valid wheel or sdist name, - # otherwise not worth considering as a package - try: - project_filename = parse_wheel_filename(entry.name)[0] - except (InvalidWheelFilename, InvalidVersion): - try: - project_filename = parse_sdist_filename(entry.name)[0] - except (InvalidSdistFilename, InvalidVersion): - continue - - self._project_name_to_urls[project_filename].append(url) - self._scanned_directory = True - - @property - def page_candidates(self) -> List[str]: - if not self._scanned_directory: - self._scan_directory() - - return self._page_candidates - - @property - def project_name_to_urls(self) -> Dict[str, List[str]]: - if not self._scanned_directory: - self._scan_directory() - - return self._project_name_to_urls - - -class _FlatDirectorySource(LinkSource): - """Link source specified by ``--find-links=``. - - This looks the content of the directory, and returns: - - * ``page_candidates``: Links listed on each HTML file in the directory. - * ``file_candidates``: Archives in the directory. - """ - - _paths_to_urls: Dict[str, _FlatDirectoryToUrls] = {} - - def __init__( - self, - candidates_from_page: CandidatesFromPage, - path: str, - project_name: str, - ) -> None: - self._candidates_from_page = candidates_from_page - self._project_name = canonicalize_name(project_name) - - # Get existing instance of _FlatDirectoryToUrls if it exists - if path in self._paths_to_urls: - self._path_to_urls = self._paths_to_urls[path] - else: - self._path_to_urls = _FlatDirectoryToUrls(path=path) - self._paths_to_urls[path] = self._path_to_urls - - @property - def link(self) -> Optional[Link]: - return None - - def page_candidates(self) -> FoundCandidates: - for url in self._path_to_urls.page_candidates: - yield from self._candidates_from_page(Link(url)) - - def file_links(self) -> FoundLinks: - for url in self._path_to_urls.project_name_to_urls[self._project_name]: - yield Link(url) - - -class _LocalFileSource(LinkSource): - """``--find-links=`` or ``--[extra-]index-url=``. - - If a URL is supplied, it must be a ``file:`` URL. If a path is supplied to - the option, it is converted to a URL first. This returns: - - * ``page_candidates``: Links listed on an HTML file. - * ``file_candidates``: The non-HTML file. - """ - - def __init__( - self, - candidates_from_page: CandidatesFromPage, - link: Link, - ) -> None: - self._candidates_from_page = candidates_from_page - self._link = link - - @property - def link(self) -> Optional[Link]: - return self._link - - def page_candidates(self) -> FoundCandidates: - if not _is_html_file(self._link.url): - return - yield from self._candidates_from_page(self._link) - - def file_links(self) -> FoundLinks: - if _is_html_file(self._link.url): - return - yield self._link - - -class _RemoteFileSource(LinkSource): - """``--find-links=`` or ``--[extra-]index-url=``. - - This returns: - - * ``page_candidates``: Links listed on an HTML file. - * ``file_candidates``: The non-HTML file. - """ - - def __init__( - self, - candidates_from_page: CandidatesFromPage, - page_validator: PageValidator, - link: Link, - ) -> None: - self._candidates_from_page = candidates_from_page - self._page_validator = page_validator - self._link = link - - @property - def link(self) -> Optional[Link]: - return self._link - - def page_candidates(self) -> FoundCandidates: - if not self._page_validator(self._link): - return - yield from self._candidates_from_page(self._link) - - def file_links(self) -> FoundLinks: - yield self._link - - -class _IndexDirectorySource(LinkSource): - """``--[extra-]index-url=``. - - This is treated like a remote URL; ``candidates_from_page`` contains logic - for this by appending ``index.html`` to the link. - """ - - def __init__( - self, - candidates_from_page: CandidatesFromPage, - link: Link, - ) -> None: - self._candidates_from_page = candidates_from_page - self._link = link - - @property - def link(self) -> Optional[Link]: - return self._link - - def page_candidates(self) -> FoundCandidates: - yield from self._candidates_from_page(self._link) - - def file_links(self) -> FoundLinks: - return () - - -def build_source( - location: str, - *, - candidates_from_page: CandidatesFromPage, - page_validator: PageValidator, - expand_dir: bool, - cache_link_parsing: bool, - project_name: str, -) -> Tuple[Optional[str], Optional[LinkSource]]: - path: Optional[str] = None - url: Optional[str] = None - if os.path.exists(location): # Is a local path. - url = path_to_url(location) - path = location - elif location.startswith("file:"): # A file: URL. - url = location - path = url_to_path(location) - elif is_url(location): - url = location - - if url is None: - msg = ( - "Location '%s' is ignored: " - "it is either a non-existing path or lacks a specific scheme." - ) - logger.warning(msg, location) - return (None, None) - - if path is None: - source: LinkSource = _RemoteFileSource( - candidates_from_page=candidates_from_page, - page_validator=page_validator, - link=Link(url, cache_link_parsing=cache_link_parsing), - ) - return (url, source) - - if os.path.isdir(path): - if expand_dir: - source = _FlatDirectorySource( - candidates_from_page=candidates_from_page, - path=path, - project_name=project_name, - ) - else: - source = _IndexDirectorySource( - candidates_from_page=candidates_from_page, - link=Link(url, cache_link_parsing=cache_link_parsing), - ) - return (url, source) - elif os.path.isfile(path): - source = _LocalFileSource( - candidates_from_page=candidates_from_page, - link=Link(url, cache_link_parsing=cache_link_parsing), - ) - return (url, source) - logger.warning( - "Location '%s' is ignored: it is neither a file nor a directory.", - location, - ) - return (url, None) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py deleted file mode 100644 index d54bc63..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py +++ /dev/null @@ -1,467 +0,0 @@ -import functools -import logging -import os -import pathlib -import sys -import sysconfig -from typing import Any, Dict, Generator, Optional, Tuple - -from pip._internal.models.scheme import SCHEME_KEYS, Scheme -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.deprecation import deprecated -from pip._internal.utils.virtualenv import running_under_virtualenv - -from . import _sysconfig -from .base import ( - USER_CACHE_DIR, - get_major_minor_version, - get_src_prefix, - is_osx_framework, - site_packages, - user_site, -) - -__all__ = [ - "USER_CACHE_DIR", - "get_bin_prefix", - "get_bin_user", - "get_major_minor_version", - "get_platlib", - "get_purelib", - "get_scheme", - "get_src_prefix", - "site_packages", - "user_site", -] - - -logger = logging.getLogger(__name__) - - -_PLATLIBDIR: str = getattr(sys, "platlibdir", "lib") - -_USE_SYSCONFIG_DEFAULT = sys.version_info >= (3, 10) - - -def _should_use_sysconfig() -> bool: - """This function determines the value of _USE_SYSCONFIG. - - By default, pip uses sysconfig on Python 3.10+. - But Python distributors can override this decision by setting: - sysconfig._PIP_USE_SYSCONFIG = True / False - Rationale in https://github.com/pypa/pip/issues/10647 - - This is a function for testability, but should be constant during any one - run. - """ - return bool(getattr(sysconfig, "_PIP_USE_SYSCONFIG", _USE_SYSCONFIG_DEFAULT)) - - -_USE_SYSCONFIG = _should_use_sysconfig() - -if not _USE_SYSCONFIG: - # Import distutils lazily to avoid deprecation warnings, - # but import it soon enough that it is in memory and available during - # a pip reinstall. - from . import _distutils - -# Be noisy about incompatibilities if this platforms "should" be using -# sysconfig, but is explicitly opting out and using distutils instead. -if _USE_SYSCONFIG_DEFAULT and not _USE_SYSCONFIG: - _MISMATCH_LEVEL = logging.WARNING -else: - _MISMATCH_LEVEL = logging.DEBUG - - -def _looks_like_bpo_44860() -> bool: - """The resolution to bpo-44860 will change this incorrect platlib. - - See . - """ - from distutils.command.install import INSTALL_SCHEMES - - try: - unix_user_platlib = INSTALL_SCHEMES["unix_user"]["platlib"] - except KeyError: - return False - return unix_user_platlib == "$usersite" - - -def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) -> bool: - platlib = scheme["platlib"] - if "/$platlibdir/" in platlib: - platlib = platlib.replace("/$platlibdir/", f"/{_PLATLIBDIR}/") - if "/lib64/" not in platlib: - return False - unpatched = platlib.replace("/lib64/", "/lib/") - return unpatched.replace("$platbase/", "$base/") == scheme["purelib"] - - -@functools.lru_cache(maxsize=None) -def _looks_like_red_hat_lib() -> bool: - """Red Hat patches platlib in unix_prefix and unix_home, but not purelib. - - This is the only way I can see to tell a Red Hat-patched Python. - """ - from distutils.command.install import INSTALL_SCHEMES - - return all( - k in INSTALL_SCHEMES - and _looks_like_red_hat_patched_platlib_purelib(INSTALL_SCHEMES[k]) - for k in ("unix_prefix", "unix_home") - ) - - -@functools.lru_cache(maxsize=None) -def _looks_like_debian_scheme() -> bool: - """Debian adds two additional schemes.""" - from distutils.command.install import INSTALL_SCHEMES - - return "deb_system" in INSTALL_SCHEMES and "unix_local" in INSTALL_SCHEMES - - -@functools.lru_cache(maxsize=None) -def _looks_like_red_hat_scheme() -> bool: - """Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. - - Red Hat's ``00251-change-user-install-location.patch`` changes the install - command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is - (fortunately?) done quite unconditionally, so we create a default command - object without any configuration to detect this. - """ - from distutils.command.install import install - from distutils.dist import Distribution - - cmd: Any = install(Distribution()) - cmd.finalize_options() - return ( - cmd.exec_prefix == f"{os.path.normpath(sys.exec_prefix)}/local" - and cmd.prefix == f"{os.path.normpath(sys.prefix)}/local" - ) - - -@functools.lru_cache(maxsize=None) -def _looks_like_slackware_scheme() -> bool: - """Slackware patches sysconfig but fails to patch distutils and site. - - Slackware changes sysconfig's user scheme to use ``"lib64"`` for the lib - path, but does not do the same to the site module. - """ - if user_site is None: # User-site not available. - return False - try: - paths = sysconfig.get_paths(scheme="posix_user", expand=False) - except KeyError: # User-site not available. - return False - return "/lib64/" in paths["purelib"] and "/lib64/" not in user_site - - -@functools.lru_cache(maxsize=None) -def _looks_like_msys2_mingw_scheme() -> bool: - """MSYS2 patches distutils and sysconfig to use a UNIX-like scheme. - - However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is - likely going to be included in their 3.10 release, so we ignore the warning. - See msys2/MINGW-packages#9319. - - MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, - and is missing the final ``"site-packages"``. - """ - paths = sysconfig.get_paths("nt", expand=False) - return all( - "Lib" not in p and "lib" in p and not p.endswith("site-packages") - for p in (paths[key] for key in ("platlib", "purelib")) - ) - - -def _fix_abiflags(parts: Tuple[str]) -> Generator[str, None, None]: - ldversion = sysconfig.get_config_var("LDVERSION") - abiflags = getattr(sys, "abiflags", None) - - # LDVERSION does not end with sys.abiflags. Just return the path unchanged. - if not ldversion or not abiflags or not ldversion.endswith(abiflags): - yield from parts - return - - # Strip sys.abiflags from LDVERSION-based path components. - for part in parts: - if part.endswith(ldversion): - part = part[: (0 - len(abiflags))] - yield part - - -@functools.lru_cache(maxsize=None) -def _warn_mismatched(old: pathlib.Path, new: pathlib.Path, *, key: str) -> None: - issue_url = "https://github.com/pypa/pip/issues/10151" - message = ( - "Value for %s does not match. Please report this to <%s>" - "\ndistutils: %s" - "\nsysconfig: %s" - ) - logger.log(_MISMATCH_LEVEL, message, key, issue_url, old, new) - - -def _warn_if_mismatch(old: pathlib.Path, new: pathlib.Path, *, key: str) -> bool: - if old == new: - return False - _warn_mismatched(old, new, key=key) - return True - - -@functools.lru_cache(maxsize=None) -def _log_context( - *, - user: bool = False, - home: Optional[str] = None, - root: Optional[str] = None, - prefix: Optional[str] = None, -) -> None: - parts = [ - "Additional context:", - "user = %r", - "home = %r", - "root = %r", - "prefix = %r", - ] - - logger.log(_MISMATCH_LEVEL, "\n".join(parts), user, home, root, prefix) - - -def get_scheme( - dist_name: str, - user: bool = False, - home: Optional[str] = None, - root: Optional[str] = None, - isolated: bool = False, - prefix: Optional[str] = None, -) -> Scheme: - new = _sysconfig.get_scheme( - dist_name, - user=user, - home=home, - root=root, - isolated=isolated, - prefix=prefix, - ) - if _USE_SYSCONFIG: - return new - - old = _distutils.get_scheme( - dist_name, - user=user, - home=home, - root=root, - isolated=isolated, - prefix=prefix, - ) - - warning_contexts = [] - for k in SCHEME_KEYS: - old_v = pathlib.Path(getattr(old, k)) - new_v = pathlib.Path(getattr(new, k)) - - if old_v == new_v: - continue - - # distutils incorrectly put PyPy packages under ``site-packages/python`` - # in the ``posix_home`` scheme, but PyPy devs said they expect the - # directory name to be ``pypy`` instead. So we treat this as a bug fix - # and not warn about it. See bpo-43307 and python/cpython#24628. - skip_pypy_special_case = ( - sys.implementation.name == "pypy" - and home is not None - and k in ("platlib", "purelib") - and old_v.parent == new_v.parent - and old_v.name.startswith("python") - and new_v.name.startswith("pypy") - ) - if skip_pypy_special_case: - continue - - # sysconfig's ``osx_framework_user`` does not include ``pythonX.Y`` in - # the ``include`` value, but distutils's ``headers`` does. We'll let - # CPython decide whether this is a bug or feature. See bpo-43948. - skip_osx_framework_user_special_case = ( - user - and is_osx_framework() - and k == "headers" - and old_v.parent.parent == new_v.parent - and old_v.parent.name.startswith("python") - ) - if skip_osx_framework_user_special_case: - continue - - # On Red Hat and derived Linux distributions, distutils is patched to - # use "lib64" instead of "lib" for platlib. - if k == "platlib" and _looks_like_red_hat_lib(): - continue - - # On Python 3.9+, sysconfig's posix_user scheme sets platlib against - # sys.platlibdir, but distutils's unix_user incorrectly coninutes - # using the same $usersite for both platlib and purelib. This creates a - # mismatch when sys.platlibdir is not "lib". - skip_bpo_44860 = ( - user - and k == "platlib" - and not WINDOWS - and sys.version_info >= (3, 9) - and _PLATLIBDIR != "lib" - and _looks_like_bpo_44860() - ) - if skip_bpo_44860: - continue - - # Slackware incorrectly patches posix_user to use lib64 instead of lib, - # but not usersite to match the location. - skip_slackware_user_scheme = ( - user - and k in ("platlib", "purelib") - and not WINDOWS - and _looks_like_slackware_scheme() - ) - if skip_slackware_user_scheme: - continue - - # Both Debian and Red Hat patch Python to place the system site under - # /usr/local instead of /usr. Debian also places lib in dist-packages - # instead of site-packages, but the /usr/local check should cover it. - skip_linux_system_special_case = ( - not (user or home or prefix or running_under_virtualenv()) - and old_v.parts[1:3] == ("usr", "local") - and len(new_v.parts) > 1 - and new_v.parts[1] == "usr" - and (len(new_v.parts) < 3 or new_v.parts[2] != "local") - and (_looks_like_red_hat_scheme() or _looks_like_debian_scheme()) - ) - if skip_linux_system_special_case: - continue - - # On Python 3.7 and earlier, sysconfig does not include sys.abiflags in - # the "pythonX.Y" part of the path, but distutils does. - skip_sysconfig_abiflag_bug = ( - sys.version_info < (3, 8) - and not WINDOWS - and k in ("headers", "platlib", "purelib") - and tuple(_fix_abiflags(old_v.parts)) == new_v.parts - ) - if skip_sysconfig_abiflag_bug: - continue - - # MSYS2 MINGW's sysconfig patch does not include the "site-packages" - # part of the path. This is incorrect and will be fixed in MSYS. - skip_msys2_mingw_bug = ( - WINDOWS and k in ("platlib", "purelib") and _looks_like_msys2_mingw_scheme() - ) - if skip_msys2_mingw_bug: - continue - - # CPython's POSIX install script invokes pip (via ensurepip) against the - # interpreter located in the source tree, not the install site. This - # triggers special logic in sysconfig that's not present in distutils. - # https://github.com/python/cpython/blob/8c21941ddaf/Lib/sysconfig.py#L178-L194 - skip_cpython_build = ( - sysconfig.is_python_build(check_home=True) - and not WINDOWS - and k in ("headers", "include", "platinclude") - ) - if skip_cpython_build: - continue - - warning_contexts.append((old_v, new_v, f"scheme.{k}")) - - if not warning_contexts: - return old - - # Check if this path mismatch is caused by distutils config files. Those - # files will no longer work once we switch to sysconfig, so this raises a - # deprecation message for them. - default_old = _distutils.distutils_scheme( - dist_name, - user, - home, - root, - isolated, - prefix, - ignore_config_files=True, - ) - if any(default_old[k] != getattr(old, k) for k in SCHEME_KEYS): - deprecated( - reason=( - "Configuring installation scheme with distutils config files " - "is deprecated and will no longer work in the near future. If you " - "are using a Homebrew or Linuxbrew Python, please see discussion " - "at https://github.com/Homebrew/homebrew-core/issues/76621" - ), - replacement=None, - gone_in=None, - ) - return old - - # Post warnings about this mismatch so user can report them back. - for old_v, new_v, key in warning_contexts: - _warn_mismatched(old_v, new_v, key=key) - _log_context(user=user, home=home, root=root, prefix=prefix) - - return old - - -def get_bin_prefix() -> str: - new = _sysconfig.get_bin_prefix() - if _USE_SYSCONFIG: - return new - - old = _distutils.get_bin_prefix() - if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="bin_prefix"): - _log_context() - return old - - -def get_bin_user() -> str: - return _sysconfig.get_scheme("", user=True).scripts - - -def _looks_like_deb_system_dist_packages(value: str) -> bool: - """Check if the value is Debian's APT-controlled dist-packages. - - Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the - default package path controlled by APT, but does not patch ``sysconfig`` to - do the same. This is similar to the bug worked around in ``get_scheme()``, - but here the default is ``deb_system`` instead of ``unix_local``. Ultimately - we can't do anything about this Debian bug, and this detection allows us to - skip the warning when needed. - """ - if not _looks_like_debian_scheme(): - return False - if value == "/usr/lib/python3/dist-packages": - return True - return False - - -def get_purelib() -> str: - """Return the default pure-Python lib location.""" - new = _sysconfig.get_purelib() - if _USE_SYSCONFIG: - return new - - old = _distutils.get_purelib() - if _looks_like_deb_system_dist_packages(old): - return old - if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="purelib"): - _log_context() - return old - - -def get_platlib() -> str: - """Return the default platform-shared lib location.""" - new = _sysconfig.get_platlib() - if _USE_SYSCONFIG: - return new - - from . import _distutils - - old = _distutils.get_platlib() - if _looks_like_deb_system_dist_packages(old): - return old - if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="platlib"): - _log_context() - return old diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 2ec7c81bec4f56ff79d90a2a260ed79b88189825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11031 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 Szg7M;_i}D%+{lfM=l&l77*R_A diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc deleted file mode 100644 index aec33628e261cce8d56560f5c75f4b255d1e1648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4596 zcma)9&2t>Z6`!7+o&D0TzO4_-W{^W*E7mT76d{UnC53D-aYPCk2uo2@qwQX4cN7x#YxwQw|}JKz^@hwU%AD$ZSo|>wev@U%!6u z_uj_!dey*lkGH@LcDd=2e1)aIv$f>1wbPE_aqST?@{KE1eb46TBW= z2rqUnGD8%P9}~_A>pWg*R0{Z^<*U5GCqHF;O04o}af#1}IkCEA@Y&IK4rB8p`W)y5 zF(X#RYR_CUdQ*InFWoD3e(-?2|3}h-SnM_UGCzN>*m(jnA&;-{3-_$f4@bR={4w;N z9Q7RjIC@Xe<3}p-g1}M9 zpx3+Xh@{(@bh(di;s?sz^}4q|r@P*4vaIxC9EM)RLDsfjeEHh1uerav_SP10Mq)l= zSz|{eZvP`1?ut;5tT%6L zZoK*?iCvU~DDtBncMx$Q-F;ss11}KK{^xKs0}~c#v(Vd%r5pMY+I=Av#9jw)*5AR1 zaPy60(QX~Tzb#1Z( z9@={fF9pSmc-7y@?HM-%BV>mqxKklDe0Eq)Eji7t9hR1P@rsd_(((~ItfaR3+0afa z1j?BY}l*zZ#qI~-mgEvz4iNPn+;wQ!*tt0jUOHJv6=Yuzu znh)_Ry!!_}ixbcA+6mh?f$So` z(DRmcd!9H;2JFfB(vopFIg(LGC;1Yu{vLsQ0v+}0I>Kpr_@kgHx1h z--n%6{~)Ve*%6Vr+m~0b(kbXT=KIUW@Y2}wuF@87T_F*Hy4o7A*pxK=7C^x6N`Z(T z7Rlf*49iX)*e?u=bd(n|13{l7pqtfBDS|CCEAIz(18FF8s)Om zuJ8a)N={3dQ=1V%G}K-{F*5Y%3y%gm;Ge#9TdEIWvIb^ukS zJDwyo%&fiGkFrU^zHW}lZoIuGYqZbOcypLoL;L9*ISal-{x&2fY&lQUr?8zD_(S2w z8km(V&~OQ|y(E$OCOHe&0~ogleGY@lCrLy@i#XkfOiaEb$>Zb&Y6vE?s_F-R!ll12 zvXZy0$jh2ja)u^ooyO|Ob2O$^B;?I4mqRwiN5*(oq}3`b;J_L4GduTztZ-W#WOd@X zQS9oyw9n?vDycDb-!l24OBhug%|yLyTCB>bHQ5AyWk%EtD}Q5tW7!RiRN0EPqB*vn zq34)oHpd#JIc8&}jWuOZHdfNFinsiAxxB)bnPtlB*l3(WKpUmet5eAH=p+cz6p)-2 zQY$SU*@t$*Qk%0S11$gvZ9%t|Zi}ct?2n2F;F9-q+?qz7mqg+uyTVz`kGP6NFQriZ zIMRRt@F1=q^#_Rqk3^K?E>+99h0(Env?LyP2cd}I2EZkfadNR1vgdxzm2OJ@OcQxwzZfO~T-k7ic^HPK=m( z->Me0t~J&A>D0ZhwIGOc;-02Q*h1ilWG#KM51@o*xjv-mWe4ubwK&3Y;3@G(k$XCi z{O9bBnyQb`9amqt+1bbd7^T>Or$o?2HxUz7*XgmIq@i zE1dW2MpUw_JJdS5JVKS{cXyo_=aR5hzTAh_9%?@+)<}GAfRQ~YBg5jMijE4YCitNC6VH#>Hm7BZUiR6kb!-KK*o^F1VihnP_uAy4QD zxRtS-(M9RtK6}Ui^?X#Pd-J>8k($>CuL+rV4c@2KE#(V z(ae|8H1oKY6GWH32hu3e9|ol=f%qtDz*Yp9GfO7GWc>SD-oRiN@Ax^*?;1KJhV#6h z6!xqWc4#C;`IsKDQ`Ds=<|yx%DDSHaV~$Cjlx?B_qHh%Nl6n70Rel09a`PjYs#(~){ux82 zfflani>}{8F;v8yGYU|#Bz4ZI(e;k%h(D1uy16Qozs2W~TgunL#YVT}8z8<#>VOG1Lhx6*A@k=Cq zs#izVNQp`hlpOgr{RX15`k8N zdtV-|J+F6V?n}u5m6ehbr7TlZp@uFbuXWC&l5CAD$ySIWDp0LFnsi8J%MZ@bDw0BQ zGfBRcUHq;I_y1?+6^=#tk=HU6T1Eb-90xkp>!8)Hr7v4w z%Xhj+`3m$N1mY?c@ai5K%P?zGY>G;dZ_9-;iV7-8=!XKt)Rb8@&0=0=p#91$+h5}Q tt!bLy*ah>ywq^bY{I6}Bc;=VYO7&mnYp3(AuO2zKRQ-43Qe%3?`X9P(@k{^! diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc deleted file mode 100644 index dbc38c1d683260f979cc2c94d66f415885e25c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5995 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 Bmv#UE diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py b/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py deleted file mode 100644 index 0e18c6e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py +++ /dev/null @@ -1,172 +0,0 @@ -"""Locations where we look for configs, install stuff, etc""" - -# The following comment should be removed at some point in the future. -# mypy: strict-optional=False - -# If pip's going to use distutils, it should not be using the copy that setuptools -# might have injected into the environment. This is done by removing the injected -# shim, if it's injected. -# -# See https://github.com/pypa/pip/issues/8761 for the original discussion and -# rationale for why this is done within pip. -try: - __import__("_distutils_hack").remove_shim() -except (ImportError, AttributeError): - pass - -import logging -import os -import sys -from distutils.cmd import Command as DistutilsCommand -from distutils.command.install import SCHEME_KEYS -from distutils.command.install import install as distutils_install_command -from distutils.sysconfig import get_python_lib -from typing import Dict, List, Optional, Union, cast - -from pip._internal.models.scheme import Scheme -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.virtualenv import running_under_virtualenv - -from .base import get_major_minor_version - -logger = logging.getLogger(__name__) - - -def distutils_scheme( - dist_name: str, - user: bool = False, - home: Optional[str] = None, - root: Optional[str] = None, - isolated: bool = False, - prefix: Optional[str] = None, - *, - ignore_config_files: bool = False, -) -> Dict[str, str]: - """ - Return a distutils install scheme - """ - from distutils.dist import Distribution - - dist_args: Dict[str, Union[str, List[str]]] = {"name": dist_name} - if isolated: - dist_args["script_args"] = ["--no-user-cfg"] - - d = Distribution(dist_args) - if not ignore_config_files: - try: - d.parse_config_files() - except UnicodeDecodeError: - paths = d.find_config_files() - logger.warning( - "Ignore distutils configs in %s due to encoding errors.", - ", ".join(os.path.basename(p) for p in paths), - ) - obj: Optional[DistutilsCommand] = None - obj = d.get_command_obj("install", create=True) - assert obj is not None - i = cast(distutils_install_command, obj) - # NOTE: setting user or home has the side-effect of creating the home dir - # or user base for installations during finalize_options() - # ideally, we'd prefer a scheme class that has no side-effects. - assert not (user and prefix), f"user={user} prefix={prefix}" - assert not (home and prefix), f"home={home} prefix={prefix}" - i.user = user or i.user - if user or home: - i.prefix = "" - i.prefix = prefix or i.prefix - i.home = home or i.home - i.root = root or i.root - i.finalize_options() - - scheme = {} - for key in SCHEME_KEYS: - scheme[key] = getattr(i, "install_" + key) - - # install_lib specified in setup.cfg should install *everything* - # into there (i.e. it takes precedence over both purelib and - # platlib). Note, i.install_lib is *always* set after - # finalize_options(); we only want to override here if the user - # has explicitly requested it hence going back to the config - if "install_lib" in d.get_option_dict("install"): - scheme.update({"purelib": i.install_lib, "platlib": i.install_lib}) - - if running_under_virtualenv(): - if home: - prefix = home - elif user: - prefix = i.install_userbase - else: - prefix = i.prefix - scheme["headers"] = os.path.join( - prefix, - "include", - "site", - f"python{get_major_minor_version()}", - dist_name, - ) - - if root is not None: - path_no_drive = os.path.splitdrive(os.path.abspath(scheme["headers"]))[1] - scheme["headers"] = os.path.join(root, path_no_drive[1:]) - - return scheme - - -def get_scheme( - dist_name: str, - user: bool = False, - home: Optional[str] = None, - root: Optional[str] = None, - isolated: bool = False, - prefix: Optional[str] = None, -) -> Scheme: - """ - Get the "scheme" corresponding to the input parameters. The distutils - documentation provides the context for the available schemes: - https://docs.python.org/3/install/index.html#alternate-installation - - :param dist_name: the name of the package to retrieve the scheme for, used - in the headers scheme path - :param user: indicates to use the "user" scheme - :param home: indicates to use the "home" scheme and provides the base - directory for the same - :param root: root under which other directories are re-based - :param isolated: equivalent to --no-user-cfg, i.e. do not consider - ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for - scheme paths - :param prefix: indicates to use the "prefix" scheme and provides the - base directory for the same - """ - scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix) - return Scheme( - platlib=scheme["platlib"], - purelib=scheme["purelib"], - headers=scheme["headers"], - scripts=scheme["scripts"], - data=scheme["data"], - ) - - -def get_bin_prefix() -> str: - # XXX: In old virtualenv versions, sys.prefix can contain '..' components, - # so we need to call normpath to eliminate them. - prefix = os.path.normpath(sys.prefix) - if WINDOWS: - bin_py = os.path.join(prefix, "Scripts") - # buildout uses 'bin' on Windows too? - if not os.path.exists(bin_py): - bin_py = os.path.join(prefix, "bin") - return bin_py - # Forcing to use /usr/local/bin for standard macOS framework installs - # Also log to ~/Library/Logs/ for use with the Console.app log viewer - if sys.platform[:6] == "darwin" and prefix[:16] == "/System/Library/": - return "/usr/local/bin" - return os.path.join(prefix, "bin") - - -def get_purelib() -> str: - return get_python_lib(plat_specific=False) - - -def get_platlib() -> str: - return get_python_lib(plat_specific=True) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py b/venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py deleted file mode 100644 index 97aef1f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py +++ /dev/null @@ -1,213 +0,0 @@ -import logging -import os -import sys -import sysconfig -import typing - -from pip._internal.exceptions import InvalidSchemeCombination, UserInstallationInvalid -from pip._internal.models.scheme import SCHEME_KEYS, Scheme -from pip._internal.utils.virtualenv import running_under_virtualenv - -from .base import change_root, get_major_minor_version, is_osx_framework - -logger = logging.getLogger(__name__) - - -# Notes on _infer_* functions. -# Unfortunately ``get_default_scheme()`` didn't exist before 3.10, so there's no -# way to ask things like "what is the '_prefix' scheme on this platform". These -# functions try to answer that with some heuristics while accounting for ad-hoc -# platforms not covered by CPython's default sysconfig implementation. If the -# ad-hoc implementation does not fully implement sysconfig, we'll fall back to -# a POSIX scheme. - -_AVAILABLE_SCHEMES = set(sysconfig.get_scheme_names()) - -_PREFERRED_SCHEME_API = getattr(sysconfig, "get_preferred_scheme", None) - - -def _should_use_osx_framework_prefix() -> bool: - """Check for Apple's ``osx_framework_library`` scheme. - - Python distributed by Apple's Command Line Tools has this special scheme - that's used when: - - * This is a framework build. - * We are installing into the system prefix. - - This does not account for ``pip install --prefix`` (also means we're not - installing to the system prefix), which should use ``posix_prefix``, but - logic here means ``_infer_prefix()`` outputs ``osx_framework_library``. But - since ``prefix`` is not available for ``sysconfig.get_default_scheme()``, - which is the stdlib replacement for ``_infer_prefix()``, presumably Apple - wouldn't be able to magically switch between ``osx_framework_library`` and - ``posix_prefix``. ``_infer_prefix()`` returning ``osx_framework_library`` - means its behavior is consistent whether we use the stdlib implementation - or our own, and we deal with this special case in ``get_scheme()`` instead. - """ - return ( - "osx_framework_library" in _AVAILABLE_SCHEMES - and not running_under_virtualenv() - and is_osx_framework() - ) - - -def _infer_prefix() -> str: - """Try to find a prefix scheme for the current platform. - - This tries: - - * A special ``osx_framework_library`` for Python distributed by Apple's - Command Line Tools, when not running in a virtual environment. - * Implementation + OS, used by PyPy on Windows (``pypy_nt``). - * Implementation without OS, used by PyPy on POSIX (``pypy``). - * OS + "prefix", used by CPython on POSIX (``posix_prefix``). - * Just the OS name, used by CPython on Windows (``nt``). - - If none of the above works, fall back to ``posix_prefix``. - """ - if _PREFERRED_SCHEME_API: - return _PREFERRED_SCHEME_API("prefix") - if _should_use_osx_framework_prefix(): - return "osx_framework_library" - implementation_suffixed = f"{sys.implementation.name}_{os.name}" - if implementation_suffixed in _AVAILABLE_SCHEMES: - return implementation_suffixed - if sys.implementation.name in _AVAILABLE_SCHEMES: - return sys.implementation.name - suffixed = f"{os.name}_prefix" - if suffixed in _AVAILABLE_SCHEMES: - return suffixed - if os.name in _AVAILABLE_SCHEMES: # On Windows, prefx is just called "nt". - return os.name - return "posix_prefix" - - -def _infer_user() -> str: - """Try to find a user scheme for the current platform.""" - if _PREFERRED_SCHEME_API: - return _PREFERRED_SCHEME_API("user") - if is_osx_framework() and not running_under_virtualenv(): - suffixed = "osx_framework_user" - else: - suffixed = f"{os.name}_user" - if suffixed in _AVAILABLE_SCHEMES: - return suffixed - if "posix_user" not in _AVAILABLE_SCHEMES: # User scheme unavailable. - raise UserInstallationInvalid() - return "posix_user" - - -def _infer_home() -> str: - """Try to find a home for the current platform.""" - if _PREFERRED_SCHEME_API: - return _PREFERRED_SCHEME_API("home") - suffixed = f"{os.name}_home" - if suffixed in _AVAILABLE_SCHEMES: - return suffixed - return "posix_home" - - -# Update these keys if the user sets a custom home. -_HOME_KEYS = [ - "installed_base", - "base", - "installed_platbase", - "platbase", - "prefix", - "exec_prefix", -] -if sysconfig.get_config_var("userbase") is not None: - _HOME_KEYS.append("userbase") - - -def get_scheme( - dist_name: str, - user: bool = False, - home: typing.Optional[str] = None, - root: typing.Optional[str] = None, - isolated: bool = False, - prefix: typing.Optional[str] = None, -) -> Scheme: - """ - Get the "scheme" corresponding to the input parameters. - - :param dist_name: the name of the package to retrieve the scheme for, used - in the headers scheme path - :param user: indicates to use the "user" scheme - :param home: indicates to use the "home" scheme - :param root: root under which other directories are re-based - :param isolated: ignored, but kept for distutils compatibility (where - this controls whether the user-site pydistutils.cfg is honored) - :param prefix: indicates to use the "prefix" scheme and provides the - base directory for the same - """ - if user and prefix: - raise InvalidSchemeCombination("--user", "--prefix") - if home and prefix: - raise InvalidSchemeCombination("--home", "--prefix") - - if home is not None: - scheme_name = _infer_home() - elif user: - scheme_name = _infer_user() - else: - scheme_name = _infer_prefix() - - # Special case: When installing into a custom prefix, use posix_prefix - # instead of osx_framework_library. See _should_use_osx_framework_prefix() - # docstring for details. - if prefix is not None and scheme_name == "osx_framework_library": - scheme_name = "posix_prefix" - - if home is not None: - variables = {k: home for k in _HOME_KEYS} - elif prefix is not None: - variables = {k: prefix for k in _HOME_KEYS} - else: - variables = {} - - paths = sysconfig.get_paths(scheme=scheme_name, vars=variables) - - # Logic here is very arbitrary, we're doing it for compatibility, don't ask. - # 1. Pip historically uses a special header path in virtual environments. - # 2. If the distribution name is not known, distutils uses 'UNKNOWN'. We - # only do the same when not running in a virtual environment because - # pip's historical header path logic (see point 1) did not do this. - if running_under_virtualenv(): - if user: - base = variables.get("userbase", sys.prefix) - else: - base = variables.get("base", sys.prefix) - python_xy = f"python{get_major_minor_version()}" - paths["include"] = os.path.join(base, "include", "site", python_xy) - elif not dist_name: - dist_name = "UNKNOWN" - - scheme = Scheme( - platlib=paths["platlib"], - purelib=paths["purelib"], - headers=os.path.join(paths["include"], dist_name), - scripts=paths["scripts"], - data=paths["data"], - ) - if root is not None: - for key in SCHEME_KEYS: - value = change_root(root, getattr(scheme, key)) - setattr(scheme, key, value) - return scheme - - -def get_bin_prefix() -> str: - # Forcing to use /usr/local/bin for standard macOS framework installs. - if sys.platform[:6] == "darwin" and sys.prefix[:16] == "/System/Library/": - return "/usr/local/bin" - return sysconfig.get_paths()["scripts"] - - -def get_purelib() -> str: - return sysconfig.get_paths()["purelib"] - - -def get_platlib() -> str: - return sysconfig.get_paths()["platlib"] diff --git a/venv/lib/python3.10/site-packages/pip/_internal/locations/base.py b/venv/lib/python3.10/site-packages/pip/_internal/locations/base.py deleted file mode 100644 index 3f9f896..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/locations/base.py +++ /dev/null @@ -1,81 +0,0 @@ -import functools -import os -import site -import sys -import sysconfig -import typing - -from pip._internal.exceptions import InstallationError -from pip._internal.utils import appdirs -from pip._internal.utils.virtualenv import running_under_virtualenv - -# Application Directories -USER_CACHE_DIR = appdirs.user_cache_dir("pip") - -# FIXME doesn't account for venv linked to global site-packages -site_packages: str = sysconfig.get_path("purelib") - - -def get_major_minor_version() -> str: - """ - Return the major-minor version of the current Python as a string, e.g. - "3.7" or "3.10". - """ - return "{}.{}".format(*sys.version_info) - - -def change_root(new_root: str, pathname: str) -> str: - """Return 'pathname' with 'new_root' prepended. - - If 'pathname' is relative, this is equivalent to os.path.join(new_root, pathname). - Otherwise, it requires making 'pathname' relative and then joining the - two, which is tricky on DOS/Windows and Mac OS. - - This is borrowed from Python's standard library's distutils module. - """ - if os.name == "posix": - if not os.path.isabs(pathname): - return os.path.join(new_root, pathname) - else: - return os.path.join(new_root, pathname[1:]) - - elif os.name == "nt": - (drive, path) = os.path.splitdrive(pathname) - if path[0] == "\\": - path = path[1:] - return os.path.join(new_root, path) - - else: - raise InstallationError( - f"Unknown platform: {os.name}\n" - "Can not change root path prefix on unknown platform." - ) - - -def get_src_prefix() -> str: - if running_under_virtualenv(): - src_prefix = os.path.join(sys.prefix, "src") - else: - # FIXME: keep src in cwd for now (it is not a temporary folder) - try: - src_prefix = os.path.join(os.getcwd(), "src") - except OSError: - # In case the current working directory has been renamed or deleted - sys.exit("The folder you are executing pip from can no longer be found.") - - # under macOS + virtualenv sys.prefix is not properly resolved - # it is something like /path/to/python/bin/.. - return os.path.abspath(src_prefix) - - -try: - # Use getusersitepackages if this is present, as it ensures that the - # value is initialised properly. - user_site: typing.Optional[str] = site.getusersitepackages() -except AttributeError: - user_site = site.USER_SITE - - -@functools.lru_cache(maxsize=None) -def is_osx_framework() -> bool: - return bool(sysconfig.get_config_var("PYTHONFRAMEWORK")) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/main.py b/venv/lib/python3.10/site-packages/pip/_internal/main.py deleted file mode 100644 index 33c6d24..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/main.py +++ /dev/null @@ -1,12 +0,0 @@ -from typing import List, Optional - - -def main(args: Optional[List[str]] = None) -> int: - """This is preserved for old console scripts that may still be referencing - it. - - For additional details, see https://github.com/pypa/pip/issues/7498. - """ - from pip._internal.utils.entrypoints import _wrapper - - return _wrapper(args) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py deleted file mode 100644 index aa232b6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py +++ /dev/null @@ -1,128 +0,0 @@ -import contextlib -import functools -import os -import sys -from typing import TYPE_CHECKING, List, Optional, Type, cast - -from pip._internal.utils.misc import strtobool - -from .base import BaseDistribution, BaseEnvironment, FilesystemWheel, MemoryWheel, Wheel - -if TYPE_CHECKING: - from typing import Literal, Protocol -else: - Protocol = object - -__all__ = [ - "BaseDistribution", - "BaseEnvironment", - "FilesystemWheel", - "MemoryWheel", - "Wheel", - "get_default_environment", - "get_environment", - "get_wheel_distribution", - "select_backend", -] - - -def _should_use_importlib_metadata() -> bool: - """Whether to use the ``importlib.metadata`` or ``pkg_resources`` backend. - - By default, pip uses ``importlib.metadata`` on Python 3.11+, and - ``pkg_resourcess`` otherwise. This can be overridden by a couple of ways: - - * If environment variable ``_PIP_USE_IMPORTLIB_METADATA`` is set, it - dictates whether ``importlib.metadata`` is used, regardless of Python - version. - * On Python 3.11+, Python distributors can patch ``importlib.metadata`` - to add a global constant ``_PIP_USE_IMPORTLIB_METADATA = False``. This - makes pip use ``pkg_resources`` (unless the user set the aforementioned - environment variable to *True*). - """ - with contextlib.suppress(KeyError, ValueError): - return bool(strtobool(os.environ["_PIP_USE_IMPORTLIB_METADATA"])) - if sys.version_info < (3, 11): - return False - import importlib.metadata - - return bool(getattr(importlib.metadata, "_PIP_USE_IMPORTLIB_METADATA", True)) - - -class Backend(Protocol): - NAME: 'Literal["importlib", "pkg_resources"]' - Distribution: Type[BaseDistribution] - Environment: Type[BaseEnvironment] - - -@functools.lru_cache(maxsize=None) -def select_backend() -> Backend: - if _should_use_importlib_metadata(): - from . import importlib - - return cast(Backend, importlib) - from . import pkg_resources - - return cast(Backend, pkg_resources) - - -def get_default_environment() -> BaseEnvironment: - """Get the default representation for the current environment. - - This returns an Environment instance from the chosen backend. The default - Environment instance should be built from ``sys.path`` and may use caching - to share instance state accorss calls. - """ - return select_backend().Environment.default() - - -def get_environment(paths: Optional[List[str]]) -> BaseEnvironment: - """Get a representation of the environment specified by ``paths``. - - This returns an Environment instance from the chosen backend based on the - given import paths. The backend must build a fresh instance representing - the state of installed distributions when this function is called. - """ - return select_backend().Environment.from_paths(paths) - - -def get_directory_distribution(directory: str) -> BaseDistribution: - """Get the distribution metadata representation in the specified directory. - - This returns a Distribution instance from the chosen backend based on - the given on-disk ``.dist-info`` directory. - """ - return select_backend().Distribution.from_directory(directory) - - -def get_wheel_distribution(wheel: Wheel, canonical_name: str) -> BaseDistribution: - """Get the representation of the specified wheel's distribution metadata. - - This returns a Distribution instance from the chosen backend based on - the given wheel's ``.dist-info`` directory. - - :param canonical_name: Normalized project name of the given wheel. - """ - return select_backend().Distribution.from_wheel(wheel, canonical_name) - - -def get_metadata_distribution( - metadata_contents: bytes, - filename: str, - canonical_name: str, -) -> BaseDistribution: - """Get the dist representation of the specified METADATA file contents. - - This returns a Distribution instance from the chosen backend sourced from the data - in `metadata_contents`. - - :param metadata_contents: Contents of a METADATA file within a dist, or one served - via PEP 658. - :param filename: Filename for the dist this metadata represents. - :param canonical_name: Normalized project name of the given dist. - """ - return select_backend().Distribution.from_metadata_file_contents( - metadata_contents, - filename, - canonical_name, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index d814ad29ee48200676ffbed3e06511ee16010cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4806 zcmcIoTXWmS6$U`?B8sGLiEY`kvvr#|bY!t^o7PqBG`1qUp4hS`R+=$79SFiMMM$`? zyPzC;>?irP(}(_nxNrFH1rdjFYveUt$tTzw(qI5X=YO@m1(k*B;jiyZeaTC9Z!i*Fh>SEJ(`ov zkYqhR2xJmRB2KfJyFn;aU!@}Yq9a6@O+OS-BK!HEsDGMPR(=qqLPBL_QzmKRCt-6+ zPC<(#Cy>+B)u^kZ%g*kK)a9b>^}^H@`E4NbMtrN&ogYNdr&)?eTbsht+n(q5UHi^idOXntW>a5CGljl+Uz zJT|Ty>ikpFH0bXMT3Xqg;)Q)fzQ^sy1~0-Pt1oDk>F35?4USPdEF6+~%HCfs!vHdA zM@W_?tfvISJ=@+6qHZG7FxXj%MCx%b^|rTJBJrfVzw1h&lAiR1f^cxKm1>pYy3=O^ zxRzNr=+cVn)a7Ef*-tx3%znOd{rU&X%!|2RNAh|Nv|71+-6U`zFN)qbd}w2voTw-15XCt4&K||b~o>Dx}QH@cke&keDvAY zgZp>fhwEFnKe@ei8(N`AiFBC-sooc3Jn&O5#gSlX4caM4VIoe>mzfm1p5$;$MVrcx zJ6H=_SMcN&J-o^u9Ye88yb!R&D)r*@`wz@+ zvAbTV#P)U$@?f#Z+sA5K89pL?5tj|Y|gF{P#OnZ^nPNbmN#3@B?S$47=u-~g& zvL~)Kb2OX_-(#1JruDjjAbCx(dRJ2LY&Gjy6^Bg4m*lfqMfJK}IH}4ipNjsvl!?r$ zzxTqP$nS097Fov3%t};N9ymu<0Dok)fnnSrZYSCNn~{)}5$j%>%B(UBj;}#lqZhw6 zfugQ; zK^WeyP%R+e!d}2yV9M4|W6OmsNL_cO+s`h!s+06W?gD>zv=4Xq?nUfIHPAI0vnKnl zYT0JRoVVl^ht{Z!iaNVrxx>3S= zA>G$p_fI`996XtET`!Ikm<7(JTvryc`!QZ8gJ`Sd-Fq~AAKfp|6mf6WsF*c#*3?qu zpmOAWse)%>0w1uYLHMlEte>GvjYC5=K&e(}M%D`=-$H6XHx4ZjuZe7LM#UGPW-T>I z+O#($>61T32R-!(M4BaSl+2Jnp?6Bu(Kh9EdfUpSbbtIT3y`g%Dav9ct7cYplO&%w z0>(%mgCkI)qa*B@UsG2gu2mKM^l7ttt@Gr6=^5RCx#kcbU*Z(@IN~$6-hQAc_TF z3~L^yy220If#8(=z|5o$?475*A7TU;1L=z)HAAIFZ8rc@u{@TURzyhx=;!gyqMk~% zDJbo<;Vzvcd`JE>G65#$pyN>5A;J*qMyZZsm{KgMM=EXiVxQug@-bOQ@Dt2aC4X}D z&YGsAxE?cEdG^%)AqQ|%-_#EVVy+22QTF;?KQA;}&$SD>*Q zGto%ViS}XR6nF&PDM2!_PwvrxGq+C?UjvBy@P!ou^BScvgu<9=D$<5-eU$)cXxv6` z0J~p7dh$c<1F~&qA56T&65DG``uQgs#6CO0O%>NPZq2AN+)&^SbdeV!iXdMG&m2D(4 z@JJHl}J3Y5v6||-PF=i=pyW^qohPj3%HY24} zou^oYu3U5#Z^q3pR-Q;57i z(AmC#)9IX|SuhW@;!Yo5i~3|^fjKH0vdYc8p8bgG0(Apj1$8L>EtxfI$+E3^)3z#B jqdt4KTADQ*)$`T)>X|8P8kl`&S=N87g7vLsH~#%!WolB> diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc deleted file mode 100644 index 64133002432137f0bbfca9c73e5bad37883c75f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2189 zcmZuyOK%%D5GMDnhaXAPG|3?`&=iS)td*cZ5uk=q*K(RRwiCooi!K@n>m?;`yf2fK zTnX!w4YWP>AK1O+AN05I+Ef2R4sB;vekesGaF#P1k~7~tn9t1A3H*-f%ib!?{z7K@ z=K%8+3|RnSgwcegG@z*w7^xYU6lF$YrFLLfb2D*LH*ixg@X}gPOY1?Ml0IS9A2et% zn>U%mn>~xU%saM%8CK&qNIc%;ZqK+$V5QC)urkY{zs zySo#%k%oKcOp9uFgG(9qdCSt~N;c9~Cytc1)?=x({VI#|taY4BXBr3)48-2D$el2~{r_DKO)!TZ5v=h2qSg5(n5tu|Je`c7K~LGavn%YPRJ=ap^P%))PQs`H{VfT(=MQI zC;0*7iz|4Mgb{C1F$X)|67ey7-tqP>K-}&R;z;BXS1NArJ(g{VS6IYZ-!F0|+e4lW z+ey6BE-KGIUwrhiEn|g|iS{5kvR%YQy9;<%7_`%~tZH}P$UIvtM!JTRE@Tk@3~e@m z%v13Re6*R${(IiJAhltbFyx;=7*#}3Wnft_1HKkBnRRUaMq+YEmDwS$mwz%2jYG3E zN;0J4*8UY`mBtZ0v`SO>zmOhfP+Z3z;AEG^DeVwgv$Na3B61E&kT0Pa_YCojd8Iuh z;u}_jJ*2cxphPeBSje9e(6&ojT1#aA3Y_7A#3>ySluk)meTkG5qR<$B3F$rLLM?;~ zXBD}S?_h2$09ZLlzuS7g=|_25geu-i_yU7Eg))K4S=4k_U~u092g6>2u?0gaAPQVi z^vDoj^brgI;0WA%efJCylTmQ#{7<&9AtYL)T94+Cst#7pnCpe?LcFQvqvpY*JBxH zQiWN>1x8z7G_^BnTKX!qAnab9s)wx!kqhmFMZq(sO{s)HH(QptS#64T;V!A|oe@-r z_IL(cAvdc8o{;OPHz&g^RFR-hx)rT?X97W#fO>>-%{}@ zXiwQ&UrM00VC4P|afnBqf5&$|Xx62^_V&)YM~i672UHGwHOiR&Gh>A8)y?Ul~T_Dc83w`=R2 ztx09OeXhD;l4uhqa9NSWN;gnggd^Cg3hWf7u{Oa&Z4bj_z_oj( zKLPI^-d#n!F$Gf#q!O*ZWm@wXTLXqg>p;DKXDy)Sb%;FhhJ`CoFrd8InhToMo3S`~ zNH3GM%0WFdSxhI-sldLZ9W}zeRG9cULrf|Nsyi-|VJi6EQkt_t!k4j^ S%O;R(Mw8wE>#p9uZT$ygem4dH diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc deleted file mode 100644 index d6fef9bc69a7016fa0525cb06bf7048890903ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27334 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 O|BW{$UYW>G75)!ec;h1g diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc deleted file mode 100644 index 4f35531d3d0219b0b9e0c483af456eea5c334428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10616 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 NDVNBfFup%M_y69p4M6|^ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py deleted file mode 100644 index 27362fc..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py +++ /dev/null @@ -1,84 +0,0 @@ -# Extracted from https://github.com/pfmoore/pkg_metadata - -from email.header import Header, decode_header, make_header -from email.message import Message -from typing import Any, Dict, List, Union - -METADATA_FIELDS = [ - # Name, Multiple-Use - ("Metadata-Version", False), - ("Name", False), - ("Version", False), - ("Dynamic", True), - ("Platform", True), - ("Supported-Platform", True), - ("Summary", False), - ("Description", False), - ("Description-Content-Type", False), - ("Keywords", False), - ("Home-page", False), - ("Download-URL", False), - ("Author", False), - ("Author-email", False), - ("Maintainer", False), - ("Maintainer-email", False), - ("License", False), - ("Classifier", True), - ("Requires-Dist", True), - ("Requires-Python", False), - ("Requires-External", True), - ("Project-URL", True), - ("Provides-Extra", True), - ("Provides-Dist", True), - ("Obsoletes-Dist", True), -] - - -def json_name(field: str) -> str: - return field.lower().replace("-", "_") - - -def msg_to_json(msg: Message) -> Dict[str, Any]: - """Convert a Message object into a JSON-compatible dictionary.""" - - def sanitise_header(h: Union[Header, str]) -> str: - if isinstance(h, Header): - chunks = [] - for bytes, encoding in decode_header(h): - if encoding == "unknown-8bit": - try: - # See if UTF-8 works - bytes.decode("utf-8") - encoding = "utf-8" - except UnicodeDecodeError: - # If not, latin1 at least won't fail - encoding = "latin1" - chunks.append((bytes, encoding)) - return str(make_header(chunks)) - return str(h) - - result = {} - for field, multi in METADATA_FIELDS: - if field not in msg: - continue - key = json_name(field) - if multi: - value: Union[str, List[str]] = [ - sanitise_header(v) for v in msg.get_all(field) # type: ignore - ] - else: - value = sanitise_header(msg.get(field)) # type: ignore - if key == "keywords": - # Accept both comma-separated and space-separated - # forms, for better compatibility with old data. - if "," in value: - value = [v.strip() for v in value.split(",")] - else: - value = value.split() - result[key] = value - - payload = msg.get_payload() - if payload: - result["description"] = payload - - return result diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py deleted file mode 100644 index 9249124..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py +++ /dev/null @@ -1,702 +0,0 @@ -import csv -import email.message -import functools -import json -import logging -import pathlib -import re -import zipfile -from typing import ( - IO, - TYPE_CHECKING, - Any, - Collection, - Container, - Dict, - Iterable, - Iterator, - List, - NamedTuple, - Optional, - Tuple, - Union, -) - -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.packaging.specifiers import InvalidSpecifier, SpecifierSet -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import LegacyVersion, Version - -from pip._internal.exceptions import NoneMetadataError -from pip._internal.locations import site_packages, user_site -from pip._internal.models.direct_url import ( - DIRECT_URL_METADATA_NAME, - DirectUrl, - DirectUrlValidationError, -) -from pip._internal.utils.compat import stdlib_pkgs # TODO: Move definition here. -from pip._internal.utils.egg_link import egg_link_path_from_sys_path -from pip._internal.utils.misc import is_local, normalize_path -from pip._internal.utils.urls import url_to_path - -from ._json import msg_to_json - -if TYPE_CHECKING: - from typing import Protocol -else: - Protocol = object - -DistributionVersion = Union[LegacyVersion, Version] - -InfoPath = Union[str, pathlib.PurePath] - -logger = logging.getLogger(__name__) - - -class BaseEntryPoint(Protocol): - @property - def name(self) -> str: - raise NotImplementedError() - - @property - def value(self) -> str: - raise NotImplementedError() - - @property - def group(self) -> str: - raise NotImplementedError() - - -def _convert_installed_files_path( - entry: Tuple[str, ...], - info: Tuple[str, ...], -) -> str: - """Convert a legacy installed-files.txt path into modern RECORD path. - - The legacy format stores paths relative to the info directory, while the - modern format stores paths relative to the package root, e.g. the - site-packages directory. - - :param entry: Path parts of the installed-files.txt entry. - :param info: Path parts of the egg-info directory relative to package root. - :returns: The converted entry. - - For best compatibility with symlinks, this does not use ``abspath()`` or - ``Path.resolve()``, but tries to work with path parts: - - 1. While ``entry`` starts with ``..``, remove the equal amounts of parts - from ``info``; if ``info`` is empty, start appending ``..`` instead. - 2. Join the two directly. - """ - while entry and entry[0] == "..": - if not info or info[-1] == "..": - info += ("..",) - else: - info = info[:-1] - entry = entry[1:] - return str(pathlib.Path(*info, *entry)) - - -class RequiresEntry(NamedTuple): - requirement: str - extra: str - marker: str - - -class BaseDistribution(Protocol): - @classmethod - def from_directory(cls, directory: str) -> "BaseDistribution": - """Load the distribution from a metadata directory. - - :param directory: Path to a metadata directory, e.g. ``.dist-info``. - """ - raise NotImplementedError() - - @classmethod - def from_metadata_file_contents( - cls, - metadata_contents: bytes, - filename: str, - project_name: str, - ) -> "BaseDistribution": - """Load the distribution from the contents of a METADATA file. - - This is used to implement PEP 658 by generating a "shallow" dist object that can - be used for resolution without downloading or building the actual dist yet. - - :param metadata_contents: The contents of a METADATA file. - :param filename: File name for the dist with this metadata. - :param project_name: Name of the project this dist represents. - """ - raise NotImplementedError() - - @classmethod - def from_wheel(cls, wheel: "Wheel", name: str) -> "BaseDistribution": - """Load the distribution from a given wheel. - - :param wheel: A concrete wheel definition. - :param name: File name of the wheel. - - :raises InvalidWheel: Whenever loading of the wheel causes a - :py:exc:`zipfile.BadZipFile` exception to be thrown. - :raises UnsupportedWheel: If the wheel is a valid zip, but malformed - internally. - """ - raise NotImplementedError() - - def __repr__(self) -> str: - return f"{self.raw_name} {self.version} ({self.location})" - - def __str__(self) -> str: - return f"{self.raw_name} {self.version}" - - @property - def location(self) -> Optional[str]: - """Where the distribution is loaded from. - - A string value is not necessarily a filesystem path, since distributions - can be loaded from other sources, e.g. arbitrary zip archives. ``None`` - means the distribution is created in-memory. - - Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If - this is a symbolic link, we want to preserve the relative path between - it and files in the distribution. - """ - raise NotImplementedError() - - @property - def editable_project_location(self) -> Optional[str]: - """The project location for editable distributions. - - This is the directory where pyproject.toml or setup.py is located. - None if the distribution is not installed in editable mode. - """ - # TODO: this property is relatively costly to compute, memoize it ? - direct_url = self.direct_url - if direct_url: - if direct_url.is_local_editable(): - return url_to_path(direct_url.url) - else: - # Search for an .egg-link file by walking sys.path, as it was - # done before by dist_is_editable(). - egg_link_path = egg_link_path_from_sys_path(self.raw_name) - if egg_link_path: - # TODO: get project location from second line of egg_link file - # (https://github.com/pypa/pip/issues/10243) - return self.location - return None - - @property - def installed_location(self) -> Optional[str]: - """The distribution's "installed" location. - - This should generally be a ``site-packages`` directory. This is - usually ``dist.location``, except for legacy develop-installed packages, - where ``dist.location`` is the source code location, and this is where - the ``.egg-link`` file is. - - The returned location is normalized (in particular, with symlinks removed). - """ - raise NotImplementedError() - - @property - def info_location(self) -> Optional[str]: - """Location of the .[egg|dist]-info directory or file. - - Similarly to ``location``, a string value is not necessarily a - filesystem path. ``None`` means the distribution is created in-memory. - - For a modern .dist-info installation on disk, this should be something - like ``{location}/{raw_name}-{version}.dist-info``. - - Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If - this is a symbolic link, we want to preserve the relative path between - it and other files in the distribution. - """ - raise NotImplementedError() - - @property - def installed_by_distutils(self) -> bool: - """Whether this distribution is installed with legacy distutils format. - - A distribution installed with "raw" distutils not patched by setuptools - uses one single file at ``info_location`` to store metadata. We need to - treat this specially on uninstallation. - """ - info_location = self.info_location - if not info_location: - return False - return pathlib.Path(info_location).is_file() - - @property - def installed_as_egg(self) -> bool: - """Whether this distribution is installed as an egg. - - This usually indicates the distribution was installed by (older versions - of) easy_install. - """ - location = self.location - if not location: - return False - return location.endswith(".egg") - - @property - def installed_with_setuptools_egg_info(self) -> bool: - """Whether this distribution is installed with the ``.egg-info`` format. - - This usually indicates the distribution was installed with setuptools - with an old pip version or with ``single-version-externally-managed``. - - Note that this ensure the metadata store is a directory. distutils can - also installs an ``.egg-info``, but as a file, not a directory. This - property is *False* for that case. Also see ``installed_by_distutils``. - """ - info_location = self.info_location - if not info_location: - return False - if not info_location.endswith(".egg-info"): - return False - return pathlib.Path(info_location).is_dir() - - @property - def installed_with_dist_info(self) -> bool: - """Whether this distribution is installed with the "modern format". - - This indicates a "modern" installation, e.g. storing metadata in the - ``.dist-info`` directory. This applies to installations made by - setuptools (but through pip, not directly), or anything using the - standardized build backend interface (PEP 517). - """ - info_location = self.info_location - if not info_location: - return False - if not info_location.endswith(".dist-info"): - return False - return pathlib.Path(info_location).is_dir() - - @property - def canonical_name(self) -> NormalizedName: - raise NotImplementedError() - - @property - def version(self) -> DistributionVersion: - raise NotImplementedError() - - @property - def setuptools_filename(self) -> str: - """Convert a project name to its setuptools-compatible filename. - - This is a copy of ``pkg_resources.to_filename()`` for compatibility. - """ - return self.raw_name.replace("-", "_") - - @property - def direct_url(self) -> Optional[DirectUrl]: - """Obtain a DirectUrl from this distribution. - - Returns None if the distribution has no `direct_url.json` metadata, - or if `direct_url.json` is invalid. - """ - try: - content = self.read_text(DIRECT_URL_METADATA_NAME) - except FileNotFoundError: - return None - try: - return DirectUrl.from_json(content) - except ( - UnicodeDecodeError, - json.JSONDecodeError, - DirectUrlValidationError, - ) as e: - logger.warning( - "Error parsing %s for %s: %s", - DIRECT_URL_METADATA_NAME, - self.canonical_name, - e, - ) - return None - - @property - def installer(self) -> str: - try: - installer_text = self.read_text("INSTALLER") - except (OSError, ValueError, NoneMetadataError): - return "" # Fail silently if the installer file cannot be read. - for line in installer_text.splitlines(): - cleaned_line = line.strip() - if cleaned_line: - return cleaned_line - return "" - - @property - def requested(self) -> bool: - return self.is_file("REQUESTED") - - @property - def editable(self) -> bool: - return bool(self.editable_project_location) - - @property - def local(self) -> bool: - """If distribution is installed in the current virtual environment. - - Always True if we're not in a virtualenv. - """ - if self.installed_location is None: - return False - return is_local(self.installed_location) - - @property - def in_usersite(self) -> bool: - if self.installed_location is None or user_site is None: - return False - return self.installed_location.startswith(normalize_path(user_site)) - - @property - def in_site_packages(self) -> bool: - if self.installed_location is None or site_packages is None: - return False - return self.installed_location.startswith(normalize_path(site_packages)) - - def is_file(self, path: InfoPath) -> bool: - """Check whether an entry in the info directory is a file.""" - raise NotImplementedError() - - def iter_distutils_script_names(self) -> Iterator[str]: - """Find distutils 'scripts' entries metadata. - - If 'scripts' is supplied in ``setup.py``, distutils records those in the - installed distribution's ``scripts`` directory, a file for each script. - """ - raise NotImplementedError() - - def read_text(self, path: InfoPath) -> str: - """Read a file in the info directory. - - :raise FileNotFoundError: If ``path`` does not exist in the directory. - :raise NoneMetadataError: If ``path`` exists in the info directory, but - cannot be read. - """ - raise NotImplementedError() - - def iter_entry_points(self) -> Iterable[BaseEntryPoint]: - raise NotImplementedError() - - def _metadata_impl(self) -> email.message.Message: - raise NotImplementedError() - - @functools.lru_cache(maxsize=1) - def _metadata_cached(self) -> email.message.Message: - # When we drop python 3.7 support, move this to the metadata property and use - # functools.cached_property instead of lru_cache. - metadata = self._metadata_impl() - self._add_egg_info_requires(metadata) - return metadata - - @property - def metadata(self) -> email.message.Message: - """Metadata of distribution parsed from e.g. METADATA or PKG-INFO. - - This should return an empty message if the metadata file is unavailable. - - :raises NoneMetadataError: If the metadata file is available, but does - not contain valid metadata. - """ - return self._metadata_cached() - - @property - def metadata_dict(self) -> Dict[str, Any]: - """PEP 566 compliant JSON-serializable representation of METADATA or PKG-INFO. - - This should return an empty dict if the metadata file is unavailable. - - :raises NoneMetadataError: If the metadata file is available, but does - not contain valid metadata. - """ - return msg_to_json(self.metadata) - - @property - def metadata_version(self) -> Optional[str]: - """Value of "Metadata-Version:" in distribution metadata, if available.""" - return self.metadata.get("Metadata-Version") - - @property - def raw_name(self) -> str: - """Value of "Name:" in distribution metadata.""" - # The metadata should NEVER be missing the Name: key, but if it somehow - # does, fall back to the known canonical name. - return self.metadata.get("Name", self.canonical_name) - - @property - def requires_python(self) -> SpecifierSet: - """Value of "Requires-Python:" in distribution metadata. - - If the key does not exist or contains an invalid value, an empty - SpecifierSet should be returned. - """ - value = self.metadata.get("Requires-Python") - if value is None: - return SpecifierSet() - try: - # Convert to str to satisfy the type checker; this can be a Header object. - spec = SpecifierSet(str(value)) - except InvalidSpecifier as e: - message = "Package %r has an invalid Requires-Python: %s" - logger.warning(message, self.raw_name, e) - return SpecifierSet() - return spec - - def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: - """Dependencies of this distribution. - - For modern .dist-info distributions, this is the collection of - "Requires-Dist:" entries in distribution metadata. - """ - raise NotImplementedError() - - def iter_provided_extras(self) -> Iterable[str]: - """Extras provided by this distribution. - - For modern .dist-info distributions, this is the collection of - "Provides-Extra:" entries in distribution metadata. - - The return value of this function is not particularly useful other than - display purposes due to backward compatibility issues and the extra - names being poorly normalized prior to PEP 685. If you want to perform - logic operations on extras, use :func:`is_extra_provided` instead. - """ - raise NotImplementedError() - - def is_extra_provided(self, extra: str) -> bool: - """Check whether an extra is provided by this distribution. - - This is needed mostly for compatibility issues with pkg_resources not - following the extra normalization rules defined in PEP 685. - """ - raise NotImplementedError() - - def _iter_declared_entries_from_record(self) -> Optional[Iterator[str]]: - try: - text = self.read_text("RECORD") - except FileNotFoundError: - return None - # This extra Path-str cast normalizes entries. - return (str(pathlib.Path(row[0])) for row in csv.reader(text.splitlines())) - - def _iter_declared_entries_from_legacy(self) -> Optional[Iterator[str]]: - try: - text = self.read_text("installed-files.txt") - except FileNotFoundError: - return None - paths = (p for p in text.splitlines(keepends=False) if p) - root = self.location - info = self.info_location - if root is None or info is None: - return paths - try: - info_rel = pathlib.Path(info).relative_to(root) - except ValueError: # info is not relative to root. - return paths - if not info_rel.parts: # info *is* root. - return paths - return ( - _convert_installed_files_path(pathlib.Path(p).parts, info_rel.parts) - for p in paths - ) - - def iter_declared_entries(self) -> Optional[Iterator[str]]: - """Iterate through file entries declared in this distribution. - - For modern .dist-info distributions, this is the files listed in the - ``RECORD`` metadata file. For legacy setuptools distributions, this - comes from ``installed-files.txt``, with entries normalized to be - compatible with the format used by ``RECORD``. - - :return: An iterator for listed entries, or None if the distribution - contains neither ``RECORD`` nor ``installed-files.txt``. - """ - return ( - self._iter_declared_entries_from_record() - or self._iter_declared_entries_from_legacy() - ) - - def _iter_requires_txt_entries(self) -> Iterator[RequiresEntry]: - """Parse a ``requires.txt`` in an egg-info directory. - - This is an INI-ish format where an egg-info stores dependencies. A - section name describes extra other environment markers, while each entry - is an arbitrary string (not a key-value pair) representing a dependency - as a requirement string (no markers). - - There is a construct in ``importlib.metadata`` called ``Sectioned`` that - does mostly the same, but the format is currently considered private. - """ - try: - content = self.read_text("requires.txt") - except FileNotFoundError: - return - extra = marker = "" # Section-less entries don't have markers. - for line in content.splitlines(): - line = line.strip() - if not line or line.startswith("#"): # Comment; ignored. - continue - if line.startswith("[") and line.endswith("]"): # A section header. - extra, _, marker = line.strip("[]").partition(":") - continue - yield RequiresEntry(requirement=line, extra=extra, marker=marker) - - def _iter_egg_info_extras(self) -> Iterable[str]: - """Get extras from the egg-info directory.""" - known_extras = {""} - for entry in self._iter_requires_txt_entries(): - extra = canonicalize_name(entry.extra) - if extra in known_extras: - continue - known_extras.add(extra) - yield extra - - def _iter_egg_info_dependencies(self) -> Iterable[str]: - """Get distribution dependencies from the egg-info directory. - - To ease parsing, this converts a legacy dependency entry into a PEP 508 - requirement string. Like ``_iter_requires_txt_entries()``, there is code - in ``importlib.metadata`` that does mostly the same, but not do exactly - what we need. - - Namely, ``importlib.metadata`` does not normalize the extra name before - putting it into the requirement string, which causes marker comparison - to fail because the dist-info format do normalize. This is consistent in - all currently available PEP 517 backends, although not standardized. - """ - for entry in self._iter_requires_txt_entries(): - extra = canonicalize_name(entry.extra) - if extra and entry.marker: - marker = f'({entry.marker}) and extra == "{extra}"' - elif extra: - marker = f'extra == "{extra}"' - elif entry.marker: - marker = entry.marker - else: - marker = "" - if marker: - yield f"{entry.requirement} ; {marker}" - else: - yield entry.requirement - - def _add_egg_info_requires(self, metadata: email.message.Message) -> None: - """Add egg-info requires.txt information to the metadata.""" - if not metadata.get_all("Requires-Dist"): - for dep in self._iter_egg_info_dependencies(): - metadata["Requires-Dist"] = dep - if not metadata.get_all("Provides-Extra"): - for extra in self._iter_egg_info_extras(): - metadata["Provides-Extra"] = extra - - -class BaseEnvironment: - """An environment containing distributions to introspect.""" - - @classmethod - def default(cls) -> "BaseEnvironment": - raise NotImplementedError() - - @classmethod - def from_paths(cls, paths: Optional[List[str]]) -> "BaseEnvironment": - raise NotImplementedError() - - def get_distribution(self, name: str) -> Optional["BaseDistribution"]: - """Given a requirement name, return the installed distributions. - - The name may not be normalized. The implementation must canonicalize - it for lookup. - """ - raise NotImplementedError() - - def _iter_distributions(self) -> Iterator["BaseDistribution"]: - """Iterate through installed distributions. - - This function should be implemented by subclass, but never called - directly. Use the public ``iter_distribution()`` instead, which - implements additional logic to make sure the distributions are valid. - """ - raise NotImplementedError() - - def iter_all_distributions(self) -> Iterator[BaseDistribution]: - """Iterate through all installed distributions without any filtering.""" - for dist in self._iter_distributions(): - # Make sure the distribution actually comes from a valid Python - # packaging distribution. Pip's AdjacentTempDirectory leaves folders - # e.g. ``~atplotlib.dist-info`` if cleanup was interrupted. The - # valid project name pattern is taken from PEP 508. - project_name_valid = re.match( - r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", - dist.canonical_name, - flags=re.IGNORECASE, - ) - if not project_name_valid: - logger.warning( - "Ignoring invalid distribution %s (%s)", - dist.canonical_name, - dist.location, - ) - continue - yield dist - - def iter_installed_distributions( - self, - local_only: bool = True, - skip: Container[str] = stdlib_pkgs, - include_editables: bool = True, - editables_only: bool = False, - user_only: bool = False, - ) -> Iterator[BaseDistribution]: - """Return a list of installed distributions. - - This is based on ``iter_all_distributions()`` with additional filtering - options. Note that ``iter_installed_distributions()`` without arguments - is *not* equal to ``iter_all_distributions()``, since some of the - configurations exclude packages by default. - - :param local_only: If True (default), only return installations - local to the current virtualenv, if in a virtualenv. - :param skip: An iterable of canonicalized project names to ignore; - defaults to ``stdlib_pkgs``. - :param include_editables: If False, don't report editables. - :param editables_only: If True, only report editables. - :param user_only: If True, only report installations in the user - site directory. - """ - it = self.iter_all_distributions() - if local_only: - it = (d for d in it if d.local) - if not include_editables: - it = (d for d in it if not d.editable) - if editables_only: - it = (d for d in it if d.editable) - if user_only: - it = (d for d in it if d.in_usersite) - return (d for d in it if d.canonical_name not in skip) - - -class Wheel(Protocol): - location: str - - def as_zipfile(self) -> zipfile.ZipFile: - raise NotImplementedError() - - -class FilesystemWheel(Wheel): - def __init__(self, location: str) -> None: - self.location = location - - def as_zipfile(self) -> zipfile.ZipFile: - return zipfile.ZipFile(self.location, allowZip64=True) - - -class MemoryWheel(Wheel): - def __init__(self, location: str, stream: IO[bytes]) -> None: - self.location = location - self.stream = stream - - def as_zipfile(self) -> zipfile.ZipFile: - return zipfile.ZipFile(self.stream, allowZip64=True) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py deleted file mode 100644 index a779138..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from ._dists import Distribution -from ._envs import Environment - -__all__ = ["NAME", "Distribution", "Environment"] - -NAME = "importlib" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e7339c1dbac15a3369e326a949715c19335665d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmYjMy-ve05Vn)F4UoPE8QKG}FdzgH9qCZEES4La)T;kvyOFvh@g8ivQdTBjfr$%9 zh?DNS`*h#^x%vE*puNz|^DD-Wk^Hv|$sKw;M-W6%O$==)9rH|QCU0^|IwJBn+7zN_ zCSvkL>ggv%c}<7vLB$l*_K=jb$j?@`SHW2$ZL0I3Sl>Uc!nh;k2*Zgo-i4&qc3n@K zDHGTof9lPIN!!O?*^Du+HDjT`rgsu%cT&>d78Tq{#ju)mHF+rYiD-NHK& zp~p#pJHQ{)&e^Nws<$%6plRRW2mqtFe41wsfV;VqOQB0QwtcxqhL)1I+iPE~bJ zx;1Q=NUYehL43gM_#SUrv1Z4LbE~I29VS?E+4b1(Vd>+V1#*YITtJZNeY@^?hP4t_p zf&PYUDYoC)KPTHNRvRw{qgZap&f|F4mFHG7n;7lNO^lwG>_N~w{}((5+r7As?v%5- z{dMIsU5dPJ-#6OnROfY^3hPo@wth9yxsBVther9ZhoNLD+K=}eGE_|pcGUDC#>1A3 zRC5%{mTbdyTgGs`QJ=dj0-De+|>UVx7|W> z#Eya_I114MwgqGdI@dyZv|G9@xyOwtaQo%vO#gW zl|fci+Bo_$Np(>P*RKF=f|Z#|5<8>#KN?*!6z! z8)$+j!!!E50X*aF`4)`vWf(jw`8?z|{$V|H4xgPc)5XIBuxQSsTep(LI+G;CR7>by zW%J8V2j%CHFKnR{g-VjTlO%!Vx+yG zBYG{_@)T^}6;|CBZY+KV&Ubiq%6g6w$EU(%dSW?JIOckHU!~6SRF@-dihifVaeX_^ zELV@PKg)MjDkfI(6$Jey0vyAb*D$lQL)Ji!KDpi5;i8n@($3C2t43L_PA6{B3_n!7 zR7!FIzeS--zKei40^n{|DLw}KEWhzx31GR@a8hdL%^hlUfUonM+pJ6#{61}-BW|ZP ztRH%FdSZC)xy&uJSM}C6xU>v%i4vb-tJw4yyLH)A-QvhB*JVBVt(cjLI`)8RR@G3Ye%&HWiM@nUE?-4Q}B=^*NI2=^()2 zb=RkQBcm8TxW%o0hIQh13K}3XBJ5HY>QSX3AllB#6&HwPvYTgVpWg+OQPvS#s-;?} z4VH8c2?7$Bq19;)9o+KK!8zC~2_dg2E~Yw@d@QCA0C_g*(BRbYVk<;BqlJ)0pMQZY zk0v=(0|Tijy*c1jWF=wZ?O7aCTnZpd#inj}n6`VYZtdZ;0aiU`-arc1xZ$h%MNH$o z8R;a~si3m^I#&7m-rX>7(ie10K1Fzv#EKWR#03sV&2hLN{>WT(#9VwF+KaBSV9PJz zPwa^PA)@&opDTcTmLVWA)l5#>T9p&ZHVv#No08@0hnR{i7rQx%Xvy#UbC=V>%Te%h zpkn&`2V~ADkB1Wm`y`yzBau2FN!4Ugj_%E>*{UM)gHj)QL>EBLU&+d;$dRX2g@$y^ zj9;h7t^-v6|Ijpa2pIy#%dqZbD5lm46x4+{sTM)j{+GiG^@&D(9yTctL|%V#_OaTM z?jVec=J5Hy+Do6 kvM(XzWsM;|Mju}L!^JWF5f#_d67mAuincbcUAfl%7ceWtMgRZ+ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc deleted file mode 100644 index 0c58c4c0b5033f775025ede6fb01ab79ead6f896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9058 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc deleted file mode 100644 index 9ea1013e8aedc8e28b8186516fd81ef791dea2b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7750 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py deleted file mode 100644 index 593bff2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py +++ /dev/null @@ -1,55 +0,0 @@ -import importlib.metadata -from typing import Any, Optional, Protocol, cast - - -class BadMetadata(ValueError): - def __init__(self, dist: importlib.metadata.Distribution, *, reason: str) -> None: - self.dist = dist - self.reason = reason - - def __str__(self) -> str: - return f"Bad metadata in {self.dist} ({self.reason})" - - -class BasePath(Protocol): - """A protocol that various path objects conform. - - This exists because importlib.metadata uses both ``pathlib.Path`` and - ``zipfile.Path``, and we need a common base for type hints (Union does not - work well since ``zipfile.Path`` is too new for our linter setup). - - This does not mean to be exhaustive, but only contains things that present - in both classes *that we need*. - """ - - @property - def name(self) -> str: - raise NotImplementedError() - - @property - def parent(self) -> "BasePath": - raise NotImplementedError() - - -def get_info_location(d: importlib.metadata.Distribution) -> Optional[BasePath]: - """Find the path to the distribution's metadata directory. - - HACK: This relies on importlib.metadata's private ``_path`` attribute. Not - all distributions exist on disk, so importlib.metadata is correct to not - expose the attribute as public. But pip's code base is old and not as clean, - so we do this to avoid having to rewrite too many things. Hopefully we can - eliminate this some day. - """ - return getattr(d, "_path", None) - - -def get_dist_name(dist: importlib.metadata.Distribution) -> str: - """Get the distribution's project name. - - The ``name`` attribute is only available in Python 3.10 or later. We are - targeting exactly that, but Mypy does not know this. - """ - name = cast(Any, dist).name - if not isinstance(name, str): - raise BadMetadata(dist, reason="invalid metadata entry 'name'") - return name diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py deleted file mode 100644 index 26370fa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py +++ /dev/null @@ -1,227 +0,0 @@ -import email.message -import importlib.metadata -import os -import pathlib -import zipfile -from typing import ( - Collection, - Dict, - Iterable, - Iterator, - Mapping, - Optional, - Sequence, - cast, -) - -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.exceptions import InvalidWheel, UnsupportedWheel -from pip._internal.metadata.base import ( - BaseDistribution, - BaseEntryPoint, - DistributionVersion, - InfoPath, - Wheel, -) -from pip._internal.utils.misc import normalize_path -from pip._internal.utils.temp_dir import TempDirectory -from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file - -from ._compat import BasePath, get_dist_name - - -class WheelDistribution(importlib.metadata.Distribution): - """An ``importlib.metadata.Distribution`` read from a wheel. - - Although ``importlib.metadata.PathDistribution`` accepts ``zipfile.Path``, - its implementation is too "lazy" for pip's needs (we can't keep the ZipFile - handle open for the entire lifetime of the distribution object). - - This implementation eagerly reads the entire metadata directory into the - memory instead, and operates from that. - """ - - def __init__( - self, - files: Mapping[pathlib.PurePosixPath, bytes], - info_location: pathlib.PurePosixPath, - ) -> None: - self._files = files - self.info_location = info_location - - @classmethod - def from_zipfile( - cls, - zf: zipfile.ZipFile, - name: str, - location: str, - ) -> "WheelDistribution": - info_dir, _ = parse_wheel(zf, name) - paths = ( - (name, pathlib.PurePosixPath(name.split("/", 1)[-1])) - for name in zf.namelist() - if name.startswith(f"{info_dir}/") - ) - files = { - relpath: read_wheel_metadata_file(zf, fullpath) - for fullpath, relpath in paths - } - info_location = pathlib.PurePosixPath(location, info_dir) - return cls(files, info_location) - - def iterdir(self, path: InfoPath) -> Iterator[pathlib.PurePosixPath]: - # Only allow iterating through the metadata directory. - if pathlib.PurePosixPath(str(path)) in self._files: - return iter(self._files) - raise FileNotFoundError(path) - - def read_text(self, filename: str) -> Optional[str]: - try: - data = self._files[pathlib.PurePosixPath(filename)] - except KeyError: - return None - try: - text = data.decode("utf-8") - except UnicodeDecodeError as e: - wheel = self.info_location.parent - error = f"Error decoding metadata for {wheel}: {e} in {filename} file" - raise UnsupportedWheel(error) - return text - - -class Distribution(BaseDistribution): - def __init__( - self, - dist: importlib.metadata.Distribution, - info_location: Optional[BasePath], - installed_location: Optional[BasePath], - ) -> None: - self._dist = dist - self._info_location = info_location - self._installed_location = installed_location - - @classmethod - def from_directory(cls, directory: str) -> BaseDistribution: - info_location = pathlib.Path(directory) - dist = importlib.metadata.Distribution.at(info_location) - return cls(dist, info_location, info_location.parent) - - @classmethod - def from_metadata_file_contents( - cls, - metadata_contents: bytes, - filename: str, - project_name: str, - ) -> BaseDistribution: - # Generate temp dir to contain the metadata file, and write the file contents. - temp_dir = pathlib.Path( - TempDirectory(kind="metadata", globally_managed=True).path - ) - metadata_path = temp_dir / "METADATA" - metadata_path.write_bytes(metadata_contents) - # Construct dist pointing to the newly created directory. - dist = importlib.metadata.Distribution.at(metadata_path.parent) - return cls(dist, metadata_path.parent, None) - - @classmethod - def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution: - try: - with wheel.as_zipfile() as zf: - dist = WheelDistribution.from_zipfile(zf, name, wheel.location) - except zipfile.BadZipFile as e: - raise InvalidWheel(wheel.location, name) from e - except UnsupportedWheel as e: - raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") - return cls(dist, dist.info_location, pathlib.PurePosixPath(wheel.location)) - - @property - def location(self) -> Optional[str]: - if self._info_location is None: - return None - return str(self._info_location.parent) - - @property - def info_location(self) -> Optional[str]: - if self._info_location is None: - return None - return str(self._info_location) - - @property - def installed_location(self) -> Optional[str]: - if self._installed_location is None: - return None - return normalize_path(str(self._installed_location)) - - def _get_dist_name_from_location(self) -> Optional[str]: - """Try to get the name from the metadata directory name. - - This is much faster than reading metadata. - """ - if self._info_location is None: - return None - stem, suffix = os.path.splitext(self._info_location.name) - if suffix not in (".dist-info", ".egg-info"): - return None - return stem.split("-", 1)[0] - - @property - def canonical_name(self) -> NormalizedName: - name = self._get_dist_name_from_location() or get_dist_name(self._dist) - return canonicalize_name(name) - - @property - def version(self) -> DistributionVersion: - return parse_version(self._dist.version) - - def is_file(self, path: InfoPath) -> bool: - return self._dist.read_text(str(path)) is not None - - def iter_distutils_script_names(self) -> Iterator[str]: - # A distutils installation is always "flat" (not in e.g. egg form), so - # if this distribution's info location is NOT a pathlib.Path (but e.g. - # zipfile.Path), it can never contain any distutils scripts. - if not isinstance(self._info_location, pathlib.Path): - return - for child in self._info_location.joinpath("scripts").iterdir(): - yield child.name - - def read_text(self, path: InfoPath) -> str: - content = self._dist.read_text(str(path)) - if content is None: - raise FileNotFoundError(path) - return content - - def iter_entry_points(self) -> Iterable[BaseEntryPoint]: - # importlib.metadata's EntryPoint structure sasitfies BaseEntryPoint. - return self._dist.entry_points - - def _metadata_impl(self) -> email.message.Message: - # From Python 3.10+, importlib.metadata declares PackageMetadata as the - # return type. This protocol is unfortunately a disaster now and misses - # a ton of fields that we need, including get() and get_payload(). We - # rely on the implementation that the object is actually a Message now, - # until upstream can improve the protocol. (python/cpython#94952) - return cast(email.message.Message, self._dist.metadata) - - def iter_provided_extras(self) -> Iterable[str]: - return self.metadata.get_all("Provides-Extra", []) - - def is_extra_provided(self, extra: str) -> bool: - return any( - canonicalize_name(provided_extra) == canonicalize_name(extra) - for provided_extra in self.metadata.get_all("Provides-Extra", []) - ) - - def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: - contexts: Sequence[Dict[str, str]] = [{"extra": e} for e in extras] - for req_string in self.metadata.get_all("Requires-Dist", []): - req = Requirement(req_string) - if not req.marker: - yield req - elif not extras and req.marker.evaluate({"extra": ""}): - yield req - elif any(req.marker.evaluate(context) for context in contexts): - yield req diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py deleted file mode 100644 index 048dc55..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py +++ /dev/null @@ -1,189 +0,0 @@ -import functools -import importlib.metadata -import logging -import os -import pathlib -import sys -import zipfile -import zipimport -from typing import Iterator, List, Optional, Sequence, Set, Tuple - -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name - -from pip._internal.metadata.base import BaseDistribution, BaseEnvironment -from pip._internal.models.wheel import Wheel -from pip._internal.utils.deprecation import deprecated -from pip._internal.utils.filetypes import WHEEL_EXTENSION - -from ._compat import BadMetadata, BasePath, get_dist_name, get_info_location -from ._dists import Distribution - -logger = logging.getLogger(__name__) - - -def _looks_like_wheel(location: str) -> bool: - if not location.endswith(WHEEL_EXTENSION): - return False - if not os.path.isfile(location): - return False - if not Wheel.wheel_file_re.match(os.path.basename(location)): - return False - return zipfile.is_zipfile(location) - - -class _DistributionFinder: - """Finder to locate distributions. - - The main purpose of this class is to memoize found distributions' names, so - only one distribution is returned for each package name. At lot of pip code - assumes this (because it is setuptools's behavior), and not doing the same - can potentially cause a distribution in lower precedence path to override a - higher precedence one if the caller is not careful. - - Eventually we probably want to make it possible to see lower precedence - installations as well. It's useful feature, after all. - """ - - FoundResult = Tuple[importlib.metadata.Distribution, Optional[BasePath]] - - def __init__(self) -> None: - self._found_names: Set[NormalizedName] = set() - - def _find_impl(self, location: str) -> Iterator[FoundResult]: - """Find distributions in a location.""" - # Skip looking inside a wheel. Since a package inside a wheel is not - # always valid (due to .data directories etc.), its .dist-info entry - # should not be considered an installed distribution. - if _looks_like_wheel(location): - return - # To know exactly where we find a distribution, we have to feed in the - # paths one by one, instead of dumping the list to importlib.metadata. - for dist in importlib.metadata.distributions(path=[location]): - info_location = get_info_location(dist) - try: - raw_name = get_dist_name(dist) - except BadMetadata as e: - logger.warning("Skipping %s due to %s", info_location, e.reason) - continue - normalized_name = canonicalize_name(raw_name) - if normalized_name in self._found_names: - continue - self._found_names.add(normalized_name) - yield dist, info_location - - def find(self, location: str) -> Iterator[BaseDistribution]: - """Find distributions in a location. - - The path can be either a directory, or a ZIP archive. - """ - for dist, info_location in self._find_impl(location): - if info_location is None: - installed_location: Optional[BasePath] = None - else: - installed_location = info_location.parent - yield Distribution(dist, info_location, installed_location) - - def find_linked(self, location: str) -> Iterator[BaseDistribution]: - """Read location in egg-link files and return distributions in there. - - The path should be a directory; otherwise this returns nothing. This - follows how setuptools does this for compatibility. The first non-empty - line in the egg-link is read as a path (resolved against the egg-link's - containing directory if relative). Distributions found at that linked - location are returned. - """ - path = pathlib.Path(location) - if not path.is_dir(): - return - for child in path.iterdir(): - if child.suffix != ".egg-link": - continue - with child.open() as f: - lines = (line.strip() for line in f) - target_rel = next((line for line in lines if line), "") - if not target_rel: - continue - target_location = str(path.joinpath(target_rel)) - for dist, info_location in self._find_impl(target_location): - yield Distribution(dist, info_location, path) - - def _find_eggs_in_dir(self, location: str) -> Iterator[BaseDistribution]: - from pip._vendor.pkg_resources import find_distributions - - from pip._internal.metadata import pkg_resources as legacy - - with os.scandir(location) as it: - for entry in it: - if not entry.name.endswith(".egg"): - continue - for dist in find_distributions(entry.path): - yield legacy.Distribution(dist) - - def _find_eggs_in_zip(self, location: str) -> Iterator[BaseDistribution]: - from pip._vendor.pkg_resources import find_eggs_in_zip - - from pip._internal.metadata import pkg_resources as legacy - - try: - importer = zipimport.zipimporter(location) - except zipimport.ZipImportError: - return - for dist in find_eggs_in_zip(importer, location): - yield legacy.Distribution(dist) - - def find_eggs(self, location: str) -> Iterator[BaseDistribution]: - """Find eggs in a location. - - This actually uses the old *pkg_resources* backend. We likely want to - deprecate this so we can eventually remove the *pkg_resources* - dependency entirely. Before that, this should first emit a deprecation - warning for some versions when using the fallback since importing - *pkg_resources* is slow for those who don't need it. - """ - if os.path.isdir(location): - yield from self._find_eggs_in_dir(location) - if zipfile.is_zipfile(location): - yield from self._find_eggs_in_zip(location) - - -@functools.lru_cache(maxsize=None) # Warn a distribution exactly once. -def _emit_egg_deprecation(location: Optional[str]) -> None: - deprecated( - reason=f"Loading egg at {location} is deprecated.", - replacement="to use pip for package installation.", - gone_in="24.3", - issue=12330, - ) - - -class Environment(BaseEnvironment): - def __init__(self, paths: Sequence[str]) -> None: - self._paths = paths - - @classmethod - def default(cls) -> BaseEnvironment: - return cls(sys.path) - - @classmethod - def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: - if paths is None: - return cls(sys.path) - return cls(paths) - - def _iter_distributions(self) -> Iterator[BaseDistribution]: - finder = _DistributionFinder() - for location in self._paths: - yield from finder.find(location) - for dist in finder.find_eggs(location): - _emit_egg_deprecation(dist.location) - yield dist - # This must go last because that's how pkg_resources tie-breaks. - yield from finder.find_linked(location) - - def get_distribution(self, name: str) -> Optional[BaseDistribution]: - matches = ( - distribution - for distribution in self.iter_all_distributions() - if distribution.canonical_name == canonicalize_name(name) - ) - return next(matches, None) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py b/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py deleted file mode 100644 index bb11e5b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py +++ /dev/null @@ -1,278 +0,0 @@ -import email.message -import email.parser -import logging -import os -import zipfile -from typing import Collection, Iterable, Iterator, List, Mapping, NamedTuple, Optional - -from pip._vendor import pkg_resources -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.exceptions import InvalidWheel, NoneMetadataError, UnsupportedWheel -from pip._internal.utils.egg_link import egg_link_path_from_location -from pip._internal.utils.misc import display_path, normalize_path -from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file - -from .base import ( - BaseDistribution, - BaseEntryPoint, - BaseEnvironment, - DistributionVersion, - InfoPath, - Wheel, -) - -__all__ = ["NAME", "Distribution", "Environment"] - -logger = logging.getLogger(__name__) - -NAME = "pkg_resources" - - -class EntryPoint(NamedTuple): - name: str - value: str - group: str - - -class InMemoryMetadata: - """IMetadataProvider that reads metadata files from a dictionary. - - This also maps metadata decoding exceptions to our internal exception type. - """ - - def __init__(self, metadata: Mapping[str, bytes], wheel_name: str) -> None: - self._metadata = metadata - self._wheel_name = wheel_name - - def has_metadata(self, name: str) -> bool: - return name in self._metadata - - def get_metadata(self, name: str) -> str: - try: - return self._metadata[name].decode() - except UnicodeDecodeError as e: - # Augment the default error with the origin of the file. - raise UnsupportedWheel( - f"Error decoding metadata for {self._wheel_name}: {e} in {name} file" - ) - - def get_metadata_lines(self, name: str) -> Iterable[str]: - return pkg_resources.yield_lines(self.get_metadata(name)) - - def metadata_isdir(self, name: str) -> bool: - return False - - def metadata_listdir(self, name: str) -> List[str]: - return [] - - def run_script(self, script_name: str, namespace: str) -> None: - pass - - -class Distribution(BaseDistribution): - def __init__(self, dist: pkg_resources.Distribution) -> None: - self._dist = dist - - @classmethod - def from_directory(cls, directory: str) -> BaseDistribution: - dist_dir = directory.rstrip(os.sep) - - # Build a PathMetadata object, from path to metadata. :wink: - base_dir, dist_dir_name = os.path.split(dist_dir) - metadata = pkg_resources.PathMetadata(base_dir, dist_dir) - - # Determine the correct Distribution object type. - if dist_dir.endswith(".egg-info"): - dist_cls = pkg_resources.Distribution - dist_name = os.path.splitext(dist_dir_name)[0] - else: - assert dist_dir.endswith(".dist-info") - dist_cls = pkg_resources.DistInfoDistribution - dist_name = os.path.splitext(dist_dir_name)[0].split("-")[0] - - dist = dist_cls(base_dir, project_name=dist_name, metadata=metadata) - return cls(dist) - - @classmethod - def from_metadata_file_contents( - cls, - metadata_contents: bytes, - filename: str, - project_name: str, - ) -> BaseDistribution: - metadata_dict = { - "METADATA": metadata_contents, - } - dist = pkg_resources.DistInfoDistribution( - location=filename, - metadata=InMemoryMetadata(metadata_dict, filename), - project_name=project_name, - ) - return cls(dist) - - @classmethod - def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution: - try: - with wheel.as_zipfile() as zf: - info_dir, _ = parse_wheel(zf, name) - metadata_dict = { - path.split("/", 1)[-1]: read_wheel_metadata_file(zf, path) - for path in zf.namelist() - if path.startswith(f"{info_dir}/") - } - except zipfile.BadZipFile as e: - raise InvalidWheel(wheel.location, name) from e - except UnsupportedWheel as e: - raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") - dist = pkg_resources.DistInfoDistribution( - location=wheel.location, - metadata=InMemoryMetadata(metadata_dict, wheel.location), - project_name=name, - ) - return cls(dist) - - @property - def location(self) -> Optional[str]: - return self._dist.location - - @property - def installed_location(self) -> Optional[str]: - egg_link = egg_link_path_from_location(self.raw_name) - if egg_link: - location = egg_link - elif self.location: - location = self.location - else: - return None - return normalize_path(location) - - @property - def info_location(self) -> Optional[str]: - return self._dist.egg_info - - @property - def installed_by_distutils(self) -> bool: - # A distutils-installed distribution is provided by FileMetadata. This - # provider has a "path" attribute not present anywhere else. Not the - # best introspection logic, but pip has been doing this for a long time. - try: - return bool(self._dist._provider.path) - except AttributeError: - return False - - @property - def canonical_name(self) -> NormalizedName: - return canonicalize_name(self._dist.project_name) - - @property - def version(self) -> DistributionVersion: - return parse_version(self._dist.version) - - def is_file(self, path: InfoPath) -> bool: - return self._dist.has_metadata(str(path)) - - def iter_distutils_script_names(self) -> Iterator[str]: - yield from self._dist.metadata_listdir("scripts") - - def read_text(self, path: InfoPath) -> str: - name = str(path) - if not self._dist.has_metadata(name): - raise FileNotFoundError(name) - content = self._dist.get_metadata(name) - if content is None: - raise NoneMetadataError(self, name) - return content - - def iter_entry_points(self) -> Iterable[BaseEntryPoint]: - for group, entries in self._dist.get_entry_map().items(): - for name, entry_point in entries.items(): - name, _, value = str(entry_point).partition("=") - yield EntryPoint(name=name.strip(), value=value.strip(), group=group) - - def _metadata_impl(self) -> email.message.Message: - """ - :raises NoneMetadataError: if the distribution reports `has_metadata()` - True but `get_metadata()` returns None. - """ - if isinstance(self._dist, pkg_resources.DistInfoDistribution): - metadata_name = "METADATA" - else: - metadata_name = "PKG-INFO" - try: - metadata = self.read_text(metadata_name) - except FileNotFoundError: - if self.location: - displaying_path = display_path(self.location) - else: - displaying_path = repr(self.location) - logger.warning("No metadata found in %s", displaying_path) - metadata = "" - feed_parser = email.parser.FeedParser() - feed_parser.feed(metadata) - return feed_parser.close() - - def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: - if extras: # pkg_resources raises on invalid extras, so we sanitize. - extras = frozenset(pkg_resources.safe_extra(e) for e in extras) - extras = extras.intersection(self._dist.extras) - return self._dist.requires(extras) - - def iter_provided_extras(self) -> Iterable[str]: - return self._dist.extras - - def is_extra_provided(self, extra: str) -> bool: - return pkg_resources.safe_extra(extra) in self._dist.extras - - -class Environment(BaseEnvironment): - def __init__(self, ws: pkg_resources.WorkingSet) -> None: - self._ws = ws - - @classmethod - def default(cls) -> BaseEnvironment: - return cls(pkg_resources.working_set) - - @classmethod - def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: - return cls(pkg_resources.WorkingSet(paths)) - - def _iter_distributions(self) -> Iterator[BaseDistribution]: - for dist in self._ws: - yield Distribution(dist) - - def _search_distribution(self, name: str) -> Optional[BaseDistribution]: - """Find a distribution matching the ``name`` in the environment. - - This searches from *all* distributions available in the environment, to - match the behavior of ``pkg_resources.get_distribution()``. - """ - canonical_name = canonicalize_name(name) - for dist in self.iter_all_distributions(): - if dist.canonical_name == canonical_name: - return dist - return None - - def get_distribution(self, name: str) -> Optional[BaseDistribution]: - # Search the distribution by looking through the working set. - dist = self._search_distribution(name) - if dist: - return dist - - # If distribution could not be found, call working_set.require to - # update the working set, and try to find the distribution again. - # This might happen for e.g. when you install a package twice, once - # using setup.py develop and again using setup.py install. Now when - # running pip uninstall twice, the package gets removed from the - # working set in the first uninstall, so we have to populate the - # working set again so that pip knows about it and the packages gets - # picked up and is successfully uninstalled the second time too. - try: - # We didn't pass in any version specifiers, so this can never - # raise pkg_resources.VersionConflict. - self._ws.require(name) - except pkg_resources.DistributionNotFound: - return None - return self._search_distribution(name) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py deleted file mode 100644 index 7855226..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -"""A package that contains models that represent entities. -""" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index a7bc8574d02c7ccf15b8aeae5052ad62fc547868..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmYjMyG{c!5cH+t6e<7UHbrhhG$|q;KR^K;jb-f3-6|K`@@^u9nxEm9(()Hn>=6n^ znpw>hyR&(*m>b1M^Sr&+`8ApUXw*C?xmAhg)x_q-ENAcQM_YW@`5vtdUTnxoJSDdK z9C74JSg}-OOk$NJgxt-amd*LfxtN1JbAP);)Bblcrr1C!wDuM9(>0*;bkO@4$+8*rMCIMvq F`2mzFOdkLM diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc deleted file mode 100644 index 8b3939583e536219cd7bcef76d01f7356f5ef126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441 zcmZ`(L5~wR6t-tPlWa&rQ5Px@i>91*q%za02ys9Nv4^Sx_5c!xxmfPl3Bx)wgYB%? z5Kg-iCw>7!g7&n3X|A033rMZ{-XvK9EROv096#IN_r3R04F){|S{o@nz0T=6o z!Qu`~dlQT#l4>%cnMcw0v_D}PYkgk_lQ0V@`GZI%gCimX6(0IoM~06`-1!KnNlcrd z7RD-Y*!`m1gYV6I>fo-hO72t>*i#RR=S7)g^!n&77xpnYieyxh%#$?p$AIE*nlb6C zKr)!{stjdk)O|%pRCeXYQ6Dj=VC2c3Jafdd?sC?>p8zJ_UF zY&t-|ARV&-rU{L5Q&aBdsPk%|j}!7i>Pp&lUzPi* zF8)gE1NWpVe@}kH>4iz{WrUEYATZzpPa&x)j%Kl?ZC8~U?hEql7iF=S>OAun6voSskd&w_}RSt zCHidR+aOg4B{3218?np}@PhgA#NdM{w1Fby`~s{jb|jj3Z;>{$=Y zWjfnBRUQz%jf~GAP3#HIn;z$o(y2zj&-t^d(90dTSXMdw3`J#i);?(D|hYzs;)fhH(rWs*hx zL7gV6u0V2T0H(Rv2Cix{S=40Gwl#ulE`7N_b%nOeD1-gnzPJXmg}ccAt%Vx5u@)`< MJ@iT6>(fpDf77XH?*IS* diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc deleted file mode 100644 index d6a0ea6d57d470e08bd8d0afad5237a072d4e236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7712 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc deleted file mode 100644 index 511dd36c5e372d7bbab5955b481ca0e9ffd6d78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2734 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc deleted file mode 100644 index 274233a08b1a04097712a515cb7e2e28c864f7f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1753 zcmZ`(&2Jnv6t_Lznc3ZJDQQAQDI)3xEmCJ%ap4d}MN}Yq$RWLrgv>DZCX;wRVtWIL zwih-My>g~V$+7>Euben=eoC&No3!#T?a zGI~zN@tB_R@lc2}Wo+5h zLcn(O+uFKZ>jSu08ih&)+Fk!5*gSz{4}d6=QAsi;sR|VTkW83lGPvYfPlb{zE_*6c zvFcA4oN*b-=#tMV_`EJ>GM0U~Gn4~}Wcb#L+<{*Qs%?z(TjjztVg7T?77ScieaPeb z3YNtr%;<~=z!PlJeF$z_++<_SJhw_uOdqbiCT0Wv{y9yLno6aI)3Pv4p`0tzlP_#) z3zN5HefY3#q)pEN%2by>r0uyoYUwt|b<#L(3+~0mH6zV5uayuTF_aPo1xdv<$&TQh2>#{yEcaR-Ttun$++g6uo z>QFgQv@RR1jCS{YxUlC#3-~LEjZe!q} z{)%_dd;0ht8(2JO0|Bug068Qx@?G?Tz9d(W?rZuhJB6fm(T%D31T>%vSn{X~|1~u* zxE80Ti+!-G0l}iF+Pwr#Vrhj?p5dE|BKPV-WHV$j+U$;_002 z{ER^bXG}MnVzNnDaG&10Z&1DuQ!jMqI9nE`&~o>5_A$Ve08X`ROtP3Ppp{g)If235 t!QunZ>7ZI_uSQM+?SpGoyNfvR!J9nv@$LeHJuJe`%`LLQ;72!ue*qMb#}xno diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc deleted file mode 100644 index c70e3700b36679b97c360b8114df9df3ad35ce37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18087 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc deleted file mode 100644 index e2b08d35142e602c3ab218873e606cda11af64f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3550 zcmb7GTW=f372cV>a7j^;FY+Z$3oPs;4GV{KP#{fR*L9J!MFCfEqo5B2g3WqoNUpTp zUCj(-o27~t5|H$v5B&#p9}4)jKWAV2)W6_d-0#d`cS$N3KpPChOMchK}9gm47QoniB4LuSW($nD!5y7ui2eY|-dOk2YiBV9KS zr|n_e_Px9_T^X*}zMpretHV{>5AwC?`fz=EW_X44xKi1I%4I}8+HV2jJW8ERg6}|nrval+8udfU7W#eSG0k^ z*?MJ5CMun5rDY}Ozv)DHeqE$VrDu6!q>ju)MtPYgCMydXB_^t}D#~<}mc=L=&#?2z zl##Y(`qsb`x9*IxLd1Di?C83Ku6#&{=sGOQ*bWtuMXiwNLeznhW~PeN!{F!%(ecqf zLbI5Soqcb?K6XC4yzejkB{=k$sY`|}`~$Wh7{2W;y+uHCivSwl5?YTLb9Oxw960*t zrnL+geBnLju(7f4oA!2Rxk5Votwn3QEBFpqH_hsDO}O+Oa|*Wm&ca!E_{tUD-(6tl z&;MX|Nl<;HBv6Wy=md&Ud4F4`CQ3#|s_2L)SuwU)etrzh=M7q9=PCPh?N5xU^gMeN z-UpePoDPDLyR%Hm=+nDfgRQN**P}`KKMC4$x;>bbQ#lyVvQ(9+G$tGDe5eOHRY`@vd9Nyk9_-0tZvgiO zl?CD_{r7JSH1_abm83h#Sn2^FAApwFR*~cbASZJev5by2Wk$bxR0pXI_8a(L{bLAk zJ!BmgvM%$`0`ClD2Yt@GXP(cW@{ps?S@6yL+zER08#9|PF`Zb?(Ja$1qO)KNCw9O( zCuR#55+~!9^Mq|SLGx-)%Y1YSKZ{8tuE9nf#@JM5;@Fy{&;~&OALkn<{W(%f85E8l zQl|8?U;Yanq#i?qL)(tJNz$-wK4v>^GeScBaNjlV!bK{2#@qIn0TPW-qHecz4>Hs} z(_VH2qXcBw98wP&NYAqiwp*%j_`b-^Dat!W-5%}BbQ7e@3Se8po7_ZqAp=pk>56hb(LpEU7=x6NCR`~O;Y#)i48m5 z{BP}Tmsw%C*bCGu30Za2y{}`#xahaLO zbf@_a5Lv$>oal7aPjUW6?~XF14UyKCYr4xc^o^22ys$C@<;?_T;Drs;ZR}OdQsh9M zAD5UHpV(ljRqXT?q7!$|qv<|`ah5o+ngVS6FPq%t`wY1oP?6Rb7EG{9I71eM1>bzi z2EA6@u1cLfq)MaShm{iq^mk_^j$;D44pDh*b?WhkJTAD1?D;8ua+Sn2Qd^tu(8j7q zRYsJ4fH_T93y+-v5jtTAqReldCcrV=ugjg6O}>Hwalv9h=`f~b5BAxYHrfBdclp+H z_pFcaLIqC$0!GR1T| zj&)udjqXaCCt6P>?kPeM1nQR%wRazv4D}X`e?;N~5_d>gM2`jSMNzpri>7ZtgpS8U zk8_k?&c6*@{tfr|*WB-Z#d|N$biP{aT)Aey?p;t9@NM0q+X||HB6I3zG}Q&8aE0jG z>xboO9T+eTO5|_-Caw_u7&i@3Dk#yt0&D%5$#BcDEWTnjjxHJf=91B5yCR_LQwsLe zJ~1OP&AsdL%N81iX@<)VRcm{M*KGv!uDxriU(uvJu?d;iK~{&injqb#(r+tP=!Ce^ Q(67t796uyaho5u*2OQq6`~Uy| diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc deleted file mode 100644 index e298eedbbc43bb53a967af8f9113742b15aebd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmZ`(TaOzx6!v&7xsYt7svvkkvdT+?*qKs<1S^D!mWCG;R;>_HUMy$qBxYyqsqJh? z6`t5%!dw5+yz<0PV7Z9nnWUSD#Up<@zMSK4zH@9n9QF~k>)`p^b`bi_4-Q)hgQw8# zhX5S$pg?6X4FYfD0+-=54A3`-hdjDQJo*JsBObp%qvUtkk48b={jPFSD^`F#9BWfD zcdnH)y2$;G!#0G$Q|R_v0D-0fM^ns$X}Ey1ehsEkFYGm)4|yzNo@ z>=^7mkLCmZ79U*4(=LyI%}M>>g(yVsnOqn#7e=UD*jKzypgmJLtL&;^PFUiWg5*qb z$ze$B-iuVXZe*?v;d-qK&A3#HCJ49?sjOo~0aIiy3t`h{<#k*SU{$lqx zAcd#~j$l^U`UJv)Iy7(PsfX>6bS4!uoBAEOP}&G;#LJa5!qRHvmRgM`CIPt&BoCRc zhn@$Y)jBc4t&Gb3hJEukhJFs+rU2WR2PV?-f3)m|-P3RN;*LuoNJ+X{911GoTG&mb5C7M^ZJ( zutHh!CX$b)=j7tq1^M*zCnLg)AeAtsbPl|oCbNU|*(OuFthC8EU~??@8TpDFmFMm+ z2;_RAl}O3=wmo5&pCd}XYHn)<2wJ@|IZ$KyC0jsQWu#5x?aX>96oFV!cy3=ro}F(# zoK#%=M0{C6L0#@@$uI82JgSacH9>-Q1zd?P_(x>6a^#8?(wj{w9Wm$9I-;*24~!_W z-V^uJ|55Dj3OqWy-2&uuT~^G=S#g}ZhtGHAdwS87??X>*1p+~~+y5kAi#Y>L;3{e| zW`z~EJSJlkL&=VkIs&!l|6BR5k@1hoO_?oqDYC^%=0@kjIhkF4W;2@`R)OZHmF70P z66z`|$1xlOB0-KDTgI!fR5 zm+J(e`ydJuoCN;s2e010>$;?SuTeCfj3=X>kE2*AD6RXH!f~s@+XG5pu2`{K=}^jb z4%0nKZK0h7Gn#2#7=OD>=;59RFT??ORwe@Q4}pCI&_z+ujqyDk_%FJ_82^Jq{C5)J zzi^EIOcH#9J12iMUXxK=CvM}_YYwVE0CCbc;-sxO>G9oa+4w^bh%~%Bo4Wf&`;T7+ No|5M^Km&X~{1>O>-Le1x diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc deleted file mode 100644 index 4a160ce403cc659bae84eb25b814a4aa570f5539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3814 zcmcInU5^|`7453->FMd6{jkBt8$zh?02#ENNn((YWvn1#J_OoWi9uo@>hw<4%(mSh zld77vXSFMVY#w>xH9~R_FTC-4`jsdD1;^l=TRpoovj*Pi-ma;tzEyqe-c#q)R-2o# zhwBOZaQu%Q&-*7eRxclo_wbk@3h7Cfdqeu=IV<>(7yi&Mf?-g!hAl?@ejXO>VcXS% zJSsZFP7x1d*KXw-MR(X`-cLOl%JvgawjcB1req&^z33U{_x5{19sDvgwvIlS+N>(m zy!Jm*wr<^@;_wSO<2^mx5FQ8qEN>9o>T$@R;I~==jYoFUvr+RH)j!-mWKGs7IZ{2lJ5psb zov+2T4$_0n)LU7BOckoMDJ8J(OyM5pFH9XTN7UQPx=UKUksKjUGO_8z)Y~hK#3;M3 zw~!YNfO>u1rRpY%I>eG@x*WC8IJ-hr+IW79$K)tZ_=%UGlx*hdZOiVXCix$cuTx$I z)<5Bo*(sO))4;ZDNOm%yw~zVf?6h^_V|4o@KpCAdl%10n%Gk}iA*rY9$_B=*^p@{= zE>e`Bo6}UMg*XqvP4Od<1KyM!V>QB$L}{^)r1Ztl$F8y`j7s(B5IIEH&Zna3773zU zr&gp|iSsQW4(1L4qnXx-y)biQRnZq802caTX4IZ|nC1D}bmOd)7v>zLr8rRHV3y@@ zvTQ(gmO$7Vqa^Ur7x&%|UPkOKw~R2_1Kt;EbI z@s{dO`r;D=w7*IrzrA_m<4<}^zsR?HhuB#Z!o&1PiCmQvdnn%76YuU(mT!oMhpMDK zdXz~emqQmQq3!cO0pg~|7Zz!-)!Ir%RWXI*2U(ukx!Xql>HIrJtTE+VJu#k@BMQGr z4T#_sFV?p&`O^S(iPQhD8~e|&fxMdapK<*5wlq<5?IZkkcQyXHL;b=1Dl2QhNT)Ed zddUq9VQj<3v4*}xwaX}aVI3HikC%+HGKlQ|?&)vf=lO%dVO6NXWR{I|HB#1Qg9kq_ z12fX;6iB*0t)v-%2ag7Mb}*PaUcS+P=k0;Xth#=-8wS&CIsn6gdLd?mqLL~%gNA*< zphV_KQynF+$!wCmj!&CwD8j1|-(eBI#zP*m#qG!J_{ypf^v}kP7{;7k6hY!d$AM0` z*(sRnKID7G^kvDPGU?0UiAR0!dyg5Ij!E#^eGVlGPZ-KJT0VXw{03t_3BZvZjEmhk z-i(4WZ5+RU4#S_gz2iv3NyMHgtMWRrn@DZ5?;BPl9snt>Z0mh}1rD#Rg7Qx*G4xPK z{s4bJZl5yiov_F3*BY`@3!*I|K^0q?(E2cTW+ve*=F;8oqZHBqH{G}X6% zK@&zO`0oQRV)4u4y|tJ&6ws(#|CVDQbGv^&yg?2*v_#HxCf0l>zXSRVJ>Ny)eBb#U zKZVvnV?5-6pRmu6krVzI|BJt}8ovLW{m?ny^R>X(+JB(tbqo49Qx{gHzlHa|!edAk zX+2%WUv{ykUd!zqy^H?F<8$4_v;?zydy$1R8Lwk}hm?1w%!TjN-PNGnp%1=>A_!s@ zvw%e}qgKcw+`)@D14CCa;KnP;Ii4!96_xPXhjzjxb1Yn9haRr{05dT zhjAGC5eO#YxR6V_!xv!~^5fUna(H2awKNj@5awMPX}cjQO&Yrv%=46g4wk`L=`1hFXd(R-^j|=VLk}=2aQ<~rMeLW_ zwhzb?`9ma>)z?u2VbC797^O?J$XRKYK4@4OLTKFDVu;Bbuf$}{ycg`_>g^DtmsnMj z)Nzu4_GdZOyGiotEX@~h+DRg-5xP4`V)DwGB+(Q_P1NTIO%sjRKJ-I>llpp8kT-4- zns$#KP(hNlQcwys{bxsyBcR9&c+}#XoY5V85p(|UEua4@4)}|(#lPTT{Cul-`KwoV z-8cyE*D$mW?VQxE@yPk+zDaHkUxT*wK^~>7biWZinD!m|$jAEI&frY^`Z)FFrvK_W vr9m~}yT10HMid!Dm*n1gwz5jMXh-hRttP~`35bphBkvmP@*Un~m;EmR?eFEG diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index 08f893c0c1bcc1e57542ea5e2c944f3c9c1900a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4467 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 W6z1Ec9@^vvGQ(MAExTo}IR64V)V@{# diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py b/venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py deleted file mode 100644 index 9184a90..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py +++ /dev/null @@ -1,30 +0,0 @@ -from pip._vendor.packaging.version import parse as parse_version - -from pip._internal.models.link import Link -from pip._internal.utils.models import KeyBasedCompareMixin - - -class InstallationCandidate(KeyBasedCompareMixin): - """Represents a potential "candidate" for installation.""" - - __slots__ = ["name", "version", "link"] - - def __init__(self, name: str, version: str, link: Link) -> None: - self.name = name - self.version = parse_version(version) - self.link = link - - super().__init__( - key=(self.name, self.version, self.link), - defining_class=InstallationCandidate, - ) - - def __repr__(self) -> str: - return "".format( - self.name, - self.version, - self.link, - ) - - def __str__(self) -> str: - return f"{self.name!r} candidate (version {self.version} at {self.link})" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py b/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py deleted file mode 100644 index 0af884b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py +++ /dev/null @@ -1,235 +0,0 @@ -""" PEP 610 """ -import json -import re -import urllib.parse -from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union - -__all__ = [ - "DirectUrl", - "DirectUrlValidationError", - "DirInfo", - "ArchiveInfo", - "VcsInfo", -] - -T = TypeVar("T") - -DIRECT_URL_METADATA_NAME = "direct_url.json" -ENV_VAR_RE = re.compile(r"^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$") - - -class DirectUrlValidationError(Exception): - pass - - -def _get( - d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None -) -> Optional[T]: - """Get value from dictionary and verify expected type.""" - if key not in d: - return default - value = d[key] - if not isinstance(value, expected_type): - raise DirectUrlValidationError( - f"{value!r} has unexpected type for {key} (expected {expected_type})" - ) - return value - - -def _get_required( - d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None -) -> T: - value = _get(d, expected_type, key, default) - if value is None: - raise DirectUrlValidationError(f"{key} must have a value") - return value - - -def _exactly_one_of(infos: Iterable[Optional["InfoType"]]) -> "InfoType": - infos = [info for info in infos if info is not None] - if not infos: - raise DirectUrlValidationError( - "missing one of archive_info, dir_info, vcs_info" - ) - if len(infos) > 1: - raise DirectUrlValidationError( - "more than one of archive_info, dir_info, vcs_info" - ) - assert infos[0] is not None - return infos[0] - - -def _filter_none(**kwargs: Any) -> Dict[str, Any]: - """Make dict excluding None values.""" - return {k: v for k, v in kwargs.items() if v is not None} - - -class VcsInfo: - name = "vcs_info" - - def __init__( - self, - vcs: str, - commit_id: str, - requested_revision: Optional[str] = None, - ) -> None: - self.vcs = vcs - self.requested_revision = requested_revision - self.commit_id = commit_id - - @classmethod - def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]: - if d is None: - return None - return cls( - vcs=_get_required(d, str, "vcs"), - commit_id=_get_required(d, str, "commit_id"), - requested_revision=_get(d, str, "requested_revision"), - ) - - def _to_dict(self) -> Dict[str, Any]: - return _filter_none( - vcs=self.vcs, - requested_revision=self.requested_revision, - commit_id=self.commit_id, - ) - - -class ArchiveInfo: - name = "archive_info" - - def __init__( - self, - hash: Optional[str] = None, - hashes: Optional[Dict[str, str]] = None, - ) -> None: - # set hashes before hash, since the hash setter will further populate hashes - self.hashes = hashes - self.hash = hash - - @property - def hash(self) -> Optional[str]: - return self._hash - - @hash.setter - def hash(self, value: Optional[str]) -> None: - if value is not None: - # Auto-populate the hashes key to upgrade to the new format automatically. - # We don't back-populate the legacy hash key from hashes. - try: - hash_name, hash_value = value.split("=", 1) - except ValueError: - raise DirectUrlValidationError( - f"invalid archive_info.hash format: {value!r}" - ) - if self.hashes is None: - self.hashes = {hash_name: hash_value} - elif hash_name not in self.hashes: - self.hashes = self.hashes.copy() - self.hashes[hash_name] = hash_value - self._hash = value - - @classmethod - def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveInfo"]: - if d is None: - return None - return cls(hash=_get(d, str, "hash"), hashes=_get(d, dict, "hashes")) - - def _to_dict(self) -> Dict[str, Any]: - return _filter_none(hash=self.hash, hashes=self.hashes) - - -class DirInfo: - name = "dir_info" - - def __init__( - self, - editable: bool = False, - ) -> None: - self.editable = editable - - @classmethod - def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]: - if d is None: - return None - return cls(editable=_get_required(d, bool, "editable", default=False)) - - def _to_dict(self) -> Dict[str, Any]: - return _filter_none(editable=self.editable or None) - - -InfoType = Union[ArchiveInfo, DirInfo, VcsInfo] - - -class DirectUrl: - def __init__( - self, - url: str, - info: InfoType, - subdirectory: Optional[str] = None, - ) -> None: - self.url = url - self.info = info - self.subdirectory = subdirectory - - def _remove_auth_from_netloc(self, netloc: str) -> str: - if "@" not in netloc: - return netloc - user_pass, netloc_no_user_pass = netloc.split("@", 1) - if ( - isinstance(self.info, VcsInfo) - and self.info.vcs == "git" - and user_pass == "git" - ): - return netloc - if ENV_VAR_RE.match(user_pass): - return netloc - return netloc_no_user_pass - - @property - def redacted_url(self) -> str: - """url with user:password part removed unless it is formed with - environment variables as specified in PEP 610, or it is ``git`` - in the case of a git URL. - """ - purl = urllib.parse.urlsplit(self.url) - netloc = self._remove_auth_from_netloc(purl.netloc) - surl = urllib.parse.urlunsplit( - (purl.scheme, netloc, purl.path, purl.query, purl.fragment) - ) - return surl - - def validate(self) -> None: - self.from_dict(self.to_dict()) - - @classmethod - def from_dict(cls, d: Dict[str, Any]) -> "DirectUrl": - return DirectUrl( - url=_get_required(d, str, "url"), - subdirectory=_get(d, str, "subdirectory"), - info=_exactly_one_of( - [ - ArchiveInfo._from_dict(_get(d, dict, "archive_info")), - DirInfo._from_dict(_get(d, dict, "dir_info")), - VcsInfo._from_dict(_get(d, dict, "vcs_info")), - ] - ), - ) - - def to_dict(self) -> Dict[str, Any]: - res = _filter_none( - url=self.redacted_url, - subdirectory=self.subdirectory, - ) - res[self.info.name] = self.info._to_dict() - return res - - @classmethod - def from_json(cls, s: str) -> "DirectUrl": - return cls.from_dict(json.loads(s)) - - def to_json(self) -> str: - return json.dumps(self.to_dict(), sort_keys=True) - - def is_local_editable(self) -> bool: - return isinstance(self.info, DirInfo) and self.info.editable diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py b/venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py deleted file mode 100644 index ccd1127..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py +++ /dev/null @@ -1,78 +0,0 @@ -from typing import FrozenSet, Optional, Set - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.exceptions import CommandError - - -class FormatControl: - """Helper for managing formats from which a package can be installed.""" - - __slots__ = ["no_binary", "only_binary"] - - def __init__( - self, - no_binary: Optional[Set[str]] = None, - only_binary: Optional[Set[str]] = None, - ) -> None: - if no_binary is None: - no_binary = set() - if only_binary is None: - only_binary = set() - - self.no_binary = no_binary - self.only_binary = only_binary - - def __eq__(self, other: object) -> bool: - if not isinstance(other, self.__class__): - return NotImplemented - - if self.__slots__ != other.__slots__: - return False - - return all(getattr(self, k) == getattr(other, k) for k in self.__slots__) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self.no_binary}, {self.only_binary})" - - @staticmethod - def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None: - if value.startswith("-"): - raise CommandError( - "--no-binary / --only-binary option requires 1 argument." - ) - new = value.split(",") - while ":all:" in new: - other.clear() - target.clear() - target.add(":all:") - del new[: new.index(":all:") + 1] - # Without a none, we want to discard everything as :all: covers it - if ":none:" not in new: - return - for name in new: - if name == ":none:": - target.clear() - continue - name = canonicalize_name(name) - other.discard(name) - target.add(name) - - def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]: - result = {"binary", "source"} - if canonical_name in self.only_binary: - result.discard("source") - elif canonical_name in self.no_binary: - result.discard("binary") - elif ":all:" in self.only_binary: - result.discard("source") - elif ":all:" in self.no_binary: - result.discard("binary") - return frozenset(result) - - def disallow_binaries(self) -> None: - self.handle_mutual_excludes( - ":all:", - self.no_binary, - self.only_binary, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/index.py b/venv/lib/python3.10/site-packages/pip/_internal/models/index.py deleted file mode 100644 index b94c325..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/index.py +++ /dev/null @@ -1,28 +0,0 @@ -import urllib.parse - - -class PackageIndex: - """Represents a Package Index and provides easier access to endpoints""" - - __slots__ = ["url", "netloc", "simple_url", "pypi_url", "file_storage_domain"] - - def __init__(self, url: str, file_storage_domain: str) -> None: - super().__init__() - self.url = url - self.netloc = urllib.parse.urlsplit(url).netloc - self.simple_url = self._url_for_path("simple") - self.pypi_url = self._url_for_path("pypi") - - # This is part of a temporary hack used to block installs of PyPI - # packages which depend on external urls only necessary until PyPI can - # block such packages themselves - self.file_storage_domain = file_storage_domain - - def _url_for_path(self, path: str) -> str: - return urllib.parse.urljoin(self.url, path) - - -PyPI = PackageIndex("https://pypi.org/", file_storage_domain="files.pythonhosted.org") -TestPyPI = PackageIndex( - "https://test.pypi.org/", file_storage_domain="test-files.pythonhosted.org" -) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py b/venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py deleted file mode 100644 index b9c6330..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Any, Dict, Sequence - -from pip._vendor.packaging.markers import default_environment - -from pip import __version__ -from pip._internal.req.req_install import InstallRequirement - - -class InstallationReport: - def __init__(self, install_requirements: Sequence[InstallRequirement]): - self._install_requirements = install_requirements - - @classmethod - def _install_req_to_dict(cls, ireq: InstallRequirement) -> Dict[str, Any]: - assert ireq.download_info, f"No download_info for {ireq}" - res = { - # PEP 610 json for the download URL. download_info.archive_info.hashes may - # be absent when the requirement was installed from the wheel cache - # and the cache entry was populated by an older pip version that did not - # record origin.json. - "download_info": ireq.download_info.to_dict(), - # is_direct is true if the requirement was a direct URL reference (which - # includes editable requirements), and false if the requirement was - # downloaded from a PEP 503 index or --find-links. - "is_direct": ireq.is_direct, - # is_yanked is true if the requirement was yanked from the index, but - # was still selected by pip to conform to PEP 592. - "is_yanked": ireq.link.is_yanked if ireq.link else False, - # requested is true if the requirement was specified by the user (aka - # top level requirement), and false if it was installed as a dependency of a - # requirement. https://peps.python.org/pep-0376/#requested - "requested": ireq.user_supplied, - # PEP 566 json encoding for metadata - # https://www.python.org/dev/peps/pep-0566/#json-compatible-metadata - "metadata": ireq.get_dist().metadata_dict, - } - if ireq.user_supplied and ireq.extras: - # For top level requirements, the list of requested extras, if any. - res["requested_extras"] = sorted(ireq.extras) - return res - - def to_dict(self) -> Dict[str, Any]: - return { - "version": "1", - "pip_version": __version__, - "install": [ - self._install_req_to_dict(ireq) for ireq in self._install_requirements - ], - # https://peps.python.org/pep-0508/#environment-markers - # TODO: currently, the resolver uses the default environment to evaluate - # environment markers, so that is what we report here. In the future, it - # should also take into account options such as --python-version or - # --platform, perhaps under the form of an environment_override field? - # https://github.com/pypa/pip/issues/11198 - "environment": default_environment(), - } diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/link.py b/venv/lib/python3.10/site-packages/pip/_internal/models/link.py deleted file mode 100644 index 73041b8..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/link.py +++ /dev/null @@ -1,579 +0,0 @@ -import functools -import itertools -import logging -import os -import posixpath -import re -import urllib.parse -from dataclasses import dataclass -from typing import ( - TYPE_CHECKING, - Any, - Dict, - List, - Mapping, - NamedTuple, - Optional, - Tuple, - Union, -) - -from pip._internal.utils.deprecation import deprecated -from pip._internal.utils.filetypes import WHEEL_EXTENSION -from pip._internal.utils.hashes import Hashes -from pip._internal.utils.misc import ( - pairwise, - redact_auth_from_url, - split_auth_from_netloc, - splitext, -) -from pip._internal.utils.models import KeyBasedCompareMixin -from pip._internal.utils.urls import path_to_url, url_to_path - -if TYPE_CHECKING: - from pip._internal.index.collector import IndexContent - -logger = logging.getLogger(__name__) - - -# Order matters, earlier hashes have a precedence over later hashes for what -# we will pick to use. -_SUPPORTED_HASHES = ("sha512", "sha384", "sha256", "sha224", "sha1", "md5") - - -@dataclass(frozen=True) -class LinkHash: - """Links to content may have embedded hash values. This class parses those. - - `name` must be any member of `_SUPPORTED_HASHES`. - - This class can be converted to and from `ArchiveInfo`. While ArchiveInfo intends to - be JSON-serializable to conform to PEP 610, this class contains the logic for - parsing a hash name and value for correctness, and then checking whether that hash - conforms to a schema with `.is_hash_allowed()`.""" - - name: str - value: str - - _hash_url_fragment_re = re.compile( - # NB: we do not validate that the second group (.*) is a valid hex - # digest. Instead, we simply keep that string in this class, and then check it - # against Hashes when hash-checking is needed. This is easier to debug than - # proactively discarding an invalid hex digest, as we handle incorrect hashes - # and malformed hashes in the same place. - r"[#&]({choices})=([^&]*)".format( - choices="|".join(re.escape(hash_name) for hash_name in _SUPPORTED_HASHES) - ), - ) - - def __post_init__(self) -> None: - assert self.name in _SUPPORTED_HASHES - - @classmethod - @functools.lru_cache(maxsize=None) - def find_hash_url_fragment(cls, url: str) -> Optional["LinkHash"]: - """Search a string for a checksum algorithm name and encoded output value.""" - match = cls._hash_url_fragment_re.search(url) - if match is None: - return None - name, value = match.groups() - return cls(name=name, value=value) - - def as_dict(self) -> Dict[str, str]: - return {self.name: self.value} - - def as_hashes(self) -> Hashes: - """Return a Hashes instance which checks only for the current hash.""" - return Hashes({self.name: [self.value]}) - - def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: - """ - Return True if the current hash is allowed by `hashes`. - """ - if hashes is None: - return False - return hashes.is_hash_allowed(self.name, hex_digest=self.value) - - -@dataclass(frozen=True) -class MetadataFile: - """Information about a core metadata file associated with a distribution.""" - - hashes: Optional[Dict[str, str]] - - def __post_init__(self) -> None: - if self.hashes is not None: - assert all(name in _SUPPORTED_HASHES for name in self.hashes) - - -def supported_hashes(hashes: Optional[Dict[str, str]]) -> Optional[Dict[str, str]]: - # Remove any unsupported hash types from the mapping. If this leaves no - # supported hashes, return None - if hashes is None: - return None - hashes = {n: v for n, v in hashes.items() if n in _SUPPORTED_HASHES} - if not hashes: - return None - return hashes - - -def _clean_url_path_part(part: str) -> str: - """ - Clean a "part" of a URL path (i.e. after splitting on "@" characters). - """ - # We unquote prior to quoting to make sure nothing is double quoted. - return urllib.parse.quote(urllib.parse.unquote(part)) - - -def _clean_file_url_path(part: str) -> str: - """ - Clean the first part of a URL path that corresponds to a local - filesystem path (i.e. the first part after splitting on "@" characters). - """ - # We unquote prior to quoting to make sure nothing is double quoted. - # Also, on Windows the path part might contain a drive letter which - # should not be quoted. On Linux where drive letters do not - # exist, the colon should be quoted. We rely on urllib.request - # to do the right thing here. - return urllib.request.pathname2url(urllib.request.url2pathname(part)) - - -# percent-encoded: / -_reserved_chars_re = re.compile("(@|%2F)", re.IGNORECASE) - - -def _clean_url_path(path: str, is_local_path: bool) -> str: - """ - Clean the path portion of a URL. - """ - if is_local_path: - clean_func = _clean_file_url_path - else: - clean_func = _clean_url_path_part - - # Split on the reserved characters prior to cleaning so that - # revision strings in VCS URLs are properly preserved. - parts = _reserved_chars_re.split(path) - - cleaned_parts = [] - for to_clean, reserved in pairwise(itertools.chain(parts, [""])): - cleaned_parts.append(clean_func(to_clean)) - # Normalize %xx escapes (e.g. %2f -> %2F) - cleaned_parts.append(reserved.upper()) - - return "".join(cleaned_parts) - - -def _ensure_quoted_url(url: str) -> str: - """ - Make sure a link is fully quoted. - For example, if ' ' occurs in the URL, it will be replaced with "%20", - and without double-quoting other characters. - """ - # Split the URL into parts according to the general structure - # `scheme://netloc/path;parameters?query#fragment`. - result = urllib.parse.urlparse(url) - # If the netloc is empty, then the URL refers to a local filesystem path. - is_local_path = not result.netloc - path = _clean_url_path(result.path, is_local_path=is_local_path) - return urllib.parse.urlunparse(result._replace(path=path)) - - -class Link(KeyBasedCompareMixin): - """Represents a parsed link from a Package Index's simple URL""" - - __slots__ = [ - "_parsed_url", - "_url", - "_hashes", - "comes_from", - "requires_python", - "yanked_reason", - "metadata_file_data", - "cache_link_parsing", - "egg_fragment", - ] - - def __init__( - self, - url: str, - comes_from: Optional[Union[str, "IndexContent"]] = None, - requires_python: Optional[str] = None, - yanked_reason: Optional[str] = None, - metadata_file_data: Optional[MetadataFile] = None, - cache_link_parsing: bool = True, - hashes: Optional[Mapping[str, str]] = None, - ) -> None: - """ - :param url: url of the resource pointed to (href of the link) - :param comes_from: instance of IndexContent where the link was found, - or string. - :param requires_python: String containing the `Requires-Python` - metadata field, specified in PEP 345. This may be specified by - a data-requires-python attribute in the HTML link tag, as - described in PEP 503. - :param yanked_reason: the reason the file has been yanked, if the - file has been yanked, or None if the file hasn't been yanked. - This is the value of the "data-yanked" attribute, if present, in - a simple repository HTML link. If the file has been yanked but - no reason was provided, this should be the empty string. See - PEP 592 for more information and the specification. - :param metadata_file_data: the metadata attached to the file, or None if - no such metadata is provided. This argument, if not None, indicates - that a separate metadata file exists, and also optionally supplies - hashes for that file. - :param cache_link_parsing: A flag that is used elsewhere to determine - whether resources retrieved from this link should be cached. PyPI - URLs should generally have this set to False, for example. - :param hashes: A mapping of hash names to digests to allow us to - determine the validity of a download. - """ - - # The comes_from, requires_python, and metadata_file_data arguments are - # only used by classmethods of this class, and are not used in client - # code directly. - - # url can be a UNC windows share - if url.startswith("\\\\"): - url = path_to_url(url) - - self._parsed_url = urllib.parse.urlsplit(url) - # Store the url as a private attribute to prevent accidentally - # trying to set a new value. - self._url = url - - link_hash = LinkHash.find_hash_url_fragment(url) - hashes_from_link = {} if link_hash is None else link_hash.as_dict() - if hashes is None: - self._hashes = hashes_from_link - else: - self._hashes = {**hashes, **hashes_from_link} - - self.comes_from = comes_from - self.requires_python = requires_python if requires_python else None - self.yanked_reason = yanked_reason - self.metadata_file_data = metadata_file_data - - super().__init__(key=url, defining_class=Link) - - self.cache_link_parsing = cache_link_parsing - self.egg_fragment = self._egg_fragment() - - @classmethod - def from_json( - cls, - file_data: Dict[str, Any], - page_url: str, - ) -> Optional["Link"]: - """ - Convert an pypi json document from a simple repository page into a Link. - """ - file_url = file_data.get("url") - if file_url is None: - return None - - url = _ensure_quoted_url(urllib.parse.urljoin(page_url, file_url)) - pyrequire = file_data.get("requires-python") - yanked_reason = file_data.get("yanked") - hashes = file_data.get("hashes", {}) - - # PEP 714: Indexes must use the name core-metadata, but - # clients should support the old name as a fallback for compatibility. - metadata_info = file_data.get("core-metadata") - if metadata_info is None: - metadata_info = file_data.get("dist-info-metadata") - - # The metadata info value may be a boolean, or a dict of hashes. - if isinstance(metadata_info, dict): - # The file exists, and hashes have been supplied - metadata_file_data = MetadataFile(supported_hashes(metadata_info)) - elif metadata_info: - # The file exists, but there are no hashes - metadata_file_data = MetadataFile(None) - else: - # False or not present: the file does not exist - metadata_file_data = None - - # The Link.yanked_reason expects an empty string instead of a boolean. - if yanked_reason and not isinstance(yanked_reason, str): - yanked_reason = "" - # The Link.yanked_reason expects None instead of False. - elif not yanked_reason: - yanked_reason = None - - return cls( - url, - comes_from=page_url, - requires_python=pyrequire, - yanked_reason=yanked_reason, - hashes=hashes, - metadata_file_data=metadata_file_data, - ) - - @classmethod - def from_element( - cls, - anchor_attribs: Dict[str, Optional[str]], - page_url: str, - base_url: str, - ) -> Optional["Link"]: - """ - Convert an anchor element's attributes in a simple repository page to a Link. - """ - href = anchor_attribs.get("href") - if not href: - return None - - url = _ensure_quoted_url(urllib.parse.urljoin(base_url, href)) - pyrequire = anchor_attribs.get("data-requires-python") - yanked_reason = anchor_attribs.get("data-yanked") - - # PEP 714: Indexes must use the name data-core-metadata, but - # clients should support the old name as a fallback for compatibility. - metadata_info = anchor_attribs.get("data-core-metadata") - if metadata_info is None: - metadata_info = anchor_attribs.get("data-dist-info-metadata") - # The metadata info value may be the string "true", or a string of - # the form "hashname=hashval" - if metadata_info == "true": - # The file exists, but there are no hashes - metadata_file_data = MetadataFile(None) - elif metadata_info is None: - # The file does not exist - metadata_file_data = None - else: - # The file exists, and hashes have been supplied - hashname, sep, hashval = metadata_info.partition("=") - if sep == "=": - metadata_file_data = MetadataFile(supported_hashes({hashname: hashval})) - else: - # Error - data is wrong. Treat as no hashes supplied. - logger.debug( - "Index returned invalid data-dist-info-metadata value: %s", - metadata_info, - ) - metadata_file_data = MetadataFile(None) - - return cls( - url, - comes_from=page_url, - requires_python=pyrequire, - yanked_reason=yanked_reason, - metadata_file_data=metadata_file_data, - ) - - def __str__(self) -> str: - if self.requires_python: - rp = f" (requires-python:{self.requires_python})" - else: - rp = "" - if self.comes_from: - return f"{redact_auth_from_url(self._url)} (from {self.comes_from}){rp}" - else: - return redact_auth_from_url(str(self._url)) - - def __repr__(self) -> str: - return f"" - - @property - def url(self) -> str: - return self._url - - @property - def filename(self) -> str: - path = self.path.rstrip("/") - name = posixpath.basename(path) - if not name: - # Make sure we don't leak auth information if the netloc - # includes a username and password. - netloc, user_pass = split_auth_from_netloc(self.netloc) - return netloc - - name = urllib.parse.unquote(name) - assert name, f"URL {self._url!r} produced no filename" - return name - - @property - def file_path(self) -> str: - return url_to_path(self.url) - - @property - def scheme(self) -> str: - return self._parsed_url.scheme - - @property - def netloc(self) -> str: - """ - This can contain auth information. - """ - return self._parsed_url.netloc - - @property - def path(self) -> str: - return urllib.parse.unquote(self._parsed_url.path) - - def splitext(self) -> Tuple[str, str]: - return splitext(posixpath.basename(self.path.rstrip("/"))) - - @property - def ext(self) -> str: - return self.splitext()[1] - - @property - def url_without_fragment(self) -> str: - scheme, netloc, path, query, fragment = self._parsed_url - return urllib.parse.urlunsplit((scheme, netloc, path, query, "")) - - _egg_fragment_re = re.compile(r"[#&]egg=([^&]*)") - - # Per PEP 508. - _project_name_re = re.compile( - r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE - ) - - def _egg_fragment(self) -> Optional[str]: - match = self._egg_fragment_re.search(self._url) - if not match: - return None - - # An egg fragment looks like a PEP 508 project name, along with - # an optional extras specifier. Anything else is invalid. - project_name = match.group(1) - if not self._project_name_re.match(project_name): - deprecated( - reason=f"{self} contains an egg fragment with a non-PEP 508 name", - replacement="to use the req @ url syntax, and remove the egg fragment", - gone_in="25.0", - issue=11617, - ) - - return project_name - - _subdirectory_fragment_re = re.compile(r"[#&]subdirectory=([^&]*)") - - @property - def subdirectory_fragment(self) -> Optional[str]: - match = self._subdirectory_fragment_re.search(self._url) - if not match: - return None - return match.group(1) - - def metadata_link(self) -> Optional["Link"]: - """Return a link to the associated core metadata file (if any).""" - if self.metadata_file_data is None: - return None - metadata_url = f"{self.url_without_fragment}.metadata" - if self.metadata_file_data.hashes is None: - return Link(metadata_url) - return Link(metadata_url, hashes=self.metadata_file_data.hashes) - - def as_hashes(self) -> Hashes: - return Hashes({k: [v] for k, v in self._hashes.items()}) - - @property - def hash(self) -> Optional[str]: - return next(iter(self._hashes.values()), None) - - @property - def hash_name(self) -> Optional[str]: - return next(iter(self._hashes), None) - - @property - def show_url(self) -> str: - return posixpath.basename(self._url.split("#", 1)[0].split("?", 1)[0]) - - @property - def is_file(self) -> bool: - return self.scheme == "file" - - def is_existing_dir(self) -> bool: - return self.is_file and os.path.isdir(self.file_path) - - @property - def is_wheel(self) -> bool: - return self.ext == WHEEL_EXTENSION - - @property - def is_vcs(self) -> bool: - from pip._internal.vcs import vcs - - return self.scheme in vcs.all_schemes - - @property - def is_yanked(self) -> bool: - return self.yanked_reason is not None - - @property - def has_hash(self) -> bool: - return bool(self._hashes) - - def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: - """ - Return True if the link has a hash and it is allowed by `hashes`. - """ - if hashes is None: - return False - return any(hashes.is_hash_allowed(k, v) for k, v in self._hashes.items()) - - -class _CleanResult(NamedTuple): - """Convert link for equivalency check. - - This is used in the resolver to check whether two URL-specified requirements - likely point to the same distribution and can be considered equivalent. This - equivalency logic avoids comparing URLs literally, which can be too strict - (e.g. "a=1&b=2" vs "b=2&a=1") and produce conflicts unexpecting to users. - - Currently this does three things: - - 1. Drop the basic auth part. This is technically wrong since a server can - serve different content based on auth, but if it does that, it is even - impossible to guarantee two URLs without auth are equivalent, since - the user can input different auth information when prompted. So the - practical solution is to assume the auth doesn't affect the response. - 2. Parse the query to avoid the ordering issue. Note that ordering under the - same key in the query are NOT cleaned; i.e. "a=1&a=2" and "a=2&a=1" are - still considered different. - 3. Explicitly drop most of the fragment part, except ``subdirectory=`` and - hash values, since it should have no impact the downloaded content. Note - that this drops the "egg=" part historically used to denote the requested - project (and extras), which is wrong in the strictest sense, but too many - people are supplying it inconsistently to cause superfluous resolution - conflicts, so we choose to also ignore them. - """ - - parsed: urllib.parse.SplitResult - query: Dict[str, List[str]] - subdirectory: str - hashes: Dict[str, str] - - -def _clean_link(link: Link) -> _CleanResult: - parsed = link._parsed_url - netloc = parsed.netloc.rsplit("@", 1)[-1] - # According to RFC 8089, an empty host in file: means localhost. - if parsed.scheme == "file" and not netloc: - netloc = "localhost" - fragment = urllib.parse.parse_qs(parsed.fragment) - if "egg" in fragment: - logger.debug("Ignoring egg= fragment in %s", link) - try: - # If there are multiple subdirectory values, use the first one. - # This matches the behavior of Link.subdirectory_fragment. - subdirectory = fragment["subdirectory"][0] - except (IndexError, KeyError): - subdirectory = "" - # If there are multiple hash values under the same algorithm, use the - # first one. This matches the behavior of Link.hash_value. - hashes = {k: fragment[k][0] for k in _SUPPORTED_HASHES if k in fragment} - return _CleanResult( - parsed=parsed._replace(netloc=netloc, query="", fragment=""), - query=urllib.parse.parse_qs(parsed.query), - subdirectory=subdirectory, - hashes=hashes, - ) - - -@functools.lru_cache(maxsize=None) -def links_equivalent(link1: Link, link2: Link) -> bool: - return _clean_link(link1) == _clean_link(link2) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py b/venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py deleted file mode 100644 index f51190a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -For types associated with installation schemes. - -For a general overview of available schemes and their context, see -https://docs.python.org/3/install/index.html#alternate-installation. -""" - - -SCHEME_KEYS = ["platlib", "purelib", "headers", "scripts", "data"] - - -class Scheme: - """A Scheme holds paths which are used as the base directories for - artifacts associated with a Python package. - """ - - __slots__ = SCHEME_KEYS - - def __init__( - self, - platlib: str, - purelib: str, - headers: str, - scripts: str, - data: str, - ) -> None: - self.platlib = platlib - self.purelib = purelib - self.headers = headers - self.scripts = scripts - self.data = data diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py b/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py deleted file mode 100644 index fe61e81..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py +++ /dev/null @@ -1,132 +0,0 @@ -import itertools -import logging -import os -import posixpath -import urllib.parse -from typing import List - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.models.index import PyPI -from pip._internal.utils.compat import has_tls -from pip._internal.utils.misc import normalize_path, redact_auth_from_url - -logger = logging.getLogger(__name__) - - -class SearchScope: - - """ - Encapsulates the locations that pip is configured to search. - """ - - __slots__ = ["find_links", "index_urls", "no_index"] - - @classmethod - def create( - cls, - find_links: List[str], - index_urls: List[str], - no_index: bool, - ) -> "SearchScope": - """ - Create a SearchScope object after normalizing the `find_links`. - """ - # Build find_links. If an argument starts with ~, it may be - # a local file relative to a home directory. So try normalizing - # it and if it exists, use the normalized version. - # This is deliberately conservative - it might be fine just to - # blindly normalize anything starting with a ~... - built_find_links: List[str] = [] - for link in find_links: - if link.startswith("~"): - new_link = normalize_path(link) - if os.path.exists(new_link): - link = new_link - built_find_links.append(link) - - # If we don't have TLS enabled, then WARN if anyplace we're looking - # relies on TLS. - if not has_tls(): - for link in itertools.chain(index_urls, built_find_links): - parsed = urllib.parse.urlparse(link) - if parsed.scheme == "https": - logger.warning( - "pip is configured with locations that require " - "TLS/SSL, however the ssl module in Python is not " - "available." - ) - break - - return cls( - find_links=built_find_links, - index_urls=index_urls, - no_index=no_index, - ) - - def __init__( - self, - find_links: List[str], - index_urls: List[str], - no_index: bool, - ) -> None: - self.find_links = find_links - self.index_urls = index_urls - self.no_index = no_index - - def get_formatted_locations(self) -> str: - lines = [] - redacted_index_urls = [] - if self.index_urls and self.index_urls != [PyPI.simple_url]: - for url in self.index_urls: - redacted_index_url = redact_auth_from_url(url) - - # Parse the URL - purl = urllib.parse.urlsplit(redacted_index_url) - - # URL is generally invalid if scheme and netloc is missing - # there are issues with Python and URL parsing, so this test - # is a bit crude. See bpo-20271, bpo-23505. Python doesn't - # always parse invalid URLs correctly - it should raise - # exceptions for malformed URLs - if not purl.scheme and not purl.netloc: - logger.warning( - 'The index url "%s" seems invalid, please provide a scheme.', - redacted_index_url, - ) - - redacted_index_urls.append(redacted_index_url) - - lines.append( - "Looking in indexes: {}".format(", ".join(redacted_index_urls)) - ) - - if self.find_links: - lines.append( - "Looking in links: {}".format( - ", ".join(redact_auth_from_url(url) for url in self.find_links) - ) - ) - return "\n".join(lines) - - def get_index_urls_locations(self, project_name: str) -> List[str]: - """Returns the locations found via self.index_urls - - Checks the url_name on the main (first in the list) index and - use this url_name to produce all locations - """ - - def mkurl_pypi_url(url: str) -> str: - loc = posixpath.join( - url, urllib.parse.quote(canonicalize_name(project_name)) - ) - # For maximum compatibility with easy_install, ensure the path - # ends in a trailing slash. Although this isn't in the spec - # (and PyPI can handle it without the slash) some other index - # implementations might break if they relied on easy_install's - # behavior. - if not loc.endswith("/"): - loc = loc + "/" - return loc - - return [mkurl_pypi_url(url) for url in self.index_urls] diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py b/venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py deleted file mode 100644 index 977bc4c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py +++ /dev/null @@ -1,51 +0,0 @@ -from typing import Optional - -from pip._internal.models.format_control import FormatControl - - -class SelectionPreferences: - """ - Encapsulates the candidate selection preferences for downloading - and installing files. - """ - - __slots__ = [ - "allow_yanked", - "allow_all_prereleases", - "format_control", - "prefer_binary", - "ignore_requires_python", - ] - - # Don't include an allow_yanked default value to make sure each call - # site considers whether yanked releases are allowed. This also causes - # that decision to be made explicit in the calling code, which helps - # people when reading the code. - def __init__( - self, - allow_yanked: bool, - allow_all_prereleases: bool = False, - format_control: Optional[FormatControl] = None, - prefer_binary: bool = False, - ignore_requires_python: Optional[bool] = None, - ) -> None: - """Create a SelectionPreferences object. - - :param allow_yanked: Whether files marked as yanked (in the sense - of PEP 592) are permitted to be candidates for install. - :param format_control: A FormatControl object or None. Used to control - the selection of source packages / binary packages when consulting - the index and links. - :param prefer_binary: Whether to prefer an old, but valid, binary - dist over a new source dist. - :param ignore_requires_python: Whether to ignore incompatible - "Requires-Python" values in links. Defaults to False. - """ - if ignore_requires_python is None: - ignore_requires_python = False - - self.allow_yanked = allow_yanked - self.allow_all_prereleases = allow_all_prereleases - self.format_control = format_control - self.prefer_binary = prefer_binary - self.ignore_requires_python = ignore_requires_python diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py b/venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py deleted file mode 100644 index 67ea5da..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py +++ /dev/null @@ -1,122 +0,0 @@ -import sys -from typing import List, Optional, Set, Tuple - -from pip._vendor.packaging.tags import Tag - -from pip._internal.utils.compatibility_tags import get_supported, version_info_to_nodot -from pip._internal.utils.misc import normalize_version_info - - -class TargetPython: - - """ - Encapsulates the properties of a Python interpreter one is targeting - for a package install, download, etc. - """ - - __slots__ = [ - "_given_py_version_info", - "abis", - "implementation", - "platforms", - "py_version", - "py_version_info", - "_valid_tags", - "_valid_tags_set", - ] - - def __init__( - self, - platforms: Optional[List[str]] = None, - py_version_info: Optional[Tuple[int, ...]] = None, - abis: Optional[List[str]] = None, - implementation: Optional[str] = None, - ) -> None: - """ - :param platforms: A list of strings or None. If None, searches for - packages that are supported by the current system. Otherwise, will - find packages that can be built on the platforms passed in. These - packages will only be downloaded for distribution: they will - not be built locally. - :param py_version_info: An optional tuple of ints representing the - Python version information to use (e.g. `sys.version_info[:3]`). - This can have length 1, 2, or 3 when provided. - :param abis: A list of strings or None. This is passed to - compatibility_tags.py's get_supported() function as is. - :param implementation: A string or None. This is passed to - compatibility_tags.py's get_supported() function as is. - """ - # Store the given py_version_info for when we call get_supported(). - self._given_py_version_info = py_version_info - - if py_version_info is None: - py_version_info = sys.version_info[:3] - else: - py_version_info = normalize_version_info(py_version_info) - - py_version = ".".join(map(str, py_version_info[:2])) - - self.abis = abis - self.implementation = implementation - self.platforms = platforms - self.py_version = py_version - self.py_version_info = py_version_info - - # This is used to cache the return value of get_(un)sorted_tags. - self._valid_tags: Optional[List[Tag]] = None - self._valid_tags_set: Optional[Set[Tag]] = None - - def format_given(self) -> str: - """ - Format the given, non-None attributes for display. - """ - display_version = None - if self._given_py_version_info is not None: - display_version = ".".join( - str(part) for part in self._given_py_version_info - ) - - key_values = [ - ("platforms", self.platforms), - ("version_info", display_version), - ("abis", self.abis), - ("implementation", self.implementation), - ] - return " ".join( - f"{key}={value!r}" for key, value in key_values if value is not None - ) - - def get_sorted_tags(self) -> List[Tag]: - """ - Return the supported PEP 425 tags to check wheel candidates against. - - The tags are returned in order of preference (most preferred first). - """ - if self._valid_tags is None: - # Pass versions=None if no py_version_info was given since - # versions=None uses special default logic. - py_version_info = self._given_py_version_info - if py_version_info is None: - version = None - else: - version = version_info_to_nodot(py_version_info) - - tags = get_supported( - version=version, - platforms=self.platforms, - abis=self.abis, - impl=self.implementation, - ) - self._valid_tags = tags - - return self._valid_tags - - def get_unsorted_tags(self) -> Set[Tag]: - """Exactly the same as get_sorted_tags, but returns a set. - - This is important for performance. - """ - if self._valid_tags_set is None: - self._valid_tags_set = set(self.get_sorted_tags()) - - return self._valid_tags_set diff --git a/venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py deleted file mode 100644 index a5dc12b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py +++ /dev/null @@ -1,92 +0,0 @@ -"""Represents a wheel file and provides access to the various parts of the -name that have meaning. -""" -import re -from typing import Dict, Iterable, List - -from pip._vendor.packaging.tags import Tag - -from pip._internal.exceptions import InvalidWheelFilename - - -class Wheel: - """A wheel file""" - - wheel_file_re = re.compile( - r"""^(?P(?P[^\s-]+?)-(?P[^\s-]*?)) - ((-(?P\d[^-]*?))?-(?P[^\s-]+?)-(?P[^\s-]+?)-(?P[^\s-]+?) - \.whl|\.dist-info)$""", - re.VERBOSE, - ) - - def __init__(self, filename: str) -> None: - """ - :raises InvalidWheelFilename: when the filename is invalid for a wheel - """ - wheel_info = self.wheel_file_re.match(filename) - if not wheel_info: - raise InvalidWheelFilename(f"{filename} is not a valid wheel filename.") - self.filename = filename - self.name = wheel_info.group("name").replace("_", "-") - # we'll assume "_" means "-" due to wheel naming scheme - # (https://github.com/pypa/pip/issues/1150) - self.version = wheel_info.group("ver").replace("_", "-") - self.build_tag = wheel_info.group("build") - self.pyversions = wheel_info.group("pyver").split(".") - self.abis = wheel_info.group("abi").split(".") - self.plats = wheel_info.group("plat").split(".") - - # All the tag combinations from this file - self.file_tags = { - Tag(x, y, z) for x in self.pyversions for y in self.abis for z in self.plats - } - - def get_formatted_file_tags(self) -> List[str]: - """Return the wheel's tags as a sorted list of strings.""" - return sorted(str(tag) for tag in self.file_tags) - - def support_index_min(self, tags: List[Tag]) -> int: - """Return the lowest index that one of the wheel's file_tag combinations - achieves in the given list of supported tags. - - For example, if there are 8 supported tags and one of the file tags - is first in the list, then return 0. - - :param tags: the PEP 425 tags to check the wheel against, in order - with most preferred first. - - :raises ValueError: If none of the wheel's file tags match one of - the supported tags. - """ - try: - return next(i for i, t in enumerate(tags) if t in self.file_tags) - except StopIteration: - raise ValueError() - - def find_most_preferred_tag( - self, tags: List[Tag], tag_to_priority: Dict[Tag, int] - ) -> int: - """Return the priority of the most preferred tag that one of the wheel's file - tag combinations achieves in the given list of supported tags using the given - tag_to_priority mapping, where lower priorities are more-preferred. - - This is used in place of support_index_min in some cases in order to avoid - an expensive linear scan of a large list of tags. - - :param tags: the PEP 425 tags to check the wheel against. - :param tag_to_priority: a mapping from tag to priority of that tag, where - lower is more preferred. - - :raises ValueError: If none of the wheel's file tags match one of - the supported tags. - """ - return min( - tag_to_priority[tag] for tag in self.file_tags if tag in tag_to_priority - ) - - def supported(self, tags: Iterable[Tag]) -> bool: - """Return whether the wheel is compatible with one of the given tags. - - :param tags: the PEP 425 tags to check the wheel against. - """ - return not self.file_tags.isdisjoint(tags) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py deleted file mode 100644 index b51bde9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -"""Contains purely network-related utilities. -""" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 86ab1916cbad18fa39bb938df0fd1252e3e4edbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmYk1J#ND=429(^H3H-gUW3ABf0hnKQ6PJUcIzT265|k7L_wlcxN|SlD`o91I#muj z^Z|Si9|z)*SF5Ee`mA2|cO}1P_^+zKbD3NhbLvgG>Q${5AJ-cWVkqP$jtTwL1eAA9 zLtDTIx@HveB!szJZr9cMN^8ef>o1iS<i=nMk2;BfAVI z3@7lkgE+~7!+m#q1DOQdXzXBm%n&JprXZMt@$gp!bXk#T-Nor#KOWhQ9-roS@?4-+ EzcY_WQ2+n{ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc deleted file mode 100644 index fb4fe5dce198e186ea108e535b0e76b46ce908ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14434 zcmbtbTWllOd7c}G!x6=mwA!2YHs1A(j#sj?PU3DH$M#<0bsT!(T_*^el%aTr61BYf z%y4B9RBCjc=F&Py(mo{(AoT{g2wI@&1t@w2inh;voIbQbpYqU$B4|-Kj@|G3homSi z7fDeHbLPyspa1;#|EM!N>l^sJWxiVf#0|svcYaL%GWd87Pc$$MLm6d5naXOKWmDc( z*^;+iw&m@V9eHQU8F{;9SKisOhqv9#wfwT*nkmni9LH(qTeIa^$!D5{)}itt$-B+D z)_i$h^4X@_S|~5H4wnzN7R!sRBjqElqvfNmW94H~?=_FNPLxlymdZ==ook+KohqMd zoi3l2Z@+n_b+&v~@-xk#^+5Rn$>*ErTIb8>TMw2WY&}$dsP%C9;npMNN2G4H`Dm+H zE}BO8K={~Qv-}}ds6PHFLmg6cZy9PXJaX4AU%>agTEO>0=;M1C--p#Az8Aw~e6Qg9 zh&qbzqw@U(zK^Nn_&zS*PlmI~QYYRv)l&FjbuwJ8JL;4={g#9IE~4!jbrx;Uh9@xA zQ_8w&6odY5DU3He`gZVqFJ2GZaidm^8=ZFWV%Y44I`aL?opxMpw43Bm5ygpLs1MJNb(@Vi zEyT#pPHkL=;bno>+x5=18sRhfv+?m9p6FpDp#ico%GPT}Xon!AXVSMdeA~|$$^jx| zl9|hU=aSf5fY*yc-3FKvZ?x1B8hVuq3oDhxuT)wc)oU`JuT);|Rhz>a8)uXps#L1& zb|)5uiYk?N41EqOlH}dm%6g|2uB`PMHQlL&aokwB{dBYv)pWHBEVy8@U3GjV(?L*!ZE5iEDN^a)HyAVeM# z-|$S&%$rhr572UG@f@3$k?a9YnPq@2%qRlPRd$$FPUwZ%6Nbv*ojYOFUFE8*(3n4N zkyU7;GAdX1l&@x_c1Gm@=zMbc)8W>u*dnp(hEPSQ`)5(8Ngb;w4N_tW^&ZV7Gwao; zayxCLm#{{C5=r9fFz)Ggjb}dkF%QOST*mWb2Z=In8t<4T0sK35;zVJyzBk6+q3H8y zoXirH2|>WM-g%OPSV$bJ|G<=$FYjxuPoZV0#z{v%=0~g1kKjW;%7mEkj-wxAe!Ly& zesDd7s5+tzF6bld@i>zHxoOMU-?*69r`i4tle0*YY^9<=NtMJ|?R1*@0ag%TI$$!x zO zN*B?10ullQg6NZYek|x=j?rUs9seKn&=;mm$|HG!0U6@J!$8pP9OsQsKX+*7P6w6y@0gRflpt7=niyQSeaIe{j@rBwvFmt%_cf1@o`Q zvDSoV;x^1r;3Hwz*z z$=jI68&CiI^kceL3fv05`Bw952q?pDTP6-x z_bLP3UGxfAJ7oMhFb9eUXUrr-uK<%sYcncOA%cFMnpFj15{IN8MT_)>NSRafsF_it zn!P>?>M&~ZDgzy5FfsIjB4z|ySmzx z-a*`v0l?^n4Z=I3M#)^MWrKB%*3yWA>YZw%Dc$Q09mQCd3~=N5TQ4q4?p9*gT58A{ ziE5)C^L&WYKc-CB^AyTPjF58jp!_7By^co^*f;wp?*;nLVt-_PWA;bAYRJGA z2F4E8Gs)~0NNXdumC~A-%vL7Z#Z)?@n2)(kk$ZL?d_XusFlD*_7dAlEX|zl-fe{1X zqJA#o-{zut0);)@V*+89_fviXj-u~0YN1#!`-F&#G582~T1AH3Ntr!EXO#(|z%PiA zfwksr+p)O;v9fDyLv0&4%6Z0!9SRYoE}ksPGH*NEnL%d5(~n61%tmgsK8T{CKaIFKUR=NMbTW72^S54n zrF8w3tEJ1YT)AHQRMAc{Q4DK4aq;TF;Iv^$6=ze{YIUL{i|>Z+v>^{V-L1rrdaGU9 zVNsOWy4Oy!SFV1x^xDfW!+^ei<7(m$%?w!c`b7XJaaBmup3~??H_4JDqp(|aQ+Y#3 zrZPzo|2n(aI*bmI!1Jhh6Hi3D!M7ZpCX5`!sCZhr9da4Q0*v zL@CtvpXkIHLX;~Q!E%N?XHgN>oPqs41FhWe8Q-^dvdY>ud9KQR+o3lH=a>CC&uY!dNVsx5v%|q8*!^FDI z@$)>BXOYzLL~}?)mU;_NvzKy9HsmR5;r+$+)dV~qYOm4Pa0DEGFdFG8iv9y7onj16~S4=jw7jlGTBuBp7Yq2YWE{T2Fs*=lFf z_olhY`E!{62eH31qx@ZSn+oR6z}d;ivpWSfvuo~}dM7@#F{kqJeBDZA`(1N86EBQf z;LBYzwzGrGU1R5Pytr{>*SunU@#MA_FAO}?=KA?TZs+L0-8G}H4YE7O1|E0#Ipg(B z?C1E_cSiereRI=b|D6+qEY{-1{svYx@YJEVEm_$Q1U_>EM_{-#fM@Y$3fFm#7@xcg zm=zaFqRopxV{|^j(4iNqOVE51PcjV}bdgR_Z_raY?ijui)_Sq% z097aiK^^0-!ofr@8%7d02;{hs9S2LfXcn%jMmLU9#6$7;M_Y*Qq?>pm(k@WK+_7jl z!S>*h8xSq$`yPM^`vic-Q4EI27H8_#2;qoI+dv!E5mf+My9AC5-6Y9gzFA?Wn4Mq` zS1?(Ug*UZM|6AdCm<)~8UL0Pfph^7CR^gIO^H~+vyKs%dW^?$SAVpGPa*ktH;Bt!A zdvT*#5tXl^LO9x5Wc8Is{1@CFb@_tjfotSVCp-79XE~1bF8IfDR0W1dQyC$_@-t$5 zM$az)?BVqqhVEaSjtzU_YINY^BZOH+Q*sIljZyBD{srza3)OJ70~hbyr>}ngRfx^X zmFqX3f8ph;S43@3X0D5coB}L&b%aw%cC)J6K&2$#h^~t2sjdOMS(;@m&Rn_r!fT&` z=oQc<8G#){Y+TiGMEp#0(N@G$YOEz*s(+!-jkoCeOlI4i3bJ8EWI$?&P?kZ~(jhFz zon(1v5V(mK!53R^z>DoxyWOy@lKE@+Ds|#(onBj|i+46UjkfSk@m3Ul{fivXq1pk} z;Eh^hx1u#Dy3K}ephka5=94+}I`d}tAcibXJK$ZkjVN#PmSfXmgfxM4afuzYA#Li8 z51QVa*1KNThg^58IkPb9SPRnDM_cDjwzWRU+Xc&kEh7KT_Fqc%nO? zxsf52GjmqXRx2=jY&dD*yrp*qrjrXV3Pd>!Bv0ku%9P=4frljrraE%b`XL!!e%Q_d zvrS#MzO;n$tP1LoICJv|*}!9mQRj#6EZ(!?y-7`}0$O0cv=+wPqB;Tt>kzoWQFZLM zEQD-abpk6~!jlbWv8t2m)LU+OPHM8@Jp6$&!*B!}V>{}!I)hOb5X3o*UWZWu@Hk43!89zY$547=uN07S)rZvM zC|x>GdOMnI?S^kKwh<+B2U$bPMrq58e#~2V zF5`))AEfpbtQezWLc$sqs{y81fhz~8v*$s`=&z!+{u-07Bf%Pmk(MY~tnB$|qDtJU z&`2l_{m}cn9YA>bIGk8zS$;z+NEcO}0A#{&}&tM##ja!x&0UHzy00O;%3U4YF|FcQPIw zh;Lf|(|>sC@!T`mK7^#e%iyu`M1P57VCoDHB@&Z7hU@Sybt-62%7WT$#`cD@lYz(9 z{JH^U7))ZrfD-&6`g$kY*=alU=g~pk{+cmxpuRsfuq_>+%Dm;lK%{ZOwdCN6K^#YneXsf-fYik4 zcXR`)LbVBZ6If#K+N&=It!i9b2b&b^7%R)HT2B3H0e+WxW^k?PKy4w^ieNoG`DJ7}ex+Tl!rc;+87gu`MT)A}*J0voth zOOP1|DNIp+8?{ASlK@inE2C+%z#z%h-~eqX95ys}zgyK&s3=iWS`{woJ=3hVR#o-c z=SZFONLvWrf-c{;KJYUAkKCUcWs@9jPfs6>1v4$H=}U#WY?B30ltGUaA(4so0u)Kd@~wh72Za*104x|RQpPZzMHTh^Ilq7Y z=YY+%cdTRvWY^hD?|US(>Bo>SCixL*$+7${m-l-}#@vl!_7ENlpUZfn|3(5m0Q~F= z_BI@c+wQ>qg0-F9_6Fc}h*F(|0WR-YI39Qqc+9}1V{!*BNbsiIAg3>4j2w)8f8fIz z;bW}a_RMx(`q+b<^vUU026^Q`Yvp*z@0;h9;XJQMA2=|jPo7aRU5Vis!|1bvS>(A6 zcUV7*dRuQ|Etx?MZUd{^lzfKy?ZTj-H>Ev!C)Zs-`|QA@Bf9AIKYR@bCTwCzu#?oz zC>fd19;uNVmilMKwAsfPK=r_-QCw{yZ6LTH75s6tzj*V;fcTRlSf?V!Es8&nnpp;(}GHQpLlbZ5NBqsXatQ?31Y-CO> zI^Sk=kp9EGIS1P=Ev1#`NWEj{9UqLx$*$N={Q9%${LvR*f{Srr(vf`E z{1pZ~*&ET0qEoE^tP@(nB<@4I!@&z8kp#vfcfURW$tm0?gtSW0lku?;7E%L%Xv8>* z+G1yw7x_q0V?kEyXdTw#Nm803EFUEr(s6-E!X#EaJ{I(k2O}w8T!w6o_hx`P5eE<) zZHiLvWW*jt>EXpcDkqZ*fTwP~5sjBv@3m`kBayoqGKp%S8ufap5il7qVV|xsA%_!C z{bf;6a1{-g9}Z{~5^%@5><5>CV%Vgl zQe}M~mO&f7TG$X)G_OFZq;&lxU{$Xccf?h93V|TF-OT&3>nWq$qv?*(jU*%> z_K}*JskLE8d74iEjKzyh(0}p1O_d;1y4F8`lg7jWZa89Uzqqwh`r@S^F}D)4Jpzot zguaOMUKdsDsUCy?{%rCBar=xxKtIrM_YM%!BdWcCQ9tD!8qUnm?%pa0`c}VhQ61)hv8McOa zb9EVg^Sg#F$FnSB3mCfe!1vzp>idwsI9I+^{DJYJ-J)0~2=-Yr497m;V zxAgA-a^Tv+Z}!;7AE8wL39FWp893eJUQ}U#G$kD2?$Sdj>bq?GJtShNh>fBDf@MNa zzsB4*nEVwJUMH6DN({jRE?eD9@;ZbA1#T%wvbGkc2RliwuIoQ#^BD#UDxEf&UNR?F z5+)EEmJa$s0^|BQ@8!aMpM~&?J9(NU(uc%65bRC`3t287c+5Wf>QJ`GeIN$q zsK^kcL3I_{2+jT}DvbVHOwca^U2ccX4~1vgD^>V$tzG{ex=eV>{(+yw z6Cl`uBiQd2)BlJ@OR(xhG%=b^2blN1^TB=mk`oBA4?={Fhesgv1~Q-)aLmYq0txX8 z)e$^kn-?14`G(2$G$06maNE$A`iEmUzZ6VC&+@2#DXF;h-TsqP;Z8)`$Chy~E9%vFYh=0q$j}kgmK#^_?BKpB{7JZn zl`4)St+dqm7I3hC8a$rft_fn`(GJ;gf9V>cxvAQEa8}&u-sAK_q2r@NL<=TRdTm>1 zd`vBx&d?+`4h)Yxo@2sFGF-_$7gYWU-OllF17tugA6S+H?aYO5Q@jQ+b9{uV<`A&* z-o20eog0|c0E_l8I8r=y@CwBfm?gcCoMVoYO58#2IpF_s;w`yeo`yAC1jeCTrF=~; zt&3Lh+w3H4j=EB+lF{Ly|D1_1H{oWKayrX|j6u*?bGs94Looe3%YGHfzv78Dka&g# z&H&!<9&WwA??XZ&Qum&f@qc2?&mqXSXj)l7#1%~zwXWm8cl4 zhkutvc6GI;ad_zs|0E}-1aAFDnzWW=I}utV_Dw0AMpQ9?cG*GTLTc1<5I%D=ObFBR z30zcMuE3~KK(-;fkCy2X*RyOyIZ!@1wGsYdCd2~dKzIV>rK!yrbdSVSkfh^`{>Nom zYL2v(7n#s2kRs|=m?NT0!=S`_CjDQbXF>f&bP0)L(CFFwqxXP+ g0n8!ETc^x?7XAfm&YpAU3Um3n!29^3x%i3y1$Iv)od5s; diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc deleted file mode 100644 index f639f931db2d311f3b8b77d2271bfbe50de7b3a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4589 zcma)9-HzMF73PqXL}{h{_j(;WDeDGJ6gX0B2WgrFX%ZuLT@;(ZPMTIX1eY^fam^oP zX0&T9WT5T3$X$KkE4z1ogFZzbfVaKMEBK<@?+hh*r36JOXgEA`=FBV9m1rO&{kU7ayPCul|LGTRn?2ZYQkA@OBbAb$SjXnwz+(+jC97l2p=aubS3+ zwbbi*X}woB^lH*bS9&X^UrU;4tJgApFIi33dTXX%PuA0o-bT9F+ce*eWGmh7ZKJ;; z)_7A~=)1hdS0B5*9pT`+#@8-ceVecIjmPdO>s`EK@lC$<*y3Aa<<#lza{Ip3-afhf z+poU*(vQMuApAHTCL$G?4t1PooyHF^&Dv|TVl~P$EgtGL%)$d9LGgH~g^p9vb_?&b zI1Av=zbuJ6Q8-81%ta)T9_Dpg}}KWNIWuz+)^er?ZNx6nZ4Hh>;=Fhx+8a zTllLc8f{IC^G+QA;_MZTzRc6WAaWa$YX<^&Xc#S5!TsEln|Qt8-9es;?!hRIWF85v z9gg)N&u(_EztdH*7H<#3=mC&a-C;cJ1~I^u zfU27beVoe&U9)&+I4)YT3SO$SK`Ps5noMrv1#S2CB6JoW4_`!7ucP^kbyDT*4;Hh& zfsyxNxwgg|4ByQ9lc5}2ZTsZtZr?u^2!rem?T1k$l=3wq!YD$$Y&z^8j+FM*gLr7h zV5uKw+#eDKN;P~uQhYlSN-IB9e%zn49fyj9i!9tv1n(GDimlog_dl01mj>2z%@(vT zE~?RR2zM&MOOFJCc+~~6kDO=!*{(EMlU130CU-#i5gaCsiT!&t!a{;tJ)5(h!)@Vm zhr50EJFCxlg;yUpdlgTIVfLSA}OJRQVcT2enam z`4z*zfsswIBATLw6`V_!;q&+w-+o-_t(G!rZGM68VCLF~0aAR)^(fVr9x*zt%JY~W=j%68SKlLd?{C#8@pL+3l5Jv+)R=&a%U+4Zv311*Y z{bTYkxm$-4(e5LOM1&+B`)N2f;<8-(`(hdyF&yaU(m$55CTDgUhUcq+kfyDyQH zK57P!sRm5tALp|$5eO~_hYBPDVl&=_JSjp>Y8YuMOrc#ye4#eV848u0YrcvzEFe%m zrYu-X#T0XS-$x4hYFcTGC_+N{Zw|B`st>x|gIEtn`<*CHyF=A4bB*eo%#&`c6k@k~ z^TxaFj_-d1M98Rq4#NiFQK?zTOS8hnPx6B}0uMAy!v|P|YEb#TpX-6~0c_0)I|^gi zgD#0Pij~!=%%Red4>1`C_Tz_y5jQND(-1}GZ+ zXjln(B;dC=N&GxZ#^im1ooXb_e+fLQd+0+?Bh>)^^}XLirU{{ZbTEKRj8!ByLXa8e z5@?h(M1hgT^W!YZLk<%G=a=Iz@A^E4WfV??Cqg9^(ICuXm6AYp91i__gc3wCBNCEo z1cjIZPn6VaW-;+Fr0oiFQM(Lk#$2=OP!!S{T8@Ck%(7dw-P|fY4Gws^gd!8jk6E?8|n_I|N zd++4uMvL<)Mg?`6Uwe5bI&G(@pzH~3WC6B@SO=}DxYkLA4IQyG@ z$vR~d`+!}v9y!`MbPp>N>#%yjCeAXNmK z+=cT%j2CPsMM=wBB$<`xx;y$fD!-i|)VCdp^ilgA-*L~}{rQSPcvyIqn&vRaqi}Bm%$BFjb*?Upx z?Bn!Q*m57}z5#XRRcd~L1~@;YB53x(!p(;wD_kld?MjL6o5a*gah{?44vY`#B(ChT z{xa4M!21m*DcV^Zw#Rmv%RIB)uAZ%*ZL+IpCmV}+V@9crOKU`wAG3!dYmW2@J}5_? zyaVi*whx`BE}?!3On@ccPg;+hiSx8dxG&<9c|gZMkB+WQoI?+@>_yHgk_$*1B-viO zZg7$wdoKjq!B*QdU`d487hrM)NL!rJhS$p?y6<4`*Or}>d+J1@ik zC+)6skq9mRNLG-)8YafCoO$*-Mfj4xO6CO|2(LK~`}lZ?!~b1F2&>8jr_xjVCu+r8 z%T~)amT6a)N`SluY8lsW)A%%8De+~Ons=yKa=S+*(v$%VmH^CC-D9txEpH$*_QIt} zKT7d=pi(iP0Z|rG6RcE7XTkarsq+Dv1x-I8>Q4ozhX6F14!~iebQP(!tlx~uq(Xa} zwo%IHASfC^kmh`pP`?=j-;Tm$I#LS)o<|@%N=vhgmdMgJT2%JOS}1vg)S{G1{XuvsvA#y;herr+rC&j#nAz4LZN#evYfAq*IAetElQRT}4Z!sDwze z#wg!=4X3nDfWtq}WhbJ8(ewyhen^Vu;%EPxNtxZfclkWm?DE$E&LUBgZeK;Y*zA_u z8R3MyCdrfaIA_)1&xRbLC$wkE%NTbEy>ZOE_LHu2R%E3(^m3uv|3_t5J2NBlXoUi6Pj?gjLp_m6?o^pAtH zFy>nR3I8Ox&+pDsXBWDbf66}%?)UvO?6^;J*I5nRvwj2IOYbQDGyb_R7606p*1n9| zv;K3aJ%?J$*Ory$`C;=~vJr=g=Qp}R$kN6}AbO2HPgXfg(?$^cLB|sbPg~V*NMTD& zJ$G&j#=UzX%bi<&5hSq}=H|+vAF`&F&tAQ?v~qoE#l3pt!=?A!<(uv6xpRl5{UlCV zQ_at;GU58;HQjO{m$TSsoN@G+Ut(e-;pp?_`j= zU7kd4$LsWH^6KrNzl?oj4EAZ?xc=s~>vxv(Y3>CnbGr$5Q{jn0nor?$az}2bH;C6$ z^qxR-EHU6=?xg)N5bRTt8#F$*I1>XNcVM%-50%N*ui{NF zfeam?WXhWAs|(7OdRJLi3`J-{7e-g#JgO@6`vf+>tZXPvZE0BVB(Y$zxE!*0RrH!> zt_QKm?H=V{q3y-E(9mM3$5wwcKjxBVdqVV~%&~AumVmpGl0-ChTAfubReQ`&p_&^Zw3yd+ zP2ir#J31Q5hkSy8S4#3vD3Bbt)RCU4YpT%J^mUEbQ8q?KOgwXB2rDzt!_0L4OlJNL z9zocdzNMn1{lOTS!l4=XB~jU~`g&&WXsQxhvSt)DlqYr+QCpi_H~4G5IkMuT<55>- zt)A)W4c`L4lIgyUUbkdTqgGMR6fw1>jqJ=y+nK$ri0Mp2Kj$lLd0CWof82 zEJEbD4`+k*KeFphxHPU#6F+Cy%Jpcy#l+)9f-#jP;zdNRGTw}5G|-8Ogfx| zl^-Dp!^9H~odIN#7sN2yUb5km`Obm3gzsb^VAS4f1T*6^7|ExJOwb%wn5?cco*O~j zP4XG&^m?~TFnqw?XAfAI+tdNO%Z-~$Z{OlmG}0tugETAB`1omJoB_#eA`xEb7RH?G zw2!J>!k2rRl)Ec!Ah!xQ=1%Dkq!Ab7BuzI1m%;iTr{fiVi&jZr0CCKk=BSqDXofbY zI$B+=X?4v~!BY*q@~c(RYM{kY`HM86Lo$oKh&_Q~vPEfoH53F8ysc%*4(U%FzFTeJ zS@z;UKp73uV~um=MCTe02%!z~ObxFAHzwhHEdVG0D)^>Gf#sH*1g=L*(%k5KqDNXz zBb+=#EPf4iTlcjcLZQy*g&}~oEmfjY?=NH|9eubZ4|dz*>HjO5OARmf z4PQkYFEHyJPi8;%epfRWt( zU|gt>^MYM@Q6W7&6})NiS0DubDoCzIPge-WAhbM1*0(S!CDW;zj#`BU)^yn16)-yc zWlqqs@JdVj0tI+7DQ~hjUmZ(&T0q{J2G61i17BoE3(CmIjP#-~w=Ie<=&k$44(SGb zei44hc!g#%(l;=tjXw6e&fgHuT4mdy+RpAQ{Egk-logo6C< zenYX8{|F>kn$<%5^HkHJEGbDoOVvsgM2xhIxV}1oLS2Mt7E>0$DFXACh>$%u&3*1k z;)@iV>*#+NX(yi&&Pvey0)tYDVU|&YGpVXIsCN#pBSRd04VAw`Q`>2gjvUZA;f(Yy zb>2dObiR!Y0my5=*@e-i^aiD;#%aVZxI zM$5bir=(-&rc75jt->dX)Ing>e53*Q+KSF zd~z=bMTC8*BfPS(yKjv{B5_=#L4k1HU(yPsNz1IN!y|k9Yn43;89NBi9(nx(`=nUA znCT^Zr0drLu&Sb_KEG}$%;?NKFj zw(D7C2Znb4&AXV9736@Oo4K3bTE~yPi}6^~ozJy@RBdpy8cWXlzs6fkRjfb{H}wHUemPiG+p~vGpheQ z=g9UaTmhN-6&iFKmdpxhzzvI-mxtQB7;&KPTo|JiQYn;~dAETK!iCiP{5=d^r@xY^UxgDL@ zg!T4G-0WK}vN=EDEza&Ee-dd69)pExaj&E7G(Ri5m45)VI$_W%FKsU3W-4!g`SF9j z*ry#P{~$^W4}IcbbFoMZ|1q&oiwo?+Q#%l}qyY0`v%9+({|(XV(BD7B_4V|@8Ok2x zXfIXs?`9c@07u?Ul;q9!@QGxfRutgx6G|?M%QHE{oGuXW%d2x?4itmW6kl}cyppQ(VVPJ%IB6}Zcf#v zn$xvuc|YQxYR=SVWWVH}ZqC+bn`dfgH_z41$+0p2eDgx>g6xm` z7n_%Amzs9XZeFfkR+WzxHo??apqpRW*K1eVB!7dIaZT|HY?_~KSnL$jUKzDFF>{8U z#>~_ETJ0K}eX3N>bf!OZJG*x6(Gxp-!G-W5?%>I2p@sgtxI7SJY&p9tJUg88_X) z-QWTv(<^S1vo+qt)~?un==r>2Ci=Z#H!&V~^*9;%m(k6W=92CknJ z*4iyh*OJnGm({!$El!GA2YXM|-5?CSy6bx#?gTgpbElUcudFSvtT{`ce7^D%=jo%` za$>FWs1*hgujonnz8moeI7oQwZ8|6!{V8vTV)q%nX)?RPKE0~re60v*d)j>KEpCQQzPQo$>LRT3 zIQAB|-;Wlfx^P=wu(8kzS+w|q2QLZdD#>yLP|m>~MVx3Tu-(+wms1H$3pcmWpkEzWQ0URI>3~ z+w>y44eF(R*n&*M7O8DSb{yJa;P2WE9@jVJE@UcD1v_lWTe+Rwh)lrs0x;cf^4Mi= z?B1}q+EHxtAZ%}J+E5j_B%=#kuX7u#pl$6s%&#i9dDO6@HqPpi;0kUBVT{qtOm9d^ zUt_~^54@4o&TPw-N+FpfEPx3;1`-eih#81MT%zVQHDxrFLONj6z-2Uv)@dXK`HDv> zCoa-s4b2%`5y^GT8q>%0H@+Rx_;EbEOSAp~QaaN3n$C>|u$UK^&P`_UA}cTxXjWv_ zt3u7Yz}Lt*^k&fW}K6=iVc&UXBRN*6lN8%(?xa(vu4;G>~oqI z&nj}SC>Z?HGfn`77bS@~WDyUyOi$UHxXx#wBstb$$NX5W+a zT>$Mj*aDtkY;Y;Hh?2y1CxYh@S1`I#Cp64|1ax#Q z;fnqqO;_6j)Ws@Oza)6my3l4-=^9%))3&u}`cvf>078JFuIrlKRUCkyQ@~}$Ma;4o zB)PBRek3mKEBHU!RSw3w%GSss_SvA3aoJ8VgXSMhlExisFH~_qF0sb>q_Dml^Qbd^uU_Y^ctHY91gsAO-nn=T zA4z1#ps6yQ7__$_Xb^K~lF`&VI`xooc(>e57!+G1qp7Qu>`Zj{A90=56cJ?*DWXVs z1&4Gdu>g}n-Hka0WDsIHGWz9v(ylz=qzL86=1%yq*|B zYiN(MMNx;^Ise3s;nqTFF6{t1;qQ_W5W}m8O5Pz7q?5Qqz2kh74<2It_e6_z0xc9C zyp|Sm8>=c>=Y!09!_B};3-Z7W9@~ZXMNtnFC_e4u*qUhb>RL+B38W=f#QC<9V%1tgEA|%%$@e$TSVCSA?T%v%64krf5r7V|MVy5>el0h%^6qoohn$GNrM6hqZ z!w=>IjH?qT@}G%L58eJ6H!_TaE+KT&fHK-4@k-aUJ$=vU0`s;NG1D~y6Cs`6)y@F- zFtZTD9J+z)5t1)SLJ7AYwa1Z)R59R+n+ zFa@1K#6*E7iKUr&CyMXxMYc=c2C<*VgF4L4Lxe>;fphI3YVo?)@Ze|=oh{r-{SmEm zeLp*^9mJk*FF$^0Qz(|6f@saQAMzdOYrN?O(*Mw^J`$VmE(Lh`d^(o)z^Q_}z^N=a zqg6r&Gru8OSFA*Dx-Z2d`iT*9-xmZ*81#Z<#9`r1;D^9hGR(xlMyz6{K(S0C}WG=``CipAAM-w{88Tqw{F`@ zZ6Oe4^~kdqR!kdN#i2Y-5mSiZTWUZPnGe{ zz+bUS&49}w?Aapb6Ru2H!#YO04Cz=8j;Y?0!*S}sGHoNq)CXQR2Sh;`=ZR=Y4`N)B znvyn54H@7u2qa2KiKGHi8lO^=!Ij$iS5zDbTZo=aXqk6Sv(FTGf)rW$l!XG@6EF!C z1-V=5pod5c3tW;FsHYsk8`BT(wWd{L!uS$;yoc|8IKUm3<{N= zzr-ckIA#qSXdbx@3AX3nGVmDBhr)&Os~ z`z5_1!HD*SWoiiO=TC^m{#u}p(4x!J!zOOz|e*T^e zhYU*W(vaq$aHxEBMO8XxY*KZL_!*2CN?hE1o9bCq(F#U)lo5 zB;ZLwCVDas5ueh$8a0#Dkkw>B55*3c_$iGJ0R0a!_G?@bRf|g6ECPy>s;Q_G!Bn*G zG=2KNH1qto+84$jI`cz@(@W#hy?>59P;*8B*U2*1*Js^?Qe9mtuYovI{fz?QXunbZ z5&1FG?nXZ|lb;U@GdWah90;m`7QA1{k zf}8|h$zWoF_$z8?N-XG z`Hxhe?j=C{3pxZ4sBD0DzeLT6c$xPR{TKF3R65iRMEUf^g=Ud8$AxC((|zcr9hAG;WpsfY~TG8cUein;sHbtrTjkri62n&h#GQYiB3hA(xARF zdd}&&=|{d-=lDL5{#U(3-AdH$K}9y5CKnt0pRp#IMWcOjadaM~7%IR_07EQX*VN(E zHC=Wr+Am_cg-e3=Z_!De+E;f~1s@$0SU+X1Iy6$*0$8Ju>Kn3As>ngJ4-IJJ6= z;oMBKguOzya8OL+g##;fi17%tSJ^5_{k8T0@mr&)(wXEepTG0`EI=LFpMJ<79R!Gf z+z;YXFSX9XgDk!4PjdSq2I^Gz+Yzz|f490)8Bal(0+3W1WTL5XeCm<4$|9T~-zd&f zLy2XYJr*cF;+5j-MFww>;vWhd^hIkxRMIc}4*NxOXiC}`Fn$gfNvI520p^XVH>vr6 z#;leITU^Au;zJsv5>{fYhoLX-(*1pENG(K#8p?si6KW)*WH>>=y^MUt8ucjL6QoRn z;w)iOL#UXFfV^E=^Q16JOj9GdKTbU<4CzFVoTTi@FDX|sQA?v*`Di7)?ROfjEcN!u_M5@z{H$c{ zO69s};aK7*@;iKKG}AA;LMj#MQ&N(p`j;`jAIjH8Ar@bCDWFKpvu39t!trU@N6uLqLYjHM^*#JZDy(*1}M9~l}MilvpM>DW|t(I8sf&8TI4-k6^H EUo&7b(f|Me diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc deleted file mode 100644 index 01836d3bf09dcde1e84fd65c678552b9ad94ae6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12530 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc deleted file mode 100644 index de04618efa2c372b7b3992009181f469f82f707c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2107 zcmZuyNpIXX6eg)%vv|qotetL$DUg{2?IDMvEox-x62nLgv=s^{vdHmhqAeuH%RnxQ z*g#Ib^xT7e%wOWQr~ZT{P1;9k;-qaT@ad6!q#nQby{Dqn@e#B`d~Y;x5c*vY-fSie zzJM-%1wm1OD5fOE0j}R9FzUA%SnxJdJ97dja|0J^J2Uk%Kk#eaN?TbwXxF-(cCv2J z#fUll2G}{NnJokh*K`KNGi!2oa_+zgRw%iT z`mNdfyIIQ1I88PO8$8NIS#a4)vNB~E%Vi{!BKQ9Q=h0f9sLsX@>o>#IJ2zLq`D*R9 zvNon**T?GY8k0K(f4ExYIg9n4o17OMR{Zs(yw8MyDHtvCC=o0i6+9Gh_Ef-`UU;Vv za$~P#suSLgxEM!i8g16+w(ci0M!%enMvTYWi8ot&J`g{G!VqAJ0zz?Mc!Zv!1~aM2 zENU^E+SD1jPtXWcmwJbtz^N^K+M;c+>d-D-&{oW)i|5hEr%QDC&OFW1h!6gQVsAT%wCQU=9{4?I#pVPc8`SzOau8d=hkt7r2$gJ=&-Zv|A zVpS-#D+1D?2yTbh`mVCXv}9blVVLBJ3`1pu3qT5Gl@Jo9To^W*E#fh7LpkAGal^Tz zeM^~wr6b+~2e=Lo?|=we&7EMo6i+b(JdD#wh%kJLp0VM$$k=den#8<_nUu-!;SDhq zF^|e5-?~~BR1CLSzC8qIhUK0d7x~A7>(_=Nk?d+2#Sfz`CWd8F4#9KDcpjz0ykX<8 ziOQhd0{C`vjCjgjZpe2W-M#>pSIZXkcHfN8fOvrGvpnKe_ z*R~noEClNluFoFCIux&(E)Ke{LKnY*kf_2E9}wYujUM9)O-O|+LZLKJG_vCsy$T)ql{;x2+i|#(E_#fc(Pd8#|B1^;k*0ZPu>pRL4A8|)`kq0koQ-0KF(ap zcBMvfqi-k^7#IN*ETW7HWdk@Y%4S#YY;3Iem`?ZJhoZMLPEyv}(t*skV4}aI{6r)< zq{sr| zoShb1TbjTzPh=8DscJP9CX5Tp`aVCWkGrJBWi75~QJ<~}E`>6{3;wR2?SoJT+l{$q zOd~GpIcFaI_h2Bdf#^ERxQz*r$p+ax_Ft}T<1RctHepV$m@kOs{!IRyU3d%O=7;w2 zt$s`AUmj%)^3M;$tf13W>+LXnG>y{viW7#kh{KS7pxx7SQ|4w-q&3O8t^!;;2i3I6 zvzVnRSiio^iZ;3T7lgRl`Z#ligN-swcBb1(s*!^#sdfe zEA`JrG||5N@8x-x59ZaULE_@uZKg6wMMEi_(RHc@UI-pAF=n($We;fkZA~M7T^s2- ws_e#V<((A%`rdEASp!=W#Qn4h*=HDb3O#Qk*KmO!i?~hNz!j5d%_l3yKT`}rcK`qY diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/auth.py b/venv/lib/python3.10/site-packages/pip/_internal/network/auth.py deleted file mode 100644 index 94a82fa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/auth.py +++ /dev/null @@ -1,561 +0,0 @@ -"""Network Authentication Helpers - -Contains interface (MultiDomainBasicAuth) and associated glue code for -providing credentials in the context of network requests. -""" -import logging -import os -import shutil -import subprocess -import sysconfig -import typing -import urllib.parse -from abc import ABC, abstractmethod -from functools import lru_cache -from os.path import commonprefix -from pathlib import Path -from typing import Any, Dict, List, NamedTuple, Optional, Tuple - -from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth -from pip._vendor.requests.models import Request, Response -from pip._vendor.requests.utils import get_netrc_auth - -from pip._internal.utils.logging import getLogger -from pip._internal.utils.misc import ( - ask, - ask_input, - ask_password, - remove_auth_from_url, - split_auth_netloc_from_url, -) -from pip._internal.vcs.versioncontrol import AuthInfo - -logger = getLogger(__name__) - -KEYRING_DISABLED = False - - -class Credentials(NamedTuple): - url: str - username: str - password: str - - -class KeyRingBaseProvider(ABC): - """Keyring base provider interface""" - - has_keyring: bool - - @abstractmethod - def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: - ... - - @abstractmethod - def save_auth_info(self, url: str, username: str, password: str) -> None: - ... - - -class KeyRingNullProvider(KeyRingBaseProvider): - """Keyring null provider""" - - has_keyring = False - - def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: - return None - - def save_auth_info(self, url: str, username: str, password: str) -> None: - return None - - -class KeyRingPythonProvider(KeyRingBaseProvider): - """Keyring interface which uses locally imported `keyring`""" - - has_keyring = True - - def __init__(self) -> None: - import keyring - - self.keyring = keyring - - def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: - # Support keyring's get_credential interface which supports getting - # credentials without a username. This is only available for - # keyring>=15.2.0. - if hasattr(self.keyring, "get_credential"): - logger.debug("Getting credentials from keyring for %s", url) - cred = self.keyring.get_credential(url, username) - if cred is not None: - return cred.username, cred.password - return None - - if username is not None: - logger.debug("Getting password from keyring for %s", url) - password = self.keyring.get_password(url, username) - if password: - return username, password - return None - - def save_auth_info(self, url: str, username: str, password: str) -> None: - self.keyring.set_password(url, username, password) - - -class KeyRingCliProvider(KeyRingBaseProvider): - """Provider which uses `keyring` cli - - Instead of calling the keyring package installed alongside pip - we call keyring on the command line which will enable pip to - use which ever installation of keyring is available first in - PATH. - """ - - has_keyring = True - - def __init__(self, cmd: str) -> None: - self.keyring = cmd - - def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: - # This is the default implementation of keyring.get_credential - # https://github.com/jaraco/keyring/blob/97689324abcf01bd1793d49063e7ca01e03d7d07/keyring/backend.py#L134-L139 - if username is not None: - password = self._get_password(url, username) - if password is not None: - return username, password - return None - - def save_auth_info(self, url: str, username: str, password: str) -> None: - return self._set_password(url, username, password) - - def _get_password(self, service_name: str, username: str) -> Optional[str]: - """Mirror the implementation of keyring.get_password using cli""" - if self.keyring is None: - return None - - cmd = [self.keyring, "get", service_name, username] - env = os.environ.copy() - env["PYTHONIOENCODING"] = "utf-8" - res = subprocess.run( - cmd, - stdin=subprocess.DEVNULL, - stdout=subprocess.PIPE, - env=env, - ) - if res.returncode: - return None - return res.stdout.decode("utf-8").strip(os.linesep) - - def _set_password(self, service_name: str, username: str, password: str) -> None: - """Mirror the implementation of keyring.set_password using cli""" - if self.keyring is None: - return None - env = os.environ.copy() - env["PYTHONIOENCODING"] = "utf-8" - subprocess.run( - [self.keyring, "set", service_name, username], - input=f"{password}{os.linesep}".encode("utf-8"), - env=env, - check=True, - ) - return None - - -@lru_cache(maxsize=None) -def get_keyring_provider(provider: str) -> KeyRingBaseProvider: - logger.verbose("Keyring provider requested: %s", provider) - - # keyring has previously failed and been disabled - if KEYRING_DISABLED: - provider = "disabled" - if provider in ["import", "auto"]: - try: - impl = KeyRingPythonProvider() - logger.verbose("Keyring provider set: import") - return impl - except ImportError: - pass - except Exception as exc: - # In the event of an unexpected exception - # we should warn the user - msg = "Installed copy of keyring fails with exception %s" - if provider == "auto": - msg = msg + ", trying to find a keyring executable as a fallback" - logger.warning(msg, exc, exc_info=logger.isEnabledFor(logging.DEBUG)) - if provider in ["subprocess", "auto"]: - cli = shutil.which("keyring") - if cli and cli.startswith(sysconfig.get_path("scripts")): - # all code within this function is stolen from shutil.which implementation - @typing.no_type_check - def PATH_as_shutil_which_determines_it() -> str: - path = os.environ.get("PATH", None) - if path is None: - try: - path = os.confstr("CS_PATH") - except (AttributeError, ValueError): - # os.confstr() or CS_PATH is not available - path = os.defpath - # bpo-35755: Don't use os.defpath if the PATH environment variable is - # set to an empty string - - return path - - scripts = Path(sysconfig.get_path("scripts")) - - paths = [] - for path in PATH_as_shutil_which_determines_it().split(os.pathsep): - p = Path(path) - try: - if not p.samefile(scripts): - paths.append(path) - except FileNotFoundError: - pass - - path = os.pathsep.join(paths) - - cli = shutil.which("keyring", path=path) - - if cli: - logger.verbose("Keyring provider set: subprocess with executable %s", cli) - return KeyRingCliProvider(cli) - - logger.verbose("Keyring provider set: disabled") - return KeyRingNullProvider() - - -class MultiDomainBasicAuth(AuthBase): - def __init__( - self, - prompting: bool = True, - index_urls: Optional[List[str]] = None, - keyring_provider: str = "auto", - ) -> None: - self.prompting = prompting - self.index_urls = index_urls - self.keyring_provider = keyring_provider # type: ignore[assignment] - self.passwords: Dict[str, AuthInfo] = {} - # When the user is prompted to enter credentials and keyring is - # available, we will offer to save them. If the user accepts, - # this value is set to the credentials they entered. After the - # request authenticates, the caller should call - # ``save_credentials`` to save these. - self._credentials_to_save: Optional[Credentials] = None - - @property - def keyring_provider(self) -> KeyRingBaseProvider: - return get_keyring_provider(self._keyring_provider) - - @keyring_provider.setter - def keyring_provider(self, provider: str) -> None: - # The free function get_keyring_provider has been decorated with - # functools.cache. If an exception occurs in get_keyring_auth that - # cache will be cleared and keyring disabled, take that into account - # if you want to remove this indirection. - self._keyring_provider = provider - - @property - def use_keyring(self) -> bool: - # We won't use keyring when --no-input is passed unless - # a specific provider is requested because it might require - # user interaction - return self.prompting or self._keyring_provider not in ["auto", "disabled"] - - def _get_keyring_auth( - self, - url: Optional[str], - username: Optional[str], - ) -> Optional[AuthInfo]: - """Return the tuple auth for a given url from keyring.""" - # Do nothing if no url was provided - if not url: - return None - - try: - return self.keyring_provider.get_auth_info(url, username) - except Exception as exc: - logger.warning( - "Keyring is skipped due to an exception: %s", - str(exc), - ) - global KEYRING_DISABLED - KEYRING_DISABLED = True - get_keyring_provider.cache_clear() - return None - - def _get_index_url(self, url: str) -> Optional[str]: - """Return the original index URL matching the requested URL. - - Cached or dynamically generated credentials may work against - the original index URL rather than just the netloc. - - The provided url should have had its username and password - removed already. If the original index url had credentials then - they will be included in the return value. - - Returns None if no matching index was found, or if --no-index - was specified by the user. - """ - if not url or not self.index_urls: - return None - - url = remove_auth_from_url(url).rstrip("/") + "/" - parsed_url = urllib.parse.urlsplit(url) - - candidates = [] - - for index in self.index_urls: - index = index.rstrip("/") + "/" - parsed_index = urllib.parse.urlsplit(remove_auth_from_url(index)) - if parsed_url == parsed_index: - return index - - if parsed_url.netloc != parsed_index.netloc: - continue - - candidate = urllib.parse.urlsplit(index) - candidates.append(candidate) - - if not candidates: - return None - - candidates.sort( - reverse=True, - key=lambda candidate: commonprefix( - [ - parsed_url.path, - candidate.path, - ] - ).rfind("/"), - ) - - return urllib.parse.urlunsplit(candidates[0]) - - def _get_new_credentials( - self, - original_url: str, - *, - allow_netrc: bool = True, - allow_keyring: bool = False, - ) -> AuthInfo: - """Find and return credentials for the specified URL.""" - # Split the credentials and netloc from the url. - url, netloc, url_user_password = split_auth_netloc_from_url( - original_url, - ) - - # Start with the credentials embedded in the url - username, password = url_user_password - if username is not None and password is not None: - logger.debug("Found credentials in url for %s", netloc) - return url_user_password - - # Find a matching index url for this request - index_url = self._get_index_url(url) - if index_url: - # Split the credentials from the url. - index_info = split_auth_netloc_from_url(index_url) - if index_info: - index_url, _, index_url_user_password = index_info - logger.debug("Found index url %s", index_url) - - # If an index URL was found, try its embedded credentials - if index_url and index_url_user_password[0] is not None: - username, password = index_url_user_password - if username is not None and password is not None: - logger.debug("Found credentials in index url for %s", netloc) - return index_url_user_password - - # Get creds from netrc if we still don't have them - if allow_netrc: - netrc_auth = get_netrc_auth(original_url) - if netrc_auth: - logger.debug("Found credentials in netrc for %s", netloc) - return netrc_auth - - # If we don't have a password and keyring is available, use it. - if allow_keyring: - # The index url is more specific than the netloc, so try it first - # fmt: off - kr_auth = ( - self._get_keyring_auth(index_url, username) or - self._get_keyring_auth(netloc, username) - ) - # fmt: on - if kr_auth: - logger.debug("Found credentials in keyring for %s", netloc) - return kr_auth - - return username, password - - def _get_url_and_credentials( - self, original_url: str - ) -> Tuple[str, Optional[str], Optional[str]]: - """Return the credentials to use for the provided URL. - - If allowed, netrc and keyring may be used to obtain the - correct credentials. - - Returns (url_without_credentials, username, password). Note - that even if the original URL contains credentials, this - function may return a different username and password. - """ - url, netloc, _ = split_auth_netloc_from_url(original_url) - - # Try to get credentials from original url - username, password = self._get_new_credentials(original_url) - - # If credentials not found, use any stored credentials for this netloc. - # Do this if either the username or the password is missing. - # This accounts for the situation in which the user has specified - # the username in the index url, but the password comes from keyring. - if (username is None or password is None) and netloc in self.passwords: - un, pw = self.passwords[netloc] - # It is possible that the cached credentials are for a different username, - # in which case the cache should be ignored. - if username is None or username == un: - username, password = un, pw - - if username is not None or password is not None: - # Convert the username and password if they're None, so that - # this netloc will show up as "cached" in the conditional above. - # Further, HTTPBasicAuth doesn't accept None, so it makes sense to - # cache the value that is going to be used. - username = username or "" - password = password or "" - - # Store any acquired credentials. - self.passwords[netloc] = (username, password) - - assert ( - # Credentials were found - (username is not None and password is not None) - # Credentials were not found - or (username is None and password is None) - ), f"Could not load credentials from url: {original_url}" - - return url, username, password - - def __call__(self, req: Request) -> Request: - # Get credentials for this request - url, username, password = self._get_url_and_credentials(req.url) - - # Set the url of the request to the url without any credentials - req.url = url - - if username is not None and password is not None: - # Send the basic auth with this request - req = HTTPBasicAuth(username, password)(req) - - # Attach a hook to handle 401 responses - req.register_hook("response", self.handle_401) - - return req - - # Factored out to allow for easy patching in tests - def _prompt_for_password( - self, netloc: str - ) -> Tuple[Optional[str], Optional[str], bool]: - username = ask_input(f"User for {netloc}: ") if self.prompting else None - if not username: - return None, None, False - if self.use_keyring: - auth = self._get_keyring_auth(netloc, username) - if auth and auth[0] is not None and auth[1] is not None: - return auth[0], auth[1], False - password = ask_password("Password: ") - return username, password, True - - # Factored out to allow for easy patching in tests - def _should_save_password_to_keyring(self) -> bool: - if ( - not self.prompting - or not self.use_keyring - or not self.keyring_provider.has_keyring - ): - return False - return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" - - def handle_401(self, resp: Response, **kwargs: Any) -> Response: - # We only care about 401 responses, anything else we want to just - # pass through the actual response - if resp.status_code != 401: - return resp - - username, password = None, None - - # Query the keyring for credentials: - if self.use_keyring: - username, password = self._get_new_credentials( - resp.url, - allow_netrc=False, - allow_keyring=True, - ) - - # We are not able to prompt the user so simply return the response - if not self.prompting and not username and not password: - return resp - - parsed = urllib.parse.urlparse(resp.url) - - # Prompt the user for a new username and password - save = False - if not username and not password: - username, password, save = self._prompt_for_password(parsed.netloc) - - # Store the new username and password to use for future requests - self._credentials_to_save = None - if username is not None and password is not None: - self.passwords[parsed.netloc] = (username, password) - - # Prompt to save the password to keyring - if save and self._should_save_password_to_keyring(): - self._credentials_to_save = Credentials( - url=parsed.netloc, - username=username, - password=password, - ) - - # Consume content and release the original connection to allow our new - # request to reuse the same one. - # The result of the assignment isn't used, it's just needed to consume - # the content. - _ = resp.content - resp.raw.release_conn() - - # Add our new username and password to the request - req = HTTPBasicAuth(username or "", password or "")(resp.request) - req.register_hook("response", self.warn_on_401) - - # On successful request, save the credentials that were used to - # keyring. (Note that if the user responded "no" above, this member - # is not set and nothing will be saved.) - if self._credentials_to_save: - req.register_hook("response", self.save_credentials) - - # Send our new request - new_resp = resp.connection.send(req, **kwargs) - new_resp.history.append(resp) - - return new_resp - - def warn_on_401(self, resp: Response, **kwargs: Any) -> None: - """Response callback to warn about incorrect credentials.""" - if resp.status_code == 401: - logger.warning( - "401 Error, Credentials not correct for %s", - resp.request.url, - ) - - def save_credentials(self, resp: Response, **kwargs: Any) -> None: - """Response callback to save credentials on success.""" - assert ( - self.keyring_provider.has_keyring - ), "should never reach here without keyring" - - creds = self._credentials_to_save - self._credentials_to_save = None - if creds and resp.status_code < 400: - try: - logger.info("Saving credentials to keyring") - self.keyring_provider.save_auth_info( - creds.url, creds.username, creds.password - ) - except Exception: - logger.exception("Failed to save credentials") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/cache.py b/venv/lib/python3.10/site-packages/pip/_internal/network/cache.py deleted file mode 100644 index 4d0fb54..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/cache.py +++ /dev/null @@ -1,106 +0,0 @@ -"""HTTP cache implementation. -""" - -import os -from contextlib import contextmanager -from datetime import datetime -from typing import BinaryIO, Generator, Optional, Union - -from pip._vendor.cachecontrol.cache import SeparateBodyBaseCache -from pip._vendor.cachecontrol.caches import SeparateBodyFileCache -from pip._vendor.requests.models import Response - -from pip._internal.utils.filesystem import adjacent_tmp_file, replace -from pip._internal.utils.misc import ensure_dir - - -def is_from_cache(response: Response) -> bool: - return getattr(response, "from_cache", False) - - -@contextmanager -def suppressed_cache_errors() -> Generator[None, None, None]: - """If we can't access the cache then we can just skip caching and process - requests as if caching wasn't enabled. - """ - try: - yield - except OSError: - pass - - -class SafeFileCache(SeparateBodyBaseCache): - """ - A file based cache which is safe to use even when the target directory may - not be accessible or writable. - - There is a race condition when two processes try to write and/or read the - same entry at the same time, since each entry consists of two separate - files (https://github.com/psf/cachecontrol/issues/324). We therefore have - additional logic that makes sure that both files to be present before - returning an entry; this fixes the read side of the race condition. - - For the write side, we assume that the server will only ever return the - same data for the same URL, which ought to be the case for files pip is - downloading. PyPI does not have a mechanism to swap out a wheel for - another wheel, for example. If this assumption is not true, the - CacheControl issue will need to be fixed. - """ - - def __init__(self, directory: str) -> None: - assert directory is not None, "Cache directory must not be None." - super().__init__() - self.directory = directory - - def _get_cache_path(self, name: str) -> str: - # From cachecontrol.caches.file_cache.FileCache._fn, brought into our - # class for backwards-compatibility and to avoid using a non-public - # method. - hashed = SeparateBodyFileCache.encode(name) - parts = list(hashed[:5]) + [hashed] - return os.path.join(self.directory, *parts) - - def get(self, key: str) -> Optional[bytes]: - # The cache entry is only valid if both metadata and body exist. - metadata_path = self._get_cache_path(key) - body_path = metadata_path + ".body" - if not (os.path.exists(metadata_path) and os.path.exists(body_path)): - return None - with suppressed_cache_errors(): - with open(metadata_path, "rb") as f: - return f.read() - - def _write(self, path: str, data: bytes) -> None: - with suppressed_cache_errors(): - ensure_dir(os.path.dirname(path)) - - with adjacent_tmp_file(path) as f: - f.write(data) - - replace(f.name, path) - - def set( - self, key: str, value: bytes, expires: Union[int, datetime, None] = None - ) -> None: - path = self._get_cache_path(key) - self._write(path, value) - - def delete(self, key: str) -> None: - path = self._get_cache_path(key) - with suppressed_cache_errors(): - os.remove(path) - with suppressed_cache_errors(): - os.remove(path + ".body") - - def get_body(self, key: str) -> Optional[BinaryIO]: - # The cache entry is only valid if both metadata and body exist. - metadata_path = self._get_cache_path(key) - body_path = metadata_path + ".body" - if not (os.path.exists(metadata_path) and os.path.exists(body_path)): - return None - with suppressed_cache_errors(): - return open(body_path, "rb") - - def set_body(self, key: str, body: bytes) -> None: - path = self._get_cache_path(key) + ".body" - self._write(path, body) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/download.py b/venv/lib/python3.10/site-packages/pip/_internal/network/download.py deleted file mode 100644 index d1d4354..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/download.py +++ /dev/null @@ -1,186 +0,0 @@ -"""Download files with progress indicators. -""" -import email.message -import logging -import mimetypes -import os -from typing import Iterable, Optional, Tuple - -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response - -from pip._internal.cli.progress_bars import get_download_progress_renderer -from pip._internal.exceptions import NetworkConnectionError -from pip._internal.models.index import PyPI -from pip._internal.models.link import Link -from pip._internal.network.cache import is_from_cache -from pip._internal.network.session import PipSession -from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks -from pip._internal.utils.misc import format_size, redact_auth_from_url, splitext - -logger = logging.getLogger(__name__) - - -def _get_http_response_size(resp: Response) -> Optional[int]: - try: - return int(resp.headers["content-length"]) - except (ValueError, KeyError, TypeError): - return None - - -def _prepare_download( - resp: Response, - link: Link, - progress_bar: str, -) -> Iterable[bytes]: - total_length = _get_http_response_size(resp) - - if link.netloc == PyPI.file_storage_domain: - url = link.show_url - else: - url = link.url_without_fragment - - logged_url = redact_auth_from_url(url) - - if total_length: - logged_url = f"{logged_url} ({format_size(total_length)})" - - if is_from_cache(resp): - logger.info("Using cached %s", logged_url) - else: - logger.info("Downloading %s", logged_url) - - if logger.getEffectiveLevel() > logging.INFO: - show_progress = False - elif is_from_cache(resp): - show_progress = False - elif not total_length: - show_progress = True - elif total_length > (40 * 1000): - show_progress = True - else: - show_progress = False - - chunks = response_chunks(resp, CONTENT_CHUNK_SIZE) - - if not show_progress: - return chunks - - renderer = get_download_progress_renderer(bar_type=progress_bar, size=total_length) - return renderer(chunks) - - -def sanitize_content_filename(filename: str) -> str: - """ - Sanitize the "filename" value from a Content-Disposition header. - """ - return os.path.basename(filename) - - -def parse_content_disposition(content_disposition: str, default_filename: str) -> str: - """ - Parse the "filename" value from a Content-Disposition header, and - return the default filename if the result is empty. - """ - m = email.message.Message() - m["content-type"] = content_disposition - filename = m.get_param("filename") - if filename: - # We need to sanitize the filename to prevent directory traversal - # in case the filename contains ".." path parts. - filename = sanitize_content_filename(str(filename)) - return filename or default_filename - - -def _get_http_response_filename(resp: Response, link: Link) -> str: - """Get an ideal filename from the given HTTP response, falling back to - the link filename if not provided. - """ - filename = link.filename # fallback - # Have a look at the Content-Disposition header for a better guess - content_disposition = resp.headers.get("content-disposition") - if content_disposition: - filename = parse_content_disposition(content_disposition, filename) - ext: Optional[str] = splitext(filename)[1] - if not ext: - ext = mimetypes.guess_extension(resp.headers.get("content-type", "")) - if ext: - filename += ext - if not ext and link.url != resp.url: - ext = os.path.splitext(resp.url)[1] - if ext: - filename += ext - return filename - - -def _http_get_download(session: PipSession, link: Link) -> Response: - target_url = link.url.split("#", 1)[0] - resp = session.get(target_url, headers=HEADERS, stream=True) - raise_for_status(resp) - return resp - - -class Downloader: - def __init__( - self, - session: PipSession, - progress_bar: str, - ) -> None: - self._session = session - self._progress_bar = progress_bar - - def __call__(self, link: Link, location: str) -> Tuple[str, str]: - """Download the file given by link into location.""" - try: - resp = _http_get_download(self._session, link) - except NetworkConnectionError as e: - assert e.response is not None - logger.critical( - "HTTP error %s while getting %s", e.response.status_code, link - ) - raise - - filename = _get_http_response_filename(resp, link) - filepath = os.path.join(location, filename) - - chunks = _prepare_download(resp, link, self._progress_bar) - with open(filepath, "wb") as content_file: - for chunk in chunks: - content_file.write(chunk) - content_type = resp.headers.get("Content-Type", "") - return filepath, content_type - - -class BatchDownloader: - def __init__( - self, - session: PipSession, - progress_bar: str, - ) -> None: - self._session = session - self._progress_bar = progress_bar - - def __call__( - self, links: Iterable[Link], location: str - ) -> Iterable[Tuple[Link, Tuple[str, str]]]: - """Download the files given by links into location.""" - for link in links: - try: - resp = _http_get_download(self._session, link) - except NetworkConnectionError as e: - assert e.response is not None - logger.critical( - "HTTP error %s while getting %s", - e.response.status_code, - link, - ) - raise - - filename = _get_http_response_filename(resp, link) - filepath = os.path.join(location, filename) - - chunks = _prepare_download(resp, link, self._progress_bar) - with open(filepath, "wb") as content_file: - for chunk in chunks: - content_file.write(chunk) - content_type = resp.headers.get("Content-Type", "") - yield link, (filepath, content_type) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py deleted file mode 100644 index 82ec50d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py +++ /dev/null @@ -1,210 +0,0 @@ -"""Lazy ZIP over HTTP""" - -__all__ = ["HTTPRangeRequestUnsupported", "dist_from_wheel_url"] - -from bisect import bisect_left, bisect_right -from contextlib import contextmanager -from tempfile import NamedTemporaryFile -from typing import Any, Dict, Generator, List, Optional, Tuple -from zipfile import BadZipFile, ZipFile - -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response - -from pip._internal.metadata import BaseDistribution, MemoryWheel, get_wheel_distribution -from pip._internal.network.session import PipSession -from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks - - -class HTTPRangeRequestUnsupported(Exception): - pass - - -def dist_from_wheel_url(name: str, url: str, session: PipSession) -> BaseDistribution: - """Return a distribution object from the given wheel URL. - - This uses HTTP range requests to only fetch the portion of the wheel - containing metadata, just enough for the object to be constructed. - If such requests are not supported, HTTPRangeRequestUnsupported - is raised. - """ - with LazyZipOverHTTP(url, session) as zf: - # For read-only ZIP files, ZipFile only needs methods read, - # seek, seekable and tell, not the whole IO protocol. - wheel = MemoryWheel(zf.name, zf) # type: ignore - # After context manager exit, wheel.name - # is an invalid file by intention. - return get_wheel_distribution(wheel, canonicalize_name(name)) - - -class LazyZipOverHTTP: - """File-like object mapped to a ZIP file over HTTP. - - This uses HTTP range requests to lazily fetch the file's content, - which is supposed to be fed to ZipFile. If such requests are not - supported by the server, raise HTTPRangeRequestUnsupported - during initialization. - """ - - def __init__( - self, url: str, session: PipSession, chunk_size: int = CONTENT_CHUNK_SIZE - ) -> None: - head = session.head(url, headers=HEADERS) - raise_for_status(head) - assert head.status_code == 200 - self._session, self._url, self._chunk_size = session, url, chunk_size - self._length = int(head.headers["Content-Length"]) - self._file = NamedTemporaryFile() - self.truncate(self._length) - self._left: List[int] = [] - self._right: List[int] = [] - if "bytes" not in head.headers.get("Accept-Ranges", "none"): - raise HTTPRangeRequestUnsupported("range request is not supported") - self._check_zip() - - @property - def mode(self) -> str: - """Opening mode, which is always rb.""" - return "rb" - - @property - def name(self) -> str: - """Path to the underlying file.""" - return self._file.name - - def seekable(self) -> bool: - """Return whether random access is supported, which is True.""" - return True - - def close(self) -> None: - """Close the file.""" - self._file.close() - - @property - def closed(self) -> bool: - """Whether the file is closed.""" - return self._file.closed - - def read(self, size: int = -1) -> bytes: - """Read up to size bytes from the object and return them. - - As a convenience, if size is unspecified or -1, - all bytes until EOF are returned. Fewer than - size bytes may be returned if EOF is reached. - """ - download_size = max(size, self._chunk_size) - start, length = self.tell(), self._length - stop = length if size < 0 else min(start + download_size, length) - start = max(0, stop - download_size) - self._download(start, stop - 1) - return self._file.read(size) - - def readable(self) -> bool: - """Return whether the file is readable, which is True.""" - return True - - def seek(self, offset: int, whence: int = 0) -> int: - """Change stream position and return the new absolute position. - - Seek to offset relative position indicated by whence: - * 0: Start of stream (the default). pos should be >= 0; - * 1: Current position - pos may be negative; - * 2: End of stream - pos usually negative. - """ - return self._file.seek(offset, whence) - - def tell(self) -> int: - """Return the current position.""" - return self._file.tell() - - def truncate(self, size: Optional[int] = None) -> int: - """Resize the stream to the given size in bytes. - - If size is unspecified resize to the current position. - The current stream position isn't changed. - - Return the new file size. - """ - return self._file.truncate(size) - - def writable(self) -> bool: - """Return False.""" - return False - - def __enter__(self) -> "LazyZipOverHTTP": - self._file.__enter__() - return self - - def __exit__(self, *exc: Any) -> None: - self._file.__exit__(*exc) - - @contextmanager - def _stay(self) -> Generator[None, None, None]: - """Return a context manager keeping the position. - - At the end of the block, seek back to original position. - """ - pos = self.tell() - try: - yield - finally: - self.seek(pos) - - def _check_zip(self) -> None: - """Check and download until the file is a valid ZIP.""" - end = self._length - 1 - for start in reversed(range(0, end, self._chunk_size)): - self._download(start, end) - with self._stay(): - try: - # For read-only ZIP files, ZipFile only needs - # methods read, seek, seekable and tell. - ZipFile(self) # type: ignore - except BadZipFile: - pass - else: - break - - def _stream_response( - self, start: int, end: int, base_headers: Dict[str, str] = HEADERS - ) -> Response: - """Return HTTP response to a range request from start to end.""" - headers = base_headers.copy() - headers["Range"] = f"bytes={start}-{end}" - # TODO: Get range requests to be correctly cached - headers["Cache-Control"] = "no-cache" - return self._session.get(self._url, headers=headers, stream=True) - - def _merge( - self, start: int, end: int, left: int, right: int - ) -> Generator[Tuple[int, int], None, None]: - """Return a generator of intervals to be fetched. - - Args: - start (int): Start of needed interval - end (int): End of needed interval - left (int): Index of first overlapping downloaded data - right (int): Index after last overlapping downloaded data - """ - lslice, rslice = self._left[left:right], self._right[left:right] - i = start = min([start] + lslice[:1]) - end = max([end] + rslice[-1:]) - for j, k in zip(lslice, rslice): - if j > i: - yield i, j - 1 - i = k + 1 - if i <= end: - yield i, end - self._left[left:right], self._right[left:right] = [start], [end] - - def _download(self, start: int, end: int) -> None: - """Download bytes from start to end inclusively.""" - with self._stay(): - left = bisect_left(self._right, start) - right = bisect_right(self._left, end) - for start, end in self._merge(start, end, left, right): - response = self._stream_response(start, end) - response.raise_for_status() - self.seek(start) - for chunk in response_chunks(response, self._chunk_size): - self._file.write(chunk) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/session.py b/venv/lib/python3.10/site-packages/pip/_internal/network/session.py deleted file mode 100644 index f17efc5..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/session.py +++ /dev/null @@ -1,520 +0,0 @@ -"""PipSession and supporting code, containing all pip-specific -network request configuration and behavior. -""" - -import email.utils -import io -import ipaddress -import json -import logging -import mimetypes -import os -import platform -import shutil -import subprocess -import sys -import urllib.parse -import warnings -from typing import ( - TYPE_CHECKING, - Any, - Dict, - Generator, - List, - Mapping, - Optional, - Sequence, - Tuple, - Union, -) - -from pip._vendor import requests, urllib3 -from pip._vendor.cachecontrol import CacheControlAdapter as _BaseCacheControlAdapter -from pip._vendor.requests.adapters import DEFAULT_POOLBLOCK, BaseAdapter -from pip._vendor.requests.adapters import HTTPAdapter as _BaseHTTPAdapter -from pip._vendor.requests.models import PreparedRequest, Response -from pip._vendor.requests.structures import CaseInsensitiveDict -from pip._vendor.urllib3.connectionpool import ConnectionPool -from pip._vendor.urllib3.exceptions import InsecureRequestWarning - -from pip import __version__ -from pip._internal.metadata import get_default_environment -from pip._internal.models.link import Link -from pip._internal.network.auth import MultiDomainBasicAuth -from pip._internal.network.cache import SafeFileCache - -# Import ssl from compat so the initial import occurs in only one place. -from pip._internal.utils.compat import has_tls -from pip._internal.utils.glibc import libc_ver -from pip._internal.utils.misc import build_url_from_netloc, parse_netloc -from pip._internal.utils.urls import url_to_path - -if TYPE_CHECKING: - from ssl import SSLContext - - from pip._vendor.urllib3.poolmanager import PoolManager - - -logger = logging.getLogger(__name__) - -SecureOrigin = Tuple[str, str, Optional[Union[int, str]]] - - -# Ignore warning raised when using --trusted-host. -warnings.filterwarnings("ignore", category=InsecureRequestWarning) - - -SECURE_ORIGINS: List[SecureOrigin] = [ - # protocol, hostname, port - # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) - ("https", "*", "*"), - ("*", "localhost", "*"), - ("*", "127.0.0.0/8", "*"), - ("*", "::1/128", "*"), - ("file", "*", None), - # ssh is always secure. - ("ssh", "*", "*"), -] - - -# These are environment variables present when running under various -# CI systems. For each variable, some CI systems that use the variable -# are indicated. The collection was chosen so that for each of a number -# of popular systems, at least one of the environment variables is used. -# This list is used to provide some indication of and lower bound for -# CI traffic to PyPI. Thus, it is okay if the list is not comprehensive. -# For more background, see: https://github.com/pypa/pip/issues/5499 -CI_ENVIRONMENT_VARIABLES = ( - # Azure Pipelines - "BUILD_BUILDID", - # Jenkins - "BUILD_ID", - # AppVeyor, CircleCI, Codeship, Gitlab CI, Shippable, Travis CI - "CI", - # Explicit environment variable. - "PIP_IS_CI", -) - - -def looks_like_ci() -> bool: - """ - Return whether it looks like pip is running under CI. - """ - # We don't use the method of checking for a tty (e.g. using isatty()) - # because some CI systems mimic a tty (e.g. Travis CI). Thus that - # method doesn't provide definitive information in either direction. - return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) - - -def user_agent() -> str: - """ - Return a string representing the user agent. - """ - data: Dict[str, Any] = { - "installer": {"name": "pip", "version": __version__}, - "python": platform.python_version(), - "implementation": { - "name": platform.python_implementation(), - }, - } - - if data["implementation"]["name"] == "CPython": - data["implementation"]["version"] = platform.python_version() - elif data["implementation"]["name"] == "PyPy": - pypy_version_info = sys.pypy_version_info # type: ignore - if pypy_version_info.releaselevel == "final": - pypy_version_info = pypy_version_info[:3] - data["implementation"]["version"] = ".".join( - [str(x) for x in pypy_version_info] - ) - elif data["implementation"]["name"] == "Jython": - # Complete Guess - data["implementation"]["version"] = platform.python_version() - elif data["implementation"]["name"] == "IronPython": - # Complete Guess - data["implementation"]["version"] = platform.python_version() - - if sys.platform.startswith("linux"): - from pip._vendor import distro - - linux_distribution = distro.name(), distro.version(), distro.codename() - distro_infos: Dict[str, Any] = dict( - filter( - lambda x: x[1], - zip(["name", "version", "id"], linux_distribution), - ) - ) - libc = dict( - filter( - lambda x: x[1], - zip(["lib", "version"], libc_ver()), - ) - ) - if libc: - distro_infos["libc"] = libc - if distro_infos: - data["distro"] = distro_infos - - if sys.platform.startswith("darwin") and platform.mac_ver()[0]: - data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} - - if platform.system(): - data.setdefault("system", {})["name"] = platform.system() - - if platform.release(): - data.setdefault("system", {})["release"] = platform.release() - - if platform.machine(): - data["cpu"] = platform.machine() - - if has_tls(): - import _ssl as ssl - - data["openssl_version"] = ssl.OPENSSL_VERSION - - setuptools_dist = get_default_environment().get_distribution("setuptools") - if setuptools_dist is not None: - data["setuptools_version"] = str(setuptools_dist.version) - - if shutil.which("rustc") is not None: - # If for any reason `rustc --version` fails, silently ignore it - try: - rustc_output = subprocess.check_output( - ["rustc", "--version"], stderr=subprocess.STDOUT, timeout=0.5 - ) - except Exception: - pass - else: - if rustc_output.startswith(b"rustc "): - # The format of `rustc --version` is: - # `b'rustc 1.52.1 (9bc8c42bb 2021-05-09)\n'` - # We extract just the middle (1.52.1) part - data["rustc_version"] = rustc_output.split(b" ")[1].decode() - - # Use None rather than False so as not to give the impression that - # pip knows it is not being run under CI. Rather, it is a null or - # inconclusive result. Also, we include some value rather than no - # value to make it easier to know that the check has been run. - data["ci"] = True if looks_like_ci() else None - - user_data = os.environ.get("PIP_USER_AGENT_USER_DATA") - if user_data is not None: - data["user_data"] = user_data - - return "{data[installer][name]}/{data[installer][version]} {json}".format( - data=data, - json=json.dumps(data, separators=(",", ":"), sort_keys=True), - ) - - -class LocalFSAdapter(BaseAdapter): - def send( - self, - request: PreparedRequest, - stream: bool = False, - timeout: Optional[Union[float, Tuple[float, float]]] = None, - verify: Union[bool, str] = True, - cert: Optional[Union[str, Tuple[str, str]]] = None, - proxies: Optional[Mapping[str, str]] = None, - ) -> Response: - pathname = url_to_path(request.url) - - resp = Response() - resp.status_code = 200 - resp.url = request.url - - try: - stats = os.stat(pathname) - except OSError as exc: - # format the exception raised as a io.BytesIO object, - # to return a better error message: - resp.status_code = 404 - resp.reason = type(exc).__name__ - resp.raw = io.BytesIO(f"{resp.reason}: {exc}".encode("utf8")) - else: - modified = email.utils.formatdate(stats.st_mtime, usegmt=True) - content_type = mimetypes.guess_type(pathname)[0] or "text/plain" - resp.headers = CaseInsensitiveDict( - { - "Content-Type": content_type, - "Content-Length": stats.st_size, - "Last-Modified": modified, - } - ) - - resp.raw = open(pathname, "rb") - resp.close = resp.raw.close - - return resp - - def close(self) -> None: - pass - - -class _SSLContextAdapterMixin: - """Mixin to add the ``ssl_context`` constructor argument to HTTP adapters. - - The additional argument is forwarded directly to the pool manager. This allows us - to dynamically decide what SSL store to use at runtime, which is used to implement - the optional ``truststore`` backend. - """ - - def __init__( - self, - *, - ssl_context: Optional["SSLContext"] = None, - **kwargs: Any, - ) -> None: - self._ssl_context = ssl_context - super().__init__(**kwargs) - - def init_poolmanager( - self, - connections: int, - maxsize: int, - block: bool = DEFAULT_POOLBLOCK, - **pool_kwargs: Any, - ) -> "PoolManager": - if self._ssl_context is not None: - pool_kwargs.setdefault("ssl_context", self._ssl_context) - return super().init_poolmanager( # type: ignore[misc] - connections=connections, - maxsize=maxsize, - block=block, - **pool_kwargs, - ) - - -class HTTPAdapter(_SSLContextAdapterMixin, _BaseHTTPAdapter): - pass - - -class CacheControlAdapter(_SSLContextAdapterMixin, _BaseCacheControlAdapter): - pass - - -class InsecureHTTPAdapter(HTTPAdapter): - def cert_verify( - self, - conn: ConnectionPool, - url: str, - verify: Union[bool, str], - cert: Optional[Union[str, Tuple[str, str]]], - ) -> None: - super().cert_verify(conn=conn, url=url, verify=False, cert=cert) - - -class InsecureCacheControlAdapter(CacheControlAdapter): - def cert_verify( - self, - conn: ConnectionPool, - url: str, - verify: Union[bool, str], - cert: Optional[Union[str, Tuple[str, str]]], - ) -> None: - super().cert_verify(conn=conn, url=url, verify=False, cert=cert) - - -class PipSession(requests.Session): - timeout: Optional[int] = None - - def __init__( - self, - *args: Any, - retries: int = 0, - cache: Optional[str] = None, - trusted_hosts: Sequence[str] = (), - index_urls: Optional[List[str]] = None, - ssl_context: Optional["SSLContext"] = None, - **kwargs: Any, - ) -> None: - """ - :param trusted_hosts: Domains not to emit warnings for when not using - HTTPS. - """ - super().__init__(*args, **kwargs) - - # Namespace the attribute with "pip_" just in case to prevent - # possible conflicts with the base class. - self.pip_trusted_origins: List[Tuple[str, Optional[int]]] = [] - - # Attach our User Agent to the request - self.headers["User-Agent"] = user_agent() - - # Attach our Authentication handler to the session - self.auth = MultiDomainBasicAuth(index_urls=index_urls) - - # Create our urllib3.Retry instance which will allow us to customize - # how we handle retries. - retries = urllib3.Retry( - # Set the total number of retries that a particular request can - # have. - total=retries, - # A 503 error from PyPI typically means that the Fastly -> Origin - # connection got interrupted in some way. A 503 error in general - # is typically considered a transient error so we'll go ahead and - # retry it. - # A 500 may indicate transient error in Amazon S3 - # A 502 may be a transient error from a CDN like CloudFlare or CloudFront - # A 520 or 527 - may indicate transient error in CloudFlare - status_forcelist=[500, 502, 503, 520, 527], - # Add a small amount of back off between failed requests in - # order to prevent hammering the service. - backoff_factor=0.25, - ) # type: ignore - - # Our Insecure HTTPAdapter disables HTTPS validation. It does not - # support caching so we'll use it for all http:// URLs. - # If caching is disabled, we will also use it for - # https:// hosts that we've marked as ignoring - # TLS errors for (trusted-hosts). - insecure_adapter = InsecureHTTPAdapter(max_retries=retries) - - # We want to _only_ cache responses on securely fetched origins or when - # the host is specified as trusted. We do this because - # we can't validate the response of an insecurely/untrusted fetched - # origin, and we don't want someone to be able to poison the cache and - # require manual eviction from the cache to fix it. - if cache: - secure_adapter = CacheControlAdapter( - cache=SafeFileCache(cache), - max_retries=retries, - ssl_context=ssl_context, - ) - self._trusted_host_adapter = InsecureCacheControlAdapter( - cache=SafeFileCache(cache), - max_retries=retries, - ) - else: - secure_adapter = HTTPAdapter(max_retries=retries, ssl_context=ssl_context) - self._trusted_host_adapter = insecure_adapter - - self.mount("https://", secure_adapter) - self.mount("http://", insecure_adapter) - - # Enable file:// urls - self.mount("file://", LocalFSAdapter()) - - for host in trusted_hosts: - self.add_trusted_host(host, suppress_logging=True) - - def update_index_urls(self, new_index_urls: List[str]) -> None: - """ - :param new_index_urls: New index urls to update the authentication - handler with. - """ - self.auth.index_urls = new_index_urls - - def add_trusted_host( - self, host: str, source: Optional[str] = None, suppress_logging: bool = False - ) -> None: - """ - :param host: It is okay to provide a host that has previously been - added. - :param source: An optional source string, for logging where the host - string came from. - """ - if not suppress_logging: - msg = f"adding trusted host: {host!r}" - if source is not None: - msg += f" (from {source})" - logger.info(msg) - - parsed_host, parsed_port = parse_netloc(host) - if parsed_host is None: - raise ValueError(f"Trusted host URL must include a host part: {host!r}") - if (parsed_host, parsed_port) not in self.pip_trusted_origins: - self.pip_trusted_origins.append((parsed_host, parsed_port)) - - self.mount( - build_url_from_netloc(host, scheme="http") + "/", self._trusted_host_adapter - ) - self.mount(build_url_from_netloc(host) + "/", self._trusted_host_adapter) - if not parsed_port: - self.mount( - build_url_from_netloc(host, scheme="http") + ":", - self._trusted_host_adapter, - ) - # Mount wildcard ports for the same host. - self.mount(build_url_from_netloc(host) + ":", self._trusted_host_adapter) - - def iter_secure_origins(self) -> Generator[SecureOrigin, None, None]: - yield from SECURE_ORIGINS - for host, port in self.pip_trusted_origins: - yield ("*", host, "*" if port is None else port) - - def is_secure_origin(self, location: Link) -> bool: - # Determine if this url used a secure transport mechanism - parsed = urllib.parse.urlparse(str(location)) - origin_protocol, origin_host, origin_port = ( - parsed.scheme, - parsed.hostname, - parsed.port, - ) - - # The protocol to use to see if the protocol matches. - # Don't count the repository type as part of the protocol: in - # cases such as "git+ssh", only use "ssh". (I.e., Only verify against - # the last scheme.) - origin_protocol = origin_protocol.rsplit("+", 1)[-1] - - # Determine if our origin is a secure origin by looking through our - # hardcoded list of secure origins, as well as any additional ones - # configured on this PackageFinder instance. - for secure_origin in self.iter_secure_origins(): - secure_protocol, secure_host, secure_port = secure_origin - if origin_protocol != secure_protocol and secure_protocol != "*": - continue - - try: - addr = ipaddress.ip_address(origin_host or "") - network = ipaddress.ip_network(secure_host) - except ValueError: - # We don't have both a valid address or a valid network, so - # we'll check this origin against hostnames. - if ( - origin_host - and origin_host.lower() != secure_host.lower() - and secure_host != "*" - ): - continue - else: - # We have a valid address and network, so see if the address - # is contained within the network. - if addr not in network: - continue - - # Check to see if the port matches. - if ( - origin_port != secure_port - and secure_port != "*" - and secure_port is not None - ): - continue - - # If we've gotten here, then this origin matches the current - # secure origin and we should return True - return True - - # If we've gotten to this point, then the origin isn't secure and we - # will not accept it as a valid location to search. We will however - # log a warning that we are ignoring it. - logger.warning( - "The repository located at %s is not a trusted or secure host and " - "is being ignored. If this repository is available via HTTPS we " - "recommend you use HTTPS instead, otherwise you may silence " - "this warning and allow it anyway with '--trusted-host %s'.", - origin_host, - origin_host, - ) - - return False - - def request(self, method: str, url: str, *args: Any, **kwargs: Any) -> Response: - # Allow setting a default timeout on a session - kwargs.setdefault("timeout", self.timeout) - # Allow setting a default proxies on a session - kwargs.setdefault("proxies", self.proxies) - - # Dispatch the actual request - return super().request(method, url, *args, **kwargs) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/utils.py b/venv/lib/python3.10/site-packages/pip/_internal/network/utils.py deleted file mode 100644 index 134848a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/utils.py +++ /dev/null @@ -1,96 +0,0 @@ -from typing import Dict, Generator - -from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response - -from pip._internal.exceptions import NetworkConnectionError - -# The following comments and HTTP headers were originally added by -# Donald Stufft in git commit 22c562429a61bb77172039e480873fb239dd8c03. -# -# We use Accept-Encoding: identity here because requests defaults to -# accepting compressed responses. This breaks in a variety of ways -# depending on how the server is configured. -# - Some servers will notice that the file isn't a compressible file -# and will leave the file alone and with an empty Content-Encoding -# - Some servers will notice that the file is already compressed and -# will leave the file alone, adding a Content-Encoding: gzip header -# - Some servers won't notice anything at all and will take a file -# that's already been compressed and compress it again, and set -# the Content-Encoding: gzip header -# By setting this to request only the identity encoding we're hoping -# to eliminate the third case. Hopefully there does not exist a server -# which when given a file will notice it is already compressed and that -# you're not asking for a compressed file and will then decompress it -# before sending because if that's the case I don't think it'll ever be -# possible to make this work. -HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"} - - -def raise_for_status(resp: Response) -> None: - http_error_msg = "" - if isinstance(resp.reason, bytes): - # We attempt to decode utf-8 first because some servers - # choose to localize their reason strings. If the string - # isn't utf-8, we fall back to iso-8859-1 for all other - # encodings. - try: - reason = resp.reason.decode("utf-8") - except UnicodeDecodeError: - reason = resp.reason.decode("iso-8859-1") - else: - reason = resp.reason - - if 400 <= resp.status_code < 500: - http_error_msg = ( - f"{resp.status_code} Client Error: {reason} for url: {resp.url}" - ) - - elif 500 <= resp.status_code < 600: - http_error_msg = ( - f"{resp.status_code} Server Error: {reason} for url: {resp.url}" - ) - - if http_error_msg: - raise NetworkConnectionError(http_error_msg, response=resp) - - -def response_chunks( - response: Response, chunk_size: int = CONTENT_CHUNK_SIZE -) -> Generator[bytes, None, None]: - """Given a requests Response, provide the data chunks.""" - try: - # Special case for urllib3. - for chunk in response.raw.stream( - chunk_size, - # We use decode_content=False here because we don't - # want urllib3 to mess with the raw bytes we get - # from the server. If we decompress inside of - # urllib3 then we cannot verify the checksum - # because the checksum will be of the compressed - # file. This breakage will only occur if the - # server adds a Content-Encoding header, which - # depends on how the server was configured: - # - Some servers will notice that the file isn't a - # compressible file and will leave the file alone - # and with an empty Content-Encoding - # - Some servers will notice that the file is - # already compressed and will leave the file - # alone and will add a Content-Encoding: gzip - # header - # - Some servers won't notice anything at all and - # will take a file that's already been compressed - # and compress it again and set the - # Content-Encoding: gzip header - # - # By setting this not to decode automatically we - # hope to eliminate problems with the second case. - decode_content=False, - ): - yield chunk - except AttributeError: - # Standard file-like object. - while True: - chunk = response.raw.read(chunk_size) - if not chunk: - break - yield chunk diff --git a/venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py b/venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py deleted file mode 100644 index 22ec8d2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py +++ /dev/null @@ -1,62 +0,0 @@ -"""xmlrpclib.Transport implementation -""" - -import logging -import urllib.parse -import xmlrpc.client -from typing import TYPE_CHECKING, Tuple - -from pip._internal.exceptions import NetworkConnectionError -from pip._internal.network.session import PipSession -from pip._internal.network.utils import raise_for_status - -if TYPE_CHECKING: - from xmlrpc.client import _HostType, _Marshallable - - from _typeshed import SizedBuffer - -logger = logging.getLogger(__name__) - - -class PipXmlrpcTransport(xmlrpc.client.Transport): - """Provide a `xmlrpclib.Transport` implementation via a `PipSession` - object. - """ - - def __init__( - self, index_url: str, session: PipSession, use_datetime: bool = False - ) -> None: - super().__init__(use_datetime) - index_parts = urllib.parse.urlparse(index_url) - self._scheme = index_parts.scheme - self._session = session - - def request( - self, - host: "_HostType", - handler: str, - request_body: "SizedBuffer", - verbose: bool = False, - ) -> Tuple["_Marshallable", ...]: - assert isinstance(host, str) - parts = (self._scheme, host, handler, None, None, None) - url = urllib.parse.urlunparse(parts) - try: - headers = {"Content-Type": "text/xml"} - response = self._session.post( - url, - data=request_body, - headers=headers, - stream=True, - ) - raise_for_status(response) - self.verbose = verbose - return self.parse_response(response.raw) - except NetworkConnectionError as exc: - assert exc.response - logger.critical( - "HTTP error %s while getting %s", - exc.response.status_code, - url, - ) - raise diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ec6407db59009982f510c1622e39c2e5a24457eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc deleted file mode 100644 index 01f2e712b202b9598742b4f0f8c419afd70e24a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6220 zcmai2(Qg|^df%B{E|*JEq$t_4WZ7BU=frG6Dd`2*G_Zp-j(trorv!Flw@j}KiZhfc zFL&wLrDYMzgIl?{m%2TmZ+8eF6)n(v?o<0#^tFG%qJ8R9+UEj2=WO@)&61X6AJCO{ zIP=Xn-+c4U%=i1gjjC1G!1IXR=>5^_hVh@&IQlH2@gd&$51C;IL$JVT=fAAYbep$1 zetBRHthO~MvA`Ayl^K%lpOI$| zSo^gf8p0LjM}{cN(w^D&N~~1DUtU(lYhq5i(vjzujb%gBqDh6AVXYNNGaWxtYI-$ts zKMCWc69gR+aZRa6fua6UCzc;$9@XC*QAbwWl8G<{Je-FM&ir$i-tQpvC@ zyJVlEkBP>Ic;oXZq(Nt|&A&3FDJ{V+8?qp=FR1g&IAgG|l~w&~Q`J5Rdr?+~#v@Ek z3(1@=EP+bA(X=zi*XHv5%=P_2Bu0Tmz2f`#MxB5RiIxeoWHsOKgkh9uv&FuzZ0PbU zL#^UR7fheK17zuf}msWhYKg?_; zlaUI$MF^WcB)E*1HYom6ZWw=N^o>a|F;a7nZL<_NB;|rXHYZN%d~E!rF)1Z{-%Lvf zY~rQ`wVJxymRh}6OWm}Hdf~Exy76^=baQUlHa3i>Xx+)&WyrqgFjIh%YVQXR4i+_vg~u0b@p5yJaxr z-g}z2fKgJ{Y>fKZjHcqWCW^xN3%+d7Jd;{jO>0R_*n2p2GwOa_IMA||%wrZylpga* zJ**^+WMO|%xR{O8*jZ0n-#!uleR6VtNt9DaqrL-^8Jbcd&F;OIoFcA0HknW7(<1c# zx3of(Wh4Gq@GXmKT75}6dJinUo+;=4N?M&tI}Q8JFB^M|Y(cB0_7!6$^N{m4{IZ3= zJ?IlU?-=oa??4~=`(v`zdRp0EJ)pf<{u4fFOcs(_x&TYe-L%{zuHy%*olbxc}OLAsS)HU2(rWekp=iMY-Hk!%kIStV z2=YM-Zf9I*wT4QL=US~qjbhw@)}1I$#w$d|t&QWBkV6Ufu)8~zG2d#*2Z`z&k%D<~ zr&>MP!6lKHMUGu?O?}R{xEfIMN|UK`sAb0Z_D$R=@&X?DMXw)vN7VLu{XlwOUyOg^ zZOU#3g1vt7M(n}cc-=sDl(%!IlYr*!M591pw07X{dl%#J?|a^*ju74jxwUoWi`<70 zQg}(^C3mFv)s4@n+PNR~1ql7v+v%tfiZsU`-8giLM^xzMm=r_$TOPo`n|dbiqVh1D zl$t6a#kYtHjPaXC1zn8Mtv!nH2BRS91F*cLKajCr;h4YWjeqaL1@B8J*NcK6+99hP zu?92*40u?S6yD~p2Y=}0uJ8RWO*ea}PIkVDH>NlyHMWg?b^yY!*aqOrBKMsYFoRUU z9`@kSSF1DN&z#FaXRs+cAN&=GAX%<4J~ef-m$m9u|x2Tv-#^P8q4sAVX~4&Ok&HN*+I$XUI4d-AwZ2xvT_%80ZfwD&&opfIm-l6a?|+=0)|X(o)9nE{yWKvPs5Dyw-a8l=1#k2cktRI`I< zYm4HKK5$Zz8MET_gk*MSNH;;P5Ve5y4&uz(j`|QAM~cA1zTXK(GH#ww1P%Eur3F_3Qmq7LDa>VWGtm+ehWzMWg zCJANRp_1Z~_R_58A2)5j+(Is`a#WRCEdF~c4 z#>}a6%wqO;4X1(r2IK#{`kX(k|A?rhMV(ns`9s@21uZ~(XgyP(lbJt7aqN!JnWo_B zD&F{Q6m&->ECEy}e2=R-+U742*r)85#y1F^rfoiJH_eSPzj9@4Ub%7wVO8;d9#Up* zKh`Ehw5BK`z=m{o^1zd8HL?ort3Ty`*~Cje4%?uUP!OnttSR5$ke&_-8`i5+So0+s z$Cgw9fsUzO(l6iy@+GA#E`DnKIhMAKh(niFN=U>e9FaQ@keN)(L2+UYoJj$ASlBP6 z9KCjG3v*d@DUtwQa*fedL^Or82qW3wm|IK~AM=|=GM6GA*se{SaVfR; z>nVp8^9OuVx^0B_EW|^*P@4W;NF_OliXf*nl~%~5*+ANxK;YEc{Yz#{TxN{V{+3aQ zm@u~dO+i!;IWPVW8_W=EbjuD}9|0@2d}XU6SZa`~s_u#6e-yTf*9d?_CfTM#!aK-?r(%+IXU zY>YduhX<+0aFoEOhXS6S!b&f99Nr~d*|)q|K;8r*C{N>Gs0Y5{Mb}<9(M!!W&7ueg znr60eLk^-uZbZrTXcP*a*c>6=LTWT6n)kc$#`v9$$h&p*CT0Y;o_FSykAjhR{$hL{ zfCj8p1k|&o_Y*S)(>G%0Q^@sK6!s^Uhv*{!rmBv0S8EE zEign4DD0Ri8TGsui;bg^>gtFD$bAVfZ3b-=4b6>%XoZ|^bNmBsRYW5)^b)m8z>U}f ziQ+Mn(H@dz<6VST0}4`FS9RQSTp1;Y5i*}h?ds(a+Idin*byF_JBL$4!Os6XsJWCa z&sO6jhTEnDlMJNOSRMgla>xkba=J)!vtnm6)}(pF7HcnZtu>qr^%eF?-J;?)ifn8z(Mj^l&fl=r2c@q3qo#=wsh{5S;;PPwWSxMV$~%;nx&oU2KAT-K^3_$MgB`; zlB%NCtZ1*P+Qj6{w0~KfGBliNlNI4$he2nz?GTl`sQM9&=JG*iBB^`X=Qezu(N7OB zR^5w!0sgp$!Ups#5>#=AJ5!M11TqB;bkE!Z=M8|3qv5B)+-GxEUaxb&-qXf2=V8Uk zq00iG)$KWUia8GfiYEF2et@%QY8z8^@g92!K0d@7lhtR*eTj*h;L;Q(UJI#xAy4v! zEs8x?IHH6PFt#iTe8>UKzz3JIs64XvSi2-_Y4*6NiaC6MaYYe{L|wfD;kiX9?9rA| z-=`W~PW3$$8{GoR*+X?gPYpBpHfE$OHGG4RbB}7AT)uCnCQ2){P!=d%>6(Siie=EtxsLa}ylePA(GUBH@Barx=rGqVQeZ&C8z@=v1+1W z^&Ckqdu+kRd;{qYSrg0GmZja!+`}(EY5@d&4fGAd#}~63#QC|`1GFXdehi57#g`Qw zt*hS!?Z5EG6v5iuqR5A$CpO0&v%$xwUp2-Hus9Y$kWpxRwIOJGrV)g(%~W|B3h@bI zhJB938(2Eam%YW7j04b@u+bD4nJwvM%*A>S_wYL8srRVR3!xwqFmRU$n(6qWvZC)J zK==Lcz%UJbXlKu|@$#$7nexKSB&Au_&PJUg*~?VWWSO-YMS-IAsesz$ZqSM2fyCD) zq2`E8hEzi;4wcb0N{aMF`FB)e4~1iJ+xiao_Zc_&Q*QC!*aiL_x7{bay2u*&wQ3eO zu3yK0uGJgr2N;+YDX#!PsIRGI!#7fcOs`BTEGo2?bS4#jWl|LQsS=9pw06w+Rwg2~ zmgk=szJ@Q8I52dr+Gl<{$1L6~lay1(-8+1u%oB^;1C!s)P9EohojRg}j7nQdCwga( zbHJsq0pzi3qb|TJK1{9JE3a~bTPHAi+V%Qz2EClM!wcfykpUni))yr!!Cil*le2uE z32-#h=zUiAsHvlV3X!#IJ>ujJcXpcT=ASk{pkOKf0)>OGh7P;LD!jt#oI>r2Rbei# on;gl=;h*(uBsB{N$naUZt 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ea0476a922155554ee08a93f828c03f7dd95c6c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 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 a(#Sld;usS2nrP$|Fx*R0BYzX4_2M7t)}*HZ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index 9fef5606ace52eac0b9693f093870730de8d112b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228 zcmY*Z-H+Tf5VxI=&1Q3@EuyGug)Bs+u5?W}RS1L-LRX3ap=))0sJbsvcJ1BGT@nY| z>9VV>glJzYUU)-DcaQu_e&vaOfsZ@JPAP|@nRsH)%x``(yJBZ2MzCJs!}(nwq2H`= zagD(E3`8+d3^81xN&m(Z3^u7q?M*yvzj>8k2a~|<{VJ>nlL1B?okV`Nhz z?-fw`)`mV zWZ@Rs98bXW5n3TVIEqe&5HUCXL+M3bvh z@m<=}rsx4=PhF&g&GpZ@(q&WF?$Oswe@t(w&6^IY1=J^)3rROu=!b&U_T$+IKX}6HJdFG1hrmt$t``IufS8?uAn&JKL zX53Ad3AmI(8X}bOZQ;g05@j{nmQnfC#B<)|PFS zmyPBUhCUN5mySY}Iry2&o3?9n^+Gv$%UkGa0x;Bjppuy21QQZt|2*-0OyG&mZl3$! zCqaTkOwKNO@@=>{-Z2Bq9^jLg!8V~@Td+iT5 z|DsJhT~;dnkNUnB!v)vh^eu{VM_Har`;TKhrKQ8+7`&ja+0*EgTClF-pJK4oyPzTz cL0t(+NKA+aRh<(;&S3X9@yTCdaOux~0IG^zrT_o{ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc deleted file mode 100644 index c5af80573ad347d2b065d670e9f5a59fb5be17b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1452 zcmZWp&1)M+6rY*>&}uD{Z>{6x&8(acI?H^#nfLj7@2yy04-t$fcz^thhtOY! zczvt^@g+<(g@qx8Gc;&+JitJcjO5P1!RF4%+}s;@xj*nN?Pje!7z7w`blT?O86K=L zk9U~QJ=TIffZ65_?`)!R$U?UE#2u_N`~dYje}gr&+rxEmztpKHlB`GSckWhc#_lGg zBVMp?ggDwxvW&}m&78kal}d{Vh+LCZQE(a0Qaz1TnOY*}N+lCsyG4@ox;1Q+)K_z^ z6PD;CW~t;OE#$oRG|x*``;zNQ79-cVvKlSe4Iw4*~fT|0n+db{DzmvAs1|HTN?-1FlzZMQ{_Ty&1;Hd=FuQjVoZI zH6J&3)VZg|Tm8RJ2U=lxjg|Q_eG*j;X3fhHYGB+1yI%KD`gx zByuNjV3P z4k5dJE%L0_!!m%>E$(e6MIrRc>6cPliVpcGsT8-NH6g9)g)+evHA2(mxOoTmDU{#h z!>^Mx{z-F_}QUdW;XNiG+4T^@gg3E4<>SZtJc!8DBaiO##*(mr}^O zz4POU+m5J-P_=77t=&VB7QL4Afl-YTBInVh zN=GJVTBp&`XDU)7nLyu6u9t$T=$IGBQI-y)a;~SMxYfUTBT}j6*Gp(3=qVMIX&J?7 zp}B-cjYP?%&5(+0BvE7fGM;`puit7yeDk3L9;rL9bV7nVn2->=&pQsmE++7W7hTt$ z2;7{9{?&hiN5m)R?_ao&I^7QTF}dhEauXEvx^>H74I#)4ple^xO+1nSF}Mcq_G5^O z2?@@uY9lsTRMG*C2JsIp+htV!N~f9XzsgpVzV?Lcdrek@*rFT9()=N6M`>xDu}HtR tyk}m6JGo$0#=pQosgGd^Pyj(+AsrGD0zs4Kgpdn3JtHnT_r30aF94eroi6|Y diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc deleted file mode 100644 index c3f7821ee3f90640e482c79d993a7585d61ce1d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2762 zcma)8Uyt0j5htm?tKHi>-<^}%E?m{MV{ek%jgbN^+`MkY?6>Gg=(Aq?CR`P0ZKs>$(bQJGryS;Ut0?h zv?uu6$-lb@{Zmg)w{@6&0k8ZAbQDpXp>gxYV*+!MS-Cy7b7$;ey>4Z0?u|V&wlhEP zj5}uRWI^5?ck|x3hY>@oHP%1E<8|sXn{Av!)MFdeXB!ijc4+X#9-pDzmeK>t8ocjv zI$CPdqkXy#+?$4D1Gvt>yV*)^wcl-6^I0R&r)TL0AhAX9eKh#+1!#rt4M=U@O{J>+ zZ{{lHMVt+A-Q#msL~@=M1rsn2^LUR%lBsg8IL~CXOF<+$m@$?`v6xEOWj%?rERyB! zT=0ZRS#M3a$YT{HJkR5T8os*s&a8htyf=@i(df6KBiQ7(n~d( z@tlpOWtwOoDwU4*ek(^Z5ivkvx-;igj`mrxKg!bG(fm-&c=7r0`e!4VDz-C^lf8J# zzJ3VX@ zAKQNa2k714wU7I-BF<`UoFdMdtbN7uc|=oD+j=2!fOgzm80fhHkb*%AAb^oPNAU_^ zbcB~q1MP^0nt zUy5az2o@_w!-9vCG-GlY+1 zsRlQ~@0Wql2Mjv3E4hHPYq#;G@r}?fti6L+6d+Ywuu)C8tZl7)Z9n2^0igZ>n8b&= z)6PDHQ!AHK1Iwn{)|*`b&_@k&B4eL61sQV!gFFwN-?4E35DBo2dxQ|5kT-ohz?(!| z(wnTAJQmFlBXf~J@=_$sfTusr_->p<+@wNTuQi7pPaW+YnrJ{BH?5-%D+8{-!vMeq z8Kna7Q2f+hx)h)SS;~Se}EV|(}<6=lIgT=X9Z$;il(~a=}Kcl^oF8Yb#;xFd?{D{QOP~VL=UtyeZ-B5g{XEo^;Ym#yCRsXc zeIku9>&x#llq${S@bnLhhO{w$eer*?p8U5MUo^G01L@{&Q*Qkz(rGY?8n;-B&55m$TsCIA2c diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py deleted file mode 100644 index 3791932..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py +++ /dev/null @@ -1,139 +0,0 @@ -import contextlib -import hashlib -import logging -import os -from types import TracebackType -from typing import Dict, Generator, Optional, Set, Type, Union - -from pip._internal.models.link import Link -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.temp_dir import TempDirectory - -logger = logging.getLogger(__name__) - - -@contextlib.contextmanager -def update_env_context_manager(**changes: str) -> Generator[None, None, None]: - target = os.environ - - # Save values from the target and change them. - non_existent_marker = object() - saved_values: Dict[str, Union[object, str]] = {} - for name, new_value in changes.items(): - try: - saved_values[name] = target[name] - except KeyError: - saved_values[name] = non_existent_marker - target[name] = new_value - - try: - yield - finally: - # Restore original values in the target. - for name, original_value in saved_values.items(): - if original_value is non_existent_marker: - del target[name] - else: - assert isinstance(original_value, str) # for mypy - target[name] = original_value - - -@contextlib.contextmanager -def get_build_tracker() -> Generator["BuildTracker", None, None]: - root = os.environ.get("PIP_BUILD_TRACKER") - with contextlib.ExitStack() as ctx: - if root is None: - root = ctx.enter_context(TempDirectory(kind="build-tracker")).path - ctx.enter_context(update_env_context_manager(PIP_BUILD_TRACKER=root)) - logger.debug("Initialized build tracking at %s", root) - - with BuildTracker(root) as tracker: - yield tracker - - -class TrackerId(str): - """Uniquely identifying string provided to the build tracker.""" - - -class BuildTracker: - """Ensure that an sdist cannot request itself as a setup requirement. - - When an sdist is prepared, it identifies its setup requirements in the - context of ``BuildTracker.track()``. If a requirement shows up recursively, this - raises an exception. - - This stops fork bombs embedded in malicious packages.""" - - def __init__(self, root: str) -> None: - self._root = root - self._entries: Dict[TrackerId, InstallRequirement] = {} - logger.debug("Created build tracker: %s", self._root) - - def __enter__(self) -> "BuildTracker": - logger.debug("Entered build tracker: %s", self._root) - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - self.cleanup() - - def _entry_path(self, key: TrackerId) -> str: - hashed = hashlib.sha224(key.encode()).hexdigest() - return os.path.join(self._root, hashed) - - def add(self, req: InstallRequirement, key: TrackerId) -> None: - """Add an InstallRequirement to build tracking.""" - - # Get the file to write information about this requirement. - entry_path = self._entry_path(key) - - # Try reading from the file. If it exists and can be read from, a build - # is already in progress, so a LookupError is raised. - try: - with open(entry_path) as fp: - contents = fp.read() - except FileNotFoundError: - pass - else: - message = "{} is already being built: {}".format(req.link, contents) - raise LookupError(message) - - # If we're here, req should really not be building already. - assert key not in self._entries - - # Start tracking this requirement. - with open(entry_path, "w", encoding="utf-8") as fp: - fp.write(str(req)) - self._entries[key] = req - - logger.debug("Added %s to build tracker %r", req, self._root) - - def remove(self, req: InstallRequirement, key: TrackerId) -> None: - """Remove an InstallRequirement from build tracking.""" - - # Delete the created file and the corresponding entry. - os.unlink(self._entry_path(key)) - del self._entries[key] - - logger.debug("Removed %s from build tracker %r", req, self._root) - - def cleanup(self) -> None: - for key, req in list(self._entries.items()): - self.remove(req, key) - - logger.debug("Removed build tracker: %r", self._root) - - @contextlib.contextmanager - def track(self, req: InstallRequirement, key: str) -> Generator[None, None, None]: - """Ensure that `key` cannot install itself as a setup requirement. - - :raises LookupError: If `key` was already provided in a parent invocation of - the context introduced by this method.""" - tracker_id = TrackerId(key) - self.add(req, tracker_id) - yield - self.remove(req, tracker_id) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py deleted file mode 100644 index c66ac35..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Metadata generation logic for source distributions. -""" - -import os - -from pip._vendor.pyproject_hooks import BuildBackendHookCaller - -from pip._internal.build_env import BuildEnvironment -from pip._internal.exceptions import ( - InstallationSubprocessError, - MetadataGenerationFailed, -) -from pip._internal.utils.subprocess import runner_with_spinner_message -from pip._internal.utils.temp_dir import TempDirectory - - -def generate_metadata( - build_env: BuildEnvironment, backend: BuildBackendHookCaller, details: str -) -> str: - """Generate metadata using mechanisms described in PEP 517. - - Returns the generated metadata directory. - """ - metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) - - metadata_dir = metadata_tmpdir.path - - with build_env: - # Note that BuildBackendHookCaller implements a fallback for - # prepare_metadata_for_build_wheel, so we don't have to - # consider the possibility that this hook doesn't exist. - runner = runner_with_spinner_message("Preparing metadata (pyproject.toml)") - with backend.subprocess_runner(runner): - try: - distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir) - except InstallationSubprocessError as error: - raise MetadataGenerationFailed(package_details=details) from error - - return os.path.join(metadata_dir, distinfo_dir) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py deleted file mode 100644 index 27c69f0..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Metadata generation logic for source distributions. -""" - -import os - -from pip._vendor.pyproject_hooks import BuildBackendHookCaller - -from pip._internal.build_env import BuildEnvironment -from pip._internal.exceptions import ( - InstallationSubprocessError, - MetadataGenerationFailed, -) -from pip._internal.utils.subprocess import runner_with_spinner_message -from pip._internal.utils.temp_dir import TempDirectory - - -def generate_editable_metadata( - build_env: BuildEnvironment, backend: BuildBackendHookCaller, details: str -) -> str: - """Generate metadata using mechanisms described in PEP 660. - - Returns the generated metadata directory. - """ - metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) - - metadata_dir = metadata_tmpdir.path - - with build_env: - # Note that BuildBackendHookCaller implements a fallback for - # prepare_metadata_for_build_wheel/editable, so we don't have to - # consider the possibility that this hook doesn't exist. - runner = runner_with_spinner_message( - "Preparing editable metadata (pyproject.toml)" - ) - with backend.subprocess_runner(runner): - try: - distinfo_dir = backend.prepare_metadata_for_build_editable(metadata_dir) - except InstallationSubprocessError as error: - raise MetadataGenerationFailed(package_details=details) from error - - return os.path.join(metadata_dir, distinfo_dir) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py deleted file mode 100644 index e60988d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py +++ /dev/null @@ -1,74 +0,0 @@ -"""Metadata generation logic for legacy source distributions. -""" - -import logging -import os - -from pip._internal.build_env import BuildEnvironment -from pip._internal.cli.spinners import open_spinner -from pip._internal.exceptions import ( - InstallationError, - InstallationSubprocessError, - MetadataGenerationFailed, -) -from pip._internal.utils.setuptools_build import make_setuptools_egg_info_args -from pip._internal.utils.subprocess import call_subprocess -from pip._internal.utils.temp_dir import TempDirectory - -logger = logging.getLogger(__name__) - - -def _find_egg_info(directory: str) -> str: - """Find an .egg-info subdirectory in `directory`.""" - filenames = [f for f in os.listdir(directory) if f.endswith(".egg-info")] - - if not filenames: - raise InstallationError(f"No .egg-info directory found in {directory}") - - if len(filenames) > 1: - raise InstallationError( - "More than one .egg-info directory found in {}".format(directory) - ) - - return os.path.join(directory, filenames[0]) - - -def generate_metadata( - build_env: BuildEnvironment, - setup_py_path: str, - source_dir: str, - isolated: bool, - details: str, -) -> str: - """Generate metadata using setup.py-based defacto mechanisms. - - Returns the generated metadata directory. - """ - logger.debug( - "Running setup.py (path:%s) egg_info for package %s", - setup_py_path, - details, - ) - - egg_info_dir = TempDirectory(kind="pip-egg-info", globally_managed=True).path - - args = make_setuptools_egg_info_args( - setup_py_path, - egg_info_dir=egg_info_dir, - no_user_config=isolated, - ) - - with build_env: - with open_spinner("Preparing metadata (setup.py)") as spinner: - try: - call_subprocess( - args, - cwd=source_dir, - command_desc="python setup.py egg_info", - spinner=spinner, - ) - except InstallationSubprocessError as error: - raise MetadataGenerationFailed(package_details=details) from error - - # Return the .egg-info directory. - return _find_egg_info(egg_info_dir) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py deleted file mode 100644 index 064811a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py +++ /dev/null @@ -1,37 +0,0 @@ -import logging -import os -from typing import Optional - -from pip._vendor.pyproject_hooks import BuildBackendHookCaller - -from pip._internal.utils.subprocess import runner_with_spinner_message - -logger = logging.getLogger(__name__) - - -def build_wheel_pep517( - name: str, - backend: BuildBackendHookCaller, - metadata_directory: str, - tempd: str, -) -> Optional[str]: - """Build one InstallRequirement using the PEP 517 build process. - - Returns path to wheel if successfully built. Otherwise, returns None. - """ - assert metadata_directory is not None - try: - logger.debug("Destination directory: %s", tempd) - - runner = runner_with_spinner_message( - f"Building wheel for {name} (pyproject.toml)" - ) - with backend.subprocess_runner(runner): - wheel_name = backend.build_wheel( - tempd, - metadata_directory=metadata_directory, - ) - except Exception: - logger.error("Failed building wheel for %s", name) - return None - return os.path.join(tempd, wheel_name) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py deleted file mode 100644 index 719d69d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py +++ /dev/null @@ -1,46 +0,0 @@ -import logging -import os -from typing import Optional - -from pip._vendor.pyproject_hooks import BuildBackendHookCaller, HookMissing - -from pip._internal.utils.subprocess import runner_with_spinner_message - -logger = logging.getLogger(__name__) - - -def build_wheel_editable( - name: str, - backend: BuildBackendHookCaller, - metadata_directory: str, - tempd: str, -) -> Optional[str]: - """Build one InstallRequirement using the PEP 660 build process. - - Returns path to wheel if successfully built. Otherwise, returns None. - """ - assert metadata_directory is not None - try: - logger.debug("Destination directory: %s", tempd) - - runner = runner_with_spinner_message( - f"Building editable for {name} (pyproject.toml)" - ) - with backend.subprocess_runner(runner): - try: - wheel_name = backend.build_editable( - tempd, - metadata_directory=metadata_directory, - ) - except HookMissing as e: - logger.error( - "Cannot build editable %s because the build " - "backend does not have the %s hook", - name, - e, - ) - return None - except Exception: - logger.error("Failed building editable for %s", name) - return None - return os.path.join(tempd, wheel_name) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py deleted file mode 100644 index c5f0492..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py +++ /dev/null @@ -1,102 +0,0 @@ -import logging -import os.path -from typing import List, Optional - -from pip._internal.cli.spinners import open_spinner -from pip._internal.utils.setuptools_build import make_setuptools_bdist_wheel_args -from pip._internal.utils.subprocess import call_subprocess, format_command_args - -logger = logging.getLogger(__name__) - - -def format_command_result( - command_args: List[str], - command_output: str, -) -> str: - """Format command information for logging.""" - command_desc = format_command_args(command_args) - text = f"Command arguments: {command_desc}\n" - - if not command_output: - text += "Command output: None" - elif logger.getEffectiveLevel() > logging.DEBUG: - text += "Command output: [use --verbose to show]" - else: - if not command_output.endswith("\n"): - command_output += "\n" - text += f"Command output:\n{command_output}" - - return text - - -def get_legacy_build_wheel_path( - names: List[str], - temp_dir: str, - name: str, - command_args: List[str], - command_output: str, -) -> Optional[str]: - """Return the path to the wheel in the temporary build directory.""" - # Sort for determinism. - names = sorted(names) - if not names: - msg = ("Legacy build of wheel for {!r} created no files.\n").format(name) - msg += format_command_result(command_args, command_output) - logger.warning(msg) - return None - - if len(names) > 1: - msg = ( - "Legacy build of wheel for {!r} created more than one file.\n" - "Filenames (choosing first): {}\n" - ).format(name, names) - msg += format_command_result(command_args, command_output) - logger.warning(msg) - - return os.path.join(temp_dir, names[0]) - - -def build_wheel_legacy( - name: str, - setup_py_path: str, - source_dir: str, - global_options: List[str], - build_options: List[str], - tempd: str, -) -> Optional[str]: - """Build one unpacked package using the "legacy" build process. - - Returns path to wheel if successfully built. Otherwise, returns None. - """ - wheel_args = make_setuptools_bdist_wheel_args( - setup_py_path, - global_options=global_options, - build_options=build_options, - destination_dir=tempd, - ) - - spin_message = f"Building wheel for {name} (setup.py)" - with open_spinner(spin_message) as spinner: - logger.debug("Destination directory: %s", tempd) - - try: - output = call_subprocess( - wheel_args, - command_desc="python setup.py bdist_wheel", - cwd=source_dir, - spinner=spinner, - ) - except Exception: - spinner.finish("error") - logger.error("Failed building wheel for %s", name) - return None - - names = os.listdir(tempd) - wheel_path = get_legacy_build_wheel_path( - names=names, - temp_dir=tempd, - name=name, - command_args=wheel_args, - command_output=output, - ) - return wheel_path diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/check.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/check.py deleted file mode 100644 index 90c6a58..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/check.py +++ /dev/null @@ -1,187 +0,0 @@ -"""Validation of dependencies of packages -""" - -import logging -from typing import Callable, Dict, List, NamedTuple, Optional, Set, Tuple - -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.packaging.specifiers import LegacySpecifier -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import LegacyVersion - -from pip._internal.distributions import make_distribution_for_install_requirement -from pip._internal.metadata import get_default_environment -from pip._internal.metadata.base import DistributionVersion -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.deprecation import deprecated - -logger = logging.getLogger(__name__) - - -class PackageDetails(NamedTuple): - version: DistributionVersion - dependencies: List[Requirement] - - -# Shorthands -PackageSet = Dict[NormalizedName, PackageDetails] -Missing = Tuple[NormalizedName, Requirement] -Conflicting = Tuple[NormalizedName, DistributionVersion, Requirement] - -MissingDict = Dict[NormalizedName, List[Missing]] -ConflictingDict = Dict[NormalizedName, List[Conflicting]] -CheckResult = Tuple[MissingDict, ConflictingDict] -ConflictDetails = Tuple[PackageSet, CheckResult] - - -def create_package_set_from_installed() -> Tuple[PackageSet, bool]: - """Converts a list of distributions into a PackageSet.""" - package_set = {} - problems = False - env = get_default_environment() - for dist in env.iter_installed_distributions(local_only=False, skip=()): - name = dist.canonical_name - try: - dependencies = list(dist.iter_dependencies()) - package_set[name] = PackageDetails(dist.version, dependencies) - except (OSError, ValueError) as e: - # Don't crash on unreadable or broken metadata. - logger.warning("Error parsing requirements for %s: %s", name, e) - problems = True - return package_set, problems - - -def check_package_set( - package_set: PackageSet, should_ignore: Optional[Callable[[str], bool]] = None -) -> CheckResult: - """Check if a package set is consistent - - If should_ignore is passed, it should be a callable that takes a - package name and returns a boolean. - """ - - warn_legacy_versions_and_specifiers(package_set) - - missing = {} - conflicting = {} - - for package_name, package_detail in package_set.items(): - # Info about dependencies of package_name - missing_deps: Set[Missing] = set() - conflicting_deps: Set[Conflicting] = set() - - if should_ignore and should_ignore(package_name): - continue - - for req in package_detail.dependencies: - name = canonicalize_name(req.name) - - # Check if it's missing - if name not in package_set: - missed = True - if req.marker is not None: - missed = req.marker.evaluate({"extra": ""}) - if missed: - missing_deps.add((name, req)) - continue - - # Check if there's a conflict - version = package_set[name].version - if not req.specifier.contains(version, prereleases=True): - conflicting_deps.add((name, version, req)) - - if missing_deps: - missing[package_name] = sorted(missing_deps, key=str) - if conflicting_deps: - conflicting[package_name] = sorted(conflicting_deps, key=str) - - return missing, conflicting - - -def check_install_conflicts(to_install: List[InstallRequirement]) -> ConflictDetails: - """For checking if the dependency graph would be consistent after \ - installing given requirements - """ - # Start from the current state - package_set, _ = create_package_set_from_installed() - # Install packages - would_be_installed = _simulate_installation_of(to_install, package_set) - - # Only warn about directly-dependent packages; create a whitelist of them - whitelist = _create_whitelist(would_be_installed, package_set) - - return ( - package_set, - check_package_set( - package_set, should_ignore=lambda name: name not in whitelist - ), - ) - - -def _simulate_installation_of( - to_install: List[InstallRequirement], package_set: PackageSet -) -> Set[NormalizedName]: - """Computes the version of packages after installing to_install.""" - # Keep track of packages that were installed - installed = set() - - # Modify it as installing requirement_set would (assuming no errors) - for inst_req in to_install: - abstract_dist = make_distribution_for_install_requirement(inst_req) - dist = abstract_dist.get_metadata_distribution() - name = dist.canonical_name - package_set[name] = PackageDetails(dist.version, list(dist.iter_dependencies())) - - installed.add(name) - - return installed - - -def _create_whitelist( - would_be_installed: Set[NormalizedName], package_set: PackageSet -) -> Set[NormalizedName]: - packages_affected = set(would_be_installed) - - for package_name in package_set: - if package_name in packages_affected: - continue - - for req in package_set[package_name].dependencies: - if canonicalize_name(req.name) in packages_affected: - packages_affected.add(package_name) - break - - return packages_affected - - -def warn_legacy_versions_and_specifiers(package_set: PackageSet) -> None: - for project_name, package_details in package_set.items(): - if isinstance(package_details.version, LegacyVersion): - deprecated( - reason=( - f"{project_name} {package_details.version} " - f"has a non-standard version number." - ), - replacement=( - f"to upgrade to a newer version of {project_name} " - f"or contact the author to suggest that they " - f"release a version with a conforming version number" - ), - issue=12063, - gone_in="24.1", - ) - for dep in package_details.dependencies: - if any(isinstance(spec, LegacySpecifier) for spec in dep.specifier): - deprecated( - reason=( - f"{project_name} {package_details.version} " - f"has a non-standard dependency specifier {dep}." - ), - replacement=( - f"to upgrade to a newer version of {project_name} " - f"or contact the author to suggest that they " - f"release a version with a conforming dependency specifiers" - ), - issue=12063, - gone_in="24.1", - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py deleted file mode 100644 index 3544568..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py +++ /dev/null @@ -1,255 +0,0 @@ -import collections -import logging -import os -from typing import Container, Dict, Generator, Iterable, List, NamedTuple, Optional, Set - -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import Version - -from pip._internal.exceptions import BadCommand, InstallationError -from pip._internal.metadata import BaseDistribution, get_environment -from pip._internal.req.constructors import ( - install_req_from_editable, - install_req_from_line, -) -from pip._internal.req.req_file import COMMENT_RE -from pip._internal.utils.direct_url_helpers import direct_url_as_pep440_direct_reference - -logger = logging.getLogger(__name__) - - -class _EditableInfo(NamedTuple): - requirement: str - comments: List[str] - - -def freeze( - requirement: Optional[List[str]] = None, - local_only: bool = False, - user_only: bool = False, - paths: Optional[List[str]] = None, - isolated: bool = False, - exclude_editable: bool = False, - skip: Container[str] = (), -) -> Generator[str, None, None]: - installations: Dict[str, FrozenRequirement] = {} - - dists = get_environment(paths).iter_installed_distributions( - local_only=local_only, - skip=(), - user_only=user_only, - ) - for dist in dists: - req = FrozenRequirement.from_dist(dist) - if exclude_editable and req.editable: - continue - installations[req.canonical_name] = req - - if requirement: - # the options that don't get turned into an InstallRequirement - # should only be emitted once, even if the same option is in multiple - # requirements files, so we need to keep track of what has been emitted - # so that we don't emit it again if it's seen again - emitted_options: Set[str] = set() - # keep track of which files a requirement is in so that we can - # give an accurate warning if a requirement appears multiple times. - req_files: Dict[str, List[str]] = collections.defaultdict(list) - for req_file_path in requirement: - with open(req_file_path) as req_file: - for line in req_file: - if ( - not line.strip() - or line.strip().startswith("#") - or line.startswith( - ( - "-r", - "--requirement", - "-f", - "--find-links", - "-i", - "--index-url", - "--pre", - "--trusted-host", - "--process-dependency-links", - "--extra-index-url", - "--use-feature", - ) - ) - ): - line = line.rstrip() - if line not in emitted_options: - emitted_options.add(line) - yield line - continue - - if line.startswith("-e") or line.startswith("--editable"): - if line.startswith("-e"): - line = line[2:].strip() - else: - line = line[len("--editable") :].strip().lstrip("=") - line_req = install_req_from_editable( - line, - isolated=isolated, - ) - else: - line_req = install_req_from_line( - COMMENT_RE.sub("", line).strip(), - isolated=isolated, - ) - - if not line_req.name: - logger.info( - "Skipping line in requirement file [%s] because " - "it's not clear what it would install: %s", - req_file_path, - line.strip(), - ) - logger.info( - " (add #egg=PackageName to the URL to avoid" - " this warning)" - ) - else: - line_req_canonical_name = canonicalize_name(line_req.name) - if line_req_canonical_name not in installations: - # either it's not installed, or it is installed - # but has been processed already - if not req_files[line_req.name]: - logger.warning( - "Requirement file [%s] contains %s, but " - "package %r is not installed", - req_file_path, - COMMENT_RE.sub("", line).strip(), - line_req.name, - ) - else: - req_files[line_req.name].append(req_file_path) - else: - yield str(installations[line_req_canonical_name]).rstrip() - del installations[line_req_canonical_name] - req_files[line_req.name].append(req_file_path) - - # Warn about requirements that were included multiple times (in a - # single requirements file or in different requirements files). - for name, files in req_files.items(): - if len(files) > 1: - logger.warning( - "Requirement %s included multiple times [%s]", - name, - ", ".join(sorted(set(files))), - ) - - yield ("## The following requirements were added by pip freeze:") - for installation in sorted(installations.values(), key=lambda x: x.name.lower()): - if installation.canonical_name not in skip: - yield str(installation).rstrip() - - -def _format_as_name_version(dist: BaseDistribution) -> str: - dist_version = dist.version - if isinstance(dist_version, Version): - return f"{dist.raw_name}=={dist_version}" - return f"{dist.raw_name}==={dist_version}" - - -def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: - """ - Compute and return values (req, comments) for use in - FrozenRequirement.from_dist(). - """ - editable_project_location = dist.editable_project_location - assert editable_project_location - location = os.path.normcase(os.path.abspath(editable_project_location)) - - from pip._internal.vcs import RemoteNotFoundError, RemoteNotValidError, vcs - - vcs_backend = vcs.get_backend_for_dir(location) - - if vcs_backend is None: - display = _format_as_name_version(dist) - logger.debug( - 'No VCS found for editable requirement "%s" in: %r', - display, - location, - ) - return _EditableInfo( - requirement=location, - comments=[f"# Editable install with no version control ({display})"], - ) - - vcs_name = type(vcs_backend).__name__ - - try: - req = vcs_backend.get_src_requirement(location, dist.raw_name) - except RemoteNotFoundError: - display = _format_as_name_version(dist) - return _EditableInfo( - requirement=location, - comments=[f"# Editable {vcs_name} install with no remote ({display})"], - ) - except RemoteNotValidError as ex: - display = _format_as_name_version(dist) - return _EditableInfo( - requirement=location, - comments=[ - f"# Editable {vcs_name} install ({display}) with either a deleted " - f"local remote or invalid URI:", - f"# '{ex.url}'", - ], - ) - except BadCommand: - logger.warning( - "cannot determine version of editable source in %s " - "(%s command not found in path)", - location, - vcs_backend.name, - ) - return _EditableInfo(requirement=location, comments=[]) - except InstallationError as exc: - logger.warning("Error when trying to get requirement for VCS system %s", exc) - else: - return _EditableInfo(requirement=req, comments=[]) - - logger.warning("Could not determine repository location of %s", location) - - return _EditableInfo( - requirement=location, - comments=["## !! Could not determine repository location"], - ) - - -class FrozenRequirement: - def __init__( - self, - name: str, - req: str, - editable: bool, - comments: Iterable[str] = (), - ) -> None: - self.name = name - self.canonical_name = canonicalize_name(name) - self.req = req - self.editable = editable - self.comments = comments - - @classmethod - def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": - editable = dist.editable - if editable: - req, comments = _get_editable_info(dist) - else: - comments = [] - direct_url = dist.direct_url - if direct_url: - # if PEP 610 metadata is present, use it - req = direct_url_as_pep440_direct_reference(direct_url, dist.raw_name) - else: - # name==version requirement - req = _format_as_name_version(dist) - - return cls(dist.raw_name, req, editable, comments=comments) - - def __str__(self) -> str: - req = self.req - if self.editable: - req = f"-e {req}" - return "\n".join(list(self.comments) + [str(req)]) + "\n" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py deleted file mode 100644 index 24d6a5d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -"""For modules related to installing packages. -""" diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 738e5c16e2e587bbd1a2dc250a8d7915b64b6793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmYjMyG{c!5cH+t6e<7UHWIl7rJ+EGijo348q3(rWfjM3c{hlY55B(d^{vZ z+F6ZOnwjOrVs0AVx`&r_+aHtokFJT^HqtkW=E=nF(JW`L=XYG~j^jR|*ow(3MyqTo zi~5u(kGA-*^&`qKzh8EzGv^`)=iW`7HLGv>tgzu7!nmhUIiM=R_DVoP^`%*?3P*th z<^v>phH}&m=k;)T0YZwazW^vyz)@DL*(czF)hlrp_-zBOT}hoA%JI}+|J1&jUX!Uy GZ@vJ4%1nX) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc deleted file mode 100644 index 2bedef9dbca0f8c094d9562878c4a196751559f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1492 zcmZux-H+Tf5O<&N*#GT5aVszJ9DDDTy~T;%k;_vFS$(d z0h;X|e|(GOX||3SEp)mlSyXVP)3Qu;A$U|vkujy-iHbR!M|Ty|O+ByI5oJfL6!qPC z_zR?mZqKj@zO3y}($WM6?AwO%jLjS~{iG>M`WZheq~I0f8t%e^Q{YG`a*$rD(nCf% z&svC5k*#l%%3Ohdl0h^?HH&R5W}KH|k(NYs?7&J7kn7(a4MuT1b{@A=k#2khkQSP1UXe zY>U1)NKRm zJ#-!P6{0;4dFVdye0l?^>-QW7+3#!E7qzr^@IM*sZ(g*wHZ%YDo6k2$MrmXdOLL3u zInI@!0O=P(=?E&_SZow<42+f9*DEQSd=*Bpw202(nRi#muit4nFL=JuTxf}CDP;7P zn)PG=MKNP8HfUsmFN<8-l1W=TxdY_*YQ5Gg=(Fb=3;Jo8iK<(akG2$_N-@o zXquc!;}skp@~tD7J|z1y@ewpiTo#LX6ZU)a8}G)p&GxqiR&ia_F)6ra5+)%QHIv;S zsdzh9@v}K2WjA+FIWyhr$TOXdQ(Xr#oM4Qd^UpsC2L72GJiT^0KE=)(r}7mro?S70 zLa4|HF@0Mm2;2C2ZNrxs45SOhT!j$lXCcnd20(gN`|5wSjV?+x-#Y6mZQgv5#d&{_ z&S8g)x%NWSvq|niGlQJzTN_XVLhQH_B44txxJm=i3;0v$^6PNAK=!On@FDbZQ?id7 zkkki2JQU!mGsHv3ej&!LkMTdgi=X-){u}r3U)aYdxR3wD0saFI@b5Upzu}$num1v# C{H1yT diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index e8677b2eb0444b8b17d183780b2639b98fa726dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21313 zcmb7sdvILWdEb5Q-3Jy65F|l>q{z#MNUlTx;!_e$Jtz{CD3cHckg~OYtQUJPhz0kh zb1z6?y_?7e6H@KSa^7)cPr$a5#!b?6+$5bo{%DdvT2DKfY5qxb(@EN2TQ!;AR&yDUv} zwVdYau2I%=x?GK%Ay+eJ%GJtQa*gF;a21)aAhJlA@`~BWMwKhCHDj6rz%HsN8~QqTxf7L>xs#Qrb5BcNruB?hz2;rMtLI+#9Cw>HyK3a-y#3ys zH|ss_UGZiYjB#zj9M^JJ-A}mV-mJUbyW;LZiP`o$+ui9tb}N>9!`+3qJG>ouGbXhx zcem@@vT`4jdON(2FIes#cQ10@boY6~D9fDv?&HYGxd*%x(k|;uuhLS~KgVFX2i-#` z`3X1c?e%8IHI&}NE8aZeK8ZJ=bq_YdQ zd&E78+)v90que><9&?W)H}9VCcH@ga(B?^uXU?1B%-pBFecl|d&qQzA?d@jY3u*UR z_Y`V>#{J0p3@}z{2V*_$K8Lpj?8Ec!3)qJju;TN0deJ?Dr!#me;^`&#ES}DKN3ch( zdyeCE4b+}?&!e`75-+>2pu{WQlPIx}ynwHfeAWG=`%#p==pAw|;X30z=f38B+`Ww7 z>sYN*81pRd+17|V=U&0SUGvPPMfa+#$WHeSS*wq^AHQX->bcT}b~|md^rPE-)6JpX zCD)kKvY%?aJhxo0*Hqvv)Ra@I`az*wE>*8Ng{te!FPF+LAA&{C*?V)*^U8aj`BJr@ zR-AgFc)f7VW3@^lm`r^@5;T+5!%fSo>=zci{QSw|UbR?rJ!Hl&dA^V0Su>0k7Yn6o zIIvJE2cB9elzlIZqgymn&u$8h3$KNPSKholoj?1^^x2PIn0Yxg&s0~!#7ojI-X_js zh=uvG7h2~^#UM<+>{UHg2x=-!TtJiZD!OByb+P0JVSL8Bd1a;Ug^AbdL8(?Pl*7cF z_tr8-=!NE-7lg4Z%XPFFyIRHT&?*-EAZvv2T&aG(gnZsys4mnnnSr^YD%FEah3lTe zeL5!S~K#^r|$!%sSx^hvKjJfmit$cOx8SZP}Q-+fxt&A3JwpcKYm< z{MFfu`AgGR&YU}Q}kFH0GyLNP$=>^C3O@~*c~ST19k z08IIMdD+Kud&T8Ic6zi?s^?2skvv*l&&SdZpnKnomIsfC%c>UCinVf)pxXN}@$e#k z{!>Ui4V+TT8CSv6JkvE!Yo3LxiE9j3>$K)3-ME_op4+Ys97=_jKuBuVE7p{IxezRd zL%u5JF)KXh>&!^Ho*zWFaUekTn&*bL^0124nWBzvJ0ITjcNRY%3>+MMPW!4p^Hn6F z<$L7?^(=BF`LH&%SgUwb*Op5~RV#WyP@1~_j6dZURiO^Nov7Dbf9i%;y)jiT%}>== zg2h_(*yNF?rhF{eL>q#^c}J0)!Oy1zl+qG9zZpaF)iLCO3Jq(a6)pLExmLXH0|8}V zMUJ@hiQ$HeE314GH-XmFn)<5oNuy=7AQ=UE(^xa^YODGhVBoI4X1V5FeVf*@npO~N znydN(>8I6rVOBQLITX=47tnkSTYcCmd(~^fVpixX$Kx#fB&Ea-Y{sO&SU7s(x@K<*UO zwdD%1+joMRQ&)tc@`{5?)hRe<=iYFL%P9w+QdQW=wG!acVZW1-9cmxOmVy6fq^}uG?XK=8Ue!LY2PP-GYP|ncOK)Q5?`kar&=4aW_)b#$nC6-mz-QHjEN9JW zfxQ%8O9b{>@-Er{^Z-7#vDMUC!nFlz474+VcC6mI)x;6afAOZS1L1Y;P5h+iIC|bJ zJ*S)KQ3qVErJEM-dTYChISutc(_5c;*<|DO*@#p-`}RaQ?~u~sX^Mb271Y|KKo-8e zkyq5R=ad#?pPZWo-)U2+_U;&J-shrqTAVpA>$`7H7%TY2QYkcU&R@w6hDOa7kPPjT z&n*uv!a$f%Ucr^!Op(l-eR@d48FwPcyuO3=#E{xq& zAY*MD2yIY3aOE($Py&WXUvV@|a>MdKnhgk%S}47pk1Bl{GxPT%8IGlmgr3q3efays z))w6D{4gC)0Z~%-EOYq#mZ?f87A7iQP;d)Dp%1c1x4THQ1rJSaP0;49v8LYz)La*u zG1C~Dt<{2w3;x7qa7|DH^*S510_*{puZh`*v2yJu#R~-$?*Uxi8nJwZR><}0?N(4y zc4dpMs?s23g1!-QblnkN#6wAI>G%Qq*R;FZIqg&9EwgDZL07zPs8QSja*=}jy_JxB z1NnO--{|IpRthyVXCNAYZ`45VqlNXu0Whb|1EhdW*fAA}N%?vWJjV}X*Hmq}9>#7I z%FEa)5tb}f!{Ah%$y-Rm0gWG_O+u{zcZAHHBW_}E6(_P&i+NR+-Gp=nTAxk#xwX{3jOrqAN zripaqD>0Ixw?6J}Zl%z^-ERLES+bczi(5EuU8^R#Ia{NgVALITw>^3_FyevcfchPG ztd*9!X}05zV}u}~AZyzjUpeOicpxPUp(<2Yoc2C~`*;py38z+dE}yybiYPCUVgl|1 zj!*^nhzMCk?fms@rxIx~-4PCKE+H$toWFozh!xzh0DPa-LCuA2dkI&ejpYwvvTXg734vSR#H z&y2108LJhvp&Cda3$$K_gvmHco=m6YH!>Ya`D}}D_@Qyw`QSc2jhKL8!@2_H zxiQqytv#0#(80#GgU-#xQgIPY^n&hW!#fKKT5>(*6kJih(Jo{vf$N$&OgLSsEknlg z7ElInd?@hXZ$88-wAF_8!w@$;XJVpSn_$jFG{^~VDn9(>p?g2h9A z))7&JLb-@XpZSr`9B%JPrLZEKGVeJU9ZVtEwfPkXb_b_Wua}|Mi+(g2>Z$CuZ~!`G z85%5Arf{IGtP*gDp}{&_hjFZ~$Rmk)ptIbW*yJz{4XvbVRaM3UgfSmIz+%BsQrNN4 zrB`*=u|iQ?QF$p##n*@I1LFfUN)z&bXh)PUw3fhMLlbl|J1AHaW`xs1v7TQc)`STv zrIfSO=h)al1SF!ng$cneG!-T*{!7|JzQYpVs z3BpXLv3vlFk{520i=Z!-KaUO~$oM=bCRn`ZZ{2wg*}sCsidlNfOn}3u^Ur{oq28c zoXFdgDd8#?xR<03UIBCgC55j6YGD$>?&1xxJy4U*EL$Pd1JYKVXdg%lDlkb&Q^fe@*M<*FdpVJXGII54j{Ku)AITU;Zt#OURT9Gn_*^;(-(M~!=xdH{hzUPKJL zkG@eTref&xw;zenx4}=EZ0XdaXV&v4z2E zLL)@K`k~%Mr9Z|`I5Vjpw2k|X17N~!sB!ac@ay5l9U6yDe>Up-AK|j0>2UKy8u>cA zqTZj_Y5>&Ludv=PBcWC`Pjb*_AR)c)Dhe4qM0_0UpxvdEA~QGFX`A{I%47{`QT;0J zH;!qfV-ABoZviR`!0S&@?3?T;qpM%T<2SQXQ2cqr{DQD4| zbJu7ADc54mS+b$M<2i`C(C$|wJ*>^4ro?oVO{~u*ObHEk6^s3=Bp=ASBDVyupEj1FrxZxU*q751tFn!y##<2vg zIE@?4cr%WLNi-8p>bV-dZ(Qbx3f@R;oJIZY_q^o<{B1xK@Qu(n_}TTM0*q#m2&|?ln$tj#Xb!OLRvJdMfld!nKHXFPax>;8+$3nKPNNFx z>Nen8Hr2=rfj9+uuuuW+i@U;ePdR5m`|8eus#QQ2i;LK|4uR#ak(9Ix3+HaXleQdu zSSBJ0ADCFl#^E+`Cf6ekjHqY;yDdnN0#)@*^3-kymsUJgSk&izhSoaYa zW^nsNAsEGtClf5bObPiS)a*JI`KN+JIo{M^P;et|LfpYblDl zlhlkmfRzU`hn2UzWIaTsE8u5S>gUi3%!svXps8WJEldiihi1K27jvN?tNLjUQ^402 zPUAz$_-D-f4JL$K^_xtH8eyi}Zv^8eAUzx+*!N&ZI0TblZ$@OtoM8j{LWF4jL^Ry~ z=n4K6stF~x1|r!Y1OA`Tx9DTW7~}w2c_!vy)?{%6Ei8s)# zfq%cCeZ^ww_PfODhI}|4QXM&iW*XpB3J_5tHGexM6P7&|DeccV}Zq^qH>W$ihqZ)1s(+*o4dH+Lctj7(8Q z$EFJZplZ{>%f<+rKlDlW$wQxenBJn&*j{>~bf_ zi$HCkp)4QG@L^ha+AH`g9mH)6^*&*?jltfGiAT;*{af^%)f?lz#ScwjChh6$SN{$r z)W2uak7YtyW;uSkU2ISp2uC!Td@0D#aewuQHzVXC~XcAiJ(p+8cUdN zyEZWwkfL444{az5)NQyA>gSpK43cbI{Vv~bZmZVhq8%m(TLAoh(Tk8fp7-kNKS=4` znRQC^Ef?h;4*-&!2 z-#m<$NDY@crg$BVnez~9*IQ2JyG@h6Ed5`=&72DcA?YsI;zbQ4novOTbU0AVBMa=pW%t7{_J`Y{`&MJ#;YbBG=Ha`X?yy zz#!TM`UXM9P1~?6+i&5fBaALVz5&62<#&}-p0+N?V9ZsJn%3;-9uyr`VR0jAv<1^z z{QiE}j+1;ZuBJ@O3Q}tW*aC}k8XP?kzb$bwiJRzDubbzAw-gvs4kgaoE z+)Vzm#*F$nMxV{Bi@NFy$PmC$S=5+9gsC|(A`)#w zOAz%aYDeDl2Xvq=wo)l=V=FLViC9W303P&XtqM^Po|afd1G?BNA{j(V*`PmXhy92u zD|MSIAUF#A z{Jd>q_Qkp*E)+q2h(@$G!>t*Eq1sadW*so(W|b+&`- zB5}X5>!EAdg-gUuY#;__J1vES?LLZLx!mbT5a2IZM0)%N?tZcZX$ftYu9y=J_RYSJ zFA(mzL+nO8AJB-Qt42!QvaU8ab+}TsWle1j;58(dSk*s|oQNJr_+Y6W?8c5ZM*55_ zN{0I1d=Zo7-hi#)V|i781FEgm$@cg7K)=js5RVg3aX?b3xi683$_BOd&l3${QwsoP*KArPJfgeStxS z1>tbDIv?H>mw5F@kzn;AKB@!O#Y5CKOhQr^qC5XxyGqBu z`L12k-i-y;s`jo94L1d7c*ZpX=&k`IQkc)M?+c0B`t8_ld%+aWHrN_)lPD1j;s}8i zDYcb$(G z`W+kjTY}-{mgWfVw)V8Q-Q9uqMp0+9xmoILYmGHCSUnRZ$5Cgzxea&QgH6q?&F!om zj0BtS!1Eq#Aq_yzj$mtZ2W?#M8t+;N!ybuN=(cg&!W|E8}f4#LQcx-LgUG4qT;MR;6T6B0x<;2vo1UwfQy zmJYZF?;4oJ;~4eh&Hby8aKEU(wF7dj-Ia2aN08^w_DZr3c|YI#J~+5`sJUk?%djhq z`U%$t1V4#>4!HZ92l9vALyJ1D6Y?|}Ox=N8+&UOM6&!K1OGocmYsUy9$UD?Luy(w8 z5VCw0Q4A-VS(!WUn12WX?E6bFCrfS&^Zr_JvYAD_Cz|MU8FNO?!L_HGPq2jhWbn+Y zHl)3%y=w-~E}fEfKOB5ScIR|=ckJ6HaDrj)X|(jDtl)EZV0(rA=5X}XJnT;4X`=aL zb7ED0f3P*#oLqa}eTuz2WNrSkcWp3_7n&0?V!#8&Xs9PTtp+cm)hV<(g;qyePc@%f zdmb?tXYOiiFS$pec#Q|zH{e@FznxGuX@5%EkE89^I&Hg0(e{zxZ1aeF41sKkhm6$l zrypnuy#l6pteta@V;7EMkEYkoH;=Bp%)Q0>91C7)9=j8}qc>A`Z1==_vDWc!kH^vD z3C!li0z#RB3+~BP{U7RI(BB_xokT0I1_SQX&6BiOwVrN1z4p=IV)OW_M5*-7k)gbR zK*Rs3-myu5@3V#X!00bT#v}&;B@Df8d(YaIXd1RoIWshG!MR5h7-AroK%ILm&tko5 zm+zAPQ&Eg0v>U1eB0I@Dc(-Uk>zYk_D@P3Cl*7<)Dq}w6KC%or@8RQv1{?+Kx9j%0 z^m|(Y$3S3p#8e=mopR>HH^#UD2~m(>@6K%6q9SeHhdD@T$iat}VszNsaF=hLaz3`` zVJ##|VSWV>$8CnTJ}u|62$|vqjeLKd1!82!29DR)9%fv;j+HJ1ZK*eMi1sfSM<`y? zLU$Dqlo|yIMMD-L%6G0JeqD}1crM25l}~ji_yo5*GEheR7IEs%A}rV9Z(OcYUdDn& zn-g z44W#7?)YW!cf=#sTnOlJ8AUc9GW^b`BVuhvhJ+$f2mmRhThjzWX{TZTQ6mUO19Kx9 zGO&!ltkF1m30{?lI8?;@+g|HlkBWFw{K**z_+LYJ>WfIAo_&}19H{yp5((|4tOF75 zBr|`5$*(f$N^jwC+cD7H(BG$6MPVidJAnoJ0IULsI%d%*$ba3Zv9Yo^5BfxRv?gNF z9InzVOf;Cagqp!j^6SXX;>-YylM<`?RsEs#td0eLKhK(#HXrYE9;s#}N-&gA3(9=Bm-IhoD;oUlUaAD?b`)&m(xVo3 zV^y3=f_k)$Qx9z)JAEt~u?$BB7Du1R=SV>Z*2hY%EF67!H{akmxv1Ms%Wh2maAQ>8 zLd6F*oaPhRaDs!VtZ>xbN(2yS5qyiYs{zie!r*S*HlfZ~w|Rb#ruPmIBp!_D>|)^< znv^KV1a^*Rf`)kN)&F2tWE1R{D?SNg7RUyr>r0GfrpZ+jR5^^V!;y_ApDE^ zc376!eeNRRWWkg@DX`zJxN@CPnLPgy%AQ$3Ym_0@@_>X;g1K z`6&AIka~S1Cw=RVoFsXD$e7@Ubb!JdPd3G(H5dsZX>inCH% zIfWnN-P=g8FEYEIV+N;)>7K_WjPWFDJ4$?gu3ItYwvN#Qv%5H3jx?Is!V7?F5 z6-PwhwAl~^1|hgaS-M9!;U!~D4gkp6G7G9V{(k{(!);9i@jwO-WVFocE}T1y-qEG_ zxV*F4?}oeYaCkr+>#GMbMx=Y~hE_jKDgOrDfA&nnn#7r?55C9v^i7f)jz~Z` z#6$fD%m!!vaHPlPfee5Att8lBoV(%g=Dh@bCfg3whKW@|te{ZR_t3if*G$%z>q~sh zF^K@MH};9h6mDKvh6|#r*9c9;$~{a8+6rAd@7I=95r%&7I4SF2qzF6_ide@F3~mZ=)EL)y{!%R1ZMqud+ zTuN@U@y-YWT6W&gAdm&|$8EsexTyV=!{mjTxhrQbUYwp4Qi(X6l$u3jVRCl*^{dl! zSEkQNs6l8)p_DKJ2!NmDjDC{|_5D!4*@$0w?GuO$_*7OupS`50PDO_oUFW5uO_2!qag$d{mkg}FN@fby?H{!)|ZGIkMnTZ<(RYIVgA13&J z39`+9z{-})*Jfis&*W#AIVhq|1^=H=LSVo8k9_eYsL|owdCXE%4eAM31-0+RdAzIASOajdG5RbIBbVh%Q+H> zwv>a}p)F^4amXaPBK}z-)3eV+p#Fc^>|Zna7L&hW@@*#HVe%o8FhPqMjWE$kS%Iy4 zd<#pKreJ^86#jomQ=>>I2jEamh@-z9Vj6DhRY;@Pn>GqSzM@VG>Vay$8sq(loB`}8 zWKq3#yjowTqU^Y#v@`=To6y<*YY(-P#Wpk$b@%6-%x=6^`&h<~{&OReYvTTLv52!@ zVS+@DqX>m$_D0nrIuUxj`h70eww}|teNlDe>$IaCdfAqYd|(ZZ=RCo#BZF0Ez1JCA zWdG`Y=E%dLNV%bdvOTn(3@MT6x-Fvuox>AyhN$x(LGd^c4A6+IBJIhs1;wyRp>bfz zBAyGz{w|jc{|pt8^B&eJpd_+-rk~LLV-)tO>SV?fpoX?#**2_){Moc+#jQIW$cz`Xq-*KjhJX!+Ztb1u|%rJ&=DhVf)n9m-! z=(~)OK|98{WPWiz2^@U{e4XKiDbsq#`1Y=Q#yh+2XVPiIwh}Rv#aX8mdKoorw7^47Hejr5GN2ibeFQ~7#Ao0!4~Q~c zt*L(=a&Jrj5&b4i30Z3f|11KX8bd$?i!m7;xP+7>O0C8JcmM}n;4pPhao-|F_bdhx z9U$Ap(F5!e^WLUt|Aq{Yyuo+}dL#tSQ7la29pj!Vp?;s=oE8$Y#+gfCFv1BZ9bn^YTFn^j6>-;mFYtQ^fcWXt&ZGr>qeO1(VI?R!N6|uk4Xnp( zi91kanlNgB$K&{~K2ZCLUONy+aA=#f-+kSQD)FPZ?9u+WoqxMfyE!R`$sQ!(?hVBt zaF%_{2NYW3Qbb5l`&cv@aJN4SEhrkP-I3MhaTeRv-=fTCl8YDp6^J^(z9};F$weWklvYC%vkr$YbWYyj-*9GYH=~m@S6Na7*%I%nOhgzJ3GG+-_-jnQ#^iUH zP|y<#UL>!6gO7j7BIwnqI1Ms&@&!d3m{{<3DWAOTeUmD)F z=oj_j&1n!#e35R^hhxLwOJn$^86MBGY{?Xk*gNL-_(*(Y%M;f20pk@LVNZB-Z*=>p zWsp389~t*-)A&9reGjK^ziZp64|h44OPNE%>5P#QHX__rag;87K{=CZ)mV fKD6V;cVHL%wvkNzjrOD3k6L46`VUhp^EdwwuWHRn diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py deleted file mode 100644 index bebe24e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Legacy editable installation process, i.e. `setup.py develop`. -""" -import logging -from typing import Optional, Sequence - -from pip._internal.build_env import BuildEnvironment -from pip._internal.utils.logging import indent_log -from pip._internal.utils.setuptools_build import make_setuptools_develop_args -from pip._internal.utils.subprocess import call_subprocess - -logger = logging.getLogger(__name__) - - -def install_editable( - *, - global_options: Sequence[str], - prefix: Optional[str], - home: Optional[str], - use_user_site: bool, - name: str, - setup_py_path: str, - isolated: bool, - build_env: BuildEnvironment, - unpacked_source_directory: str, -) -> None: - """Install a package in editable mode. Most arguments are pass-through - to setuptools. - """ - logger.info("Running setup.py develop for %s", name) - - args = make_setuptools_develop_args( - setup_py_path, - global_options=global_options, - no_user_config=isolated, - prefix=prefix, - home=home, - use_user_site=use_user_site, - ) - - with indent_log(): - with build_env: - call_subprocess( - args, - command_desc="python setup.py develop", - cwd=unpacked_source_directory, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py deleted file mode 100644 index f67180c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py +++ /dev/null @@ -1,734 +0,0 @@ -"""Support for installing and building the "wheel" binary package format. -""" - -import collections -import compileall -import contextlib -import csv -import importlib -import logging -import os.path -import re -import shutil -import sys -import warnings -from base64 import urlsafe_b64encode -from email.message import Message -from itertools import chain, filterfalse, starmap -from typing import ( - IO, - TYPE_CHECKING, - Any, - BinaryIO, - Callable, - Dict, - Generator, - Iterable, - Iterator, - List, - NewType, - Optional, - Sequence, - Set, - Tuple, - Union, - cast, -) -from zipfile import ZipFile, ZipInfo - -from pip._vendor.distlib.scripts import ScriptMaker -from pip._vendor.distlib.util import get_export_entry -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.exceptions import InstallationError -from pip._internal.locations import get_major_minor_version -from pip._internal.metadata import ( - BaseDistribution, - FilesystemWheel, - get_wheel_distribution, -) -from pip._internal.models.direct_url import DIRECT_URL_METADATA_NAME, DirectUrl -from pip._internal.models.scheme import SCHEME_KEYS, Scheme -from pip._internal.utils.filesystem import adjacent_tmp_file, replace -from pip._internal.utils.misc import captured_stdout, ensure_dir, hash_file, partition -from pip._internal.utils.unpacking import ( - current_umask, - is_within_directory, - set_extracted_file_to_default_mode_plus_executable, - zip_item_is_executable, -) -from pip._internal.utils.wheel import parse_wheel - -if TYPE_CHECKING: - from typing import Protocol - - class File(Protocol): - src_record_path: "RecordPath" - dest_path: str - changed: bool - - def save(self) -> None: - pass - - -logger = logging.getLogger(__name__) - -RecordPath = NewType("RecordPath", str) -InstalledCSVRow = Tuple[RecordPath, str, Union[int, str]] - - -def rehash(path: str, blocksize: int = 1 << 20) -> Tuple[str, str]: - """Return (encoded_digest, length) for path using hashlib.sha256()""" - h, length = hash_file(path, blocksize) - digest = "sha256=" + urlsafe_b64encode(h.digest()).decode("latin1").rstrip("=") - return (digest, str(length)) - - -def csv_io_kwargs(mode: str) -> Dict[str, Any]: - """Return keyword arguments to properly open a CSV file - in the given mode. - """ - return {"mode": mode, "newline": "", "encoding": "utf-8"} - - -def fix_script(path: str) -> bool: - """Replace #!python with #!/path/to/python - Return True if file was changed. - """ - # XXX RECORD hashes will need to be updated - assert os.path.isfile(path) - - with open(path, "rb") as script: - firstline = script.readline() - if not firstline.startswith(b"#!python"): - return False - exename = sys.executable.encode(sys.getfilesystemencoding()) - firstline = b"#!" + exename + os.linesep.encode("ascii") - rest = script.read() - with open(path, "wb") as script: - script.write(firstline) - script.write(rest) - return True - - -def wheel_root_is_purelib(metadata: Message) -> bool: - return metadata.get("Root-Is-Purelib", "").lower() == "true" - - -def get_entrypoints(dist: BaseDistribution) -> Tuple[Dict[str, str], Dict[str, str]]: - console_scripts = {} - gui_scripts = {} - for entry_point in dist.iter_entry_points(): - if entry_point.group == "console_scripts": - console_scripts[entry_point.name] = entry_point.value - elif entry_point.group == "gui_scripts": - gui_scripts[entry_point.name] = entry_point.value - return console_scripts, gui_scripts - - -def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: - """Determine if any scripts are not on PATH and format a warning. - Returns a warning message if one or more scripts are not on PATH, - otherwise None. - """ - if not scripts: - return None - - # Group scripts by the path they were installed in - grouped_by_dir: Dict[str, Set[str]] = collections.defaultdict(set) - for destfile in scripts: - parent_dir = os.path.dirname(destfile) - script_name = os.path.basename(destfile) - grouped_by_dir[parent_dir].add(script_name) - - # We don't want to warn for directories that are on PATH. - not_warn_dirs = [ - os.path.normcase(os.path.normpath(i)).rstrip(os.sep) - for i in os.environ.get("PATH", "").split(os.pathsep) - ] - # If an executable sits with sys.executable, we don't warn for it. - # This covers the case of venv invocations without activating the venv. - not_warn_dirs.append( - os.path.normcase(os.path.normpath(os.path.dirname(sys.executable))) - ) - warn_for: Dict[str, Set[str]] = { - parent_dir: scripts - for parent_dir, scripts in grouped_by_dir.items() - if os.path.normcase(os.path.normpath(parent_dir)) not in not_warn_dirs - } - if not warn_for: - return None - - # Format a message - msg_lines = [] - for parent_dir, dir_scripts in warn_for.items(): - sorted_scripts: List[str] = sorted(dir_scripts) - if len(sorted_scripts) == 1: - start_text = f"script {sorted_scripts[0]} is" - else: - start_text = "scripts {} are".format( - ", ".join(sorted_scripts[:-1]) + " and " + sorted_scripts[-1] - ) - - msg_lines.append( - f"The {start_text} installed in '{parent_dir}' which is not on PATH." - ) - - last_line_fmt = ( - "Consider adding {} to PATH or, if you prefer " - "to suppress this warning, use --no-warn-script-location." - ) - if len(msg_lines) == 1: - msg_lines.append(last_line_fmt.format("this directory")) - else: - msg_lines.append(last_line_fmt.format("these directories")) - - # Add a note if any directory starts with ~ - warn_for_tilde = any( - i[0] == "~" for i in os.environ.get("PATH", "").split(os.pathsep) if i - ) - if warn_for_tilde: - tilde_warning_msg = ( - "NOTE: The current PATH contains path(s) starting with `~`, " - "which may not be expanded by all applications." - ) - msg_lines.append(tilde_warning_msg) - - # Returns the formatted multiline message - return "\n".join(msg_lines) - - -def _normalized_outrows( - outrows: Iterable[InstalledCSVRow], -) -> List[Tuple[str, str, str]]: - """Normalize the given rows of a RECORD file. - - Items in each row are converted into str. Rows are then sorted to make - the value more predictable for tests. - - Each row is a 3-tuple (path, hash, size) and corresponds to a record of - a RECORD file (see PEP 376 and PEP 427 for details). For the rows - passed to this function, the size can be an integer as an int or string, - or the empty string. - """ - # Normally, there should only be one row per path, in which case the - # second and third elements don't come into play when sorting. - # However, in cases in the wild where a path might happen to occur twice, - # we don't want the sort operation to trigger an error (but still want - # determinism). Since the third element can be an int or string, we - # coerce each element to a string to avoid a TypeError in this case. - # For additional background, see-- - # https://github.com/pypa/pip/issues/5868 - return sorted( - (record_path, hash_, str(size)) for record_path, hash_, size in outrows - ) - - -def _record_to_fs_path(record_path: RecordPath, lib_dir: str) -> str: - return os.path.join(lib_dir, record_path) - - -def _fs_to_record_path(path: str, lib_dir: str) -> RecordPath: - # On Windows, do not handle relative paths if they belong to different - # logical disks - if os.path.splitdrive(path)[0].lower() == os.path.splitdrive(lib_dir)[0].lower(): - path = os.path.relpath(path, lib_dir) - - path = path.replace(os.path.sep, "/") - return cast("RecordPath", path) - - -def get_csv_rows_for_installed( - old_csv_rows: List[List[str]], - installed: Dict[RecordPath, RecordPath], - changed: Set[RecordPath], - generated: List[str], - lib_dir: str, -) -> List[InstalledCSVRow]: - """ - :param installed: A map from archive RECORD path to installation RECORD - path. - """ - installed_rows: List[InstalledCSVRow] = [] - for row in old_csv_rows: - if len(row) > 3: - logger.warning("RECORD line has more than three elements: %s", row) - old_record_path = cast("RecordPath", row[0]) - new_record_path = installed.pop(old_record_path, old_record_path) - if new_record_path in changed: - digest, length = rehash(_record_to_fs_path(new_record_path, lib_dir)) - else: - digest = row[1] if len(row) > 1 else "" - length = row[2] if len(row) > 2 else "" - installed_rows.append((new_record_path, digest, length)) - for f in generated: - path = _fs_to_record_path(f, lib_dir) - digest, length = rehash(f) - installed_rows.append((path, digest, length)) - return installed_rows + [ - (installed_record_path, "", "") for installed_record_path in installed.values() - ] - - -def get_console_script_specs(console: Dict[str, str]) -> List[str]: - """ - Given the mapping from entrypoint name to callable, return the relevant - console script specs. - """ - # Don't mutate caller's version - console = console.copy() - - scripts_to_generate = [] - - # Special case pip and setuptools to generate versioned wrappers - # - # The issue is that some projects (specifically, pip and setuptools) use - # code in setup.py to create "versioned" entry points - pip2.7 on Python - # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into - # the wheel metadata at build time, and so if the wheel is installed with - # a *different* version of Python the entry points will be wrong. The - # correct fix for this is to enhance the metadata to be able to describe - # such versioned entry points, but that won't happen till Metadata 2.0 is - # available. - # In the meantime, projects using versioned entry points will either have - # incorrect versioned entry points, or they will not be able to distribute - # "universal" wheels (i.e., they will need a wheel per Python version). - # - # Because setuptools and pip are bundled with _ensurepip and virtualenv, - # we need to use universal wheels. So, as a stopgap until Metadata 2.0, we - # override the versioned entry points in the wheel and generate the - # correct ones. This code is purely a short-term measure until Metadata 2.0 - # is available. - # - # To add the level of hack in this section of code, in order to support - # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment - # variable which will control which version scripts get installed. - # - # ENSUREPIP_OPTIONS=altinstall - # - Only pipX.Y and easy_install-X.Y will be generated and installed - # ENSUREPIP_OPTIONS=install - # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note - # that this option is technically if ENSUREPIP_OPTIONS is set and is - # not altinstall - # DEFAULT - # - The default behavior is to install pip, pipX, pipX.Y, easy_install - # and easy_install-X.Y. - pip_script = console.pop("pip", None) - if pip_script: - if "ENSUREPIP_OPTIONS" not in os.environ: - scripts_to_generate.append("pip = " + pip_script) - - if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": - scripts_to_generate.append(f"pip{sys.version_info[0]} = {pip_script}") - - scripts_to_generate.append(f"pip{get_major_minor_version()} = {pip_script}") - # Delete any other versioned pip entry points - pip_ep = [k for k in console if re.match(r"pip(\d+(\.\d+)?)?$", k)] - for k in pip_ep: - del console[k] - easy_install_script = console.pop("easy_install", None) - if easy_install_script: - if "ENSUREPIP_OPTIONS" not in os.environ: - scripts_to_generate.append("easy_install = " + easy_install_script) - - scripts_to_generate.append( - f"easy_install-{get_major_minor_version()} = {easy_install_script}" - ) - # Delete any other versioned easy_install entry points - easy_install_ep = [ - k for k in console if re.match(r"easy_install(-\d+\.\d+)?$", k) - ] - for k in easy_install_ep: - del console[k] - - # Generate the console entry points specified in the wheel - scripts_to_generate.extend(starmap("{} = {}".format, console.items())) - - return scripts_to_generate - - -class ZipBackedFile: - def __init__( - self, src_record_path: RecordPath, dest_path: str, zip_file: ZipFile - ) -> None: - self.src_record_path = src_record_path - self.dest_path = dest_path - self._zip_file = zip_file - self.changed = False - - def _getinfo(self) -> ZipInfo: - return self._zip_file.getinfo(self.src_record_path) - - def save(self) -> None: - # directory creation is lazy and after file filtering - # to ensure we don't install empty dirs; empty dirs can't be - # uninstalled. - parent_dir = os.path.dirname(self.dest_path) - ensure_dir(parent_dir) - - # When we open the output file below, any existing file is truncated - # before we start writing the new contents. This is fine in most - # cases, but can cause a segfault if pip has loaded a shared - # object (e.g. from pyopenssl through its vendored urllib3) - # Since the shared object is mmap'd an attempt to call a - # symbol in it will then cause a segfault. Unlinking the file - # allows writing of new contents while allowing the process to - # continue to use the old copy. - if os.path.exists(self.dest_path): - os.unlink(self.dest_path) - - zipinfo = self._getinfo() - - with self._zip_file.open(zipinfo) as f: - with open(self.dest_path, "wb") as dest: - shutil.copyfileobj(f, dest) - - if zip_item_is_executable(zipinfo): - set_extracted_file_to_default_mode_plus_executable(self.dest_path) - - -class ScriptFile: - def __init__(self, file: "File") -> None: - self._file = file - self.src_record_path = self._file.src_record_path - self.dest_path = self._file.dest_path - self.changed = False - - def save(self) -> None: - self._file.save() - self.changed = fix_script(self.dest_path) - - -class MissingCallableSuffix(InstallationError): - def __init__(self, entry_point: str) -> None: - super().__init__( - f"Invalid script entry point: {entry_point} - A callable " - "suffix is required. Cf https://packaging.python.org/" - "specifications/entry-points/#use-for-scripts for more " - "information." - ) - - -def _raise_for_invalid_entrypoint(specification: str) -> None: - entry = get_export_entry(specification) - if entry is not None and entry.suffix is None: - raise MissingCallableSuffix(str(entry)) - - -class PipScriptMaker(ScriptMaker): - def make( - self, specification: str, options: Optional[Dict[str, Any]] = None - ) -> List[str]: - _raise_for_invalid_entrypoint(specification) - return super().make(specification, options) - - -def _install_wheel( - name: str, - wheel_zip: ZipFile, - wheel_path: str, - scheme: Scheme, - pycompile: bool = True, - warn_script_location: bool = True, - direct_url: Optional[DirectUrl] = None, - requested: bool = False, -) -> None: - """Install a wheel. - - :param name: Name of the project to install - :param wheel_zip: open ZipFile for wheel being installed - :param scheme: Distutils scheme dictating the install directories - :param req_description: String used in place of the requirement, for - logging - :param pycompile: Whether to byte-compile installed Python files - :param warn_script_location: Whether to check that scripts are installed - into a directory on PATH - :raises UnsupportedWheel: - * when the directory holds an unpacked wheel with incompatible - Wheel-Version - * when the .dist-info dir does not match the wheel - """ - info_dir, metadata = parse_wheel(wheel_zip, name) - - if wheel_root_is_purelib(metadata): - lib_dir = scheme.purelib - else: - lib_dir = scheme.platlib - - # Record details of the files moved - # installed = files copied from the wheel to the destination - # changed = files changed while installing (scripts #! line typically) - # generated = files newly generated during the install (script wrappers) - installed: Dict[RecordPath, RecordPath] = {} - changed: Set[RecordPath] = set() - generated: List[str] = [] - - def record_installed( - srcfile: RecordPath, destfile: str, modified: bool = False - ) -> None: - """Map archive RECORD paths to installation RECORD paths.""" - newpath = _fs_to_record_path(destfile, lib_dir) - installed[srcfile] = newpath - if modified: - changed.add(newpath) - - def is_dir_path(path: RecordPath) -> bool: - return path.endswith("/") - - def assert_no_path_traversal(dest_dir_path: str, target_path: str) -> None: - if not is_within_directory(dest_dir_path, target_path): - message = ( - "The wheel {!r} has a file {!r} trying to install" - " outside the target directory {!r}" - ) - raise InstallationError( - message.format(wheel_path, target_path, dest_dir_path) - ) - - def root_scheme_file_maker( - zip_file: ZipFile, dest: str - ) -> Callable[[RecordPath], "File"]: - def make_root_scheme_file(record_path: RecordPath) -> "File": - normed_path = os.path.normpath(record_path) - dest_path = os.path.join(dest, normed_path) - assert_no_path_traversal(dest, dest_path) - return ZipBackedFile(record_path, dest_path, zip_file) - - return make_root_scheme_file - - def data_scheme_file_maker( - zip_file: ZipFile, scheme: Scheme - ) -> Callable[[RecordPath], "File"]: - scheme_paths = {key: getattr(scheme, key) for key in SCHEME_KEYS} - - def make_data_scheme_file(record_path: RecordPath) -> "File": - normed_path = os.path.normpath(record_path) - try: - _, scheme_key, dest_subpath = normed_path.split(os.path.sep, 2) - except ValueError: - message = ( - "Unexpected file in {}: {!r}. .data directory contents" - " should be named like: '/'." - ).format(wheel_path, record_path) - raise InstallationError(message) - - try: - scheme_path = scheme_paths[scheme_key] - except KeyError: - valid_scheme_keys = ", ".join(sorted(scheme_paths)) - message = ( - "Unknown scheme key used in {}: {} (for file {!r}). .data" - " directory contents should be in subdirectories named" - " with a valid scheme key ({})" - ).format(wheel_path, scheme_key, record_path, valid_scheme_keys) - raise InstallationError(message) - - dest_path = os.path.join(scheme_path, dest_subpath) - assert_no_path_traversal(scheme_path, dest_path) - return ZipBackedFile(record_path, dest_path, zip_file) - - return make_data_scheme_file - - def is_data_scheme_path(path: RecordPath) -> bool: - return path.split("/", 1)[0].endswith(".data") - - paths = cast(List[RecordPath], wheel_zip.namelist()) - file_paths = filterfalse(is_dir_path, paths) - root_scheme_paths, data_scheme_paths = partition(is_data_scheme_path, file_paths) - - make_root_scheme_file = root_scheme_file_maker(wheel_zip, lib_dir) - files: Iterator[File] = map(make_root_scheme_file, root_scheme_paths) - - def is_script_scheme_path(path: RecordPath) -> bool: - parts = path.split("/", 2) - return len(parts) > 2 and parts[0].endswith(".data") and parts[1] == "scripts" - - other_scheme_paths, script_scheme_paths = partition( - is_script_scheme_path, data_scheme_paths - ) - - make_data_scheme_file = data_scheme_file_maker(wheel_zip, scheme) - other_scheme_files = map(make_data_scheme_file, other_scheme_paths) - files = chain(files, other_scheme_files) - - # Get the defined entry points - distribution = get_wheel_distribution( - FilesystemWheel(wheel_path), - canonicalize_name(name), - ) - console, gui = get_entrypoints(distribution) - - def is_entrypoint_wrapper(file: "File") -> bool: - # EP, EP.exe and EP-script.py are scripts generated for - # entry point EP by setuptools - path = file.dest_path - name = os.path.basename(path) - if name.lower().endswith(".exe"): - matchname = name[:-4] - elif name.lower().endswith("-script.py"): - matchname = name[:-10] - elif name.lower().endswith(".pya"): - matchname = name[:-4] - else: - matchname = name - # Ignore setuptools-generated scripts - return matchname in console or matchname in gui - - script_scheme_files: Iterator[File] = map( - make_data_scheme_file, script_scheme_paths - ) - script_scheme_files = filterfalse(is_entrypoint_wrapper, script_scheme_files) - script_scheme_files = map(ScriptFile, script_scheme_files) - files = chain(files, script_scheme_files) - - for file in files: - file.save() - record_installed(file.src_record_path, file.dest_path, file.changed) - - def pyc_source_file_paths() -> Generator[str, None, None]: - # We de-duplicate installation paths, since there can be overlap (e.g. - # file in .data maps to same location as file in wheel root). - # Sorting installation paths makes it easier to reproduce and debug - # issues related to permissions on existing files. - for installed_path in sorted(set(installed.values())): - full_installed_path = os.path.join(lib_dir, installed_path) - if not os.path.isfile(full_installed_path): - continue - if not full_installed_path.endswith(".py"): - continue - yield full_installed_path - - def pyc_output_path(path: str) -> str: - """Return the path the pyc file would have been written to.""" - return importlib.util.cache_from_source(path) - - # Compile all of the pyc files for the installed files - if pycompile: - with captured_stdout() as stdout: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore") - for path in pyc_source_file_paths(): - success = compileall.compile_file(path, force=True, quiet=True) - if success: - pyc_path = pyc_output_path(path) - assert os.path.exists(pyc_path) - pyc_record_path = cast( - "RecordPath", pyc_path.replace(os.path.sep, "/") - ) - record_installed(pyc_record_path, pyc_path) - logger.debug(stdout.getvalue()) - - maker = PipScriptMaker(None, scheme.scripts) - - # Ensure old scripts are overwritten. - # See https://github.com/pypa/pip/issues/1800 - maker.clobber = True - - # Ensure we don't generate any variants for scripts because this is almost - # never what somebody wants. - # See https://bitbucket.org/pypa/distlib/issue/35/ - maker.variants = {""} - - # This is required because otherwise distlib creates scripts that are not - # executable. - # See https://bitbucket.org/pypa/distlib/issue/32/ - maker.set_mode = True - - # Generate the console and GUI entry points specified in the wheel - scripts_to_generate = get_console_script_specs(console) - - gui_scripts_to_generate = list(starmap("{} = {}".format, gui.items())) - - generated_console_scripts = maker.make_multiple(scripts_to_generate) - generated.extend(generated_console_scripts) - - generated.extend(maker.make_multiple(gui_scripts_to_generate, {"gui": True})) - - if warn_script_location: - msg = message_about_scripts_not_on_PATH(generated_console_scripts) - if msg is not None: - logger.warning(msg) - - generated_file_mode = 0o666 & ~current_umask() - - @contextlib.contextmanager - def _generate_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, None]: - with adjacent_tmp_file(path, **kwargs) as f: - yield f - os.chmod(f.name, generated_file_mode) - replace(f.name, path) - - dest_info_dir = os.path.join(lib_dir, info_dir) - - # Record pip as the installer - installer_path = os.path.join(dest_info_dir, "INSTALLER") - with _generate_file(installer_path) as installer_file: - installer_file.write(b"pip\n") - generated.append(installer_path) - - # Record the PEP 610 direct URL reference - if direct_url is not None: - direct_url_path = os.path.join(dest_info_dir, DIRECT_URL_METADATA_NAME) - with _generate_file(direct_url_path) as direct_url_file: - direct_url_file.write(direct_url.to_json().encode("utf-8")) - generated.append(direct_url_path) - - # Record the REQUESTED file - if requested: - requested_path = os.path.join(dest_info_dir, "REQUESTED") - with open(requested_path, "wb"): - pass - generated.append(requested_path) - - record_text = distribution.read_text("RECORD") - record_rows = list(csv.reader(record_text.splitlines())) - - rows = get_csv_rows_for_installed( - record_rows, - installed=installed, - changed=changed, - generated=generated, - lib_dir=lib_dir, - ) - - # Record details of all files installed - record_path = os.path.join(dest_info_dir, "RECORD") - - with _generate_file(record_path, **csv_io_kwargs("w")) as record_file: - # Explicitly cast to typing.IO[str] as a workaround for the mypy error: - # "writer" has incompatible type "BinaryIO"; expected "_Writer" - writer = csv.writer(cast("IO[str]", record_file)) - writer.writerows(_normalized_outrows(rows)) - - -@contextlib.contextmanager -def req_error_context(req_description: str) -> Generator[None, None, None]: - try: - yield - except InstallationError as e: - message = f"For req: {req_description}. {e.args[0]}" - raise InstallationError(message) from e - - -def install_wheel( - name: str, - wheel_path: str, - scheme: Scheme, - req_description: str, - pycompile: bool = True, - warn_script_location: bool = True, - direct_url: Optional[DirectUrl] = None, - requested: bool = False, -) -> None: - with ZipFile(wheel_path, allowZip64=True) as z: - with req_error_context(req_description): - _install_wheel( - name=name, - wheel_zip=z, - wheel_path=wheel_path, - scheme=scheme, - pycompile=pycompile, - warn_script_location=warn_script_location, - direct_url=direct_url, - requested=requested, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py b/venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py deleted file mode 100644 index 956717d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py +++ /dev/null @@ -1,730 +0,0 @@ -"""Prepares a distribution for installation -""" - -# The following comment should be removed at some point in the future. -# mypy: strict-optional=False - -import mimetypes -import os -import shutil -from pathlib import Path -from typing import Dict, Iterable, List, Optional - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.distributions import make_distribution_for_install_requirement -from pip._internal.distributions.installed import InstalledDistribution -from pip._internal.exceptions import ( - DirectoryUrlHashUnsupported, - HashMismatch, - HashUnpinned, - InstallationError, - MetadataInconsistent, - NetworkConnectionError, - VcsHashUnsupported, -) -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution, get_metadata_distribution -from pip._internal.models.direct_url import ArchiveInfo -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.network.download import BatchDownloader, Downloader -from pip._internal.network.lazy_wheel import ( - HTTPRangeRequestUnsupported, - dist_from_wheel_url, -) -from pip._internal.network.session import PipSession -from pip._internal.operations.build.build_tracker import BuildTracker -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils._log import getLogger -from pip._internal.utils.direct_url_helpers import ( - direct_url_for_editable, - direct_url_from_link, -) -from pip._internal.utils.hashes import Hashes, MissingHashes -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import ( - display_path, - hash_file, - hide_url, - redact_auth_from_requirement, -) -from pip._internal.utils.temp_dir import TempDirectory -from pip._internal.utils.unpacking import unpack_file -from pip._internal.vcs import vcs - -logger = getLogger(__name__) - - -def _get_prepared_distribution( - req: InstallRequirement, - build_tracker: BuildTracker, - finder: PackageFinder, - build_isolation: bool, - check_build_deps: bool, -) -> BaseDistribution: - """Prepare a distribution for installation.""" - abstract_dist = make_distribution_for_install_requirement(req) - tracker_id = abstract_dist.build_tracker_id - if tracker_id is not None: - with build_tracker.track(req, tracker_id): - abstract_dist.prepare_distribution_metadata( - finder, build_isolation, check_build_deps - ) - return abstract_dist.get_metadata_distribution() - - -def unpack_vcs_link(link: Link, location: str, verbosity: int) -> None: - vcs_backend = vcs.get_backend_for_scheme(link.scheme) - assert vcs_backend is not None - vcs_backend.unpack(location, url=hide_url(link.url), verbosity=verbosity) - - -class File: - def __init__(self, path: str, content_type: Optional[str]) -> None: - self.path = path - if content_type is None: - self.content_type = mimetypes.guess_type(path)[0] - else: - self.content_type = content_type - - -def get_http_url( - link: Link, - download: Downloader, - download_dir: Optional[str] = None, - hashes: Optional[Hashes] = None, -) -> File: - temp_dir = TempDirectory(kind="unpack", globally_managed=True) - # If a download dir is specified, is the file already downloaded there? - already_downloaded_path = None - if download_dir: - already_downloaded_path = _check_download_dir(link, download_dir, hashes) - - if already_downloaded_path: - from_path = already_downloaded_path - content_type = None - else: - # let's download to a tmp dir - from_path, content_type = download(link, temp_dir.path) - if hashes: - hashes.check_against_path(from_path) - - return File(from_path, content_type) - - -def get_file_url( - link: Link, download_dir: Optional[str] = None, hashes: Optional[Hashes] = None -) -> File: - """Get file and optionally check its hash.""" - # If a download dir is specified, is the file already there and valid? - already_downloaded_path = None - if download_dir: - already_downloaded_path = _check_download_dir(link, download_dir, hashes) - - if already_downloaded_path: - from_path = already_downloaded_path - else: - from_path = link.file_path - - # If --require-hashes is off, `hashes` is either empty, the - # link's embedded hash, or MissingHashes; it is required to - # match. If --require-hashes is on, we are satisfied by any - # hash in `hashes` matching: a URL-based or an option-based - # one; no internet-sourced hash will be in `hashes`. - if hashes: - hashes.check_against_path(from_path) - return File(from_path, None) - - -def unpack_url( - link: Link, - location: str, - download: Downloader, - verbosity: int, - download_dir: Optional[str] = None, - hashes: Optional[Hashes] = None, -) -> Optional[File]: - """Unpack link into location, downloading if required. - - :param hashes: A Hashes object, one of whose embedded hashes must match, - or HashMismatch will be raised. If the Hashes is empty, no matches are - required, and unhashable types of requirements (like VCS ones, which - would ordinarily raise HashUnsupported) are allowed. - """ - # non-editable vcs urls - if link.is_vcs: - unpack_vcs_link(link, location, verbosity=verbosity) - return None - - assert not link.is_existing_dir() - - # file urls - if link.is_file: - file = get_file_url(link, download_dir, hashes=hashes) - - # http urls - else: - file = get_http_url( - link, - download, - download_dir, - hashes=hashes, - ) - - # unpack the archive to the build dir location. even when only downloading - # archives, they have to be unpacked to parse dependencies, except wheels - if not link.is_wheel: - unpack_file(file.path, location, file.content_type) - - return file - - -def _check_download_dir( - link: Link, - download_dir: str, - hashes: Optional[Hashes], - warn_on_hash_mismatch: bool = True, -) -> Optional[str]: - """Check download_dir for previously downloaded file with correct hash - If a correct file is found return its path else None - """ - download_path = os.path.join(download_dir, link.filename) - - if not os.path.exists(download_path): - return None - - # If already downloaded, does its hash match? - logger.info("File was already downloaded %s", download_path) - if hashes: - try: - hashes.check_against_path(download_path) - except HashMismatch: - if warn_on_hash_mismatch: - logger.warning( - "Previously-downloaded file %s has bad hash. Re-downloading.", - download_path, - ) - os.unlink(download_path) - return None - return download_path - - -class RequirementPreparer: - """Prepares a Requirement""" - - def __init__( - self, - build_dir: str, - download_dir: Optional[str], - src_dir: str, - build_isolation: bool, - check_build_deps: bool, - build_tracker: BuildTracker, - session: PipSession, - progress_bar: str, - finder: PackageFinder, - require_hashes: bool, - use_user_site: bool, - lazy_wheel: bool, - verbosity: int, - legacy_resolver: bool, - ) -> None: - super().__init__() - - self.src_dir = src_dir - self.build_dir = build_dir - self.build_tracker = build_tracker - self._session = session - self._download = Downloader(session, progress_bar) - self._batch_download = BatchDownloader(session, progress_bar) - self.finder = finder - - # Where still-packed archives should be written to. If None, they are - # not saved, and are deleted immediately after unpacking. - self.download_dir = download_dir - - # Is build isolation allowed? - self.build_isolation = build_isolation - - # Should check build dependencies? - self.check_build_deps = check_build_deps - - # Should hash-checking be required? - self.require_hashes = require_hashes - - # Should install in user site-packages? - self.use_user_site = use_user_site - - # Should wheels be downloaded lazily? - self.use_lazy_wheel = lazy_wheel - - # How verbose should underlying tooling be? - self.verbosity = verbosity - - # Are we using the legacy resolver? - self.legacy_resolver = legacy_resolver - - # Memoized downloaded files, as mapping of url: path. - self._downloaded: Dict[str, str] = {} - - # Previous "header" printed for a link-based InstallRequirement - self._previous_requirement_header = ("", "") - - def _log_preparing_link(self, req: InstallRequirement) -> None: - """Provide context for the requirement being prepared.""" - if req.link.is_file and not req.is_wheel_from_cache: - message = "Processing %s" - information = str(display_path(req.link.file_path)) - else: - message = "Collecting %s" - information = redact_auth_from_requirement(req.req) if req.req else str(req) - - # If we used req.req, inject requirement source if available (this - # would already be included if we used req directly) - if req.req and req.comes_from: - if isinstance(req.comes_from, str): - comes_from: Optional[str] = req.comes_from - else: - comes_from = req.comes_from.from_path() - if comes_from: - information += f" (from {comes_from})" - - if (message, information) != self._previous_requirement_header: - self._previous_requirement_header = (message, information) - logger.info(message, information) - - if req.is_wheel_from_cache: - with indent_log(): - logger.info("Using cached %s", req.link.filename) - - def _ensure_link_req_src_dir( - self, req: InstallRequirement, parallel_builds: bool - ) -> None: - """Ensure source_dir of a linked InstallRequirement.""" - # Since source_dir is only set for editable requirements. - if req.link.is_wheel: - # We don't need to unpack wheels, so no need for a source - # directory. - return - assert req.source_dir is None - if req.link.is_existing_dir(): - # build local directories in-tree - req.source_dir = req.link.file_path - return - - # We always delete unpacked sdists after pip runs. - req.ensure_has_source_dir( - self.build_dir, - autodelete=True, - parallel_builds=parallel_builds, - ) - req.ensure_pristine_source_checkout() - - def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes: - # By the time this is called, the requirement's link should have - # been checked so we can tell what kind of requirements req is - # and raise some more informative errors than otherwise. - # (For example, we can raise VcsHashUnsupported for a VCS URL - # rather than HashMissing.) - if not self.require_hashes: - return req.hashes(trust_internet=True) - - # We could check these first 2 conditions inside unpack_url - # and save repetition of conditions, but then we would - # report less-useful error messages for unhashable - # requirements, complaining that there's no hash provided. - if req.link.is_vcs: - raise VcsHashUnsupported() - if req.link.is_existing_dir(): - raise DirectoryUrlHashUnsupported() - - # Unpinned packages are asking for trouble when a new version - # is uploaded. This isn't a security check, but it saves users - # a surprising hash mismatch in the future. - # file:/// URLs aren't pinnable, so don't complain about them - # not being pinned. - if not req.is_direct and not req.is_pinned: - raise HashUnpinned() - - # If known-good hashes are missing for this requirement, - # shim it with a facade object that will provoke hash - # computation and then raise a HashMissing exception - # showing the user what the hash should be. - return req.hashes(trust_internet=False) or MissingHashes() - - def _fetch_metadata_only( - self, - req: InstallRequirement, - ) -> Optional[BaseDistribution]: - if self.legacy_resolver: - logger.debug( - "Metadata-only fetching is not used in the legacy resolver", - ) - return None - if self.require_hashes: - logger.debug( - "Metadata-only fetching is not used as hash checking is required", - ) - return None - # Try PEP 658 metadata first, then fall back to lazy wheel if unavailable. - return self._fetch_metadata_using_link_data_attr( - req - ) or self._fetch_metadata_using_lazy_wheel(req.link) - - def _fetch_metadata_using_link_data_attr( - self, - req: InstallRequirement, - ) -> Optional[BaseDistribution]: - """Fetch metadata from the data-dist-info-metadata attribute, if possible.""" - # (1) Get the link to the metadata file, if provided by the backend. - metadata_link = req.link.metadata_link() - if metadata_link is None: - return None - assert req.req is not None - logger.verbose( - "Obtaining dependency information for %s from %s", - req.req, - metadata_link, - ) - # (2) Download the contents of the METADATA file, separate from the dist itself. - metadata_file = get_http_url( - metadata_link, - self._download, - hashes=metadata_link.as_hashes(), - ) - with open(metadata_file.path, "rb") as f: - metadata_contents = f.read() - # (3) Generate a dist just from those file contents. - metadata_dist = get_metadata_distribution( - metadata_contents, - req.link.filename, - req.req.name, - ) - # (4) Ensure the Name: field from the METADATA file matches the name from the - # install requirement. - # - # NB: raw_name will fall back to the name from the install requirement if - # the Name: field is not present, but it's noted in the raw_name docstring - # that that should NEVER happen anyway. - if canonicalize_name(metadata_dist.raw_name) != canonicalize_name(req.req.name): - raise MetadataInconsistent( - req, "Name", req.req.name, metadata_dist.raw_name - ) - return metadata_dist - - def _fetch_metadata_using_lazy_wheel( - self, - link: Link, - ) -> Optional[BaseDistribution]: - """Fetch metadata using lazy wheel, if possible.""" - # --use-feature=fast-deps must be provided. - if not self.use_lazy_wheel: - return None - if link.is_file or not link.is_wheel: - logger.debug( - "Lazy wheel is not used as %r does not point to a remote wheel", - link, - ) - return None - - wheel = Wheel(link.filename) - name = canonicalize_name(wheel.name) - logger.info( - "Obtaining dependency information from %s %s", - name, - wheel.version, - ) - url = link.url.split("#", 1)[0] - try: - return dist_from_wheel_url(name, url, self._session) - except HTTPRangeRequestUnsupported: - logger.debug("%s does not support range requests", url) - return None - - def _complete_partial_requirements( - self, - partially_downloaded_reqs: Iterable[InstallRequirement], - parallel_builds: bool = False, - ) -> None: - """Download any requirements which were only fetched by metadata.""" - # Download to a temporary directory. These will be copied over as - # needed for downstream 'download', 'wheel', and 'install' commands. - temp_dir = TempDirectory(kind="unpack", globally_managed=True).path - - # Map each link to the requirement that owns it. This allows us to set - # `req.local_file_path` on the appropriate requirement after passing - # all the links at once into BatchDownloader. - links_to_fully_download: Dict[Link, InstallRequirement] = {} - for req in partially_downloaded_reqs: - assert req.link - links_to_fully_download[req.link] = req - - batch_download = self._batch_download( - links_to_fully_download.keys(), - temp_dir, - ) - for link, (filepath, _) in batch_download: - logger.debug("Downloading link %s to %s", link, filepath) - req = links_to_fully_download[link] - # Record the downloaded file path so wheel reqs can extract a Distribution - # in .get_dist(). - req.local_file_path = filepath - # Record that the file is downloaded so we don't do it again in - # _prepare_linked_requirement(). - self._downloaded[req.link.url] = filepath - - # If this is an sdist, we need to unpack it after downloading, but the - # .source_dir won't be set up until we are in _prepare_linked_requirement(). - # Add the downloaded archive to the install requirement to unpack after - # preparing the source dir. - if not req.is_wheel: - req.needs_unpacked_archive(Path(filepath)) - - # This step is necessary to ensure all lazy wheels are processed - # successfully by the 'download', 'wheel', and 'install' commands. - for req in partially_downloaded_reqs: - self._prepare_linked_requirement(req, parallel_builds) - - def prepare_linked_requirement( - self, req: InstallRequirement, parallel_builds: bool = False - ) -> BaseDistribution: - """Prepare a requirement to be obtained from req.link.""" - assert req.link - self._log_preparing_link(req) - with indent_log(): - # Check if the relevant file is already available - # in the download directory - file_path = None - if self.download_dir is not None and req.link.is_wheel: - hashes = self._get_linked_req_hashes(req) - file_path = _check_download_dir( - req.link, - self.download_dir, - hashes, - # When a locally built wheel has been found in cache, we don't warn - # about re-downloading when the already downloaded wheel hash does - # not match. This is because the hash must be checked against the - # original link, not the cached link. It that case the already - # downloaded file will be removed and re-fetched from cache (which - # implies a hash check against the cache entry's origin.json). - warn_on_hash_mismatch=not req.is_wheel_from_cache, - ) - - if file_path is not None: - # The file is already available, so mark it as downloaded - self._downloaded[req.link.url] = file_path - else: - # The file is not available, attempt to fetch only metadata - metadata_dist = self._fetch_metadata_only(req) - if metadata_dist is not None: - req.needs_more_preparation = True - return metadata_dist - - # None of the optimizations worked, fully prepare the requirement - return self._prepare_linked_requirement(req, parallel_builds) - - def prepare_linked_requirements_more( - self, reqs: Iterable[InstallRequirement], parallel_builds: bool = False - ) -> None: - """Prepare linked requirements more, if needed.""" - reqs = [req for req in reqs if req.needs_more_preparation] - for req in reqs: - # Determine if any of these requirements were already downloaded. - if self.download_dir is not None and req.link.is_wheel: - hashes = self._get_linked_req_hashes(req) - file_path = _check_download_dir(req.link, self.download_dir, hashes) - if file_path is not None: - self._downloaded[req.link.url] = file_path - req.needs_more_preparation = False - - # Prepare requirements we found were already downloaded for some - # reason. The other downloads will be completed separately. - partially_downloaded_reqs: List[InstallRequirement] = [] - for req in reqs: - if req.needs_more_preparation: - partially_downloaded_reqs.append(req) - else: - self._prepare_linked_requirement(req, parallel_builds) - - # TODO: separate this part out from RequirementPreparer when the v1 - # resolver can be removed! - self._complete_partial_requirements( - partially_downloaded_reqs, - parallel_builds=parallel_builds, - ) - - def _prepare_linked_requirement( - self, req: InstallRequirement, parallel_builds: bool - ) -> BaseDistribution: - assert req.link - link = req.link - - hashes = self._get_linked_req_hashes(req) - - if hashes and req.is_wheel_from_cache: - assert req.download_info is not None - assert link.is_wheel - assert link.is_file - # We need to verify hashes, and we have found the requirement in the cache - # of locally built wheels. - if ( - isinstance(req.download_info.info, ArchiveInfo) - and req.download_info.info.hashes - and hashes.has_one_of(req.download_info.info.hashes) - ): - # At this point we know the requirement was built from a hashable source - # artifact, and we verified that the cache entry's hash of the original - # artifact matches one of the hashes we expect. We don't verify hashes - # against the cached wheel, because the wheel is not the original. - hashes = None - else: - logger.warning( - "The hashes of the source archive found in cache entry " - "don't match, ignoring cached built wheel " - "and re-downloading source." - ) - req.link = req.cached_wheel_source_link - link = req.link - - self._ensure_link_req_src_dir(req, parallel_builds) - - if link.is_existing_dir(): - local_file = None - elif link.url not in self._downloaded: - try: - local_file = unpack_url( - link, - req.source_dir, - self._download, - self.verbosity, - self.download_dir, - hashes, - ) - except NetworkConnectionError as exc: - raise InstallationError( - f"Could not install requirement {req} because of HTTP " - f"error {exc} for URL {link}" - ) - else: - file_path = self._downloaded[link.url] - if hashes: - hashes.check_against_path(file_path) - local_file = File(file_path, content_type=None) - - # If download_info is set, we got it from the wheel cache. - if req.download_info is None: - # Editables don't go through this function (see - # prepare_editable_requirement). - assert not req.editable - req.download_info = direct_url_from_link(link, req.source_dir) - # Make sure we have a hash in download_info. If we got it as part of the - # URL, it will have been verified and we can rely on it. Otherwise we - # compute it from the downloaded file. - # FIXME: https://github.com/pypa/pip/issues/11943 - if ( - isinstance(req.download_info.info, ArchiveInfo) - and not req.download_info.info.hashes - and local_file - ): - hash = hash_file(local_file.path)[0].hexdigest() - # We populate info.hash for backward compatibility. - # This will automatically populate info.hashes. - req.download_info.info.hash = f"sha256={hash}" - - # For use in later processing, - # preserve the file path on the requirement. - if local_file: - req.local_file_path = local_file.path - - dist = _get_prepared_distribution( - req, - self.build_tracker, - self.finder, - self.build_isolation, - self.check_build_deps, - ) - return dist - - def save_linked_requirement(self, req: InstallRequirement) -> None: - assert self.download_dir is not None - assert req.link is not None - link = req.link - if link.is_vcs or (link.is_existing_dir() and req.editable): - # Make a .zip of the source_dir we already created. - req.archive(self.download_dir) - return - - if link.is_existing_dir(): - logger.debug( - "Not copying link to destination directory " - "since it is a directory: %s", - link, - ) - return - if req.local_file_path is None: - # No distribution was downloaded for this requirement. - return - - download_location = os.path.join(self.download_dir, link.filename) - if not os.path.exists(download_location): - shutil.copy(req.local_file_path, download_location) - download_path = display_path(download_location) - logger.info("Saved %s", download_path) - - def prepare_editable_requirement( - self, - req: InstallRequirement, - ) -> BaseDistribution: - """Prepare an editable requirement.""" - assert req.editable, "cannot prepare a non-editable req as editable" - - logger.info("Obtaining %s", req) - - with indent_log(): - if self.require_hashes: - raise InstallationError( - f"The editable requirement {req} cannot be installed when " - "requiring hashes, because there is no single file to " - "hash." - ) - req.ensure_has_source_dir(self.src_dir) - req.update_editable() - assert req.source_dir - req.download_info = direct_url_for_editable(req.unpacked_source_directory) - - dist = _get_prepared_distribution( - req, - self.build_tracker, - self.finder, - self.build_isolation, - self.check_build_deps, - ) - - req.check_if_exists(self.use_user_site) - - return dist - - def prepare_installed_requirement( - self, - req: InstallRequirement, - skip_reason: str, - ) -> BaseDistribution: - """Prepare an already-installed requirement.""" - assert req.satisfied_by, "req should have been satisfied but isn't" - assert skip_reason is not None, ( - "did not get skip reason skipped but req.satisfied_by " - f"is set to {req.satisfied_by}" - ) - logger.info( - "Requirement %s: %s (%s)", skip_reason, req, req.satisfied_by.version - ) - with indent_log(): - if self.require_hashes: - logger.debug( - "Since it is already installed, we are trusting this " - "package without checking its hash. To ensure a " - "completely repeatable environment, install into an " - "empty virtualenv." - ) - return InstalledDistribution(req).get_metadata_distribution() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/pyproject.py b/venv/lib/python3.10/site-packages/pip/_internal/pyproject.py deleted file mode 100644 index 8de36b8..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/pyproject.py +++ /dev/null @@ -1,179 +0,0 @@ -import importlib.util -import os -from collections import namedtuple -from typing import Any, List, Optional - -from pip._vendor import tomli -from pip._vendor.packaging.requirements import InvalidRequirement, Requirement - -from pip._internal.exceptions import ( - InstallationError, - InvalidPyProjectBuildRequires, - MissingPyProjectBuildRequires, -) - - -def _is_list_of_str(obj: Any) -> bool: - return isinstance(obj, list) and all(isinstance(item, str) for item in obj) - - -def make_pyproject_path(unpacked_source_directory: str) -> str: - return os.path.join(unpacked_source_directory, "pyproject.toml") - - -BuildSystemDetails = namedtuple( - "BuildSystemDetails", ["requires", "backend", "check", "backend_path"] -) - - -def load_pyproject_toml( - use_pep517: Optional[bool], pyproject_toml: str, setup_py: str, req_name: str -) -> Optional[BuildSystemDetails]: - """Load the pyproject.toml file. - - Parameters: - use_pep517 - Has the user requested PEP 517 processing? None - means the user hasn't explicitly specified. - pyproject_toml - Location of the project's pyproject.toml file - setup_py - Location of the project's setup.py file - req_name - The name of the requirement we're processing (for - error reporting) - - Returns: - None if we should use the legacy code path, otherwise a tuple - ( - requirements from pyproject.toml, - name of PEP 517 backend, - requirements we should check are installed after setting - up the build environment - directory paths to import the backend from (backend-path), - relative to the project root. - ) - """ - has_pyproject = os.path.isfile(pyproject_toml) - has_setup = os.path.isfile(setup_py) - - if not has_pyproject and not has_setup: - raise InstallationError( - f"{req_name} does not appear to be a Python project: " - f"neither 'setup.py' nor 'pyproject.toml' found." - ) - - if has_pyproject: - with open(pyproject_toml, encoding="utf-8") as f: - pp_toml = tomli.loads(f.read()) - build_system = pp_toml.get("build-system") - else: - build_system = None - - # The following cases must use PEP 517 - # We check for use_pep517 being non-None and falsey because that means - # the user explicitly requested --no-use-pep517. The value 0 as - # opposed to False can occur when the value is provided via an - # environment variable or config file option (due to the quirk of - # strtobool() returning an integer in pip's configuration code). - if has_pyproject and not has_setup: - if use_pep517 is not None and not use_pep517: - raise InstallationError( - "Disabling PEP 517 processing is invalid: " - "project does not have a setup.py" - ) - use_pep517 = True - elif build_system and "build-backend" in build_system: - if use_pep517 is not None and not use_pep517: - raise InstallationError( - "Disabling PEP 517 processing is invalid: " - "project specifies a build backend of {} " - "in pyproject.toml".format(build_system["build-backend"]) - ) - use_pep517 = True - - # If we haven't worked out whether to use PEP 517 yet, - # and the user hasn't explicitly stated a preference, - # we do so if the project has a pyproject.toml file - # or if we cannot import setuptools or wheels. - - # We fallback to PEP 517 when without setuptools or without the wheel package, - # so setuptools can be installed as a default build backend. - # For more info see: - # https://discuss.python.org/t/pip-without-setuptools-could-the-experience-be-improved/11810/9 - # https://github.com/pypa/pip/issues/8559 - elif use_pep517 is None: - use_pep517 = ( - has_pyproject - or not importlib.util.find_spec("setuptools") - or not importlib.util.find_spec("wheel") - ) - - # At this point, we know whether we're going to use PEP 517. - assert use_pep517 is not None - - # If we're using the legacy code path, there is nothing further - # for us to do here. - if not use_pep517: - return None - - if build_system is None: - # Either the user has a pyproject.toml with no build-system - # section, or the user has no pyproject.toml, but has opted in - # explicitly via --use-pep517. - # In the absence of any explicit backend specification, we - # assume the setuptools backend that most closely emulates the - # traditional direct setup.py execution, and require wheel and - # a version of setuptools that supports that backend. - - build_system = { - "requires": ["setuptools>=40.8.0"], - "build-backend": "setuptools.build_meta:__legacy__", - } - - # If we're using PEP 517, we have build system information (either - # from pyproject.toml, or defaulted by the code above). - # Note that at this point, we do not know if the user has actually - # specified a backend, though. - assert build_system is not None - - # Ensure that the build-system section in pyproject.toml conforms - # to PEP 518. - - # Specifying the build-system table but not the requires key is invalid - if "requires" not in build_system: - raise MissingPyProjectBuildRequires(package=req_name) - - # Error out if requires is not a list of strings - requires = build_system["requires"] - if not _is_list_of_str(requires): - raise InvalidPyProjectBuildRequires( - package=req_name, - reason="It is not a list of strings.", - ) - - # Each requirement must be valid as per PEP 508 - for requirement in requires: - try: - Requirement(requirement) - except InvalidRequirement as error: - raise InvalidPyProjectBuildRequires( - package=req_name, - reason=f"It contains an invalid requirement: {requirement!r}", - ) from error - - backend = build_system.get("build-backend") - backend_path = build_system.get("backend-path", []) - check: List[str] = [] - if backend is None: - # If the user didn't specify a backend, we assume they want to use - # the setuptools backend. But we can't be sure they have included - # a version of setuptools which supplies the backend. So we - # make a note to check that this requirement is present once - # we have set up the environment. - # This is quite a lot of work to check for a very specific case. But - # the problem is, that case is potentially quite common - projects that - # adopted PEP 518 early for the ability to specify requirements to - # execute setup.py, but never considered needing to mention the build - # tools themselves. The original PEP 518 code had a similar check (but - # implemented in a different way). - backend = "setuptools.build_meta:__legacy__" - check = ["setuptools>=40.8.0"] - - return BuildSystemDetails(requires, backend, check, backend_path) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py deleted file mode 100644 index 16de903..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py +++ /dev/null @@ -1,92 +0,0 @@ -import collections -import logging -from typing import Generator, List, Optional, Sequence, Tuple - -from pip._internal.utils.logging import indent_log - -from .req_file import parse_requirements -from .req_install import InstallRequirement -from .req_set import RequirementSet - -__all__ = [ - "RequirementSet", - "InstallRequirement", - "parse_requirements", - "install_given_reqs", -] - -logger = logging.getLogger(__name__) - - -class InstallationResult: - def __init__(self, name: str) -> None: - self.name = name - - def __repr__(self) -> str: - return f"InstallationResult(name={self.name!r})" - - -def _validate_requirements( - requirements: List[InstallRequirement], -) -> Generator[Tuple[str, InstallRequirement], None, None]: - for req in requirements: - assert req.name, f"invalid to-be-installed requirement: {req}" - yield req.name, req - - -def install_given_reqs( - requirements: List[InstallRequirement], - global_options: Sequence[str], - root: Optional[str], - home: Optional[str], - prefix: Optional[str], - warn_script_location: bool, - use_user_site: bool, - pycompile: bool, -) -> List[InstallationResult]: - """ - Install everything in the given list. - - (to be called after having downloaded and unpacked the packages) - """ - to_install = collections.OrderedDict(_validate_requirements(requirements)) - - if to_install: - logger.info( - "Installing collected packages: %s", - ", ".join(to_install.keys()), - ) - - installed = [] - - with indent_log(): - for req_name, requirement in to_install.items(): - if requirement.should_reinstall: - logger.info("Attempting uninstall: %s", req_name) - with indent_log(): - uninstalled_pathset = requirement.uninstall(auto_confirm=True) - else: - uninstalled_pathset = None - - try: - requirement.install( - global_options, - root=root, - home=home, - prefix=prefix, - warn_script_location=warn_script_location, - use_user_site=use_user_site, - pycompile=pycompile, - ) - except Exception: - # if install did not succeed, rollback previous uninstall - if uninstalled_pathset and not requirement.install_succeeded: - uninstalled_pathset.rollback() - raise - else: - if uninstalled_pathset and requirement.install_succeeded: - uninstalled_pathset.commit() - - installed.append(InstallationResult(req_name)) - - return installed diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4a0af870f850768d5a54e004fc9e4a17d12057d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 zcmaJC%Wf1$u)Ak=c6Rn*ds%}W2w9R4u@ZPexkM-rqJU5$WF(A&SS1>br+e39=H;GV zgRQYdFjtfhKuC6OT=O}7Oq2tcToVX^RLwrJBuaYJHC@%!)%EVAUUvwLhxA7OM_B!g z$m}=*$R(KBuK+mVG$g&zpY|x=EM$?7@-|idKFlkyc9Z7 zwO1|HR#=Pby?U`OhmB~iH%G~UaQg?^n-}z8K{O9(@5oicE8KZVxU)V3&R_KlY!cpLDz)pn6e5&B*sZr z0O)2gI_3_7Z4sl;%m?}#!vyRS%T5#;Gtk;|6#OA_8`roC%}PxW&tWmAC;` z+f%hXH1USWhN04C>_tLbQmCPfSA7OjCj-|wzkr#cmO0Id3kd+i=;~7{8$jzYZDu0u z7syj0n?QTvcQ=wqbO*!0mx(Ww3c7bb%DR~^y)=ji=hB2{T`+OG8wTs$bVqF@@rNrH z&UdpwiF2vv-|+?_>!v~4b%R(52?6PXJGw5QfpXoIbVu709;%Fm97PW}H1iZyBq*OaGR22EFyk3)+$MaHK=!0{jY_M*yn|6_X;B zuDc9ap;+U;6dUn%EIfmvT~|A<8zp=g;=1O#TSG4#?--eqvV|9-#WS~}&m~?h>i`yE zW)=XOG-=Z)Xu1a8n`Wq-gWWg0f!@Q+!gR~d1Ne^QpG0X83f~67lYu_PLM<|-1$m>$0aYv~`}C0R*|{xS z$~Z8gW3hu$ZXZ~O{h;sQ_ySb4blA2lHwnchEkF@5xy$ z^2!5 z60Z++-rn%G@d!`u#$n=dq{qBHjIk#Gf^sJ9p;HLiJvF`&kNF9R@)a;nm@c+YXS?id zdw1z`r9=cN0&K&0oSV3N6FPIv8>+cOc%fjo=i5cM-gY;C%p{rml`} zfUGJ56#R1Ft5Hf?@Inj(yeUE4Pqew21hF>nh@DK9;k+(Ewndqq&o+`_$e~$` z)zOuyX1YA3UAgCrBDM9xnC50f-xmVBqiqQ$uY+^61-TmqN?TrDa6CQqX3 z|7(+WzyZ@M$BRO~*eW`cuFh1kJ~CBQa5weTMkdrh>R8s`($g@rRRE1SlbMv!8kDVB zve`VfU~NMgpLosgn+7X(8E{NK=XtH-FdOlgj%Cw%#(r^LnKJmR;CZi%1{MiwlY3Fii{0Lx_#&XqX!vno_M8r zr*#=AXe@RFU3OhaUTD;nfl$|qn9E~$-5CVfIOJOhiauqoCrManKI5rr>(=(iqqhGk zzD(I=05-Ad30hoBeK8 H8o&JojL(!d diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc deleted file mode 100644 index 28b4cf57c7306132b48ced9744901d24836d6a3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14162 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 OyR)-me%ROa=l=u1b5eo; diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc deleted file mode 100644 index 3fec98bed726cab25fed7e92b19130fa6d7002be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14000 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc deleted file mode 100644 index d5b5593ade6970e2daf0032854f184a26e9d529c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24519 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 aeGjfv-eU?3&#ECcukjkg4}Fy{+y4cBMlLx3 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc deleted file mode 100644 index d5b8f45b29908a2d11bd7f9475e52f0d689e76ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19237 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≧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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py b/venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py deleted file mode 100644 index 7e2d0e5..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py +++ /dev/null @@ -1,576 +0,0 @@ -"""Backing implementation for InstallRequirement's various constructors - -The idea here is that these formed a major chunk of InstallRequirement's size -so, moving them and support code dedicated to them outside of that class -helps creates for better understandability for the rest of the code. - -These are meant to be used elsewhere within pip to create instances of -InstallRequirement. -""" - -import copy -import logging -import os -import re -from typing import Collection, Dict, List, Optional, Set, Tuple, Union - -from pip._vendor.packaging.markers import Marker -from pip._vendor.packaging.requirements import InvalidRequirement, Requirement -from pip._vendor.packaging.specifiers import Specifier - -from pip._internal.exceptions import InstallationError -from pip._internal.models.index import PyPI, TestPyPI -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.req.req_file import ParsedRequirement -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.filetypes import is_archive_file -from pip._internal.utils.misc import is_installable_dir -from pip._internal.utils.packaging import get_requirement -from pip._internal.utils.urls import path_to_url -from pip._internal.vcs import is_url, vcs - -__all__ = [ - "install_req_from_editable", - "install_req_from_line", - "parse_editable", -] - -logger = logging.getLogger(__name__) -operators = Specifier._operators.keys() - - -def _strip_extras(path: str) -> Tuple[str, Optional[str]]: - m = re.match(r"^(.+)(\[[^\]]+\])$", path) - extras = None - if m: - path_no_extras = m.group(1) - extras = m.group(2) - else: - path_no_extras = path - - return path_no_extras, extras - - -def convert_extras(extras: Optional[str]) -> Set[str]: - if not extras: - return set() - return get_requirement("placeholder" + extras.lower()).extras - - -def _set_requirement_extras(req: Requirement, new_extras: Set[str]) -> Requirement: - """ - Returns a new requirement based on the given one, with the supplied extras. If the - given requirement already has extras those are replaced (or dropped if no new extras - are given). - """ - match: Optional[re.Match[str]] = re.fullmatch( - # see https://peps.python.org/pep-0508/#complete-grammar - r"([\w\t .-]+)(\[[^\]]*\])?(.*)", - str(req), - flags=re.ASCII, - ) - # ireq.req is a valid requirement so the regex should always match - assert ( - match is not None - ), f"regex match on requirement {req} failed, this should never happen" - pre: Optional[str] = match.group(1) - post: Optional[str] = match.group(3) - assert ( - pre is not None and post is not None - ), f"regex group selection for requirement {req} failed, this should never happen" - extras: str = "[%s]" % ",".join(sorted(new_extras)) if new_extras else "" - return Requirement(f"{pre}{extras}{post}") - - -def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: - """Parses an editable requirement into: - - a requirement name - - an URL - - extras - - editable options - Accepted requirements: - svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir - .[some_extra] - """ - - url = editable_req - - # If a file path is specified with extras, strip off the extras. - url_no_extras, extras = _strip_extras(url) - - if os.path.isdir(url_no_extras): - # Treating it as code that has already been checked out - url_no_extras = path_to_url(url_no_extras) - - if url_no_extras.lower().startswith("file:"): - package_name = Link(url_no_extras).egg_fragment - if extras: - return ( - package_name, - url_no_extras, - get_requirement("placeholder" + extras.lower()).extras, - ) - else: - return package_name, url_no_extras, set() - - for version_control in vcs: - if url.lower().startswith(f"{version_control}:"): - url = f"{version_control}+{url}" - break - - link = Link(url) - - if not link.is_vcs: - backends = ", ".join(vcs.all_schemes) - raise InstallationError( - f"{editable_req} is not a valid editable requirement. " - f"It should either be a path to a local project or a VCS URL " - f"(beginning with {backends})." - ) - - package_name = link.egg_fragment - if not package_name: - raise InstallationError( - "Could not detect requirement name for '{}', please specify one " - "with #egg=your_package_name".format(editable_req) - ) - return package_name, url, set() - - -def check_first_requirement_in_file(filename: str) -> None: - """Check if file is parsable as a requirements file. - - This is heavily based on ``pkg_resources.parse_requirements``, but - simplified to just check the first meaningful line. - - :raises InvalidRequirement: If the first meaningful line cannot be parsed - as an requirement. - """ - with open(filename, encoding="utf-8", errors="ignore") as f: - # Create a steppable iterator, so we can handle \-continuations. - lines = ( - line - for line in (line.strip() for line in f) - if line and not line.startswith("#") # Skip blank lines/comments. - ) - - for line in lines: - # Drop comments -- a hash without a space may be in a URL. - if " #" in line: - line = line[: line.find(" #")] - # If there is a line continuation, drop it, and append the next line. - if line.endswith("\\"): - line = line[:-2].strip() + next(lines, "") - Requirement(line) - return - - -def deduce_helpful_msg(req: str) -> str: - """Returns helpful msg in case requirements file does not exist, - or cannot be parsed. - - :params req: Requirements file path - """ - if not os.path.exists(req): - return f" File '{req}' does not exist." - msg = " The path does exist. " - # Try to parse and check if it is a requirements file. - try: - check_first_requirement_in_file(req) - except InvalidRequirement: - logger.debug("Cannot parse '%s' as requirements file", req) - else: - msg += ( - f"The argument you provided " - f"({req}) appears to be a" - f" requirements file. If that is the" - f" case, use the '-r' flag to install" - f" the packages specified within it." - ) - return msg - - -class RequirementParts: - def __init__( - self, - requirement: Optional[Requirement], - link: Optional[Link], - markers: Optional[Marker], - extras: Set[str], - ): - self.requirement = requirement - self.link = link - self.markers = markers - self.extras = extras - - -def parse_req_from_editable(editable_req: str) -> RequirementParts: - name, url, extras_override = parse_editable(editable_req) - - if name is not None: - try: - req: Optional[Requirement] = Requirement(name) - except InvalidRequirement: - raise InstallationError(f"Invalid requirement: '{name}'") - else: - req = None - - link = Link(url) - - return RequirementParts(req, link, None, extras_override) - - -# ---- The actual constructors follow ---- - - -def install_req_from_editable( - editable_req: str, - comes_from: Optional[Union[InstallRequirement, str]] = None, - *, - use_pep517: Optional[bool] = None, - isolated: bool = False, - global_options: Optional[List[str]] = None, - hash_options: Optional[Dict[str, List[str]]] = None, - constraint: bool = False, - user_supplied: bool = False, - permit_editable_wheels: bool = False, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, -) -> InstallRequirement: - parts = parse_req_from_editable(editable_req) - - return InstallRequirement( - parts.requirement, - comes_from=comes_from, - user_supplied=user_supplied, - editable=True, - permit_editable_wheels=permit_editable_wheels, - link=parts.link, - constraint=constraint, - use_pep517=use_pep517, - isolated=isolated, - global_options=global_options, - hash_options=hash_options, - config_settings=config_settings, - extras=parts.extras, - ) - - -def _looks_like_path(name: str) -> bool: - """Checks whether the string "looks like" a path on the filesystem. - - This does not check whether the target actually exists, only judge from the - appearance. - - Returns true if any of the following conditions is true: - * a path separator is found (either os.path.sep or os.path.altsep); - * a dot is found (which represents the current directory). - """ - if os.path.sep in name: - return True - if os.path.altsep is not None and os.path.altsep in name: - return True - if name.startswith("."): - return True - return False - - -def _get_url_from_path(path: str, name: str) -> Optional[str]: - """ - First, it checks whether a provided path is an installable directory. If it - is, returns the path. - - If false, check if the path is an archive file (such as a .whl). - The function checks if the path is a file. If false, if the path has - an @, it will treat it as a PEP 440 URL requirement and return the path. - """ - if _looks_like_path(name) and os.path.isdir(path): - if is_installable_dir(path): - return path_to_url(path) - # TODO: The is_installable_dir test here might not be necessary - # now that it is done in load_pyproject_toml too. - raise InstallationError( - f"Directory {name!r} is not installable. Neither 'setup.py' " - "nor 'pyproject.toml' found." - ) - if not is_archive_file(path): - return None - if os.path.isfile(path): - return path_to_url(path) - urlreq_parts = name.split("@", 1) - if len(urlreq_parts) >= 2 and not _looks_like_path(urlreq_parts[0]): - # If the path contains '@' and the part before it does not look - # like a path, try to treat it as a PEP 440 URL req instead. - return None - logger.warning( - "Requirement %r looks like a filename, but the file does not exist", - name, - ) - return path_to_url(path) - - -def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementParts: - if is_url(name): - marker_sep = "; " - else: - marker_sep = ";" - if marker_sep in name: - name, markers_as_string = name.split(marker_sep, 1) - markers_as_string = markers_as_string.strip() - if not markers_as_string: - markers = None - else: - markers = Marker(markers_as_string) - else: - markers = None - name = name.strip() - req_as_string = None - path = os.path.normpath(os.path.abspath(name)) - link = None - extras_as_string = None - - if is_url(name): - link = Link(name) - else: - p, extras_as_string = _strip_extras(path) - url = _get_url_from_path(p, name) - if url is not None: - link = Link(url) - - # it's a local file, dir, or url - if link: - # Handle relative file URLs - if link.scheme == "file" and re.search(r"\.\./", link.url): - link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) - # wheel file - if link.is_wheel: - wheel = Wheel(link.filename) # can raise InvalidWheelFilename - req_as_string = f"{wheel.name}=={wheel.version}" - else: - # set the req to the egg fragment. when it's not there, this - # will become an 'unnamed' requirement - req_as_string = link.egg_fragment - - # a requirement specifier - else: - req_as_string = name - - extras = convert_extras(extras_as_string) - - def with_source(text: str) -> str: - if not line_source: - return text - return f"{text} (from {line_source})" - - def _parse_req_string(req_as_string: str) -> Requirement: - try: - req = get_requirement(req_as_string) - except InvalidRequirement: - if os.path.sep in req_as_string: - add_msg = "It looks like a path." - add_msg += deduce_helpful_msg(req_as_string) - elif "=" in req_as_string and not any( - op in req_as_string for op in operators - ): - add_msg = "= is not a valid operator. Did you mean == ?" - else: - add_msg = "" - msg = with_source(f"Invalid requirement: {req_as_string!r}") - if add_msg: - msg += f"\nHint: {add_msg}" - raise InstallationError(msg) - else: - # Deprecate extras after specifiers: "name>=1.0[extras]" - # This currently works by accident because _strip_extras() parses - # any extras in the end of the string and those are saved in - # RequirementParts - for spec in req.specifier: - spec_str = str(spec) - if spec_str.endswith("]"): - msg = f"Extras after version '{spec_str}'." - raise InstallationError(msg) - return req - - if req_as_string is not None: - req: Optional[Requirement] = _parse_req_string(req_as_string) - else: - req = None - - return RequirementParts(req, link, markers, extras) - - -def install_req_from_line( - name: str, - comes_from: Optional[Union[str, InstallRequirement]] = None, - *, - use_pep517: Optional[bool] = None, - isolated: bool = False, - global_options: Optional[List[str]] = None, - hash_options: Optional[Dict[str, List[str]]] = None, - constraint: bool = False, - line_source: Optional[str] = None, - user_supplied: bool = False, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, -) -> InstallRequirement: - """Creates an InstallRequirement from a name, which might be a - requirement, directory containing 'setup.py', filename, or URL. - - :param line_source: An optional string describing where the line is from, - for logging purposes in case of an error. - """ - parts = parse_req_from_line(name, line_source) - - return InstallRequirement( - parts.requirement, - comes_from, - link=parts.link, - markers=parts.markers, - use_pep517=use_pep517, - isolated=isolated, - global_options=global_options, - hash_options=hash_options, - config_settings=config_settings, - constraint=constraint, - extras=parts.extras, - user_supplied=user_supplied, - ) - - -def install_req_from_req_string( - req_string: str, - comes_from: Optional[InstallRequirement] = None, - isolated: bool = False, - use_pep517: Optional[bool] = None, - user_supplied: bool = False, -) -> InstallRequirement: - try: - req = get_requirement(req_string) - except InvalidRequirement: - raise InstallationError(f"Invalid requirement: '{req_string}'") - - domains_not_allowed = [ - PyPI.file_storage_domain, - TestPyPI.file_storage_domain, - ] - if ( - req.url - and comes_from - and comes_from.link - and comes_from.link.netloc in domains_not_allowed - ): - # Explicitly disallow pypi packages that depend on external urls - raise InstallationError( - "Packages installed from PyPI cannot depend on packages " - "which are not also hosted on PyPI.\n" - f"{comes_from.name} depends on {req} " - ) - - return InstallRequirement( - req, - comes_from, - isolated=isolated, - use_pep517=use_pep517, - user_supplied=user_supplied, - ) - - -def install_req_from_parsed_requirement( - parsed_req: ParsedRequirement, - isolated: bool = False, - use_pep517: Optional[bool] = None, - user_supplied: bool = False, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, -) -> InstallRequirement: - if parsed_req.is_editable: - req = install_req_from_editable( - parsed_req.requirement, - comes_from=parsed_req.comes_from, - use_pep517=use_pep517, - constraint=parsed_req.constraint, - isolated=isolated, - user_supplied=user_supplied, - config_settings=config_settings, - ) - - else: - req = install_req_from_line( - parsed_req.requirement, - comes_from=parsed_req.comes_from, - use_pep517=use_pep517, - isolated=isolated, - global_options=( - parsed_req.options.get("global_options", []) - if parsed_req.options - else [] - ), - hash_options=( - parsed_req.options.get("hashes", {}) if parsed_req.options else {} - ), - constraint=parsed_req.constraint, - line_source=parsed_req.line_source, - user_supplied=user_supplied, - config_settings=config_settings, - ) - return req - - -def install_req_from_link_and_ireq( - link: Link, ireq: InstallRequirement -) -> InstallRequirement: - return InstallRequirement( - req=ireq.req, - comes_from=ireq.comes_from, - editable=ireq.editable, - link=link, - markers=ireq.markers, - use_pep517=ireq.use_pep517, - isolated=ireq.isolated, - global_options=ireq.global_options, - hash_options=ireq.hash_options, - config_settings=ireq.config_settings, - user_supplied=ireq.user_supplied, - ) - - -def install_req_drop_extras(ireq: InstallRequirement) -> InstallRequirement: - """ - Creates a new InstallationRequirement using the given template but without - any extras. Sets the original requirement as the new one's parent - (comes_from). - """ - return InstallRequirement( - req=( - _set_requirement_extras(ireq.req, set()) if ireq.req is not None else None - ), - comes_from=ireq, - editable=ireq.editable, - link=ireq.link, - markers=ireq.markers, - use_pep517=ireq.use_pep517, - isolated=ireq.isolated, - global_options=ireq.global_options, - hash_options=ireq.hash_options, - constraint=ireq.constraint, - extras=[], - config_settings=ireq.config_settings, - user_supplied=ireq.user_supplied, - permit_editable_wheels=ireq.permit_editable_wheels, - ) - - -def install_req_extend_extras( - ireq: InstallRequirement, - extras: Collection[str], -) -> InstallRequirement: - """ - Returns a copy of an installation requirement with some additional extras. - Makes a shallow copy of the ireq object. - """ - result = copy.copy(ireq) - result.extras = {*ireq.extras, *extras} - result.req = ( - _set_requirement_extras(ireq.req, result.extras) - if ireq.req is not None - else None - ) - return result diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py b/venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py deleted file mode 100644 index 1ef3d5e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py +++ /dev/null @@ -1,554 +0,0 @@ -""" -Requirements file parsing -""" - -import logging -import optparse -import os -import re -import shlex -import urllib.parse -from optparse import Values -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Dict, - Generator, - Iterable, - List, - Optional, - Tuple, -) - -from pip._internal.cli import cmdoptions -from pip._internal.exceptions import InstallationError, RequirementsFileParseError -from pip._internal.models.search_scope import SearchScope -from pip._internal.network.session import PipSession -from pip._internal.network.utils import raise_for_status -from pip._internal.utils.encoding import auto_decode -from pip._internal.utils.urls import get_url_scheme - -if TYPE_CHECKING: - # NoReturn introduced in 3.6.2; imported only for type checking to maintain - # pip compatibility with older patch versions of Python 3.6 - from typing import NoReturn - - from pip._internal.index.package_finder import PackageFinder - -__all__ = ["parse_requirements"] - -ReqFileLines = Iterable[Tuple[int, str]] - -LineParser = Callable[[str], Tuple[str, Values]] - -SCHEME_RE = re.compile(r"^(http|https|file):", re.I) -COMMENT_RE = re.compile(r"(^|\s+)#.*$") - -# Matches environment variable-style values in '${MY_VARIABLE_1}' with the -# variable name consisting of only uppercase letters, digits or the '_' -# (underscore). This follows the POSIX standard defined in IEEE Std 1003.1, -# 2013 Edition. -ENV_VAR_RE = re.compile(r"(?P\$\{(?P[A-Z0-9_]+)\})") - -SUPPORTED_OPTIONS: List[Callable[..., optparse.Option]] = [ - cmdoptions.index_url, - cmdoptions.extra_index_url, - cmdoptions.no_index, - cmdoptions.constraints, - cmdoptions.requirements, - cmdoptions.editable, - cmdoptions.find_links, - cmdoptions.no_binary, - cmdoptions.only_binary, - cmdoptions.prefer_binary, - cmdoptions.require_hashes, - cmdoptions.pre, - cmdoptions.trusted_host, - cmdoptions.use_new_feature, -] - -# options to be passed to requirements -SUPPORTED_OPTIONS_REQ: List[Callable[..., optparse.Option]] = [ - cmdoptions.global_options, - cmdoptions.hash, - cmdoptions.config_settings, -] - -SUPPORTED_OPTIONS_EDITABLE_REQ: List[Callable[..., optparse.Option]] = [ - cmdoptions.config_settings, -] - - -# the 'dest' string values -SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] -SUPPORTED_OPTIONS_EDITABLE_REQ_DEST = [ - str(o().dest) for o in SUPPORTED_OPTIONS_EDITABLE_REQ -] - -logger = logging.getLogger(__name__) - - -class ParsedRequirement: - def __init__( - self, - requirement: str, - is_editable: bool, - comes_from: str, - constraint: bool, - options: Optional[Dict[str, Any]] = None, - line_source: Optional[str] = None, - ) -> None: - self.requirement = requirement - self.is_editable = is_editable - self.comes_from = comes_from - self.options = options - self.constraint = constraint - self.line_source = line_source - - -class ParsedLine: - def __init__( - self, - filename: str, - lineno: int, - args: str, - opts: Values, - constraint: bool, - ) -> None: - self.filename = filename - self.lineno = lineno - self.opts = opts - self.constraint = constraint - - if args: - self.is_requirement = True - self.is_editable = False - self.requirement = args - elif opts.editables: - self.is_requirement = True - self.is_editable = True - # We don't support multiple -e on one line - self.requirement = opts.editables[0] - else: - self.is_requirement = False - - -def parse_requirements( - filename: str, - session: PipSession, - finder: Optional["PackageFinder"] = None, - options: Optional[optparse.Values] = None, - constraint: bool = False, -) -> Generator[ParsedRequirement, None, None]: - """Parse a requirements file and yield ParsedRequirement instances. - - :param filename: Path or url of requirements file. - :param session: PipSession instance. - :param finder: Instance of pip.index.PackageFinder. - :param options: cli options. - :param constraint: If true, parsing a constraint file rather than - requirements file. - """ - line_parser = get_line_parser(finder) - parser = RequirementsFileParser(session, line_parser) - - for parsed_line in parser.parse(filename, constraint): - parsed_req = handle_line( - parsed_line, options=options, finder=finder, session=session - ) - if parsed_req is not None: - yield parsed_req - - -def preprocess(content: str) -> ReqFileLines: - """Split, filter, and join lines, and return a line iterator - - :param content: the content of the requirements file - """ - lines_enum: ReqFileLines = enumerate(content.splitlines(), start=1) - lines_enum = join_lines(lines_enum) - lines_enum = ignore_comments(lines_enum) - lines_enum = expand_env_variables(lines_enum) - return lines_enum - - -def handle_requirement_line( - line: ParsedLine, - options: Optional[optparse.Values] = None, -) -> ParsedRequirement: - # preserve for the nested code path - line_comes_from = "{} {} (line {})".format( - "-c" if line.constraint else "-r", - line.filename, - line.lineno, - ) - - assert line.is_requirement - - # get the options that apply to requirements - if line.is_editable: - supported_dest = SUPPORTED_OPTIONS_EDITABLE_REQ_DEST - else: - supported_dest = SUPPORTED_OPTIONS_REQ_DEST - req_options = {} - for dest in supported_dest: - if dest in line.opts.__dict__ and line.opts.__dict__[dest]: - req_options[dest] = line.opts.__dict__[dest] - - line_source = f"line {line.lineno} of {line.filename}" - return ParsedRequirement( - requirement=line.requirement, - is_editable=line.is_editable, - comes_from=line_comes_from, - constraint=line.constraint, - options=req_options, - line_source=line_source, - ) - - -def handle_option_line( - opts: Values, - filename: str, - lineno: int, - finder: Optional["PackageFinder"] = None, - options: Optional[optparse.Values] = None, - session: Optional[PipSession] = None, -) -> None: - if opts.hashes: - logger.warning( - "%s line %s has --hash but no requirement, and will be ignored.", - filename, - lineno, - ) - - if options: - # percolate options upward - if opts.require_hashes: - options.require_hashes = opts.require_hashes - if opts.features_enabled: - options.features_enabled.extend( - f for f in opts.features_enabled if f not in options.features_enabled - ) - - # set finder options - if finder: - find_links = finder.find_links - index_urls = finder.index_urls - no_index = finder.search_scope.no_index - if opts.no_index is True: - no_index = True - index_urls = [] - if opts.index_url and not no_index: - index_urls = [opts.index_url] - if opts.extra_index_urls and not no_index: - index_urls.extend(opts.extra_index_urls) - if opts.find_links: - # FIXME: it would be nice to keep track of the source - # of the find_links: support a find-links local path - # relative to a requirements file. - value = opts.find_links[0] - req_dir = os.path.dirname(os.path.abspath(filename)) - relative_to_reqs_file = os.path.join(req_dir, value) - if os.path.exists(relative_to_reqs_file): - value = relative_to_reqs_file - find_links.append(value) - - if session: - # We need to update the auth urls in session - session.update_index_urls(index_urls) - - search_scope = SearchScope( - find_links=find_links, - index_urls=index_urls, - no_index=no_index, - ) - finder.search_scope = search_scope - - if opts.pre: - finder.set_allow_all_prereleases() - - if opts.prefer_binary: - finder.set_prefer_binary() - - if session: - for host in opts.trusted_hosts or []: - source = f"line {lineno} of {filename}" - session.add_trusted_host(host, source=source) - - -def handle_line( - line: ParsedLine, - options: Optional[optparse.Values] = None, - finder: Optional["PackageFinder"] = None, - session: Optional[PipSession] = None, -) -> Optional[ParsedRequirement]: - """Handle a single parsed requirements line; This can result in - creating/yielding requirements, or updating the finder. - - :param line: The parsed line to be processed. - :param options: CLI options. - :param finder: The finder - updated by non-requirement lines. - :param session: The session - updated by non-requirement lines. - - Returns a ParsedRequirement object if the line is a requirement line, - otherwise returns None. - - For lines that contain requirements, the only options that have an effect - are from SUPPORTED_OPTIONS_REQ, and they are scoped to the - requirement. Other options from SUPPORTED_OPTIONS may be present, but are - ignored. - - For lines that do not contain requirements, the only options that have an - effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may - be present, but are ignored. These lines may contain multiple options - (although our docs imply only one is supported), and all our parsed and - affect the finder. - """ - - if line.is_requirement: - parsed_req = handle_requirement_line(line, options) - return parsed_req - else: - handle_option_line( - line.opts, - line.filename, - line.lineno, - finder, - options, - session, - ) - return None - - -class RequirementsFileParser: - def __init__( - self, - session: PipSession, - line_parser: LineParser, - ) -> None: - self._session = session - self._line_parser = line_parser - - def parse( - self, filename: str, constraint: bool - ) -> Generator[ParsedLine, None, None]: - """Parse a given file, yielding parsed lines.""" - yield from self._parse_and_recurse(filename, constraint) - - def _parse_and_recurse( - self, filename: str, constraint: bool - ) -> Generator[ParsedLine, None, None]: - for line in self._parse_file(filename, constraint): - if not line.is_requirement and ( - line.opts.requirements or line.opts.constraints - ): - # parse a nested requirements file - if line.opts.requirements: - req_path = line.opts.requirements[0] - nested_constraint = False - else: - req_path = line.opts.constraints[0] - nested_constraint = True - - # original file is over http - if SCHEME_RE.search(filename): - # do a url join so relative paths work - req_path = urllib.parse.urljoin(filename, req_path) - # original file and nested file are paths - elif not SCHEME_RE.search(req_path): - # do a join so relative paths work - req_path = os.path.join( - os.path.dirname(filename), - req_path, - ) - - yield from self._parse_and_recurse(req_path, nested_constraint) - else: - yield line - - def _parse_file( - self, filename: str, constraint: bool - ) -> Generator[ParsedLine, None, None]: - _, content = get_file_content(filename, self._session) - - lines_enum = preprocess(content) - - for line_number, line in lines_enum: - try: - args_str, opts = self._line_parser(line) - except OptionParsingError as e: - # add offending line - msg = f"Invalid requirement: {line}\n{e.msg}" - raise RequirementsFileParseError(msg) - - yield ParsedLine( - filename, - line_number, - args_str, - opts, - constraint, - ) - - -def get_line_parser(finder: Optional["PackageFinder"]) -> LineParser: - def parse_line(line: str) -> Tuple[str, Values]: - # Build new parser for each line since it accumulates appendable - # options. - parser = build_parser() - defaults = parser.get_default_values() - defaults.index_url = None - if finder: - defaults.format_control = finder.format_control - - args_str, options_str = break_args_options(line) - - try: - options = shlex.split(options_str) - except ValueError as e: - raise OptionParsingError(f"Could not split options: {options_str}") from e - - opts, _ = parser.parse_args(options, defaults) - - return args_str, opts - - return parse_line - - -def break_args_options(line: str) -> Tuple[str, str]: - """Break up the line into an args and options string. We only want to shlex - (and then optparse) the options, not the args. args can contain markers - which are corrupted by shlex. - """ - tokens = line.split(" ") - args = [] - options = tokens[:] - for token in tokens: - if token.startswith("-") or token.startswith("--"): - break - else: - args.append(token) - options.pop(0) - return " ".join(args), " ".join(options) - - -class OptionParsingError(Exception): - def __init__(self, msg: str) -> None: - self.msg = msg - - -def build_parser() -> optparse.OptionParser: - """ - Return a parser for parsing requirement lines - """ - parser = optparse.OptionParser(add_help_option=False) - - option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ - for option_factory in option_factories: - option = option_factory() - parser.add_option(option) - - # By default optparse sys.exits on parsing errors. We want to wrap - # that in our own exception. - def parser_exit(self: Any, msg: str) -> "NoReturn": - raise OptionParsingError(msg) - - # NOTE: mypy disallows assigning to a method - # https://github.com/python/mypy/issues/2427 - parser.exit = parser_exit # type: ignore - - return parser - - -def join_lines(lines_enum: ReqFileLines) -> ReqFileLines: - """Joins a line ending in '\' with the previous line (except when following - comments). The joined line takes on the index of the first line. - """ - primary_line_number = None - new_line: List[str] = [] - for line_number, line in lines_enum: - if not line.endswith("\\") or COMMENT_RE.match(line): - if COMMENT_RE.match(line): - # this ensures comments are always matched later - line = " " + line - if new_line: - new_line.append(line) - assert primary_line_number is not None - yield primary_line_number, "".join(new_line) - new_line = [] - else: - yield line_number, line - else: - if not new_line: - primary_line_number = line_number - new_line.append(line.strip("\\")) - - # last line contains \ - if new_line: - assert primary_line_number is not None - yield primary_line_number, "".join(new_line) - - # TODO: handle space after '\'. - - -def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines: - """ - Strips comments and filter empty lines. - """ - for line_number, line in lines_enum: - line = COMMENT_RE.sub("", line) - line = line.strip() - if line: - yield line_number, line - - -def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines: - """Replace all environment variables that can be retrieved via `os.getenv`. - - The only allowed format for environment variables defined in the - requirement file is `${MY_VARIABLE_1}` to ensure two things: - - 1. Strings that contain a `$` aren't accidentally (partially) expanded. - 2. Ensure consistency across platforms for requirement files. - - These points are the result of a discussion on the `github pull - request #3514 `_. - - Valid characters in variable names follow the `POSIX standard - `_ and are limited - to uppercase letter, digits and the `_` (underscore). - """ - for line_number, line in lines_enum: - for env_var, var_name in ENV_VAR_RE.findall(line): - value = os.getenv(var_name) - if not value: - continue - - line = line.replace(env_var, value) - - yield line_number, line - - -def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: - """Gets the content of a file; it may be a filename, file: URL, or - http: URL. Returns (location, content). Content is unicode. - Respects # -*- coding: declarations on the retrieved files. - - :param url: File path or url. - :param session: PipSession instance. - """ - scheme = get_url_scheme(url) - - # Pip has special support for file:// URLs (LocalFSAdapter). - if scheme in ["http", "https", "file"]: - resp = session.get(url) - raise_for_status(resp) - return resp.url, resp.text - - # Assume this is a bare path. - try: - with open(url, "rb") as f: - content = auto_decode(f.read()) - except OSError as exc: - raise InstallationError(f"Could not open requirements file: {exc}") - return url, content diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py b/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py deleted file mode 100644 index a65611c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py +++ /dev/null @@ -1,923 +0,0 @@ -import functools -import logging -import os -import shutil -import sys -import uuid -import zipfile -from optparse import Values -from pathlib import Path -from typing import Any, Collection, Dict, Iterable, List, Optional, Sequence, Union - -from pip._vendor.packaging.markers import Marker -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.packaging.specifiers import SpecifierSet -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import Version -from pip._vendor.packaging.version import parse as parse_version -from pip._vendor.pyproject_hooks import BuildBackendHookCaller - -from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment -from pip._internal.exceptions import InstallationError, PreviousBuildDirError -from pip._internal.locations import get_scheme -from pip._internal.metadata import ( - BaseDistribution, - get_default_environment, - get_directory_distribution, - get_wheel_distribution, -) -from pip._internal.metadata.base import FilesystemWheel -from pip._internal.models.direct_url import DirectUrl -from pip._internal.models.link import Link -from pip._internal.operations.build.metadata import generate_metadata -from pip._internal.operations.build.metadata_editable import generate_editable_metadata -from pip._internal.operations.build.metadata_legacy import ( - generate_metadata as generate_metadata_legacy, -) -from pip._internal.operations.install.editable_legacy import ( - install_editable as install_editable_legacy, -) -from pip._internal.operations.install.wheel import install_wheel -from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path -from pip._internal.req.req_uninstall import UninstallPathSet -from pip._internal.utils.deprecation import deprecated -from pip._internal.utils.hashes import Hashes -from pip._internal.utils.misc import ( - ConfiguredBuildBackendHookCaller, - ask_path_exists, - backup_dir, - display_path, - hide_url, - is_installable_dir, - redact_auth_from_requirement, - redact_auth_from_url, -) -from pip._internal.utils.packaging import safe_extra -from pip._internal.utils.subprocess import runner_with_spinner_message -from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds -from pip._internal.utils.unpacking import unpack_file -from pip._internal.utils.virtualenv import running_under_virtualenv -from pip._internal.vcs import vcs - -logger = logging.getLogger(__name__) - - -class InstallRequirement: - """ - Represents something that may be installed later on, may have information - about where to fetch the relevant requirement and also contains logic for - installing the said requirement. - """ - - def __init__( - self, - req: Optional[Requirement], - comes_from: Optional[Union[str, "InstallRequirement"]], - editable: bool = False, - link: Optional[Link] = None, - markers: Optional[Marker] = None, - use_pep517: Optional[bool] = None, - isolated: bool = False, - *, - global_options: Optional[List[str]] = None, - hash_options: Optional[Dict[str, List[str]]] = None, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - constraint: bool = False, - extras: Collection[str] = (), - user_supplied: bool = False, - permit_editable_wheels: bool = False, - ) -> None: - assert req is None or isinstance(req, Requirement), req - self.req = req - self.comes_from = comes_from - self.constraint = constraint - self.editable = editable - self.permit_editable_wheels = permit_editable_wheels - - # source_dir is the local directory where the linked requirement is - # located, or unpacked. In case unpacking is needed, creating and - # populating source_dir is done by the RequirementPreparer. Note this - # is not necessarily the directory where pyproject.toml or setup.py is - # located - that one is obtained via unpacked_source_directory. - self.source_dir: Optional[str] = None - if self.editable: - assert link - if link.is_file: - self.source_dir = os.path.normpath(os.path.abspath(link.file_path)) - - # original_link is the direct URL that was provided by the user for the - # requirement, either directly or via a constraints file. - if link is None and req and req.url: - # PEP 508 URL requirement - link = Link(req.url) - self.link = self.original_link = link - - # When this InstallRequirement is a wheel obtained from the cache of locally - # built wheels, this is the source link corresponding to the cache entry, which - # was used to download and build the cached wheel. - self.cached_wheel_source_link: Optional[Link] = None - - # Information about the location of the artifact that was downloaded . This - # property is guaranteed to be set in resolver results. - self.download_info: Optional[DirectUrl] = None - - # Path to any downloaded or already-existing package. - self.local_file_path: Optional[str] = None - if self.link and self.link.is_file: - self.local_file_path = self.link.file_path - - if extras: - self.extras = extras - elif req: - self.extras = req.extras - else: - self.extras = set() - if markers is None and req: - markers = req.marker - self.markers = markers - - # This holds the Distribution object if this requirement is already installed. - self.satisfied_by: Optional[BaseDistribution] = None - # Whether the installation process should try to uninstall an existing - # distribution before installing this requirement. - self.should_reinstall = False - # Temporary build location - self._temp_build_dir: Optional[TempDirectory] = None - # Set to True after successful installation - self.install_succeeded: Optional[bool] = None - # Supplied options - self.global_options = global_options if global_options else [] - self.hash_options = hash_options if hash_options else {} - self.config_settings = config_settings - # Set to True after successful preparation of this requirement - self.prepared = False - # User supplied requirement are explicitly requested for installation - # by the user via CLI arguments or requirements files, as opposed to, - # e.g. dependencies, extras or constraints. - self.user_supplied = user_supplied - - self.isolated = isolated - self.build_env: BuildEnvironment = NoOpBuildEnvironment() - - # For PEP 517, the directory where we request the project metadata - # gets stored. We need this to pass to build_wheel, so the backend - # can ensure that the wheel matches the metadata (see the PEP for - # details). - self.metadata_directory: Optional[str] = None - - # The static build requirements (from pyproject.toml) - self.pyproject_requires: Optional[List[str]] = None - - # Build requirements that we will check are available - self.requirements_to_check: List[str] = [] - - # The PEP 517 backend we should use to build the project - self.pep517_backend: Optional[BuildBackendHookCaller] = None - - # Are we using PEP 517 for this requirement? - # After pyproject.toml has been loaded, the only valid values are True - # and False. Before loading, None is valid (meaning "use the default"). - # Setting an explicit value before loading pyproject.toml is supported, - # but after loading this flag should be treated as read only. - self.use_pep517 = use_pep517 - - # If config settings are provided, enforce PEP 517. - if self.config_settings: - if self.use_pep517 is False: - logger.warning( - "--no-use-pep517 ignored for %s " - "because --config-settings are specified.", - self, - ) - self.use_pep517 = True - - # This requirement needs more preparation before it can be built - self.needs_more_preparation = False - - # This requirement needs to be unpacked before it can be installed. - self._archive_source: Optional[Path] = None - - def __str__(self) -> str: - if self.req: - s = redact_auth_from_requirement(self.req) - if self.link: - s += f" from {redact_auth_from_url(self.link.url)}" - elif self.link: - s = redact_auth_from_url(self.link.url) - else: - s = "" - if self.satisfied_by is not None: - if self.satisfied_by.location is not None: - location = display_path(self.satisfied_by.location) - else: - location = "" - s += f" in {location}" - if self.comes_from: - if isinstance(self.comes_from, str): - comes_from: Optional[str] = self.comes_from - else: - comes_from = self.comes_from.from_path() - if comes_from: - s += f" (from {comes_from})" - return s - - def __repr__(self) -> str: - return "<{} object: {} editable={!r}>".format( - self.__class__.__name__, str(self), self.editable - ) - - def format_debug(self) -> str: - """An un-tested helper for getting state, for debugging.""" - attributes = vars(self) - names = sorted(attributes) - - state = (f"{attr}={attributes[attr]!r}" for attr in sorted(names)) - return "<{name} object: {{{state}}}>".format( - name=self.__class__.__name__, - state=", ".join(state), - ) - - # Things that are valid for all kinds of requirements? - @property - def name(self) -> Optional[str]: - if self.req is None: - return None - return self.req.name - - @functools.lru_cache() # use cached_property in python 3.8+ - def supports_pyproject_editable(self) -> bool: - if not self.use_pep517: - return False - assert self.pep517_backend - with self.build_env: - runner = runner_with_spinner_message( - "Checking if build backend supports build_editable" - ) - with self.pep517_backend.subprocess_runner(runner): - return "build_editable" in self.pep517_backend._supported_features() - - @property - def specifier(self) -> SpecifierSet: - assert self.req is not None - return self.req.specifier - - @property - def is_direct(self) -> bool: - """Whether this requirement was specified as a direct URL.""" - return self.original_link is not None - - @property - def is_pinned(self) -> bool: - """Return whether I am pinned to an exact version. - - For example, some-package==1.2 is pinned; some-package>1.2 is not. - """ - assert self.req is not None - specifiers = self.req.specifier - return len(specifiers) == 1 and next(iter(specifiers)).operator in {"==", "==="} - - def match_markers(self, extras_requested: Optional[Iterable[str]] = None) -> bool: - if not extras_requested: - # Provide an extra to safely evaluate the markers - # without matching any extra - extras_requested = ("",) - if self.markers is not None: - return any( - self.markers.evaluate({"extra": extra}) - # TODO: Remove these two variants when packaging is upgraded to - # support the marker comparison logic specified in PEP 685. - or self.markers.evaluate({"extra": safe_extra(extra)}) - or self.markers.evaluate({"extra": canonicalize_name(extra)}) - for extra in extras_requested - ) - else: - return True - - @property - def has_hash_options(self) -> bool: - """Return whether any known-good hashes are specified as options. - - These activate --require-hashes mode; hashes specified as part of a - URL do not. - - """ - return bool(self.hash_options) - - def hashes(self, trust_internet: bool = True) -> Hashes: - """Return a hash-comparer that considers my option- and URL-based - hashes to be known-good. - - Hashes in URLs--ones embedded in the requirements file, not ones - downloaded from an index server--are almost peers with ones from - flags. They satisfy --require-hashes (whether it was implicitly or - explicitly activated) but do not activate it. md5 and sha224 are not - allowed in flags, which should nudge people toward good algos. We - always OR all hashes together, even ones from URLs. - - :param trust_internet: Whether to trust URL-based (#md5=...) hashes - downloaded from the internet, as by populate_link() - - """ - good_hashes = self.hash_options.copy() - if trust_internet: - link = self.link - elif self.is_direct and self.user_supplied: - link = self.original_link - else: - link = None - if link and link.hash: - assert link.hash_name is not None - good_hashes.setdefault(link.hash_name, []).append(link.hash) - return Hashes(good_hashes) - - def from_path(self) -> Optional[str]: - """Format a nice indicator to show where this "comes from" """ - if self.req is None: - return None - s = str(self.req) - if self.comes_from: - comes_from: Optional[str] - if isinstance(self.comes_from, str): - comes_from = self.comes_from - else: - comes_from = self.comes_from.from_path() - if comes_from: - s += "->" + comes_from - return s - - def ensure_build_location( - self, build_dir: str, autodelete: bool, parallel_builds: bool - ) -> str: - assert build_dir is not None - if self._temp_build_dir is not None: - assert self._temp_build_dir.path - return self._temp_build_dir.path - if self.req is None: - # Some systems have /tmp as a symlink which confuses custom - # builds (such as numpy). Thus, we ensure that the real path - # is returned. - self._temp_build_dir = TempDirectory( - kind=tempdir_kinds.REQ_BUILD, globally_managed=True - ) - - return self._temp_build_dir.path - - # This is the only remaining place where we manually determine the path - # for the temporary directory. It is only needed for editables where - # it is the value of the --src option. - - # When parallel builds are enabled, add a UUID to the build directory - # name so multiple builds do not interfere with each other. - dir_name: str = canonicalize_name(self.req.name) - if parallel_builds: - dir_name = f"{dir_name}_{uuid.uuid4().hex}" - - # FIXME: Is there a better place to create the build_dir? (hg and bzr - # need this) - if not os.path.exists(build_dir): - logger.debug("Creating directory %s", build_dir) - os.makedirs(build_dir) - actual_build_dir = os.path.join(build_dir, dir_name) - # `None` indicates that we respect the globally-configured deletion - # settings, which is what we actually want when auto-deleting. - delete_arg = None if autodelete else False - return TempDirectory( - path=actual_build_dir, - delete=delete_arg, - kind=tempdir_kinds.REQ_BUILD, - globally_managed=True, - ).path - - def _set_requirement(self) -> None: - """Set requirement after generating metadata.""" - assert self.req is None - assert self.metadata is not None - assert self.source_dir is not None - - # Construct a Requirement object from the generated metadata - if isinstance(parse_version(self.metadata["Version"]), Version): - op = "==" - else: - op = "===" - - self.req = Requirement( - "".join( - [ - self.metadata["Name"], - op, - self.metadata["Version"], - ] - ) - ) - - def warn_on_mismatching_name(self) -> None: - assert self.req is not None - metadata_name = canonicalize_name(self.metadata["Name"]) - if canonicalize_name(self.req.name) == metadata_name: - # Everything is fine. - return - - # If we're here, there's a mismatch. Log a warning about it. - logger.warning( - "Generating metadata for package %s " - "produced metadata for project name %s. Fix your " - "#egg=%s fragments.", - self.name, - metadata_name, - self.name, - ) - self.req = Requirement(metadata_name) - - def check_if_exists(self, use_user_site: bool) -> None: - """Find an installed distribution that satisfies or conflicts - with this requirement, and set self.satisfied_by or - self.should_reinstall appropriately. - """ - if self.req is None: - return - existing_dist = get_default_environment().get_distribution(self.req.name) - if not existing_dist: - return - - version_compatible = self.req.specifier.contains( - existing_dist.version, - prereleases=True, - ) - if not version_compatible: - self.satisfied_by = None - if use_user_site: - if existing_dist.in_usersite: - self.should_reinstall = True - elif running_under_virtualenv() and existing_dist.in_site_packages: - raise InstallationError( - f"Will not install to the user site because it will " - f"lack sys.path precedence to {existing_dist.raw_name} " - f"in {existing_dist.location}" - ) - else: - self.should_reinstall = True - else: - if self.editable: - self.should_reinstall = True - # when installing editables, nothing pre-existing should ever - # satisfy - self.satisfied_by = None - else: - self.satisfied_by = existing_dist - - # Things valid for wheels - @property - def is_wheel(self) -> bool: - if not self.link: - return False - return self.link.is_wheel - - @property - def is_wheel_from_cache(self) -> bool: - # When True, it means that this InstallRequirement is a local wheel file in the - # cache of locally built wheels. - return self.cached_wheel_source_link is not None - - # Things valid for sdists - @property - def unpacked_source_directory(self) -> str: - assert self.source_dir, f"No source dir for {self}" - return os.path.join( - self.source_dir, self.link and self.link.subdirectory_fragment or "" - ) - - @property - def setup_py_path(self) -> str: - assert self.source_dir, f"No source dir for {self}" - setup_py = os.path.join(self.unpacked_source_directory, "setup.py") - - return setup_py - - @property - def setup_cfg_path(self) -> str: - assert self.source_dir, f"No source dir for {self}" - setup_cfg = os.path.join(self.unpacked_source_directory, "setup.cfg") - - return setup_cfg - - @property - def pyproject_toml_path(self) -> str: - assert self.source_dir, f"No source dir for {self}" - return make_pyproject_path(self.unpacked_source_directory) - - def load_pyproject_toml(self) -> None: - """Load the pyproject.toml file. - - After calling this routine, all of the attributes related to PEP 517 - processing for this requirement have been set. In particular, the - use_pep517 attribute can be used to determine whether we should - follow the PEP 517 or legacy (setup.py) code path. - """ - pyproject_toml_data = load_pyproject_toml( - self.use_pep517, self.pyproject_toml_path, self.setup_py_path, str(self) - ) - - if pyproject_toml_data is None: - assert not self.config_settings - self.use_pep517 = False - return - - self.use_pep517 = True - requires, backend, check, backend_path = pyproject_toml_data - self.requirements_to_check = check - self.pyproject_requires = requires - self.pep517_backend = ConfiguredBuildBackendHookCaller( - self, - self.unpacked_source_directory, - backend, - backend_path=backend_path, - ) - - def isolated_editable_sanity_check(self) -> None: - """Check that an editable requirement if valid for use with PEP 517/518. - - This verifies that an editable that has a pyproject.toml either supports PEP 660 - or as a setup.py or a setup.cfg - """ - if ( - self.editable - and self.use_pep517 - and not self.supports_pyproject_editable() - and not os.path.isfile(self.setup_py_path) - and not os.path.isfile(self.setup_cfg_path) - ): - raise InstallationError( - f"Project {self} has a 'pyproject.toml' and its build " - f"backend is missing the 'build_editable' hook. Since it does not " - f"have a 'setup.py' nor a 'setup.cfg', " - f"it cannot be installed in editable mode. " - f"Consider using a build backend that supports PEP 660." - ) - - def prepare_metadata(self) -> None: - """Ensure that project metadata is available. - - Under PEP 517 and PEP 660, call the backend hook to prepare the metadata. - Under legacy processing, call setup.py egg-info. - """ - assert self.source_dir, f"No source dir for {self}" - details = self.name or f"from {self.link}" - - if self.use_pep517: - assert self.pep517_backend is not None - if ( - self.editable - and self.permit_editable_wheels - and self.supports_pyproject_editable() - ): - self.metadata_directory = generate_editable_metadata( - build_env=self.build_env, - backend=self.pep517_backend, - details=details, - ) - else: - self.metadata_directory = generate_metadata( - build_env=self.build_env, - backend=self.pep517_backend, - details=details, - ) - else: - self.metadata_directory = generate_metadata_legacy( - build_env=self.build_env, - setup_py_path=self.setup_py_path, - source_dir=self.unpacked_source_directory, - isolated=self.isolated, - details=details, - ) - - # Act on the newly generated metadata, based on the name and version. - if not self.name: - self._set_requirement() - else: - self.warn_on_mismatching_name() - - self.assert_source_matches_version() - - @property - def metadata(self) -> Any: - if not hasattr(self, "_metadata"): - self._metadata = self.get_dist().metadata - - return self._metadata - - def get_dist(self) -> BaseDistribution: - if self.metadata_directory: - return get_directory_distribution(self.metadata_directory) - elif self.local_file_path and self.is_wheel: - assert self.req is not None - return get_wheel_distribution( - FilesystemWheel(self.local_file_path), - canonicalize_name(self.req.name), - ) - raise AssertionError( - f"InstallRequirement {self} has no metadata directory and no wheel: " - f"can't make a distribution." - ) - - def assert_source_matches_version(self) -> None: - assert self.source_dir, f"No source dir for {self}" - version = self.metadata["version"] - if self.req and self.req.specifier and version not in self.req.specifier: - logger.warning( - "Requested %s, but installing version %s", - self, - version, - ) - else: - logger.debug( - "Source in %s has version %s, which satisfies requirement %s", - display_path(self.source_dir), - version, - self, - ) - - # For both source distributions and editables - def ensure_has_source_dir( - self, - parent_dir: str, - autodelete: bool = False, - parallel_builds: bool = False, - ) -> None: - """Ensure that a source_dir is set. - - This will create a temporary build dir if the name of the requirement - isn't known yet. - - :param parent_dir: The ideal pip parent_dir for the source_dir. - Generally src_dir for editables and build_dir for sdists. - :return: self.source_dir - """ - if self.source_dir is None: - self.source_dir = self.ensure_build_location( - parent_dir, - autodelete=autodelete, - parallel_builds=parallel_builds, - ) - - def needs_unpacked_archive(self, archive_source: Path) -> None: - assert self._archive_source is None - self._archive_source = archive_source - - def ensure_pristine_source_checkout(self) -> None: - """Ensure the source directory has not yet been built in.""" - assert self.source_dir is not None - if self._archive_source is not None: - unpack_file(str(self._archive_source), self.source_dir) - elif is_installable_dir(self.source_dir): - # If a checkout exists, it's unwise to keep going. - # version inconsistencies are logged later, but do not fail - # the installation. - raise PreviousBuildDirError( - f"pip can't proceed with requirements '{self}' due to a " - f"pre-existing build directory ({self.source_dir}). This is likely " - "due to a previous installation that failed . pip is " - "being responsible and not assuming it can delete this. " - "Please delete it and try again." - ) - - # For editable installations - def update_editable(self) -> None: - if not self.link: - logger.debug( - "Cannot update repository at %s; repository location is unknown", - self.source_dir, - ) - return - assert self.editable - assert self.source_dir - if self.link.scheme == "file": - # Static paths don't get updated - return - vcs_backend = vcs.get_backend_for_scheme(self.link.scheme) - # Editable requirements are validated in Requirement constructors. - # So here, if it's neither a path nor a valid VCS URL, it's a bug. - assert vcs_backend, f"Unsupported VCS URL {self.link.url}" - hidden_url = hide_url(self.link.url) - vcs_backend.obtain(self.source_dir, url=hidden_url, verbosity=0) - - # Top-level Actions - def uninstall( - self, auto_confirm: bool = False, verbose: bool = False - ) -> Optional[UninstallPathSet]: - """ - Uninstall the distribution currently satisfying this requirement. - - Prompts before removing or modifying files unless - ``auto_confirm`` is True. - - Refuses to delete or modify files outside of ``sys.prefix`` - - thus uninstallation within a virtual environment can only - modify that virtual environment, even if the virtualenv is - linked to global site-packages. - - """ - assert self.req - dist = get_default_environment().get_distribution(self.req.name) - if not dist: - logger.warning("Skipping %s as it is not installed.", self.name) - return None - logger.info("Found existing installation: %s", dist) - - uninstalled_pathset = UninstallPathSet.from_dist(dist) - uninstalled_pathset.remove(auto_confirm, verbose) - return uninstalled_pathset - - def _get_archive_name(self, path: str, parentdir: str, rootdir: str) -> str: - def _clean_zip_name(name: str, prefix: str) -> str: - assert name.startswith( - prefix + os.path.sep - ), f"name {name!r} doesn't start with prefix {prefix!r}" - name = name[len(prefix) + 1 :] - name = name.replace(os.path.sep, "/") - return name - - assert self.req is not None - path = os.path.join(parentdir, path) - name = _clean_zip_name(path, rootdir) - return self.req.name + "/" + name - - def archive(self, build_dir: Optional[str]) -> None: - """Saves archive to provided build_dir. - - Used for saving downloaded VCS requirements as part of `pip download`. - """ - assert self.source_dir - if build_dir is None: - return - - create_archive = True - archive_name = "{}-{}.zip".format(self.name, self.metadata["version"]) - archive_path = os.path.join(build_dir, archive_name) - - if os.path.exists(archive_path): - response = ask_path_exists( - f"The file {display_path(archive_path)} exists. (i)gnore, (w)ipe, " - "(b)ackup, (a)bort ", - ("i", "w", "b", "a"), - ) - if response == "i": - create_archive = False - elif response == "w": - logger.warning("Deleting %s", display_path(archive_path)) - os.remove(archive_path) - elif response == "b": - dest_file = backup_dir(archive_path) - logger.warning( - "Backing up %s to %s", - display_path(archive_path), - display_path(dest_file), - ) - shutil.move(archive_path, dest_file) - elif response == "a": - sys.exit(-1) - - if not create_archive: - return - - zip_output = zipfile.ZipFile( - archive_path, - "w", - zipfile.ZIP_DEFLATED, - allowZip64=True, - ) - with zip_output: - dir = os.path.normcase(os.path.abspath(self.unpacked_source_directory)) - for dirpath, dirnames, filenames in os.walk(dir): - for dirname in dirnames: - dir_arcname = self._get_archive_name( - dirname, - parentdir=dirpath, - rootdir=dir, - ) - zipdir = zipfile.ZipInfo(dir_arcname + "/") - zipdir.external_attr = 0x1ED << 16 # 0o755 - zip_output.writestr(zipdir, "") - for filename in filenames: - file_arcname = self._get_archive_name( - filename, - parentdir=dirpath, - rootdir=dir, - ) - filename = os.path.join(dirpath, filename) - zip_output.write(filename, file_arcname) - - logger.info("Saved %s", display_path(archive_path)) - - def install( - self, - global_options: Optional[Sequence[str]] = None, - root: Optional[str] = None, - home: Optional[str] = None, - prefix: Optional[str] = None, - warn_script_location: bool = True, - use_user_site: bool = False, - pycompile: bool = True, - ) -> None: - assert self.req is not None - scheme = get_scheme( - self.req.name, - user=use_user_site, - home=home, - root=root, - isolated=self.isolated, - prefix=prefix, - ) - - if self.editable and not self.is_wheel: - if self.config_settings: - logger.warning( - "--config-settings ignored for legacy editable install of %s. " - "Consider upgrading to a version of setuptools " - "that supports PEP 660 (>= 64).", - self, - ) - install_editable_legacy( - global_options=global_options if global_options is not None else [], - prefix=prefix, - home=home, - use_user_site=use_user_site, - name=self.req.name, - setup_py_path=self.setup_py_path, - isolated=self.isolated, - build_env=self.build_env, - unpacked_source_directory=self.unpacked_source_directory, - ) - self.install_succeeded = True - return - - assert self.is_wheel - assert self.local_file_path - - install_wheel( - self.req.name, - self.local_file_path, - scheme=scheme, - req_description=str(self.req), - pycompile=pycompile, - warn_script_location=warn_script_location, - direct_url=self.download_info if self.is_direct else None, - requested=self.user_supplied, - ) - self.install_succeeded = True - - -def check_invalid_constraint_type(req: InstallRequirement) -> str: - # Check for unsupported forms - problem = "" - if not req.name: - problem = "Unnamed requirements are not allowed as constraints" - elif req.editable: - problem = "Editable requirements are not allowed as constraints" - elif req.extras: - problem = "Constraints cannot have extras" - - if problem: - deprecated( - reason=( - "Constraints are only allowed to take the form of a package " - "name and a version specifier. Other forms were originally " - "permitted as an accident of the implementation, but were " - "undocumented. The new implementation of the resolver no " - "longer supports these forms." - ), - replacement="replacing the constraint with a requirement", - # No plan yet for when the new resolver becomes default - gone_in=None, - issue=8210, - ) - - return problem - - -def _has_option(options: Values, reqs: List[InstallRequirement], option: str) -> bool: - if getattr(options, option, None): - return True - for req in reqs: - if getattr(req, option, None): - return True - return False - - -def check_legacy_setup_py_options( - options: Values, - reqs: List[InstallRequirement], -) -> None: - has_build_options = _has_option(options, reqs, "build_options") - has_global_options = _has_option(options, reqs, "global_options") - if has_build_options or has_global_options: - deprecated( - reason="--build-option and --global-option are deprecated.", - issue=11859, - replacement="to use --config-settings", - gone_in="24.2", - ) - logger.warning( - "Implying --no-binary=:all: due to the presence of " - "--build-option / --global-option. " - ) - options.format_control.disallow_binaries() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py b/venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py deleted file mode 100644 index bf36114..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py +++ /dev/null @@ -1,119 +0,0 @@ -import logging -from collections import OrderedDict -from typing import Dict, List - -from pip._vendor.packaging.specifiers import LegacySpecifier -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.packaging.version import LegacyVersion - -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.deprecation import deprecated - -logger = logging.getLogger(__name__) - - -class RequirementSet: - def __init__(self, check_supported_wheels: bool = True) -> None: - """Create a RequirementSet.""" - - self.requirements: Dict[str, InstallRequirement] = OrderedDict() - self.check_supported_wheels = check_supported_wheels - - self.unnamed_requirements: List[InstallRequirement] = [] - - def __str__(self) -> str: - requirements = sorted( - (req for req in self.requirements.values() if not req.comes_from), - key=lambda req: canonicalize_name(req.name or ""), - ) - return " ".join(str(req.req) for req in requirements) - - def __repr__(self) -> str: - requirements = sorted( - self.requirements.values(), - key=lambda req: canonicalize_name(req.name or ""), - ) - - format_string = "<{classname} object; {count} requirement(s): {reqs}>" - return format_string.format( - classname=self.__class__.__name__, - count=len(requirements), - reqs=", ".join(str(req.req) for req in requirements), - ) - - def add_unnamed_requirement(self, install_req: InstallRequirement) -> None: - assert not install_req.name - self.unnamed_requirements.append(install_req) - - def add_named_requirement(self, install_req: InstallRequirement) -> None: - assert install_req.name - - project_name = canonicalize_name(install_req.name) - self.requirements[project_name] = install_req - - def has_requirement(self, name: str) -> bool: - project_name = canonicalize_name(name) - - return ( - project_name in self.requirements - and not self.requirements[project_name].constraint - ) - - def get_requirement(self, name: str) -> InstallRequirement: - project_name = canonicalize_name(name) - - if project_name in self.requirements: - return self.requirements[project_name] - - raise KeyError(f"No project with the name {name!r}") - - @property - def all_requirements(self) -> List[InstallRequirement]: - return self.unnamed_requirements + list(self.requirements.values()) - - @property - def requirements_to_install(self) -> List[InstallRequirement]: - """Return the list of requirements that need to be installed. - - TODO remove this property together with the legacy resolver, since the new - resolver only returns requirements that need to be installed. - """ - return [ - install_req - for install_req in self.all_requirements - if not install_req.constraint and not install_req.satisfied_by - ] - - def warn_legacy_versions_and_specifiers(self) -> None: - for req in self.requirements_to_install: - version = req.get_dist().version - if isinstance(version, LegacyVersion): - deprecated( - reason=( - f"pip has selected the non standard version {version} " - f"of {req}. In the future this version will be " - f"ignored as it isn't standard compliant." - ), - replacement=( - "set or update constraints to select another version " - "or contact the package author to fix the version number" - ), - issue=12063, - gone_in="24.1", - ) - for dep in req.get_dist().iter_dependencies(): - if any(isinstance(spec, LegacySpecifier) for spec in dep.specifier): - deprecated( - reason=( - f"pip has selected {req} {version} which has non " - f"standard dependency specifier {dep}. " - f"In the future this version of {req} will be " - f"ignored as it isn't standard compliant." - ), - replacement=( - "set or update constraints to select another version " - "or contact the package author to fix the version number" - ), - issue=12063, - gone_in="24.1", - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py b/venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py deleted file mode 100644 index 707fde1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py +++ /dev/null @@ -1,649 +0,0 @@ -import functools -import os -import sys -import sysconfig -from importlib.util import cache_from_source -from typing import Any, Callable, Dict, Generator, Iterable, List, Optional, Set, Tuple - -from pip._internal.exceptions import UninstallationError -from pip._internal.locations import get_bin_prefix, get_bin_user -from pip._internal.metadata import BaseDistribution -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.egg_link import egg_link_path_from_location -from pip._internal.utils.logging import getLogger, indent_log -from pip._internal.utils.misc import ask, normalize_path, renames, rmtree -from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory -from pip._internal.utils.virtualenv import running_under_virtualenv - -logger = getLogger(__name__) - - -def _script_names( - bin_dir: str, script_name: str, is_gui: bool -) -> Generator[str, None, None]: - """Create the fully qualified name of the files created by - {console,gui}_scripts for the given ``dist``. - Returns the list of file names - """ - exe_name = os.path.join(bin_dir, script_name) - yield exe_name - if not WINDOWS: - return - yield f"{exe_name}.exe" - yield f"{exe_name}.exe.manifest" - if is_gui: - yield f"{exe_name}-script.pyw" - else: - yield f"{exe_name}-script.py" - - -def _unique( - fn: Callable[..., Generator[Any, None, None]] -) -> Callable[..., Generator[Any, None, None]]: - @functools.wraps(fn) - def unique(*args: Any, **kw: Any) -> Generator[Any, None, None]: - seen: Set[Any] = set() - for item in fn(*args, **kw): - if item not in seen: - seen.add(item) - yield item - - return unique - - -@_unique -def uninstallation_paths(dist: BaseDistribution) -> Generator[str, None, None]: - """ - Yield all the uninstallation paths for dist based on RECORD-without-.py[co] - - Yield paths to all the files in RECORD. For each .py file in RECORD, add - the .pyc and .pyo in the same directory. - - UninstallPathSet.add() takes care of the __pycache__ .py[co]. - - If RECORD is not found, raises UninstallationError, - with possible information from the INSTALLER file. - - https://packaging.python.org/specifications/recording-installed-packages/ - """ - location = dist.location - assert location is not None, "not installed" - - entries = dist.iter_declared_entries() - if entries is None: - msg = f"Cannot uninstall {dist}, RECORD file not found." - installer = dist.installer - if not installer or installer == "pip": - dep = f"{dist.raw_name}=={dist.version}" - msg += ( - " You might be able to recover from this via: " - f"'pip install --force-reinstall --no-deps {dep}'." - ) - else: - msg += f" Hint: The package was installed by {installer}." - raise UninstallationError(msg) - - for entry in entries: - path = os.path.join(location, entry) - yield path - if path.endswith(".py"): - dn, fn = os.path.split(path) - base = fn[:-3] - path = os.path.join(dn, base + ".pyc") - yield path - path = os.path.join(dn, base + ".pyo") - yield path - - -def compact(paths: Iterable[str]) -> Set[str]: - """Compact a path set to contain the minimal number of paths - necessary to contain all paths in the set. If /a/path/ and - /a/path/to/a/file.txt are both in the set, leave only the - shorter path.""" - - sep = os.path.sep - short_paths: Set[str] = set() - for path in sorted(paths, key=len): - should_skip = any( - path.startswith(shortpath.rstrip("*")) - and path[len(shortpath.rstrip("*").rstrip(sep))] == sep - for shortpath in short_paths - ) - if not should_skip: - short_paths.add(path) - return short_paths - - -def compress_for_rename(paths: Iterable[str]) -> Set[str]: - """Returns a set containing the paths that need to be renamed. - - This set may include directories when the original sequence of paths - included every file on disk. - """ - case_map = {os.path.normcase(p): p for p in paths} - remaining = set(case_map) - unchecked = sorted({os.path.split(p)[0] for p in case_map.values()}, key=len) - wildcards: Set[str] = set() - - def norm_join(*a: str) -> str: - return os.path.normcase(os.path.join(*a)) - - for root in unchecked: - if any(os.path.normcase(root).startswith(w) for w in wildcards): - # This directory has already been handled. - continue - - all_files: Set[str] = set() - all_subdirs: Set[str] = set() - for dirname, subdirs, files in os.walk(root): - all_subdirs.update(norm_join(root, dirname, d) for d in subdirs) - all_files.update(norm_join(root, dirname, f) for f in files) - # If all the files we found are in our remaining set of files to - # remove, then remove them from the latter set and add a wildcard - # for the directory. - if not (all_files - remaining): - remaining.difference_update(all_files) - wildcards.add(root + os.sep) - - return set(map(case_map.__getitem__, remaining)) | wildcards - - -def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str], Set[str]]: - """Returns a tuple of 2 sets of which paths to display to user - - The first set contains paths that would be deleted. Files of a package - are not added and the top-level directory of the package has a '*' added - at the end - to signify that all it's contents are removed. - - The second set contains files that would have been skipped in the above - folders. - """ - - will_remove = set(paths) - will_skip = set() - - # Determine folders and files - folders = set() - files = set() - for path in will_remove: - if path.endswith(".pyc"): - continue - if path.endswith("__init__.py") or ".dist-info" in path: - folders.add(os.path.dirname(path)) - files.add(path) - - _normcased_files = set(map(os.path.normcase, files)) - - folders = compact(folders) - - # This walks the tree using os.walk to not miss extra folders - # that might get added. - for folder in folders: - for dirpath, _, dirfiles in os.walk(folder): - for fname in dirfiles: - if fname.endswith(".pyc"): - continue - - file_ = os.path.join(dirpath, fname) - if ( - os.path.isfile(file_) - and os.path.normcase(file_) not in _normcased_files - ): - # We are skipping this file. Add it to the set. - will_skip.add(file_) - - will_remove = files | {os.path.join(folder, "*") for folder in folders} - - return will_remove, will_skip - - -class StashedUninstallPathSet: - """A set of file rename operations to stash files while - tentatively uninstalling them.""" - - def __init__(self) -> None: - # Mapping from source file root to [Adjacent]TempDirectory - # for files under that directory. - self._save_dirs: Dict[str, TempDirectory] = {} - # (old path, new path) tuples for each move that may need - # to be undone. - self._moves: List[Tuple[str, str]] = [] - - def _get_directory_stash(self, path: str) -> str: - """Stashes a directory. - - Directories are stashed adjacent to their original location if - possible, or else moved/copied into the user's temp dir.""" - - try: - save_dir: TempDirectory = AdjacentTempDirectory(path) - except OSError: - save_dir = TempDirectory(kind="uninstall") - self._save_dirs[os.path.normcase(path)] = save_dir - - return save_dir.path - - def _get_file_stash(self, path: str) -> str: - """Stashes a file. - - If no root has been provided, one will be created for the directory - in the user's temp directory.""" - path = os.path.normcase(path) - head, old_head = os.path.dirname(path), None - save_dir = None - - while head != old_head: - try: - save_dir = self._save_dirs[head] - break - except KeyError: - pass - head, old_head = os.path.dirname(head), head - else: - # Did not find any suitable root - head = os.path.dirname(path) - save_dir = TempDirectory(kind="uninstall") - self._save_dirs[head] = save_dir - - relpath = os.path.relpath(path, head) - if relpath and relpath != os.path.curdir: - return os.path.join(save_dir.path, relpath) - return save_dir.path - - def stash(self, path: str) -> str: - """Stashes the directory or file and returns its new location. - Handle symlinks as files to avoid modifying the symlink targets. - """ - path_is_dir = os.path.isdir(path) and not os.path.islink(path) - if path_is_dir: - new_path = self._get_directory_stash(path) - else: - new_path = self._get_file_stash(path) - - self._moves.append((path, new_path)) - if path_is_dir and os.path.isdir(new_path): - # If we're moving a directory, we need to - # remove the destination first or else it will be - # moved to inside the existing directory. - # We just created new_path ourselves, so it will - # be removable. - os.rmdir(new_path) - renames(path, new_path) - return new_path - - def commit(self) -> None: - """Commits the uninstall by removing stashed files.""" - for save_dir in self._save_dirs.values(): - save_dir.cleanup() - self._moves = [] - self._save_dirs = {} - - def rollback(self) -> None: - """Undoes the uninstall by moving stashed files back.""" - for p in self._moves: - logger.info("Moving to %s\n from %s", *p) - - for new_path, path in self._moves: - try: - logger.debug("Replacing %s from %s", new_path, path) - if os.path.isfile(new_path) or os.path.islink(new_path): - os.unlink(new_path) - elif os.path.isdir(new_path): - rmtree(new_path) - renames(path, new_path) - except OSError as ex: - logger.error("Failed to restore %s", new_path) - logger.debug("Exception: %s", ex) - - self.commit() - - @property - def can_rollback(self) -> bool: - return bool(self._moves) - - -class UninstallPathSet: - """A set of file paths to be removed in the uninstallation of a - requirement.""" - - def __init__(self, dist: BaseDistribution) -> None: - self._paths: Set[str] = set() - self._refuse: Set[str] = set() - self._pth: Dict[str, UninstallPthEntries] = {} - self._dist = dist - self._moved_paths = StashedUninstallPathSet() - # Create local cache of normalize_path results. Creating an UninstallPathSet - # can result in hundreds/thousands of redundant calls to normalize_path with - # the same args, which hurts performance. - self._normalize_path_cached = functools.lru_cache()(normalize_path) - - def _permitted(self, path: str) -> bool: - """ - Return True if the given path is one we are permitted to - remove/modify, False otherwise. - - """ - # aka is_local, but caching normalized sys.prefix - if not running_under_virtualenv(): - return True - return path.startswith(self._normalize_path_cached(sys.prefix)) - - def add(self, path: str) -> None: - head, tail = os.path.split(path) - - # we normalize the head to resolve parent directory symlinks, but not - # the tail, since we only want to uninstall symlinks, not their targets - path = os.path.join(self._normalize_path_cached(head), os.path.normcase(tail)) - - if not os.path.exists(path): - return - if self._permitted(path): - self._paths.add(path) - else: - self._refuse.add(path) - - # __pycache__ files can show up after 'installed-files.txt' is created, - # due to imports - if os.path.splitext(path)[1] == ".py": - self.add(cache_from_source(path)) - - def add_pth(self, pth_file: str, entry: str) -> None: - pth_file = self._normalize_path_cached(pth_file) - if self._permitted(pth_file): - if pth_file not in self._pth: - self._pth[pth_file] = UninstallPthEntries(pth_file) - self._pth[pth_file].add(entry) - else: - self._refuse.add(pth_file) - - def remove(self, auto_confirm: bool = False, verbose: bool = False) -> None: - """Remove paths in ``self._paths`` with confirmation (unless - ``auto_confirm`` is True).""" - - if not self._paths: - logger.info( - "Can't uninstall '%s'. No files were found to uninstall.", - self._dist.raw_name, - ) - return - - dist_name_version = f"{self._dist.raw_name}-{self._dist.version}" - logger.info("Uninstalling %s:", dist_name_version) - - with indent_log(): - if auto_confirm or self._allowed_to_proceed(verbose): - moved = self._moved_paths - - for_rename = compress_for_rename(self._paths) - - for path in sorted(compact(for_rename)): - moved.stash(path) - logger.verbose("Removing file or directory %s", path) - - for pth in self._pth.values(): - pth.remove() - - logger.info("Successfully uninstalled %s", dist_name_version) - - def _allowed_to_proceed(self, verbose: bool) -> bool: - """Display which files would be deleted and prompt for confirmation""" - - def _display(msg: str, paths: Iterable[str]) -> None: - if not paths: - return - - logger.info(msg) - with indent_log(): - for path in sorted(compact(paths)): - logger.info(path) - - if not verbose: - will_remove, will_skip = compress_for_output_listing(self._paths) - else: - # In verbose mode, display all the files that are going to be - # deleted. - will_remove = set(self._paths) - will_skip = set() - - _display("Would remove:", will_remove) - _display("Would not remove (might be manually added):", will_skip) - _display("Would not remove (outside of prefix):", self._refuse) - if verbose: - _display("Will actually move:", compress_for_rename(self._paths)) - - return ask("Proceed (Y/n)? ", ("y", "n", "")) != "n" - - def rollback(self) -> None: - """Rollback the changes previously made by remove().""" - if not self._moved_paths.can_rollback: - logger.error( - "Can't roll back %s; was not uninstalled", - self._dist.raw_name, - ) - return - logger.info("Rolling back uninstall of %s", self._dist.raw_name) - self._moved_paths.rollback() - for pth in self._pth.values(): - pth.rollback() - - def commit(self) -> None: - """Remove temporary save dir: rollback will no longer be possible.""" - self._moved_paths.commit() - - @classmethod - def from_dist(cls, dist: BaseDistribution) -> "UninstallPathSet": - dist_location = dist.location - info_location = dist.info_location - if dist_location is None: - logger.info( - "Not uninstalling %s since it is not installed", - dist.canonical_name, - ) - return cls(dist) - - normalized_dist_location = normalize_path(dist_location) - if not dist.local: - logger.info( - "Not uninstalling %s at %s, outside environment %s", - dist.canonical_name, - normalized_dist_location, - sys.prefix, - ) - return cls(dist) - - if normalized_dist_location in { - p - for p in {sysconfig.get_path("stdlib"), sysconfig.get_path("platstdlib")} - if p - }: - logger.info( - "Not uninstalling %s at %s, as it is in the standard library.", - dist.canonical_name, - normalized_dist_location, - ) - return cls(dist) - - paths_to_remove = cls(dist) - develop_egg_link = egg_link_path_from_location(dist.raw_name) - - # Distribution is installed with metadata in a "flat" .egg-info - # directory. This means it is not a modern .dist-info installation, an - # egg, or legacy editable. - setuptools_flat_installation = ( - dist.installed_with_setuptools_egg_info - and info_location is not None - and os.path.exists(info_location) - # If dist is editable and the location points to a ``.egg-info``, - # we are in fact in the legacy editable case. - and not info_location.endswith(f"{dist.setuptools_filename}.egg-info") - ) - - # Uninstall cases order do matter as in the case of 2 installs of the - # same package, pip needs to uninstall the currently detected version - if setuptools_flat_installation: - if info_location is not None: - paths_to_remove.add(info_location) - installed_files = dist.iter_declared_entries() - if installed_files is not None: - for installed_file in installed_files: - paths_to_remove.add(os.path.join(dist_location, installed_file)) - # FIXME: need a test for this elif block - # occurs with --single-version-externally-managed/--record outside - # of pip - elif dist.is_file("top_level.txt"): - try: - namespace_packages = dist.read_text("namespace_packages.txt") - except FileNotFoundError: - namespaces = [] - else: - namespaces = namespace_packages.splitlines(keepends=False) - for top_level_pkg in [ - p - for p in dist.read_text("top_level.txt").splitlines() - if p and p not in namespaces - ]: - path = os.path.join(dist_location, top_level_pkg) - paths_to_remove.add(path) - paths_to_remove.add(f"{path}.py") - paths_to_remove.add(f"{path}.pyc") - paths_to_remove.add(f"{path}.pyo") - - elif dist.installed_by_distutils: - raise UninstallationError( - "Cannot uninstall {!r}. It is a distutils installed project " - "and thus we cannot accurately determine which files belong " - "to it which would lead to only a partial uninstall.".format( - dist.raw_name, - ) - ) - - elif dist.installed_as_egg: - # package installed by easy_install - # We cannot match on dist.egg_name because it can slightly vary - # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg - paths_to_remove.add(dist_location) - easy_install_egg = os.path.split(dist_location)[1] - easy_install_pth = os.path.join( - os.path.dirname(dist_location), - "easy-install.pth", - ) - paths_to_remove.add_pth(easy_install_pth, "./" + easy_install_egg) - - elif dist.installed_with_dist_info: - for path in uninstallation_paths(dist): - paths_to_remove.add(path) - - elif develop_egg_link: - # PEP 660 modern editable is handled in the ``.dist-info`` case - # above, so this only covers the setuptools-style editable. - with open(develop_egg_link) as fh: - link_pointer = os.path.normcase(fh.readline().strip()) - normalized_link_pointer = paths_to_remove._normalize_path_cached( - link_pointer - ) - assert os.path.samefile( - normalized_link_pointer, normalized_dist_location - ), ( - f"Egg-link {develop_egg_link} (to {link_pointer}) does not match " - f"installed location of {dist.raw_name} (at {dist_location})" - ) - paths_to_remove.add(develop_egg_link) - easy_install_pth = os.path.join( - os.path.dirname(develop_egg_link), "easy-install.pth" - ) - paths_to_remove.add_pth(easy_install_pth, dist_location) - - else: - logger.debug( - "Not sure how to uninstall: %s - Check: %s", - dist, - dist_location, - ) - - if dist.in_usersite: - bin_dir = get_bin_user() - else: - bin_dir = get_bin_prefix() - - # find distutils scripts= scripts - try: - for script in dist.iter_distutils_script_names(): - paths_to_remove.add(os.path.join(bin_dir, script)) - if WINDOWS: - paths_to_remove.add(os.path.join(bin_dir, f"{script}.bat")) - except (FileNotFoundError, NotADirectoryError): - pass - - # find console_scripts and gui_scripts - def iter_scripts_to_remove( - dist: BaseDistribution, - bin_dir: str, - ) -> Generator[str, None, None]: - for entry_point in dist.iter_entry_points(): - if entry_point.group == "console_scripts": - yield from _script_names(bin_dir, entry_point.name, False) - elif entry_point.group == "gui_scripts": - yield from _script_names(bin_dir, entry_point.name, True) - - for s in iter_scripts_to_remove(dist, bin_dir): - paths_to_remove.add(s) - - return paths_to_remove - - -class UninstallPthEntries: - def __init__(self, pth_file: str) -> None: - self.file = pth_file - self.entries: Set[str] = set() - self._saved_lines: Optional[List[bytes]] = None - - def add(self, entry: str) -> None: - entry = os.path.normcase(entry) - # On Windows, os.path.normcase converts the entry to use - # backslashes. This is correct for entries that describe absolute - # paths outside of site-packages, but all the others use forward - # slashes. - # os.path.splitdrive is used instead of os.path.isabs because isabs - # treats non-absolute paths with drive letter markings like c:foo\bar - # as absolute paths. It also does not recognize UNC paths if they don't - # have more than "\\sever\share". Valid examples: "\\server\share\" or - # "\\server\share\folder". - if WINDOWS and not os.path.splitdrive(entry)[0]: - entry = entry.replace("\\", "/") - self.entries.add(entry) - - def remove(self) -> None: - logger.verbose("Removing pth entries from %s:", self.file) - - # If the file doesn't exist, log a warning and return - if not os.path.isfile(self.file): - logger.warning("Cannot remove entries from nonexistent file %s", self.file) - return - with open(self.file, "rb") as fh: - # windows uses '\r\n' with py3k, but uses '\n' with py2.x - lines = fh.readlines() - self._saved_lines = lines - if any(b"\r\n" in line for line in lines): - endline = "\r\n" - else: - endline = "\n" - # handle missing trailing newline - if lines and not lines[-1].endswith(endline.encode("utf-8")): - lines[-1] = lines[-1] + endline.encode("utf-8") - for entry in self.entries: - try: - logger.verbose("Removing entry: %s", entry) - lines.remove((entry + endline).encode("utf-8")) - except ValueError: - pass - with open(self.file, "wb") as fh: - fh.writelines(lines) - - def rollback(self) -> bool: - if self._saved_lines is None: - logger.error("Cannot roll back changes to %s, none were made", self.file) - return False - logger.debug("Rolling %s back to previous state", self.file) - with open(self.file, "wb") as fh: - fh.writelines(self._saved_lines) - return True diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 58285ff9e925fbe5784bec0e9a6b99d4ec4d69c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmYk0u?@m76hs}A0wFO7Me;#36bLZ^1q@&r$0VOP{+7QJDLu=u5-nR$;Z$(az0+NF zv|KJk(jz%f4R~Mct zhQYW2EMCEnu_3oDH)~*wrtnI)sx}NBJxFxX1g9(n!({u2fgc5ZzsW#7WZtZK>2soH*q`4C2C}LKPLNDxrYVn=h8@oupQ6uQR&|YLB#k zrhjR#oH+N!p=H*gP((+XmzkZ>?wdEUT3_!mvMWBB9ty_3yX2wyl)EfvBQ$?A(Orgu9yriMbeYuF&lP% z(7kNv+2|lE%j~2C>whY=vC-$o6spe3A-5YxwKi0qzn!Q}3uhZa(@ zPpBta5I%%s@Uv^}4%iX2rA#uV|{J00sBv!ODVjJfY6D0@$LQu;IMw458h6y3 z+fIA7gg!lbL;nvJdKX&{wHWqwAzJOuGsh=YC;?p!Hwi9Y{zKvM?(wi|qcp9v3ewc}(zH@?QM$OFrt?Kst}5uZ zf`NP1KT)bgw;0@T@Z7;)YHieV=up8;qjw1+CV0rjop3ICw<2&+Cw?wU{4cguRzmG4dmIZ0na(HYA8||$G VdG8ja2LxNJFZx`F0r&4Vf?sp!3{e08 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py deleted file mode 100644 index 42dade1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py +++ /dev/null @@ -1,20 +0,0 @@ -from typing import Callable, List, Optional - -from pip._internal.req.req_install import InstallRequirement -from pip._internal.req.req_set import RequirementSet - -InstallRequirementProvider = Callable[ - [str, Optional[InstallRequirement]], InstallRequirement -] - - -class BaseResolver: - def resolve( - self, root_reqs: List[InstallRequirement], check_supported_wheels: bool - ) -> RequirementSet: - raise NotImplementedError() - - def get_installation_order( - self, req_set: RequirementSet - ) -> List[InstallRequirement]: - raise NotImplementedError() diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index eec665aaa9edeb3d6368204f07bf7538f64c91bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 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

    yp^D6 zx}w#67P)Yq(bcK`qcxYXpDg@MR_`(y8+Y{uehrxPk%Y^*f1_&g_*}S}5;vw7qBfbl zz)A~JX?)(qlmA?_-m>zt2ULRU2uXDTK#NvKMkXh-VJ0rBE{%`hCvPKmke&N;5|OJP zKSJ);I<}6Wp->R7Gi4wS8`*!;dd|p}3#mK~ka79ru@!GFROKVXWXv|3;%2k9p(MlhQV%t#APZs#VdK@2J8M)q6>IpvZ@`d5XI6>3839PS zT0f;p=(5HZZ>j_UDE`*~YLgugb|_-Vs5Ti|A~GBH zTexSKKy3P+HGoQ$L(&yhkB{Y0$<4JODm1qT1v4AZje)q;FPxWNyzgamFM zIAvDNsJ{S#*QjF3$k3;zlF8#Vf*$tp`7v+NQcrJPE!x|$nn~y*qD{F}Cy|7O>5U96 zxwq^mX!>8W+S^P-bp8!0q0;jkT29~clu5%ev_%y+-@DWxW3ErtT9<;l3~K$)mbE=xzp{oB27l9 z5~di``wm~zV#(~~UW}^otEfHEXcAF*mt{X^LcJcjJcN8|g^4Inst-kM9~R?_Wpxji zW#Y?avS4qris+iJA$JFl|0hVY8cu;sqh$UD_iZ0R<9uczs)Y#2Z*lAF6C-2%gON4< z-pCn$2b}h|#+>mtrGoJrqgeXC#wDB$J%(|?*;D?JQGxdP?KF)%Xe?U!PZop49NNk` zRQ}QGmlszTFB%(@n)y$SH=?(Tj}*sN(Qj35sDF=KnBnzkh^qR1ew(Y~pOO%^Vvsw! zr{#T@Msg8;@_#(y{Xf0()PM8rdo6|mlugQ~pGG<1OhG2cwmj+^AfT?!lfbdrMXx7} zcY$?sP)OgEe+E#0iSH4FA+oHl!ikM8$oV-8qev49KZ9otQSl?Q@?qmY#5gL8O5{^s|mx*f4cm_ FKLWNq#rXgL diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py deleted file mode 100644 index 5ddb848..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py +++ /dev/null @@ -1,598 +0,0 @@ -"""Dependency Resolution - -The dependency resolution in pip is performed as follows: - -for top-level requirements: - a. only one spec allowed per project, regardless of conflicts or not. - otherwise a "double requirement" exception is raised - b. they override sub-dependency requirements. -for sub-dependencies - a. "first found, wins" (where the order is breadth first) -""" - -# The following comment should be removed at some point in the future. -# mypy: strict-optional=False - -import logging -import sys -from collections import defaultdict -from itertools import chain -from typing import DefaultDict, Iterable, List, Optional, Set, Tuple - -from pip._vendor.packaging import specifiers -from pip._vendor.packaging.requirements import Requirement - -from pip._internal.cache import WheelCache -from pip._internal.exceptions import ( - BestVersionAlreadyInstalled, - DistributionNotFound, - HashError, - HashErrors, - InstallationError, - NoneMetadataError, - UnsupportedPythonVersion, -) -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.operations.prepare import RequirementPreparer -from pip._internal.req.req_install import ( - InstallRequirement, - check_invalid_constraint_type, -) -from pip._internal.req.req_set import RequirementSet -from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider -from pip._internal.utils import compatibility_tags -from pip._internal.utils.compatibility_tags import get_supported -from pip._internal.utils.direct_url_helpers import direct_url_from_link -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import normalize_version_info -from pip._internal.utils.packaging import check_requires_python - -logger = logging.getLogger(__name__) - -DiscoveredDependencies = DefaultDict[str, List[InstallRequirement]] - - -def _check_dist_requires_python( - dist: BaseDistribution, - version_info: Tuple[int, int, int], - ignore_requires_python: bool = False, -) -> None: - """ - Check whether the given Python version is compatible with a distribution's - "Requires-Python" value. - - :param version_info: A 3-tuple of ints representing the Python - major-minor-micro version to check. - :param ignore_requires_python: Whether to ignore the "Requires-Python" - value if the given Python version isn't compatible. - - :raises UnsupportedPythonVersion: When the given Python version isn't - compatible. - """ - # This idiosyncratically converts the SpecifierSet to str and let - # check_requires_python then parse it again into SpecifierSet. But this - # is the legacy resolver so I'm just not going to bother refactoring. - try: - requires_python = str(dist.requires_python) - except FileNotFoundError as e: - raise NoneMetadataError(dist, str(e)) - try: - is_compatible = check_requires_python( - requires_python, - version_info=version_info, - ) - except specifiers.InvalidSpecifier as exc: - logger.warning( - "Package %r has an invalid Requires-Python: %s", dist.raw_name, exc - ) - return - - if is_compatible: - return - - version = ".".join(map(str, version_info)) - if ignore_requires_python: - logger.debug( - "Ignoring failed Requires-Python check for package %r: %s not in %r", - dist.raw_name, - version, - requires_python, - ) - return - - raise UnsupportedPythonVersion( - "Package {!r} requires a different Python: {} not in {!r}".format( - dist.raw_name, version, requires_python - ) - ) - - -class Resolver(BaseResolver): - """Resolves which packages need to be installed/uninstalled to perform \ - the requested operation without breaking the requirements of any package. - """ - - _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} - - def __init__( - self, - preparer: RequirementPreparer, - finder: PackageFinder, - wheel_cache: Optional[WheelCache], - make_install_req: InstallRequirementProvider, - use_user_site: bool, - ignore_dependencies: bool, - ignore_installed: bool, - ignore_requires_python: bool, - force_reinstall: bool, - upgrade_strategy: str, - py_version_info: Optional[Tuple[int, ...]] = None, - ) -> None: - super().__init__() - assert upgrade_strategy in self._allowed_strategies - - if py_version_info is None: - py_version_info = sys.version_info[:3] - else: - py_version_info = normalize_version_info(py_version_info) - - self._py_version_info = py_version_info - - self.preparer = preparer - self.finder = finder - self.wheel_cache = wheel_cache - - self.upgrade_strategy = upgrade_strategy - self.force_reinstall = force_reinstall - self.ignore_dependencies = ignore_dependencies - self.ignore_installed = ignore_installed - self.ignore_requires_python = ignore_requires_python - self.use_user_site = use_user_site - self._make_install_req = make_install_req - - self._discovered_dependencies: DiscoveredDependencies = defaultdict(list) - - def resolve( - self, root_reqs: List[InstallRequirement], check_supported_wheels: bool - ) -> RequirementSet: - """Resolve what operations need to be done - - As a side-effect of this method, the packages (and their dependencies) - are downloaded, unpacked and prepared for installation. This - preparation is done by ``pip.operations.prepare``. - - Once PyPI has static dependency metadata available, it would be - possible to move the preparation to become a step separated from - dependency resolution. - """ - requirement_set = RequirementSet(check_supported_wheels=check_supported_wheels) - for req in root_reqs: - if req.constraint: - check_invalid_constraint_type(req) - self._add_requirement_to_set(requirement_set, req) - - # Actually prepare the files, and collect any exceptions. Most hash - # exceptions cannot be checked ahead of time, because - # _populate_link() needs to be called before we can make decisions - # based on link type. - discovered_reqs: List[InstallRequirement] = [] - hash_errors = HashErrors() - for req in chain(requirement_set.all_requirements, discovered_reqs): - try: - discovered_reqs.extend(self._resolve_one(requirement_set, req)) - except HashError as exc: - exc.req = req - hash_errors.append(exc) - - if hash_errors: - raise hash_errors - - return requirement_set - - def _add_requirement_to_set( - self, - requirement_set: RequirementSet, - install_req: InstallRequirement, - parent_req_name: Optional[str] = None, - extras_requested: Optional[Iterable[str]] = None, - ) -> Tuple[List[InstallRequirement], Optional[InstallRequirement]]: - """Add install_req as a requirement to install. - - :param parent_req_name: The name of the requirement that needed this - added. The name is used because when multiple unnamed requirements - resolve to the same name, we could otherwise end up with dependency - links that point outside the Requirements set. parent_req must - already be added. Note that None implies that this is a user - supplied requirement, vs an inferred one. - :param extras_requested: an iterable of extras used to evaluate the - environment markers. - :return: Additional requirements to scan. That is either [] if - the requirement is not applicable, or [install_req] if the - requirement is applicable and has just been added. - """ - # If the markers do not match, ignore this requirement. - if not install_req.match_markers(extras_requested): - logger.info( - "Ignoring %s: markers '%s' don't match your environment", - install_req.name, - install_req.markers, - ) - return [], None - - # If the wheel is not supported, raise an error. - # Should check this after filtering out based on environment markers to - # allow specifying different wheels based on the environment/OS, in a - # single requirements file. - if install_req.link and install_req.link.is_wheel: - wheel = Wheel(install_req.link.filename) - tags = compatibility_tags.get_supported() - if requirement_set.check_supported_wheels and not wheel.supported(tags): - raise InstallationError( - f"{wheel.filename} is not a supported wheel on this platform." - ) - - # This next bit is really a sanity check. - assert ( - not install_req.user_supplied or parent_req_name is None - ), "a user supplied req shouldn't have a parent" - - # Unnamed requirements are scanned again and the requirement won't be - # added as a dependency until after scanning. - if not install_req.name: - requirement_set.add_unnamed_requirement(install_req) - return [install_req], None - - try: - existing_req: Optional[ - InstallRequirement - ] = requirement_set.get_requirement(install_req.name) - except KeyError: - existing_req = None - - has_conflicting_requirement = ( - parent_req_name is None - and existing_req - and not existing_req.constraint - and existing_req.extras == install_req.extras - and existing_req.req - and install_req.req - and existing_req.req.specifier != install_req.req.specifier - ) - if has_conflicting_requirement: - raise InstallationError( - "Double requirement given: {} (already in {}, name={!r})".format( - install_req, existing_req, install_req.name - ) - ) - - # When no existing requirement exists, add the requirement as a - # dependency and it will be scanned again after. - if not existing_req: - requirement_set.add_named_requirement(install_req) - # We'd want to rescan this requirement later - return [install_req], install_req - - # Assume there's no need to scan, and that we've already - # encountered this for scanning. - if install_req.constraint or not existing_req.constraint: - return [], existing_req - - does_not_satisfy_constraint = install_req.link and not ( - existing_req.link and install_req.link.path == existing_req.link.path - ) - if does_not_satisfy_constraint: - raise InstallationError( - f"Could not satisfy constraints for '{install_req.name}': " - "installation from path or url cannot be " - "constrained to a version" - ) - # If we're now installing a constraint, mark the existing - # object for real installation. - existing_req.constraint = False - # If we're now installing a user supplied requirement, - # mark the existing object as such. - if install_req.user_supplied: - existing_req.user_supplied = True - existing_req.extras = tuple( - sorted(set(existing_req.extras) | set(install_req.extras)) - ) - logger.debug( - "Setting %s extras to: %s", - existing_req, - existing_req.extras, - ) - # Return the existing requirement for addition to the parent and - # scanning again. - return [existing_req], existing_req - - def _is_upgrade_allowed(self, req: InstallRequirement) -> bool: - if self.upgrade_strategy == "to-satisfy-only": - return False - elif self.upgrade_strategy == "eager": - return True - else: - assert self.upgrade_strategy == "only-if-needed" - return req.user_supplied or req.constraint - - def _set_req_to_reinstall(self, req: InstallRequirement) -> None: - """ - Set a requirement to be installed. - """ - # Don't uninstall the conflict if doing a user install and the - # conflict is not a user install. - if not self.use_user_site or req.satisfied_by.in_usersite: - req.should_reinstall = True - req.satisfied_by = None - - def _check_skip_installed( - self, req_to_install: InstallRequirement - ) -> Optional[str]: - """Check if req_to_install should be skipped. - - This will check if the req is installed, and whether we should upgrade - or reinstall it, taking into account all the relevant user options. - - After calling this req_to_install will only have satisfied_by set to - None if the req_to_install is to be upgraded/reinstalled etc. Any - other value will be a dist recording the current thing installed that - satisfies the requirement. - - Note that for vcs urls and the like we can't assess skipping in this - routine - we simply identify that we need to pull the thing down, - then later on it is pulled down and introspected to assess upgrade/ - reinstalls etc. - - :return: A text reason for why it was skipped, or None. - """ - if self.ignore_installed: - return None - - req_to_install.check_if_exists(self.use_user_site) - if not req_to_install.satisfied_by: - return None - - if self.force_reinstall: - self._set_req_to_reinstall(req_to_install) - return None - - if not self._is_upgrade_allowed(req_to_install): - if self.upgrade_strategy == "only-if-needed": - return "already satisfied, skipping upgrade" - return "already satisfied" - - # Check for the possibility of an upgrade. For link-based - # requirements we have to pull the tree down and inspect to assess - # the version #, so it's handled way down. - if not req_to_install.link: - try: - self.finder.find_requirement(req_to_install, upgrade=True) - except BestVersionAlreadyInstalled: - # Then the best version is installed. - return "already up-to-date" - except DistributionNotFound: - # No distribution found, so we squash the error. It will - # be raised later when we re-try later to do the install. - # Why don't we just raise here? - pass - - self._set_req_to_reinstall(req_to_install) - return None - - def _find_requirement_link(self, req: InstallRequirement) -> Optional[Link]: - upgrade = self._is_upgrade_allowed(req) - best_candidate = self.finder.find_requirement(req, upgrade) - if not best_candidate: - return None - - # Log a warning per PEP 592 if necessary before returning. - link = best_candidate.link - if link.is_yanked: - reason = link.yanked_reason or "" - msg = ( - # Mark this as a unicode string to prevent - # "UnicodeEncodeError: 'ascii' codec can't encode character" - # in Python 2 when the reason contains non-ascii characters. - "The candidate selected for download or install is a " - f"yanked version: {best_candidate}\n" - f"Reason for being yanked: {reason}" - ) - logger.warning(msg) - - return link - - def _populate_link(self, req: InstallRequirement) -> None: - """Ensure that if a link can be found for this, that it is found. - - Note that req.link may still be None - if the requirement is already - installed and not needed to be upgraded based on the return value of - _is_upgrade_allowed(). - - If preparer.require_hashes is True, don't use the wheel cache, because - cached wheels, always built locally, have different hashes than the - files downloaded from the index server and thus throw false hash - mismatches. Furthermore, cached wheels at present have undeterministic - contents due to file modification times. - """ - if req.link is None: - req.link = self._find_requirement_link(req) - - if self.wheel_cache is None or self.preparer.require_hashes: - return - cache_entry = self.wheel_cache.get_cache_entry( - link=req.link, - package_name=req.name, - supported_tags=get_supported(), - ) - if cache_entry is not None: - logger.debug("Using cached wheel link: %s", cache_entry.link) - if req.link is req.original_link and cache_entry.persistent: - req.cached_wheel_source_link = req.link - if cache_entry.origin is not None: - req.download_info = cache_entry.origin - else: - # Legacy cache entry that does not have origin.json. - # download_info may miss the archive_info.hashes field. - req.download_info = direct_url_from_link( - req.link, link_is_in_wheel_cache=cache_entry.persistent - ) - req.link = cache_entry.link - - def _get_dist_for(self, req: InstallRequirement) -> BaseDistribution: - """Takes a InstallRequirement and returns a single AbstractDist \ - representing a prepared variant of the same. - """ - if req.editable: - return self.preparer.prepare_editable_requirement(req) - - # satisfied_by is only evaluated by calling _check_skip_installed, - # so it must be None here. - assert req.satisfied_by is None - skip_reason = self._check_skip_installed(req) - - if req.satisfied_by: - return self.preparer.prepare_installed_requirement(req, skip_reason) - - # We eagerly populate the link, since that's our "legacy" behavior. - self._populate_link(req) - dist = self.preparer.prepare_linked_requirement(req) - - # NOTE - # The following portion is for determining if a certain package is - # going to be re-installed/upgraded or not and reporting to the user. - # This should probably get cleaned up in a future refactor. - - # req.req is only avail after unpack for URL - # pkgs repeat check_if_exists to uninstall-on-upgrade - # (#14) - if not self.ignore_installed: - req.check_if_exists(self.use_user_site) - - if req.satisfied_by: - should_modify = ( - self.upgrade_strategy != "to-satisfy-only" - or self.force_reinstall - or self.ignore_installed - or req.link.scheme == "file" - ) - if should_modify: - self._set_req_to_reinstall(req) - else: - logger.info( - "Requirement already satisfied (use --upgrade to upgrade): %s", - req, - ) - return dist - - def _resolve_one( - self, - requirement_set: RequirementSet, - req_to_install: InstallRequirement, - ) -> List[InstallRequirement]: - """Prepare a single requirements file. - - :return: A list of additional InstallRequirements to also install. - """ - # Tell user what we are doing for this requirement: - # obtain (editable), skipping, processing (local url), collecting - # (remote url or package name) - if req_to_install.constraint or req_to_install.prepared: - return [] - - req_to_install.prepared = True - - # Parse and return dependencies - dist = self._get_dist_for(req_to_install) - # This will raise UnsupportedPythonVersion if the given Python - # version isn't compatible with the distribution's Requires-Python. - _check_dist_requires_python( - dist, - version_info=self._py_version_info, - ignore_requires_python=self.ignore_requires_python, - ) - - more_reqs: List[InstallRequirement] = [] - - def add_req(subreq: Requirement, extras_requested: Iterable[str]) -> None: - # This idiosyncratically converts the Requirement to str and let - # make_install_req then parse it again into Requirement. But this is - # the legacy resolver so I'm just not going to bother refactoring. - sub_install_req = self._make_install_req(str(subreq), req_to_install) - parent_req_name = req_to_install.name - to_scan_again, add_to_parent = self._add_requirement_to_set( - requirement_set, - sub_install_req, - parent_req_name=parent_req_name, - extras_requested=extras_requested, - ) - if parent_req_name and add_to_parent: - self._discovered_dependencies[parent_req_name].append(add_to_parent) - more_reqs.extend(to_scan_again) - - with indent_log(): - # We add req_to_install before its dependencies, so that we - # can refer to it when adding dependencies. - if not requirement_set.has_requirement(req_to_install.name): - # 'unnamed' requirements will get added here - # 'unnamed' requirements can only come from being directly - # provided by the user. - assert req_to_install.user_supplied - self._add_requirement_to_set( - requirement_set, req_to_install, parent_req_name=None - ) - - if not self.ignore_dependencies: - if req_to_install.extras: - logger.debug( - "Installing extra requirements: %r", - ",".join(req_to_install.extras), - ) - missing_requested = sorted( - set(req_to_install.extras) - set(dist.iter_provided_extras()) - ) - for missing in missing_requested: - logger.warning( - "%s %s does not provide the extra '%s'", - dist.raw_name, - dist.version, - missing, - ) - - available_requested = sorted( - set(dist.iter_provided_extras()) & set(req_to_install.extras) - ) - for subreq in dist.iter_dependencies(available_requested): - add_req(subreq, extras_requested=available_requested) - - return more_reqs - - def get_installation_order( - self, req_set: RequirementSet - ) -> List[InstallRequirement]: - """Create the installation order. - - The installation order is topological - requirements are installed - before the requiring thing. We break cycles at an arbitrary point, - and make no other guarantees. - """ - # The current implementation, which we may change at any point - # installs the user specified things in the order given, except when - # dependencies must come earlier to achieve topological order. - order = [] - ordered_reqs: Set[InstallRequirement] = set() - - def schedule(req: InstallRequirement) -> None: - if req.satisfied_by or req in ordered_reqs: - return - if req.constraint: - return - ordered_reqs.add(req) - for dep in self._discovered_dependencies[req.name]: - schedule(dep) - order.append(req) - - for install_req in req_set.requirements.values(): - schedule(install_req) - return order diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index edcf18bf1acabe71981f8131f26372e95ce946fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmYk0O$x#=5QS6eLIe-uq8-JJ3lUG?LJtsPI<`a8B;=>iy_fMyZoP#o6I|$n_stJ) zV9av4U`hAle9QHf@vkBc$7Ek7H0;7w#p%IZUjOip(3t_DjU=6s7y?1R^WdcumULTL z(|8zBkD%xZb_$)*+j_GGPXQ|{WG`CuV95d}9nfi^z@axP1~U5Fj+l>m3Q*v@w$pRI PA50S!9`ZYWmQb<}Q#&}g diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc deleted file mode 100644 index 5ebb7b66d848597ca92aaa2ee4550f6210c2d893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6263 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 G&i?@%teztP diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc deleted file mode 100644 index 870e875b276483ac7e52831f6bcb71fe463d2116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4870 zcmcIoNpBp-6|P>U+0&fiu02XRiXC|rYG}hrpo1*Pp%jO4KnIaxAcGjqW>*c_VlTt0 z9#SMmfE5a`5g-V1%2hrR{tx*fea$6Cjy`3x^S$a>NJhLC?!RX>EMrZjPMwi}We4Z~n zV|+o(A6cDq+mN0A^b4o{$8x&!jDjmIr@~} z&HEW|d)_L^#M#zFN;f8=eyse^zp*Fe!3{skRRP6$Pe{zlv$nrh_;I$ECwoG9T~S2a zn7-_b$At_d(!1>U@+@0Yp3=t3t+` zeOkv)MG?aAuv!qC+!j)Fb1AUNegx&%kn~{|{-j|R339`Z5Is+jm+$-7e1^}w4uD~sT{i^!`j{#04!T?8KwI`?DhrhZ%viWhrjyy{b2Pc z_gCLvTYs;#-pvk5cNM0Gn~5mhwSo>Im!#Pgb_E;L27%j$|H*qKH>^ZmAU&$*_l|ZuWAnR`x`;x01x0D?K1J z&)#mo_2vrhtGGGbs9Nd8y_F!&U^UKpMG6f>9C}sV6Es;{6pSrU?cPB-9gr6Tx_8Cv zbeM>n%>3AK8is3_hBGW1hW$5rfi_qlJ25iR9{n6t#(?-48c*4P=|g6Z*tYQmP#6Nk z0uTTV0Aq328`uCwZBWy|xPo>~&oKcEO9R8JfDyhA^!;zJp?!l>@p}jmz`nkcLxkKM zZ%&`^*i}06tbg#3f=0i$B||RSz#srNLewN25a@uKD*9+OVS+HC{DW8|94PI^QWaHf z7%wmkbgx99)^i4h6h$M^D}1#R_j)JcKg67l%r8J+s{(fA0!~TJp*VKrMXD2k{uSQOR(P1d55OW=& zWP%t9CF~Kfu~U;*hxjs|o76{WIfbUzAv;2oIYd)6+uSqct!g%*YlyJF{vQ!GMh$>8 zgoKVr6TFQ=*2&0JCBF(2Au>}HhjGxOxbz=Ufg?%6=)Z@BR;DqXB0Z!?$vT4%qb%`; zZJGDCw)I`mSXO>cK%YQgEz^Y%lJdG%hvAoA5%CzwpLhZ#;>{{gBfBCx%c8m`(BS8| zE)qdkt3uj~_re5bomvk`J?v7fri^{o96#>TRYW?6_edZU`$CSQwz7`@dbLBrDaa`w1)$!nfbN+NAU}zjp5+<#*YXO4C{dpJ)zP|(PyH5!VBnyvV{)To zaZ}h}kTu~{?2%hyO1NN(wy5)(@WeFwU1FVJd<`(gCOBks%pYgas*!xxPAqSr;XU`D4A~0Mn1Yb0Gw?Ag3a9L>wySk<#WNI^mN_E7N*ZKQ4%Zo%BqFz%w)iR{3DDI~5|!`j#k=!@;?9 zJTB*l847(v-cruR8Td&LHxv4Un5&4G*yu-fO3JJF)HhHJz{dgx9>xL$O_b)qMrm>O zfE^p_ExYuB@uH|t7FwW~PU-PP-#qH4S8vryTZyDAuVS$(iF}i4-=gBoO>zTFkBcDa zV^Fy$oGAyF#WM~so<#*d8O7{})NVUy?C^#Z(I zBkR~G7uWM*Z4}i6zb|DjkpPMB$m>*`F?Bj1uYee(LGTpgU(!;peR$Q)DXDD3IHZz=^Usv@LnQu&Ez?pv{?6)F!P@SeG8B<}-I--eX5Z zlCAYqOOa``)Z6&fH55d=K59HM3Y`9tUJ&UH3lg!~HR6EeGv@NOVYU5cX++0H z6dg3 zOACQsewRiFD{`5N?^E#u6lI+rK?Q_WSx;miZxIA~d5gv;ejlSxQV2`%=``yy+c4c3 z)BMV@%zv4-`A?_j{bQlA;LLcQvt(%L)_HlGwB1Ef&PF*Nd-yLyo~d@Y8A-Y;rBfWx z!%EVnsf-+Nv)U5vLsEL~T*a%Z9pLfBbJ?z*TA0}$(rZcoY{K60hSqM7?@)Vw^gtgw ztHS&k?%K|mZMSr9R|j&3K&r@VHgmm(@frZ$FfU@upc9SDmN{=4=GP8=ruUV3{$y*( F|2MA}HJtze diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc deleted file mode 100644 index 10c03a9e05393111088d78379331abb9a574fe0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7938 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc deleted file mode 100644 index ec8191e62bc0d59d0256429f77b68aea02ad1858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8755 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 str: - if not extras: - return project - extras_expr = ",".join(sorted(extras)) - return f"{project}[{extras_expr}]" - - -class Constraint: - def __init__( - self, specifier: SpecifierSet, hashes: Hashes, links: FrozenSet[Link] - ) -> None: - self.specifier = specifier - self.hashes = hashes - self.links = links - - @classmethod - def empty(cls) -> "Constraint": - return Constraint(SpecifierSet(), Hashes(), frozenset()) - - @classmethod - def from_ireq(cls, ireq: InstallRequirement) -> "Constraint": - links = frozenset([ireq.link]) if ireq.link else frozenset() - return Constraint(ireq.specifier, ireq.hashes(trust_internet=False), links) - - def __bool__(self) -> bool: - return bool(self.specifier) or bool(self.hashes) or bool(self.links) - - def __and__(self, other: InstallRequirement) -> "Constraint": - if not isinstance(other, InstallRequirement): - return NotImplemented - specifier = self.specifier & other.specifier - hashes = self.hashes & other.hashes(trust_internet=False) - links = self.links - if other.link: - links = links.union([other.link]) - return Constraint(specifier, hashes, links) - - def is_satisfied_by(self, candidate: "Candidate") -> bool: - # Reject if there are any mismatched URL constraints on this package. - if self.links and not all(_match_link(link, candidate) for link in self.links): - return False - # We can safely always allow prereleases here since PackageFinder - # already implements the prerelease logic, and would have filtered out - # prerelease candidates if the user does not expect them. - return self.specifier.contains(candidate.version, prereleases=True) - - -class Requirement: - @property - def project_name(self) -> NormalizedName: - """The "project name" of a requirement. - - This is different from ``name`` if this requirement contains extras, - in which case ``name`` would contain the ``[...]`` part, while this - refers to the name of the project. - """ - raise NotImplementedError("Subclass should override") - - @property - def name(self) -> str: - """The name identifying this requirement in the resolver. - - This is different from ``project_name`` if this requirement contains - extras, where ``project_name`` would not contain the ``[...]`` part. - """ - raise NotImplementedError("Subclass should override") - - def is_satisfied_by(self, candidate: "Candidate") -> bool: - return False - - def get_candidate_lookup(self) -> CandidateLookup: - raise NotImplementedError("Subclass should override") - - def format_for_error(self) -> str: - raise NotImplementedError("Subclass should override") - - -def _match_link(link: Link, candidate: "Candidate") -> bool: - if candidate.source_link: - return links_equivalent(link, candidate.source_link) - return False - - -class Candidate: - @property - def project_name(self) -> NormalizedName: - """The "project name" of the candidate. - - This is different from ``name`` if this candidate contains extras, - in which case ``name`` would contain the ``[...]`` part, while this - refers to the name of the project. - """ - raise NotImplementedError("Override in subclass") - - @property - def name(self) -> str: - """The name identifying this candidate in the resolver. - - This is different from ``project_name`` if this candidate contains - extras, where ``project_name`` would not contain the ``[...]`` part. - """ - raise NotImplementedError("Override in subclass") - - @property - def version(self) -> CandidateVersion: - raise NotImplementedError("Override in subclass") - - @property - def is_installed(self) -> bool: - raise NotImplementedError("Override in subclass") - - @property - def is_editable(self) -> bool: - raise NotImplementedError("Override in subclass") - - @property - def source_link(self) -> Optional[Link]: - raise NotImplementedError("Override in subclass") - - def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: - raise NotImplementedError("Override in subclass") - - def get_install_requirement(self) -> Optional[InstallRequirement]: - raise NotImplementedError("Override in subclass") - - def format_for_error(self) -> str: - raise NotImplementedError("Subclass should override") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py deleted file mode 100644 index 4125cda..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py +++ /dev/null @@ -1,597 +0,0 @@ -import logging -import sys -from typing import TYPE_CHECKING, Any, FrozenSet, Iterable, Optional, Tuple, Union, cast - -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.packaging.version import Version - -from pip._internal.exceptions import ( - HashError, - InstallationSubprocessError, - MetadataInconsistent, -) -from pip._internal.metadata import BaseDistribution -from pip._internal.models.link import Link, links_equivalent -from pip._internal.models.wheel import Wheel -from pip._internal.req.constructors import ( - install_req_from_editable, - install_req_from_line, -) -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.direct_url_helpers import direct_url_from_link -from pip._internal.utils.misc import normalize_version_info - -from .base import Candidate, CandidateVersion, Requirement, format_name - -if TYPE_CHECKING: - from .factory import Factory - -logger = logging.getLogger(__name__) - -BaseCandidate = Union[ - "AlreadyInstalledCandidate", - "EditableCandidate", - "LinkCandidate", -] - -# Avoid conflicting with the PyPI package "Python". -REQUIRES_PYTHON_IDENTIFIER = cast(NormalizedName, "") - - -def as_base_candidate(candidate: Candidate) -> Optional[BaseCandidate]: - """The runtime version of BaseCandidate.""" - base_candidate_classes = ( - AlreadyInstalledCandidate, - EditableCandidate, - LinkCandidate, - ) - if isinstance(candidate, base_candidate_classes): - return candidate - return None - - -def make_install_req_from_link( - link: Link, template: InstallRequirement -) -> InstallRequirement: - assert not template.editable, "template is editable" - if template.req: - line = str(template.req) - else: - line = link.url - ireq = install_req_from_line( - line, - user_supplied=template.user_supplied, - comes_from=template.comes_from, - use_pep517=template.use_pep517, - isolated=template.isolated, - constraint=template.constraint, - global_options=template.global_options, - hash_options=template.hash_options, - config_settings=template.config_settings, - ) - ireq.original_link = template.original_link - ireq.link = link - ireq.extras = template.extras - return ireq - - -def make_install_req_from_editable( - link: Link, template: InstallRequirement -) -> InstallRequirement: - assert template.editable, "template not editable" - ireq = install_req_from_editable( - link.url, - user_supplied=template.user_supplied, - comes_from=template.comes_from, - use_pep517=template.use_pep517, - isolated=template.isolated, - constraint=template.constraint, - permit_editable_wheels=template.permit_editable_wheels, - global_options=template.global_options, - hash_options=template.hash_options, - config_settings=template.config_settings, - ) - ireq.extras = template.extras - return ireq - - -def _make_install_req_from_dist( - dist: BaseDistribution, template: InstallRequirement -) -> InstallRequirement: - if template.req: - line = str(template.req) - elif template.link: - line = f"{dist.canonical_name} @ {template.link.url}" - else: - line = f"{dist.canonical_name}=={dist.version}" - ireq = install_req_from_line( - line, - user_supplied=template.user_supplied, - comes_from=template.comes_from, - use_pep517=template.use_pep517, - isolated=template.isolated, - constraint=template.constraint, - global_options=template.global_options, - hash_options=template.hash_options, - config_settings=template.config_settings, - ) - ireq.satisfied_by = dist - return ireq - - -class _InstallRequirementBackedCandidate(Candidate): - """A candidate backed by an ``InstallRequirement``. - - This represents a package request with the target not being already - in the environment, and needs to be fetched and installed. The backing - ``InstallRequirement`` is responsible for most of the leg work; this - class exposes appropriate information to the resolver. - - :param link: The link passed to the ``InstallRequirement``. The backing - ``InstallRequirement`` will use this link to fetch the distribution. - :param source_link: The link this candidate "originates" from. This is - different from ``link`` when the link is found in the wheel cache. - ``link`` would point to the wheel cache, while this points to the - found remote link (e.g. from pypi.org). - """ - - dist: BaseDistribution - is_installed = False - - def __init__( - self, - link: Link, - source_link: Link, - ireq: InstallRequirement, - factory: "Factory", - name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, - ) -> None: - self._link = link - self._source_link = source_link - self._factory = factory - self._ireq = ireq - self._name = name - self._version = version - self.dist = self._prepare() - - def __str__(self) -> str: - return f"{self.name} {self.version}" - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({str(self._link)!r})" - - def __hash__(self) -> int: - return hash((self.__class__, self._link)) - - def __eq__(self, other: Any) -> bool: - if isinstance(other, self.__class__): - return links_equivalent(self._link, other._link) - return False - - @property - def source_link(self) -> Optional[Link]: - return self._source_link - - @property - def project_name(self) -> NormalizedName: - """The normalised name of the project the candidate refers to""" - if self._name is None: - self._name = self.dist.canonical_name - return self._name - - @property - def name(self) -> str: - return self.project_name - - @property - def version(self) -> CandidateVersion: - if self._version is None: - self._version = self.dist.version - return self._version - - def format_for_error(self) -> str: - return "{} {} (from {})".format( - self.name, - self.version, - self._link.file_path if self._link.is_file else self._link, - ) - - def _prepare_distribution(self) -> BaseDistribution: - raise NotImplementedError("Override in subclass") - - def _check_metadata_consistency(self, dist: BaseDistribution) -> None: - """Check for consistency of project name and version of dist.""" - if self._name is not None and self._name != dist.canonical_name: - raise MetadataInconsistent( - self._ireq, - "name", - self._name, - dist.canonical_name, - ) - if self._version is not None and self._version != dist.version: - raise MetadataInconsistent( - self._ireq, - "version", - str(self._version), - str(dist.version), - ) - - def _prepare(self) -> BaseDistribution: - try: - dist = self._prepare_distribution() - except HashError as e: - # Provide HashError the underlying ireq that caused it. This - # provides context for the resulting error message to show the - # offending line to the user. - e.req = self._ireq - raise - except InstallationSubprocessError as exc: - # The output has been presented already, so don't duplicate it. - exc.context = "See above for output." - raise - - self._check_metadata_consistency(dist) - return dist - - def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: - requires = self.dist.iter_dependencies() if with_requires else () - for r in requires: - yield from self._factory.make_requirements_from_spec(str(r), self._ireq) - yield self._factory.make_requires_python_requirement(self.dist.requires_python) - - def get_install_requirement(self) -> Optional[InstallRequirement]: - return self._ireq - - -class LinkCandidate(_InstallRequirementBackedCandidate): - is_editable = False - - def __init__( - self, - link: Link, - template: InstallRequirement, - factory: "Factory", - name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, - ) -> None: - source_link = link - cache_entry = factory.get_wheel_cache_entry(source_link, name) - if cache_entry is not None: - logger.debug("Using cached wheel link: %s", cache_entry.link) - link = cache_entry.link - ireq = make_install_req_from_link(link, template) - assert ireq.link == link - if ireq.link.is_wheel and not ireq.link.is_file: - wheel = Wheel(ireq.link.filename) - wheel_name = canonicalize_name(wheel.name) - assert name == wheel_name, f"{name!r} != {wheel_name!r} for wheel" - # Version may not be present for PEP 508 direct URLs - if version is not None: - wheel_version = Version(wheel.version) - assert version == wheel_version, "{!r} != {!r} for wheel {}".format( - version, wheel_version, name - ) - - if cache_entry is not None: - assert ireq.link.is_wheel - assert ireq.link.is_file - if cache_entry.persistent and template.link is template.original_link: - ireq.cached_wheel_source_link = source_link - if cache_entry.origin is not None: - ireq.download_info = cache_entry.origin - else: - # Legacy cache entry that does not have origin.json. - # download_info may miss the archive_info.hashes field. - ireq.download_info = direct_url_from_link( - source_link, link_is_in_wheel_cache=cache_entry.persistent - ) - - super().__init__( - link=link, - source_link=source_link, - ireq=ireq, - factory=factory, - name=name, - version=version, - ) - - def _prepare_distribution(self) -> BaseDistribution: - preparer = self._factory.preparer - return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) - - -class EditableCandidate(_InstallRequirementBackedCandidate): - is_editable = True - - def __init__( - self, - link: Link, - template: InstallRequirement, - factory: "Factory", - name: Optional[NormalizedName] = None, - version: Optional[CandidateVersion] = None, - ) -> None: - super().__init__( - link=link, - source_link=link, - ireq=make_install_req_from_editable(link, template), - factory=factory, - name=name, - version=version, - ) - - def _prepare_distribution(self) -> BaseDistribution: - return self._factory.preparer.prepare_editable_requirement(self._ireq) - - -class AlreadyInstalledCandidate(Candidate): - is_installed = True - source_link = None - - def __init__( - self, - dist: BaseDistribution, - template: InstallRequirement, - factory: "Factory", - ) -> None: - self.dist = dist - self._ireq = _make_install_req_from_dist(dist, template) - self._factory = factory - self._version = None - - # This is just logging some messages, so we can do it eagerly. - # The returned dist would be exactly the same as self.dist because we - # set satisfied_by in _make_install_req_from_dist. - # TODO: Supply reason based on force_reinstall and upgrade_strategy. - skip_reason = "already satisfied" - factory.preparer.prepare_installed_requirement(self._ireq, skip_reason) - - def __str__(self) -> str: - return str(self.dist) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self.dist!r})" - - def __hash__(self) -> int: - return hash((self.__class__, self.name, self.version)) - - def __eq__(self, other: Any) -> bool: - if isinstance(other, self.__class__): - return self.name == other.name and self.version == other.version - return False - - @property - def project_name(self) -> NormalizedName: - return self.dist.canonical_name - - @property - def name(self) -> str: - return self.project_name - - @property - def version(self) -> CandidateVersion: - if self._version is None: - self._version = self.dist.version - return self._version - - @property - def is_editable(self) -> bool: - return self.dist.editable - - def format_for_error(self) -> str: - return f"{self.name} {self.version} (Installed)" - - def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: - if not with_requires: - return - for r in self.dist.iter_dependencies(): - yield from self._factory.make_requirements_from_spec(str(r), self._ireq) - - def get_install_requirement(self) -> Optional[InstallRequirement]: - return None - - -class ExtrasCandidate(Candidate): - """A candidate that has 'extras', indicating additional dependencies. - - Requirements can be for a project with dependencies, something like - foo[extra]. The extras don't affect the project/version being installed - directly, but indicate that we need additional dependencies. We model that - by having an artificial ExtrasCandidate that wraps the "base" candidate. - - The ExtrasCandidate differs from the base in the following ways: - - 1. It has a unique name, of the form foo[extra]. This causes the resolver - to treat it as a separate node in the dependency graph. - 2. When we're getting the candidate's dependencies, - a) We specify that we want the extra dependencies as well. - b) We add a dependency on the base candidate. - See below for why this is needed. - 3. We return None for the underlying InstallRequirement, as the base - candidate will provide it, and we don't want to end up with duplicates. - - The dependency on the base candidate is needed so that the resolver can't - decide that it should recommend foo[extra1] version 1.0 and foo[extra2] - version 2.0. Having those candidates depend on foo=1.0 and foo=2.0 - respectively forces the resolver to recognise that this is a conflict. - """ - - def __init__( - self, - base: BaseCandidate, - extras: FrozenSet[str], - *, - comes_from: Optional[InstallRequirement] = None, - ) -> None: - """ - :param comes_from: the InstallRequirement that led to this candidate if it - differs from the base's InstallRequirement. This will often be the - case in the sense that this candidate's requirement has the extras - while the base's does not. Unlike the InstallRequirement backed - candidates, this requirement is used solely for reporting purposes, - it does not do any leg work. - """ - self.base = base - self.extras = frozenset(canonicalize_name(e) for e in extras) - # If any extras are requested in their non-normalized forms, keep track - # of their raw values. This is needed when we look up dependencies - # since PEP 685 has not been implemented for marker-matching, and using - # the non-normalized extra for lookup ensures the user can select a - # non-normalized extra in a package with its non-normalized form. - # TODO: Remove this attribute when packaging is upgraded to support the - # marker comparison logic specified in PEP 685. - self._unnormalized_extras = extras.difference(self.extras) - self._comes_from = comes_from if comes_from is not None else self.base._ireq - - def __str__(self) -> str: - name, rest = str(self.base).split(" ", 1) - return "{}[{}] {}".format(name, ",".join(self.extras), rest) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}(base={self.base!r}, extras={self.extras!r})" - - def __hash__(self) -> int: - return hash((self.base, self.extras)) - - def __eq__(self, other: Any) -> bool: - if isinstance(other, self.__class__): - return self.base == other.base and self.extras == other.extras - return False - - @property - def project_name(self) -> NormalizedName: - return self.base.project_name - - @property - def name(self) -> str: - """The normalised name of the project the candidate refers to""" - return format_name(self.base.project_name, self.extras) - - @property - def version(self) -> CandidateVersion: - return self.base.version - - def format_for_error(self) -> str: - return "{} [{}]".format( - self.base.format_for_error(), ", ".join(sorted(self.extras)) - ) - - @property - def is_installed(self) -> bool: - return self.base.is_installed - - @property - def is_editable(self) -> bool: - return self.base.is_editable - - @property - def source_link(self) -> Optional[Link]: - return self.base.source_link - - def _warn_invalid_extras( - self, - requested: FrozenSet[str], - valid: FrozenSet[str], - ) -> None: - """Emit warnings for invalid extras being requested. - - This emits a warning for each requested extra that is not in the - candidate's ``Provides-Extra`` list. - """ - invalid_extras_to_warn = frozenset( - extra - for extra in requested - if extra not in valid - # If an extra is requested in an unnormalized form, skip warning - # about the normalized form being missing. - and extra in self.extras - ) - if not invalid_extras_to_warn: - return - for extra in sorted(invalid_extras_to_warn): - logger.warning( - "%s %s does not provide the extra '%s'", - self.base.name, - self.version, - extra, - ) - - def _calculate_valid_requested_extras(self) -> FrozenSet[str]: - """Get a list of valid extras requested by this candidate. - - The user (or upstream dependant) may have specified extras that the - candidate doesn't support. Any unsupported extras are dropped, and each - cause a warning to be logged here. - """ - requested_extras = self.extras.union(self._unnormalized_extras) - valid_extras = frozenset( - extra - for extra in requested_extras - if self.base.dist.is_extra_provided(extra) - ) - self._warn_invalid_extras(requested_extras, valid_extras) - return valid_extras - - def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: - factory = self.base._factory - - # Add a dependency on the exact base - # (See note 2b in the class docstring) - yield factory.make_requirement_from_candidate(self.base) - if not with_requires: - return - - valid_extras = self._calculate_valid_requested_extras() - for r in self.base.dist.iter_dependencies(valid_extras): - yield from factory.make_requirements_from_spec( - str(r), - self._comes_from, - valid_extras, - ) - - def get_install_requirement(self) -> Optional[InstallRequirement]: - # We don't return anything here, because we always - # depend on the base candidate, and we'll get the - # install requirement from that. - return None - - -class RequiresPythonCandidate(Candidate): - is_installed = False - source_link = None - - def __init__(self, py_version_info: Optional[Tuple[int, ...]]) -> None: - if py_version_info is not None: - version_info = normalize_version_info(py_version_info) - else: - version_info = sys.version_info[:3] - self._version = Version(".".join(str(c) for c in version_info)) - - # We don't need to implement __eq__() and __ne__() since there is always - # only one RequiresPythonCandidate in a resolution, i.e. the host Python. - # The built-in object.__eq__() and object.__ne__() do exactly what we want. - - def __str__(self) -> str: - return f"Python {self._version}" - - @property - def project_name(self) -> NormalizedName: - return REQUIRES_PYTHON_IDENTIFIER - - @property - def name(self) -> str: - return REQUIRES_PYTHON_IDENTIFIER - - @property - def version(self) -> CandidateVersion: - return self._version - - def format_for_error(self) -> str: - return f"Python {self.version}" - - def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: - return () - - def get_install_requirement(self) -> Optional[InstallRequirement]: - return None diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py deleted file mode 100644 index 4adeb43..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py +++ /dev/null @@ -1,812 +0,0 @@ -import contextlib -import functools -import logging -from typing import ( - TYPE_CHECKING, - Dict, - FrozenSet, - Iterable, - Iterator, - List, - Mapping, - NamedTuple, - Optional, - Sequence, - Set, - Tuple, - TypeVar, - cast, -) - -from pip._vendor.packaging.requirements import InvalidRequirement -from pip._vendor.packaging.specifiers import SpecifierSet -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name -from pip._vendor.resolvelib import ResolutionImpossible - -from pip._internal.cache import CacheEntry, WheelCache -from pip._internal.exceptions import ( - DistributionNotFound, - InstallationError, - MetadataInconsistent, - UnsupportedPythonVersion, - UnsupportedWheel, -) -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import BaseDistribution, get_default_environment -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.operations.prepare import RequirementPreparer -from pip._internal.req.constructors import ( - install_req_drop_extras, - install_req_from_link_and_ireq, -) -from pip._internal.req.req_install import ( - InstallRequirement, - check_invalid_constraint_type, -) -from pip._internal.resolution.base import InstallRequirementProvider -from pip._internal.utils.compatibility_tags import get_supported -from pip._internal.utils.hashes import Hashes -from pip._internal.utils.packaging import get_requirement -from pip._internal.utils.virtualenv import running_under_virtualenv - -from .base import Candidate, CandidateVersion, Constraint, Requirement -from .candidates import ( - AlreadyInstalledCandidate, - BaseCandidate, - EditableCandidate, - ExtrasCandidate, - LinkCandidate, - RequiresPythonCandidate, - as_base_candidate, -) -from .found_candidates import FoundCandidates, IndexCandidateInfo -from .requirements import ( - ExplicitRequirement, - RequiresPythonRequirement, - SpecifierRequirement, - SpecifierWithoutExtrasRequirement, - UnsatisfiableRequirement, -) - -if TYPE_CHECKING: - from typing import Protocol - - class ConflictCause(Protocol): - requirement: RequiresPythonRequirement - parent: Candidate - - -logger = logging.getLogger(__name__) - -C = TypeVar("C") -Cache = Dict[Link, C] - - -class CollectedRootRequirements(NamedTuple): - requirements: List[Requirement] - constraints: Dict[str, Constraint] - user_requested: Dict[str, int] - - -class Factory: - def __init__( - self, - finder: PackageFinder, - preparer: RequirementPreparer, - make_install_req: InstallRequirementProvider, - wheel_cache: Optional[WheelCache], - use_user_site: bool, - force_reinstall: bool, - ignore_installed: bool, - ignore_requires_python: bool, - py_version_info: Optional[Tuple[int, ...]] = None, - ) -> None: - self._finder = finder - self.preparer = preparer - self._wheel_cache = wheel_cache - self._python_candidate = RequiresPythonCandidate(py_version_info) - self._make_install_req_from_spec = make_install_req - self._use_user_site = use_user_site - self._force_reinstall = force_reinstall - self._ignore_requires_python = ignore_requires_python - - self._build_failures: Cache[InstallationError] = {} - self._link_candidate_cache: Cache[LinkCandidate] = {} - self._editable_candidate_cache: Cache[EditableCandidate] = {} - self._installed_candidate_cache: Dict[str, AlreadyInstalledCandidate] = {} - self._extras_candidate_cache: Dict[ - Tuple[int, FrozenSet[NormalizedName]], ExtrasCandidate - ] = {} - - if not ignore_installed: - env = get_default_environment() - self._installed_dists = { - dist.canonical_name: dist - for dist in env.iter_installed_distributions(local_only=False) - } - else: - self._installed_dists = {} - - @property - def force_reinstall(self) -> bool: - return self._force_reinstall - - def _fail_if_link_is_unsupported_wheel(self, link: Link) -> None: - if not link.is_wheel: - return - wheel = Wheel(link.filename) - if wheel.supported(self._finder.target_python.get_unsorted_tags()): - return - msg = f"{link.filename} is not a supported wheel on this platform." - raise UnsupportedWheel(msg) - - def _make_extras_candidate( - self, - base: BaseCandidate, - extras: FrozenSet[str], - *, - comes_from: Optional[InstallRequirement] = None, - ) -> ExtrasCandidate: - cache_key = (id(base), frozenset(canonicalize_name(e) for e in extras)) - try: - candidate = self._extras_candidate_cache[cache_key] - except KeyError: - candidate = ExtrasCandidate(base, extras, comes_from=comes_from) - self._extras_candidate_cache[cache_key] = candidate - return candidate - - def _make_candidate_from_dist( - self, - dist: BaseDistribution, - extras: FrozenSet[str], - template: InstallRequirement, - ) -> Candidate: - try: - base = self._installed_candidate_cache[dist.canonical_name] - except KeyError: - base = AlreadyInstalledCandidate(dist, template, factory=self) - self._installed_candidate_cache[dist.canonical_name] = base - if not extras: - return base - return self._make_extras_candidate(base, extras, comes_from=template) - - def _make_candidate_from_link( - self, - link: Link, - extras: FrozenSet[str], - template: InstallRequirement, - name: Optional[NormalizedName], - version: Optional[CandidateVersion], - ) -> Optional[Candidate]: - base: Optional[BaseCandidate] = self._make_base_candidate_from_link( - link, template, name, version - ) - if not extras or base is None: - return base - return self._make_extras_candidate(base, extras, comes_from=template) - - def _make_base_candidate_from_link( - self, - link: Link, - template: InstallRequirement, - name: Optional[NormalizedName], - version: Optional[CandidateVersion], - ) -> Optional[BaseCandidate]: - # TODO: Check already installed candidate, and use it if the link and - # editable flag match. - - if link in self._build_failures: - # We already tried this candidate before, and it does not build. - # Don't bother trying again. - return None - - if template.editable: - if link not in self._editable_candidate_cache: - try: - self._editable_candidate_cache[link] = EditableCandidate( - link, - template, - factory=self, - name=name, - version=version, - ) - except MetadataInconsistent as e: - logger.info( - "Discarding [blue underline]%s[/]: [yellow]%s[reset]", - link, - e, - extra={"markup": True}, - ) - self._build_failures[link] = e - return None - - return self._editable_candidate_cache[link] - else: - if link not in self._link_candidate_cache: - try: - self._link_candidate_cache[link] = LinkCandidate( - link, - template, - factory=self, - name=name, - version=version, - ) - except MetadataInconsistent as e: - logger.info( - "Discarding [blue underline]%s[/]: [yellow]%s[reset]", - link, - e, - extra={"markup": True}, - ) - self._build_failures[link] = e - return None - return self._link_candidate_cache[link] - - def _iter_found_candidates( - self, - ireqs: Sequence[InstallRequirement], - specifier: SpecifierSet, - hashes: Hashes, - prefers_installed: bool, - incompatible_ids: Set[int], - ) -> Iterable[Candidate]: - if not ireqs: - return () - - # The InstallRequirement implementation requires us to give it a - # "template". Here we just choose the first requirement to represent - # all of them. - # Hopefully the Project model can correct this mismatch in the future. - template = ireqs[0] - assert template.req, "Candidates found on index must be PEP 508" - name = canonicalize_name(template.req.name) - - extras: FrozenSet[str] = frozenset() - for ireq in ireqs: - assert ireq.req, "Candidates found on index must be PEP 508" - specifier &= ireq.req.specifier - hashes &= ireq.hashes(trust_internet=False) - extras |= frozenset(ireq.extras) - - def _get_installed_candidate() -> Optional[Candidate]: - """Get the candidate for the currently-installed version.""" - # If --force-reinstall is set, we want the version from the index - # instead, so we "pretend" there is nothing installed. - if self._force_reinstall: - return None - try: - installed_dist = self._installed_dists[name] - except KeyError: - return None - # Don't use the installed distribution if its version does not fit - # the current dependency graph. - if not specifier.contains(installed_dist.version, prereleases=True): - return None - candidate = self._make_candidate_from_dist( - dist=installed_dist, - extras=extras, - template=template, - ) - # The candidate is a known incompatibility. Don't use it. - if id(candidate) in incompatible_ids: - return None - return candidate - - def iter_index_candidate_infos() -> Iterator[IndexCandidateInfo]: - result = self._finder.find_best_candidate( - project_name=name, - specifier=specifier, - hashes=hashes, - ) - icans = list(result.iter_applicable()) - - # PEP 592: Yanked releases are ignored unless the specifier - # explicitly pins a version (via '==' or '===') that can be - # solely satisfied by a yanked release. - all_yanked = all(ican.link.is_yanked for ican in icans) - - def is_pinned(specifier: SpecifierSet) -> bool: - for sp in specifier: - if sp.operator == "===": - return True - if sp.operator != "==": - continue - if sp.version.endswith(".*"): - continue - return True - return False - - pinned = is_pinned(specifier) - - # PackageFinder returns earlier versions first, so we reverse. - for ican in reversed(icans): - if not (all_yanked and pinned) and ican.link.is_yanked: - continue - func = functools.partial( - self._make_candidate_from_link, - link=ican.link, - extras=extras, - template=template, - name=name, - version=ican.version, - ) - yield ican.version, func - - return FoundCandidates( - iter_index_candidate_infos, - _get_installed_candidate(), - prefers_installed, - incompatible_ids, - ) - - def _iter_explicit_candidates_from_base( - self, - base_requirements: Iterable[Requirement], - extras: FrozenSet[str], - ) -> Iterator[Candidate]: - """Produce explicit candidates from the base given an extra-ed package. - - :param base_requirements: Requirements known to the resolver. The - requirements are guaranteed to not have extras. - :param extras: The extras to inject into the explicit requirements' - candidates. - """ - for req in base_requirements: - lookup_cand, _ = req.get_candidate_lookup() - if lookup_cand is None: # Not explicit. - continue - # We've stripped extras from the identifier, and should always - # get a BaseCandidate here, unless there's a bug elsewhere. - base_cand = as_base_candidate(lookup_cand) - assert base_cand is not None, "no extras here" - yield self._make_extras_candidate(base_cand, extras) - - def _iter_candidates_from_constraints( - self, - identifier: str, - constraint: Constraint, - template: InstallRequirement, - ) -> Iterator[Candidate]: - """Produce explicit candidates from constraints. - - This creates "fake" InstallRequirement objects that are basically clones - of what "should" be the template, but with original_link set to link. - """ - for link in constraint.links: - self._fail_if_link_is_unsupported_wheel(link) - candidate = self._make_base_candidate_from_link( - link, - template=install_req_from_link_and_ireq(link, template), - name=canonicalize_name(identifier), - version=None, - ) - if candidate: - yield candidate - - def find_candidates( - self, - identifier: str, - requirements: Mapping[str, Iterable[Requirement]], - incompatibilities: Mapping[str, Iterator[Candidate]], - constraint: Constraint, - prefers_installed: bool, - ) -> Iterable[Candidate]: - # Collect basic lookup information from the requirements. - explicit_candidates: Set[Candidate] = set() - ireqs: List[InstallRequirement] = [] - for req in requirements[identifier]: - cand, ireq = req.get_candidate_lookup() - if cand is not None: - explicit_candidates.add(cand) - if ireq is not None: - ireqs.append(ireq) - - # If the current identifier contains extras, add requires and explicit - # candidates from entries from extra-less identifier. - with contextlib.suppress(InvalidRequirement): - parsed_requirement = get_requirement(identifier) - if parsed_requirement.name != identifier: - explicit_candidates.update( - self._iter_explicit_candidates_from_base( - requirements.get(parsed_requirement.name, ()), - frozenset(parsed_requirement.extras), - ), - ) - for req in requirements.get(parsed_requirement.name, []): - _, ireq = req.get_candidate_lookup() - if ireq is not None: - ireqs.append(ireq) - - # Add explicit candidates from constraints. We only do this if there are - # known ireqs, which represent requirements not already explicit. If - # there are no ireqs, we're constraining already-explicit requirements, - # which is handled later when we return the explicit candidates. - if ireqs: - try: - explicit_candidates.update( - self._iter_candidates_from_constraints( - identifier, - constraint, - template=ireqs[0], - ), - ) - except UnsupportedWheel: - # If we're constrained to install a wheel incompatible with the - # target architecture, no candidates will ever be valid. - return () - - # Since we cache all the candidates, incompatibility identification - # can be made quicker by comparing only the id() values. - incompat_ids = {id(c) for c in incompatibilities.get(identifier, ())} - - # If none of the requirements want an explicit candidate, we can ask - # the finder for candidates. - if not explicit_candidates: - return self._iter_found_candidates( - ireqs, - constraint.specifier, - constraint.hashes, - prefers_installed, - incompat_ids, - ) - - return ( - c - for c in explicit_candidates - if id(c) not in incompat_ids - and constraint.is_satisfied_by(c) - and all(req.is_satisfied_by(c) for req in requirements[identifier]) - ) - - def _make_requirements_from_install_req( - self, ireq: InstallRequirement, requested_extras: Iterable[str] - ) -> Iterator[Requirement]: - """ - Returns requirement objects associated with the given InstallRequirement. In - most cases this will be a single object but the following special cases exist: - - the InstallRequirement has markers that do not apply -> result is empty - - the InstallRequirement has both a constraint (or link) and extras - -> result is split in two requirement objects: one with the constraint - (or link) and one with the extra. This allows centralized constraint - handling for the base, resulting in fewer candidate rejections. - """ - if not ireq.match_markers(requested_extras): - logger.info( - "Ignoring %s: markers '%s' don't match your environment", - ireq.name, - ireq.markers, - ) - elif not ireq.link: - if ireq.extras and ireq.req is not None and ireq.req.specifier: - yield SpecifierWithoutExtrasRequirement(ireq) - yield SpecifierRequirement(ireq) - else: - self._fail_if_link_is_unsupported_wheel(ireq.link) - # Always make the link candidate for the base requirement to make it - # available to `find_candidates` for explicit candidate lookup for any - # set of extras. - # The extras are required separately via a second requirement. - cand = self._make_base_candidate_from_link( - ireq.link, - template=install_req_drop_extras(ireq) if ireq.extras else ireq, - name=canonicalize_name(ireq.name) if ireq.name else None, - version=None, - ) - if cand is None: - # There's no way we can satisfy a URL requirement if the underlying - # candidate fails to build. An unnamed URL must be user-supplied, so - # we fail eagerly. If the URL is named, an unsatisfiable requirement - # can make the resolver do the right thing, either backtrack (and - # maybe find some other requirement that's buildable) or raise a - # ResolutionImpossible eventually. - if not ireq.name: - raise self._build_failures[ireq.link] - yield UnsatisfiableRequirement(canonicalize_name(ireq.name)) - else: - # require the base from the link - yield self.make_requirement_from_candidate(cand) - if ireq.extras: - # require the extras on top of the base candidate - yield self.make_requirement_from_candidate( - self._make_extras_candidate(cand, frozenset(ireq.extras)) - ) - - def collect_root_requirements( - self, root_ireqs: List[InstallRequirement] - ) -> CollectedRootRequirements: - collected = CollectedRootRequirements([], {}, {}) - for i, ireq in enumerate(root_ireqs): - if ireq.constraint: - # Ensure we only accept valid constraints - problem = check_invalid_constraint_type(ireq) - if problem: - raise InstallationError(problem) - if not ireq.match_markers(): - continue - assert ireq.name, "Constraint must be named" - name = canonicalize_name(ireq.name) - if name in collected.constraints: - collected.constraints[name] &= ireq - else: - collected.constraints[name] = Constraint.from_ireq(ireq) - else: - reqs = list( - self._make_requirements_from_install_req( - ireq, - requested_extras=(), - ) - ) - if not reqs: - continue - template = reqs[0] - if ireq.user_supplied and template.name not in collected.user_requested: - collected.user_requested[template.name] = i - collected.requirements.extend(reqs) - # Put requirements with extras at the end of the root requires. This does not - # affect resolvelib's picking preference but it does affect its initial criteria - # population: by putting extras at the end we enable the candidate finder to - # present resolvelib with a smaller set of candidates to resolvelib, already - # taking into account any non-transient constraints on the associated base. This - # means resolvelib will have fewer candidates to visit and reject. - # Python's list sort is stable, meaning relative order is kept for objects with - # the same key. - collected.requirements.sort(key=lambda r: r.name != r.project_name) - return collected - - def make_requirement_from_candidate( - self, candidate: Candidate - ) -> ExplicitRequirement: - return ExplicitRequirement(candidate) - - def make_requirements_from_spec( - self, - specifier: str, - comes_from: Optional[InstallRequirement], - requested_extras: Iterable[str] = (), - ) -> Iterator[Requirement]: - """ - Returns requirement objects associated with the given specifier. In most cases - this will be a single object but the following special cases exist: - - the specifier has markers that do not apply -> result is empty - - the specifier has both a constraint and extras -> result is split - in two requirement objects: one with the constraint and one with the - extra. This allows centralized constraint handling for the base, - resulting in fewer candidate rejections. - """ - ireq = self._make_install_req_from_spec(specifier, comes_from) - return self._make_requirements_from_install_req(ireq, requested_extras) - - def make_requires_python_requirement( - self, - specifier: SpecifierSet, - ) -> Optional[Requirement]: - if self._ignore_requires_python: - return None - # Don't bother creating a dependency for an empty Requires-Python. - if not str(specifier): - return None - return RequiresPythonRequirement(specifier, self._python_candidate) - - def get_wheel_cache_entry( - self, link: Link, name: Optional[str] - ) -> Optional[CacheEntry]: - """Look up the link in the wheel cache. - - If ``preparer.require_hashes`` is True, don't use the wheel cache, - because cached wheels, always built locally, have different hashes - than the files downloaded from the index server and thus throw false - hash mismatches. Furthermore, cached wheels at present have - nondeterministic contents due to file modification times. - """ - if self._wheel_cache is None: - return None - return self._wheel_cache.get_cache_entry( - link=link, - package_name=name, - supported_tags=get_supported(), - ) - - def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[BaseDistribution]: - # TODO: Are there more cases this needs to return True? Editable? - dist = self._installed_dists.get(candidate.project_name) - if dist is None: # Not installed, no uninstallation required. - return None - - # We're installing into global site. The current installation must - # be uninstalled, no matter it's in global or user site, because the - # user site installation has precedence over global. - if not self._use_user_site: - return dist - - # We're installing into user site. Remove the user site installation. - if dist.in_usersite: - return dist - - # We're installing into user site, but the installed incompatible - # package is in global site. We can't uninstall that, and would let - # the new user installation to "shadow" it. But shadowing won't work - # in virtual environments, so we error out. - if running_under_virtualenv() and dist.in_site_packages: - message = ( - f"Will not install to the user site because it will lack " - f"sys.path precedence to {dist.raw_name} in {dist.location}" - ) - raise InstallationError(message) - return None - - def _report_requires_python_error( - self, causes: Sequence["ConflictCause"] - ) -> UnsupportedPythonVersion: - assert causes, "Requires-Python error reported with no cause" - - version = self._python_candidate.version - - if len(causes) == 1: - specifier = str(causes[0].requirement.specifier) - message = ( - f"Package {causes[0].parent.name!r} requires a different " - f"Python: {version} not in {specifier!r}" - ) - return UnsupportedPythonVersion(message) - - message = f"Packages require a different Python. {version} not in:" - for cause in causes: - package = cause.parent.format_for_error() - specifier = str(cause.requirement.specifier) - message += f"\n{specifier!r} (required by {package})" - return UnsupportedPythonVersion(message) - - def _report_single_requirement_conflict( - self, req: Requirement, parent: Optional[Candidate] - ) -> DistributionNotFound: - if parent is None: - req_disp = str(req) - else: - req_disp = f"{req} (from {parent.name})" - - cands = self._finder.find_all_candidates(req.project_name) - skipped_by_requires_python = self._finder.requires_python_skipped_reasons() - - versions_set: Set[CandidateVersion] = set() - yanked_versions_set: Set[CandidateVersion] = set() - for c in cands: - is_yanked = c.link.is_yanked if c.link else False - if is_yanked: - yanked_versions_set.add(c.version) - else: - versions_set.add(c.version) - - versions = [str(v) for v in sorted(versions_set)] - yanked_versions = [str(v) for v in sorted(yanked_versions_set)] - - if yanked_versions: - # Saying "version X is yanked" isn't entirely accurate. - # https://github.com/pypa/pip/issues/11745#issuecomment-1402805842 - logger.critical( - "Ignored the following yanked versions: %s", - ", ".join(yanked_versions) or "none", - ) - if skipped_by_requires_python: - logger.critical( - "Ignored the following versions that require a different python " - "version: %s", - "; ".join(skipped_by_requires_python) or "none", - ) - logger.critical( - "Could not find a version that satisfies the requirement %s " - "(from versions: %s)", - req_disp, - ", ".join(versions) or "none", - ) - if str(req) == "requirements.txt": - logger.info( - "HINT: You are attempting to install a package literally " - 'named "requirements.txt" (which cannot exist). Consider ' - "using the '-r' flag to install the packages listed in " - "requirements.txt" - ) - - return DistributionNotFound(f"No matching distribution found for {req}") - - def get_installation_error( - self, - e: "ResolutionImpossible[Requirement, Candidate]", - constraints: Dict[str, Constraint], - ) -> InstallationError: - assert e.causes, "Installation error reported with no cause" - - # If one of the things we can't solve is "we need Python X.Y", - # that is what we report. - requires_python_causes = [ - cause - for cause in e.causes - if isinstance(cause.requirement, RequiresPythonRequirement) - and not cause.requirement.is_satisfied_by(self._python_candidate) - ] - if requires_python_causes: - # The comprehension above makes sure all Requirement instances are - # RequiresPythonRequirement, so let's cast for convenience. - return self._report_requires_python_error( - cast("Sequence[ConflictCause]", requires_python_causes), - ) - - # Otherwise, we have a set of causes which can't all be satisfied - # at once. - - # The simplest case is when we have *one* cause that can't be - # satisfied. We just report that case. - if len(e.causes) == 1: - req, parent = e.causes[0] - if req.name not in constraints: - return self._report_single_requirement_conflict(req, parent) - - # OK, we now have a list of requirements that can't all be - # satisfied at once. - - # A couple of formatting helpers - def text_join(parts: List[str]) -> str: - if len(parts) == 1: - return parts[0] - - return ", ".join(parts[:-1]) + " and " + parts[-1] - - def describe_trigger(parent: Candidate) -> str: - ireq = parent.get_install_requirement() - if not ireq or not ireq.comes_from: - return f"{parent.name}=={parent.version}" - if isinstance(ireq.comes_from, InstallRequirement): - return str(ireq.comes_from.name) - return str(ireq.comes_from) - - triggers = set() - for req, parent in e.causes: - if parent is None: - # This is a root requirement, so we can report it directly - trigger = req.format_for_error() - else: - trigger = describe_trigger(parent) - triggers.add(trigger) - - if triggers: - info = text_join(sorted(triggers)) - else: - info = "the requested packages" - - msg = ( - f"Cannot install {info} because these package versions " - "have conflicting dependencies." - ) - logger.critical(msg) - msg = "\nThe conflict is caused by:" - - relevant_constraints = set() - for req, parent in e.causes: - if req.name in constraints: - relevant_constraints.add(req.name) - msg = msg + "\n " - if parent: - msg = msg + f"{parent.name} {parent.version} depends on " - else: - msg = msg + "The user requested " - msg = msg + req.format_for_error() - for key in relevant_constraints: - spec = constraints[key].specifier - msg += f"\n The user requested (constraint) {key}{spec}" - - msg = ( - msg - + "\n\n" - + "To fix this you could try to:\n" - + "1. loosen the range of package versions you've specified\n" - + "2. remove package versions to allow pip attempt to solve " - + "the dependency conflict\n" - ) - - logger.info(msg) - - return DistributionNotFound( - "ResolutionImpossible: for help visit " - "https://pip.pypa.io/en/latest/topics/dependency-resolution/" - "#dealing-with-dependency-conflicts" - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py deleted file mode 100644 index 8663097..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +++ /dev/null @@ -1,155 +0,0 @@ -"""Utilities to lazily create and visit candidates found. - -Creating and visiting a candidate is a *very* costly operation. It involves -fetching, extracting, potentially building modules from source, and verifying -distribution metadata. It is therefore crucial for performance to keep -everything here lazy all the way down, so we only touch candidates that we -absolutely need, and not "download the world" when we only need one version of -something. -""" - -import functools -from collections.abc import Sequence -from typing import TYPE_CHECKING, Any, Callable, Iterator, Optional, Set, Tuple - -from pip._vendor.packaging.version import _BaseVersion - -from .base import Candidate - -IndexCandidateInfo = Tuple[_BaseVersion, Callable[[], Optional[Candidate]]] - -if TYPE_CHECKING: - SequenceCandidate = Sequence[Candidate] -else: - # For compatibility: Python before 3.9 does not support using [] on the - # Sequence class. - # - # >>> from collections.abc import Sequence - # >>> Sequence[str] - # Traceback (most recent call last): - # File "", line 1, in - # TypeError: 'ABCMeta' object is not subscriptable - # - # TODO: Remove this block after dropping Python 3.8 support. - SequenceCandidate = Sequence - - -def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candidate]: - """Iterator for ``FoundCandidates``. - - This iterator is used when the package is not already installed. Candidates - from index come later in their normal ordering. - """ - versions_found: Set[_BaseVersion] = set() - for version, func in infos: - if version in versions_found: - continue - candidate = func() - if candidate is None: - continue - yield candidate - versions_found.add(version) - - -def _iter_built_with_prepended( - installed: Candidate, infos: Iterator[IndexCandidateInfo] -) -> Iterator[Candidate]: - """Iterator for ``FoundCandidates``. - - This iterator is used when the resolver prefers the already-installed - candidate and NOT to upgrade. The installed candidate is therefore - always yielded first, and candidates from index come later in their - normal ordering, except skipped when the version is already installed. - """ - yield installed - versions_found: Set[_BaseVersion] = {installed.version} - for version, func in infos: - if version in versions_found: - continue - candidate = func() - if candidate is None: - continue - yield candidate - versions_found.add(version) - - -def _iter_built_with_inserted( - installed: Candidate, infos: Iterator[IndexCandidateInfo] -) -> Iterator[Candidate]: - """Iterator for ``FoundCandidates``. - - This iterator is used when the resolver prefers to upgrade an - already-installed package. Candidates from index are returned in their - normal ordering, except replaced when the version is already installed. - - The implementation iterates through and yields other candidates, inserting - the installed candidate exactly once before we start yielding older or - equivalent candidates, or after all other candidates if they are all newer. - """ - versions_found: Set[_BaseVersion] = set() - for version, func in infos: - if version in versions_found: - continue - # If the installed candidate is better, yield it first. - if installed.version >= version: - yield installed - versions_found.add(installed.version) - candidate = func() - if candidate is None: - continue - yield candidate - versions_found.add(version) - - # If the installed candidate is older than all other candidates. - if installed.version not in versions_found: - yield installed - - -class FoundCandidates(SequenceCandidate): - """A lazy sequence to provide candidates to the resolver. - - The intended usage is to return this from `find_matches()` so the resolver - can iterate through the sequence multiple times, but only access the index - page when remote packages are actually needed. This improve performances - when suitable candidates are already installed on disk. - """ - - def __init__( - self, - get_infos: Callable[[], Iterator[IndexCandidateInfo]], - installed: Optional[Candidate], - prefers_installed: bool, - incompatible_ids: Set[int], - ): - self._get_infos = get_infos - self._installed = installed - self._prefers_installed = prefers_installed - self._incompatible_ids = incompatible_ids - - def __getitem__(self, index: Any) -> Any: - # Implemented to satisfy the ABC check. This is not needed by the - # resolver, and should not be used by the provider either (for - # performance reasons). - raise NotImplementedError("don't do this") - - def __iter__(self) -> Iterator[Candidate]: - infos = self._get_infos() - if not self._installed: - iterator = _iter_built(infos) - elif self._prefers_installed: - iterator = _iter_built_with_prepended(self._installed, infos) - else: - iterator = _iter_built_with_inserted(self._installed, infos) - return (c for c in iterator if id(c) not in self._incompatible_ids) - - def __len__(self) -> int: - # Implemented to satisfy the ABC check. This is not needed by the - # resolver, and should not be used by the provider either (for - # performance reasons). - raise NotImplementedError("don't do this") - - @functools.lru_cache(maxsize=1) - def __bool__(self) -> bool: - if self._prefers_installed and self._installed: - return True - return any(self) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py deleted file mode 100644 index 315fb9c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py +++ /dev/null @@ -1,255 +0,0 @@ -import collections -import math -from typing import ( - TYPE_CHECKING, - Dict, - Iterable, - Iterator, - Mapping, - Sequence, - TypeVar, - Union, -) - -from pip._vendor.resolvelib.providers import AbstractProvider - -from .base import Candidate, Constraint, Requirement -from .candidates import REQUIRES_PYTHON_IDENTIFIER -from .factory import Factory - -if TYPE_CHECKING: - from pip._vendor.resolvelib.providers import Preference - from pip._vendor.resolvelib.resolvers import RequirementInformation - - PreferenceInformation = RequirementInformation[Requirement, Candidate] - - _ProviderBase = AbstractProvider[Requirement, Candidate, str] -else: - _ProviderBase = AbstractProvider - -# Notes on the relationship between the provider, the factory, and the -# candidate and requirement classes. -# -# The provider is a direct implementation of the resolvelib class. Its role -# is to deliver the API that resolvelib expects. -# -# Rather than work with completely abstract "requirement" and "candidate" -# concepts as resolvelib does, pip has concrete classes implementing these two -# ideas. The API of Requirement and Candidate objects are defined in the base -# classes, but essentially map fairly directly to the equivalent provider -# methods. In particular, `find_matches` and `is_satisfied_by` are -# requirement methods, and `get_dependencies` is a candidate method. -# -# The factory is the interface to pip's internal mechanisms. It is stateless, -# and is created by the resolver and held as a property of the provider. It is -# responsible for creating Requirement and Candidate objects, and provides -# services to those objects (access to pip's finder and preparer). - - -D = TypeVar("D") -V = TypeVar("V") - - -def _get_with_identifier( - mapping: Mapping[str, V], - identifier: str, - default: D, -) -> Union[D, V]: - """Get item from a package name lookup mapping with a resolver identifier. - - This extra logic is needed when the target mapping is keyed by package - name, which cannot be directly looked up with an identifier (which may - contain requested extras). Additional logic is added to also look up a value - by "cleaning up" the extras from the identifier. - """ - if identifier in mapping: - return mapping[identifier] - # HACK: Theoretically we should check whether this identifier is a valid - # "NAME[EXTRAS]" format, and parse out the name part with packaging or - # some regular expression. But since pip's resolver only spits out three - # kinds of identifiers: normalized PEP 503 names, normalized names plus - # extras, and Requires-Python, we can cheat a bit here. - name, open_bracket, _ = identifier.partition("[") - if open_bracket and name in mapping: - return mapping[name] - return default - - -class PipProvider(_ProviderBase): - """Pip's provider implementation for resolvelib. - - :params constraints: A mapping of constraints specified by the user. Keys - are canonicalized project names. - :params ignore_dependencies: Whether the user specified ``--no-deps``. - :params upgrade_strategy: The user-specified upgrade strategy. - :params user_requested: A set of canonicalized package names that the user - supplied for pip to install/upgrade. - """ - - def __init__( - self, - factory: Factory, - constraints: Dict[str, Constraint], - ignore_dependencies: bool, - upgrade_strategy: str, - user_requested: Dict[str, int], - ) -> None: - self._factory = factory - self._constraints = constraints - self._ignore_dependencies = ignore_dependencies - self._upgrade_strategy = upgrade_strategy - self._user_requested = user_requested - self._known_depths: Dict[str, float] = collections.defaultdict(lambda: math.inf) - - def identify(self, requirement_or_candidate: Union[Requirement, Candidate]) -> str: - return requirement_or_candidate.name - - def get_preference( - self, - identifier: str, - resolutions: Mapping[str, Candidate], - candidates: Mapping[str, Iterator[Candidate]], - information: Mapping[str, Iterable["PreferenceInformation"]], - backtrack_causes: Sequence["PreferenceInformation"], - ) -> "Preference": - """Produce a sort key for given requirement based on preference. - - The lower the return value is, the more preferred this group of - arguments is. - - Currently pip considers the following in order: - - * Prefer if any of the known requirements is "direct", e.g. points to an - explicit URL. - * If equal, prefer if any requirement is "pinned", i.e. contains - operator ``===`` or ``==``. - * If equal, calculate an approximate "depth" and resolve requirements - closer to the user-specified requirements first. If the depth cannot - by determined (eg: due to no matching parents), it is considered - infinite. - * Order user-specified requirements by the order they are specified. - * If equal, prefers "non-free" requirements, i.e. contains at least one - operator, such as ``>=`` or ``<``. - * If equal, order alphabetically for consistency (helps debuggability). - """ - try: - next(iter(information[identifier])) - except StopIteration: - # There is no information for this identifier, so there's no known - # candidates. - has_information = False - else: - has_information = True - - if has_information: - lookups = (r.get_candidate_lookup() for r, _ in information[identifier]) - candidate, ireqs = zip(*lookups) - else: - candidate, ireqs = None, () - - operators = [ - specifier.operator - for specifier_set in (ireq.specifier for ireq in ireqs if ireq) - for specifier in specifier_set - ] - - direct = candidate is not None - pinned = any(op[:2] == "==" for op in operators) - unfree = bool(operators) - - try: - requested_order: Union[int, float] = self._user_requested[identifier] - except KeyError: - requested_order = math.inf - if has_information: - parent_depths = ( - self._known_depths[parent.name] if parent is not None else 0.0 - for _, parent in information[identifier] - ) - inferred_depth = min(d for d in parent_depths) + 1.0 - else: - inferred_depth = math.inf - else: - inferred_depth = 1.0 - self._known_depths[identifier] = inferred_depth - - requested_order = self._user_requested.get(identifier, math.inf) - - # Requires-Python has only one candidate and the check is basically - # free, so we always do it first to avoid needless work if it fails. - requires_python = identifier == REQUIRES_PYTHON_IDENTIFIER - - # Prefer the causes of backtracking on the assumption that the problem - # resolving the dependency tree is related to the failures that caused - # the backtracking - backtrack_cause = self.is_backtrack_cause(identifier, backtrack_causes) - - return ( - not requires_python, - not direct, - not pinned, - not backtrack_cause, - inferred_depth, - requested_order, - not unfree, - identifier, - ) - - def find_matches( - self, - identifier: str, - requirements: Mapping[str, Iterator[Requirement]], - incompatibilities: Mapping[str, Iterator[Candidate]], - ) -> Iterable[Candidate]: - def _eligible_for_upgrade(identifier: str) -> bool: - """Are upgrades allowed for this project? - - This checks the upgrade strategy, and whether the project was one - that the user specified in the command line, in order to decide - whether we should upgrade if there's a newer version available. - - (Note that we don't need access to the `--upgrade` flag, because - an upgrade strategy of "to-satisfy-only" means that `--upgrade` - was not specified). - """ - if self._upgrade_strategy == "eager": - return True - elif self._upgrade_strategy == "only-if-needed": - user_order = _get_with_identifier( - self._user_requested, - identifier, - default=None, - ) - return user_order is not None - return False - - constraint = _get_with_identifier( - self._constraints, - identifier, - default=Constraint.empty(), - ) - return self._factory.find_candidates( - identifier=identifier, - requirements=requirements, - constraint=constraint, - prefers_installed=(not _eligible_for_upgrade(identifier)), - incompatibilities=incompatibilities, - ) - - def is_satisfied_by(self, requirement: Requirement, candidate: Candidate) -> bool: - return requirement.is_satisfied_by(candidate) - - def get_dependencies(self, candidate: Candidate) -> Sequence[Requirement]: - with_requires = not self._ignore_dependencies - return [r for r in candidate.iter_dependencies(with_requires) if r is not None] - - @staticmethod - def is_backtrack_cause( - identifier: str, backtrack_causes: Sequence["PreferenceInformation"] - ) -> bool: - for backtrack_cause in backtrack_causes: - if identifier == backtrack_cause.requirement.name: - return True - if backtrack_cause.parent and identifier == backtrack_cause.parent.name: - return True - return False diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py deleted file mode 100644 index 12adeff..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py +++ /dev/null @@ -1,80 +0,0 @@ -from collections import defaultdict -from logging import getLogger -from typing import Any, DefaultDict - -from pip._vendor.resolvelib.reporters import BaseReporter - -from .base import Candidate, Requirement - -logger = getLogger(__name__) - - -class PipReporter(BaseReporter): - def __init__(self) -> None: - self.reject_count_by_package: DefaultDict[str, int] = defaultdict(int) - - self._messages_at_reject_count = { - 1: ( - "pip is looking at multiple versions of {package_name} to " - "determine which version is compatible with other " - "requirements. This could take a while." - ), - 8: ( - "pip is still looking at multiple versions of {package_name} to " - "determine which version is compatible with other " - "requirements. This could take a while." - ), - 13: ( - "This is taking longer than usual. You might need to provide " - "the dependency resolver with stricter constraints to reduce " - "runtime. See https://pip.pypa.io/warnings/backtracking for " - "guidance. If you want to abort this run, press Ctrl + C." - ), - } - - def rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: - self.reject_count_by_package[candidate.name] += 1 - - count = self.reject_count_by_package[candidate.name] - if count not in self._messages_at_reject_count: - return - - message = self._messages_at_reject_count[count] - logger.info("INFO: %s", message.format(package_name=candidate.name)) - - msg = "Will try a different candidate, due to conflict:" - for req_info in criterion.information: - req, parent = req_info.requirement, req_info.parent - # Inspired by Factory.get_installation_error - msg += "\n " - if parent: - msg += f"{parent.name} {parent.version} depends on " - else: - msg += "The user requested " - msg += req.format_for_error() - logger.debug(msg) - - -class PipDebuggingReporter(BaseReporter): - """A reporter that does an info log for every event it sees.""" - - def starting(self) -> None: - logger.info("Reporter.starting()") - - def starting_round(self, index: int) -> None: - logger.info("Reporter.starting_round(%r)", index) - - def ending_round(self, index: int, state: Any) -> None: - logger.info("Reporter.ending_round(%r, state)", index) - - def ending(self, state: Any) -> None: - logger.info("Reporter.ending(%r)", state) - - def adding_requirement(self, requirement: Requirement, parent: Candidate) -> None: - logger.info("Reporter.adding_requirement(%r, %r)", requirement, parent) - - def rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: - logger.info("Reporter.rejecting_candidate(%r, %r)", criterion, candidate) - - def pinning(self, candidate: Candidate) -> None: - logger.info("Reporter.pinning(%r)", candidate) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py deleted file mode 100644 index 4af4a9f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py +++ /dev/null @@ -1,166 +0,0 @@ -from pip._vendor.packaging.specifiers import SpecifierSet -from pip._vendor.packaging.utils import NormalizedName, canonicalize_name - -from pip._internal.req.constructors import install_req_drop_extras -from pip._internal.req.req_install import InstallRequirement - -from .base import Candidate, CandidateLookup, Requirement, format_name - - -class ExplicitRequirement(Requirement): - def __init__(self, candidate: Candidate) -> None: - self.candidate = candidate - - def __str__(self) -> str: - return str(self.candidate) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self.candidate!r})" - - @property - def project_name(self) -> NormalizedName: - # No need to canonicalize - the candidate did this - return self.candidate.project_name - - @property - def name(self) -> str: - # No need to canonicalize - the candidate did this - return self.candidate.name - - def format_for_error(self) -> str: - return self.candidate.format_for_error() - - def get_candidate_lookup(self) -> CandidateLookup: - return self.candidate, None - - def is_satisfied_by(self, candidate: Candidate) -> bool: - return candidate == self.candidate - - -class SpecifierRequirement(Requirement): - def __init__(self, ireq: InstallRequirement) -> None: - assert ireq.link is None, "This is a link, not a specifier" - self._ireq = ireq - self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) - - def __str__(self) -> str: - return str(self._ireq.req) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({str(self._ireq.req)!r})" - - @property - def project_name(self) -> NormalizedName: - assert self._ireq.req, "Specifier-backed ireq is always PEP 508" - return canonicalize_name(self._ireq.req.name) - - @property - def name(self) -> str: - return format_name(self.project_name, self._extras) - - def format_for_error(self) -> str: - # Convert comma-separated specifiers into "A, B, ..., F and G" - # This makes the specifier a bit more "human readable", without - # risking a change in meaning. (Hopefully! Not all edge cases have - # been checked) - parts = [s.strip() for s in str(self).split(",")] - if len(parts) == 0: - return "" - elif len(parts) == 1: - return parts[0] - - return ", ".join(parts[:-1]) + " and " + parts[-1] - - def get_candidate_lookup(self) -> CandidateLookup: - return None, self._ireq - - def is_satisfied_by(self, candidate: Candidate) -> bool: - assert candidate.name == self.name, ( - f"Internal issue: Candidate is not for this requirement " - f"{candidate.name} vs {self.name}" - ) - # We can safely always allow prereleases here since PackageFinder - # already implements the prerelease logic, and would have filtered out - # prerelease candidates if the user does not expect them. - assert self._ireq.req, "Specifier-backed ireq is always PEP 508" - spec = self._ireq.req.specifier - return spec.contains(candidate.version, prereleases=True) - - -class SpecifierWithoutExtrasRequirement(SpecifierRequirement): - """ - Requirement backed by an install requirement on a base package. - Trims extras from its install requirement if there are any. - """ - - def __init__(self, ireq: InstallRequirement) -> None: - assert ireq.link is None, "This is a link, not a specifier" - self._ireq = install_req_drop_extras(ireq) - self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) - - -class RequiresPythonRequirement(Requirement): - """A requirement representing Requires-Python metadata.""" - - def __init__(self, specifier: SpecifierSet, match: Candidate) -> None: - self.specifier = specifier - self._candidate = match - - def __str__(self) -> str: - return f"Python {self.specifier}" - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({str(self.specifier)!r})" - - @property - def project_name(self) -> NormalizedName: - return self._candidate.project_name - - @property - def name(self) -> str: - return self._candidate.name - - def format_for_error(self) -> str: - return str(self) - - def get_candidate_lookup(self) -> CandidateLookup: - if self.specifier.contains(self._candidate.version, prereleases=True): - return self._candidate, None - return None, None - - def is_satisfied_by(self, candidate: Candidate) -> bool: - assert candidate.name == self._candidate.name, "Not Python candidate" - # We can safely always allow prereleases here since PackageFinder - # already implements the prerelease logic, and would have filtered out - # prerelease candidates if the user does not expect them. - return self.specifier.contains(candidate.version, prereleases=True) - - -class UnsatisfiableRequirement(Requirement): - """A requirement that cannot be satisfied.""" - - def __init__(self, name: NormalizedName) -> None: - self._name = name - - def __str__(self) -> str: - return f"{self._name} (unavailable)" - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({str(self._name)!r})" - - @property - def project_name(self) -> NormalizedName: - return self._name - - @property - def name(self) -> str: - return self._name - - def format_for_error(self) -> str: - return str(self) - - def get_candidate_lookup(self) -> CandidateLookup: - return None, None - - def is_satisfied_by(self, candidate: Candidate) -> bool: - return False diff --git a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py deleted file mode 100644 index c12beef..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py +++ /dev/null @@ -1,317 +0,0 @@ -import contextlib -import functools -import logging -import os -from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple, cast - -from pip._vendor.packaging.utils import canonicalize_name -from pip._vendor.resolvelib import BaseReporter, ResolutionImpossible -from pip._vendor.resolvelib import Resolver as RLResolver -from pip._vendor.resolvelib.structs import DirectedGraph - -from pip._internal.cache import WheelCache -from pip._internal.index.package_finder import PackageFinder -from pip._internal.operations.prepare import RequirementPreparer -from pip._internal.req.constructors import install_req_extend_extras -from pip._internal.req.req_install import InstallRequirement -from pip._internal.req.req_set import RequirementSet -from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider -from pip._internal.resolution.resolvelib.provider import PipProvider -from pip._internal.resolution.resolvelib.reporter import ( - PipDebuggingReporter, - PipReporter, -) -from pip._internal.utils.packaging import get_requirement - -from .base import Candidate, Requirement -from .factory import Factory - -if TYPE_CHECKING: - from pip._vendor.resolvelib.resolvers import Result as RLResult - - Result = RLResult[Requirement, Candidate, str] - - -logger = logging.getLogger(__name__) - - -class Resolver(BaseResolver): - _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} - - def __init__( - self, - preparer: RequirementPreparer, - finder: PackageFinder, - wheel_cache: Optional[WheelCache], - make_install_req: InstallRequirementProvider, - use_user_site: bool, - ignore_dependencies: bool, - ignore_installed: bool, - ignore_requires_python: bool, - force_reinstall: bool, - upgrade_strategy: str, - py_version_info: Optional[Tuple[int, ...]] = None, - ): - super().__init__() - assert upgrade_strategy in self._allowed_strategies - - self.factory = Factory( - finder=finder, - preparer=preparer, - make_install_req=make_install_req, - wheel_cache=wheel_cache, - use_user_site=use_user_site, - force_reinstall=force_reinstall, - ignore_installed=ignore_installed, - ignore_requires_python=ignore_requires_python, - py_version_info=py_version_info, - ) - self.ignore_dependencies = ignore_dependencies - self.upgrade_strategy = upgrade_strategy - self._result: Optional[Result] = None - - def resolve( - self, root_reqs: List[InstallRequirement], check_supported_wheels: bool - ) -> RequirementSet: - collected = self.factory.collect_root_requirements(root_reqs) - provider = PipProvider( - factory=self.factory, - constraints=collected.constraints, - ignore_dependencies=self.ignore_dependencies, - upgrade_strategy=self.upgrade_strategy, - user_requested=collected.user_requested, - ) - if "PIP_RESOLVER_DEBUG" in os.environ: - reporter: BaseReporter = PipDebuggingReporter() - else: - reporter = PipReporter() - resolver: RLResolver[Requirement, Candidate, str] = RLResolver( - provider, - reporter, - ) - - try: - limit_how_complex_resolution_can_be = 200000 - result = self._result = resolver.resolve( - collected.requirements, max_rounds=limit_how_complex_resolution_can_be - ) - - except ResolutionImpossible as e: - error = self.factory.get_installation_error( - cast("ResolutionImpossible[Requirement, Candidate]", e), - collected.constraints, - ) - raise error from e - - req_set = RequirementSet(check_supported_wheels=check_supported_wheels) - # process candidates with extras last to ensure their base equivalent is - # already in the req_set if appropriate. - # Python's sort is stable so using a binary key function keeps relative order - # within both subsets. - for candidate in sorted( - result.mapping.values(), key=lambda c: c.name != c.project_name - ): - ireq = candidate.get_install_requirement() - if ireq is None: - if candidate.name != candidate.project_name: - # extend existing req's extras - with contextlib.suppress(KeyError): - req = req_set.get_requirement(candidate.project_name) - req_set.add_named_requirement( - install_req_extend_extras( - req, get_requirement(candidate.name).extras - ) - ) - continue - - # Check if there is already an installation under the same name, - # and set a flag for later stages to uninstall it, if needed. - installed_dist = self.factory.get_dist_to_uninstall(candidate) - if installed_dist is None: - # There is no existing installation -- nothing to uninstall. - ireq.should_reinstall = False - elif self.factory.force_reinstall: - # The --force-reinstall flag is set -- reinstall. - ireq.should_reinstall = True - elif installed_dist.version != candidate.version: - # The installation is different in version -- reinstall. - ireq.should_reinstall = True - elif candidate.is_editable or installed_dist.editable: - # The incoming distribution is editable, or different in - # editable-ness to installation -- reinstall. - ireq.should_reinstall = True - elif candidate.source_link and candidate.source_link.is_file: - # The incoming distribution is under file:// - if candidate.source_link.is_wheel: - # is a local wheel -- do nothing. - logger.info( - "%s is already installed with the same version as the " - "provided wheel. Use --force-reinstall to force an " - "installation of the wheel.", - ireq.name, - ) - continue - - # is a local sdist or path -- reinstall - ireq.should_reinstall = True - else: - continue - - link = candidate.source_link - if link and link.is_yanked: - # The reason can contain non-ASCII characters, Unicode - # is required for Python 2. - msg = ( - "The candidate selected for download or install is a " - "yanked version: {name!r} candidate (version {version} " - "at {link})\nReason for being yanked: {reason}" - ).format( - name=candidate.name, - version=candidate.version, - link=link, - reason=link.yanked_reason or "", - ) - logger.warning(msg) - - req_set.add_named_requirement(ireq) - - reqs = req_set.all_requirements - self.factory.preparer.prepare_linked_requirements_more(reqs) - for req in reqs: - req.prepared = True - req.needs_more_preparation = False - return req_set - - def get_installation_order( - self, req_set: RequirementSet - ) -> List[InstallRequirement]: - """Get order for installation of requirements in RequirementSet. - - The returned list contains a requirement before another that depends on - it. This helps ensure that the environment is kept consistent as they - get installed one-by-one. - - The current implementation creates a topological ordering of the - dependency graph, giving more weight to packages with less - or no dependencies, while breaking any cycles in the graph at - arbitrary points. We make no guarantees about where the cycle - would be broken, other than it *would* be broken. - """ - assert self._result is not None, "must call resolve() first" - - if not req_set.requirements: - # Nothing is left to install, so we do not need an order. - return [] - - graph = self._result.graph - weights = get_topological_weights(graph, set(req_set.requirements.keys())) - - sorted_items = sorted( - req_set.requirements.items(), - key=functools.partial(_req_set_item_sorter, weights=weights), - reverse=True, - ) - return [ireq for _, ireq in sorted_items] - - -def get_topological_weights( - graph: "DirectedGraph[Optional[str]]", requirement_keys: Set[str] -) -> Dict[Optional[str], int]: - """Assign weights to each node based on how "deep" they are. - - This implementation may change at any point in the future without prior - notice. - - We first simplify the dependency graph by pruning any leaves and giving them - the highest weight: a package without any dependencies should be installed - first. This is done again and again in the same way, giving ever less weight - to the newly found leaves. The loop stops when no leaves are left: all - remaining packages have at least one dependency left in the graph. - - Then we continue with the remaining graph, by taking the length for the - longest path to any node from root, ignoring any paths that contain a single - node twice (i.e. cycles). This is done through a depth-first search through - the graph, while keeping track of the path to the node. - - Cycles in the graph result would result in node being revisited while also - being on its own path. In this case, take no action. This helps ensure we - don't get stuck in a cycle. - - When assigning weight, the longer path (i.e. larger length) is preferred. - - We are only interested in the weights of packages that are in the - requirement_keys. - """ - path: Set[Optional[str]] = set() - weights: Dict[Optional[str], int] = {} - - def visit(node: Optional[str]) -> None: - if node in path: - # We hit a cycle, so we'll break it here. - return - - # Time to visit the children! - path.add(node) - for child in graph.iter_children(node): - visit(child) - path.remove(node) - - if node not in requirement_keys: - return - - last_known_parent_count = weights.get(node, 0) - weights[node] = max(last_known_parent_count, len(path)) - - # Simplify the graph, pruning leaves that have no dependencies. - # This is needed for large graphs (say over 200 packages) because the - # `visit` function is exponentially slower then, taking minutes. - # See https://github.com/pypa/pip/issues/10557 - # We will loop until we explicitly break the loop. - while True: - leaves = set() - for key in graph: - if key is None: - continue - for _child in graph.iter_children(key): - # This means we have at least one child - break - else: - # No child. - leaves.add(key) - if not leaves: - # We are done simplifying. - break - # Calculate the weight for the leaves. - weight = len(graph) - 1 - for leaf in leaves: - if leaf not in requirement_keys: - continue - weights[leaf] = weight - # Remove the leaves from the graph, making it simpler. - for leaf in leaves: - graph.remove(leaf) - - # Visit the remaining graph. - # `None` is guaranteed to be the root node by resolvelib. - visit(None) - - # Sanity check: all requirement keys should be in the weights, - # and no other keys should be in the weights. - difference = set(weights.keys()).difference(requirement_keys) - assert not difference, difference - - return weights - - -def _req_set_item_sorter( - item: Tuple[str, InstallRequirement], - weights: Dict[Optional[str], int], -) -> Tuple[int, str]: - """Key function used to sort install requirements for installation. - - Based on the "weight" mapping calculated in ``get_installation_order()``. - The canonical package name is returned as the second member as a tie- - breaker to ensure the result is predictable, which is useful in tests. - """ - name = canonicalize_name(item[0]) - return weights[name], name diff --git a/venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py b/venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py deleted file mode 100644 index 0f64ae0..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py +++ /dev/null @@ -1,248 +0,0 @@ -import datetime -import functools -import hashlib -import json -import logging -import optparse -import os.path -import sys -from dataclasses import dataclass -from typing import Any, Callable, Dict, Optional - -from pip._vendor.packaging.version import parse as parse_version -from pip._vendor.rich.console import Group -from pip._vendor.rich.markup import escape -from pip._vendor.rich.text import Text - -from pip._internal.index.collector import LinkCollector -from pip._internal.index.package_finder import PackageFinder -from pip._internal.metadata import get_default_environment -from pip._internal.metadata.base import DistributionVersion -from pip._internal.models.selection_prefs import SelectionPreferences -from pip._internal.network.session import PipSession -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.entrypoints import ( - get_best_invocation_for_this_pip, - get_best_invocation_for_this_python, -) -from pip._internal.utils.filesystem import adjacent_tmp_file, check_path_owner, replace -from pip._internal.utils.misc import ensure_dir - -_WEEK = datetime.timedelta(days=7) - -logger = logging.getLogger(__name__) - - -def _get_statefile_name(key: str) -> str: - key_bytes = key.encode() - name = hashlib.sha224(key_bytes).hexdigest() - return name - - -def _convert_date(isodate: str) -> datetime.datetime: - """Convert an ISO format string to a date. - - Handles the format 2020-01-22T14:24:01Z (trailing Z) - which is not supported by older versions of fromisoformat. - """ - return datetime.datetime.fromisoformat(isodate.replace("Z", "+00:00")) - - -class SelfCheckState: - def __init__(self, cache_dir: str) -> None: - self._state: Dict[str, Any] = {} - self._statefile_path = None - - # Try to load the existing state - if cache_dir: - self._statefile_path = os.path.join( - cache_dir, "selfcheck", _get_statefile_name(self.key) - ) - try: - with open(self._statefile_path, encoding="utf-8") as statefile: - self._state = json.load(statefile) - except (OSError, ValueError, KeyError): - # Explicitly suppressing exceptions, since we don't want to - # error out if the cache file is invalid. - pass - - @property - def key(self) -> str: - return sys.prefix - - def get(self, current_time: datetime.datetime) -> Optional[str]: - """Check if we have a not-outdated version loaded already.""" - if not self._state: - return None - - if "last_check" not in self._state: - return None - - if "pypi_version" not in self._state: - return None - - # Determine if we need to refresh the state - last_check = _convert_date(self._state["last_check"]) - time_since_last_check = current_time - last_check - if time_since_last_check > _WEEK: - return None - - return self._state["pypi_version"] - - def set(self, pypi_version: str, current_time: datetime.datetime) -> None: - # If we do not have a path to cache in, don't bother saving. - if not self._statefile_path: - return - - # Check to make sure that we own the directory - if not check_path_owner(os.path.dirname(self._statefile_path)): - return - - # Now that we've ensured the directory is owned by this user, we'll go - # ahead and make sure that all our directories are created. - ensure_dir(os.path.dirname(self._statefile_path)) - - state = { - # Include the key so it's easy to tell which pip wrote the - # file. - "key": self.key, - "last_check": current_time.isoformat(), - "pypi_version": pypi_version, - } - - text = json.dumps(state, sort_keys=True, separators=(",", ":")) - - with adjacent_tmp_file(self._statefile_path) as f: - f.write(text.encode()) - - try: - # Since we have a prefix-specific state file, we can just - # overwrite whatever is there, no need to check. - replace(f.name, self._statefile_path) - except OSError: - # Best effort. - pass - - -@dataclass -class UpgradePrompt: - old: str - new: str - - def __rich__(self) -> Group: - if WINDOWS: - pip_cmd = f"{get_best_invocation_for_this_python()} -m pip" - else: - pip_cmd = get_best_invocation_for_this_pip() - - notice = "[bold][[reset][blue]notice[reset][bold]][reset]" - return Group( - Text(), - Text.from_markup( - f"{notice} A new release of pip is available: " - f"[red]{self.old}[reset] -> [green]{self.new}[reset]" - ), - Text.from_markup( - f"{notice} To update, run: " - f"[green]{escape(pip_cmd)} install --upgrade pip" - ), - ) - - -def was_installed_by_pip(pkg: str) -> bool: - """Checks whether pkg was installed by pip - - This is used not to display the upgrade message when pip is in fact - installed by system package manager, such as dnf on Fedora. - """ - dist = get_default_environment().get_distribution(pkg) - return dist is not None and "pip" == dist.installer - - -def _get_current_remote_pip_version( - session: PipSession, options: optparse.Values -) -> Optional[str]: - # Lets use PackageFinder to see what the latest pip version is - link_collector = LinkCollector.create( - session, - options=options, - suppress_no_index=True, - ) - - # Pass allow_yanked=False so we don't suggest upgrading to a - # yanked version. - selection_prefs = SelectionPreferences( - allow_yanked=False, - allow_all_prereleases=False, # Explicitly set to False - ) - - finder = PackageFinder.create( - link_collector=link_collector, - selection_prefs=selection_prefs, - ) - best_candidate = finder.find_best_candidate("pip").best_candidate - if best_candidate is None: - return None - - return str(best_candidate.version) - - -def _self_version_check_logic( - *, - state: SelfCheckState, - current_time: datetime.datetime, - local_version: DistributionVersion, - get_remote_version: Callable[[], Optional[str]], -) -> Optional[UpgradePrompt]: - remote_version_str = state.get(current_time) - if remote_version_str is None: - remote_version_str = get_remote_version() - if remote_version_str is None: - logger.debug("No remote pip version found") - return None - state.set(remote_version_str, current_time) - - remote_version = parse_version(remote_version_str) - logger.debug("Remote version of pip: %s", remote_version) - logger.debug("Local version of pip: %s", local_version) - - pip_installed_by_pip = was_installed_by_pip("pip") - logger.debug("Was pip installed by pip? %s", pip_installed_by_pip) - if not pip_installed_by_pip: - return None # Only suggest upgrade if pip is installed by pip. - - local_version_is_older = ( - local_version < remote_version - and local_version.base_version != remote_version.base_version - ) - if local_version_is_older: - return UpgradePrompt(old=str(local_version), new=remote_version_str) - - return None - - -def pip_self_version_check(session: PipSession, options: optparse.Values) -> None: - """Check for an update for pip. - - Limit the frequency of checks to once per week. State is stored either in - the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix - of the pip script path. - """ - installed_dist = get_default_environment().get_distribution("pip") - if not installed_dist: - return - - try: - upgrade_prompt = _self_version_check_logic( - state=SelfCheckState(cache_dir=options.cache_dir), - current_time=datetime.datetime.now(datetime.timezone.utc), - local_version=installed_dist.version, - get_remote_version=functools.partial( - _get_current_remote_pip_version, session, options - ), - ) - if upgrade_prompt is not None: - logger.warning("%s", upgrade_prompt, extra={"rich": True}) - except Exception: - logger.warning("There was an error checking the latest version of pip.") - logger.debug("See below for error", exc_info=True) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4445e0eb46458723ed4e7442219e428095b29f00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmYj~u?@m76hs}A0wHA(isXZ6C=g--3K+mL&L{bbV_W`Cr1UJqO0;Z2g;T*v_fB`s zxuRH!q(^qS&-tG5uPl{QGUo}kxQcaleu^;9KYS2c*CR9o>EJZRNYL#WSO?|FHl=qp z!-#eSLpShKY@OXz+YK;9EWOg5YLLN`2T3+!u*$#?$uP(?P?WOr(`$L?T|F2)&iA}X G$i)|?mNFjz diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc deleted file mode 100644 index de8c544161e68c05f264c7fc6d2da2677f597784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3850 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 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc deleted file mode 100644 index a421ae4844bce7550ecfec881e9c9590d5603e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1620 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 F>)*I>>-7Kt diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc deleted file mode 100644 index 111f1c2ec40257467025ad304520f0603296d9dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmYjNv2GMG5VhCdyX7D>>5EzkG>OS;D6MV3%(GNB0~0q-&YUpRv^3Q6Px%{J&0R5iAioH z`QaB!k((k}`U|=bJJ6fG>tg5t(dq4n zq*E8o==|n<3^r++zt)4h)Z+pB;NP#_z17JfoR6m4nhhjPr_inQ2+^BC@6ioOKbcyM zhkSZ;)VkCTWH7ea8$T!gG$UH@*Sx9XD=L?Dp0}+HUE9X;lm#u#@-l?s_xS`9>MTDS=v>FE{tfY&!Hu55P0muYXVxw2F|<}{P3)dMaeB_g?YR@L=S}>c zZ_->lU6};Ep#FB!)k&+jhHtmG{)xdo?jIZ67aK=b?+j=0Sz(KFeC4XK!d4i+!~=of z#O9E_W$;zui4C+ZvB}rO7GD>RaM9mDyNMR-hwJ<-KX>f(w)uDYCf_=?dpn%rZ~JeI z?_k~e`P>Wh_N{sQHrlQE9xeVIe(~7to#*Vn(SGM}FSrp-a$cq))ZQ(_Zr%R$-tC(=9^ARRcO@Lq zmdlTc&UL)11tAQ$${;tv99C_AniRKAHTt~Kb+2tzeiUW#L_|>)L{VcgzFSfBMH#2f zFaI#)8n&#(i*a|HPegZACIgudgw{#-(Z{N*1~M*S{%(HdZgNpa+!=0 zEQ{1Qe>{i1@+LwlY+d;PU5s)Gn1@LU4^2en!eJuIE1O0tn|hTig)U__aIyQze?`i9q&CTcL%$>T= zoT>5LY-WA?+BVxed>d$V7HD*qa8PYm(q*iIM5(erNMofM7`!we0fkYuG7|b%_!hGA z=3ulvNx;doB+il8B(X(e8v=OL3r^iC!2$-nzJ%xnj40a1_kDB6v|j}*u-45TCNE;} zjp%bQSi|-qKD6-=M4{;tT7R)jLtB6k3SiuhE$wI{01kRe2T zycA$HGROFs;zpKczN!sv9+?OUc4R(sW(X6_{%UaccQ#}QFGro{Rt6eH&*ToIg|Y8( z7h@)RHur{X|KePA>4~~tgd&@YYu=A#l{8-yl@5ubKshx-J)YCR!n8zy`_KEP0-Uf(ku$7-=tUx@5f3*HIukMlC+VPAxCILL{6wFnjHS7ZaxnQOD~ z!ka3o5*GrNh|K zPSOFmR17A9tSnC6%uLsb?TW@+7Pp(8&S+1NyAKO~ARHu>g3XSm*Hity4=WNO56? zc?pvd+heT@b*0-KC3;-;JMa$DaS_+4w|0o?KApWV!vPfzCl7eRpnR+7?Lhnq8SfA0 ze$Qs+48&AtL82tehUh;-HhgaW#xRX9@Eb}EbB`#TA}H3VE?DPsrBc*9ll3`Vw z)j6*U!1seksn{1Oav^2(YGZzdPU@*@XQ`TsetrLw2({HO?)^&{Fk=pn_Eo&6w6RJ?7`k0eD1X`R9+PEd=N#F@^+)Ss}HCo zlZ1>U$4c_7q`V|4DfKSZbq9(yp36>Cnqhut&Sed57UoDwWAZYIk02`V^QL}W%ETK{ z6lYnkn}Qb=qy;}$7Am|ZFH>Tz)n4-bX@>T%HkIc!3Ptq*!Zm!`H!qqk)?zk0W3_Dj vZ(!Ol0+YRR83005;D@hWhyBNO*$d_cUjtFpBKzx_J diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc deleted file mode 100644 index eb7b342fbc61230010ce5c271a04eacb9a196a1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2085 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 A@&Et; diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc deleted file mode 100644 index e1fc2878a51dfe6d9ed83f5db60000b26613df50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2700 zcma)8U5^{L6&-R$qgh$|WxGzd4GN}d>k3#)DT)+LU<7q+qjs8ZjO-RJ1_*@N8A{@M zW;h`!tz~F|0`VW{a}Z#+Z~Zg<0etOKU;9)Ph@C@@nymd0bOdtvHJ9h!dw3|hx!DWw zJSU${{&OV={^>fGpBSCrq3D00DuRNPLE64aN_?ND)W5?t#G95;)k!;5oW{hh3(Ibm zq=|1wEKau-G4Ks60k!Drnw1n4|ikqh!y`Z>jhL?xJX)=wm?Q%i^M*iMrvqyHYL zKIZ;A8_i_JN7K2;mCU&@V)W#SXQYMU zx0)<}l1;fD0qkfjYQq)W8O@C-^@!I-EgNiX^srgl-t7`j=dx-(*mbxav^bzNc^SV{ zTjP+2|1?)TqS`CSI7VLXt-h% zsaRH)OqK<^45`;+cpdVQ24H!y&wxN_rstCh+;ni4%!rD^$R*Tl%1sNek_%vO-9C~o zCVU|>!?B6btO5Vp{Tn40qJSAz@qCumLRUVBrK{bGelm= zMtSQ^ndRIYnDMgNXQ!Oi@^l@`HZzmf-MM-_NeszY=TUnT*n{PBrH~aSYd&n_{wC7? z_|B&X4-bC-ej6msj=94m>V}KCUWfe+^xC7^ zrzCorB+4DX9Oc`mint+;^UYO+RUN-7ToLr>S-k3~kNn8i zD!w4=_V%iS9#tQ$A{vn3F!+36cD@L{#8vQ>Q^xq&gClobByuu!xt4R|2n^b2kR$U` z>zKP(f)5(l$DSg?a^hF#}g5L}Jb&}A(^g}hk;#YVYV!%<} z^Yk}pxJv{Kr6=Ke1a=azvvVFh_MOocReOG>yP}S{YHx)rW(6h<$g|u3H+L?RrWO9- zAZat-yA+Kd0*%^3Ws_rYz=cu0<;H&Ms-K}6;O`DTP&eIxi^FRXR6obqLlo_<^_cca zFT9E%MWLS=kb}VuyWvi~k+Rgv@94K^X=s-2x>xR>g>r$iH=N{sd!-NaQViW+6fYX~ zN3Tx$``(El2+~r$zt&C|m`K~HvJ(l}sRUTA7|f^F#<+jvDR(?EymmUP!Ez;wd2XOq zM%fToqgNZBO7F%cr=6Rs)vDVSzAE_#xCH|J3sgyvfE@|hA$tnTW?(b@i(IQ3bFtI diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc deleted file mode 100644 index f9287245f9585e8ae797b451d29d03b1a03a4d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4483 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 V>Zq-^HA5TV0p4j0a362!e*tI^_nH6z diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc deleted file mode 100644 index b2c02b2f1fa31aa15330c10aed4c7313944f9be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 zcmb7E-EJc_7_~jWnWj~@TR)Hy}^LT=qo~#xd zCeNUX2AUk@xJ1K6kB1oMq$HI!v?_aOW0YIeqR#thL~=WKUfDx;CF15DM7))VpLZbQ zL&T;IbwqHyw3E3)q-KN2UWno zK@we~#*z3M!De{&)se{&;kYbLv+#m)0egl*@}eF;3Kx5*j%C4Ox5n& zF5_xY2sB;7JJ78mXF)(e1cTf$3?w?kIX)-c%gF%E-jU?S%B|P<3eAD^7V+H^=m#*n zv0tNK$rZjLCuj~48%amH(i>UR2qXRb#jLzUkv)6%GcT%?Ps5@D5-VEERMQ%=(E{i@ z@ZNI3MDG^oo^mdW`swF=b$@S={M3Ju9PEF;m%My_G}u4vN4~PeR4BhGQ#oS1QiKWR zEje;TQx;NfeJ6qN(^k^woHMSx!@*(@yiCh>5sa+i_PA~n{Z5v5QaDlGE&cxy%6&kK zJJ4)E74Je5xHcv@z&>{I7P0M}H!dN6n>A~oYi;Rl13HJn%*`<<3SFTSR0jYgo^G#0 z2yl~}01bHN%<-9}K{qSy>BGA#&zw0)+&Q^MSC;hVmh`WQ_+oC|bPSQ!+yYV9vu}P( z%kmW7)&JupGf%t6wch&5Nkvu^QJ~yKTy5-E4dZeFtiAWc!2!HV0CY^{8mRmpyj%{+>>`*J$|&k<@8L1?YnE2Rgp7BG9`m zX$gD`RfNzGtBbq95cwzYG+QvX$Q$2vaX|0T+k~SO%%Nw#Y9~ef6S%r^j7LP+ctM2K=9*{R zK~DKgA@m_v=tt|iKDMz>_(PaP0pEg-YtL0K@CQ!DHB{Wv%}2V?o?|p%fHi3=rx=6O e`zrtIisfxdztwOHy{(UYyp4CP9cO3vLHsY`W4)08 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc deleted file mode 100644 index 6edbcbc31fb41d948a460c6de76f405ba930312d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5483 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 Sk2GxKD%tp&k*iqq(SHDrQ1~_g diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc deleted file mode 100644 index cb5e65e9500339f46c5ba992508be12fcf5f0b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9679 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 EA4`&ie*gdg diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc deleted file mode 100644 index 9cabe197fc966f404274de80637d6adbedae7846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23280 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 KnR|b8-~R{UVZ@aH diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc deleted file mode 100644 index bb1efbdf5bf72f352ed1460a7f269cd491c00e3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1990 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 TfBa_a-_FNVS=8%$8*l#yD6$dE diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc deleted file mode 100644 index f8b349d6307ff97f3895499ed24cae08f6a4ea0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5772 zcmaJ_&669)b)V@O41ifI7W@50Qlq6v2{wh5Y^S1P(JV>iQd(PDvPeoQgWf{TqI-9T z9L#_{gIy9HIEu+ia#3ubQ>ogm91{HlIs2AV4!(A|DwWD9ryP=!ZCMiYdp*E@(6oV? zp4VURy?)<4@%XrF;P=$Lz5UzshVft2Ir&>e=WRU6znF%>4Q_@;Gk=>+Q}9^Ii z@MfXiDKrZmr|EQx&0?q2EOpAwa>s4Dow4Rvr_!vLwBHKHJJn`Y!*)2)sWoez$>yZ) z7s9E|baPt6PB_z~mC1-St{CD2=JE}~x+6|p21w%MYwXf&7k zurHRktwn>oc-wr8SDxC1^iSfP6)*8QF-BDQJYV38fJ?$7?)Va5&=gM2Enn7iSc$nafNOZ4#rq|^ z&kf%%i6zbF0{8gKPYcbL`HCJX^7D%ZczcCk0BmSJauR-NBkj$n^-jxBa$ImAEUSR+0~6?ecn*q(p>}-05v~W!x4?vL^JH~TM0=}Yu(jHKobJZacN=fM zv6?^{uXp|S1Aj*(tKFcx+6qVwP}OQL4MN~J5^1CRSXDay1JN4t;em8gL1Wt`)3qvQ z#j=?^gMl`@`{+k7$@3bXWCjg458&C{dTNkVpO}YaV|IU43*<&DJAUeoNZ^pYj)>C4 z+m5BjgQOe!k8{y|X?myVFrY3F4SGm#e+~SbGXoPkGquiYDLb%IXp3k@HuW+<9~;mi zq7Lb8qh652qpYD(g=9Ark5u7dFHVKBl2m@q6l=U8DUNB;=gl%LE??OZk$BXVS1+TR zP#|QV+6H6ZGxu5lBKXI_MzYg7Y+MQBwjU-}8%JAVqW1kbh(0&9&Y!0-{Q@j+5;X^n zTV|~Ejl2l(lwe2!Bpj`PDgbVBHWEG#ZS}veMSolSf|u^XV2{KeL^KdcPx||pyj~;) z_uHx9q>oOnh*QKyTDSu`iHBx~v`{&rg-T}LXOWqizhn>Dom`AC@nfkwiD<(w<;&Rp zya3!Q%4vAQ5+! z)$VXLmh8s+tt91fFU80{SL1Qi8b*|ui~h|=>L^@rgxa>w z%QyoW1Gy;mwL$y_BFt=V_6+GD(%G4#;R;|UGv#b*+&2efDZ6hCDp3JF8@`@rrjZu!mk!E@#$X~V$hWeI12-#B#LOH-)6$@Z zk+H1C%|onxc)7ojR_>3d)eJEK&;&hMIk}B@En>RIvI%Z+`?KO;@)IMPvyF7}@k7%X zOqoXC%}O!^S5v%@O=a$(Wg0(&sSl=pI<;@^Qxu;Dwtvee?@uQ``GN5>6VOcZ=?FTQ zJ%n(|2F)MLf#;cQCi(klDVsT%*S+b3g=~fw=M8;=v25lEoun%NIV&drq_Gqa77540 zzv)-A$%7?=KhgN)ziOvZ|tM;I9Sf656!`B^cwb_IW&IE26Kb?Z0_Lf zA>|%tu#k;q3q0JB;wVAzV4wka&FHBhh z*WYNam(VL_#ehj@TVI~`s~_MN2Rc{dR; z-~yC1!W;p<}C?}bQZzve=5CEmTw5ksfK z%^z_x3`3Nby**zBM9qu*4)GHsMIcli@za$7@-~K%=R%Ys-mx$nx2Vi}tv(`pI+kgj zY?G8Od3l5z)dUG0*o)$n6tpAwC6B@#@)HEkN62!W=spfw|v!wNUoZhaV93et&)d?chgkW1! zKEj;u_hDg26_Qka#G0d9OV>-$sAxb}x#Eqfw!BAyKt06mm)EC%aOhOlpg| zg9;|)L8P4gwE7M6m9HcED+`K5tw~jM(m$`OY3~9Z0r>~vI328Pai_N5gi)70-l^aE%(o^M|*x4aF{o!UWS34$j;xdUz8IhKRbxF zV^th#P}vkWRB=zptvC^q3N1CcBht0)ZIt`Lp7;PYN~lYs$HE_xjC`?yB33+*CypGK@vJACttiE!EG+Z_|QH)R4i+1~seHyg>~Wu96CM`CV$hN6lZL$;+A( zVsH_ac`MZ7o1(Z4O05&~W0)UZ7bO+n%BFCnY`Q4I%pbLti}2IRZICWmB#~jy!W(O( zR3$*#KvfCd9I6tE7VM>^?Ik}q-MLN_{u312PVl2IjtXl^%eGlEZPTtftYkX2jT=(c zcA1MY7c*6p0dg2tXqchz{;uj$pJ2>>%?hPY+3)QV?Vvx?yP4iy!hNd*i2WZMcYz19 zpE}PfCVN(46}y7IYgY6w+pIAMD;??s!b-x9p7XU+n9=lr0X@6GXp|s__{`T~?N_$z zeucMHeP)|dl9Y=G`3W4h&KetkbO|8iu<#^T(9ow1UgEeurzSo^SSc>ic;gC|TB(`Z z!w(k)Zf=+U*4Q?=!;4SHaqXt7VY&Yww`9B*aNJ8yM8}py2t-2EIgqRZiNPCI#>i-z zvxci9FMV2wcz$WoDSkgd5T_gEyS*Uf?;>tu{{1+9a1E*yvf@Ck;;vO$@zk>@ZSL)DU=9esIew8Nk=G~`5% z5lYgCS~$H5VJ*)9i4MtX`Si5@eA5^vC!LM*to0n0d|4;Jw<7xFAt$Nvh}_sPWm3_s zzv}2vKTJkjaU3cO9BVt#g3DF$Tx={|>7Z~4#Z|g@Cc9`#28FDW`I=c7tFek%L%6XK zu4?Rzb#8KHf|PUmZ-0S6`HVqTj#d@>3ikDfs>8l?i|qGKiT%zgv)?){`+`+;DEwdJ Iua@fn4_r7P(f|Me diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc deleted file mode 100644 index 1e3033dd813108465c3017e88f70744a167a5107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8325 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 ISNpC11>r^?Hvj+t diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc deleted file mode 100644 index 08844562742bfb6f3e5990b9e16ec2870fac18ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6668 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%0Au)?G_2?frsT<1({Gvw8<} zpam|n@}Wx*`H{uv$K^jPKUp{LU4~S+1Ul!k0>HO|wD}UKEUWW9d+%@mtCWm`oBzrI-JQRf^=|r`Dmxu&lP^= zHS3R=tSJ9TDjLT1Tt2U1T-O2Pi_B2R8-2lC=2o~QhsVY)dPXdnH=5zK@gLqxPZs$hsbgei<9#sm*}g#feB#s z@xG9b9C`P*Munm3-Tp3o1TeIlP&)Xv*pNc1bv!90z?+B;KQ17{W82ox>?cSoH2fi9 zqDYpq_~uJ_(Kyqu0pqI#@x;@;zan}RcrI9@%flF&r}47+Duo15dJmPOsZ$<{6x1l^ z|ANOFwN_15b4>LGB%APyhIt-|{Zaxk_^?Nbe>ghnCzapC`XhGby>zo=(0_YYJgXJ_xUL zubTCokXEu?@~TuTGK#`e^R`p4ijZPI>)x#OC1!G8x^LuMvH69r8^o?xVmB zj0)jo=|aFb%i5H)q~6@YZshOMIBA7^n~F13yn`Zl5MfEm)8rZzr;<{@TYa=!fRqSJ-@CMy-)0awX1cu z@E`QgRcaIe>e)5?k$<)Se(8?nV1qJO+zrL5LzZ$Pksu48fJ1xPKSO0I^(L>!9^2^> ze5V7C>niw)bV(HtN|c(*>%exT9T;`#I;e)c^K*pg943X8E>^yx$_Evio4#^PqpE7> z;4jV*g?mUFC~+ZQi&bhCDMLZiw8?L&d0x!epId){o0d;mqqH`f)uE@!j9Lgq03Ewq zxRlhf&S+tJ^y%$Qn$Vsghq(2qR-Pt%pQx7ElnVRl%#x;Qea8f8u>DAF`LJ?m`#(uHK+2@Ky}UUZ+FhaHnJBxw!uRd+)vb;Nkr@r>>@R2c9Xf zuG0OkGO$zNVq>_OyL1tqJGg)~SE&xdeFJ+f;)P(*ARgUQm}p%eFd3&7<E_OIGBxg9^%useZF@f=hzC8IOB;-#N z?vDV3FX7j7Ae?YokimMU1L|Zp@Z9XXnH9k_9E6l`kNZVq8Vw@g1JUH62t{+7ocO%K zqc{E_=1r$#kjXkmh=jAJ^x@u_mu}* zmGi=EpsOM`HYnt|P(7*;l;4O#_uExlZSz zoTo*8oK_cREX&XOPadZ_H)6NSMrYZn&}o%d=`b&iP!L@@GkKv?2ub&=3)?*vW(dMi zkH%su(5;4Ck%;>A5mjwqtzTtk{9fP;)VRw9-Ur5z30*Qry_#InE4m=Yp9IU0QjsG$?Kbl4sR3%Xzn4=Amf`nYD?KV#|> z9xPbdHNM*6Va>J(NDUM423mQ`Zf%6iM$Kw(3v#sZVDC}Q^pS~b@WG?A0A!CtC-E38 zBH!93ra6h{#7WROzc5(s-pVch0Of^Odyv(Q%bova^}k%MQ;X27v!c2X?B$am^OUMejWJgDrd!;OQoziWG+Ig;% zOo;?f=vh@sg_R-8#Ef&DR7GY^paS-jYY%SW8gWHa*Ok{;+1HpB$Z-Sj$oA8NUdzVX zU`?IpW~?6KsSkkI2rr8LtMG`8f5?iN_*yBc)Q6~O!}`;^%CTM{N*ijUpm%L2)1y2e z7SPo~>7MV3$OJN|Gb%kL+-Y+h&hqZ+!KY}H_2gLUo4R2!RzuWZNEMz{78Dr4E zHyb{PHz2%=J@!xRv%lK``>PwWRXg&T+JVEpj(UJTJ_X{g3tiB6P2j?`UGRviyFLib z1wK6rakAk^Vjr!8_aHF$Ubr%M#_#op3&b@@^!ZfsSs}i_2T&uH5xh3|wP~AedJn_R F_+Jmil-K|O diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc deleted file mode 100644 index 212a514758d17b37f8d5aae40ecf4f58cf68dcac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 zcmaJ@TW{mW73NSBCCj$#y%|ZHpwn#wM};kIE(I1vl6K+sra`xkv38M0Xv3vBBZ+H@ zWM)S8+O>fIP9NL;1^cmoq3`_@eC<>ILLa*Q&QP*suM-j^=M3j^<~!fHWQ&Up2iLdk zS?`-g$N3KlvzG_qH+b~F@Dh$-iPJ5=tjnzIc3u0ebSw7jbv=CDq&oDw{;<}qF-JP* zbvbvzx((@`&x;CL3&N9&Jy%qP|E61O4U6Kuz6-T4msJ6kQc@Seun6!p(@6K83d96yZHC>aU4 zu8*{l!*v}Sxt@p7e%P1#Px==h<9YYj+aDc-$w+=;)JUH6!bHnf;VWrIDvfC6*{cd+ z1CPFomvLS&;~F4Gt+UF01=_gB>Bc}t`q`?FqyFirIcRKO|Lu1M*-&=+qc~DoB#ntX`ww+TM=H$Yw7;HbLU#_ZQzwb{ zI{A?qWa$U(_a1bv;Md9Hyc5K!kqTIMMkY=$t5g$n+xby(Cs3m_#gf4&6;cJXW|Po! z@w!`8^Z2|5aRr?gVq&jx3={0kwZIOq0;^=0On?P;TAG`nya_lSVXl#aAI4_D^P@am z)f0qC^)aq98-QH3L8u8z$LCbAz!N5K@66^ycHZ}^IEc zcfaurZ(Ot3r9FQ#(S5;HOV@QLd)Dz--Fs+|L!7&&^1>7B!aa44xv8EYbco8|+c zvJ-ahUpVKr3+D^Rb%f_Ro^w`VkanE+9R1Tn#vHo8#PbFI@8G|wAH6^6rJh5lRXzUe zGZ_la|3aQta{d&IC8D*XUf()g>B{g&qv25CD_n<%nkNVrJnP|`N?khPGwb!5Z)K@m zBdlYCDWgR2G&3B05S=iJq}CjW@?M7K{ck?E~JY_Xy)(>-K`+R3psZ4=;OXczbjugZeU9eO4#KkzK-Z^p4tHQfrqPp*@cgoRUFAERhzuf!WL9l=~9vX{1+#7LdXDDK6Gnr09hemIcn&GSQe4Vh7o z@;uYhqMzsHrHPfh%s4@ck*ktvMRk_%aqWQVY|U5~K;RjDS$ z_8&?^{9|r&PC5FK5OJBjlA|@AWMD8q3>C#tqGL%u5+?k^WW?Q)g9sMNRL*lt+3vHns>qF3491w=#d6NXy-Yu#& zwH8%-#3wD^(ys7vu)b79ZG5!iXTfJ%8&Ci6cr)1fa%Xq*_rcC*yPLuGqmAD^`gC(A zc((cJ<{yiyO_xQrud-2&L^ns?P`ZjoAH_l1*WDt`g7OG6N$3NN)NkPB&)1n(ahdnZ ztJd8HTVZgHZ#<^RaUwjI7lpXX?Ee75IK)w)s~GP^^@7}>?DffM5cX_ca9$$^u?g(o zCHG;-`)RgbYIU_JX`7ekK9?^MnlubzLpvdlY+4e;mI=d{;sPRA){i4Xo>JIM?zKK7 zBr-EBNH&C1Pzo6Pg{A0Kdy;QVoM6o88xrR@*!}nilyBA5Er6qL<5ko|jM`u*i(0s+ z%h*TT7WKeJu^>=)XqaD~7jbTZeh0%$1ejU8H8q{>pHyyk@^wSs52mBbYU8!^OF>Oj zW?k`NW!&EX7Cg0vjw_aijI1*bgm0lifl&EnA~r7C3#LLz*;b$K@oy(tBjkHomdG$& zy99iir8(uKvfxOw8v|7PNy{sA;k54yy{M!mG?4hxE`75RkPZx PH|JKW&86nsx10Y5UyPSh diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index 7ff87475349e8e323ba6eb036b263c13afe14bc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4402 zcma)9U2hx572Ta(E~ynI%aSbltM;O3Y_qjU+XdP}G1NGT+8VXxz;Rw#w&NOGbe$zMYay;9uHmjyyiRZfW&3V*knx}+)xFAj++08}n3!l%5C0-R}u_T-w zcFx-I_#B^q56NuOIaJ1^fCN`<=uRqu;XDj`uTJ?{5nQDeFPX~>&V z?+;j%mq!(hpKgaqnndj|jxy0o!Y(ae_%cz&DFlB?d)3(Yu#Y9F$Y;#<{XG07(|?9fZKKE*v^BJb_5s^x+D46`=4du_4(xsRsg0xA~2hVOs}L0;P3B z(qFJ6({7+UBIwEVdBg=T^mjcFxTPeeMmp#Up;fRQs;KP;_$eJGJd_*?HtmPzipt2L zO9$zWsn>a=^crm!@JNcbPURrL(qcoh0uP@4X>;=)cF-XYbyzp@velpyD$K-DpF{bR zLv7W(e5uediEfeT7DVUsMdw&dK3BA#3#o8RNuHEDO3Qqy-4X3)t#;b&K>^!Q9O*&L zlVlA!OS38ynU#sO@<>i@i|;JCf@wc&H#%uoG)HlQ3@dbrh?HIeNV}$Y*<` zqLyhdV^c*1^L*R4tMvId}V%*^_dYEZBLr1M>n*&uZ?E-(?d*;e3=qn#OymIIcog@3mrtzV}XURS|C7!cL_0x}B4DKbgkKLfZjNiIG*AP&c`8(L6(|pNyEE+z1m*&g zZSwB%k9?W5`Us!8h@u0H{>9(7hxQ=?HMfr#N8tPi``UQk4|YS&V3vsx6n0b(utV5k z^&7d}Gk_|JRm{p~ZY!Y)pc`u>pEkQ_WmgJBPr<%^J5CXt)JA=>fQ>QkLh?RfLSP>Te?mseEP}JCt0c1#{!J z;f{QMLMNtuLY;CBORnHk0gA=)Jabvat}+H!ci&dr3R=Ehv|QKB&Rqnt&XmJDSUaJX zPteFba`quy_9<`x8i8ADXU7>_2AO~$GGDtKz=e~tAsag>$Jn=wsHEm>WvAL{Kjubp zQiMFn%7$OpgIXzfsYepZ^2(pZz&K)Feb`TQ)D@;>lv;BNh5ZT>LLb~2mL^(pCj{#rSceFEM>c|4DT|6=W`f5wp%E2=$3#KB@8}g_ zsh27hZO5Yk^8h3)_Yl&ba6+QO#@_rB{h z#)zT{V^uvfJ{DqlekxAUX^5f?OFc$qh!_fH0W3M|Te7MxZZaIiS27nv1_Tfz`(cMA z4kH|}gE73lLCv=4AJ&u%pfUE6fb3=4e~duMCsGdR+oUg3NeSh3Yfp;op-}w)YoEEN z$JcIUmkK;YD(FVAH!L+ZA-C(<>Nv}p8i99}i+EImiI7j0G-a!~(+zvMgPcKLfTnW) zNf`GF)56DoLtWKTy3#V{qNL%3v&mEF3-K9qA+*@|2a~Osyn?+oX-l~#ZDidrBmdUh~;q{gwsoa zflyyX=80tBD{PAF0u*Bsg|I`B58k|oDM*Sj>)6KTG}lCZH@H>55o`oE>o;p3n^c$1 zO*wT^q#MP)1cNXbnJGw}CYstlt_599?KMXB`r5tr<)J!96JyJhc!! zrH0_zeY(r_;6Ck8GshslTMwu#ZbUC8>^@3MNkK&n65q5%&%6`D?X<6pY=7O1srLfZ zy1C|0+a!P=?2;3jV-#%t>5F|R^Te57?AK^6B?BkbtUDMOD+&gIf#q)j%j}nT-)Yyp zYr-HAdqSR+{gJ9|)hhYolg)>Z?mpORefHq~7k3`t{q)|Z@i+Mk2$LUCu};MTirkCS z-CZH`GT9SaMpk4Ti{1<;y$f%7>uY?9C~l$3K-$Z;`(wp*4SiRBbl*yvQ@fa#TP>cp zTdllI@*y{$6WuV1>)qnHD#_>aYSCxHwJc({rw8=TkS>jv@!TY;G&C%U`tl3VO1%X| z^HkOgyJC9XyfBJv=B$}9etXm>rdEX#Hb~0MuF&_2i&t7EX=%0O?=fPOVxApEB2wBO zXrT=Gm{>1Arb!fL%uSDJ$k4vYb1S#IDeuQ(gHmgg^te{VsUikd?FA%0RU|;ZbIDm* OT)Dh5bAIXP3;zX9`mU4! diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py deleted file mode 100644 index e06947c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py +++ /dev/null @@ -1,109 +0,0 @@ -"""Functions brought over from jaraco.text. - -These functions are not supposed to be used within `pip._internal`. These are -helper functions brought over from `jaraco.text` to enable vendoring newer -copies of `pkg_resources` without having to vendor `jaraco.text` and its entire -dependency cone; something that our vendoring setup is not currently capable of -handling. - -License reproduced from original source below: - -Copyright Jason R. Coombs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -import functools -import itertools - - -def _nonblank(str): - return str and not str.startswith("#") - - -@functools.singledispatch -def yield_lines(iterable): - r""" - Yield valid lines of a string or iterable. - - >>> list(yield_lines('')) - [] - >>> list(yield_lines(['foo', 'bar'])) - ['foo', 'bar'] - >>> list(yield_lines('foo\nbar')) - ['foo', 'bar'] - >>> list(yield_lines('\nfoo\n#bar\nbaz #comment')) - ['foo', 'baz #comment'] - >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n'])) - ['foo', 'bar', 'baz', 'bing'] - """ - return itertools.chain.from_iterable(map(yield_lines, iterable)) - - -@yield_lines.register(str) -def _(text): - return filter(_nonblank, map(str.strip, text.splitlines())) - - -def drop_comment(line): - """ - Drop comments. - - >>> drop_comment('foo # bar') - 'foo' - - A hash without a space may be in a URL. - - >>> drop_comment('http://example.com/foo#bar') - 'http://example.com/foo#bar' - """ - return line.partition(" #")[0] - - -def join_continuation(lines): - r""" - Join lines continued by a trailing backslash. - - >>> list(join_continuation(['foo \\', 'bar', 'baz'])) - ['foobar', 'baz'] - >>> list(join_continuation(['foo \\', 'bar', 'baz'])) - ['foobar', 'baz'] - >>> list(join_continuation(['foo \\', 'bar \\', 'baz'])) - ['foobarbaz'] - - Not sure why, but... - The character preceeding the backslash is also elided. - - >>> list(join_continuation(['goo\\', 'dly'])) - ['godly'] - - A terrible idea, but... - If no line is available to continue, suppress the lines. - - >>> list(join_continuation(['foo', 'bar\\', 'baz\\'])) - ['foo'] - """ - lines = iter(lines) - for item in lines: - while item.endswith("\\"): - try: - item = item[:-2].strip() + next(lines) - except StopIteration: - return - yield item diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py deleted file mode 100644 index 92c4c6a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py +++ /dev/null @@ -1,38 +0,0 @@ -"""Customize logging - -Defines custom logger class for the `logger.verbose(...)` method. - -init_logging() must be called before any other modules that call logging.getLogger. -""" - -import logging -from typing import Any, cast - -# custom log level for `--verbose` output -# between DEBUG and INFO -VERBOSE = 15 - - -class VerboseLogger(logging.Logger): - """Custom Logger, defining a verbose log-level - - VERBOSE is between INFO and DEBUG. - """ - - def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None: - return self.log(VERBOSE, msg, *args, **kwargs) - - -def getLogger(name: str) -> VerboseLogger: - """logging.getLogger, but ensures our VerboseLogger class is returned""" - return cast(VerboseLogger, logging.getLogger(name)) - - -def init_logging() -> None: - """Register our VerboseLogger and VERBOSE log level. - - Should be called before any calls to getLogger(), - i.e. in pip._internal.__init__ - """ - logging.setLoggerClass(VerboseLogger) - logging.addLevelName(VERBOSE, "VERBOSE") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py deleted file mode 100644 index 16933bf..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -This code wraps the vendored appdirs module to so the return values are -compatible for the current pip code base. - -The intention is to rewrite current usages gradually, keeping the tests pass, -and eventually drop this after all usages are changed. -""" - -import os -import sys -from typing import List - -from pip._vendor import platformdirs as _appdirs - - -def user_cache_dir(appname: str) -> str: - return _appdirs.user_cache_dir(appname, appauthor=False) - - -def _macos_user_config_dir(appname: str, roaming: bool = True) -> str: - # Use ~/Application Support/pip, if the directory exists. - path = _appdirs.user_data_dir(appname, appauthor=False, roaming=roaming) - if os.path.isdir(path): - return path - - # Use a Linux-like ~/.config/pip, by default. - linux_like_path = "~/.config/" - if appname: - linux_like_path = os.path.join(linux_like_path, appname) - - return os.path.expanduser(linux_like_path) - - -def user_config_dir(appname: str, roaming: bool = True) -> str: - if sys.platform == "darwin": - return _macos_user_config_dir(appname, roaming) - - return _appdirs.user_config_dir(appname, appauthor=False, roaming=roaming) - - -# for the discussion regarding site_config_dir locations -# see -def site_config_dirs(appname: str) -> List[str]: - if sys.platform == "darwin": - return [_appdirs.site_data_dir(appname, appauthor=False, multipath=True)] - - dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True) - if sys.platform == "win32": - return [dirval] - - # Unix-y system. Look in /etc as well. - return dirval.split(os.pathsep) + ["/etc"] diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py deleted file mode 100644 index 3f4d300..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py +++ /dev/null @@ -1,63 +0,0 @@ -"""Stuff that differs in different Python versions and platform -distributions.""" - -import logging -import os -import sys - -__all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"] - - -logger = logging.getLogger(__name__) - - -def has_tls() -> bool: - try: - import _ssl # noqa: F401 # ignore unused - - return True - except ImportError: - pass - - from pip._vendor.urllib3.util import IS_PYOPENSSL - - return IS_PYOPENSSL - - -def get_path_uid(path: str) -> int: - """ - Return path's uid. - - Does not follow symlinks: - https://github.com/pypa/pip/pull/935#discussion_r5307003 - - Placed this function in compat due to differences on AIX and - Jython, that should eventually go away. - - :raises OSError: When path is a symlink or can't be read. - """ - if hasattr(os, "O_NOFOLLOW"): - fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) - file_uid = os.fstat(fd).st_uid - os.close(fd) - else: # AIX and Jython - # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW - if not os.path.islink(path): - # older versions of Jython don't have `os.fstat` - file_uid = os.stat(path).st_uid - else: - # raise OSError for parity with os.O_NOFOLLOW above - raise OSError(f"{path} is a symlink; Will not return uid for symlinks") - return file_uid - - -# packages in the stdlib that may have installation metadata, but should not be -# considered 'installed'. this theoretically could be determined based on -# dist.location (py27:`sysconfig.get_paths()['stdlib']`, -# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may -# make this ineffective, so hard-coding -stdlib_pkgs = {"python", "wsgiref", "argparse"} - - -# windows detection, covers cpython and ironpython -WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py deleted file mode 100644 index b6ed9a7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py +++ /dev/null @@ -1,165 +0,0 @@ -"""Generate and work with PEP 425 Compatibility Tags. -""" - -import re -from typing import List, Optional, Tuple - -from pip._vendor.packaging.tags import ( - PythonVersion, - Tag, - compatible_tags, - cpython_tags, - generic_tags, - interpreter_name, - interpreter_version, - mac_platforms, -) - -_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") - - -def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: - # Only use up to the first two numbers. - return "".join(map(str, version_info[:2])) - - -def _mac_platforms(arch: str) -> List[str]: - match = _osx_arch_pat.match(arch) - if match: - name, major, minor, actual_arch = match.groups() - mac_version = (int(major), int(minor)) - arches = [ - # Since we have always only checked that the platform starts - # with "macosx", for backwards-compatibility we extract the - # actual prefix provided by the user in case they provided - # something like "macosxcustom_". It may be good to remove - # this as undocumented or deprecate it in the future. - "{}_{}".format(name, arch[len("macosx_") :]) - for arch in mac_platforms(mac_version, actual_arch) - ] - else: - # arch pattern didn't match (?!) - arches = [arch] - return arches - - -def _custom_manylinux_platforms(arch: str) -> List[str]: - arches = [arch] - arch_prefix, arch_sep, arch_suffix = arch.partition("_") - if arch_prefix == "manylinux2014": - # manylinux1/manylinux2010 wheels run on most manylinux2014 systems - # with the exception of wheels depending on ncurses. PEP 599 states - # manylinux1/manylinux2010 wheels should be considered - # manylinux2014 wheels: - # https://www.python.org/dev/peps/pep-0599/#backwards-compatibility-with-manylinux2010-wheels - if arch_suffix in {"i686", "x86_64"}: - arches.append("manylinux2010" + arch_sep + arch_suffix) - arches.append("manylinux1" + arch_sep + arch_suffix) - elif arch_prefix == "manylinux2010": - # manylinux1 wheels run on most manylinux2010 systems with the - # exception of wheels depending on ncurses. PEP 571 states - # manylinux1 wheels should be considered manylinux2010 wheels: - # https://www.python.org/dev/peps/pep-0571/#backwards-compatibility-with-manylinux1-wheels - arches.append("manylinux1" + arch_sep + arch_suffix) - return arches - - -def _get_custom_platforms(arch: str) -> List[str]: - arch_prefix, arch_sep, arch_suffix = arch.partition("_") - if arch.startswith("macosx"): - arches = _mac_platforms(arch) - elif arch_prefix in ["manylinux2014", "manylinux2010"]: - arches = _custom_manylinux_platforms(arch) - else: - arches = [arch] - return arches - - -def _expand_allowed_platforms(platforms: Optional[List[str]]) -> Optional[List[str]]: - if not platforms: - return None - - seen = set() - result = [] - - for p in platforms: - if p in seen: - continue - additions = [c for c in _get_custom_platforms(p) if c not in seen] - seen.update(additions) - result.extend(additions) - - return result - - -def _get_python_version(version: str) -> PythonVersion: - if len(version) > 1: - return int(version[0]), int(version[1:]) - else: - return (int(version[0]),) - - -def _get_custom_interpreter( - implementation: Optional[str] = None, version: Optional[str] = None -) -> str: - if implementation is None: - implementation = interpreter_name() - if version is None: - version = interpreter_version() - return f"{implementation}{version}" - - -def get_supported( - version: Optional[str] = None, - platforms: Optional[List[str]] = None, - impl: Optional[str] = None, - abis: Optional[List[str]] = None, -) -> List[Tag]: - """Return a list of supported tags for each version specified in - `versions`. - - :param version: a string version, of the form "33" or "32", - or None. The version will be assumed to support our ABI. - :param platform: specify a list of platforms you want valid - tags for, or None. If None, use the local system platform. - :param impl: specify the exact implementation you want valid - tags for, or None. If None, use the local interpreter impl. - :param abis: specify a list of abis you want valid - tags for, or None. If None, use the local interpreter abi. - """ - supported: List[Tag] = [] - - python_version: Optional[PythonVersion] = None - if version is not None: - python_version = _get_python_version(version) - - interpreter = _get_custom_interpreter(impl, version) - - platforms = _expand_allowed_platforms(platforms) - - is_cpython = (impl or interpreter_name()) == "cp" - if is_cpython: - supported.extend( - cpython_tags( - python_version=python_version, - abis=abis, - platforms=platforms, - ) - ) - else: - supported.extend( - generic_tags( - interpreter=interpreter, - abis=abis, - platforms=platforms, - ) - ) - supported.extend( - compatible_tags( - python_version=python_version, - interpreter=interpreter, - platforms=platforms, - ) - ) - - return supported diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py deleted file mode 100644 index 8668b3b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py +++ /dev/null @@ -1,11 +0,0 @@ -"""For when pip wants to check the date or time. -""" - -import datetime - - -def today_is_later_than(year: int, month: int, day: int) -> bool: - today = datetime.date.today() - given = datetime.date(year, month, day) - - return today > given diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py deleted file mode 100644 index 72bd6f2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py +++ /dev/null @@ -1,120 +0,0 @@ -""" -A module that implements tooling to enable easy warnings about deprecations. -""" - -import logging -import warnings -from typing import Any, Optional, TextIO, Type, Union - -from pip._vendor.packaging.version import parse - -from pip import __version__ as current_version # NOTE: tests patch this name. - -DEPRECATION_MSG_PREFIX = "DEPRECATION: " - - -class PipDeprecationWarning(Warning): - pass - - -_original_showwarning: Any = None - - -# Warnings <-> Logging Integration -def _showwarning( - message: Union[Warning, str], - category: Type[Warning], - filename: str, - lineno: int, - file: Optional[TextIO] = None, - line: Optional[str] = None, -) -> None: - if file is not None: - if _original_showwarning is not None: - _original_showwarning(message, category, filename, lineno, file, line) - elif issubclass(category, PipDeprecationWarning): - # We use a specially named logger which will handle all of the - # deprecation messages for pip. - logger = logging.getLogger("pip._internal.deprecations") - logger.warning(message) - else: - _original_showwarning(message, category, filename, lineno, file, line) - - -def install_warning_logger() -> None: - # Enable our Deprecation Warnings - warnings.simplefilter("default", PipDeprecationWarning, append=True) - - global _original_showwarning - - if _original_showwarning is None: - _original_showwarning = warnings.showwarning - warnings.showwarning = _showwarning - - -def deprecated( - *, - reason: str, - replacement: Optional[str], - gone_in: Optional[str], - feature_flag: Optional[str] = None, - issue: Optional[int] = None, -) -> None: - """Helper to deprecate existing functionality. - - reason: - Textual reason shown to the user about why this functionality has - been deprecated. Should be a complete sentence. - replacement: - Textual suggestion shown to the user about what alternative - functionality they can use. - gone_in: - The version of pip does this functionality should get removed in. - Raises an error if pip's current version is greater than or equal to - this. - feature_flag: - Command-line flag of the form --use-feature={feature_flag} for testing - upcoming functionality. - issue: - Issue number on the tracker that would serve as a useful place for - users to find related discussion and provide feedback. - """ - - # Determine whether or not the feature is already gone in this version. - is_gone = gone_in is not None and parse(current_version) >= parse(gone_in) - - message_parts = [ - (reason, f"{DEPRECATION_MSG_PREFIX}{{}}"), - ( - gone_in, - "pip {} will enforce this behaviour change." - if not is_gone - else "Since pip {}, this is no longer supported.", - ), - ( - replacement, - "A possible replacement is {}.", - ), - ( - feature_flag, - "You can use the flag --use-feature={} to test the upcoming behaviour." - if not is_gone - else None, - ), - ( - issue, - "Discussion can be found at https://github.com/pypa/pip/issues/{}", - ), - ] - - message = " ".join( - format_str.format(value) - for value, format_str in message_parts - if format_str is not None and value is not None - ) - - # Raise as an error if this behaviour is deprecated. - if is_gone: - raise PipDeprecationWarning(message) - - warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py deleted file mode 100644 index 0e8e5e1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py +++ /dev/null @@ -1,87 +0,0 @@ -from typing import Optional - -from pip._internal.models.direct_url import ArchiveInfo, DirectUrl, DirInfo, VcsInfo -from pip._internal.models.link import Link -from pip._internal.utils.urls import path_to_url -from pip._internal.vcs import vcs - - -def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: str) -> str: - """Convert a DirectUrl to a pip requirement string.""" - direct_url.validate() # if invalid, this is a pip bug - requirement = name + " @ " - fragments = [] - if isinstance(direct_url.info, VcsInfo): - requirement += "{}+{}@{}".format( - direct_url.info.vcs, direct_url.url, direct_url.info.commit_id - ) - elif isinstance(direct_url.info, ArchiveInfo): - requirement += direct_url.url - if direct_url.info.hash: - fragments.append(direct_url.info.hash) - else: - assert isinstance(direct_url.info, DirInfo) - requirement += direct_url.url - if direct_url.subdirectory: - fragments.append("subdirectory=" + direct_url.subdirectory) - if fragments: - requirement += "#" + "&".join(fragments) - return requirement - - -def direct_url_for_editable(source_dir: str) -> DirectUrl: - return DirectUrl( - url=path_to_url(source_dir), - info=DirInfo(editable=True), - ) - - -def direct_url_from_link( - link: Link, source_dir: Optional[str] = None, link_is_in_wheel_cache: bool = False -) -> DirectUrl: - if link.is_vcs: - vcs_backend = vcs.get_backend_for_scheme(link.scheme) - assert vcs_backend - url, requested_revision, _ = vcs_backend.get_url_rev_and_auth( - link.url_without_fragment - ) - # For VCS links, we need to find out and add commit_id. - if link_is_in_wheel_cache: - # If the requested VCS link corresponds to a cached - # wheel, it means the requested revision was an - # immutable commit hash, otherwise it would not have - # been cached. In that case we don't have a source_dir - # with the VCS checkout. - assert requested_revision - commit_id = requested_revision - else: - # If the wheel was not in cache, it means we have - # had to checkout from VCS to build and we have a source_dir - # which we can inspect to find out the commit id. - assert source_dir - commit_id = vcs_backend.get_revision(source_dir) - return DirectUrl( - url=url, - info=VcsInfo( - vcs=vcs_backend.name, - commit_id=commit_id, - requested_revision=requested_revision, - ), - subdirectory=link.subdirectory_fragment, - ) - elif link.is_existing_dir(): - return DirectUrl( - url=link.url_without_fragment, - info=DirInfo(), - subdirectory=link.subdirectory_fragment, - ) - else: - hash = None - hash_name = link.hash_name - if hash_name: - hash = f"{hash_name}={link.hash}" - return DirectUrl( - url=link.url_without_fragment, - info=ArchiveInfo(hash=hash), - subdirectory=link.subdirectory_fragment, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py deleted file mode 100644 index 4a384a6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py +++ /dev/null @@ -1,80 +0,0 @@ -import os -import re -import sys -from typing import List, Optional - -from pip._internal.locations import site_packages, user_site -from pip._internal.utils.virtualenv import ( - running_under_virtualenv, - virtualenv_no_global, -) - -__all__ = [ - "egg_link_path_from_sys_path", - "egg_link_path_from_location", -] - - -def _egg_link_names(raw_name: str) -> List[str]: - """ - Convert a Name metadata value to a .egg-link name, by applying - the same substitution as pkg_resources's safe_name function. - Note: we cannot use canonicalize_name because it has a different logic. - - We also look for the raw name (without normalization) as setuptools 69 changed - the way it names .egg-link files (https://github.com/pypa/setuptools/issues/4167). - """ - return [ - re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link", - f"{raw_name}.egg-link", - ] - - -def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]: - """ - Look for a .egg-link file for project name, by walking sys.path. - """ - egg_link_names = _egg_link_names(raw_name) - for path_item in sys.path: - for egg_link_name in egg_link_names: - egg_link = os.path.join(path_item, egg_link_name) - if os.path.isfile(egg_link): - return egg_link - return None - - -def egg_link_path_from_location(raw_name: str) -> Optional[str]: - """ - Return the path for the .egg-link file if it exists, otherwise, None. - - There's 3 scenarios: - 1) not in a virtualenv - try to find in site.USER_SITE, then site_packages - 2) in a no-global virtualenv - try to find in site_packages - 3) in a yes-global virtualenv - try to find in site_packages, then site.USER_SITE - (don't look in global location) - - For #1 and #3, there could be odd cases, where there's an egg-link in 2 - locations. - - This method will just return the first one found. - """ - sites: List[str] = [] - if running_under_virtualenv(): - sites.append(site_packages) - if not virtualenv_no_global() and user_site: - sites.append(user_site) - else: - if user_site: - sites.append(user_site) - sites.append(site_packages) - - egg_link_names = _egg_link_names(raw_name) - for site in sites: - for egg_link_name in egg_link_names: - egglink = os.path.join(site, egg_link_name) - if os.path.isfile(egglink): - return egglink - return None diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py deleted file mode 100644 index 008f06a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py +++ /dev/null @@ -1,36 +0,0 @@ -import codecs -import locale -import re -import sys -from typing import List, Tuple - -BOMS: List[Tuple[bytes, str]] = [ - (codecs.BOM_UTF8, "utf-8"), - (codecs.BOM_UTF16, "utf-16"), - (codecs.BOM_UTF16_BE, "utf-16-be"), - (codecs.BOM_UTF16_LE, "utf-16-le"), - (codecs.BOM_UTF32, "utf-32"), - (codecs.BOM_UTF32_BE, "utf-32-be"), - (codecs.BOM_UTF32_LE, "utf-32-le"), -] - -ENCODING_RE = re.compile(rb"coding[:=]\s*([-\w.]+)") - - -def auto_decode(data: bytes) -> str: - """Check a bytes string for a BOM to correctly detect the encoding - - Fallback to locale.getpreferredencoding(False) like open() on Python3""" - for bom, encoding in BOMS: - if data.startswith(bom): - return data[len(bom) :].decode(encoding) - # Lets check the first two lines as in PEP263 - for line in data.split(b"\n")[:2]: - if line[0:1] == b"#" and ENCODING_RE.search(line): - result = ENCODING_RE.search(line) - assert result is not None - encoding = result.groups()[0].decode("ascii") - return data.decode(encoding) - return data.decode( - locale.getpreferredencoding(False) or sys.getdefaultencoding(), - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py deleted file mode 100644 index 1501369..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py +++ /dev/null @@ -1,84 +0,0 @@ -import itertools -import os -import shutil -import sys -from typing import List, Optional - -from pip._internal.cli.main import main -from pip._internal.utils.compat import WINDOWS - -_EXECUTABLE_NAMES = [ - "pip", - f"pip{sys.version_info.major}", - f"pip{sys.version_info.major}.{sys.version_info.minor}", -] -if WINDOWS: - _allowed_extensions = {"", ".exe"} - _EXECUTABLE_NAMES = [ - "".join(parts) - for parts in itertools.product(_EXECUTABLE_NAMES, _allowed_extensions) - ] - - -def _wrapper(args: Optional[List[str]] = None) -> int: - """Central wrapper for all old entrypoints. - - Historically pip has had several entrypoints defined. Because of issues - arising from PATH, sys.path, multiple Pythons, their interactions, and most - of them having a pip installed, users suffer every time an entrypoint gets - moved. - - To alleviate this pain, and provide a mechanism for warning users and - directing them to an appropriate place for help, we now define all of - our old entrypoints as wrappers for the current one. - """ - sys.stderr.write( - "WARNING: pip is being invoked by an old script wrapper. This will " - "fail in a future version of pip.\n" - "Please see https://github.com/pypa/pip/issues/5599 for advice on " - "fixing the underlying issue.\n" - "To avoid this problem you can invoke Python with '-m pip' instead of " - "running pip directly.\n" - ) - return main(args) - - -def get_best_invocation_for_this_pip() -> str: - """Try to figure out the best way to invoke pip in the current environment.""" - binary_directory = "Scripts" if WINDOWS else "bin" - binary_prefix = os.path.join(sys.prefix, binary_directory) - - # Try to use pip[X[.Y]] names, if those executables for this environment are - # the first on PATH with that name. - path_parts = os.path.normcase(os.environ.get("PATH", "")).split(os.pathsep) - exe_are_in_PATH = os.path.normcase(binary_prefix) in path_parts - if exe_are_in_PATH: - for exe_name in _EXECUTABLE_NAMES: - found_executable = shutil.which(exe_name) - binary_executable = os.path.join(binary_prefix, exe_name) - if ( - found_executable - and os.path.exists(binary_executable) - and os.path.samefile( - found_executable, - binary_executable, - ) - ): - return exe_name - - # Use the `-m` invocation, if there's no "nice" invocation. - return f"{get_best_invocation_for_this_python()} -m pip" - - -def get_best_invocation_for_this_python() -> str: - """Try to figure out the best way to invoke the current Python.""" - exe = sys.executable - exe_name = os.path.basename(exe) - - # Try to use the basename, if it's the first executable. - found_executable = shutil.which(exe_name) - if found_executable and os.path.samefile(found_executable, exe): - return exe_name - - # Use the full executable name, because we couldn't find something simpler. - return exe diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py deleted file mode 100644 index 83c2df7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py +++ /dev/null @@ -1,153 +0,0 @@ -import fnmatch -import os -import os.path -import random -import sys -from contextlib import contextmanager -from tempfile import NamedTemporaryFile -from typing import Any, BinaryIO, Generator, List, Union, cast - -from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed - -from pip._internal.utils.compat import get_path_uid -from pip._internal.utils.misc import format_size - - -def check_path_owner(path: str) -> bool: - # If we don't have a way to check the effective uid of this process, then - # we'll just assume that we own the directory. - if sys.platform == "win32" or not hasattr(os, "geteuid"): - return True - - assert os.path.isabs(path) - - previous = None - while path != previous: - if os.path.lexists(path): - # Check if path is writable by current user. - if os.geteuid() == 0: - # Special handling for root user in order to handle properly - # cases where users use sudo without -H flag. - try: - path_uid = get_path_uid(path) - except OSError: - return False - return path_uid == 0 - else: - return os.access(path, os.W_OK) - else: - previous, path = path, os.path.dirname(path) - return False # assume we don't own the path - - -@contextmanager -def adjacent_tmp_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, None]: - """Return a file-like object pointing to a tmp file next to path. - - The file is created securely and is ensured to be written to disk - after the context reaches its end. - - kwargs will be passed to tempfile.NamedTemporaryFile to control - the way the temporary file will be opened. - """ - with NamedTemporaryFile( - delete=False, - dir=os.path.dirname(path), - prefix=os.path.basename(path), - suffix=".tmp", - **kwargs, - ) as f: - result = cast(BinaryIO, f) - try: - yield result - finally: - result.flush() - os.fsync(result.fileno()) - - -# Tenacity raises RetryError by default, explicitly raise the original exception -_replace_retry = retry(reraise=True, stop=stop_after_delay(1), wait=wait_fixed(0.25)) - -replace = _replace_retry(os.replace) - - -# test_writable_dir and _test_writable_dir_win are copied from Flit, -# with the author's agreement to also place them under pip's license. -def test_writable_dir(path: str) -> bool: - """Check if a directory is writable. - - Uses os.access() on POSIX, tries creating files on Windows. - """ - # If the directory doesn't exist, find the closest parent that does. - while not os.path.isdir(path): - parent = os.path.dirname(path) - if parent == path: - break # Should never get here, but infinite loops are bad - path = parent - - if os.name == "posix": - return os.access(path, os.W_OK) - - return _test_writable_dir_win(path) - - -def _test_writable_dir_win(path: str) -> bool: - # os.access doesn't work on Windows: http://bugs.python.org/issue2528 - # and we can't use tempfile: http://bugs.python.org/issue22107 - basename = "accesstest_deleteme_fishfingers_custard_" - alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" - for _ in range(10): - name = basename + "".join(random.choice(alphabet) for _ in range(6)) - file = os.path.join(path, name) - try: - fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL) - except FileExistsError: - pass - except PermissionError: - # This could be because there's a directory with the same name. - # But it's highly unlikely there's a directory called that, - # so we'll assume it's because the parent dir is not writable. - # This could as well be because the parent dir is not readable, - # due to non-privileged user access. - return False - else: - os.close(fd) - os.unlink(file) - return True - - # This should never be reached - raise OSError("Unexpected condition testing for writable directory") - - -def find_files(path: str, pattern: str) -> List[str]: - """Returns a list of absolute paths of files beneath path, recursively, - with filenames which match the UNIX-style shell glob pattern.""" - result: List[str] = [] - for root, _, files in os.walk(path): - matches = fnmatch.filter(files, pattern) - result.extend(os.path.join(root, f) for f in matches) - return result - - -def file_size(path: str) -> Union[int, float]: - # If it's a symlink, return 0. - if os.path.islink(path): - return 0 - return os.path.getsize(path) - - -def format_file_size(path: str) -> str: - return format_size(file_size(path)) - - -def directory_size(path: str) -> Union[int, float]: - size = 0.0 - for root, _dirs, files in os.walk(path): - for filename in files: - file_path = os.path.join(root, filename) - size += file_size(file_path) - return size - - -def format_directory_size(path: str) -> str: - return format_size(directory_size(path)) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py deleted file mode 100644 index 5948570..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Filetype information. -""" - -from typing import Tuple - -from pip._internal.utils.misc import splitext - -WHEEL_EXTENSION = ".whl" -BZ2_EXTENSIONS: Tuple[str, ...] = (".tar.bz2", ".tbz") -XZ_EXTENSIONS: Tuple[str, ...] = ( - ".tar.xz", - ".txz", - ".tlz", - ".tar.lz", - ".tar.lzma", -) -ZIP_EXTENSIONS: Tuple[str, ...] = (".zip", WHEEL_EXTENSION) -TAR_EXTENSIONS: Tuple[str, ...] = (".tar.gz", ".tgz", ".tar") -ARCHIVE_EXTENSIONS = ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS - - -def is_archive_file(name: str) -> bool: - """Return True if `name` is a considered as an archive file.""" - ext = splitext(name)[1].lower() - if ext in ARCHIVE_EXTENSIONS: - return True - return False diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py deleted file mode 100644 index 81342af..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py +++ /dev/null @@ -1,88 +0,0 @@ -import os -import sys -from typing import Optional, Tuple - - -def glibc_version_string() -> Optional[str]: - "Returns glibc version string, or None if not using glibc." - return glibc_version_string_confstr() or glibc_version_string_ctypes() - - -def glibc_version_string_confstr() -> Optional[str]: - "Primary implementation of glibc_version_string using os.confstr." - # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely - # to be broken or missing. This strategy is used in the standard library - # platform module: - # https://github.com/python/cpython/blob/fcf1d003bf4f0100c9d0921ff3d70e1127ca1b71/Lib/platform.py#L175-L183 - if sys.platform == "win32": - return None - try: - gnu_libc_version = os.confstr("CS_GNU_LIBC_VERSION") - if gnu_libc_version is None: - return None - # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": - _, version = gnu_libc_version.split() - except (AttributeError, OSError, ValueError): - # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... - return None - return version - - -def glibc_version_string_ctypes() -> Optional[str]: - "Fallback implementation of glibc_version_string using ctypes." - - try: - import ctypes - except ImportError: - return None - - # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen - # manpage says, "If filename is NULL, then the returned handle is for the - # main program". This way we can let the linker do the work to figure out - # which libc our process is actually using. - process_namespace = ctypes.CDLL(None) - try: - gnu_get_libc_version = process_namespace.gnu_get_libc_version - except AttributeError: - # Symbol doesn't exist -> therefore, we are not linked to - # glibc. - return None - - # Call gnu_get_libc_version, which returns a string like "2.5" - gnu_get_libc_version.restype = ctypes.c_char_p - version_str = gnu_get_libc_version() - # py2 / py3 compatibility: - if not isinstance(version_str, str): - version_str = version_str.decode("ascii") - - return version_str - - -# platform.libc_ver regularly returns completely nonsensical glibc -# versions. E.g. on my computer, platform says: -# -# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' -# ('glibc', '2.7') -# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' -# ('glibc', '2.9') -# -# But the truth is: -# -# ~$ ldd --version -# ldd (Debian GLIBC 2.22-11) 2.22 -# -# This is unfortunate, because it means that the linehaul data on libc -# versions that was generated by pip 8.1.2 and earlier is useless and -# misleading. Solution: instead of using platform, use our code that actually -# works. -def libc_ver() -> Tuple[str, str]: - """Try to determine the glibc version - - Returns a tuple of strings (lib, version) which default to empty strings - in case the lookup fails. - """ - glibc_version = glibc_version_string() - if glibc_version is None: - return ("", "") - else: - return ("glibc", glibc_version) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py deleted file mode 100644 index 843cffc..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py +++ /dev/null @@ -1,151 +0,0 @@ -import hashlib -from typing import TYPE_CHECKING, BinaryIO, Dict, Iterable, List, Optional - -from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError -from pip._internal.utils.misc import read_chunks - -if TYPE_CHECKING: - from hashlib import _Hash - - # NoReturn introduced in 3.6.2; imported only for type checking to maintain - # pip compatibility with older patch versions of Python 3.6 - from typing import NoReturn - - -# The recommended hash algo of the moment. Change this whenever the state of -# the art changes; it won't hurt backward compatibility. -FAVORITE_HASH = "sha256" - - -# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` -# Currently, those are the ones at least as collision-resistant as sha256. -STRONG_HASHES = ["sha256", "sha384", "sha512"] - - -class Hashes: - """A wrapper that builds multiple hashes at once and checks them against - known-good values - - """ - - def __init__(self, hashes: Optional[Dict[str, List[str]]] = None) -> None: - """ - :param hashes: A dict of algorithm names pointing to lists of allowed - hex digests - """ - allowed = {} - if hashes is not None: - for alg, keys in hashes.items(): - # Make sure values are always sorted (to ease equality checks) - allowed[alg] = sorted(keys) - self._allowed = allowed - - def __and__(self, other: "Hashes") -> "Hashes": - if not isinstance(other, Hashes): - return NotImplemented - - # If either of the Hashes object is entirely empty (i.e. no hash - # specified at all), all hashes from the other object are allowed. - if not other: - return self - if not self: - return other - - # Otherwise only hashes that present in both objects are allowed. - new = {} - for alg, values in other._allowed.items(): - if alg not in self._allowed: - continue - new[alg] = [v for v in values if v in self._allowed[alg]] - return Hashes(new) - - @property - def digest_count(self) -> int: - return sum(len(digests) for digests in self._allowed.values()) - - def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool: - """Return whether the given hex digest is allowed.""" - return hex_digest in self._allowed.get(hash_name, []) - - def check_against_chunks(self, chunks: Iterable[bytes]) -> None: - """Check good hashes against ones built from iterable of chunks of - data. - - Raise HashMismatch if none match. - - """ - gots = {} - for hash_name in self._allowed.keys(): - try: - gots[hash_name] = hashlib.new(hash_name) - except (ValueError, TypeError): - raise InstallationError(f"Unknown hash name: {hash_name}") - - for chunk in chunks: - for hash in gots.values(): - hash.update(chunk) - - for hash_name, got in gots.items(): - if got.hexdigest() in self._allowed[hash_name]: - return - self._raise(gots) - - def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": - raise HashMismatch(self._allowed, gots) - - def check_against_file(self, file: BinaryIO) -> None: - """Check good hashes against a file-like object - - Raise HashMismatch if none match. - - """ - return self.check_against_chunks(read_chunks(file)) - - def check_against_path(self, path: str) -> None: - with open(path, "rb") as file: - return self.check_against_file(file) - - def has_one_of(self, hashes: Dict[str, str]) -> bool: - """Return whether any of the given hashes are allowed.""" - for hash_name, hex_digest in hashes.items(): - if self.is_hash_allowed(hash_name, hex_digest): - return True - return False - - def __bool__(self) -> bool: - """Return whether I know any known-good hashes.""" - return bool(self._allowed) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Hashes): - return NotImplemented - return self._allowed == other._allowed - - def __hash__(self) -> int: - return hash( - ",".join( - sorted( - ":".join((alg, digest)) - for alg, digest_list in self._allowed.items() - for digest in digest_list - ) - ) - ) - - -class MissingHashes(Hashes): - """A workalike for Hashes used when we're missing a hash for a requirement - - It computes the actual hash of the requirement and raises a HashMissing - exception showing it to the user. - - """ - - def __init__(self) -> None: - """Don't offer the ``hashes`` kwarg.""" - # Pass our favorite hash in to generate a "gotten hash". With the - # empty list, it will never match, so an error will always raise. - super().__init__(hashes={FAVORITE_HASH: []}) - - def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": - raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py deleted file mode 100644 index 95982df..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py +++ /dev/null @@ -1,348 +0,0 @@ -import contextlib -import errno -import logging -import logging.handlers -import os -import sys -import threading -from dataclasses import dataclass -from io import TextIOWrapper -from logging import Filter -from typing import Any, ClassVar, Generator, List, Optional, TextIO, Type - -from pip._vendor.rich.console import ( - Console, - ConsoleOptions, - ConsoleRenderable, - RenderableType, - RenderResult, - RichCast, -) -from pip._vendor.rich.highlighter import NullHighlighter -from pip._vendor.rich.logging import RichHandler -from pip._vendor.rich.segment import Segment -from pip._vendor.rich.style import Style - -from pip._internal.utils._log import VERBOSE, getLogger -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.deprecation import DEPRECATION_MSG_PREFIX -from pip._internal.utils.misc import ensure_dir - -_log_state = threading.local() -subprocess_logger = getLogger("pip.subprocessor") - - -class BrokenStdoutLoggingError(Exception): - """ - Raised if BrokenPipeError occurs for the stdout stream while logging. - """ - - -def _is_broken_pipe_error(exc_class: Type[BaseException], exc: BaseException) -> bool: - if exc_class is BrokenPipeError: - return True - - # On Windows, a broken pipe can show up as EINVAL rather than EPIPE: - # https://bugs.python.org/issue19612 - # https://bugs.python.org/issue30418 - if not WINDOWS: - return False - - return isinstance(exc, OSError) and exc.errno in (errno.EINVAL, errno.EPIPE) - - -@contextlib.contextmanager -def indent_log(num: int = 2) -> Generator[None, None, None]: - """ - A context manager which will cause the log output to be indented for any - log messages emitted inside it. - """ - # For thread-safety - _log_state.indentation = get_indentation() - _log_state.indentation += num - try: - yield - finally: - _log_state.indentation -= num - - -def get_indentation() -> int: - return getattr(_log_state, "indentation", 0) - - -class IndentingFormatter(logging.Formatter): - default_time_format = "%Y-%m-%dT%H:%M:%S" - - def __init__( - self, - *args: Any, - add_timestamp: bool = False, - **kwargs: Any, - ) -> None: - """ - A logging.Formatter that obeys the indent_log() context manager. - - :param add_timestamp: A bool indicating output lines should be prefixed - with their record's timestamp. - """ - self.add_timestamp = add_timestamp - super().__init__(*args, **kwargs) - - def get_message_start(self, formatted: str, levelno: int) -> str: - """ - Return the start of the formatted log message (not counting the - prefix to add to each line). - """ - if levelno < logging.WARNING: - return "" - if formatted.startswith(DEPRECATION_MSG_PREFIX): - # Then the message already has a prefix. We don't want it to - # look like "WARNING: DEPRECATION: ...." - return "" - if levelno < logging.ERROR: - return "WARNING: " - - return "ERROR: " - - def format(self, record: logging.LogRecord) -> str: - """ - Calls the standard formatter, but will indent all of the log message - lines by our current indentation level. - """ - formatted = super().format(record) - message_start = self.get_message_start(formatted, record.levelno) - formatted = message_start + formatted - - prefix = "" - if self.add_timestamp: - prefix = f"{self.formatTime(record)} " - prefix += " " * get_indentation() - formatted = "".join([prefix + line for line in formatted.splitlines(True)]) - return formatted - - -@dataclass -class IndentedRenderable: - renderable: RenderableType - indent: int - - def __rich_console__( - self, console: Console, options: ConsoleOptions - ) -> RenderResult: - segments = console.render(self.renderable, options) - lines = Segment.split_lines(segments) - for line in lines: - yield Segment(" " * self.indent) - yield from line - yield Segment("\n") - - -class RichPipStreamHandler(RichHandler): - KEYWORDS: ClassVar[Optional[List[str]]] = [] - - def __init__(self, stream: Optional[TextIO], no_color: bool) -> None: - super().__init__( - console=Console(file=stream, no_color=no_color, soft_wrap=True), - show_time=False, - show_level=False, - show_path=False, - highlighter=NullHighlighter(), - ) - - # Our custom override on Rich's logger, to make things work as we need them to. - def emit(self, record: logging.LogRecord) -> None: - style: Optional[Style] = None - - # If we are given a diagnostic error to present, present it with indentation. - assert isinstance(record.args, tuple) - if getattr(record, "rich", False): - (rich_renderable,) = record.args - assert isinstance( - rich_renderable, (ConsoleRenderable, RichCast, str) - ), f"{rich_renderable} is not rich-console-renderable" - - renderable: RenderableType = IndentedRenderable( - rich_renderable, indent=get_indentation() - ) - else: - message = self.format(record) - renderable = self.render_message(record, message) - if record.levelno is not None: - if record.levelno >= logging.ERROR: - style = Style(color="red") - elif record.levelno >= logging.WARNING: - style = Style(color="yellow") - - try: - self.console.print(renderable, overflow="ignore", crop=False, style=style) - except Exception: - self.handleError(record) - - def handleError(self, record: logging.LogRecord) -> None: - """Called when logging is unable to log some output.""" - - exc_class, exc = sys.exc_info()[:2] - # If a broken pipe occurred while calling write() or flush() on the - # stdout stream in logging's Handler.emit(), then raise our special - # exception so we can handle it in main() instead of logging the - # broken pipe error and continuing. - if ( - exc_class - and exc - and self.console.file is sys.stdout - and _is_broken_pipe_error(exc_class, exc) - ): - raise BrokenStdoutLoggingError() - - return super().handleError(record) - - -class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): - def _open(self) -> TextIOWrapper: - ensure_dir(os.path.dirname(self.baseFilename)) - return super()._open() - - -class MaxLevelFilter(Filter): - def __init__(self, level: int) -> None: - self.level = level - - def filter(self, record: logging.LogRecord) -> bool: - return record.levelno < self.level - - -class ExcludeLoggerFilter(Filter): - - """ - A logging Filter that excludes records from a logger (or its children). - """ - - def filter(self, record: logging.LogRecord) -> bool: - # The base Filter class allows only records from a logger (or its - # children). - return not super().filter(record) - - -def setup_logging(verbosity: int, no_color: bool, user_log_file: Optional[str]) -> int: - """Configures and sets up all of the logging - - Returns the requested logging level, as its integer value. - """ - - # Determine the level to be logging at. - if verbosity >= 2: - level_number = logging.DEBUG - elif verbosity == 1: - level_number = VERBOSE - elif verbosity == -1: - level_number = logging.WARNING - elif verbosity == -2: - level_number = logging.ERROR - elif verbosity <= -3: - level_number = logging.CRITICAL - else: - level_number = logging.INFO - - level = logging.getLevelName(level_number) - - # The "root" logger should match the "console" level *unless* we also need - # to log to a user log file. - include_user_log = user_log_file is not None - if include_user_log: - additional_log_file = user_log_file - root_level = "DEBUG" - else: - additional_log_file = "/dev/null" - root_level = level - - # Disable any logging besides WARNING unless we have DEBUG level logging - # enabled for vendored libraries. - vendored_log_level = "WARNING" if level in ["INFO", "ERROR"] else "DEBUG" - - # Shorthands for clarity - log_streams = { - "stdout": "ext://sys.stdout", - "stderr": "ext://sys.stderr", - } - handler_classes = { - "stream": "pip._internal.utils.logging.RichPipStreamHandler", - "file": "pip._internal.utils.logging.BetterRotatingFileHandler", - } - handlers = ["console", "console_errors", "console_subprocess"] + ( - ["user_log"] if include_user_log else [] - ) - - logging.config.dictConfig( - { - "version": 1, - "disable_existing_loggers": False, - "filters": { - "exclude_warnings": { - "()": "pip._internal.utils.logging.MaxLevelFilter", - "level": logging.WARNING, - }, - "restrict_to_subprocess": { - "()": "logging.Filter", - "name": subprocess_logger.name, - }, - "exclude_subprocess": { - "()": "pip._internal.utils.logging.ExcludeLoggerFilter", - "name": subprocess_logger.name, - }, - }, - "formatters": { - "indent": { - "()": IndentingFormatter, - "format": "%(message)s", - }, - "indent_with_timestamp": { - "()": IndentingFormatter, - "format": "%(message)s", - "add_timestamp": True, - }, - }, - "handlers": { - "console": { - "level": level, - "class": handler_classes["stream"], - "no_color": no_color, - "stream": log_streams["stdout"], - "filters": ["exclude_subprocess", "exclude_warnings"], - "formatter": "indent", - }, - "console_errors": { - "level": "WARNING", - "class": handler_classes["stream"], - "no_color": no_color, - "stream": log_streams["stderr"], - "filters": ["exclude_subprocess"], - "formatter": "indent", - }, - # A handler responsible for logging to the console messages - # from the "subprocessor" logger. - "console_subprocess": { - "level": level, - "class": handler_classes["stream"], - "stream": log_streams["stderr"], - "no_color": no_color, - "filters": ["restrict_to_subprocess"], - "formatter": "indent", - }, - "user_log": { - "level": "DEBUG", - "class": handler_classes["file"], - "filename": additional_log_file, - "encoding": "utf-8", - "delay": True, - "formatter": "indent_with_timestamp", - }, - }, - "root": { - "level": root_level, - "handlers": handlers, - }, - "loggers": {"pip._vendor": {"level": vendored_log_level}}, - } - ) - - return level_number diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py deleted file mode 100644 index 1ad3f61..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py +++ /dev/null @@ -1,783 +0,0 @@ -import contextlib -import errno -import getpass -import hashlib -import io -import logging -import os -import posixpath -import shutil -import stat -import sys -import sysconfig -import urllib.parse -from functools import partial -from io import StringIO -from itertools import filterfalse, tee, zip_longest -from pathlib import Path -from types import FunctionType, TracebackType -from typing import ( - Any, - BinaryIO, - Callable, - ContextManager, - Dict, - Generator, - Iterable, - Iterator, - List, - Optional, - TextIO, - Tuple, - Type, - TypeVar, - Union, - cast, -) - -from pip._vendor.packaging.requirements import Requirement -from pip._vendor.pyproject_hooks import BuildBackendHookCaller -from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed - -from pip import __version__ -from pip._internal.exceptions import CommandError, ExternallyManagedEnvironment -from pip._internal.locations import get_major_minor_version -from pip._internal.utils.compat import WINDOWS -from pip._internal.utils.virtualenv import running_under_virtualenv - -__all__ = [ - "rmtree", - "display_path", - "backup_dir", - "ask", - "splitext", - "format_size", - "is_installable_dir", - "normalize_path", - "renames", - "get_prog", - "captured_stdout", - "ensure_dir", - "remove_auth_from_url", - "check_externally_managed", - "ConfiguredBuildBackendHookCaller", -] - -logger = logging.getLogger(__name__) - -T = TypeVar("T") -ExcInfo = Tuple[Type[BaseException], BaseException, TracebackType] -VersionInfo = Tuple[int, int, int] -NetlocTuple = Tuple[str, Tuple[Optional[str], Optional[str]]] -OnExc = Callable[[FunctionType, Path, BaseException], Any] -OnErr = Callable[[FunctionType, Path, ExcInfo], Any] - - -def get_pip_version() -> str: - pip_pkg_dir = os.path.join(os.path.dirname(__file__), "..", "..") - pip_pkg_dir = os.path.abspath(pip_pkg_dir) - - return f"pip {__version__} from {pip_pkg_dir} (python {get_major_minor_version()})" - - -def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[int, int, int]: - """ - Convert a tuple of ints representing a Python version to one of length - three. - - :param py_version_info: a tuple of ints representing a Python version, - or None to specify no version. The tuple can have any length. - - :return: a tuple of length three if `py_version_info` is non-None. - Otherwise, return `py_version_info` unchanged (i.e. None). - """ - if len(py_version_info) < 3: - py_version_info += (3 - len(py_version_info)) * (0,) - elif len(py_version_info) > 3: - py_version_info = py_version_info[:3] - - return cast("VersionInfo", py_version_info) - - -def ensure_dir(path: str) -> None: - """os.path.makedirs without EEXIST.""" - try: - os.makedirs(path) - except OSError as e: - # Windows can raise spurious ENOTEMPTY errors. See #6426. - if e.errno != errno.EEXIST and e.errno != errno.ENOTEMPTY: - raise - - -def get_prog() -> str: - try: - prog = os.path.basename(sys.argv[0]) - if prog in ("__main__.py", "-c"): - return f"{sys.executable} -m pip" - else: - return prog - except (AttributeError, TypeError, IndexError): - pass - return "pip" - - -# Retry every half second for up to 3 seconds -# Tenacity raises RetryError by default, explicitly raise the original exception -@retry(reraise=True, stop=stop_after_delay(3), wait=wait_fixed(0.5)) -def rmtree( - dir: str, - ignore_errors: bool = False, - onexc: Optional[OnExc] = None, -) -> None: - if ignore_errors: - onexc = _onerror_ignore - if onexc is None: - onexc = _onerror_reraise - handler: OnErr = partial( - # `[func, path, Union[ExcInfo, BaseException]] -> Any` is equivalent to - # `Union[([func, path, ExcInfo] -> Any), ([func, path, BaseException] -> Any)]`. - cast(Union[OnExc, OnErr], rmtree_errorhandler), - onexc=onexc, - ) - if sys.version_info >= (3, 12): - # See https://docs.python.org/3.12/whatsnew/3.12.html#shutil. - shutil.rmtree(dir, onexc=handler) # type: ignore - else: - shutil.rmtree(dir, onerror=handler) # type: ignore - - -def _onerror_ignore(*_args: Any) -> None: - pass - - -def _onerror_reraise(*_args: Any) -> None: - raise - - -def rmtree_errorhandler( - func: FunctionType, - path: Path, - exc_info: Union[ExcInfo, BaseException], - *, - onexc: OnExc = _onerror_reraise, -) -> None: - """ - `rmtree` error handler to 'force' a file remove (i.e. like `rm -f`). - - * If a file is readonly then it's write flag is set and operation is - retried. - - * `onerror` is the original callback from `rmtree(... onerror=onerror)` - that is chained at the end if the "rm -f" still fails. - """ - try: - st_mode = os.stat(path).st_mode - except OSError: - # it's equivalent to os.path.exists - return - - if not st_mode & stat.S_IWRITE: - # convert to read/write - try: - os.chmod(path, st_mode | stat.S_IWRITE) - except OSError: - pass - else: - # use the original function to repeat the operation - try: - func(path) - return - except OSError: - pass - - if not isinstance(exc_info, BaseException): - _, exc_info, _ = exc_info - onexc(func, path, exc_info) - - -def display_path(path: str) -> str: - """Gives the display value for a given path, making it relative to cwd - if possible.""" - path = os.path.normcase(os.path.abspath(path)) - if path.startswith(os.getcwd() + os.path.sep): - path = "." + path[len(os.getcwd()) :] - return path - - -def backup_dir(dir: str, ext: str = ".bak") -> str: - """Figure out the name of a directory to back up the given dir to - (adding .bak, .bak2, etc)""" - n = 1 - extension = ext - while os.path.exists(dir + extension): - n += 1 - extension = ext + str(n) - return dir + extension - - -def ask_path_exists(message: str, options: Iterable[str]) -> str: - for action in os.environ.get("PIP_EXISTS_ACTION", "").split(): - if action in options: - return action - return ask(message, options) - - -def _check_no_input(message: str) -> None: - """Raise an error if no input is allowed.""" - if os.environ.get("PIP_NO_INPUT"): - raise Exception( - f"No input was expected ($PIP_NO_INPUT set); question: {message}" - ) - - -def ask(message: str, options: Iterable[str]) -> str: - """Ask the message interactively, with the given possible responses""" - while 1: - _check_no_input(message) - response = input(message) - response = response.strip().lower() - if response not in options: - print( - "Your response ({!r}) was not one of the expected responses: " - "{}".format(response, ", ".join(options)) - ) - else: - return response - - -def ask_input(message: str) -> str: - """Ask for input interactively.""" - _check_no_input(message) - return input(message) - - -def ask_password(message: str) -> str: - """Ask for a password interactively.""" - _check_no_input(message) - return getpass.getpass(message) - - -def strtobool(val: str) -> int: - """Convert a string representation of truth to true (1) or false (0). - - True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values - are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if - 'val' is anything else. - """ - val = val.lower() - if val in ("y", "yes", "t", "true", "on", "1"): - return 1 - elif val in ("n", "no", "f", "false", "off", "0"): - return 0 - else: - raise ValueError(f"invalid truth value {val!r}") - - -def format_size(bytes: float) -> str: - if bytes > 1000 * 1000: - return f"{bytes / 1000.0 / 1000:.1f} MB" - elif bytes > 10 * 1000: - return f"{int(bytes / 1000)} kB" - elif bytes > 1000: - return f"{bytes / 1000.0:.1f} kB" - else: - return f"{int(bytes)} bytes" - - -def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]: - """Return a list of formatted rows and a list of column sizes. - - For example:: - - >>> tabulate([['foobar', 2000], [0xdeadbeef]]) - (['foobar 2000', '3735928559'], [10, 4]) - """ - rows = [tuple(map(str, row)) for row in rows] - sizes = [max(map(len, col)) for col in zip_longest(*rows, fillvalue="")] - table = [" ".join(map(str.ljust, row, sizes)).rstrip() for row in rows] - return table, sizes - - -def is_installable_dir(path: str) -> bool: - """Is path is a directory containing pyproject.toml or setup.py? - - If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for - a legacy setuptools layout by identifying setup.py. We don't check for the - setup.cfg because using it without setup.py is only available for PEP 517 - projects, which are already covered by the pyproject.toml check. - """ - if not os.path.isdir(path): - return False - if os.path.isfile(os.path.join(path, "pyproject.toml")): - return True - if os.path.isfile(os.path.join(path, "setup.py")): - return True - return False - - -def read_chunks( - file: BinaryIO, size: int = io.DEFAULT_BUFFER_SIZE -) -> Generator[bytes, None, None]: - """Yield pieces of data from a file-like object until EOF.""" - while True: - chunk = file.read(size) - if not chunk: - break - yield chunk - - -def normalize_path(path: str, resolve_symlinks: bool = True) -> str: - """ - Convert a path to its canonical, case-normalized, absolute version. - - """ - path = os.path.expanduser(path) - if resolve_symlinks: - path = os.path.realpath(path) - else: - path = os.path.abspath(path) - return os.path.normcase(path) - - -def splitext(path: str) -> Tuple[str, str]: - """Like os.path.splitext, but take off .tar too""" - base, ext = posixpath.splitext(path) - if base.lower().endswith(".tar"): - ext = base[-4:] + ext - base = base[:-4] - return base, ext - - -def renames(old: str, new: str) -> None: - """Like os.renames(), but handles renaming across devices.""" - # Implementation borrowed from os.renames(). - head, tail = os.path.split(new) - if head and tail and not os.path.exists(head): - os.makedirs(head) - - shutil.move(old, new) - - head, tail = os.path.split(old) - if head and tail: - try: - os.removedirs(head) - except OSError: - pass - - -def is_local(path: str) -> bool: - """ - Return True if path is within sys.prefix, if we're running in a virtualenv. - - If we're not in a virtualenv, all paths are considered "local." - - Caution: this function assumes the head of path has been normalized - with normalize_path. - """ - if not running_under_virtualenv(): - return True - return path.startswith(normalize_path(sys.prefix)) - - -def write_output(msg: Any, *args: Any) -> None: - logger.info(msg, *args) - - -class StreamWrapper(StringIO): - orig_stream: TextIO - - @classmethod - def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper": - ret = cls() - ret.orig_stream = orig_stream - return ret - - # compileall.compile_dir() needs stdout.encoding to print to stdout - # type ignore is because TextIOBase.encoding is writeable - @property - def encoding(self) -> str: # type: ignore - return self.orig_stream.encoding - - -@contextlib.contextmanager -def captured_output(stream_name: str) -> Generator[StreamWrapper, None, None]: - """Return a context manager used by captured_stdout/stdin/stderr - that temporarily replaces the sys stream *stream_name* with a StringIO. - - Taken from Lib/support/__init__.py in the CPython repo. - """ - orig_stdout = getattr(sys, stream_name) - setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout)) - try: - yield getattr(sys, stream_name) - finally: - setattr(sys, stream_name, orig_stdout) - - -def captured_stdout() -> ContextManager[StreamWrapper]: - """Capture the output of sys.stdout: - - with captured_stdout() as stdout: - print('hello') - self.assertEqual(stdout.getvalue(), 'hello\n') - - Taken from Lib/support/__init__.py in the CPython repo. - """ - return captured_output("stdout") - - -def captured_stderr() -> ContextManager[StreamWrapper]: - """ - See captured_stdout(). - """ - return captured_output("stderr") - - -# Simulates an enum -def enum(*sequential: Any, **named: Any) -> Type[Any]: - enums = dict(zip(sequential, range(len(sequential))), **named) - reverse = {value: key for key, value in enums.items()} - enums["reverse_mapping"] = reverse - return type("Enum", (), enums) - - -def build_netloc(host: str, port: Optional[int]) -> str: - """ - Build a netloc from a host-port pair - """ - if port is None: - return host - if ":" in host: - # Only wrap host with square brackets when it is IPv6 - host = f"[{host}]" - return f"{host}:{port}" - - -def build_url_from_netloc(netloc: str, scheme: str = "https") -> str: - """ - Build a full URL from a netloc. - """ - if netloc.count(":") >= 2 and "@" not in netloc and "[" not in netloc: - # It must be a bare IPv6 address, so wrap it with brackets. - netloc = f"[{netloc}]" - return f"{scheme}://{netloc}" - - -def parse_netloc(netloc: str) -> Tuple[Optional[str], Optional[int]]: - """ - Return the host-port pair from a netloc. - """ - url = build_url_from_netloc(netloc) - parsed = urllib.parse.urlparse(url) - return parsed.hostname, parsed.port - - -def split_auth_from_netloc(netloc: str) -> NetlocTuple: - """ - Parse out and remove the auth information from a netloc. - - Returns: (netloc, (username, password)). - """ - if "@" not in netloc: - return netloc, (None, None) - - # Split from the right because that's how urllib.parse.urlsplit() - # behaves if more than one @ is present (which can be checked using - # the password attribute of urlsplit()'s return value). - auth, netloc = netloc.rsplit("@", 1) - pw: Optional[str] = None - if ":" in auth: - # Split from the left because that's how urllib.parse.urlsplit() - # behaves if more than one : is present (which again can be checked - # using the password attribute of the return value) - user, pw = auth.split(":", 1) - else: - user, pw = auth, None - - user = urllib.parse.unquote(user) - if pw is not None: - pw = urllib.parse.unquote(pw) - - return netloc, (user, pw) - - -def redact_netloc(netloc: str) -> str: - """ - Replace the sensitive data in a netloc with "****", if it exists. - - For example: - - "user:pass@example.com" returns "user:****@example.com" - - "accesstoken@example.com" returns "****@example.com" - """ - netloc, (user, password) = split_auth_from_netloc(netloc) - if user is None: - return netloc - if password is None: - user = "****" - password = "" - else: - user = urllib.parse.quote(user) - password = ":****" - return f"{user}{password}@{netloc}" - - -def _transform_url( - url: str, transform_netloc: Callable[[str], Tuple[Any, ...]] -) -> Tuple[str, NetlocTuple]: - """Transform and replace netloc in a url. - - transform_netloc is a function taking the netloc and returning a - tuple. The first element of this tuple is the new netloc. The - entire tuple is returned. - - Returns a tuple containing the transformed url as item 0 and the - original tuple returned by transform_netloc as item 1. - """ - purl = urllib.parse.urlsplit(url) - netloc_tuple = transform_netloc(purl.netloc) - # stripped url - url_pieces = (purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment) - surl = urllib.parse.urlunsplit(url_pieces) - return surl, cast("NetlocTuple", netloc_tuple) - - -def _get_netloc(netloc: str) -> NetlocTuple: - return split_auth_from_netloc(netloc) - - -def _redact_netloc(netloc: str) -> Tuple[str]: - return (redact_netloc(netloc),) - - -def split_auth_netloc_from_url( - url: str, -) -> Tuple[str, str, Tuple[Optional[str], Optional[str]]]: - """ - Parse a url into separate netloc, auth, and url with no auth. - - Returns: (url_without_auth, netloc, (username, password)) - """ - url_without_auth, (netloc, auth) = _transform_url(url, _get_netloc) - return url_without_auth, netloc, auth - - -def remove_auth_from_url(url: str) -> str: - """Return a copy of url with 'username:password@' removed.""" - # username/pass params are passed to subversion through flags - # and are not recognized in the url. - return _transform_url(url, _get_netloc)[0] - - -def redact_auth_from_url(url: str) -> str: - """Replace the password in a given url with ****.""" - return _transform_url(url, _redact_netloc)[0] - - -def redact_auth_from_requirement(req: Requirement) -> str: - """Replace the password in a given requirement url with ****.""" - if not req.url: - return str(req) - return str(req).replace(req.url, redact_auth_from_url(req.url)) - - -class HiddenText: - def __init__(self, secret: str, redacted: str) -> None: - self.secret = secret - self.redacted = redacted - - def __repr__(self) -> str: - return f"" - - def __str__(self) -> str: - return self.redacted - - # This is useful for testing. - def __eq__(self, other: Any) -> bool: - if type(self) != type(other): - return False - - # The string being used for redaction doesn't also have to match, - # just the raw, original string. - return self.secret == other.secret - - -def hide_value(value: str) -> HiddenText: - return HiddenText(value, redacted="****") - - -def hide_url(url: str) -> HiddenText: - redacted = redact_auth_from_url(url) - return HiddenText(url, redacted=redacted) - - -def protect_pip_from_modification_on_windows(modifying_pip: bool) -> None: - """Protection of pip.exe from modification on Windows - - On Windows, any operation modifying pip should be run as: - python -m pip ... - """ - pip_names = [ - "pip", - f"pip{sys.version_info.major}", - f"pip{sys.version_info.major}.{sys.version_info.minor}", - ] - - # See https://github.com/pypa/pip/issues/1299 for more discussion - should_show_use_python_msg = ( - modifying_pip and WINDOWS and os.path.basename(sys.argv[0]) in pip_names - ) - - if should_show_use_python_msg: - new_command = [sys.executable, "-m", "pip"] + sys.argv[1:] - raise CommandError( - "To modify pip, please run the following command:\n{}".format( - " ".join(new_command) - ) - ) - - -def check_externally_managed() -> None: - """Check whether the current environment is externally managed. - - If the ``EXTERNALLY-MANAGED`` config file is found, the current environment - is considered externally managed, and an ExternallyManagedEnvironment is - raised. - """ - if running_under_virtualenv(): - return - marker = os.path.join(sysconfig.get_path("stdlib"), "EXTERNALLY-MANAGED") - if not os.path.isfile(marker): - return - raise ExternallyManagedEnvironment.from_config(marker) - - -def is_console_interactive() -> bool: - """Is this console interactive?""" - return sys.stdin is not None and sys.stdin.isatty() - - -def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]: - """Return (hash, length) for path using hashlib.sha256()""" - - h = hashlib.sha256() - length = 0 - with open(path, "rb") as f: - for block in read_chunks(f, size=blocksize): - length += len(block) - h.update(block) - return h, length - - -def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]: - """ - Return paired elements. - - For example: - s -> (s0, s1), (s2, s3), (s4, s5), ... - """ - iterable = iter(iterable) - return zip_longest(iterable, iterable) - - -def partition( - pred: Callable[[T], bool], - iterable: Iterable[T], -) -> Tuple[Iterable[T], Iterable[T]]: - """ - Use a predicate to partition entries into false entries and true entries, - like - - partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9 - """ - t1, t2 = tee(iterable) - return filterfalse(pred, t1), filter(pred, t2) - - -class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): - def __init__( - self, - config_holder: Any, - source_dir: str, - build_backend: str, - backend_path: Optional[str] = None, - runner: Optional[Callable[..., None]] = None, - python_executable: Optional[str] = None, - ): - super().__init__( - source_dir, build_backend, backend_path, runner, python_executable - ) - self.config_holder = config_holder - - def build_wheel( - self, - wheel_directory: str, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - metadata_directory: Optional[str] = None, - ) -> str: - cs = self.config_holder.config_settings - return super().build_wheel( - wheel_directory, config_settings=cs, metadata_directory=metadata_directory - ) - - def build_sdist( - self, - sdist_directory: str, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - ) -> str: - cs = self.config_holder.config_settings - return super().build_sdist(sdist_directory, config_settings=cs) - - def build_editable( - self, - wheel_directory: str, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - metadata_directory: Optional[str] = None, - ) -> str: - cs = self.config_holder.config_settings - return super().build_editable( - wheel_directory, config_settings=cs, metadata_directory=metadata_directory - ) - - def get_requires_for_build_wheel( - self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None - ) -> List[str]: - cs = self.config_holder.config_settings - return super().get_requires_for_build_wheel(config_settings=cs) - - def get_requires_for_build_sdist( - self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None - ) -> List[str]: - cs = self.config_holder.config_settings - return super().get_requires_for_build_sdist(config_settings=cs) - - def get_requires_for_build_editable( - self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None - ) -> List[str]: - cs = self.config_holder.config_settings - return super().get_requires_for_build_editable(config_settings=cs) - - def prepare_metadata_for_build_wheel( - self, - metadata_directory: str, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - _allow_fallback: bool = True, - ) -> str: - cs = self.config_holder.config_settings - return super().prepare_metadata_for_build_wheel( - metadata_directory=metadata_directory, - config_settings=cs, - _allow_fallback=_allow_fallback, - ) - - def prepare_metadata_for_build_editable( - self, - metadata_directory: str, - config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, - _allow_fallback: bool = True, - ) -> str: - cs = self.config_holder.config_settings - return super().prepare_metadata_for_build_editable( - metadata_directory=metadata_directory, - config_settings=cs, - _allow_fallback=_allow_fallback, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/models.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/models.py deleted file mode 100644 index b6bb21a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/models.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Utilities for defining models -""" - -import operator -from typing import Any, Callable, Type - - -class KeyBasedCompareMixin: - """Provides comparison capabilities that is based on a key""" - - __slots__ = ["_compare_key", "_defining_class"] - - def __init__(self, key: Any, defining_class: Type["KeyBasedCompareMixin"]) -> None: - self._compare_key = key - self._defining_class = defining_class - - def __hash__(self) -> int: - return hash(self._compare_key) - - def __lt__(self, other: Any) -> bool: - return self._compare(other, operator.__lt__) - - def __le__(self, other: Any) -> bool: - return self._compare(other, operator.__le__) - - def __gt__(self, other: Any) -> bool: - return self._compare(other, operator.__gt__) - - def __ge__(self, other: Any) -> bool: - return self._compare(other, operator.__ge__) - - def __eq__(self, other: Any) -> bool: - return self._compare(other, operator.__eq__) - - def _compare(self, other: Any, method: Callable[[Any, Any], bool]) -> bool: - if not isinstance(other, self._defining_class): - return NotImplemented - - return method(self._compare_key, other._compare_key) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py deleted file mode 100644 index b9f6af4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py +++ /dev/null @@ -1,57 +0,0 @@ -import functools -import logging -import re -from typing import NewType, Optional, Tuple, cast - -from pip._vendor.packaging import specifiers, version -from pip._vendor.packaging.requirements import Requirement - -NormalizedExtra = NewType("NormalizedExtra", str) - -logger = logging.getLogger(__name__) - - -def check_requires_python( - requires_python: Optional[str], version_info: Tuple[int, ...] -) -> bool: - """ - Check if the given Python version matches a "Requires-Python" specifier. - - :param version_info: A 3-tuple of ints representing a Python - major-minor-micro version to check (e.g. `sys.version_info[:3]`). - - :return: `True` if the given Python version satisfies the requirement. - Otherwise, return `False`. - - :raises InvalidSpecifier: If `requires_python` has an invalid format. - """ - if requires_python is None: - # The package provides no information - return True - requires_python_specifier = specifiers.SpecifierSet(requires_python) - - python_version = version.parse(".".join(map(str, version_info))) - return python_version in requires_python_specifier - - -@functools.lru_cache(maxsize=512) -def get_requirement(req_string: str) -> Requirement: - """Construct a packaging.Requirement object with caching""" - # Parsing requirement strings is expensive, and is also expected to happen - # with a low diversity of different arguments (at least relative the number - # constructed). This method adds a cache to requirement object creation to - # minimize repeated parsing of the same string to construct equivalent - # Requirement objects. - return Requirement(req_string) - - -def safe_extra(extra: str) -> NormalizedExtra: - """Convert an arbitrary string to a standard 'extra' name - - Any runs of non-alphanumeric characters are replaced with a single '_', - and the result is always lowercased. - - This function is duplicated from ``pkg_resources``. Note that this is not - the same to either ``canonicalize_name`` or ``_egg_link_name``. - """ - return cast(NormalizedExtra, re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py deleted file mode 100644 index 96d1b24..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py +++ /dev/null @@ -1,146 +0,0 @@ -import sys -import textwrap -from typing import List, Optional, Sequence - -# Shim to wrap setup.py invocation with setuptools -# Note that __file__ is handled via two {!r} *and* %r, to ensure that paths on -# Windows are correctly handled (it should be "C:\\Users" not "C:\Users"). -_SETUPTOOLS_SHIM = textwrap.dedent( - """ - exec(compile(''' - # This is -- a caller that pip uses to run setup.py - # - # - It imports setuptools before invoking setup.py, to enable projects that directly - # import from `distutils.core` to work with newer packaging standards. - # - It provides a clear error message when setuptools is not installed. - # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so - # setuptools doesn't think the script is `-c`. This avoids the following warning: - # manifest_maker: standard file '-c' not found". - # - It generates a shim setup.py, for handling setup.cfg-only projects. - import os, sys, tokenize - - try: - import setuptools - except ImportError as error: - print( - "ERROR: Can not execute `setup.py` since setuptools is not available in " - "the build environment.", - file=sys.stderr, - ) - sys.exit(1) - - __file__ = %r - sys.argv[0] = __file__ - - if os.path.exists(__file__): - filename = __file__ - with tokenize.open(__file__) as f: - setup_py_code = f.read() - else: - filename = "" - setup_py_code = "from setuptools import setup; setup()" - - exec(compile(setup_py_code, filename, "exec")) - ''' % ({!r},), "", "exec")) - """ -).rstrip() - - -def make_setuptools_shim_args( - setup_py_path: str, - global_options: Optional[Sequence[str]] = None, - no_user_config: bool = False, - unbuffered_output: bool = False, -) -> List[str]: - """ - Get setuptools command arguments with shim wrapped setup file invocation. - - :param setup_py_path: The path to setup.py to be wrapped. - :param global_options: Additional global options. - :param no_user_config: If True, disables personal user configuration. - :param unbuffered_output: If True, adds the unbuffered switch to the - argument list. - """ - args = [sys.executable] - if unbuffered_output: - args += ["-u"] - args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)] - if global_options: - args += global_options - if no_user_config: - args += ["--no-user-cfg"] - return args - - -def make_setuptools_bdist_wheel_args( - setup_py_path: str, - global_options: Sequence[str], - build_options: Sequence[str], - destination_dir: str, -) -> List[str]: - # NOTE: Eventually, we'd want to also -S to the flags here, when we're - # isolating. Currently, it breaks Python in virtualenvs, because it - # relies on site.py to find parts of the standard library outside the - # virtualenv. - args = make_setuptools_shim_args( - setup_py_path, global_options=global_options, unbuffered_output=True - ) - args += ["bdist_wheel", "-d", destination_dir] - args += build_options - return args - - -def make_setuptools_clean_args( - setup_py_path: str, - global_options: Sequence[str], -) -> List[str]: - args = make_setuptools_shim_args( - setup_py_path, global_options=global_options, unbuffered_output=True - ) - args += ["clean", "--all"] - return args - - -def make_setuptools_develop_args( - setup_py_path: str, - *, - global_options: Sequence[str], - no_user_config: bool, - prefix: Optional[str], - home: Optional[str], - use_user_site: bool, -) -> List[str]: - assert not (use_user_site and prefix) - - args = make_setuptools_shim_args( - setup_py_path, - global_options=global_options, - no_user_config=no_user_config, - ) - - args += ["develop", "--no-deps"] - - if prefix: - args += ["--prefix", prefix] - if home is not None: - args += ["--install-dir", home] - - if use_user_site: - args += ["--user", "--prefix="] - - return args - - -def make_setuptools_egg_info_args( - setup_py_path: str, - egg_info_dir: Optional[str], - no_user_config: bool, -) -> List[str]: - args = make_setuptools_shim_args(setup_py_path, no_user_config=no_user_config) - - args += ["egg_info"] - - if egg_info_dir: - args += ["--egg-base", egg_info_dir] - - return args diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py deleted file mode 100644 index 79580b0..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py +++ /dev/null @@ -1,260 +0,0 @@ -import logging -import os -import shlex -import subprocess -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Iterable, - List, - Mapping, - Optional, - Union, -) - -from pip._vendor.rich.markup import escape - -from pip._internal.cli.spinners import SpinnerInterface, open_spinner -from pip._internal.exceptions import InstallationSubprocessError -from pip._internal.utils.logging import VERBOSE, subprocess_logger -from pip._internal.utils.misc import HiddenText - -if TYPE_CHECKING: - # Literal was introduced in Python 3.8. - # - # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. - from typing import Literal - -CommandArgs = List[Union[str, HiddenText]] - - -def make_command(*args: Union[str, HiddenText, CommandArgs]) -> CommandArgs: - """ - Create a CommandArgs object. - """ - command_args: CommandArgs = [] - for arg in args: - # Check for list instead of CommandArgs since CommandArgs is - # only known during type-checking. - if isinstance(arg, list): - command_args.extend(arg) - else: - # Otherwise, arg is str or HiddenText. - command_args.append(arg) - - return command_args - - -def format_command_args(args: Union[List[str], CommandArgs]) -> str: - """ - Format command arguments for display. - """ - # For HiddenText arguments, display the redacted form by calling str(). - # Also, we don't apply str() to arguments that aren't HiddenText since - # this can trigger a UnicodeDecodeError in Python 2 if the argument - # has type unicode and includes a non-ascii character. (The type - # checker doesn't ensure the annotations are correct in all cases.) - return " ".join( - shlex.quote(str(arg)) if isinstance(arg, HiddenText) else shlex.quote(arg) - for arg in args - ) - - -def reveal_command_args(args: Union[List[str], CommandArgs]) -> List[str]: - """ - Return the arguments in their raw, unredacted form. - """ - return [arg.secret if isinstance(arg, HiddenText) else arg for arg in args] - - -def call_subprocess( - cmd: Union[List[str], CommandArgs], - show_stdout: bool = False, - cwd: Optional[str] = None, - on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", - extra_ok_returncodes: Optional[Iterable[int]] = None, - extra_environ: Optional[Mapping[str, Any]] = None, - unset_environ: Optional[Iterable[str]] = None, - spinner: Optional[SpinnerInterface] = None, - log_failed_cmd: Optional[bool] = True, - stdout_only: Optional[bool] = False, - *, - command_desc: str, -) -> str: - """ - Args: - show_stdout: if true, use INFO to log the subprocess's stderr and - stdout streams. Otherwise, use DEBUG. Defaults to False. - extra_ok_returncodes: an iterable of integer return codes that are - acceptable, in addition to 0. Defaults to None, which means []. - unset_environ: an iterable of environment variable names to unset - prior to calling subprocess.Popen(). - log_failed_cmd: if false, failed commands are not logged, only raised. - stdout_only: if true, return only stdout, else return both. When true, - logging of both stdout and stderr occurs when the subprocess has - terminated, else logging occurs as subprocess output is produced. - """ - if extra_ok_returncodes is None: - extra_ok_returncodes = [] - if unset_environ is None: - unset_environ = [] - # Most places in pip use show_stdout=False. What this means is-- - # - # - We connect the child's output (combined stderr and stdout) to a - # single pipe, which we read. - # - We log this output to stderr at DEBUG level as it is received. - # - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't - # requested), then we show a spinner so the user can still see the - # subprocess is in progress. - # - If the subprocess exits with an error, we log the output to stderr - # at ERROR level if it hasn't already been displayed to the console - # (e.g. if --verbose logging wasn't enabled). This way we don't log - # the output to the console twice. - # - # If show_stdout=True, then the above is still done, but with DEBUG - # replaced by INFO. - if show_stdout: - # Then log the subprocess output at INFO level. - log_subprocess: Callable[..., None] = subprocess_logger.info - used_level = logging.INFO - else: - # Then log the subprocess output using VERBOSE. This also ensures - # it will be logged to the log file (aka user_log), if enabled. - log_subprocess = subprocess_logger.verbose - used_level = VERBOSE - - # Whether the subprocess will be visible in the console. - showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level - - # Only use the spinner if we're not showing the subprocess output - # and we have a spinner. - use_spinner = not showing_subprocess and spinner is not None - - log_subprocess("Running command %s", command_desc) - env = os.environ.copy() - if extra_environ: - env.update(extra_environ) - for name in unset_environ: - env.pop(name, None) - try: - proc = subprocess.Popen( - # Convert HiddenText objects to the underlying str. - reveal_command_args(cmd), - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT if not stdout_only else subprocess.PIPE, - cwd=cwd, - env=env, - errors="backslashreplace", - ) - except Exception as exc: - if log_failed_cmd: - subprocess_logger.critical( - "Error %s while executing command %s", - exc, - command_desc, - ) - raise - all_output = [] - if not stdout_only: - assert proc.stdout - assert proc.stdin - proc.stdin.close() - # In this mode, stdout and stderr are in the same pipe. - while True: - line: str = proc.stdout.readline() - if not line: - break - line = line.rstrip() - all_output.append(line + "\n") - - # Show the line immediately. - log_subprocess(line) - # Update the spinner. - if use_spinner: - assert spinner - spinner.spin() - try: - proc.wait() - finally: - if proc.stdout: - proc.stdout.close() - output = "".join(all_output) - else: - # In this mode, stdout and stderr are in different pipes. - # We must use communicate() which is the only safe way to read both. - out, err = proc.communicate() - # log line by line to preserve pip log indenting - for out_line in out.splitlines(): - log_subprocess(out_line) - all_output.append(out) - for err_line in err.splitlines(): - log_subprocess(err_line) - all_output.append(err) - output = out - - proc_had_error = proc.returncode and proc.returncode not in extra_ok_returncodes - if use_spinner: - assert spinner - if proc_had_error: - spinner.finish("error") - else: - spinner.finish("done") - if proc_had_error: - if on_returncode == "raise": - error = InstallationSubprocessError( - command_description=command_desc, - exit_code=proc.returncode, - output_lines=all_output if not showing_subprocess else None, - ) - if log_failed_cmd: - subprocess_logger.error("%s", error, extra={"rich": True}) - subprocess_logger.verbose( - "[bold magenta]full command[/]: [blue]%s[/]", - escape(format_command_args(cmd)), - extra={"markup": True}, - ) - subprocess_logger.verbose( - "[bold magenta]cwd[/]: %s", - escape(cwd or "[inherit]"), - extra={"markup": True}, - ) - - raise error - elif on_returncode == "warn": - subprocess_logger.warning( - 'Command "%s" had error code %s in %s', - command_desc, - proc.returncode, - cwd, - ) - elif on_returncode == "ignore": - pass - else: - raise ValueError(f"Invalid value: on_returncode={on_returncode!r}") - return output - - -def runner_with_spinner_message(message: str) -> Callable[..., None]: - """Provide a subprocess_runner that shows a spinner message. - - Intended for use with for BuildBackendHookCaller. Thus, the runner has - an API that matches what's expected by BuildBackendHookCaller.subprocess_runner. - """ - - def runner( - cmd: List[str], - cwd: Optional[str] = None, - extra_environ: Optional[Mapping[str, Any]] = None, - ) -> None: - with open_spinner(message) as spinner: - call_subprocess( - cmd, - command_desc=message, - cwd=cwd, - extra_environ=extra_environ, - spinner=spinner, - ) - - return runner diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py deleted file mode 100644 index 4eec5f3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py +++ /dev/null @@ -1,296 +0,0 @@ -import errno -import itertools -import logging -import os.path -import tempfile -import traceback -from contextlib import ExitStack, contextmanager -from pathlib import Path -from typing import ( - Any, - Callable, - Dict, - Generator, - List, - Optional, - TypeVar, - Union, -) - -from pip._internal.utils.misc import enum, rmtree - -logger = logging.getLogger(__name__) - -_T = TypeVar("_T", bound="TempDirectory") - - -# Kinds of temporary directories. Only needed for ones that are -# globally-managed. -tempdir_kinds = enum( - BUILD_ENV="build-env", - EPHEM_WHEEL_CACHE="ephem-wheel-cache", - REQ_BUILD="req-build", -) - - -_tempdir_manager: Optional[ExitStack] = None - - -@contextmanager -def global_tempdir_manager() -> Generator[None, None, None]: - global _tempdir_manager - with ExitStack() as stack: - old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack - try: - yield - finally: - _tempdir_manager = old_tempdir_manager - - -class TempDirectoryTypeRegistry: - """Manages temp directory behavior""" - - def __init__(self) -> None: - self._should_delete: Dict[str, bool] = {} - - def set_delete(self, kind: str, value: bool) -> None: - """Indicate whether a TempDirectory of the given kind should be - auto-deleted. - """ - self._should_delete[kind] = value - - def get_delete(self, kind: str) -> bool: - """Get configured auto-delete flag for a given TempDirectory type, - default True. - """ - return self._should_delete.get(kind, True) - - -_tempdir_registry: Optional[TempDirectoryTypeRegistry] = None - - -@contextmanager -def tempdir_registry() -> Generator[TempDirectoryTypeRegistry, None, None]: - """Provides a scoped global tempdir registry that can be used to dictate - whether directories should be deleted. - """ - global _tempdir_registry - old_tempdir_registry = _tempdir_registry - _tempdir_registry = TempDirectoryTypeRegistry() - try: - yield _tempdir_registry - finally: - _tempdir_registry = old_tempdir_registry - - -class _Default: - pass - - -_default = _Default() - - -class TempDirectory: - """Helper class that owns and cleans up a temporary directory. - - This class can be used as a context manager or as an OO representation of a - temporary directory. - - Attributes: - path - Location to the created temporary directory - delete - Whether the directory should be deleted when exiting - (when used as a contextmanager) - - Methods: - cleanup() - Deletes the temporary directory - - When used as a context manager, if the delete attribute is True, on - exiting the context the temporary directory is deleted. - """ - - def __init__( - self, - path: Optional[str] = None, - delete: Union[bool, None, _Default] = _default, - kind: str = "temp", - globally_managed: bool = False, - ignore_cleanup_errors: bool = True, - ): - super().__init__() - - if delete is _default: - if path is not None: - # If we were given an explicit directory, resolve delete option - # now. - delete = False - else: - # Otherwise, we wait until cleanup and see what - # tempdir_registry says. - delete = None - - # The only time we specify path is in for editables where it - # is the value of the --src option. - if path is None: - path = self._create(kind) - - self._path = path - self._deleted = False - self.delete = delete - self.kind = kind - self.ignore_cleanup_errors = ignore_cleanup_errors - - if globally_managed: - assert _tempdir_manager is not None - _tempdir_manager.enter_context(self) - - @property - def path(self) -> str: - assert not self._deleted, f"Attempted to access deleted path: {self._path}" - return self._path - - def __repr__(self) -> str: - return f"<{self.__class__.__name__} {self.path!r}>" - - def __enter__(self: _T) -> _T: - return self - - def __exit__(self, exc: Any, value: Any, tb: Any) -> None: - if self.delete is not None: - delete = self.delete - elif _tempdir_registry: - delete = _tempdir_registry.get_delete(self.kind) - else: - delete = True - - if delete: - self.cleanup() - - def _create(self, kind: str) -> str: - """Create a temporary directory and store its path in self.path""" - # We realpath here because some systems have their default tmpdir - # symlinked to another directory. This tends to confuse build - # scripts, so we canonicalize the path by traversing potential - # symlinks here. - path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) - logger.debug("Created temporary directory: %s", path) - return path - - def cleanup(self) -> None: - """Remove the temporary directory created and reset state""" - self._deleted = True - if not os.path.exists(self._path): - return - - errors: List[BaseException] = [] - - def onerror( - func: Callable[..., Any], - path: Path, - exc_val: BaseException, - ) -> None: - """Log a warning for a `rmtree` error and continue""" - formatted_exc = "\n".join( - traceback.format_exception_only(type(exc_val), exc_val) - ) - formatted_exc = formatted_exc.rstrip() # remove trailing new line - if func in (os.unlink, os.remove, os.rmdir): - logger.debug( - "Failed to remove a temporary file '%s' due to %s.\n", - path, - formatted_exc, - ) - else: - logger.debug("%s failed with %s.", func.__qualname__, formatted_exc) - errors.append(exc_val) - - if self.ignore_cleanup_errors: - try: - # first try with tenacity; retrying to handle ephemeral errors - rmtree(self._path, ignore_errors=False) - except OSError: - # last pass ignore/log all errors - rmtree(self._path, onexc=onerror) - if errors: - logger.warning( - "Failed to remove contents in a temporary directory '%s'.\n" - "You can safely remove it manually.", - self._path, - ) - else: - rmtree(self._path) - - -class AdjacentTempDirectory(TempDirectory): - """Helper class that creates a temporary directory adjacent to a real one. - - Attributes: - original - The original directory to create a temp directory for. - path - After calling create() or entering, contains the full - path to the temporary directory. - delete - Whether the directory should be deleted when exiting - (when used as a contextmanager) - - """ - - # The characters that may be used to name the temp directory - # We always prepend a ~ and then rotate through these until - # a usable name is found. - # pkg_resources raises a different error for .dist-info folder - # with leading '-' and invalid metadata - LEADING_CHARS = "-~.=%0123456789" - - def __init__(self, original: str, delete: Optional[bool] = None) -> None: - self.original = original.rstrip("/\\") - super().__init__(delete=delete) - - @classmethod - def _generate_names(cls, name: str) -> Generator[str, None, None]: - """Generates a series of temporary names. - - The algorithm replaces the leading characters in the name - with ones that are valid filesystem characters, but are not - valid package names (for both Python and pip definitions of - package). - """ - for i in range(1, len(name)): - for candidate in itertools.combinations_with_replacement( - cls.LEADING_CHARS, i - 1 - ): - new_name = "~" + "".join(candidate) + name[i:] - if new_name != name: - yield new_name - - # If we make it this far, we will have to make a longer name - for i in range(len(cls.LEADING_CHARS)): - for candidate in itertools.combinations_with_replacement( - cls.LEADING_CHARS, i - ): - new_name = "~" + "".join(candidate) + name - if new_name != name: - yield new_name - - def _create(self, kind: str) -> str: - root, name = os.path.split(self.original) - for candidate in self._generate_names(name): - path = os.path.join(root, candidate) - try: - os.mkdir(path) - except OSError as ex: - # Continue if the name exists already - if ex.errno != errno.EEXIST: - raise - else: - path = os.path.realpath(path) - break - else: - # Final fallback on the default behavior. - path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) - - logger.debug("Created temporary directory: %s", path) - return path diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py deleted file mode 100644 index 78b5c13..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py +++ /dev/null @@ -1,257 +0,0 @@ -"""Utilities related archives. -""" - -import logging -import os -import shutil -import stat -import tarfile -import zipfile -from typing import Iterable, List, Optional -from zipfile import ZipInfo - -from pip._internal.exceptions import InstallationError -from pip._internal.utils.filetypes import ( - BZ2_EXTENSIONS, - TAR_EXTENSIONS, - XZ_EXTENSIONS, - ZIP_EXTENSIONS, -) -from pip._internal.utils.misc import ensure_dir - -logger = logging.getLogger(__name__) - - -SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS - -try: - import bz2 # noqa - - SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS -except ImportError: - logger.debug("bz2 module is not available") - -try: - # Only for Python 3.3+ - import lzma # noqa - - SUPPORTED_EXTENSIONS += XZ_EXTENSIONS -except ImportError: - logger.debug("lzma module is not available") - - -def current_umask() -> int: - """Get the current umask which involves having to set it temporarily.""" - mask = os.umask(0) - os.umask(mask) - return mask - - -def split_leading_dir(path: str) -> List[str]: - path = path.lstrip("/").lstrip("\\") - if "/" in path and ( - ("\\" in path and path.find("/") < path.find("\\")) or "\\" not in path - ): - return path.split("/", 1) - elif "\\" in path: - return path.split("\\", 1) - else: - return [path, ""] - - -def has_leading_dir(paths: Iterable[str]) -> bool: - """Returns true if all the paths have the same leading path name - (i.e., everything is in one subdirectory in an archive)""" - common_prefix = None - for path in paths: - prefix, rest = split_leading_dir(path) - if not prefix: - return False - elif common_prefix is None: - common_prefix = prefix - elif prefix != common_prefix: - return False - return True - - -def is_within_directory(directory: str, target: str) -> bool: - """ - Return true if the absolute path of target is within the directory - """ - abs_directory = os.path.abspath(directory) - abs_target = os.path.abspath(target) - - prefix = os.path.commonprefix([abs_directory, abs_target]) - return prefix == abs_directory - - -def set_extracted_file_to_default_mode_plus_executable(path: str) -> None: - """ - Make file present at path have execute for user/group/world - (chmod +x) is no-op on windows per python docs - """ - os.chmod(path, (0o777 & ~current_umask() | 0o111)) - - -def zip_item_is_executable(info: ZipInfo) -> bool: - mode = info.external_attr >> 16 - # if mode and regular file and any execute permissions for - # user/group/world? - return bool(mode and stat.S_ISREG(mode) and mode & 0o111) - - -def unzip_file(filename: str, location: str, flatten: bool = True) -> None: - """ - Unzip the file (with path `filename`) to the destination `location`. All - files are written based on system defaults and umask (i.e. permissions are - not preserved), except that regular file members with any execute - permissions (user, group, or world) have "chmod +x" applied after being - written. Note that for windows, any execute changes using os.chmod are - no-ops per the python docs. - """ - ensure_dir(location) - zipfp = open(filename, "rb") - try: - zip = zipfile.ZipFile(zipfp, allowZip64=True) - leading = has_leading_dir(zip.namelist()) and flatten - for info in zip.infolist(): - name = info.filename - fn = name - if leading: - fn = split_leading_dir(name)[1] - fn = os.path.join(location, fn) - dir = os.path.dirname(fn) - if not is_within_directory(location, fn): - message = ( - "The zip file ({}) has a file ({}) trying to install " - "outside target directory ({})" - ) - raise InstallationError(message.format(filename, fn, location)) - if fn.endswith("/") or fn.endswith("\\"): - # A directory - ensure_dir(fn) - else: - ensure_dir(dir) - # Don't use read() to avoid allocating an arbitrarily large - # chunk of memory for the file's content - fp = zip.open(name) - try: - with open(fn, "wb") as destfp: - shutil.copyfileobj(fp, destfp) - finally: - fp.close() - if zip_item_is_executable(info): - set_extracted_file_to_default_mode_plus_executable(fn) - finally: - zipfp.close() - - -def untar_file(filename: str, location: str) -> None: - """ - Untar the file (with path `filename`) to the destination `location`. - All files are written based on system defaults and umask (i.e. permissions - are not preserved), except that regular file members with any execute - permissions (user, group, or world) have "chmod +x" applied after being - written. Note that for windows, any execute changes using os.chmod are - no-ops per the python docs. - """ - ensure_dir(location) - if filename.lower().endswith(".gz") or filename.lower().endswith(".tgz"): - mode = "r:gz" - elif filename.lower().endswith(BZ2_EXTENSIONS): - mode = "r:bz2" - elif filename.lower().endswith(XZ_EXTENSIONS): - mode = "r:xz" - elif filename.lower().endswith(".tar"): - mode = "r" - else: - logger.warning( - "Cannot determine compression type for file %s", - filename, - ) - mode = "r:*" - tar = tarfile.open(filename, mode, encoding="utf-8") - try: - leading = has_leading_dir([member.name for member in tar.getmembers()]) - for member in tar.getmembers(): - fn = member.name - if leading: - fn = split_leading_dir(fn)[1] - path = os.path.join(location, fn) - if not is_within_directory(location, path): - message = ( - "The tar file ({}) has a file ({}) trying to install " - "outside target directory ({})" - ) - raise InstallationError(message.format(filename, path, location)) - if member.isdir(): - ensure_dir(path) - elif member.issym(): - try: - tar._extract_member(member, path) - except Exception as exc: - # Some corrupt tar files seem to produce this - # (specifically bad symlinks) - logger.warning( - "In the tar file %s the member %s is invalid: %s", - filename, - member.name, - exc, - ) - continue - else: - try: - fp = tar.extractfile(member) - except (KeyError, AttributeError) as exc: - # Some corrupt tar files seem to produce this - # (specifically bad symlinks) - logger.warning( - "In the tar file %s the member %s is invalid: %s", - filename, - member.name, - exc, - ) - continue - ensure_dir(os.path.dirname(path)) - assert fp is not None - with open(path, "wb") as destfp: - shutil.copyfileobj(fp, destfp) - fp.close() - # Update the timestamp (useful for cython compiled files) - tar.utime(member, path) - # member have any execute permissions for user/group/world? - if member.mode & 0o111: - set_extracted_file_to_default_mode_plus_executable(path) - finally: - tar.close() - - -def unpack_file( - filename: str, - location: str, - content_type: Optional[str] = None, -) -> None: - filename = os.path.realpath(filename) - if ( - content_type == "application/zip" - or filename.lower().endswith(ZIP_EXTENSIONS) - or zipfile.is_zipfile(filename) - ): - unzip_file(filename, location, flatten=not filename.endswith(".whl")) - elif ( - content_type == "application/x-gzip" - or tarfile.is_tarfile(filename) - or filename.lower().endswith(TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS) - ): - untar_file(filename, location) - else: - # FIXME: handle? - # FIXME: magic signatures? - logger.critical( - "Cannot unpack file %s (downloaded from %s, content-type: %s); " - "cannot detect archive format", - filename, - location, - content_type, - ) - raise InstallationError(f"Cannot determine archive format of {location}") diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py deleted file mode 100644 index 6ba2e04..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py +++ /dev/null @@ -1,62 +0,0 @@ -import os -import string -import urllib.parse -import urllib.request -from typing import Optional - -from .compat import WINDOWS - - -def get_url_scheme(url: str) -> Optional[str]: - if ":" not in url: - return None - return url.split(":", 1)[0].lower() - - -def path_to_url(path: str) -> str: - """ - Convert a path to a file: URL. The path will be made absolute and have - quoted path parts. - """ - path = os.path.normpath(os.path.abspath(path)) - url = urllib.parse.urljoin("file:", urllib.request.pathname2url(path)) - return url - - -def url_to_path(url: str) -> str: - """ - Convert a file: URL to a path. - """ - assert url.startswith( - "file:" - ), f"You can only turn file: urls into filenames (not {url!r})" - - _, netloc, path, _, _ = urllib.parse.urlsplit(url) - - if not netloc or netloc == "localhost": - # According to RFC 8089, same as empty authority. - netloc = "" - elif WINDOWS: - # If we have a UNC path, prepend UNC share notation. - netloc = "\\\\" + netloc - else: - raise ValueError( - f"non-local file URIs are not supported on this platform: {url!r}" - ) - - path = urllib.request.url2pathname(netloc + path) - - # On Windows, urlsplit parses the path as something like "/C:/Users/foo". - # This creates issues for path-related functions like io.open(), so we try - # to detect and strip the leading slash. - if ( - WINDOWS - and not netloc # Not UNC. - and len(path) >= 3 - and path[0] == "/" # Leading slash to strip. - and path[1] in string.ascii_letters # Drive letter. - and path[2:4] in (":", ":/") # Colon + end of string, or colon + absolute path. - ): - path = path[1:] - - return path diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py deleted file mode 100644 index 882e36f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py +++ /dev/null @@ -1,104 +0,0 @@ -import logging -import os -import re -import site -import sys -from typing import List, Optional - -logger = logging.getLogger(__name__) -_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile( - r"include-system-site-packages\s*=\s*(?Ptrue|false)" -) - - -def _running_under_venv() -> bool: - """Checks if sys.base_prefix and sys.prefix match. - - This handles PEP 405 compliant virtual environments. - """ - return sys.prefix != getattr(sys, "base_prefix", sys.prefix) - - -def _running_under_legacy_virtualenv() -> bool: - """Checks if sys.real_prefix is set. - - This handles virtual environments created with pypa's virtualenv. - """ - # pypa/virtualenv case - return hasattr(sys, "real_prefix") - - -def running_under_virtualenv() -> bool: - """True if we're running inside a virtual environment, False otherwise.""" - return _running_under_venv() or _running_under_legacy_virtualenv() - - -def _get_pyvenv_cfg_lines() -> Optional[List[str]]: - """Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines - - Returns None, if it could not read/access the file. - """ - pyvenv_cfg_file = os.path.join(sys.prefix, "pyvenv.cfg") - try: - # Although PEP 405 does not specify, the built-in venv module always - # writes with UTF-8. (pypa/pip#8717) - with open(pyvenv_cfg_file, encoding="utf-8") as f: - return f.read().splitlines() # avoids trailing newlines - except OSError: - return None - - -def _no_global_under_venv() -> bool: - """Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion - - PEP 405 specifies that when system site-packages are not supposed to be - visible from a virtual environment, `pyvenv.cfg` must contain the following - line: - - include-system-site-packages = false - - Additionally, log a warning if accessing the file fails. - """ - cfg_lines = _get_pyvenv_cfg_lines() - if cfg_lines is None: - # We're not in a "sane" venv, so assume there is no system - # site-packages access (since that's PEP 405's default state). - logger.warning( - "Could not access 'pyvenv.cfg' despite a virtual environment " - "being active. Assuming global site-packages is not accessible " - "in this environment." - ) - return True - - for line in cfg_lines: - match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line) - if match is not None and match.group("value") == "false": - return True - return False - - -def _no_global_under_legacy_virtualenv() -> bool: - """Check if "no-global-site-packages.txt" exists beside site.py - - This mirrors logic in pypa/virtualenv for determining whether system - site-packages are visible in the virtual environment. - """ - site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) - no_global_site_packages_file = os.path.join( - site_mod_dir, - "no-global-site-packages.txt", - ) - return os.path.exists(no_global_site_packages_file) - - -def virtualenv_no_global() -> bool: - """Returns a boolean, whether running in venv with no system site-packages.""" - # PEP 405 compliance needs to be checked first since virtualenv >=20 would - # return True for both checks, but is only able to use the PEP 405 config. - if _running_under_venv(): - return _no_global_under_venv() - - if _running_under_legacy_virtualenv(): - return _no_global_under_legacy_virtualenv() - - return False diff --git a/venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py b/venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py deleted file mode 100644 index 3551f8f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py +++ /dev/null @@ -1,134 +0,0 @@ -"""Support functions for working with wheel files. -""" - -import logging -from email.message import Message -from email.parser import Parser -from typing import Tuple -from zipfile import BadZipFile, ZipFile - -from pip._vendor.packaging.utils import canonicalize_name - -from pip._internal.exceptions import UnsupportedWheel - -VERSION_COMPATIBLE = (1, 0) - - -logger = logging.getLogger(__name__) - - -def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]: - """Extract information from the provided wheel, ensuring it meets basic - standards. - - Returns the name of the .dist-info directory and the parsed WHEEL metadata. - """ - try: - info_dir = wheel_dist_info_dir(wheel_zip, name) - metadata = wheel_metadata(wheel_zip, info_dir) - version = wheel_version(metadata) - except UnsupportedWheel as e: - raise UnsupportedWheel(f"{name} has an invalid wheel, {str(e)}") - - check_compatibility(version, name) - - return info_dir, metadata - - -def wheel_dist_info_dir(source: ZipFile, name: str) -> str: - """Returns the name of the contained .dist-info directory. - - Raises AssertionError or UnsupportedWheel if not found, >1 found, or - it doesn't match the provided name. - """ - # Zip file path separators must be / - subdirs = {p.split("/", 1)[0] for p in source.namelist()} - - info_dirs = [s for s in subdirs if s.endswith(".dist-info")] - - if not info_dirs: - raise UnsupportedWheel(".dist-info directory not found") - - if len(info_dirs) > 1: - raise UnsupportedWheel( - "multiple .dist-info directories found: {}".format(", ".join(info_dirs)) - ) - - info_dir = info_dirs[0] - - info_dir_name = canonicalize_name(info_dir) - canonical_name = canonicalize_name(name) - if not info_dir_name.startswith(canonical_name): - raise UnsupportedWheel( - f".dist-info directory {info_dir!r} does not start with {canonical_name!r}" - ) - - return info_dir - - -def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes: - try: - return source.read(path) - # BadZipFile for general corruption, KeyError for missing entry, - # and RuntimeError for password-protected files - except (BadZipFile, KeyError, RuntimeError) as e: - raise UnsupportedWheel(f"could not read {path!r} file: {e!r}") - - -def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message: - """Return the WHEEL metadata of an extracted wheel, if possible. - Otherwise, raise UnsupportedWheel. - """ - path = f"{dist_info_dir}/WHEEL" - # Zip file path separators must be / - wheel_contents = read_wheel_metadata_file(source, path) - - try: - wheel_text = wheel_contents.decode() - except UnicodeDecodeError as e: - raise UnsupportedWheel(f"error decoding {path!r}: {e!r}") - - # FeedParser (used by Parser) does not raise any exceptions. The returned - # message may have .defects populated, but for backwards-compatibility we - # currently ignore them. - return Parser().parsestr(wheel_text) - - -def wheel_version(wheel_data: Message) -> Tuple[int, ...]: - """Given WHEEL metadata, return the parsed Wheel-Version. - Otherwise, raise UnsupportedWheel. - """ - version_text = wheel_data["Wheel-Version"] - if version_text is None: - raise UnsupportedWheel("WHEEL is missing Wheel-Version") - - version = version_text.strip() - - try: - return tuple(map(int, version.split("."))) - except ValueError: - raise UnsupportedWheel(f"invalid Wheel-Version: {version!r}") - - -def check_compatibility(version: Tuple[int, ...], name: str) -> None: - """Raises errors or warns if called with an incompatible Wheel-Version. - - pip should refuse to install a Wheel-Version that's a major series - ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when - installing a version only minor version ahead (e.g 1.2 > 1.1). - - version: a 2-tuple representing a Wheel-Version (Major, Minor) - name: name of wheel or package to raise exception about - - :raises UnsupportedWheel: when an incompatible Wheel-Version is given - """ - if version[0] > VERSION_COMPATIBLE[0]: - raise UnsupportedWheel( - "{}'s Wheel-Version ({}) is not compatible with this version " - "of pip".format(name, ".".join(map(str, version))) - ) - elif version > VERSION_COMPATIBLE: - logger.warning( - "Installing from a newer Wheel-Version (%s)", - ".".join(map(str, version)), - ) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py deleted file mode 100644 index b6beddb..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Expose a limited set of classes and functions so callers outside of -# the vcs package don't need to import deeper than `pip._internal.vcs`. -# (The test directory may still need to import from a vcs sub-package.) -# Import all vcs modules to register each VCS in the VcsSupport object. -import pip._internal.vcs.bazaar -import pip._internal.vcs.git -import pip._internal.vcs.mercurial -import pip._internal.vcs.subversion # noqa: F401 -from pip._internal.vcs.versioncontrol import ( # noqa: F401 - RemoteNotFoundError, - RemoteNotValidError, - is_url, - make_vcs_requirement_url, - vcs, -) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 70ee8c2e112a0157a091d0845a93dca21a8b4ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmZWmyH3L}6m^<5O^Z4qq)IS!?a&y+!hjG9j2#MM$P&4ZNv--3uAN9Q^E3RCS0;Xe z3A>6=rCiJB_?{y_uCJcWrpU)bY>9AFq=6d>{Ng(bzssTK>q#r3=0X?2}lU1Gy6Th)Z_NyQBIkHP=dV_!Wke9CQ6Wc9mC WZ>269!R{h|r3pPxhiMeXBKiXypq;w_ diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc deleted file mode 100644 index 8828e19fc228bc4e6ee0a8fb601e0b90d8616f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3483 zcmZ`+-ESke5nt|dS1VbPmI^eh*Fl69}^yNv!~X?UZD8U}sL?WHg`z$DGv7yuiyELBsTE>SxWM zX?QnnWedTA;k~q-b%IXT4Z7K4u$c9NUbYl05sO>r%Y5a61goE0tik*z7V~-U%n8=` z()l`HyCAThd~FSy&%hdMZ{TS9RU(!4|5U1^$fH!dkEdnI2exi~kub*d$NW2`+boe~ z8l8k?q$UHR+gWtL!??(@C}+@L!0}KO;Z&ppSNoq%)#S^3ROppQJS!C6E7ZecnzKI& zQ3&07#EdtrpK2+AMUlxeZGSG@zs%oyMAwt2wP=qPuj3Ec%7{qIUnrVV4F|Sp7k4}TWs5m zZonwod8gI~x;IB2yUX4%vs>R=)C#sCa&Kzyv#5$9p`HCoRCE`p_Vz`T$CE*$@}c{| zM5(fB&N*2%kd<;$&&m4G<7pC$BIZgZ!-J3IP{txElYG2W7EBJ0cz!fY zll@_Nq9#TDtKEAa4rQYFP8r1q(U{9&nUupY$rTrX(IH@DxNn@WTb}5pF<0S!BzXvi zhmjb|K5Q@1Qs1sNYj5qoBBUwffP4oas~2!(VNyWq<`EbB1?+#a7rUTj{^5xm(9H3_ z1!m@)TNl=;tH?Q^ac0k4<;=(#xqxh*QDz?yvBsQJFYiK+9@ye8bD`G&{558D)%ut9 zZ~N3!l=-YV^FW(>VSyHM=AAZX*10!pn0&Rs!L7Y&--jx&boiPw>w)ze;ysQ_0hjSVy@HB%4UKaD{Q?TrC}?(HLyVn9=eQ6=D@-n%V=ILjj_JYKjg8Q2%%9k>sw0^ zjLjMNmDxYoSU+XuV?wJ~1|K;*a34A3@7 z)wwjSR(r!P^e8rC*Ehh-?K%US7+{9cALuEaQNWRVLBtziGh)O(b5329ow*?6qxCS; zgc;}Dxv*ZHHD_z>iML>nhmW5+dO=Q#<4`IF7=VuX4U0TI5g&j^weYoq0v@GB&ik6~ zCpm*WJ{0f6oc5+AixdZETscO!q>6;X6Hdg>Kxp8-&Qsch-O8yF?}5mzsEZF_>=S6R z2ZWL~@m{o?w$mj&d-%C*l;rWMwbuOFS1x8tC);XDx3-XO~N>1%la3m%oIB=Ok zxHqg*n1zILMve)2dv(?bbBl9r$rp${d?oU zH&Al~8W9PMjIU$Hp4sQ*!uo^t*Z1N0&bbZs$YCz@-vT@VN@f(?@ey!I(y8W7tk?Hlv}aLP1MX_9jZURNS1jemj1alINQGDIg}3`(rMg*Xvda0TA|0JGm9 zkLji7A&7w%f7sz%l%R$W3bY2q7rSTC;o8o{`TZSe-2I52gtN-lQCb1p3`Ci;;cI&6@ zwQa}lyi4rHDzUrJnr{<rHqy?Owf_cBd*ysNj4ILu_@a?wT({#k-@ z3b_8tJU#^0OwmVz$J3AsWBAX6i)+9#&O|?I|C1UPze6BP^r&yG!WGhnbiPYke$VOt F?SG5NWc2_5 diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc deleted file mode 100644 index 4597159557b911a96574547d0d9980d0a65383a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12406 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 z 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 c$6DOxGY9==P2-2g4~rN62i%y65&!@I diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc deleted file mode 100644 index d9fefa1678bcc891d8e3c35ecd951d142f2ab669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21127 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 CrgUZi diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py deleted file mode 100644 index 20a17ed..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py +++ /dev/null @@ -1,112 +0,0 @@ -import logging -from typing import List, Optional, Tuple - -from pip._internal.utils.misc import HiddenText, display_path -from pip._internal.utils.subprocess import make_command -from pip._internal.utils.urls import path_to_url -from pip._internal.vcs.versioncontrol import ( - AuthInfo, - RemoteNotFoundError, - RevOptions, - VersionControl, - vcs, -) - -logger = logging.getLogger(__name__) - - -class Bazaar(VersionControl): - name = "bzr" - dirname = ".bzr" - repo_name = "branch" - schemes = ( - "bzr+http", - "bzr+https", - "bzr+ssh", - "bzr+sftp", - "bzr+ftp", - "bzr+lp", - "bzr+file", - ) - - @staticmethod - def get_base_rev_args(rev: str) -> List[str]: - return ["-r", rev] - - def fetch_new( - self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int - ) -> None: - rev_display = rev_options.to_display() - logger.info( - "Checking out %s%s to %s", - url, - rev_display, - display_path(dest), - ) - if verbosity <= 0: - flag = "--quiet" - elif verbosity == 1: - flag = "" - else: - flag = f"-{'v'*verbosity}" - cmd_args = make_command( - "checkout", "--lightweight", flag, rev_options.to_args(), url, dest - ) - self.run_command(cmd_args) - - def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - self.run_command(make_command("switch", url), cwd=dest) - - def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - output = self.run_command( - make_command("info"), show_stdout=False, stdout_only=True, cwd=dest - ) - if output.startswith("Standalone "): - # Older versions of pip used to create standalone branches. - # Convert the standalone branch to a checkout by calling "bzr bind". - cmd_args = make_command("bind", "-q", url) - self.run_command(cmd_args, cwd=dest) - - cmd_args = make_command("update", "-q", rev_options.to_args()) - self.run_command(cmd_args, cwd=dest) - - @classmethod - def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: - # hotfix the URL scheme after removing bzr+ from bzr+ssh:// re-add it - url, rev, user_pass = super().get_url_rev_and_auth(url) - if url.startswith("ssh://"): - url = "bzr+" + url - return url, rev, user_pass - - @classmethod - def get_remote_url(cls, location: str) -> str: - urls = cls.run_command( - ["info"], show_stdout=False, stdout_only=True, cwd=location - ) - for line in urls.splitlines(): - line = line.strip() - for x in ("checkout of branch: ", "parent branch: "): - if line.startswith(x): - repo = line.split(x)[1] - if cls._is_local_repository(repo): - return path_to_url(repo) - return repo - raise RemoteNotFoundError - - @classmethod - def get_revision(cls, location: str) -> str: - revision = cls.run_command( - ["revno"], - show_stdout=False, - stdout_only=True, - cwd=location, - ) - return revision.splitlines()[-1] - - @classmethod - def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: - """Always assume the versions don't match""" - return False - - -vcs.register(Bazaar) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py deleted file mode 100644 index 8c242cf..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py +++ /dev/null @@ -1,526 +0,0 @@ -import logging -import os.path -import pathlib -import re -import urllib.parse -import urllib.request -from typing import List, Optional, Tuple - -from pip._internal.exceptions import BadCommand, InstallationError -from pip._internal.utils.misc import HiddenText, display_path, hide_url -from pip._internal.utils.subprocess import make_command -from pip._internal.vcs.versioncontrol import ( - AuthInfo, - RemoteNotFoundError, - RemoteNotValidError, - RevOptions, - VersionControl, - find_path_to_project_root_from_repo_root, - vcs, -) - -urlsplit = urllib.parse.urlsplit -urlunsplit = urllib.parse.urlunsplit - - -logger = logging.getLogger(__name__) - - -GIT_VERSION_REGEX = re.compile( - r"^git version " # Prefix. - r"(\d+)" # Major. - r"\.(\d+)" # Dot, minor. - r"(?:\.(\d+))?" # Optional dot, patch. - r".*$" # Suffix, including any pre- and post-release segments we don't care about. -) - -HASH_REGEX = re.compile("^[a-fA-F0-9]{40}$") - -# SCP (Secure copy protocol) shorthand. e.g. 'git@example.com:foo/bar.git' -SCP_REGEX = re.compile( - r"""^ - # Optional user, e.g. 'git@' - (\w+@)? - # Server, e.g. 'github.com'. - ([^/:]+): - # The server-side path. e.g. 'user/project.git'. Must start with an - # alphanumeric character so as not to be confusable with a Windows paths - # like 'C:/foo/bar' or 'C:\foo\bar'. - (\w[^:]*) - $""", - re.VERBOSE, -) - - -def looks_like_hash(sha: str) -> bool: - return bool(HASH_REGEX.match(sha)) - - -class Git(VersionControl): - name = "git" - dirname = ".git" - repo_name = "clone" - schemes = ( - "git+http", - "git+https", - "git+ssh", - "git+git", - "git+file", - ) - # Prevent the user's environment variables from interfering with pip: - # https://github.com/pypa/pip/issues/1130 - unset_environ = ("GIT_DIR", "GIT_WORK_TREE") - default_arg_rev = "HEAD" - - @staticmethod - def get_base_rev_args(rev: str) -> List[str]: - return [rev] - - def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: - _, rev_options = self.get_url_rev_options(hide_url(url)) - if not rev_options.rev: - return False - if not self.is_commit_id_equal(dest, rev_options.rev): - # the current commit is different from rev, - # which means rev was something else than a commit hash - return False - # return False in the rare case rev is both a commit hash - # and a tag or a branch; we don't want to cache in that case - # because that branch/tag could point to something else in the future - is_tag_or_branch = bool(self.get_revision_sha(dest, rev_options.rev)[0]) - return not is_tag_or_branch - - def get_git_version(self) -> Tuple[int, ...]: - version = self.run_command( - ["version"], - command_desc="git version", - show_stdout=False, - stdout_only=True, - ) - match = GIT_VERSION_REGEX.match(version) - if not match: - logger.warning("Can't parse git version: %s", version) - return () - return (int(match.group(1)), int(match.group(2))) - - @classmethod - def get_current_branch(cls, location: str) -> Optional[str]: - """ - Return the current branch, or None if HEAD isn't at a branch - (e.g. detached HEAD). - """ - # git-symbolic-ref exits with empty stdout if "HEAD" is a detached - # HEAD rather than a symbolic ref. In addition, the -q causes the - # command to exit with status code 1 instead of 128 in this case - # and to suppress the message to stderr. - args = ["symbolic-ref", "-q", "HEAD"] - output = cls.run_command( - args, - extra_ok_returncodes=(1,), - show_stdout=False, - stdout_only=True, - cwd=location, - ) - ref = output.strip() - - if ref.startswith("refs/heads/"): - return ref[len("refs/heads/") :] - - return None - - @classmethod - def get_revision_sha(cls, dest: str, rev: str) -> Tuple[Optional[str], bool]: - """ - Return (sha_or_none, is_branch), where sha_or_none is a commit hash - if the revision names a remote branch or tag, otherwise None. - - Args: - dest: the repository directory. - rev: the revision name. - """ - # Pass rev to pre-filter the list. - output = cls.run_command( - ["show-ref", rev], - cwd=dest, - show_stdout=False, - stdout_only=True, - on_returncode="ignore", - ) - refs = {} - # NOTE: We do not use splitlines here since that would split on other - # unicode separators, which can be maliciously used to install a - # different revision. - for line in output.strip().split("\n"): - line = line.rstrip("\r") - if not line: - continue - try: - ref_sha, ref_name = line.split(" ", maxsplit=2) - except ValueError: - # Include the offending line to simplify troubleshooting if - # this error ever occurs. - raise ValueError(f"unexpected show-ref line: {line!r}") - - refs[ref_name] = ref_sha - - branch_ref = f"refs/remotes/origin/{rev}" - tag_ref = f"refs/tags/{rev}" - - sha = refs.get(branch_ref) - if sha is not None: - return (sha, True) - - sha = refs.get(tag_ref) - - return (sha, False) - - @classmethod - def _should_fetch(cls, dest: str, rev: str) -> bool: - """ - Return true if rev is a ref or is a commit that we don't have locally. - - Branches and tags are not considered in this method because they are - assumed to be always available locally (which is a normal outcome of - ``git clone`` and ``git fetch --tags``). - """ - if rev.startswith("refs/"): - # Always fetch remote refs. - return True - - if not looks_like_hash(rev): - # Git fetch would fail with abbreviated commits. - return False - - if cls.has_commit(dest, rev): - # Don't fetch if we have the commit locally. - return False - - return True - - @classmethod - def resolve_revision( - cls, dest: str, url: HiddenText, rev_options: RevOptions - ) -> RevOptions: - """ - Resolve a revision to a new RevOptions object with the SHA1 of the - branch, tag, or ref if found. - - Args: - rev_options: a RevOptions object. - """ - rev = rev_options.arg_rev - # The arg_rev property's implementation for Git ensures that the - # rev return value is always non-None. - assert rev is not None - - sha, is_branch = cls.get_revision_sha(dest, rev) - - if sha is not None: - rev_options = rev_options.make_new(sha) - rev_options.branch_name = rev if is_branch else None - - return rev_options - - # Do not show a warning for the common case of something that has - # the form of a Git commit hash. - if not looks_like_hash(rev): - logger.warning( - "Did not find branch or tag '%s', assuming revision or ref.", - rev, - ) - - if not cls._should_fetch(dest, rev): - return rev_options - - # fetch the requested revision - cls.run_command( - make_command("fetch", "-q", url, rev_options.to_args()), - cwd=dest, - ) - # Change the revision to the SHA of the ref we fetched - sha = cls.get_revision(dest, rev="FETCH_HEAD") - rev_options = rev_options.make_new(sha) - - return rev_options - - @classmethod - def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: - """ - Return whether the current commit hash equals the given name. - - Args: - dest: the repository directory. - name: a string name. - """ - if not name: - # Then avoid an unnecessary subprocess call. - return False - - return cls.get_revision(dest) == name - - def fetch_new( - self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int - ) -> None: - rev_display = rev_options.to_display() - logger.info("Cloning %s%s to %s", url, rev_display, display_path(dest)) - if verbosity <= 0: - flags: Tuple[str, ...] = ("--quiet",) - elif verbosity == 1: - flags = () - else: - flags = ("--verbose", "--progress") - if self.get_git_version() >= (2, 17): - # Git added support for partial clone in 2.17 - # https://git-scm.com/docs/partial-clone - # Speeds up cloning by functioning without a complete copy of repository - self.run_command( - make_command( - "clone", - "--filter=blob:none", - *flags, - url, - dest, - ) - ) - else: - self.run_command(make_command("clone", *flags, url, dest)) - - if rev_options.rev: - # Then a specific revision was requested. - rev_options = self.resolve_revision(dest, url, rev_options) - branch_name = getattr(rev_options, "branch_name", None) - logger.debug("Rev options %s, branch_name %s", rev_options, branch_name) - if branch_name is None: - # Only do a checkout if the current commit id doesn't match - # the requested revision. - if not self.is_commit_id_equal(dest, rev_options.rev): - cmd_args = make_command( - "checkout", - "-q", - rev_options.to_args(), - ) - self.run_command(cmd_args, cwd=dest) - elif self.get_current_branch(dest) != branch_name: - # Then a specific branch was requested, and that branch - # is not yet checked out. - track_branch = f"origin/{branch_name}" - cmd_args = [ - "checkout", - "-b", - branch_name, - "--track", - track_branch, - ] - self.run_command(cmd_args, cwd=dest) - else: - sha = self.get_revision(dest) - rev_options = rev_options.make_new(sha) - - logger.info("Resolved %s to commit %s", url, rev_options.rev) - - #: repo may contain submodules - self.update_submodules(dest) - - def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - self.run_command( - make_command("config", "remote.origin.url", url), - cwd=dest, - ) - cmd_args = make_command("checkout", "-q", rev_options.to_args()) - self.run_command(cmd_args, cwd=dest) - - self.update_submodules(dest) - - def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - # First fetch changes from the default remote - if self.get_git_version() >= (1, 9): - # fetch tags in addition to everything else - self.run_command(["fetch", "-q", "--tags"], cwd=dest) - else: - self.run_command(["fetch", "-q"], cwd=dest) - # Then reset to wanted revision (maybe even origin/master) - rev_options = self.resolve_revision(dest, url, rev_options) - cmd_args = make_command("reset", "--hard", "-q", rev_options.to_args()) - self.run_command(cmd_args, cwd=dest) - #: update submodules - self.update_submodules(dest) - - @classmethod - def get_remote_url(cls, location: str) -> str: - """ - Return URL of the first remote encountered. - - Raises RemoteNotFoundError if the repository does not have a remote - url configured. - """ - # We need to pass 1 for extra_ok_returncodes since the command - # exits with return code 1 if there are no matching lines. - stdout = cls.run_command( - ["config", "--get-regexp", r"remote\..*\.url"], - extra_ok_returncodes=(1,), - show_stdout=False, - stdout_only=True, - cwd=location, - ) - remotes = stdout.splitlines() - try: - found_remote = remotes[0] - except IndexError: - raise RemoteNotFoundError - - for remote in remotes: - if remote.startswith("remote.origin.url "): - found_remote = remote - break - url = found_remote.split(" ")[1] - return cls._git_remote_to_pip_url(url.strip()) - - @staticmethod - def _git_remote_to_pip_url(url: str) -> str: - """ - Convert a remote url from what git uses to what pip accepts. - - There are 3 legal forms **url** may take: - - 1. A fully qualified url: ssh://git@example.com/foo/bar.git - 2. A local project.git folder: /path/to/bare/repository.git - 3. SCP shorthand for form 1: git@example.com:foo/bar.git - - Form 1 is output as-is. Form 2 must be converted to URI and form 3 must - be converted to form 1. - - See the corresponding test test_git_remote_url_to_pip() for examples of - sample inputs/outputs. - """ - if re.match(r"\w+://", url): - # This is already valid. Pass it though as-is. - return url - if os.path.exists(url): - # A local bare remote (git clone --mirror). - # Needs a file:// prefix. - return pathlib.PurePath(url).as_uri() - scp_match = SCP_REGEX.match(url) - if scp_match: - # Add an ssh:// prefix and replace the ':' with a '/'. - return scp_match.expand(r"ssh://\1\2/\3") - # Otherwise, bail out. - raise RemoteNotValidError(url) - - @classmethod - def has_commit(cls, location: str, rev: str) -> bool: - """ - Check if rev is a commit that is available in the local repository. - """ - try: - cls.run_command( - ["rev-parse", "-q", "--verify", "sha^" + rev], - cwd=location, - log_failed_cmd=False, - ) - except InstallationError: - return False - else: - return True - - @classmethod - def get_revision(cls, location: str, rev: Optional[str] = None) -> str: - if rev is None: - rev = "HEAD" - current_rev = cls.run_command( - ["rev-parse", rev], - show_stdout=False, - stdout_only=True, - cwd=location, - ) - return current_rev.strip() - - @classmethod - def get_subdirectory(cls, location: str) -> Optional[str]: - """ - Return the path to Python project root, relative to the repo root. - Return None if the project root is in the repo root. - """ - # find the repo root - git_dir = cls.run_command( - ["rev-parse", "--git-dir"], - show_stdout=False, - stdout_only=True, - cwd=location, - ).strip() - if not os.path.isabs(git_dir): - git_dir = os.path.join(location, git_dir) - repo_root = os.path.abspath(os.path.join(git_dir, "..")) - return find_path_to_project_root_from_repo_root(location, repo_root) - - @classmethod - def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: - """ - Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. - That's required because although they use SSH they sometimes don't - work with a ssh:// scheme (e.g. GitHub). But we need a scheme for - parsing. Hence we remove it again afterwards and return it as a stub. - """ - # Works around an apparent Git bug - # (see https://article.gmane.org/gmane.comp.version-control.git/146500) - scheme, netloc, path, query, fragment = urlsplit(url) - if scheme.endswith("file"): - initial_slashes = path[: -len(path.lstrip("/"))] - newpath = initial_slashes + urllib.request.url2pathname(path).replace( - "\\", "/" - ).lstrip("/") - after_plus = scheme.find("+") + 1 - url = scheme[:after_plus] + urlunsplit( - (scheme[after_plus:], netloc, newpath, query, fragment), - ) - - if "://" not in url: - assert "file:" not in url - url = url.replace("git+", "git+ssh://") - url, rev, user_pass = super().get_url_rev_and_auth(url) - url = url.replace("ssh://", "") - else: - url, rev, user_pass = super().get_url_rev_and_auth(url) - - return url, rev, user_pass - - @classmethod - def update_submodules(cls, location: str) -> None: - if not os.path.exists(os.path.join(location, ".gitmodules")): - return - cls.run_command( - ["submodule", "update", "--init", "--recursive", "-q"], - cwd=location, - ) - - @classmethod - def get_repository_root(cls, location: str) -> Optional[str]: - loc = super().get_repository_root(location) - if loc: - return loc - try: - r = cls.run_command( - ["rev-parse", "--show-toplevel"], - cwd=location, - show_stdout=False, - stdout_only=True, - on_returncode="raise", - log_failed_cmd=False, - ) - except BadCommand: - logger.debug( - "could not determine if %s is under git control " - "because git is not available", - location, - ) - return None - except InstallationError: - return None - return os.path.normpath(r.rstrip("\r\n")) - - @staticmethod - def should_add_vcs_url_prefix(repo_url: str) -> bool: - """In either https or ssh form, requirements must be prefixed with git+.""" - return True - - -vcs.register(Git) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py deleted file mode 100644 index c183d41..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py +++ /dev/null @@ -1,163 +0,0 @@ -import configparser -import logging -import os -from typing import List, Optional, Tuple - -from pip._internal.exceptions import BadCommand, InstallationError -from pip._internal.utils.misc import HiddenText, display_path -from pip._internal.utils.subprocess import make_command -from pip._internal.utils.urls import path_to_url -from pip._internal.vcs.versioncontrol import ( - RevOptions, - VersionControl, - find_path_to_project_root_from_repo_root, - vcs, -) - -logger = logging.getLogger(__name__) - - -class Mercurial(VersionControl): - name = "hg" - dirname = ".hg" - repo_name = "clone" - schemes = ( - "hg+file", - "hg+http", - "hg+https", - "hg+ssh", - "hg+static-http", - ) - - @staticmethod - def get_base_rev_args(rev: str) -> List[str]: - return [f"--rev={rev}"] - - def fetch_new( - self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int - ) -> None: - rev_display = rev_options.to_display() - logger.info( - "Cloning hg %s%s to %s", - url, - rev_display, - display_path(dest), - ) - if verbosity <= 0: - flags: Tuple[str, ...] = ("--quiet",) - elif verbosity == 1: - flags = () - elif verbosity == 2: - flags = ("--verbose",) - else: - flags = ("--verbose", "--debug") - self.run_command(make_command("clone", "--noupdate", *flags, url, dest)) - self.run_command( - make_command("update", *flags, rev_options.to_args()), - cwd=dest, - ) - - def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - repo_config = os.path.join(dest, self.dirname, "hgrc") - config = configparser.RawConfigParser() - try: - config.read(repo_config) - config.set("paths", "default", url.secret) - with open(repo_config, "w") as config_file: - config.write(config_file) - except (OSError, configparser.NoSectionError) as exc: - logger.warning("Could not switch Mercurial repository to %s: %s", url, exc) - else: - cmd_args = make_command("update", "-q", rev_options.to_args()) - self.run_command(cmd_args, cwd=dest) - - def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - self.run_command(["pull", "-q"], cwd=dest) - cmd_args = make_command("update", "-q", rev_options.to_args()) - self.run_command(cmd_args, cwd=dest) - - @classmethod - def get_remote_url(cls, location: str) -> str: - url = cls.run_command( - ["showconfig", "paths.default"], - show_stdout=False, - stdout_only=True, - cwd=location, - ).strip() - if cls._is_local_repository(url): - url = path_to_url(url) - return url.strip() - - @classmethod - def get_revision(cls, location: str) -> str: - """ - Return the repository-local changeset revision number, as an integer. - """ - current_revision = cls.run_command( - ["parents", "--template={rev}"], - show_stdout=False, - stdout_only=True, - cwd=location, - ).strip() - return current_revision - - @classmethod - def get_requirement_revision(cls, location: str) -> str: - """ - Return the changeset identification hash, as a 40-character - hexadecimal string - """ - current_rev_hash = cls.run_command( - ["parents", "--template={node}"], - show_stdout=False, - stdout_only=True, - cwd=location, - ).strip() - return current_rev_hash - - @classmethod - def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: - """Always assume the versions don't match""" - return False - - @classmethod - def get_subdirectory(cls, location: str) -> Optional[str]: - """ - Return the path to Python project root, relative to the repo root. - Return None if the project root is in the repo root. - """ - # find the repo root - repo_root = cls.run_command( - ["root"], show_stdout=False, stdout_only=True, cwd=location - ).strip() - if not os.path.isabs(repo_root): - repo_root = os.path.abspath(os.path.join(location, repo_root)) - return find_path_to_project_root_from_repo_root(location, repo_root) - - @classmethod - def get_repository_root(cls, location: str) -> Optional[str]: - loc = super().get_repository_root(location) - if loc: - return loc - try: - r = cls.run_command( - ["root"], - cwd=location, - show_stdout=False, - stdout_only=True, - on_returncode="raise", - log_failed_cmd=False, - ) - except BadCommand: - logger.debug( - "could not determine if %s is under hg control " - "because hg is not available", - location, - ) - return None - except InstallationError: - return None - return os.path.normpath(r.rstrip("\r\n")) - - -vcs.register(Mercurial) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py deleted file mode 100644 index 16d93a6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py +++ /dev/null @@ -1,324 +0,0 @@ -import logging -import os -import re -from typing import List, Optional, Tuple - -from pip._internal.utils.misc import ( - HiddenText, - display_path, - is_console_interactive, - is_installable_dir, - split_auth_from_netloc, -) -from pip._internal.utils.subprocess import CommandArgs, make_command -from pip._internal.vcs.versioncontrol import ( - AuthInfo, - RemoteNotFoundError, - RevOptions, - VersionControl, - vcs, -) - -logger = logging.getLogger(__name__) - -_svn_xml_url_re = re.compile('url="([^"]+)"') -_svn_rev_re = re.compile(r'committed-rev="(\d+)"') -_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') -_svn_info_xml_url_re = re.compile(r"(.*)") - - -class Subversion(VersionControl): - name = "svn" - dirname = ".svn" - repo_name = "checkout" - schemes = ("svn+ssh", "svn+http", "svn+https", "svn+svn", "svn+file") - - @classmethod - def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: - return True - - @staticmethod - def get_base_rev_args(rev: str) -> List[str]: - return ["-r", rev] - - @classmethod - def get_revision(cls, location: str) -> str: - """ - Return the maximum revision for all files under a given location - """ - # Note: taken from setuptools.command.egg_info - revision = 0 - - for base, dirs, _ in os.walk(location): - if cls.dirname not in dirs: - dirs[:] = [] - continue # no sense walking uncontrolled subdirs - dirs.remove(cls.dirname) - entries_fn = os.path.join(base, cls.dirname, "entries") - if not os.path.exists(entries_fn): - # FIXME: should we warn? - continue - - dirurl, localrev = cls._get_svn_url_rev(base) - - if base == location: - assert dirurl is not None - base = dirurl + "/" # save the root url - elif not dirurl or not dirurl.startswith(base): - dirs[:] = [] - continue # not part of the same svn tree, skip it - revision = max(revision, localrev) - return str(revision) - - @classmethod - def get_netloc_and_auth( - cls, netloc: str, scheme: str - ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: - """ - This override allows the auth information to be passed to svn via the - --username and --password options instead of via the URL. - """ - if scheme == "ssh": - # The --username and --password options can't be used for - # svn+ssh URLs, so keep the auth information in the URL. - return super().get_netloc_and_auth(netloc, scheme) - - return split_auth_from_netloc(netloc) - - @classmethod - def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: - # hotfix the URL scheme after removing svn+ from svn+ssh:// re-add it - url, rev, user_pass = super().get_url_rev_and_auth(url) - if url.startswith("ssh://"): - url = "svn+" + url - return url, rev, user_pass - - @staticmethod - def make_rev_args( - username: Optional[str], password: Optional[HiddenText] - ) -> CommandArgs: - extra_args: CommandArgs = [] - if username: - extra_args += ["--username", username] - if password: - extra_args += ["--password", password] - - return extra_args - - @classmethod - def get_remote_url(cls, location: str) -> str: - # In cases where the source is in a subdirectory, we have to look up in - # the location until we find a valid project root. - orig_location = location - while not is_installable_dir(location): - last_location = location - location = os.path.dirname(location) - if location == last_location: - # We've traversed up to the root of the filesystem without - # finding a Python project. - logger.warning( - "Could not find Python project for directory %s (tried all " - "parent directories)", - orig_location, - ) - raise RemoteNotFoundError - - url, _rev = cls._get_svn_url_rev(location) - if url is None: - raise RemoteNotFoundError - - return url - - @classmethod - def _get_svn_url_rev(cls, location: str) -> Tuple[Optional[str], int]: - from pip._internal.exceptions import InstallationError - - entries_path = os.path.join(location, cls.dirname, "entries") - if os.path.exists(entries_path): - with open(entries_path) as f: - data = f.read() - else: # subversion >= 1.7 does not have the 'entries' file - data = "" - - url = None - if data.startswith("8") or data.startswith("9") or data.startswith("10"): - entries = list(map(str.splitlines, data.split("\n\x0c\n"))) - del entries[0][0] # get rid of the '8' - url = entries[0][3] - revs = [int(d[9]) for d in entries if len(d) > 9 and d[9]] + [0] - elif data.startswith("= 1.7 - # Note that using get_remote_call_options is not necessary here - # because `svn info` is being run against a local directory. - # We don't need to worry about making sure interactive mode - # is being used to prompt for passwords, because passwords - # are only potentially needed for remote server requests. - xml = cls.run_command( - ["info", "--xml", location], - show_stdout=False, - stdout_only=True, - ) - match = _svn_info_xml_url_re.search(xml) - assert match is not None - url = match.group(1) - revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)] - except InstallationError: - url, revs = None, [] - - if revs: - rev = max(revs) - else: - rev = 0 - - return url, rev - - @classmethod - def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: - """Always assume the versions don't match""" - return False - - def __init__(self, use_interactive: Optional[bool] = None) -> None: - if use_interactive is None: - use_interactive = is_console_interactive() - self.use_interactive = use_interactive - - # This member is used to cache the fetched version of the current - # ``svn`` client. - # Special value definitions: - # None: Not evaluated yet. - # Empty tuple: Could not parse version. - self._vcs_version: Optional[Tuple[int, ...]] = None - - super().__init__() - - def call_vcs_version(self) -> Tuple[int, ...]: - """Query the version of the currently installed Subversion client. - - :return: A tuple containing the parts of the version information or - ``()`` if the version returned from ``svn`` could not be parsed. - :raises: BadCommand: If ``svn`` is not installed. - """ - # Example versions: - # svn, version 1.10.3 (r1842928) - # compiled Feb 25 2019, 14:20:39 on x86_64-apple-darwin17.0.0 - # svn, version 1.7.14 (r1542130) - # compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu - # svn, version 1.12.0-SlikSvn (SlikSvn/1.12.0) - # compiled May 28 2019, 13:44:56 on x86_64-microsoft-windows6.2 - version_prefix = "svn, version " - version = self.run_command(["--version"], show_stdout=False, stdout_only=True) - if not version.startswith(version_prefix): - return () - - version = version[len(version_prefix) :].split()[0] - version_list = version.partition("-")[0].split(".") - try: - parsed_version = tuple(map(int, version_list)) - except ValueError: - return () - - return parsed_version - - def get_vcs_version(self) -> Tuple[int, ...]: - """Return the version of the currently installed Subversion client. - - If the version of the Subversion client has already been queried, - a cached value will be used. - - :return: A tuple containing the parts of the version information or - ``()`` if the version returned from ``svn`` could not be parsed. - :raises: BadCommand: If ``svn`` is not installed. - """ - if self._vcs_version is not None: - # Use cached version, if available. - # If parsing the version failed previously (empty tuple), - # do not attempt to parse it again. - return self._vcs_version - - vcs_version = self.call_vcs_version() - self._vcs_version = vcs_version - return vcs_version - - def get_remote_call_options(self) -> CommandArgs: - """Return options to be used on calls to Subversion that contact the server. - - These options are applicable for the following ``svn`` subcommands used - in this class. - - - checkout - - switch - - update - - :return: A list of command line arguments to pass to ``svn``. - """ - if not self.use_interactive: - # --non-interactive switch is available since Subversion 0.14.4. - # Subversion < 1.8 runs in interactive mode by default. - return ["--non-interactive"] - - svn_version = self.get_vcs_version() - # By default, Subversion >= 1.8 runs in non-interactive mode if - # stdin is not a TTY. Since that is how pip invokes SVN, in - # call_subprocess(), pip must pass --force-interactive to ensure - # the user can be prompted for a password, if required. - # SVN added the --force-interactive option in SVN 1.8. Since - # e.g. RHEL/CentOS 7, which is supported until 2024, ships with - # SVN 1.7, pip should continue to support SVN 1.7. Therefore, pip - # can't safely add the option if the SVN version is < 1.8 (or unknown). - if svn_version >= (1, 8): - return ["--force-interactive"] - - return [] - - def fetch_new( - self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int - ) -> None: - rev_display = rev_options.to_display() - logger.info( - "Checking out %s%s to %s", - url, - rev_display, - display_path(dest), - ) - if verbosity <= 0: - flag = "--quiet" - else: - flag = "" - cmd_args = make_command( - "checkout", - flag, - self.get_remote_call_options(), - rev_options.to_args(), - url, - dest, - ) - self.run_command(cmd_args) - - def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - cmd_args = make_command( - "switch", - self.get_remote_call_options(), - rev_options.to_args(), - url, - dest, - ) - self.run_command(cmd_args) - - def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - cmd_args = make_command( - "update", - self.get_remote_call_options(), - rev_options.to_args(), - dest, - ) - self.run_command(cmd_args) - - -vcs.register(Subversion) diff --git a/venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py b/venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py deleted file mode 100644 index 46ca279..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py +++ /dev/null @@ -1,705 +0,0 @@ -"""Handles all VCS (version control) support""" - -import logging -import os -import shutil -import sys -import urllib.parse -from typing import ( - TYPE_CHECKING, - Any, - Dict, - Iterable, - Iterator, - List, - Mapping, - Optional, - Tuple, - Type, - Union, -) - -from pip._internal.cli.spinners import SpinnerInterface -from pip._internal.exceptions import BadCommand, InstallationError -from pip._internal.utils.misc import ( - HiddenText, - ask_path_exists, - backup_dir, - display_path, - hide_url, - hide_value, - is_installable_dir, - rmtree, -) -from pip._internal.utils.subprocess import ( - CommandArgs, - call_subprocess, - format_command_args, - make_command, -) -from pip._internal.utils.urls import get_url_scheme - -if TYPE_CHECKING: - # Literal was introduced in Python 3.8. - # - # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. - from typing import Literal - - -__all__ = ["vcs"] - - -logger = logging.getLogger(__name__) - -AuthInfo = Tuple[Optional[str], Optional[str]] - - -def is_url(name: str) -> bool: - """ - Return true if the name looks like a URL. - """ - scheme = get_url_scheme(name) - if scheme is None: - return False - return scheme in ["http", "https", "file", "ftp"] + vcs.all_schemes - - -def make_vcs_requirement_url( - repo_url: str, rev: str, project_name: str, subdir: Optional[str] = None -) -> str: - """ - Return the URL for a VCS requirement. - - Args: - repo_url: the remote VCS url, with any needed VCS prefix (e.g. "git+"). - project_name: the (unescaped) project name. - """ - egg_project_name = project_name.replace("-", "_") - req = f"{repo_url}@{rev}#egg={egg_project_name}" - if subdir: - req += f"&subdirectory={subdir}" - - return req - - -def find_path_to_project_root_from_repo_root( - location: str, repo_root: str -) -> Optional[str]: - """ - Find the the Python project's root by searching up the filesystem from - `location`. Return the path to project root relative to `repo_root`. - Return None if the project root is `repo_root`, or cannot be found. - """ - # find project root. - orig_location = location - while not is_installable_dir(location): - last_location = location - location = os.path.dirname(location) - if location == last_location: - # We've traversed up to the root of the filesystem without - # finding a Python project. - logger.warning( - "Could not find a Python project for directory %s (tried all " - "parent directories)", - orig_location, - ) - return None - - if os.path.samefile(repo_root, location): - return None - - return os.path.relpath(location, repo_root) - - -class RemoteNotFoundError(Exception): - pass - - -class RemoteNotValidError(Exception): - def __init__(self, url: str): - super().__init__(url) - self.url = url - - -class RevOptions: - - """ - Encapsulates a VCS-specific revision to install, along with any VCS - install options. - - Instances of this class should be treated as if immutable. - """ - - def __init__( - self, - vc_class: Type["VersionControl"], - rev: Optional[str] = None, - extra_args: Optional[CommandArgs] = None, - ) -> None: - """ - Args: - vc_class: a VersionControl subclass. - rev: the name of the revision to install. - extra_args: a list of extra options. - """ - if extra_args is None: - extra_args = [] - - self.extra_args = extra_args - self.rev = rev - self.vc_class = vc_class - self.branch_name: Optional[str] = None - - def __repr__(self) -> str: - return f"" - - @property - def arg_rev(self) -> Optional[str]: - if self.rev is None: - return self.vc_class.default_arg_rev - - return self.rev - - def to_args(self) -> CommandArgs: - """ - Return the VCS-specific command arguments. - """ - args: CommandArgs = [] - rev = self.arg_rev - if rev is not None: - args += self.vc_class.get_base_rev_args(rev) - args += self.extra_args - - return args - - def to_display(self) -> str: - if not self.rev: - return "" - - return f" (to revision {self.rev})" - - def make_new(self, rev: str) -> "RevOptions": - """ - Make a copy of the current instance, but with a new rev. - - Args: - rev: the name of the revision for the new object. - """ - return self.vc_class.make_rev_options(rev, extra_args=self.extra_args) - - -class VcsSupport: - _registry: Dict[str, "VersionControl"] = {} - schemes = ["ssh", "git", "hg", "bzr", "sftp", "svn"] - - def __init__(self) -> None: - # Register more schemes with urlparse for various version control - # systems - urllib.parse.uses_netloc.extend(self.schemes) - super().__init__() - - def __iter__(self) -> Iterator[str]: - return self._registry.__iter__() - - @property - def backends(self) -> List["VersionControl"]: - return list(self._registry.values()) - - @property - def dirnames(self) -> List[str]: - return [backend.dirname for backend in self.backends] - - @property - def all_schemes(self) -> List[str]: - schemes: List[str] = [] - for backend in self.backends: - schemes.extend(backend.schemes) - return schemes - - def register(self, cls: Type["VersionControl"]) -> None: - if not hasattr(cls, "name"): - logger.warning("Cannot register VCS %s", cls.__name__) - return - if cls.name not in self._registry: - self._registry[cls.name] = cls() - logger.debug("Registered VCS backend: %s", cls.name) - - def unregister(self, name: str) -> None: - if name in self._registry: - del self._registry[name] - - def get_backend_for_dir(self, location: str) -> Optional["VersionControl"]: - """ - Return a VersionControl object if a repository of that type is found - at the given directory. - """ - vcs_backends = {} - for vcs_backend in self._registry.values(): - repo_path = vcs_backend.get_repository_root(location) - if not repo_path: - continue - logger.debug("Determine that %s uses VCS: %s", location, vcs_backend.name) - vcs_backends[repo_path] = vcs_backend - - if not vcs_backends: - return None - - # Choose the VCS in the inner-most directory. Since all repository - # roots found here would be either `location` or one of its - # parents, the longest path should have the most path components, - # i.e. the backend representing the inner-most repository. - inner_most_repo_path = max(vcs_backends, key=len) - return vcs_backends[inner_most_repo_path] - - def get_backend_for_scheme(self, scheme: str) -> Optional["VersionControl"]: - """ - Return a VersionControl object or None. - """ - for vcs_backend in self._registry.values(): - if scheme in vcs_backend.schemes: - return vcs_backend - return None - - def get_backend(self, name: str) -> Optional["VersionControl"]: - """ - Return a VersionControl object or None. - """ - name = name.lower() - return self._registry.get(name) - - -vcs = VcsSupport() - - -class VersionControl: - name = "" - dirname = "" - repo_name = "" - # List of supported schemes for this Version Control - schemes: Tuple[str, ...] = () - # Iterable of environment variable names to pass to call_subprocess(). - unset_environ: Tuple[str, ...] = () - default_arg_rev: Optional[str] = None - - @classmethod - def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: - """ - Return whether the vcs prefix (e.g. "git+") should be added to a - repository's remote url when used in a requirement. - """ - return not remote_url.lower().startswith(f"{cls.name}:") - - @classmethod - def get_subdirectory(cls, location: str) -> Optional[str]: - """ - Return the path to Python project root, relative to the repo root. - Return None if the project root is in the repo root. - """ - return None - - @classmethod - def get_requirement_revision(cls, repo_dir: str) -> str: - """ - Return the revision string that should be used in a requirement. - """ - return cls.get_revision(repo_dir) - - @classmethod - def get_src_requirement(cls, repo_dir: str, project_name: str) -> str: - """ - Return the requirement string to use to redownload the files - currently at the given repository directory. - - Args: - project_name: the (unescaped) project name. - - The return value has a form similar to the following: - - {repository_url}@{revision}#egg={project_name} - """ - repo_url = cls.get_remote_url(repo_dir) - - if cls.should_add_vcs_url_prefix(repo_url): - repo_url = f"{cls.name}+{repo_url}" - - revision = cls.get_requirement_revision(repo_dir) - subdir = cls.get_subdirectory(repo_dir) - req = make_vcs_requirement_url(repo_url, revision, project_name, subdir=subdir) - - return req - - @staticmethod - def get_base_rev_args(rev: str) -> List[str]: - """ - Return the base revision arguments for a vcs command. - - Args: - rev: the name of a revision to install. Cannot be None. - """ - raise NotImplementedError - - def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: - """ - Return true if the commit hash checked out at dest matches - the revision in url. - - Always return False, if the VCS does not support immutable commit - hashes. - - This method does not check if there are local uncommitted changes - in dest after checkout, as pip currently has no use case for that. - """ - return False - - @classmethod - def make_rev_options( - cls, rev: Optional[str] = None, extra_args: Optional[CommandArgs] = None - ) -> RevOptions: - """ - Return a RevOptions object. - - Args: - rev: the name of a revision to install. - extra_args: a list of extra options. - """ - return RevOptions(cls, rev, extra_args=extra_args) - - @classmethod - def _is_local_repository(cls, repo: str) -> bool: - """ - posix absolute paths start with os.path.sep, - win32 ones start with drive (like c:\\folder) - """ - drive, tail = os.path.splitdrive(repo) - return repo.startswith(os.path.sep) or bool(drive) - - @classmethod - def get_netloc_and_auth( - cls, netloc: str, scheme: str - ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: - """ - Parse the repository URL's netloc, and return the new netloc to use - along with auth information. - - Args: - netloc: the original repository URL netloc. - scheme: the repository URL's scheme without the vcs prefix. - - This is mainly for the Subversion class to override, so that auth - information can be provided via the --username and --password options - instead of through the URL. For other subclasses like Git without - such an option, auth information must stay in the URL. - - Returns: (netloc, (username, password)). - """ - return netloc, (None, None) - - @classmethod - def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: - """ - Parse the repository URL to use, and return the URL, revision, - and auth info to use. - - Returns: (url, rev, (username, password)). - """ - scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) - if "+" not in scheme: - raise ValueError( - f"Sorry, {url!r} is a malformed VCS url. " - "The format is +://, " - "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp" - ) - # Remove the vcs prefix. - scheme = scheme.split("+", 1)[1] - netloc, user_pass = cls.get_netloc_and_auth(netloc, scheme) - rev = None - if "@" in path: - path, rev = path.rsplit("@", 1) - if not rev: - raise InstallationError( - f"The URL {url!r} has an empty revision (after @) " - "which is not supported. Include a revision after @ " - "or remove @ from the URL." - ) - url = urllib.parse.urlunsplit((scheme, netloc, path, query, "")) - return url, rev, user_pass - - @staticmethod - def make_rev_args( - username: Optional[str], password: Optional[HiddenText] - ) -> CommandArgs: - """ - Return the RevOptions "extra arguments" to use in obtain(). - """ - return [] - - def get_url_rev_options(self, url: HiddenText) -> Tuple[HiddenText, RevOptions]: - """ - Return the URL and RevOptions object to use in obtain(), - as a tuple (url, rev_options). - """ - secret_url, rev, user_pass = self.get_url_rev_and_auth(url.secret) - username, secret_password = user_pass - password: Optional[HiddenText] = None - if secret_password is not None: - password = hide_value(secret_password) - extra_args = self.make_rev_args(username, password) - rev_options = self.make_rev_options(rev, extra_args=extra_args) - - return hide_url(secret_url), rev_options - - @staticmethod - def normalize_url(url: str) -> str: - """ - Normalize a URL for comparison by unquoting it and removing any - trailing slash. - """ - return urllib.parse.unquote(url).rstrip("/") - - @classmethod - def compare_urls(cls, url1: str, url2: str) -> bool: - """ - Compare two repo URLs for identity, ignoring incidental differences. - """ - return cls.normalize_url(url1) == cls.normalize_url(url2) - - def fetch_new( - self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int - ) -> None: - """ - Fetch a revision from a repository, in the case that this is the - first fetch from the repository. - - Args: - dest: the directory to fetch the repository to. - rev_options: a RevOptions object. - verbosity: verbosity level. - """ - raise NotImplementedError - - def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - """ - Switch the repo at ``dest`` to point to ``URL``. - - Args: - rev_options: a RevOptions object. - """ - raise NotImplementedError - - def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: - """ - Update an already-existing repo to the given ``rev_options``. - - Args: - rev_options: a RevOptions object. - """ - raise NotImplementedError - - @classmethod - def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: - """ - Return whether the id of the current commit equals the given name. - - Args: - dest: the repository directory. - name: a string name. - """ - raise NotImplementedError - - def obtain(self, dest: str, url: HiddenText, verbosity: int) -> None: - """ - Install or update in editable mode the package represented by this - VersionControl object. - - :param dest: the repository directory in which to install or update. - :param url: the repository URL starting with a vcs prefix. - :param verbosity: verbosity level. - """ - url, rev_options = self.get_url_rev_options(url) - - if not os.path.exists(dest): - self.fetch_new(dest, url, rev_options, verbosity=verbosity) - return - - rev_display = rev_options.to_display() - if self.is_repository_directory(dest): - existing_url = self.get_remote_url(dest) - if self.compare_urls(existing_url, url.secret): - logger.debug( - "%s in %s exists, and has correct URL (%s)", - self.repo_name.title(), - display_path(dest), - url, - ) - if not self.is_commit_id_equal(dest, rev_options.rev): - logger.info( - "Updating %s %s%s", - display_path(dest), - self.repo_name, - rev_display, - ) - self.update(dest, url, rev_options) - else: - logger.info("Skipping because already up-to-date.") - return - - logger.warning( - "%s %s in %s exists with URL %s", - self.name, - self.repo_name, - display_path(dest), - existing_url, - ) - prompt = ("(s)witch, (i)gnore, (w)ipe, (b)ackup ", ("s", "i", "w", "b")) - else: - logger.warning( - "Directory %s already exists, and is not a %s %s.", - dest, - self.name, - self.repo_name, - ) - # https://github.com/python/mypy/issues/1174 - prompt = ("(i)gnore, (w)ipe, (b)ackup ", ("i", "w", "b")) # type: ignore - - logger.warning( - "The plan is to install the %s repository %s", - self.name, - url, - ) - response = ask_path_exists(f"What to do? {prompt[0]}", prompt[1]) - - if response == "a": - sys.exit(-1) - - if response == "w": - logger.warning("Deleting %s", display_path(dest)) - rmtree(dest) - self.fetch_new(dest, url, rev_options, verbosity=verbosity) - return - - if response == "b": - dest_dir = backup_dir(dest) - logger.warning("Backing up %s to %s", display_path(dest), dest_dir) - shutil.move(dest, dest_dir) - self.fetch_new(dest, url, rev_options, verbosity=verbosity) - return - - # Do nothing if the response is "i". - if response == "s": - logger.info( - "Switching %s %s to %s%s", - self.repo_name, - display_path(dest), - url, - rev_display, - ) - self.switch(dest, url, rev_options) - - def unpack(self, location: str, url: HiddenText, verbosity: int) -> None: - """ - Clean up current location and download the url repository - (and vcs infos) into location - - :param url: the repository URL starting with a vcs prefix. - :param verbosity: verbosity level. - """ - if os.path.exists(location): - rmtree(location) - self.obtain(location, url=url, verbosity=verbosity) - - @classmethod - def get_remote_url(cls, location: str) -> str: - """ - Return the url used at location - - Raises RemoteNotFoundError if the repository does not have a remote - url configured. - """ - raise NotImplementedError - - @classmethod - def get_revision(cls, location: str) -> str: - """ - Return the current commit id of the files at the given location. - """ - raise NotImplementedError - - @classmethod - def run_command( - cls, - cmd: Union[List[str], CommandArgs], - show_stdout: bool = True, - cwd: Optional[str] = None, - on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", - extra_ok_returncodes: Optional[Iterable[int]] = None, - command_desc: Optional[str] = None, - extra_environ: Optional[Mapping[str, Any]] = None, - spinner: Optional[SpinnerInterface] = None, - log_failed_cmd: bool = True, - stdout_only: bool = False, - ) -> str: - """ - Run a VCS subcommand - This is simply a wrapper around call_subprocess that adds the VCS - command name, and checks that the VCS is available - """ - cmd = make_command(cls.name, *cmd) - if command_desc is None: - command_desc = format_command_args(cmd) - try: - return call_subprocess( - cmd, - show_stdout, - cwd, - on_returncode=on_returncode, - extra_ok_returncodes=extra_ok_returncodes, - command_desc=command_desc, - extra_environ=extra_environ, - unset_environ=cls.unset_environ, - spinner=spinner, - log_failed_cmd=log_failed_cmd, - stdout_only=stdout_only, - ) - except FileNotFoundError: - # errno.ENOENT = no such file or directory - # In other words, the VCS executable isn't available - raise BadCommand( - f"Cannot find command {cls.name!r} - do you have " - f"{cls.name!r} installed and in your PATH?" - ) - except PermissionError: - # errno.EACCES = Permission denied - # This error occurs, for instance, when the command is installed - # only for another user. So, the current user don't have - # permission to call the other user command. - raise BadCommand( - f"No permission to execute {cls.name!r} - install it " - f"locally, globally (ask admin), or check your PATH. " - f"See possible solutions at " - f"https://pip.pypa.io/en/latest/reference/pip_freeze/" - f"#fixing-permission-denied." - ) - - @classmethod - def is_repository_directory(cls, path: str) -> bool: - """ - Return whether a directory path is a repository directory. - """ - logger.debug("Checking in %s for %s (%s)...", path, cls.dirname, cls.name) - return os.path.exists(os.path.join(path, cls.dirname)) - - @classmethod - def get_repository_root(cls, location: str) -> Optional[str]: - """ - Return the "root" (top-level) directory controlled by the vcs, - or `None` if the directory is not in any. - - It is meant to be overridden to implement smarter detection - mechanisms for specific vcs. - - This can do more than is_repository_directory() alone. For - example, the Git override checks that Git is actually available. - """ - if cls.is_repository_directory(location): - return location - return None diff --git a/venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py b/venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py deleted file mode 100644 index b1debe3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py +++ /dev/null @@ -1,354 +0,0 @@ -"""Orchestrator for building wheels from InstallRequirements. -""" - -import logging -import os.path -import re -import shutil -from typing import Iterable, List, Optional, Tuple - -from pip._vendor.packaging.utils import canonicalize_name, canonicalize_version -from pip._vendor.packaging.version import InvalidVersion, Version - -from pip._internal.cache import WheelCache -from pip._internal.exceptions import InvalidWheelFilename, UnsupportedWheel -from pip._internal.metadata import FilesystemWheel, get_wheel_distribution -from pip._internal.models.link import Link -from pip._internal.models.wheel import Wheel -from pip._internal.operations.build.wheel import build_wheel_pep517 -from pip._internal.operations.build.wheel_editable import build_wheel_editable -from pip._internal.operations.build.wheel_legacy import build_wheel_legacy -from pip._internal.req.req_install import InstallRequirement -from pip._internal.utils.logging import indent_log -from pip._internal.utils.misc import ensure_dir, hash_file -from pip._internal.utils.setuptools_build import make_setuptools_clean_args -from pip._internal.utils.subprocess import call_subprocess -from pip._internal.utils.temp_dir import TempDirectory -from pip._internal.utils.urls import path_to_url -from pip._internal.vcs import vcs - -logger = logging.getLogger(__name__) - -_egg_info_re = re.compile(r"([a-z0-9_.]+)-([a-z0-9_.!+-]+)", re.IGNORECASE) - -BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] - - -def _contains_egg_info(s: str) -> bool: - """Determine whether the string looks like an egg_info. - - :param s: The string to parse. E.g. foo-2.1 - """ - return bool(_egg_info_re.search(s)) - - -def _should_build( - req: InstallRequirement, - need_wheel: bool, -) -> bool: - """Return whether an InstallRequirement should be built into a wheel.""" - if req.constraint: - # never build requirements that are merely constraints - return False - if req.is_wheel: - if need_wheel: - logger.info( - "Skipping %s, due to already being wheel.", - req.name, - ) - return False - - if need_wheel: - # i.e. pip wheel, not pip install - return True - - # From this point, this concerns the pip install command only - # (need_wheel=False). - - if not req.source_dir: - return False - - if req.editable: - # we only build PEP 660 editable requirements - return req.supports_pyproject_editable() - - return True - - -def should_build_for_wheel_command( - req: InstallRequirement, -) -> bool: - return _should_build(req, need_wheel=True) - - -def should_build_for_install_command( - req: InstallRequirement, -) -> bool: - return _should_build(req, need_wheel=False) - - -def _should_cache( - req: InstallRequirement, -) -> Optional[bool]: - """ - Return whether a built InstallRequirement can be stored in the persistent - wheel cache, assuming the wheel cache is available, and _should_build() - has determined a wheel needs to be built. - """ - if req.editable or not req.source_dir: - # never cache editable requirements - return False - - if req.link and req.link.is_vcs: - # VCS checkout. Do not cache - # unless it points to an immutable commit hash. - assert not req.editable - assert req.source_dir - vcs_backend = vcs.get_backend_for_scheme(req.link.scheme) - assert vcs_backend - if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir): - return True - return False - - assert req.link - base, ext = req.link.splitext() - if _contains_egg_info(base): - return True - - # Otherwise, do not cache. - return False - - -def _get_cache_dir( - req: InstallRequirement, - wheel_cache: WheelCache, -) -> str: - """Return the persistent or temporary cache directory where the built - wheel need to be stored. - """ - cache_available = bool(wheel_cache.cache_dir) - assert req.link - if cache_available and _should_cache(req): - cache_dir = wheel_cache.get_path_for_link(req.link) - else: - cache_dir = wheel_cache.get_ephem_path_for_link(req.link) - return cache_dir - - -def _verify_one(req: InstallRequirement, wheel_path: str) -> None: - canonical_name = canonicalize_name(req.name or "") - w = Wheel(os.path.basename(wheel_path)) - if canonicalize_name(w.name) != canonical_name: - raise InvalidWheelFilename( - f"Wheel has unexpected file name: expected {canonical_name!r}, " - f"got {w.name!r}", - ) - dist = get_wheel_distribution(FilesystemWheel(wheel_path), canonical_name) - dist_verstr = str(dist.version) - if canonicalize_version(dist_verstr) != canonicalize_version(w.version): - raise InvalidWheelFilename( - f"Wheel has unexpected file name: expected {dist_verstr!r}, " - f"got {w.version!r}", - ) - metadata_version_value = dist.metadata_version - if metadata_version_value is None: - raise UnsupportedWheel("Missing Metadata-Version") - try: - metadata_version = Version(metadata_version_value) - except InvalidVersion: - msg = f"Invalid Metadata-Version: {metadata_version_value}" - raise UnsupportedWheel(msg) - if metadata_version >= Version("1.2") and not isinstance(dist.version, Version): - raise UnsupportedWheel( - f"Metadata 1.2 mandates PEP 440 version, but {dist_verstr!r} is not" - ) - - -def _build_one( - req: InstallRequirement, - output_dir: str, - verify: bool, - build_options: List[str], - global_options: List[str], - editable: bool, -) -> Optional[str]: - """Build one wheel. - - :return: The filename of the built wheel, or None if the build failed. - """ - artifact = "editable" if editable else "wheel" - try: - ensure_dir(output_dir) - except OSError as e: - logger.warning( - "Building %s for %s failed: %s", - artifact, - req.name, - e, - ) - return None - - # Install build deps into temporary directory (PEP 518) - with req.build_env: - wheel_path = _build_one_inside_env( - req, output_dir, build_options, global_options, editable - ) - if wheel_path and verify: - try: - _verify_one(req, wheel_path) - except (InvalidWheelFilename, UnsupportedWheel) as e: - logger.warning("Built %s for %s is invalid: %s", artifact, req.name, e) - return None - return wheel_path - - -def _build_one_inside_env( - req: InstallRequirement, - output_dir: str, - build_options: List[str], - global_options: List[str], - editable: bool, -) -> Optional[str]: - with TempDirectory(kind="wheel") as temp_dir: - assert req.name - if req.use_pep517: - assert req.metadata_directory - assert req.pep517_backend - if global_options: - logger.warning( - "Ignoring --global-option when building %s using PEP 517", req.name - ) - if build_options: - logger.warning( - "Ignoring --build-option when building %s using PEP 517", req.name - ) - if editable: - wheel_path = build_wheel_editable( - name=req.name, - backend=req.pep517_backend, - metadata_directory=req.metadata_directory, - tempd=temp_dir.path, - ) - else: - wheel_path = build_wheel_pep517( - name=req.name, - backend=req.pep517_backend, - metadata_directory=req.metadata_directory, - tempd=temp_dir.path, - ) - else: - wheel_path = build_wheel_legacy( - name=req.name, - setup_py_path=req.setup_py_path, - source_dir=req.unpacked_source_directory, - global_options=global_options, - build_options=build_options, - tempd=temp_dir.path, - ) - - if wheel_path is not None: - wheel_name = os.path.basename(wheel_path) - dest_path = os.path.join(output_dir, wheel_name) - try: - wheel_hash, length = hash_file(wheel_path) - shutil.move(wheel_path, dest_path) - logger.info( - "Created wheel for %s: filename=%s size=%d sha256=%s", - req.name, - wheel_name, - length, - wheel_hash.hexdigest(), - ) - logger.info("Stored in directory: %s", output_dir) - return dest_path - except Exception as e: - logger.warning( - "Building wheel for %s failed: %s", - req.name, - e, - ) - # Ignore return, we can't do anything else useful. - if not req.use_pep517: - _clean_one_legacy(req, global_options) - return None - - -def _clean_one_legacy(req: InstallRequirement, global_options: List[str]) -> bool: - clean_args = make_setuptools_clean_args( - req.setup_py_path, - global_options=global_options, - ) - - logger.info("Running setup.py clean for %s", req.name) - try: - call_subprocess( - clean_args, command_desc="python setup.py clean", cwd=req.source_dir - ) - return True - except Exception: - logger.error("Failed cleaning build dir for %s", req.name) - return False - - -def build( - requirements: Iterable[InstallRequirement], - wheel_cache: WheelCache, - verify: bool, - build_options: List[str], - global_options: List[str], -) -> BuildResult: - """Build wheels. - - :return: The list of InstallRequirement that succeeded to build and - the list of InstallRequirement that failed to build. - """ - if not requirements: - return [], [] - - # Build the wheels. - logger.info( - "Building wheels for collected packages: %s", - ", ".join(req.name for req in requirements), # type: ignore - ) - - with indent_log(): - build_successes, build_failures = [], [] - for req in requirements: - assert req.name - cache_dir = _get_cache_dir(req, wheel_cache) - wheel_file = _build_one( - req, - cache_dir, - verify, - build_options, - global_options, - req.editable and req.permit_editable_wheels, - ) - if wheel_file: - # Record the download origin in the cache - if req.download_info is not None: - # download_info is guaranteed to be set because when we build an - # InstallRequirement it has been through the preparer before, but - # let's be cautious. - wheel_cache.record_download_origin(cache_dir, req.download_info) - # Update the link for this. - req.link = Link(path_to_url(wheel_file)) - req.local_file_path = req.link.file_path - assert req.link.is_wheel - build_successes.append(req) - else: - build_failures.append(req) - - # notify success/failure - if build_successes: - logger.info( - "Successfully built %s", - " ".join([req.name for req in build_successes]), # type: ignore - ) - if build_failures: - logger.info( - "Failed to build %s", - " ".join([req.name for req in build_failures]), # type: ignore - ) - # Return a list of requirements that failed to build - return build_successes, build_failures diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/__init__.py deleted file mode 100644 index c1884ba..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/__init__.py +++ /dev/null @@ -1,121 +0,0 @@ -""" -pip._vendor is for vendoring dependencies of pip to prevent needing pip to -depend on something external. - -Files inside of pip._vendor should be considered immutable and should only be -updated to versions from upstream. -""" -from __future__ import absolute_import - -import glob -import os.path -import sys - -# Downstream redistributors which have debundled our dependencies should also -# patch this value to be true. This will trigger the additional patching -# to cause things like "six" to be available as pip. -DEBUNDLED = False - -# By default, look in this directory for a bunch of .whl files which we will -# add to the beginning of sys.path before attempting to import anything. This -# is done to support downstream re-distributors like Debian and Fedora who -# wish to create their own Wheels for our dependencies to aid in debundling. -WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) - - -# Define a small helper function to alias our vendored modules to the real ones -# if the vendored ones do not exist. This idea of this was taken from -# https://github.com/kennethreitz/requests/pull/2567. -def vendored(modulename): - vendored_name = "{0}.{1}".format(__name__, modulename) - - try: - __import__(modulename, globals(), locals(), level=0) - except ImportError: - # We can just silently allow import failures to pass here. If we - # got to this point it means that ``import pip._vendor.whatever`` - # failed and so did ``import whatever``. Since we're importing this - # upfront in an attempt to alias imports, not erroring here will - # just mean we get a regular import error whenever pip *actually* - # tries to import one of these modules to use it, which actually - # gives us a better error message than we would have otherwise - # gotten. - pass - else: - sys.modules[vendored_name] = sys.modules[modulename] - base, head = vendored_name.rsplit(".", 1) - setattr(sys.modules[base], head, sys.modules[modulename]) - - -# If we're operating in a debundled setup, then we want to go ahead and trigger -# the aliasing of our vendored libraries as well as looking for wheels to add -# to our sys.path. This will cause all of this code to be a no-op typically -# however downstream redistributors can enable it in a consistent way across -# all platforms. -if DEBUNDLED: - # Actually look inside of WHEEL_DIR to find .whl files and add them to the - # front of our sys.path. - sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path - - # Actually alias all of our vendored dependencies. - vendored("cachecontrol") - vendored("certifi") - vendored("colorama") - vendored("distlib") - vendored("distro") - vendored("six") - vendored("six.moves") - vendored("six.moves.urllib") - vendored("six.moves.urllib.parse") - vendored("packaging") - vendored("packaging.version") - vendored("packaging.specifiers") - vendored("pep517") - vendored("pkg_resources") - vendored("platformdirs") - vendored("progress") - vendored("requests") - vendored("requests.exceptions") - vendored("requests.packages") - vendored("requests.packages.urllib3") - vendored("requests.packages.urllib3._collections") - vendored("requests.packages.urllib3.connection") - vendored("requests.packages.urllib3.connectionpool") - vendored("requests.packages.urllib3.contrib") - vendored("requests.packages.urllib3.contrib.ntlmpool") - vendored("requests.packages.urllib3.contrib.pyopenssl") - vendored("requests.packages.urllib3.exceptions") - vendored("requests.packages.urllib3.fields") - vendored("requests.packages.urllib3.filepost") - vendored("requests.packages.urllib3.packages") - vendored("requests.packages.urllib3.packages.ordered_dict") - vendored("requests.packages.urllib3.packages.six") - vendored("requests.packages.urllib3.packages.ssl_match_hostname") - vendored("requests.packages.urllib3.packages.ssl_match_hostname." - "_implementation") - vendored("requests.packages.urllib3.poolmanager") - vendored("requests.packages.urllib3.request") - vendored("requests.packages.urllib3.response") - vendored("requests.packages.urllib3.util") - vendored("requests.packages.urllib3.util.connection") - vendored("requests.packages.urllib3.util.request") - vendored("requests.packages.urllib3.util.response") - vendored("requests.packages.urllib3.util.retry") - vendored("requests.packages.urllib3.util.ssl_") - vendored("requests.packages.urllib3.util.timeout") - vendored("requests.packages.urllib3.util.url") - vendored("resolvelib") - vendored("rich") - vendored("rich.console") - vendored("rich.highlighter") - vendored("rich.logging") - vendored("rich.markup") - vendored("rich.progress") - vendored("rich.segment") - vendored("rich.style") - vendored("rich.text") - vendored("rich.traceback") - vendored("tenacity") - vendored("tomli") - vendored("truststore") - vendored("urllib3") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 7df316ce58f0a2d7df0560c0f72b69e6fab835f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 zcmbuBUvJb#5WxNKd_Lz60)#)IK+S&w#YdV_Xq!?B2`Uoe0aT%$T3L>FbLYhNy1VPZ zndG4geQec_Kpy)g`a!I|^@&eVsZX8tP12}UF0}Q@`&;jf$GbbTGsij|SA*-7{$%;P zBbxS`df0v0@NgGy(K9rSXg!VS#7Oki=oz}|n~B*oYg)ZVO}l3ktJkEB73X!UZe2RD zrElrIHfa$1mDcOf=1)4mM$Ok|Ek8ipq`75m>C|3vj%%tVCNaM^<~7#G5 zc?o$Lc?CIxyo$Vrd=GgY=_9+y8^~GY`^Y)u2gsYq50ST!w~-$qKSq9noJW3&yo3A< zc^COP@*eWOA~B!V_sl~1tDDEUAFR=gFz&^|TLz4t;;ioxnuCO9QA~x$mOW7RB=d4k zK}UKSr9`QXhTW02$1+c_l*)k;(HD~PEKGdYeGn&LCC)@lC>q=OvKX);A>I=8B33JK zO1wBt3mGmY)C)7>p$f~AA?Ue9PC^MvFr78ZMGUWb%bcZNkqgObnELJ;b*5(Y>R`Ae zSW-wD#A(jBeEcBNl?X2j=)ip+Zm|Xp(O+v)U)Q#b4ZUnjV_lQxrY5aTjTprI!P2#7 zTIO1sYz$B7n)-bOr}U}zT$A=nb6uMrQJ>e=_16xuNMpDMgkk1RJ#AB9&jrg{F8>Va)KZWQyK)78{n#--|Q!B zDNICVCoEE&cvvrZk#oi?Qw&AbOc^P_50%YDp2V_h3MxY>`HWS$BbhQ>bw)uzN&TJ5 zS_%cNtN{(l&l;bC+5PcNcK}}Q_KP^;ETU4z-PPNoD+$}NYXY3qh@LT~GK%lLhA zVp2b)^J6evHm>^52T9eA!e~Gtd?aT{)r=^Y@p4=_5la{k)39oiSV)*lWvdQnup#k_ zvIUKwvNbBo$(^oW@B}o=V}Bp<^N_!RoaQ%Y zZ&jUqwI6UQSivLkLpx7Gsk};JP;zq4`XGcJr{5M-NKqcy?)mgZM02S^y*#utxV@9* z^go7h8FS^OJw<*1`;*XUWc9+{da$wCNUgl`Hd;AjNqKgxrsS~2SNB!%GnqgbgSl(_ z>*hlSDNBf?9J7{P`{?a$65N&$QJx#8k9+SZ0q=p6AGCxAaNweIc?_! z6~Q;(!Z2(|0C^)C1Ou3_I^pHwe|pVV*(RYWr2kOGOnGsP8Sq&eW^l~;xJW<)<2Dga zL=I6;%QJg_t&nk2&WxA)yP|l^nNX(u?P*=!$K=l3#snN1lzdp8-^ZNt)Hv7IrevH_ zR*a3iS`X4#<*HnhKpBC|XYn{1lx@|jt$=Y_PS#I@xIakXhH8!Sg!TI>!A;ciG~}yA zUUuq-?IeYog7#HBlx{5)atKyibzegHFAt2mJdEfPWc|vKGz+6x4y%S_X%hEb$qPty zl5tu!N11nS=3vzf0>YwEiCZpY!J*u7_(QB!ma21AlL<)2a!?se@U|LnEiB&q^6|o> z#f8eMB~7UOqYh-(x~@UtT!#N4V72w^i^au9!NS8Qbs4Fw6&7c8Y1`EtRc4*}QDMBJ oim><*8cS<89mCNb-D*tPj%}a3U^=FH{-3|v=D)Gg)~#Ru1a(Z;B>(^b diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc deleted file mode 100644 index 89261611324015c2bc29fe98a5f908d3fff97c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27588 zcmc(Hd7NCwRc_zg>)h#SjkQ`{+ly?CCABu&@*>GvZ7a6MvLtV9JMEsXJENZI>2B5S zku;r|#P&F`oDDmK;3O;(1RjFNgXBFD2q8dNLfDrizzqpY0>MClU_!to*89Fw_ulTF z89B@Q<8}XT-BbIiQ>UsG4YeEpsnJx}2oD{LB@q@2sU=cThQV7IIyES4{P*>@zWyb+4R@7xV43dzG7?i_KY9 z?4ekFAQ5w~o_@-T@gL@TBvwzJq;G&_Jeqe0^z&$8u6E7jwZ&_#Slw3f;J zT%#^hOYy!AH7!%iQPXm%>3aBAsFm=qbgxIvYvEs|E{6YNU_OM98xXQuU4oEHB*i-T zFIAVpf0>l9-d*o*00sqwU#_k|_!aIA$hUDU=B`s$;-6Pn%_Uy2;JaE~qpnqJ)YWrI z@m~l3HR^hGUEp79|({;ldp zbyJY{W+``@x;couMGd(F&s+K$b!**Hx2f9${I(dpXzyQSp^)ZOA=i&hWK*=Xll^*VJ=0Ntzh3Kt%n zNCMYsH4I!$y=&Ed>QIpCesx$K5p33~qv`?mU;sa)9+upXOvI4;MfDJJ7lXJ*)nn@M z0DiqHsV4%stVUENfR%F9XaJ9?W2zd!<7z_H0(er@RU?3#>bTMY?5UQT3g8p!q&gMA z(`s6^1NaT<4G}z}W+Hf2&8jyBY2Kus3|je=dOCpS)H4B8RBw)2^cMAO5PDiYr`{Um zf17%{dPe}iQ++U&?+xJhsrRcN2;d)7Kcs#*fX}G2 z>PG_jN7V<^j|K3LtN#(z^%Lrx`pF>tr_}#cKOMmTOZ`k#@6Wm$)CX6^)Q5t&{|*2D zf&b?M|A*oK$f}regRq}hzo0%Ez`v+IrhX}aKdydR{R-jYCiMB`>Q^W1=WYF>y9xaC z3H57p_L#LThPX}pVvnybZg#i08{N(0Tiwlbam*(-x|`j#bIkD}w{YerceDC+#;%H; z#hm)Qef)ioZbnHPOL&0IZ>++sRJ>VI-mHF;X)y9XseTJ1|F>l1Z^KCcl=^M94AAdH z(CN6;Tc&~Hc3A4bq0MbIBd&~EkNppHL@pif88XCmmcgw&_iXXlc@=TD>X zKZ~G0k03vSJ{LiM5!Lwl2>L<<{bdCGm4U`q7jJQI0i_+G^tKMApN}8E5460+-3D5c z(%V2!@W7m<{#yObS@Z=c`9<|5Q1VMc$ySbOPXPLI1pPg5L)cinc$<4$RMV|J zH9doxZgX!9YPuCQy(BgLgZjsyrhigjK}}zgnr@fb`kzt5zX(sQQ~%lpf3*w#H`E=b zdASSz_b&KrUFrX$3;uc+{GVO$e|5pHbix1K1%IOp{$>~aY8QOI13z!6SdY)@@!37T zc#kj9<4gAVQa!$Ok1x~X>+A73J-+@9t$=5?$2ZX9%k}t{^!NsQ%DgD_6}P+FBc8au zizgDt-wB@B?%p2o#O>||)V`Elf%h^z%ME7$T7d^r0bSvb9qu~7tJH_#UQBMpdv%ZR zk{;isp>Hfv-0AL&@Y&IW&u4+pPIpIu&kn)ovH+jUQNtAxK3Bq*7ku)9&mDrnRc1aM zvx>XiT~Qr(bk&hOok$X*=M(m(%r!vOe$S3 zbE2iz0v>`qwFmDT@T>#8*Udhk)UStceQ_V$4aNO%3&lI(ZYPzw7 zBB{1Ysv9NMO_J(nNwuwbpq+4ESG))E-yr0_d!J8EKVu|7gF$NI`9Xwj$Fl?B!)Wh)#Y6Dz#B&Ei?su;&9yTUYh z@5ZwSu}rxakEFbdT*CJ57uxL?sqipyao4!R2)}aj`8AEvatTleDSbcO9 zZ5dY<>YQ+swZL`>Po8!le$KmRtezb{PBSnuAA)v}?_E}}ZLcKo?NEKUf z-QpD7(c+0Zxq3{(j!9S*VdS`RJRyD)fDL|b(FKlG_-lA3fivUkcp88w-T0Z4ZeskD zJAKv;up?f_$B!ps#p6Ydbj_j%cODj?BI$5EpjHL2CX6>zkD%-}-o$(i@EhK2% z;C%v574R&$C#|n@-{{^v{w9Q-oU@Bh;{9Gcr|@7<6`!hOH=y2!hb6uNAy2wYGsFFt zNYQb#6GYhTL;~gQllV6>zMeuTOMViyJss8al!{{)H0RE#_*4uz*tbvPnM10%?lRRu zNa$(ZaOaB8AfAs&v&MZ2@SCOmvQv$AqfCFsjgP+>&s#=qq}kAG3=u7T=3K^Lyv4@eS%SNU>>s-hD45)eQlRwC;;LunVpu?)aA< zeeu!vGXI(PxrMXn3l%>STl)i6EY`mHfmXFvZB<<_KibgwlNxY+EMI9TH{Uu|Zsqk< z-OD%X`9ssKV|Z=Jm+LCO^(87BhAe+cdBkhfrdn>PI@xUK)^Pj!J#KxxJXu8!x8-UN zdA5%PLA#n#NTH#}cD7TS3!85)YG+B9@`-Zw{Q2{5s=(XxV}@OL zUS1BzjTIrm6m5)V8x)PRWkU(ydbontML)uP_TuqazOsS03JYtTE|s9Gj|Ebfe<7TGfpcw|E=9iY_-nrVY)8@;07u>nAqWsv{ds>$Vm) zZ`$ZpTkeKtxiV26bG?ntYI9==$y7rl=2W3M?Waqnnp-cGcA~DA*`kEi?t8cpgbt$# znNq1iXTcm7T0 zpJx9JdQG=d8r6--Qms)|uC5T5@JE=Bkc|qb8EYn13W(Rv?^e)RG%8b=PFv+x6+PW* zs5Fy=)?${rHF0C zW<>MTvc~P1*ytgs6KGqE$Vv$5HD%OX>t12BzSv9{BS&sgILhHyfDC^mxunTWNL(^ncX z>k$b#8Pivy5VSH=(k`Zu6Rw~3T(D6~3)X&Gxi$LyzEY`zUh>c>x!nk;j$pdkuXRHY zC8U*pyfHHF+pVUbLQzw-*8CQO2gh7A_zBeLk#RCs&a$n+cp{#C)wU9r{c3w@4*?|k z@K91OL23;ZYD`~5=PEku=tOgbfn?BKfrv-(cqurUSjNuAHNzHg0g1_ftF?3IC z&OT$$K>D#_t+-w>6IZb*G-}40jnBj}o)Ze3GlLOiAk#5PKj}?1U9H!n7-_d3KlI2} zKMqz8=x+Kc-l!=*UUyHPv-EXLE0hs>kXm&-9({wLa|VxNId*$_R}(t?#u+;N5sn5s zrydUWacd6qwn5OA0j4)1N;AHzN2Ky=5O$K`SHqcCVZd=cql&cSvloxYJOP8-pdhF> zXM@#2BQU!#I@#JF64$KCPlIQKd#{Br?)8W{p-!Fs9aBL6J*~2W9kH?`hpJCDGan2?^ ztf@C3rM{Jp3`k)+3IjS%N1E2lg>wj(nRyT+zrDN*oyEB?#A`3}u~3Q^WA-fOI@3hp z72Ai!XIqS67?#OlEf{dZ=vlSGqK>dAPCjGctjCkgHXeJyK5m1L1X<48SS9VkCe5MS z)mQ8$-`QTPdaX)hvbpm)_+^z`8f#zQ+ZI&?6BV}C8kKU*+X*1dgQfT)upuUn5;;vK zQ4bOqmkB?~Aa8z+T)J7@v#d_0G;29I(ySGxH$gs0GqgA(Qo7NUL-Z|l7Gpnl<5PG7 z_RHFtL^dUzTR~{gkHeEcj~yPepGqw@ZOU}XWi;*QWB~0B8$DcMQ^Fr%G9Mpr6wZ7G z#EiLS;fy(xlsPm%gSiuP=@pnulXZJ0F`Jx8f>{w8&Zt3(0#YPq$jB0B25-tR@*Sww zFfx||Goz6MhEknH+)rbgj_fQed!lQ8-pY2dNr7DAr_d6}vt0}!Q_(d@ z@&PvkLZn2D9DZQq8amo}M2$Viz8-2`6GU z3v(P-Xi8~jg-$B7LZ_hT>r)PPcxga9rL=H*I-qh$+ZUWJI?9|b_M5XsoStTj1Lj<@ zm^0^z#U&~Ow!Oq(UOG}ebr5UHp>pe(k!fAs{(UEp-|qY*BJxed`baP(N!%ZpgWOf{DxJd)=R?LV}2)0X^bwT``jWH;M_LjFK2 z?;UGQ)l`1O#rAL#l~+eKBRHAoWqi%RXYcbs>Z(Pn*QUJ-Z5G6LmQkM?=XI zF`b?PE}c%dgn&bFGb0isKSB0ifEPJ8sOp!HN{HoP)xx^9II+4iEGkP2u`cdL%`saZ zPIVmwgC1UngkcX0-MH-gsa9Eo1oM&Yle)PB|3n8>BHO-V(SD7RFX&ZDjDjcyvvx}Q z6$Tp*fri+7S<}nR-m7IRh#gewKMiF#^dIf3WFjzQ9NS<_8TCdh&!H7=l|ggzuAjNb zot9mf-*09k@#sT{o8KG~2n55e&lWtna~eW&VG>t3r|uefHbbPe-ClVE5H#YY#iAFIRM-Un(edE8n$l_NHyH3yJk5x^gBLP)vglab;{0z zD$x?_D(J-Y1<}uN*iiNQB_hwRa}t;h7GI*mv=>I6Gqpi}996sE|0mc% z^GESOMZ0AvcFnx~Psk&aJcP2V7bRy;@&!n7KQ9zztD>QBKCcR?x%B<&VzKMKZGbx&|8M%J0!2yn9>;66^6QWI!Fpc z0&7YG=kSP-orxvvOgfXuB%HXD%p^0ZOfJ)xNQo|pDOpy}kA&HU$0Ls2awhiB3B^Gg zhX^2hm;)_$(raH%tze#Go{|*=D%sVA!)p#oK(Ku@QT#70G<-H3xE;7 z48C4==CpRlNT%jAw69~(wT?`d#_CgkVhm85-U7WDhS%XhYmabx3*sFpsj11y z=@JAm7evZ-`-0kE;s}BIKS+{0)@n5|w>2iJ?syr@V?fZmEm4I|RJJRr=co2cp0DA$&VLJ$EDQLI&w z&rj1s>?E`hgf4L>%hg(GvWjz=k+SEua}rQEc;MjvJ@lId1tuskfj`)l16({7C1I8W z5@3>;Jd(s;-j!(*3hgQ|Y_*ql>N*$&nxrOkl+<6J(!#m}0s! z_}wjTxu;s)Ej~(rcZ-?8&yf&!A3b{Lh^w*h3kV3Vg~uP*d)I+ZoIiL(md37-bmdUB zGEu`gZJIZRlso16$@}G%)^1aCkR}NDS+7xdP7m1vQ3g3O#B1!#Z2lQ-1tt^;A0yDKI4Tlv=F`KMtoW8X*^jxiP~~ zkZpN>|Ivxa(+=Y?_M-SO3+!6`jRv~N2YvU_zt{NNVJei| zl`0HH-pR>EJ)nc+rGGvpdQwGsTN7PrclV;7ozgY%FeFt>=Iv!hS5xQ-43e0s zDawH3n1-I8!32gG#OJ3>VeNsQvi+q&9l9~nXoa(0m!};hD0GGS1E(fyx>*S)#y;ca z)ELBslVg}L7>!F!n;$-S@8Lsx&6tdG1WA%7tM#p0{1jfY43!MfhI$a%t3o?v(D#$# zzo6*!GWRy!qEjF?U4GDkrFmrJn&-(iwjL5iB{aFj&G$$34FuYI3tGh! z?kh_T0|0~0IOz#91LJ}mp}z25s^CxZ;_xs==xza*0)ynRv*0HeQ<;=PubcIyDAb53H%)Tmj5Z&dhU^xqeS4u$(!~2;$ z#34)1kw5pKX%#n5CMavA@Jjjv~ABv@;BtaF3rTF`&JoXAul}?3Lv` zb4Z~L6^X`_DaOwt zrc#3>2Jve`(pBrD4c|d90VHp)oKGr~^_3O#XcaW7Cm6&s!QYZv*IbZV9l4~v7FNA;8021Nu|#Nah)U;Z=kb@&Q>@*rVsFUPIsul zAA=pmkI-7ehMLMx8bKu~i|*V(LV5C;VZ5 z$@q4*n|T({iZbF}JW_-)M4(|K?dk%}^XlC&xh&W7(7a7j$=(rAhjGquE%J))&M0?b zw8-kZ#1uKY%V4}iv3kONmDuu(V5zOQ173g+Z9@bfvS~XLnnuv7j}kUcmh9>4%()9< z#ZG4j;vNZOlhbRu&YfV~wlX+*!r4>2ed%GBSeUlZ0=26(?ZG-4H&r<%%FXrpHJYdW zYohjDPv~#p@O(f)(FWTl9@vQS@DdLjwY)1&+^1p>@8@b3iS)@eC+Cilg7caI>95V5>>Wk zh(On%Bz-FytPd>K^ARWV;Ik#xPtO=rLYUgp?umAIL-FAr1c_W6kH_Z{I8On^$1}4y zyQi(wiP(b>hjA<}6M)bWHUgy*PegVA3Fr-PLnc2tL2J+Xo!Ga143glfrrx=pT}TA& zCohh*FNL8~t&FLv%jhXgi48!!T%Yz6t?4GrOJPN=8#qX^^jhSeUqL1;XdTOETQ0Wr zp~Z-UFzE!@)A5*EIzY;Up)mGWBaNxLnqU5M9w-EH!W+~HZ$dqCvZ1+2yx^gUz8|q& zwb*(EaPZ@m+5$SQ2##UGn#_URO;J4$y;h6l41kBn5mV{?tobmV&ZH;D9z^)IkW?va z0q)6wN@B^;;;|zS_rX4AJC>7vl0Ac+AnaUlY#I6{V}NCp`)Wd{{oKg>2hLgxWG^IA)??FwtjS(T{t0AMA%@aQxg z8t>z*Mh05X2tgq-LSzUVRA|9Y+H{}K4I>@L2gfrew#62|yO3l*D%FnxXb*(76_^E= z2j(wyOy1QbX`J-p1%Jj3n#azy)rz%WJ-;=KS)N`7L(o%YVzzJ&vxiIZK(nnjCg znBqYqOB(<^3S=)>uP(90Prv~$mGSaZqMh(Gv&=8uVd*CRk*NG*NcbI;pF|mxix)2k zWfJ{ZRQmXLSUPtyuTi>0m!i^ZY~%=?F*?=7D&rI?T_mPf81$VE!tfW;SwiH+NG1`- zSl^?sRkogF^+8!A=%QsYV&Xe1i{x9hEJoD7v$BL(i?D@e#PP5!KXan$o+JzU4k5!X zejj1!+xF(bEWpTTGWzqBzhp2mqZvdLS1_u|db-fw`dV2`4GS~f@miVIqN4SA$vOmM zjjCRx);-_4fJaT`k6);ao`C@}b*44WR+LP5-BKj|cA84P`i9LAO;Sdoh-K1RuyR== zbENgv9NR4vxu6PG!MbmcbF7|1eB0i+#~*}TffMV!Se{$^d5h{L z7Fk?sf)AIgP+T5%#~@`Cmjz+sJ6LW(v*8t2n!w=(RJ2SLg!>mQD8TRU%J1iT^Zmax zOeph%Vbd0r6s>cd&W*JXE!WS&WL4~a62oo#vB%np$MExWQ}wEdvbbSXZn~I>A-hNj zH)G8jc7u!2R_J*aD44y2wE&4Y>XsFbGdGdow}V7r#GFrxqx<7fje#HRkp*m!q4s$T zPH29dtyD;^pF*YuOZtLZXbu)#57E@YqDAqMsZrmm&SwvY_N}Kx&wVbc2Dipz#ehc+ za55JjX=nEUp*-~8SkPs%xn#U>Xru8buqermWk%cI;Rl! z(eI-CY*;=A$D$=qqvVf&7bPzVN)AWfqJ_6n_$R``{REAI7TB6nIuq910-(JNw>fCO zpMel2_c&m~Yfo8v=?q0Os9>Ik!1^@Oa0@eQhj-R&-m0Ox)*XSV8FqU)nzVI7uoE9b z@%m;sxRy3DkG>pSnsd#kfUHQzw%FrSPXIerJ7wt?(3BqB$yX7>?|}!HTflq;WmzhV zc$I6M_fxRFLijTH;+`LV9W>D!x=qXpTYB06G}e=}`JS|r2qw1JPj)42jpTRaS&D;wBfFukr8ah;+?!o1 zE9LsU+@Uq=?gi_UXi3?XeDQis(xB=ElOI}b_?Q^Y#GbY~n?uOE!gx*xq4{KWr1gUR zS2f)E_NEq9x&Vh6+&_mhd017 zv$jgoEFLMT%d~m-1?eok3D-jttpp5muUF~Wc)d^jFwpfjwNffW!(_?TC%JH&MsnSQ zR7uITC(4ziS+92wa^c%>%%$%K+%It4E6>DWn%_U0Le7-re1bV~AKp6tz)W1%Fch+L z)@&MYd>3vuQ-^;xtp;W@f@w^jn8^TZ)*sU|GwIo63nuAu|33GaJ=-^%n(5PT#m&G3 z2Nd2ZzK=f%C@DjXmV3GOjYqMO!u6aDUTeDM=7qe`u1Rj(N7p89lxq`P3O5ySQyQx1 zg~}Cn0}aeQ1&0eOR~N63*AmeLgq+3&Pmp$<#F5DBPRGW1RmnnF3SEVHY%VUh*f{T9 zt2krC&ZLr^^97~u|V z5$*FC+kQ10=XlTY^4iuDfvzy;Wm%9FN2$(oWh-M+*0AN&Eum6<$Q=JuHd&X zgLA3QI2HGK!zVrte{$p^UzS2182mjQn zb=W|OhF;GxTGs3zAtd|bl%dMkNxor_54SiuLE4FImW0H#NrHC6<~A zhT57r`Irl1yoRNJ1{L+p3S>n-6n4D3;dIXmvk-aC$UP~rR2(Mwv2f>)krLN=EJ^CQD;&EMH^k#uT8v@-IkxvF;P|PMG+6&EJWzLZ$oZp8 z!q9n>o-|=&9N3axInny^HbUlnd&Ob1bWpMGo~pP_`FKHv%?p3DjU~nR;*rre11;#| zt7jAKG{%~RNx+^>;*&ysa@%5gco*R~WCpo3jEQ6plh1M7l1IMWY=R?{xz5B*{wl^L zN8NE;CFE__nMehfG^0o~-q)gf*!DCrhFmI~PvSEaP2A`#fl6uPfssKF>SrKbR>$ft z?hKkNO77sv@-UA&{*sbO5)`R-l2W{gkcrzEb>=EU4lHsBZw^}e7eL`22?gn6q>@m` z>^{bME0EN&mGzE<>;)m;ewcmp5jsB)2eQ&LY*ZR&K`mI}Nx}M~jP8|6{Un>^4HGZc zlL4cq&g+jMWd%?43-O?&C-+3}!m{+NH3}SfMOoq22WCLHl<;_$w;DT3+>-4z(dihc zw%~FcCA)lCuG`6Nxk4qXDF8w?@zx_CJj?5@vKV(0fnU}}d=)ThzVOh#N(4vfFw3U! z=-zG=)We0`-LX1Z19%X{8!Y&InGFi9Z@KFD6<7bkp&cR@_JR!o}<(kc@OHD6NJ51de;@usU~9)psemsv|CAm&jn zS!y}pI;;avCU7C9J@hRphT}ddVF7nWlw(Dwtux?EPzuYm*(6yUP)+Q6%RJ@*Uq;Q* zzsiRF8Xe(D=GUKucbrIK#>MAV+8e$d#G>LCxx30^e3*;#?87Lvr3zDHZ{2=h#2$|m z1D*x(Cac}Q+|r+7F-x#}#n*VCVlto3kW$diR4i*&gy#JQ;a{i2EM4_TKbS2|RL{e# zhXh=i930fYgA6@`jx<0Dd1Ob^`6d8`4GI$NoAh}&H3$x$HQx0&?iM+_zpGJxAC1YSeIixspJaz{P-9*72>&o03fG1sqUp*XaO-k@ zZAyEZ9mb8F(@!gfELcMO$aUea8bxAu&Kx#=*g0Srpj&WChe3w!L5HnChhYy9bQnHE zC^2coT#cAa6eH=YAyYTu-`I=>PwxL+5csrw=)e;lt15 zyiOYZSGNtjepL#c`}a^^cwi<-Rv^T zRoN^zLNr?7Lm6Fv9$7EkbvFiG$IYVdM`!R;4Q5<{^s-^ZXj^oYeXO@5Xl)X4;J4o) z(QsR2XoVxuT%-IJ!>dDS8K2))ZThDuiUN`tok z0_lw>`VmGtBm7de*ox^@xM~gY?1ZIrxONRecsw35xqQ$j8GcB{2>V0Hatg%=iFOBz zVP~zBFY!U|gk7MQFNGV$Qb|+>ScCZKpy2MUhr?NZyCIzR3R2_)-C3ayz zn>j9hjk-QgoOtM)$OIbaS2J-!`im$@?4Gb3p?S0`(s#mv=*Z^Faz6Ba`Op!sxQ|ZZ z(|Qn=H5(}VI9&teXJEK1GM?GB%WeV5%dl&1fKf@qa63`bzs!QArJNZ31U@o$qtTsY z!2)17S?@gD%EV=Y0p8phbF~SRi8hd#gAk5x>@9eK!OXGg$?_?$+J^bh!QBrZIZ)iM ze~?KMyk%MJ6PZ-ZPK@RXhh8o0Zzge}0o#(6N1@(NnVakK1w}uOI}!fCeZYUT);MW2 zJ2_)J2+RJ$6uzdZxj&Q77n)DtTtV-8HqJ4YnNlIYdn8|;kqgA8S8pRN#uy>rOybO~ zucgCXm03rqa1qNlbCKkVo+~Y4;@16vCvyQIN+hbhg^4)v;8O?2UKkfb#SU{}vUN;$ zRVSIT_Fb56Gt*rgrR!M8E=+nO8@!#)PG)k%o=2>sLYT&LIB)5(o^t{(ucqV-jNvVY zcwy4OfKH3y%K?_%H;lsxGlFQy=-X%J%sKWnyzG*v@i)*0TQ z)1<>gb2*%aVc0PZJrUH2d}A0*;VN?Kh=?ED{(E9?N7wJ&js6Pb9U-r=9-G>hCKU~^<_OXRGjaw3=#tsB&`How?qRJK{$u?OQe(qL-`9eE~+Pg&YIJehbVIhY!}Xz7Z< zC4;Lo2aqbo@2)^a@M0b`zu_e9|IVfCS8{3lzj7J-Kb=1N>p92%kCpxQ*PN{V z@7V$SWhZCRKp`yVb@WxtfU*#3KG zwf$x168rBixzzq!=Q8_C&gJ$Ooh$6Wajvxg+R590X|rE|6Y1?L+3^Uk&QUpQ;* z&pFrGzH`0(=gwOD&zvFqPct{zpUteZKa*K+f7;n#|4F7`|FN^t{v&6T{fEwG`wyHg z_U}7e?cZ~5w13yR$^ISZX8X5O+iY6zekygVyg%vOZvTd}-TrlFhy81*of7tm+%Ef9 za=YzcUb@HrxU<*(C1;=gF=v0`7qfTE$?N%y&=8b<(#D5Y_~DhoxRWxL+l#q5^uWS@ z;>(#!m%^erW#`a$iSvUAQ%2&OnPhLcopgY+gWhn^8&1$04tm2uZ#Y43IOq*0=nZF) z-pHaivgnO0dLxV8$f7s0=#4CTBa7b1qBpYWjVyX2i{8khH?ruBEP5l0-pHaivezU& zpIKwD8|0C}`IU)WisvlgqiadH^8=L6WL^{pIn;4`L&$U@-1-6 zvZ2A_R>eM_hP9qJ<1Vyyf@S(DcI0Lw>mn1|yf zaXyt`YJS6lA9&@l2ahs{5&8vRFYMrk!w@^0U@n%(;}WJee^Hgh(I)&;9E0{?*2%8S zAUus;#duqOljKV;w-afM(^nk~DZD`k;2Y0gJh&A9RoP{U6$z;|lUQmECP`oFtrJh; HaK-+=1y+f4 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc deleted file mode 100644 index d34a8191d9cc48526c692bc81c961e460d820c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89132 zcmeFad7NBVdFNeQS644;EtX|@0ha|>-L}+Tunid7NN!2S*p?NmjiHQED)qhH>Q;AE z>sGa76|Ep65p2LUO!%EGW$kyal(X-iQjdM-OL_b5Efws$uheJX{iXh?l$ZHH zx-{TrON0KZ($H-wFX#1~N_jmeGo{u3>XWI`8h_1X+RJ;rr_!ahetu@1S2)xYyu$1A z`cI`w=T(O+ZGg0KZ!k>Dd8^#rqiM<;@>cWidcSYx{L=Y;-{}qBnltIr1$MWVyN!0Y zj=KxVv%x#h%X;e{$&@a#U+42{1HUe|dM==zH_`fyvwd@ylrBl9s%vTUh2BN9`67SS z$!zI4{Jz+`gx{C=&+(q~NVaqdT^GnaK z=DcBV1n4~9yTZGY?-y8(EtL6Pa$H`zyt>KT>W%Vbvv-wuHQ&S3agBE^bzDo1k+7C4 zNPVGq9jVvFHDBpp>0M8~>C)xo+)~6*-YwqCrZV2PskFEKv21C_!IXFF2h*jU z2EVaGDf;-3zmwD*A57n!3e&+o(%voY5Qi?*=n}z`w`4*L&ru6#4eHmGIBxyU%+S z`Cdg?7WB}{v@r5*4lNSg@LN|xq%K52fKcE6=fdQ+rL`FHpiU6`_ZUSsJ8y=l^? z+tT-WGu|Qk^@G-@Sw=GxyovUfOJ%P6OZ&N2N|ov^Z_dx1KESVuGwB)cNUG$wLFqB? zRi(*l#;cYl>0!;ArFe=-eE78PMyh>4*Ean)xCyB$0%ObTX-z(9q|sI z5;V$&0f1+4!=58O&?8J-XA7!z0~N)dskcDhRf@{(R+x#)VzniH}O4h{dhC|$Oam#h0;Rx zf{xZ{-e!Zte$ji2_hy?F3)MWo-t0YMbaladtM@iaI^sR*y`Ar)^zFERf zdYAWZe!bhq^BBK>#Cs3F-{T*%*|Nb}@T1m(57B~Vsmb-VrPo$3An%WP?Kptwct7p^oRxZt{(QvyD9=AinLixXd#Tm+F{?{7=Z&Q|GM1Nm zKkt3a%6+3f|F}J$;`u|RhwS+;cptat583lywC6{8{&4AGd;Uw_FWU2m?YU-8&Zxkf zN}>gCF1@+Bbs0FFq2-_OUTbf@iTh7_pR)TmS2xi5PkW!C^`9Z#!R#&mTfEnLpS9k- ziTh7^pR@Znd%s+I#7fs%k_&!=8sA!atM_^D3t;2hs<$sw^FLAkuXtai{4d7kKT6uK zdcQ{6uTerYZ{O}e>ixR+C2QAPz26ASyp+7Zxil}SzvX?I622Ul`VRjc-j{qgQ{L)* z#l3G(`YKTB35vY)+um1s=c^&6zOz~&?RUbo2f)R5TK?a){Ng*_ReD#o&-*?90`F`7 z1(P}N_r2del`Fl=a{Ynj+DWc=m)=dTulo;^>tS;Jq4x*mdUp(|om4&@2mnpLE3*Q{iJ^zyw2Z$FwF||Q;gj|c>lmCv5$C!uzLi{rYL|e|S%V zmp|kGp#L-B8umZEe>$aiKV)MwMs4}vh2H-vec1n5|3iLZ=I7{dKDf&Nu>Ya*N2)n} z&wRA}5!#%dNqO7s>C1FK^Rd#$svBv+|Ms@gf^G0OKM($V%>UTwkNdx1+?DQrF~0jH zySvOUc>iprRH*F}rBARL{)_j|wDJ?yBDi_#*UI$C(kH9El>e{ZQ0UIau_{whZ2J(D@^ z)81Le`ZIBA-^}Oy(_oRF!9ROho_>~hf4TI_Tt8p>Jl8LjzQFaprT23EmC~j+e%{eyQ{&uD?+d&G^mIZ*u*ulK6%%m%hyPE2Xb+ z{c7o}Tz|Xt+gyLA^gCRCxAePQf3Ng=T)$QluK#{X{Nsv}E(Cq#5-mr9a`?Dv1;M(~{=eH%s62(tA_Ged$!{dlE8t zk4(3++pEV~g|XR6z5dEd&>9%4RVOM9zsjf8vunCqnQg7QbGqRNmD#f2KZ zDsy}1{fXA9_;!0RRd211f8KGlqJ-RDe|EB!8$UMhw|aF|6@%f;_`>|G-^$-xov%zB zYV~bDTA6NC4v@5Jd;M5-;&#>9s0Hmm^|WuS7St9R(^bDUWEpSst6|Rb>^D7V_zyJh zs#Ggee$dL_x-dD(cVX;cWx9G-Wxh4km7{m8w!kYvt7nIQc)@QC?C>Wm3$u+K(-VzW z|L)41@42=P+#Ps+;CuF#>FpOroD-wK@9xK=ORo zY^~Bre%@a7cp4XVd$sM^Jv7h*MAd4o!N7Q}L59l@8s(~ggmw>vzZ!z`>WNvu5|nE^ zpaQSnI?t;#Dia#uawDiz>yx!$uGR1P^MS9C_FAi^{6<^;o=F?^f>Lc1`|Wu!JvCiz ztxN7Jv*iPoI$d0^wE3Xcs7=&n%X9wR0Y9j>hLoxnl@Cr=8}(M69vOyB*W=8sL4GKY z=Ly!mA)>WL-c}*%hPw-V0W#N{9x#T?nGm+-)QBTQ%sgt;Z`6S9J~E)kgqa3Yfb4NtIf{(6OHLw zRj6ETfRqej&LP{bTENWl?(rvEeY=8M)32($z68a4?RI*iRd{)&e$YzHP<|h?Wv>3p zY5!=eU=v3(#ocKN74Gnlxu>~1r|STkX)v$3JP_X4n>}|`8WRUwLw7CMJdEd=epSJfwiia@<}zUI}hI^tK4Ts1p=;Hvp! zjf1u73rDZH`l>qAb*pF~-Bsd)PAn8jmue4b% zZ|3u)pioE+rY&V6%dhCKhnqe=2COe}vzV#(HByVI_W`!YGbhupPcLQ~>4j8qStGNE zwh>L+`HQKUZ2gkXT#cMkPo|G&xPxaoo?Xl?W)5W;-{`$N;3jjYD0?Qm11bG@y3vE? zCQnLQze&k0=DglRx!?}HyO`UULgRLaSJ<0sq`W>WFBk0f`m1Sgfc6bqD_1RMxgT20 zyf5{5LG4xkk=4yNjfr>^!7!*~gKvmS5z1Md*W%}c==EZ4vREljY4w?&C{E1Qi^C8) zW~+{Xk_JPd#S69=Kapu=Mz3zA=etm%)qm40K%eJkqwq3;K!M3(F(kC;oWC|Y6cr^Zr^zM;NtADyaU9C4NP@iBG`Gck| z@!T_fZS~!x`X87NZaJfJg|(RzwC=JMTNmXIG~stQbK|vIv6Y*vz!7C9{iDq_?W3*1 zZ}z>k2#sg*6q^HEic|)2_+D`&?-rMx8rN2Dd9D&1f~fZ%tkfZjLGS?Ox3aT-wUwjb>7jH# z-vzE~((BUe)4B8|=}bCzHj^%#%{>)7Le?iT-^=p#J((Ul21anuoF3y--@rw)w2_|4 zG_o@}K0TA!lR}x-@n|F;oZzdKcT}pis(hQ93T}nX8|ALI20K#wjMQt*g@UFV-F>^X zTt8S_nDxpq5?Un7lR<5+4ac9L!g`)dhR)^A20zN}6Pe&`e0@)JXh~;;1lE~#+_ZOQ z5>ga(q{liEyqzq;J9H6DgLmojBf50rnN|98q#O3HOE0NYptU-+_(XM{%+&fsx(2~% z2fkcatq|)v=rmoKU9r}WQD9vYdwqIBU(ugx6jbzGpW(8IumjQUZKP%(lvAmP8O9x{ zeJ_B#W+08su;9|g%tNUo>EO}^#1eXN=|id0xkbza=~SafDZ$mGdsVbG#uSxarsDeW@c5RZ zxSad_+Vp-EriQiFEp5s#l3srJUP!RM9Zh;)?2qR}@|v%yAKDJZE54@~kZcNaby31{d4g^Z*Ffqa5b z$DdGFfAwK55yxi8C$6nf%G$j+fI=zv##Am<>H+zBm^AR(clii7?Gr-xD$ypyCEP&8 zQcQ?KgNdP4zL7bZI-OkvnH_U?1JLVYwJ4WmSrS+AfL~mwL*|c8Hx9BEM@!N0$Vkq5 z6P%)oR!@C_HNUmCT#hmr+gdJzFg0b!)(*^oFnz4lCXJQbkmjSxz{jYY$oF8nc~R6i zc)G44J8)Q3JL<7f?Xb6bv92tqsneM=kR36x=P%pOk*w>+M<~eggH_#qTo)sLhSy>g z|AJ50#2hP3b8TA_9aqY-(9nAex*X9(U9(bIB3#cW{MlL9)P$~DO;(8r>!0v(mB4ha z?+KK)GQt#j8X=6A4iUvDRvV(YajIbPNJ()4k#&@6x{BagK?;~ER;tB?DtId~4ynMi z42}a6q1jp#LcoZL`{50dH^T=BJI9vI42!ma?x5JH6%SU9_(mUL9S1f*yv3v)YK+}g0#A!yfc;pLkwm`oa=yXLAhG?84Zwm;t(4>&|MTDd%eLy^kMHkxsl7%qvw?d_+r$ixP z$)uk{E9d!Dadv=h;eah}39V`?MYrvIT*Ah6Wzx^Pw!f;p_x94x8;ds3#hZ&Sx%%p> zS88DU8^tScE?!eCKCfuvSdn!J-7L*L;K+1D(4I&W^rXbmCfvtjs*H!hBJ?K*AJWK7W{$0Mo&&G8)T2!K z%D;f9rXh*-d1AX_o~r{^C7M|$O^Cyd5t?Ca;g*Z~&dP{LPzm~qPyrZL?Q^{4g zcj3UWs$2#~Rw(>gAc(5#{_C!OnI5?o-RV~*m-e9hb(i;UhAJ4=8zVRVAGAw_#xVU4 zV=wBs7*A?JTu$AG_6vpf?=P2a*vjSo`-@WFOdnVfyH(@SI2;wJHKf_36j8zhGth~+ zF!I8f)sDvV333qBM2w{@PX=^+BwIop2&==M71d^x%ft#MTe?ln>{PQ`m|%E6rs_l7 zWHuDix%`^%XL7l8=KF!3Et#5H7038IDYn2?#FRuIr-{fUq9?WGv<|ebGR6vA%WF4j zf%yVAfqo$~yiNCya`_%lI_p$@V)ImI{l#3SQpX_&=pfG1>MNx%I*4_P>C@;VX0oPJ zK=B)CAP(oyK_I9hw4|G_*sisuL$PX_*w9#1oCtjQ*IM<);^eGM5LKjqa-)DOR_1EZ zutd!k>8#e5!z}H}so)Ill*(LeB5d7heg+@lLRW2V&s#zDU{Mc}W!RSZ3(8^T=Q2{s4W$S94kY1pj1e@@;5EUw$>Y+90wkr)9JX zT0_V^w@U*g5eGX`mPs3^?ZF>&K>!dR*6OJ-H-pkTu625@!Ss9&+1x9wvqv3i-2<5~ zm;J-#@?OD6lLaP?QIl%5dGT^s1IwoT9iz#+3HGn!N5hss>HpMW;dQ73Y~@f9A8hp@ zq+#pp=+1I1xv*0&l*=XR2;N80&F8GpDwl8fNKZExDH%TamM#enC#_;osc+(vpogEG%$UM32XdGyGy<_AF+Pq=IdWxzmNk9xr_%q&l5i%%1LB z>@h+)x|j`adj%<`$x1KgtoD8c8s?V+kT7s$AUMI7kuak;t(?p;Zo>STo}ALK$KO`u*kf1rAci zWYabTSAvrr>xn3%*6T4o^=({aRT6bPnLVCvu9k_86m2n?#H!;7laG*FjJ?n2N&d*jR z82+OS4JPdx0IlmGVu*;T3bE3KnDurILsW;;8w9nZ*i$PL2ixQ_Q?G7|nl-wT?jX() zH&G(cLSyp9!v_5uO}a|NtPYXtnO{C2H!geI?r!`Kz7ARHemQQZfwEewZZ(JroVXB- z`lDb%;7={gR)QiP9|q@HdMFk`^WS1vAUcqA?+5f#PyY08w#BZXEk`6ZcR(u>~0DQHTo`?19G zqE{wro?L#0CTd8TkmOlR8`WCyHHb)Sb@H;eFgJG$M~j@Q2!5ZZZ7ZlrfG;BLJz6}) znGHTSlg?y^p2lW)HkTj#_e=)S^WOvI=^$Ltn1m7D!H;&r1+jv6!UVl)3bsyM)C|1N zaeX5Lkba@1!xuTScDm<`GdX9PH#lcJvwj$%kq91=FE0BL&vqz;CnOy z*5PmYa$x#9-5t^8yIfj%BN%m9%YRUs;Ls}IH&vEJ#RP8Y9> z2~s-#M8U`Sm?$Xu`wSi~GS7`08m=>y7CQOsyiNAZFQ)Yw*!xp%g;CE;&m zI{h*YGJXAECeZId!W*36?YdvB%eXH0>atdsAJ9eZ4erq86}s%#<$Nx!4Ut+#b?C&QC1A92V4~GO;R?b3t+m!^q}zPkZjqp5e7x{h02kht%QYNN zouer-xfncUt(Hkj^;Haws@u|<& z8fx}>IbB8ms*wwAWCzibe~ZMA5{A=8;NwYavY$!2rJnLsEtrz}2)BTsf=Ebh_&+re zV#;$tjnZ-Y6ZH69mRZ_$AZDVYYNVZj7DNm_?rpTJV;akz64_Mh2l>%Roiu&UOxgpB zwPhC3WiwMZGlTGl@Urf3zx+zP?6i24EWT%%ncN4`i&>fU$h$_)dZ&B5+?jO!>cw0m z&vd^U{ZH>ADfpKZ5BD!>cJ%E2-dX-`(fkQsqRSp#WJJMy1X4i_1IaS7##yJGv}-f` zUzFYt8;WPP7Bf1z^HpPa-n(Pxj`H^L@q6~RvK7xmKsM`OkD*d4cL2329@WXPVK)TH z+Gd;yl;_D((}jmaG}Gu~9vaY(*A?b#cXuN5bS@jLr`a8V)d=g8`b2f-bP_kfVbZ>eUc`<%tAWY+UWO8P9)#J z@yy}1mYxb;yoj%5_1eau$*w(oQx9%JJrAW0rRxX1-04;3aUl;&&MwiRR{g=m)G0fxsE|xzsnRPdm0<;(#eUb6otQIihF^?&0IP1eP%zAUv z@Kv_(qNSa!O=0<-lzYASP)C$TL#^P_X4q??@^@^Hx$qX}@D?Z@knd9HuNnL+1G&4o zbIdu9OjqF=V9v}AAC~Nd62zmc;F+UdyTmy*9!#U+GFhNL`c!61u>)l^6ND}=5j zl~A!`2hgB-GYfT4J$8I;^Iw_@Jua7RqO8GBZscN3?2TMcyP6hkU{*kjI(yk4u=J|W^vv%?(y)Z{JTyLA}N6hCz{yI`~z!5MmPo?jFD!p%Hbs$<`UQ9MR zPBHR!rM*L!JWX(v#b}Ho;1gM)&n!crobe+3EwHXoFxDtpjqQ~_csUX*DJVm}AS~8T*oGoMv&=vV};-Q85 zR(ce<3vGnbh~mi4v;S-^Gn5XVPcsYK@BJ68I3NpJT+T8fcm|aCDE~(&bQyJ z8lYbfn@<`CyG9xcuEp68ZdKotL%u_BPU%bcoFDoE0)L1oQ~ag|qtZ zb|)Ey9x6seoCV7HsF+|HnaJx655@!uR$lUL?kgfJEHw7A(UV#Y%R-n99P_4e@rSBt z#}p#J`hX4~^4)=#XPU=+{xmK@&OpwCkdPcbSYx{1bS2Y{zpfHyft_ASMuct9S6 z!ceU9q?B&Qw%N2b@D`B+mNGc3zPN$AakMj_T`9=fG>_+c>yk2!tQ|#Um^egV>mg_0 zfU;ZQ7gPs(f~&hxNLA_C-F#vP;gc}#L0==|TGcMD7F0r-tYTAOpEm?Pt;T;XqSab}CPXQtKQ%@lG12uO=CTMH9?AsF zFs-a!1}*PE^-5X64`T07+O|}1gXw&W()nt}v6Aa~?ntVB{bG;Sbm@F&h|_Y0wY`3Q zV_*>*3EzWWcCqJu8MnjY@cE5ZGea||fpBxdb~2g6XDS!^Oyzbvw&{yBsd;_Wd>azy z>C&-0Iptc6V_S+-P}7k$PDd=#2%jA??om;WI_8}L)EN?uMH3Ar_nv$19>2T1{mwh@ zzVFW4_l^f6LPv4Iffg{QfgUBT)w})HF+tThb;wF?4j1|0>nf#3EEzOLhRHe`WqgMm zqPbldVlU4KIX3a)dg$RA5M&KLt?NRc)=ZD1p3un?7v<3ZNBwALDLROZ&`2XK;i-NP z7dchW;5^;!p@!ph_956|cDZDO&5fKKq#sI^dm7G(+I&|ZO3n1R-6}lk)l{+R(zDxU z!LE*q>4u@yl9gW8q=$rH@YYLKdW85wB;=T&8!oNEd4LNxK)kMlnpPlNUQY;MVnZ`0 za;Y^eAI*_&usFNOG7CTKw}vlxkuKj+iN<=1(+!^DCv<6cHu!fv_=GMtqs@|R)$5I> zs+SCX5o;XlTo!}d+1$V37u7X3%NS<_BMr_NpSl+7(4DZqA{A!16A^kSuLrW-zH^q!12a zb5jS6XVu3!XATBR9xW9|*n{uW(&kN3_v%h@Cq>|#xrgGsVtXj%B(k}IPnGR1WmQQQ zk01wxpStt*6_+*{D$JFQY7^(>ZIP^LwBCI5=c5&6WR)WoBFYjMqslBRva1cORs_dA zog$kXSmUiUv5|_cw6a9-1TUV*IIR0~z0pb1gO~BzDIvfx59RgT&t#QBs6SW8@Qs69 z=4o!A@`G77b%%0zB1W(ar)^hTI}CWjk3K$zBOm4F+&EIdK%!MLvNrZv8~f)s@?g*N z8@(PTH?X2DU$9k{aN!Rk8v87og+||LWLS1oWXuRS08=$^Y-hw!q5T0fk7C60QeD|xo; zync;63tmc*n9ofPE<~)0QH)j=m00(n35btr&_=l_WM#t}%JgU5z!h>s%wUEQ+KX)u z*Obh^Zsb=k2YGpV>Ci>hg=p3>bei6=;^At3i1tQ9V_RGXq(oytvkR%(1x#vIQ7@xm zI!OwPc6Rr;Vf9FFf{%e&z>U*4pqU(SJs=3S>(Ygx%KRC1Rupm_J~njbY;%1#2FeLQ z7F2B#?jYk78Jo3(Kj25?bYslVx0GP?u&Y`<_)V$}zQD~=S{PaP`@60CzoY`cql>1N zLk)GIm6Z>YRhQIccSeX`NM?cF2r*{=-olzfe_>1FEVv*j=QaF>4Z6%Nui|JtnWp%Muz(@Xk;=78T#zyQ@sT0%qCsa z9HALPJJdT&IS6x^iF|R(m@Md~oR?{%5nNlxt`wFI| zk)K7O)Mxu*`T;@SQF0CMcqdb#azzl0o0;K8s=OJL2a%sWo(AZdB5AOGaUI44O>Lfyc%Q56BA)Hj#h-5enwv;m^jAg<21}Q*5;dhu>MY{vWE0^>7nd~bbl7L zA!dZa*{3dAx!vHisV9twHp_*PFRSg-sw1l^twCZD%-L(@%?Wz#yK07%!1DHiUh}^` zV_;qxD{m!xgq7NK12%#uU}mo5xLwm5mU@Z%(&t1g;?VSm!qtG`=^%JIVAWJsgORtw z<2&xiq;lgUn3OIFc{~;;qZHHjM8=;=y?s+)WZ`qNzQJ-hf@qhWFUl%opqQ`3B^PqJ z)SorV-r<6(#Jvj$>Qt6iPxs81V@N91u7JC9=`eu zxH8JG-U(jC;jk2MVdBtMmxgh85=G)N+apzq{v0I6mhaGiu`_-*Y^5;anH^@#p|!T&S2sp zQclkJY5u1f*6B8B_K#>FRxqxRgM`YAO?7qOR<4nlYfm4NQOGX7;k?N|W%n0#g?384H zP$1PUfeW_C&d7!rQ1;nOCKTA6^XY!J*gjjd8ecx6(5Kr`+(_jzYnPS^Te~jdCS>Hh zcXgU;vvxb)J}#%E1OUsbp^Bg?al zL_L^XGLM^~$ICv9ejs5Bobg6RB;LxiH2cUeEZ|AtjQT6RUh~RETDedq7vQyCjx17m z5$1T+pQP7sqQ*WwyFfucOv1U4yT_eG#PToB4A;g!eG|aLBmaP;rD~s80{WtT@Pp)G zp=xAKuZpDfkwLbo?TL&Gro)%dee?Wo4=#UhzHzL1MVu8Evs#4BHW$#&hVnM^nEBAb zjwBxdnpq-H==;iKm z`fd9V`ZIaiQN)p>X4rssa2U*o>8zHW-@}SX%+IaVHg{pIt`2OfsysmM!`8# z^FGp)W|*)D~?iISbLzhIhj3>q&!a1?y0byeuha4H?3}N@Egn!j# zkDlA`%XZ~-#dqt@*x8l%>rioFRM<4btseFy61bO12@fu!F1HmU^f~TezJnhi zAL^AZE_*rN`j^yb^#NI+F^~C*72VM7S#aIo2bA@7yjw`+a=GV->mJPHu=B0Cumj>W z#_(y3Z?gzOkD>2uq!>_WBn4)HTCYWB4t1RMjnZin+$b~;c!X9eBcw?(u3SfPcj22- zti+b2kTw%cz!Ov;W1+$uu6X z^YgRQuu9r5#m@5T*7;Bw=^E9>$=D7-vs#%)R|lij#wHs})nVyZ*>E^{xk%K+cuo^r?V$MT$^ku+qw}vkL=Ci?bRYy8mFxWj+jLOJ$!Jq*-|1i zUR$GX=IsL4mY}lGc}xvZOGK6&0kNrCC8=xD%B{!B{2_X4er>r-^Smge;_cOj3HH>v zn*b^+&RA(hTSHN6osK=Yjl`g=OF}2?&Ip$}d`xxrbHfw`qPfg^^d0=1;M4IJK{e3s z0yK@6@w9oxGec`q5g?x(yaMf8c?MW%C!s6xjkG-2&l}APB3N0pNuU+xct&^y6<%-k zSoT1}xGb11qo=P|W!lFvKN>6Xbhl>BLI!L`n0@9 zH9t!r^@cA5{z_m{pWhsVNxz;EOqY`B+2D{lrT^apl9XC9fPI;0X=&%t{aySbjnfjY)adNV(FNz*M65Ha=$BYR5EbIBkK%JnVyGxQFEI zTpSFaA}^y+0Hm`%ADhK9-sPdF3yX?d~`N(j|LkLolV-6 zjPk;KH@xg)8Po!@bl~@jIwOlRq?bLJ#130TDBGLD2?HC4W36|y?eWp zBe1L31o5nvV=`O!*a*UWGnxd%E(Zv$q0U`7&fjGaPgQ9h;d~}*twE>p47rvT#XDeM zW$!P{6W!S_A0=8I;W>gDiQ(=A+(2g8`K*l#@8Kns76WbVaFo$Tyl0vqC&A|gc0qDO zI**K;e|m^`l42yA&!g>i6pOJ#fU(ALj8A*pbt)4a(a0Xv#RhdjcUH;zeQ$p zjSmD5sO@2>xK$*!^3KVw)EC=YCrIx2)39#iW4lV@>Ducl{ugEmKPQs}yeytwex9X4 z+-!ke1(HT$PvY?j88o9mX%`iNNJZCMw8?z5)*kOc@M5kL%{CpJhrgCnz?~-roW%CS z842)IYxyOhgH7aNhj5+~XmZE%D468m)r&KH{sZYo;qAD>FJ{l=9+vBFy4?3rdZxe8 zi_h3i_Pf6^@K9POan*Masxe(2oK78Q*D(Iqc}}d!94~miDEfwieQ!*?G0pl{@cQu7 zE}UL{1_yi8eT6D^7J@fob?HoRtigG|&#wKk|5@+pwRoDXi%ORh{$gL8Hh@cvg@#=0 zkJB)=y0pXdi+a0Y?}YX5d+BR3#|MrNHqKi_)pvZ=;;P1a)DgeXINyE`Ee-|0usGzc zV!uy&o(<&rW$L|Palp0#yqEVjlJ=X_o22D}-|NWJ{;U^BUD&v2u@B#?bopZL`t9x# zgXR#>{JX^*PoDFTwim3fNQW_|01|!?Z*o&{5gLX`6N<&oudPiGE%Il=sGE?|dugI0 z#2!6}nm$G>J&1%m-`f(e33?w}&C<-y55mPV8+BD2tsLukFDX292|^aO_;2hDDH1ck zQF%Z{kGVRkd^x2aa8A%#%h@B3tcJ}XS;^Isy`eX%j8^6X53#}QU>@{IZ6PBNM!pqv zpibxkWou9=(O>iB2*Yx~?r9mKpeoY-kOywla-*Y~!ya7e46o zZQIt22>0Klv6HlNOBR3{ixKjDI4um0>tcG^WV~KaTA{sdgS1WFXh9fuzkG;L_HI8@Eet&$CK)Rt{-wbo39P&$ z&vpLAuT?b(mYkxAfoT<`zGIKnWaW@=LGW5R_0X-ZN0du`yiPM|-fgSOqK`|XWagR!O&!9ZU^Ro(pp_RT5aEA)>_p8r`DdfKjF0j;#U z?YFSBw6-n5Z5`{#lk8zQp=JxI%nW#?s0m5MMnDQT%~s|Pc$HgTL}zW2Kt2_`n~dat z3t#aNs3x^b;*`0>OCS(sTY&1wHJ(L%)cp=tv$-t?iDA`T&jjWtW9?8O{5Cfr_$AWTQWNGC77UlBrsf==YtK{>0GCi#g zYk3$TSS4DK4(?toEcSXsHz_1b%3HliNEUC+BRLqP!en}}5B9zfMqzE`Ff?v^XyFgp zgxDXwJy@!&$t?Xzzz(O}c6Jrfmo{D^2Dgi0rA63y4_jTsV1=fWHW9tz3~+`)Y!Nv+ z&C>58(2EO*7vczk%>?J-&K7Z**Eu8Xgth>%BB9z`qUaYEbAbdJ9T$P8MQy@@s)iv2 z!XO+Lqk^3%b?vW0Pau*JvMR12Mp@!w0E1?hYcQ*QBXWso1HrvI0ioM>$4$FEidTE> zj^P+e%lH}KXhNpA#)uI)wtO-tu=uk#%B`l;MWTYcimR-6bMdvCAJ}|jk>z~zF}|HjY6?-pg9tG@@S4!J}b~VUO_lX)c{J_mL z=h)4(#hP;SX4}fY*&>?@rB=+4l&W1!8ZN*!Su=MB47v(=N=+USfk7^Egiw(BCE5Rq zdP0?K>Db8BnY&}r33qEIWp%7UJdJ~0wXu)!AV-8)3~7<=xfVhM2dK6QB^I|EWs>oW zOB&uBCW=?HK?PO9VRd)Wz=9CR+uVJ%)!SwfyfxM z*qsTwN8Y$h2igNQ@0ffVBFt?gN#hiJPsnW=7qB}y=gEy7=;*{O0f~;(RFc_4>8rN> z$CYV&AhDQqV2EK69X;U7b1SM>AP|v^em_e@SdkQpI0-VF9@wNB9oklAkt9`f=vUS# z4#yqrgrqwnA*NH@KuX*C@8a45qo7zxdZeDQ9${(AGpv*19XL!LH2#%+)+ z*j7m*RPKK2S`kWfb*mB1s;(8%VTl|b)lq1nKkL;uC&8|s8kVb|-r29Ps{14CS|(?D ze{&TiKOq^-JhbBY$o}SITEvqx(hLu5#RZ7$_=GIfjymZ&+y>53PS=B+&{n5SXd@1x zD#7CETun3|wHI`;UeN>Fv#BK?FHe)#3=8Hei}Ox7frQHH8>kXmo(eA`+bJ)*j@yu{v2+e~gpIQP03 z>Og$D@zOVNv*v2;=gwu;W!M>z&HNhyUH@%O4=ECg(8Ma{4jxM1A1oj?AvmpJ=XdTL z=g(}SOzjm!@W})mcO{+}zI#wRkF?u}y>Q%(WGg*1am>!Ul1~OCEnfUJ3zlGVGQ)R) zQ;FAcJK1nlcGvXm+&TF-f}(Sti*aP_Z|nXTL2(=#7gJLuw;vcdtn$q{_~u(|U06A% zojY{D0t4XF(g^lNZ`nE&zh>jHiya>(`J2wbB&icXlFh6-8gR#s+sDT3ZZAU5>omBX zLQ-%YnIDyWB;jZMprQgK*<~O~NBx?>VH+HKV{SdPqkBPZj~vGI%M|@8H6HZeCpC6MSfsG zzx==yS(aIi{A{!RIZA1;_1J>KJjZfi6}b?@0J*@khTBo~5`~Asa88Ol-O2ofjq_z2wr0)49={w`+m%zE0u7sN@xtq%a@>DZa1z<>E+GWg{7dB z=bj)kE0*$rm9qNun#S50Vn)mKW;3O)dGlVB+Vgb|C;X^aFq|}Z4Qc>KUNkC)ONa>8XA}#lZ}(?XJN6`Ap>^mZ?+bcu?EU?*;-`) z#A4SLM8zOr3P`o%Q?%B0-D$_&Mm&5Kc?p#mpAF&NP}^NDW3Asc!E5oKjDRB9Hp5=d zO}uulcD}mugO`a9?NF}DrUUu!T3YTAbXRDdE?#8+p{K1+1YkIwb%r=7dT-?+3cttp zhB`_Pg@BrhhlQdpu`!u^W<*`l%tdD{=p(`dS-XXE$HJj?f;4$V^N6VtrNaQR55?#B zV{IluD+SHh))Yz-NMVt~c&spj$lCQ{beik^oL(VbATBJFw88}k=?HF>rAZ97cmyey zL=)M^w1DjzZuA)U78;aAqfI-tIYy%U$IW8059xe!BnhyYWV86x&27?vr5W$Md3&)REreEbaaNoyZ;Psq zxN+&V$Qg4&30x~^&DxpPP&_Qp>^Ot{RwW7YYuTtphhk3a~&2Ek6w4)AQie} zNs+(^glYSps$tvO_e^aq-aZLX4Jxk5i(bE0R@1%9@k!s z3U@0HQ@1z_K*$36*k*kC9Ae^T4v2L@lZ+^Y2sF}eHWu)BmrB$W(>j>SA=I6?z5xJQ zuPPi-N$eZ)4+-O*Iev*2n|>#(*Lt-aLa36qVK(q+)=MWC!$)w4pyL$a);1A1Gyg`N zqZ4iL3EP}ZRx4bgggXlF1U{XMRcJBLmMeEl8<=O?4o@@F94BwI3K3$qdPA(lAE$$y zumF8r3*0Yo=~z+49%#MT%g6Q;n9;K@F?uS%PrJcWOE-pFw`=)O+wqLaIwsTSziJ&5 ztH&0iO$sn5KE)lN-o`ixI%dUX>q8=`T*GU@!>Xqz_<7yOO%HyNRE`>8rgd`;dg*Jb zbPYHCMYFw~T|<-ug)t4R$QSTrf=|bv0HD9R7RuQ1rtA2<(DjA|(d(59j`^shaKq{M z2KZgD@Jgw+ed|NP&(hM$9bE2lr@3ntvAvKwqYj-BH;$>{oY1Wvau(^?}Ge&W2ZHX$S6>KLR*WzHW8l_`x zot-{J5|ksD)7t0`+_EgmEKYnpwDvM*RA;odcRth;Q-{pDK;z&6E4}oI)v0(2G1Vj= z^2`XT5rwG8L;#tH21^5`dvQJbu3yUqE*z&Oc<@z(*(HJ}HZ}{mi|bqNWa>0lGjZJ5 z+2D5E2@KBtB0QKw1Ev$jSwbtgq7jGG@r1TX@;j6d*2~$jm3Q`J;^~GtyZ1^e^B|MT z44Tf^tFw$b1t1Vh7yaN?pn4p@Hm+bss z!h_fzIOoNfb#boLqu`TV!j{|VDy@QoO$yT8GwA2Yd7hdr-cdGeHj7=@-Q<}2?VuvO zX|870<}Lj2+%7~~cP6bJot^?QMDm&K`?B<&$L-XW-OWoJnzcpI9gSgie{eqKcho1s zA{ccFHY1!Pqgl41WN{I_bE3?Z-TjhZhR&jIBTjNs&>`Hxa|Oa469iDG33Qg(p~s~> zG$1c`%!!>Ax-o(2diJy|hX$_hjxGwMLT>}48$uvTM<=Q6Qpc7WgWCOzXmns}D2GOv8f9Ig_t7|5Bd@SVx;f|$ z$8oaqOqSiVt6g}T8Qf22ayk?T_XX*vPVkb^N*B^3ZZR^cdG`Lfo_7g}e?i)1YOxIS zl8u~m1@06}TD|OvHc^Y8)KVeY9WNy?m6Np5DMT(=f5|g9!YcvLV$clJ4%^Pd87#}p zZx`KWX{ZZxD;AvyH0#_^wV&6W`sRY${G#rXo_}0FO-$6Z&Z+xqK92PqY(tcroTzIl+UDKlOMUAET4)i<}F0A$>)u$Is8;4lbF`_Di`qf_f(VYT6dN0O!oyCZ_#?ml>3WPO`$a%u=mOEQ||b$uh7fYspTFqHC%z^+yNX8jo+PGkaUY zhXp7QH%w7+CyjxXaU@>8l9yP5t(y4JILlv`_Kj}Eh#H$?%^WoC4(lxrtBT0vFkOuc z(~_8k!gdxIw3|xCFo9!)R^v#fa@^)2B9ux@Myy&;G~Okp8BZW%w#+$g9LNqAaH8#q za+ul%{5@cCs#E$QkI~}(xHtQqU}FL;V}ZyI3mms60shwFZr>u?#&4P|5S~2dd)>O$ zINSZn9a1+xV1>9|yU)H}xKBrfw1_MC9@gy+-oIgs#_0@?u}W!V)cDTk^OLfn?-EY%CvKx~BCDgur?R4)pf&DDuQ%%M zlr9=6J4QJ$*Hcryns>0)Jc5ClU#X%al+F(g*JU%(;3bQMjt}dnG+Oc+4nD0*vV7Xg z*-P3FXyw#)^$iL)oh3>rCdoAfPJltbIBq{fXsU}O*u@fz(qIastS~ucijPR5m%x!f zwPwst6{&d^>XgO_>5;QTE@(-3FX={{Ksg*8^mW~}San%@!rvWq zwkV<*@yR(ZR24 zg2>%E=+njIl0CZnNj*p=jnNems|Pe+L|6J(JAoum^aA;e6Tv{wJLrd2qj)iB@*|!c zcsC%4h?Zn^+`Xlw0Q}OK#urF ztMCebi4Lt0SMQbt?(-KSIJ&)sDgm3$m*|pBEUkz!w-zo1@OPSO_%|%LGtf{Rh}L%K zQg<27OQD2nr&32Eun1z)lVaqR>=qYX25roZ;kJ-)yl498q|AsTXqzullD>ui8sXs` zs1EPP_7mX~ctJop_p{UaD}Kc$jPkAU++irWLOLMC6S6u-iv<6MEen-Bb2&y|)X+bZmwoy9&qUAOb4Si9sf(#oRI?4Ar;$^NJ&!+LJ| z2ZqAvx%u=Z*fXV$4U{9$lF-2*X-;VUALH|+79Qa~>uK5rhi3t}oGSOS18ExZPtJ)5 zY@w_u_T6MZu_d_7O;zP$86FK6lL2^~I6R@54lQ;J_}s=)x4DFw=N3~Uem`^!ZMU%q z@e{wHIHxdm4;mAbV{bHvGb1Z7#_?#v9x+)sgJEC7|C@X@UBxDZBxpP99Q$8A7W%k9 zFcFG#&KESQn*b&_=O*&iQ|F5yi=T~`NiB26%to4(Hv!`AvD2V@SYxNb7#gg+;QxpC z3J{Nn+ChE^CdbtM6%LcpOgE%q$^_@hkIluAfP-KT8B`tmPa@Z64;!DNettLVMdd{qOR6iSQ-iJ18LEK#HS8 z;`7;W-YkJY13mML=$^^ehg( zY=zLKxO_K^MNm1C4RY@ynJ1Mb@clZqe_QYs^a{i;2$Zq}wh{-o@u}ayC4sGi1Q1i3 zc-lah;8%k2V?Y>%ZUzgb+|v5&2pB2f2P_a_b4YN<6~;wE9F<0%LrN6NBlu|w4?e8R z@6rg_lX1S$8Bo*OR~^$knwt`b%%-x`ZG7rSxWxWO=bLX)ngd39bzYw0rZ46eY2stK zw`ybm#mhY>Tt!w-7xTf^#cX|KF~{L=bVh2C#r$HSjL^tlHv~rFZt~k=3@U61@zP&L z?N8)_KhZcQJy7ri_7-=hHm_lVSZAba3w1w<%cm(qIy*he)cIj5aP-O|IbI>yaExPT zM(CQ&Bu#F@c^PVbT`zXFz#to_aSGcGdgB{|H&v-OBrDyR_)8S=_ri}$xarTXF;D9L zr)A_WoE>B?YLluwshg|A`4nlQ+?=7J_)quI8Wq|>u-SF#FY;tG9 zEcRT@H^f$m<#!fmc#BgM?2v!CcyH2a$TuzcA~($olV*15GAL*lIaX3>m}1BV;E%}V z77;;bWtE09e^0Pm!;NTHo*>wp~1^O8nMxn)n|SxknMdb&a#kVhHgILgRp>q|nqL?2}`_k4fe zmAE#p?}Co{k{st;f4-xx{k1MhC2_BUZ}Xs^3ZnQ&j2@e-vzET%z%3IXP_a#j^6tW^ zwE1)}czq`GR}?u@h8szm&biUWh?VrQ)XVWUbHruunZn4nWhw62Qgr$VapO#xXbF>| zD$cx}I@-)G9qD0RoY!2z!>WS#5_&)~ZD_pYtooOHy5hrUJ>8K~3b)yj7&{!j>s_G9!_az<9;vuH@i*7D0@2PMS)DB?&|N zTY_!EIAQdY{alRoO2vT`*^-cF5TFCXJg3)9aKaYm@9>}~eER}7%?&XO44|=V1%|E}qKhvXx z5e`qAU5*isyHM(z*CMJlrfn8^E z<9~y{Q1kJi`%Au?SGeHsTF0M>-3|UqJzR;;{XyZ3@wpebH>iu#4Zfwym$%#{pnSG$ zuHe2)Kw8617n^(DvKULgRK3AvsU(REX>s7>4#d6jOBN#%MpyqnGUa1E7MqO_Ca3yK z1Kxl)2yew-k<|=jN;hi_Qu>O2BW1YpGc<( z>#|&|jXmgAV=xmjVRM^X#WNL+o5urkTS$(&5ho-&;{kjwCUH)MVROt)toJj{DQ0ra zUEdu(Vj5fceTuMMD=KC_K43tv*(S$!qn*5HOpxNW3bKIqI!9@^v-3Jm`hm7W%*|Oy zg7}>8gVR&WY#RgOrbRnH#B&k@juUxoClW?TdHcFnS~1;vW|YeN_m9=8^1k8>7JvW# z#N!u$EW4GECi70%f&Kf5AJM*Z`f6)}Yh_Xv9dxZQKi|YuO8r2O69|Dhu3(Wxk$%Km z8xtM3Hsza*KFVfXg>B7OXb_y2ou4&ZBibBi1cdF0Lsh7|cMM7B&mb471ZrJAHshdK zD76l=jVCd^z~G(>1$j)bv^S~DQSDPO&cl;8CdPn0vh3LQ(Fm0HThfwqW;So$yxkb= zt@X;JbbI08n&%y^d12ws5idf7QQnHNgO=z|t+9xg!&it^BJPWEzFUe{T;W!6rMNq5 z*YZc+gw>4-;=_}hUppy^%XZju`FQat@`A9~_d3Dk>MtV9=!n7Mq-#J@aR*G5Im~FS zO^5&wwzYw?y?+s;abM91P8Rx`xHI9Mb;r_{g)Tsp+e>x9om|?eVLxP!EeFG}VGk6q zEFMc5_RQ2K!f(?t#nFmw%NJ8Q?um9j1r?`qYq+Oqsw}*KTy>av4F9a`r*RqD_|@@R zTv+!cfD)jzSrSLV%&|rn+;%*=j(iygOswN$SVh9?+(LFtJ{cA{gys+)hKMS~IAX>% z*V^2QPOtipKq>5NB8aMFg^g$vazTPUG0MrX+P<|ed}#Vi#9y9vyGrQY799$B4j+bp%g};W7T3 zgVHHtSuX!mJa}JR_L`(@M^1L{3jPPhEa6tAj?D5gZbYX!5^s^SsVy3->@qrSoXz3f z<+wu~%v}$6#IofsznIY(j*4pRvCV^&zADBueK-15(qjIM6vhLDOzS03S_XU1i{WhB z4wZogY@UCswBKFku~BFIS!D+*I{Sz?rr;ZN10zg33Ms;47q&P)IQC^zV8;+8&34je zQ7SlP$2mFV;Ax4@Y zKAEq$6eL03!$el){GFM!Vs3D+V=^1KphdVX}NIVq%Hl9RKHVsOjv(3L7VcMw%1JF|}xP zu2=QnQtEOOLJvMGr2PUnos~Ez{up0*Za|6vWfM;usC7=SleKMRR+2?OuUdYU#&CdI zq%njJExT2LTyApnj%lmH8c>fJ1}@hV?IZXi`As*KPq!(8s3qRUp^~FNflI&T&e#=U zJ-CJk-2+r5?Mv!~X_nntXCYE)!6#zrI@dh&Z9Jk<%@fh)fT`_&fwWeEqh;{EXdFvU zJaVf1L>pzp^%p9@c1Nh6w{&oURz7S>5;h0|v)5V4uy z)A1)b=&$|?E|EN>vufQ*wI=CEA}X-+&uNc2R>pP&5;q^~TB_9V54b&n$Vr1H<*Z^# z47N6w#}c->-O+5O%&Fjw5RYy{mb7yGV2j+@5cwefD%x@~0j5%n7+pHs6))JtlkIA!BX`{A) zoeR{@MACjm_1O}f4gQisomRN30m;&!8T1$GxM?EJRdGn>C_etv*y{IxgfM(tl^J0; zS7nY)EI}w$IL61E$DDr#jxsDf&Q%7K={gQUL|E!B?F2L%ogvC9IlxG{J_FNWUN^Yd zcOgxrK}?8}usOt{W#b_|$n(F^Sc-(n3uX<6Rb|rsXPY;k1D|46kYLZtU=g*9c>33>l}`#cY~j!5XIUQy6WTJ7&|&NCJ5-@au=xu*+95;@S4SaOS{SUVS0=X{ zcAoleHEbQ(3Moiz79(_zcA{mn?77zSC5vXvDd^>AE3#^{QOFB>2na*&^>L68TTatgbRC^Ro0bGCiOktw&1A|jJY6O<@yY8@{n+a=oVeX$2c^QyKQ?uQaZ+aN4DEx)@t z%Z?cUz~Uo4gS{FC&2#h3atC4FtF#0)gpmKj2n0F^6QqFgj8r$##)aiDuE!baPpIq< z=pw|o;R?PIS723%bmAbrOu2s_54?FY=`2dcb|d_CI_Oz$;G>ys<|Dawh69!UtIMhL zUJ0~_Lew-va4OT>m~^~dAqhra;NB}&KSliAr_L_)naiV6dWq2bu1p? zVc0>0CHsgpap?I1;)hCMq{t5_pQVE|6NA{)AiG_ymWz;5)XaorKVt zxg}FI8nGa+It>#GE7ks03SCF-!56q`UeaAQ90XbvZA``l8T<};+E~h@4}BEBR;3(O z4*d#xb=k(xj^?RpqWWWe>P0Tj-7)ePW-An@{ho$XTFgvZl&z7>U-hv9i%FIDFq2-U zYk}B#rh`XDCs2Bt-Z#|jh&Z@iCGC327|rbQ)PiCY#j3U<2s+Mdw<#HvHFbdVl|he* zUwm~6j~ROta^OP2#szMV^_(2W5Y7X|Wx>}OeUCPw68|)GYmU@n6>}oS7~h7RolU4r zgW9H{amwr~toCY!_;*KX&J_xEQzd}fL#vkLZqiuuNtQU!C8n(ip7qkHRwWFqQPXCvjj;3--Qdk88- z7(LdcrnVv38^3`$;b?7PmdKz|+*LUfecED>yTCh@P8GO31{vEJ z8{!7KExp1|t4caIJM=To8KDW7+m4d9>rbSVjmnKgk=Ks!0uIjNIFB#m&!K)ACPL9@ zHUrz%$$KppEY)o#jAh#-X!x@V63!4TQzYr=_nC_T&tlreeT=3+o5JrJ7qKL4E{e(p zx6M151fia+crB&~7eS~yGqZ!>S{OI1MG>-ERLF2f#w`Hr)N0Fv_l|;Jcg(G}zC%M- zSP-19y{_na!?gHDw+Y5=UNJrNatF^pued2Wj&_r4fsJ(Bwy2|o(n@lw0vB6yiE`WW zKhMTRNWXtSSwRH4=;npP;r;t*=KlRlYSG(lSy+*h{Q8f;Cx*$z)a!@JaM#^_id-kTW+(x6-|;PfF-tM^GChdVZo~wteo5u2{P0^#zou_@<>(G){}1^Z=YYTn1qQ@ggZ_fM7?s2*|GLz^2U9Lh(? zfI4(gIHef|xihR6Rm9CqPULY(N$2+Ox1Dg#UvMAo)U3Vp^Br`Tv#PQ+FVio2Lz z-Nro{?*K<{+q4+hiKb_BfJ^WjFb!x)OdR?x?(O{b z;LEx*ek5T^wvi_LbX^?Qx-CQL3BEi2U{O-r_(ZIgJC)7qq}82_RhE1a=MwxnKjb)b zF$NYn)53LDS@}A+gy1(-@^TFm&-E&COTWzxAzRebxYB3IaShP+`(lnuzk+@)OS-6L zZ{t&!jw8~Hc|^%_9sUIgFU1NrlB2Ei=`5G&V_i_ITadS zcHK&}RqDFQ%5mYSjLrA(mt&bIL5lBC=-Y%863P|CnvDVHx3@CUnW-_+Uq{0>kSYn7 zZT*-bW>6kW-j$a-IB|=zx&}#qik86I^)+{I?fQyxbRuhuy)^&?0zfFEcSY@!V>oB| zZ0u@ZoN)>4G}?k)xD8KR+oMC+XpHT=98bUDwlR zLL;iB;L_fpdz1$D_q}Ip*>!)#^ARAodA8Amhy1*XZ;D|TePuDBQC(l z$JFyKP=A!P562C7ZdU^$U+!?r&;NN-SeDI=W!N<(no|!i)1sHrtBq5rwv3 zS7y#xuLm1+5y0J9VYVz=pbAypHZaLtALNa<&?YmJm^-p`k9nDQlK)(G2$QAC7M*^k zF{BzaHa4RK%^{ZIg}M;`-J2QXc5JZ*eTxKX{+Pl%I&=CIw*kCx#gy;?8| zKf`Nn@$HHnn9Dx2Vi@E>oGk)v%%C_2ox=-$aBR4K7@46XpSiHWjdwHNV$j=)aIbIL zyYtSSW8=juio5Q)`z}t@K#{e{qRDrJo_CoiyK=vFx;nqm7#=z9-q2Lyt+x`+6WCcADalGv^dMvt=hwpfk?{WibayVmab4$q-xrpP#S#QT zkQ8ajT2rzBP!#o+C0UY5QIxFMqGb`5WXkMfi3LbdBtYI>h~k>8MZ6vD4{frf%G1rjt&SG;XIw)9E;I)3lv-I(1VgdYJwFzjM#I_wFtzI!@A= zE@ltz-h0pcJLi1w&z0c~ogh~5q?;h^IFo^;K@m(MCL0 zDUE|WB;eq#P-+wlo7M(!PQNlILp&NVH6W~#e-9;BUfAJXx$$F1pT?cNYlW#>ms^-R zeW|hxC*_67?l zDim=GkB*M5i0|NnVgcNWNJW!aB}o`F__1Ls@Ny~6s&T(x zHO|f2leV7;+7>2l6!cGb=EAha7n;dEd_Bu%eZ#M#H|N+yzoCqmWXtTL1&%GVEmQDi za%HyDyz5nj$-(q1x*XL7HaRKIEq?_$8*OPkv!-n z3|obywvkI{i&I!tj%GdCRkc{HY+keGGgQD}JmtfPv&5yJRsD}QBlBMb8(m`A$x|ya zkN;$Sd8IRH5L->}cf<-Mx7FvBk=@2O`{45Otj-4hKlK6Y)l)qcA3m&2X#eSzMVQvH zv_x-*mI+p8+H7m-rlFzVHr?}U>c&9A#i{uDNE>GFZ$`%J^evHKDvj2UdfIh1J zsTo+cCNY|wX`2Xz1Hinh>MR(XJqes>MTD`NMF{N#(wdf8*KKQ(jifd&4I=>r5UO?9 z?&zv_hkFe|##o8$sl&6ob$q*#q*qh^K|GK%?Zb!{V%9y+ZDp%7k2i5LM9%o0n_xZI zD^@JS%+uN{1|P7h*rle=gsQSvqQohmx@ zkl8l@iBQ*t<>e{gFA0;h4LoJXc^Epj@)&ssy4(?KtYuq$eJ8DuD>dB@_HGpAJ5^!B zXSr`jF#?S^j)4g-B$T$WqmFUS`KoZR1H^^wN*dpRocp@t*xzCMhh5)w%kJu>xq;Fg zc^<`}plb`iWViO?Q4;hc{(-K0sG_sn`-rwvu>~Xj>N^jL+|6P3>KGL1O z@nRrzd-#4|x?g_0yr%3yNPT$rZj|;aw#0$2^*O{b7LWM5P7y7cvV_G`r{)W^<@=m? zD43yHq&u0h));#v{`+-)ctw!o1?M`>R6*eOOA*A}0qO9@LyT2#f*<3ntKfk`7J=1I z`|+4Sm)-!a4@T9FeSCv|%Tl-yGUI8I zlvYuKi|&o0=GlNlr?FAJqtA@cb>aVDn*B?^Zs=Afl+tWWMa_Uc&)kB>M#2tpUOg%8 zW=eC)tuwdi5|k}dI2sT$AuyZQu=BH!a1J2ZEL&EOb#~TzrTIHUoVFG8n|H3*&cD-! zCR0;P&=^7==0gJrxL|1RF?)u9!I8bU#v@?U!e&EtDqOr_IWNkz5!Mk6Ifn9#xd}d7 zmmY~CM9$7S+&eo9@xVEnJOc_b8T{z#!`J}kO}RKjf4XVA9AL}4Kw{fl7;1__wE{EZUGQvVvnYY zkXi{u8-Wo=cB2pzNEpN2#V}`m62X!lL+Z#Oto=SC*$DSNT@rd5CQXtqoT$fM0QrHG z$E~HTP|MS6+1YVxBw4#|l{hB5HynxuB5jR3?r_bkcbw0^p8hYH$L>bo+fes*Z*X0x zGq@~PnK9p!iUxC@QzDkQx@^%_8?{codmcXvovGXIyoqQlPb{`N$ENPM?WXB0-yBPG z8=0rv+wqG8v2eGith8*Fvpj4bX-_?C{QrmLV$oDd1u|@@gNh5&rvdAdU)JZ(at%|! zeGmfb;&SpoyE_>*Yl1Q+`5n!k?M^a6b7`DG*ZR)s2o=&SJDlS=+1v!5Uc?T-S)AK> z@W0s@q{AWCb&|9;8sF2QEu^XNoRn+g6=72E~7x}NH>BQhnJ z?~uWHbo?E?-h=&okEj1xJrcSVIq{=qvbLm1v0d>uXi;`@HhUs^D8(^i}XC_Oj6%D%L8nb`MZEu`pPF zq6)svyWLGalYdE5*~=Lq>G8Z4254(f@oVbwFq(!Gn{^s`Nrh*yu=mDG1~@no`lq}U zP4nudQQ;p_y))?&T7EIwNsa?}YVRm}Vy`v8ZZ_Jb!at_>1XWI-;`ep+AC;(YYx}_z zI{Xb)J;8;c!@DYl(W0}9l|Q%WZXT=>+Z~P5OS=s3Y|8y5$0lL2{mo{ zmbLcUAIGrkp&7)DWf*^C`Tzf~VtlFEL>*WPVBFG%NG%O)F=FD;PXPW;2-F@=gI~#+ z5){TIKv$R+VqT=zG@=L#N0$P`EYLHlonx3f3C(4xNzvNOk+jD+^^;WA?$!IBMba&a zu|WioBjuI^C;;hE2UQfZ9}}twW{*Iv7kCA#R|$9pmz4>YK$UX~h-qRMu)5w{c7>lC zo<7qMgFf6CML5@;Ukbm+EIgl!cEx4Xj&4((w<}R#r05+=?j+eA$^Xh6U;BtViUx$7 zF6T!0nm+W4xfk;<7G5mASbA}20rwu_ai1@rD~rF~6qDwG#IKaZWwJoie(QIS5N}?r zee{hTB?6J*Wb#niVcMhwWsh&LxWYc1dTPl1+DbMOVWF3=;1gRV}vcY|CU+wTXl)^C&$?=I`4o z$-HtIgX3CeExI3FB`2566f&UgQ{nvqS`9x&Hv;5l8t|j_;t`;KO7rQ3mg$-6>Frdg z@LubY@~)jNGkt$vL$IHt&Da$j`xsKEAw;|e$HR?v_{<@S>C%-b@*s!OL_03Ntz{5-x zJja35OFRrrB4e7i6?oQ^SW`-oFc~pWl&*z&Ba^BXM;_-`tZ8MDiRgr#Uf5K5m{UVC z=gKA8V(;}dClpkNVU%jvkI|f-bL|ohir@T;Z&LPTy+n)Li+>3XQsmv#(N2wMG|v$| z4Rw`31u5#CmTuxMGhVK#Sp#DH5glVzt$9UB1ey(hK<6YyN6gNK^~YMY7eqUyj^;i@ zDp@3oq=ikLjEGZ<3BEk=9$KXJ80tul=SG7r%1CMP$O?K2Mg|36mO6=#90vtUwIisR z-+8l1EBe*U=b$FSN7ur6Ht{v@K^JlthAtE@6fWd1lv?>OmSOZb`m~@>Eo)&?hDc54 z4{cqe6FeH`R2KHXu!Mx$$`K0YkTFBcgo`;W&1f6Rdsm0UD1KD<;TZP_Mu87w_g8tf zROwzfVAv909-#n3I$={?vJ27OYLnG}m#$3cJWZ{4dfIBs!=-AZJJFqLV4?9K6q$mR z^bIRH9Fg_gTo9A(y~SMa;W%J7QxC3)F96$cwO>ISVgBIuH~7&}gg7Skf)K6*mq^XG zlYnK>9e0=-))3&!Z+ybJT&)T7*L1iCnk*|~cf1mW@rc}!STw{;#!{s-i?@d+C z5{5pS-W@kNg^n8Iqvtqc9OcD;$RO@`b-C6!5JP>Yz~$UoFew}#zU|sl;u&(5wj3mF zG?5JPb4YM{PSjp~X2hsCHhrjU<=8x(a4Ia8P(RVb)Nr9A@VR2R z?AesSWDvucpMbSCs8F7;9y90moD|?b37(PaK-kCbx^sotD-aQ=@LIH!Tdd_7i@1zRPDRdvjxI-Mqc4j00*~)x z`)DLfQ@at?IyX#PL45QgUt{#a=EF-Q*biK2A!)uqZ(JaO1aQ{vdN--4NRA{x+fcY;rk1j0}ES4xa^5xw;YP>ZqwPXhS zk9XEJj%^}ioqEj2GzyUi#~=&BV3mQ%h?6V+jMb3f8m#}mI@kfEeHd^eb%os!G32Rv zg3?lgQ0VqMLx-daVK6igs>EZb7m6;vIXdwUMKa9-j%R0e*rd76*faPJ@jPy^+m7U5 z1BJ~K?4feM0V?C1=-~Lkwl@YVG-ps5Fwz_`Fgq))fhjk*##KT%sb6ufP)gDQkS=?} zDHX@`gQo}kM(>@D@JN>vdvcFk;AdiCC8A!!UZ1kkt$(RqZ^owIJ1Wm?zDb?henU-f ziW_>4uFo%q9^QBaaG?+_Pj_azAqr%rSdpm%6*!OgBsYBh=Y^?E0C~*?=E}MV9qTjM z9Qw`)epFl1fs}g?7i55z>J6V=qIt*Rp{*#<&dy3C>z}rJ5ORNjyyK>|{AxR1FLeDFO_?nd!Ku|!!Q*ZH{2;S0Iv^U))gKS%yt%ye`iAc@^~ zz7X;h$cNHor`j62kT@JDAD9z9??38@c$!!9Z9hrU!8;`Qyiqg@;`%n>69-OW?eu@wbNJ1`F*9$unx(ce^J{)MG;=T2)Aa{LNEQNewe&R89^s}+Q!=1q0A z=HhZSPe=pL4q%6(8+NW@{-=(0iHj$2V!I_@D~!pD!)_1q9GdswzzUuC`?%+UJKXY$ zedG@x9qeK3cJRZ-E)QLVFg%PMlo2D9cO#{+C}9-PwGQ3o`X5n(qmfDu>Owbry0g0O zOr$M0x~MJ*t(YhfH0yG^5@+syFm;f!Z~8T7SnSgB(hb^#+0z`3lQ>#TE%jJsMw>kQ zzGOVR%s0^V$e~e%vGeE%x(Uyzb0)2_DK$x}&G3!P_3Dt?)Q%#}`#Y5gLBlhN2?8v` z{S5Zkipk8|koY(D@G#n|#AaLc*&k_Wgt192poFrflmsers93Ej&>eph`I-DoC>lmB=D!ai=aA0@H150J?7 z=6Sc4{jVVb6$;lS>9n?nK2bujFjT_*I=+j`$BVdeCroLp{4{#I1Q;sgxLsn0b^WVc z4LGO@C8|COR30vW2C0)yf z>4O1E%+!v$8j;V_VweQ)=6ba%{(j549U-O9MFy=B#zv<}AU>?cCP{CT={w|&zO2NG zdN<8nb)9NQ<0`Pcbh6Pob)u*3xW!Mm^BVPH3#E(#*92=KNHZZgFOC+fML~P?UW&a> zTf0+zu)R~Qo8wmIqxsvz*XyuvXdF;~OfBdUNuttVD|r_cJ0j*o6o>Ul;TeYWCvt?6 zEj+*!o-ds%b#j~(TltR;gRTfRYi@W>S32l2;P0DUv5Q#_#g~U#rA6XupC3A!6KGS) zb&4o(A%`QMcbqE|ynCHu7M#AG0JiU^ETU#{x|BPLqLpv0d%6@o*s3h$Tf^L~wnm6p zP<{o#d5Nb#nLmAfXBd^Gp_i+# zzC--3))k*93MMB+*yBa*xkL5qs>>Hub!)RHj?*Ko$=Pj zbJeZXz^GI^o6u_c(z)un%JB(Zbv6@hw~F8G>bBhToUNxn7Ha)F=PEC6c?A`(a|*vZ zexQ4+48zROXmJUI5Iohyc+Gk;Nlpkag~M1`Gqcb%y#j-_zI76*ksTgUgl=XD=Tx2i z64$-1oD0~_BvqJGTh1rj5;ijJJ+K*ll!EUDFrsZd?Cwlu6$p8q_|&c-5(h_?_t}c+ zUd2J97)4rP#x-%v$+1}L-77g<%;$_#Ip(BtZ`!)D!*n&@j($MZujcE6U7rhx4O2_D zKIi&;TdsHO^ZnG;ha~!^`RBT8CyVyIht$&t8QJdjZ{E|e|G9C0FaG_JZi+x{^N@ z3o1u^WQnF6+bViYFRatE|3aqKs~T{8j^UjSqR@g5x#@8GSljp~#1l8VQpi@={^A!_ z*M$p66E)kkrwEb#ag|c^Kxb5YcQofadmw>xmIj@wd(dxd;LAM^3eLsh^-c} z19Y?Ve)YkoNc-f&-pC#O`d`hD7fL_Gxy>7R9UrPFwnx7F zMtMk<9iv3N$G!t!%r)}km;AZd+GFb)Q+@!nz;@Y0)yxipUI!7M(HtfWE9pud%^Io{cUPqtyUn!Ct3$);M>w%8hZ(|ig*^Df@6**0q1Rr{g1tS3c|oGTp% zCsJsk@?MkM>Aj@S^}UZiY=+y8m$w&D$O)JW*d!B7Iz67A zcO}3Qi*Kv`P74#M+wKM?yG)f$Vnv?0!PwAY$>ZV+@sO{G{a`*?XwKmy;r@Br zHt!2#+HWx}OtvD3+B)Uo9r#4TdIexE*>o-ZQ#fDn1xnS@e1J)?7+OOqrt2fdxPfdl z9;Z;YTN%CMf+=JuBk^5vi)})lfvpuK>7UDMvcFg;8jqWHSKNL1&5*VzOHWmfyou{@ zozR-(&5#jULF&+J9+}&HzfI%pY<=(j`}{0fKeeIubTt(7CS6WMP!4X!Duq23Q!0y3W8jC-ZGPsSe4(n(% zf0W(M*=R}-0_dp!@g5^Milx#BUXCCXBwy$}Z4Yu^H`q70=@HQRY_biLVF5gJ*mySx zM&s!U<=A$ull@`SrlN|4l@q+Zh<@uL+G|>W2rneQvI$9>@eM$j|1nEAwFM;zv)1<4 zJ-%9jqZi%CojGj@{-bNLC-(8RaARGup>t2bVk*IjKYMK+vO1sZqN;Md@C2;;5Bew9 zxF=##h;@zO#gKE(+baBI;Y{v~RCuS@R~~cWRW@GR#YrgkAo{vurlwofj% zP&a~iD$G(+2xP<2a)X^GLXOVzNNqN;zV2X`d{9dQW589;Erqc@-o*GaruD;2Xjxsp zhHv`tF(mi_(6_ri`UzqA%lMkKPwGiQ2%s2fd-tA85 z9F;HsK_%`#iiSi6CE1}{J3vdOb~O1XlneZ8#}TfDi>1&nHU8kKrrd6YK2Pn?9p3#g zxlJ^@t4?0S*3YMKW#yIhizzT^QnX0KVTfO0Q*E?ckO~tGwXd6*LAzA`uFD^~zAHQ4 zYiCvOUEb83UT$Xf-DM5~a@iGYpsmmDAWY@!?g$$HkP=SdJLkmKK(E7gq$MV##3^GK zTf%S}lMjfDMimTo3Y5W8`+?EUTKK=EtzbJBh0UVR3w)K1DtcI<@I%r!=6IU)Yb^q=>x)BzJ1D#<uK1#wKc&!)lfsUb*f%_m=+>}F_I;UjF0rBU|@!6v} zI#R(1P6fDI%ZX5ZZ*sT{C_J`H3dNv^uyXR`*&yU`$W&}=9>1JXTol!T=om^$E60DJ zM52dVTEB63Cf%KwRLZ;yAIPY?#*wp)#nu!@OT>S?Gg%p?gu(jGmalqx75?4(QjYzB%VPL2jjdom;(YMsA@C9F8uE;8;BRuw^B*Bjs=l9~G(J zR{jHAID21=Gv!x*^j!XBJnX-Mfy*{{EcPsppxG(KR=`E9fa_)jJR}oNGvh?`D|*bL z!Z}Oea`X&^uT~?G^JZ;t>@!9GHEll43sS>iADpoY{)oz2%PM$?o*KtYVFV-|(O(>| zH`Vtz0;k5)f7EZ^f78(t2J!LSLr!pDMm@yUBNmpNABpHVFz2)S|0+Ts(~|YuOxo{N zOUhlP?sdr|WblH7NB)3TTn5EaQ!yoSjO-m;sCf$Nr^!L~fgBG89O?&LmtI;Ywi&^L zyAQ=Auy+O{ayh*#`Ivy;@ZcIBhSN2b;~BtqF2TjKv=uS@$jf5P|HS zzHvS1Q_nETeqC1HzKimA)5nfgZLabrBbhW~b;yQ#LJiUER|rEH9nmWn$pK|)*67Bp zw!4OwS`pTXWnS8#ywV0K7sm_b;qKNonw^Q~c<=nIt7O+on@w&|){D?G97M!2m7Inez5pYZw)m7Zf%y5mXbykU3rGi2@C zrnDBUl5q{D*{5&P)wd|FcZ-_f!L+LQ?>y{|CRJQA5JI&1%}bUi{9U2s4N1us@!-Jp z`d+rZQ6btgoi(`TH|1hK2zDbi+4nYbkq?(x)v;H=;B?dm0!u78kGc~Lp;ypQpQ1(XrW}0ISbvp_bub*LNSG8 z{|UX?#wi4Zhx9Q}vw^gm+?We3USu5X64NGl7D6m=`Y8$_MeG@&9*A@)cF#R+q@7c@#&P!r(wg>zISS77k*v>GBg7@tz)4cN|3Zy9G}Dsz7tB= zSO(UM^%{A&g$oqaXU5o}*m0FXz061Oi@o!TS7b~mD=W+%ChM@sLjxImk^HFtgSf|& zWEreIAts({UCh6W#k*2}Oc`8zEjQurvEf;&(FYx$#EOnB^33;;0vkG4qbsKjP?E|K zuAsGr69d34>tAXnJv+3bsd#{^*t9)qFRFP?>xLAXj)vxYN5!)@tN3JQW*BSAM0RBv0L&bpF{9w!inA8|6>>5sY6YiO4cs-bWa##I>{h6PPGvie(J$zF;La78i3k|dr z4CD0?%|{Gr#<&mYv^H`ndI_np&0L5Qn>ZL7;g^Ry1*a9`0?<3RIcUHj(nOnN{5)!3 z=Y~2%XrR>3mC%71G98#rTq9g{*Qkk>&_KyGhC5Y|Zxp{;1(5IC&&eKZ#E|n^>_w$} zO{Pz7$@yt%idDj_I?Q~%I}rYe#+smEb-2+m=m#Ai)?v6_PhL^-vXU<;c~(h4*6m0| z;1K-ytPWWTQA=m$U(>t)QYEd0!au1K1uEb=Zs^=)stQq+AU~km8hrG6b1xSe;=(Ja zRoNhet7(EkJb#LRD0xIp9G*3T-bTZ`Dnx%z4+$$4>qayh9>YAUu{oyXAM#3qpGL>I z_q0Ytr>B$?#`E26nJ&`zP~4hmm|3(~m?Gu)Ls$YbheL*+iBit*BDCd%;*lF6GxSnX#0$U6_IsWCtr+AQ;qEwM zRJ>$s6Y(~W_o)U4p7R<)gGb@a-I4H4eX@J&q_&mGjxkktXU32xu}CN0#HE2F461w6 zCEv&R!I?(`k5p-*Sp+2Zl3zbS#~Bc zz6?p~BJn9WmZ)Ym(tlKBhN?Bq)b-G{w%A&zzsJ6ZQ3G|#TBw1pKe%#4hPb#M;WX-Q z1P?%E0wkETgxQ_n&8qqoB}e~UiLJ|6f9*GQBcY*;hLcv;i<$~^CYHn8>kTmz%NM&h z^h|=+)oL^n5;W0qW$izw;=iQCs{c7%{igOhn|-U-s+3C23%*KiYSnz9RDOM|+`qKp zIHQV1r0>kQX$*gq$rcg!$uQYh^!Ce>a+x|b&6=P0@r|4ppab3g8ehMLQUSPnms7lq zK<1och1Qa@PE`TUnb)tV;GT6MI{oJ~GTQE(V7YsBZ*zOd{Y{ zLthr+v9@$OP1_+Lvc3!_t$TFJzulwB7JIRj_HDhHScQuT-^XOfXNc714QUu zvx+J4g*LN`#@B z`tW2^%8f@R)AHKKgnF}zv=5q3G2CK;d- zfH(~-;rY>bmFQ74!8}H%2Y{4zif;>~;0NX^#846vPvisL_bB+UaShV=N&PDxI3Rx! z0?g_E5baj6W@@sbNAo4RQIGCd^7ob4cKBr#`e`M0l1NJojqHX=dJe54DoEq@J8m*| z-=UFMi$F^H(FtWS?Xpkk>a+^{oUZ?r!Gl3!5ri%PzxAt@m%!FN{UKq z8i-%jl?{`&&FG&g*`-9dV|2Tcf2ZW%D=}Q@-{|TOl>84R?@)5Rk|~nakyt%k>ZYsf zOmx&d5xuCk{x`kEAQKr?$+(h@O2(9IQ?gabgp%z_L|_t$*El!P6}q!U$tETDD%q># z4i!GCWP_6L>YmLs8YMBwtKBBLNk4BjK1boF6f-Nx1GaBw~C@Li*@FX-`4Dfy<}{Z&vcR_4Dnz`n$T?t*aZ9{5n5ZM;ps2k+q(K!N`6<#ca#W= zkA{`}fqshh5&b761$Eb=&kpIzk!m&sda5AlOv8gxsIa)D7Od3a01xPe{Yoro*Hy}- zec6J}SR@q}1w@f89ADyYJ-trJw32_TmdxvFLCM2PM1w}}RF0jxl1-meoitSBuW)a5 z-4o7wK6*&`O@~raedu=f$=Ea^no-6NC@~d&v&oPiJ*JOvaU02;Jf|XS58~oe>Ok6) zhLiSl!HqT7p+ptd+`}btMB1wppSTj}^y9${V&6uUv<{XR%b4tz2~j zr43c;Rg69$ysKME6C>5PmN(R}ofCJdRKz^wVx?4>s*IHN;coI*14$e&mJ8udsf-nA z`PE9bR)IqW@h&bEC31}w3deZoiYxNtTWU|K1*J_qP1OJ+ zpn!&LrRTeDOTJLulCO-^Hk3!y&hcW6@=ArV!q~xT0c+NS*m4vqh1y0+E!M^?y`r{@ zcZ*w!qmvW&Dp#R6hOw~lngTi96>Ytub_FAZ1P4``QITEcA67P0s-x@1D&ytamC89< z9IK9Ptz9uu9KX7@fNt;G=*Os@xO@|%=mcBN+Gx0UV}UVOX4^@C~Cf$wPLMIZ}~sAp>}}rDAXn_-CB`$ zGUf4CD*wQgf{KMVxc7QtsPI~;T-TF}{JmPL7XHuZNcE3vk5}^B3zTpzssaVxLWZSx zM&o>=L)F)6hcrvIie|LDzQ#@bR1=KAo~mgZSMkA)Rnn$aicy1j@)cJZ9)UIAqdkWD z^dnkiyW1;Puf&zn-WpZNwlmfj@3a?o$!bw%*?YDYh4h7BZd-Wsw`6HeThyVqKK9;A zzcL$ND5IM~vsSncCb%-&ys2EgLbh0a;iV<}1L`oVdiKw4MF|-Ojf29q}j+C=oa2f zvVP%+t6?EbKI;s31WvpoO5T!g3*>3|igV(m7iaK)Yt{%y;6!p{f()4;lu9ija#XcxuL7EowhSC^fY$T zPSy>(8oOyP>xX?}a9iAmSZ#>46>jM{59S8p0Pro=WBpfFc!Pb&2J8l)57M2-br^Rem zyC-qRt1_N)aBp4TnsT9R!R12a%9<28pJINShX6p<$H@8@0Hm=dk{+9vz`CSs>(V$! zUu$KchZzTOw25yE7uG7b;_@j!<*9NolO&(1)}#F&Up!X511Wf%J&ALM33xGM4Tk)j zdF}qg5Ze&u-=kn&WIUKHlBp=BT*@Rk`MwIOsfbI6dABTB6`b6RkXqvH6d8T@h?xKvERQKT16{yhY5|{Le z*u_)^n+l8$cvV5^-eQZw65OHLdH_Hgl3ajJK}%5m*A{R^*CudAR%C546Ii3f(Aa9Q zaok#w$X*d(vNbvMP1VuKMqI|TN_ilSBuTmq-@u_m+T2;!b;H<(!BiL26va(9DX+wS!ZEgutw-YB)3|sV zTyh5j=&IXLbC-y(Vf%(cCu#}2%% zuDH2wIw`Ip>E#rki+E*r^3tZn$d0K-p>lQNcjWoiRvpbUDKu5KV1rc@N1!^ Qp6S_M*R$Q5940Q#X!G*-2wYBhljtTn`2!juIq% zFbB|%G|)_^@=WT7^r`QartO3Oll~3&+Nb^psX9}4_drr~D^J1U@;>(V7Q4UwU|gw~ z3Op~!dhh#1Mfp2UCLawZpC}4R{sse2@kpSA#3lsCG@v$>zpAauU(MFwR}BiGZtG#u zE{29}geAKq`L)0dr|c;?E(GPUVprr?531p`JssBUnw%GdnQ+#gB?{BI4f2d&E}XaL z!*ljIxnBwv!t?fdIW|GgqP-}`Q^8Vr!M-5J<=|qtY%de#zT#E9>I=oIvZ+JWzU0vj zr9S-+e8)NwQ*IQ+shj$7l(g%bsC2$sYdI?qS}VW)tbJdoccVRFuEasWy2vAn58Zy> zkGAmWgHC7duIKhs#$j5z=XcW;x4X^iR9swZtv|fmZnZnkdh6b2>#dcJv(dTRd9=~m z5Yv)tC5}>#g7NU&iW>x*Zg+Rp57=W4cfc|g(`%gdUCz99_Vs`zsW8@A(g#%;oGIh| z6Z6uiZo+Z}h^XM?0UK~XN&PNxn;VS#Zs6}T-oX$f`hQK#Jzg)Z`+)W)xD zWmY?mn3$3q4olswL};6F9Ee(XY-y((xJh!dobL76lgTT=3r|NP%w%k-lbKVijkZhM zBdeawzhUGN!;DnH-3*u$vUEH4l9Po~1U*U8)2lR>ZzUWNj^kN}5R*A_ju;dLNA4e8!?@&A{Jm_V>X0(XGbK8_mQ| z+4Vlem%GK1X5a5O9boff-jvQ7-rRKaXm0fP_>VxPOYluUw ziYJ~5{TV>Bw|8P9uz>{x3$4p|dUAUxa&s?bNxm}{F|l^dnwUHl#XgU}@mX@RI81AZ z&TA-k6b-xrZ_q`5kDe(Q;2ffpB)^40R_tp4C*{D%2td+!rtn+)2CUE{H6zF5p!8UY z%9@gDJB7W=M8S^-t6u?3pDS63*MV0Dz?MAfso$v^0Og(HQ7)l`5{?1hsd=azO#v6p z)Jy|l>&N6mIJ|I^V80Rq;)y;t);9h>AC~h;?V>}W1pzpaU6LSDu&&R^#2F`Gk zzlU-m^dhf5#ovbszk%c?k`IvFM)Ff6A0e@Th?3L;la`nst2De;Lk0LX~rOJkhkF-mT(P231%0LE@mYR2?zwkS9~goFnbC6+=y{>aMfT&AMJe{P*H$RG1$WjiS^(KF~fAzuMp zMjer$@vcw@JQyY(2Zpjy5V{BYK}U@Vp>9s(ulukdS92TO!)Xf%s=!x~I7nokdWa*L zr%;DA_$GM3tW=4vmWiqA1r0o9Xc{T&2GMC%tq}?{4SYyn>;Kkuom8m?T>9&(Hmg>_ zvt>97Iqk~-_wJdq_$Jsp zBI@>+&eBRssq5`d8=m@X-in<^d9oi{!jWvsF5*abX4v!O?b#1-WFh$>64|KXb+TKN zO)I~OQw-I*zA7)N*YaY6eNSF-L!;ytV-XbwH^_JRZ}4{P`($yG z=;df=Q5p82T^0n;{mLRJiNuDyP|%HD&&u+Q_quriC-^OLM26=iEI zyGwg+avu@_bU?TAu3#Fqf4gGie_{#8F5SK|Dd>&&JpD^I1B}w{6K<5gL^lfK;~X1z f2+R@-NLe+g0d379Dbq4EHf4hCO&MoE=hgoJGD(Xg diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc deleted file mode 100644 index 90c039e5f95bfbcbef543fcd9af7d585724c3794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3278 zcmai1-E-4M5Z6iaXKWKf!dEF3(2uAkHk28LVVDjjr8LuG7{W{kGacokyCfp|>ggP? zCr?e@`4`|Z|B_z&)MwuEP`Z1vEGIEjWxT%At@nPrx4*qj)NIx@c=pM&jdvAI`x_^d zj|r3ennn@<1E%#fMwsrCK=0`U$A)hNX3tb((=P?(UOA}rDnYeZB^s{?3v^0;EvWTs zM0=#MGOO%stg@%~>M*Oa8q8|EzGw7iU|wf4FrQKL25YQpc5}F1f4;>nm%1RM^;g`L z){jqDtc^%mUJ&~{;Gy)w%}gU{Td2+W2JQRO@)C<$a!YW^>IvQ8mKQDsJcz`=VxB9# zD5PT0uK$A`+a#T#VHin@?-Q7szeVo0ZKV3jleGE##nXq*@-GjUe_iQ5N?VWnlCJyw zF^yx`9F(h!N-n*CyJ&3k8Hex=yyaStKp1s)hLu=(-|QK+3Y%vOtjSvYrJl*ovQump z-j~=pcACw>2to#dIG@%Y(1b5z98zPO4^ktMA}tFp`yxDStPdnltX-=ch1}IA_Qx@S z&oX>{D8oQ%d)i;*fOHQ?dZru6l{|`^Jrp7m2YPBI+}{v2P(IMa8TdNf>}*8=?`-xx zS41wC((7#BNjixuCi=-Q-Cp_Tr8M zYAg~Rb);?-N)h?lq#c7-n_S|K9}st$44Y%G+pyA2OFPu>^R%S=O)LCO>ifW{<1 zSovh=kL@K+kF6^E%5<4=pG*E3F5wo#*~0m3$wlb-gX7$l1pQ*#>c}0mX_L&IWB5z1 zA0_-UC@2q1GCWo6qShb|Dg;;=#0-iC3XIc1bz(_{=sYf|I9w7l6C-ikAdd11f@jr zvYXbt(31|vc4 z7V=KtCA+#u-V>tz4y-WYZ_j``3ixqTOU}K9_xSe$K9ixe5i!C}%l#NjiMWJsifqFm zs$4{+1dD0am?Kv|PNJVy1jb08!A~$+Z!ZB-f>?K;)a00_;hlp2>i^?6;wYY0VibpN zAb7^{;0cN&wH09jkAmjJTD^_kJO#F{|Q*>qu* z$5g;!K8V<0TQulO)qyq}Y8Z#xMEacHX_%XoFhG2o>}#zHiCMT3dt6ad6{B zdu^>yt?VDs%{GT0*qNbKFYtUSd@wMMNwO97eP*q5%a14nEV&>4z}oRBcmeF4@B%j| zYDsFMe?swkd{el1s`-QC{7yS|WkRhhuICQu9V2F1%>%fMi|PWsJoWG~Fbd=0?8=ju zM{4qkLU#m=O@_C}aeJmZuOc*X+#8a3|Sho8Wmt9I>j z5mcdKaWtkt+hbSwO|TBXx`v?{^E9nE4vSpJ5m*z%_b8^(v<(Zl;get?t7;~xH{f2y zw_Up_ZoxNR;2V8tMd1P$czdO_tnY^AFuS74a)6zpz$z|ED6oDC_@_ftH?(5BvN;Vx fTD_O`2S4C}B$x=M*)SXWJTdhKX&JM#^Yi}!peeDa diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc deleted file mode 100644 index 065c65003a999c460c9e38b2a95d14047e38e9c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10136 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 Pc@4M4ZX*|4Y|Hx}tj9p3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc deleted file mode 100644 index 2045ed941754ca233a289d8811f8717b0783a663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5393 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc deleted file mode 100644 index 7f818ced5547b963b6440476809ef07cdd6caf2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4107 zcmb_f-EUh-6~8n0(~jdfA6?pRKTPRJ=2OF9@fJG55Ug%AScNg_^E$6^{F-&MVO6Y#U9lTZ z#c8+|x8YShEo0R)jcg^W`*wYzk*nl%->FYF@|8R@0$X0h9&UZAQK%G{aoZ4{$UHMd zW`|d%1z$8u*%zcyiKz)cikgX^gv}^kDA|hN{X$JHJ-TbF{9w5F_@A17GoHsZCGU)w}?_J$t^ccVCn;xGxff}3HDByx9_mhRmT;uf|Jz)#(i zLCcqcxF0-e2XRs(6~;dc%%^0S-=Gs16($TAgH_B77axcZ#e~Q`vn!VPNKA>sGpl0j z@sGuvID~OWb0u+D90BKQ?u>X}90TVKC69{};4(w*q$q;R4kf=WPJx>k&V5Im2A9*u z`mV|@1~T;P;dUSuyS$)WIkpH1((^x* z$v7v_f!fCM#FxCwx*UdrnaEr_>?{5Ras8Y^+KdxfG8Lacuh^zyTk;UrX|lUnUT-#n z@>)Br$!0A`lCZpaB`(J`=~Hl@Yc)k&-U_0vay?urw>rssGrBZ?;d~i^9h{?Z_t%2B z+zMOeD#S!nmTP`(9hZRe&3ZZB3zPX)M`f=HBtos(Xk9BogP4PyFt$&>iKThbZnWb0 ztMz8hugBNs#}+uU0CDB62fheotehB0+K!dG1rEtd5#`6tNY0U%wdKpsE<5{@Yp`RnAZy8bRR#?|j3~!#+_n+RZ>wOn~}Q* z_blwCP<8LZmhcl_<#Dkv5Tj9NFs*Wf-|CiMZwGH2ERSMGWoxsNrtxJE?pVxv?O8c1 z$Fhu@oXs$dFpuaiW^x|OgUe}3{UYBk9Q2aBgspb-IH<0KQ8nqbf|4a&h|5_b1O@U3ASEs@P@m2{a6@?> zW7p7hOwFQz*V?a`Pz5amVEU*%y9#sd6;Xh~4R7As!3DcUF^s;V1$7!OlDcY6Iu9!d!$W z_eOe*D#da^`_Tr%V+KAm`#dFoog!Z@8c$|YE-X|BQvkucP696yFB~)%Rmn|V?1)DO ze3{+k@>B38`IDg@?8#m=w)3b`CMw#`61#^QgT1^6-tBsbplNv5?F0kw4(5BFnCLT- z8b;He7CF+88A(P=p$<)o{MUSN%3s*;sJaxkfB67VyxJ)?+p|e?jhu^*oX|8MpwPb!Ysn{7wu3UJ7Vj62pOlR!&bRzvI zUJc|q4T1!#fb-gVJK79{vf9b&6#{h$Joy}{uF-y~B?I#Is2)<~DrMza{79-H12i{V z&DH?iPt({3AS$y2AkpC~%QQ$Yky2(XPVdkt#i{%rh_W?uDo;a%^q=aTwH60Mw*aN+ z*@pTsc*+T^kLN)OlNLK{%`gWsoHseoGUs){%p!(4_jrz3-1=3H&AI&Fh3sLz{r(t8 z9o$n{^i0}^KNQuJ(*&n4iJ^Rd&K9(O&#kemjZ*NS>Y2SPKmP};e@OssW%hyPNZ_4E z%LiB`9}>~;h+m9)n$-nobk2o8V^)K*<-PTs3*XE+7yn9HR6yQ(%EfQyluLj6pQl{f zcM84IM&;uBq**30HUK_@+Sj#^;#s6P@67H8a6AlAAyF92KA;BmksgL7LK0hKa<(} e+wQHrs{^xM)9((7hn(s0V*tM#BFqAvG5-t6=fYC} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc deleted file mode 100644 index 11e2678715dcf03eb1f237b8c69b8ec254a23174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1469 zcmaJ>OOMn>5bpMCJRT1_vr7mhJchu<2gXFXAQVMO1{9J=BgF0nqsa2w&5lL;L3a;m zSKd>&aNxo(AjkYAUpes)(411$J2N|*1ln@>tFG$ms;|0T_4^)y@rpir`r0PsJt~{S z0_8_SsC)|`BN^qSpb@2r4Q>=>WENIrY2D;@;Y5zc7Vi{p4ce zy{M;ghxTB%sbH!G)rE!-JieWUQr0aEi@GhV1S~kkAWLIC=(RSwTlHmFW%r>BH zFDc7PB`U8<85nJU@A1R?@#Mk%$?v~Te`&o*#W_pS3cfp&B%QHIRVq>OpR%M@Ou%&a zUY;s#0>u^V`J725(eQI3*~+lBxtQyPeY8JdbCFAxr?9}=Wg<^_e#FFdueBtTaxqv1 z9Pfe(iL`c#X)Ffo=%Z#dtxDGRv>|3HIgqWjUsb&I}M06DSla#cf$Fy;3U(sWyaT?kfjoDa@-E=bg z#yNHy^3KSN#{J8nL}PP>;fz?*z!n3DDYj9ZM{xngS0Ii$Go|XgVR+;skbnYHIB16Z zKw7(~=A{a{!pEs|DE=?hMKoZ%wzFjJZz8UNzR1H_Rj}}2o~NQpnNoT9?2Zg&Dv~-c z4{p^!RrrFHFG8O0hxH+FSAIAC_I4<9#ctI}`YbtMGOY7DjKM9dM5w7=HZ*(*acU;U z^&5ZYIrN>yu`pn&b>K_^0m4Kl{Le%qC~~|ka=cmO zc*&`5Np$s-ZhDPwUfbJn5*^$Ek5_bKWBTkCrx!%vVf>8e`mRZVKhNl!PsTjGv^~rK q>DGs0LyTaqb-ypFY|hya6f}7ggl`TE-@qpM6u None: - logger.setLevel(logging.DEBUG) - handler = logging.StreamHandler() - logger.addHandler(handler) - - -def get_session() -> requests.Session: - adapter = CacheControlAdapter( - DictCache(), cache_etags=True, serializer=None, heuristic=None - ) - sess = requests.Session() - sess.mount("http://", adapter) - sess.mount("https://", adapter) - - sess.cache_controller = adapter.controller # type: ignore[attr-defined] - return sess - - -def get_args() -> Namespace: - parser = ArgumentParser() - parser.add_argument("url", help="The URL to try and cache") - return parser.parse_args() - - -def main() -> None: - args = get_args() - sess = get_session() - - # Make a request to get a response - resp = sess.get(args.url) - - # Turn on logging - setup_logging() - - # try setting the cache - cache_controller: CacheController = ( - sess.cache_controller # type: ignore[attr-defined] - ) - cache_controller.cache_response(resp.request, resp.raw) - - # Now try to get it - if cache_controller.cached_request(resp.request): - print("Cached!") - else: - print("Not cached :(") - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py deleted file mode 100644 index 3e83e30..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py +++ /dev/null @@ -1,161 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -import functools -import types -import zlib -from typing import TYPE_CHECKING, Any, Collection, Mapping - -from pip._vendor.requests.adapters import HTTPAdapter - -from pip._vendor.cachecontrol.cache import DictCache -from pip._vendor.cachecontrol.controller import PERMANENT_REDIRECT_STATUSES, CacheController -from pip._vendor.cachecontrol.filewrapper import CallbackFileWrapper - -if TYPE_CHECKING: - from pip._vendor.requests import PreparedRequest, Response - from pip._vendor.urllib3 import HTTPResponse - - from pip._vendor.cachecontrol.cache import BaseCache - from pip._vendor.cachecontrol.heuristics import BaseHeuristic - from pip._vendor.cachecontrol.serialize import Serializer - - -class CacheControlAdapter(HTTPAdapter): - invalidating_methods = {"PUT", "PATCH", "DELETE"} - - def __init__( - self, - cache: BaseCache | None = None, - cache_etags: bool = True, - controller_class: type[CacheController] | None = None, - serializer: Serializer | None = None, - heuristic: BaseHeuristic | None = None, - cacheable_methods: Collection[str] | None = None, - *args: Any, - **kw: Any, - ) -> None: - super().__init__(*args, **kw) - self.cache = DictCache() if cache is None else cache - self.heuristic = heuristic - self.cacheable_methods = cacheable_methods or ("GET",) - - controller_factory = controller_class or CacheController - self.controller = controller_factory( - self.cache, cache_etags=cache_etags, serializer=serializer - ) - - def send( - self, - request: PreparedRequest, - stream: bool = False, - timeout: None | float | tuple[float, float] | tuple[float, None] = None, - verify: bool | str = True, - cert: (None | bytes | str | tuple[bytes | str, bytes | str]) = None, - proxies: Mapping[str, str] | None = None, - cacheable_methods: Collection[str] | None = None, - ) -> Response: - """ - Send a request. Use the request information to see if it - exists in the cache and cache the response if we need to and can. - """ - cacheable = cacheable_methods or self.cacheable_methods - if request.method in cacheable: - try: - cached_response = self.controller.cached_request(request) - except zlib.error: - cached_response = None - if cached_response: - return self.build_response(request, cached_response, from_cache=True) - - # check for etags and add headers if appropriate - request.headers.update(self.controller.conditional_headers(request)) - - resp = super().send(request, stream, timeout, verify, cert, proxies) - - return resp - - def build_response( - self, - request: PreparedRequest, - response: HTTPResponse, - from_cache: bool = False, - cacheable_methods: Collection[str] | None = None, - ) -> Response: - """ - Build a response by making a request or using the cache. - - This will end up calling send and returning a potentially - cached response - """ - cacheable = cacheable_methods or self.cacheable_methods - if not from_cache and request.method in cacheable: - # Check for any heuristics that might update headers - # before trying to cache. - if self.heuristic: - response = self.heuristic.apply(response) - - # apply any expiration heuristics - if response.status == 304: - # We must have sent an ETag request. This could mean - # that we've been expired already or that we simply - # have an etag. In either case, we want to try and - # update the cache if that is the case. - cached_response = self.controller.update_cached_response( - request, response - ) - - if cached_response is not response: - from_cache = True - - # We are done with the server response, read a - # possible response body (compliant servers will - # not return one, but we cannot be 100% sure) and - # release the connection back to the pool. - response.read(decode_content=False) - response.release_conn() - - response = cached_response - - # We always cache the 301 responses - elif int(response.status) in PERMANENT_REDIRECT_STATUSES: - self.controller.cache_response(request, response) - else: - # Wrap the response file with a wrapper that will cache the - # response when the stream has been consumed. - response._fp = CallbackFileWrapper( # type: ignore[attr-defined] - response._fp, # type: ignore[attr-defined] - functools.partial( - self.controller.cache_response, request, response - ), - ) - if response.chunked: - super_update_chunk_length = response._update_chunk_length # type: ignore[attr-defined] - - def _update_chunk_length(self: HTTPResponse) -> None: - super_update_chunk_length() - if self.chunk_left == 0: - self._fp._close() # type: ignore[attr-defined] - - response._update_chunk_length = types.MethodType( # type: ignore[attr-defined] - _update_chunk_length, response - ) - - resp: Response = super().build_response(request, response) # type: ignore[no-untyped-call] - - # See if we should invalidate the cache. - if request.method in self.invalidating_methods and resp.ok: - assert request.url is not None - cache_url = self.controller.cache_url(request.url) - self.cache.delete(cache_url) - - # Give the request a from_cache attr to let people use it - resp.from_cache = from_cache # type: ignore[attr-defined] - - return resp - - def close(self) -> None: - self.cache.close() - super().close() # type: ignore[no-untyped-call] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py deleted file mode 100644 index 3293b00..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py +++ /dev/null @@ -1,74 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 - -""" -The cache object API for implementing caches. The default is a thread -safe in-memory dictionary. -""" -from __future__ import annotations - -from threading import Lock -from typing import IO, TYPE_CHECKING, MutableMapping - -if TYPE_CHECKING: - from datetime import datetime - - -class BaseCache: - def get(self, key: str) -> bytes | None: - raise NotImplementedError() - - def set( - self, key: str, value: bytes, expires: int | datetime | None = None - ) -> None: - raise NotImplementedError() - - def delete(self, key: str) -> None: - raise NotImplementedError() - - def close(self) -> None: - pass - - -class DictCache(BaseCache): - def __init__(self, init_dict: MutableMapping[str, bytes] | None = None) -> None: - self.lock = Lock() - self.data = init_dict or {} - - def get(self, key: str) -> bytes | None: - return self.data.get(key, None) - - def set( - self, key: str, value: bytes, expires: int | datetime | None = None - ) -> None: - with self.lock: - self.data.update({key: value}) - - def delete(self, key: str) -> None: - with self.lock: - if key in self.data: - self.data.pop(key) - - -class SeparateBodyBaseCache(BaseCache): - """ - In this variant, the body is not stored mixed in with the metadata, but is - passed in (as a bytes-like object) in a separate call to ``set_body()``. - - That is, the expected interaction pattern is:: - - cache.set(key, serialized_metadata) - cache.set_body(key) - - Similarly, the body should be loaded separately via ``get_body()``. - """ - - def set_body(self, key: str, body: bytes) -> None: - raise NotImplementedError() - - def get_body(self, key: str) -> IO[bytes] | None: - """ - Return the body as file-like object. - """ - raise NotImplementedError() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py deleted file mode 100644 index 24ff469..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 - -from pip._vendor.cachecontrol.caches.file_cache import FileCache, SeparateBodyFileCache -from pip._vendor.cachecontrol.caches.redis_cache import RedisCache - -__all__ = ["FileCache", "SeparateBodyFileCache", "RedisCache"] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 7fe5caec585fd532af3fba26af4d70706865f422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmah`u};G<6tt7HK-Eet`~v|s55&TN5CW+qL%U_MjO`{?o!HoJrR;nO8^4s5iC$^<*+aq2BO(2^gWzNDeCr4yao1{!|<%6%#jq;>FnMoy{D62((wh)F|>cykx-S2gd`_Wu*>9$RIYNMe|BV+-d z^I>^mq$$Wov|QVQ#aT?Z-fFcYu2=>SvVHhdmzV#kY;@hrqE&xH2vv%Z4`heYKf?Db z)VdK+ttGRX3GXGWZXGygsgZ3pHJUpJ**2i$3z*K=y1gl`ufRz!riQW=t%QRR2KFn! i;R-wAfDqYAPe@_9{`juZe67TN_z&b_iqmY2$H@<~VtG#h diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc deleted file mode 100644 index bedb844c99d3c1a0d3606c5cc3f15d0b69d34307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5584 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc deleted file mode 100644 index 9fb792a4de979d4199e8ea0c63b56e36fe7e385d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2043 zcmZuyUvJws5GO^+mSx4u-!^TtP8~3823C7RU-mF;!?L0+HW)**0h@+GP(&tCB1?3mxmU$W_;>Tpnwo)1jzboF_#tVAH~HfByPB z+I;zZ^XFHC7oceU7%QRZMAl;hQW3WpHQo4DK+|`yiBLpPbQ>PU#kr3!vy)Cg_Uo3Vm+L4yfcZPMCvw zT106Lrd1dQl20d{IY@AHP&tQjHWrm*uvAU)ew0d~F4odq1F{*-W+0I)v#$XH4g+!m zLdjHn2DG%M7V>?IXscwJomldjW@ol`_8U`rY?o}m$;p_=C#AjbLLJb*jkdJc$+2T@ zX_ZuarE}Jvk`oH|nOfSaQvtS;UF*6QP@-z+Nt*8zUH>vQO6bZEK>OJTy-0BIld2v1S>e;zY?*r0H^ZeHbk(}?8sPeW6>!A?e9KvCr>4o=;z0xa19o{2Hr__@ z8R&2r4lL5i(i{isV+jTG>_hTmg3P-HAk>bhRPTAg<(I@`Y;I2mT~by9vqBPfSclplCW~{SnGH80!zgi>$S}l9^xvCP!B`0uV3!gJLJ3Ai zkwF|^26++WLhwKr5L^MsF{9uGwnRbCVg3qHN|#J*;_i9}M@@A5fH_ylu|GtryYog=<2i-P$+!@19 z06a=$o~hEhKpXl9JGO-1F9{z*L+)KRP#t}L5)4?4IDSLJ?Nhxi>* SLE)46Y?1lYw`|L&tL#5RQputK diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py deleted file mode 100644 index 1fd2801..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +++ /dev/null @@ -1,181 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -import hashlib -import os -from textwrap import dedent -from typing import IO, TYPE_CHECKING - -from pip._vendor.cachecontrol.cache import BaseCache, SeparateBodyBaseCache -from pip._vendor.cachecontrol.controller import CacheController - -if TYPE_CHECKING: - from datetime import datetime - - from filelock import BaseFileLock - - -def _secure_open_write(filename: str, fmode: int) -> IO[bytes]: - # We only want to write to this file, so open it in write only mode - flags = os.O_WRONLY - - # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only - # will open *new* files. - # We specify this because we want to ensure that the mode we pass is the - # mode of the file. - flags |= os.O_CREAT | os.O_EXCL - - # Do not follow symlinks to prevent someone from making a symlink that - # we follow and insecurely open a cache file. - if hasattr(os, "O_NOFOLLOW"): - flags |= os.O_NOFOLLOW - - # On Windows we'll mark this file as binary - if hasattr(os, "O_BINARY"): - flags |= os.O_BINARY - - # Before we open our file, we want to delete any existing file that is - # there - try: - os.remove(filename) - except OSError: - # The file must not exist already, so we can just skip ahead to opening - pass - - # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a - # race condition happens between the os.remove and this line, that an - # error will be raised. Because we utilize a lockfile this should only - # happen if someone is attempting to attack us. - fd = os.open(filename, flags, fmode) - try: - return os.fdopen(fd, "wb") - - except: - # An error occurred wrapping our FD in a file object - os.close(fd) - raise - - -class _FileCacheMixin: - """Shared implementation for both FileCache variants.""" - - def __init__( - self, - directory: str, - forever: bool = False, - filemode: int = 0o0600, - dirmode: int = 0o0700, - lock_class: type[BaseFileLock] | None = None, - ) -> None: - try: - if lock_class is None: - from filelock import FileLock - - lock_class = FileLock - except ImportError: - notice = dedent( - """ - NOTE: In order to use the FileCache you must have - filelock installed. You can install it via pip: - pip install filelock - """ - ) - raise ImportError(notice) - - self.directory = directory - self.forever = forever - self.filemode = filemode - self.dirmode = dirmode - self.lock_class = lock_class - - @staticmethod - def encode(x: str) -> str: - return hashlib.sha224(x.encode()).hexdigest() - - def _fn(self, name: str) -> str: - # NOTE: This method should not change as some may depend on it. - # See: https://github.com/ionrock/cachecontrol/issues/63 - hashed = self.encode(name) - parts = list(hashed[:5]) + [hashed] - return os.path.join(self.directory, *parts) - - def get(self, key: str) -> bytes | None: - name = self._fn(key) - try: - with open(name, "rb") as fh: - return fh.read() - - except FileNotFoundError: - return None - - def set( - self, key: str, value: bytes, expires: int | datetime | None = None - ) -> None: - name = self._fn(key) - self._write(name, value) - - def _write(self, path: str, data: bytes) -> None: - """ - Safely write the data to the given path. - """ - # Make sure the directory exists - try: - os.makedirs(os.path.dirname(path), self.dirmode) - except OSError: - pass - - with self.lock_class(path + ".lock"): - # Write our actual file - with _secure_open_write(path, self.filemode) as fh: - fh.write(data) - - def _delete(self, key: str, suffix: str) -> None: - name = self._fn(key) + suffix - if not self.forever: - try: - os.remove(name) - except FileNotFoundError: - pass - - -class FileCache(_FileCacheMixin, BaseCache): - """ - Traditional FileCache: body is stored in memory, so not suitable for large - downloads. - """ - - def delete(self, key: str) -> None: - self._delete(key, "") - - -class SeparateBodyFileCache(_FileCacheMixin, SeparateBodyBaseCache): - """ - Memory-efficient FileCache: body is stored in a separate file, reducing - peak memory usage. - """ - - def get_body(self, key: str) -> IO[bytes] | None: - name = self._fn(key) + ".body" - try: - return open(name, "rb") - except FileNotFoundError: - return None - - def set_body(self, key: str, body: bytes) -> None: - name = self._fn(key) + ".body" - self._write(name, body) - - def delete(self, key: str) -> None: - self._delete(key, "") - self._delete(key, ".body") - - -def url_to_file_path(url: str, filecache: FileCache) -> str: - """Return the file cache path based on the URL. - - This does not ensure the file exists! - """ - key = CacheController.cache_url(url) - return filecache._fn(key) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py deleted file mode 100644 index f4f68c4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - - -from datetime import datetime, timezone -from typing import TYPE_CHECKING - -from pip._vendor.cachecontrol.cache import BaseCache - -if TYPE_CHECKING: - from redis import Redis - - -class RedisCache(BaseCache): - def __init__(self, conn: Redis[bytes]) -> None: - self.conn = conn - - def get(self, key: str) -> bytes | None: - return self.conn.get(key) - - def set( - self, key: str, value: bytes, expires: int | datetime | None = None - ) -> None: - if not expires: - self.conn.set(key, value) - elif isinstance(expires, datetime): - now_utc = datetime.now(timezone.utc) - if expires.tzinfo is None: - now_utc = now_utc.replace(tzinfo=None) - delta = expires - now_utc - self.conn.setex(key, int(delta.total_seconds()), value) - else: - self.conn.setex(key, expires, value) - - def delete(self, key: str) -> None: - self.conn.delete(key) - - def clear(self) -> None: - """Helper for clearing all the keys in a database. Use with - caution!""" - for key in self.conn.keys(): - self.conn.delete(key) - - def close(self) -> None: - """Redis uses connection pooling, no need to close the connection.""" - pass diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py deleted file mode 100644 index 586b9f9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py +++ /dev/null @@ -1,494 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 - -""" -The httplib2 algorithms ported for use with requests. -""" -from __future__ import annotations - -import calendar -import logging -import re -import time -from email.utils import parsedate_tz -from typing import TYPE_CHECKING, Collection, Mapping - -from pip._vendor.requests.structures import CaseInsensitiveDict - -from pip._vendor.cachecontrol.cache import DictCache, SeparateBodyBaseCache -from pip._vendor.cachecontrol.serialize import Serializer - -if TYPE_CHECKING: - from typing import Literal - - from pip._vendor.requests import PreparedRequest - from pip._vendor.urllib3 import HTTPResponse - - from pip._vendor.cachecontrol.cache import BaseCache - -logger = logging.getLogger(__name__) - -URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") - -PERMANENT_REDIRECT_STATUSES = (301, 308) - - -def parse_uri(uri: str) -> tuple[str, str, str, str, str]: - """Parses a URI using the regex given in Appendix B of RFC 3986. - - (scheme, authority, path, query, fragment) = parse_uri(uri) - """ - match = URI.match(uri) - assert match is not None - groups = match.groups() - return (groups[1], groups[3], groups[4], groups[6], groups[8]) - - -class CacheController: - """An interface to see if request should cached or not.""" - - def __init__( - self, - cache: BaseCache | None = None, - cache_etags: bool = True, - serializer: Serializer | None = None, - status_codes: Collection[int] | None = None, - ): - self.cache = DictCache() if cache is None else cache - self.cache_etags = cache_etags - self.serializer = serializer or Serializer() - self.cacheable_status_codes = status_codes or (200, 203, 300, 301, 308) - - @classmethod - def _urlnorm(cls, uri: str) -> str: - """Normalize the URL to create a safe key for the cache""" - (scheme, authority, path, query, fragment) = parse_uri(uri) - if not scheme or not authority: - raise Exception("Only absolute URIs are allowed. uri = %s" % uri) - - scheme = scheme.lower() - authority = authority.lower() - - if not path: - path = "/" - - # Could do syntax based normalization of the URI before - # computing the digest. See Section 6.2.2 of Std 66. - request_uri = query and "?".join([path, query]) or path - defrag_uri = scheme + "://" + authority + request_uri - - return defrag_uri - - @classmethod - def cache_url(cls, uri: str) -> str: - return cls._urlnorm(uri) - - def parse_cache_control(self, headers: Mapping[str, str]) -> dict[str, int | None]: - known_directives = { - # https://tools.ietf.org/html/rfc7234#section-5.2 - "max-age": (int, True), - "max-stale": (int, False), - "min-fresh": (int, True), - "no-cache": (None, False), - "no-store": (None, False), - "no-transform": (None, False), - "only-if-cached": (None, False), - "must-revalidate": (None, False), - "public": (None, False), - "private": (None, False), - "proxy-revalidate": (None, False), - "s-maxage": (int, True), - } - - cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) - - retval: dict[str, int | None] = {} - - for cc_directive in cc_headers.split(","): - if not cc_directive.strip(): - continue - - parts = cc_directive.split("=", 1) - directive = parts[0].strip() - - try: - typ, required = known_directives[directive] - except KeyError: - logger.debug("Ignoring unknown cache-control directive: %s", directive) - continue - - if not typ or not required: - retval[directive] = None - if typ: - try: - retval[directive] = typ(parts[1].strip()) - except IndexError: - if required: - logger.debug( - "Missing value for cache-control " "directive: %s", - directive, - ) - except ValueError: - logger.debug( - "Invalid value for cache-control directive " "%s, must be %s", - directive, - typ.__name__, - ) - - return retval - - def _load_from_cache(self, request: PreparedRequest) -> HTTPResponse | None: - """ - Load a cached response, or return None if it's not available. - """ - cache_url = request.url - assert cache_url is not None - cache_data = self.cache.get(cache_url) - if cache_data is None: - logger.debug("No cache entry available") - return None - - if isinstance(self.cache, SeparateBodyBaseCache): - body_file = self.cache.get_body(cache_url) - else: - body_file = None - - result = self.serializer.loads(request, cache_data, body_file) - if result is None: - logger.warning("Cache entry deserialization failed, entry ignored") - return result - - def cached_request(self, request: PreparedRequest) -> HTTPResponse | Literal[False]: - """ - Return a cached response if it exists in the cache, otherwise - return False. - """ - assert request.url is not None - cache_url = self.cache_url(request.url) - logger.debug('Looking up "%s" in the cache', cache_url) - cc = self.parse_cache_control(request.headers) - - # Bail out if the request insists on fresh data - if "no-cache" in cc: - logger.debug('Request header has "no-cache", cache bypassed') - return False - - if "max-age" in cc and cc["max-age"] == 0: - logger.debug('Request header has "max_age" as 0, cache bypassed') - return False - - # Check whether we can load the response from the cache: - resp = self._load_from_cache(request) - if not resp: - return False - - # If we have a cached permanent redirect, return it immediately. We - # don't need to test our response for other headers b/c it is - # intrinsically "cacheable" as it is Permanent. - # - # See: - # https://tools.ietf.org/html/rfc7231#section-6.4.2 - # - # Client can try to refresh the value by repeating the request - # with cache busting headers as usual (ie no-cache). - if int(resp.status) in PERMANENT_REDIRECT_STATUSES: - msg = ( - "Returning cached permanent redirect response " - "(ignoring date and etag information)" - ) - logger.debug(msg) - return resp - - headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(resp.headers) - if not headers or "date" not in headers: - if "etag" not in headers: - # Without date or etag, the cached response can never be used - # and should be deleted. - logger.debug("Purging cached response: no date or etag") - self.cache.delete(cache_url) - logger.debug("Ignoring cached response: no date") - return False - - now = time.time() - time_tuple = parsedate_tz(headers["date"]) - assert time_tuple is not None - date = calendar.timegm(time_tuple[:6]) - current_age = max(0, now - date) - logger.debug("Current age based on date: %i", current_age) - - # TODO: There is an assumption that the result will be a - # urllib3 response object. This may not be best since we - # could probably avoid instantiating or constructing the - # response until we know we need it. - resp_cc = self.parse_cache_control(headers) - - # determine freshness - freshness_lifetime = 0 - - # Check the max-age pragma in the cache control header - max_age = resp_cc.get("max-age") - if max_age is not None: - freshness_lifetime = max_age - logger.debug("Freshness lifetime from max-age: %i", freshness_lifetime) - - # If there isn't a max-age, check for an expires header - elif "expires" in headers: - expires = parsedate_tz(headers["expires"]) - if expires is not None: - expire_time = calendar.timegm(expires[:6]) - date - freshness_lifetime = max(0, expire_time) - logger.debug("Freshness lifetime from expires: %i", freshness_lifetime) - - # Determine if we are setting freshness limit in the - # request. Note, this overrides what was in the response. - max_age = cc.get("max-age") - if max_age is not None: - freshness_lifetime = max_age - logger.debug( - "Freshness lifetime from request max-age: %i", freshness_lifetime - ) - - min_fresh = cc.get("min-fresh") - if min_fresh is not None: - # adjust our current age by our min fresh - current_age += min_fresh - logger.debug("Adjusted current age from min-fresh: %i", current_age) - - # Return entry if it is fresh enough - if freshness_lifetime > current_age: - logger.debug('The response is "fresh", returning cached response') - logger.debug("%i > %i", freshness_lifetime, current_age) - return resp - - # we're not fresh. If we don't have an Etag, clear it out - if "etag" not in headers: - logger.debug('The cached response is "stale" with no etag, purging') - self.cache.delete(cache_url) - - # return the original handler - return False - - def conditional_headers(self, request: PreparedRequest) -> dict[str, str]: - resp = self._load_from_cache(request) - new_headers = {} - - if resp: - headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(resp.headers) - - if "etag" in headers: - new_headers["If-None-Match"] = headers["ETag"] - - if "last-modified" in headers: - new_headers["If-Modified-Since"] = headers["Last-Modified"] - - return new_headers - - def _cache_set( - self, - cache_url: str, - request: PreparedRequest, - response: HTTPResponse, - body: bytes | None = None, - expires_time: int | None = None, - ) -> None: - """ - Store the data in the cache. - """ - if isinstance(self.cache, SeparateBodyBaseCache): - # We pass in the body separately; just put a placeholder empty - # string in the metadata. - self.cache.set( - cache_url, - self.serializer.dumps(request, response, b""), - expires=expires_time, - ) - # body is None can happen when, for example, we're only updating - # headers, as is the case in update_cached_response(). - if body is not None: - self.cache.set_body(cache_url, body) - else: - self.cache.set( - cache_url, - self.serializer.dumps(request, response, body), - expires=expires_time, - ) - - def cache_response( - self, - request: PreparedRequest, - response: HTTPResponse, - body: bytes | None = None, - status_codes: Collection[int] | None = None, - ) -> None: - """ - Algorithm for caching requests. - - This assumes a requests Response object. - """ - # From httplib2: Don't cache 206's since we aren't going to - # handle byte range requests - cacheable_status_codes = status_codes or self.cacheable_status_codes - if response.status not in cacheable_status_codes: - logger.debug( - "Status code %s not in %s", response.status, cacheable_status_codes - ) - return - - response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( - response.headers - ) - - if "date" in response_headers: - time_tuple = parsedate_tz(response_headers["date"]) - assert time_tuple is not None - date = calendar.timegm(time_tuple[:6]) - else: - date = 0 - - # If we've been given a body, our response has a Content-Length, that - # Content-Length is valid then we can check to see if the body we've - # been given matches the expected size, and if it doesn't we'll just - # skip trying to cache it. - if ( - body is not None - and "content-length" in response_headers - and response_headers["content-length"].isdigit() - and int(response_headers["content-length"]) != len(body) - ): - return - - cc_req = self.parse_cache_control(request.headers) - cc = self.parse_cache_control(response_headers) - - assert request.url is not None - cache_url = self.cache_url(request.url) - logger.debug('Updating cache with response from "%s"', cache_url) - - # Delete it from the cache if we happen to have it stored there - no_store = False - if "no-store" in cc: - no_store = True - logger.debug('Response header has "no-store"') - if "no-store" in cc_req: - no_store = True - logger.debug('Request header has "no-store"') - if no_store and self.cache.get(cache_url): - logger.debug('Purging existing cache entry to honor "no-store"') - self.cache.delete(cache_url) - if no_store: - return - - # https://tools.ietf.org/html/rfc7234#section-4.1: - # A Vary header field-value of "*" always fails to match. - # Storing such a response leads to a deserialization warning - # during cache lookup and is not allowed to ever be served, - # so storing it can be avoided. - if "*" in response_headers.get("vary", ""): - logger.debug('Response header has "Vary: *"') - return - - # If we've been given an etag, then keep the response - if self.cache_etags and "etag" in response_headers: - expires_time = 0 - if response_headers.get("expires"): - expires = parsedate_tz(response_headers["expires"]) - if expires is not None: - expires_time = calendar.timegm(expires[:6]) - date - - expires_time = max(expires_time, 14 * 86400) - - logger.debug(f"etag object cached for {expires_time} seconds") - logger.debug("Caching due to etag") - self._cache_set(cache_url, request, response, body, expires_time) - - # Add to the cache any permanent redirects. We do this before looking - # that the Date headers. - elif int(response.status) in PERMANENT_REDIRECT_STATUSES: - logger.debug("Caching permanent redirect") - self._cache_set(cache_url, request, response, b"") - - # Add to the cache if the response headers demand it. If there - # is no date header then we can't do anything about expiring - # the cache. - elif "date" in response_headers: - time_tuple = parsedate_tz(response_headers["date"]) - assert time_tuple is not None - date = calendar.timegm(time_tuple[:6]) - # cache when there is a max-age > 0 - max_age = cc.get("max-age") - if max_age is not None and max_age > 0: - logger.debug("Caching b/c date exists and max-age > 0") - expires_time = max_age - self._cache_set( - cache_url, - request, - response, - body, - expires_time, - ) - - # If the request can expire, it means we should cache it - # in the meantime. - elif "expires" in response_headers: - if response_headers["expires"]: - expires = parsedate_tz(response_headers["expires"]) - if expires is not None: - expires_time = calendar.timegm(expires[:6]) - date - else: - expires_time = None - - logger.debug( - "Caching b/c of expires header. expires in {} seconds".format( - expires_time - ) - ) - self._cache_set( - cache_url, - request, - response, - body, - expires_time, - ) - - def update_cached_response( - self, request: PreparedRequest, response: HTTPResponse - ) -> HTTPResponse: - """On a 304 we will get a new set of headers that we want to - update our cached value with, assuming we have one. - - This should only ever be called when we've sent an ETag and - gotten a 304 as the response. - """ - assert request.url is not None - cache_url = self.cache_url(request.url) - cached_response = self._load_from_cache(request) - - if not cached_response: - # we didn't have a cached response - return response - - # Lets update our headers with the headers from the new request: - # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 - # - # The server isn't supposed to send headers that would make - # the cached body invalid. But... just in case, we'll be sure - # to strip out ones we know that might be problmatic due to - # typical assumptions. - excluded_headers = ["content-length"] - - cached_response.headers.update( - { - k: v - for k, v in response.headers.items() # type: ignore[no-untyped-call] - if k.lower() not in excluded_headers - } - ) - - # we want a 200 b/c we have content via the cache - cached_response.status = 200 - - # update our cache - self._cache_set(cache_url, request, cached_response) - - return cached_response diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py deleted file mode 100644 index 2514390..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py +++ /dev/null @@ -1,119 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -import mmap -from tempfile import NamedTemporaryFile -from typing import TYPE_CHECKING, Any, Callable - -if TYPE_CHECKING: - from http.client import HTTPResponse - - -class CallbackFileWrapper: - """ - Small wrapper around a fp object which will tee everything read into a - buffer, and when that file is closed it will execute a callback with the - contents of that buffer. - - All attributes are proxied to the underlying file object. - - This class uses members with a double underscore (__) leading prefix so as - not to accidentally shadow an attribute. - - The data is stored in a temporary file until it is all available. As long - as the temporary files directory is disk-based (sometimes it's a - memory-backed-``tmpfs`` on Linux), data will be unloaded to disk if memory - pressure is high. For small files the disk usually won't be used at all, - it'll all be in the filesystem memory cache, so there should be no - performance impact. - """ - - def __init__( - self, fp: HTTPResponse, callback: Callable[[bytes], None] | None - ) -> None: - self.__buf = NamedTemporaryFile("rb+", delete=True) - self.__fp = fp - self.__callback = callback - - def __getattr__(self, name: str) -> Any: - # The vaguaries of garbage collection means that self.__fp is - # not always set. By using __getattribute__ and the private - # name[0] allows looking up the attribute value and raising an - # AttributeError when it doesn't exist. This stop thigns from - # infinitely recursing calls to getattr in the case where - # self.__fp hasn't been set. - # - # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers - fp = self.__getattribute__("_CallbackFileWrapper__fp") - return getattr(fp, name) - - def __is_fp_closed(self) -> bool: - try: - return self.__fp.fp is None - - except AttributeError: - pass - - try: - closed: bool = self.__fp.closed - return closed - - except AttributeError: - pass - - # We just don't cache it then. - # TODO: Add some logging here... - return False - - def _close(self) -> None: - if self.__callback: - if self.__buf.tell() == 0: - # Empty file: - result = b"" - else: - # Return the data without actually loading it into memory, - # relying on Python's buffer API and mmap(). mmap() just gives - # a view directly into the filesystem's memory cache, so it - # doesn't result in duplicate memory use. - self.__buf.seek(0, 0) - result = memoryview( - mmap.mmap(self.__buf.fileno(), 0, access=mmap.ACCESS_READ) - ) - self.__callback(result) - - # We assign this to None here, because otherwise we can get into - # really tricky problems where the CPython interpreter dead locks - # because the callback is holding a reference to something which - # has a __del__ method. Setting this to None breaks the cycle - # and allows the garbage collector to do it's thing normally. - self.__callback = None - - # Closing the temporary file releases memory and frees disk space. - # Important when caching big files. - self.__buf.close() - - def read(self, amt: int | None = None) -> bytes: - data: bytes = self.__fp.read(amt) - if data: - # We may be dealing with b'', a sign that things are over: - # it's passed e.g. after we've already closed self.__buf. - self.__buf.write(data) - if self.__is_fp_closed(): - self._close() - - return data - - def _safe_read(self, amt: int) -> bytes: - data: bytes = self.__fp._safe_read(amt) # type: ignore[attr-defined] - if amt == 2 and data == b"\r\n": - # urllib executes this read to toss the CRLF at the end - # of the chunk. - return data - - self.__buf.write(data) - if self.__is_fp_closed(): - self._close() - - return data diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py deleted file mode 100644 index b9d72ca..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py +++ /dev/null @@ -1,154 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -import calendar -import time -from datetime import datetime, timedelta, timezone -from email.utils import formatdate, parsedate, parsedate_tz -from typing import TYPE_CHECKING, Any, Mapping - -if TYPE_CHECKING: - from pip._vendor.urllib3 import HTTPResponse - -TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" - - -def expire_after(delta: timedelta, date: datetime | None = None) -> datetime: - date = date or datetime.now(timezone.utc) - return date + delta - - -def datetime_to_header(dt: datetime) -> str: - return formatdate(calendar.timegm(dt.timetuple())) - - -class BaseHeuristic: - def warning(self, response: HTTPResponse) -> str | None: - """ - Return a valid 1xx warning header value describing the cache - adjustments. - - The response is provided too allow warnings like 113 - http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need - to explicitly say response is over 24 hours old. - """ - return '110 - "Response is Stale"' - - def update_headers(self, response: HTTPResponse) -> dict[str, str]: - """Update the response headers with any new headers. - - NOTE: This SHOULD always include some Warning header to - signify that the response was cached by the client, not - by way of the provided headers. - """ - return {} - - def apply(self, response: HTTPResponse) -> HTTPResponse: - updated_headers = self.update_headers(response) - - if updated_headers: - response.headers.update(updated_headers) - warning_header_value = self.warning(response) - if warning_header_value is not None: - response.headers.update({"Warning": warning_header_value}) - - return response - - -class OneDayCache(BaseHeuristic): - """ - Cache the response by providing an expires 1 day in the - future. - """ - - def update_headers(self, response: HTTPResponse) -> dict[str, str]: - headers = {} - - if "expires" not in response.headers: - date = parsedate(response.headers["date"]) - expires = expire_after(timedelta(days=1), date=datetime(*date[:6], tzinfo=timezone.utc)) # type: ignore[misc] - headers["expires"] = datetime_to_header(expires) - headers["cache-control"] = "public" - return headers - - -class ExpiresAfter(BaseHeuristic): - """ - Cache **all** requests for a defined time period. - """ - - def __init__(self, **kw: Any) -> None: - self.delta = timedelta(**kw) - - def update_headers(self, response: HTTPResponse) -> dict[str, str]: - expires = expire_after(self.delta) - return {"expires": datetime_to_header(expires), "cache-control": "public"} - - def warning(self, response: HTTPResponse) -> str | None: - tmpl = "110 - Automatically cached for %s. Response might be stale" - return tmpl % self.delta - - -class LastModified(BaseHeuristic): - """ - If there is no Expires header already, fall back on Last-Modified - using the heuristic from - http://tools.ietf.org/html/rfc7234#section-4.2.2 - to calculate a reasonable value. - - Firefox also does something like this per - https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ - http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 - Unlike mozilla we limit this to 24-hr. - """ - - cacheable_by_default_statuses = { - 200, - 203, - 204, - 206, - 300, - 301, - 404, - 405, - 410, - 414, - 501, - } - - def update_headers(self, resp: HTTPResponse) -> dict[str, str]: - headers: Mapping[str, str] = resp.headers - - if "expires" in headers: - return {} - - if "cache-control" in headers and headers["cache-control"] != "public": - return {} - - if resp.status not in self.cacheable_by_default_statuses: - return {} - - if "date" not in headers or "last-modified" not in headers: - return {} - - time_tuple = parsedate_tz(headers["date"]) - assert time_tuple is not None - date = calendar.timegm(time_tuple[:6]) - last_modified = parsedate(headers["last-modified"]) - if last_modified is None: - return {} - - now = time.time() - current_age = max(0, now - date) - delta = date - calendar.timegm(last_modified) - freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) - if freshness_lifetime <= current_age: - return {} - - expires = date + freshness_lifetime - return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} - - def warning(self, resp: HTTPResponse) -> str | None: - return None diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py deleted file mode 100644 index f9e967c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py +++ /dev/null @@ -1,206 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -import io -from typing import IO, TYPE_CHECKING, Any, Mapping, cast - -from pip._vendor import msgpack -from pip._vendor.requests.structures import CaseInsensitiveDict -from pip._vendor.urllib3 import HTTPResponse - -if TYPE_CHECKING: - from pip._vendor.requests import PreparedRequest - - -class Serializer: - serde_version = "4" - - def dumps( - self, - request: PreparedRequest, - response: HTTPResponse, - body: bytes | None = None, - ) -> bytes: - response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( - response.headers - ) - - if body is None: - # When a body isn't passed in, we'll read the response. We - # also update the response with a new file handler to be - # sure it acts as though it was never read. - body = response.read(decode_content=False) - response._fp = io.BytesIO(body) # type: ignore[attr-defined] - response.length_remaining = len(body) - - data = { - "response": { - "body": body, # Empty bytestring if body is stored separately - "headers": {str(k): str(v) for k, v in response.headers.items()}, # type: ignore[no-untyped-call] - "status": response.status, - "version": response.version, - "reason": str(response.reason), - "decode_content": response.decode_content, - } - } - - # Construct our vary headers - data["vary"] = {} - if "vary" in response_headers: - varied_headers = response_headers["vary"].split(",") - for header in varied_headers: - header = str(header).strip() - header_value = request.headers.get(header, None) - if header_value is not None: - header_value = str(header_value) - data["vary"][header] = header_value - - return b",".join([f"cc={self.serde_version}".encode(), self.serialize(data)]) - - def serialize(self, data: dict[str, Any]) -> bytes: - return cast(bytes, msgpack.dumps(data, use_bin_type=True)) - - def loads( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> HTTPResponse | None: - # Short circuit if we've been given an empty set of data - if not data: - return None - - # Determine what version of the serializer the data was serialized - # with - try: - ver, data = data.split(b",", 1) - except ValueError: - ver = b"cc=0" - - # Make sure that our "ver" is actually a version and isn't a false - # positive from a , being in the data stream. - if ver[:3] != b"cc=": - data = ver + data - ver = b"cc=0" - - # Get the version number out of the cc=N - verstr = ver.split(b"=", 1)[-1].decode("ascii") - - # Dispatch to the actual load method for the given version - try: - return getattr(self, f"_loads_v{verstr}")(request, data, body_file) # type: ignore[no-any-return] - - except AttributeError: - # This is a version we don't have a loads function for, so we'll - # just treat it as a miss and return None - return None - - def prepare_response( - self, - request: PreparedRequest, - cached: Mapping[str, Any], - body_file: IO[bytes] | None = None, - ) -> HTTPResponse | None: - """Verify our vary headers match and construct a real urllib3 - HTTPResponse object. - """ - # Special case the '*' Vary value as it means we cannot actually - # determine if the cached response is suitable for this request. - # This case is also handled in the controller code when creating - # a cache entry, but is left here for backwards compatibility. - if "*" in cached.get("vary", {}): - return None - - # Ensure that the Vary headers for the cached response match our - # request - for header, value in cached.get("vary", {}).items(): - if request.headers.get(header, None) != value: - return None - - body_raw = cached["response"].pop("body") - - headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( - data=cached["response"]["headers"] - ) - if headers.get("transfer-encoding", "") == "chunked": - headers.pop("transfer-encoding") - - cached["response"]["headers"] = headers - - try: - body: IO[bytes] - if body_file is None: - body = io.BytesIO(body_raw) - else: - body = body_file - except TypeError: - # This can happen if cachecontrol serialized to v1 format (pickle) - # using Python 2. A Python 2 str(byte string) will be unpickled as - # a Python 3 str (unicode string), which will cause the above to - # fail with: - # - # TypeError: 'str' does not support the buffer interface - body = io.BytesIO(body_raw.encode("utf8")) - - # Discard any `strict` parameter serialized by older version of cachecontrol. - cached["response"].pop("strict", None) - - return HTTPResponse(body=body, preload_content=False, **cached["response"]) - - def _loads_v0( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> None: - # The original legacy cache data. This doesn't contain enough - # information to construct everything we need, so we'll treat this as - # a miss. - return None - - def _loads_v1( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> HTTPResponse | None: - # The "v1" pickled cache format. This is no longer supported - # for security reasons, so we treat it as a miss. - return None - - def _loads_v2( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> HTTPResponse | None: - # The "v2" compressed base64 cache format. - # This has been removed due to age and poor size/performance - # characteristics, so we treat it as a miss. - return None - - def _loads_v3( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> None: - # Due to Python 2 encoding issues, it's impossible to know for sure - # exactly how to load v3 entries, thus we'll treat these as a miss so - # that they get rewritten out as v4 entries. - return None - - def _loads_v4( - self, - request: PreparedRequest, - data: bytes, - body_file: IO[bytes] | None = None, - ) -> HTTPResponse | None: - try: - cached = msgpack.loads(data, raw=False) - except ValueError: - return None - - return self.prepare_response(request, cached, body_file) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py b/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py deleted file mode 100644 index f618bc3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py +++ /dev/null @@ -1,43 +0,0 @@ -# SPDX-FileCopyrightText: 2015 Eric Larson -# -# SPDX-License-Identifier: Apache-2.0 -from __future__ import annotations - -from typing import TYPE_CHECKING, Collection - -from pip._vendor.cachecontrol.adapter import CacheControlAdapter -from pip._vendor.cachecontrol.cache import DictCache - -if TYPE_CHECKING: - from pip._vendor import requests - - from pip._vendor.cachecontrol.cache import BaseCache - from pip._vendor.cachecontrol.controller import CacheController - from pip._vendor.cachecontrol.heuristics import BaseHeuristic - from pip._vendor.cachecontrol.serialize import Serializer - - -def CacheControl( - sess: requests.Session, - cache: BaseCache | None = None, - cache_etags: bool = True, - serializer: Serializer | None = None, - heuristic: BaseHeuristic | None = None, - controller_class: type[CacheController] | None = None, - adapter_class: type[CacheControlAdapter] | None = None, - cacheable_methods: Collection[str] | None = None, -) -> requests.Session: - cache = DictCache() if cache is None else cache - adapter_class = adapter_class or CacheControlAdapter - adapter = adapter_class( - cache, - cache_etags=cache_etags, - serializer=serializer, - heuristic=heuristic, - controller_class=controller_class, - cacheable_methods=cacheable_methods, - ) - sess.mount("http://", adapter) - sess.mount("https://", adapter) - - return sess diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py deleted file mode 100644 index 8ce89ce..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .core import contents, where - -__all__ = ["contents", "where"] -__version__ = "2023.07.22" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py deleted file mode 100644 index 0037634..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py +++ /dev/null @@ -1,12 +0,0 @@ -import argparse - -from pip._vendor.certifi import contents, where - -parser = argparse.ArgumentParser() -parser.add_argument("-c", "--contents", action="store_true") -args = parser.parse_args() - -if args.contents: - print(contents()) -else: - print(where()) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 2927ab12b0a267e4c06b75df8448d5a5f02df972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmYk1u};G<5Qc3hX``Y_JOXQm=0ZBafDli>09yvEU|$ofiEY_#P?>odUMVXRufT+} z^_T8D{kqeCIaMKo=OUX^VJ^q>n)7xTIG?XLpU`<_ zH0R&Mt(SlWe+a!95xSES&Ik-a!SUXM7p}ERcROpOhY9rrgL(&h4!zO)^0or60`6=p sj%|k?tg;XbU_^yaIUlpoR{`I=MSTirvV?Am;5T?n&d2}|ITAiz5oCK diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index 4745a39e89f5f8af3e1c5cec34747afdf485a302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmYjLu};G<5Vf5q4G~n8_y?p8sX;6Z2*D2^1Y4FU#Mji&#MapbwJWUr1C0EVS0;Xe z1uj(uoOJK>-r4V-+1tw))ib}IebfBt$^VLpoKw4kKrzJ^tmvm$@KzL}jf#jfV6THW zR>TnBB`Q(_6|3Z>*W=eA=_#al0uNvZ#1nhsoLp`gvFMLYhM(lmE+-0!i0yUs=YSdBnxSUjjhl@*tgnF%LnL`!D$WX^-QB6e~bvi z=mMK%ODC@S*BFw`FATetQYD#eb|KrSJ$GTS!Puhi{5!)@Z`H#W$hm1jHcMTjslj_K z?@yd`HC9%4O>T{Hl7c+Qg}#+`<>#h5o*o@ar#qJdi=htx0}7j4yppo(0t>|IG9 zxlSE8z1Y{Ff5ATb7xcgI+LO<{xoOiG?K&)d6W=NLc%F$BN|dccNw?#9C;6B?2$FLLwoFm4ket$6=+rN2zS7Eg;$U5 zur?dHyapqWv!|qt;6a4P5TOnc>S1Ht44c;?G~SBPoJT0Jw8B=|x5GB{tm)C0JR8hG;#$!fzcrVRMG|_FFrz&Ug0j zJ{Mjhq)rEEzc}!Id-HhS_Aphwan2_r(UU??WTtw0D0*q8bUYfxI?c1*C{LzNKIkPe zM(P)0+{RWwLP!Z>J^sZ6&?@Y}184TE)P z>N7AJM2mSk>2P)NKt%#Go zct@xJFb6Zt!3=Yd{}%p5+yS=DPkUJ@vEL6dg?*V0b`eX`!G@r z%nFsap!1o;(RsD>jg72I#Pn{&AH(WQ>b9m>8AmK;+S2UAo=Ysth>pbKH|~zmQ5m`c zL)k>rLi0wTIo6V|2e3F}(Q6=!*Wh3xAc22j93+s#WdX!lPl@cn)EO<0apMkn@F(~$ z9=%0-fsKF#$?0eg;QXz${cM^wZbZ zWrhnFu*_iJ0Y{TvdIHj((icVZ4I8xeZiVGt_@dNQzK7mTIfIJs;o|#XAg4b>zlZ*^sYVgc698kW z17#ZfLMqTYO0z+3y6L#crG}dCU#hC+7mX~l6*G96vWU5?n)1978JZ^9J@Aa94+^|0 zp@Zs_AK;w#U3p7y!-}bHPHz$8Ze1qO4M#EVm(!d5D^x>$1I8w9#j_Te&1~SQbNhe?X2Yz_P9PjT|z2p1`)FPXA diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem deleted file mode 100644 index 0212369..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem +++ /dev/null @@ -1,4635 +0,0 @@ - -# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Label: "GlobalSign Root CA" -# Serial: 4835703278459707669005204 -# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a -# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c -# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Premium 2048 Secure Server CA" -# Serial: 946069240 -# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 -# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 -# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Label: "Baltimore CyberTrust Root" -# Serial: 33554617 -# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 -# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 -# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Label: "Entrust Root Certification Authority" -# Serial: 1164660820 -# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 -# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 -# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -# Issuer: CN=AAA Certificate Services O=Comodo CA Limited -# Subject: CN=AAA Certificate Services O=Comodo CA Limited -# Label: "Comodo AAA Services root" -# Serial: 1 -# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 -# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 -# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2" -# Serial: 1289 -# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b -# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 -# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3" -# Serial: 1478 -# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf -# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 -# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - -# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Label: "XRamp Global CA Root" -# Serial: 107108908803651509692980124233745014957 -# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 -# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 -# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB -gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk -MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY -UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx -NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 -dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy -dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 -38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP -KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q -DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 -qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa -JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi -PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs -jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 -eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR -vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa -IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy -i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ -O+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Label: "Go Daddy Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 -# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 -# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- - -# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Label: "Starfield Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 -# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a -# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root CA" -# Serial: 17154717934120587862167794914071425081 -# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 -# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 -# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root CA" -# Serial: 10944719598952040374951832963794454346 -# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e -# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 -# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert High Assurance EV Root CA" -# Serial: 3553400076410547919724730734378100087 -# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a -# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 -# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Label: "SwissSign Gold CA - G2" -# Serial: 13492815561806991280 -# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 -# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 -# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Label: "SwissSign Silver CA - G2" -# Serial: 5700383053117599563 -# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 -# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb -# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=SecureTrust CA O=SecureTrust Corporation -# Subject: CN=SecureTrust CA O=SecureTrust Corporation -# Label: "SecureTrust CA" -# Serial: 17199774589125277788362757014266862032 -# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 -# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 -# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -# Issuer: CN=Secure Global CA O=SecureTrust Corporation -# Subject: CN=Secure Global CA O=SecureTrust Corporation -# Label: "Secure Global CA" -# Serial: 9751836167731051554232119481456978597 -# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de -# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b -# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO Certification Authority O=COMODO CA Limited -# Label: "COMODO Certification Authority" -# Serial: 104350513648249232941998508985834464573 -# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 -# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b -# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB -gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV -BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw -MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl -YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P -RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 -UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI -2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 -Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp -+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ -DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O -nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW -/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g -PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u -QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY -SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv -IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 -zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd -BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB -ZQ== ------END CERTIFICATE----- - -# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Label: "COMODO ECC Certification Authority" -# Serial: 41578283867086692638256921589707938090 -# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 -# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 -# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT -IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw -MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy -ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N -T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR -FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J -cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW -BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm -fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv -GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -# Issuer: CN=Certigna O=Dhimyotis -# Subject: CN=Certigna O=Dhimyotis -# Label: "Certigna" -# Serial: 18364802974209362175 -# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff -# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 -# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV -BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X -DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ -BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 -QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny -gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw -zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q -130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 -JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw -ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT -AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj -AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG -9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h -bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc -fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu -HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w -t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Label: "ePKI Root Certification Authority" -# Serial: 28956088682735189655030529057352760477 -# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 -# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 -# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw -IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL -SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH -SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh -ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X -DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 -TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ -fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA -sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU -WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS -nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH -dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip -NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC -AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF -MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB -uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl -PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP -JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ -gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 -j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 -5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB -o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS -/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z -Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE -W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D -hNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -# Issuer: O=certSIGN OU=certSIGN ROOT CA -# Subject: O=certSIGN OU=certSIGN ROOT CA -# Label: "certSIGN ROOT CA" -# Serial: 35210227249154 -# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 -# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b -# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT -AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD -QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP -MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do -0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ -UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d -RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ -OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv -JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C -AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O -BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ -LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY -MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ -44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I -Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw -i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN -9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" -# Serial: 80544274841616 -# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 -# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 -# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG -EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 -MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl -cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR -dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB -pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM -b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm -aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz -IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT -lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz -AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 -VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG -ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 -BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG -AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M -U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh -bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C -+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F -uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 -XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Label: "SecureSign RootCA11" -# Serial: 1 -# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 -# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 -# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr -MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG -A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 -MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp -Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD -QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz -i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 -h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV -MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 -UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni -8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC -h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD -VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB -AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm -KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ -X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr -QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 -pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN -QSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Label: "Microsec e-Szigno Root CA 2009" -# Serial: 14014712776195784473 -# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 -# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e -# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD -VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 -ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G -CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y -OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx -FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp -Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP -kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc -cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U -fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 -N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC -xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 -+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM -Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG -SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h -mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk -ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c -2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t -HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Label: "GlobalSign Root CA - R3" -# Serial: 4835703278459759426209954 -# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 -# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad -# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 -MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 -RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT -gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm -KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd -QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ -XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o -LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU -RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp -jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK -6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX -mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs -Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH -WD9f ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 6047274297262753887 -# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 -# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa -# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -# Issuer: CN=Izenpe.com O=IZENPE S.A. -# Subject: CN=Izenpe.com O=IZENPE S.A. -# Label: "Izenpe.com" -# Serial: 917563065490389241595536686991402621 -# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 -# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 -# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Label: "Go Daddy Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 -# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b -# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 -# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e -# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw -MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp -Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg -nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 -HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N -Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN -dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 -HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G -CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU -sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 -4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg -8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 -mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Services Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 -# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f -# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs -ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy -ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy -dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p -OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 -8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K -Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe -hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk -6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw -DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q -AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI -bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB -ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z -qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn -0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN -sSi6 ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Commercial O=AffirmTrust -# Subject: CN=AffirmTrust Commercial O=AffirmTrust -# Label: "AffirmTrust Commercial" -# Serial: 8608355977964138876 -# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 -# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 -# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP -Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr -ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL -MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 -yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr -VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ -nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG -XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj -vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt -Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g -N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC -nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Networking O=AffirmTrust -# Subject: CN=AffirmTrust Networking O=AffirmTrust -# Label: "AffirmTrust Networking" -# Serial: 8957382827206547757 -# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f -# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f -# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y -YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua -kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL -QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp -6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG -yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i -QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO -tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu -QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ -Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u -olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 -x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium O=AffirmTrust -# Subject: CN=AffirmTrust Premium O=AffirmTrust -# Label: "AffirmTrust Premium" -# Serial: 7893706540734352110 -# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 -# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 -# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz -dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG -A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U -cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf -qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ -JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ -+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS -s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 -HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 -70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG -V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S -qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S -5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia -C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX -OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE -FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 -KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B -8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ -MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc -0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ -u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF -u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH -YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 -GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO -RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e -KeC2uAloGRwYQw== ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust -# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust -# Label: "AffirmTrust Premium ECC" -# Serial: 8401224907861490260 -# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d -# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb -# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC -VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ -cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ -BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt -VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D -0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 -ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G -A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs -aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I -flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA" -# Serial: 279744 -# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 -# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e -# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Label: "TWCA Root Certification Authority" -# Serial: 1 -# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 -# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 -# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES -MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU -V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz -WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO -LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE -AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH -K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX -RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z -rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx -3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq -hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC -MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls -XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D -lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn -aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ -YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Label: "Security Communication RootCA2" -# Serial: 0 -# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 -# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 -# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX -DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy -dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj -YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV -OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr -zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM -VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ -hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO -ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw -awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs -OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 -DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF -coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc -okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 -t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy -1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ -SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Label: "Actalis Authentication Root CA" -# Serial: 6271844772424770508 -# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 -# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac -# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE -BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w -MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC -SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 -ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv -UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX -4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 -KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ -gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb -rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ -51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F -be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe -KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F -v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn -fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 -jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz -ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL -e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 -jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz -WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V -SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j -pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX -X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok -fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R -K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU -ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU -LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT -LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 2 Root CA" -# Serial: 2 -# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 -# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 -# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr -6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV -L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 -1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx -MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ -QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB -arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr -Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi -FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS -P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN -9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz -uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h -9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t -OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo -+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 -KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 -DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us -H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ -I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 -5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h -3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz -Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 3 Root CA" -# Serial: 2 -# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec -# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 -# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y -ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E -N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 -tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX -0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c -/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X -KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY -zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS -O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D -34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP -K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv -Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj -QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS -IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 -HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa -O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv -033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u -dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE -kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 -3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD -u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq -4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 3" -# Serial: 1 -# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef -# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 -# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 2009" -# Serial: 623603 -# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f -# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 -# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha -ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM -HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 -UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 -tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R -ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM -lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp -/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G -A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy -MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl -cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js -L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL -BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni -acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K -zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 -PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y -Johw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 EV 2009" -# Serial: 623604 -# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 -# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 -# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw -NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV -BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn -ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 -3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z -qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR -p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 -HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw -ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea -HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw -Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh -c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E -RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt -dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku -Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp -3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF -CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na -xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX -KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R2 O=Disig a.s. -# Subject: CN=CA Disig Root R2 O=Disig a.s. -# Label: "CA Disig Root R2" -# Serial: 10572350602393338211 -# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 -# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 -# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy -MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe -NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH -PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I -x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe -QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR -yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO -QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 -H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ -QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD -i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs -nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 -rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI -hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf -GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb -lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka -+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal -TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i -nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 -gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr -G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os -zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x -L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Label: "ACCVRAIZ1" -# Serial: 6828503384748696800 -# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 -# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 -# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE -AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw -CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ -BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND -VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb -qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY -HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo -G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA -lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr -IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ -0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH -k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 -4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO -m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa -cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl -uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI -KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls -ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG -AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT -VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG -CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA -cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA -QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA -7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA -cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA -QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA -czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu -aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt -aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud -DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF -BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp -D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU -JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m -AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD -vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms -tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH -7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA -h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF -d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H -pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Label: "TWCA Global Root CA" -# Serial: 3262 -# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 -# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 -# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx -EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT -VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 -NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT -B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF -10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz -0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh -MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH -zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc -46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 -yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi -laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP -oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA -BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE -qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm -4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL -1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF -H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo -RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ -nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh -15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW -6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW -nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j -wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz -aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy -KwbQBM0= ------END CERTIFICATE----- - -# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Label: "TeliaSonera Root CA v1" -# Serial: 199041966741090107964904287217786801558 -# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c -# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 -# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw -NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv -b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD -VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F -VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 -7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X -Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ -/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs -81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm -dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe -Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu -sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 -pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs -slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ -arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD -VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG -9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl -dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj -TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed -Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 -Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI -OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 -vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW -t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn -HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx -SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 2" -# Serial: 1 -# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a -# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 -# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- - -# Issuer: CN=Atos TrustedRoot 2011 O=Atos -# Subject: CN=Atos TrustedRoot 2011 O=Atos -# Label: "Atos TrustedRoot 2011" -# Serial: 6643877497813316402 -# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 -# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 -# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE -AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG -EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM -FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC -REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp -Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM -VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ -SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ -4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L -cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi -eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG -A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 -DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j -vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP -DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc -maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D -lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv -KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 1 G3" -# Serial: 687049649626669250736271037606554624078720034195 -# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab -# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 -# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 -MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV -wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe -rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 -68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh -4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp -UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o -abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc -3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G -KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt -hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO -Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt -zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD -ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC -MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 -cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN -qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 -YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv -b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 -8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k -NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj -ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp -q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt -nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2 G3" -# Serial: 390156079458959257446133169266079962026824725800 -# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 -# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 -# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 -MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf -qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW -n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym -c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ -O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 -o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j -IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq -IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz -8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh -vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l -7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG -cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD -ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 -AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC -roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga -W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n -lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE -+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV -csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd -dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg -KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM -HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 -WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3 G3" -# Serial: 268090761170461462463995952157327242137089239581 -# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 -# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d -# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 -MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR -/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu -FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR -U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c -ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR -FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k -A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw -eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl -sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp -VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q -A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ -ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD -ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px -KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI -FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv -oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg -u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP -0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf -3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl -8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ -DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN -PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ -ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G2" -# Serial: 15385348160840213938643033620894905419 -# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d -# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f -# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 ------BEGIN CERTIFICATE----- -MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA -n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc -biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp -EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA -bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu -YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW -BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI -QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I -0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni -lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 -B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv -ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo -IhNzbM8m9Yop5w== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G3" -# Serial: 15459312981008553731928384953135426796 -# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb -# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 -# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 ------BEGIN CERTIFICATE----- -MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg -RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf -Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q -RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD -AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY -JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv -6pZjamVFkpUBtA== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G2" -# Serial: 4293743540046975378534879503202253541 -# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 -# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 -# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI -2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx -1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ -q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz -tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ -vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV -5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY -1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 -NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG -Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 -8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe -pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G3" -# Serial: 7089244469030293291760083333884364146 -# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca -# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e -# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 ------BEGIN CERTIFICATE----- -MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe -Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw -EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x -IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF -K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG -fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO -Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd -BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx -AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ -oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 -sycX ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Trusted Root G4" -# Serial: 7451500558977370777930084869016614236 -# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 -# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 -# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 ------BEGIN CERTIFICATE----- -MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg -RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y -ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If -xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV -ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO -DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ -jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ -CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi -EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM -fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY -uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK -chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t -9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD -ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 -SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd -+SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc -fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa -sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N -cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N -0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie -4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI -r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 -/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm -gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ ------END CERTIFICATE----- - -# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Label: "COMODO RSA Certification Authority" -# Serial: 101909084537582093308941363524873193117 -# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 -# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 -# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 ------BEGIN CERTIFICATE----- -MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT -EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR -6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X -pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC -9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV -/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf -Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z -+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w -qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah -SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC -u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf -Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq -crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E -FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB -/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl -wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM -4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV -2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna -FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ -CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK -boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke -jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL -S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb -QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl -0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB -NVOFBkpdn627G190 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Label: "USERTrust RSA Certification Authority" -# Serial: 2645093764781058787591871645665788717 -# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 -# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e -# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw -MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV -BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B -3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY -tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ -Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 -VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT -79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 -c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT -Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l -c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee -UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE -Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF -Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO -VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 -ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs -8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR -iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze -Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ -XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ -qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB -VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB -L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG -jjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Label: "USERTrust ECC Certification Authority" -# Serial: 123013823720199481456569720443997572134 -# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 -# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 -# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a ------BEGIN CERTIFICATE----- -MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl -eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT -JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT -Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg -VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo -I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng -o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G -A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB -zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW -RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Label: "GlobalSign ECC Root CA - R5" -# Serial: 32785792099990507226680698011560947931244 -# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 -# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa -# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 ------BEGIN CERTIFICATE----- -MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk -MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH -bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX -DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD -QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc -8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke -hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI -KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg -515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO -xwy8p2Fp8fc74SrL+SvzZpA3 ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Label: "IdenTrust Commercial Root CA 1" -# Serial: 13298821034946342390520003877796839426 -# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 -# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 -# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu -VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw -MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw -JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT -3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU -+ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp -S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 -bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi -T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL -vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK -Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK -dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT -c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv -l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N -iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD -ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH -6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt -LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 -nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 -+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK -W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT -AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq -l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG -4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ -mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A -7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Label: "IdenTrust Public Sector Root CA 1" -# Serial: 13298821034946342390521976156843933698 -# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba -# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd -# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu -VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN -MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 -MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 -ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy -RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS -bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF -/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R -3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw -EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy -9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V -GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ -2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV -WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD -W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN -AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj -t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV -DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 -TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G -lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW -mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df -WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 -+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ -tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA -GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv -8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - G2" -# Serial: 1246989352 -# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 -# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 -# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 -cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs -IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz -dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy -NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu -dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt -dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 -aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T -RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN -cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW -wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 -U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 -jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN -BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ -jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v -1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R -nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH -VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - EC1" -# Serial: 51543124481930649114116133369 -# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc -# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 -# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG -A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 -d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu -dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq -RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy -MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD -VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g -Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi -A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt -ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH -Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC -R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX -hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- - -# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority -# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority -# Label: "CFCA EV ROOT" -# Serial: 407555286 -# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 -# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 -# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD -TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y -aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx -MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP -T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 -sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL -TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 -/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp -7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz -EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt -hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP -a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot -aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg -TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV -PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv -cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL -tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd -BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB -ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT -ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL -jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS -ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy -P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 -xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d -Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN -5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe -/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z -AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ -5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GB CA" -# Serial: 157768595616588414422159278966750757568 -# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d -# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed -# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt -MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg -Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i -YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x -CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG -b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh -bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 -HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx -WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX -1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk -u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P -99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r -M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB -BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh -cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 -gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO -ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf -aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic -Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= ------END CERTIFICATE----- - -# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Label: "SZAFIR ROOT CA2" -# Serial: 357043034767186914217277344587386743377558296292 -# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 -# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de -# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe ------BEGIN CERTIFICATE----- -MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL -BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 -ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw -NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L -cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg -Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN -QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT -3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw -3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 -3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 -BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN -XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF -AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw -8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG -nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP -oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy -d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg -LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA 2" -# Serial: 44979900017204383099463764357512596969 -# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 -# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 -# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 ------BEGIN CERTIFICATE----- -MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB -gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu -QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG -A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz -OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ -VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 -b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA -DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn -0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB -OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE -fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E -Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m -o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i -sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW -OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez -Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS -adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n -3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ -F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf -CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 -XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm -djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ -WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb -AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq -P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko -b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj -XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P -5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi -DrW5viSP ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce -# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 -# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 ------BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix -DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k -IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT -N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v -dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG -A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh -ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx -QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA -4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 -AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 -4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C -ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV -9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD -gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 -Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq -NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko -LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc -Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd -ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I -XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI -M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot -9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V -Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea -j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh -X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ -l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf -bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 -pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK -e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 -vm9qp/UsQu0yrbYhnr68 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef -# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 -# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 ------BEGIN CERTIFICATE----- -MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN -BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl -bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv -b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ -BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj -YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 -MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 -dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg -QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa -jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi -C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep -lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof -TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR ------END CERTIFICATE----- - -# Issuer: CN=ISRG Root X1 O=Internet Security Research Group -# Subject: CN=ISRG Root X1 O=Internet Security Research Group -# Label: "ISRG Root X1" -# Serial: 172886928669790476064670243504169061120 -# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e -# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 -# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- - -# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Label: "AC RAIZ FNMT-RCM" -# Serial: 485876308206448804701554682760554759 -# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d -# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 -# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx -CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ -WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ -BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG -Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ -yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf -BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz -WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF -tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z -374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC -IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL -mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 -wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS -MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 -ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet -UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H -YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 -LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 -RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM -LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf -77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N -JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm -fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp -6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp -1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B -9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok -RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv -uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 1 O=Amazon -# Subject: CN=Amazon Root CA 1 O=Amazon -# Label: "Amazon Root CA 1" -# Serial: 143266978916655856878034712317230054538369994 -# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 -# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 -# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e ------BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj -ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM -9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw -IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 -VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L -93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm -jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA -A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI -U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs -N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv -o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU -5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy -rqXRfboQnoZsG4q5WTP468SQvvG5 ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 2 O=Amazon -# Subject: CN=Amazon Root CA 2 O=Amazon -# Label: "Amazon Root CA 2" -# Serial: 143266982885963551818349160658925006970653239 -# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 -# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a -# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK -gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ -W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg -1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K -8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r -2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me -z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR -8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj -mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz -7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 -+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI -0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB -Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm -UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 -LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY -+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS -k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl -7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm -btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl -urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ -fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 -n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE -76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H -9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT -4PsJYGw= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 3 O=Amazon -# Subject: CN=Amazon Root CA 3 O=Amazon -# Label: "Amazon Root CA 3" -# Serial: 143266986699090766294700635381230934788665930 -# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 -# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e -# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 ------BEGIN CERTIFICATE----- -MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl -ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr -ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr -BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM -YyRIHN8wfdVoOw== ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 4 O=Amazon -# Subject: CN=Amazon Root CA 4 O=Amazon -# Label: "Amazon Root CA 4" -# Serial: 143266989758080763974105200630763877849284878 -# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd -# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be -# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 ------BEGIN CERTIFICATE----- -MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi -9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk -M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB -MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw -CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW -1KyLa2tJElMzrdfkviT8tQp21KW8EA== ------END CERTIFICATE----- - -# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" -# Serial: 1 -# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 -# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca -# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx -GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp -bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w -KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 -BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy -dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG -EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll -IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU -QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT -TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg -LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 -a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr -LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr -N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X -YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ -iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f -AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH -V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL -BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh -AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf -IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 -lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c -8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf -lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= ------END CERTIFICATE----- - -# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. -# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. -# Label: "GDCA TrustAUTH R5 ROOT" -# Serial: 9009899650740120186 -# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 -# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 -# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 ------BEGIN CERTIFICATE----- -MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE -BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ -IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 -MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV -BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w -HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj -Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj -TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u -KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj -qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm -MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 -ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP -zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk -L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC -jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA -HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC -AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg -p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm -DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 -COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry -L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf -JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg -IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io -2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV -09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ -XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq -T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe -MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== ------END CERTIFICATE----- - -# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation -# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation -# Label: "SSL.com Root Certification Authority RSA" -# Serial: 8875640296558310041 -# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 -# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb -# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 ------BEGIN CERTIFICATE----- -MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE -BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK -DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz -OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv -dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv -bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN -AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R -xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX -qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC -C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 -6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh -/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF -YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E -JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc -US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 -ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm -+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi -M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G -A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV -cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc -Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs -PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ -q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 -cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr -a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I -H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y -K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu -nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf -oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY -Ic2wBlX7Jz9TkHCpBB5XJ7k= ------END CERTIFICATE----- - -# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation -# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation -# Label: "SSL.com Root Certification Authority ECC" -# Serial: 8495723813297216424 -# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e -# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a -# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 ------BEGIN CERTIFICATE----- -MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC -VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T -U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz -WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 -b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS -b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB -BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI -7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg -CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud -EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD -VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T -kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ -gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl ------END CERTIFICATE----- - -# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation -# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation -# Label: "SSL.com EV Root Certification Authority RSA R2" -# Serial: 6248227494352943350 -# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 -# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a -# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c ------BEGIN CERTIFICATE----- -MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV -BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE -CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy -MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G -A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD -DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq -M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf -OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa -4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 -HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR -aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA -b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ -Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV -PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO -pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu -UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY -MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV -HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 -9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW -s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 -Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg -cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM -79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz -/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt -ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm -Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK -QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ -w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi -S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 -mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== ------END CERTIFICATE----- - -# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation -# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation -# Label: "SSL.com EV Root Certification Authority ECC" -# Serial: 3182246526754555285 -# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 -# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d -# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 ------BEGIN CERTIFICATE----- -MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC -VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T -U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx -NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv -dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv -bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 -AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA -VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku -WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX -5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ -ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg -h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 -# Label: "GlobalSign Root CA - R6" -# Serial: 1417766617973444989252670301619537 -# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae -# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 -# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg -MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh -bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx -MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET -MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI -xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k -ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD -aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw -LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw -1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX -k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 -SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h -bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n -WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY -rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce -MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu -bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN -nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt -Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 -55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj -vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf -cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz -oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp -nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs -pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v -JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R -8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 -5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GC CA" -# Serial: 44084345621038548146064804565436152554 -# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 -# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 -# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d ------BEGIN CERTIFICATE----- -MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw -CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 -bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg -Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ -BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu -ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS -b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni -eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W -p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T -rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV -57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg -Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 ------END CERTIFICATE----- - -# Issuer: CN=UCA Global G2 Root O=UniTrust -# Subject: CN=UCA Global G2 Root O=UniTrust -# Label: "UCA Global G2 Root" -# Serial: 124779693093741543919145257850076631279 -# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 -# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a -# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 -MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH -bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x -CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds -b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr -b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 -kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm -VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R -VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc -C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj -tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY -D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv -j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl -NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 -iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP -O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV -ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj -L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 -1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl -1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU -b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV -PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj -y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb -EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg -DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI -+Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy -YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX -UB+K+wb1whnw0A== ------END CERTIFICATE----- - -# Issuer: CN=UCA Extended Validation Root O=UniTrust -# Subject: CN=UCA Extended Validation Root O=UniTrust -# Label: "UCA Extended Validation Root" -# Serial: 106100277556486529736699587978573607008 -# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 -# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a -# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH -MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF -eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx -MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV -BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog -D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS -sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop -O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk -sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi -c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj -VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz -KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ -TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G -sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs -1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD -fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN -l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR -ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ -VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 -c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp -4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s -t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj -2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO -vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C -xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx -cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM -fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax ------END CERTIFICATE----- - -# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 -# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 -# Label: "Certigna Root CA" -# Serial: 269714418870597844693661054334862075617 -# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 -# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 -# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 ------BEGIN CERTIFICATE----- -MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw -WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw -MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x -MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD -VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX -BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO -ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M -CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu -I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm -TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh -C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf -ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz -IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT -Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k -JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 -hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB -GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of -1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov -L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo -dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr -aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq -hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L -6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG -HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 -0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB -lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi -o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 -gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v -faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 -Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh -jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw -3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= ------END CERTIFICATE----- - -# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI -# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI -# Label: "emSign Root CA - G1" -# Serial: 235931866688319308814040 -# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac -# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c -# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 ------BEGIN CERTIFICATE----- -MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD -VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU -ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH -MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO -MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv -Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz -f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO -8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq -d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM -tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt -Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB -o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD -AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x -PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM -wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d -GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH -6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby -RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx -iN66zB+Afko= ------END CERTIFICATE----- - -# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI -# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI -# Label: "emSign ECC Root CA - G3" -# Serial: 287880440101571086945156 -# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 -# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 -# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b ------BEGIN CERTIFICATE----- -MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG -EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo -bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g -RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ -TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s -b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw -djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 -WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS -fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB -zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq -hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB -CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD -+JbNR6iC8hZVdyR+EhCVBCyj ------END CERTIFICATE----- - -# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI -# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI -# Label: "emSign Root CA - C1" -# Serial: 825510296613316004955058 -# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 -# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 -# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f ------BEGIN CERTIFICATE----- -MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG -A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg -SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw -MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln -biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v -dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ -BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ -HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH -3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH -GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c -xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 -aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq -TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL -BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 -/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 -kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG -YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT -+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo -WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= ------END CERTIFICATE----- - -# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI -# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI -# Label: "emSign ECC Root CA - C3" -# Serial: 582948710642506000014504 -# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 -# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 -# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 ------BEGIN CERTIFICATE----- -MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG -EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx -IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw -MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln -biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND -IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci -MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti -sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O -BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB -Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c -3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J -0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== ------END CERTIFICATE----- - -# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post -# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post -# Label: "Hongkong Post Root CA 3" -# Serial: 46170865288971385588281144162979347873371282084 -# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 -# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 -# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 ------BEGIN CERTIFICATE----- -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 -mpv0 ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - G4" -# Serial: 289383649854506086828220374796556676440 -# MD5 Fingerprint: 89:53:f1:83:23:b7:7c:8e:05:f1:8c:71:38:4e:1f:88 -# SHA1 Fingerprint: 14:88:4e:86:26:37:b0:26:af:59:62:5c:40:77:ec:35:29:ba:96:01 -# SHA256 Fingerprint: db:35:17:d1:f6:73:2a:2d:5a:b9:7c:53:3e:c7:07:79:ee:32:70:a6:2f:b4:ac:42:38:37:24:60:e6:f0:1e:88 ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw -gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL -Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg -MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw -BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0 -MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1 -c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ -bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg -Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ -2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E -T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j -5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM -C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T -DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX -wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A -2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm -nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl -N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj -c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS -5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS -Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr -hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/ -B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI -AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw -H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+ -b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk -2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol -IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk -5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY -n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- - -# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation -# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation -# Label: "Microsoft ECC Root Certificate Authority 2017" -# Serial: 136839042543790627607696632466672567020 -# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 -# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 -# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 ------BEGIN CERTIFICATE----- -MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw -CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD -VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw -MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV -UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy -b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR -ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb -hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 -FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV -L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB -iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= ------END CERTIFICATE----- - -# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation -# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation -# Label: "Microsoft RSA Root Certificate Authority 2017" -# Serial: 40975477897264996090493496164228220339 -# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 -# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 -# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 ------BEGIN CERTIFICATE----- -MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl -MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw -NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 -IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG -EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N -aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ -Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 -ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 -HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm -gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ -jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc -aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG -YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 -W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K -UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH -+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q -W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC -LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC -gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 -tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh -SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 -TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 -pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR -xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp -GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 -dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN -AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB -RA+GsCyRxj3qrg+E ------END CERTIFICATE----- - -# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. -# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. -# Label: "e-Szigno Root CA 2017" -# Serial: 411379200276854331539784714 -# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 -# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 -# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 ------BEGIN CERTIFICATE----- -MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV -BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk -LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv -b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ -BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg -THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v -IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv -xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H -Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB -eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo -jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ -+efcMQ== ------END CERTIFICATE----- - -# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 -# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 -# Label: "certSIGN Root CA G2" -# Serial: 313609486401300475190 -# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 -# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 -# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 ------BEGIN CERTIFICATE----- -MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV -BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g -Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ -BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ -R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF -dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw -vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ -uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp -n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs -cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW -xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P -rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF -DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx -DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy -LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C -eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ -d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq -kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC -b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl -qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 -OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c -NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk -ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO -pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj -03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk -PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE -1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX -QRBdJ3NghVdJIgc= ------END CERTIFICATE----- - -# Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. -# Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. -# Label: "Trustwave Global Certification Authority" -# Serial: 1846098327275375458322922162 -# MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e -# SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 -# SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 ------BEGIN CERTIFICATE----- -MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw -CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x -ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 -c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx -OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI -SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI -b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn -swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu -7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 -1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW -80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP -JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l -RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw -hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 -coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc -BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n -twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud -DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W -0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe -uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q -lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB -aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE -sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT -MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe -qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh -VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 -h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 -EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK -yeC2nOnOcXHebD8WpHk= ------END CERTIFICATE----- - -# Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. -# Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. -# Label: "Trustwave Global ECC P256 Certification Authority" -# Serial: 4151900041497450638097112925 -# MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 -# SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf -# SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 ------BEGIN CERTIFICATE----- -MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD -VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf -BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 -YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x -NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G -A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 -d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF -Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG -SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN -FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w -DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw -CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh -DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 ------END CERTIFICATE----- - -# Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. -# Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. -# Label: "Trustwave Global ECC P384 Certification Authority" -# Serial: 2704997926503831671788816187 -# MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 -# SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 -# SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 ------BEGIN CERTIFICATE----- -MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD -VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf -BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 -YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x -NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G -A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 -d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF -Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB -BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ -j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF -1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G -A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 -AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC -MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu -Sw== ------END CERTIFICATE----- - -# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. -# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. -# Label: "NAVER Global Root Certification Authority" -# Serial: 9013692873798656336226253319739695165984492813 -# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b -# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 -# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 ------BEGIN CERTIFICATE----- -MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM -BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG -T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx -CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD -b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA -iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH -38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE -HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz -kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP -szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq -vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf -nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG -YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo -0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a -CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K -AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I -36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN -qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj -cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm -+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL -hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe -lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 -p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 -piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR -LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX -5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO -dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul -9XXeifdy ------END CERTIFICATE----- - -# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres -# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres -# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" -# Serial: 131542671362353147877283741781055151509 -# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb -# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a -# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb ------BEGIN CERTIFICATE----- -MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw -CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw -FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S -Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 -MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL -DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS -QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB -BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH -sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK -Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu -SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC -MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy -v+c= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa -# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa -# Label: "GlobalSign Root R46" -# Serial: 1552617688466950547958867513931858518042577 -# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef -# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 -# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA -MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD -VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy -MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt -c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ -OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG -vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud -316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo -0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE -y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF -zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE -+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN -I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs -x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa -ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC -4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 -7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg -JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti -2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk -pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF -FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt -rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk -ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 -u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP -4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 -N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 -vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa -# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa -# Label: "GlobalSign Root E46" -# Serial: 1552617690338932563915843282459653771421763 -# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f -# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 -# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 ------BEGIN CERTIFICATE----- -MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx -CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD -ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw -MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex -HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq -R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd -yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ -7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 -+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= ------END CERTIFICATE----- - -# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Label: "GLOBALTRUST 2020" -# Serial: 109160994242082918454945253 -# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8 -# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2 -# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a ------BEGIN CERTIFICATE----- -MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG -A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw -FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx -MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u -aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b -RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z -YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 -QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw -yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ -BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ -SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH -r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 -4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me -dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw -q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 -nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu -H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA -VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC -XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd -6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf -+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi -kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 -wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB -TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C -MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn -4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I -aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy -qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== ------END CERTIFICATE----- - -# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz -# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz -# Label: "ANF Secure Server Root CA" -# Serial: 996390341000653745 -# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 -# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 -# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority -# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority -# Label: "Certum EC-384 CA" -# Serial: 160250656287871593594747141429395092468 -# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 -# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed -# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 ------BEGIN CERTIFICATE----- -MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw -CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw -JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT -EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 -WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT -LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX -BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE -KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm -Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 -EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J -UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn -nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Root CA" -# Serial: 40870380103424195783807378461123655149 -# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 -# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 -# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique -# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique -# Label: "TunTrust Root CA" -# Serial: 108534058042236574382096126452369648152337120275 -# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 -# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb -# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 ------BEGIN CERTIFICATE----- -MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL -BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg -Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv -b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG -EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u -IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ -n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd -2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF -VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ -GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF -li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU -r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 -eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb -MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg -jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB -7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW -5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE -ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 -90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z -xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu -QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 -FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH -22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP -xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn -dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 -Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b -nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ -CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH -u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj -d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= ------END CERTIFICATE----- - -# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA -# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA -# Label: "HARICA TLS RSA Root CA 2021" -# Serial: 76817823531813593706434026085292783742 -# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 -# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d -# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs -MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg -Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL -MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl -YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv -b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l -mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE -4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv -a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M -pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw -Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b -LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY -AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB -AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq -E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr -W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ -CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU -X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 -f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja -H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP -JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P -zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt -jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 -/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT -BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 -aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW -xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU -63ZTGI0RmLo= ------END CERTIFICATE----- - -# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA -# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA -# Label: "HARICA TLS ECC Root CA 2021" -# Serial: 137515985548005187474074462014555733966 -# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 -# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 -# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 ------BEGIN CERTIFICATE----- -MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw -CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh -cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v -dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG -A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj -aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg -Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 -KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y -STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD -AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw -SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN -nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 1977337328857672817 -# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 -# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe -# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 -MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc -tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd -IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j -b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC -AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw -ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m -iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF -Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ -hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P -Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE -EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV -1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t -CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR -5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw -f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 -ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK -GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV ------END CERTIFICATE----- - -# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. -# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. -# Label: "vTrus ECC Root CA" -# Serial: 630369271402956006249506845124680065938238527194 -# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 -# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 -# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 ------BEGIN CERTIFICATE----- -MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw -RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY -BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz -MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u -LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF -K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 -v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd -e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw -V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA -AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG -GJTO ------END CERTIFICATE----- - -# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. -# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. -# Label: "vTrus Root CA" -# Serial: 387574501246983434957692974888460947164905180485 -# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc -# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 -# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 ------BEGIN CERTIFICATE----- -MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL -BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x -FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx -MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s -THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc -IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU -AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ -GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 -8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH -flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt -J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim -0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN -pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ -UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW -OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB -AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet -8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd -nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j -bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM -Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv -TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS -S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr -I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 -b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB -UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P -Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven -sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= ------END CERTIFICATE----- - -# Issuer: CN=ISRG Root X2 O=Internet Security Research Group -# Subject: CN=ISRG Root X2 O=Internet Security Research Group -# Label: "ISRG Root X2" -# Serial: 87493402998870891108772069816698636114 -# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 -# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af -# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 ------BEGIN CERTIFICATE----- -MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw -CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg -R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 -MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT -ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw -EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW -+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 -ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI -zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW -tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 -/q4AaOeMSQ+2b1tbFfLn ------END CERTIFICATE----- - -# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. -# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. -# Label: "HiPKI Root CA - G1" -# Serial: 60966262342023497858655262305426234976 -# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 -# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 -# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc ------BEGIN CERTIFICATE----- -MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa -Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 -YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw -qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv -Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 -lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz -Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ -KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK -FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj -HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr -y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ -/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM -a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 -fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG -SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi -7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc -SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza -ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc -XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg -iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho -L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF -Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr -kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ -vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU -YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Label: "GlobalSign ECC Root CA - R4" -# Serial: 159662223612894884239637590694 -# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc -# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 -# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 ------BEGIN CERTIFICATE----- -MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD -VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh -bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw -MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g -UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT -BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx -uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV -HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ -+wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 -bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm ------END CERTIFICATE----- - -# Issuer: CN=GTS Root R1 O=Google Trust Services LLC -# Subject: CN=GTS Root R1 O=Google Trust Services LLC -# Label: "GTS Root R1" -# Serial: 159662320309726417404178440727 -# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 -# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a -# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf ------BEGIN CERTIFICATE----- -MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw -CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU -MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw -MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp -Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo -27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w -Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw -TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl -qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH -szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 -Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk -MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 -wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p -aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN -VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID -AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb -C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe -QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy -h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 -7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J -ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef -MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ -Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT -6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ -0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm -2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb -bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c ------END CERTIFICATE----- - -# Issuer: CN=GTS Root R2 O=Google Trust Services LLC -# Subject: CN=GTS Root R2 O=Google Trust Services LLC -# Label: "GTS Root R2" -# Serial: 159662449406622349769042896298 -# MD5 Fingerprint: 1e:39:c0:53:e6:1e:29:82:0b:ca:52:55:36:5d:57:dc -# SHA1 Fingerprint: 9a:44:49:76:32:db:de:fa:d0:bc:fb:5a:7b:17:bd:9e:56:09:24:94 -# SHA256 Fingerprint: 8d:25:cd:97:22:9d:bf:70:35:6b:da:4e:b3:cc:73:40:31:e2:4c:f0:0f:af:cf:d3:2d:c7:6e:b5:84:1c:7e:a8 ------BEGIN CERTIFICATE----- -MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw -CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU -MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw -MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp -Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt -nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY -6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu -MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k -RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg -f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV -+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo -dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW -Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa -G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq -gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID -AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H -vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 -0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC -B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u -NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg -yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev -HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6 -xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR -TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg -JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV -7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl -6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL ------END CERTIFICATE----- - -# Issuer: CN=GTS Root R3 O=Google Trust Services LLC -# Subject: CN=GTS Root R3 O=Google Trust Services LLC -# Label: "GTS Root R3" -# Serial: 159662495401136852707857743206 -# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 -# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 -# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 ------BEGIN CERTIFICATE----- -MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD -VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG -A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw -WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz -IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi -AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G -jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 -4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 -VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm -ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X ------END CERTIFICATE----- - -# Issuer: CN=GTS Root R4 O=Google Trust Services LLC -# Subject: CN=GTS Root R4 O=Google Trust Services LLC -# Label: "GTS Root R4" -# Serial: 159662532700760215368942768210 -# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 -# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 -# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d ------BEGIN CERTIFICATE----- -MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD -VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG -A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw -WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz -IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi -AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi -QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR -HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D -9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 -p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD ------END CERTIFICATE----- - -# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj -# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj -# Label: "Telia Root CA v2" -# Serial: 7288924052977061235122729490515358 -# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 -# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd -# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx -CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE -AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 -NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ -MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq -AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 -vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 -lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD -n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT -7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o -6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC -TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 -WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R -DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI -pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj -YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy -rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ -8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi -0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM -A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS -SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K -TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF -6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er -3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt -Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT -VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW -ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA -rBPuUBQemMc= ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH -# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH -# Label: "D-TRUST BR Root CA 1 2020" -# Serial: 165870826978392376648679885835942448534 -# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed -# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 -# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 ------BEGIN CERTIFICATE----- -MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw -CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS -VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 -NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG -A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB -BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS -zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 -QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ -VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g -PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf -Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l -dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 -c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO -PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW -wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV -dWNbFJWcHwHP2NVypw87 ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH -# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH -# Label: "D-TRUST EV Root CA 1 2020" -# Serial: 126288379621884218666039612629459926992 -# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e -# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 -# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db ------BEGIN CERTIFICATE----- -MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw -CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS -VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 -NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG -A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB -BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC -/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD -wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 -OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g -PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf -Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l -dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 -c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO -PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA -y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb -gfM0agPnIjhQW+0ZT0MW ------END CERTIFICATE----- - -# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. -# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. -# Label: "DigiCert TLS ECC P384 Root G5" -# Serial: 13129116028163249804115411775095713523 -# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed -# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee -# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 ------BEGIN CERTIFICATE----- -MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp -Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 -MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ -bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG -ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS -7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp -0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS -B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 -BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ -LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 -DXZDjC5Ty3zfDBeWUA== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. -# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. -# Label: "DigiCert TLS RSA4096 Root G5" -# Serial: 11930366277458970227240571539258396554 -# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 -# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 -# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN -MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT -HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN -NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs -IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ -ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 -2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp -wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM -pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD -nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po -sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx -Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd -Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX -KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe -XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL -tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv -TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw -GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H -PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF -O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ -REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik -AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv -/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ -p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw -MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF -qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK -ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ ------END CERTIFICATE----- - -# Issuer: CN=Certainly Root R1 O=Certainly -# Subject: CN=Certainly Root R1 O=Certainly -# Label: "Certainly Root R1" -# Serial: 188833316161142517227353805653483829216 -# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 -# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af -# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 ------BEGIN CERTIFICATE----- -MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw -PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy -dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 -YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 -1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT -vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed -aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 -1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 -r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 -cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ -wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ -6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA -2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH -Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR -eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB -/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u -d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr -PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d -8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi -1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd -rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di -taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 -lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj -yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn -Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy -yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n -wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 -OV+KmalBWQewLK8= ------END CERTIFICATE----- - -# Issuer: CN=Certainly Root E1 O=Certainly -# Subject: CN=Certainly Root E1 O=Certainly -# Label: "Certainly Root E1" -# Serial: 8168531406727139161245376702891150584 -# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 -# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b -# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 ------BEGIN CERTIFICATE----- -MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw -CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu -bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ -BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s -eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK -+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 -QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 -hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm -ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG -BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR ------END CERTIFICATE----- - -# Issuer: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. -# Subject: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. -# Label: "Security Communication RootCA3" -# Serial: 16247922307909811815 -# MD5 Fingerprint: 1c:9a:16:ff:9e:5c:e0:4d:8a:14:01:f4:35:5d:29:26 -# SHA1 Fingerprint: c3:03:c8:22:74:92:e5:61:a2:9c:5f:79:91:2b:1e:44:13:91:30:3a -# SHA256 Fingerprint: 24:a5:5c:2a:b0:51:44:2d:06:17:76:65:41:23:9a:4a:d0:32:d7:c5:51:75:aa:34:ff:de:2f:bc:4f:5c:52:94 ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNV -BAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScw -JQYDVQQDEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2 -MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc -U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UEAxMeU2VjdXJpdHkg -Q29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4r -CmDvu20rhvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzA -lrenfna84xtSGc4RHwsENPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MG -TfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF7 -9+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGmnpjKIG58u4iFW/vAEGK7 -8vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtYXLVqAvO4 -g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3we -GVPKp7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst -+3A7caoreyYn8xrC3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M -0V9hvqG8OmpI6iZVIhZdXw3/JzOfGAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQ -T9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0VcwCBEF/VfR2ccCAwEAAaNCMEAw -HQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS -YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PA -FNr0Y/Dq9HHuTofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd -9XbXv8S2gVj/yP9kaWJ5rW4OH3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQI -UYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASxYfQAW0q3nHE3GYV5v4GwxxMOdnE+ -OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZXSEIx2C/pHF7uNke -gr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml+LLf -iAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUV -nuiZIesnKwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD -2NCcnWXL0CsnMQMeNuE9dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI// -1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm6Vwdp6POXiUyK+OVrCoHzrQoeIY8Laad -TdJ0MN1kURXbg4NR16/9M51NZg== ------END CERTIFICATE----- - -# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. -# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. -# Label: "Security Communication ECC RootCA1" -# Serial: 15446673492073852651 -# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 -# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 -# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 ------BEGIN CERTIFICATE----- -MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT -AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD -VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx -NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT -HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 -IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi -AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl -dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK -ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu -9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O -be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= ------END CERTIFICATE----- - -# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY -# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY -# Label: "BJCA Global Root CA1" -# Serial: 113562791157148395269083148143378328608 -# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 -# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a -# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU -MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI -T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz -MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF -SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh -bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z -xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ -spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 -58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR -at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll -5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq -nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK -V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ -pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO -z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn -jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ -WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF -7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 -YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli -awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u -+2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 -X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN -SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo -P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI -+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz -znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 -eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 -YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy -r/6zcCwupvI= ------END CERTIFICATE----- - -# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY -# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY -# Label: "BJCA Global Root CA2" -# Serial: 58605626836079930195615843123109055211 -# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c -# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 -# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 ------BEGIN CERTIFICATE----- -MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw -CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ -VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy -MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ -TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS -b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B -IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ -+kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK -sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA -94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B -43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== ------END CERTIFICATE----- - -# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited -# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited -# Label: "Sectigo Public Server Authentication Root E46" -# Serial: 88989738453351742415770396670917916916 -# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 -# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a -# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 ------BEGIN CERTIFICATE----- -MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw -CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T -ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN -MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG -A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT -ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC -WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ -6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B -Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa -qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q -4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== ------END CERTIFICATE----- - -# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited -# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited -# Label: "Sectigo Public Server Authentication Root R46" -# Serial: 156256931880233212765902055439220583700 -# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 -# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 -# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 ------BEGIN CERTIFICATE----- -MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD -Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw -HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY -MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp -YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa -ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz -SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf -iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X -ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 -IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS -VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE -SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu -+Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt -8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L -HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt -zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P -AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c -mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ -YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 -gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA -Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB -JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX -DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui -TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 -dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 -LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp -0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY -QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL ------END CERTIFICATE----- - -# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation -# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation -# Label: "SSL.com TLS RSA Root CA 2022" -# Serial: 148535279242832292258835760425842727825 -# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da -# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca -# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed ------BEGIN CERTIFICATE----- -MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO -MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD -DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX -DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw -b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC -AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP -L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY -t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins -S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 -PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO -L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 -R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w -dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS -+YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS -d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG -AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f -gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j -BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z -NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt -hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM -QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf -R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ -DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW -P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy -lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq -bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w -AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q -r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji -Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU -98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= ------END CERTIFICATE----- - -# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation -# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation -# Label: "SSL.com TLS ECC Root CA 2022" -# Serial: 26605119622390491762507526719404364228 -# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 -# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 -# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 ------BEGIN CERTIFICATE----- -MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw -CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT -U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 -MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh -dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG -ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm -acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN -SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME -GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW -uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp -15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN -b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== ------END CERTIFICATE----- - -# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos -# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos -# Label: "Atos TrustedRoot Root CA ECC TLS 2021" -# Serial: 81873346711060652204712539181482831616 -# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 -# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd -# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 ------BEGIN CERTIFICATE----- -MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w -LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w -CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 -MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF -Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI -zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X -tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 -AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 -KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD -aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu -CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo -9H1/IISpQuQo ------END CERTIFICATE----- - -# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos -# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos -# Label: "Atos TrustedRoot Root CA RSA TLS 2021" -# Serial: 111436099570196163832749341232207667876 -# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 -# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 -# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f ------BEGIN CERTIFICATE----- -MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM -MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx -MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 -MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD -QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z -4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv -Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ -kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs -GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln -nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh -3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD -0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy -geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 -ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB -c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI -pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU -dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS -4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs -o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ -qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw -xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM -rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 -AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR -0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY -o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 -dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE -oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== ------END CERTIFICATE----- diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py deleted file mode 100644 index c3e5466..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py +++ /dev/null @@ -1,108 +0,0 @@ -""" -certifi.py -~~~~~~~~~~ - -This module returns the installation location of cacert.pem or its contents. -""" -import sys - - -if sys.version_info >= (3, 11): - - from importlib.resources import as_file, files - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the file - # in cases where we're inside of a zipimport situation until someone - # actually calls where(), but we don't want to re-extract the file - # on every call of where(), so we'll do it once then store it in a - # global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you to - # manage the cleanup of this file, so it doesn't actually return a - # path, it returns a context manager that will give you the path - # when you enter it and will do any cleanup when you leave it. In - # the common case of not needing a temporary file, it will just - # return the file system location and the __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem")) - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - - return _CACERT_PATH - - def contents() -> str: - return files("pip._vendor.certifi").joinpath("cacert.pem").read_text(encoding="ascii") - -elif sys.version_info >= (3, 7): - - from importlib.resources import path as get_path, read_text - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the - # file in cases where we're inside of a zipimport situation until - # someone actually calls where(), but we don't want to re-extract - # the file on every call of where(), so we'll do it once then store - # it in a global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you - # to manage the cleanup of this file, so it doesn't actually - # return a path, it returns a context manager that will give - # you the path when you enter it and will do any cleanup when - # you leave it. In the common case of not needing a temporary - # file, it will just return the file system location and the - # __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem") - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - - return _CACERT_PATH - - def contents() -> str: - return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") - -else: - import os - import types - from typing import Union - - Package = Union[types.ModuleType, str] - Resource = Union[str, "os.PathLike"] - - # This fallback will work for Python versions prior to 3.7 that lack the - # importlib.resources module but relies on the existing `where` function - # so won't address issues with environments like PyOxidizer that don't set - # __file__ on modules. - def read_text( - package: Package, - resource: Resource, - encoding: str = 'utf-8', - errors: str = 'strict' - ) -> str: - with open(where(), encoding=encoding) as data: - return data.read() - - # If we don't have importlib.resources, then we will just do the old logic - # of assuming we're on the filesystem and munge the path directly. - def where() -> str: - f = os.path.dirname(__file__) - - return os.path.join(f, "cacert.pem") - - def contents() -> str: - return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/certifi/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/certifi/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py deleted file mode 100644 index fe58162..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py +++ /dev/null @@ -1,115 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import List, Union - -from .charsetgroupprober import CharSetGroupProber -from .charsetprober import CharSetProber -from .enums import InputState -from .resultdict import ResultDict -from .universaldetector import UniversalDetector -from .version import VERSION, __version__ - -__all__ = ["UniversalDetector", "detect", "detect_all", "__version__", "VERSION"] - - -def detect( - byte_str: Union[bytes, bytearray], should_rename_legacy: bool = False -) -> ResultDict: - """ - Detect the encoding of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError( - f"Expected object of type bytes or bytearray, got: {type(byte_str)}" - ) - byte_str = bytearray(byte_str) - detector = UniversalDetector(should_rename_legacy=should_rename_legacy) - detector.feed(byte_str) - return detector.close() - - -def detect_all( - byte_str: Union[bytes, bytearray], - ignore_threshold: bool = False, - should_rename_legacy: bool = False, -) -> List[ResultDict]: - """ - Detect all the possible encodings of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - :param ignore_threshold: Include encodings that are below - ``UniversalDetector.MINIMUM_THRESHOLD`` - in results. - :type ignore_threshold: ``bool`` - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError( - f"Expected object of type bytes or bytearray, got: {type(byte_str)}" - ) - byte_str = bytearray(byte_str) - - detector = UniversalDetector(should_rename_legacy=should_rename_legacy) - detector.feed(byte_str) - detector.close() - - if detector.input_state == InputState.HIGH_BYTE: - results: List[ResultDict] = [] - probers: List[CharSetProber] = [] - for prober in detector.charset_probers: - if isinstance(prober, CharSetGroupProber): - probers.extend(p for p in prober.probers) - else: - probers.append(prober) - for prober in probers: - if ignore_threshold or prober.get_confidence() > detector.MINIMUM_THRESHOLD: - charset_name = prober.charset_name or "" - lower_charset_name = charset_name.lower() - # Use Windows encoding name instead of ISO-8859 if we saw any - # extra Windows-specific bytes - if lower_charset_name.startswith("iso-8859") and detector.has_win_bytes: - charset_name = detector.ISO_WIN_MAP.get( - lower_charset_name, charset_name - ) - # Rename legacy encodings with superset encodings if asked - if should_rename_legacy: - charset_name = detector.LEGACY_MAP.get( - charset_name.lower(), charset_name - ) - results.append( - { - "encoding": charset_name, - "confidence": prober.get_confidence(), - "language": prober.language, - } - ) - if len(results) > 0: - return sorted(results, key=lambda result: -result["confidence"]) - - return [detector.result] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index b5bc6ecb606192340ae35f6a187b853a31d5c90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3175 zcmd5;UvC@75x?C#9*;*-e<=Bn61zB{?E{ONOxmV!4a03}$+ikh4ot^shz6$3PBxpW{*;6$41*c^@ttr&d$!x&d$tl zvu4w`;CoK)@BE`>S^vbr?1!_zf+qhCgjtLv)|m9knD!~L7-e>1kDb0_`c6_AyM5R6 zD@k?i^*z&fliJwt`=(z_>f=VgVftRu9MARV#`FDoVht@;`y1&m)O@zg>YVaL-rAun z7HjY&*5v+<%jVep^GbiY=7Y?+mt+<|rj#SxU$J&Pw#Zr_dyXyjtoHdY!FH=nwR1O? zN>@Hi<1GD>Adl$Q%~2$JT-_GgB>zBU+gt#*Ipv-){Pi@SsGf=xhiU&lmy<-T#sdYT zMNs&d3mGM=T=9X*1ngCPxOTs{es5FP!w@H7%P?$LL=CppE;EAKFaN_RNkknc1iJf{ z_O|yG52X@%S&p(v!a~8*Xw1We52L}pb_G`xkq#(GpMExU9B4P8$=?7`R$(b}NaY37 zqtIJYHY3U@tV8l=>#y{X{E;YvqXSD-3c~1T9{?U?ZpoR9`+dH|-wM8`KvuH})4#%2P~bPd%64?saF${$TY6Ax4t z@Tbu@PI;$XruOqv=9^W)))p?3TU$XUrh`a`Xn$*KcB|Jp4YutWUj|QjP`WcH-FbEp zX>=I#-blboID0IDaV9tr#zh*y5#q;D!c!%GIb-`9%s{)dESZ}8)w^p?a|jyFf^2&i zI>w!+N0)d`JhD0EkAq>Rt_5EZF%K8q_Ou_%IF%{_|LNM9n64Nn>DmKOvnE6)w1dtp zW6#;)oaxFS$s}*vVh%JJb=oU~F%w@{;%(r5#k-?y%)7%$JP_G{D;0P5uF9?)h$x5a zy^?24cHzz+cawO#oA0Ypmj1N!?mJx>D}E)927A$v%WfX$T}XkHWuiNPWP@$GVHl^e z3d2smFB-7d_n=9rKbGI{2_+5UoOrfReBu!^uNUHB3LX#DNO16L!Uh=drynL&6`BeD zpFynt&%sYk@Y{ub7W_5_KO}*@>#5qVzemOAL+ikSRsmjp)%xV(feZV%s&PogT2VP_ zGMhQifwMce3Q2`2^ynwRpD*0gKCHTS;1)#wws4OYj#2yKo+JJQYg+m5SmmHvRF9U9 ztpl&{j+Pm$6FJD7GxYq?g~BVU#}uTf_&xA10>{Wtxen}AooaS>S6KBgw%K_@y;V4e zgn6*n=j!dkVKwGIw^;o%+Cv*I4GE-qBU*)uVgh)Y=1`YRYUi1h@pke}&O=;&hom=I z^&K?&>t5-&i_=IEBK4xFKgN+-t0Txk60q=NqcY|7B4Vi;#>0^LcVUyUF zf&2k5>XXU=Dab=ewMUd8+K^3CegH#h=N(OQGb+g?Sfgv#hdkv^b8+J%)PtZ$KW$mh zE|>KS!L)Nd$p%p(Z*2Ly7OQ6{= z*^Ugfy$4MqOc(GNTCwVAG2Im32To}=L3qYne${U8dJ>JdS#;wOsz6=7_3YAXjh+g^ z+rr-C`|ZnO3Du*=#5pAAkz7E6l}}tmvI3-EkMWrTfC=vuffZ5L?yTRw6aM<+2W$O# ztiF<~FgMQ}DJm%7@}~-lv#w6L+KuuY8FNDropH|Mw<2CQPBr4|L{}h@xX?cAE|h!{ zt5Lr>ie&gCPQwzB>g&CG;YaJ6;l}$PXdCqR{kvo%{0K*GX}sv*pk?d`XKj1sE<_XL-h(FZ0`Xfjm_reB8q^^U zppQ>3Lf<1TgG39q3tZ>Kaa@prf16UndEuPUPaD+*;!&e{vrTTb>8)Gs^V$XA1*{Z! z-2x#?x2ARt@xeJY+gwC*Ix*$BC|u#`WGu~1_Wkn23?7}r!^y?T>ASNGqD+(sU!A@; z&1=%UD|I!*v=Kl3>-Vs@y diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc deleted file mode 100644 index 90ee23c2742f210ab86aa077c3497f2accb705fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27181 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 ^7eHn=M?9pgd_^c)Kacf?yACAsKsl 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc deleted file mode 100644 index 273fdfbbbe5676b43d894f92f979842fe20fc545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1159 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 J9<*$B_`j6xV%Pux diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc deleted file mode 100644 index 42aa60abff7bd4445c2be6a6b856f2bbd4849008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2426 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc deleted file mode 100644 index b9b501054338cdfe03ee9ced26c98361721d4ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3069 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 LNHj{GM%nN$|EII{ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc deleted file mode 100644 index 8f3d2cb4914c09fc82d3f61783aa674c754528b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 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 bJpLEez5a&czVT^m|EOU#=sLYa*Zuzk$~LAq diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc deleted file mode 100644 index 72f447e098c2298708089d9dd178208429a0affc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8520 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 GjsF0`*?L(3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc deleted file mode 100644 index 503de2ef68a43e72dbe79b6e56787b44a8d6a86b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12065 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 n(0xF+XDas}wl96nKK;55?%l0cyqqvFe#(T@+ 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 Q&F@Hw7AtS8nDJu%55rK=+5i9m diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc deleted file mode 100644 index d068b659b023ad923f0300e47db08c11b1259f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1167 zcmZ`(OK%e~5VrT7u%V^2P{a)`+ z%CSEQUpaB^jT7TdOH-kaG_&Iw+cWdcc#Br6iGUXP>*%M0&@a7MB?}hsfyEvOiYQJ| zhC__CZlp$LhGwmssg>EGUF%lrWNzqU^bt{;ItxS{X3x#gqwWB;z26wFYGd_e|6BLq za4!*(C&Nl6MgAd=(y2%UI5)ZlP4e+TMw0cSc#`A{tdDwCDwEx*WZg-`2TXq9#gK9E z+^;VqgC6O9-rN5aLx@|X>(C^2K`<0zib8`n&d>-`lUfTuG?_&)vqwgqvo*(|^UvZ^ zZ=o&j8M095K^0APua3A(KslVris$`U*LF=>H-JrG@dAWIb99b>AdI9T%{e|r#FF+L z!PhxO=dSip1h?aU+f%lvO2(B(NRlU#5U%gxHVD;-YjlXnxDKGU=n9G?(lE~8sLh#R z@&YSMuyh391|e}82|>sO`ZEb8MaF`0mBhS=nUqOz^hN|C=1~dIcgli_;F#sdL7EJM zaw;c9{(9%t%RnTOb;>9{ipER?Wl{zNw$XwIF?5A88L%prCuQB6opQ<>kmGY;;elx4 zCibw8XPYYk?pzo7AAlOfF7T!9AjJTV(VsbRv~zICAApUww5YXOY`{|aIuod!qWtclUK-`&3P9<=3BCp5c8%BWw!vL+_S+5J zT%92ys!2#z&??osPssNwN|&A*J>>zKFb#65On5JRQ%86VLba}18nZNo8M(n>O>fa) zaCq0~8L;p{c<4ShoONuN+qm}VG}i0Jt<2DJtTvWoCiElBmXEL=Lba9+udrJ-nd{~# k2dn}{QjchT^-4B3t?}M2>wKp>EA-#Tf9k_L_;}O&3s)o^U;qFB diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc deleted file mode 100644 index 25df49fd5773187fd4c699a25418e8518ee89c16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19109 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc deleted file mode 100644 index 75d5907b84993ede3bd69084caaa19e2c290bfe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1175 zcmZ`(J8u&~5Z=AFtuqOML;*TzaFHBI8VZCU4oZU!!re8i^X=MR`e7EUd>XjuCaKw?x!q?!t}(>JL#j_=(}FF4j+v5BCrD z_K&z!f{$j3m&N-c$>x$v@NV=<%8SWRC5rWvbjk|`)~)_5Q~YqQSZ|t$Ayc14Ibs4l zYt3zB*eCr@M;|_>5ab@2N({+E5DdkbqS&IX3pB>mrp_{qZRSwS+_6<>?JRKY{jvBo zSQ?9efgBVEP)A#bO~@t%?Fpu4q8Oy6yjwE51#AP$mmm~cpiBG>VWcc&FYq}cj&c_W zzTP>y^o@rixE>F>fp+DrVnPRm@PaEsgt#zG0C@&SUBM(% zS6DleWn=iZ2uZU4{w`KkVp@Fdnd~KRYF~DODwAY*!55XonM$}p@HejhklM7T&iX>-Uuv{CY z9P8}Ky{N0Z{u^05f}d7Q#$~__6&PTvQw9 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc deleted file mode 100644 index f92bec6ff1b15d1f7b58253fda9c0e74396edf51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3422 zcmaJ^%}*T36|buPn4YE?Fg7+A8)JLz^<)FH_Qo-eR$j9(2C`=GdT=7O6t#w_8fX}L zW~+O!AgmO{Nc#`u9{b2;FS$g@HJ2Q7ty`26iFOkyABSv`&3n~7cm`W()W3RF_4>`L z_gSm@e%+hoHof0_2~}t86})?qiO7zzNu-mY3new$_D&1rMn(+NdVAM8Nz)6(&vb@m?bOSnDXb_p!4{{524Q_>>c$aq1hK`6f4f zi<`d9EkDO?-{Cn_(06&>AKjPMl#n&tQ}2!BQR8^Yfa{(4C8yLXi>MbeQ`rH)SQK1efo4S3@R010_PUeZ?t!h{}> z0DJ*x9FQ#&Mk^a_PGFYP=p2xjdCgC%#AEdLP6De&ShpG@{-)3`5 zidZB^RGG18Hek#LLA_av;~+R9{|ZZ+tsPO?=!A9Is*5BEOWU(?DXz;}8=`l*-Qsa+ zS46v|X1HEz?_H;!-8-q-=qN}8bFNS}Jzq^i*MUuNmSKEu~Bnz|3t7-3p< zJpTbk6gfauA=@ElXr;*HB<#p507XMyL;78WTL}GHsx#ozV5h}J6T$%NPy8$3im?>h zmP_|1`}BQ-SXIwvl`dI%R#8sM@T9B;QfjR_x3GM~(zCq>QcfSs3F9;iegm6v0f15Sl44mjD)~jp}_+Zb?_S|UfLwt2z64b#Zwfa$>3c@ze5;gUTGZY~)AF)n}*H3L8*|>aC~|auL;q8bOIG zs|)4FC&Dr>DMxp{xU;StUATZc?Jo~|2NtWSwj+k1hw3t4U!6Oz33)UPl&v zFTm@-A-pmA(IL>4*z3-8LRqGT>jmbzP-~#9Feod`bpJi#jN~s4vIoPIO~Px8QHc^O zMOWF$9^SPiMvBx28O&lhZS4}fnX*LG*@@F4Iux(>b7mxPe2KTbUMfX2iPtZ>i_@% diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc deleted file mode 100644 index 6486a9e578693b0c1b0a44976774d68c1678d48d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22137 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 =JbKH#q|Uecw`^*(pR<)`QE;t3whx# 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 Om3>s)B5~s+jPpNuTG@60 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc deleted file mode 100644 index 08caf2c9697ea7578d91b9e0ba73d235ff67d0dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138761 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc deleted file mode 100644 index ff7798634722841666a654cf541d71824c5c6c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmZ`(OK%e~5VrT7uxU$ap@BQ-KJG;7^Vt;`PXTDMXsb3+%S4~W{-Ss>~#dv1mvb%&_y{l;)r7punyhaY!# z_Y)y`GOA=!xxQD>B%cgrBw0U-r%BGh`mkT6GTEI;wl|IVkjXE+7%>i> zmHIL=?34cC{`=1{gt$ez4ozYg1VbUFC^Ts642>~0skQJ!lUWoqdu-G>TXP&b|12)` z7TV&TAq#~bRMA%V>WIq(l*5^&p}8uN9Xtl!blp@oa0kOENRaX ze4SHt?rIN3a62A!J!OlkWL$ZKBzYnU;rbqKgHWxwMu&)u>i}w#Hc%vyhVcZB+MEd{ zFR-!%OULkS5fZ175QJQyKht1ZWGt9eNz99wNtpykuSFnY9+d!nuPmqtj#+*jq{%2K zXL4HPueM*l2t*=TuZ-fOXu?ELCS^ci8!dPcLsux1!M9=>jmo+=+vSY6AjfCG!UNI9 zZR}wmpKLS$+`caIKL9m|d%%~vgA@Ze#vrs0bO3%IOuVB-t<_>3mde+OKF1aZ5>Yj@Y+E;t9>mhP?2 zkPy`-Br9l@YTYN~dljWiPYs^(08AJLIa4M)7rvn*JOZIQR~?O6n!U48|D_SJvxoGx^ImUT29saa>|5$gW2*8)-$M9v(XiH%N}#x8|8pi hz(nc^t*>rmbJH5{&9ct7y0Jq4eEcUqjDwFi%)ctG9Blvq diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc deleted file mode 100644 index 5d77dc3f34b3abec15c5f209d2fbfef09b21a7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37987 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc deleted file mode 100644 index c2fb34b585ac7907fc5c583482e080770aad36c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47929 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc deleted file mode 100644 index 59fd52330a44c353d52f6069dce19a1a705cbb5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46119 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc deleted file mode 100644 index ecbc96c2c2a503e1d8005f99c283390dd6e3afef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44566 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 BSxf)` diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc deleted file mode 100644 index 0a037b6bc09d707f7a57eab2742c618969e74b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47889 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 NsX5{=n_Xh}e6< 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc deleted file mode 100644 index 41636b88bc77e26b51c0fc9eca158f651f24c59a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44742 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 U?1SrI!hX00Q{i5-4=m*W1Wefz2><{9 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc deleted file mode 100644 index b2beb1e2be9b213a67e771992d490d7a04178e88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4706 zcmd^BOOG4J5$>*eaL6UO+=t$_Y%33$0lZA$07(ELwy?6DgT=K)DF_A*1|xQp;)>)@ zJxxKop^(EapkojqKfpfvl7Em(e#V^aIF7x3zwJ0toT`}}ad)-s$QNHS#8+L@UES67 z97dH&iQ%)&FLnNMjIlT9W$$C-%hQNhAt#vNeKz1eAAk>>2@qD_8rZ&_@^;@DxW0?L z;}-<;Jpq1ExPD0#{5hN}3(v2JqF)sye_qV_HBt5#x=a@T$p7zALLYn=nC0s^)c;-J zF#ToJO{g3gX|6g0^E2l6%0Gw<$scy7e2&h@`5N+s{5`*S{{C&p{I2=F{Oo+p=l71e z&V2k|_ouT+hU87>?$tqje*S}ubnZbp(n<3VfJ@9@6cvBzIVP%New>X>VEnvZ%FK zePM^XQ5_Qd`ChCO=gP1b4R<)r@uaePEmSS3Ur^Cisc@o9TyNNI=}^lZ>RmfP#3JGl zafuX&ctnaw>Mtrf@7odDsLX`aXNQ{Q($$&5=|W1Trapj11C@Q zrreYqcIU%{r;5_m^cvGsj9eQn*!Pe$J@G9hlKC7zF(7JpSceNs*xO~_+I@3`i*L4c z1eb0HL_v7l_7?XG_hyQsl+Ji!P8MZJ&UN4fe%xfaV~et=Y}@#u!otD5l#;eTe}~!3 zPZKh!UJTopqCq&!(k^k8)MGVlw#mBuA)Zo?GA}-ZM6)gSGJl0}reVSYtILqu6ZW!0 zbAn;6^Jd*moOnEvD)EA#H|*&kNUXKXze;LBKa6$I#(WRj$i_(}=qPz3Xh-9rMtMic zSn5}KV#l)I!Lb-*fq`}%t0S~QT2?zq=hQCn)=Yh3?%+=$yM9AUXUF^WXoxG9G> z8~xtZ#%M!di-u3G{N%@txTob4qp*EF?8>+?>Wvx!iit=y=qf_$#vsHa(HWz(23JNK zY7wm+lG&7gCGO&{%r}qi_u5Ks-+f*qkELGw5i***#0Bqi4a>w^0=>6x3F{owHhOgG zJ-e9}+YbGoNi)ChswLu=ktF43FFo^OuzLP-(7bX{9ijOJB1ehfA0MVp5IIHUAtJP( z5vdhqLCLAY=JEk6Qm@}<0tJ5+@hPRO;22tH`d+>@Q}?<%?axSN!!9kcRI`LIELpG!>~9L z5U>Te0Y~>2I5PoE)k3rTyX8MW_xk4cQ(e@PKG~O!vUzvvr%!iZ`omv8fBdDlp29Mt zN>$`I^*EBmipPV@W!50PRku=yC611C*hhaw!%k1gVOt*bRJDt#KVAM4o)uH^mbuMK z;9BlCCjsu39M7`(=EDa(wtsIOR1J4F>kHILshqHrmV#gqiE*F!auD1Yhy83NZCPo> zCm!}O?7w;gtry;(n!xO#(Hw4$2JE>YR7{;cCFD!#;# z!|@=_ZgZL@tSc9uP1|2$oo}rYX(3ttHIX%XC9bvRTWc3CsIzqT4~YDb2&vw4=V>Z? z=Q98Ok{Vom2J@kIx(pZ|z#j%_{|`Li@Qo1w{{a&$xCUV8T&&2TV8yJ7B_bcpFSO0dIi`C*dDp!YOzYOn3 Y;csBVBk($y@F=_nGvU5wpIx5+FS80P>Hq)$ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc deleted file mode 100644 index 3b258d28b38d89f271a9c4e95100e45f17009de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2317 zcmZ`)TW=dh6rP#AWW8BCsdH(10fIyk7PO}DK#>ZfBxxJeIw*0GShX5$JY#2*y|}aM zibRftNGMPIhxoC7X3x%`8 z2H`uH#bY3X2%3N!`#jypv3&Ug#O#O)9A$`ss8yod#h* z$vq;bgm+AYC*30}tcuDOY4|VU1=3*J+vt~Zo<)gv9%aD1q_|G?(#lSxR^y^n@%8{U z?tspI5f`vm#l0IFk)a*B(S!ZxHq5-8d-E(%yBtR4{1^OW0le4+4@S+~aEKikgwo+aR10 z73s-}^t@UN3 z`=;5_(+T*>yJJUPCCh=zS{-)ACFHHiEIt9IBu8YI4ymAjQpg+`63z^@N?Wia3bG>z z*k!dER0VM2@9}*NS3AX^4-xe^kF&VsTrY?-sp1jl>Hrif9g`Sdq`I;VZbeE(``YJ8 zRFu2}S%eC(3z>Ay{V%AlaNdE;0&+2gxs*{kY%cpeAzF#5aX3o9Q-kg)IA~ zhHmut)hu}UDa^tHQll<>YV_cPw@3ZPsplQ6*VBRgX`G8&AYhD7=!j5=?k-bRq_1U5 zEr4u|Wr#UF6LZ#5(4eH@su}pvj*?)jsspbsAelol599?^3&<}bSweCN$z>onVHTJ- zA6ywvaOmng95OFx53|If>(14V3ztm6T)`Xb;3e1%6*Hj4)DPr0sFYpk50Gjom23!} ztdb``J!XgO&_dl4YiNz=p*^%q=$}2NzJOKtWJ=&!4`yY^Mu01&zdH?e2dI&KWpt~c z`wgttCaa&B)frgbG55}n$e}Z2g2BqqLwxIkux_J$^rVi`&=~=CJw+Z@DCk;C1nEWc zJ9OsjeJX5_@H{i;=it?Oxb?X?xiBKgoh*(}=i;8No}XF;@*H%D(>nO@TCoh@aY-%j z#O1P7Dp$)btev&Z&5cd% zCV8(1ZRH5LJ?QCRQo}rpQmH+J0E9b*Ag|rlMw>re)9&~l?XI`CQ1RzaHX3UiBLW^w@WDLcp+6j-H--GB znz1dvhFRPOQiHafWr3+^Ms4^2{nvACSn)ve&96`E^nJ#Dt+9alG@$I2XSwX)$~&qb zJ$-8{o03OMAkF7X-ZVBOp0*ln+>}jFQ&*7u&wku^0<*x(*TBAmYwxh*d?4ZCDx7FF zW)W&J%K)`L=V>km3GxBwPX|#l*_q;8ixBAB*Y8?7~iY6cAyg1>e!?8O*9uuK$& zRy*A!k4lAR>goi6J2FY&syCh(gfZYU4SFBLG~nV9n_jhR?qzTBBZWJyMoqirJ|eV2 zFdRQTYmoQMpM=7{SY15_!wP{$*T+R+$}S!Mn=3>g?O=x##yis%rqIosXUu$EHQKv9 Vj?=f;bjH@%_W~%KfX>r->p!jvNT~n- diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc deleted file mode 100644 index 2d7aa8ff4407fde732b490db8da154a98c6bac2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc deleted file mode 100644 index 0b6419585d60fa0186838d59d1fb5b51b9e61175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 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 bSxE2qs^diizm9q;r{2S(fCu_&f diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc deleted file mode 100644 index 5534eaf5c93bfcfb13d1844056e54b35f49f725e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2643 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 SSEbkv{ae1_1N1&!GyegiFXEE` diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc deleted file mode 100644 index 3443191241b071e220040d0ed2020dd23f3586e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmYjOu};G<5RGX{QBWC~Z=^%xRtO1I2vrCMmLj!?p-be%PGU8&E!!!iGamvYAHdIK zC`(%tFl?sV_o$$mfZoV}uX`t9=97W}u415@Yb)CKA-J&Klyp|=Bi@Q#)p z+F5u5fAbkU=G;IjX;m;_FWguIQWP~<35J)d;Ast-SXK28FYM-}Iu0$|Q=K<0#rubD(P+ciZ%y?&gd8huMdx z51kNg_@OwLCBs?86D<>FEyt@%gH57|az_r8qz12 -# -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -# Char to FreqOrder table -BIG5_TABLE_SIZE = 5376 -# fmt: off -BIG5_CHAR_TO_FREQ_ORDER = ( - 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 -3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 -1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 - 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 -3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 -4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 -5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 - 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 - 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 - 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 -2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 -1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 -3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 - 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 -3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 -2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 - 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 -3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 -1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 -5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 - 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 -5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 -1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 - 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 - 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 -3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 -3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 - 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 -2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 -2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 - 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 - 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 -3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 -1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 -1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 -1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 -2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 - 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 -4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 -1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 -5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 -2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 - 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 - 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 - 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 - 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 -5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 - 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 -1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 - 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 - 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 -5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 -1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 - 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 -3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 -4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 -3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 - 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 - 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 -1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 -4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 -3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 -3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 -2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 -5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 -3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 -5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 -1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 -2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 -1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 - 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 -1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 -4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 -3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 - 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 - 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 - 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 -2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 -5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 -1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 -2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 -1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 -1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 -5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 -5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 -5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 -3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 -4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 -4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 -2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 -5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 -3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 - 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 -5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 -5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 -1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 -2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 -3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 -4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 -5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 -3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 -4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 -1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 -1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 -4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 -1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 - 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 -1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 -1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 -3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 - 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 -5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 -2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 -1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 -1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 -5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 - 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 -4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 - 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 -2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 - 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 -1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 -1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 - 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 -4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 -4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 -1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 -3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 -5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 -5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 -1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 -2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 -1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 -3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 -2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 -3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 -2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 -4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 -4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 -3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 - 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 -3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 - 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 -3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 -4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 -3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 -1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 -5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 - 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 -5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 -1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 - 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 -4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 -4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 - 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 -2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 -2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 -3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 -1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 -4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 -2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 -1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 -1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 -2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 -3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 -1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 -5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 -1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 -4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 -1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 - 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 -1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 -4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 -4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 -2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 -1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 -4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 - 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 -5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 -2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 -3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 -4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 - 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 -5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 -5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 -1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 -4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 -4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 -2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 -3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 -3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 -2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 -1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 -4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 -3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 -3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 -2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 -4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 -5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 -3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 -2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 -3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 -1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 -2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 -3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 -4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 -2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 -2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 -5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 -1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 -2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 -1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 -3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 -4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 -2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 -3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 -3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 -2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 -4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 -2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 -3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 -4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 -5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 -3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 - 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 -1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 -4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 -1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 -4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 -5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 - 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 -5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 -5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 -2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 -3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 -2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 -2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 - 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 -1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 -4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 -3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 -3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 - 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 -2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 - 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 -2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 -4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 -1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 -4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 -1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 -3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 - 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 -3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 -5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 -5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 -3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 -3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 -1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 -2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 -5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 -1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 -1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 -3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 - 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 -1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 -4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 -5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 -2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 -3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 - 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 -1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 -2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 -2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 -5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 -5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 -5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 -2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 -2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 -1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 -4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 -3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 -3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 -4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 -4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 -2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 -2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 -5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 -4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 -5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 -4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 - 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 - 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 -1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 -3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 -4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 -1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 -5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 -2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 -2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 -3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 -5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 -1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 -3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 -5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 -1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 -5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 -2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 -3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 -2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 -3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 -3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 -3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 -4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 - 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 -2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 -4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 -3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 -5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 -1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 -5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 - 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 -1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 - 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 -4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 -1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 -4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 -1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 - 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 -3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 -4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 -5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 - 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 -3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 - 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 -2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 -) -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py deleted file mode 100644 index ef09c60..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import Big5DistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import BIG5_SM_MODEL - - -class Big5Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) - self.distribution_analyzer = Big5DistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "Big5" - - @property - def language(self) -> str: - return "Chinese" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py deleted file mode 100644 index 176cb99..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py +++ /dev/null @@ -1,261 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Tuple, Union - -from .big5freq import ( - BIG5_CHAR_TO_FREQ_ORDER, - BIG5_TABLE_SIZE, - BIG5_TYPICAL_DISTRIBUTION_RATIO, -) -from .euckrfreq import ( - EUCKR_CHAR_TO_FREQ_ORDER, - EUCKR_TABLE_SIZE, - EUCKR_TYPICAL_DISTRIBUTION_RATIO, -) -from .euctwfreq import ( - EUCTW_CHAR_TO_FREQ_ORDER, - EUCTW_TABLE_SIZE, - EUCTW_TYPICAL_DISTRIBUTION_RATIO, -) -from .gb2312freq import ( - GB2312_CHAR_TO_FREQ_ORDER, - GB2312_TABLE_SIZE, - GB2312_TYPICAL_DISTRIBUTION_RATIO, -) -from .jisfreq import ( - JIS_CHAR_TO_FREQ_ORDER, - JIS_TABLE_SIZE, - JIS_TYPICAL_DISTRIBUTION_RATIO, -) -from .johabfreq import JOHAB_TO_EUCKR_ORDER_TABLE - - -class CharDistributionAnalysis: - ENOUGH_DATA_THRESHOLD = 1024 - SURE_YES = 0.99 - SURE_NO = 0.01 - MINIMUM_DATA_THRESHOLD = 3 - - def __init__(self) -> None: - # Mapping table to get frequency order from char order (get from - # GetOrder()) - self._char_to_freq_order: Tuple[int, ...] = tuple() - self._table_size = 0 # Size of above table - # This is a constant value which varies from language to language, - # used in calculating confidence. See - # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html - # for further detail. - self.typical_distribution_ratio = 0.0 - self._done = False - self._total_chars = 0 - self._freq_chars = 0 - self.reset() - - def reset(self) -> None: - """reset analyser, clear any state""" - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - self._total_chars = 0 # Total characters encountered - # The number of characters whose frequency order is less than 512 - self._freq_chars = 0 - - def feed(self, char: Union[bytes, bytearray], char_len: int) -> None: - """feed a character with known length""" - if char_len == 2: - # we only care about 2-bytes character in our distribution analysis - order = self.get_order(char) - else: - order = -1 - if order >= 0: - self._total_chars += 1 - # order is valid - if order < self._table_size: - if 512 > self._char_to_freq_order[order]: - self._freq_chars += 1 - - def get_confidence(self) -> float: - """return confidence based on existing data""" - # if we didn't receive any character in our consideration range, - # return negative answer - if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: - return self.SURE_NO - - if self._total_chars != self._freq_chars: - r = self._freq_chars / ( - (self._total_chars - self._freq_chars) * self.typical_distribution_ratio - ) - if r < self.SURE_YES: - return r - - # normalize confidence (we don't want to be 100% sure) - return self.SURE_YES - - def got_enough_data(self) -> bool: - # It is not necessary to receive all data to draw conclusion. - # For charset detection, certain amount of data is enough - return self._total_chars > self.ENOUGH_DATA_THRESHOLD - - def get_order(self, _: Union[bytes, bytearray]) -> int: - # We do not handle characters based on the original encoding string, - # but convert this encoding string to a number, here called order. - # This allows multiple encodings of a language to share one frequency - # table. - return -1 - - -class EUCTWDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER - self._table_size = EUCTW_TABLE_SIZE - self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for euc-TW encoding, we are interested - # first byte range: 0xc4 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xC4: - return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 - return -1 - - -class EUCKRDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER - self._table_size = EUCKR_TABLE_SIZE - self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for euc-KR encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xB0: - return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 - return -1 - - -class JOHABDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER - self._table_size = EUCKR_TABLE_SIZE - self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - first_char = byte_str[0] - if 0x88 <= first_char < 0xD4: - code = first_char * 256 + byte_str[1] - return JOHAB_TO_EUCKR_ORDER_TABLE.get(code, -1) - return -1 - - -class GB2312DistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER - self._table_size = GB2312_TABLE_SIZE - self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for GB2312 encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if (first_char >= 0xB0) and (second_char >= 0xA1): - return 94 * (first_char - 0xB0) + second_char - 0xA1 - return -1 - - -class Big5DistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER - self._table_size = BIG5_TABLE_SIZE - self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for big5 encoding, we are interested - # first byte range: 0xa4 -- 0xfe - # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if first_char >= 0xA4: - if second_char >= 0xA1: - return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 - return 157 * (first_char - 0xA4) + second_char - 0x40 - return -1 - - -class SJISDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for sjis encoding, we are interested - # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe - # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if 0x81 <= first_char <= 0x9F: - order = 188 * (first_char - 0x81) - elif 0xE0 <= first_char <= 0xEF: - order = 188 * (first_char - 0xE0 + 31) - else: - return -1 - order = order + second_char - 0x40 - if second_char > 0x7F: - order = -1 - return order - - -class EUCJPDistributionAnalysis(CharDistributionAnalysis): - def __init__(self) -> None: - super().__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str: Union[bytes, bytearray]) -> int: - # for euc-JP encoding, we are interested - # first byte range: 0xa0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - char = byte_str[0] - if char >= 0xA0: - return 94 * (char - 0xA1) + byte_str[1] - 0xA1 - return -1 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py deleted file mode 100644 index 6def56b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py +++ /dev/null @@ -1,106 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import List, Optional, Union - -from .charsetprober import CharSetProber -from .enums import LanguageFilter, ProbingState - - -class CharSetGroupProber(CharSetProber): - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self._active_num = 0 - self.probers: List[CharSetProber] = [] - self._best_guess_prober: Optional[CharSetProber] = None - - def reset(self) -> None: - super().reset() - self._active_num = 0 - for prober in self.probers: - prober.reset() - prober.active = True - self._active_num += 1 - self._best_guess_prober = None - - @property - def charset_name(self) -> Optional[str]: - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.charset_name - - @property - def language(self) -> Optional[str]: - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.language - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for prober in self.probers: - if not prober.active: - continue - state = prober.feed(byte_str) - if not state: - continue - if state == ProbingState.FOUND_IT: - self._best_guess_prober = prober - self._state = ProbingState.FOUND_IT - return self.state - if state == ProbingState.NOT_ME: - prober.active = False - self._active_num -= 1 - if self._active_num <= 0: - self._state = ProbingState.NOT_ME - return self.state - return self.state - - def get_confidence(self) -> float: - state = self.state - if state == ProbingState.FOUND_IT: - return 0.99 - if state == ProbingState.NOT_ME: - return 0.01 - best_conf = 0.0 - self._best_guess_prober = None - for prober in self.probers: - if not prober.active: - self.logger.debug("%s not active", prober.charset_name) - continue - conf = prober.get_confidence() - self.logger.debug( - "%s %s confidence = %s", prober.charset_name, prober.language, conf - ) - if best_conf < conf: - best_conf = conf - self._best_guess_prober = prober - if not self._best_guess_prober: - return 0.0 - return best_conf diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py deleted file mode 100644 index a103ca1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py +++ /dev/null @@ -1,147 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import logging -import re -from typing import Optional, Union - -from .enums import LanguageFilter, ProbingState - -INTERNATIONAL_WORDS_PATTERN = re.compile( - b"[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?" -) - - -class CharSetProber: - - SHORTCUT_THRESHOLD = 0.95 - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - self._state = ProbingState.DETECTING - self.active = True - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - - def reset(self) -> None: - self._state = ProbingState.DETECTING - - @property - def charset_name(self) -> Optional[str]: - return None - - @property - def language(self) -> Optional[str]: - raise NotImplementedError - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - raise NotImplementedError - - @property - def state(self) -> ProbingState: - return self._state - - def get_confidence(self) -> float: - return 0.0 - - @staticmethod - def filter_high_byte_only(buf: Union[bytes, bytearray]) -> bytes: - buf = re.sub(b"([\x00-\x7F])+", b" ", buf) - return buf - - @staticmethod - def filter_international_words(buf: Union[bytes, bytearray]) -> bytearray: - """ - We define three types of bytes: - alphabet: english alphabets [a-zA-Z] - international: international characters [\x80-\xFF] - marker: everything else [^a-zA-Z\x80-\xFF] - The input buffer can be thought to contain a series of words delimited - by markers. This function works to filter all words that contain at - least one international character. All contiguous sequences of markers - are replaced by a single space ascii character. - This filter applies to all scripts which do not use English characters. - """ - filtered = bytearray() - - # This regex expression filters out only words that have at-least one - # international character. The word may include one marker character at - # the end. - words = INTERNATIONAL_WORDS_PATTERN.findall(buf) - - for word in words: - filtered.extend(word[:-1]) - - # If the last character in the word is a marker, replace it with a - # space as markers shouldn't affect our analysis (they are used - # similarly across all languages and may thus have similar - # frequencies). - last_char = word[-1:] - if not last_char.isalpha() and last_char < b"\x80": - last_char = b" " - filtered.extend(last_char) - - return filtered - - @staticmethod - def remove_xml_tags(buf: Union[bytes, bytearray]) -> bytes: - """ - Returns a copy of ``buf`` that retains only the sequences of English - alphabet and high byte characters that are not between <> characters. - This filter can be applied to all scripts which contain both English - characters and extended ASCII characters, but is currently only used by - ``Latin1Prober``. - """ - filtered = bytearray() - in_tag = False - prev = 0 - buf = memoryview(buf).cast("c") - - for curr, buf_char in enumerate(buf): - # Check if we're coming out of or entering an XML tag - - # https://github.com/python/typeshed/issues/8182 - if buf_char == b">": # type: ignore[comparison-overlap] - prev = curr + 1 - in_tag = False - # https://github.com/python/typeshed/issues/8182 - elif buf_char == b"<": # type: ignore[comparison-overlap] - if curr > prev and not in_tag: - # Keep everything after last non-extended-ASCII, - # non-alphabetic character - filtered.extend(buf[prev:curr]) - # Output a space to delimit stretch we kept - filtered.extend(b" ") - in_tag = True - - # If we're not in a tag... - if not in_tag: - # Keep everything after last non-extended-ASCII, non-alphabetic - # character - filtered.extend(buf[prev:]) - - return filtered diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 8e0adb73f89ae516c6d373366ff0557344f4cedd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmYk0F%H5o3`JAa0U`Au46Q*d3}i%iIrP0kxcL;zprn3 zu&b&SOFW9pJ?A^?pCXl0nouSwc4h10{A50_fBGPFZqU$o!GjHEj2xDgxa~q@=xD z?XF4cE)sN4&g*@GAix=YY9ESz9=_%&pP)eP#F^nrXBnx1Ek!n=}ICalXQe%GG_-GF$42|uk) z!fxosL0X$c-H3R#YAvjVVo%g0lN`c`Q0t?rr3cs zA6G$kQ_vw3yW$$`ZOa|;#tBu2a{Gw~XV8bPHQtJUPCPGqI8aGp_}MrajJb(Vq~>`h zd9L^*SCS8tRPrJ=W6k4Ca3zae85H4WEEC0rG;&}h+%6mBBFRQNihloPJSkGy=|mBS z=O!PFV^s=rolm6GiGv(;D4aRD)mDd}C7H<2bo2K6cixAI8S_D&4HE%pNPeqz=Suua zL5IhBkR(45zTLVNMV}3MmamKen+lbmf--Ty6SFiq0h^Mnm>ND*`Gji&rnI8yI|!tA z*r?d>Gb2^pPo-s_C)(KX&xJ|yEKa|pAkiRpqt`o?O2b;O2h-iZWC_mW^saMIuB`8r z-m`w1WKvs}#S>|(lO#(faccMUIG?7XrzEcTQaOqTGaD#rrYajSyvOpX!aIQWDKz~h zbjDj$1i2vRY~kJYzSueU4O#e4$hp5@mvrGjCB$2>+R&xB75FzV<|=oWY2}$lv$A_P+5!2KRz*07Z>z{BJ}M#`uA|Cy&8%3P1p` z(15Ex4k5l&PNi0 z2McQ|Tje)qRxIT@d=)oT-Jcn$*VUq{JNyuO++N-Wu$HEPX$U2*y7SibmfyfF*A@M* z;B`2E=wiyxB;*Z#$IGx@U0H)2P7Rv+`Uk9pOmpct$%RxImyf5(X`IT;=-;i~?KRin zM@RiUPmhkAXoDyuDjTjGH>Vvw-~CDI*yv@_%{MxjLQ3jsY8rt;4B8s{Ggc~|SvHhX zSSElutUpL|EfKm-xTLps0e1f%Zh+x6oG-nI}S!fR4;r;L);HVO+;ej zqOzRVfx@@k3R|vhiyg6Rs*r?KTr1@+!-e;hoYMt8u0i6zeO_5qE~BTO`h(dJZ@?*a zv3Eg>!9&Rp!gIDz#yMYknJ%-9ITyA z5NWOeK-K|j$4K;$s<8sGLnIUSB9iP>}Y@c|GtPawSuIY@?y6w4B_I;)9imHGQh zA^>+E0;&!G!+NG$sQquZJ6{|f@kH~f20clp0ful3{I272zr4d5qqx2KCy)N$@>XWt zsEOi^iG+pf6!5)l@pptA#*j*#veGmx zReej|Z7|EmGA%4aGpwJ1A=*}#!t+|Qxhxm+ckctuf`_wo_9_X&IS`giK*8nt)IdeE zkv34tdqz!VgQ{NuJZ%s=ew))~IuD!8l9uKN4_?bsudolqL$~lY%Zg{K%fY;M^Bti2 zQA2Y$=~r-)x(VIH(uXzH-BYeR?u6d_==txuMja3812)?*=hu28ucjM_6%bY7cuo)DOQn6=&hSdkun4s`h#!AM|?a*C3_dL(u>r453!|f21ndAxm1X zbjI#<^?y_*S+2^O;=39RE;L{w7Om19tHZH~!YNoS);ec+_#3E=(^UQziCN!*j(OpB lNcKpb)(LekV9x{KbV}(Dv_ik9j6M(i=-G{5hIb+`^G6ETdNTk3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py deleted file mode 100644 index 43f6e14..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -Script which takes one or more file paths and reports on their detected -encodings - -Example:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -If no paths are provided, it takes its input from stdin. - -""" - - -import argparse -import sys -from typing import Iterable, List, Optional - -from .. import __version__ -from ..universaldetector import UniversalDetector - - -def description_of( - lines: Iterable[bytes], - name: str = "stdin", - minimal: bool = False, - should_rename_legacy: bool = False, -) -> Optional[str]: - """ - Return a string describing the probable encoding of a file or - list of strings. - - :param lines: The lines to get the encoding of. - :type lines: Iterable of bytes - :param name: Name of file or collection of lines - :type name: str - :param should_rename_legacy: Should we rename legacy encodings to - their more modern equivalents? - :type should_rename_legacy: ``bool`` - """ - u = UniversalDetector(should_rename_legacy=should_rename_legacy) - for line in lines: - line = bytearray(line) - u.feed(line) - # shortcut out of the loop to save reading further - particularly useful if we read a BOM. - if u.done: - break - u.close() - result = u.result - if minimal: - return result["encoding"] - if result["encoding"]: - return f'{name}: {result["encoding"]} with confidence {result["confidence"]}' - return f"{name}: no result" - - -def main(argv: Optional[List[str]] = None) -> None: - """ - Handles command line arguments and gets things started. - - :param argv: List of arguments, as if specified on the command-line. - If None, ``sys.argv[1:]`` is used instead. - :type argv: list of str - """ - # Get command line arguments - parser = argparse.ArgumentParser( - description=( - "Takes one or more file paths and reports their detected encodings" - ) - ) - parser.add_argument( - "input", - help="File whose encoding we would like to determine. (default: stdin)", - type=argparse.FileType("rb"), - nargs="*", - default=[sys.stdin.buffer], - ) - parser.add_argument( - "--minimal", - help="Print only the encoding to standard output", - action="store_true", - ) - parser.add_argument( - "-l", - "--legacy", - help="Rename legacy encodings to more modern ones.", - action="store_true", - ) - parser.add_argument( - "--version", action="version", version=f"%(prog)s {__version__}" - ) - args = parser.parse_args(argv) - - for f in args.input: - if f.isatty(): - print( - "You are running chardetect interactively. Press " - "CTRL-D twice at the start of a blank line to signal the " - "end of your input. If you want help, run chardetect " - "--help\n", - file=sys.stderr, - ) - print( - description_of( - f, f.name, minimal=args.minimal, should_rename_legacy=args.legacy - ) - ) - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py deleted file mode 100644 index 8ed4a87..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py +++ /dev/null @@ -1,90 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import logging - -from .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - - -class CodingStateMachine: - """ - A state machine to verify a byte sequence for a particular encoding. For - each byte the detector receives, it will feed that byte to every active - state machine available, one byte at a time. The state machine changes its - state based on its previous state and the byte it receives. There are 3 - states in a state machine that are of interest to an auto-detector: - - START state: This is the state to start with, or a legal byte sequence - (i.e. a valid code point) for character has been identified. - - ME state: This indicates that the state machine identified a byte sequence - that is specific to the charset it is designed for and that - there is no other possible encoding which can contain this byte - sequence. This will to lead to an immediate positive answer for - the detector. - - ERROR state: This indicates the state machine identified an illegal byte - sequence for that encoding. This will lead to an immediate - negative answer for this encoding. Detector will exclude this - encoding from consideration from here on. - """ - - def __init__(self, sm: CodingStateMachineDict) -> None: - self._model = sm - self._curr_byte_pos = 0 - self._curr_char_len = 0 - self._curr_state = MachineState.START - self.active = True - self.logger = logging.getLogger(__name__) - self.reset() - - def reset(self) -> None: - self._curr_state = MachineState.START - - def next_state(self, c: int) -> int: - # for each byte we get its class - # if it is first byte, we also get byte length - byte_class = self._model["class_table"][c] - if self._curr_state == MachineState.START: - self._curr_byte_pos = 0 - self._curr_char_len = self._model["char_len_table"][byte_class] - # from byte's class and state_table, we get its next state - curr_state = self._curr_state * self._model["class_factor"] + byte_class - self._curr_state = self._model["state_table"][curr_state] - self._curr_byte_pos += 1 - return self._curr_state - - def get_current_charlen(self) -> int: - return self._curr_char_len - - def get_coding_state_machine(self) -> str: - return self._model["name"] - - @property - def language(self) -> str: - return self._model["language"] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py deleted file mode 100644 index 7a3c4c7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +++ /dev/null @@ -1,19 +0,0 @@ -from typing import TYPE_CHECKING, Tuple - -if TYPE_CHECKING: - # TypedDict was introduced in Python 3.8. - # - # TODO: Remove the else block and TYPE_CHECKING check when dropping support - # for Python 3.7. - from typing import TypedDict - - class CodingStateMachineDict(TypedDict, total=False): - class_table: Tuple[int, ...] - class_factor: int - state_table: Tuple[int, ...] - char_len_table: Tuple[int, ...] - name: str - language: str # Optional key - -else: - CodingStateMachineDict = dict diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py deleted file mode 100644 index fa7307e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py +++ /dev/null @@ -1,49 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import EUCKRDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import CP949_SM_MODEL - - -class CP949Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(CP949_SM_MODEL) - # NOTE: CP949 is a superset of EUC-KR, so the distribution should be - # not different. - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "CP949" - - @property - def language(self) -> str: - return "Korean" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py deleted file mode 100644 index 5e3e198..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -All of the Enums that are used throughout the chardet package. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -from enum import Enum, Flag - - -class InputState: - """ - This enum represents the different states a universal detector can be in. - """ - - PURE_ASCII = 0 - ESC_ASCII = 1 - HIGH_BYTE = 2 - - -class LanguageFilter(Flag): - """ - This enum represents the different language filters we can apply to a - ``UniversalDetector``. - """ - - NONE = 0x00 - CHINESE_SIMPLIFIED = 0x01 - CHINESE_TRADITIONAL = 0x02 - JAPANESE = 0x04 - KOREAN = 0x08 - NON_CJK = 0x10 - ALL = 0x1F - CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL - CJK = CHINESE | JAPANESE | KOREAN - - -class ProbingState(Enum): - """ - This enum represents the different states a prober can be in. - """ - - DETECTING = 0 - FOUND_IT = 1 - NOT_ME = 2 - - -class MachineState: - """ - This enum represents the different states a state machine can be in. - """ - - START = 0 - ERROR = 1 - ITS_ME = 2 - - -class SequenceLikelihood: - """ - This enum represents the likelihood of a character following the previous one. - """ - - NEGATIVE = 0 - UNLIKELY = 1 - LIKELY = 2 - POSITIVE = 3 - - @classmethod - def get_num_categories(cls) -> int: - """:returns: The number of likelihood categories in the enum.""" - return 4 - - -class CharacterCategory: - """ - This enum represents the different categories language models for - ``SingleByteCharsetProber`` put characters into. - - Anything less than CONTROL is considered a letter. - """ - - UNDEFINED = 255 - LINE_BREAK = 254 - SYMBOL = 253 - DIGIT = 252 - CONTROL = 251 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py deleted file mode 100644 index fd71383..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py +++ /dev/null @@ -1,102 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Optional, Union - -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import LanguageFilter, MachineState, ProbingState -from .escsm import ( - HZ_SM_MODEL, - ISO2022CN_SM_MODEL, - ISO2022JP_SM_MODEL, - ISO2022KR_SM_MODEL, -) - - -class EscCharSetProber(CharSetProber): - """ - This CharSetProber uses a "code scheme" approach for detecting encodings, - whereby easily recognizable escape or shift sequences are relied on to - identify these encodings. - """ - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.coding_sm = [] - if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: - self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) - self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) - if self.lang_filter & LanguageFilter.JAPANESE: - self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) - if self.lang_filter & LanguageFilter.KOREAN: - self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) - self.active_sm_count = 0 - self._detected_charset: Optional[str] = None - self._detected_language: Optional[str] = None - self._state = ProbingState.DETECTING - self.reset() - - def reset(self) -> None: - super().reset() - for coding_sm in self.coding_sm: - coding_sm.active = True - coding_sm.reset() - self.active_sm_count = len(self.coding_sm) - self._detected_charset = None - self._detected_language = None - - @property - def charset_name(self) -> Optional[str]: - return self._detected_charset - - @property - def language(self) -> Optional[str]: - return self._detected_language - - def get_confidence(self) -> float: - return 0.99 if self._detected_charset else 0.00 - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - for coding_sm in self.coding_sm: - if not coding_sm.active: - continue - coding_state = coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - coding_sm.active = False - self.active_sm_count -= 1 - if self.active_sm_count <= 0: - self._state = ProbingState.NOT_ME - return self.state - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - self._detected_charset = coding_sm.get_coding_state_machine() - self._detected_language = coding_sm.language - return self.state - - return self.state diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py deleted file mode 100644 index 11d4adf..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py +++ /dev/null @@ -1,261 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - -# fmt: off -HZ_CLS = ( - 1, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 0, 0, 0, 0, 0, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 0, 0, 0, 0, 0, 0, 0, 0, # 40 - 47 - 0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 4, 0, 5, 2, 0, # 78 - 7f - 1, 1, 1, 1, 1, 1, 1, 1, # 80 - 87 - 1, 1, 1, 1, 1, 1, 1, 1, # 88 - 8f - 1, 1, 1, 1, 1, 1, 1, 1, # 90 - 97 - 1, 1, 1, 1, 1, 1, 1, 1, # 98 - 9f - 1, 1, 1, 1, 1, 1, 1, 1, # a0 - a7 - 1, 1, 1, 1, 1, 1, 1, 1, # a8 - af - 1, 1, 1, 1, 1, 1, 1, 1, # b0 - b7 - 1, 1, 1, 1, 1, 1, 1, 1, # b8 - bf - 1, 1, 1, 1, 1, 1, 1, 1, # c0 - c7 - 1, 1, 1, 1, 1, 1, 1, 1, # c8 - cf - 1, 1, 1, 1, 1, 1, 1, 1, # d0 - d7 - 1, 1, 1, 1, 1, 1, 1, 1, # d8 - df - 1, 1, 1, 1, 1, 1, 1, 1, # e0 - e7 - 1, 1, 1, 1, 1, 1, 1, 1, # e8 - ef - 1, 1, 1, 1, 1, 1, 1, 1, # f0 - f7 - 1, 1, 1, 1, 1, 1, 1, 1, # f8 - ff -) - -HZ_ST = ( -MachineState.START, MachineState.ERROR, 3, MachineState.START, MachineState.START, MachineState.START, MachineState.ERROR, MachineState.ERROR, # 00-07 -MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 08-0f -MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.START, MachineState.START, 4, MachineState.ERROR, # 10-17 - 5, MachineState.ERROR, 6, MachineState.ERROR, 5, 5, 4, MachineState.ERROR, # 18-1f - 4, MachineState.ERROR, 4, 4, 4, MachineState.ERROR, 4, MachineState.ERROR, # 20-27 - 4, MachineState.ITS_ME, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 28-2f -) -# fmt: on - -HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -HZ_SM_MODEL: CodingStateMachineDict = { - "class_table": HZ_CLS, - "class_factor": 6, - "state_table": HZ_ST, - "char_len_table": HZ_CHAR_LEN_TABLE, - "name": "HZ-GB-2312", - "language": "Chinese", -} - -# fmt: off -ISO2022CN_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 3, 0, 0, 0, 0, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 0, 0, 0, 4, 0, 0, 0, 0, # 40 - 47 - 0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 2, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 2, 2, 2, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 2, 2, 2, 2, 2, 2, 2, 2, # e0 - e7 - 2, 2, 2, 2, 2, 2, 2, 2, # e8 - ef - 2, 2, 2, 2, 2, 2, 2, 2, # f0 - f7 - 2, 2, 2, 2, 2, 2, 2, 2, # f8 - ff -) - -ISO2022CN_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 00-07 - MachineState.START, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 08-0f - MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 10-17 - MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 4, MachineState.ERROR, # 18-1f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 20-27 - 5, 6, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 28-2f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 30-37 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.START, # 38-3f -) -# fmt: on - -ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022CN_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022CN_CLS, - "class_factor": 9, - "state_table": ISO2022CN_ST, - "char_len_table": ISO2022CN_CHAR_LEN_TABLE, - "name": "ISO-2022-CN", - "language": "Chinese", -} - -# fmt: off -ISO2022JP_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 2, 2, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 7, 0, 0, 0, # 20 - 27 - 3, 0, 0, 0, 0, 0, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 6, 0, 4, 0, 8, 0, 0, 0, # 40 - 47 - 0, 9, 5, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 2, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 2, 2, 2, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 2, 2, 2, 2, 2, 2, 2, 2, # e0 - e7 - 2, 2, 2, 2, 2, 2, 2, 2, # e8 - ef - 2, 2, 2, 2, 2, 2, 2, 2, # f0 - f7 - 2, 2, 2, 2, 2, 2, 2, 2, # f8 - ff -) - -ISO2022JP_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 00-07 - MachineState.START, MachineState.START, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 08-0f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 10-17 - MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, # 18-1f - MachineState.ERROR, 5, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 4, MachineState.ERROR, MachineState.ERROR, # 20-27 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 6, MachineState.ITS_ME, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, # 28-2f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, # 30-37 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 38-3f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ERROR, MachineState.START, MachineState.START, # 40-47 -) -# fmt: on - -ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022JP_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022JP_CLS, - "class_factor": 10, - "state_table": ISO2022JP_ST, - "char_len_table": ISO2022JP_CHAR_LEN_TABLE, - "name": "ISO-2022-JP", - "language": "Japanese", -} - -# fmt: off -ISO2022KR_CLS = ( - 2, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 0, 0, 0, 0, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 1, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 3, 0, 0, 0, # 20 - 27 - 0, 4, 0, 0, 0, 0, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 0, 0, 0, 5, 0, 0, 0, 0, # 40 - 47 - 0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f - 2, 2, 2, 2, 2, 2, 2, 2, # 80 - 87 - 2, 2, 2, 2, 2, 2, 2, 2, # 88 - 8f - 2, 2, 2, 2, 2, 2, 2, 2, # 90 - 97 - 2, 2, 2, 2, 2, 2, 2, 2, # 98 - 9f - 2, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 2, 2, 2, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 2, 2, 2, 2, 2, 2, 2, 2, # e0 - e7 - 2, 2, 2, 2, 2, 2, 2, 2, # e8 - ef - 2, 2, 2, 2, 2, 2, 2, 2, # f0 - f7 - 2, 2, 2, 2, 2, 2, 2, 2, # f8 - ff -) - -ISO2022KR_ST = ( - MachineState.START, 3, MachineState.ERROR, MachineState.START, MachineState.START, MachineState.START, MachineState.ERROR, MachineState.ERROR, # 00-07 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ITS_ME, # 08-0f - MachineState.ITS_ME, MachineState.ITS_ME, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 4, MachineState.ERROR, MachineState.ERROR, # 10-17 - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, 5, MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, # 18-1f - MachineState.ERROR, MachineState.ERROR, MachineState.ERROR, MachineState.ITS_ME, MachineState.START, MachineState.START, MachineState.START, MachineState.START, # 20-27 -) -# fmt: on - -ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -ISO2022KR_SM_MODEL: CodingStateMachineDict = { - "class_table": ISO2022KR_CLS, - "class_factor": 6, - "state_table": ISO2022KR_ST, - "char_len_table": ISO2022KR_CHAR_LEN_TABLE, - "name": "ISO-2022-KR", - "language": "Korean", -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py deleted file mode 100644 index 39487f4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py +++ /dev/null @@ -1,102 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Union - -from .chardistribution import EUCJPDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .jpcntx import EUCJPContextAnalysis -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCJP_SM_MODEL - - -class EUCJPProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) - self.distribution_analyzer = EUCJPDistributionAnalysis() - self.context_analyzer = EUCJPContextAnalysis() - self.reset() - - def reset(self) -> None: - super().reset() - self.context_analyzer.reset() - - @property - def charset_name(self) -> str: - return "EUC-JP" - - @property - def language(self) -> str: - return "Japanese" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - # PY3K: byte_str is a byte array, so byte is an int, not a byte - coding_state = self.coding_sm.next_state(byte) - if coding_state == MachineState.ERROR: - self.logger.debug( - "%s %s prober hit error at byte %s", - self.charset_name, - self.language, - i, - ) - self._state = ProbingState.NOT_ME - break - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - self.context_analyzer.feed(self._last_char, char_len) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed(byte_str[i - 1 : i + 1], char_len) - self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if self.context_analyzer.got_enough_data() and ( - self.get_confidence() > self.SHORTCUT_THRESHOLD - ): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self) -> float: - assert self.distribution_analyzer is not None - - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py deleted file mode 100644 index 7dc3b10..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py +++ /dev/null @@ -1,196 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology - -# 128 --> 0.79 -# 256 --> 0.92 -# 512 --> 0.986 -# 1024 --> 0.99944 -# 2048 --> 0.99999 -# -# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 -# Random Distribution Ration = 512 / (2350-512) = 0.279. -# -# Typical Distribution Ratio - -EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 - -EUCKR_TABLE_SIZE = 2352 - -# Char to FreqOrder table , -# fmt: off -EUCKR_CHAR_TO_FREQ_ORDER = ( - 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, -1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, -1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, - 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, - 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, - 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, -1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, - 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, - 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, -1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, -1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, -1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, -1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, -1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, - 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, -1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, -1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, -1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, -1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, - 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, -1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, - 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, - 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, -1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, - 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, -1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, - 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, - 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, -1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, -1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, -1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, -1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, - 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, -1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, - 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, - 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, -1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, -1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, -1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, -1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, -1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, -1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, - 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, - 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, - 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, -1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, - 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, -1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, - 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, - 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, -2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, - 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, - 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, -2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, -2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, -2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, - 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, - 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, -2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, - 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, -1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, -2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, -1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, -2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, -2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, -1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, - 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, -2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, -2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, - 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, - 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, -2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, -1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, -2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, -2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, -2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, -2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, -2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, -2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, -1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, -2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, -2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, -2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, -2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, -2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, -1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, -1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, -2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, -1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, -2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, -1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, - 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, -2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, - 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, -2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, - 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, -2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, -2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, - 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, -2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, -1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, - 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, -1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, -2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, -1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, -2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, - 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, -2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, -1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, -2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, -1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, -2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, -1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, - 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, -2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, -2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, - 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, - 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, -1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, -1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, - 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, -2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, -2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, - 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, - 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, - 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, -2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, - 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, - 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, -2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, -2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, - 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, -2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, -1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, - 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, -2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, -2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, -2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, - 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, - 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, - 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, -2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, -2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, -2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, -1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, -2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, - 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 -) -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py deleted file mode 100644 index 1fc5de0..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import EUCKRDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCKR_SM_MODEL - - -class EUCKRProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "EUC-KR" - - @property - def language(self) -> str: - return "Korean" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py deleted file mode 100644 index 4900ccc..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py +++ /dev/null @@ -1,388 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# EUCTW frequency table -# Converted from big5 work -# by Taiwan's Mandarin Promotion Council -# - -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -# Char to FreqOrder table -EUCTW_TABLE_SIZE = 5376 - -# fmt: off -EUCTW_CHAR_TO_FREQ_ORDER = ( - 1, 1800, 1506, 255, 1431, 198, 9, 82, 6, 7310, 177, 202, 3615, 1256, 2808, 110, # 2742 - 3735, 33, 3241, 261, 76, 44, 2113, 16, 2931, 2184, 1176, 659, 3868, 26, 3404, 2643, # 2758 - 1198, 3869, 3313, 4060, 410, 2211, 302, 590, 361, 1963, 8, 204, 58, 4296, 7311, 1931, # 2774 - 63, 7312, 7313, 317, 1614, 75, 222, 159, 4061, 2412, 1480, 7314, 3500, 3068, 224, 2809, # 2790 - 3616, 3, 10, 3870, 1471, 29, 2774, 1135, 2852, 1939, 873, 130, 3242, 1123, 312, 7315, # 2806 - 4297, 2051, 507, 252, 682, 7316, 142, 1914, 124, 206, 2932, 34, 3501, 3173, 64, 604, # 2822 - 7317, 2494, 1976, 1977, 155, 1990, 645, 641, 1606, 7318, 3405, 337, 72, 406, 7319, 80, # 2838 - 630, 238, 3174, 1509, 263, 939, 1092, 2644, 756, 1440, 1094, 3406, 449, 69, 2969, 591, # 2854 - 179, 2095, 471, 115, 2034, 1843, 60, 50, 2970, 134, 806, 1868, 734, 2035, 3407, 180, # 2870 - 995, 1607, 156, 537, 2893, 688, 7320, 319, 1305, 779, 2144, 514, 2374, 298, 4298, 359, # 2886 - 2495, 90, 2707, 1338, 663, 11, 906, 1099, 2545, 20, 2436, 182, 532, 1716, 7321, 732, # 2902 - 1376, 4062, 1311, 1420, 3175, 25, 2312, 1056, 113, 399, 382, 1949, 242, 3408, 2467, 529, # 2918 - 3243, 475, 1447, 3617, 7322, 117, 21, 656, 810, 1297, 2295, 2329, 3502, 7323, 126, 4063, # 2934 - 706, 456, 150, 613, 4299, 71, 1118, 2036, 4064, 145, 3069, 85, 835, 486, 2114, 1246, # 2950 - 1426, 428, 727, 1285, 1015, 800, 106, 623, 303, 1281, 7324, 2127, 2354, 347, 3736, 221, # 2966 - 3503, 3110, 7325, 1955, 1153, 4065, 83, 296, 1199, 3070, 192, 624, 93, 7326, 822, 1897, # 2982 - 2810, 3111, 795, 2064, 991, 1554, 1542, 1592, 27, 43, 2853, 859, 139, 1456, 860, 4300, # 2998 - 437, 712, 3871, 164, 2392, 3112, 695, 211, 3017, 2096, 195, 3872, 1608, 3504, 3505, 3618, # 3014 - 3873, 234, 811, 2971, 2097, 3874, 2229, 1441, 3506, 1615, 2375, 668, 2076, 1638, 305, 228, # 3030 - 1664, 4301, 467, 415, 7327, 262, 2098, 1593, 239, 108, 300, 200, 1033, 512, 1247, 2077, # 3046 - 7328, 7329, 2173, 3176, 3619, 2673, 593, 845, 1062, 3244, 88, 1723, 2037, 3875, 1950, 212, # 3062 - 266, 152, 149, 468, 1898, 4066, 4302, 77, 187, 7330, 3018, 37, 5, 2972, 7331, 3876, # 3078 - 7332, 7333, 39, 2517, 4303, 2894, 3177, 2078, 55, 148, 74, 4304, 545, 483, 1474, 1029, # 3094 - 1665, 217, 1869, 1531, 3113, 1104, 2645, 4067, 24, 172, 3507, 900, 3877, 3508, 3509, 4305, # 3110 - 32, 1408, 2811, 1312, 329, 487, 2355, 2247, 2708, 784, 2674, 4, 3019, 3314, 1427, 1788, # 3126 - 188, 109, 499, 7334, 3620, 1717, 1789, 888, 1217, 3020, 4306, 7335, 3510, 7336, 3315, 1520, # 3142 - 3621, 3878, 196, 1034, 775, 7337, 7338, 929, 1815, 249, 439, 38, 7339, 1063, 7340, 794, # 3158 - 3879, 1435, 2296, 46, 178, 3245, 2065, 7341, 2376, 7342, 214, 1709, 4307, 804, 35, 707, # 3174 - 324, 3622, 1601, 2546, 140, 459, 4068, 7343, 7344, 1365, 839, 272, 978, 2257, 2572, 3409, # 3190 - 2128, 1363, 3623, 1423, 697, 100, 3071, 48, 70, 1231, 495, 3114, 2193, 7345, 1294, 7346, # 3206 - 2079, 462, 586, 1042, 3246, 853, 256, 988, 185, 2377, 3410, 1698, 434, 1084, 7347, 3411, # 3222 - 314, 2615, 2775, 4308, 2330, 2331, 569, 2280, 637, 1816, 2518, 757, 1162, 1878, 1616, 3412, # 3238 - 287, 1577, 2115, 768, 4309, 1671, 2854, 3511, 2519, 1321, 3737, 909, 2413, 7348, 4069, 933, # 3254 - 3738, 7349, 2052, 2356, 1222, 4310, 765, 2414, 1322, 786, 4311, 7350, 1919, 1462, 1677, 2895, # 3270 - 1699, 7351, 4312, 1424, 2437, 3115, 3624, 2590, 3316, 1774, 1940, 3413, 3880, 4070, 309, 1369, # 3286 - 1130, 2812, 364, 2230, 1653, 1299, 3881, 3512, 3882, 3883, 2646, 525, 1085, 3021, 902, 2000, # 3302 - 1475, 964, 4313, 421, 1844, 1415, 1057, 2281, 940, 1364, 3116, 376, 4314, 4315, 1381, 7, # 3318 - 2520, 983, 2378, 336, 1710, 2675, 1845, 321, 3414, 559, 1131, 3022, 2742, 1808, 1132, 1313, # 3334 - 265, 1481, 1857, 7352, 352, 1203, 2813, 3247, 167, 1089, 420, 2814, 776, 792, 1724, 3513, # 3350 - 4071, 2438, 3248, 7353, 4072, 7354, 446, 229, 333, 2743, 901, 3739, 1200, 1557, 4316, 2647, # 3366 - 1920, 395, 2744, 2676, 3740, 4073, 1835, 125, 916, 3178, 2616, 4317, 7355, 7356, 3741, 7357, # 3382 - 7358, 7359, 4318, 3117, 3625, 1133, 2547, 1757, 3415, 1510, 2313, 1409, 3514, 7360, 2145, 438, # 3398 - 2591, 2896, 2379, 3317, 1068, 958, 3023, 461, 311, 2855, 2677, 4074, 1915, 3179, 4075, 1978, # 3414 - 383, 750, 2745, 2617, 4076, 274, 539, 385, 1278, 1442, 7361, 1154, 1964, 384, 561, 210, # 3430 - 98, 1295, 2548, 3515, 7362, 1711, 2415, 1482, 3416, 3884, 2897, 1257, 129, 7363, 3742, 642, # 3446 - 523, 2776, 2777, 2648, 7364, 141, 2231, 1333, 68, 176, 441, 876, 907, 4077, 603, 2592, # 3462 - 710, 171, 3417, 404, 549, 18, 3118, 2393, 1410, 3626, 1666, 7365, 3516, 4319, 2898, 4320, # 3478 - 7366, 2973, 368, 7367, 146, 366, 99, 871, 3627, 1543, 748, 807, 1586, 1185, 22, 2258, # 3494 - 379, 3743, 3180, 7368, 3181, 505, 1941, 2618, 1991, 1382, 2314, 7369, 380, 2357, 218, 702, # 3510 - 1817, 1248, 3418, 3024, 3517, 3318, 3249, 7370, 2974, 3628, 930, 3250, 3744, 7371, 59, 7372, # 3526 - 585, 601, 4078, 497, 3419, 1112, 1314, 4321, 1801, 7373, 1223, 1472, 2174, 7374, 749, 1836, # 3542 - 690, 1899, 3745, 1772, 3885, 1476, 429, 1043, 1790, 2232, 2116, 917, 4079, 447, 1086, 1629, # 3558 - 7375, 556, 7376, 7377, 2020, 1654, 844, 1090, 105, 550, 966, 1758, 2815, 1008, 1782, 686, # 3574 - 1095, 7378, 2282, 793, 1602, 7379, 3518, 2593, 4322, 4080, 2933, 2297, 4323, 3746, 980, 2496, # 3590 - 544, 353, 527, 4324, 908, 2678, 2899, 7380, 381, 2619, 1942, 1348, 7381, 1341, 1252, 560, # 3606 - 3072, 7382, 3420, 2856, 7383, 2053, 973, 886, 2080, 143, 4325, 7384, 7385, 157, 3886, 496, # 3622 - 4081, 57, 840, 540, 2038, 4326, 4327, 3421, 2117, 1445, 970, 2259, 1748, 1965, 2081, 4082, # 3638 - 3119, 1234, 1775, 3251, 2816, 3629, 773, 1206, 2129, 1066, 2039, 1326, 3887, 1738, 1725, 4083, # 3654 - 279, 3120, 51, 1544, 2594, 423, 1578, 2130, 2066, 173, 4328, 1879, 7386, 7387, 1583, 264, # 3670 - 610, 3630, 4329, 2439, 280, 154, 7388, 7389, 7390, 1739, 338, 1282, 3073, 693, 2857, 1411, # 3686 - 1074, 3747, 2440, 7391, 4330, 7392, 7393, 1240, 952, 2394, 7394, 2900, 1538, 2679, 685, 1483, # 3702 - 4084, 2468, 1436, 953, 4085, 2054, 4331, 671, 2395, 79, 4086, 2441, 3252, 608, 567, 2680, # 3718 - 3422, 4087, 4088, 1691, 393, 1261, 1791, 2396, 7395, 4332, 7396, 7397, 7398, 7399, 1383, 1672, # 3734 - 3748, 3182, 1464, 522, 1119, 661, 1150, 216, 675, 4333, 3888, 1432, 3519, 609, 4334, 2681, # 3750 - 2397, 7400, 7401, 7402, 4089, 3025, 0, 7403, 2469, 315, 231, 2442, 301, 3319, 4335, 2380, # 3766 - 7404, 233, 4090, 3631, 1818, 4336, 4337, 7405, 96, 1776, 1315, 2082, 7406, 257, 7407, 1809, # 3782 - 3632, 2709, 1139, 1819, 4091, 2021, 1124, 2163, 2778, 1777, 2649, 7408, 3074, 363, 1655, 3183, # 3798 - 7409, 2975, 7410, 7411, 7412, 3889, 1567, 3890, 718, 103, 3184, 849, 1443, 341, 3320, 2934, # 3814 - 1484, 7413, 1712, 127, 67, 339, 4092, 2398, 679, 1412, 821, 7414, 7415, 834, 738, 351, # 3830 - 2976, 2146, 846, 235, 1497, 1880, 418, 1992, 3749, 2710, 186, 1100, 2147, 2746, 3520, 1545, # 3846 - 1355, 2935, 2858, 1377, 583, 3891, 4093, 2573, 2977, 7416, 1298, 3633, 1078, 2549, 3634, 2358, # 3862 - 78, 3750, 3751, 267, 1289, 2099, 2001, 1594, 4094, 348, 369, 1274, 2194, 2175, 1837, 4338, # 3878 - 1820, 2817, 3635, 2747, 2283, 2002, 4339, 2936, 2748, 144, 3321, 882, 4340, 3892, 2749, 3423, # 3894 - 4341, 2901, 7417, 4095, 1726, 320, 7418, 3893, 3026, 788, 2978, 7419, 2818, 1773, 1327, 2859, # 3910 - 3894, 2819, 7420, 1306, 4342, 2003, 1700, 3752, 3521, 2359, 2650, 787, 2022, 506, 824, 3636, # 3926 - 534, 323, 4343, 1044, 3322, 2023, 1900, 946, 3424, 7421, 1778, 1500, 1678, 7422, 1881, 4344, # 3942 - 165, 243, 4345, 3637, 2521, 123, 683, 4096, 764, 4346, 36, 3895, 1792, 589, 2902, 816, # 3958 - 626, 1667, 3027, 2233, 1639, 1555, 1622, 3753, 3896, 7423, 3897, 2860, 1370, 1228, 1932, 891, # 3974 - 2083, 2903, 304, 4097, 7424, 292, 2979, 2711, 3522, 691, 2100, 4098, 1115, 4347, 118, 662, # 3990 - 7425, 611, 1156, 854, 2381, 1316, 2861, 2, 386, 515, 2904, 7426, 7427, 3253, 868, 2234, # 4006 - 1486, 855, 2651, 785, 2212, 3028, 7428, 1040, 3185, 3523, 7429, 3121, 448, 7430, 1525, 7431, # 4022 - 2164, 4348, 7432, 3754, 7433, 4099, 2820, 3524, 3122, 503, 818, 3898, 3123, 1568, 814, 676, # 4038 - 1444, 306, 1749, 7434, 3755, 1416, 1030, 197, 1428, 805, 2821, 1501, 4349, 7435, 7436, 7437, # 4054 - 1993, 7438, 4350, 7439, 7440, 2195, 13, 2779, 3638, 2980, 3124, 1229, 1916, 7441, 3756, 2131, # 4070 - 7442, 4100, 4351, 2399, 3525, 7443, 2213, 1511, 1727, 1120, 7444, 7445, 646, 3757, 2443, 307, # 4086 - 7446, 7447, 1595, 3186, 7448, 7449, 7450, 3639, 1113, 1356, 3899, 1465, 2522, 2523, 7451, 519, # 4102 - 7452, 128, 2132, 92, 2284, 1979, 7453, 3900, 1512, 342, 3125, 2196, 7454, 2780, 2214, 1980, # 4118 - 3323, 7455, 290, 1656, 1317, 789, 827, 2360, 7456, 3758, 4352, 562, 581, 3901, 7457, 401, # 4134 - 4353, 2248, 94, 4354, 1399, 2781, 7458, 1463, 2024, 4355, 3187, 1943, 7459, 828, 1105, 4101, # 4150 - 1262, 1394, 7460, 4102, 605, 4356, 7461, 1783, 2862, 7462, 2822, 819, 2101, 578, 2197, 2937, # 4166 - 7463, 1502, 436, 3254, 4103, 3255, 2823, 3902, 2905, 3425, 3426, 7464, 2712, 2315, 7465, 7466, # 4182 - 2332, 2067, 23, 4357, 193, 826, 3759, 2102, 699, 1630, 4104, 3075, 390, 1793, 1064, 3526, # 4198 - 7467, 1579, 3076, 3077, 1400, 7468, 4105, 1838, 1640, 2863, 7469, 4358, 4359, 137, 4106, 598, # 4214 - 3078, 1966, 780, 104, 974, 2938, 7470, 278, 899, 253, 402, 572, 504, 493, 1339, 7471, # 4230 - 3903, 1275, 4360, 2574, 2550, 7472, 3640, 3029, 3079, 2249, 565, 1334, 2713, 863, 41, 7473, # 4246 - 7474, 4361, 7475, 1657, 2333, 19, 463, 2750, 4107, 606, 7476, 2981, 3256, 1087, 2084, 1323, # 4262 - 2652, 2982, 7477, 1631, 1623, 1750, 4108, 2682, 7478, 2864, 791, 2714, 2653, 2334, 232, 2416, # 4278 - 7479, 2983, 1498, 7480, 2654, 2620, 755, 1366, 3641, 3257, 3126, 2025, 1609, 119, 1917, 3427, # 4294 - 862, 1026, 4109, 7481, 3904, 3760, 4362, 3905, 4363, 2260, 1951, 2470, 7482, 1125, 817, 4110, # 4310 - 4111, 3906, 1513, 1766, 2040, 1487, 4112, 3030, 3258, 2824, 3761, 3127, 7483, 7484, 1507, 7485, # 4326 - 2683, 733, 40, 1632, 1106, 2865, 345, 4113, 841, 2524, 230, 4364, 2984, 1846, 3259, 3428, # 4342 - 7486, 1263, 986, 3429, 7487, 735, 879, 254, 1137, 857, 622, 1300, 1180, 1388, 1562, 3907, # 4358 - 3908, 2939, 967, 2751, 2655, 1349, 592, 2133, 1692, 3324, 2985, 1994, 4114, 1679, 3909, 1901, # 4374 - 2185, 7488, 739, 3642, 2715, 1296, 1290, 7489, 4115, 2198, 2199, 1921, 1563, 2595, 2551, 1870, # 4390 - 2752, 2986, 7490, 435, 7491, 343, 1108, 596, 17, 1751, 4365, 2235, 3430, 3643, 7492, 4366, # 4406 - 294, 3527, 2940, 1693, 477, 979, 281, 2041, 3528, 643, 2042, 3644, 2621, 2782, 2261, 1031, # 4422 - 2335, 2134, 2298, 3529, 4367, 367, 1249, 2552, 7493, 3530, 7494, 4368, 1283, 3325, 2004, 240, # 4438 - 1762, 3326, 4369, 4370, 836, 1069, 3128, 474, 7495, 2148, 2525, 268, 3531, 7496, 3188, 1521, # 4454 - 1284, 7497, 1658, 1546, 4116, 7498, 3532, 3533, 7499, 4117, 3327, 2684, 1685, 4118, 961, 1673, # 4470 - 2622, 190, 2005, 2200, 3762, 4371, 4372, 7500, 570, 2497, 3645, 1490, 7501, 4373, 2623, 3260, # 4486 - 1956, 4374, 584, 1514, 396, 1045, 1944, 7502, 4375, 1967, 2444, 7503, 7504, 4376, 3910, 619, # 4502 - 7505, 3129, 3261, 215, 2006, 2783, 2553, 3189, 4377, 3190, 4378, 763, 4119, 3763, 4379, 7506, # 4518 - 7507, 1957, 1767, 2941, 3328, 3646, 1174, 452, 1477, 4380, 3329, 3130, 7508, 2825, 1253, 2382, # 4534 - 2186, 1091, 2285, 4120, 492, 7509, 638, 1169, 1824, 2135, 1752, 3911, 648, 926, 1021, 1324, # 4550 - 4381, 520, 4382, 997, 847, 1007, 892, 4383, 3764, 2262, 1871, 3647, 7510, 2400, 1784, 4384, # 4566 - 1952, 2942, 3080, 3191, 1728, 4121, 2043, 3648, 4385, 2007, 1701, 3131, 1551, 30, 2263, 4122, # 4582 - 7511, 2026, 4386, 3534, 7512, 501, 7513, 4123, 594, 3431, 2165, 1821, 3535, 3432, 3536, 3192, # 4598 - 829, 2826, 4124, 7514, 1680, 3132, 1225, 4125, 7515, 3262, 4387, 4126, 3133, 2336, 7516, 4388, # 4614 - 4127, 7517, 3912, 3913, 7518, 1847, 2383, 2596, 3330, 7519, 4389, 374, 3914, 652, 4128, 4129, # 4630 - 375, 1140, 798, 7520, 7521, 7522, 2361, 4390, 2264, 546, 1659, 138, 3031, 2445, 4391, 7523, # 4646 - 2250, 612, 1848, 910, 796, 3765, 1740, 1371, 825, 3766, 3767, 7524, 2906, 2554, 7525, 692, # 4662 - 444, 3032, 2624, 801, 4392, 4130, 7526, 1491, 244, 1053, 3033, 4131, 4132, 340, 7527, 3915, # 4678 - 1041, 2987, 293, 1168, 87, 1357, 7528, 1539, 959, 7529, 2236, 721, 694, 4133, 3768, 219, # 4694 - 1478, 644, 1417, 3331, 2656, 1413, 1401, 1335, 1389, 3916, 7530, 7531, 2988, 2362, 3134, 1825, # 4710 - 730, 1515, 184, 2827, 66, 4393, 7532, 1660, 2943, 246, 3332, 378, 1457, 226, 3433, 975, # 4726 - 3917, 2944, 1264, 3537, 674, 696, 7533, 163, 7534, 1141, 2417, 2166, 713, 3538, 3333, 4394, # 4742 - 3918, 7535, 7536, 1186, 15, 7537, 1079, 1070, 7538, 1522, 3193, 3539, 276, 1050, 2716, 758, # 4758 - 1126, 653, 2945, 3263, 7539, 2337, 889, 3540, 3919, 3081, 2989, 903, 1250, 4395, 3920, 3434, # 4774 - 3541, 1342, 1681, 1718, 766, 3264, 286, 89, 2946, 3649, 7540, 1713, 7541, 2597, 3334, 2990, # 4790 - 7542, 2947, 2215, 3194, 2866, 7543, 4396, 2498, 2526, 181, 387, 1075, 3921, 731, 2187, 3335, # 4806 - 7544, 3265, 310, 313, 3435, 2299, 770, 4134, 54, 3034, 189, 4397, 3082, 3769, 3922, 7545, # 4822 - 1230, 1617, 1849, 355, 3542, 4135, 4398, 3336, 111, 4136, 3650, 1350, 3135, 3436, 3035, 4137, # 4838 - 2149, 3266, 3543, 7546, 2784, 3923, 3924, 2991, 722, 2008, 7547, 1071, 247, 1207, 2338, 2471, # 4854 - 1378, 4399, 2009, 864, 1437, 1214, 4400, 373, 3770, 1142, 2216, 667, 4401, 442, 2753, 2555, # 4870 - 3771, 3925, 1968, 4138, 3267, 1839, 837, 170, 1107, 934, 1336, 1882, 7548, 7549, 2118, 4139, # 4886 - 2828, 743, 1569, 7550, 4402, 4140, 582, 2384, 1418, 3437, 7551, 1802, 7552, 357, 1395, 1729, # 4902 - 3651, 3268, 2418, 1564, 2237, 7553, 3083, 3772, 1633, 4403, 1114, 2085, 4141, 1532, 7554, 482, # 4918 - 2446, 4404, 7555, 7556, 1492, 833, 1466, 7557, 2717, 3544, 1641, 2829, 7558, 1526, 1272, 3652, # 4934 - 4142, 1686, 1794, 416, 2556, 1902, 1953, 1803, 7559, 3773, 2785, 3774, 1159, 2316, 7560, 2867, # 4950 - 4405, 1610, 1584, 3036, 2419, 2754, 443, 3269, 1163, 3136, 7561, 7562, 3926, 7563, 4143, 2499, # 4966 - 3037, 4406, 3927, 3137, 2103, 1647, 3545, 2010, 1872, 4144, 7564, 4145, 431, 3438, 7565, 250, # 4982 - 97, 81, 4146, 7566, 1648, 1850, 1558, 160, 848, 7567, 866, 740, 1694, 7568, 2201, 2830, # 4998 - 3195, 4147, 4407, 3653, 1687, 950, 2472, 426, 469, 3196, 3654, 3655, 3928, 7569, 7570, 1188, # 5014 - 424, 1995, 861, 3546, 4148, 3775, 2202, 2685, 168, 1235, 3547, 4149, 7571, 2086, 1674, 4408, # 5030 - 3337, 3270, 220, 2557, 1009, 7572, 3776, 670, 2992, 332, 1208, 717, 7573, 7574, 3548, 2447, # 5046 - 3929, 3338, 7575, 513, 7576, 1209, 2868, 3339, 3138, 4409, 1080, 7577, 7578, 7579, 7580, 2527, # 5062 - 3656, 3549, 815, 1587, 3930, 3931, 7581, 3550, 3439, 3777, 1254, 4410, 1328, 3038, 1390, 3932, # 5078 - 1741, 3933, 3778, 3934, 7582, 236, 3779, 2448, 3271, 7583, 7584, 3657, 3780, 1273, 3781, 4411, # 5094 - 7585, 308, 7586, 4412, 245, 4413, 1851, 2473, 1307, 2575, 430, 715, 2136, 2449, 7587, 270, # 5110 - 199, 2869, 3935, 7588, 3551, 2718, 1753, 761, 1754, 725, 1661, 1840, 4414, 3440, 3658, 7589, # 5126 - 7590, 587, 14, 3272, 227, 2598, 326, 480, 2265, 943, 2755, 3552, 291, 650, 1883, 7591, # 5142 - 1702, 1226, 102, 1547, 62, 3441, 904, 4415, 3442, 1164, 4150, 7592, 7593, 1224, 1548, 2756, # 5158 - 391, 498, 1493, 7594, 1386, 1419, 7595, 2055, 1177, 4416, 813, 880, 1081, 2363, 566, 1145, # 5174 - 4417, 2286, 1001, 1035, 2558, 2599, 2238, 394, 1286, 7596, 7597, 2068, 7598, 86, 1494, 1730, # 5190 - 3936, 491, 1588, 745, 897, 2948, 843, 3340, 3937, 2757, 2870, 3273, 1768, 998, 2217, 2069, # 5206 - 397, 1826, 1195, 1969, 3659, 2993, 3341, 284, 7599, 3782, 2500, 2137, 2119, 1903, 7600, 3938, # 5222 - 2150, 3939, 4151, 1036, 3443, 1904, 114, 2559, 4152, 209, 1527, 7601, 7602, 2949, 2831, 2625, # 5238 - 2385, 2719, 3139, 812, 2560, 7603, 3274, 7604, 1559, 737, 1884, 3660, 1210, 885, 28, 2686, # 5254 - 3553, 3783, 7605, 4153, 1004, 1779, 4418, 7606, 346, 1981, 2218, 2687, 4419, 3784, 1742, 797, # 5270 - 1642, 3940, 1933, 1072, 1384, 2151, 896, 3941, 3275, 3661, 3197, 2871, 3554, 7607, 2561, 1958, # 5286 - 4420, 2450, 1785, 7608, 7609, 7610, 3942, 4154, 1005, 1308, 3662, 4155, 2720, 4421, 4422, 1528, # 5302 - 2600, 161, 1178, 4156, 1982, 987, 4423, 1101, 4157, 631, 3943, 1157, 3198, 2420, 1343, 1241, # 5318 - 1016, 2239, 2562, 372, 877, 2339, 2501, 1160, 555, 1934, 911, 3944, 7611, 466, 1170, 169, # 5334 - 1051, 2907, 2688, 3663, 2474, 2994, 1182, 2011, 2563, 1251, 2626, 7612, 992, 2340, 3444, 1540, # 5350 - 2721, 1201, 2070, 2401, 1996, 2475, 7613, 4424, 528, 1922, 2188, 1503, 1873, 1570, 2364, 3342, # 5366 - 3276, 7614, 557, 1073, 7615, 1827, 3445, 2087, 2266, 3140, 3039, 3084, 767, 3085, 2786, 4425, # 5382 - 1006, 4158, 4426, 2341, 1267, 2176, 3664, 3199, 778, 3945, 3200, 2722, 1597, 2657, 7616, 4427, # 5398 - 7617, 3446, 7618, 7619, 7620, 3277, 2689, 1433, 3278, 131, 95, 1504, 3946, 723, 4159, 3141, # 5414 - 1841, 3555, 2758, 2189, 3947, 2027, 2104, 3665, 7621, 2995, 3948, 1218, 7622, 3343, 3201, 3949, # 5430 - 4160, 2576, 248, 1634, 3785, 912, 7623, 2832, 3666, 3040, 3786, 654, 53, 7624, 2996, 7625, # 5446 - 1688, 4428, 777, 3447, 1032, 3950, 1425, 7626, 191, 820, 2120, 2833, 971, 4429, 931, 3202, # 5462 - 135, 664, 783, 3787, 1997, 772, 2908, 1935, 3951, 3788, 4430, 2909, 3203, 282, 2723, 640, # 5478 - 1372, 3448, 1127, 922, 325, 3344, 7627, 7628, 711, 2044, 7629, 7630, 3952, 2219, 2787, 1936, # 5494 - 3953, 3345, 2220, 2251, 3789, 2300, 7631, 4431, 3790, 1258, 3279, 3954, 3204, 2138, 2950, 3955, # 5510 - 3956, 7632, 2221, 258, 3205, 4432, 101, 1227, 7633, 3280, 1755, 7634, 1391, 3281, 7635, 2910, # 5526 - 2056, 893, 7636, 7637, 7638, 1402, 4161, 2342, 7639, 7640, 3206, 3556, 7641, 7642, 878, 1325, # 5542 - 1780, 2788, 4433, 259, 1385, 2577, 744, 1183, 2267, 4434, 7643, 3957, 2502, 7644, 684, 1024, # 5558 - 4162, 7645, 472, 3557, 3449, 1165, 3282, 3958, 3959, 322, 2152, 881, 455, 1695, 1152, 1340, # 5574 - 660, 554, 2153, 4435, 1058, 4436, 4163, 830, 1065, 3346, 3960, 4437, 1923, 7646, 1703, 1918, # 5590 - 7647, 932, 2268, 122, 7648, 4438, 947, 677, 7649, 3791, 2627, 297, 1905, 1924, 2269, 4439, # 5606 - 2317, 3283, 7650, 7651, 4164, 7652, 4165, 84, 4166, 112, 989, 7653, 547, 1059, 3961, 701, # 5622 - 3558, 1019, 7654, 4167, 7655, 3450, 942, 639, 457, 2301, 2451, 993, 2951, 407, 851, 494, # 5638 - 4440, 3347, 927, 7656, 1237, 7657, 2421, 3348, 573, 4168, 680, 921, 2911, 1279, 1874, 285, # 5654 - 790, 1448, 1983, 719, 2167, 7658, 7659, 4441, 3962, 3963, 1649, 7660, 1541, 563, 7661, 1077, # 5670 - 7662, 3349, 3041, 3451, 511, 2997, 3964, 3965, 3667, 3966, 1268, 2564, 3350, 3207, 4442, 4443, # 5686 - 7663, 535, 1048, 1276, 1189, 2912, 2028, 3142, 1438, 1373, 2834, 2952, 1134, 2012, 7664, 4169, # 5702 - 1238, 2578, 3086, 1259, 7665, 700, 7666, 2953, 3143, 3668, 4170, 7667, 4171, 1146, 1875, 1906, # 5718 - 4444, 2601, 3967, 781, 2422, 132, 1589, 203, 147, 273, 2789, 2402, 898, 1786, 2154, 3968, # 5734 - 3969, 7668, 3792, 2790, 7669, 7670, 4445, 4446, 7671, 3208, 7672, 1635, 3793, 965, 7673, 1804, # 5750 - 2690, 1516, 3559, 1121, 1082, 1329, 3284, 3970, 1449, 3794, 65, 1128, 2835, 2913, 2759, 1590, # 5766 - 3795, 7674, 7675, 12, 2658, 45, 976, 2579, 3144, 4447, 517, 2528, 1013, 1037, 3209, 7676, # 5782 - 3796, 2836, 7677, 3797, 7678, 3452, 7679, 2602, 614, 1998, 2318, 3798, 3087, 2724, 2628, 7680, # 5798 - 2580, 4172, 599, 1269, 7681, 1810, 3669, 7682, 2691, 3088, 759, 1060, 489, 1805, 3351, 3285, # 5814 - 1358, 7683, 7684, 2386, 1387, 1215, 2629, 2252, 490, 7685, 7686, 4173, 1759, 2387, 2343, 7687, # 5830 - 4448, 3799, 1907, 3971, 2630, 1806, 3210, 4449, 3453, 3286, 2760, 2344, 874, 7688, 7689, 3454, # 5846 - 3670, 1858, 91, 2914, 3671, 3042, 3800, 4450, 7690, 3145, 3972, 2659, 7691, 3455, 1202, 1403, # 5862 - 3801, 2954, 2529, 1517, 2503, 4451, 3456, 2504, 7692, 4452, 7693, 2692, 1885, 1495, 1731, 3973, # 5878 - 2365, 4453, 7694, 2029, 7695, 7696, 3974, 2693, 1216, 237, 2581, 4174, 2319, 3975, 3802, 4454, # 5894 - 4455, 2694, 3560, 3457, 445, 4456, 7697, 7698, 7699, 7700, 2761, 61, 3976, 3672, 1822, 3977, # 5910 - 7701, 687, 2045, 935, 925, 405, 2660, 703, 1096, 1859, 2725, 4457, 3978, 1876, 1367, 2695, # 5926 - 3352, 918, 2105, 1781, 2476, 334, 3287, 1611, 1093, 4458, 564, 3146, 3458, 3673, 3353, 945, # 5942 - 2631, 2057, 4459, 7702, 1925, 872, 4175, 7703, 3459, 2696, 3089, 349, 4176, 3674, 3979, 4460, # 5958 - 3803, 4177, 3675, 2155, 3980, 4461, 4462, 4178, 4463, 2403, 2046, 782, 3981, 400, 251, 4179, # 5974 - 1624, 7704, 7705, 277, 3676, 299, 1265, 476, 1191, 3804, 2121, 4180, 4181, 1109, 205, 7706, # 5990 - 2582, 1000, 2156, 3561, 1860, 7707, 7708, 7709, 4464, 7710, 4465, 2565, 107, 2477, 2157, 3982, # 6006 - 3460, 3147, 7711, 1533, 541, 1301, 158, 753, 4182, 2872, 3562, 7712, 1696, 370, 1088, 4183, # 6022 - 4466, 3563, 579, 327, 440, 162, 2240, 269, 1937, 1374, 3461, 968, 3043, 56, 1396, 3090, # 6038 - 2106, 3288, 3354, 7713, 1926, 2158, 4467, 2998, 7714, 3564, 7715, 7716, 3677, 4468, 2478, 7717, # 6054 - 2791, 7718, 1650, 4469, 7719, 2603, 7720, 7721, 3983, 2661, 3355, 1149, 3356, 3984, 3805, 3985, # 6070 - 7722, 1076, 49, 7723, 951, 3211, 3289, 3290, 450, 2837, 920, 7724, 1811, 2792, 2366, 4184, # 6086 - 1908, 1138, 2367, 3806, 3462, 7725, 3212, 4470, 1909, 1147, 1518, 2423, 4471, 3807, 7726, 4472, # 6102 - 2388, 2604, 260, 1795, 3213, 7727, 7728, 3808, 3291, 708, 7729, 3565, 1704, 7730, 3566, 1351, # 6118 - 1618, 3357, 2999, 1886, 944, 4185, 3358, 4186, 3044, 3359, 4187, 7731, 3678, 422, 413, 1714, # 6134 - 3292, 500, 2058, 2345, 4188, 2479, 7732, 1344, 1910, 954, 7733, 1668, 7734, 7735, 3986, 2404, # 6150 - 4189, 3567, 3809, 4190, 7736, 2302, 1318, 2505, 3091, 133, 3092, 2873, 4473, 629, 31, 2838, # 6166 - 2697, 3810, 4474, 850, 949, 4475, 3987, 2955, 1732, 2088, 4191, 1496, 1852, 7737, 3988, 620, # 6182 - 3214, 981, 1242, 3679, 3360, 1619, 3680, 1643, 3293, 2139, 2452, 1970, 1719, 3463, 2168, 7738, # 6198 - 3215, 7739, 7740, 3361, 1828, 7741, 1277, 4476, 1565, 2047, 7742, 1636, 3568, 3093, 7743, 869, # 6214 - 2839, 655, 3811, 3812, 3094, 3989, 3000, 3813, 1310, 3569, 4477, 7744, 7745, 7746, 1733, 558, # 6230 - 4478, 3681, 335, 1549, 3045, 1756, 4192, 3682, 1945, 3464, 1829, 1291, 1192, 470, 2726, 2107, # 6246 - 2793, 913, 1054, 3990, 7747, 1027, 7748, 3046, 3991, 4479, 982, 2662, 3362, 3148, 3465, 3216, # 6262 - 3217, 1946, 2794, 7749, 571, 4480, 7750, 1830, 7751, 3570, 2583, 1523, 2424, 7752, 2089, 984, # 6278 - 4481, 3683, 1959, 7753, 3684, 852, 923, 2795, 3466, 3685, 969, 1519, 999, 2048, 2320, 1705, # 6294 - 7754, 3095, 615, 1662, 151, 597, 3992, 2405, 2321, 1049, 275, 4482, 3686, 4193, 568, 3687, # 6310 - 3571, 2480, 4194, 3688, 7755, 2425, 2270, 409, 3218, 7756, 1566, 2874, 3467, 1002, 769, 2840, # 6326 - 194, 2090, 3149, 3689, 2222, 3294, 4195, 628, 1505, 7757, 7758, 1763, 2177, 3001, 3993, 521, # 6342 - 1161, 2584, 1787, 2203, 2406, 4483, 3994, 1625, 4196, 4197, 412, 42, 3096, 464, 7759, 2632, # 6358 - 4484, 3363, 1760, 1571, 2875, 3468, 2530, 1219, 2204, 3814, 2633, 2140, 2368, 4485, 4486, 3295, # 6374 - 1651, 3364, 3572, 7760, 7761, 3573, 2481, 3469, 7762, 3690, 7763, 7764, 2271, 2091, 460, 7765, # 6390 - 4487, 7766, 3002, 962, 588, 3574, 289, 3219, 2634, 1116, 52, 7767, 3047, 1796, 7768, 7769, # 6406 - 7770, 1467, 7771, 1598, 1143, 3691, 4198, 1984, 1734, 1067, 4488, 1280, 3365, 465, 4489, 1572, # 6422 - 510, 7772, 1927, 2241, 1812, 1644, 3575, 7773, 4490, 3692, 7774, 7775, 2663, 1573, 1534, 7776, # 6438 - 7777, 4199, 536, 1807, 1761, 3470, 3815, 3150, 2635, 7778, 7779, 7780, 4491, 3471, 2915, 1911, # 6454 - 2796, 7781, 3296, 1122, 377, 3220, 7782, 360, 7783, 7784, 4200, 1529, 551, 7785, 2059, 3693, # 6470 - 1769, 2426, 7786, 2916, 4201, 3297, 3097, 2322, 2108, 2030, 4492, 1404, 136, 1468, 1479, 672, # 6486 - 1171, 3221, 2303, 271, 3151, 7787, 2762, 7788, 2049, 678, 2727, 865, 1947, 4493, 7789, 2013, # 6502 - 3995, 2956, 7790, 2728, 2223, 1397, 3048, 3694, 4494, 4495, 1735, 2917, 3366, 3576, 7791, 3816, # 6518 - 509, 2841, 2453, 2876, 3817, 7792, 7793, 3152, 3153, 4496, 4202, 2531, 4497, 2304, 1166, 1010, # 6534 - 552, 681, 1887, 7794, 7795, 2957, 2958, 3996, 1287, 1596, 1861, 3154, 358, 453, 736, 175, # 6550 - 478, 1117, 905, 1167, 1097, 7796, 1853, 1530, 7797, 1706, 7798, 2178, 3472, 2287, 3695, 3473, # 6566 - 3577, 4203, 2092, 4204, 7799, 3367, 1193, 2482, 4205, 1458, 2190, 2205, 1862, 1888, 1421, 3298, # 6582 - 2918, 3049, 2179, 3474, 595, 2122, 7800, 3997, 7801, 7802, 4206, 1707, 2636, 223, 3696, 1359, # 6598 - 751, 3098, 183, 3475, 7803, 2797, 3003, 419, 2369, 633, 704, 3818, 2389, 241, 7804, 7805, # 6614 - 7806, 838, 3004, 3697, 2272, 2763, 2454, 3819, 1938, 2050, 3998, 1309, 3099, 2242, 1181, 7807, # 6630 - 1136, 2206, 3820, 2370, 1446, 4207, 2305, 4498, 7808, 7809, 4208, 1055, 2605, 484, 3698, 7810, # 6646 - 3999, 625, 4209, 2273, 3368, 1499, 4210, 4000, 7811, 4001, 4211, 3222, 2274, 2275, 3476, 7812, # 6662 - 7813, 2764, 808, 2606, 3699, 3369, 4002, 4212, 3100, 2532, 526, 3370, 3821, 4213, 955, 7814, # 6678 - 1620, 4214, 2637, 2427, 7815, 1429, 3700, 1669, 1831, 994, 928, 7816, 3578, 1260, 7817, 7818, # 6694 - 7819, 1948, 2288, 741, 2919, 1626, 4215, 2729, 2455, 867, 1184, 362, 3371, 1392, 7820, 7821, # 6710 - 4003, 4216, 1770, 1736, 3223, 2920, 4499, 4500, 1928, 2698, 1459, 1158, 7822, 3050, 3372, 2877, # 6726 - 1292, 1929, 2506, 2842, 3701, 1985, 1187, 2071, 2014, 2607, 4217, 7823, 2566, 2507, 2169, 3702, # 6742 - 2483, 3299, 7824, 3703, 4501, 7825, 7826, 666, 1003, 3005, 1022, 3579, 4218, 7827, 4502, 1813, # 6758 - 2253, 574, 3822, 1603, 295, 1535, 705, 3823, 4219, 283, 858, 417, 7828, 7829, 3224, 4503, # 6774 - 4504, 3051, 1220, 1889, 1046, 2276, 2456, 4004, 1393, 1599, 689, 2567, 388, 4220, 7830, 2484, # 6790 - 802, 7831, 2798, 3824, 2060, 1405, 2254, 7832, 4505, 3825, 2109, 1052, 1345, 3225, 1585, 7833, # 6806 - 809, 7834, 7835, 7836, 575, 2730, 3477, 956, 1552, 1469, 1144, 2323, 7837, 2324, 1560, 2457, # 6822 - 3580, 3226, 4005, 616, 2207, 3155, 2180, 2289, 7838, 1832, 7839, 3478, 4506, 7840, 1319, 3704, # 6838 - 3705, 1211, 3581, 1023, 3227, 1293, 2799, 7841, 7842, 7843, 3826, 607, 2306, 3827, 762, 2878, # 6854 - 1439, 4221, 1360, 7844, 1485, 3052, 7845, 4507, 1038, 4222, 1450, 2061, 2638, 4223, 1379, 4508, # 6870 - 2585, 7846, 7847, 4224, 1352, 1414, 2325, 2921, 1172, 7848, 7849, 3828, 3829, 7850, 1797, 1451, # 6886 - 7851, 7852, 7853, 7854, 2922, 4006, 4007, 2485, 2346, 411, 4008, 4009, 3582, 3300, 3101, 4509, # 6902 - 1561, 2664, 1452, 4010, 1375, 7855, 7856, 47, 2959, 316, 7857, 1406, 1591, 2923, 3156, 7858, # 6918 - 1025, 2141, 3102, 3157, 354, 2731, 884, 2224, 4225, 2407, 508, 3706, 726, 3583, 996, 2428, # 6934 - 3584, 729, 7859, 392, 2191, 1453, 4011, 4510, 3707, 7860, 7861, 2458, 3585, 2608, 1675, 2800, # 6950 - 919, 2347, 2960, 2348, 1270, 4511, 4012, 73, 7862, 7863, 647, 7864, 3228, 2843, 2255, 1550, # 6966 - 1346, 3006, 7865, 1332, 883, 3479, 7866, 7867, 7868, 7869, 3301, 2765, 7870, 1212, 831, 1347, # 6982 - 4226, 4512, 2326, 3830, 1863, 3053, 720, 3831, 4513, 4514, 3832, 7871, 4227, 7872, 7873, 4515, # 6998 - 7874, 7875, 1798, 4516, 3708, 2609, 4517, 3586, 1645, 2371, 7876, 7877, 2924, 669, 2208, 2665, # 7014 - 2429, 7878, 2879, 7879, 7880, 1028, 3229, 7881, 4228, 2408, 7882, 2256, 1353, 7883, 7884, 4518, # 7030 - 3158, 518, 7885, 4013, 7886, 4229, 1960, 7887, 2142, 4230, 7888, 7889, 3007, 2349, 2350, 3833, # 7046 - 516, 1833, 1454, 4014, 2699, 4231, 4519, 2225, 2610, 1971, 1129, 3587, 7890, 2766, 7891, 2961, # 7062 - 1422, 577, 1470, 3008, 1524, 3373, 7892, 7893, 432, 4232, 3054, 3480, 7894, 2586, 1455, 2508, # 7078 - 2226, 1972, 1175, 7895, 1020, 2732, 4015, 3481, 4520, 7896, 2733, 7897, 1743, 1361, 3055, 3482, # 7094 - 2639, 4016, 4233, 4521, 2290, 895, 924, 4234, 2170, 331, 2243, 3056, 166, 1627, 3057, 1098, # 7110 - 7898, 1232, 2880, 2227, 3374, 4522, 657, 403, 1196, 2372, 542, 3709, 3375, 1600, 4235, 3483, # 7126 - 7899, 4523, 2767, 3230, 576, 530, 1362, 7900, 4524, 2533, 2666, 3710, 4017, 7901, 842, 3834, # 7142 - 7902, 2801, 2031, 1014, 4018, 213, 2700, 3376, 665, 621, 4236, 7903, 3711, 2925, 2430, 7904, # 7158 - 2431, 3302, 3588, 3377, 7905, 4237, 2534, 4238, 4525, 3589, 1682, 4239, 3484, 1380, 7906, 724, # 7174 - 2277, 600, 1670, 7907, 1337, 1233, 4526, 3103, 2244, 7908, 1621, 4527, 7909, 651, 4240, 7910, # 7190 - 1612, 4241, 2611, 7911, 2844, 7912, 2734, 2307, 3058, 7913, 716, 2459, 3059, 174, 1255, 2701, # 7206 - 4019, 3590, 548, 1320, 1398, 728, 4020, 1574, 7914, 1890, 1197, 3060, 4021, 7915, 3061, 3062, # 7222 - 3712, 3591, 3713, 747, 7916, 635, 4242, 4528, 7917, 7918, 7919, 4243, 7920, 7921, 4529, 7922, # 7238 - 3378, 4530, 2432, 451, 7923, 3714, 2535, 2072, 4244, 2735, 4245, 4022, 7924, 1764, 4531, 7925, # 7254 - 4246, 350, 7926, 2278, 2390, 2486, 7927, 4247, 4023, 2245, 1434, 4024, 488, 4532, 458, 4248, # 7270 - 4025, 3715, 771, 1330, 2391, 3835, 2568, 3159, 2159, 2409, 1553, 2667, 3160, 4249, 7928, 2487, # 7286 - 2881, 2612, 1720, 2702, 4250, 3379, 4533, 7929, 2536, 4251, 7930, 3231, 4252, 2768, 7931, 2015, # 7302 - 2736, 7932, 1155, 1017, 3716, 3836, 7933, 3303, 2308, 201, 1864, 4253, 1430, 7934, 4026, 7935, # 7318 - 7936, 7937, 7938, 7939, 4254, 1604, 7940, 414, 1865, 371, 2587, 4534, 4535, 3485, 2016, 3104, # 7334 - 4536, 1708, 960, 4255, 887, 389, 2171, 1536, 1663, 1721, 7941, 2228, 4027, 2351, 2926, 1580, # 7350 - 7942, 7943, 7944, 1744, 7945, 2537, 4537, 4538, 7946, 4539, 7947, 2073, 7948, 7949, 3592, 3380, # 7366 - 2882, 4256, 7950, 4257, 2640, 3381, 2802, 673, 2703, 2460, 709, 3486, 4028, 3593, 4258, 7951, # 7382 - 1148, 502, 634, 7952, 7953, 1204, 4540, 3594, 1575, 4541, 2613, 3717, 7954, 3718, 3105, 948, # 7398 - 3232, 121, 1745, 3837, 1110, 7955, 4259, 3063, 2509, 3009, 4029, 3719, 1151, 1771, 3838, 1488, # 7414 - 4030, 1986, 7956, 2433, 3487, 7957, 7958, 2093, 7959, 4260, 3839, 1213, 1407, 2803, 531, 2737, # 7430 - 2538, 3233, 1011, 1537, 7960, 2769, 4261, 3106, 1061, 7961, 3720, 3721, 1866, 2883, 7962, 2017, # 7446 - 120, 4262, 4263, 2062, 3595, 3234, 2309, 3840, 2668, 3382, 1954, 4542, 7963, 7964, 3488, 1047, # 7462 - 2704, 1266, 7965, 1368, 4543, 2845, 649, 3383, 3841, 2539, 2738, 1102, 2846, 2669, 7966, 7967, # 7478 - 1999, 7968, 1111, 3596, 2962, 7969, 2488, 3842, 3597, 2804, 1854, 3384, 3722, 7970, 7971, 3385, # 7494 - 2410, 2884, 3304, 3235, 3598, 7972, 2569, 7973, 3599, 2805, 4031, 1460, 856, 7974, 3600, 7975, # 7510 - 2885, 2963, 7976, 2886, 3843, 7977, 4264, 632, 2510, 875, 3844, 1697, 3845, 2291, 7978, 7979, # 7526 - 4544, 3010, 1239, 580, 4545, 4265, 7980, 914, 936, 2074, 1190, 4032, 1039, 2123, 7981, 7982, # 7542 - 7983, 3386, 1473, 7984, 1354, 4266, 3846, 7985, 2172, 3064, 4033, 915, 3305, 4267, 4268, 3306, # 7558 - 1605, 1834, 7986, 2739, 398, 3601, 4269, 3847, 4034, 328, 1912, 2847, 4035, 3848, 1331, 4270, # 7574 - 3011, 937, 4271, 7987, 3602, 4036, 4037, 3387, 2160, 4546, 3388, 524, 742, 538, 3065, 1012, # 7590 - 7988, 7989, 3849, 2461, 7990, 658, 1103, 225, 3850, 7991, 7992, 4547, 7993, 4548, 7994, 3236, # 7606 - 1243, 7995, 4038, 963, 2246, 4549, 7996, 2705, 3603, 3161, 7997, 7998, 2588, 2327, 7999, 4550, # 7622 - 8000, 8001, 8002, 3489, 3307, 957, 3389, 2540, 2032, 1930, 2927, 2462, 870, 2018, 3604, 1746, # 7638 - 2770, 2771, 2434, 2463, 8003, 3851, 8004, 3723, 3107, 3724, 3490, 3390, 3725, 8005, 1179, 3066, # 7654 - 8006, 3162, 2373, 4272, 3726, 2541, 3163, 3108, 2740, 4039, 8007, 3391, 1556, 2542, 2292, 977, # 7670 - 2887, 2033, 4040, 1205, 3392, 8008, 1765, 3393, 3164, 2124, 1271, 1689, 714, 4551, 3491, 8009, # 7686 - 2328, 3852, 533, 4273, 3605, 2181, 617, 8010, 2464, 3308, 3492, 2310, 8011, 8012, 3165, 8013, # 7702 - 8014, 3853, 1987, 618, 427, 2641, 3493, 3394, 8015, 8016, 1244, 1690, 8017, 2806, 4274, 4552, # 7718 - 8018, 3494, 8019, 8020, 2279, 1576, 473, 3606, 4275, 3395, 972, 8021, 3607, 8022, 3067, 8023, # 7734 - 8024, 4553, 4554, 8025, 3727, 4041, 4042, 8026, 153, 4555, 356, 8027, 1891, 2888, 4276, 2143, # 7750 - 408, 803, 2352, 8028, 3854, 8029, 4277, 1646, 2570, 2511, 4556, 4557, 3855, 8030, 3856, 4278, # 7766 - 8031, 2411, 3396, 752, 8032, 8033, 1961, 2964, 8034, 746, 3012, 2465, 8035, 4279, 3728, 698, # 7782 - 4558, 1892, 4280, 3608, 2543, 4559, 3609, 3857, 8036, 3166, 3397, 8037, 1823, 1302, 4043, 2706, # 7798 - 3858, 1973, 4281, 8038, 4282, 3167, 823, 1303, 1288, 1236, 2848, 3495, 4044, 3398, 774, 3859, # 7814 - 8039, 1581, 4560, 1304, 2849, 3860, 4561, 8040, 2435, 2161, 1083, 3237, 4283, 4045, 4284, 344, # 7830 - 1173, 288, 2311, 454, 1683, 8041, 8042, 1461, 4562, 4046, 2589, 8043, 8044, 4563, 985, 894, # 7846 - 8045, 3399, 3168, 8046, 1913, 2928, 3729, 1988, 8047, 2110, 1974, 8048, 4047, 8049, 2571, 1194, # 7862 - 425, 8050, 4564, 3169, 1245, 3730, 4285, 8051, 8052, 2850, 8053, 636, 4565, 1855, 3861, 760, # 7878 - 1799, 8054, 4286, 2209, 1508, 4566, 4048, 1893, 1684, 2293, 8055, 8056, 8057, 4287, 4288, 2210, # 7894 - 479, 8058, 8059, 832, 8060, 4049, 2489, 8061, 2965, 2490, 3731, 990, 3109, 627, 1814, 2642, # 7910 - 4289, 1582, 4290, 2125, 2111, 3496, 4567, 8062, 799, 4291, 3170, 8063, 4568, 2112, 1737, 3013, # 7926 - 1018, 543, 754, 4292, 3309, 1676, 4569, 4570, 4050, 8064, 1489, 8065, 3497, 8066, 2614, 2889, # 7942 - 4051, 8067, 8068, 2966, 8069, 8070, 8071, 8072, 3171, 4571, 4572, 2182, 1722, 8073, 3238, 3239, # 7958 - 1842, 3610, 1715, 481, 365, 1975, 1856, 8074, 8075, 1962, 2491, 4573, 8076, 2126, 3611, 3240, # 7974 - 433, 1894, 2063, 2075, 8077, 602, 2741, 8078, 8079, 8080, 8081, 8082, 3014, 1628, 3400, 8083, # 7990 - 3172, 4574, 4052, 2890, 4575, 2512, 8084, 2544, 2772, 8085, 8086, 8087, 3310, 4576, 2891, 8088, # 8006 - 4577, 8089, 2851, 4578, 4579, 1221, 2967, 4053, 2513, 8090, 8091, 8092, 1867, 1989, 8093, 8094, # 8022 - 8095, 1895, 8096, 8097, 4580, 1896, 4054, 318, 8098, 2094, 4055, 4293, 8099, 8100, 485, 8101, # 8038 - 938, 3862, 553, 2670, 116, 8102, 3863, 3612, 8103, 3498, 2671, 2773, 3401, 3311, 2807, 8104, # 8054 - 3613, 2929, 4056, 1747, 2930, 2968, 8105, 8106, 207, 8107, 8108, 2672, 4581, 2514, 8109, 3015, # 8070 - 890, 3614, 3864, 8110, 1877, 3732, 3402, 8111, 2183, 2353, 3403, 1652, 8112, 8113, 8114, 941, # 8086 - 2294, 208, 3499, 4057, 2019, 330, 4294, 3865, 2892, 2492, 3733, 4295, 8115, 8116, 8117, 8118, # 8102 -) -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py deleted file mode 100644 index a37ab18..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import EUCTWDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import EUCTW_SM_MODEL - - -class EUCTWProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) - self.distribution_analyzer = EUCTWDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "EUC-TW" - - @property - def language(self) -> str: - return "Taiwan" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py deleted file mode 100644 index b32bfc7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py +++ /dev/null @@ -1,284 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# GB2312 most frequently used character table -# -# Char to FreqOrder table , from hz6763 - -# 512 --> 0.79 -- 0.79 -# 1024 --> 0.92 -- 0.13 -# 2048 --> 0.98 -- 0.06 -# 6768 --> 1.00 -- 0.02 -# -# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 -# Random Distribution Ration = 512 / (3755 - 512) = 0.157 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR - -GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 - -GB2312_TABLE_SIZE = 3760 - -# fmt: off -GB2312_CHAR_TO_FREQ_ORDER = ( -1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, -2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, -2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, - 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, -1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, -1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, - 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, -1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, -2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, -3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, - 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, -1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, - 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, -2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, - 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, -2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, -1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, -3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, - 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, -1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, - 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, -2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, -1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, -3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, -1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, -2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, -1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, - 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, -3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, -3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, - 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, -3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, - 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, -1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, -3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, -2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, -1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, - 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, -1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, -4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, - 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, -3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, -3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, - 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, -1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, -2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, -1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, -1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, - 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, -3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, -3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, -4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, - 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, -3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, -1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, -1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, -4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, - 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, - 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, -3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, -1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, - 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, -1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, -2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, - 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, - 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, - 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, -3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, -4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, -3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, - 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, -2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, -2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, -2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, - 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, -2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, - 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, - 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, - 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, -3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, -2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, -2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, -1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, - 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, -2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, - 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, - 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, -1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, -1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, - 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, - 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, -1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, -2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, -3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, -2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, -2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, -2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, -3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, -1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, -1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, -2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, -1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, -3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, -1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, -1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, -3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, - 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, -2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, -1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, -4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, -1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, -1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, -3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, -1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, - 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, - 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, -1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, - 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, -1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, -1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, - 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, -3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, -4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, -3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, -2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, -2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, -1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, -3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, -2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, -1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, -1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, - 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, -2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, -2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, -3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, -4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, -3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, - 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, -3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, -2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, -1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, - 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, - 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, -3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, -4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, -2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, -1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, -1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, - 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, -1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, -3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, - 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, - 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, -1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, - 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, -1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, - 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, -2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, - 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, -2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, -2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, -1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, -1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, -2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, - 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, -1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, -1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, -2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, -2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, -3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, -1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, -4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, - 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, - 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, -3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, -1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, - 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, -3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, -1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, -4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, -1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, -2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, -1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, - 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, -1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, -3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, - 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, -2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, - 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, -1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, -1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, -1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, -3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, -2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, -3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, -3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, -3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, - 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, -2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, - 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, -2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, - 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, -1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, - 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, - 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, -1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, -3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, -3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, -1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, -1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, -3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, -2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, -2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, -1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, -3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, - 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, -4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, -1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, -2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, -3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, -3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, -1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, - 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, - 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, -2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, - 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, -1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, - 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, -1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, -1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, -1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, -1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, -1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, - 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, - 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 -) -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py deleted file mode 100644 index d423e73..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import GB2312DistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import GB2312_SM_MODEL - - -class GB2312Prober(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) - self.distribution_analyzer = GB2312DistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "GB2312" - - @property - def language(self) -> str: - return "Chinese" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py deleted file mode 100644 index 785d005..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py +++ /dev/null @@ -1,316 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Shy Shalom -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Optional, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState -from .sbcharsetprober import SingleByteCharSetProber - -# This prober doesn't actually recognize a language or a charset. -# It is a helper prober for the use of the Hebrew model probers - -### General ideas of the Hebrew charset recognition ### -# -# Four main charsets exist in Hebrew: -# "ISO-8859-8" - Visual Hebrew -# "windows-1255" - Logical Hebrew -# "ISO-8859-8-I" - Logical Hebrew -# "x-mac-hebrew" - ?? Logical Hebrew ?? -# -# Both "ISO" charsets use a completely identical set of code points, whereas -# "windows-1255" and "x-mac-hebrew" are two different proper supersets of -# these code points. windows-1255 defines additional characters in the range -# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific -# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. -# x-mac-hebrew defines similar additional code points but with a different -# mapping. -# -# As far as an average Hebrew text with no diacritics is concerned, all four -# charsets are identical with respect to code points. Meaning that for the -# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters -# (including final letters). -# -# The dominant difference between these charsets is their directionality. -# "Visual" directionality means that the text is ordered as if the renderer is -# not aware of a BIDI rendering algorithm. The renderer sees the text and -# draws it from left to right. The text itself when ordered naturally is read -# backwards. A buffer of Visual Hebrew generally looks like so: -# "[last word of first line spelled backwards] [whole line ordered backwards -# and spelled backwards] [first word of first line spelled backwards] -# [end of line] [last word of second line] ... etc' " -# adding punctuation marks, numbers and English text to visual text is -# naturally also "visual" and from left to right. -# -# "Logical" directionality means the text is ordered "naturally" according to -# the order it is read. It is the responsibility of the renderer to display -# the text from right to left. A BIDI algorithm is used to place general -# punctuation marks, numbers and English text in the text. -# -# Texts in x-mac-hebrew are almost impossible to find on the Internet. From -# what little evidence I could find, it seems that its general directionality -# is Logical. -# -# To sum up all of the above, the Hebrew probing mechanism knows about two -# charsets: -# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are -# backwards while line order is natural. For charset recognition purposes -# the line order is unimportant (In fact, for this implementation, even -# word order is unimportant). -# Logical Hebrew - "windows-1255" - normal, naturally ordered text. -# -# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be -# specifically identified. -# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew -# that contain special punctuation marks or diacritics is displayed with -# some unconverted characters showing as question marks. This problem might -# be corrected using another model prober for x-mac-hebrew. Due to the fact -# that x-mac-hebrew texts are so rare, writing another model prober isn't -# worth the effort and performance hit. -# -#### The Prober #### -# -# The prober is divided between two SBCharSetProbers and a HebrewProber, -# all of which are managed, created, fed data, inquired and deleted by the -# SBCSGroupProber. The two SBCharSetProbers identify that the text is in -# fact some kind of Hebrew, Logical or Visual. The final decision about which -# one is it is made by the HebrewProber by combining final-letter scores -# with the scores of the two SBCharSetProbers to produce a final answer. -# -# The SBCSGroupProber is responsible for stripping the original text of HTML -# tags, English characters, numbers, low-ASCII punctuation characters, spaces -# and new lines. It reduces any sequence of such characters to a single space. -# The buffer fed to each prober in the SBCS group prober is pure text in -# high-ASCII. -# The two SBCharSetProbers (model probers) share the same language model: -# Win1255Model. -# The first SBCharSetProber uses the model normally as any other -# SBCharSetProber does, to recognize windows-1255, upon which this model was -# built. The second SBCharSetProber is told to make the pair-of-letter -# lookup in the language model backwards. This in practice exactly simulates -# a visual Hebrew model using the windows-1255 logical Hebrew model. -# -# The HebrewProber is not using any language model. All it does is look for -# final-letter evidence suggesting the text is either logical Hebrew or visual -# Hebrew. Disjointed from the model probers, the results of the HebrewProber -# alone are meaningless. HebrewProber always returns 0.00 as confidence -# since it never identifies a charset by itself. Instead, the pointer to the -# HebrewProber is passed to the model probers as a helper "Name Prober". -# When the Group prober receives a positive identification from any prober, -# it asks for the name of the charset identified. If the prober queried is a -# Hebrew model prober, the model prober forwards the call to the -# HebrewProber to make the final decision. In the HebrewProber, the -# decision is made according to the final-letters scores maintained and Both -# model probers scores. The answer is returned in the form of the name of the -# charset identified, either "windows-1255" or "ISO-8859-8". - - -class HebrewProber(CharSetProber): - SPACE = 0x20 - # windows-1255 / ISO-8859-8 code points of interest - FINAL_KAF = 0xEA - NORMAL_KAF = 0xEB - FINAL_MEM = 0xED - NORMAL_MEM = 0xEE - FINAL_NUN = 0xEF - NORMAL_NUN = 0xF0 - FINAL_PE = 0xF3 - NORMAL_PE = 0xF4 - FINAL_TSADI = 0xF5 - NORMAL_TSADI = 0xF6 - - # Minimum Visual vs Logical final letter score difference. - # If the difference is below this, don't rely solely on the final letter score - # distance. - MIN_FINAL_CHAR_DISTANCE = 5 - - # Minimum Visual vs Logical model score difference. - # If the difference is below this, don't rely at all on the model score - # distance. - MIN_MODEL_DISTANCE = 0.01 - - VISUAL_HEBREW_NAME = "ISO-8859-8" - LOGICAL_HEBREW_NAME = "windows-1255" - - def __init__(self) -> None: - super().__init__() - self._final_char_logical_score = 0 - self._final_char_visual_score = 0 - self._prev = self.SPACE - self._before_prev = self.SPACE - self._logical_prober: Optional[SingleByteCharSetProber] = None - self._visual_prober: Optional[SingleByteCharSetProber] = None - self.reset() - - def reset(self) -> None: - self._final_char_logical_score = 0 - self._final_char_visual_score = 0 - # The two last characters seen in the previous buffer, - # mPrev and mBeforePrev are initialized to space in order to simulate - # a word delimiter at the beginning of the data - self._prev = self.SPACE - self._before_prev = self.SPACE - # These probers are owned by the group prober. - - def set_model_probers( - self, - logical_prober: SingleByteCharSetProber, - visual_prober: SingleByteCharSetProber, - ) -> None: - self._logical_prober = logical_prober - self._visual_prober = visual_prober - - def is_final(self, c: int) -> bool: - return c in [ - self.FINAL_KAF, - self.FINAL_MEM, - self.FINAL_NUN, - self.FINAL_PE, - self.FINAL_TSADI, - ] - - def is_non_final(self, c: int) -> bool: - # The normal Tsadi is not a good Non-Final letter due to words like - # 'lechotet' (to chat) containing an apostrophe after the tsadi. This - # apostrophe is converted to a space in FilterWithoutEnglishLetters - # causing the Non-Final tsadi to appear at an end of a word even - # though this is not the case in the original text. - # The letters Pe and Kaf rarely display a related behavior of not being - # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' - # for example legally end with a Non-Final Pe or Kaf. However, the - # benefit of these letters as Non-Final letters outweighs the damage - # since these words are quite rare. - return c in [self.NORMAL_KAF, self.NORMAL_MEM, self.NORMAL_NUN, self.NORMAL_PE] - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - # Final letter analysis for logical-visual decision. - # Look for evidence that the received buffer is either logical Hebrew - # or visual Hebrew. - # The following cases are checked: - # 1) A word longer than 1 letter, ending with a final letter. This is - # an indication that the text is laid out "naturally" since the - # final letter really appears at the end. +1 for logical score. - # 2) A word longer than 1 letter, ending with a Non-Final letter. In - # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, - # should not end with the Non-Final form of that letter. Exceptions - # to this rule are mentioned above in isNonFinal(). This is an - # indication that the text is laid out backwards. +1 for visual - # score - # 3) A word longer than 1 letter, starting with a final letter. Final - # letters should not appear at the beginning of a word. This is an - # indication that the text is laid out backwards. +1 for visual - # score. - # - # The visual score and logical score are accumulated throughout the - # text and are finally checked against each other in GetCharSetName(). - # No checking for final letters in the middle of words is done since - # that case is not an indication for either Logical or Visual text. - # - # We automatically filter out all 7-bit characters (replace them with - # spaces) so the word boundary detection works properly. [MAP] - - if self.state == ProbingState.NOT_ME: - # Both model probers say it's not them. No reason to continue. - return ProbingState.NOT_ME - - byte_str = self.filter_high_byte_only(byte_str) - - for cur in byte_str: - if cur == self.SPACE: - # We stand on a space - a word just ended - if self._before_prev != self.SPACE: - # next-to-last char was not a space so self._prev is not a - # 1 letter word - if self.is_final(self._prev): - # case (1) [-2:not space][-1:final letter][cur:space] - self._final_char_logical_score += 1 - elif self.is_non_final(self._prev): - # case (2) [-2:not space][-1:Non-Final letter][ - # cur:space] - self._final_char_visual_score += 1 - else: - # Not standing on a space - if ( - (self._before_prev == self.SPACE) - and (self.is_final(self._prev)) - and (cur != self.SPACE) - ): - # case (3) [-2:space][-1:final letter][cur:not space] - self._final_char_visual_score += 1 - self._before_prev = self._prev - self._prev = cur - - # Forever detecting, till the end or until both model probers return - # ProbingState.NOT_ME (handled above) - return ProbingState.DETECTING - - @property - def charset_name(self) -> str: - assert self._logical_prober is not None - assert self._visual_prober is not None - - # Make the decision: is it Logical or Visual? - # If the final letter score distance is dominant enough, rely on it. - finalsub = self._final_char_logical_score - self._final_char_visual_score - if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # It's not dominant enough, try to rely on the model scores instead. - modelsub = ( - self._logical_prober.get_confidence() - self._visual_prober.get_confidence() - ) - if modelsub > self.MIN_MODEL_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if modelsub < -self.MIN_MODEL_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # Still no good, back to final letter distance, maybe it'll save the - # day. - if finalsub < 0.0: - return self.VISUAL_HEBREW_NAME - - # (finalsub > 0 - Logical) or (don't know what to do) default to - # Logical. - return self.LOGICAL_HEBREW_NAME - - @property - def language(self) -> str: - return "Hebrew" - - @property - def state(self) -> ProbingState: - assert self._logical_prober is not None - assert self._visual_prober is not None - - # Remain active as long as any of the model probers are active. - if (self._logical_prober.state == ProbingState.NOT_ME) and ( - self._visual_prober.state == ProbingState.NOT_ME - ): - return ProbingState.NOT_ME - return ProbingState.DETECTING diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py deleted file mode 100644 index 3293576..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py +++ /dev/null @@ -1,325 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology -# -# Japanese frequency table, applied to both S-JIS and EUC-JP -# They are sorted in order. - -# 128 --> 0.77094 -# 256 --> 0.85710 -# 512 --> 0.92635 -# 1024 --> 0.97130 -# 2048 --> 0.99431 -# -# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 -# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 -# -# Typical Distribution Ratio, 25% of IDR - -JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 - -# Char to FreqOrder table , -JIS_TABLE_SIZE = 4368 - -# fmt: off -JIS_CHAR_TO_FREQ_ORDER = ( - 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 -3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 -1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 -2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 -2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 -5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 -1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 -5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 -5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 -5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 -5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 -5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 -5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 -1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 -1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 -1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 -2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 -3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 -3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 - 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 - 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 -1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 - 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 -5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 - 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 - 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 - 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 - 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 - 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 -5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 -5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 -5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 -4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 -5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 -5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 -5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 -5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 -5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 -5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 -5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 -5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 -5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 -3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 -5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 -5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 -5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 -5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 -5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 -5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 -5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 -5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 -5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 -5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 -5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 -5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 -5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 -5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 -5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 -5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 -5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 -5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 -5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 -5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 -5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 -5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 -5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 -5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 -5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 -5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 -5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 -5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 -5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 -5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 -5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 -5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 -5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 -5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 -5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 -5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 -5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 -5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 -6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 -6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 -6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 -6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 -6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 -6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 -6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 -6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 -4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 - 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 - 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 -1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 -1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 - 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 -3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 -3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 - 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 -3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 -3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 - 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 -2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 - 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 -3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 -1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 - 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 -1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 - 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 -2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 -2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 -2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 -2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 -1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 -1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 -1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 -1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 -2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 -1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 -2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 -1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 -1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 -1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 -1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 -1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 -1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 - 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 - 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 -1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 -2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 -2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 -2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 -3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 -3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 - 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 -3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 -1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 - 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 -2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 -1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 - 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 -3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 -4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 -2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 -1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 -2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 -1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 - 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 - 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 -1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 -2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 -2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 -2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 -3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 -1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 -2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 - 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 - 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 - 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 -1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 -2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 - 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 -1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 -1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 - 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 -1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 -1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 -1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 - 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 -2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 - 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 -2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 -3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 -2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 -1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 -6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 -1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 -2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 -1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 - 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 - 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 -3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 -3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 -1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 -1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 -1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 -1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 - 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 - 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 -2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 - 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 -3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 -2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 - 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 -1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 -2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 - 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 -1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 - 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 -4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 -2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 -1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 - 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 -1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 -2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 - 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 -6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 -1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 -1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 -2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 -3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 - 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 -3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 -1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 - 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 -1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 - 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 -3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 - 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 -2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 - 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 -4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 -2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 -1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 -1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 -1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 - 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 -1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 -3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 -1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 -3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 - 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 - 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 - 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 -2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 -1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 - 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 -1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 - 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 -1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 - 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 - 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 - 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 -1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 -1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 -2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 -4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 - 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 -1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 - 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 -1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 -3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 -1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 -2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 -2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 -1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 -1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 -2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 - 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 -2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 -1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 -1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 -1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 -1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 -3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 -2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 -2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 - 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 -3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 -3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 -1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 -2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 -1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 -2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 -) -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py deleted file mode 100644 index c129699..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py +++ /dev/null @@ -1,2382 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# The frequency data itself is the same as euc-kr. -# This is just a mapping table to euc-kr. - -JOHAB_TO_EUCKR_ORDER_TABLE = { - 0x8861: 0, - 0x8862: 1, - 0x8865: 2, - 0x8868: 3, - 0x8869: 4, - 0x886A: 5, - 0x886B: 6, - 0x8871: 7, - 0x8873: 8, - 0x8874: 9, - 0x8875: 10, - 0x8876: 11, - 0x8877: 12, - 0x8878: 13, - 0x8879: 14, - 0x887B: 15, - 0x887C: 16, - 0x887D: 17, - 0x8881: 18, - 0x8882: 19, - 0x8885: 20, - 0x8889: 21, - 0x8891: 22, - 0x8893: 23, - 0x8895: 24, - 0x8896: 25, - 0x8897: 26, - 0x88A1: 27, - 0x88A2: 28, - 0x88A5: 29, - 0x88A9: 30, - 0x88B5: 31, - 0x88B7: 32, - 0x88C1: 33, - 0x88C5: 34, - 0x88C9: 35, - 0x88E1: 36, - 0x88E2: 37, - 0x88E5: 38, - 0x88E8: 39, - 0x88E9: 40, - 0x88EB: 41, - 0x88F1: 42, - 0x88F3: 43, - 0x88F5: 44, - 0x88F6: 45, - 0x88F7: 46, - 0x88F8: 47, - 0x88FB: 48, - 0x88FC: 49, - 0x88FD: 50, - 0x8941: 51, - 0x8945: 52, - 0x8949: 53, - 0x8951: 54, - 0x8953: 55, - 0x8955: 56, - 0x8956: 57, - 0x8957: 58, - 0x8961: 59, - 0x8962: 60, - 0x8963: 61, - 0x8965: 62, - 0x8968: 63, - 0x8969: 64, - 0x8971: 65, - 0x8973: 66, - 0x8975: 67, - 0x8976: 68, - 0x8977: 69, - 0x897B: 70, - 0x8981: 71, - 0x8985: 72, - 0x8989: 73, - 0x8993: 74, - 0x8995: 75, - 0x89A1: 76, - 0x89A2: 77, - 0x89A5: 78, - 0x89A8: 79, - 0x89A9: 80, - 0x89AB: 81, - 0x89AD: 82, - 0x89B0: 83, - 0x89B1: 84, - 0x89B3: 85, - 0x89B5: 86, - 0x89B7: 87, - 0x89B8: 88, - 0x89C1: 89, - 0x89C2: 90, - 0x89C5: 91, - 0x89C9: 92, - 0x89CB: 93, - 0x89D1: 94, - 0x89D3: 95, - 0x89D5: 96, - 0x89D7: 97, - 0x89E1: 98, - 0x89E5: 99, - 0x89E9: 100, - 0x89F3: 101, - 0x89F6: 102, - 0x89F7: 103, - 0x8A41: 104, - 0x8A42: 105, - 0x8A45: 106, - 0x8A49: 107, - 0x8A51: 108, - 0x8A53: 109, - 0x8A55: 110, - 0x8A57: 111, - 0x8A61: 112, - 0x8A65: 113, - 0x8A69: 114, - 0x8A73: 115, - 0x8A75: 116, - 0x8A81: 117, - 0x8A82: 118, - 0x8A85: 119, - 0x8A88: 120, - 0x8A89: 121, - 0x8A8A: 122, - 0x8A8B: 123, - 0x8A90: 124, - 0x8A91: 125, - 0x8A93: 126, - 0x8A95: 127, - 0x8A97: 128, - 0x8A98: 129, - 0x8AA1: 130, - 0x8AA2: 131, - 0x8AA5: 132, - 0x8AA9: 133, - 0x8AB6: 134, - 0x8AB7: 135, - 0x8AC1: 136, - 0x8AD5: 137, - 0x8AE1: 138, - 0x8AE2: 139, - 0x8AE5: 140, - 0x8AE9: 141, - 0x8AF1: 142, - 0x8AF3: 143, - 0x8AF5: 144, - 0x8B41: 145, - 0x8B45: 146, - 0x8B49: 147, - 0x8B61: 148, - 0x8B62: 149, - 0x8B65: 150, - 0x8B68: 151, - 0x8B69: 152, - 0x8B6A: 153, - 0x8B71: 154, - 0x8B73: 155, - 0x8B75: 156, - 0x8B77: 157, - 0x8B81: 158, - 0x8BA1: 159, - 0x8BA2: 160, - 0x8BA5: 161, - 0x8BA8: 162, - 0x8BA9: 163, - 0x8BAB: 164, - 0x8BB1: 165, - 0x8BB3: 166, - 0x8BB5: 167, - 0x8BB7: 168, - 0x8BB8: 169, - 0x8BBC: 170, - 0x8C61: 171, - 0x8C62: 172, - 0x8C63: 173, - 0x8C65: 174, - 0x8C69: 175, - 0x8C6B: 176, - 0x8C71: 177, - 0x8C73: 178, - 0x8C75: 179, - 0x8C76: 180, - 0x8C77: 181, - 0x8C7B: 182, - 0x8C81: 183, - 0x8C82: 184, - 0x8C85: 185, - 0x8C89: 186, - 0x8C91: 187, - 0x8C93: 188, - 0x8C95: 189, - 0x8C96: 190, - 0x8C97: 191, - 0x8CA1: 192, - 0x8CA2: 193, - 0x8CA9: 194, - 0x8CE1: 195, - 0x8CE2: 196, - 0x8CE3: 197, - 0x8CE5: 198, - 0x8CE9: 199, - 0x8CF1: 200, - 0x8CF3: 201, - 0x8CF5: 202, - 0x8CF6: 203, - 0x8CF7: 204, - 0x8D41: 205, - 0x8D42: 206, - 0x8D45: 207, - 0x8D51: 208, - 0x8D55: 209, - 0x8D57: 210, - 0x8D61: 211, - 0x8D65: 212, - 0x8D69: 213, - 0x8D75: 214, - 0x8D76: 215, - 0x8D7B: 216, - 0x8D81: 217, - 0x8DA1: 218, - 0x8DA2: 219, - 0x8DA5: 220, - 0x8DA7: 221, - 0x8DA9: 222, - 0x8DB1: 223, - 0x8DB3: 224, - 0x8DB5: 225, - 0x8DB7: 226, - 0x8DB8: 227, - 0x8DB9: 228, - 0x8DC1: 229, - 0x8DC2: 230, - 0x8DC9: 231, - 0x8DD6: 232, - 0x8DD7: 233, - 0x8DE1: 234, - 0x8DE2: 235, - 0x8DF7: 236, - 0x8E41: 237, - 0x8E45: 238, - 0x8E49: 239, - 0x8E51: 240, - 0x8E53: 241, - 0x8E57: 242, - 0x8E61: 243, - 0x8E81: 244, - 0x8E82: 245, - 0x8E85: 246, - 0x8E89: 247, - 0x8E90: 248, - 0x8E91: 249, - 0x8E93: 250, - 0x8E95: 251, - 0x8E97: 252, - 0x8E98: 253, - 0x8EA1: 254, - 0x8EA9: 255, - 0x8EB6: 256, - 0x8EB7: 257, - 0x8EC1: 258, - 0x8EC2: 259, - 0x8EC5: 260, - 0x8EC9: 261, - 0x8ED1: 262, - 0x8ED3: 263, - 0x8ED6: 264, - 0x8EE1: 265, - 0x8EE5: 266, - 0x8EE9: 267, - 0x8EF1: 268, - 0x8EF3: 269, - 0x8F41: 270, - 0x8F61: 271, - 0x8F62: 272, - 0x8F65: 273, - 0x8F67: 274, - 0x8F69: 275, - 0x8F6B: 276, - 0x8F70: 277, - 0x8F71: 278, - 0x8F73: 279, - 0x8F75: 280, - 0x8F77: 281, - 0x8F7B: 282, - 0x8FA1: 283, - 0x8FA2: 284, - 0x8FA5: 285, - 0x8FA9: 286, - 0x8FB1: 287, - 0x8FB3: 288, - 0x8FB5: 289, - 0x8FB7: 290, - 0x9061: 291, - 0x9062: 292, - 0x9063: 293, - 0x9065: 294, - 0x9068: 295, - 0x9069: 296, - 0x906A: 297, - 0x906B: 298, - 0x9071: 299, - 0x9073: 300, - 0x9075: 301, - 0x9076: 302, - 0x9077: 303, - 0x9078: 304, - 0x9079: 305, - 0x907B: 306, - 0x907D: 307, - 0x9081: 308, - 0x9082: 309, - 0x9085: 310, - 0x9089: 311, - 0x9091: 312, - 0x9093: 313, - 0x9095: 314, - 0x9096: 315, - 0x9097: 316, - 0x90A1: 317, - 0x90A2: 318, - 0x90A5: 319, - 0x90A9: 320, - 0x90B1: 321, - 0x90B7: 322, - 0x90E1: 323, - 0x90E2: 324, - 0x90E4: 325, - 0x90E5: 326, - 0x90E9: 327, - 0x90EB: 328, - 0x90EC: 329, - 0x90F1: 330, - 0x90F3: 331, - 0x90F5: 332, - 0x90F6: 333, - 0x90F7: 334, - 0x90FD: 335, - 0x9141: 336, - 0x9142: 337, - 0x9145: 338, - 0x9149: 339, - 0x9151: 340, - 0x9153: 341, - 0x9155: 342, - 0x9156: 343, - 0x9157: 344, - 0x9161: 345, - 0x9162: 346, - 0x9165: 347, - 0x9169: 348, - 0x9171: 349, - 0x9173: 350, - 0x9176: 351, - 0x9177: 352, - 0x917A: 353, - 0x9181: 354, - 0x9185: 355, - 0x91A1: 356, - 0x91A2: 357, - 0x91A5: 358, - 0x91A9: 359, - 0x91AB: 360, - 0x91B1: 361, - 0x91B3: 362, - 0x91B5: 363, - 0x91B7: 364, - 0x91BC: 365, - 0x91BD: 366, - 0x91C1: 367, - 0x91C5: 368, - 0x91C9: 369, - 0x91D6: 370, - 0x9241: 371, - 0x9245: 372, - 0x9249: 373, - 0x9251: 374, - 0x9253: 375, - 0x9255: 376, - 0x9261: 377, - 0x9262: 378, - 0x9265: 379, - 0x9269: 380, - 0x9273: 381, - 0x9275: 382, - 0x9277: 383, - 0x9281: 384, - 0x9282: 385, - 0x9285: 386, - 0x9288: 387, - 0x9289: 388, - 0x9291: 389, - 0x9293: 390, - 0x9295: 391, - 0x9297: 392, - 0x92A1: 393, - 0x92B6: 394, - 0x92C1: 395, - 0x92E1: 396, - 0x92E5: 397, - 0x92E9: 398, - 0x92F1: 399, - 0x92F3: 400, - 0x9341: 401, - 0x9342: 402, - 0x9349: 403, - 0x9351: 404, - 0x9353: 405, - 0x9357: 406, - 0x9361: 407, - 0x9362: 408, - 0x9365: 409, - 0x9369: 410, - 0x936A: 411, - 0x936B: 412, - 0x9371: 413, - 0x9373: 414, - 0x9375: 415, - 0x9377: 416, - 0x9378: 417, - 0x937C: 418, - 0x9381: 419, - 0x9385: 420, - 0x9389: 421, - 0x93A1: 422, - 0x93A2: 423, - 0x93A5: 424, - 0x93A9: 425, - 0x93AB: 426, - 0x93B1: 427, - 0x93B3: 428, - 0x93B5: 429, - 0x93B7: 430, - 0x93BC: 431, - 0x9461: 432, - 0x9462: 433, - 0x9463: 434, - 0x9465: 435, - 0x9468: 436, - 0x9469: 437, - 0x946A: 438, - 0x946B: 439, - 0x946C: 440, - 0x9470: 441, - 0x9471: 442, - 0x9473: 443, - 0x9475: 444, - 0x9476: 445, - 0x9477: 446, - 0x9478: 447, - 0x9479: 448, - 0x947D: 449, - 0x9481: 450, - 0x9482: 451, - 0x9485: 452, - 0x9489: 453, - 0x9491: 454, - 0x9493: 455, - 0x9495: 456, - 0x9496: 457, - 0x9497: 458, - 0x94A1: 459, - 0x94E1: 460, - 0x94E2: 461, - 0x94E3: 462, - 0x94E5: 463, - 0x94E8: 464, - 0x94E9: 465, - 0x94EB: 466, - 0x94EC: 467, - 0x94F1: 468, - 0x94F3: 469, - 0x94F5: 470, - 0x94F7: 471, - 0x94F9: 472, - 0x94FC: 473, - 0x9541: 474, - 0x9542: 475, - 0x9545: 476, - 0x9549: 477, - 0x9551: 478, - 0x9553: 479, - 0x9555: 480, - 0x9556: 481, - 0x9557: 482, - 0x9561: 483, - 0x9565: 484, - 0x9569: 485, - 0x9576: 486, - 0x9577: 487, - 0x9581: 488, - 0x9585: 489, - 0x95A1: 490, - 0x95A2: 491, - 0x95A5: 492, - 0x95A8: 493, - 0x95A9: 494, - 0x95AB: 495, - 0x95AD: 496, - 0x95B1: 497, - 0x95B3: 498, - 0x95B5: 499, - 0x95B7: 500, - 0x95B9: 501, - 0x95BB: 502, - 0x95C1: 503, - 0x95C5: 504, - 0x95C9: 505, - 0x95E1: 506, - 0x95F6: 507, - 0x9641: 508, - 0x9645: 509, - 0x9649: 510, - 0x9651: 511, - 0x9653: 512, - 0x9655: 513, - 0x9661: 514, - 0x9681: 515, - 0x9682: 516, - 0x9685: 517, - 0x9689: 518, - 0x9691: 519, - 0x9693: 520, - 0x9695: 521, - 0x9697: 522, - 0x96A1: 523, - 0x96B6: 524, - 0x96C1: 525, - 0x96D7: 526, - 0x96E1: 527, - 0x96E5: 528, - 0x96E9: 529, - 0x96F3: 530, - 0x96F5: 531, - 0x96F7: 532, - 0x9741: 533, - 0x9745: 534, - 0x9749: 535, - 0x9751: 536, - 0x9757: 537, - 0x9761: 538, - 0x9762: 539, - 0x9765: 540, - 0x9768: 541, - 0x9769: 542, - 0x976B: 543, - 0x9771: 544, - 0x9773: 545, - 0x9775: 546, - 0x9777: 547, - 0x9781: 548, - 0x97A1: 549, - 0x97A2: 550, - 0x97A5: 551, - 0x97A8: 552, - 0x97A9: 553, - 0x97B1: 554, - 0x97B3: 555, - 0x97B5: 556, - 0x97B6: 557, - 0x97B7: 558, - 0x97B8: 559, - 0x9861: 560, - 0x9862: 561, - 0x9865: 562, - 0x9869: 563, - 0x9871: 564, - 0x9873: 565, - 0x9875: 566, - 0x9876: 567, - 0x9877: 568, - 0x987D: 569, - 0x9881: 570, - 0x9882: 571, - 0x9885: 572, - 0x9889: 573, - 0x9891: 574, - 0x9893: 575, - 0x9895: 576, - 0x9896: 577, - 0x9897: 578, - 0x98E1: 579, - 0x98E2: 580, - 0x98E5: 581, - 0x98E9: 582, - 0x98EB: 583, - 0x98EC: 584, - 0x98F1: 585, - 0x98F3: 586, - 0x98F5: 587, - 0x98F6: 588, - 0x98F7: 589, - 0x98FD: 590, - 0x9941: 591, - 0x9942: 592, - 0x9945: 593, - 0x9949: 594, - 0x9951: 595, - 0x9953: 596, - 0x9955: 597, - 0x9956: 598, - 0x9957: 599, - 0x9961: 600, - 0x9976: 601, - 0x99A1: 602, - 0x99A2: 603, - 0x99A5: 604, - 0x99A9: 605, - 0x99B7: 606, - 0x99C1: 607, - 0x99C9: 608, - 0x99E1: 609, - 0x9A41: 610, - 0x9A45: 611, - 0x9A81: 612, - 0x9A82: 613, - 0x9A85: 614, - 0x9A89: 615, - 0x9A90: 616, - 0x9A91: 617, - 0x9A97: 618, - 0x9AC1: 619, - 0x9AE1: 620, - 0x9AE5: 621, - 0x9AE9: 622, - 0x9AF1: 623, - 0x9AF3: 624, - 0x9AF7: 625, - 0x9B61: 626, - 0x9B62: 627, - 0x9B65: 628, - 0x9B68: 629, - 0x9B69: 630, - 0x9B71: 631, - 0x9B73: 632, - 0x9B75: 633, - 0x9B81: 634, - 0x9B85: 635, - 0x9B89: 636, - 0x9B91: 637, - 0x9B93: 638, - 0x9BA1: 639, - 0x9BA5: 640, - 0x9BA9: 641, - 0x9BB1: 642, - 0x9BB3: 643, - 0x9BB5: 644, - 0x9BB7: 645, - 0x9C61: 646, - 0x9C62: 647, - 0x9C65: 648, - 0x9C69: 649, - 0x9C71: 650, - 0x9C73: 651, - 0x9C75: 652, - 0x9C76: 653, - 0x9C77: 654, - 0x9C78: 655, - 0x9C7C: 656, - 0x9C7D: 657, - 0x9C81: 658, - 0x9C82: 659, - 0x9C85: 660, - 0x9C89: 661, - 0x9C91: 662, - 0x9C93: 663, - 0x9C95: 664, - 0x9C96: 665, - 0x9C97: 666, - 0x9CA1: 667, - 0x9CA2: 668, - 0x9CA5: 669, - 0x9CB5: 670, - 0x9CB7: 671, - 0x9CE1: 672, - 0x9CE2: 673, - 0x9CE5: 674, - 0x9CE9: 675, - 0x9CF1: 676, - 0x9CF3: 677, - 0x9CF5: 678, - 0x9CF6: 679, - 0x9CF7: 680, - 0x9CFD: 681, - 0x9D41: 682, - 0x9D42: 683, - 0x9D45: 684, - 0x9D49: 685, - 0x9D51: 686, - 0x9D53: 687, - 0x9D55: 688, - 0x9D57: 689, - 0x9D61: 690, - 0x9D62: 691, - 0x9D65: 692, - 0x9D69: 693, - 0x9D71: 694, - 0x9D73: 695, - 0x9D75: 696, - 0x9D76: 697, - 0x9D77: 698, - 0x9D81: 699, - 0x9D85: 700, - 0x9D93: 701, - 0x9D95: 702, - 0x9DA1: 703, - 0x9DA2: 704, - 0x9DA5: 705, - 0x9DA9: 706, - 0x9DB1: 707, - 0x9DB3: 708, - 0x9DB5: 709, - 0x9DB7: 710, - 0x9DC1: 711, - 0x9DC5: 712, - 0x9DD7: 713, - 0x9DF6: 714, - 0x9E41: 715, - 0x9E45: 716, - 0x9E49: 717, - 0x9E51: 718, - 0x9E53: 719, - 0x9E55: 720, - 0x9E57: 721, - 0x9E61: 722, - 0x9E65: 723, - 0x9E69: 724, - 0x9E73: 725, - 0x9E75: 726, - 0x9E77: 727, - 0x9E81: 728, - 0x9E82: 729, - 0x9E85: 730, - 0x9E89: 731, - 0x9E91: 732, - 0x9E93: 733, - 0x9E95: 734, - 0x9E97: 735, - 0x9EA1: 736, - 0x9EB6: 737, - 0x9EC1: 738, - 0x9EE1: 739, - 0x9EE2: 740, - 0x9EE5: 741, - 0x9EE9: 742, - 0x9EF1: 743, - 0x9EF5: 744, - 0x9EF7: 745, - 0x9F41: 746, - 0x9F42: 747, - 0x9F45: 748, - 0x9F49: 749, - 0x9F51: 750, - 0x9F53: 751, - 0x9F55: 752, - 0x9F57: 753, - 0x9F61: 754, - 0x9F62: 755, - 0x9F65: 756, - 0x9F69: 757, - 0x9F71: 758, - 0x9F73: 759, - 0x9F75: 760, - 0x9F77: 761, - 0x9F78: 762, - 0x9F7B: 763, - 0x9F7C: 764, - 0x9FA1: 765, - 0x9FA2: 766, - 0x9FA5: 767, - 0x9FA9: 768, - 0x9FB1: 769, - 0x9FB3: 770, - 0x9FB5: 771, - 0x9FB7: 772, - 0xA061: 773, - 0xA062: 774, - 0xA065: 775, - 0xA067: 776, - 0xA068: 777, - 0xA069: 778, - 0xA06A: 779, - 0xA06B: 780, - 0xA071: 781, - 0xA073: 782, - 0xA075: 783, - 0xA077: 784, - 0xA078: 785, - 0xA07B: 786, - 0xA07D: 787, - 0xA081: 788, - 0xA082: 789, - 0xA085: 790, - 0xA089: 791, - 0xA091: 792, - 0xA093: 793, - 0xA095: 794, - 0xA096: 795, - 0xA097: 796, - 0xA098: 797, - 0xA0A1: 798, - 0xA0A2: 799, - 0xA0A9: 800, - 0xA0B7: 801, - 0xA0E1: 802, - 0xA0E2: 803, - 0xA0E5: 804, - 0xA0E9: 805, - 0xA0EB: 806, - 0xA0F1: 807, - 0xA0F3: 808, - 0xA0F5: 809, - 0xA0F7: 810, - 0xA0F8: 811, - 0xA0FD: 812, - 0xA141: 813, - 0xA142: 814, - 0xA145: 815, - 0xA149: 816, - 0xA151: 817, - 0xA153: 818, - 0xA155: 819, - 0xA156: 820, - 0xA157: 821, - 0xA161: 822, - 0xA162: 823, - 0xA165: 824, - 0xA169: 825, - 0xA175: 826, - 0xA176: 827, - 0xA177: 828, - 0xA179: 829, - 0xA181: 830, - 0xA1A1: 831, - 0xA1A2: 832, - 0xA1A4: 833, - 0xA1A5: 834, - 0xA1A9: 835, - 0xA1AB: 836, - 0xA1B1: 837, - 0xA1B3: 838, - 0xA1B5: 839, - 0xA1B7: 840, - 0xA1C1: 841, - 0xA1C5: 842, - 0xA1D6: 843, - 0xA1D7: 844, - 0xA241: 845, - 0xA245: 846, - 0xA249: 847, - 0xA253: 848, - 0xA255: 849, - 0xA257: 850, - 0xA261: 851, - 0xA265: 852, - 0xA269: 853, - 0xA273: 854, - 0xA275: 855, - 0xA281: 856, - 0xA282: 857, - 0xA283: 858, - 0xA285: 859, - 0xA288: 860, - 0xA289: 861, - 0xA28A: 862, - 0xA28B: 863, - 0xA291: 864, - 0xA293: 865, - 0xA295: 866, - 0xA297: 867, - 0xA29B: 868, - 0xA29D: 869, - 0xA2A1: 870, - 0xA2A5: 871, - 0xA2A9: 872, - 0xA2B3: 873, - 0xA2B5: 874, - 0xA2C1: 875, - 0xA2E1: 876, - 0xA2E5: 877, - 0xA2E9: 878, - 0xA341: 879, - 0xA345: 880, - 0xA349: 881, - 0xA351: 882, - 0xA355: 883, - 0xA361: 884, - 0xA365: 885, - 0xA369: 886, - 0xA371: 887, - 0xA375: 888, - 0xA3A1: 889, - 0xA3A2: 890, - 0xA3A5: 891, - 0xA3A8: 892, - 0xA3A9: 893, - 0xA3AB: 894, - 0xA3B1: 895, - 0xA3B3: 896, - 0xA3B5: 897, - 0xA3B6: 898, - 0xA3B7: 899, - 0xA3B9: 900, - 0xA3BB: 901, - 0xA461: 902, - 0xA462: 903, - 0xA463: 904, - 0xA464: 905, - 0xA465: 906, - 0xA468: 907, - 0xA469: 908, - 0xA46A: 909, - 0xA46B: 910, - 0xA46C: 911, - 0xA471: 912, - 0xA473: 913, - 0xA475: 914, - 0xA477: 915, - 0xA47B: 916, - 0xA481: 917, - 0xA482: 918, - 0xA485: 919, - 0xA489: 920, - 0xA491: 921, - 0xA493: 922, - 0xA495: 923, - 0xA496: 924, - 0xA497: 925, - 0xA49B: 926, - 0xA4A1: 927, - 0xA4A2: 928, - 0xA4A5: 929, - 0xA4B3: 930, - 0xA4E1: 931, - 0xA4E2: 932, - 0xA4E5: 933, - 0xA4E8: 934, - 0xA4E9: 935, - 0xA4EB: 936, - 0xA4F1: 937, - 0xA4F3: 938, - 0xA4F5: 939, - 0xA4F7: 940, - 0xA4F8: 941, - 0xA541: 942, - 0xA542: 943, - 0xA545: 944, - 0xA548: 945, - 0xA549: 946, - 0xA551: 947, - 0xA553: 948, - 0xA555: 949, - 0xA556: 950, - 0xA557: 951, - 0xA561: 952, - 0xA562: 953, - 0xA565: 954, - 0xA569: 955, - 0xA573: 956, - 0xA575: 957, - 0xA576: 958, - 0xA577: 959, - 0xA57B: 960, - 0xA581: 961, - 0xA585: 962, - 0xA5A1: 963, - 0xA5A2: 964, - 0xA5A3: 965, - 0xA5A5: 966, - 0xA5A9: 967, - 0xA5B1: 968, - 0xA5B3: 969, - 0xA5B5: 970, - 0xA5B7: 971, - 0xA5C1: 972, - 0xA5C5: 973, - 0xA5D6: 974, - 0xA5E1: 975, - 0xA5F6: 976, - 0xA641: 977, - 0xA642: 978, - 0xA645: 979, - 0xA649: 980, - 0xA651: 981, - 0xA653: 982, - 0xA661: 983, - 0xA665: 984, - 0xA681: 985, - 0xA682: 986, - 0xA685: 987, - 0xA688: 988, - 0xA689: 989, - 0xA68A: 990, - 0xA68B: 991, - 0xA691: 992, - 0xA693: 993, - 0xA695: 994, - 0xA697: 995, - 0xA69B: 996, - 0xA69C: 997, - 0xA6A1: 998, - 0xA6A9: 999, - 0xA6B6: 1000, - 0xA6C1: 1001, - 0xA6E1: 1002, - 0xA6E2: 1003, - 0xA6E5: 1004, - 0xA6E9: 1005, - 0xA6F7: 1006, - 0xA741: 1007, - 0xA745: 1008, - 0xA749: 1009, - 0xA751: 1010, - 0xA755: 1011, - 0xA757: 1012, - 0xA761: 1013, - 0xA762: 1014, - 0xA765: 1015, - 0xA769: 1016, - 0xA771: 1017, - 0xA773: 1018, - 0xA775: 1019, - 0xA7A1: 1020, - 0xA7A2: 1021, - 0xA7A5: 1022, - 0xA7A9: 1023, - 0xA7AB: 1024, - 0xA7B1: 1025, - 0xA7B3: 1026, - 0xA7B5: 1027, - 0xA7B7: 1028, - 0xA7B8: 1029, - 0xA7B9: 1030, - 0xA861: 1031, - 0xA862: 1032, - 0xA865: 1033, - 0xA869: 1034, - 0xA86B: 1035, - 0xA871: 1036, - 0xA873: 1037, - 0xA875: 1038, - 0xA876: 1039, - 0xA877: 1040, - 0xA87D: 1041, - 0xA881: 1042, - 0xA882: 1043, - 0xA885: 1044, - 0xA889: 1045, - 0xA891: 1046, - 0xA893: 1047, - 0xA895: 1048, - 0xA896: 1049, - 0xA897: 1050, - 0xA8A1: 1051, - 0xA8A2: 1052, - 0xA8B1: 1053, - 0xA8E1: 1054, - 0xA8E2: 1055, - 0xA8E5: 1056, - 0xA8E8: 1057, - 0xA8E9: 1058, - 0xA8F1: 1059, - 0xA8F5: 1060, - 0xA8F6: 1061, - 0xA8F7: 1062, - 0xA941: 1063, - 0xA957: 1064, - 0xA961: 1065, - 0xA962: 1066, - 0xA971: 1067, - 0xA973: 1068, - 0xA975: 1069, - 0xA976: 1070, - 0xA977: 1071, - 0xA9A1: 1072, - 0xA9A2: 1073, - 0xA9A5: 1074, - 0xA9A9: 1075, - 0xA9B1: 1076, - 0xA9B3: 1077, - 0xA9B7: 1078, - 0xAA41: 1079, - 0xAA61: 1080, - 0xAA77: 1081, - 0xAA81: 1082, - 0xAA82: 1083, - 0xAA85: 1084, - 0xAA89: 1085, - 0xAA91: 1086, - 0xAA95: 1087, - 0xAA97: 1088, - 0xAB41: 1089, - 0xAB57: 1090, - 0xAB61: 1091, - 0xAB65: 1092, - 0xAB69: 1093, - 0xAB71: 1094, - 0xAB73: 1095, - 0xABA1: 1096, - 0xABA2: 1097, - 0xABA5: 1098, - 0xABA9: 1099, - 0xABB1: 1100, - 0xABB3: 1101, - 0xABB5: 1102, - 0xABB7: 1103, - 0xAC61: 1104, - 0xAC62: 1105, - 0xAC64: 1106, - 0xAC65: 1107, - 0xAC68: 1108, - 0xAC69: 1109, - 0xAC6A: 1110, - 0xAC6B: 1111, - 0xAC71: 1112, - 0xAC73: 1113, - 0xAC75: 1114, - 0xAC76: 1115, - 0xAC77: 1116, - 0xAC7B: 1117, - 0xAC81: 1118, - 0xAC82: 1119, - 0xAC85: 1120, - 0xAC89: 1121, - 0xAC91: 1122, - 0xAC93: 1123, - 0xAC95: 1124, - 0xAC96: 1125, - 0xAC97: 1126, - 0xACA1: 1127, - 0xACA2: 1128, - 0xACA5: 1129, - 0xACA9: 1130, - 0xACB1: 1131, - 0xACB3: 1132, - 0xACB5: 1133, - 0xACB7: 1134, - 0xACC1: 1135, - 0xACC5: 1136, - 0xACC9: 1137, - 0xACD1: 1138, - 0xACD7: 1139, - 0xACE1: 1140, - 0xACE2: 1141, - 0xACE3: 1142, - 0xACE4: 1143, - 0xACE5: 1144, - 0xACE8: 1145, - 0xACE9: 1146, - 0xACEB: 1147, - 0xACEC: 1148, - 0xACF1: 1149, - 0xACF3: 1150, - 0xACF5: 1151, - 0xACF6: 1152, - 0xACF7: 1153, - 0xACFC: 1154, - 0xAD41: 1155, - 0xAD42: 1156, - 0xAD45: 1157, - 0xAD49: 1158, - 0xAD51: 1159, - 0xAD53: 1160, - 0xAD55: 1161, - 0xAD56: 1162, - 0xAD57: 1163, - 0xAD61: 1164, - 0xAD62: 1165, - 0xAD65: 1166, - 0xAD69: 1167, - 0xAD71: 1168, - 0xAD73: 1169, - 0xAD75: 1170, - 0xAD76: 1171, - 0xAD77: 1172, - 0xAD81: 1173, - 0xAD85: 1174, - 0xAD89: 1175, - 0xAD97: 1176, - 0xADA1: 1177, - 0xADA2: 1178, - 0xADA3: 1179, - 0xADA5: 1180, - 0xADA9: 1181, - 0xADAB: 1182, - 0xADB1: 1183, - 0xADB3: 1184, - 0xADB5: 1185, - 0xADB7: 1186, - 0xADBB: 1187, - 0xADC1: 1188, - 0xADC2: 1189, - 0xADC5: 1190, - 0xADC9: 1191, - 0xADD7: 1192, - 0xADE1: 1193, - 0xADE5: 1194, - 0xADE9: 1195, - 0xADF1: 1196, - 0xADF5: 1197, - 0xADF6: 1198, - 0xAE41: 1199, - 0xAE45: 1200, - 0xAE49: 1201, - 0xAE51: 1202, - 0xAE53: 1203, - 0xAE55: 1204, - 0xAE61: 1205, - 0xAE62: 1206, - 0xAE65: 1207, - 0xAE69: 1208, - 0xAE71: 1209, - 0xAE73: 1210, - 0xAE75: 1211, - 0xAE77: 1212, - 0xAE81: 1213, - 0xAE82: 1214, - 0xAE85: 1215, - 0xAE88: 1216, - 0xAE89: 1217, - 0xAE91: 1218, - 0xAE93: 1219, - 0xAE95: 1220, - 0xAE97: 1221, - 0xAE99: 1222, - 0xAE9B: 1223, - 0xAE9C: 1224, - 0xAEA1: 1225, - 0xAEB6: 1226, - 0xAEC1: 1227, - 0xAEC2: 1228, - 0xAEC5: 1229, - 0xAEC9: 1230, - 0xAED1: 1231, - 0xAED7: 1232, - 0xAEE1: 1233, - 0xAEE2: 1234, - 0xAEE5: 1235, - 0xAEE9: 1236, - 0xAEF1: 1237, - 0xAEF3: 1238, - 0xAEF5: 1239, - 0xAEF7: 1240, - 0xAF41: 1241, - 0xAF42: 1242, - 0xAF49: 1243, - 0xAF51: 1244, - 0xAF55: 1245, - 0xAF57: 1246, - 0xAF61: 1247, - 0xAF62: 1248, - 0xAF65: 1249, - 0xAF69: 1250, - 0xAF6A: 1251, - 0xAF71: 1252, - 0xAF73: 1253, - 0xAF75: 1254, - 0xAF77: 1255, - 0xAFA1: 1256, - 0xAFA2: 1257, - 0xAFA5: 1258, - 0xAFA8: 1259, - 0xAFA9: 1260, - 0xAFB0: 1261, - 0xAFB1: 1262, - 0xAFB3: 1263, - 0xAFB5: 1264, - 0xAFB7: 1265, - 0xAFBC: 1266, - 0xB061: 1267, - 0xB062: 1268, - 0xB064: 1269, - 0xB065: 1270, - 0xB069: 1271, - 0xB071: 1272, - 0xB073: 1273, - 0xB076: 1274, - 0xB077: 1275, - 0xB07D: 1276, - 0xB081: 1277, - 0xB082: 1278, - 0xB085: 1279, - 0xB089: 1280, - 0xB091: 1281, - 0xB093: 1282, - 0xB096: 1283, - 0xB097: 1284, - 0xB0B7: 1285, - 0xB0E1: 1286, - 0xB0E2: 1287, - 0xB0E5: 1288, - 0xB0E9: 1289, - 0xB0EB: 1290, - 0xB0F1: 1291, - 0xB0F3: 1292, - 0xB0F6: 1293, - 0xB0F7: 1294, - 0xB141: 1295, - 0xB145: 1296, - 0xB149: 1297, - 0xB185: 1298, - 0xB1A1: 1299, - 0xB1A2: 1300, - 0xB1A5: 1301, - 0xB1A8: 1302, - 0xB1A9: 1303, - 0xB1AB: 1304, - 0xB1B1: 1305, - 0xB1B3: 1306, - 0xB1B7: 1307, - 0xB1C1: 1308, - 0xB1C2: 1309, - 0xB1C5: 1310, - 0xB1D6: 1311, - 0xB1E1: 1312, - 0xB1F6: 1313, - 0xB241: 1314, - 0xB245: 1315, - 0xB249: 1316, - 0xB251: 1317, - 0xB253: 1318, - 0xB261: 1319, - 0xB281: 1320, - 0xB282: 1321, - 0xB285: 1322, - 0xB289: 1323, - 0xB291: 1324, - 0xB293: 1325, - 0xB297: 1326, - 0xB2A1: 1327, - 0xB2B6: 1328, - 0xB2C1: 1329, - 0xB2E1: 1330, - 0xB2E5: 1331, - 0xB357: 1332, - 0xB361: 1333, - 0xB362: 1334, - 0xB365: 1335, - 0xB369: 1336, - 0xB36B: 1337, - 0xB370: 1338, - 0xB371: 1339, - 0xB373: 1340, - 0xB381: 1341, - 0xB385: 1342, - 0xB389: 1343, - 0xB391: 1344, - 0xB3A1: 1345, - 0xB3A2: 1346, - 0xB3A5: 1347, - 0xB3A9: 1348, - 0xB3B1: 1349, - 0xB3B3: 1350, - 0xB3B5: 1351, - 0xB3B7: 1352, - 0xB461: 1353, - 0xB462: 1354, - 0xB465: 1355, - 0xB466: 1356, - 0xB467: 1357, - 0xB469: 1358, - 0xB46A: 1359, - 0xB46B: 1360, - 0xB470: 1361, - 0xB471: 1362, - 0xB473: 1363, - 0xB475: 1364, - 0xB476: 1365, - 0xB477: 1366, - 0xB47B: 1367, - 0xB47C: 1368, - 0xB481: 1369, - 0xB482: 1370, - 0xB485: 1371, - 0xB489: 1372, - 0xB491: 1373, - 0xB493: 1374, - 0xB495: 1375, - 0xB496: 1376, - 0xB497: 1377, - 0xB4A1: 1378, - 0xB4A2: 1379, - 0xB4A5: 1380, - 0xB4A9: 1381, - 0xB4AC: 1382, - 0xB4B1: 1383, - 0xB4B3: 1384, - 0xB4B5: 1385, - 0xB4B7: 1386, - 0xB4BB: 1387, - 0xB4BD: 1388, - 0xB4C1: 1389, - 0xB4C5: 1390, - 0xB4C9: 1391, - 0xB4D3: 1392, - 0xB4E1: 1393, - 0xB4E2: 1394, - 0xB4E5: 1395, - 0xB4E6: 1396, - 0xB4E8: 1397, - 0xB4E9: 1398, - 0xB4EA: 1399, - 0xB4EB: 1400, - 0xB4F1: 1401, - 0xB4F3: 1402, - 0xB4F4: 1403, - 0xB4F5: 1404, - 0xB4F6: 1405, - 0xB4F7: 1406, - 0xB4F8: 1407, - 0xB4FA: 1408, - 0xB4FC: 1409, - 0xB541: 1410, - 0xB542: 1411, - 0xB545: 1412, - 0xB549: 1413, - 0xB551: 1414, - 0xB553: 1415, - 0xB555: 1416, - 0xB557: 1417, - 0xB561: 1418, - 0xB562: 1419, - 0xB563: 1420, - 0xB565: 1421, - 0xB569: 1422, - 0xB56B: 1423, - 0xB56C: 1424, - 0xB571: 1425, - 0xB573: 1426, - 0xB574: 1427, - 0xB575: 1428, - 0xB576: 1429, - 0xB577: 1430, - 0xB57B: 1431, - 0xB57C: 1432, - 0xB57D: 1433, - 0xB581: 1434, - 0xB585: 1435, - 0xB589: 1436, - 0xB591: 1437, - 0xB593: 1438, - 0xB595: 1439, - 0xB596: 1440, - 0xB5A1: 1441, - 0xB5A2: 1442, - 0xB5A5: 1443, - 0xB5A9: 1444, - 0xB5AA: 1445, - 0xB5AB: 1446, - 0xB5AD: 1447, - 0xB5B0: 1448, - 0xB5B1: 1449, - 0xB5B3: 1450, - 0xB5B5: 1451, - 0xB5B7: 1452, - 0xB5B9: 1453, - 0xB5C1: 1454, - 0xB5C2: 1455, - 0xB5C5: 1456, - 0xB5C9: 1457, - 0xB5D1: 1458, - 0xB5D3: 1459, - 0xB5D5: 1460, - 0xB5D6: 1461, - 0xB5D7: 1462, - 0xB5E1: 1463, - 0xB5E2: 1464, - 0xB5E5: 1465, - 0xB5F1: 1466, - 0xB5F5: 1467, - 0xB5F7: 1468, - 0xB641: 1469, - 0xB642: 1470, - 0xB645: 1471, - 0xB649: 1472, - 0xB651: 1473, - 0xB653: 1474, - 0xB655: 1475, - 0xB657: 1476, - 0xB661: 1477, - 0xB662: 1478, - 0xB665: 1479, - 0xB669: 1480, - 0xB671: 1481, - 0xB673: 1482, - 0xB675: 1483, - 0xB677: 1484, - 0xB681: 1485, - 0xB682: 1486, - 0xB685: 1487, - 0xB689: 1488, - 0xB68A: 1489, - 0xB68B: 1490, - 0xB691: 1491, - 0xB693: 1492, - 0xB695: 1493, - 0xB697: 1494, - 0xB6A1: 1495, - 0xB6A2: 1496, - 0xB6A5: 1497, - 0xB6A9: 1498, - 0xB6B1: 1499, - 0xB6B3: 1500, - 0xB6B6: 1501, - 0xB6B7: 1502, - 0xB6C1: 1503, - 0xB6C2: 1504, - 0xB6C5: 1505, - 0xB6C9: 1506, - 0xB6D1: 1507, - 0xB6D3: 1508, - 0xB6D7: 1509, - 0xB6E1: 1510, - 0xB6E2: 1511, - 0xB6E5: 1512, - 0xB6E9: 1513, - 0xB6F1: 1514, - 0xB6F3: 1515, - 0xB6F5: 1516, - 0xB6F7: 1517, - 0xB741: 1518, - 0xB742: 1519, - 0xB745: 1520, - 0xB749: 1521, - 0xB751: 1522, - 0xB753: 1523, - 0xB755: 1524, - 0xB757: 1525, - 0xB759: 1526, - 0xB761: 1527, - 0xB762: 1528, - 0xB765: 1529, - 0xB769: 1530, - 0xB76F: 1531, - 0xB771: 1532, - 0xB773: 1533, - 0xB775: 1534, - 0xB777: 1535, - 0xB778: 1536, - 0xB779: 1537, - 0xB77A: 1538, - 0xB77B: 1539, - 0xB77C: 1540, - 0xB77D: 1541, - 0xB781: 1542, - 0xB785: 1543, - 0xB789: 1544, - 0xB791: 1545, - 0xB795: 1546, - 0xB7A1: 1547, - 0xB7A2: 1548, - 0xB7A5: 1549, - 0xB7A9: 1550, - 0xB7AA: 1551, - 0xB7AB: 1552, - 0xB7B0: 1553, - 0xB7B1: 1554, - 0xB7B3: 1555, - 0xB7B5: 1556, - 0xB7B6: 1557, - 0xB7B7: 1558, - 0xB7B8: 1559, - 0xB7BC: 1560, - 0xB861: 1561, - 0xB862: 1562, - 0xB865: 1563, - 0xB867: 1564, - 0xB868: 1565, - 0xB869: 1566, - 0xB86B: 1567, - 0xB871: 1568, - 0xB873: 1569, - 0xB875: 1570, - 0xB876: 1571, - 0xB877: 1572, - 0xB878: 1573, - 0xB881: 1574, - 0xB882: 1575, - 0xB885: 1576, - 0xB889: 1577, - 0xB891: 1578, - 0xB893: 1579, - 0xB895: 1580, - 0xB896: 1581, - 0xB897: 1582, - 0xB8A1: 1583, - 0xB8A2: 1584, - 0xB8A5: 1585, - 0xB8A7: 1586, - 0xB8A9: 1587, - 0xB8B1: 1588, - 0xB8B7: 1589, - 0xB8C1: 1590, - 0xB8C5: 1591, - 0xB8C9: 1592, - 0xB8E1: 1593, - 0xB8E2: 1594, - 0xB8E5: 1595, - 0xB8E9: 1596, - 0xB8EB: 1597, - 0xB8F1: 1598, - 0xB8F3: 1599, - 0xB8F5: 1600, - 0xB8F7: 1601, - 0xB8F8: 1602, - 0xB941: 1603, - 0xB942: 1604, - 0xB945: 1605, - 0xB949: 1606, - 0xB951: 1607, - 0xB953: 1608, - 0xB955: 1609, - 0xB957: 1610, - 0xB961: 1611, - 0xB965: 1612, - 0xB969: 1613, - 0xB971: 1614, - 0xB973: 1615, - 0xB976: 1616, - 0xB977: 1617, - 0xB981: 1618, - 0xB9A1: 1619, - 0xB9A2: 1620, - 0xB9A5: 1621, - 0xB9A9: 1622, - 0xB9AB: 1623, - 0xB9B1: 1624, - 0xB9B3: 1625, - 0xB9B5: 1626, - 0xB9B7: 1627, - 0xB9B8: 1628, - 0xB9B9: 1629, - 0xB9BD: 1630, - 0xB9C1: 1631, - 0xB9C2: 1632, - 0xB9C9: 1633, - 0xB9D3: 1634, - 0xB9D5: 1635, - 0xB9D7: 1636, - 0xB9E1: 1637, - 0xB9F6: 1638, - 0xB9F7: 1639, - 0xBA41: 1640, - 0xBA45: 1641, - 0xBA49: 1642, - 0xBA51: 1643, - 0xBA53: 1644, - 0xBA55: 1645, - 0xBA57: 1646, - 0xBA61: 1647, - 0xBA62: 1648, - 0xBA65: 1649, - 0xBA77: 1650, - 0xBA81: 1651, - 0xBA82: 1652, - 0xBA85: 1653, - 0xBA89: 1654, - 0xBA8A: 1655, - 0xBA8B: 1656, - 0xBA91: 1657, - 0xBA93: 1658, - 0xBA95: 1659, - 0xBA97: 1660, - 0xBAA1: 1661, - 0xBAB6: 1662, - 0xBAC1: 1663, - 0xBAE1: 1664, - 0xBAE2: 1665, - 0xBAE5: 1666, - 0xBAE9: 1667, - 0xBAF1: 1668, - 0xBAF3: 1669, - 0xBAF5: 1670, - 0xBB41: 1671, - 0xBB45: 1672, - 0xBB49: 1673, - 0xBB51: 1674, - 0xBB61: 1675, - 0xBB62: 1676, - 0xBB65: 1677, - 0xBB69: 1678, - 0xBB71: 1679, - 0xBB73: 1680, - 0xBB75: 1681, - 0xBB77: 1682, - 0xBBA1: 1683, - 0xBBA2: 1684, - 0xBBA5: 1685, - 0xBBA8: 1686, - 0xBBA9: 1687, - 0xBBAB: 1688, - 0xBBB1: 1689, - 0xBBB3: 1690, - 0xBBB5: 1691, - 0xBBB7: 1692, - 0xBBB8: 1693, - 0xBBBB: 1694, - 0xBBBC: 1695, - 0xBC61: 1696, - 0xBC62: 1697, - 0xBC65: 1698, - 0xBC67: 1699, - 0xBC69: 1700, - 0xBC6C: 1701, - 0xBC71: 1702, - 0xBC73: 1703, - 0xBC75: 1704, - 0xBC76: 1705, - 0xBC77: 1706, - 0xBC81: 1707, - 0xBC82: 1708, - 0xBC85: 1709, - 0xBC89: 1710, - 0xBC91: 1711, - 0xBC93: 1712, - 0xBC95: 1713, - 0xBC96: 1714, - 0xBC97: 1715, - 0xBCA1: 1716, - 0xBCA5: 1717, - 0xBCB7: 1718, - 0xBCE1: 1719, - 0xBCE2: 1720, - 0xBCE5: 1721, - 0xBCE9: 1722, - 0xBCF1: 1723, - 0xBCF3: 1724, - 0xBCF5: 1725, - 0xBCF6: 1726, - 0xBCF7: 1727, - 0xBD41: 1728, - 0xBD57: 1729, - 0xBD61: 1730, - 0xBD76: 1731, - 0xBDA1: 1732, - 0xBDA2: 1733, - 0xBDA5: 1734, - 0xBDA9: 1735, - 0xBDB1: 1736, - 0xBDB3: 1737, - 0xBDB5: 1738, - 0xBDB7: 1739, - 0xBDB9: 1740, - 0xBDC1: 1741, - 0xBDC2: 1742, - 0xBDC9: 1743, - 0xBDD6: 1744, - 0xBDE1: 1745, - 0xBDF6: 1746, - 0xBE41: 1747, - 0xBE45: 1748, - 0xBE49: 1749, - 0xBE51: 1750, - 0xBE53: 1751, - 0xBE77: 1752, - 0xBE81: 1753, - 0xBE82: 1754, - 0xBE85: 1755, - 0xBE89: 1756, - 0xBE91: 1757, - 0xBE93: 1758, - 0xBE97: 1759, - 0xBEA1: 1760, - 0xBEB6: 1761, - 0xBEB7: 1762, - 0xBEE1: 1763, - 0xBF41: 1764, - 0xBF61: 1765, - 0xBF71: 1766, - 0xBF75: 1767, - 0xBF77: 1768, - 0xBFA1: 1769, - 0xBFA2: 1770, - 0xBFA5: 1771, - 0xBFA9: 1772, - 0xBFB1: 1773, - 0xBFB3: 1774, - 0xBFB7: 1775, - 0xBFB8: 1776, - 0xBFBD: 1777, - 0xC061: 1778, - 0xC062: 1779, - 0xC065: 1780, - 0xC067: 1781, - 0xC069: 1782, - 0xC071: 1783, - 0xC073: 1784, - 0xC075: 1785, - 0xC076: 1786, - 0xC077: 1787, - 0xC078: 1788, - 0xC081: 1789, - 0xC082: 1790, - 0xC085: 1791, - 0xC089: 1792, - 0xC091: 1793, - 0xC093: 1794, - 0xC095: 1795, - 0xC096: 1796, - 0xC097: 1797, - 0xC0A1: 1798, - 0xC0A5: 1799, - 0xC0A7: 1800, - 0xC0A9: 1801, - 0xC0B1: 1802, - 0xC0B7: 1803, - 0xC0E1: 1804, - 0xC0E2: 1805, - 0xC0E5: 1806, - 0xC0E9: 1807, - 0xC0F1: 1808, - 0xC0F3: 1809, - 0xC0F5: 1810, - 0xC0F6: 1811, - 0xC0F7: 1812, - 0xC141: 1813, - 0xC142: 1814, - 0xC145: 1815, - 0xC149: 1816, - 0xC151: 1817, - 0xC153: 1818, - 0xC155: 1819, - 0xC157: 1820, - 0xC161: 1821, - 0xC165: 1822, - 0xC176: 1823, - 0xC181: 1824, - 0xC185: 1825, - 0xC197: 1826, - 0xC1A1: 1827, - 0xC1A2: 1828, - 0xC1A5: 1829, - 0xC1A9: 1830, - 0xC1B1: 1831, - 0xC1B3: 1832, - 0xC1B5: 1833, - 0xC1B7: 1834, - 0xC1C1: 1835, - 0xC1C5: 1836, - 0xC1C9: 1837, - 0xC1D7: 1838, - 0xC241: 1839, - 0xC245: 1840, - 0xC249: 1841, - 0xC251: 1842, - 0xC253: 1843, - 0xC255: 1844, - 0xC257: 1845, - 0xC261: 1846, - 0xC271: 1847, - 0xC281: 1848, - 0xC282: 1849, - 0xC285: 1850, - 0xC289: 1851, - 0xC291: 1852, - 0xC293: 1853, - 0xC295: 1854, - 0xC297: 1855, - 0xC2A1: 1856, - 0xC2B6: 1857, - 0xC2C1: 1858, - 0xC2C5: 1859, - 0xC2E1: 1860, - 0xC2E5: 1861, - 0xC2E9: 1862, - 0xC2F1: 1863, - 0xC2F3: 1864, - 0xC2F5: 1865, - 0xC2F7: 1866, - 0xC341: 1867, - 0xC345: 1868, - 0xC349: 1869, - 0xC351: 1870, - 0xC357: 1871, - 0xC361: 1872, - 0xC362: 1873, - 0xC365: 1874, - 0xC369: 1875, - 0xC371: 1876, - 0xC373: 1877, - 0xC375: 1878, - 0xC377: 1879, - 0xC3A1: 1880, - 0xC3A2: 1881, - 0xC3A5: 1882, - 0xC3A8: 1883, - 0xC3A9: 1884, - 0xC3AA: 1885, - 0xC3B1: 1886, - 0xC3B3: 1887, - 0xC3B5: 1888, - 0xC3B7: 1889, - 0xC461: 1890, - 0xC462: 1891, - 0xC465: 1892, - 0xC469: 1893, - 0xC471: 1894, - 0xC473: 1895, - 0xC475: 1896, - 0xC477: 1897, - 0xC481: 1898, - 0xC482: 1899, - 0xC485: 1900, - 0xC489: 1901, - 0xC491: 1902, - 0xC493: 1903, - 0xC495: 1904, - 0xC496: 1905, - 0xC497: 1906, - 0xC4A1: 1907, - 0xC4A2: 1908, - 0xC4B7: 1909, - 0xC4E1: 1910, - 0xC4E2: 1911, - 0xC4E5: 1912, - 0xC4E8: 1913, - 0xC4E9: 1914, - 0xC4F1: 1915, - 0xC4F3: 1916, - 0xC4F5: 1917, - 0xC4F6: 1918, - 0xC4F7: 1919, - 0xC541: 1920, - 0xC542: 1921, - 0xC545: 1922, - 0xC549: 1923, - 0xC551: 1924, - 0xC553: 1925, - 0xC555: 1926, - 0xC557: 1927, - 0xC561: 1928, - 0xC565: 1929, - 0xC569: 1930, - 0xC571: 1931, - 0xC573: 1932, - 0xC575: 1933, - 0xC576: 1934, - 0xC577: 1935, - 0xC581: 1936, - 0xC5A1: 1937, - 0xC5A2: 1938, - 0xC5A5: 1939, - 0xC5A9: 1940, - 0xC5B1: 1941, - 0xC5B3: 1942, - 0xC5B5: 1943, - 0xC5B7: 1944, - 0xC5C1: 1945, - 0xC5C2: 1946, - 0xC5C5: 1947, - 0xC5C9: 1948, - 0xC5D1: 1949, - 0xC5D7: 1950, - 0xC5E1: 1951, - 0xC5F7: 1952, - 0xC641: 1953, - 0xC649: 1954, - 0xC661: 1955, - 0xC681: 1956, - 0xC682: 1957, - 0xC685: 1958, - 0xC689: 1959, - 0xC691: 1960, - 0xC693: 1961, - 0xC695: 1962, - 0xC697: 1963, - 0xC6A1: 1964, - 0xC6A5: 1965, - 0xC6A9: 1966, - 0xC6B7: 1967, - 0xC6C1: 1968, - 0xC6D7: 1969, - 0xC6E1: 1970, - 0xC6E2: 1971, - 0xC6E5: 1972, - 0xC6E9: 1973, - 0xC6F1: 1974, - 0xC6F3: 1975, - 0xC6F5: 1976, - 0xC6F7: 1977, - 0xC741: 1978, - 0xC745: 1979, - 0xC749: 1980, - 0xC751: 1981, - 0xC761: 1982, - 0xC762: 1983, - 0xC765: 1984, - 0xC769: 1985, - 0xC771: 1986, - 0xC773: 1987, - 0xC777: 1988, - 0xC7A1: 1989, - 0xC7A2: 1990, - 0xC7A5: 1991, - 0xC7A9: 1992, - 0xC7B1: 1993, - 0xC7B3: 1994, - 0xC7B5: 1995, - 0xC7B7: 1996, - 0xC861: 1997, - 0xC862: 1998, - 0xC865: 1999, - 0xC869: 2000, - 0xC86A: 2001, - 0xC871: 2002, - 0xC873: 2003, - 0xC875: 2004, - 0xC876: 2005, - 0xC877: 2006, - 0xC881: 2007, - 0xC882: 2008, - 0xC885: 2009, - 0xC889: 2010, - 0xC891: 2011, - 0xC893: 2012, - 0xC895: 2013, - 0xC896: 2014, - 0xC897: 2015, - 0xC8A1: 2016, - 0xC8B7: 2017, - 0xC8E1: 2018, - 0xC8E2: 2019, - 0xC8E5: 2020, - 0xC8E9: 2021, - 0xC8EB: 2022, - 0xC8F1: 2023, - 0xC8F3: 2024, - 0xC8F5: 2025, - 0xC8F6: 2026, - 0xC8F7: 2027, - 0xC941: 2028, - 0xC942: 2029, - 0xC945: 2030, - 0xC949: 2031, - 0xC951: 2032, - 0xC953: 2033, - 0xC955: 2034, - 0xC957: 2035, - 0xC961: 2036, - 0xC965: 2037, - 0xC976: 2038, - 0xC981: 2039, - 0xC985: 2040, - 0xC9A1: 2041, - 0xC9A2: 2042, - 0xC9A5: 2043, - 0xC9A9: 2044, - 0xC9B1: 2045, - 0xC9B3: 2046, - 0xC9B5: 2047, - 0xC9B7: 2048, - 0xC9BC: 2049, - 0xC9C1: 2050, - 0xC9C5: 2051, - 0xC9E1: 2052, - 0xCA41: 2053, - 0xCA45: 2054, - 0xCA55: 2055, - 0xCA57: 2056, - 0xCA61: 2057, - 0xCA81: 2058, - 0xCA82: 2059, - 0xCA85: 2060, - 0xCA89: 2061, - 0xCA91: 2062, - 0xCA93: 2063, - 0xCA95: 2064, - 0xCA97: 2065, - 0xCAA1: 2066, - 0xCAB6: 2067, - 0xCAC1: 2068, - 0xCAE1: 2069, - 0xCAE2: 2070, - 0xCAE5: 2071, - 0xCAE9: 2072, - 0xCAF1: 2073, - 0xCAF3: 2074, - 0xCAF7: 2075, - 0xCB41: 2076, - 0xCB45: 2077, - 0xCB49: 2078, - 0xCB51: 2079, - 0xCB57: 2080, - 0xCB61: 2081, - 0xCB62: 2082, - 0xCB65: 2083, - 0xCB68: 2084, - 0xCB69: 2085, - 0xCB6B: 2086, - 0xCB71: 2087, - 0xCB73: 2088, - 0xCB75: 2089, - 0xCB81: 2090, - 0xCB85: 2091, - 0xCB89: 2092, - 0xCB91: 2093, - 0xCB93: 2094, - 0xCBA1: 2095, - 0xCBA2: 2096, - 0xCBA5: 2097, - 0xCBA9: 2098, - 0xCBB1: 2099, - 0xCBB3: 2100, - 0xCBB5: 2101, - 0xCBB7: 2102, - 0xCC61: 2103, - 0xCC62: 2104, - 0xCC63: 2105, - 0xCC65: 2106, - 0xCC69: 2107, - 0xCC6B: 2108, - 0xCC71: 2109, - 0xCC73: 2110, - 0xCC75: 2111, - 0xCC76: 2112, - 0xCC77: 2113, - 0xCC7B: 2114, - 0xCC81: 2115, - 0xCC82: 2116, - 0xCC85: 2117, - 0xCC89: 2118, - 0xCC91: 2119, - 0xCC93: 2120, - 0xCC95: 2121, - 0xCC96: 2122, - 0xCC97: 2123, - 0xCCA1: 2124, - 0xCCA2: 2125, - 0xCCE1: 2126, - 0xCCE2: 2127, - 0xCCE5: 2128, - 0xCCE9: 2129, - 0xCCF1: 2130, - 0xCCF3: 2131, - 0xCCF5: 2132, - 0xCCF6: 2133, - 0xCCF7: 2134, - 0xCD41: 2135, - 0xCD42: 2136, - 0xCD45: 2137, - 0xCD49: 2138, - 0xCD51: 2139, - 0xCD53: 2140, - 0xCD55: 2141, - 0xCD57: 2142, - 0xCD61: 2143, - 0xCD65: 2144, - 0xCD69: 2145, - 0xCD71: 2146, - 0xCD73: 2147, - 0xCD76: 2148, - 0xCD77: 2149, - 0xCD81: 2150, - 0xCD89: 2151, - 0xCD93: 2152, - 0xCD95: 2153, - 0xCDA1: 2154, - 0xCDA2: 2155, - 0xCDA5: 2156, - 0xCDA9: 2157, - 0xCDB1: 2158, - 0xCDB3: 2159, - 0xCDB5: 2160, - 0xCDB7: 2161, - 0xCDC1: 2162, - 0xCDD7: 2163, - 0xCE41: 2164, - 0xCE45: 2165, - 0xCE61: 2166, - 0xCE65: 2167, - 0xCE69: 2168, - 0xCE73: 2169, - 0xCE75: 2170, - 0xCE81: 2171, - 0xCE82: 2172, - 0xCE85: 2173, - 0xCE88: 2174, - 0xCE89: 2175, - 0xCE8B: 2176, - 0xCE91: 2177, - 0xCE93: 2178, - 0xCE95: 2179, - 0xCE97: 2180, - 0xCEA1: 2181, - 0xCEB7: 2182, - 0xCEE1: 2183, - 0xCEE5: 2184, - 0xCEE9: 2185, - 0xCEF1: 2186, - 0xCEF5: 2187, - 0xCF41: 2188, - 0xCF45: 2189, - 0xCF49: 2190, - 0xCF51: 2191, - 0xCF55: 2192, - 0xCF57: 2193, - 0xCF61: 2194, - 0xCF65: 2195, - 0xCF69: 2196, - 0xCF71: 2197, - 0xCF73: 2198, - 0xCF75: 2199, - 0xCFA1: 2200, - 0xCFA2: 2201, - 0xCFA5: 2202, - 0xCFA9: 2203, - 0xCFB1: 2204, - 0xCFB3: 2205, - 0xCFB5: 2206, - 0xCFB7: 2207, - 0xD061: 2208, - 0xD062: 2209, - 0xD065: 2210, - 0xD069: 2211, - 0xD06E: 2212, - 0xD071: 2213, - 0xD073: 2214, - 0xD075: 2215, - 0xD077: 2216, - 0xD081: 2217, - 0xD082: 2218, - 0xD085: 2219, - 0xD089: 2220, - 0xD091: 2221, - 0xD093: 2222, - 0xD095: 2223, - 0xD096: 2224, - 0xD097: 2225, - 0xD0A1: 2226, - 0xD0B7: 2227, - 0xD0E1: 2228, - 0xD0E2: 2229, - 0xD0E5: 2230, - 0xD0E9: 2231, - 0xD0EB: 2232, - 0xD0F1: 2233, - 0xD0F3: 2234, - 0xD0F5: 2235, - 0xD0F7: 2236, - 0xD141: 2237, - 0xD142: 2238, - 0xD145: 2239, - 0xD149: 2240, - 0xD151: 2241, - 0xD153: 2242, - 0xD155: 2243, - 0xD157: 2244, - 0xD161: 2245, - 0xD162: 2246, - 0xD165: 2247, - 0xD169: 2248, - 0xD171: 2249, - 0xD173: 2250, - 0xD175: 2251, - 0xD176: 2252, - 0xD177: 2253, - 0xD181: 2254, - 0xD185: 2255, - 0xD189: 2256, - 0xD193: 2257, - 0xD1A1: 2258, - 0xD1A2: 2259, - 0xD1A5: 2260, - 0xD1A9: 2261, - 0xD1AE: 2262, - 0xD1B1: 2263, - 0xD1B3: 2264, - 0xD1B5: 2265, - 0xD1B7: 2266, - 0xD1BB: 2267, - 0xD1C1: 2268, - 0xD1C2: 2269, - 0xD1C5: 2270, - 0xD1C9: 2271, - 0xD1D5: 2272, - 0xD1D7: 2273, - 0xD1E1: 2274, - 0xD1E2: 2275, - 0xD1E5: 2276, - 0xD1F5: 2277, - 0xD1F7: 2278, - 0xD241: 2279, - 0xD242: 2280, - 0xD245: 2281, - 0xD249: 2282, - 0xD253: 2283, - 0xD255: 2284, - 0xD257: 2285, - 0xD261: 2286, - 0xD265: 2287, - 0xD269: 2288, - 0xD273: 2289, - 0xD275: 2290, - 0xD281: 2291, - 0xD282: 2292, - 0xD285: 2293, - 0xD289: 2294, - 0xD28E: 2295, - 0xD291: 2296, - 0xD295: 2297, - 0xD297: 2298, - 0xD2A1: 2299, - 0xD2A5: 2300, - 0xD2A9: 2301, - 0xD2B1: 2302, - 0xD2B7: 2303, - 0xD2C1: 2304, - 0xD2C2: 2305, - 0xD2C5: 2306, - 0xD2C9: 2307, - 0xD2D7: 2308, - 0xD2E1: 2309, - 0xD2E2: 2310, - 0xD2E5: 2311, - 0xD2E9: 2312, - 0xD2F1: 2313, - 0xD2F3: 2314, - 0xD2F5: 2315, - 0xD2F7: 2316, - 0xD341: 2317, - 0xD342: 2318, - 0xD345: 2319, - 0xD349: 2320, - 0xD351: 2321, - 0xD355: 2322, - 0xD357: 2323, - 0xD361: 2324, - 0xD362: 2325, - 0xD365: 2326, - 0xD367: 2327, - 0xD368: 2328, - 0xD369: 2329, - 0xD36A: 2330, - 0xD371: 2331, - 0xD373: 2332, - 0xD375: 2333, - 0xD377: 2334, - 0xD37B: 2335, - 0xD381: 2336, - 0xD385: 2337, - 0xD389: 2338, - 0xD391: 2339, - 0xD393: 2340, - 0xD397: 2341, - 0xD3A1: 2342, - 0xD3A2: 2343, - 0xD3A5: 2344, - 0xD3A9: 2345, - 0xD3B1: 2346, - 0xD3B3: 2347, - 0xD3B5: 2348, - 0xD3B7: 2349, -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py deleted file mode 100644 index d7364ba..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import JOHABDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import JOHAB_SM_MODEL - - -class JOHABProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(JOHAB_SM_MODEL) - self.distribution_analyzer = JOHABDistributionAnalysis() - self.reset() - - @property - def charset_name(self) -> str: - return "Johab" - - @property - def language(self) -> str: - return "Korean" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py deleted file mode 100644 index 2f53bdd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py +++ /dev/null @@ -1,238 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import List, Tuple, Union - -# This is hiragana 2-char sequence table, the number in each cell represents its frequency category -# fmt: off -jp2_char_context = ( - (0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), - (2, 4, 0, 4, 0, 3, 0, 4, 0, 3, 4, 4, 4, 2, 4, 3, 3, 4, 3, 2, 3, 3, 4, 2, 3, 3, 3, 2, 4, 1, 4, 3, 3, 1, 5, 4, 3, 4, 3, 4, 3, 5, 3, 0, 3, 5, 4, 2, 0, 3, 1, 0, 3, 3, 0, 3, 3, 0, 1, 1, 0, 4, 3, 0, 3, 3, 0, 4, 0, 2, 0, 3, 5, 5, 5, 5, 4, 0, 4, 1, 0, 3, 4), - (0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2), - (0, 4, 0, 5, 0, 5, 0, 4, 0, 4, 5, 4, 4, 3, 5, 3, 5, 1, 5, 3, 4, 3, 4, 4, 3, 4, 3, 3, 4, 3, 5, 4, 4, 3, 5, 5, 3, 5, 5, 5, 3, 5, 5, 3, 4, 5, 5, 3, 1, 3, 2, 0, 3, 4, 0, 4, 2, 0, 4, 2, 1, 5, 3, 2, 3, 5, 0, 4, 0, 2, 0, 5, 4, 4, 5, 4, 5, 0, 4, 0, 0, 4, 4), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - (0, 3, 0, 4, 0, 3, 0, 3, 0, 4, 5, 4, 3, 3, 3, 3, 4, 3, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 4, 4, 4, 4, 5, 3, 4, 4, 3, 4, 5, 5, 4, 5, 5, 1, 4, 5, 4, 3, 0, 3, 3, 1, 3, 3, 0, 4, 4, 0, 3, 3, 1, 5, 3, 3, 3, 5, 0, 4, 0, 3, 0, 4, 4, 3, 4, 3, 3, 0, 4, 1, 1, 3, 4), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - (0, 4, 0, 3, 0, 3, 0, 4, 0, 3, 4, 4, 3, 2, 2, 1, 2, 1, 3, 1, 3, 3, 3, 3, 3, 4, 3, 1, 3, 3, 5, 3, 3, 0, 4, 3, 0, 5, 4, 3, 3, 5, 4, 4, 3, 4, 4, 5, 0, 1, 2, 0, 1, 2, 0, 2, 2, 0, 1, 0, 0, 5, 2, 2, 1, 4, 0, 3, 0, 1, 0, 4, 4, 3, 5, 4, 3, 0, 2, 1, 0, 4, 3), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - (0, 3, 0, 5, 0, 4, 0, 2, 1, 4, 4, 2, 4, 1, 4, 2, 4, 2, 4, 3, 3, 3, 4, 3, 3, 3, 3, 1, 4, 2, 3, 3, 3, 1, 4, 4, 1, 1, 1, 4, 3, 3, 2, 0, 2, 4, 3, 2, 0, 3, 3, 0, 3, 1, 1, 0, 0, 0, 3, 3, 0, 4, 2, 2, 3, 4, 0, 4, 0, 3, 0, 4, 4, 5, 3, 4, 4, 0, 3, 0, 0, 1, 4), - (1, 4, 0, 4, 0, 4, 0, 4, 0, 3, 5, 4, 4, 3, 4, 3, 5, 4, 3, 3, 4, 3, 5, 4, 4, 4, 4, 3, 4, 2, 4, 3, 3, 1, 5, 4, 3, 2, 4, 5, 4, 5, 5, 4, 4, 5, 4, 4, 0, 3, 2, 2, 3, 3, 0, 4, 3, 1, 3, 2, 1, 4, 3, 3, 4, 5, 0, 3, 0, 2, 0, 4, 5, 5, 4, 5, 4, 0, 4, 0, 0, 5, 4), - (0, 5, 0, 5, 0, 4, 0, 3, 0, 4, 4, 3, 4, 3, 3, 3, 4, 0, 4, 4, 4, 3, 4, 3, 4, 3, 3, 1, 4, 2, 4, 3, 4, 0, 5, 4, 1, 4, 5, 4, 4, 5, 3, 2, 4, 3, 4, 3, 2, 4, 1, 3, 3, 3, 2, 3, 2, 0, 4, 3, 3, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 5, 4, 4, 4, 3, 0, 4, 1, 0, 1, 3), - (0, 3, 1, 4, 0, 3, 0, 2, 0, 3, 4, 4, 3, 1, 4, 2, 3, 3, 4, 3, 4, 3, 4, 3, 4, 4, 3, 2, 3, 1, 5, 4, 4, 1, 4, 4, 3, 5, 4, 4, 3, 5, 5, 4, 3, 4, 4, 3, 1, 2, 3, 1, 2, 2, 0, 3, 2, 0, 3, 1, 0, 5, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 4, 4, 5, 4, 2, 0, 3, 3, 2, 4, 3), - (0, 2, 0, 3, 0, 1, 0, 1, 0, 0, 3, 2, 0, 0, 2, 0, 1, 0, 2, 1, 3, 3, 3, 1, 2, 3, 1, 0, 1, 0, 4, 2, 1, 1, 3, 3, 0, 4, 3, 3, 1, 4, 3, 3, 0, 3, 3, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 4, 1, 0, 2, 3, 2, 2, 2, 1, 3, 3, 3, 4, 4, 3, 2, 0, 3, 1, 0, 3, 3), - (0, 4, 0, 4, 0, 3, 0, 3, 0, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 3, 4, 2, 4, 3, 4, 3, 3, 2, 4, 3, 4, 5, 4, 1, 4, 5, 3, 5, 4, 5, 3, 5, 4, 0, 3, 5, 5, 3, 1, 3, 3, 2, 2, 3, 0, 3, 4, 1, 3, 3, 2, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 5, 4, 4, 5, 3, 0, 4, 1, 0, 3, 4), - (0, 2, 0, 3, 0, 3, 0, 0, 0, 2, 2, 2, 1, 0, 1, 0, 0, 0, 3, 0, 3, 0, 3, 0, 1, 3, 1, 0, 3, 1, 3, 3, 3, 1, 3, 3, 3, 0, 1, 3, 1, 3, 4, 0, 0, 3, 1, 1, 0, 3, 2, 0, 0, 0, 0, 1, 3, 0, 1, 0, 0, 3, 3, 2, 0, 3, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 3, 0, 3, 0, 0, 2, 3), - (2, 3, 0, 3, 0, 2, 0, 1, 0, 3, 3, 4, 3, 1, 3, 1, 1, 1, 3, 1, 4, 3, 4, 3, 3, 3, 0, 0, 3, 1, 5, 4, 3, 1, 4, 3, 2, 5, 5, 4, 4, 4, 4, 3, 3, 4, 4, 4, 0, 2, 1, 1, 3, 2, 0, 1, 2, 0, 0, 1, 0, 4, 1, 3, 3, 3, 0, 3, 0, 1, 0, 4, 4, 4, 5, 5, 3, 0, 2, 0, 0, 4, 4), - (0, 2, 0, 1, 0, 3, 1, 3, 0, 2, 3, 3, 3, 0, 3, 1, 0, 0, 3, 0, 3, 2, 3, 1, 3, 2, 1, 1, 0, 0, 4, 2, 1, 0, 2, 3, 1, 4, 3, 2, 0, 4, 4, 3, 1, 3, 1, 3, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 4, 1, 1, 1, 2, 0, 3, 0, 0, 0, 3, 4, 2, 4, 3, 2, 0, 1, 0, 0, 3, 3), - (0, 1, 0, 4, 0, 5, 0, 4, 0, 2, 4, 4, 2, 3, 3, 2, 3, 3, 5, 3, 3, 3, 4, 3, 4, 2, 3, 0, 4, 3, 3, 3, 4, 1, 4, 3, 2, 1, 5, 5, 3, 4, 5, 1, 3, 5, 4, 2, 0, 3, 3, 0, 1, 3, 0, 4, 2, 0, 1, 3, 1, 4, 3, 3, 3, 3, 0, 3, 0, 1, 0, 3, 4, 4, 4, 5, 5, 0, 3, 0, 1, 4, 5), - (0, 2, 0, 3, 0, 3, 0, 0, 0, 2, 3, 1, 3, 0, 4, 0, 1, 1, 3, 0, 3, 4, 3, 2, 3, 1, 0, 3, 3, 2, 3, 1, 3, 0, 2, 3, 0, 2, 1, 4, 1, 2, 2, 0, 0, 3, 3, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 3, 2, 1, 3, 3, 0, 2, 0, 2, 0, 0, 3, 3, 1, 2, 4, 0, 3, 0, 2, 2, 3), - (2, 4, 0, 5, 0, 4, 0, 4, 0, 2, 4, 4, 4, 3, 4, 3, 3, 3, 1, 2, 4, 3, 4, 3, 4, 4, 5, 0, 3, 3, 3, 3, 2, 0, 4, 3, 1, 4, 3, 4, 1, 4, 4, 3, 3, 4, 4, 3, 1, 2, 3, 0, 4, 2, 0, 4, 1, 0, 3, 3, 0, 4, 3, 3, 3, 4, 0, 4, 0, 2, 0, 3, 5, 3, 4, 5, 2, 0, 3, 0, 0, 4, 5), - (0, 3, 0, 4, 0, 1, 0, 1, 0, 1, 3, 2, 2, 1, 3, 0, 3, 0, 2, 0, 2, 0, 3, 0, 2, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 3, 1, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 2, 2, 3, 1, 0, 3, 0, 0, 0, 1, 4, 4, 4, 3, 0, 0, 4, 0, 0, 1, 4), - (1, 4, 1, 5, 0, 3, 0, 3, 0, 4, 5, 4, 4, 3, 5, 3, 3, 4, 4, 3, 4, 1, 3, 3, 3, 3, 2, 1, 4, 1, 5, 4, 3, 1, 4, 4, 3, 5, 4, 4, 3, 5, 4, 3, 3, 4, 4, 4, 0, 3, 3, 1, 2, 3, 0, 3, 1, 0, 3, 3, 0, 5, 4, 4, 4, 4, 4, 4, 3, 3, 5, 4, 4, 3, 3, 5, 4, 0, 3, 2, 0, 4, 4), - (0, 2, 0, 3, 0, 1, 0, 0, 0, 1, 3, 3, 3, 2, 4, 1, 3, 0, 3, 1, 3, 0, 2, 2, 1, 1, 0, 0, 2, 0, 4, 3, 1, 0, 4, 3, 0, 4, 4, 4, 1, 4, 3, 1, 1, 3, 3, 1, 0, 2, 0, 0, 1, 3, 0, 0, 0, 0, 2, 0, 0, 4, 3, 2, 4, 3, 5, 4, 3, 3, 3, 4, 3, 3, 4, 3, 3, 0, 2, 1, 0, 3, 3), - (0, 2, 0, 4, 0, 3, 0, 2, 0, 2, 5, 5, 3, 4, 4, 4, 4, 1, 4, 3, 3, 0, 4, 3, 4, 3, 1, 3, 3, 2, 4, 3, 0, 3, 4, 3, 0, 3, 4, 4, 2, 4, 4, 0, 4, 5, 3, 3, 2, 2, 1, 1, 1, 2, 0, 1, 5, 0, 3, 3, 2, 4, 3, 3, 3, 4, 0, 3, 0, 2, 0, 4, 4, 3, 5, 5, 0, 0, 3, 0, 2, 3, 3), - (0, 3, 0, 4, 0, 3, 0, 1, 0, 3, 4, 3, 3, 1, 3, 3, 3, 0, 3, 1, 3, 0, 4, 3, 3, 1, 1, 0, 3, 0, 3, 3, 0, 0, 4, 4, 0, 1, 5, 4, 3, 3, 5, 0, 3, 3, 4, 3, 0, 2, 0, 1, 1, 1, 0, 1, 3, 0, 1, 2, 1, 3, 3, 2, 3, 3, 0, 3, 0, 1, 0, 1, 3, 3, 4, 4, 1, 0, 1, 2, 2, 1, 3), - (0, 1, 0, 4, 0, 4, 0, 3, 0, 1, 3, 3, 3, 2, 3, 1, 1, 0, 3, 0, 3, 3, 4, 3, 2, 4, 2, 0, 1, 0, 4, 3, 2, 0, 4, 3, 0, 5, 3, 3, 2, 4, 4, 4, 3, 3, 3, 4, 0, 1, 3, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 2, 3, 3, 3, 0, 3, 0, 0, 0, 4, 4, 4, 5, 3, 2, 0, 3, 3, 0, 3, 5), - (0, 2, 0, 3, 0, 0, 0, 3, 0, 1, 3, 0, 2, 0, 0, 0, 1, 0, 3, 1, 1, 3, 3, 0, 0, 3, 0, 0, 3, 0, 2, 3, 1, 0, 3, 1, 0, 3, 3, 2, 0, 4, 2, 2, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 1, 0, 1, 0, 0, 0, 1, 3, 1, 2, 0, 0, 0, 1, 0, 0, 1, 4), - (0, 3, 0, 3, 0, 5, 0, 1, 0, 2, 4, 3, 1, 3, 3, 2, 1, 1, 5, 2, 1, 0, 5, 1, 2, 0, 0, 0, 3, 3, 2, 2, 3, 2, 4, 3, 0, 0, 3, 3, 1, 3, 3, 0, 2, 5, 3, 4, 0, 3, 3, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 2, 2, 3, 3, 3, 0, 2, 0, 1, 0, 3, 4, 4, 2, 5, 4, 0, 3, 0, 0, 3, 5), - (0, 3, 0, 3, 0, 3, 0, 1, 0, 3, 3, 3, 3, 0, 3, 0, 2, 0, 2, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 1, 0, 0, 1, 0, 3, 2, 0, 0, 3, 3, 1, 2, 3, 1, 0, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 3, 1, 2, 3, 0, 3, 0, 1, 0, 3, 2, 1, 0, 4, 3, 0, 1, 1, 0, 3, 3), - (0, 4, 0, 5, 0, 3, 0, 3, 0, 4, 5, 5, 4, 3, 5, 3, 4, 3, 5, 3, 3, 2, 5, 3, 4, 4, 4, 3, 4, 3, 4, 5, 5, 3, 4, 4, 3, 4, 4, 5, 4, 4, 4, 3, 4, 5, 5, 4, 2, 3, 4, 2, 3, 4, 0, 3, 3, 1, 4, 3, 2, 4, 3, 3, 5, 5, 0, 3, 0, 3, 0, 5, 5, 5, 5, 4, 4, 0, 4, 0, 1, 4, 4), - (0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 5, 4, 4, 2, 3, 2, 5, 1, 3, 2, 5, 1, 4, 2, 3, 2, 3, 3, 4, 3, 3, 3, 3, 2, 5, 4, 1, 3, 3, 5, 3, 4, 4, 0, 4, 4, 3, 1, 1, 3, 1, 0, 2, 3, 0, 2, 3, 0, 3, 0, 0, 4, 3, 1, 3, 4, 0, 3, 0, 2, 0, 4, 4, 4, 3, 4, 5, 0, 4, 0, 0, 3, 4), - (0, 3, 0, 3, 0, 3, 1, 2, 0, 3, 4, 4, 3, 3, 3, 0, 2, 2, 4, 3, 3, 1, 3, 3, 3, 1, 1, 0, 3, 1, 4, 3, 2, 3, 4, 4, 2, 4, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 1, 3, 3, 1, 3, 3, 0, 4, 1, 0, 2, 2, 1, 4, 3, 2, 3, 3, 5, 4, 3, 3, 5, 4, 4, 3, 3, 0, 4, 0, 3, 2, 2, 4, 4), - (0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 0, 0, 2, 0, 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 0, 3, 4, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1), - (0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 4, 1, 4, 0, 3, 0, 4, 0, 3, 0, 4, 0, 3, 0, 3, 0, 4, 1, 5, 1, 4, 0, 0, 3, 0, 5, 0, 5, 2, 0, 1, 0, 0, 0, 2, 1, 4, 0, 1, 3, 0, 0, 3, 0, 0, 3, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), - (1, 4, 0, 5, 0, 3, 0, 2, 0, 3, 5, 4, 4, 3, 4, 3, 5, 3, 4, 3, 3, 0, 4, 3, 3, 3, 3, 3, 3, 2, 4, 4, 3, 1, 3, 4, 4, 5, 4, 4, 3, 4, 4, 1, 3, 5, 4, 3, 3, 3, 1, 2, 2, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 4, 5, 0, 3, 0, 3, 0, 3, 4, 3, 4, 4, 3, 0, 3, 0, 2, 4, 3), - (0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 4, 0, 4, 1, 4, 2, 4, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 3, 1, 1, 1, 0, 3, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 3, 2, 0, 2, 2, 0, 1, 0, 0, 0, 2, 3, 2, 3, 3, 0, 0, 0, 0, 2, 1, 0), - (0, 5, 1, 5, 0, 3, 0, 3, 0, 5, 4, 4, 5, 1, 5, 3, 3, 0, 4, 3, 4, 3, 5, 3, 4, 3, 3, 2, 4, 3, 4, 3, 3, 0, 3, 3, 1, 4, 4, 3, 4, 4, 4, 3, 4, 5, 5, 3, 2, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 2, 4, 5, 3, 3, 5, 0, 4, 0, 3, 0, 4, 4, 3, 5, 3, 3, 0, 3, 4, 0, 4, 3), - (0, 5, 0, 5, 0, 3, 0, 2, 0, 4, 4, 3, 5, 2, 4, 3, 3, 3, 4, 4, 4, 3, 5, 3, 5, 3, 3, 1, 4, 0, 4, 3, 3, 0, 3, 3, 0, 4, 4, 4, 4, 5, 4, 3, 3, 5, 5, 3, 2, 3, 1, 2, 3, 2, 0, 1, 0, 0, 3, 2, 2, 4, 4, 3, 1, 5, 0, 4, 0, 3, 0, 4, 3, 1, 3, 2, 1, 0, 3, 3, 0, 3, 3), - (0, 4, 0, 5, 0, 5, 0, 4, 0, 4, 5, 5, 5, 3, 4, 3, 3, 2, 5, 4, 4, 3, 5, 3, 5, 3, 4, 0, 4, 3, 4, 4, 3, 2, 4, 4, 3, 4, 5, 4, 4, 5, 5, 0, 3, 5, 5, 4, 1, 3, 3, 2, 3, 3, 1, 3, 1, 0, 4, 3, 1, 4, 4, 3, 4, 5, 0, 4, 0, 2, 0, 4, 3, 4, 4, 3, 3, 0, 4, 0, 0, 5, 5), - (0, 4, 0, 4, 0, 5, 0, 1, 1, 3, 3, 4, 4, 3, 4, 1, 3, 0, 5, 1, 3, 0, 3, 1, 3, 1, 1, 0, 3, 0, 3, 3, 4, 0, 4, 3, 0, 4, 4, 4, 3, 4, 4, 0, 3, 5, 4, 1, 0, 3, 0, 0, 2, 3, 0, 3, 1, 0, 3, 1, 0, 3, 2, 1, 3, 5, 0, 3, 0, 1, 0, 3, 2, 3, 3, 4, 4, 0, 2, 2, 0, 4, 4), - (2, 4, 0, 5, 0, 4, 0, 3, 0, 4, 5, 5, 4, 3, 5, 3, 5, 3, 5, 3, 5, 2, 5, 3, 4, 3, 3, 4, 3, 4, 5, 3, 2, 1, 5, 4, 3, 2, 3, 4, 5, 3, 4, 1, 2, 5, 4, 3, 0, 3, 3, 0, 3, 2, 0, 2, 3, 0, 4, 1, 0, 3, 4, 3, 3, 5, 0, 3, 0, 1, 0, 4, 5, 5, 5, 4, 3, 0, 4, 2, 0, 3, 5), - (0, 5, 0, 4, 0, 4, 0, 2, 0, 5, 4, 3, 4, 3, 4, 3, 3, 3, 4, 3, 4, 2, 5, 3, 5, 3, 4, 1, 4, 3, 4, 4, 4, 0, 3, 5, 0, 4, 4, 4, 4, 5, 3, 1, 3, 4, 5, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 3, 3, 2, 4, 3, 3, 3, 5, 3, 4, 1, 3, 3, 5, 3, 2, 0, 0, 0, 0, 4, 3, 1, 3, 3), - (0, 1, 0, 3, 0, 3, 0, 1, 0, 1, 3, 3, 3, 2, 3, 3, 3, 0, 3, 0, 0, 0, 3, 1, 3, 0, 0, 0, 2, 2, 2, 3, 0, 0, 3, 2, 0, 1, 2, 4, 1, 3, 3, 0, 0, 3, 3, 3, 0, 1, 0, 0, 2, 1, 0, 0, 3, 0, 3, 1, 0, 3, 0, 0, 1, 3, 0, 2, 0, 1, 0, 3, 3, 1, 3, 3, 0, 0, 1, 1, 0, 3, 3), - (0, 2, 0, 3, 0, 2, 1, 4, 0, 2, 2, 3, 1, 1, 3, 1, 1, 0, 2, 0, 3, 1, 2, 3, 1, 3, 0, 0, 1, 0, 4, 3, 2, 3, 3, 3, 1, 4, 2, 3, 3, 3, 3, 1, 0, 3, 1, 4, 0, 1, 1, 0, 1, 2, 0, 1, 1, 0, 1, 1, 0, 3, 1, 3, 2, 2, 0, 1, 0, 0, 0, 2, 3, 3, 3, 1, 0, 0, 0, 0, 0, 2, 3), - (0, 5, 0, 4, 0, 5, 0, 2, 0, 4, 5, 5, 3, 3, 4, 3, 3, 1, 5, 4, 4, 2, 4, 4, 4, 3, 4, 2, 4, 3, 5, 5, 4, 3, 3, 4, 3, 3, 5, 5, 4, 5, 5, 1, 3, 4, 5, 3, 1, 4, 3, 1, 3, 3, 0, 3, 3, 1, 4, 3, 1, 4, 5, 3, 3, 5, 0, 4, 0, 3, 0, 5, 3, 3, 1, 4, 3, 0, 4, 0, 1, 5, 3), - (0, 5, 0, 5, 0, 4, 0, 2, 0, 4, 4, 3, 4, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, 5, 3, 3, 5, 2, 4, 4, 4, 3, 4, 4, 3, 3, 4, 4, 5, 5, 3, 3, 4, 3, 4, 3, 3, 4, 3, 3, 3, 3, 1, 2, 2, 1, 4, 3, 3, 5, 4, 4, 3, 4, 0, 4, 0, 3, 0, 4, 4, 4, 4, 4, 1, 0, 4, 2, 0, 2, 4), - (0, 4, 0, 4, 0, 3, 0, 1, 0, 3, 5, 2, 3, 0, 3, 0, 2, 1, 4, 2, 3, 3, 4, 1, 4, 3, 3, 2, 4, 1, 3, 3, 3, 0, 3, 3, 0, 0, 3, 3, 3, 5, 3, 3, 3, 3, 3, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 1, 0, 0, 3, 1, 2, 2, 3, 0, 3, 0, 2, 0, 4, 4, 3, 3, 4, 1, 0, 3, 0, 0, 2, 4), - (0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 3, 1, 3, 0, 3, 2, 0, 0, 0, 1, 0, 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 2, 0, 0, 0, 0, 0, 0, 2), - (0, 2, 1, 3, 0, 2, 0, 2, 0, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 2, 1, 2, 1, 4, 0, 4, 3, 1, 3, 3, 3, 2, 4, 3, 5, 4, 3, 3, 3, 3, 3, 3, 3, 0, 1, 3, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 4, 2, 0, 2, 3, 0, 3, 3, 0, 3, 3, 4, 2, 3, 1, 4, 0, 1, 2, 0, 2, 3), - (0, 3, 0, 3, 0, 1, 0, 3, 0, 2, 3, 3, 3, 0, 3, 1, 2, 0, 3, 3, 2, 3, 3, 2, 3, 2, 3, 1, 3, 0, 4, 3, 2, 0, 3, 3, 1, 4, 3, 3, 2, 3, 4, 3, 1, 3, 3, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 4, 1, 1, 0, 3, 0, 3, 1, 0, 2, 3, 3, 3, 3, 3, 1, 0, 0, 2, 0, 3, 3), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3), - (0, 2, 0, 3, 1, 3, 0, 3, 0, 2, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1, 3, 0, 2, 3, 1, 1, 4, 3, 3, 2, 3, 3, 1, 2, 2, 4, 1, 3, 3, 0, 1, 4, 2, 3, 0, 1, 3, 0, 3, 0, 0, 1, 3, 0, 2, 0, 0, 3, 3, 2, 1, 3, 0, 3, 0, 2, 0, 3, 4, 4, 4, 3, 1, 0, 3, 0, 0, 3, 3), - (0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 3, 2, 2, 1, 3, 0, 1, 1, 3, 0, 3, 2, 3, 1, 2, 0, 2, 0, 1, 1, 3, 3, 3, 0, 3, 3, 1, 1, 2, 3, 2, 3, 3, 1, 2, 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 2, 1, 2, 1, 3, 0, 3, 0, 0, 0, 3, 4, 4, 4, 3, 2, 0, 2, 0, 0, 2, 4), - (0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 3), - (0, 3, 0, 3, 0, 2, 0, 3, 0, 3, 3, 3, 2, 3, 2, 2, 2, 0, 3, 1, 3, 3, 3, 2, 3, 3, 0, 0, 3, 0, 3, 2, 2, 0, 2, 3, 1, 4, 3, 4, 3, 3, 2, 3, 1, 5, 4, 4, 0, 3, 1, 2, 1, 3, 0, 3, 1, 1, 2, 0, 2, 3, 1, 3, 1, 3, 0, 3, 0, 1, 0, 3, 3, 4, 4, 2, 1, 0, 2, 1, 0, 2, 4), - (0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 4, 2, 5, 1, 4, 0, 2, 0, 2, 1, 3, 1, 4, 0, 2, 1, 0, 0, 2, 1, 4, 1, 1, 0, 3, 3, 0, 5, 1, 3, 2, 3, 3, 1, 0, 3, 2, 3, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 1, 0, 3, 0, 2, 0, 1, 0, 3, 3, 3, 4, 3, 3, 0, 0, 0, 0, 2, 3), - (0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 3), - (0, 1, 0, 3, 0, 4, 0, 3, 0, 2, 4, 3, 1, 0, 3, 2, 2, 1, 3, 1, 2, 2, 3, 1, 1, 1, 2, 1, 3, 0, 1, 2, 0, 1, 3, 2, 1, 3, 0, 5, 5, 1, 0, 0, 1, 3, 2, 1, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 3, 4, 0, 1, 1, 1, 3, 2, 0, 2, 0, 1, 0, 2, 3, 3, 1, 2, 3, 0, 1, 0, 1, 0, 4), - (0, 0, 0, 1, 0, 3, 0, 3, 0, 2, 2, 1, 0, 0, 4, 0, 3, 0, 3, 1, 3, 0, 3, 0, 3, 0, 1, 0, 3, 0, 3, 1, 3, 0, 3, 3, 0, 0, 1, 2, 1, 1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 3, 3, 3, 3, 0, 0, 0, 0, 1, 4), - (0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 3, 1, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 2, 3, 0, 0, 2, 2, 3, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 2, 3), - (2, 4, 0, 5, 0, 5, 0, 4, 0, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 2, 3, 0, 5, 5, 4, 1, 5, 4, 3, 1, 5, 4, 3, 4, 4, 3, 3, 4, 3, 3, 0, 3, 2, 0, 2, 3, 0, 3, 0, 0, 3, 3, 0, 5, 3, 2, 3, 3, 0, 3, 0, 3, 0, 3, 4, 5, 4, 5, 3, 0, 4, 3, 0, 3, 4), - (0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 3, 4, 3, 2, 3, 2, 3, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 2, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 3, 4, 4, 3, 2, 4, 4, 1, 0, 2, 0, 0, 1, 1, 0, 2, 0, 0, 3, 1, 0, 5, 3, 2, 1, 3, 0, 3, 0, 1, 2, 4, 3, 2, 4, 3, 3, 0, 3, 2, 0, 4, 4), - (0, 3, 0, 3, 0, 1, 0, 0, 0, 1, 4, 3, 3, 2, 3, 1, 3, 1, 4, 2, 3, 2, 4, 2, 3, 4, 3, 0, 2, 2, 3, 3, 3, 0, 3, 3, 3, 0, 3, 4, 1, 3, 3, 0, 3, 4, 3, 3, 0, 1, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 0, 3, 1, 2, 1, 3, 0, 4, 0, 1, 0, 4, 3, 3, 4, 3, 3, 0, 2, 0, 0, 3, 3), - (0, 3, 0, 4, 0, 1, 0, 3, 0, 3, 4, 3, 3, 0, 3, 3, 3, 1, 3, 1, 3, 3, 4, 3, 3, 3, 0, 0, 3, 1, 5, 3, 3, 1, 3, 3, 2, 5, 4, 3, 3, 4, 5, 3, 2, 5, 3, 4, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 4, 2, 2, 1, 3, 0, 3, 0, 2, 0, 4, 4, 3, 5, 3, 2, 0, 1, 1, 0, 3, 4), - (0, 5, 0, 4, 0, 5, 0, 2, 0, 4, 4, 3, 3, 2, 3, 3, 3, 1, 4, 3, 4, 1, 5, 3, 4, 3, 4, 0, 4, 2, 4, 3, 4, 1, 5, 4, 0, 4, 4, 4, 4, 5, 4, 1, 3, 5, 4, 2, 1, 4, 1, 1, 3, 2, 0, 3, 1, 0, 3, 2, 1, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 4, 4, 3, 3, 3, 0, 4, 2, 0, 3, 4), - (1, 4, 0, 4, 0, 3, 0, 1, 0, 3, 3, 3, 1, 1, 3, 3, 2, 2, 3, 3, 1, 0, 3, 2, 2, 1, 2, 0, 3, 1, 2, 1, 2, 0, 3, 2, 0, 2, 2, 3, 3, 4, 3, 0, 3, 3, 1, 2, 0, 1, 1, 3, 1, 2, 0, 0, 3, 0, 1, 1, 0, 3, 2, 2, 3, 3, 0, 3, 0, 0, 0, 2, 3, 3, 4, 3, 3, 0, 1, 0, 0, 1, 4), - (0, 4, 0, 4, 0, 4, 0, 0, 0, 3, 4, 4, 3, 1, 4, 2, 3, 2, 3, 3, 3, 1, 4, 3, 4, 0, 3, 0, 4, 2, 3, 3, 2, 2, 5, 4, 2, 1, 3, 4, 3, 4, 3, 1, 3, 3, 4, 2, 0, 2, 1, 0, 3, 3, 0, 0, 2, 0, 3, 1, 0, 4, 4, 3, 4, 3, 0, 4, 0, 1, 0, 2, 4, 4, 4, 4, 4, 0, 3, 2, 0, 3, 3), - (0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2), - (0, 2, 0, 3, 0, 4, 0, 4, 0, 1, 3, 3, 3, 0, 4, 0, 2, 1, 2, 1, 1, 1, 2, 0, 3, 1, 1, 0, 1, 0, 3, 1, 0, 0, 3, 3, 2, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 2, 2, 0, 3, 1, 0, 0, 1, 0, 1, 1, 0, 1, 2, 0, 3, 0, 0, 0, 0, 1, 0, 0, 3, 3, 4, 3, 1, 0, 1, 0, 3, 0, 2), - (0, 0, 0, 3, 0, 5, 0, 0, 0, 0, 1, 0, 2, 0, 3, 1, 0, 1, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 2, 3, 0, 1, 4, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 3), - (0, 2, 0, 5, 0, 5, 0, 1, 0, 2, 4, 3, 3, 2, 5, 1, 3, 2, 3, 3, 3, 0, 4, 1, 2, 0, 3, 0, 4, 0, 2, 2, 1, 1, 5, 3, 0, 0, 1, 4, 2, 3, 2, 0, 3, 3, 3, 2, 0, 2, 4, 1, 1, 2, 0, 1, 1, 0, 3, 1, 0, 1, 3, 1, 2, 3, 0, 2, 0, 0, 0, 1, 3, 5, 4, 4, 4, 0, 3, 0, 0, 1, 3), - (0, 4, 0, 5, 0, 4, 0, 4, 0, 4, 5, 4, 3, 3, 4, 3, 3, 3, 4, 3, 4, 4, 5, 3, 4, 5, 4, 2, 4, 2, 3, 4, 3, 1, 4, 4, 1, 3, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 2, 3, 3, 1, 4, 3, 1, 3, 3, 0, 3, 3, 1, 4, 3, 4, 4, 4, 0, 3, 0, 4, 0, 3, 3, 4, 4, 5, 0, 0, 4, 3, 0, 4, 5), - (0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 4, 4, 4, 3, 3, 2, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 2, 1, 4, 2, 4, 4, 3, 1, 3, 4, 2, 4, 5, 5, 3, 4, 5, 4, 1, 5, 4, 3, 0, 3, 2, 2, 3, 2, 1, 3, 1, 0, 3, 3, 3, 5, 3, 3, 3, 5, 4, 4, 2, 3, 3, 4, 3, 3, 3, 2, 1, 0, 3, 2, 1, 4, 3), - (0, 4, 0, 5, 0, 4, 0, 3, 0, 3, 5, 5, 3, 2, 4, 3, 4, 0, 5, 4, 4, 1, 4, 4, 4, 3, 3, 3, 4, 3, 5, 5, 2, 3, 3, 4, 1, 2, 5, 5, 3, 5, 5, 2, 3, 5, 5, 4, 0, 3, 2, 0, 3, 3, 1, 1, 5, 1, 4, 1, 0, 4, 3, 2, 3, 5, 0, 4, 0, 3, 0, 5, 4, 3, 4, 3, 0, 0, 4, 1, 0, 4, 4), - (1, 3, 0, 4, 0, 2, 0, 2, 0, 2, 5, 5, 3, 3, 3, 3, 3, 0, 4, 2, 3, 4, 4, 4, 3, 4, 0, 0, 3, 4, 5, 4, 3, 3, 3, 3, 2, 5, 5, 4, 5, 5, 5, 4, 3, 5, 5, 5, 1, 3, 1, 0, 1, 0, 0, 3, 2, 0, 4, 2, 0, 5, 2, 3, 2, 4, 1, 3, 0, 3, 0, 4, 5, 4, 5, 4, 3, 0, 4, 2, 0, 5, 4), - (0, 3, 0, 4, 0, 5, 0, 3, 0, 3, 4, 4, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, 4, 3, 3, 2, 2, 0, 3, 3, 3, 3, 3, 1, 3, 3, 3, 0, 4, 4, 3, 4, 4, 1, 1, 4, 4, 2, 0, 3, 1, 0, 1, 1, 0, 4, 1, 0, 2, 3, 1, 3, 3, 1, 3, 4, 0, 3, 0, 1, 0, 3, 1, 3, 0, 0, 1, 0, 2, 0, 0, 4, 4), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - (0, 3, 0, 3, 0, 2, 0, 3, 0, 1, 5, 4, 3, 3, 3, 1, 4, 2, 1, 2, 3, 4, 4, 2, 4, 4, 5, 0, 3, 1, 4, 3, 4, 0, 4, 3, 3, 3, 2, 3, 2, 5, 3, 4, 3, 2, 2, 3, 0, 0, 3, 0, 2, 1, 0, 1, 2, 0, 0, 0, 0, 2, 1, 1, 3, 1, 0, 2, 0, 4, 0, 3, 4, 4, 4, 5, 2, 0, 2, 0, 0, 1, 3), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 4, 2, 1, 1, 0, 1, 0, 3, 2, 0, 0, 3, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 4, 0, 4, 2, 1, 0, 0, 0, 0, 0, 1), - (0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 2, 0, 2, 1, 0, 0, 1, 2, 1, 0, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2), - (0, 4, 0, 4, 0, 4, 0, 3, 0, 4, 4, 3, 4, 2, 4, 3, 2, 0, 4, 4, 4, 3, 5, 3, 5, 3, 3, 2, 4, 2, 4, 3, 4, 3, 1, 4, 0, 2, 3, 4, 4, 4, 3, 3, 3, 4, 4, 4, 3, 4, 1, 3, 4, 3, 2, 1, 2, 1, 3, 3, 3, 4, 4, 3, 3, 5, 0, 4, 0, 3, 0, 4, 3, 3, 3, 2, 1, 0, 3, 0, 0, 3, 3), - (0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 5, 5, 3, 3, 3, 3, 4, 3, 4, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 4, 3, 5, 3, 3, 1, 3, 2, 4, 5, 5, 5, 5, 4, 3, 4, 5, 5, 3, 2, 2, 3, 3, 3, 3, 2, 3, 3, 1, 2, 3, 2, 4, 3, 3, 3, 4, 0, 4, 0, 2, 0, 4, 3, 2, 2, 1, 2, 0, 3, 0, 0, 4, 1), -) -# fmt: on - - -class JapaneseContextAnalysis: - NUM_OF_CATEGORY = 6 - DONT_KNOW = -1 - ENOUGH_REL_THRESHOLD = 100 - MAX_REL_THRESHOLD = 1000 - MINIMUM_DATA_THRESHOLD = 4 - - def __init__(self) -> None: - self._total_rel = 0 - self._rel_sample: List[int] = [] - self._need_to_skip_char_num = 0 - self._last_char_order = -1 - self._done = False - self.reset() - - def reset(self) -> None: - self._total_rel = 0 # total sequence received - # category counters, each integer counts sequence in its category - self._rel_sample = [0] * self.NUM_OF_CATEGORY - # if last byte in current buffer is not the last byte of a character, - # we need to know how many bytes to skip in next buffer - self._need_to_skip_char_num = 0 - self._last_char_order = -1 # The order of previous char - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - - def feed(self, byte_str: Union[bytes, bytearray], num_bytes: int) -> None: - if self._done: - return - - # The buffer we got is byte oriented, and a character may span in more than one - # buffers. In case the last one or two byte in last buffer is not - # complete, we record how many byte needed to complete that character - # and skip these bytes here. We can choose to record those bytes as - # well and analyse the character once it is complete, but since a - # character will not make much difference, by simply skipping - # this character will simply our logic and improve performance. - i = self._need_to_skip_char_num - while i < num_bytes: - order, char_len = self.get_order(byte_str[i : i + 2]) - i += char_len - if i > num_bytes: - self._need_to_skip_char_num = i - num_bytes - self._last_char_order = -1 - else: - if (order != -1) and (self._last_char_order != -1): - self._total_rel += 1 - if self._total_rel > self.MAX_REL_THRESHOLD: - self._done = True - break - self._rel_sample[ - jp2_char_context[self._last_char_order][order] - ] += 1 - self._last_char_order = order - - def got_enough_data(self) -> bool: - return self._total_rel > self.ENOUGH_REL_THRESHOLD - - def get_confidence(self) -> float: - # This is just one way to calculate confidence. It works well for me. - if self._total_rel > self.MINIMUM_DATA_THRESHOLD: - return (self._total_rel - self._rel_sample[0]) / self._total_rel - return self.DONT_KNOW - - def get_order(self, _: Union[bytes, bytearray]) -> Tuple[int, int]: - return -1, 1 - - -class SJISContextAnalysis(JapaneseContextAnalysis): - def __init__(self) -> None: - super().__init__() - self._charset_name = "SHIFT_JIS" - - @property - def charset_name(self) -> str: - return self._charset_name - - def get_order(self, byte_str: Union[bytes, bytearray]) -> Tuple[int, int]: - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): - char_len = 2 - if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): - self._charset_name = "CP932" - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 202) and (0x9F <= second_char <= 0xF1): - return second_char - 0x9F, char_len - - return -1, char_len - - -class EUCJPContextAnalysis(JapaneseContextAnalysis): - def get_order(self, byte_str: Union[bytes, bytearray]) -> Tuple[int, int]: - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): - char_len = 2 - elif first_char == 0x8F: - char_len = 3 - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): - return second_char - 0xA1, char_len - - return -1, char_len diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py deleted file mode 100644 index 9946682..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +++ /dev/null @@ -1,4649 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -BULGARIAN_LANG_MODEL = { - 63: { # 'e' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 1, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 0, # 'и' - 26: 1, # 'й' - 12: 1, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 1, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 0, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 45: { # '\xad' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 0, # 'Л' - 38: 1, # 'М' - 36: 0, # 'Н' - 41: 1, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 1, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 0, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 0, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 31: { # 'А' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 2, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 2, # 'Е' - 55: 1, # 'Ж' - 47: 2, # 'З' - 40: 1, # 'И' - 59: 1, # 'Й' - 33: 1, # 'К' - 46: 2, # 'Л' - 38: 1, # 'М' - 36: 2, # 'Н' - 41: 1, # 'О' - 30: 2, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 2, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 2, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 1, # 'а' - 18: 2, # 'б' - 9: 2, # 'в' - 20: 2, # 'г' - 11: 2, # 'д' - 3: 1, # 'е' - 23: 1, # 'ж' - 15: 2, # 'з' - 2: 0, # 'и' - 26: 2, # 'й' - 12: 2, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 0, # 'о' - 13: 2, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 1, # 'у' - 29: 2, # 'ф' - 25: 1, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 32: { # 'Б' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 2, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 1, # 'Е' - 55: 1, # 'Ж' - 47: 2, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 2, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 2, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 0, # 'Ш' - 57: 1, # 'Щ' - 61: 2, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 2, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 1, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 35: { # 'В' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 2, # 'Ф' - 49: 0, # 'Х' - 53: 1, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 2, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 2, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 2, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 43: { # 'Г' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 0, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 1, # 'Щ' - 61: 1, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 1, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 37: { # 'Д' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 2, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 2, # 'Е' - 55: 2, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 2, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 2, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 2, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 44: { # 'Е' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 2, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 1, # 'Й' - 33: 2, # 'К' - 46: 2, # 'Л' - 38: 1, # 'М' - 36: 2, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 2, # 'Ф' - 49: 1, # 'Х' - 53: 2, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 1, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 0, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 2, # 'д' - 3: 0, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 0, # 'и' - 26: 1, # 'й' - 12: 2, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 2, # 'н' - 4: 0, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 1, # 'т' - 19: 1, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 55: { # 'Ж' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 47: { # 'З' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 2, # 'Н' - 41: 1, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 2, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 1, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 1, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 40: { # 'И' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 1, # 'Ж' - 47: 2, # 'З' - 40: 1, # 'И' - 59: 1, # 'Й' - 33: 2, # 'К' - 46: 2, # 'Л' - 38: 2, # 'М' - 36: 2, # 'Н' - 41: 1, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 0, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 1, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 2, # 'Я' - 1: 1, # 'а' - 18: 1, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 1, # 'д' - 3: 1, # 'е' - 23: 0, # 'ж' - 15: 3, # 'з' - 2: 0, # 'и' - 26: 1, # 'й' - 12: 1, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 2, # 'н' - 4: 0, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 0, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 59: { # 'Й' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 1, # 'С' - 34: 1, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 1, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 1, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 33: { # 'К' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 2, # 'Н' - 41: 2, # 'О' - 30: 2, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 1, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 2, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 3, # 'р' - 8: 1, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 46: { # 'Л' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 2, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 0, # 'Р' - 28: 1, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 38: { # 'М' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 2, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 1, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 2, # 'л' - 14: 0, # 'м' - 6: 2, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 36: { # 'Н' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 2, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 2, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 1, # 'Й' - 33: 2, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 1, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 1, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 2, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 41: { # 'О' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 2, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 1, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 1, # 'Й' - 33: 2, # 'К' - 46: 2, # 'Л' - 38: 2, # 'М' - 36: 2, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 0, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 1, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 1, # 'а' - 18: 2, # 'б' - 9: 2, # 'в' - 20: 2, # 'г' - 11: 1, # 'д' - 3: 1, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 0, # 'и' - 26: 1, # 'й' - 12: 2, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 0, # 'о' - 13: 2, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 3, # 'т' - 19: 1, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 1, # 'ц' - 21: 2, # 'ч' - 27: 0, # 'ш' - 24: 2, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 30: { # 'П' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 2, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 2, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 3, # 'л' - 14: 0, # 'м' - 6: 1, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 3, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 2, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 39: { # 'Р' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 2, # 'Г' - 37: 2, # 'Д' - 44: 2, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 0, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 2, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 1, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 1, # 'с' - 5: 0, # 'т' - 19: 3, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 28: { # 'С' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 3, # 'А' - 32: 2, # 'Б' - 35: 2, # 'В' - 43: 1, # 'Г' - 37: 2, # 'Д' - 44: 2, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 2, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 2, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 2, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 1, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 2, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 1, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 3, # 'т' - 19: 2, # 'у' - 29: 2, # 'ф' - 25: 1, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 34: { # 'Т' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 2, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 2, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 2, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 1, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 1, # 'Ъ' - 60: 0, # 'Ю' - 56: 1, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 1, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 3, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 51: { # 'У' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 2, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 0, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 2, # 'Т' - 51: 0, # 'У' - 48: 1, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 1, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 2, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 2, # 'и' - 26: 1, # 'й' - 12: 2, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 2, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 2, # 'с' - 5: 1, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 48: { # 'Ф' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 2, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 1, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 2, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 49: { # 'Х' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 1, # 'П' - 39: 1, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 1, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 53: { # 'Ц' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 2, # 'И' - 59: 0, # 'Й' - 33: 2, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 1, # 'Р' - 28: 2, # 'С' - 34: 0, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 2, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 1, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 50: { # 'Ч' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 2, # 'А' - 32: 1, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 1, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 2, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 1, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 54: { # 'Ш' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 1, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 1, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 2, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 2, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 1, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 57: { # 'Щ' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 1, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 1, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 1, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 1, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 61: { # 'Ъ' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 1, # 'Д' - 44: 0, # 'Е' - 55: 1, # 'Ж' - 47: 1, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 2, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 0, # 'О' - 30: 1, # 'П' - 39: 2, # 'Р' - 28: 1, # 'С' - 34: 1, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 1, # 'Х' - 53: 1, # 'Ц' - 50: 1, # 'Ч' - 54: 1, # 'Ш' - 57: 1, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 0, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 1, # 'л' - 14: 0, # 'м' - 6: 1, # 'н' - 4: 0, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 60: { # 'Ю' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 1, # 'Б' - 35: 0, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 0, # 'Е' - 55: 1, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 0, # 'М' - 36: 1, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 1, # 'Р' - 28: 1, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 2, # 'г' - 11: 1, # 'д' - 3: 0, # 'е' - 23: 2, # 'ж' - 15: 1, # 'з' - 2: 1, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 0, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 56: { # 'Я' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 1, # 'Б' - 35: 1, # 'В' - 43: 1, # 'Г' - 37: 1, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 1, # 'Л' - 38: 1, # 'М' - 36: 1, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 1, # 'С' - 34: 2, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 0, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 1, # 'и' - 26: 1, # 'й' - 12: 1, # 'к' - 10: 1, # 'л' - 14: 2, # 'м' - 6: 2, # 'н' - 4: 0, # 'о' - 13: 2, # 'п' - 7: 1, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 1: { # 'а' - 63: 1, # 'e' - 45: 1, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 1, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 1, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 3, # 'и' - 26: 3, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 3, # 'ф' - 25: 3, # 'х' - 22: 3, # 'ц' - 21: 3, # 'ч' - 27: 3, # 'ш' - 24: 3, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 18: { # 'б' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 3, # 'в' - 20: 1, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 0, # 'т' - 19: 3, # 'у' - 29: 0, # 'ф' - 25: 2, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 3, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 9: { # 'в' - 63: 1, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 1, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 0, # 'в' - 20: 2, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 3, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 2, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 3, # 'ч' - 27: 2, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 20: { # 'г' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 3, # 'л' - 14: 1, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 3, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 11: { # 'д' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 2, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 1, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 3: { # 'е' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 2, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 2, # 'и' - 26: 3, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 2, # 'у' - 29: 3, # 'ф' - 25: 3, # 'х' - 22: 3, # 'ц' - 21: 3, # 'ч' - 27: 3, # 'ш' - 24: 3, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 23: { # 'ж' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 2, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 15: { # 'з' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 2, # 'ш' - 24: 1, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 2: { # 'и' - 63: 1, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 1, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 1, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 1, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 1, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 3, # 'и' - 26: 3, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 2, # 'у' - 29: 3, # 'ф' - 25: 3, # 'х' - 22: 3, # 'ц' - 21: 3, # 'ч' - 27: 3, # 'ш' - 24: 3, # 'щ' - 17: 2, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 26: { # 'й' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 1, # 'а' - 18: 2, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 2, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 2, # 'з' - 2: 1, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 1, # 'у' - 29: 2, # 'ф' - 25: 1, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 12: { # 'к' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 1, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 1, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 3, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 10: { # 'л' - 63: 1, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 1, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 1, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 2, # 'п' - 7: 2, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 2, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 2, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 2, # 'ь' - 42: 3, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 14: { # 'м' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 1, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 2, # 'к' - 10: 3, # 'л' - 14: 1, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 1, # 'т' - 19: 3, # 'у' - 29: 2, # 'ф' - 25: 1, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 2, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 6: { # 'н' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 1, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 2, # 'б' - 9: 2, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 2, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 3, # 'ф' - 25: 2, # 'х' - 22: 3, # 'ц' - 21: 3, # 'ч' - 27: 2, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 2, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 4: { # 'о' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 2, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 3, # 'и' - 26: 3, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 2, # 'у' - 29: 3, # 'ф' - 25: 3, # 'х' - 22: 3, # 'ц' - 21: 3, # 'ч' - 27: 3, # 'ш' - 24: 3, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 13: { # 'п' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 1, # 'й' - 12: 2, # 'к' - 10: 3, # 'л' - 14: 1, # 'м' - 6: 2, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 3, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 7: { # 'р' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 3, # 'е' - 23: 3, # 'ж' - 15: 2, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 2, # 'п' - 7: 1, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 2, # 'ф' - 25: 3, # 'х' - 22: 3, # 'ц' - 21: 2, # 'ч' - 27: 3, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 1, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 8: { # 'с' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 2, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 1, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 2, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 2, # 'ш' - 24: 0, # 'щ' - 17: 3, # 'ъ' - 52: 2, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 5: { # 'т' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 2, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 2, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 3, # 'у' - 29: 1, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 2, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 3, # 'ъ' - 52: 2, # 'ь' - 42: 2, # 'ю' - 16: 3, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 19: { # 'у' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 2, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 2, # 'и' - 26: 2, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 1, # 'у' - 29: 2, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 3, # 'ч' - 27: 3, # 'ш' - 24: 2, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 29: { # 'ф' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 1, # 'в' - 20: 1, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 2, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 2, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 2, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 25: { # 'х' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 3, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 2, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 1, # 'п' - 7: 3, # 'р' - 8: 1, # 'с' - 5: 2, # 'т' - 19: 3, # 'у' - 29: 0, # 'ф' - 25: 1, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 22: { # 'ц' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 2, # 'в' - 20: 1, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 1, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 2, # 'к' - 10: 1, # 'л' - 14: 1, # 'м' - 6: 1, # 'н' - 4: 2, # 'о' - 13: 1, # 'п' - 7: 1, # 'р' - 8: 1, # 'с' - 5: 1, # 'т' - 19: 2, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 1, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 0, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 21: { # 'ч' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 1, # 'б' - 9: 3, # 'в' - 20: 1, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 1, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 2, # 'р' - 8: 0, # 'с' - 5: 2, # 'т' - 19: 3, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 1, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 27: { # 'ш' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 2, # 'в' - 20: 0, # 'г' - 11: 1, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 3, # 'к' - 10: 2, # 'л' - 14: 1, # 'м' - 6: 3, # 'н' - 4: 2, # 'о' - 13: 2, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 1, # 'т' - 19: 2, # 'у' - 29: 1, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 1, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 2, # 'ъ' - 52: 1, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 24: { # 'щ' - 63: 1, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 3, # 'а' - 18: 0, # 'б' - 9: 1, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 3, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 3, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 2, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 1, # 'р' - 8: 0, # 'с' - 5: 2, # 'т' - 19: 3, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 1, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 2, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 17: { # 'ъ' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 1, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 3, # 'г' - 11: 3, # 'д' - 3: 2, # 'е' - 23: 3, # 'ж' - 15: 3, # 'з' - 2: 1, # 'и' - 26: 2, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 3, # 'о' - 13: 3, # 'п' - 7: 3, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 1, # 'у' - 29: 1, # 'ф' - 25: 2, # 'х' - 22: 2, # 'ц' - 21: 3, # 'ч' - 27: 2, # 'ш' - 24: 3, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 2, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 52: { # 'ь' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 1, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 1, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 1, # 'н' - 4: 3, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 1, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 1, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 1, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 42: { # 'ю' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 1, # 'а' - 18: 2, # 'б' - 9: 1, # 'в' - 20: 2, # 'г' - 11: 2, # 'д' - 3: 1, # 'е' - 23: 2, # 'ж' - 15: 2, # 'з' - 2: 1, # 'и' - 26: 1, # 'й' - 12: 2, # 'к' - 10: 2, # 'л' - 14: 2, # 'м' - 6: 2, # 'н' - 4: 1, # 'о' - 13: 1, # 'п' - 7: 2, # 'р' - 8: 2, # 'с' - 5: 2, # 'т' - 19: 1, # 'у' - 29: 1, # 'ф' - 25: 1, # 'х' - 22: 2, # 'ц' - 21: 3, # 'ч' - 27: 1, # 'ш' - 24: 1, # 'щ' - 17: 1, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 16: { # 'я' - 63: 0, # 'e' - 45: 1, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 3, # 'б' - 9: 3, # 'в' - 20: 2, # 'г' - 11: 3, # 'д' - 3: 2, # 'е' - 23: 1, # 'ж' - 15: 2, # 'з' - 2: 1, # 'и' - 26: 2, # 'й' - 12: 3, # 'к' - 10: 3, # 'л' - 14: 3, # 'м' - 6: 3, # 'н' - 4: 1, # 'о' - 13: 2, # 'п' - 7: 2, # 'р' - 8: 3, # 'с' - 5: 3, # 'т' - 19: 1, # 'у' - 29: 1, # 'ф' - 25: 3, # 'х' - 22: 2, # 'ц' - 21: 1, # 'ч' - 27: 1, # 'ш' - 24: 2, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 1, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 58: { # 'є' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 0, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 0, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, - 62: { # '№' - 63: 0, # 'e' - 45: 0, # '\xad' - 31: 0, # 'А' - 32: 0, # 'Б' - 35: 0, # 'В' - 43: 0, # 'Г' - 37: 0, # 'Д' - 44: 0, # 'Е' - 55: 0, # 'Ж' - 47: 0, # 'З' - 40: 0, # 'И' - 59: 0, # 'Й' - 33: 0, # 'К' - 46: 0, # 'Л' - 38: 0, # 'М' - 36: 0, # 'Н' - 41: 0, # 'О' - 30: 0, # 'П' - 39: 0, # 'Р' - 28: 0, # 'С' - 34: 0, # 'Т' - 51: 0, # 'У' - 48: 0, # 'Ф' - 49: 0, # 'Х' - 53: 0, # 'Ц' - 50: 0, # 'Ч' - 54: 0, # 'Ш' - 57: 0, # 'Щ' - 61: 0, # 'Ъ' - 60: 0, # 'Ю' - 56: 0, # 'Я' - 1: 0, # 'а' - 18: 0, # 'б' - 9: 0, # 'в' - 20: 0, # 'г' - 11: 0, # 'д' - 3: 0, # 'е' - 23: 0, # 'ж' - 15: 0, # 'з' - 2: 0, # 'и' - 26: 0, # 'й' - 12: 0, # 'к' - 10: 0, # 'л' - 14: 0, # 'м' - 6: 0, # 'н' - 4: 0, # 'о' - 13: 0, # 'п' - 7: 0, # 'р' - 8: 0, # 'с' - 5: 0, # 'т' - 19: 0, # 'у' - 29: 0, # 'ф' - 25: 0, # 'х' - 22: 0, # 'ц' - 21: 0, # 'ч' - 27: 0, # 'ш' - 24: 0, # 'щ' - 17: 0, # 'ъ' - 52: 0, # 'ь' - 42: 0, # 'ю' - 16: 0, # 'я' - 58: 0, # 'є' - 62: 0, # '№' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -ISO_8859_5_BULGARIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 77, # 'A' - 66: 90, # 'B' - 67: 99, # 'C' - 68: 100, # 'D' - 69: 72, # 'E' - 70: 109, # 'F' - 71: 107, # 'G' - 72: 101, # 'H' - 73: 79, # 'I' - 74: 185, # 'J' - 75: 81, # 'K' - 76: 102, # 'L' - 77: 76, # 'M' - 78: 94, # 'N' - 79: 82, # 'O' - 80: 110, # 'P' - 81: 186, # 'Q' - 82: 108, # 'R' - 83: 91, # 'S' - 84: 74, # 'T' - 85: 119, # 'U' - 86: 84, # 'V' - 87: 96, # 'W' - 88: 111, # 'X' - 89: 187, # 'Y' - 90: 115, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 65, # 'a' - 98: 69, # 'b' - 99: 70, # 'c' - 100: 66, # 'd' - 101: 63, # 'e' - 102: 68, # 'f' - 103: 112, # 'g' - 104: 103, # 'h' - 105: 92, # 'i' - 106: 194, # 'j' - 107: 104, # 'k' - 108: 95, # 'l' - 109: 86, # 'm' - 110: 87, # 'n' - 111: 71, # 'o' - 112: 116, # 'p' - 113: 195, # 'q' - 114: 85, # 'r' - 115: 93, # 's' - 116: 97, # 't' - 117: 113, # 'u' - 118: 196, # 'v' - 119: 197, # 'w' - 120: 198, # 'x' - 121: 199, # 'y' - 122: 200, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 194, # '\x80' - 129: 195, # '\x81' - 130: 196, # '\x82' - 131: 197, # '\x83' - 132: 198, # '\x84' - 133: 199, # '\x85' - 134: 200, # '\x86' - 135: 201, # '\x87' - 136: 202, # '\x88' - 137: 203, # '\x89' - 138: 204, # '\x8a' - 139: 205, # '\x8b' - 140: 206, # '\x8c' - 141: 207, # '\x8d' - 142: 208, # '\x8e' - 143: 209, # '\x8f' - 144: 210, # '\x90' - 145: 211, # '\x91' - 146: 212, # '\x92' - 147: 213, # '\x93' - 148: 214, # '\x94' - 149: 215, # '\x95' - 150: 216, # '\x96' - 151: 217, # '\x97' - 152: 218, # '\x98' - 153: 219, # '\x99' - 154: 220, # '\x9a' - 155: 221, # '\x9b' - 156: 222, # '\x9c' - 157: 223, # '\x9d' - 158: 224, # '\x9e' - 159: 225, # '\x9f' - 160: 81, # '\xa0' - 161: 226, # 'Ё' - 162: 227, # 'Ђ' - 163: 228, # 'Ѓ' - 164: 229, # 'Є' - 165: 230, # 'Ѕ' - 166: 105, # 'І' - 167: 231, # 'Ї' - 168: 232, # 'Ј' - 169: 233, # 'Љ' - 170: 234, # 'Њ' - 171: 235, # 'Ћ' - 172: 236, # 'Ќ' - 173: 45, # '\xad' - 174: 237, # 'Ў' - 175: 238, # 'Џ' - 176: 31, # 'А' - 177: 32, # 'Б' - 178: 35, # 'В' - 179: 43, # 'Г' - 180: 37, # 'Д' - 181: 44, # 'Е' - 182: 55, # 'Ж' - 183: 47, # 'З' - 184: 40, # 'И' - 185: 59, # 'Й' - 186: 33, # 'К' - 187: 46, # 'Л' - 188: 38, # 'М' - 189: 36, # 'Н' - 190: 41, # 'О' - 191: 30, # 'П' - 192: 39, # 'Р' - 193: 28, # 'С' - 194: 34, # 'Т' - 195: 51, # 'У' - 196: 48, # 'Ф' - 197: 49, # 'Х' - 198: 53, # 'Ц' - 199: 50, # 'Ч' - 200: 54, # 'Ш' - 201: 57, # 'Щ' - 202: 61, # 'Ъ' - 203: 239, # 'Ы' - 204: 67, # 'Ь' - 205: 240, # 'Э' - 206: 60, # 'Ю' - 207: 56, # 'Я' - 208: 1, # 'а' - 209: 18, # 'б' - 210: 9, # 'в' - 211: 20, # 'г' - 212: 11, # 'д' - 213: 3, # 'е' - 214: 23, # 'ж' - 215: 15, # 'з' - 216: 2, # 'и' - 217: 26, # 'й' - 218: 12, # 'к' - 219: 10, # 'л' - 220: 14, # 'м' - 221: 6, # 'н' - 222: 4, # 'о' - 223: 13, # 'п' - 224: 7, # 'р' - 225: 8, # 'с' - 226: 5, # 'т' - 227: 19, # 'у' - 228: 29, # 'ф' - 229: 25, # 'х' - 230: 22, # 'ц' - 231: 21, # 'ч' - 232: 27, # 'ш' - 233: 24, # 'щ' - 234: 17, # 'ъ' - 235: 75, # 'ы' - 236: 52, # 'ь' - 237: 241, # 'э' - 238: 42, # 'ю' - 239: 16, # 'я' - 240: 62, # '№' - 241: 242, # 'ё' - 242: 243, # 'ђ' - 243: 244, # 'ѓ' - 244: 58, # 'є' - 245: 245, # 'ѕ' - 246: 98, # 'і' - 247: 246, # 'ї' - 248: 247, # 'ј' - 249: 248, # 'љ' - 250: 249, # 'њ' - 251: 250, # 'ћ' - 252: 251, # 'ќ' - 253: 91, # '§' - 254: 252, # 'ў' - 255: 253, # 'џ' -} - -ISO_8859_5_BULGARIAN_MODEL = SingleByteCharSetModel( - charset_name="ISO-8859-5", - language="Bulgarian", - char_to_order_map=ISO_8859_5_BULGARIAN_CHAR_TO_ORDER, - language_model=BULGARIAN_LANG_MODEL, - typical_positive_ratio=0.969392, - keep_ascii_letters=False, - alphabet="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя", -) - -WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 77, # 'A' - 66: 90, # 'B' - 67: 99, # 'C' - 68: 100, # 'D' - 69: 72, # 'E' - 70: 109, # 'F' - 71: 107, # 'G' - 72: 101, # 'H' - 73: 79, # 'I' - 74: 185, # 'J' - 75: 81, # 'K' - 76: 102, # 'L' - 77: 76, # 'M' - 78: 94, # 'N' - 79: 82, # 'O' - 80: 110, # 'P' - 81: 186, # 'Q' - 82: 108, # 'R' - 83: 91, # 'S' - 84: 74, # 'T' - 85: 119, # 'U' - 86: 84, # 'V' - 87: 96, # 'W' - 88: 111, # 'X' - 89: 187, # 'Y' - 90: 115, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 65, # 'a' - 98: 69, # 'b' - 99: 70, # 'c' - 100: 66, # 'd' - 101: 63, # 'e' - 102: 68, # 'f' - 103: 112, # 'g' - 104: 103, # 'h' - 105: 92, # 'i' - 106: 194, # 'j' - 107: 104, # 'k' - 108: 95, # 'l' - 109: 86, # 'm' - 110: 87, # 'n' - 111: 71, # 'o' - 112: 116, # 'p' - 113: 195, # 'q' - 114: 85, # 'r' - 115: 93, # 's' - 116: 97, # 't' - 117: 113, # 'u' - 118: 196, # 'v' - 119: 197, # 'w' - 120: 198, # 'x' - 121: 199, # 'y' - 122: 200, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 206, # 'Ђ' - 129: 207, # 'Ѓ' - 130: 208, # '‚' - 131: 209, # 'ѓ' - 132: 210, # '„' - 133: 211, # '…' - 134: 212, # '†' - 135: 213, # '‡' - 136: 120, # '€' - 137: 214, # '‰' - 138: 215, # 'Љ' - 139: 216, # '‹' - 140: 217, # 'Њ' - 141: 218, # 'Ќ' - 142: 219, # 'Ћ' - 143: 220, # 'Џ' - 144: 221, # 'ђ' - 145: 78, # '‘' - 146: 64, # '’' - 147: 83, # '“' - 148: 121, # '”' - 149: 98, # '•' - 150: 117, # '–' - 151: 105, # '—' - 152: 222, # None - 153: 223, # '™' - 154: 224, # 'љ' - 155: 225, # '›' - 156: 226, # 'њ' - 157: 227, # 'ќ' - 158: 228, # 'ћ' - 159: 229, # 'џ' - 160: 88, # '\xa0' - 161: 230, # 'Ў' - 162: 231, # 'ў' - 163: 232, # 'Ј' - 164: 233, # '¤' - 165: 122, # 'Ґ' - 166: 89, # '¦' - 167: 106, # '§' - 168: 234, # 'Ё' - 169: 235, # '©' - 170: 236, # 'Є' - 171: 237, # '«' - 172: 238, # '¬' - 173: 45, # '\xad' - 174: 239, # '®' - 175: 240, # 'Ї' - 176: 73, # '°' - 177: 80, # '±' - 178: 118, # 'І' - 179: 114, # 'і' - 180: 241, # 'ґ' - 181: 242, # 'µ' - 182: 243, # '¶' - 183: 244, # '·' - 184: 245, # 'ё' - 185: 62, # '№' - 186: 58, # 'є' - 187: 246, # '»' - 188: 247, # 'ј' - 189: 248, # 'Ѕ' - 190: 249, # 'ѕ' - 191: 250, # 'ї' - 192: 31, # 'А' - 193: 32, # 'Б' - 194: 35, # 'В' - 195: 43, # 'Г' - 196: 37, # 'Д' - 197: 44, # 'Е' - 198: 55, # 'Ж' - 199: 47, # 'З' - 200: 40, # 'И' - 201: 59, # 'Й' - 202: 33, # 'К' - 203: 46, # 'Л' - 204: 38, # 'М' - 205: 36, # 'Н' - 206: 41, # 'О' - 207: 30, # 'П' - 208: 39, # 'Р' - 209: 28, # 'С' - 210: 34, # 'Т' - 211: 51, # 'У' - 212: 48, # 'Ф' - 213: 49, # 'Х' - 214: 53, # 'Ц' - 215: 50, # 'Ч' - 216: 54, # 'Ш' - 217: 57, # 'Щ' - 218: 61, # 'Ъ' - 219: 251, # 'Ы' - 220: 67, # 'Ь' - 221: 252, # 'Э' - 222: 60, # 'Ю' - 223: 56, # 'Я' - 224: 1, # 'а' - 225: 18, # 'б' - 226: 9, # 'в' - 227: 20, # 'г' - 228: 11, # 'д' - 229: 3, # 'е' - 230: 23, # 'ж' - 231: 15, # 'з' - 232: 2, # 'и' - 233: 26, # 'й' - 234: 12, # 'к' - 235: 10, # 'л' - 236: 14, # 'м' - 237: 6, # 'н' - 238: 4, # 'о' - 239: 13, # 'п' - 240: 7, # 'р' - 241: 8, # 'с' - 242: 5, # 'т' - 243: 19, # 'у' - 244: 29, # 'ф' - 245: 25, # 'х' - 246: 22, # 'ц' - 247: 21, # 'ч' - 248: 27, # 'ш' - 249: 24, # 'щ' - 250: 17, # 'ъ' - 251: 75, # 'ы' - 252: 52, # 'ь' - 253: 253, # 'э' - 254: 42, # 'ю' - 255: 16, # 'я' -} - -WINDOWS_1251_BULGARIAN_MODEL = SingleByteCharSetModel( - charset_name="windows-1251", - language="Bulgarian", - char_to_order_map=WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER, - language_model=BULGARIAN_LANG_MODEL, - typical_positive_ratio=0.969392, - keep_ascii_letters=False, - alphabet="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py deleted file mode 100644 index cfb8639..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py +++ /dev/null @@ -1,4397 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -GREEK_LANG_MODEL = { - 60: { # 'e' - 60: 2, # 'e' - 55: 1, # 'o' - 58: 2, # 't' - 36: 1, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 55: { # 'o' - 60: 0, # 'e' - 55: 2, # 'o' - 58: 2, # 't' - 36: 1, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 1, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 1, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 58: { # 't' - 60: 2, # 'e' - 55: 1, # 'o' - 58: 1, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 1, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 36: { # '·' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 61: { # 'Ά' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 1, # 'γ' - 21: 2, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 1, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 46: { # 'Έ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 2, # 'β' - 20: 2, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 2, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 0, # 'ο' - 9: 2, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 1, # 'σ' - 2: 2, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 54: { # 'Ό' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 2, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 2, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 2, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 31: { # 'Α' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 2, # 'Β' - 43: 2, # 'Γ' - 41: 1, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 2, # 'Θ' - 47: 2, # 'Ι' - 44: 2, # 'Κ' - 53: 2, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 1, # 'Ξ' - 39: 0, # 'Ο' - 35: 2, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 2, # 'Υ' - 56: 2, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 2, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 1, # 'θ' - 5: 0, # 'ι' - 11: 2, # 'κ' - 16: 3, # 'λ' - 10: 2, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 2, # 'ς' - 7: 2, # 'σ' - 2: 0, # 'τ' - 12: 3, # 'υ' - 28: 2, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 51: { # 'Β' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 1, # 'Ε' - 40: 1, # 'Η' - 52: 0, # 'Θ' - 47: 1, # 'Ι' - 44: 0, # 'Κ' - 53: 1, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 2, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 43: { # 'Γ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 1, # 'Α' - 51: 0, # 'Β' - 43: 2, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 1, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 1, # 'Κ' - 53: 1, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 1, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 2, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 2, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 41: { # 'Δ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 2, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 2, # 'ή' - 15: 2, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 1, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 34: { # 'Ε' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 2, # 'Γ' - 41: 2, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 2, # 'Κ' - 53: 2, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 1, # 'Ξ' - 39: 0, # 'Ο' - 35: 2, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 2, # 'Υ' - 56: 0, # 'Φ' - 50: 2, # 'Χ' - 57: 2, # 'Ω' - 17: 3, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 3, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 1, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 1, # 'θ' - 5: 2, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 2, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 2, # 'σ' - 2: 2, # 'τ' - 12: 2, # 'υ' - 28: 2, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 1, # 'ύ' - 27: 0, # 'ώ' - }, - 40: { # 'Η' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 1, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 2, # 'Θ' - 47: 0, # 'Ι' - 44: 2, # 'Κ' - 53: 0, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 2, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 1, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 1, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 1, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 52: { # 'Θ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 1, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 1, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 47: { # 'Ι' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 1, # 'Β' - 43: 1, # 'Γ' - 41: 2, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 2, # 'Κ' - 53: 2, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 0, # 'Υ' - 56: 2, # 'Φ' - 50: 0, # 'Χ' - 57: 2, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 2, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 1, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 2, # 'σ' - 2: 1, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 1, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 44: { # 'Κ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 1, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 1, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 1, # 'Τ' - 45: 2, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 1, # 'Ω' - 17: 3, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 2, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 53: { # 'Λ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 2, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 2, # 'Σ' - 33: 0, # 'Τ' - 45: 2, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 2, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 1, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 2, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 38: { # 'Μ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 2, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 2, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 2, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 2, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 3, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 2, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 49: { # 'Ν' - 60: 2, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 2, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 2, # 'Ω' - 17: 0, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 1, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 1, # 'ω' - 19: 2, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 59: { # 'Ξ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 1, # 'Ε' - 40: 1, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 1, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 39: { # 'Ο' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 1, # 'Β' - 43: 2, # 'Γ' - 41: 2, # 'Δ' - 34: 2, # 'Ε' - 40: 1, # 'Η' - 52: 2, # 'Θ' - 47: 2, # 'Ι' - 44: 2, # 'Κ' - 53: 2, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 2, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 2, # 'Υ' - 56: 2, # 'Φ' - 50: 2, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 2, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 2, # 'κ' - 16: 2, # 'λ' - 10: 2, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 2, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 2, # 'τ' - 12: 2, # 'υ' - 28: 1, # 'φ' - 23: 1, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 35: { # 'Π' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 2, # 'Λ' - 38: 1, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 1, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 2, # 'Ω' - 17: 2, # 'ά' - 18: 1, # 'έ' - 22: 1, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 2, # 'ό' - 26: 0, # 'ύ' - 27: 3, # 'ώ' - }, - 48: { # 'Ρ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 1, # 'Γ' - 41: 1, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 1, # 'Τ' - 45: 1, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 1, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 2, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 1, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 37: { # 'Σ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 1, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 2, # 'Κ' - 53: 0, # 'Λ' - 38: 2, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 2, # 'Υ' - 56: 0, # 'Φ' - 50: 2, # 'Χ' - 57: 2, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 2, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 2, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 2, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 2, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 33: { # 'Τ' - 60: 0, # 'e' - 55: 1, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 2, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 2, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 1, # 'Τ' - 45: 1, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 2, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 2, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 2, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 2, # 'ό' - 26: 2, # 'ύ' - 27: 3, # 'ώ' - }, - 45: { # 'Υ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 2, # 'Γ' - 41: 0, # 'Δ' - 34: 1, # 'Ε' - 40: 2, # 'Η' - 52: 2, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 1, # 'Λ' - 38: 2, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 2, # 'Π' - 48: 1, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 56: { # 'Φ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 1, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 1, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 2, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 2, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 1, # 'ύ' - 27: 1, # 'ώ' - }, - 50: { # 'Χ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 1, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 2, # 'Ε' - 40: 2, # 'Η' - 52: 0, # 'Θ' - 47: 2, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 1, # 'Ν' - 59: 0, # 'Ξ' - 39: 1, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 1, # 'Χ' - 57: 1, # 'Ω' - 17: 2, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 2, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 2, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 57: { # 'Ω' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 1, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 1, # 'Λ' - 38: 0, # 'Μ' - 49: 2, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 2, # 'Ρ' - 37: 2, # 'Σ' - 33: 2, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 2, # 'ρ' - 14: 2, # 'ς' - 7: 2, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 1, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 17: { # 'ά' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 3, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 2, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 3, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 18: { # 'έ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 3, # 'α' - 29: 2, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 3, # 'ε' - 32: 2, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 3, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 22: { # 'ή' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 1, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 2, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 15: { # 'ί' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 3, # 'α' - 29: 2, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 3, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 1, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 3, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 1: { # 'α' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 2, # 'έ' - 22: 0, # 'ή' - 15: 3, # 'ί' - 1: 0, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 2, # 'ε' - 32: 3, # 'ζ' - 13: 1, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 2, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 0, # 'ω' - 19: 2, # 'ό' - 26: 2, # 'ύ' - 27: 0, # 'ώ' - }, - 29: { # 'β' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 2, # 'έ' - 22: 3, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 2, # 'γ' - 21: 2, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 3, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 2, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 20: { # 'γ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 3, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 3, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 2, # 'ύ' - 27: 3, # 'ώ' - }, - 21: { # 'δ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 3: { # 'ε' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 3, # 'ί' - 1: 2, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 2, # 'ε' - 32: 2, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 2, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 3, # 'ω' - 19: 2, # 'ό' - 26: 3, # 'ύ' - 27: 2, # 'ώ' - }, - 32: { # 'ζ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 2, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 1, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 2, # 'ό' - 26: 0, # 'ύ' - 27: 2, # 'ώ' - }, - 13: { # 'η' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 0, # 'ο' - 9: 2, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 25: { # 'θ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 1, # 'λ' - 10: 3, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 5: { # 'ι' - 60: 0, # 'e' - 55: 1, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 1, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 0, # 'ί' - 1: 3, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 2, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 0, # 'ύ' - 27: 3, # 'ώ' - }, - 11: { # 'κ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 2, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 2, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 2, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 16: { # 'λ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 1, # 'β' - 20: 2, # 'γ' - 21: 1, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 2, # 'θ' - 5: 3, # 'ι' - 11: 2, # 'κ' - 16: 3, # 'λ' - 10: 2, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 2, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 10: { # 'μ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 1, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 3, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 2, # 'υ' - 28: 3, # 'φ' - 23: 0, # 'χ' - 42: 2, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 6: { # 'ν' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 2, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 1, # 'λ' - 10: 0, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 30: { # 'ξ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 2, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 2, # 'ό' - 26: 3, # 'ύ' - 27: 1, # 'ώ' - }, - 4: { # 'ο' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 2, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 2, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 2, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 2, # 'ω' - 19: 1, # 'ό' - 26: 3, # 'ύ' - 27: 2, # 'ώ' - }, - 9: { # 'π' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 3, # 'λ' - 10: 0, # 'μ' - 6: 2, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 2, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 2, # 'ύ' - 27: 3, # 'ώ' - }, - 8: { # 'ρ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 2, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 1, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 3, # 'ο' - 9: 2, # 'π' - 8: 2, # 'ρ' - 14: 0, # 'ς' - 7: 2, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 14: { # 'ς' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 2, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 0, # 'θ' - 5: 0, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 0, # 'τ' - 12: 0, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 7: { # 'σ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 3, # 'β' - 20: 0, # 'γ' - 21: 2, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 3, # 'θ' - 5: 3, # 'ι' - 11: 3, # 'κ' - 16: 2, # 'λ' - 10: 3, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 3, # 'φ' - 23: 3, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 2, # 'ώ' - }, - 2: { # 'τ' - 60: 0, # 'e' - 55: 2, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 2, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 3, # 'ι' - 11: 2, # 'κ' - 16: 2, # 'λ' - 10: 3, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 2, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 12: { # 'υ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 3, # 'ή' - 15: 2, # 'ί' - 1: 3, # 'α' - 29: 2, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 2, # 'ε' - 32: 2, # 'ζ' - 13: 2, # 'η' - 25: 3, # 'θ' - 5: 2, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 3, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 2, # 'ω' - 19: 2, # 'ό' - 26: 0, # 'ύ' - 27: 2, # 'ώ' - }, - 28: { # 'φ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 3, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 2, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 0, # 'μ' - 6: 1, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 1, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 2, # 'ύ' - 27: 2, # 'ώ' - }, - 23: { # 'χ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 3, # 'ά' - 18: 2, # 'έ' - 22: 3, # 'ή' - 15: 3, # 'ί' - 1: 3, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 2, # 'θ' - 5: 3, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 2, # 'μ' - 6: 3, # 'ν' - 30: 0, # 'ξ' - 4: 3, # 'ο' - 9: 0, # 'π' - 8: 3, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 3, # 'τ' - 12: 3, # 'υ' - 28: 0, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 3, # 'ω' - 19: 3, # 'ό' - 26: 3, # 'ύ' - 27: 3, # 'ώ' - }, - 42: { # 'ψ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 2, # 'ά' - 18: 2, # 'έ' - 22: 1, # 'ή' - 15: 2, # 'ί' - 1: 2, # 'α' - 29: 0, # 'β' - 20: 0, # 'γ' - 21: 0, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 3, # 'η' - 25: 0, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 0, # 'λ' - 10: 0, # 'μ' - 6: 0, # 'ν' - 30: 0, # 'ξ' - 4: 2, # 'ο' - 9: 0, # 'π' - 8: 0, # 'ρ' - 14: 0, # 'ς' - 7: 0, # 'σ' - 2: 2, # 'τ' - 12: 1, # 'υ' - 28: 0, # 'φ' - 23: 0, # 'χ' - 42: 0, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 24: { # 'ω' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 1, # 'ά' - 18: 0, # 'έ' - 22: 2, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 2, # 'β' - 20: 3, # 'γ' - 21: 2, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 0, # 'η' - 25: 3, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 0, # 'ξ' - 4: 0, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 2, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 19: { # 'ό' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 3, # 'β' - 20: 3, # 'γ' - 21: 3, # 'δ' - 3: 1, # 'ε' - 32: 2, # 'ζ' - 13: 2, # 'η' - 25: 2, # 'θ' - 5: 2, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 1, # 'ξ' - 4: 2, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 3, # 'χ' - 42: 2, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 26: { # 'ύ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 2, # 'α' - 29: 2, # 'β' - 20: 2, # 'γ' - 21: 1, # 'δ' - 3: 3, # 'ε' - 32: 0, # 'ζ' - 13: 2, # 'η' - 25: 3, # 'θ' - 5: 0, # 'ι' - 11: 3, # 'κ' - 16: 3, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 2, # 'ξ' - 4: 3, # 'ο' - 9: 3, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 2, # 'φ' - 23: 2, # 'χ' - 42: 2, # 'ψ' - 24: 2, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, - 27: { # 'ώ' - 60: 0, # 'e' - 55: 0, # 'o' - 58: 0, # 't' - 36: 0, # '·' - 61: 0, # 'Ά' - 46: 0, # 'Έ' - 54: 0, # 'Ό' - 31: 0, # 'Α' - 51: 0, # 'Β' - 43: 0, # 'Γ' - 41: 0, # 'Δ' - 34: 0, # 'Ε' - 40: 0, # 'Η' - 52: 0, # 'Θ' - 47: 0, # 'Ι' - 44: 0, # 'Κ' - 53: 0, # 'Λ' - 38: 0, # 'Μ' - 49: 0, # 'Ν' - 59: 0, # 'Ξ' - 39: 0, # 'Ο' - 35: 0, # 'Π' - 48: 0, # 'Ρ' - 37: 0, # 'Σ' - 33: 0, # 'Τ' - 45: 0, # 'Υ' - 56: 0, # 'Φ' - 50: 0, # 'Χ' - 57: 0, # 'Ω' - 17: 0, # 'ά' - 18: 0, # 'έ' - 22: 0, # 'ή' - 15: 0, # 'ί' - 1: 0, # 'α' - 29: 1, # 'β' - 20: 0, # 'γ' - 21: 3, # 'δ' - 3: 0, # 'ε' - 32: 0, # 'ζ' - 13: 1, # 'η' - 25: 2, # 'θ' - 5: 2, # 'ι' - 11: 0, # 'κ' - 16: 2, # 'λ' - 10: 3, # 'μ' - 6: 3, # 'ν' - 30: 1, # 'ξ' - 4: 0, # 'ο' - 9: 2, # 'π' - 8: 3, # 'ρ' - 14: 3, # 'ς' - 7: 3, # 'σ' - 2: 3, # 'τ' - 12: 0, # 'υ' - 28: 1, # 'φ' - 23: 1, # 'χ' - 42: 0, # 'ψ' - 24: 0, # 'ω' - 19: 0, # 'ό' - 26: 0, # 'ύ' - 27: 0, # 'ώ' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -WINDOWS_1253_GREEK_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 82, # 'A' - 66: 100, # 'B' - 67: 104, # 'C' - 68: 94, # 'D' - 69: 98, # 'E' - 70: 101, # 'F' - 71: 116, # 'G' - 72: 102, # 'H' - 73: 111, # 'I' - 74: 187, # 'J' - 75: 117, # 'K' - 76: 92, # 'L' - 77: 88, # 'M' - 78: 113, # 'N' - 79: 85, # 'O' - 80: 79, # 'P' - 81: 118, # 'Q' - 82: 105, # 'R' - 83: 83, # 'S' - 84: 67, # 'T' - 85: 114, # 'U' - 86: 119, # 'V' - 87: 95, # 'W' - 88: 99, # 'X' - 89: 109, # 'Y' - 90: 188, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 72, # 'a' - 98: 70, # 'b' - 99: 80, # 'c' - 100: 81, # 'd' - 101: 60, # 'e' - 102: 96, # 'f' - 103: 93, # 'g' - 104: 89, # 'h' - 105: 68, # 'i' - 106: 120, # 'j' - 107: 97, # 'k' - 108: 77, # 'l' - 109: 86, # 'm' - 110: 69, # 'n' - 111: 55, # 'o' - 112: 78, # 'p' - 113: 115, # 'q' - 114: 65, # 'r' - 115: 66, # 's' - 116: 58, # 't' - 117: 76, # 'u' - 118: 106, # 'v' - 119: 103, # 'w' - 120: 87, # 'x' - 121: 107, # 'y' - 122: 112, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 255, # '€' - 129: 255, # None - 130: 255, # '‚' - 131: 255, # 'ƒ' - 132: 255, # '„' - 133: 255, # '…' - 134: 255, # '†' - 135: 255, # '‡' - 136: 255, # None - 137: 255, # '‰' - 138: 255, # None - 139: 255, # '‹' - 140: 255, # None - 141: 255, # None - 142: 255, # None - 143: 255, # None - 144: 255, # None - 145: 255, # '‘' - 146: 255, # '’' - 147: 255, # '“' - 148: 255, # '”' - 149: 255, # '•' - 150: 255, # '–' - 151: 255, # '—' - 152: 255, # None - 153: 255, # '™' - 154: 255, # None - 155: 255, # '›' - 156: 255, # None - 157: 255, # None - 158: 255, # None - 159: 255, # None - 160: 253, # '\xa0' - 161: 233, # '΅' - 162: 61, # 'Ά' - 163: 253, # '£' - 164: 253, # '¤' - 165: 253, # '¥' - 166: 253, # '¦' - 167: 253, # '§' - 168: 253, # '¨' - 169: 253, # '©' - 170: 253, # None - 171: 253, # '«' - 172: 253, # '¬' - 173: 74, # '\xad' - 174: 253, # '®' - 175: 253, # '―' - 176: 253, # '°' - 177: 253, # '±' - 178: 253, # '²' - 179: 253, # '³' - 180: 247, # '΄' - 181: 253, # 'µ' - 182: 253, # '¶' - 183: 36, # '·' - 184: 46, # 'Έ' - 185: 71, # 'Ή' - 186: 73, # 'Ί' - 187: 253, # '»' - 188: 54, # 'Ό' - 189: 253, # '½' - 190: 108, # 'Ύ' - 191: 123, # 'Ώ' - 192: 110, # 'ΐ' - 193: 31, # 'Α' - 194: 51, # 'Β' - 195: 43, # 'Γ' - 196: 41, # 'Δ' - 197: 34, # 'Ε' - 198: 91, # 'Ζ' - 199: 40, # 'Η' - 200: 52, # 'Θ' - 201: 47, # 'Ι' - 202: 44, # 'Κ' - 203: 53, # 'Λ' - 204: 38, # 'Μ' - 205: 49, # 'Ν' - 206: 59, # 'Ξ' - 207: 39, # 'Ο' - 208: 35, # 'Π' - 209: 48, # 'Ρ' - 210: 250, # None - 211: 37, # 'Σ' - 212: 33, # 'Τ' - 213: 45, # 'Υ' - 214: 56, # 'Φ' - 215: 50, # 'Χ' - 216: 84, # 'Ψ' - 217: 57, # 'Ω' - 218: 120, # 'Ϊ' - 219: 121, # 'Ϋ' - 220: 17, # 'ά' - 221: 18, # 'έ' - 222: 22, # 'ή' - 223: 15, # 'ί' - 224: 124, # 'ΰ' - 225: 1, # 'α' - 226: 29, # 'β' - 227: 20, # 'γ' - 228: 21, # 'δ' - 229: 3, # 'ε' - 230: 32, # 'ζ' - 231: 13, # 'η' - 232: 25, # 'θ' - 233: 5, # 'ι' - 234: 11, # 'κ' - 235: 16, # 'λ' - 236: 10, # 'μ' - 237: 6, # 'ν' - 238: 30, # 'ξ' - 239: 4, # 'ο' - 240: 9, # 'π' - 241: 8, # 'ρ' - 242: 14, # 'ς' - 243: 7, # 'σ' - 244: 2, # 'τ' - 245: 12, # 'υ' - 246: 28, # 'φ' - 247: 23, # 'χ' - 248: 42, # 'ψ' - 249: 24, # 'ω' - 250: 64, # 'ϊ' - 251: 75, # 'ϋ' - 252: 19, # 'ό' - 253: 26, # 'ύ' - 254: 27, # 'ώ' - 255: 253, # None -} - -WINDOWS_1253_GREEK_MODEL = SingleByteCharSetModel( - charset_name="windows-1253", - language="Greek", - char_to_order_map=WINDOWS_1253_GREEK_CHAR_TO_ORDER, - language_model=GREEK_LANG_MODEL, - typical_positive_ratio=0.982851, - keep_ascii_letters=False, - alphabet="ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ", -) - -ISO_8859_7_GREEK_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 82, # 'A' - 66: 100, # 'B' - 67: 104, # 'C' - 68: 94, # 'D' - 69: 98, # 'E' - 70: 101, # 'F' - 71: 116, # 'G' - 72: 102, # 'H' - 73: 111, # 'I' - 74: 187, # 'J' - 75: 117, # 'K' - 76: 92, # 'L' - 77: 88, # 'M' - 78: 113, # 'N' - 79: 85, # 'O' - 80: 79, # 'P' - 81: 118, # 'Q' - 82: 105, # 'R' - 83: 83, # 'S' - 84: 67, # 'T' - 85: 114, # 'U' - 86: 119, # 'V' - 87: 95, # 'W' - 88: 99, # 'X' - 89: 109, # 'Y' - 90: 188, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 72, # 'a' - 98: 70, # 'b' - 99: 80, # 'c' - 100: 81, # 'd' - 101: 60, # 'e' - 102: 96, # 'f' - 103: 93, # 'g' - 104: 89, # 'h' - 105: 68, # 'i' - 106: 120, # 'j' - 107: 97, # 'k' - 108: 77, # 'l' - 109: 86, # 'm' - 110: 69, # 'n' - 111: 55, # 'o' - 112: 78, # 'p' - 113: 115, # 'q' - 114: 65, # 'r' - 115: 66, # 's' - 116: 58, # 't' - 117: 76, # 'u' - 118: 106, # 'v' - 119: 103, # 'w' - 120: 87, # 'x' - 121: 107, # 'y' - 122: 112, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 255, # '\x80' - 129: 255, # '\x81' - 130: 255, # '\x82' - 131: 255, # '\x83' - 132: 255, # '\x84' - 133: 255, # '\x85' - 134: 255, # '\x86' - 135: 255, # '\x87' - 136: 255, # '\x88' - 137: 255, # '\x89' - 138: 255, # '\x8a' - 139: 255, # '\x8b' - 140: 255, # '\x8c' - 141: 255, # '\x8d' - 142: 255, # '\x8e' - 143: 255, # '\x8f' - 144: 255, # '\x90' - 145: 255, # '\x91' - 146: 255, # '\x92' - 147: 255, # '\x93' - 148: 255, # '\x94' - 149: 255, # '\x95' - 150: 255, # '\x96' - 151: 255, # '\x97' - 152: 255, # '\x98' - 153: 255, # '\x99' - 154: 255, # '\x9a' - 155: 255, # '\x9b' - 156: 255, # '\x9c' - 157: 255, # '\x9d' - 158: 255, # '\x9e' - 159: 255, # '\x9f' - 160: 253, # '\xa0' - 161: 233, # '‘' - 162: 90, # '’' - 163: 253, # '£' - 164: 253, # '€' - 165: 253, # '₯' - 166: 253, # '¦' - 167: 253, # '§' - 168: 253, # '¨' - 169: 253, # '©' - 170: 253, # 'ͺ' - 171: 253, # '«' - 172: 253, # '¬' - 173: 74, # '\xad' - 174: 253, # None - 175: 253, # '―' - 176: 253, # '°' - 177: 253, # '±' - 178: 253, # '²' - 179: 253, # '³' - 180: 247, # '΄' - 181: 248, # '΅' - 182: 61, # 'Ά' - 183: 36, # '·' - 184: 46, # 'Έ' - 185: 71, # 'Ή' - 186: 73, # 'Ί' - 187: 253, # '»' - 188: 54, # 'Ό' - 189: 253, # '½' - 190: 108, # 'Ύ' - 191: 123, # 'Ώ' - 192: 110, # 'ΐ' - 193: 31, # 'Α' - 194: 51, # 'Β' - 195: 43, # 'Γ' - 196: 41, # 'Δ' - 197: 34, # 'Ε' - 198: 91, # 'Ζ' - 199: 40, # 'Η' - 200: 52, # 'Θ' - 201: 47, # 'Ι' - 202: 44, # 'Κ' - 203: 53, # 'Λ' - 204: 38, # 'Μ' - 205: 49, # 'Ν' - 206: 59, # 'Ξ' - 207: 39, # 'Ο' - 208: 35, # 'Π' - 209: 48, # 'Ρ' - 210: 250, # None - 211: 37, # 'Σ' - 212: 33, # 'Τ' - 213: 45, # 'Υ' - 214: 56, # 'Φ' - 215: 50, # 'Χ' - 216: 84, # 'Ψ' - 217: 57, # 'Ω' - 218: 120, # 'Ϊ' - 219: 121, # 'Ϋ' - 220: 17, # 'ά' - 221: 18, # 'έ' - 222: 22, # 'ή' - 223: 15, # 'ί' - 224: 124, # 'ΰ' - 225: 1, # 'α' - 226: 29, # 'β' - 227: 20, # 'γ' - 228: 21, # 'δ' - 229: 3, # 'ε' - 230: 32, # 'ζ' - 231: 13, # 'η' - 232: 25, # 'θ' - 233: 5, # 'ι' - 234: 11, # 'κ' - 235: 16, # 'λ' - 236: 10, # 'μ' - 237: 6, # 'ν' - 238: 30, # 'ξ' - 239: 4, # 'ο' - 240: 9, # 'π' - 241: 8, # 'ρ' - 242: 14, # 'ς' - 243: 7, # 'σ' - 244: 2, # 'τ' - 245: 12, # 'υ' - 246: 28, # 'φ' - 247: 23, # 'χ' - 248: 42, # 'ψ' - 249: 24, # 'ω' - 250: 64, # 'ϊ' - 251: 75, # 'ϋ' - 252: 19, # 'ό' - 253: 26, # 'ύ' - 254: 27, # 'ώ' - 255: 253, # None -} - -ISO_8859_7_GREEK_MODEL = SingleByteCharSetModel( - charset_name="ISO-8859-7", - language="Greek", - char_to_order_map=ISO_8859_7_GREEK_CHAR_TO_ORDER, - language_model=GREEK_LANG_MODEL, - typical_positive_ratio=0.982851, - keep_ascii_letters=False, - alphabet="ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py deleted file mode 100644 index 56d2975..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -HEBREW_LANG_MODEL = { - 50: { # 'a' - 50: 0, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 2, # 'l' - 54: 2, # 'n' - 49: 0, # 'o' - 51: 2, # 'r' - 43: 1, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 1, # 'ק' - 7: 0, # 'ר' - 10: 1, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 60: { # 'c' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 0, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 0, # 'n' - 49: 1, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 61: { # 'd' - 50: 1, # 'a' - 60: 0, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 2, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 0, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 1, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 42: { # 'e' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 2, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 2, # 'l' - 54: 2, # 'n' - 49: 1, # 'o' - 51: 2, # 'r' - 43: 2, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 1, # '–' - 52: 2, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 53: { # 'i' - 50: 1, # 'a' - 60: 2, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 0, # 'i' - 56: 1, # 'l' - 54: 2, # 'n' - 49: 2, # 'o' - 51: 1, # 'r' - 43: 2, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 56: { # 'l' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 2, # 'e' - 53: 2, # 'i' - 56: 2, # 'l' - 54: 1, # 'n' - 49: 1, # 'o' - 51: 0, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 54: { # 'n' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 1, # 'o' - 51: 0, # 'r' - 43: 1, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 2, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 49: { # 'o' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 2, # 'n' - 49: 1, # 'o' - 51: 2, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 51: { # 'r' - 50: 2, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 2, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 2, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 2, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 43: { # 's' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 0, # 'd' - 42: 2, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 1, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 2, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 44: { # 't' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 0, # 'd' - 42: 2, # 'e' - 53: 2, # 'i' - 56: 1, # 'l' - 54: 0, # 'n' - 49: 1, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 1, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 2, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 63: { # 'u' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 0, # 'o' - 51: 1, # 'r' - 43: 2, # 's' - 44: 1, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 34: { # '\xa0' - 50: 1, # 'a' - 60: 0, # 'c' - 61: 1, # 'd' - 42: 0, # 'e' - 53: 1, # 'i' - 56: 0, # 'l' - 54: 1, # 'n' - 49: 1, # 'o' - 51: 0, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 0, # 'u' - 34: 2, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 1, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 2, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 2, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 1, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 55: { # '´' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 1, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 2, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 1, # 'ן' - 12: 1, # 'נ' - 19: 1, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 48: { # '¼' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 39: { # '½' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 57: { # '¾' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 30: { # 'ְ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 1, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 1, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 2, # 'ג' - 16: 2, # 'ד' - 3: 2, # 'ה' - 2: 2, # 'ו' - 24: 2, # 'ז' - 14: 2, # 'ח' - 22: 2, # 'ט' - 1: 2, # 'י' - 25: 2, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 1, # 'ם' - 6: 2, # 'מ' - 23: 0, # 'ן' - 12: 2, # 'נ' - 19: 2, # 'ס' - 13: 2, # 'ע' - 26: 0, # 'ף' - 18: 2, # 'פ' - 27: 0, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 59: { # 'ֱ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 1, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 2, # 'ל' - 11: 0, # 'ם' - 6: 2, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 41: { # 'ֲ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 2, # 'ב' - 20: 1, # 'ג' - 16: 2, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 1, # 'י' - 25: 1, # 'ך' - 15: 1, # 'כ' - 4: 2, # 'ל' - 11: 0, # 'ם' - 6: 2, # 'מ' - 23: 0, # 'ן' - 12: 2, # 'נ' - 19: 1, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 2, # 'צ' - 17: 1, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 33: { # 'ִ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 1, # 'ִ' - 37: 0, # 'ֵ' - 36: 1, # 'ֶ' - 31: 0, # 'ַ' - 29: 1, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 1, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 2, # 'ב' - 20: 2, # 'ג' - 16: 2, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 2, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 2, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 2, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 37: { # 'ֵ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 1, # 'ֶ' - 31: 1, # 'ַ' - 29: 1, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 1, # 'ג' - 16: 2, # 'ד' - 3: 2, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 2, # 'ח' - 22: 1, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 1, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 1, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 1, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 1, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 36: { # 'ֶ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 1, # 'ֶ' - 31: 1, # 'ַ' - 29: 1, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 1, # 'ג' - 16: 2, # 'ד' - 3: 2, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 2, # 'ח' - 22: 1, # 'ט' - 1: 2, # 'י' - 25: 2, # 'ך' - 15: 1, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 2, # 'ס' - 13: 1, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 2, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 31: { # 'ַ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 1, # 'ֶ' - 31: 0, # 'ַ' - 29: 2, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 2, # 'ג' - 16: 2, # 'ד' - 3: 2, # 'ה' - 2: 1, # 'ו' - 24: 2, # 'ז' - 14: 2, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 2, # 'ס' - 13: 2, # 'ע' - 26: 2, # 'ף' - 18: 2, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 29: { # 'ָ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 1, # 'ַ' - 29: 2, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 1, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 2, # 'ג' - 16: 2, # 'ד' - 3: 3, # 'ה' - 2: 2, # 'ו' - 24: 2, # 'ז' - 14: 2, # 'ח' - 22: 1, # 'ט' - 1: 2, # 'י' - 25: 2, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 1, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 2, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 35: { # 'ֹ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 1, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 1, # 'ג' - 16: 2, # 'ד' - 3: 2, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 1, # 'י' - 25: 1, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 2, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 2, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 62: { # 'ֻ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 1, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 2, # 'ל' - 11: 1, # 'ם' - 6: 1, # 'מ' - 23: 1, # 'ן' - 12: 1, # 'נ' - 19: 1, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 28: { # 'ּ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 3, # 'ְ' - 59: 0, # 'ֱ' - 41: 1, # 'ֲ' - 33: 3, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 3, # 'ַ' - 29: 3, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 2, # 'ׁ' - 45: 1, # 'ׂ' - 9: 2, # 'א' - 8: 2, # 'ב' - 20: 1, # 'ג' - 16: 2, # 'ד' - 3: 1, # 'ה' - 2: 2, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 2, # 'י' - 25: 2, # 'ך' - 15: 2, # 'כ' - 4: 2, # 'ל' - 11: 1, # 'ם' - 6: 2, # 'מ' - 23: 1, # 'ן' - 12: 2, # 'נ' - 19: 1, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 1, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 2, # 'ר' - 10: 2, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 38: { # 'ׁ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 2, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 45: { # 'ׂ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 1, # 'ֵ' - 36: 2, # 'ֶ' - 31: 1, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 1, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 2, # 'ו' - 24: 0, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 1, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 0, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 0, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 9: { # 'א' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 2, # 'ֱ' - 41: 2, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 2, # 'ע' - 26: 3, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 8: { # 'ב' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 1, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 3, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 1, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 20: { # 'ג' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 2, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 1, # 'ִ' - 37: 1, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 0, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 3, # 'ב' - 20: 2, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 2, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 1, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 2, # 'פ' - 27: 1, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 16: { # 'ד' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 1, # 'ז' - 14: 2, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 2, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 0, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 3: { # 'ה' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 1, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 1, # 'ֱ' - 41: 2, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 3, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 0, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 2: { # 'ו' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 1, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 1, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 3, # 'ֹ' - 62: 0, # 'ֻ' - 28: 3, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 3, # 'ף' - 18: 3, # 'פ' - 27: 3, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 24: { # 'ז' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 1, # 'ֲ' - 33: 1, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 2, # 'ב' - 20: 2, # 'ג' - 16: 2, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 2, # 'ח' - 22: 1, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 2, # 'נ' - 19: 1, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 1, # 'ש' - 5: 2, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 14: { # 'ח' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 1, # 'ֱ' - 41: 2, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 3, # 'ב' - 20: 2, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 2, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 2, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 1, # 'ע' - 26: 2, # 'ף' - 18: 2, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 22: { # 'ט' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 1, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 1, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 1, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 1, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 3, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 2, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 3, # 'ר' - 10: 2, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 1: { # 'י' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 3, # 'ף' - 18: 3, # 'פ' - 27: 3, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 25: { # 'ך' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 2, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 1, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 1, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 15: { # 'כ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 3, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 2, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 2, # 'ע' - 26: 3, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 2, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 4: { # 'ל' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 3, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 11: { # 'ם' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 1, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 0, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 1, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 6: { # 'מ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 0, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 23: { # 'ן' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 1, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 1, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 1, # 'ס' - 13: 1, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 1, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 12: { # 'נ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 19: { # 'ס' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 1, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 1, # 'ָ' - 35: 1, # 'ֹ' - 62: 2, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 1, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 3, # 'ף' - 18: 3, # 'פ' - 27: 0, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 1, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 13: { # 'ע' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 1, # 'ֱ' - 41: 2, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 1, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 2, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 2, # 'ע' - 26: 1, # 'ף' - 18: 2, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 26: { # 'ף' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 1, # 'ס' - 13: 0, # 'ע' - 26: 1, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 18: { # 'פ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 1, # 'ֵ' - 36: 2, # 'ֶ' - 31: 1, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 2, # 'ב' - 20: 3, # 'ג' - 16: 2, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 2, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 2, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 27: { # 'ץ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 1, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 0, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 21: { # 'צ' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 2, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 1, # 'ז' - 14: 3, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 1, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 1, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 0, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 17: { # 'ק' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 1, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 1, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 2, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 1, # 'ך' - 15: 1, # 'כ' - 4: 3, # 'ל' - 11: 2, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 2, # 'ץ' - 21: 3, # 'צ' - 17: 2, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 7: { # 'ר' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 2, # '´' - 48: 1, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 1, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 2, # 'ֹ' - 62: 1, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 3, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 3, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 3, # 'ץ' - 21: 3, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 10: { # 'ש' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 1, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 1, # 'ִ' - 37: 1, # 'ֵ' - 36: 1, # 'ֶ' - 31: 1, # 'ַ' - 29: 1, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 3, # 'ׁ' - 45: 2, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 3, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 3, # 'ח' - 22: 3, # 'ט' - 1: 3, # 'י' - 25: 3, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 2, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 1, # '…' - }, - 5: { # 'ת' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 1, # '\xa0' - 55: 0, # '´' - 48: 1, # '¼' - 39: 1, # '½' - 57: 0, # '¾' - 30: 2, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 2, # 'ִ' - 37: 2, # 'ֵ' - 36: 2, # 'ֶ' - 31: 2, # 'ַ' - 29: 2, # 'ָ' - 35: 1, # 'ֹ' - 62: 1, # 'ֻ' - 28: 2, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 3, # 'א' - 8: 3, # 'ב' - 20: 3, # 'ג' - 16: 2, # 'ד' - 3: 3, # 'ה' - 2: 3, # 'ו' - 24: 2, # 'ז' - 14: 3, # 'ח' - 22: 2, # 'ט' - 1: 3, # 'י' - 25: 2, # 'ך' - 15: 3, # 'כ' - 4: 3, # 'ל' - 11: 3, # 'ם' - 6: 3, # 'מ' - 23: 3, # 'ן' - 12: 3, # 'נ' - 19: 2, # 'ס' - 13: 3, # 'ע' - 26: 2, # 'ף' - 18: 3, # 'פ' - 27: 1, # 'ץ' - 21: 2, # 'צ' - 17: 3, # 'ק' - 7: 3, # 'ר' - 10: 3, # 'ש' - 5: 3, # 'ת' - 32: 1, # '–' - 52: 1, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, - 32: { # '–' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 1, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 1, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 1, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 1, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 52: { # '’' - 50: 1, # 'a' - 60: 0, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 1, # 'r' - 43: 2, # 's' - 44: 2, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 1, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 47: { # '“' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 1, # 'l' - 54: 1, # 'n' - 49: 1, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 1, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 2, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 1, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 1, # 'ח' - 22: 1, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 1, # 'ס' - 13: 1, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 1, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 46: { # '”' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 1, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 1, # 'ב' - 20: 1, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 1, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 0, # '†' - 40: 0, # '…' - }, - 58: { # '†' - 50: 0, # 'a' - 60: 0, # 'c' - 61: 0, # 'd' - 42: 0, # 'e' - 53: 0, # 'i' - 56: 0, # 'l' - 54: 0, # 'n' - 49: 0, # 'o' - 51: 0, # 'r' - 43: 0, # 's' - 44: 0, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 0, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 0, # 'ה' - 2: 0, # 'ו' - 24: 0, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 0, # 'י' - 25: 0, # 'ך' - 15: 0, # 'כ' - 4: 0, # 'ל' - 11: 0, # 'ם' - 6: 0, # 'מ' - 23: 0, # 'ן' - 12: 0, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 0, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 0, # 'ר' - 10: 0, # 'ש' - 5: 0, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 0, # '”' - 58: 2, # '†' - 40: 0, # '…' - }, - 40: { # '…' - 50: 1, # 'a' - 60: 1, # 'c' - 61: 1, # 'd' - 42: 1, # 'e' - 53: 1, # 'i' - 56: 0, # 'l' - 54: 1, # 'n' - 49: 0, # 'o' - 51: 1, # 'r' - 43: 1, # 's' - 44: 1, # 't' - 63: 0, # 'u' - 34: 0, # '\xa0' - 55: 0, # '´' - 48: 0, # '¼' - 39: 0, # '½' - 57: 0, # '¾' - 30: 0, # 'ְ' - 59: 0, # 'ֱ' - 41: 0, # 'ֲ' - 33: 0, # 'ִ' - 37: 0, # 'ֵ' - 36: 0, # 'ֶ' - 31: 0, # 'ַ' - 29: 0, # 'ָ' - 35: 0, # 'ֹ' - 62: 0, # 'ֻ' - 28: 0, # 'ּ' - 38: 0, # 'ׁ' - 45: 0, # 'ׂ' - 9: 1, # 'א' - 8: 0, # 'ב' - 20: 0, # 'ג' - 16: 0, # 'ד' - 3: 1, # 'ה' - 2: 1, # 'ו' - 24: 1, # 'ז' - 14: 0, # 'ח' - 22: 0, # 'ט' - 1: 1, # 'י' - 25: 0, # 'ך' - 15: 1, # 'כ' - 4: 1, # 'ל' - 11: 0, # 'ם' - 6: 1, # 'מ' - 23: 0, # 'ן' - 12: 1, # 'נ' - 19: 0, # 'ס' - 13: 0, # 'ע' - 26: 0, # 'ף' - 18: 1, # 'פ' - 27: 0, # 'ץ' - 21: 0, # 'צ' - 17: 0, # 'ק' - 7: 1, # 'ר' - 10: 1, # 'ש' - 5: 1, # 'ת' - 32: 0, # '–' - 52: 0, # '’' - 47: 0, # '“' - 46: 1, # '”' - 58: 0, # '†' - 40: 2, # '…' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -WINDOWS_1255_HEBREW_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 69, # 'A' - 66: 91, # 'B' - 67: 79, # 'C' - 68: 80, # 'D' - 69: 92, # 'E' - 70: 89, # 'F' - 71: 97, # 'G' - 72: 90, # 'H' - 73: 68, # 'I' - 74: 111, # 'J' - 75: 112, # 'K' - 76: 82, # 'L' - 77: 73, # 'M' - 78: 95, # 'N' - 79: 85, # 'O' - 80: 78, # 'P' - 81: 121, # 'Q' - 82: 86, # 'R' - 83: 71, # 'S' - 84: 67, # 'T' - 85: 102, # 'U' - 86: 107, # 'V' - 87: 84, # 'W' - 88: 114, # 'X' - 89: 103, # 'Y' - 90: 115, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 50, # 'a' - 98: 74, # 'b' - 99: 60, # 'c' - 100: 61, # 'd' - 101: 42, # 'e' - 102: 76, # 'f' - 103: 70, # 'g' - 104: 64, # 'h' - 105: 53, # 'i' - 106: 105, # 'j' - 107: 93, # 'k' - 108: 56, # 'l' - 109: 65, # 'm' - 110: 54, # 'n' - 111: 49, # 'o' - 112: 66, # 'p' - 113: 110, # 'q' - 114: 51, # 'r' - 115: 43, # 's' - 116: 44, # 't' - 117: 63, # 'u' - 118: 81, # 'v' - 119: 77, # 'w' - 120: 98, # 'x' - 121: 75, # 'y' - 122: 108, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 124, # '€' - 129: 202, # None - 130: 203, # '‚' - 131: 204, # 'ƒ' - 132: 205, # '„' - 133: 40, # '…' - 134: 58, # '†' - 135: 206, # '‡' - 136: 207, # 'ˆ' - 137: 208, # '‰' - 138: 209, # None - 139: 210, # '‹' - 140: 211, # None - 141: 212, # None - 142: 213, # None - 143: 214, # None - 144: 215, # None - 145: 83, # '‘' - 146: 52, # '’' - 147: 47, # '“' - 148: 46, # '”' - 149: 72, # '•' - 150: 32, # '–' - 151: 94, # '—' - 152: 216, # '˜' - 153: 113, # '™' - 154: 217, # None - 155: 109, # '›' - 156: 218, # None - 157: 219, # None - 158: 220, # None - 159: 221, # None - 160: 34, # '\xa0' - 161: 116, # '¡' - 162: 222, # '¢' - 163: 118, # '£' - 164: 100, # '₪' - 165: 223, # '¥' - 166: 224, # '¦' - 167: 117, # '§' - 168: 119, # '¨' - 169: 104, # '©' - 170: 125, # '×' - 171: 225, # '«' - 172: 226, # '¬' - 173: 87, # '\xad' - 174: 99, # '®' - 175: 227, # '¯' - 176: 106, # '°' - 177: 122, # '±' - 178: 123, # '²' - 179: 228, # '³' - 180: 55, # '´' - 181: 229, # 'µ' - 182: 230, # '¶' - 183: 101, # '·' - 184: 231, # '¸' - 185: 232, # '¹' - 186: 120, # '÷' - 187: 233, # '»' - 188: 48, # '¼' - 189: 39, # '½' - 190: 57, # '¾' - 191: 234, # '¿' - 192: 30, # 'ְ' - 193: 59, # 'ֱ' - 194: 41, # 'ֲ' - 195: 88, # 'ֳ' - 196: 33, # 'ִ' - 197: 37, # 'ֵ' - 198: 36, # 'ֶ' - 199: 31, # 'ַ' - 200: 29, # 'ָ' - 201: 35, # 'ֹ' - 202: 235, # None - 203: 62, # 'ֻ' - 204: 28, # 'ּ' - 205: 236, # 'ֽ' - 206: 126, # '־' - 207: 237, # 'ֿ' - 208: 238, # '׀' - 209: 38, # 'ׁ' - 210: 45, # 'ׂ' - 211: 239, # '׃' - 212: 240, # 'װ' - 213: 241, # 'ױ' - 214: 242, # 'ײ' - 215: 243, # '׳' - 216: 127, # '״' - 217: 244, # None - 218: 245, # None - 219: 246, # None - 220: 247, # None - 221: 248, # None - 222: 249, # None - 223: 250, # None - 224: 9, # 'א' - 225: 8, # 'ב' - 226: 20, # 'ג' - 227: 16, # 'ד' - 228: 3, # 'ה' - 229: 2, # 'ו' - 230: 24, # 'ז' - 231: 14, # 'ח' - 232: 22, # 'ט' - 233: 1, # 'י' - 234: 25, # 'ך' - 235: 15, # 'כ' - 236: 4, # 'ל' - 237: 11, # 'ם' - 238: 6, # 'מ' - 239: 23, # 'ן' - 240: 12, # 'נ' - 241: 19, # 'ס' - 242: 13, # 'ע' - 243: 26, # 'ף' - 244: 18, # 'פ' - 245: 27, # 'ץ' - 246: 21, # 'צ' - 247: 17, # 'ק' - 248: 7, # 'ר' - 249: 10, # 'ש' - 250: 5, # 'ת' - 251: 251, # None - 252: 252, # None - 253: 128, # '\u200e' - 254: 96, # '\u200f' - 255: 253, # None -} - -WINDOWS_1255_HEBREW_MODEL = SingleByteCharSetModel( - charset_name="windows-1255", - language="Hebrew", - char_to_order_map=WINDOWS_1255_HEBREW_CHAR_TO_ORDER, - language_model=HEBREW_LANG_MODEL, - typical_positive_ratio=0.984004, - keep_ascii_letters=False, - alphabet="אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py deleted file mode 100644 index 09a0d32..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py +++ /dev/null @@ -1,4649 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -HUNGARIAN_LANG_MODEL = { - 28: { # 'A' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 2, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 2, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 2, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 2, # 'N' - 47: 1, # 'O' - 46: 2, # 'P' - 43: 2, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 2, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 2, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 2, # 'n' - 8: 0, # 'o' - 23: 2, # 'p' - 10: 2, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 1, # 'u' - 19: 1, # 'v' - 62: 1, # 'x' - 16: 0, # 'y' - 11: 3, # 'z' - 51: 1, # 'Á' - 44: 0, # 'É' - 61: 1, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 40: { # 'B' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 0, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 1, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 3, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 54: { # 'C' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 0, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 0, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 1, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 3, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 1, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 45: { # 'D' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 0, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 0, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 1, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 1, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 32: { # 'E' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 2, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 2, # 'K' - 41: 2, # 'L' - 34: 2, # 'M' - 35: 2, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 1, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 3, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 2, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 1, # 't' - 21: 2, # 'u' - 19: 1, # 'v' - 62: 1, # 'x' - 16: 0, # 'y' - 11: 3, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 0, # 'Ú' - 63: 1, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 50: { # 'F' - 28: 1, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 0, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 0, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 0, # 'V' - 55: 1, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 1, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 1, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 0, # 'Ú' - 63: 1, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 49: { # 'G' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 2, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 2, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 38: { # 'H' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 0, # 'D' - 32: 1, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 1, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 1, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 1, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 0, # 'V' - 55: 1, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 1, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 0, # 'n' - 8: 3, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 2, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 2, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 39: { # 'I' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 2, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 2, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 2, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 0, # 'e' - 27: 1, # 'f' - 12: 2, # 'g' - 20: 1, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 53: { # 'J' - 28: 2, # 'A' - 40: 0, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 1, # 'o' - 23: 0, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 2, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 0, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 36: { # 'K' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 0, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 1, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 3, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 2, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 41: { # 'L' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 1, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 34: { # 'M' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 0, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 3, # 'a' - 18: 0, # 'b' - 26: 1, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 3, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 3, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 1, # 'ű' - }, - 35: { # 'N' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 2, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 2, # 'Y' - 52: 1, # 'Z' - 2: 3, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 2, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 1, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 47: { # 'O' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 2, # 'K' - 41: 2, # 'L' - 34: 2, # 'M' - 35: 2, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 2, # 'k' - 6: 2, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 1, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 1, # 's' - 3: 2, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 1, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 1, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 46: { # 'P' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 0, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 1, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 1, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 0, # 'Ú' - 63: 1, # 'Ü' - 14: 3, # 'á' - 15: 2, # 'é' - 30: 0, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 0, # 'ű' - }, - 43: { # 'R' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 2, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 2, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 33: { # 'S' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 3, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 1, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 1, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 1, # 't' - 21: 1, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 37: { # 'T' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 1, # 'S' - 37: 2, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 2, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 1, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 0, # 't' - 21: 2, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 1, # 'z' - 51: 2, # 'Á' - 44: 2, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 57: { # 'U' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 1, # 'e' - 27: 0, # 'f' - 12: 2, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 1, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 48: { # 'V' - 28: 2, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 0, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 2, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 2, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 2, # 'o' - 23: 0, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 2, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 0, # 'Ú' - 63: 1, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 0, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 55: { # 'Y' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 1, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 2, # 'Z' - 2: 1, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 1, # 'd' - 1: 1, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 8: 1, # 'o' - 23: 1, # 'p' - 10: 0, # 'r' - 5: 0, # 's' - 3: 0, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 1, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 52: { # 'Z' - 28: 2, # 'A' - 40: 1, # 'B' - 54: 0, # 'C' - 45: 1, # 'D' - 32: 2, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 2, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 2, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 2, # 'S' - 37: 1, # 'T' - 57: 1, # 'U' - 48: 1, # 'V' - 55: 1, # 'Y' - 52: 1, # 'Z' - 2: 1, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 1, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 1, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 2, # 's' - 3: 0, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 2, # 'Á' - 44: 1, # 'É' - 61: 1, # 'Í' - 58: 1, # 'Ó' - 59: 1, # 'Ö' - 60: 1, # 'Ú' - 63: 1, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 2: { # 'a' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 2, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 2, # 'o' - 23: 3, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 1, # 'x' - 16: 2, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 18: { # 'b' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 2, # 'k' - 6: 2, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 2, # 's' - 3: 1, # 't' - 21: 3, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 3, # 'ó' - 24: 2, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 26: { # 'c' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 1, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 1, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 1, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 1, # 'j' - 7: 2, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 2, # 't' - 21: 2, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 2, # 'á' - 15: 2, # 'é' - 30: 2, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 17: { # 'd' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 2, # 'k' - 6: 1, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 2, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 1: { # 'e' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 2, # 'e' - 27: 3, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 2, # 'o' - 23: 3, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 2, # 'u' - 19: 3, # 'v' - 62: 2, # 'x' - 16: 2, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 27: { # 'f' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 3, # 'o' - 23: 0, # 'p' - 10: 3, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 2, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 0, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 3, # 'ö' - 31: 1, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 12: { # 'g' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 2, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 2, # 'k' - 6: 3, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 3, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 3, # 'ó' - 24: 2, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 20: { # 'h' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 0, # 'd' - 1: 3, # 'e' - 27: 0, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 3, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 2, # 's' - 3: 1, # 't' - 21: 3, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 2, # 'y' - 11: 0, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 2, # 'ó' - 24: 2, # 'ö' - 31: 2, # 'ú' - 29: 1, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 9: { # 'i' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 3, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 2, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 2, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 1, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 3, # 'ó' - 24: 1, # 'ö' - 31: 2, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 1, # 'ű' - }, - 22: { # 'j' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 1, # 'i' - 22: 2, # 'j' - 7: 2, # 'k' - 6: 2, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 1, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 3, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 7: { # 'k' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 1, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 2, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 2, # 'ó' - 24: 3, # 'ö' - 31: 1, # 'ú' - 29: 3, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 6: { # 'l' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 1, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 3, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 2, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 3, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 3, # 'ő' - 56: 1, # 'ű' - }, - 13: { # 'm' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 1, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 8: 3, # 'o' - 23: 3, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 3, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 2, # 'ó' - 24: 2, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 2, # 'ű' - }, - 4: { # 'n' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 2, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 2, # 'v' - 62: 1, # 'x' - 16: 3, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 2, # 'ó' - 24: 3, # 'ö' - 31: 2, # 'ú' - 29: 3, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 8: { # 'o' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 1, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 2, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 2, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 1, # 'o' - 23: 3, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 2, # 'u' - 19: 3, # 'v' - 62: 1, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 23: { # 'p' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 1, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 2, # 'k' - 6: 3, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 3, # 'o' - 23: 3, # 'p' - 10: 3, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 3, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 2, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 10: { # 'r' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 1, # 'x' - 16: 2, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 3, # 'ú' - 29: 3, # 'ü' - 42: 2, # 'ő' - 56: 2, # 'ű' - }, - 5: { # 's' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 2, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 2, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 1, # 'j' - 7: 3, # 'k' - 6: 2, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 3, # 'ú' - 29: 3, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 3: { # 't' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 1, # 'g' - 20: 3, # 'h' - 9: 3, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 3, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 3, # 'ú' - 29: 3, # 'ü' - 42: 3, # 'ő' - 56: 2, # 'ű' - }, - 21: { # 'u' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 2, # 'b' - 26: 2, # 'c' - 17: 3, # 'd' - 1: 2, # 'e' - 27: 1, # 'f' - 12: 3, # 'g' - 20: 2, # 'h' - 9: 2, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 1, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 1, # 'u' - 19: 3, # 'v' - 62: 1, # 'x' - 16: 1, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 2, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 0, # 'ö' - 31: 1, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 19: { # 'v' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 3, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 1, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 2, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 2, # 'ó' - 24: 2, # 'ö' - 31: 1, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 1, # 'ű' - }, - 62: { # 'x' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 0, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 1, # 'i' - 22: 0, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 1, # 'o' - 23: 1, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 1, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 1, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 16: { # 'y' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 3, # 'e' - 27: 2, # 'f' - 12: 2, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 2, # 'j' - 7: 2, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 2, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 2, # 'í' - 25: 2, # 'ó' - 24: 3, # 'ö' - 31: 2, # 'ú' - 29: 2, # 'ü' - 42: 1, # 'ő' - 56: 2, # 'ű' - }, - 11: { # 'z' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 3, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 3, # 'd' - 1: 3, # 'e' - 27: 1, # 'f' - 12: 2, # 'g' - 20: 2, # 'h' - 9: 3, # 'i' - 22: 1, # 'j' - 7: 3, # 'k' - 6: 2, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 3, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 3, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 3, # 'á' - 15: 3, # 'é' - 30: 3, # 'í' - 25: 3, # 'ó' - 24: 3, # 'ö' - 31: 2, # 'ú' - 29: 3, # 'ü' - 42: 2, # 'ő' - 56: 1, # 'ű' - }, - 51: { # 'Á' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 1, # 'F' - 49: 2, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 2, # 'N' - 47: 0, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 2, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 1, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 44: { # 'É' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 1, # 'E' - 50: 0, # 'F' - 49: 2, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 2, # 'N' - 47: 0, # 'O' - 46: 1, # 'P' - 43: 2, # 'R' - 33: 2, # 'S' - 37: 2, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 2, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 3, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 0, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 61: { # 'Í' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 1, # 'J' - 36: 0, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 2, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 1, # 'm' - 4: 0, # 'n' - 8: 0, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 0, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 58: { # 'Ó' - 28: 1, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 1, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 2, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 2, # 'h' - 9: 0, # 'i' - 22: 0, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 0, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 1, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 59: { # 'Ö' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 0, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 1, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 0, # 'b' - 26: 1, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 0, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 0, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 0, # 'p' - 10: 2, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 60: { # 'Ú' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 1, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 1, # 'F' - 49: 1, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 0, # 'b' - 26: 0, # 'c' - 17: 0, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 2, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 2, # 'j' - 7: 0, # 'k' - 6: 0, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 0, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 0, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 63: { # 'Ü' - 28: 0, # 'A' - 40: 1, # 'B' - 54: 0, # 'C' - 45: 1, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 1, # 'G' - 38: 1, # 'H' - 39: 0, # 'I' - 53: 1, # 'J' - 36: 1, # 'K' - 41: 1, # 'L' - 34: 1, # 'M' - 35: 1, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 1, # 'R' - 33: 1, # 'S' - 37: 1, # 'T' - 57: 0, # 'U' - 48: 1, # 'V' - 55: 0, # 'Y' - 52: 1, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 0, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 0, # 'f' - 12: 1, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 0, # 'j' - 7: 0, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 8: 0, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 1, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 14: { # 'á' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 3, # 'b' - 26: 3, # 'c' - 17: 3, # 'd' - 1: 1, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 2, # 'h' - 9: 2, # 'i' - 22: 3, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 1, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 2, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 1, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 2, # 'é' - 30: 1, # 'í' - 25: 0, # 'ó' - 24: 1, # 'ö' - 31: 0, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 15: { # 'é' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 3, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 3, # 'g' - 20: 3, # 'h' - 9: 2, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 1, # 'o' - 23: 3, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 0, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 30: { # 'í' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 0, # 'a' - 18: 1, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 0, # 'e' - 27: 1, # 'f' - 12: 3, # 'g' - 20: 0, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 2, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 2, # 's' - 3: 3, # 't' - 21: 0, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 25: { # 'ó' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 2, # 'a' - 18: 3, # 'b' - 26: 2, # 'c' - 17: 3, # 'd' - 1: 1, # 'e' - 27: 2, # 'f' - 12: 2, # 'g' - 20: 2, # 'h' - 9: 2, # 'i' - 22: 2, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 8: 1, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 1, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 0, # 'ó' - 24: 1, # 'ö' - 31: 1, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 24: { # 'ö' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 0, # 'a' - 18: 3, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 0, # 'e' - 27: 1, # 'f' - 12: 2, # 'g' - 20: 1, # 'h' - 9: 0, # 'i' - 22: 1, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 8: 0, # 'o' - 23: 2, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 3, # 't' - 21: 0, # 'u' - 19: 3, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 3, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 31: { # 'ú' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 1, # 'b' - 26: 2, # 'c' - 17: 1, # 'd' - 1: 1, # 'e' - 27: 2, # 'f' - 12: 3, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 3, # 'j' - 7: 1, # 'k' - 6: 3, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 3, # 'r' - 5: 3, # 's' - 3: 2, # 't' - 21: 1, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 1, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 29: { # 'ü' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 1, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 3, # 'g' - 20: 2, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 3, # 'k' - 6: 3, # 'l' - 13: 1, # 'm' - 4: 3, # 'n' - 8: 0, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 0, # 'u' - 19: 2, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 1, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 42: { # 'ő' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 2, # 'b' - 26: 1, # 'c' - 17: 2, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 2, # 'k' - 6: 3, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 8: 1, # 'o' - 23: 1, # 'p' - 10: 2, # 'r' - 5: 2, # 's' - 3: 2, # 't' - 21: 1, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 1, # 'é' - 30: 1, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 1, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, - 56: { # 'ű' - 28: 0, # 'A' - 40: 0, # 'B' - 54: 0, # 'C' - 45: 0, # 'D' - 32: 0, # 'E' - 50: 0, # 'F' - 49: 0, # 'G' - 38: 0, # 'H' - 39: 0, # 'I' - 53: 0, # 'J' - 36: 0, # 'K' - 41: 0, # 'L' - 34: 0, # 'M' - 35: 0, # 'N' - 47: 0, # 'O' - 46: 0, # 'P' - 43: 0, # 'R' - 33: 0, # 'S' - 37: 0, # 'T' - 57: 0, # 'U' - 48: 0, # 'V' - 55: 0, # 'Y' - 52: 0, # 'Z' - 2: 1, # 'a' - 18: 1, # 'b' - 26: 0, # 'c' - 17: 1, # 'd' - 1: 1, # 'e' - 27: 1, # 'f' - 12: 1, # 'g' - 20: 1, # 'h' - 9: 1, # 'i' - 22: 1, # 'j' - 7: 1, # 'k' - 6: 1, # 'l' - 13: 0, # 'm' - 4: 2, # 'n' - 8: 0, # 'o' - 23: 0, # 'p' - 10: 1, # 'r' - 5: 1, # 's' - 3: 1, # 't' - 21: 0, # 'u' - 19: 1, # 'v' - 62: 0, # 'x' - 16: 0, # 'y' - 11: 2, # 'z' - 51: 0, # 'Á' - 44: 0, # 'É' - 61: 0, # 'Í' - 58: 0, # 'Ó' - 59: 0, # 'Ö' - 60: 0, # 'Ú' - 63: 0, # 'Ü' - 14: 0, # 'á' - 15: 0, # 'é' - 30: 0, # 'í' - 25: 0, # 'ó' - 24: 0, # 'ö' - 31: 0, # 'ú' - 29: 0, # 'ü' - 42: 0, # 'ő' - 56: 0, # 'ű' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 28, # 'A' - 66: 40, # 'B' - 67: 54, # 'C' - 68: 45, # 'D' - 69: 32, # 'E' - 70: 50, # 'F' - 71: 49, # 'G' - 72: 38, # 'H' - 73: 39, # 'I' - 74: 53, # 'J' - 75: 36, # 'K' - 76: 41, # 'L' - 77: 34, # 'M' - 78: 35, # 'N' - 79: 47, # 'O' - 80: 46, # 'P' - 81: 72, # 'Q' - 82: 43, # 'R' - 83: 33, # 'S' - 84: 37, # 'T' - 85: 57, # 'U' - 86: 48, # 'V' - 87: 64, # 'W' - 88: 68, # 'X' - 89: 55, # 'Y' - 90: 52, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 2, # 'a' - 98: 18, # 'b' - 99: 26, # 'c' - 100: 17, # 'd' - 101: 1, # 'e' - 102: 27, # 'f' - 103: 12, # 'g' - 104: 20, # 'h' - 105: 9, # 'i' - 106: 22, # 'j' - 107: 7, # 'k' - 108: 6, # 'l' - 109: 13, # 'm' - 110: 4, # 'n' - 111: 8, # 'o' - 112: 23, # 'p' - 113: 67, # 'q' - 114: 10, # 'r' - 115: 5, # 's' - 116: 3, # 't' - 117: 21, # 'u' - 118: 19, # 'v' - 119: 65, # 'w' - 120: 62, # 'x' - 121: 16, # 'y' - 122: 11, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 161, # '€' - 129: 162, # None - 130: 163, # '‚' - 131: 164, # None - 132: 165, # '„' - 133: 166, # '…' - 134: 167, # '†' - 135: 168, # '‡' - 136: 169, # None - 137: 170, # '‰' - 138: 171, # 'Š' - 139: 172, # '‹' - 140: 173, # 'Ś' - 141: 174, # 'Ť' - 142: 175, # 'Ž' - 143: 176, # 'Ź' - 144: 177, # None - 145: 178, # '‘' - 146: 179, # '’' - 147: 180, # '“' - 148: 78, # '”' - 149: 181, # '•' - 150: 69, # '–' - 151: 182, # '—' - 152: 183, # None - 153: 184, # '™' - 154: 185, # 'š' - 155: 186, # '›' - 156: 187, # 'ś' - 157: 188, # 'ť' - 158: 189, # 'ž' - 159: 190, # 'ź' - 160: 191, # '\xa0' - 161: 192, # 'ˇ' - 162: 193, # '˘' - 163: 194, # 'Ł' - 164: 195, # '¤' - 165: 196, # 'Ą' - 166: 197, # '¦' - 167: 76, # '§' - 168: 198, # '¨' - 169: 199, # '©' - 170: 200, # 'Ş' - 171: 201, # '«' - 172: 202, # '¬' - 173: 203, # '\xad' - 174: 204, # '®' - 175: 205, # 'Ż' - 176: 81, # '°' - 177: 206, # '±' - 178: 207, # '˛' - 179: 208, # 'ł' - 180: 209, # '´' - 181: 210, # 'µ' - 182: 211, # '¶' - 183: 212, # '·' - 184: 213, # '¸' - 185: 214, # 'ą' - 186: 215, # 'ş' - 187: 216, # '»' - 188: 217, # 'Ľ' - 189: 218, # '˝' - 190: 219, # 'ľ' - 191: 220, # 'ż' - 192: 221, # 'Ŕ' - 193: 51, # 'Á' - 194: 83, # 'Â' - 195: 222, # 'Ă' - 196: 80, # 'Ä' - 197: 223, # 'Ĺ' - 198: 224, # 'Ć' - 199: 225, # 'Ç' - 200: 226, # 'Č' - 201: 44, # 'É' - 202: 227, # 'Ę' - 203: 228, # 'Ë' - 204: 229, # 'Ě' - 205: 61, # 'Í' - 206: 230, # 'Î' - 207: 231, # 'Ď' - 208: 232, # 'Đ' - 209: 233, # 'Ń' - 210: 234, # 'Ň' - 211: 58, # 'Ó' - 212: 235, # 'Ô' - 213: 66, # 'Ő' - 214: 59, # 'Ö' - 215: 236, # '×' - 216: 237, # 'Ř' - 217: 238, # 'Ů' - 218: 60, # 'Ú' - 219: 70, # 'Ű' - 220: 63, # 'Ü' - 221: 239, # 'Ý' - 222: 240, # 'Ţ' - 223: 241, # 'ß' - 224: 84, # 'ŕ' - 225: 14, # 'á' - 226: 75, # 'â' - 227: 242, # 'ă' - 228: 71, # 'ä' - 229: 82, # 'ĺ' - 230: 243, # 'ć' - 231: 73, # 'ç' - 232: 244, # 'č' - 233: 15, # 'é' - 234: 85, # 'ę' - 235: 79, # 'ë' - 236: 86, # 'ě' - 237: 30, # 'í' - 238: 77, # 'î' - 239: 87, # 'ď' - 240: 245, # 'đ' - 241: 246, # 'ń' - 242: 247, # 'ň' - 243: 25, # 'ó' - 244: 74, # 'ô' - 245: 42, # 'ő' - 246: 24, # 'ö' - 247: 248, # '÷' - 248: 249, # 'ř' - 249: 250, # 'ů' - 250: 31, # 'ú' - 251: 56, # 'ű' - 252: 29, # 'ü' - 253: 251, # 'ý' - 254: 252, # 'ţ' - 255: 253, # '˙' -} - -WINDOWS_1250_HUNGARIAN_MODEL = SingleByteCharSetModel( - charset_name="windows-1250", - language="Hungarian", - char_to_order_map=WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER, - language_model=HUNGARIAN_LANG_MODEL, - typical_positive_ratio=0.947368, - keep_ascii_letters=True, - alphabet="ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű", -) - -ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 28, # 'A' - 66: 40, # 'B' - 67: 54, # 'C' - 68: 45, # 'D' - 69: 32, # 'E' - 70: 50, # 'F' - 71: 49, # 'G' - 72: 38, # 'H' - 73: 39, # 'I' - 74: 53, # 'J' - 75: 36, # 'K' - 76: 41, # 'L' - 77: 34, # 'M' - 78: 35, # 'N' - 79: 47, # 'O' - 80: 46, # 'P' - 81: 71, # 'Q' - 82: 43, # 'R' - 83: 33, # 'S' - 84: 37, # 'T' - 85: 57, # 'U' - 86: 48, # 'V' - 87: 64, # 'W' - 88: 68, # 'X' - 89: 55, # 'Y' - 90: 52, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 2, # 'a' - 98: 18, # 'b' - 99: 26, # 'c' - 100: 17, # 'd' - 101: 1, # 'e' - 102: 27, # 'f' - 103: 12, # 'g' - 104: 20, # 'h' - 105: 9, # 'i' - 106: 22, # 'j' - 107: 7, # 'k' - 108: 6, # 'l' - 109: 13, # 'm' - 110: 4, # 'n' - 111: 8, # 'o' - 112: 23, # 'p' - 113: 67, # 'q' - 114: 10, # 'r' - 115: 5, # 's' - 116: 3, # 't' - 117: 21, # 'u' - 118: 19, # 'v' - 119: 65, # 'w' - 120: 62, # 'x' - 121: 16, # 'y' - 122: 11, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 159, # '\x80' - 129: 160, # '\x81' - 130: 161, # '\x82' - 131: 162, # '\x83' - 132: 163, # '\x84' - 133: 164, # '\x85' - 134: 165, # '\x86' - 135: 166, # '\x87' - 136: 167, # '\x88' - 137: 168, # '\x89' - 138: 169, # '\x8a' - 139: 170, # '\x8b' - 140: 171, # '\x8c' - 141: 172, # '\x8d' - 142: 173, # '\x8e' - 143: 174, # '\x8f' - 144: 175, # '\x90' - 145: 176, # '\x91' - 146: 177, # '\x92' - 147: 178, # '\x93' - 148: 179, # '\x94' - 149: 180, # '\x95' - 150: 181, # '\x96' - 151: 182, # '\x97' - 152: 183, # '\x98' - 153: 184, # '\x99' - 154: 185, # '\x9a' - 155: 186, # '\x9b' - 156: 187, # '\x9c' - 157: 188, # '\x9d' - 158: 189, # '\x9e' - 159: 190, # '\x9f' - 160: 191, # '\xa0' - 161: 192, # 'Ą' - 162: 193, # '˘' - 163: 194, # 'Ł' - 164: 195, # '¤' - 165: 196, # 'Ľ' - 166: 197, # 'Ś' - 167: 75, # '§' - 168: 198, # '¨' - 169: 199, # 'Š' - 170: 200, # 'Ş' - 171: 201, # 'Ť' - 172: 202, # 'Ź' - 173: 203, # '\xad' - 174: 204, # 'Ž' - 175: 205, # 'Ż' - 176: 79, # '°' - 177: 206, # 'ą' - 178: 207, # '˛' - 179: 208, # 'ł' - 180: 209, # '´' - 181: 210, # 'ľ' - 182: 211, # 'ś' - 183: 212, # 'ˇ' - 184: 213, # '¸' - 185: 214, # 'š' - 186: 215, # 'ş' - 187: 216, # 'ť' - 188: 217, # 'ź' - 189: 218, # '˝' - 190: 219, # 'ž' - 191: 220, # 'ż' - 192: 221, # 'Ŕ' - 193: 51, # 'Á' - 194: 81, # 'Â' - 195: 222, # 'Ă' - 196: 78, # 'Ä' - 197: 223, # 'Ĺ' - 198: 224, # 'Ć' - 199: 225, # 'Ç' - 200: 226, # 'Č' - 201: 44, # 'É' - 202: 227, # 'Ę' - 203: 228, # 'Ë' - 204: 229, # 'Ě' - 205: 61, # 'Í' - 206: 230, # 'Î' - 207: 231, # 'Ď' - 208: 232, # 'Đ' - 209: 233, # 'Ń' - 210: 234, # 'Ň' - 211: 58, # 'Ó' - 212: 235, # 'Ô' - 213: 66, # 'Ő' - 214: 59, # 'Ö' - 215: 236, # '×' - 216: 237, # 'Ř' - 217: 238, # 'Ů' - 218: 60, # 'Ú' - 219: 69, # 'Ű' - 220: 63, # 'Ü' - 221: 239, # 'Ý' - 222: 240, # 'Ţ' - 223: 241, # 'ß' - 224: 82, # 'ŕ' - 225: 14, # 'á' - 226: 74, # 'â' - 227: 242, # 'ă' - 228: 70, # 'ä' - 229: 80, # 'ĺ' - 230: 243, # 'ć' - 231: 72, # 'ç' - 232: 244, # 'č' - 233: 15, # 'é' - 234: 83, # 'ę' - 235: 77, # 'ë' - 236: 84, # 'ě' - 237: 30, # 'í' - 238: 76, # 'î' - 239: 85, # 'ď' - 240: 245, # 'đ' - 241: 246, # 'ń' - 242: 247, # 'ň' - 243: 25, # 'ó' - 244: 73, # 'ô' - 245: 42, # 'ő' - 246: 24, # 'ö' - 247: 248, # '÷' - 248: 249, # 'ř' - 249: 250, # 'ů' - 250: 31, # 'ú' - 251: 56, # 'ű' - 252: 29, # 'ü' - 253: 251, # 'ý' - 254: 252, # 'ţ' - 255: 253, # '˙' -} - -ISO_8859_2_HUNGARIAN_MODEL = SingleByteCharSetModel( - charset_name="ISO-8859-2", - language="Hungarian", - char_to_order_map=ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER, - language_model=HUNGARIAN_LANG_MODEL, - typical_positive_ratio=0.947368, - keep_ascii_letters=True, - alphabet="ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py deleted file mode 100644 index 39a5388..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py +++ /dev/null @@ -1,5725 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -RUSSIAN_LANG_MODEL = { - 37: { # 'А' - 37: 0, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 1, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 2, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 1, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 1, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 0, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 0, # 'и' - 23: 1, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 0, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 2, # 'ф' - 26: 2, # 'х' - 28: 0, # 'ц' - 22: 1, # 'ч' - 25: 2, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 44: { # 'Б' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 1, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 2, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 33: { # 'В' - 37: 2, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 1, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 2, # 'а' - 21: 1, # 'б' - 10: 1, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 2, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 1, # 'ъ' - 18: 3, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 0, # 'ю' - 16: 1, # 'я' - }, - 46: { # 'Г' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 2, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 1, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 41: { # 'Д' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 2, # 'Е' - 56: 1, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 2, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 3, # 'ж' - 20: 1, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 48: { # 'Е' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 1, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 2, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 2, # 'Р' - 32: 2, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 0, # 'а' - 21: 0, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 2, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 0, # 'и' - 23: 2, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 1, # 'н' - 1: 0, # 'о' - 15: 1, # 'п' - 9: 1, # 'р' - 7: 3, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 2, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 56: { # 'Ж' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 1, # 'б' - 10: 0, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 2, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 1, # 'м' - 5: 0, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 2, # 'ю' - 16: 0, # 'я' - }, - 51: { # 'З' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 0, # 'г' - 13: 2, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 1, # 'л' - 12: 1, # 'м' - 5: 2, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 1, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 1, # 'я' - }, - 42: { # 'И' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 2, # 'Е' - 56: 1, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 2, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 1, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 1, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 2, # 'з' - 4: 1, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 1, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 1, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 60: { # 'Й' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 1, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 36: { # 'К' - 37: 2, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 2, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 1, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 0, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 49: { # 'Л' - 37: 2, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 1, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 1, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 0, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 0, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 1, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 1, # 'л' - 12: 0, # 'м' - 5: 1, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 2, # 'ю' - 16: 1, # 'я' - }, - 38: { # 'М' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 1, # 'Ф' - 55: 1, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 0, # 'Ь' - 47: 1, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 1, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 1, # 'л' - 12: 1, # 'м' - 5: 2, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 1, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 31: { # 'Н' - 37: 2, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 1, # 'З' - 42: 2, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 1, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 1, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 3, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 34: { # 'О' - 37: 0, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 2, # 'Д' - 48: 1, # 'Е' - 56: 1, # 'Ж' - 51: 1, # 'З' - 42: 1, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 2, # 'Л' - 38: 1, # 'М' - 31: 2, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 2, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 1, # 'Ф' - 55: 1, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 1, # 'а' - 21: 2, # 'б' - 10: 1, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 0, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 0, # 'и' - 23: 1, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 0, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 1, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 2, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 35: { # 'П' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 2, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 1, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 0, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 3, # 'р' - 7: 1, # 'с' - 6: 1, # 'т' - 14: 2, # 'у' - 39: 1, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 0, # 'ю' - 16: 2, # 'я' - }, - 45: { # 'Р' - 37: 2, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 2, # 'Е' - 56: 1, # 'Ж' - 51: 0, # 'З' - 42: 2, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 2, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 1, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 2, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 2, # 'я' - }, - 32: { # 'С' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 2, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 1, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 2, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 2, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 1, # 'с' - 6: 3, # 'т' - 14: 2, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 1, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 1, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 40: { # 'Т' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 2, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 1, # 'Ь' - 47: 1, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 1, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 1, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 52: { # 'У' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 1, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 1, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 0, # 'Я' - 3: 1, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 1, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 2, # 'и' - 23: 1, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 1, # 'н' - 1: 2, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 0, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 53: { # 'Ф' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 1, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 55: { # 'Х' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 2, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 0, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 1, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 1, # 'ь' - 30: 1, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 58: { # 'Ц' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 1, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 1, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 0, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 1, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 50: { # 'Ч' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 1, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 1, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 1, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 1, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 3, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 1, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 57: { # 'Ш' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 1, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 1, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 1, # 'н' - 1: 2, # 'о' - 15: 2, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 63: { # 'Щ' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 1, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 1, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 1, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 1, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 1, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 1, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 62: { # 'Ы' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 1, # 'Ц' - 50: 0, # 'Ч' - 57: 1, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 0, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 0, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 61: { # 'Ь' - 37: 0, # 'А' - 44: 1, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 1, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 1, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 1, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 1, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 0, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 0, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 0, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 47: { # 'Э' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 1, # 'Й' - 36: 1, # 'К' - 49: 1, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 1, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 1, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 0, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 2, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 0, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 1, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 59: { # 'Ю' - 37: 1, # 'А' - 44: 1, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 1, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 0, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 1, # 'б' - 10: 0, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 0, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 2, # 'н' - 1: 0, # 'о' - 15: 1, # 'п' - 9: 1, # 'р' - 7: 1, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 43: { # 'Я' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 1, # 'В' - 46: 1, # 'Г' - 41: 0, # 'Д' - 48: 1, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 1, # 'С' - 40: 1, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 1, # 'Х' - 58: 0, # 'Ц' - 50: 1, # 'Ч' - 57: 0, # 'Ш' - 63: 1, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 1, # 'Ю' - 43: 1, # 'Я' - 3: 0, # 'а' - 21: 1, # 'б' - 10: 1, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 0, # 'е' - 24: 0, # 'ж' - 20: 1, # 'з' - 4: 0, # 'и' - 23: 1, # 'й' - 11: 1, # 'к' - 8: 1, # 'л' - 12: 1, # 'м' - 5: 2, # 'н' - 1: 0, # 'о' - 15: 1, # 'п' - 9: 1, # 'р' - 7: 1, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 3: { # 'а' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 1, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 3, # 'и' - 23: 3, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 3, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 2, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 21: { # 'б' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 1, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 1, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 0, # 'ф' - 26: 2, # 'х' - 28: 1, # 'ц' - 22: 1, # 'ч' - 25: 2, # 'ш' - 29: 3, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 2, # 'ю' - 16: 3, # 'я' - }, - 10: { # 'в' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 3, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 3, # 'ш' - 29: 2, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 3, # 'я' - }, - 19: { # 'г' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 3, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 13: { # 'д' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 3, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 3, # 'ц' - 22: 2, # 'ч' - 25: 2, # 'ш' - 29: 1, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 1, # 'э' - 27: 2, # 'ю' - 16: 3, # 'я' - }, - 2: { # 'е' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 2, # 'и' - 23: 3, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 2, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 3, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 2, # 'ю' - 16: 3, # 'я' - }, - 24: { # 'ж' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 1, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 1, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 0, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 20: { # 'з' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 3, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 1, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 3, # 'я' - }, - 4: { # 'и' - 37: 1, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 3, # 'и' - 23: 3, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 2, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 3, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 2, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 23: { # 'й' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 1, # 'а' - 21: 1, # 'б' - 10: 1, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 2, # 'з' - 4: 1, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 2, # 'ф' - 26: 1, # 'х' - 28: 2, # 'ц' - 22: 3, # 'ч' - 25: 2, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 2, # 'я' - }, - 11: { # 'к' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 3, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 2, # 'ц' - 22: 1, # 'ч' - 25: 2, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 1, # 'ы' - 17: 1, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 8: { # 'л' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 3, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 1, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 2, # 'х' - 28: 1, # 'ц' - 22: 3, # 'ч' - 25: 2, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 1, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 12: { # 'м' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 1, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 2, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 2, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 3, # 'я' - }, - 5: { # 'н' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 2, # 'х' - 28: 3, # 'ц' - 22: 3, # 'ч' - 25: 2, # 'ш' - 29: 2, # 'щ' - 54: 1, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 1, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 1: { # 'о' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 3, # 'и' - 23: 3, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 2, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 2, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 15: { # 'п' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 3, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 3, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 0, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 1, # 'ш' - 29: 1, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 2, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 3, # 'я' - }, - 9: { # 'р' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 2, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 3, # 'ш' - 29: 2, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 2, # 'э' - 27: 2, # 'ю' - 16: 3, # 'я' - }, - 7: { # 'с' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 1, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 3, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 3, # 'ч' - 25: 2, # 'ш' - 29: 1, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 2, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 6: { # 'т' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 2, # 'б' - 10: 3, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 2, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 2, # 'ш' - 29: 2, # 'щ' - 54: 2, # 'ъ' - 18: 3, # 'ы' - 17: 3, # 'ь' - 30: 2, # 'э' - 27: 2, # 'ю' - 16: 3, # 'я' - }, - 14: { # 'у' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 3, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 2, # 'и' - 23: 2, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 2, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 2, # 'э' - 27: 3, # 'ю' - 16: 2, # 'я' - }, - 39: { # 'ф' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 0, # 'в' - 19: 1, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 1, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 2, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 1, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 2, # 'ы' - 17: 1, # 'ь' - 30: 2, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 26: { # 'х' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 3, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 1, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 1, # 'п' - 9: 3, # 'р' - 7: 2, # 'с' - 6: 2, # 'т' - 14: 2, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 1, # 'ч' - 25: 2, # 'ш' - 29: 0, # 'щ' - 54: 1, # 'ъ' - 18: 0, # 'ы' - 17: 1, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 28: { # 'ц' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 1, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 1, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 2, # 'к' - 8: 1, # 'л' - 12: 1, # 'м' - 5: 1, # 'н' - 1: 3, # 'о' - 15: 0, # 'п' - 9: 1, # 'р' - 7: 0, # 'с' - 6: 1, # 'т' - 14: 3, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 1, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 3, # 'ы' - 17: 1, # 'ь' - 30: 0, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 22: { # 'ч' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 2, # 'л' - 12: 1, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 1, # 'с' - 6: 3, # 'т' - 14: 3, # 'у' - 39: 1, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 1, # 'ч' - 25: 2, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 3, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 25: { # 'ш' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 1, # 'б' - 10: 2, # 'в' - 19: 1, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 2, # 'м' - 5: 3, # 'н' - 1: 3, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 1, # 'с' - 6: 2, # 'т' - 14: 3, # 'у' - 39: 2, # 'ф' - 26: 1, # 'х' - 28: 1, # 'ц' - 22: 1, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 3, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 0, # 'я' - }, - 29: { # 'щ' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 3, # 'а' - 21: 0, # 'б' - 10: 1, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 3, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 3, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 1, # 'м' - 5: 2, # 'н' - 1: 1, # 'о' - 15: 0, # 'п' - 9: 2, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 2, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 2, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 0, # 'я' - }, - 54: { # 'ъ' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 0, # 'б' - 10: 0, # 'в' - 19: 0, # 'г' - 13: 0, # 'д' - 2: 2, # 'е' - 24: 0, # 'ж' - 20: 0, # 'з' - 4: 0, # 'и' - 23: 0, # 'й' - 11: 0, # 'к' - 8: 0, # 'л' - 12: 0, # 'м' - 5: 0, # 'н' - 1: 0, # 'о' - 15: 0, # 'п' - 9: 0, # 'р' - 7: 0, # 'с' - 6: 0, # 'т' - 14: 0, # 'у' - 39: 0, # 'ф' - 26: 0, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 0, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 1, # 'ю' - 16: 2, # 'я' - }, - 18: { # 'ы' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 3, # 'б' - 10: 3, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 2, # 'и' - 23: 3, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 1, # 'о' - 15: 3, # 'п' - 9: 3, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 0, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 3, # 'ч' - 25: 3, # 'ш' - 29: 2, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 0, # 'ю' - 16: 2, # 'я' - }, - 17: { # 'ь' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 2, # 'б' - 10: 2, # 'в' - 19: 2, # 'г' - 13: 2, # 'д' - 2: 3, # 'е' - 24: 1, # 'ж' - 20: 3, # 'з' - 4: 2, # 'и' - 23: 0, # 'й' - 11: 3, # 'к' - 8: 0, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 2, # 'о' - 15: 2, # 'п' - 9: 1, # 'р' - 7: 3, # 'с' - 6: 2, # 'т' - 14: 0, # 'у' - 39: 2, # 'ф' - 26: 1, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 3, # 'ш' - 29: 2, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 3, # 'ю' - 16: 3, # 'я' - }, - 30: { # 'э' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 1, # 'М' - 31: 1, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 1, # 'Р' - 32: 1, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 1, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 1, # 'б' - 10: 1, # 'в' - 19: 1, # 'г' - 13: 2, # 'д' - 2: 1, # 'е' - 24: 0, # 'ж' - 20: 1, # 'з' - 4: 0, # 'и' - 23: 2, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 0, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 2, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 2, # 'ф' - 26: 1, # 'х' - 28: 0, # 'ц' - 22: 0, # 'ч' - 25: 1, # 'ш' - 29: 0, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 1, # 'ю' - 16: 1, # 'я' - }, - 27: { # 'ю' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 2, # 'а' - 21: 3, # 'б' - 10: 1, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 1, # 'е' - 24: 2, # 'ж' - 20: 2, # 'з' - 4: 1, # 'и' - 23: 1, # 'й' - 11: 2, # 'к' - 8: 2, # 'л' - 12: 2, # 'м' - 5: 2, # 'н' - 1: 1, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 0, # 'у' - 39: 1, # 'ф' - 26: 2, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 2, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 1, # 'э' - 27: 2, # 'ю' - 16: 1, # 'я' - }, - 16: { # 'я' - 37: 0, # 'А' - 44: 0, # 'Б' - 33: 0, # 'В' - 46: 0, # 'Г' - 41: 0, # 'Д' - 48: 0, # 'Е' - 56: 0, # 'Ж' - 51: 0, # 'З' - 42: 0, # 'И' - 60: 0, # 'Й' - 36: 0, # 'К' - 49: 0, # 'Л' - 38: 0, # 'М' - 31: 0, # 'Н' - 34: 0, # 'О' - 35: 0, # 'П' - 45: 0, # 'Р' - 32: 0, # 'С' - 40: 0, # 'Т' - 52: 0, # 'У' - 53: 0, # 'Ф' - 55: 0, # 'Х' - 58: 0, # 'Ц' - 50: 0, # 'Ч' - 57: 0, # 'Ш' - 63: 0, # 'Щ' - 62: 0, # 'Ы' - 61: 0, # 'Ь' - 47: 0, # 'Э' - 59: 0, # 'Ю' - 43: 0, # 'Я' - 3: 0, # 'а' - 21: 2, # 'б' - 10: 3, # 'в' - 19: 2, # 'г' - 13: 3, # 'д' - 2: 3, # 'е' - 24: 3, # 'ж' - 20: 3, # 'з' - 4: 2, # 'и' - 23: 2, # 'й' - 11: 3, # 'к' - 8: 3, # 'л' - 12: 3, # 'м' - 5: 3, # 'н' - 1: 0, # 'о' - 15: 2, # 'п' - 9: 2, # 'р' - 7: 3, # 'с' - 6: 3, # 'т' - 14: 1, # 'у' - 39: 1, # 'ф' - 26: 3, # 'х' - 28: 2, # 'ц' - 22: 2, # 'ч' - 25: 2, # 'ш' - 29: 3, # 'щ' - 54: 0, # 'ъ' - 18: 0, # 'ы' - 17: 0, # 'ь' - 30: 0, # 'э' - 27: 2, # 'ю' - 16: 2, # 'я' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -IBM866_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 37, # 'А' - 129: 44, # 'Б' - 130: 33, # 'В' - 131: 46, # 'Г' - 132: 41, # 'Д' - 133: 48, # 'Е' - 134: 56, # 'Ж' - 135: 51, # 'З' - 136: 42, # 'И' - 137: 60, # 'Й' - 138: 36, # 'К' - 139: 49, # 'Л' - 140: 38, # 'М' - 141: 31, # 'Н' - 142: 34, # 'О' - 143: 35, # 'П' - 144: 45, # 'Р' - 145: 32, # 'С' - 146: 40, # 'Т' - 147: 52, # 'У' - 148: 53, # 'Ф' - 149: 55, # 'Х' - 150: 58, # 'Ц' - 151: 50, # 'Ч' - 152: 57, # 'Ш' - 153: 63, # 'Щ' - 154: 70, # 'Ъ' - 155: 62, # 'Ы' - 156: 61, # 'Ь' - 157: 47, # 'Э' - 158: 59, # 'Ю' - 159: 43, # 'Я' - 160: 3, # 'а' - 161: 21, # 'б' - 162: 10, # 'в' - 163: 19, # 'г' - 164: 13, # 'д' - 165: 2, # 'е' - 166: 24, # 'ж' - 167: 20, # 'з' - 168: 4, # 'и' - 169: 23, # 'й' - 170: 11, # 'к' - 171: 8, # 'л' - 172: 12, # 'м' - 173: 5, # 'н' - 174: 1, # 'о' - 175: 15, # 'п' - 176: 191, # '░' - 177: 192, # '▒' - 178: 193, # '▓' - 179: 194, # '│' - 180: 195, # '┤' - 181: 196, # '╡' - 182: 197, # '╢' - 183: 198, # '╖' - 184: 199, # '╕' - 185: 200, # '╣' - 186: 201, # '║' - 187: 202, # '╗' - 188: 203, # '╝' - 189: 204, # '╜' - 190: 205, # '╛' - 191: 206, # '┐' - 192: 207, # '└' - 193: 208, # '┴' - 194: 209, # '┬' - 195: 210, # '├' - 196: 211, # '─' - 197: 212, # '┼' - 198: 213, # '╞' - 199: 214, # '╟' - 200: 215, # '╚' - 201: 216, # '╔' - 202: 217, # '╩' - 203: 218, # '╦' - 204: 219, # '╠' - 205: 220, # '═' - 206: 221, # '╬' - 207: 222, # '╧' - 208: 223, # '╨' - 209: 224, # '╤' - 210: 225, # '╥' - 211: 226, # '╙' - 212: 227, # '╘' - 213: 228, # '╒' - 214: 229, # '╓' - 215: 230, # '╫' - 216: 231, # '╪' - 217: 232, # '┘' - 218: 233, # '┌' - 219: 234, # '█' - 220: 235, # '▄' - 221: 236, # '▌' - 222: 237, # '▐' - 223: 238, # '▀' - 224: 9, # 'р' - 225: 7, # 'с' - 226: 6, # 'т' - 227: 14, # 'у' - 228: 39, # 'ф' - 229: 26, # 'х' - 230: 28, # 'ц' - 231: 22, # 'ч' - 232: 25, # 'ш' - 233: 29, # 'щ' - 234: 54, # 'ъ' - 235: 18, # 'ы' - 236: 17, # 'ь' - 237: 30, # 'э' - 238: 27, # 'ю' - 239: 16, # 'я' - 240: 239, # 'Ё' - 241: 68, # 'ё' - 242: 240, # 'Є' - 243: 241, # 'є' - 244: 242, # 'Ї' - 245: 243, # 'ї' - 246: 244, # 'Ў' - 247: 245, # 'ў' - 248: 246, # '°' - 249: 247, # '∙' - 250: 248, # '·' - 251: 249, # '√' - 252: 250, # '№' - 253: 251, # '¤' - 254: 252, # '■' - 255: 255, # '\xa0' -} - -IBM866_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="IBM866", - language="Russian", - char_to_order_map=IBM866_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) - -WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 191, # 'Ђ' - 129: 192, # 'Ѓ' - 130: 193, # '‚' - 131: 194, # 'ѓ' - 132: 195, # '„' - 133: 196, # '…' - 134: 197, # '†' - 135: 198, # '‡' - 136: 199, # '€' - 137: 200, # '‰' - 138: 201, # 'Љ' - 139: 202, # '‹' - 140: 203, # 'Њ' - 141: 204, # 'Ќ' - 142: 205, # 'Ћ' - 143: 206, # 'Џ' - 144: 207, # 'ђ' - 145: 208, # '‘' - 146: 209, # '’' - 147: 210, # '“' - 148: 211, # '”' - 149: 212, # '•' - 150: 213, # '–' - 151: 214, # '—' - 152: 215, # None - 153: 216, # '™' - 154: 217, # 'љ' - 155: 218, # '›' - 156: 219, # 'њ' - 157: 220, # 'ќ' - 158: 221, # 'ћ' - 159: 222, # 'џ' - 160: 223, # '\xa0' - 161: 224, # 'Ў' - 162: 225, # 'ў' - 163: 226, # 'Ј' - 164: 227, # '¤' - 165: 228, # 'Ґ' - 166: 229, # '¦' - 167: 230, # '§' - 168: 231, # 'Ё' - 169: 232, # '©' - 170: 233, # 'Є' - 171: 234, # '«' - 172: 235, # '¬' - 173: 236, # '\xad' - 174: 237, # '®' - 175: 238, # 'Ї' - 176: 239, # '°' - 177: 240, # '±' - 178: 241, # 'І' - 179: 242, # 'і' - 180: 243, # 'ґ' - 181: 244, # 'µ' - 182: 245, # '¶' - 183: 246, # '·' - 184: 68, # 'ё' - 185: 247, # '№' - 186: 248, # 'є' - 187: 249, # '»' - 188: 250, # 'ј' - 189: 251, # 'Ѕ' - 190: 252, # 'ѕ' - 191: 253, # 'ї' - 192: 37, # 'А' - 193: 44, # 'Б' - 194: 33, # 'В' - 195: 46, # 'Г' - 196: 41, # 'Д' - 197: 48, # 'Е' - 198: 56, # 'Ж' - 199: 51, # 'З' - 200: 42, # 'И' - 201: 60, # 'Й' - 202: 36, # 'К' - 203: 49, # 'Л' - 204: 38, # 'М' - 205: 31, # 'Н' - 206: 34, # 'О' - 207: 35, # 'П' - 208: 45, # 'Р' - 209: 32, # 'С' - 210: 40, # 'Т' - 211: 52, # 'У' - 212: 53, # 'Ф' - 213: 55, # 'Х' - 214: 58, # 'Ц' - 215: 50, # 'Ч' - 216: 57, # 'Ш' - 217: 63, # 'Щ' - 218: 70, # 'Ъ' - 219: 62, # 'Ы' - 220: 61, # 'Ь' - 221: 47, # 'Э' - 222: 59, # 'Ю' - 223: 43, # 'Я' - 224: 3, # 'а' - 225: 21, # 'б' - 226: 10, # 'в' - 227: 19, # 'г' - 228: 13, # 'д' - 229: 2, # 'е' - 230: 24, # 'ж' - 231: 20, # 'з' - 232: 4, # 'и' - 233: 23, # 'й' - 234: 11, # 'к' - 235: 8, # 'л' - 236: 12, # 'м' - 237: 5, # 'н' - 238: 1, # 'о' - 239: 15, # 'п' - 240: 9, # 'р' - 241: 7, # 'с' - 242: 6, # 'т' - 243: 14, # 'у' - 244: 39, # 'ф' - 245: 26, # 'х' - 246: 28, # 'ц' - 247: 22, # 'ч' - 248: 25, # 'ш' - 249: 29, # 'щ' - 250: 54, # 'ъ' - 251: 18, # 'ы' - 252: 17, # 'ь' - 253: 30, # 'э' - 254: 27, # 'ю' - 255: 16, # 'я' -} - -WINDOWS_1251_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="windows-1251", - language="Russian", - char_to_order_map=WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) - -IBM855_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 191, # 'ђ' - 129: 192, # 'Ђ' - 130: 193, # 'ѓ' - 131: 194, # 'Ѓ' - 132: 68, # 'ё' - 133: 195, # 'Ё' - 134: 196, # 'є' - 135: 197, # 'Є' - 136: 198, # 'ѕ' - 137: 199, # 'Ѕ' - 138: 200, # 'і' - 139: 201, # 'І' - 140: 202, # 'ї' - 141: 203, # 'Ї' - 142: 204, # 'ј' - 143: 205, # 'Ј' - 144: 206, # 'љ' - 145: 207, # 'Љ' - 146: 208, # 'њ' - 147: 209, # 'Њ' - 148: 210, # 'ћ' - 149: 211, # 'Ћ' - 150: 212, # 'ќ' - 151: 213, # 'Ќ' - 152: 214, # 'ў' - 153: 215, # 'Ў' - 154: 216, # 'џ' - 155: 217, # 'Џ' - 156: 27, # 'ю' - 157: 59, # 'Ю' - 158: 54, # 'ъ' - 159: 70, # 'Ъ' - 160: 3, # 'а' - 161: 37, # 'А' - 162: 21, # 'б' - 163: 44, # 'Б' - 164: 28, # 'ц' - 165: 58, # 'Ц' - 166: 13, # 'д' - 167: 41, # 'Д' - 168: 2, # 'е' - 169: 48, # 'Е' - 170: 39, # 'ф' - 171: 53, # 'Ф' - 172: 19, # 'г' - 173: 46, # 'Г' - 174: 218, # '«' - 175: 219, # '»' - 176: 220, # '░' - 177: 221, # '▒' - 178: 222, # '▓' - 179: 223, # '│' - 180: 224, # '┤' - 181: 26, # 'х' - 182: 55, # 'Х' - 183: 4, # 'и' - 184: 42, # 'И' - 185: 225, # '╣' - 186: 226, # '║' - 187: 227, # '╗' - 188: 228, # '╝' - 189: 23, # 'й' - 190: 60, # 'Й' - 191: 229, # '┐' - 192: 230, # '└' - 193: 231, # '┴' - 194: 232, # '┬' - 195: 233, # '├' - 196: 234, # '─' - 197: 235, # '┼' - 198: 11, # 'к' - 199: 36, # 'К' - 200: 236, # '╚' - 201: 237, # '╔' - 202: 238, # '╩' - 203: 239, # '╦' - 204: 240, # '╠' - 205: 241, # '═' - 206: 242, # '╬' - 207: 243, # '¤' - 208: 8, # 'л' - 209: 49, # 'Л' - 210: 12, # 'м' - 211: 38, # 'М' - 212: 5, # 'н' - 213: 31, # 'Н' - 214: 1, # 'о' - 215: 34, # 'О' - 216: 15, # 'п' - 217: 244, # '┘' - 218: 245, # '┌' - 219: 246, # '█' - 220: 247, # '▄' - 221: 35, # 'П' - 222: 16, # 'я' - 223: 248, # '▀' - 224: 43, # 'Я' - 225: 9, # 'р' - 226: 45, # 'Р' - 227: 7, # 'с' - 228: 32, # 'С' - 229: 6, # 'т' - 230: 40, # 'Т' - 231: 14, # 'у' - 232: 52, # 'У' - 233: 24, # 'ж' - 234: 56, # 'Ж' - 235: 10, # 'в' - 236: 33, # 'В' - 237: 17, # 'ь' - 238: 61, # 'Ь' - 239: 249, # '№' - 240: 250, # '\xad' - 241: 18, # 'ы' - 242: 62, # 'Ы' - 243: 20, # 'з' - 244: 51, # 'З' - 245: 25, # 'ш' - 246: 57, # 'Ш' - 247: 30, # 'э' - 248: 47, # 'Э' - 249: 29, # 'щ' - 250: 63, # 'Щ' - 251: 22, # 'ч' - 252: 50, # 'Ч' - 253: 251, # '§' - 254: 252, # '■' - 255: 255, # '\xa0' -} - -IBM855_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="IBM855", - language="Russian", - char_to_order_map=IBM855_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) - -KOI8_R_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 191, # '─' - 129: 192, # '│' - 130: 193, # '┌' - 131: 194, # '┐' - 132: 195, # '└' - 133: 196, # '┘' - 134: 197, # '├' - 135: 198, # '┤' - 136: 199, # '┬' - 137: 200, # '┴' - 138: 201, # '┼' - 139: 202, # '▀' - 140: 203, # '▄' - 141: 204, # '█' - 142: 205, # '▌' - 143: 206, # '▐' - 144: 207, # '░' - 145: 208, # '▒' - 146: 209, # '▓' - 147: 210, # '⌠' - 148: 211, # '■' - 149: 212, # '∙' - 150: 213, # '√' - 151: 214, # '≈' - 152: 215, # '≤' - 153: 216, # '≥' - 154: 217, # '\xa0' - 155: 218, # '⌡' - 156: 219, # '°' - 157: 220, # '²' - 158: 221, # '·' - 159: 222, # '÷' - 160: 223, # '═' - 161: 224, # '║' - 162: 225, # '╒' - 163: 68, # 'ё' - 164: 226, # '╓' - 165: 227, # '╔' - 166: 228, # '╕' - 167: 229, # '╖' - 168: 230, # '╗' - 169: 231, # '╘' - 170: 232, # '╙' - 171: 233, # '╚' - 172: 234, # '╛' - 173: 235, # '╜' - 174: 236, # '╝' - 175: 237, # '╞' - 176: 238, # '╟' - 177: 239, # '╠' - 178: 240, # '╡' - 179: 241, # 'Ё' - 180: 242, # '╢' - 181: 243, # '╣' - 182: 244, # '╤' - 183: 245, # '╥' - 184: 246, # '╦' - 185: 247, # '╧' - 186: 248, # '╨' - 187: 249, # '╩' - 188: 250, # '╪' - 189: 251, # '╫' - 190: 252, # '╬' - 191: 253, # '©' - 192: 27, # 'ю' - 193: 3, # 'а' - 194: 21, # 'б' - 195: 28, # 'ц' - 196: 13, # 'д' - 197: 2, # 'е' - 198: 39, # 'ф' - 199: 19, # 'г' - 200: 26, # 'х' - 201: 4, # 'и' - 202: 23, # 'й' - 203: 11, # 'к' - 204: 8, # 'л' - 205: 12, # 'м' - 206: 5, # 'н' - 207: 1, # 'о' - 208: 15, # 'п' - 209: 16, # 'я' - 210: 9, # 'р' - 211: 7, # 'с' - 212: 6, # 'т' - 213: 14, # 'у' - 214: 24, # 'ж' - 215: 10, # 'в' - 216: 17, # 'ь' - 217: 18, # 'ы' - 218: 20, # 'з' - 219: 25, # 'ш' - 220: 30, # 'э' - 221: 29, # 'щ' - 222: 22, # 'ч' - 223: 54, # 'ъ' - 224: 59, # 'Ю' - 225: 37, # 'А' - 226: 44, # 'Б' - 227: 58, # 'Ц' - 228: 41, # 'Д' - 229: 48, # 'Е' - 230: 53, # 'Ф' - 231: 46, # 'Г' - 232: 55, # 'Х' - 233: 42, # 'И' - 234: 60, # 'Й' - 235: 36, # 'К' - 236: 49, # 'Л' - 237: 38, # 'М' - 238: 31, # 'Н' - 239: 34, # 'О' - 240: 35, # 'П' - 241: 43, # 'Я' - 242: 45, # 'Р' - 243: 32, # 'С' - 244: 40, # 'Т' - 245: 52, # 'У' - 246: 56, # 'Ж' - 247: 33, # 'В' - 248: 61, # 'Ь' - 249: 62, # 'Ы' - 250: 51, # 'З' - 251: 57, # 'Ш' - 252: 47, # 'Э' - 253: 63, # 'Щ' - 254: 50, # 'Ч' - 255: 70, # 'Ъ' -} - -KOI8_R_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="KOI8-R", - language="Russian", - char_to_order_map=KOI8_R_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) - -MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 37, # 'А' - 129: 44, # 'Б' - 130: 33, # 'В' - 131: 46, # 'Г' - 132: 41, # 'Д' - 133: 48, # 'Е' - 134: 56, # 'Ж' - 135: 51, # 'З' - 136: 42, # 'И' - 137: 60, # 'Й' - 138: 36, # 'К' - 139: 49, # 'Л' - 140: 38, # 'М' - 141: 31, # 'Н' - 142: 34, # 'О' - 143: 35, # 'П' - 144: 45, # 'Р' - 145: 32, # 'С' - 146: 40, # 'Т' - 147: 52, # 'У' - 148: 53, # 'Ф' - 149: 55, # 'Х' - 150: 58, # 'Ц' - 151: 50, # 'Ч' - 152: 57, # 'Ш' - 153: 63, # 'Щ' - 154: 70, # 'Ъ' - 155: 62, # 'Ы' - 156: 61, # 'Ь' - 157: 47, # 'Э' - 158: 59, # 'Ю' - 159: 43, # 'Я' - 160: 191, # '†' - 161: 192, # '°' - 162: 193, # 'Ґ' - 163: 194, # '£' - 164: 195, # '§' - 165: 196, # '•' - 166: 197, # '¶' - 167: 198, # 'І' - 168: 199, # '®' - 169: 200, # '©' - 170: 201, # '™' - 171: 202, # 'Ђ' - 172: 203, # 'ђ' - 173: 204, # '≠' - 174: 205, # 'Ѓ' - 175: 206, # 'ѓ' - 176: 207, # '∞' - 177: 208, # '±' - 178: 209, # '≤' - 179: 210, # '≥' - 180: 211, # 'і' - 181: 212, # 'µ' - 182: 213, # 'ґ' - 183: 214, # 'Ј' - 184: 215, # 'Є' - 185: 216, # 'є' - 186: 217, # 'Ї' - 187: 218, # 'ї' - 188: 219, # 'Љ' - 189: 220, # 'љ' - 190: 221, # 'Њ' - 191: 222, # 'њ' - 192: 223, # 'ј' - 193: 224, # 'Ѕ' - 194: 225, # '¬' - 195: 226, # '√' - 196: 227, # 'ƒ' - 197: 228, # '≈' - 198: 229, # '∆' - 199: 230, # '«' - 200: 231, # '»' - 201: 232, # '…' - 202: 233, # '\xa0' - 203: 234, # 'Ћ' - 204: 235, # 'ћ' - 205: 236, # 'Ќ' - 206: 237, # 'ќ' - 207: 238, # 'ѕ' - 208: 239, # '–' - 209: 240, # '—' - 210: 241, # '“' - 211: 242, # '”' - 212: 243, # '‘' - 213: 244, # '’' - 214: 245, # '÷' - 215: 246, # '„' - 216: 247, # 'Ў' - 217: 248, # 'ў' - 218: 249, # 'Џ' - 219: 250, # 'џ' - 220: 251, # '№' - 221: 252, # 'Ё' - 222: 68, # 'ё' - 223: 16, # 'я' - 224: 3, # 'а' - 225: 21, # 'б' - 226: 10, # 'в' - 227: 19, # 'г' - 228: 13, # 'д' - 229: 2, # 'е' - 230: 24, # 'ж' - 231: 20, # 'з' - 232: 4, # 'и' - 233: 23, # 'й' - 234: 11, # 'к' - 235: 8, # 'л' - 236: 12, # 'м' - 237: 5, # 'н' - 238: 1, # 'о' - 239: 15, # 'п' - 240: 9, # 'р' - 241: 7, # 'с' - 242: 6, # 'т' - 243: 14, # 'у' - 244: 39, # 'ф' - 245: 26, # 'х' - 246: 28, # 'ц' - 247: 22, # 'ч' - 248: 25, # 'ш' - 249: 29, # 'щ' - 250: 54, # 'ъ' - 251: 18, # 'ы' - 252: 17, # 'ь' - 253: 30, # 'э' - 254: 27, # 'ю' - 255: 255, # '€' -} - -MACCYRILLIC_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="MacCyrillic", - language="Russian", - char_to_order_map=MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) - -ISO_8859_5_RUSSIAN_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 142, # 'A' - 66: 143, # 'B' - 67: 144, # 'C' - 68: 145, # 'D' - 69: 146, # 'E' - 70: 147, # 'F' - 71: 148, # 'G' - 72: 149, # 'H' - 73: 150, # 'I' - 74: 151, # 'J' - 75: 152, # 'K' - 76: 74, # 'L' - 77: 153, # 'M' - 78: 75, # 'N' - 79: 154, # 'O' - 80: 155, # 'P' - 81: 156, # 'Q' - 82: 157, # 'R' - 83: 158, # 'S' - 84: 159, # 'T' - 85: 160, # 'U' - 86: 161, # 'V' - 87: 162, # 'W' - 88: 163, # 'X' - 89: 164, # 'Y' - 90: 165, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 71, # 'a' - 98: 172, # 'b' - 99: 66, # 'c' - 100: 173, # 'd' - 101: 65, # 'e' - 102: 174, # 'f' - 103: 76, # 'g' - 104: 175, # 'h' - 105: 64, # 'i' - 106: 176, # 'j' - 107: 177, # 'k' - 108: 77, # 'l' - 109: 72, # 'm' - 110: 178, # 'n' - 111: 69, # 'o' - 112: 67, # 'p' - 113: 179, # 'q' - 114: 78, # 'r' - 115: 73, # 's' - 116: 180, # 't' - 117: 181, # 'u' - 118: 79, # 'v' - 119: 182, # 'w' - 120: 183, # 'x' - 121: 184, # 'y' - 122: 185, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 191, # '\x80' - 129: 192, # '\x81' - 130: 193, # '\x82' - 131: 194, # '\x83' - 132: 195, # '\x84' - 133: 196, # '\x85' - 134: 197, # '\x86' - 135: 198, # '\x87' - 136: 199, # '\x88' - 137: 200, # '\x89' - 138: 201, # '\x8a' - 139: 202, # '\x8b' - 140: 203, # '\x8c' - 141: 204, # '\x8d' - 142: 205, # '\x8e' - 143: 206, # '\x8f' - 144: 207, # '\x90' - 145: 208, # '\x91' - 146: 209, # '\x92' - 147: 210, # '\x93' - 148: 211, # '\x94' - 149: 212, # '\x95' - 150: 213, # '\x96' - 151: 214, # '\x97' - 152: 215, # '\x98' - 153: 216, # '\x99' - 154: 217, # '\x9a' - 155: 218, # '\x9b' - 156: 219, # '\x9c' - 157: 220, # '\x9d' - 158: 221, # '\x9e' - 159: 222, # '\x9f' - 160: 223, # '\xa0' - 161: 224, # 'Ё' - 162: 225, # 'Ђ' - 163: 226, # 'Ѓ' - 164: 227, # 'Є' - 165: 228, # 'Ѕ' - 166: 229, # 'І' - 167: 230, # 'Ї' - 168: 231, # 'Ј' - 169: 232, # 'Љ' - 170: 233, # 'Њ' - 171: 234, # 'Ћ' - 172: 235, # 'Ќ' - 173: 236, # '\xad' - 174: 237, # 'Ў' - 175: 238, # 'Џ' - 176: 37, # 'А' - 177: 44, # 'Б' - 178: 33, # 'В' - 179: 46, # 'Г' - 180: 41, # 'Д' - 181: 48, # 'Е' - 182: 56, # 'Ж' - 183: 51, # 'З' - 184: 42, # 'И' - 185: 60, # 'Й' - 186: 36, # 'К' - 187: 49, # 'Л' - 188: 38, # 'М' - 189: 31, # 'Н' - 190: 34, # 'О' - 191: 35, # 'П' - 192: 45, # 'Р' - 193: 32, # 'С' - 194: 40, # 'Т' - 195: 52, # 'У' - 196: 53, # 'Ф' - 197: 55, # 'Х' - 198: 58, # 'Ц' - 199: 50, # 'Ч' - 200: 57, # 'Ш' - 201: 63, # 'Щ' - 202: 70, # 'Ъ' - 203: 62, # 'Ы' - 204: 61, # 'Ь' - 205: 47, # 'Э' - 206: 59, # 'Ю' - 207: 43, # 'Я' - 208: 3, # 'а' - 209: 21, # 'б' - 210: 10, # 'в' - 211: 19, # 'г' - 212: 13, # 'д' - 213: 2, # 'е' - 214: 24, # 'ж' - 215: 20, # 'з' - 216: 4, # 'и' - 217: 23, # 'й' - 218: 11, # 'к' - 219: 8, # 'л' - 220: 12, # 'м' - 221: 5, # 'н' - 222: 1, # 'о' - 223: 15, # 'п' - 224: 9, # 'р' - 225: 7, # 'с' - 226: 6, # 'т' - 227: 14, # 'у' - 228: 39, # 'ф' - 229: 26, # 'х' - 230: 28, # 'ц' - 231: 22, # 'ч' - 232: 25, # 'ш' - 233: 29, # 'щ' - 234: 54, # 'ъ' - 235: 18, # 'ы' - 236: 17, # 'ь' - 237: 30, # 'э' - 238: 27, # 'ю' - 239: 16, # 'я' - 240: 239, # '№' - 241: 68, # 'ё' - 242: 240, # 'ђ' - 243: 241, # 'ѓ' - 244: 242, # 'є' - 245: 243, # 'ѕ' - 246: 244, # 'і' - 247: 245, # 'ї' - 248: 246, # 'ј' - 249: 247, # 'љ' - 250: 248, # 'њ' - 251: 249, # 'ћ' - 252: 250, # 'ќ' - 253: 251, # '§' - 254: 252, # 'ў' - 255: 255, # 'џ' -} - -ISO_8859_5_RUSSIAN_MODEL = SingleByteCharSetModel( - charset_name="ISO-8859-5", - language="Russian", - char_to_order_map=ISO_8859_5_RUSSIAN_CHAR_TO_ORDER, - language_model=RUSSIAN_LANG_MODEL, - typical_positive_ratio=0.976601, - keep_ascii_letters=False, - alphabet="ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py deleted file mode 100644 index 489cad9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -THAI_LANG_MODEL = { - 5: { # 'ก' - 5: 2, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 2, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 3, # 'ฎ' - 57: 2, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 2, # 'ณ' - 20: 2, # 'ด' - 19: 3, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 1, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 1, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 1, # 'ย' - 2: 3, # 'ร' - 61: 2, # 'ฤ' - 15: 3, # 'ล' - 12: 3, # 'ว' - 42: 2, # 'ศ' - 46: 3, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 1, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 3, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 0, # 'ึ' - 27: 2, # 'ื' - 32: 2, # 'ุ' - 35: 1, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 3, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 30: { # 'ข' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 1, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 2, # 'ณ' - 20: 0, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 2, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 1, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 2, # 'ี' - 40: 3, # 'ึ' - 27: 1, # 'ื' - 32: 1, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 2, # '่' - 7: 3, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 24: { # 'ค' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 2, # 'ค' - 8: 2, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 2, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 0, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 2, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 3, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 2, # 'า' - 36: 3, # 'ำ' - 23: 3, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 1, # 'เ' - 28: 0, # 'แ' - 41: 3, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 8: { # 'ง' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 3, # 'ค' - 8: 2, # 'ง' - 26: 2, # 'จ' - 52: 1, # 'ฉ' - 34: 2, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 1, # 'ฝ' - 31: 2, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 1, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 2, # 'ศ' - 46: 1, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 1, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 1, # 'ื' - 32: 1, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 3, # 'ๆ' - 37: 0, # '็' - 6: 2, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 26: { # 'จ' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 0, # 'ค' - 8: 2, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 1, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 1, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 1, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 3, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 3, # 'ำ' - 23: 2, # 'ิ' - 13: 1, # 'ี' - 40: 3, # 'ึ' - 27: 1, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 2, # '่' - 7: 2, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 52: { # 'ฉ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 3, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 3, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 1, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 1, # 'ั' - 1: 1, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 1, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 34: { # 'ช' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 1, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 1, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 1, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 2, # 'ั' - 1: 3, # 'า' - 36: 1, # 'ำ' - 23: 3, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 1, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 51: { # 'ซ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 1, # 'ั' - 1: 1, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 2, # 'ี' - 40: 3, # 'ึ' - 27: 2, # 'ื' - 32: 1, # 'ุ' - 35: 1, # 'ู' - 11: 1, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 1, # '่' - 7: 2, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 47: { # 'ญ' - 5: 1, # 'ก' - 30: 1, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 3, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 2, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 2, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 0, # 'ไ' - 50: 1, # 'ๆ' - 37: 0, # '็' - 6: 2, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 58: { # 'ฎ' - 5: 2, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 1, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 57: { # 'ฏ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 49: { # 'ฐ' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 2, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 53: { # 'ฑ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 55: { # 'ฒ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 43: { # 'ณ' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 3, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 3, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 1, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 3, # 'ะ' - 10: 0, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 20: { # 'ด' - 5: 2, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 3, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 3, # 'ั' - 1: 2, # 'า' - 36: 2, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 1, # 'ึ' - 27: 2, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 2, # 'ๆ' - 37: 2, # '็' - 6: 1, # '่' - 7: 3, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 19: { # 'ต' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 1, # 'ต' - 44: 2, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 2, # 'ภ' - 9: 1, # 'ม' - 16: 1, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 0, # 'ห' - 4: 3, # 'อ' - 63: 1, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 3, # 'ิ' - 13: 2, # 'ี' - 40: 1, # 'ึ' - 27: 1, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 2, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 44: { # 'ถ' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 2, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 2, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 1, # 'ี' - 40: 3, # 'ึ' - 27: 2, # 'ื' - 32: 2, # 'ุ' - 35: 3, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 2, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 14: { # 'ท' - 5: 1, # 'ก' - 30: 1, # 'ข' - 24: 3, # 'ค' - 8: 1, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 3, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 3, # 'ย' - 2: 3, # 'ร' - 61: 1, # 'ฤ' - 15: 1, # 'ล' - 12: 2, # 'ว' - 42: 3, # 'ศ' - 46: 1, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 3, # 'ำ' - 23: 2, # 'ิ' - 13: 3, # 'ี' - 40: 2, # 'ึ' - 27: 1, # 'ื' - 32: 3, # 'ุ' - 35: 1, # 'ู' - 11: 0, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 48: { # 'ธ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 1, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 2, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 2, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 3: { # 'น' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 3, # 'ค' - 8: 1, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 1, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 2, # 'ถ' - 14: 3, # 'ท' - 48: 3, # 'ธ' - 3: 2, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 1, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 1, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 3, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 3, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 3, # 'โ' - 29: 3, # 'ใ' - 33: 3, # 'ไ' - 50: 2, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 17: { # 'บ' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 1, # 'ง' - 26: 1, # 'จ' - 52: 1, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 2, # 'อ' - 63: 1, # 'ฯ' - 22: 0, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 2, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 2, # 'ื' - 32: 3, # 'ุ' - 35: 2, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 2, # '่' - 7: 2, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 25: { # 'ป' - 5: 2, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 1, # 'ฎ' - 57: 3, # 'ฏ' - 49: 1, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 1, # 'ต' - 44: 1, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 0, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 1, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 1, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 3, # 'ั' - 1: 1, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 3, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 1, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 2, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 2, # 'ไ' - 50: 0, # 'ๆ' - 37: 3, # '็' - 6: 1, # '่' - 7: 2, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 39: { # 'ผ' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 1, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 2, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 1, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 1, # 'ื' - 32: 0, # 'ุ' - 35: 3, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 1, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 62: { # 'ฝ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 1, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 1, # 'ี' - 40: 2, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 2, # '่' - 7: 1, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 31: { # 'พ' - 5: 1, # 'ก' - 30: 1, # 'ข' - 24: 1, # 'ค' - 8: 1, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 1, # 'ณ' - 20: 1, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 0, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 2, # 'ย' - 2: 3, # 'ร' - 61: 2, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 1, # 'ฯ' - 22: 0, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 2, # 'ี' - 40: 1, # 'ึ' - 27: 3, # 'ื' - 32: 1, # 'ุ' - 35: 2, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 1, # '็' - 6: 0, # '่' - 7: 1, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 54: { # 'ฟ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 2, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 2, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 1, # 'ื' - 32: 1, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 2, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 45: { # 'ภ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 3, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 2, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 9: { # 'ม' - 5: 2, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 2, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 1, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 3, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 1, # 'ย' - 2: 2, # 'ร' - 61: 2, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 1, # 'ศ' - 46: 1, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 0, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 3, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 2, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 2, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 16: { # 'ย' - 5: 3, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 2, # 'ช' - 51: 0, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 2, # 'ม' - 16: 0, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 3, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 3, # 'ี' - 40: 1, # 'ึ' - 27: 2, # 'ื' - 32: 2, # 'ุ' - 35: 3, # 'ู' - 11: 2, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 2, # 'ๆ' - 37: 1, # '็' - 6: 3, # '่' - 7: 2, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 2: { # 'ร' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 2, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 3, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 3, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 3, # 'ถ' - 14: 3, # 'ท' - 48: 1, # 'ธ' - 3: 2, # 'น' - 17: 2, # 'บ' - 25: 3, # 'ป' - 39: 2, # 'ผ' - 62: 1, # 'ฝ' - 31: 2, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 2, # 'ศ' - 46: 2, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 1, # 'ฯ' - 22: 3, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 2, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 3, # 'ู' - 11: 3, # 'เ' - 28: 3, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 3, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 3, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 61: { # 'ฤ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 2, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 15: { # 'ล' - 5: 2, # 'ก' - 30: 3, # 'ข' - 24: 1, # 'ค' - 8: 3, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 1, # 'ม' - 16: 3, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 3, # 'อ' - 63: 2, # 'ฯ' - 22: 3, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 2, # 'ึ' - 27: 3, # 'ื' - 32: 2, # 'ุ' - 35: 3, # 'ู' - 11: 2, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 2, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 12: { # 'ว' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 1, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 1, # 'ณ' - 20: 2, # 'ด' - 19: 1, # 'ต' - 44: 1, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 3, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 3, # 'ิ' - 13: 2, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 2, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 42: { # 'ศ' - 5: 1, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 1, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 2, # 'ว' - 42: 1, # 'ศ' - 46: 2, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 2, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 2, # 'ิ' - 13: 0, # 'ี' - 40: 3, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 2, # 'ู' - 11: 0, # 'เ' - 28: 1, # 'แ' - 41: 0, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 46: { # 'ษ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 2, # 'ฎ' - 57: 1, # 'ฏ' - 49: 2, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 3, # 'ณ' - 20: 0, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 1, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 2, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 18: { # 'ส' - 5: 2, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 2, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 3, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 2, # 'ภ' - 9: 3, # 'ม' - 16: 1, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 3, # 'ำ' - 23: 3, # 'ิ' - 13: 3, # 'ี' - 40: 2, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 3, # 'ู' - 11: 2, # 'เ' - 28: 0, # 'แ' - 41: 1, # 'โ' - 29: 0, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 1, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 21: { # 'ห' - 5: 3, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 1, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 3, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 0, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 0, # 'ำ' - 23: 1, # 'ิ' - 13: 1, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 1, # 'ุ' - 35: 1, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 3, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 4: { # 'อ' - 5: 3, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 3, # 'ม' - 16: 3, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 2, # 'ะ' - 10: 3, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 2, # 'ิ' - 13: 3, # 'ี' - 40: 0, # 'ึ' - 27: 3, # 'ื' - 32: 3, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 1, # '็' - 6: 2, # '่' - 7: 2, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 63: { # 'ฯ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 22: { # 'ะ' - 5: 3, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 1, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 3, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 1, # 'ธ' - 3: 2, # 'น' - 17: 3, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 2, # 'อ' - 63: 1, # 'ฯ' - 22: 1, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 10: { # 'ั' - 5: 3, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 3, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 3, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 2, # 'ฐ' - 53: 0, # 'ฑ' - 55: 3, # 'ฒ' - 43: 3, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 3, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 2, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 1: { # 'า' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 3, # 'ค' - 8: 3, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 3, # 'ช' - 51: 1, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 3, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 2, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 1, # 'ฝ' - 31: 3, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 3, # 'ม' - 16: 3, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 3, # 'ว' - 42: 2, # 'ศ' - 46: 3, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 2, # 'อ' - 63: 1, # 'ฯ' - 22: 3, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 36: { # 'ำ' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 3, # 'ค' - 8: 2, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 1, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 1, # 'ต' - 44: 1, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 3, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 23: { # 'ิ' - 5: 3, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 3, # 'ช' - 51: 0, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 3, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 0, # 'ฝ' - 31: 3, # 'พ' - 54: 1, # 'ฟ' - 45: 2, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 3, # 'ศ' - 46: 2, # 'ษ' - 18: 2, # 'ส' - 21: 3, # 'ห' - 4: 1, # 'อ' - 63: 1, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 2, # '้' - 38: 2, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 13: { # 'ี' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 1, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 3, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 2, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 1, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 40: { # 'ึ' - 5: 3, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 3, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 1, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 27: { # 'ื' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 3, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 32: { # 'ุ' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 3, # 'ค' - 8: 3, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 1, # 'ฒ' - 43: 3, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 2, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 1, # 'ภ' - 9: 3, # 'ม' - 16: 1, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 1, # 'ว' - 42: 1, # 'ศ' - 46: 2, # 'ษ' - 18: 1, # 'ส' - 21: 1, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 0, # 'แ' - 41: 1, # 'โ' - 29: 0, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 2, # '้' - 38: 1, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 35: { # 'ู' - 5: 3, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 2, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 2, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 1, # 'ณ' - 20: 2, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 2, # 'น' - 17: 0, # 'บ' - 25: 3, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 1, # 'แ' - 41: 1, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 3, # '่' - 7: 3, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 11: { # 'เ' - 5: 3, # 'ก' - 30: 3, # 'ข' - 24: 3, # 'ค' - 8: 2, # 'ง' - 26: 3, # 'จ' - 52: 3, # 'ฉ' - 34: 3, # 'ช' - 51: 2, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 1, # 'ณ' - 20: 3, # 'ด' - 19: 3, # 'ต' - 44: 1, # 'ถ' - 14: 3, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 3, # 'ป' - 39: 2, # 'ผ' - 62: 1, # 'ฝ' - 31: 3, # 'พ' - 54: 1, # 'ฟ' - 45: 3, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 3, # 'ว' - 42: 2, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 28: { # 'แ' - 5: 3, # 'ก' - 30: 2, # 'ข' - 24: 2, # 'ค' - 8: 1, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 3, # 'ต' - 44: 2, # 'ถ' - 14: 3, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 2, # 'ป' - 39: 3, # 'ผ' - 62: 0, # 'ฝ' - 31: 2, # 'พ' - 54: 2, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 41: { # 'โ' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 1, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 1, # 'บ' - 25: 3, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 1, # 'ภ' - 9: 1, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 3, # 'ล' - 12: 0, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 0, # 'ห' - 4: 2, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 29: { # 'ใ' - 5: 2, # 'ก' - 30: 0, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 3, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 1, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 3, # 'ส' - 21: 3, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 33: { # 'ไ' - 5: 1, # 'ก' - 30: 2, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 3, # 'ด' - 19: 1, # 'ต' - 44: 0, # 'ถ' - 14: 3, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 1, # 'บ' - 25: 3, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 2, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 0, # 'ย' - 2: 3, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 3, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 2, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 50: { # 'ๆ' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 37: { # '็' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 2, # 'ง' - 26: 3, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 1, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 2, # 'ต' - 44: 0, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 3, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 1, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 2, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 0, # 'ห' - 4: 1, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 1, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 6: { # '่' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 1, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 1, # 'ธ' - 3: 3, # 'น' - 17: 1, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 1, # 'ฝ' - 31: 1, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 3, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 2, # 'ล' - 12: 3, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 1, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 1, # 'ะ' - 10: 0, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 3, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 1, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 7: { # '้' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 2, # 'ค' - 8: 3, # 'ง' - 26: 2, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 1, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 1, # 'ด' - 19: 2, # 'ต' - 44: 1, # 'ถ' - 14: 2, # 'ท' - 48: 0, # 'ธ' - 3: 3, # 'น' - 17: 2, # 'บ' - 25: 2, # 'ป' - 39: 2, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 0, # 'ภ' - 9: 3, # 'ม' - 16: 2, # 'ย' - 2: 2, # 'ร' - 61: 0, # 'ฤ' - 15: 1, # 'ล' - 12: 3, # 'ว' - 42: 1, # 'ศ' - 46: 0, # 'ษ' - 18: 2, # 'ส' - 21: 2, # 'ห' - 4: 3, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 3, # 'า' - 36: 2, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 2, # 'ใ' - 33: 2, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 38: { # '์' - 5: 2, # 'ก' - 30: 1, # 'ข' - 24: 1, # 'ค' - 8: 0, # 'ง' - 26: 1, # 'จ' - 52: 0, # 'ฉ' - 34: 1, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 2, # 'ด' - 19: 1, # 'ต' - 44: 1, # 'ถ' - 14: 1, # 'ท' - 48: 0, # 'ธ' - 3: 1, # 'น' - 17: 1, # 'บ' - 25: 1, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 1, # 'พ' - 54: 1, # 'ฟ' - 45: 0, # 'ภ' - 9: 2, # 'ม' - 16: 0, # 'ย' - 2: 1, # 'ร' - 61: 1, # 'ฤ' - 15: 1, # 'ล' - 12: 1, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 1, # 'ส' - 21: 1, # 'ห' - 4: 2, # 'อ' - 63: 1, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 2, # 'เ' - 28: 2, # 'แ' - 41: 1, # 'โ' - 29: 1, # 'ใ' - 33: 1, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 0, # '๑' - 59: 0, # '๒' - 60: 0, # '๕' - }, - 56: { # '๑' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 2, # '๑' - 59: 1, # '๒' - 60: 1, # '๕' - }, - 59: { # '๒' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 1, # '๑' - 59: 1, # '๒' - 60: 3, # '๕' - }, - 60: { # '๕' - 5: 0, # 'ก' - 30: 0, # 'ข' - 24: 0, # 'ค' - 8: 0, # 'ง' - 26: 0, # 'จ' - 52: 0, # 'ฉ' - 34: 0, # 'ช' - 51: 0, # 'ซ' - 47: 0, # 'ญ' - 58: 0, # 'ฎ' - 57: 0, # 'ฏ' - 49: 0, # 'ฐ' - 53: 0, # 'ฑ' - 55: 0, # 'ฒ' - 43: 0, # 'ณ' - 20: 0, # 'ด' - 19: 0, # 'ต' - 44: 0, # 'ถ' - 14: 0, # 'ท' - 48: 0, # 'ธ' - 3: 0, # 'น' - 17: 0, # 'บ' - 25: 0, # 'ป' - 39: 0, # 'ผ' - 62: 0, # 'ฝ' - 31: 0, # 'พ' - 54: 0, # 'ฟ' - 45: 0, # 'ภ' - 9: 0, # 'ม' - 16: 0, # 'ย' - 2: 0, # 'ร' - 61: 0, # 'ฤ' - 15: 0, # 'ล' - 12: 0, # 'ว' - 42: 0, # 'ศ' - 46: 0, # 'ษ' - 18: 0, # 'ส' - 21: 0, # 'ห' - 4: 0, # 'อ' - 63: 0, # 'ฯ' - 22: 0, # 'ะ' - 10: 0, # 'ั' - 1: 0, # 'า' - 36: 0, # 'ำ' - 23: 0, # 'ิ' - 13: 0, # 'ี' - 40: 0, # 'ึ' - 27: 0, # 'ื' - 32: 0, # 'ุ' - 35: 0, # 'ู' - 11: 0, # 'เ' - 28: 0, # 'แ' - 41: 0, # 'โ' - 29: 0, # 'ใ' - 33: 0, # 'ไ' - 50: 0, # 'ๆ' - 37: 0, # '็' - 6: 0, # '่' - 7: 0, # '้' - 38: 0, # '์' - 56: 2, # '๑' - 59: 1, # '๒' - 60: 0, # '๕' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -TIS_620_THAI_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 254, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 254, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 253, # ' ' - 33: 253, # '!' - 34: 253, # '"' - 35: 253, # '#' - 36: 253, # '$' - 37: 253, # '%' - 38: 253, # '&' - 39: 253, # "'" - 40: 253, # '(' - 41: 253, # ')' - 42: 253, # '*' - 43: 253, # '+' - 44: 253, # ',' - 45: 253, # '-' - 46: 253, # '.' - 47: 253, # '/' - 48: 252, # '0' - 49: 252, # '1' - 50: 252, # '2' - 51: 252, # '3' - 52: 252, # '4' - 53: 252, # '5' - 54: 252, # '6' - 55: 252, # '7' - 56: 252, # '8' - 57: 252, # '9' - 58: 253, # ':' - 59: 253, # ';' - 60: 253, # '<' - 61: 253, # '=' - 62: 253, # '>' - 63: 253, # '?' - 64: 253, # '@' - 65: 182, # 'A' - 66: 106, # 'B' - 67: 107, # 'C' - 68: 100, # 'D' - 69: 183, # 'E' - 70: 184, # 'F' - 71: 185, # 'G' - 72: 101, # 'H' - 73: 94, # 'I' - 74: 186, # 'J' - 75: 187, # 'K' - 76: 108, # 'L' - 77: 109, # 'M' - 78: 110, # 'N' - 79: 111, # 'O' - 80: 188, # 'P' - 81: 189, # 'Q' - 82: 190, # 'R' - 83: 89, # 'S' - 84: 95, # 'T' - 85: 112, # 'U' - 86: 113, # 'V' - 87: 191, # 'W' - 88: 192, # 'X' - 89: 193, # 'Y' - 90: 194, # 'Z' - 91: 253, # '[' - 92: 253, # '\\' - 93: 253, # ']' - 94: 253, # '^' - 95: 253, # '_' - 96: 253, # '`' - 97: 64, # 'a' - 98: 72, # 'b' - 99: 73, # 'c' - 100: 114, # 'd' - 101: 74, # 'e' - 102: 115, # 'f' - 103: 116, # 'g' - 104: 102, # 'h' - 105: 81, # 'i' - 106: 201, # 'j' - 107: 117, # 'k' - 108: 90, # 'l' - 109: 103, # 'm' - 110: 78, # 'n' - 111: 82, # 'o' - 112: 96, # 'p' - 113: 202, # 'q' - 114: 91, # 'r' - 115: 79, # 's' - 116: 84, # 't' - 117: 104, # 'u' - 118: 105, # 'v' - 119: 97, # 'w' - 120: 98, # 'x' - 121: 92, # 'y' - 122: 203, # 'z' - 123: 253, # '{' - 124: 253, # '|' - 125: 253, # '}' - 126: 253, # '~' - 127: 253, # '\x7f' - 128: 209, # '\x80' - 129: 210, # '\x81' - 130: 211, # '\x82' - 131: 212, # '\x83' - 132: 213, # '\x84' - 133: 88, # '\x85' - 134: 214, # '\x86' - 135: 215, # '\x87' - 136: 216, # '\x88' - 137: 217, # '\x89' - 138: 218, # '\x8a' - 139: 219, # '\x8b' - 140: 220, # '\x8c' - 141: 118, # '\x8d' - 142: 221, # '\x8e' - 143: 222, # '\x8f' - 144: 223, # '\x90' - 145: 224, # '\x91' - 146: 99, # '\x92' - 147: 85, # '\x93' - 148: 83, # '\x94' - 149: 225, # '\x95' - 150: 226, # '\x96' - 151: 227, # '\x97' - 152: 228, # '\x98' - 153: 229, # '\x99' - 154: 230, # '\x9a' - 155: 231, # '\x9b' - 156: 232, # '\x9c' - 157: 233, # '\x9d' - 158: 234, # '\x9e' - 159: 235, # '\x9f' - 160: 236, # None - 161: 5, # 'ก' - 162: 30, # 'ข' - 163: 237, # 'ฃ' - 164: 24, # 'ค' - 165: 238, # 'ฅ' - 166: 75, # 'ฆ' - 167: 8, # 'ง' - 168: 26, # 'จ' - 169: 52, # 'ฉ' - 170: 34, # 'ช' - 171: 51, # 'ซ' - 172: 119, # 'ฌ' - 173: 47, # 'ญ' - 174: 58, # 'ฎ' - 175: 57, # 'ฏ' - 176: 49, # 'ฐ' - 177: 53, # 'ฑ' - 178: 55, # 'ฒ' - 179: 43, # 'ณ' - 180: 20, # 'ด' - 181: 19, # 'ต' - 182: 44, # 'ถ' - 183: 14, # 'ท' - 184: 48, # 'ธ' - 185: 3, # 'น' - 186: 17, # 'บ' - 187: 25, # 'ป' - 188: 39, # 'ผ' - 189: 62, # 'ฝ' - 190: 31, # 'พ' - 191: 54, # 'ฟ' - 192: 45, # 'ภ' - 193: 9, # 'ม' - 194: 16, # 'ย' - 195: 2, # 'ร' - 196: 61, # 'ฤ' - 197: 15, # 'ล' - 198: 239, # 'ฦ' - 199: 12, # 'ว' - 200: 42, # 'ศ' - 201: 46, # 'ษ' - 202: 18, # 'ส' - 203: 21, # 'ห' - 204: 76, # 'ฬ' - 205: 4, # 'อ' - 206: 66, # 'ฮ' - 207: 63, # 'ฯ' - 208: 22, # 'ะ' - 209: 10, # 'ั' - 210: 1, # 'า' - 211: 36, # 'ำ' - 212: 23, # 'ิ' - 213: 13, # 'ี' - 214: 40, # 'ึ' - 215: 27, # 'ื' - 216: 32, # 'ุ' - 217: 35, # 'ู' - 218: 86, # 'ฺ' - 219: 240, # None - 220: 241, # None - 221: 242, # None - 222: 243, # None - 223: 244, # '฿' - 224: 11, # 'เ' - 225: 28, # 'แ' - 226: 41, # 'โ' - 227: 29, # 'ใ' - 228: 33, # 'ไ' - 229: 245, # 'ๅ' - 230: 50, # 'ๆ' - 231: 37, # '็' - 232: 6, # '่' - 233: 7, # '้' - 234: 67, # '๊' - 235: 77, # '๋' - 236: 38, # '์' - 237: 93, # 'ํ' - 238: 246, # '๎' - 239: 247, # '๏' - 240: 68, # '๐' - 241: 56, # '๑' - 242: 59, # '๒' - 243: 65, # '๓' - 244: 69, # '๔' - 245: 60, # '๕' - 246: 70, # '๖' - 247: 80, # '๗' - 248: 71, # '๘' - 249: 87, # '๙' - 250: 248, # '๚' - 251: 249, # '๛' - 252: 250, # None - 253: 251, # None - 254: 252, # None - 255: 253, # None -} - -TIS_620_THAI_MODEL = SingleByteCharSetModel( - charset_name="TIS-620", - language="Thai", - char_to_order_map=TIS_620_THAI_CHAR_TO_ORDER, - language_model=THAI_LANG_MODEL, - typical_positive_ratio=0.926386, - keep_ascii_letters=False, - alphabet="กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py deleted file mode 100644 index 291857c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py +++ /dev/null @@ -1,4380 +0,0 @@ -from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel - -# 3: Positive -# 2: Likely -# 1: Unlikely -# 0: Negative - -TURKISH_LANG_MODEL = { - 23: { # 'A' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 1, # 'i' - 24: 0, # 'j' - 10: 2, # 'k' - 5: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 1, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 37: { # 'B' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 2, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, - 47: { # 'C' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 1, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 2, # 'l' - 13: 2, # 'm' - 4: 2, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 2, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 1, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 39: { # 'D' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 1, # 'l' - 13: 3, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 1, # 'Ş' - 19: 0, # 'ş' - }, - 29: { # 'E' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 1, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 0, # 'h' - 3: 1, # 'i' - 24: 1, # 'j' - 10: 0, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 1, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 52: { # 'F' - 23: 0, # 'A' - 37: 1, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 1, # 'E' - 52: 2, # 'F' - 36: 0, # 'G' - 45: 2, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 1, # 'b' - 28: 1, # 'c' - 12: 1, # 'd' - 2: 0, # 'e' - 18: 1, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 2, # 'i' - 24: 1, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 2, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 2, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 1, # 'Ö' - 55: 2, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 2, # 'ş' - }, - 36: { # 'G' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 2, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 2, # 'N' - 42: 1, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 1, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 1, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 0, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 1, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 2, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 45: { # 'H' - 23: 0, # 'A' - 37: 1, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 2, # 'G' - 45: 1, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 1, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 2, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 2, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 1, # 'p' - 7: 1, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 2, # 'ğ' - 41: 1, # 'İ' - 6: 0, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 53: { # 'I' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 2, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, - 60: { # 'J' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 0, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 1, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 1, # 's' - 9: 0, # 't' - 14: 0, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 16: { # 'K' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 1, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 0, # 'u' - 32: 3, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 1, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 49: { # 'L' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 2, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 2, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 0, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 2, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 2, # 'n' - 15: 1, # 'o' - 26: 1, # 'p' - 7: 1, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 0, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 2, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 1, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 20: { # 'M' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 2, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 0, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 46: { # 'N' - 23: 0, # 'A' - 37: 1, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 1, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 1, # 'o' - 26: 1, # 'p' - 7: 1, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 1, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 1, # 'İ' - 6: 2, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, - 42: { # 'O' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 1, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 2, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 2, # 'İ' - 6: 1, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, - 48: { # 'P' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 2, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 2, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 0, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 44: { # 'R' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 1, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 2, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 1, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, - 35: { # 'S' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 1, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 1, # 'l' - 13: 2, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 1, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 2, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 31: { # 'T' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 3, # 'e' - 18: 2, # 'f' - 27: 2, # 'g' - 25: 0, # 'h' - 3: 1, # 'i' - 24: 1, # 'j' - 10: 2, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 2, # 'r' - 8: 0, # 's' - 9: 2, # 't' - 14: 2, # 'u' - 32: 1, # 'v' - 57: 1, # 'w' - 58: 1, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 51: { # 'U' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 1, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 1, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 38: { # 'V' - 23: 1, # 'A' - 37: 1, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 2, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 1, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 1, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 3, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 62: { # 'W' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 0, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 0, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 0, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 43: { # 'Y' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 0, # 'G' - 45: 1, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 2, # 'N' - 42: 0, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 1, # 'j' - 10: 1, # 'k' - 5: 1, # 'l' - 13: 3, # 'm' - 4: 0, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 1, # 'Ü' - 59: 1, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 0, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 56: { # 'Z' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 2, # 'Z' - 1: 2, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 2, # 'i' - 24: 1, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 1, # 'r' - 8: 1, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 1: { # 'a' - 23: 3, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 3, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 2, # 'Z' - 1: 2, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 2, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 3, # 'v' - 57: 2, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 1, # 'î' - 34: 1, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 21: { # 'b' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 3, # 'g' - 25: 1, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 3, # 'p' - 7: 1, # 'r' - 8: 2, # 's' - 9: 2, # 't' - 14: 2, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 28: { # 'c' - 23: 0, # 'A' - 37: 1, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 2, # 'E' - 52: 0, # 'F' - 36: 2, # 'G' - 45: 2, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 2, # 'T' - 51: 2, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 3, # 'Y' - 56: 0, # 'Z' - 1: 1, # 'a' - 21: 1, # 'b' - 28: 2, # 'c' - 12: 2, # 'd' - 2: 1, # 'e' - 18: 1, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 1, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 2, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 1, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 1, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 1, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 1, # 'î' - 34: 2, # 'ö' - 17: 2, # 'ü' - 30: 2, # 'ğ' - 41: 1, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 2, # 'ş' - }, - 12: { # 'd' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 2, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 1, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 2, # 'i' - 24: 3, # 'j' - 10: 2, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 2, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 1, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 2: { # 'e' - 23: 2, # 'A' - 37: 0, # 'B' - 47: 2, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 3, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 2, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 3, # 'v' - 57: 2, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 1, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 18: { # 'f' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 2, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 1, # 'i' - 24: 1, # 'j' - 10: 1, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 1, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 1, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 27: { # 'g' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 1, # 'h' - 3: 2, # 'i' - 24: 3, # 'j' - 10: 2, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 2, # 'r' - 8: 2, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 25: { # 'h' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 2, # 'h' - 3: 2, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 1, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 3: { # 'i' - 23: 2, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 1, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 2, # 'f' - 27: 3, # 'g' - 25: 1, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 1, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 1, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 1, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 1, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 24: { # 'j' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 2, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 1, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 2, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 2, # 'i' - 24: 1, # 'j' - 10: 2, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 2, # 'r' - 8: 3, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 2, # 'x' - 11: 1, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 10: { # 'k' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 3, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 3, # 'e' - 18: 1, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 2, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 3, # 'p' - 7: 2, # 'r' - 8: 2, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 3, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 5: { # 'l' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 1, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 1, # 'l' - 13: 1, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 2, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 13: { # 'm' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 3, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 2, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 2, # 'u' - 32: 2, # 'v' - 57: 1, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 4: { # 'n' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 2, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 1, # 'f' - 27: 2, # 'g' - 25: 3, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 3, # 'p' - 7: 2, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 2, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 15: { # 'o' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 2, # 'L' - 20: 0, # 'M' - 46: 2, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 1, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 1, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 2, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 2, # 'ğ' - 41: 2, # 'İ' - 6: 3, # 'ı' - 40: 2, # 'Ş' - 19: 2, # 'ş' - }, - 26: { # 'p' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 2, # 'i' - 24: 3, # 'j' - 10: 1, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 2, # 'r' - 8: 1, # 's' - 9: 1, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 1, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 7: { # 'r' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 1, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 2, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 1, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 3, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 8: { # 's' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 2, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 2, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 9: { # 't' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 2, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 3, # 'v' - 57: 0, # 'w' - 58: 2, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 14: { # 'u' - 23: 3, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 2, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 3, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 2, # 'Z' - 1: 2, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 2, # 'e' - 18: 2, # 'f' - 27: 3, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 2, # 'v' - 57: 2, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 3, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 32: { # 'v' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 1, # 'j' - 10: 1, # 'k' - 5: 3, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 1, # 'r' - 8: 2, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 57: { # 'w' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 1, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 1, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 1, # 's' - 9: 0, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 2, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 58: { # 'x' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 1, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 1, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 2, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 1, # 'r' - 8: 2, # 's' - 9: 1, # 't' - 14: 0, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 11: { # 'y' - 23: 1, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 2, # 'i' - 24: 1, # 'j' - 10: 2, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 2, # 'r' - 8: 1, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 3, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 22: { # 'z' - 23: 2, # 'A' - 37: 2, # 'B' - 47: 1, # 'C' - 39: 2, # 'D' - 29: 3, # 'E' - 52: 1, # 'F' - 36: 2, # 'G' - 45: 2, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 2, # 'N' - 42: 2, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 3, # 'T' - 51: 2, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 1, # 'Z' - 1: 1, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 2, # 'd' - 2: 2, # 'e' - 18: 3, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 2, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 0, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 3, # 'y' - 22: 2, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 2, # 'Ü' - 59: 1, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 2, # 'ü' - 30: 2, # 'ğ' - 41: 1, # 'İ' - 6: 3, # 'ı' - 40: 1, # 'Ş' - 19: 2, # 'ş' - }, - 63: { # '·' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 1, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 54: { # 'Ç' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 1, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 1, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 0, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 0, # 'h' - 3: 3, # 'i' - 24: 0, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 2, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 2, # 'r' - 8: 0, # 's' - 9: 1, # 't' - 14: 0, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 2, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 50: { # 'Ö' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 2, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 2, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 1, # 'N' - 42: 2, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 2, # 'd' - 2: 0, # 'e' - 18: 1, # 'f' - 27: 1, # 'g' - 25: 1, # 'h' - 3: 2, # 'i' - 24: 0, # 'j' - 10: 2, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 3, # 'n' - 15: 2, # 'o' - 26: 2, # 'p' - 7: 3, # 'r' - 8: 1, # 's' - 9: 2, # 't' - 14: 0, # 'u' - 32: 1, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 2, # 'ü' - 30: 1, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 55: { # 'Ü' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 1, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 1, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 1, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 1, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 1, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 0, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 59: { # 'â' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 0, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 2, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 2, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 1, # 'Ş' - 19: 0, # 'ş' - }, - 33: { # 'ç' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 3, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 0, # 'Z' - 1: 0, # 'a' - 21: 3, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 0, # 'e' - 18: 2, # 'f' - 27: 1, # 'g' - 25: 3, # 'h' - 3: 3, # 'i' - 24: 0, # 'j' - 10: 3, # 'k' - 5: 0, # 'l' - 13: 0, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 2, # 's' - 9: 3, # 't' - 14: 0, # 'u' - 32: 2, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 1, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 61: { # 'î' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 0, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 0, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 2, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 1, # 'j' - 10: 0, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 1, # 'n' - 15: 0, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 1, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 1, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 1, # 'î' - 34: 0, # 'ö' - 17: 0, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 1, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 34: { # 'ö' - 23: 0, # 'A' - 37: 1, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 1, # 'G' - 45: 1, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 1, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 2, # 'c' - 12: 1, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 2, # 'h' - 3: 1, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 2, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 0, # 'r' - 8: 3, # 's' - 9: 1, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 1, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 0, # 'ü' - 30: 2, # 'ğ' - 41: 1, # 'İ' - 6: 1, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 17: { # 'ü' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 0, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 1, # 'J' - 16: 1, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 0, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 0, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 0, # 'c' - 12: 1, # 'd' - 2: 3, # 'e' - 18: 1, # 'f' - 27: 2, # 'g' - 25: 0, # 'h' - 3: 1, # 'i' - 24: 1, # 'j' - 10: 2, # 'k' - 5: 3, # 'l' - 13: 2, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 2, # 'p' - 7: 2, # 'r' - 8: 3, # 's' - 9: 2, # 't' - 14: 3, # 'u' - 32: 1, # 'v' - 57: 1, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 2, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 30: { # 'ğ' - 23: 0, # 'A' - 37: 2, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 1, # 'M' - 46: 2, # 'N' - 42: 2, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 0, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 2, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 0, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 2, # 'e' - 18: 0, # 'f' - 27: 0, # 'g' - 25: 0, # 'h' - 3: 0, # 'i' - 24: 3, # 'j' - 10: 1, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 0, # 'n' - 15: 1, # 'o' - 26: 0, # 'p' - 7: 1, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 2, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 2, # 'İ' - 6: 2, # 'ı' - 40: 2, # 'Ş' - 19: 1, # 'ş' - }, - 41: { # 'İ' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 1, # 'E' - 52: 0, # 'F' - 36: 2, # 'G' - 45: 2, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 0, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 0, # 'Z' - 1: 1, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 2, # 'd' - 2: 1, # 'e' - 18: 0, # 'f' - 27: 3, # 'g' - 25: 2, # 'h' - 3: 2, # 'i' - 24: 2, # 'j' - 10: 2, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 3, # 'n' - 15: 1, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 2, # 't' - 14: 0, # 'u' - 32: 0, # 'v' - 57: 1, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 1, # 'Ü' - 59: 1, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 1, # 'ö' - 17: 1, # 'ü' - 30: 2, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 1, # 'ş' - }, - 6: { # 'ı' - 23: 2, # 'A' - 37: 0, # 'B' - 47: 0, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 2, # 'J' - 16: 3, # 'K' - 49: 0, # 'L' - 20: 3, # 'M' - 46: 1, # 'N' - 42: 0, # 'O' - 48: 0, # 'P' - 44: 0, # 'R' - 35: 0, # 'S' - 31: 2, # 'T' - 51: 0, # 'U' - 38: 0, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 1, # 'Z' - 1: 3, # 'a' - 21: 2, # 'b' - 28: 1, # 'c' - 12: 3, # 'd' - 2: 3, # 'e' - 18: 3, # 'f' - 27: 3, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 3, # 'j' - 10: 3, # 'k' - 5: 3, # 'l' - 13: 3, # 'm' - 4: 3, # 'n' - 15: 0, # 'o' - 26: 3, # 'p' - 7: 3, # 'r' - 8: 3, # 's' - 9: 3, # 't' - 14: 3, # 'u' - 32: 3, # 'v' - 57: 1, # 'w' - 58: 1, # 'x' - 11: 3, # 'y' - 22: 0, # 'z' - 63: 1, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 2, # 'ç' - 61: 0, # 'î' - 34: 0, # 'ö' - 17: 3, # 'ü' - 30: 0, # 'ğ' - 41: 0, # 'İ' - 6: 3, # 'ı' - 40: 0, # 'Ş' - 19: 0, # 'ş' - }, - 40: { # 'Ş' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 1, # 'D' - 29: 1, # 'E' - 52: 0, # 'F' - 36: 1, # 'G' - 45: 2, # 'H' - 53: 1, # 'I' - 60: 0, # 'J' - 16: 0, # 'K' - 49: 0, # 'L' - 20: 2, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 2, # 'P' - 44: 2, # 'R' - 35: 1, # 'S' - 31: 1, # 'T' - 51: 0, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 2, # 'Y' - 56: 1, # 'Z' - 1: 0, # 'a' - 21: 2, # 'b' - 28: 0, # 'c' - 12: 2, # 'd' - 2: 0, # 'e' - 18: 3, # 'f' - 27: 0, # 'g' - 25: 2, # 'h' - 3: 3, # 'i' - 24: 2, # 'j' - 10: 1, # 'k' - 5: 0, # 'l' - 13: 1, # 'm' - 4: 3, # 'n' - 15: 2, # 'o' - 26: 0, # 'p' - 7: 3, # 'r' - 8: 2, # 's' - 9: 2, # 't' - 14: 1, # 'u' - 32: 3, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 2, # 'y' - 22: 0, # 'z' - 63: 0, # '·' - 54: 0, # 'Ç' - 50: 0, # 'Ö' - 55: 1, # 'Ü' - 59: 0, # 'â' - 33: 0, # 'ç' - 61: 0, # 'î' - 34: 2, # 'ö' - 17: 1, # 'ü' - 30: 2, # 'ğ' - 41: 0, # 'İ' - 6: 2, # 'ı' - 40: 1, # 'Ş' - 19: 2, # 'ş' - }, - 19: { # 'ş' - 23: 0, # 'A' - 37: 0, # 'B' - 47: 1, # 'C' - 39: 0, # 'D' - 29: 0, # 'E' - 52: 2, # 'F' - 36: 1, # 'G' - 45: 0, # 'H' - 53: 0, # 'I' - 60: 0, # 'J' - 16: 3, # 'K' - 49: 2, # 'L' - 20: 0, # 'M' - 46: 1, # 'N' - 42: 1, # 'O' - 48: 1, # 'P' - 44: 1, # 'R' - 35: 1, # 'S' - 31: 0, # 'T' - 51: 1, # 'U' - 38: 1, # 'V' - 62: 0, # 'W' - 43: 1, # 'Y' - 56: 0, # 'Z' - 1: 3, # 'a' - 21: 1, # 'b' - 28: 2, # 'c' - 12: 0, # 'd' - 2: 3, # 'e' - 18: 0, # 'f' - 27: 2, # 'g' - 25: 1, # 'h' - 3: 1, # 'i' - 24: 0, # 'j' - 10: 2, # 'k' - 5: 2, # 'l' - 13: 3, # 'm' - 4: 0, # 'n' - 15: 0, # 'o' - 26: 1, # 'p' - 7: 3, # 'r' - 8: 0, # 's' - 9: 0, # 't' - 14: 3, # 'u' - 32: 0, # 'v' - 57: 0, # 'w' - 58: 0, # 'x' - 11: 0, # 'y' - 22: 2, # 'z' - 63: 0, # '·' - 54: 1, # 'Ç' - 50: 2, # 'Ö' - 55: 0, # 'Ü' - 59: 0, # 'â' - 33: 1, # 'ç' - 61: 1, # 'î' - 34: 2, # 'ö' - 17: 0, # 'ü' - 30: 1, # 'ğ' - 41: 1, # 'İ' - 6: 1, # 'ı' - 40: 1, # 'Ş' - 19: 1, # 'ş' - }, -} - -# 255: Undefined characters that did not exist in training text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 -# 251: Control characters - -# Character Mapping Table(s): -ISO_8859_9_TURKISH_CHAR_TO_ORDER = { - 0: 255, # '\x00' - 1: 255, # '\x01' - 2: 255, # '\x02' - 3: 255, # '\x03' - 4: 255, # '\x04' - 5: 255, # '\x05' - 6: 255, # '\x06' - 7: 255, # '\x07' - 8: 255, # '\x08' - 9: 255, # '\t' - 10: 255, # '\n' - 11: 255, # '\x0b' - 12: 255, # '\x0c' - 13: 255, # '\r' - 14: 255, # '\x0e' - 15: 255, # '\x0f' - 16: 255, # '\x10' - 17: 255, # '\x11' - 18: 255, # '\x12' - 19: 255, # '\x13' - 20: 255, # '\x14' - 21: 255, # '\x15' - 22: 255, # '\x16' - 23: 255, # '\x17' - 24: 255, # '\x18' - 25: 255, # '\x19' - 26: 255, # '\x1a' - 27: 255, # '\x1b' - 28: 255, # '\x1c' - 29: 255, # '\x1d' - 30: 255, # '\x1e' - 31: 255, # '\x1f' - 32: 255, # ' ' - 33: 255, # '!' - 34: 255, # '"' - 35: 255, # '#' - 36: 255, # '$' - 37: 255, # '%' - 38: 255, # '&' - 39: 255, # "'" - 40: 255, # '(' - 41: 255, # ')' - 42: 255, # '*' - 43: 255, # '+' - 44: 255, # ',' - 45: 255, # '-' - 46: 255, # '.' - 47: 255, # '/' - 48: 255, # '0' - 49: 255, # '1' - 50: 255, # '2' - 51: 255, # '3' - 52: 255, # '4' - 53: 255, # '5' - 54: 255, # '6' - 55: 255, # '7' - 56: 255, # '8' - 57: 255, # '9' - 58: 255, # ':' - 59: 255, # ';' - 60: 255, # '<' - 61: 255, # '=' - 62: 255, # '>' - 63: 255, # '?' - 64: 255, # '@' - 65: 23, # 'A' - 66: 37, # 'B' - 67: 47, # 'C' - 68: 39, # 'D' - 69: 29, # 'E' - 70: 52, # 'F' - 71: 36, # 'G' - 72: 45, # 'H' - 73: 53, # 'I' - 74: 60, # 'J' - 75: 16, # 'K' - 76: 49, # 'L' - 77: 20, # 'M' - 78: 46, # 'N' - 79: 42, # 'O' - 80: 48, # 'P' - 81: 69, # 'Q' - 82: 44, # 'R' - 83: 35, # 'S' - 84: 31, # 'T' - 85: 51, # 'U' - 86: 38, # 'V' - 87: 62, # 'W' - 88: 65, # 'X' - 89: 43, # 'Y' - 90: 56, # 'Z' - 91: 255, # '[' - 92: 255, # '\\' - 93: 255, # ']' - 94: 255, # '^' - 95: 255, # '_' - 96: 255, # '`' - 97: 1, # 'a' - 98: 21, # 'b' - 99: 28, # 'c' - 100: 12, # 'd' - 101: 2, # 'e' - 102: 18, # 'f' - 103: 27, # 'g' - 104: 25, # 'h' - 105: 3, # 'i' - 106: 24, # 'j' - 107: 10, # 'k' - 108: 5, # 'l' - 109: 13, # 'm' - 110: 4, # 'n' - 111: 15, # 'o' - 112: 26, # 'p' - 113: 64, # 'q' - 114: 7, # 'r' - 115: 8, # 's' - 116: 9, # 't' - 117: 14, # 'u' - 118: 32, # 'v' - 119: 57, # 'w' - 120: 58, # 'x' - 121: 11, # 'y' - 122: 22, # 'z' - 123: 255, # '{' - 124: 255, # '|' - 125: 255, # '}' - 126: 255, # '~' - 127: 255, # '\x7f' - 128: 180, # '\x80' - 129: 179, # '\x81' - 130: 178, # '\x82' - 131: 177, # '\x83' - 132: 176, # '\x84' - 133: 175, # '\x85' - 134: 174, # '\x86' - 135: 173, # '\x87' - 136: 172, # '\x88' - 137: 171, # '\x89' - 138: 170, # '\x8a' - 139: 169, # '\x8b' - 140: 168, # '\x8c' - 141: 167, # '\x8d' - 142: 166, # '\x8e' - 143: 165, # '\x8f' - 144: 164, # '\x90' - 145: 163, # '\x91' - 146: 162, # '\x92' - 147: 161, # '\x93' - 148: 160, # '\x94' - 149: 159, # '\x95' - 150: 101, # '\x96' - 151: 158, # '\x97' - 152: 157, # '\x98' - 153: 156, # '\x99' - 154: 155, # '\x9a' - 155: 154, # '\x9b' - 156: 153, # '\x9c' - 157: 152, # '\x9d' - 158: 151, # '\x9e' - 159: 106, # '\x9f' - 160: 150, # '\xa0' - 161: 149, # '¡' - 162: 148, # '¢' - 163: 147, # '£' - 164: 146, # '¤' - 165: 145, # '¥' - 166: 144, # '¦' - 167: 100, # '§' - 168: 143, # '¨' - 169: 142, # '©' - 170: 141, # 'ª' - 171: 140, # '«' - 172: 139, # '¬' - 173: 138, # '\xad' - 174: 137, # '®' - 175: 136, # '¯' - 176: 94, # '°' - 177: 80, # '±' - 178: 93, # '²' - 179: 135, # '³' - 180: 105, # '´' - 181: 134, # 'µ' - 182: 133, # '¶' - 183: 63, # '·' - 184: 132, # '¸' - 185: 131, # '¹' - 186: 130, # 'º' - 187: 129, # '»' - 188: 128, # '¼' - 189: 127, # '½' - 190: 126, # '¾' - 191: 125, # '¿' - 192: 124, # 'À' - 193: 104, # 'Á' - 194: 73, # 'Â' - 195: 99, # 'Ã' - 196: 79, # 'Ä' - 197: 85, # 'Å' - 198: 123, # 'Æ' - 199: 54, # 'Ç' - 200: 122, # 'È' - 201: 98, # 'É' - 202: 92, # 'Ê' - 203: 121, # 'Ë' - 204: 120, # 'Ì' - 205: 91, # 'Í' - 206: 103, # 'Î' - 207: 119, # 'Ï' - 208: 68, # 'Ğ' - 209: 118, # 'Ñ' - 210: 117, # 'Ò' - 211: 97, # 'Ó' - 212: 116, # 'Ô' - 213: 115, # 'Õ' - 214: 50, # 'Ö' - 215: 90, # '×' - 216: 114, # 'Ø' - 217: 113, # 'Ù' - 218: 112, # 'Ú' - 219: 111, # 'Û' - 220: 55, # 'Ü' - 221: 41, # 'İ' - 222: 40, # 'Ş' - 223: 86, # 'ß' - 224: 89, # 'à' - 225: 70, # 'á' - 226: 59, # 'â' - 227: 78, # 'ã' - 228: 71, # 'ä' - 229: 82, # 'å' - 230: 88, # 'æ' - 231: 33, # 'ç' - 232: 77, # 'è' - 233: 66, # 'é' - 234: 84, # 'ê' - 235: 83, # 'ë' - 236: 110, # 'ì' - 237: 75, # 'í' - 238: 61, # 'î' - 239: 96, # 'ï' - 240: 30, # 'ğ' - 241: 67, # 'ñ' - 242: 109, # 'ò' - 243: 74, # 'ó' - 244: 87, # 'ô' - 245: 102, # 'õ' - 246: 34, # 'ö' - 247: 95, # '÷' - 248: 81, # 'ø' - 249: 108, # 'ù' - 250: 76, # 'ú' - 251: 72, # 'û' - 252: 17, # 'ü' - 253: 6, # 'ı' - 254: 19, # 'ş' - 255: 107, # 'ÿ' -} - -ISO_8859_9_TURKISH_MODEL = SingleByteCharSetModel( - charset_name="ISO-8859-9", - language="Turkish", - char_to_order_map=ISO_8859_9_TURKISH_CHAR_TO_ORDER, - language_model=TURKISH_LANG_MODEL, - typical_positive_ratio=0.97029, - keep_ascii_letters=True, - alphabet="ABCDEFGHIJKLMNOPRSTUVYZabcdefghijklmnoprstuvyzÂÇÎÖÛÜâçîöûüĞğİıŞş", -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py deleted file mode 100644 index 59a01d9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py +++ /dev/null @@ -1,147 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import List, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState - -FREQ_CAT_NUM = 4 - -UDF = 0 # undefined -OTH = 1 # other -ASC = 2 # ascii capital letter -ASS = 3 # ascii small letter -ACV = 4 # accent capital vowel -ACO = 5 # accent capital other -ASV = 6 # accent small vowel -ASO = 7 # accent small other -CLASS_NUM = 8 # total classes - -# fmt: off -Latin1_CharToClass = ( - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F - OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 - ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F - OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 - ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F - OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 - OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F - UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 - OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF - ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 - ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF - ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 - ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF - ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 - ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF - ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 - ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF -) - -# 0 : illegal -# 1 : very unlikely -# 2 : normal -# 3 : very likely -Latin1ClassModel = ( -# UDF OTH ASC ASS ACV ACO ASV ASO - 0, 0, 0, 0, 0, 0, 0, 0, # UDF - 0, 3, 3, 3, 3, 3, 3, 3, # OTH - 0, 3, 3, 3, 3, 3, 3, 3, # ASC - 0, 3, 3, 3, 1, 1, 3, 3, # ASS - 0, 3, 3, 3, 1, 2, 1, 2, # ACV - 0, 3, 3, 3, 3, 3, 3, 3, # ACO - 0, 3, 1, 3, 1, 1, 1, 3, # ASV - 0, 3, 1, 3, 1, 1, 3, 3, # ASO -) -# fmt: on - - -class Latin1Prober(CharSetProber): - def __init__(self) -> None: - super().__init__() - self._last_char_class = OTH - self._freq_counter: List[int] = [] - self.reset() - - def reset(self) -> None: - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - super().reset() - - @property - def charset_name(self) -> str: - return "ISO-8859-1" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - byte_str = self.remove_xml_tags(byte_str) - for c in byte_str: - char_class = Latin1_CharToClass[c] - freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + char_class] - if freq == 0: - self._state = ProbingState.NOT_ME - break - self._freq_counter[freq] += 1 - self._last_char_class = char_class - - return self.state - - def get_confidence(self) -> float: - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - confidence = ( - 0.0 - if total < 0.01 - else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total - ) - confidence = max(confidence, 0.0) - # lower the confidence of latin1 so that other more accurate - # detector can take priority. - confidence *= 0.73 - return confidence diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py deleted file mode 100644 index 1425d10..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py +++ /dev/null @@ -1,162 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# This code was modified from latin1prober.py by Rob Speer . -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Rob Speer - adapt to MacRoman encoding -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import List, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState - -FREQ_CAT_NUM = 4 - -UDF = 0 # undefined -OTH = 1 # other -ASC = 2 # ascii capital letter -ASS = 3 # ascii small letter -ACV = 4 # accent capital vowel -ACO = 5 # accent capital other -ASV = 6 # accent small vowel -ASO = 7 # accent small other -ODD = 8 # character that is unlikely to appear -CLASS_NUM = 9 # total classes - -# The change from Latin1 is that we explicitly look for extended characters -# that are infrequently-occurring symbols, and consider them to always be -# improbable. This should let MacRoman get out of the way of more likely -# encodings in most situations. - -# fmt: off -MacRoman_CharToClass = ( - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F - OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 - ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F - OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 - ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F - ACV, ACV, ACO, ACV, ACO, ACV, ACV, ASV, # 80 - 87 - ASV, ASV, ASV, ASV, ASV, ASO, ASV, ASV, # 88 - 8F - ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASV, # 90 - 97 - ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # 98 - 9F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, ASO, # A0 - A7 - OTH, OTH, ODD, ODD, OTH, OTH, ACV, ACV, # A8 - AF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 - OTH, OTH, OTH, OTH, OTH, OTH, ASV, ASV, # B8 - BF - OTH, OTH, ODD, OTH, ODD, OTH, OTH, OTH, # C0 - C7 - OTH, OTH, OTH, ACV, ACV, ACV, ACV, ASV, # C8 - CF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, ODD, # D0 - D7 - ASV, ACV, ODD, OTH, OTH, OTH, OTH, OTH, # D8 - DF - OTH, OTH, OTH, OTH, OTH, ACV, ACV, ACV, # E0 - E7 - ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # E8 - EF - ODD, ACV, ACV, ACV, ACV, ASV, ODD, ODD, # F0 - F7 - ODD, ODD, ODD, ODD, ODD, ODD, ODD, ODD, # F8 - FF -) - -# 0 : illegal -# 1 : very unlikely -# 2 : normal -# 3 : very likely -MacRomanClassModel = ( -# UDF OTH ASC ASS ACV ACO ASV ASO ODD - 0, 0, 0, 0, 0, 0, 0, 0, 0, # UDF - 0, 3, 3, 3, 3, 3, 3, 3, 1, # OTH - 0, 3, 3, 3, 3, 3, 3, 3, 1, # ASC - 0, 3, 3, 3, 1, 1, 3, 3, 1, # ASS - 0, 3, 3, 3, 1, 2, 1, 2, 1, # ACV - 0, 3, 3, 3, 3, 3, 3, 3, 1, # ACO - 0, 3, 1, 3, 1, 1, 1, 3, 1, # ASV - 0, 3, 1, 3, 1, 1, 3, 3, 1, # ASO - 0, 1, 1, 1, 1, 1, 1, 1, 1, # ODD -) -# fmt: on - - -class MacRomanProber(CharSetProber): - def __init__(self) -> None: - super().__init__() - self._last_char_class = OTH - self._freq_counter: List[int] = [] - self.reset() - - def reset(self) -> None: - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - - # express the prior that MacRoman is a somewhat rare encoding; - # this can be done by starting out in a slightly improbable state - # that must be overcome - self._freq_counter[2] = 10 - - super().reset() - - @property - def charset_name(self) -> str: - return "MacRoman" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - byte_str = self.remove_xml_tags(byte_str) - for c in byte_str: - char_class = MacRoman_CharToClass[c] - freq = MacRomanClassModel[(self._last_char_class * CLASS_NUM) + char_class] - if freq == 0: - self._state = ProbingState.NOT_ME - break - self._freq_counter[freq] += 1 - self._last_char_class = char_class - - return self.state - - def get_confidence(self) -> float: - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - confidence = ( - 0.0 - if total < 0.01 - else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total - ) - confidence = max(confidence, 0.0) - # lower the confidence of MacRoman so that other more accurate - # detector can take priority. - confidence *= 0.73 - return confidence diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py deleted file mode 100644 index 666307e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py +++ /dev/null @@ -1,95 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Optional, Union - -from .chardistribution import CharDistributionAnalysis -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import LanguageFilter, MachineState, ProbingState - - -class MultiByteCharSetProber(CharSetProber): - """ - MultiByteCharSetProber - """ - - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.distribution_analyzer: Optional[CharDistributionAnalysis] = None - self.coding_sm: Optional[CodingStateMachine] = None - self._last_char = bytearray(b"\0\0") - - def reset(self) -> None: - super().reset() - if self.coding_sm: - self.coding_sm.reset() - if self.distribution_analyzer: - self.distribution_analyzer.reset() - self._last_char = bytearray(b"\0\0") - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - coding_state = self.coding_sm.next_state(byte) - if coding_state == MachineState.ERROR: - self.logger.debug( - "%s %s prober hit error at byte %s", - self.charset_name, - self.language, - i, - ) - self._state = ProbingState.NOT_ME - break - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if self.distribution_analyzer.got_enough_data() and ( - self.get_confidence() > self.SHORTCUT_THRESHOLD - ): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self) -> float: - assert self.distribution_analyzer is not None - return self.distribution_analyzer.get_confidence() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py deleted file mode 100644 index 6cb9cc7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +++ /dev/null @@ -1,57 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .big5prober import Big5Prober -from .charsetgroupprober import CharSetGroupProber -from .cp949prober import CP949Prober -from .enums import LanguageFilter -from .eucjpprober import EUCJPProber -from .euckrprober import EUCKRProber -from .euctwprober import EUCTWProber -from .gb2312prober import GB2312Prober -from .johabprober import JOHABProber -from .sjisprober import SJISProber -from .utf8prober import UTF8Prober - - -class MBCSGroupProber(CharSetGroupProber): - def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None: - super().__init__(lang_filter=lang_filter) - self.probers = [ - UTF8Prober(), - SJISProber(), - EUCJPProber(), - GB2312Prober(), - EUCKRProber(), - CP949Prober(), - Big5Prober(), - EUCTWProber(), - JOHABProber(), - ] - self.reset() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py deleted file mode 100644 index 7bbe97e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py +++ /dev/null @@ -1,661 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .codingstatemachinedict import CodingStateMachineDict -from .enums import MachineState - -# BIG5 - -# fmt: off -BIG5_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 #allow 0x00 as legal value - 1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17 - 1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27 - 1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f - 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37 - 1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f - 2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47 - 2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f - 2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57 - 2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f - 2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67 - 2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f - 2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77 - 2, 2, 2, 2, 2, 2, 2, 1, # 78 - 7f - 4, 4, 4, 4, 4, 4, 4, 4, # 80 - 87 - 4, 4, 4, 4, 4, 4, 4, 4, # 88 - 8f - 4, 4, 4, 4, 4, 4, 4, 4, # 90 - 97 - 4, 4, 4, 4, 4, 4, 4, 4, # 98 - 9f - 4, 3, 3, 3, 3, 3, 3, 3, # a0 - a7 - 3, 3, 3, 3, 3, 3, 3, 3, # a8 - af - 3, 3, 3, 3, 3, 3, 3, 3, # b0 - b7 - 3, 3, 3, 3, 3, 3, 3, 3, # b8 - bf - 3, 3, 3, 3, 3, 3, 3, 3, # c0 - c7 - 3, 3, 3, 3, 3, 3, 3, 3, # c8 - cf - 3, 3, 3, 3, 3, 3, 3, 3, # d0 - d7 - 3, 3, 3, 3, 3, 3, 3, 3, # d8 - df - 3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7 - 3, 3, 3, 3, 3, 3, 3, 3, # e8 - ef - 3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7 - 3, 3, 3, 3, 3, 3, 3, 0 # f8 - ff -) - -BIG5_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 -) -# fmt: on - -BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) - -BIG5_SM_MODEL: CodingStateMachineDict = { - "class_table": BIG5_CLS, - "class_factor": 5, - "state_table": BIG5_ST, - "char_len_table": BIG5_CHAR_LEN_TABLE, - "name": "Big5", -} - -# CP949 -# fmt: off -CP949_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, # 00 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, # 10 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 2f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 3f - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, # 40 - 4f - 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, # 50 - 5f - 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, # 60 - 6f - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, # 70 - 7f - 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, # 80 - 8f - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, # 90 - 9f - 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, # a0 - af - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, # b0 - bf - 7, 7, 7, 7, 7, 7, 9, 2, 2, 3, 2, 2, 2, 2, 2, 2, # c0 - cf - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, # d0 - df - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, # e0 - ef - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, # f0 - ff -) - -CP949_ST = ( -#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 -) -# fmt: on - -CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) - -CP949_SM_MODEL: CodingStateMachineDict = { - "class_table": CP949_CLS, - "class_factor": 10, - "state_table": CP949_ST, - "char_len_table": CP949_CHAR_LEN_TABLE, - "name": "CP949", -} - -# EUC-JP -# fmt: off -EUCJP_CLS = ( - 4, 4, 4, 4, 4, 4, 4, 4, # 00 - 07 - 4, 4, 4, 4, 4, 4, 5, 5, # 08 - 0f - 4, 4, 4, 4, 4, 4, 4, 4, # 10 - 17 - 4, 4, 4, 5, 4, 4, 4, 4, # 18 - 1f - 4, 4, 4, 4, 4, 4, 4, 4, # 20 - 27 - 4, 4, 4, 4, 4, 4, 4, 4, # 28 - 2f - 4, 4, 4, 4, 4, 4, 4, 4, # 30 - 37 - 4, 4, 4, 4, 4, 4, 4, 4, # 38 - 3f - 4, 4, 4, 4, 4, 4, 4, 4, # 40 - 47 - 4, 4, 4, 4, 4, 4, 4, 4, # 48 - 4f - 4, 4, 4, 4, 4, 4, 4, 4, # 50 - 57 - 4, 4, 4, 4, 4, 4, 4, 4, # 58 - 5f - 4, 4, 4, 4, 4, 4, 4, 4, # 60 - 67 - 4, 4, 4, 4, 4, 4, 4, 4, # 68 - 6f - 4, 4, 4, 4, 4, 4, 4, 4, # 70 - 77 - 4, 4, 4, 4, 4, 4, 4, 4, # 78 - 7f - 5, 5, 5, 5, 5, 5, 5, 5, # 80 - 87 - 5, 5, 5, 5, 5, 5, 1, 3, # 88 - 8f - 5, 5, 5, 5, 5, 5, 5, 5, # 90 - 97 - 5, 5, 5, 5, 5, 5, 5, 5, # 98 - 9f - 5, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 2, 2, 2, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7 - 0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef - 0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7 - 0, 0, 0, 0, 0, 0, 0, 5 # f8 - ff -) - -EUCJP_ST = ( - 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f - 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 -) -# fmt: on - -EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) - -EUCJP_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCJP_CLS, - "class_factor": 6, - "state_table": EUCJP_ST, - "char_len_table": EUCJP_CHAR_LEN_TABLE, - "name": "EUC-JP", -} - -# EUC-KR -# fmt: off -EUCKR_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 - 1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17 - 1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27 - 1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f - 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37 - 1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f - 1, 1, 1, 1, 1, 1, 1, 1, # 40 - 47 - 1, 1, 1, 1, 1, 1, 1, 1, # 48 - 4f - 1, 1, 1, 1, 1, 1, 1, 1, # 50 - 57 - 1, 1, 1, 1, 1, 1, 1, 1, # 58 - 5f - 1, 1, 1, 1, 1, 1, 1, 1, # 60 - 67 - 1, 1, 1, 1, 1, 1, 1, 1, # 68 - 6f - 1, 1, 1, 1, 1, 1, 1, 1, # 70 - 77 - 1, 1, 1, 1, 1, 1, 1, 1, # 78 - 7f - 0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87 - 0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f - 0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97 - 0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f - 0, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 3, 3, 3, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 3, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 2, 2, 2, 2, 2, 2, 2, 2, # e0 - e7 - 2, 2, 2, 2, 2, 2, 2, 2, # e8 - ef - 2, 2, 2, 2, 2, 2, 2, 2, # f0 - f7 - 2, 2, 2, 2, 2, 2, 2, 0 # f8 - ff -) - -EUCKR_ST = ( - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f -) -# fmt: on - -EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) - -EUCKR_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCKR_CLS, - "class_factor": 4, - "state_table": EUCKR_ST, - "char_len_table": EUCKR_CHAR_LEN_TABLE, - "name": "EUC-KR", -} - -# JOHAB -# fmt: off -JOHAB_CLS = ( - 4,4,4,4,4,4,4,4, # 00 - 07 - 4,4,4,4,4,4,0,0, # 08 - 0f - 4,4,4,4,4,4,4,4, # 10 - 17 - 4,4,4,0,4,4,4,4, # 18 - 1f - 4,4,4,4,4,4,4,4, # 20 - 27 - 4,4,4,4,4,4,4,4, # 28 - 2f - 4,3,3,3,3,3,3,3, # 30 - 37 - 3,3,3,3,3,3,3,3, # 38 - 3f - 3,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,2, # 78 - 7f - 6,6,6,6,8,8,8,8, # 80 - 87 - 8,8,8,8,8,8,8,8, # 88 - 8f - 8,7,7,7,7,7,7,7, # 90 - 97 - 7,7,7,7,7,7,7,7, # 98 - 9f - 7,7,7,7,7,7,7,7, # a0 - a7 - 7,7,7,7,7,7,7,7, # a8 - af - 7,7,7,7,7,7,7,7, # b0 - b7 - 7,7,7,7,7,7,7,7, # b8 - bf - 7,7,7,7,7,7,7,7, # c0 - c7 - 7,7,7,7,7,7,7,7, # c8 - cf - 7,7,7,7,5,5,5,5, # d0 - d7 - 5,9,9,9,9,9,9,5, # d8 - df - 9,9,9,9,9,9,9,9, # e0 - e7 - 9,9,9,9,9,9,9,9, # e8 - ef - 9,9,9,9,9,9,9,9, # f0 - f7 - 9,9,5,5,5,5,5,0 # f8 - ff -) - -JOHAB_ST = ( -# cls = 0 1 2 3 4 5 6 7 8 9 - MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,3 ,3 ,4 , # MachineState.START - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME - MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR , # MachineState.ERROR - MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START , # 3 - MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START , # 4 -) -# fmt: on - -JOHAB_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 0, 0, 2, 2, 2) - -JOHAB_SM_MODEL: CodingStateMachineDict = { - "class_table": JOHAB_CLS, - "class_factor": 10, - "state_table": JOHAB_ST, - "char_len_table": JOHAB_CHAR_LEN_TABLE, - "name": "Johab", -} - -# EUC-TW -# fmt: off -EUCTW_CLS = ( - 2, 2, 2, 2, 2, 2, 2, 2, # 00 - 07 - 2, 2, 2, 2, 2, 2, 0, 0, # 08 - 0f - 2, 2, 2, 2, 2, 2, 2, 2, # 10 - 17 - 2, 2, 2, 0, 2, 2, 2, 2, # 18 - 1f - 2, 2, 2, 2, 2, 2, 2, 2, # 20 - 27 - 2, 2, 2, 2, 2, 2, 2, 2, # 28 - 2f - 2, 2, 2, 2, 2, 2, 2, 2, # 30 - 37 - 2, 2, 2, 2, 2, 2, 2, 2, # 38 - 3f - 2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47 - 2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f - 2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57 - 2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f - 2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67 - 2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f - 2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77 - 2, 2, 2, 2, 2, 2, 2, 2, # 78 - 7f - 0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87 - 0, 0, 0, 0, 0, 0, 6, 0, # 88 - 8f - 0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97 - 0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f - 0, 3, 4, 4, 4, 4, 4, 4, # a0 - a7 - 5, 5, 1, 1, 1, 1, 1, 1, # a8 - af - 1, 1, 1, 1, 1, 1, 1, 1, # b0 - b7 - 1, 1, 1, 1, 1, 1, 1, 1, # b8 - bf - 1, 1, 3, 1, 3, 3, 3, 3, # c0 - c7 - 3, 3, 3, 3, 3, 3, 3, 3, # c8 - cf - 3, 3, 3, 3, 3, 3, 3, 3, # d0 - d7 - 3, 3, 3, 3, 3, 3, 3, 3, # d8 - df - 3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7 - 3, 3, 3, 3, 3, 3, 3, 3, # e8 - ef - 3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7 - 3, 3, 3, 3, 3, 3, 3, 0 # f8 - ff -) - -EUCTW_ST = ( - MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 - MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 - MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) -# fmt: on - -EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) - -EUCTW_SM_MODEL: CodingStateMachineDict = { - "class_table": EUCTW_CLS, - "class_factor": 7, - "state_table": EUCTW_ST, - "char_len_table": EUCTW_CHAR_LEN_TABLE, - "name": "x-euc-tw", -} - -# GB2312 -# fmt: off -GB2312_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 - 1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17 - 1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27 - 1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f - 3, 3, 3, 3, 3, 3, 3, 3, # 30 - 37 - 3, 3, 1, 1, 1, 1, 1, 1, # 38 - 3f - 2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47 - 2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f - 2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57 - 2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f - 2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67 - 2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f - 2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77 - 2, 2, 2, 2, 2, 2, 2, 4, # 78 - 7f - 5, 6, 6, 6, 6, 6, 6, 6, # 80 - 87 - 6, 6, 6, 6, 6, 6, 6, 6, # 88 - 8f - 6, 6, 6, 6, 6, 6, 6, 6, # 90 - 97 - 6, 6, 6, 6, 6, 6, 6, 6, # 98 - 9f - 6, 6, 6, 6, 6, 6, 6, 6, # a0 - a7 - 6, 6, 6, 6, 6, 6, 6, 6, # a8 - af - 6, 6, 6, 6, 6, 6, 6, 6, # b0 - b7 - 6, 6, 6, 6, 6, 6, 6, 6, # b8 - bf - 6, 6, 6, 6, 6, 6, 6, 6, # c0 - c7 - 6, 6, 6, 6, 6, 6, 6, 6, # c8 - cf - 6, 6, 6, 6, 6, 6, 6, 6, # d0 - d7 - 6, 6, 6, 6, 6, 6, 6, 6, # d8 - df - 6, 6, 6, 6, 6, 6, 6, 6, # e0 - e7 - 6, 6, 6, 6, 6, 6, 6, 6, # e8 - ef - 6, 6, 6, 6, 6, 6, 6, 6, # f0 - f7 - 6, 6, 6, 6, 6, 6, 6, 0 # f8 - ff -) - -GB2312_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 - 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) -# fmt: on - -# To be accurate, the length of class 6 can be either 2 or 4. -# But it is not necessary to discriminate between the two since -# it is used for frequency analysis only, and we are validating -# each code range there as well. So it is safe to set it to be -# 2 here. -GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) - -GB2312_SM_MODEL: CodingStateMachineDict = { - "class_table": GB2312_CLS, - "class_factor": 7, - "state_table": GB2312_ST, - "char_len_table": GB2312_CHAR_LEN_TABLE, - "name": "GB2312", -} - -# Shift_JIS -# fmt: off -SJIS_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 - 1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17 - 1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27 - 1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f - 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37 - 1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f - 2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47 - 2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f - 2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57 - 2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f - 2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67 - 2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f - 2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77 - 2, 2, 2, 2, 2, 2, 2, 1, # 78 - 7f - 3, 3, 3, 3, 3, 2, 2, 3, # 80 - 87 - 3, 3, 3, 3, 3, 3, 3, 3, # 88 - 8f - 3, 3, 3, 3, 3, 3, 3, 3, # 90 - 97 - 3, 3, 3, 3, 3, 3, 3, 3, # 98 - 9f - #0xa0 is illegal in sjis encoding, but some pages does - #contain such byte. We need to be more error forgiven. - 2, 2, 2, 2, 2, 2, 2, 2, # a0 - a7 - 2, 2, 2, 2, 2, 2, 2, 2, # a8 - af - 2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7 - 2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf - 2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7 - 2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf - 2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7 - 2, 2, 2, 2, 2, 2, 2, 2, # d8 - df - 3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7 - 3, 3, 3, 3, 3, 4, 4, 4, # e8 - ef - 3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7 - 3, 3, 3, 3, 3, 0, 0, 0, # f8 - ff -) - -SJIS_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 -) -# fmt: on - -SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) - -SJIS_SM_MODEL: CodingStateMachineDict = { - "class_table": SJIS_CLS, - "class_factor": 6, - "state_table": SJIS_ST, - "char_len_table": SJIS_CHAR_LEN_TABLE, - "name": "Shift_JIS", -} - -# UCS2-BE -# fmt: off -UCS2BE_CLS = ( - 0, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 1, 0, 0, 2, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 3, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 3, 3, 3, 3, 3, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 0, 0, 0, 0, 0, 0, 0, 0, # 40 - 47 - 0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f - 0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87 - 0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f - 0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97 - 0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f - 0, 0, 0, 0, 0, 0, 0, 0, # a0 - a7 - 0, 0, 0, 0, 0, 0, 0, 0, # a8 - af - 0, 0, 0, 0, 0, 0, 0, 0, # b0 - b7 - 0, 0, 0, 0, 0, 0, 0, 0, # b8 - bf - 0, 0, 0, 0, 0, 0, 0, 0, # c0 - c7 - 0, 0, 0, 0, 0, 0, 0, 0, # c8 - cf - 0, 0, 0, 0, 0, 0, 0, 0, # d0 - d7 - 0, 0, 0, 0, 0, 0, 0, 0, # d8 - df - 0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7 - 0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef - 0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7 - 0, 0, 0, 0, 0, 0, 4, 5 # f8 - ff -) - -UCS2BE_ST = ( - 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 - 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f - 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 - 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f - 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) -# fmt: on - -UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) - -UCS2BE_SM_MODEL: CodingStateMachineDict = { - "class_table": UCS2BE_CLS, - "class_factor": 6, - "state_table": UCS2BE_ST, - "char_len_table": UCS2BE_CHAR_LEN_TABLE, - "name": "UTF-16BE", -} - -# UCS2-LE -# fmt: off -UCS2LE_CLS = ( - 0, 0, 0, 0, 0, 0, 0, 0, # 00 - 07 - 0, 0, 1, 0, 0, 2, 0, 0, # 08 - 0f - 0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17 - 0, 0, 0, 3, 0, 0, 0, 0, # 18 - 1f - 0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27 - 0, 3, 3, 3, 3, 3, 0, 0, # 28 - 2f - 0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37 - 0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f - 0, 0, 0, 0, 0, 0, 0, 0, # 40 - 47 - 0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f - 0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57 - 0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f - 0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67 - 0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f - 0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77 - 0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f - 0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87 - 0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f - 0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97 - 0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f - 0, 0, 0, 0, 0, 0, 0, 0, # a0 - a7 - 0, 0, 0, 0, 0, 0, 0, 0, # a8 - af - 0, 0, 0, 0, 0, 0, 0, 0, # b0 - b7 - 0, 0, 0, 0, 0, 0, 0, 0, # b8 - bf - 0, 0, 0, 0, 0, 0, 0, 0, # c0 - c7 - 0, 0, 0, 0, 0, 0, 0, 0, # c8 - cf - 0, 0, 0, 0, 0, 0, 0, 0, # d0 - d7 - 0, 0, 0, 0, 0, 0, 0, 0, # d8 - df - 0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7 - 0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef - 0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7 - 0, 0, 0, 0, 0, 0, 4, 5 # f8 - ff -) - -UCS2LE_ST = ( - 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f - 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 - 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) -# fmt: on - -UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) - -UCS2LE_SM_MODEL: CodingStateMachineDict = { - "class_table": UCS2LE_CLS, - "class_factor": 6, - "state_table": UCS2LE_ST, - "char_len_table": UCS2LE_CHAR_LEN_TABLE, - "name": "UTF-16LE", -} - -# UTF-8 -# fmt: off -UTF8_CLS = ( - 1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 #allow 0x00 as a legal value - 1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f - 1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17 - 1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f - 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27 - 1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f - 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37 - 1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f - 1, 1, 1, 1, 1, 1, 1, 1, # 40 - 47 - 1, 1, 1, 1, 1, 1, 1, 1, # 48 - 4f - 1, 1, 1, 1, 1, 1, 1, 1, # 50 - 57 - 1, 1, 1, 1, 1, 1, 1, 1, # 58 - 5f - 1, 1, 1, 1, 1, 1, 1, 1, # 60 - 67 - 1, 1, 1, 1, 1, 1, 1, 1, # 68 - 6f - 1, 1, 1, 1, 1, 1, 1, 1, # 70 - 77 - 1, 1, 1, 1, 1, 1, 1, 1, # 78 - 7f - 2, 2, 2, 2, 3, 3, 3, 3, # 80 - 87 - 4, 4, 4, 4, 4, 4, 4, 4, # 88 - 8f - 4, 4, 4, 4, 4, 4, 4, 4, # 90 - 97 - 4, 4, 4, 4, 4, 4, 4, 4, # 98 - 9f - 5, 5, 5, 5, 5, 5, 5, 5, # a0 - a7 - 5, 5, 5, 5, 5, 5, 5, 5, # a8 - af - 5, 5, 5, 5, 5, 5, 5, 5, # b0 - b7 - 5, 5, 5, 5, 5, 5, 5, 5, # b8 - bf - 0, 0, 6, 6, 6, 6, 6, 6, # c0 - c7 - 6, 6, 6, 6, 6, 6, 6, 6, # c8 - cf - 6, 6, 6, 6, 6, 6, 6, 6, # d0 - d7 - 6, 6, 6, 6, 6, 6, 6, 6, # d8 - df - 7, 8, 8, 8, 8, 8, 8, 8, # e0 - e7 - 8, 8, 8, 8, 8, 9, 8, 8, # e8 - ef - 10, 11, 11, 11, 11, 11, 11, 11, # f0 - f7 - 12, 13, 13, 13, 14, 15, 0, 0 # f8 - ff -) - -UTF8_ST = ( - MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 - 9, 11, 8, 7, 6, 5, 4, 3,#08-0f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f - MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f - MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f - MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f - MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af - MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf -) -# fmt: on - -UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) - -UTF8_SM_MODEL: CodingStateMachineDict = { - "class_table": UTF8_CLS, - "class_factor": 16, - "state_table": UTF8_ST, - "char_len_table": UTF8_CHAR_LEN_TABLE, - "name": "UTF-8", -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4eee7c0ed2f96b71ad599fd7a5a64d02b76f48ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmYk0F%H5o3`JAa0U`Au46Q*d3}i%iIrP0kxuX=zprn3 zuq%p{NIbI3ea`o+f3j3gX=0va#8s@b^HYR*{nN)n<9dX8ARU}WW`cGfA?lz!*}C-3 zL>SSI(9sS2#ErANYP*3*jHOq)RW(NN9HFE#} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc deleted file mode 100644 index b65ab600082dbdc6a00b0607c9adef7622408fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8186 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 KF0y6r_x}$ATsBky diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py deleted file mode 100644 index eb40c5f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py +++ /dev/null @@ -1,352 +0,0 @@ -""" -Metadata about languages used by our model training code for our -SingleByteCharSetProbers. Could be used for other things in the future. - -This code is based on the language metadata from the uchardet project. -""" - -from string import ascii_letters -from typing import List, Optional - -# TODO: Add Ukrainian (KOI8-U) - - -class Language: - """Metadata about a language useful for training models - - :ivar name: The human name for the language, in English. - :type name: str - :ivar iso_code: 2-letter ISO 639-1 if possible, 3-letter ISO code otherwise, - or use another catalog as a last resort. - :type iso_code: str - :ivar use_ascii: Whether or not ASCII letters should be included in trained - models. - :type use_ascii: bool - :ivar charsets: The charsets we want to support and create data for. - :type charsets: list of str - :ivar alphabet: The characters in the language's alphabet. If `use_ascii` is - `True`, you only need to add those not in the ASCII set. - :type alphabet: str - :ivar wiki_start_pages: The Wikipedia pages to start from if we're crawling - Wikipedia for training data. - :type wiki_start_pages: list of str - """ - - def __init__( - self, - name: Optional[str] = None, - iso_code: Optional[str] = None, - use_ascii: bool = True, - charsets: Optional[List[str]] = None, - alphabet: Optional[str] = None, - wiki_start_pages: Optional[List[str]] = None, - ) -> None: - super().__init__() - self.name = name - self.iso_code = iso_code - self.use_ascii = use_ascii - self.charsets = charsets - if self.use_ascii: - if alphabet: - alphabet += ascii_letters - else: - alphabet = ascii_letters - elif not alphabet: - raise ValueError("Must supply alphabet if use_ascii is False") - self.alphabet = "".join(sorted(set(alphabet))) if alphabet else None - self.wiki_start_pages = wiki_start_pages - - def __repr__(self) -> str: - param_str = ", ".join( - f"{k}={v!r}" for k, v in self.__dict__.items() if not k.startswith("_") - ) - return f"{self.__class__.__name__}({param_str})" - - -LANGUAGES = { - "Arabic": Language( - name="Arabic", - iso_code="ar", - use_ascii=False, - # We only support encodings that use isolated - # forms, because the current recommendation is - # that the rendering system handles presentation - # forms. This means we purposefully skip IBM864. - charsets=["ISO-8859-6", "WINDOWS-1256", "CP720", "CP864"], - alphabet="ءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾؿـفقكلمنهوىيًٌٍَُِّ", - wiki_start_pages=["الصفحة_الرئيسية"], - ), - "Belarusian": Language( - name="Belarusian", - iso_code="be", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "IBM866", "MacCyrillic"], - alphabet="АБВГДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШЫЬЭЮЯабвгдеёжзійклмнопрстуўфхцчшыьэюяʼ", - wiki_start_pages=["Галоўная_старонка"], - ), - "Bulgarian": Language( - name="Bulgarian", - iso_code="bg", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "IBM855"], - alphabet="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя", - wiki_start_pages=["Начална_страница"], - ), - "Czech": Language( - name="Czech", - iso_code="cz", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ", - wiki_start_pages=["Hlavní_strana"], - ), - "Danish": Language( - name="Danish", - iso_code="da", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="æøåÆØÅ", - wiki_start_pages=["Forside"], - ), - "German": Language( - name="German", - iso_code="de", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="äöüßẞÄÖÜ", - wiki_start_pages=["Wikipedia:Hauptseite"], - ), - "Greek": Language( - name="Greek", - iso_code="el", - use_ascii=False, - charsets=["ISO-8859-7", "WINDOWS-1253"], - alphabet="αβγδεζηθικλμνξοπρσςτυφχψωάέήίόύώΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΣΤΥΦΧΨΩΆΈΉΊΌΎΏ", - wiki_start_pages=["Πύλη:Κύρια"], - ), - "English": Language( - name="English", - iso_code="en", - use_ascii=True, - charsets=["ISO-8859-1", "WINDOWS-1252", "MacRoman"], - wiki_start_pages=["Main_Page"], - ), - "Esperanto": Language( - name="Esperanto", - iso_code="eo", - # Q, W, X, and Y not used at all - use_ascii=False, - charsets=["ISO-8859-3"], - alphabet="abcĉdefgĝhĥijĵklmnoprsŝtuŭvzABCĈDEFGĜHĤIJĴKLMNOPRSŜTUŬVZ", - wiki_start_pages=["Vikipedio:Ĉefpaĝo"], - ), - "Spanish": Language( - name="Spanish", - iso_code="es", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ñáéíóúüÑÁÉÍÓÚÜ", - wiki_start_pages=["Wikipedia:Portada"], - ), - "Estonian": Language( - name="Estonian", - iso_code="et", - use_ascii=False, - charsets=["ISO-8859-4", "ISO-8859-13", "WINDOWS-1257"], - # C, F, Š, Q, W, X, Y, Z, Ž are only for - # loanwords - alphabet="ABDEGHIJKLMNOPRSTUVÕÄÖÜabdeghijklmnoprstuvõäöü", - wiki_start_pages=["Esileht"], - ), - "Finnish": Language( - name="Finnish", - iso_code="fi", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÅÄÖŠŽåäöšž", - wiki_start_pages=["Wikipedia:Etusivu"], - ), - "French": Language( - name="French", - iso_code="fr", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="œàâçèéîïùûêŒÀÂÇÈÉÎÏÙÛÊ", - wiki_start_pages=["Wikipédia:Accueil_principal", "Bœuf (animal)"], - ), - "Hebrew": Language( - name="Hebrew", - iso_code="he", - use_ascii=False, - charsets=["ISO-8859-8", "WINDOWS-1255"], - alphabet="אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ", - wiki_start_pages=["עמוד_ראשי"], - ), - "Croatian": Language( - name="Croatian", - iso_code="hr", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcčćdđefghijklmnoprsštuvzžABCČĆDĐEFGHIJKLMNOPRSŠTUVZŽ", - wiki_start_pages=["Glavna_stranica"], - ), - "Hungarian": Language( - name="Hungarian", - iso_code="hu", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcdefghijklmnoprstuvzáéíóöőúüűABCDEFGHIJKLMNOPRSTUVZÁÉÍÓÖŐÚÜŰ", - wiki_start_pages=["Kezdőlap"], - ), - "Italian": Language( - name="Italian", - iso_code="it", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÀÈÉÌÒÓÙàèéìòóù", - wiki_start_pages=["Pagina_principale"], - ), - "Lithuanian": Language( - name="Lithuanian", - iso_code="lt", - use_ascii=False, - charsets=["ISO-8859-13", "WINDOWS-1257", "ISO-8859-4"], - # Q, W, and X not used at all - alphabet="AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽaąbcčdeęėfghiįyjklmnoprsštuųūvzž", - wiki_start_pages=["Pagrindinis_puslapis"], - ), - "Latvian": Language( - name="Latvian", - iso_code="lv", - use_ascii=False, - charsets=["ISO-8859-13", "WINDOWS-1257", "ISO-8859-4"], - # Q, W, X, Y are only for loanwords - alphabet="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽaābcčdeēfgģhiījkķlļmnņoprsštuūvzž", - wiki_start_pages=["Sākumlapa"], - ), - "Macedonian": Language( - name="Macedonian", - iso_code="mk", - use_ascii=False, - charsets=["ISO-8859-5", "WINDOWS-1251", "MacCyrillic", "IBM855"], - alphabet="АБВГДЃЕЖЗЅИЈКЛЉМНЊОПРСТЌУФХЦЧЏШабвгдѓежзѕијклљмнњопрстќуфхцчџш", - wiki_start_pages=["Главна_страница"], - ), - "Dutch": Language( - name="Dutch", - iso_code="nl", - use_ascii=True, - charsets=["ISO-8859-1", "WINDOWS-1252", "MacRoman"], - wiki_start_pages=["Hoofdpagina"], - ), - "Polish": Language( - name="Polish", - iso_code="pl", - # Q and X are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż", - wiki_start_pages=["Wikipedia:Strona_główna"], - ), - "Portuguese": Language( - name="Portuguese", - iso_code="pt", - use_ascii=True, - charsets=["ISO-8859-1", "ISO-8859-15", "WINDOWS-1252", "MacRoman"], - alphabet="ÁÂÃÀÇÉÊÍÓÔÕÚáâãàçéêíóôõú", - wiki_start_pages=["Wikipédia:Página_principal"], - ), - "Romanian": Language( - name="Romanian", - iso_code="ro", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="ăâîșțĂÂÎȘȚ", - wiki_start_pages=["Pagina_principală"], - ), - "Russian": Language( - name="Russian", - iso_code="ru", - use_ascii=False, - charsets=[ - "ISO-8859-5", - "WINDOWS-1251", - "KOI8-R", - "MacCyrillic", - "IBM866", - "IBM855", - ], - alphabet="абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", - wiki_start_pages=["Заглавная_страница"], - ), - "Slovak": Language( - name="Slovak", - iso_code="sk", - use_ascii=True, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="áäčďéíĺľňóôŕšťúýžÁÄČĎÉÍĹĽŇÓÔŔŠŤÚÝŽ", - wiki_start_pages=["Hlavná_stránka"], - ), - "Slovene": Language( - name="Slovene", - iso_code="sl", - # Q, W, X, Y are only used for foreign words. - use_ascii=False, - charsets=["ISO-8859-2", "WINDOWS-1250"], - alphabet="abcčdefghijklmnoprsštuvzžABCČDEFGHIJKLMNOPRSŠTUVZŽ", - wiki_start_pages=["Glavna_stran"], - ), - # Serbian can be written in both Latin and Cyrillic, but there's no - # simple way to get the Latin alphabet pages from Wikipedia through - # the API, so for now we just support Cyrillic. - "Serbian": Language( - name="Serbian", - iso_code="sr", - alphabet="АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШабвгдђежзијклљмнњопрстћуфхцчџш", - charsets=["ISO-8859-5", "WINDOWS-1251", "MacCyrillic", "IBM855"], - wiki_start_pages=["Главна_страна"], - ), - "Thai": Language( - name="Thai", - iso_code="th", - use_ascii=False, - charsets=["ISO-8859-11", "TIS-620", "CP874"], - alphabet="กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛", - wiki_start_pages=["หน้าหลัก"], - ), - "Turkish": Language( - name="Turkish", - iso_code="tr", - # Q, W, and X are not used by Turkish - use_ascii=False, - charsets=["ISO-8859-3", "ISO-8859-9", "WINDOWS-1254"], - alphabet="abcçdefgğhıijklmnoöprsştuüvyzâîûABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZÂÎÛ", - wiki_start_pages=["Ana_Sayfa"], - ), - "Vietnamese": Language( - name="Vietnamese", - iso_code="vi", - use_ascii=False, - # Windows-1258 is the only common 8-bit - # Vietnamese encoding supported by Python. - # From Wikipedia: - # For systems that lack support for Unicode, - # dozens of 8-bit Vietnamese code pages are - # available.[1] The most common are VISCII - # (TCVN 5712:1993), VPS, and Windows-1258.[3] - # Where ASCII is required, such as when - # ensuring readability in plain text e-mail, - # Vietnamese letters are often encoded - # according to Vietnamese Quoted-Readable - # (VIQR) or VSCII Mnemonic (VSCII-MNEM),[4] - # though usage of either variable-width - # scheme has declined dramatically following - # the adoption of Unicode on the World Wide - # Web. - charsets=["WINDOWS-1258"], - alphabet="aăâbcdđeêghiklmnoôơpqrstuưvxyAĂÂBCDĐEÊGHIKLMNOÔƠPQRSTUƯVXY", - wiki_start_pages=["Chữ_Quốc_ngữ"], - ), -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py deleted file mode 100644 index 7d36e64..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py +++ /dev/null @@ -1,16 +0,0 @@ -from typing import TYPE_CHECKING, Optional - -if TYPE_CHECKING: - # TypedDict was introduced in Python 3.8. - # - # TODO: Remove the else block and TYPE_CHECKING check when dropping support - # for Python 3.7. - from typing import TypedDict - - class ResultDict(TypedDict): - encoding: Optional[str] - confidence: float - language: Optional[str] - -else: - ResultDict = dict diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py deleted file mode 100644 index 0ffbcdd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py +++ /dev/null @@ -1,162 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Dict, List, NamedTuple, Optional, Union - -from .charsetprober import CharSetProber -from .enums import CharacterCategory, ProbingState, SequenceLikelihood - - -class SingleByteCharSetModel(NamedTuple): - charset_name: str - language: str - char_to_order_map: Dict[int, int] - language_model: Dict[int, Dict[int, int]] - typical_positive_ratio: float - keep_ascii_letters: bool - alphabet: str - - -class SingleByteCharSetProber(CharSetProber): - SAMPLE_SIZE = 64 - SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 - POSITIVE_SHORTCUT_THRESHOLD = 0.95 - NEGATIVE_SHORTCUT_THRESHOLD = 0.05 - - def __init__( - self, - model: SingleByteCharSetModel, - is_reversed: bool = False, - name_prober: Optional[CharSetProber] = None, - ) -> None: - super().__init__() - self._model = model - # TRUE if we need to reverse every pair in the model lookup - self._reversed = is_reversed - # Optional auxiliary prober for name decision - self._name_prober = name_prober - self._last_order = 255 - self._seq_counters: List[int] = [] - self._total_seqs = 0 - self._total_char = 0 - self._control_char = 0 - self._freq_char = 0 - self.reset() - - def reset(self) -> None: - super().reset() - # char order of last character - self._last_order = 255 - self._seq_counters = [0] * SequenceLikelihood.get_num_categories() - self._total_seqs = 0 - self._total_char = 0 - self._control_char = 0 - # characters that fall in our sampling range - self._freq_char = 0 - - @property - def charset_name(self) -> Optional[str]: - if self._name_prober: - return self._name_prober.charset_name - return self._model.charset_name - - @property - def language(self) -> Optional[str]: - if self._name_prober: - return self._name_prober.language - return self._model.language - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - # TODO: Make filter_international_words keep things in self.alphabet - if not self._model.keep_ascii_letters: - byte_str = self.filter_international_words(byte_str) - else: - byte_str = self.remove_xml_tags(byte_str) - if not byte_str: - return self.state - char_to_order_map = self._model.char_to_order_map - language_model = self._model.language_model - for char in byte_str: - order = char_to_order_map.get(char, CharacterCategory.UNDEFINED) - # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but - # CharacterCategory.SYMBOL is actually 253, so we use CONTROL - # to make it closer to the original intent. The only difference - # is whether or not we count digits and control characters for - # _total_char purposes. - if order < CharacterCategory.CONTROL: - self._total_char += 1 - if order < self.SAMPLE_SIZE: - self._freq_char += 1 - if self._last_order < self.SAMPLE_SIZE: - self._total_seqs += 1 - if not self._reversed: - lm_cat = language_model[self._last_order][order] - else: - lm_cat = language_model[order][self._last_order] - self._seq_counters[lm_cat] += 1 - self._last_order = order - - charset_name = self._model.charset_name - if self.state == ProbingState.DETECTING: - if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: - confidence = self.get_confidence() - if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: - self.logger.debug( - "%s confidence = %s, we have a winner", charset_name, confidence - ) - self._state = ProbingState.FOUND_IT - elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: - self.logger.debug( - "%s confidence = %s, below negative shortcut threshold %s", - charset_name, - confidence, - self.NEGATIVE_SHORTCUT_THRESHOLD, - ) - self._state = ProbingState.NOT_ME - - return self.state - - def get_confidence(self) -> float: - r = 0.01 - if self._total_seqs > 0: - r = ( - ( - self._seq_counters[SequenceLikelihood.POSITIVE] - + 0.25 * self._seq_counters[SequenceLikelihood.LIKELY] - ) - / self._total_seqs - / self._model.typical_positive_ratio - ) - # The more control characters (proportionnaly to the size - # of the text), the less confident we become in the current - # charset. - r = r * (self._total_char - self._control_char) / self._total_char - r = r * self._freq_char / self._total_char - if r >= 1.0: - r = 0.99 - return r diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py deleted file mode 100644 index 890ae84..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +++ /dev/null @@ -1,88 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetgroupprober import CharSetGroupProber -from .hebrewprober import HebrewProber -from .langbulgarianmodel import ISO_8859_5_BULGARIAN_MODEL, WINDOWS_1251_BULGARIAN_MODEL -from .langgreekmodel import ISO_8859_7_GREEK_MODEL, WINDOWS_1253_GREEK_MODEL -from .langhebrewmodel import WINDOWS_1255_HEBREW_MODEL - -# from .langhungarianmodel import (ISO_8859_2_HUNGARIAN_MODEL, -# WINDOWS_1250_HUNGARIAN_MODEL) -from .langrussianmodel import ( - IBM855_RUSSIAN_MODEL, - IBM866_RUSSIAN_MODEL, - ISO_8859_5_RUSSIAN_MODEL, - KOI8_R_RUSSIAN_MODEL, - MACCYRILLIC_RUSSIAN_MODEL, - WINDOWS_1251_RUSSIAN_MODEL, -) -from .langthaimodel import TIS_620_THAI_MODEL -from .langturkishmodel import ISO_8859_9_TURKISH_MODEL -from .sbcharsetprober import SingleByteCharSetProber - - -class SBCSGroupProber(CharSetGroupProber): - def __init__(self) -> None: - super().__init__() - hebrew_prober = HebrewProber() - logical_hebrew_prober = SingleByteCharSetProber( - WINDOWS_1255_HEBREW_MODEL, is_reversed=False, name_prober=hebrew_prober - ) - # TODO: See if using ISO-8859-8 Hebrew model works better here, since - # it's actually the visual one - visual_hebrew_prober = SingleByteCharSetProber( - WINDOWS_1255_HEBREW_MODEL, is_reversed=True, name_prober=hebrew_prober - ) - hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) - # TODO: ORDER MATTERS HERE. I changed the order vs what was in master - # and several tests failed that did not before. Some thought - # should be put into the ordering, and we should consider making - # order not matter here, because that is very counter-intuitive. - self.probers = [ - SingleByteCharSetProber(WINDOWS_1251_RUSSIAN_MODEL), - SingleByteCharSetProber(KOI8_R_RUSSIAN_MODEL), - SingleByteCharSetProber(ISO_8859_5_RUSSIAN_MODEL), - SingleByteCharSetProber(MACCYRILLIC_RUSSIAN_MODEL), - SingleByteCharSetProber(IBM866_RUSSIAN_MODEL), - SingleByteCharSetProber(IBM855_RUSSIAN_MODEL), - SingleByteCharSetProber(ISO_8859_7_GREEK_MODEL), - SingleByteCharSetProber(WINDOWS_1253_GREEK_MODEL), - SingleByteCharSetProber(ISO_8859_5_BULGARIAN_MODEL), - SingleByteCharSetProber(WINDOWS_1251_BULGARIAN_MODEL), - # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) - # after we retrain model. - # SingleByteCharSetProber(ISO_8859_2_HUNGARIAN_MODEL), - # SingleByteCharSetProber(WINDOWS_1250_HUNGARIAN_MODEL), - SingleByteCharSetProber(TIS_620_THAI_MODEL), - SingleByteCharSetProber(ISO_8859_9_TURKISH_MODEL), - hebrew_prober, - logical_hebrew_prober, - visual_hebrew_prober, - ] - self.reset() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py deleted file mode 100644 index 91df077..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py +++ /dev/null @@ -1,105 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Union - -from .chardistribution import SJISDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .jpcntx import SJISContextAnalysis -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import SJIS_SM_MODEL - - -class SJISProber(MultiByteCharSetProber): - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) - self.distribution_analyzer = SJISDistributionAnalysis() - self.context_analyzer = SJISContextAnalysis() - self.reset() - - def reset(self) -> None: - super().reset() - self.context_analyzer.reset() - - @property - def charset_name(self) -> str: - return self.context_analyzer.charset_name - - @property - def language(self) -> str: - return "Japanese" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - assert self.coding_sm is not None - assert self.distribution_analyzer is not None - - for i, byte in enumerate(byte_str): - coding_state = self.coding_sm.next_state(byte) - if coding_state == MachineState.ERROR: - self.logger.debug( - "%s %s prober hit error at byte %s", - self.charset_name, - self.language, - i, - ) - self._state = ProbingState.NOT_ME - break - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte - self.context_analyzer.feed( - self._last_char[2 - char_len :], char_len - ) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed( - byte_str[i + 1 - char_len : i + 3 - char_len], char_len - ) - self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if self.context_analyzer.got_enough_data() and ( - self.get_confidence() > self.SHORTCUT_THRESHOLD - ): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self) -> float: - assert self.distribution_analyzer is not None - - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py deleted file mode 100644 index 30c441d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py +++ /dev/null @@ -1,362 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### -""" -Module containing the UniversalDetector detector class, which is the primary -class a user of ``chardet`` should use. - -:author: Mark Pilgrim (initial port to Python) -:author: Shy Shalom (original C code) -:author: Dan Blanchard (major refactoring for 3.0) -:author: Ian Cordasco -""" - - -import codecs -import logging -import re -from typing import List, Optional, Union - -from .charsetgroupprober import CharSetGroupProber -from .charsetprober import CharSetProber -from .enums import InputState, LanguageFilter, ProbingState -from .escprober import EscCharSetProber -from .latin1prober import Latin1Prober -from .macromanprober import MacRomanProber -from .mbcsgroupprober import MBCSGroupProber -from .resultdict import ResultDict -from .sbcsgroupprober import SBCSGroupProber -from .utf1632prober import UTF1632Prober - - -class UniversalDetector: - """ - The ``UniversalDetector`` class underlies the ``chardet.detect`` function - and coordinates all of the different charset probers. - - To get a ``dict`` containing an encoding and its confidence, you can simply - run: - - .. code:: - - u = UniversalDetector() - u.feed(some_bytes) - u.close() - detected = u.result - - """ - - MINIMUM_THRESHOLD = 0.20 - HIGH_BYTE_DETECTOR = re.compile(b"[\x80-\xFF]") - ESC_DETECTOR = re.compile(b"(\033|~{)") - WIN_BYTE_DETECTOR = re.compile(b"[\x80-\x9F]") - ISO_WIN_MAP = { - "iso-8859-1": "Windows-1252", - "iso-8859-2": "Windows-1250", - "iso-8859-5": "Windows-1251", - "iso-8859-6": "Windows-1256", - "iso-8859-7": "Windows-1253", - "iso-8859-8": "Windows-1255", - "iso-8859-9": "Windows-1254", - "iso-8859-13": "Windows-1257", - } - # Based on https://encoding.spec.whatwg.org/#names-and-labels - # but altered to match Python names for encodings and remove mappings - # that break tests. - LEGACY_MAP = { - "ascii": "Windows-1252", - "iso-8859-1": "Windows-1252", - "tis-620": "ISO-8859-11", - "iso-8859-9": "Windows-1254", - "gb2312": "GB18030", - "euc-kr": "CP949", - "utf-16le": "UTF-16", - } - - def __init__( - self, - lang_filter: LanguageFilter = LanguageFilter.ALL, - should_rename_legacy: bool = False, - ) -> None: - self._esc_charset_prober: Optional[EscCharSetProber] = None - self._utf1632_prober: Optional[UTF1632Prober] = None - self._charset_probers: List[CharSetProber] = [] - self.result: ResultDict = { - "encoding": None, - "confidence": 0.0, - "language": None, - } - self.done = False - self._got_data = False - self._input_state = InputState.PURE_ASCII - self._last_char = b"" - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - self._has_win_bytes = False - self.should_rename_legacy = should_rename_legacy - self.reset() - - @property - def input_state(self) -> int: - return self._input_state - - @property - def has_win_bytes(self) -> bool: - return self._has_win_bytes - - @property - def charset_probers(self) -> List[CharSetProber]: - return self._charset_probers - - def reset(self) -> None: - """ - Reset the UniversalDetector and all of its probers back to their - initial states. This is called by ``__init__``, so you only need to - call this directly in between analyses of different documents. - """ - self.result = {"encoding": None, "confidence": 0.0, "language": None} - self.done = False - self._got_data = False - self._has_win_bytes = False - self._input_state = InputState.PURE_ASCII - self._last_char = b"" - if self._esc_charset_prober: - self._esc_charset_prober.reset() - if self._utf1632_prober: - self._utf1632_prober.reset() - for prober in self._charset_probers: - prober.reset() - - def feed(self, byte_str: Union[bytes, bytearray]) -> None: - """ - Takes a chunk of a document and feeds it through all of the relevant - charset probers. - - After calling ``feed``, you can check the value of the ``done`` - attribute to see if you need to continue feeding the - ``UniversalDetector`` more data, or if it has made a prediction - (in the ``result`` attribute). - - .. note:: - You should always call ``close`` when you're done feeding in your - document if ``done`` is not already ``True``. - """ - if self.done: - return - - if not byte_str: - return - - if not isinstance(byte_str, bytearray): - byte_str = bytearray(byte_str) - - # First check for known BOMs, since these are guaranteed to be correct - if not self._got_data: - # If the data starts with BOM, we know it is UTF - if byte_str.startswith(codecs.BOM_UTF8): - # EF BB BF UTF-8 with BOM - self.result = { - "encoding": "UTF-8-SIG", - "confidence": 1.0, - "language": "", - } - elif byte_str.startswith((codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE)): - # FF FE 00 00 UTF-32, little-endian BOM - # 00 00 FE FF UTF-32, big-endian BOM - self.result = {"encoding": "UTF-32", "confidence": 1.0, "language": ""} - elif byte_str.startswith(b"\xFE\xFF\x00\x00"): - # FE FF 00 00 UCS-4, unusual octet order BOM (3412) - self.result = { - # TODO: This encoding is not supported by Python. Should remove? - "encoding": "X-ISO-10646-UCS-4-3412", - "confidence": 1.0, - "language": "", - } - elif byte_str.startswith(b"\x00\x00\xFF\xFE"): - # 00 00 FF FE UCS-4, unusual octet order BOM (2143) - self.result = { - # TODO: This encoding is not supported by Python. Should remove? - "encoding": "X-ISO-10646-UCS-4-2143", - "confidence": 1.0, - "language": "", - } - elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): - # FF FE UTF-16, little endian BOM - # FE FF UTF-16, big endian BOM - self.result = {"encoding": "UTF-16", "confidence": 1.0, "language": ""} - - self._got_data = True - if self.result["encoding"] is not None: - self.done = True - return - - # If none of those matched and we've only see ASCII so far, check - # for high bytes and escape sequences - if self._input_state == InputState.PURE_ASCII: - if self.HIGH_BYTE_DETECTOR.search(byte_str): - self._input_state = InputState.HIGH_BYTE - elif ( - self._input_state == InputState.PURE_ASCII - and self.ESC_DETECTOR.search(self._last_char + byte_str) - ): - self._input_state = InputState.ESC_ASCII - - self._last_char = byte_str[-1:] - - # next we will look to see if it is appears to be either a UTF-16 or - # UTF-32 encoding - if not self._utf1632_prober: - self._utf1632_prober = UTF1632Prober() - - if self._utf1632_prober.state == ProbingState.DETECTING: - if self._utf1632_prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = { - "encoding": self._utf1632_prober.charset_name, - "confidence": self._utf1632_prober.get_confidence(), - "language": "", - } - self.done = True - return - - # If we've seen escape sequences, use the EscCharSetProber, which - # uses a simple state machine to check for known escape sequences in - # HZ and ISO-2022 encodings, since those are the only encodings that - # use such sequences. - if self._input_state == InputState.ESC_ASCII: - if not self._esc_charset_prober: - self._esc_charset_prober = EscCharSetProber(self.lang_filter) - if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = { - "encoding": self._esc_charset_prober.charset_name, - "confidence": self._esc_charset_prober.get_confidence(), - "language": self._esc_charset_prober.language, - } - self.done = True - # If we've seen high bytes (i.e., those with values greater than 127), - # we need to do more complicated checks using all our multi-byte and - # single-byte probers that are left. The single-byte probers - # use character bigram distributions to determine the encoding, whereas - # the multi-byte probers use a combination of character unigram and - # bigram distributions. - elif self._input_state == InputState.HIGH_BYTE: - if not self._charset_probers: - self._charset_probers = [MBCSGroupProber(self.lang_filter)] - # If we're checking non-CJK encodings, use single-byte prober - if self.lang_filter & LanguageFilter.NON_CJK: - self._charset_probers.append(SBCSGroupProber()) - self._charset_probers.append(Latin1Prober()) - self._charset_probers.append(MacRomanProber()) - for prober in self._charset_probers: - if prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = { - "encoding": prober.charset_name, - "confidence": prober.get_confidence(), - "language": prober.language, - } - self.done = True - break - if self.WIN_BYTE_DETECTOR.search(byte_str): - self._has_win_bytes = True - - def close(self) -> ResultDict: - """ - Stop analyzing the current document and come up with a final - prediction. - - :returns: The ``result`` attribute, a ``dict`` with the keys - `encoding`, `confidence`, and `language`. - """ - # Don't bother with checks if we're already done - if self.done: - return self.result - self.done = True - - if not self._got_data: - self.logger.debug("no data received!") - - # Default to ASCII if it is all we've seen so far - elif self._input_state == InputState.PURE_ASCII: - self.result = {"encoding": "ascii", "confidence": 1.0, "language": ""} - - # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD - elif self._input_state == InputState.HIGH_BYTE: - prober_confidence = None - max_prober_confidence = 0.0 - max_prober = None - for prober in self._charset_probers: - if not prober: - continue - prober_confidence = prober.get_confidence() - if prober_confidence > max_prober_confidence: - max_prober_confidence = prober_confidence - max_prober = prober - if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): - charset_name = max_prober.charset_name - assert charset_name is not None - lower_charset_name = charset_name.lower() - confidence = max_prober.get_confidence() - # Use Windows encoding name instead of ISO-8859 if we saw any - # extra Windows-specific bytes - if lower_charset_name.startswith("iso-8859"): - if self._has_win_bytes: - charset_name = self.ISO_WIN_MAP.get( - lower_charset_name, charset_name - ) - # Rename legacy encodings with superset encodings if asked - if self.should_rename_legacy: - charset_name = self.LEGACY_MAP.get( - (charset_name or "").lower(), charset_name - ) - self.result = { - "encoding": charset_name, - "confidence": confidence, - "language": max_prober.language, - } - - # Log all prober confidences if none met MINIMUM_THRESHOLD - if self.logger.getEffectiveLevel() <= logging.DEBUG: - if self.result["encoding"] is None: - self.logger.debug("no probers hit minimum threshold") - for group_prober in self._charset_probers: - if not group_prober: - continue - if isinstance(group_prober, CharSetGroupProber): - for prober in group_prober.probers: - self.logger.debug( - "%s %s confidence = %s", - prober.charset_name, - prober.language, - prober.get_confidence(), - ) - else: - self.logger.debug( - "%s %s confidence = %s", - group_prober.charset_name, - group_prober.language, - group_prober.get_confidence(), - ) - return self.result diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py deleted file mode 100644 index 6bdec63..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# -# Contributor(s): -# Jason Zavaglia -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### -from typing import List, Union - -from .charsetprober import CharSetProber -from .enums import ProbingState - - -class UTF1632Prober(CharSetProber): - """ - This class simply looks for occurrences of zero bytes, and infers - whether the file is UTF16 or UTF32 (low-endian or big-endian) - For instance, files looking like ( \0 \0 \0 [nonzero] )+ - have a good probability to be UTF32BE. Files looking like ( \0 [nonzero] )+ - may be guessed to be UTF16BE, and inversely for little-endian varieties. - """ - - # how many logical characters to scan before feeling confident of prediction - MIN_CHARS_FOR_DETECTION = 20 - # a fixed constant ratio of expected zeros or non-zeros in modulo-position. - EXPECTED_RATIO = 0.94 - - def __init__(self) -> None: - super().__init__() - self.position = 0 - self.zeros_at_mod = [0] * 4 - self.nonzeros_at_mod = [0] * 4 - self._state = ProbingState.DETECTING - self.quad = [0, 0, 0, 0] - self.invalid_utf16be = False - self.invalid_utf16le = False - self.invalid_utf32be = False - self.invalid_utf32le = False - self.first_half_surrogate_pair_detected_16be = False - self.first_half_surrogate_pair_detected_16le = False - self.reset() - - def reset(self) -> None: - super().reset() - self.position = 0 - self.zeros_at_mod = [0] * 4 - self.nonzeros_at_mod = [0] * 4 - self._state = ProbingState.DETECTING - self.invalid_utf16be = False - self.invalid_utf16le = False - self.invalid_utf32be = False - self.invalid_utf32le = False - self.first_half_surrogate_pair_detected_16be = False - self.first_half_surrogate_pair_detected_16le = False - self.quad = [0, 0, 0, 0] - - @property - def charset_name(self) -> str: - if self.is_likely_utf32be(): - return "utf-32be" - if self.is_likely_utf32le(): - return "utf-32le" - if self.is_likely_utf16be(): - return "utf-16be" - if self.is_likely_utf16le(): - return "utf-16le" - # default to something valid - return "utf-16" - - @property - def language(self) -> str: - return "" - - def approx_32bit_chars(self) -> float: - return max(1.0, self.position / 4.0) - - def approx_16bit_chars(self) -> float: - return max(1.0, self.position / 2.0) - - def is_likely_utf32be(self) -> bool: - approx_chars = self.approx_32bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - self.zeros_at_mod[0] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[1] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[2] / approx_chars > self.EXPECTED_RATIO - and self.nonzeros_at_mod[3] / approx_chars > self.EXPECTED_RATIO - and not self.invalid_utf32be - ) - - def is_likely_utf32le(self) -> bool: - approx_chars = self.approx_32bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - self.nonzeros_at_mod[0] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[1] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[2] / approx_chars > self.EXPECTED_RATIO - and self.zeros_at_mod[3] / approx_chars > self.EXPECTED_RATIO - and not self.invalid_utf32le - ) - - def is_likely_utf16be(self) -> bool: - approx_chars = self.approx_16bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - (self.nonzeros_at_mod[1] + self.nonzeros_at_mod[3]) / approx_chars - > self.EXPECTED_RATIO - and (self.zeros_at_mod[0] + self.zeros_at_mod[2]) / approx_chars - > self.EXPECTED_RATIO - and not self.invalid_utf16be - ) - - def is_likely_utf16le(self) -> bool: - approx_chars = self.approx_16bit_chars() - return approx_chars >= self.MIN_CHARS_FOR_DETECTION and ( - (self.nonzeros_at_mod[0] + self.nonzeros_at_mod[2]) / approx_chars - > self.EXPECTED_RATIO - and (self.zeros_at_mod[1] + self.zeros_at_mod[3]) / approx_chars - > self.EXPECTED_RATIO - and not self.invalid_utf16le - ) - - def validate_utf32_characters(self, quad: List[int]) -> None: - """ - Validate if the quad of bytes is valid UTF-32. - - UTF-32 is valid in the range 0x00000000 - 0x0010FFFF - excluding 0x0000D800 - 0x0000DFFF - - https://en.wikipedia.org/wiki/UTF-32 - """ - if ( - quad[0] != 0 - or quad[1] > 0x10 - or (quad[0] == 0 and quad[1] == 0 and 0xD8 <= quad[2] <= 0xDF) - ): - self.invalid_utf32be = True - if ( - quad[3] != 0 - or quad[2] > 0x10 - or (quad[3] == 0 and quad[2] == 0 and 0xD8 <= quad[1] <= 0xDF) - ): - self.invalid_utf32le = True - - def validate_utf16_characters(self, pair: List[int]) -> None: - """ - Validate if the pair of bytes is valid UTF-16. - - UTF-16 is valid in the range 0x0000 - 0xFFFF excluding 0xD800 - 0xFFFF - with an exception for surrogate pairs, which must be in the range - 0xD800-0xDBFF followed by 0xDC00-0xDFFF - - https://en.wikipedia.org/wiki/UTF-16 - """ - if not self.first_half_surrogate_pair_detected_16be: - if 0xD8 <= pair[0] <= 0xDB: - self.first_half_surrogate_pair_detected_16be = True - elif 0xDC <= pair[0] <= 0xDF: - self.invalid_utf16be = True - else: - if 0xDC <= pair[0] <= 0xDF: - self.first_half_surrogate_pair_detected_16be = False - else: - self.invalid_utf16be = True - - if not self.first_half_surrogate_pair_detected_16le: - if 0xD8 <= pair[1] <= 0xDB: - self.first_half_surrogate_pair_detected_16le = True - elif 0xDC <= pair[1] <= 0xDF: - self.invalid_utf16le = True - else: - if 0xDC <= pair[1] <= 0xDF: - self.first_half_surrogate_pair_detected_16le = False - else: - self.invalid_utf16le = True - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - mod4 = self.position % 4 - self.quad[mod4] = c - if mod4 == 3: - self.validate_utf32_characters(self.quad) - self.validate_utf16_characters(self.quad[0:2]) - self.validate_utf16_characters(self.quad[2:4]) - if c == 0: - self.zeros_at_mod[mod4] += 1 - else: - self.nonzeros_at_mod[mod4] += 1 - self.position += 1 - return self.state - - @property - def state(self) -> ProbingState: - if self._state in {ProbingState.NOT_ME, ProbingState.FOUND_IT}: - # terminal, decided states - return self._state - if self.get_confidence() > 0.80: - self._state = ProbingState.FOUND_IT - elif self.position > 4 * 1024: - # if we get to 4kb into the file, and we can't conclude it's UTF, - # let's give up - self._state = ProbingState.NOT_ME - return self._state - - def get_confidence(self) -> float: - return ( - 0.85 - if ( - self.is_likely_utf16le() - or self.is_likely_utf16be() - or self.is_likely_utf32le() - or self.is_likely_utf32be() - ) - else 0.00 - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py deleted file mode 100644 index d96354d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py +++ /dev/null @@ -1,82 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from typing import Union - -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import MachineState, ProbingState -from .mbcssm import UTF8_SM_MODEL - - -class UTF8Prober(CharSetProber): - ONE_CHAR_PROB = 0.5 - - def __init__(self) -> None: - super().__init__() - self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) - self._num_mb_chars = 0 - self.reset() - - def reset(self) -> None: - super().reset() - self.coding_sm.reset() - self._num_mb_chars = 0 - - @property - def charset_name(self) -> str: - return "utf-8" - - @property - def language(self) -> str: - return "" - - def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState: - for c in byte_str: - coding_state = self.coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - self._state = ProbingState.NOT_ME - break - if coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - if coding_state == MachineState.START: - if self.coding_sm.get_current_charlen() >= 2: - self._num_mb_chars += 1 - - if self.state == ProbingState.DETECTING: - if self.get_confidence() > self.SHORTCUT_THRESHOLD: - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self) -> float: - unlike = 0.99 - if self._num_mb_chars < 6: - unlike *= self.ONE_CHAR_PROB**self._num_mb_chars - return 1.0 - unlike - return unlike diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py b/venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py deleted file mode 100644 index c5e9d85..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -This module exists only to simplify retrieving the version number of chardet -from within setuptools and from chardet subpackages. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -__version__ = "5.1.0" -VERSION = __version__.split(".") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py deleted file mode 100644 index 383101c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -from .initialise import init, deinit, reinit, colorama_text, just_fix_windows_console -from .ansi import Fore, Back, Style, Cursor -from .ansitowin32 import AnsiToWin32 - -__version__ = '0.4.6' - diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 889d538e028d4aec4ac9a39c5ea28fdf92f96796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc deleted file mode 100644 index 1a8330220b4282b88b90d787d37ff3bb948e0078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2264 zcmZ`*OK%%D5MFX0TCE;&oH%ZqG!=^Uu|*QK@ui0*XwcT^Nr%QrP+f$LNK0$4b_J5M z;y?x3+Q+uP!2x>7U)pO=IpY<%^Nl-0S~>fKP`*Rc_aKCmP=lWdM{@;BJT(7lXo91f37;|MJc7jo$8$`5|2o5o z%=y{Q%$=C`Hsh#l6e=AJv=PP3yjG-AWqYoY=~Rm4;#r;68;OxmQZo=mF3Yv;^a)Jo zX)cPn9t?|I7nv-B%BGBFxssz)8>z~=l3JQUl4WK4zA-9&JTvkKr3&@jQElAIihsx5 zaWRqI(JURRVknJCySrcOt{%dxG#}lX7D9LTWWLwU(#PHDz8M$!#_g}Z?CR9WThnB? zn~bFHPSa_305egj?y$%Tl}wUunx`gBvQ*34)BW-~+@8uon!~$1$#7qIJ=iYPz({R$ zo#K53!s8zET-#jES9p^JoWD{lSb7U6j!6sDH4F?wK4YqB9K#OS5r0O|0~Tt}Sub{# z3oGT3087tAp^C?aoWn;JZ^d`~j?q-r{*#S+qvvg>5XP%mIC&~9ag&9lLNz~}>mYT_} zxLvxKE~AG@Hmg`tx_V!iK}A^`G^>D;%Ex^b-M(zlDL_)mWTI*`O{t@(8kFIZiZ*_+ zSJso6DJ(0?8eH0w%9K9#rqj}+_q=AMA}C6a`11)yx&yJwLl*b}i+I4=Zg{-xJuhM* z^IoYBVf0Rdyu5+c6N1!;AOmg)38q$z3(Z@`PF;jy>{l$gjImlHVXsW=JmaKIBI{`& zB>8$D>o4i<@Dx5p#GQ|zzTp*7_LMm}6yxlGDZ8$!kq?HehV89)`jUZX@N&)0`LGR8 zFM+mj|MY$V-*#&1#scpc1cp|_GplUDu)48eSPg|o)eCjd@0C94$Htw_=dSty=c}tE z-iO$V>x!;ihSMxD$jphNth7*9=-LFb0kJzNATjSpxtyPruhTK{_|Aqop8MF#%O{z67PtqbQN zO28v32PdVV8qJ*wWo|iRA&PnFAsayW-8uE=eQzy`8j95uGoUjGX#Q)Pb3nby)n`!O za1gq)tWWAXlqIzYeH-VBS~hLoO)X`qHKsis5}!j1iH^&MUUy2UPoXS4b#YmW7WiC& zDE`7fV$a~g!r$RU8xVo_)W@(sDT`%8kBeD`ZwoS!GM!R74%8PgIY$#k#kQ=G;S?~x ziLzS9qQ!*f2}}TZ93p8wX4hhGv)4nxsft8|LO>D4$EBiPBf)ps6qcb?y{5un)oaRd ziFYBRA)bN{0A!eDpNB;se-6I5gA#3u`4c8+-ycX8H Lbrh5^tVPlPhTYsO diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc deleted file mode 100644 index a5f03d6c2c3bf43e3cdd1be0b72838ccdbab3b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4474 zcmaJ^OLN=E5ylJ#AVg8r!?rBTFIs-Axwb{Gol3S+j;%!)we~F2geAsmbmt+_@W&a*B)Iifvy*&Gwd3ExY(?AF;M*j8o3c}_345ZI zw$rUidlFVpG^Xt7ry3vUska(WiHUvPo)Ko_OyjJ54!EGQ7H3yPNpIxD8dB(|`J zAr|_Q3w_D!_6;Qodwe2$qc3}-FMHFz1u|d2NpAHyxB8shc2=!2*oTU2Un1L=_|m@9 z-)9!|z0>F3aW3!)o(81v@<~1g?YPitgirICx5S?3XZTrVg#|v#&%?}BKF2S>%soEO zFG72rU*eacUF28zRcLSX48I2LmuRi*_4>aK4-f1A1oDA_r+k1{D`rVFQK)Z7SMC&i zmkS9K)^@!e?sP=pp~&DN(82d9y#K%jxK`2Llj3_I5piS!rWEp9|`txYu#LSMH_=a-Di7 z=YSaZWzO@PzI0n|4pe*iV6n3kS&y1-YlFLwr%)eodW~sv9GX*=mIi8QB2l_p!=4&q ze5nPdv6BLlWs$M5BSkG5tAw)agfl_!cf*X zx}gXnE0F7TfOb1N!?&NiZ|bdXE1tlwJv8*-!9K#V0&nmP2q!(Qp*3Pkp|7jH-oQSC z7mlWALQzZ6F`!8$mu%45_$)Y2mKJvxZr|j0|LAQQ(3NMAoWn`I z>USbm5Vg=Ym;EsGTeeZIZ*GNh7TDm-ED+7wk#kBkbChr#z|L_pFbL8>C`rMOkvX8| z$K8d~QD5wTS_I=*j?;Eq!f~RcY!W2ICouS$%Zh^<4{ zPF9{T6$(x{zfy&zYIV`%fg>-0z=*y_zKMQ$9^L@aurx+YY7z^6CSe~_35on;hSOmJ zw^N40WkYRW+anCxT!^e}#9-0SATPcfj?+CVU^@v`Hvv z&kijrvoQQ5k}zJC?pL4_g4=QWRtrf8`U2JWNsX>*a0<{qs~3+Q9rFPmKfo96OYH}( zr~NJghu84n-$Ew)o?-%1`5;S_0$Cc-#rqN2I;sBHqfOBkZ#wd^S`RU$zn|51uZ)~( z@ln(F+-C52aVQM=LwDOd(FCGd3Hh@aDzj2uExoKp*yhXSkeZ0|PiD;DVM0dsDP^Y-O-FSbK12CKo|g8C>4L9vT*O9)r*jZp*22 zc?+k%Kyn+2((g#g`O}@`HHZh8G|)R^D>Et|!i0yW89Znre3g~at^1l&@KN;8p{`Wv z8qGPCpO~99?pr)SJzI&MS4pPB&bEd*1az zA(!HuXS{ZsU6D=1h%r?Lm`%~%47Va92wfQ}bfWQgx8-chdKilK=L6^Tt^Noq1z6Hp za1$lrM`;>Tq)Fuym^>Y=p9A*@tpf-ig$p@=fLB;SPhn+-46rg3Rz}Z6tPrJLH}i>7 z!|1x5+3EvxH-mY8aio&Cn}I^ZZ)4Q}Oy8G0zA)})Zg~h`upR@E$;NgtV>=-9askON zfxv}x`tEUF8la8=F3~~cDiX|4(HKsu!bawC@M;D2YhvXXgFVQlB$^%xv1&bRighSHj1YS#^_e^h7bW=@ST4ZDEh3*ob8KTwMF^JK z7_)Gw9guf;jYG8sX}y1q_h>L3vIFCt_9G@HbD&s4Ie857`2xvrkesk}`UqQ;{u_t{Xs)Evi5<$9FvyZ>HWz2h`!KW@ z^2McPsIk9YD_37G6&xt*pRX06^P*f@$yX|C#ivqji^i}`0BW^Rh)lSnd9xX3k@PTF z6o%3GTC3yBFa{Ja6?JVZ#3lNh#6%=9&~4L+D?^phv52#+S3R22+`QD<*#u%QFyVkUa6Lqk!2CZ5n5SAg5{h_SjwMAY^1D(wIBTd2A%~4^J9#x z;7>r9&IqHF#+eUq33Q`0q5qjPOgcra8Ai=ROSdSr#Qd+tum@#uzeh)UOcfpGM=KG_ b93Kx>f#T%EDwdgIRwBu)87m1tJ(c($J)i4| diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc deleted file mode 100644 index 2a239dc5b4ff6697545aa00a84da5fd82335598a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5170 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py deleted file mode 100644 index 11ec695..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -''' -This module generates ANSI character codes to printing colors to terminals. -See: http://en.wikipedia.org/wiki/ANSI_escape_code -''' - -CSI = '\033[' -OSC = '\033]' -BEL = '\a' - - -def code_to_chars(code): - return CSI + str(code) + 'm' - -def set_title(title): - return OSC + '2;' + title + BEL - -def clear_screen(mode=2): - return CSI + str(mode) + 'J' - -def clear_line(mode=2): - return CSI + str(mode) + 'K' - - -class AnsiCodes(object): - def __init__(self): - # the subclasses declare class attributes which are numbers. - # Upon instantiation we define instance attributes, which are the same - # as the class attributes but wrapped with the ANSI escape sequence - for name in dir(self): - if not name.startswith('_'): - value = getattr(self, name) - setattr(self, name, code_to_chars(value)) - - -class AnsiCursor(object): - def UP(self, n=1): - return CSI + str(n) + 'A' - def DOWN(self, n=1): - return CSI + str(n) + 'B' - def FORWARD(self, n=1): - return CSI + str(n) + 'C' - def BACK(self, n=1): - return CSI + str(n) + 'D' - def POS(self, x=1, y=1): - return CSI + str(y) + ';' + str(x) + 'H' - - -class AnsiFore(AnsiCodes): - BLACK = 30 - RED = 31 - GREEN = 32 - YELLOW = 33 - BLUE = 34 - MAGENTA = 35 - CYAN = 36 - WHITE = 37 - RESET = 39 - - # These are fairly well supported, but not part of the standard. - LIGHTBLACK_EX = 90 - LIGHTRED_EX = 91 - LIGHTGREEN_EX = 92 - LIGHTYELLOW_EX = 93 - LIGHTBLUE_EX = 94 - LIGHTMAGENTA_EX = 95 - LIGHTCYAN_EX = 96 - LIGHTWHITE_EX = 97 - - -class AnsiBack(AnsiCodes): - BLACK = 40 - RED = 41 - GREEN = 42 - YELLOW = 43 - BLUE = 44 - MAGENTA = 45 - CYAN = 46 - WHITE = 47 - RESET = 49 - - # These are fairly well supported, but not part of the standard. - LIGHTBLACK_EX = 100 - LIGHTRED_EX = 101 - LIGHTGREEN_EX = 102 - LIGHTYELLOW_EX = 103 - LIGHTBLUE_EX = 104 - LIGHTMAGENTA_EX = 105 - LIGHTCYAN_EX = 106 - LIGHTWHITE_EX = 107 - - -class AnsiStyle(AnsiCodes): - BRIGHT = 1 - DIM = 2 - NORMAL = 22 - RESET_ALL = 0 - -Fore = AnsiFore() -Back = AnsiBack() -Style = AnsiStyle() -Cursor = AnsiCursor() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py deleted file mode 100644 index abf209e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py +++ /dev/null @@ -1,277 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import re -import sys -import os - -from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL -from .winterm import enable_vt_processing, WinTerm, WinColor, WinStyle -from .win32 import windll, winapi_test - - -winterm = None -if windll is not None: - winterm = WinTerm() - - -class StreamWrapper(object): - ''' - Wraps a stream (such as stdout), acting as a transparent proxy for all - attribute access apart from method 'write()', which is delegated to our - Converter instance. - ''' - def __init__(self, wrapped, converter): - # double-underscore everything to prevent clashes with names of - # attributes on the wrapped stream object. - self.__wrapped = wrapped - self.__convertor = converter - - def __getattr__(self, name): - return getattr(self.__wrapped, name) - - def __enter__(self, *args, **kwargs): - # special method lookup bypasses __getattr__/__getattribute__, see - # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit - # thus, contextlib magic methods are not proxied via __getattr__ - return self.__wrapped.__enter__(*args, **kwargs) - - def __exit__(self, *args, **kwargs): - return self.__wrapped.__exit__(*args, **kwargs) - - def __setstate__(self, state): - self.__dict__ = state - - def __getstate__(self): - return self.__dict__ - - def write(self, text): - self.__convertor.write(text) - - def isatty(self): - stream = self.__wrapped - if 'PYCHARM_HOSTED' in os.environ: - if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): - return True - try: - stream_isatty = stream.isatty - except AttributeError: - return False - else: - return stream_isatty() - - @property - def closed(self): - stream = self.__wrapped - try: - return stream.closed - # AttributeError in the case that the stream doesn't support being closed - # ValueError for the case that the stream has already been detached when atexit runs - except (AttributeError, ValueError): - return True - - -class AnsiToWin32(object): - ''' - Implements a 'write()' method which, on Windows, will strip ANSI character - sequences from the text, and if outputting to a tty, will convert them into - win32 function calls. - ''' - ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer - ANSI_OSC_RE = re.compile('\001?\033\\]([^\a]*)(\a)\002?') # Operating System Command - - def __init__(self, wrapped, convert=None, strip=None, autoreset=False): - # The wrapped stream (normally sys.stdout or sys.stderr) - self.wrapped = wrapped - - # should we reset colors to defaults after every .write() - self.autoreset = autoreset - - # create the proxy wrapping our output stream - self.stream = StreamWrapper(wrapped, self) - - on_windows = os.name == 'nt' - # We test if the WinAPI works, because even if we are on Windows - # we may be using a terminal that doesn't support the WinAPI - # (e.g. Cygwin Terminal). In this case it's up to the terminal - # to support the ANSI codes. - conversion_supported = on_windows and winapi_test() - try: - fd = wrapped.fileno() - except Exception: - fd = -1 - system_has_native_ansi = not on_windows or enable_vt_processing(fd) - have_tty = not self.stream.closed and self.stream.isatty() - need_conversion = conversion_supported and not system_has_native_ansi - - # should we strip ANSI sequences from our output? - if strip is None: - strip = need_conversion or not have_tty - self.strip = strip - - # should we should convert ANSI sequences into win32 calls? - if convert is None: - convert = need_conversion and have_tty - self.convert = convert - - # dict of ansi codes to win32 functions and parameters - self.win32_calls = self.get_win32_calls() - - # are we wrapping stderr? - self.on_stderr = self.wrapped is sys.stderr - - def should_wrap(self): - ''' - True if this class is actually needed. If false, then the output - stream will not be affected, nor will win32 calls be issued, so - wrapping stdout is not actually required. This will generally be - False on non-Windows platforms, unless optional functionality like - autoreset has been requested using kwargs to init() - ''' - return self.convert or self.strip or self.autoreset - - def get_win32_calls(self): - if self.convert and winterm: - return { - AnsiStyle.RESET_ALL: (winterm.reset_all, ), - AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), - AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), - AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), - AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), - AnsiFore.RED: (winterm.fore, WinColor.RED), - AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), - AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), - AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), - AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), - AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), - AnsiFore.WHITE: (winterm.fore, WinColor.GREY), - AnsiFore.RESET: (winterm.fore, ), - AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), - AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), - AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), - AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), - AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), - AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), - AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), - AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), - AnsiBack.BLACK: (winterm.back, WinColor.BLACK), - AnsiBack.RED: (winterm.back, WinColor.RED), - AnsiBack.GREEN: (winterm.back, WinColor.GREEN), - AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), - AnsiBack.BLUE: (winterm.back, WinColor.BLUE), - AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), - AnsiBack.CYAN: (winterm.back, WinColor.CYAN), - AnsiBack.WHITE: (winterm.back, WinColor.GREY), - AnsiBack.RESET: (winterm.back, ), - AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), - AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), - AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), - AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), - AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), - AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), - AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), - AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), - } - return dict() - - def write(self, text): - if self.strip or self.convert: - self.write_and_convert(text) - else: - self.wrapped.write(text) - self.wrapped.flush() - if self.autoreset: - self.reset_all() - - - def reset_all(self): - if self.convert: - self.call_win32('m', (0,)) - elif not self.strip and not self.stream.closed: - self.wrapped.write(Style.RESET_ALL) - - - def write_and_convert(self, text): - ''' - Write the given text to our wrapped stream, stripping any ANSI - sequences from the text, and optionally converting them into win32 - calls. - ''' - cursor = 0 - text = self.convert_osc(text) - for match in self.ANSI_CSI_RE.finditer(text): - start, end = match.span() - self.write_plain_text(text, cursor, start) - self.convert_ansi(*match.groups()) - cursor = end - self.write_plain_text(text, cursor, len(text)) - - - def write_plain_text(self, text, start, end): - if start < end: - self.wrapped.write(text[start:end]) - self.wrapped.flush() - - - def convert_ansi(self, paramstring, command): - if self.convert: - params = self.extract_params(command, paramstring) - self.call_win32(command, params) - - - def extract_params(self, command, paramstring): - if command in 'Hf': - params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) - while len(params) < 2: - # defaults: - params = params + (1,) - else: - params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) - if len(params) == 0: - # defaults: - if command in 'JKm': - params = (0,) - elif command in 'ABCD': - params = (1,) - - return params - - - def call_win32(self, command, params): - if command == 'm': - for param in params: - if param in self.win32_calls: - func_args = self.win32_calls[param] - func = func_args[0] - args = func_args[1:] - kwargs = dict(on_stderr=self.on_stderr) - func(*args, **kwargs) - elif command in 'J': - winterm.erase_screen(params[0], on_stderr=self.on_stderr) - elif command in 'K': - winterm.erase_line(params[0], on_stderr=self.on_stderr) - elif command in 'Hf': # cursor position - absolute - winterm.set_cursor_position(params, on_stderr=self.on_stderr) - elif command in 'ABCD': # cursor position - relative - n = params[0] - # A - up, B - down, C - forward, D - back - x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] - winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) - - - def convert_osc(self, text): - for match in self.ANSI_OSC_RE.finditer(text): - start, end = match.span() - text = text[:start] + text[end:] - paramstring, command = match.groups() - if command == BEL: - if paramstring.count(";") == 1: - params = paramstring.split(";") - # 0 - change title and icon (we will only change title) - # 1 - change icon (we don't support this) - # 2 - change title - if params[0] in '02': - winterm.set_title(params[1]) - return text - - - def flush(self): - self.wrapped.flush() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py deleted file mode 100644 index d5fd4b7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import atexit -import contextlib -import sys - -from .ansitowin32 import AnsiToWin32 - - -def _wipe_internal_state_for_tests(): - global orig_stdout, orig_stderr - orig_stdout = None - orig_stderr = None - - global wrapped_stdout, wrapped_stderr - wrapped_stdout = None - wrapped_stderr = None - - global atexit_done - atexit_done = False - - global fixed_windows_console - fixed_windows_console = False - - try: - # no-op if it wasn't registered - atexit.unregister(reset_all) - except AttributeError: - # python 2: no atexit.unregister. Oh well, we did our best. - pass - - -def reset_all(): - if AnsiToWin32 is not None: # Issue #74: objects might become None at exit - AnsiToWin32(orig_stdout).reset_all() - - -def init(autoreset=False, convert=None, strip=None, wrap=True): - - if not wrap and any([autoreset, convert, strip]): - raise ValueError('wrap=False conflicts with any other arg=True') - - global wrapped_stdout, wrapped_stderr - global orig_stdout, orig_stderr - - orig_stdout = sys.stdout - orig_stderr = sys.stderr - - if sys.stdout is None: - wrapped_stdout = None - else: - sys.stdout = wrapped_stdout = \ - wrap_stream(orig_stdout, convert, strip, autoreset, wrap) - if sys.stderr is None: - wrapped_stderr = None - else: - sys.stderr = wrapped_stderr = \ - wrap_stream(orig_stderr, convert, strip, autoreset, wrap) - - global atexit_done - if not atexit_done: - atexit.register(reset_all) - atexit_done = True - - -def deinit(): - if orig_stdout is not None: - sys.stdout = orig_stdout - if orig_stderr is not None: - sys.stderr = orig_stderr - - -def just_fix_windows_console(): - global fixed_windows_console - - if sys.platform != "win32": - return - if fixed_windows_console: - return - if wrapped_stdout is not None or wrapped_stderr is not None: - # Someone already ran init() and it did stuff, so we won't second-guess them - return - - # On newer versions of Windows, AnsiToWin32.__init__ will implicitly enable the - # native ANSI support in the console as a side-effect. We only need to actually - # replace sys.stdout/stderr if we're in the old-style conversion mode. - new_stdout = AnsiToWin32(sys.stdout, convert=None, strip=None, autoreset=False) - if new_stdout.convert: - sys.stdout = new_stdout - new_stderr = AnsiToWin32(sys.stderr, convert=None, strip=None, autoreset=False) - if new_stderr.convert: - sys.stderr = new_stderr - - fixed_windows_console = True - -@contextlib.contextmanager -def colorama_text(*args, **kwargs): - init(*args, **kwargs) - try: - yield - finally: - deinit() - - -def reinit(): - if wrapped_stdout is not None: - sys.stdout = wrapped_stdout - if wrapped_stderr is not None: - sys.stderr = wrapped_stderr - - -def wrap_stream(stream, convert, strip, autoreset, wrap): - if wrap: - wrapper = AnsiToWin32(stream, - convert=convert, strip=strip, autoreset=autoreset) - if wrapper.should_wrap(): - stream = wrapper.stream - return stream - - -# Use this for initial setup as well, to reduce code duplication -_wipe_internal_state_for_tests() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py deleted file mode 100644 index 8c5661e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 0d40ed5c2b0fcd882eb2e18a65cc52e9c9015227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmYk0F$%&!5JfkVLIe+Dk&I$vA!09B=mC~>vnE3}JIl@{klxF9C0lP{<)+dP|9$>v zilOClA(9^1<$g-}p31+nRF278zpvnk)s?DTsz6gOunnN?H2xHQ#qs N_0}AwFL;)ai!WrCH6Z{1 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc deleted file mode 100644 index e579c61c7561ece78b0a709a24a223eb780477a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2293 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 X8Pj?)WfP?-d#Y&s#H}MA{^b7wVIyKy diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc deleted file mode 100644 index 8c23b635dd5526f13f744258bf4b521b26d2ce79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6901 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 AlK=n! diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc deleted file mode 100644 index 47f055d6f911ccfaa5c966f935786a1858f84ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3194 zcma)8&2!W?6qjtT*WRxzApuG|(+>2|ZA%u&OiQO7N|L4_GY~q-G8A7tW~C(F_+yd0 zq{)O+xVESM0m(7<{x!Pxv}bNTK;M&hHzAt<_ULCx?@5+^??Xzf)e?c{6*V@~0%B+k{!H5S8MxSB@)QC9Zl^N|p$-S@9KNMQ-eyUX4#MXUh%FqHK$ZEvYUH^|zXeFKKzh$msPkVdJ{ zwY6*~;;IOJEiU3VPJ8mPpm7h1{0D#&k22yJ++=j0GJ~0~$UgNfUf_18c;GPWkg~$Q zk#7Mc?m*LFuGTD#X_i=7OUh%C3ae^KWlU0I6IxOo%wA^~bh|caPqK@;J;A2dNMl-+ z2b)8tb}zMY>p>jMY==n(TgLC~?KYA#d~nlP7NE%c02$dQFAYZb3?IrK?HIn9SqL_IFhja502l8bEdc`t}m!Cy}WhtIPB z%y0V=jeKM&OY&&lb7OD{;AHl;=U^3osx0KUrk#-x6ZXjtl_DXl$vP&kATLxW}D)2MUYk39p4 z0}|t12}m7gOp(h(>$siLyR+ixW1S4-xu$jub4B2y`*nauS({W$L0wEETtc`Apxh0f z`2iSA3iKRhKV5wA;L#IRd^oqXxYC*vuI`;*U0%B1Ix@r+9Qg?X8a9VdQKf<$f{UT? zB`U~k06;p>Zqqt-j7cb#Hh}fUv9LBpoj1EzP8(u4$@w9)3p1Y|LMYiY{Q@%pA&>xz z8l64!z&(Vt2RxT_kPX8MTg5!A1~P{gko7^U&?z$;+nU?rO1}Xs=)Z-hk1PueKY^as zYE*RS3FKW|K$t|xLrMbI?K}ie8AG|?ZfJ=p%I#vep~{)KjHAz@dKLBOqNoW95*3F2 z?P$Wm*NvKizCK0ADIN|UbL?T3dVLRO%pE(UKqoloz^Unh1-Xe1aue;CCo&b}G00q+ zR3z%i8aN>)qgJDsdm%Q&R|x2j%EHW|_bk4~&g%%LHmrmBSJ0aW;p+;3ZD1&uV2iN5 zu~0_UbGIhG#XsBt7+(b_-y96)1lHDjGwAFdok!2)k85C)*FK z$HnN=NAK^W1x=q0EG-|4s!=X`03$yfRS-k=Aci2Db)1e12=Q}JJ|yc#2xSx}MsEK1 zg@g_HmVwV}f6xi(^4jQ_YVkjGI?)H1axo(OKx{~5ueE-8^tdHH$Gx5vAvI0MXd=9Y zNc6T*j9@B)IDxeEX7}nCPsamKpW-93e)~wW@FZvEpLx7|h_Hb>v>H^oX#%G#<3hZL zKJh&gFyck~RG^0fSF5RXJwr+WAZkCs=9JmE-$K5Od#G zCEt%z){C%S@qN5Y!&DK9pB?OKg$eOx(SdVRl97no~2 zrw3OEq)MPC2onJp>{W+?8NBi2IUo0=%FA&#g?p0_sqicmsv> 4) & 7 - self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) - - def reset_all(self, on_stderr=None): - self.set_attrs(self._default) - self.set_console(attrs=self._default) - self._light = 0 - - def fore(self, fore=None, light=False, on_stderr=False): - if fore is None: - fore = self._default_fore - self._fore = fore - # Emulate LIGHT_EX with BRIGHT Style - if light: - self._light |= WinStyle.BRIGHT - else: - self._light &= ~WinStyle.BRIGHT - self.set_console(on_stderr=on_stderr) - - def back(self, back=None, light=False, on_stderr=False): - if back is None: - back = self._default_back - self._back = back - # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style - if light: - self._light |= WinStyle.BRIGHT_BACKGROUND - else: - self._light &= ~WinStyle.BRIGHT_BACKGROUND - self.set_console(on_stderr=on_stderr) - - def style(self, style=None, on_stderr=False): - if style is None: - style = self._default_style - self._style = style - self.set_console(on_stderr=on_stderr) - - def set_console(self, attrs=None, on_stderr=False): - if attrs is None: - attrs = self.get_attrs() - handle = win32.STDOUT - if on_stderr: - handle = win32.STDERR - win32.SetConsoleTextAttribute(handle, attrs) - - def get_position(self, handle): - position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition - # Because Windows coordinates are 0-based, - # and win32.SetConsoleCursorPosition expects 1-based. - position.X += 1 - position.Y += 1 - return position - - def set_cursor_position(self, position=None, on_stderr=False): - if position is None: - # I'm not currently tracking the position, so there is no default. - # position = self.get_position() - return - handle = win32.STDOUT - if on_stderr: - handle = win32.STDERR - win32.SetConsoleCursorPosition(handle, position) - - def cursor_adjust(self, x, y, on_stderr=False): - handle = win32.STDOUT - if on_stderr: - handle = win32.STDERR - position = self.get_position(handle) - adjusted_position = (position.Y + y, position.X + x) - win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) - - def erase_screen(self, mode=0, on_stderr=False): - # 0 should clear from the cursor to the end of the screen. - # 1 should clear from the cursor to the beginning of the screen. - # 2 should clear the entire screen, and move cursor to (1,1) - handle = win32.STDOUT - if on_stderr: - handle = win32.STDERR - csbi = win32.GetConsoleScreenBufferInfo(handle) - # get the number of character cells in the current buffer - cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y - # get number of character cells before current cursor position - cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X - if mode == 0: - from_coord = csbi.dwCursorPosition - cells_to_erase = cells_in_screen - cells_before_cursor - elif mode == 1: - from_coord = win32.COORD(0, 0) - cells_to_erase = cells_before_cursor - elif mode == 2: - from_coord = win32.COORD(0, 0) - cells_to_erase = cells_in_screen - else: - # invalid mode - return - # fill the entire screen with blanks - win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) - # now set the buffer's attributes accordingly - win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) - if mode == 2: - # put the cursor where needed - win32.SetConsoleCursorPosition(handle, (1, 1)) - - def erase_line(self, mode=0, on_stderr=False): - # 0 should clear from the cursor to the end of the line. - # 1 should clear from the cursor to the beginning of the line. - # 2 should clear the entire line. - handle = win32.STDOUT - if on_stderr: - handle = win32.STDERR - csbi = win32.GetConsoleScreenBufferInfo(handle) - if mode == 0: - from_coord = csbi.dwCursorPosition - cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X - elif mode == 1: - from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) - cells_to_erase = csbi.dwCursorPosition.X - elif mode == 2: - from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) - cells_to_erase = csbi.dwSize.X - else: - # invalid mode - return - # fill the entire screen with blanks - win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) - # now set the buffer's attributes accordingly - win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) - - def set_title(self, title): - win32.SetConsoleTitle(title) - - -def enable_vt_processing(fd): - if win32.windll is None or not win32.winapi_test(): - return False - - try: - handle = get_osfhandle(fd) - mode = win32.GetConsoleMode(handle) - win32.SetConsoleMode( - handle, - mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING, - ) - - mode = win32.GetConsoleMode(handle) - if mode & win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING: - return True - # Can get TypeError in testsuite where 'fd' is a Mock() - except (OSError, TypeError): - return False diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py deleted file mode 100644 index e999438..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2023 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -import logging - -__version__ = '0.3.8' - - -class DistlibException(Exception): - pass - - -try: - from logging import NullHandler -except ImportError: # pragma: no cover - - class NullHandler(logging.Handler): - - def handle(self, record): - pass - - def emit(self, record): - pass - - def createLock(self): - self.lock = None - - -logger = logging.getLogger(__name__) -logger.addHandler(NullHandler()) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 9d705bd35b0163fd3d899be82c5cb29cf8ba23a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc deleted file mode 100644 index 9f49615feb1e1a9fbe7424b346dc5ab5907427eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43179 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 Z{mIM^T20HC%w~SDyuJ8Taew9D{|DO|Z7Ki& diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc deleted file mode 100644 index 1095b7a0e3bb72427a4f71b16dd8cff3bd53454b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17302 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc deleted file mode 100644 index fcd3cc4d340b81ac6549bfbc8b8fbd8b3fac3c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38329 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc deleted file mode 100644 index b02c3eaf991d78363bbef78df17f5b9eaf27e505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10230 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 NJgJ;!lf~1@{{w(%YwG|2 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc deleted file mode 100644 index 51dd2791edbd5bc31bc152495daf78a1b1ab2145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5320 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 YoO^jhAk3ndXk+gMo`)PoajD?`9|O9ZRR910 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc deleted file mode 100644 index b56ea852d4292793bc9e011605218521a60b1790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11529 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc deleted file mode 100644 index d5820175f8ec17584ff64e164a9232828e373d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52147 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 XtSR$;tH&&v5%@EBloEgV??mKZNrHTg diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc deleted file mode 100644 index 086dc2302407f1ac3c91851d9bfb9a2e6eee6e87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20288 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc deleted file mode 100644 index d617d135acefcc60df40df24072a663caeb210a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27681 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py deleted file mode 100644 index e93dc27..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py +++ /dev/null @@ -1,1138 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2017 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from __future__ import absolute_import - -import os -import re -import shutil -import sys - -try: - import ssl -except ImportError: # pragma: no cover - ssl = None - -if sys.version_info[0] < 3: # pragma: no cover - from StringIO import StringIO - string_types = basestring, - text_type = unicode - from types import FileType as file_type - import __builtin__ as builtins - import ConfigParser as configparser - from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit - from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, - pathname2url, ContentTooShortError, splittype) - - def quote(s): - if isinstance(s, unicode): - s = s.encode('utf-8') - return _quote(s) - - import urllib2 - from urllib2 import (Request, urlopen, URLError, HTTPError, - HTTPBasicAuthHandler, HTTPPasswordMgr, HTTPHandler, - HTTPRedirectHandler, build_opener) - if ssl: - from urllib2 import HTTPSHandler - import httplib - import xmlrpclib - import Queue as queue - from HTMLParser import HTMLParser - import htmlentitydefs - raw_input = raw_input - from itertools import ifilter as filter - from itertools import ifilterfalse as filterfalse - - # Leaving this around for now, in case it needs resurrecting in some way - # _userprog = None - # def splituser(host): - # """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" - # global _userprog - # if _userprog is None: - # import re - # _userprog = re.compile('^(.*)@(.*)$') - - # match = _userprog.match(host) - # if match: return match.group(1, 2) - # return None, host - -else: # pragma: no cover - from io import StringIO - string_types = str, - text_type = str - from io import TextIOWrapper as file_type - import builtins - import configparser - from urllib.parse import (urlparse, urlunparse, urljoin, quote, unquote, - urlsplit, urlunsplit, splittype) - from urllib.request import (urlopen, urlretrieve, Request, url2pathname, - pathname2url, HTTPBasicAuthHandler, - HTTPPasswordMgr, HTTPHandler, - HTTPRedirectHandler, build_opener) - if ssl: - from urllib.request import HTTPSHandler - from urllib.error import HTTPError, URLError, ContentTooShortError - import http.client as httplib - import urllib.request as urllib2 - import xmlrpc.client as xmlrpclib - import queue - from html.parser import HTMLParser - import html.entities as htmlentitydefs - raw_input = input - from itertools import filterfalse - filter = filter - -try: - from ssl import match_hostname, CertificateError -except ImportError: # pragma: no cover - - class CertificateError(ValueError): - pass - - def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - parts = dn.split('.') - leftmost, remainder = parts[0], parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate, match_hostname needs a " - "SSL socket or SSL context with either " - "CERT_OPTIONAL or CERT_REQUIRED") - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError("hostname %r " - "doesn't match either of %s" % - (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError("hostname %r " - "doesn't match %r" % - (hostname, dnsnames[0])) - else: - raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") - - -try: - from types import SimpleNamespace as Container -except ImportError: # pragma: no cover - - class Container(object): - """ - A generic container for when multiple values need to be returned - """ - - def __init__(self, **kwargs): - self.__dict__.update(kwargs) - - -try: - from shutil import which -except ImportError: # pragma: no cover - # Implementation from Python 3.3 - def which(cmd, mode=os.F_OK | os.X_OK, path=None): - """Given a command, mode, and a PATH string, return the path which - conforms to the given mode on the PATH, or None if there is no such - file. - - `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result - of os.environ.get("PATH"), or can be overridden with a custom search - path. - - """ - - # Check that a given file can be accessed with the correct mode. - # Additionally check that `file` is not a directory, as on Windows - # directories pass the os.access check. - def _access_check(fn, mode): - return (os.path.exists(fn) and os.access(fn, mode) - and not os.path.isdir(fn)) - - # If we're given a path with a directory part, look it up directly rather - # than referring to PATH directories. This includes checking relative to the - # current directory, e.g. ./script - if os.path.dirname(cmd): - if _access_check(cmd, mode): - return cmd - return None - - if path is None: - path = os.environ.get("PATH", os.defpath) - if not path: - return None - path = path.split(os.pathsep) - - if sys.platform == "win32": - # The current directory takes precedence on Windows. - if os.curdir not in path: - path.insert(0, os.curdir) - - # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) - # See if the given file matches any of the expected path extensions. - # This will allow us to short circuit when given "python.exe". - # If it does match, only test that one, otherwise we have to try - # others. - if any(cmd.lower().endswith(ext.lower()) for ext in pathext): - files = [cmd] - else: - files = [cmd + ext for ext in pathext] - else: - # On other platforms you don't have things like PATHEXT to tell you - # what file suffixes are executable, so just pass on cmd as-is. - files = [cmd] - - seen = set() - for dir in path: - normdir = os.path.normcase(dir) - if normdir not in seen: - seen.add(normdir) - for thefile in files: - name = os.path.join(dir, thefile) - if _access_check(name, mode): - return name - return None - - -# ZipFile is a context manager in 2.7, but not in 2.6 - -from zipfile import ZipFile as BaseZipFile - -if hasattr(BaseZipFile, '__enter__'): # pragma: no cover - ZipFile = BaseZipFile -else: # pragma: no cover - from zipfile import ZipExtFile as BaseZipExtFile - - class ZipExtFile(BaseZipExtFile): - - def __init__(self, base): - self.__dict__.update(base.__dict__) - - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.close() - # return None, so if an exception occurred, it will propagate - - class ZipFile(BaseZipFile): - - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.close() - # return None, so if an exception occurred, it will propagate - - def open(self, *args, **kwargs): - base = BaseZipFile.open(self, *args, **kwargs) - return ZipExtFile(base) - - -try: - from platform import python_implementation -except ImportError: # pragma: no cover - - def python_implementation(): - """Return a string identifying the Python implementation.""" - if 'PyPy' in sys.version: - return 'PyPy' - if os.name == 'java': - return 'Jython' - if sys.version.startswith('IronPython'): - return 'IronPython' - return 'CPython' - - -import sysconfig - -try: - callable = callable -except NameError: # pragma: no cover - from collections.abc import Callable - - def callable(obj): - return isinstance(obj, Callable) - - -try: - fsencode = os.fsencode - fsdecode = os.fsdecode -except AttributeError: # pragma: no cover - # Issue #99: on some systems (e.g. containerised), - # sys.getfilesystemencoding() returns None, and we need a real value, - # so fall back to utf-8. From the CPython 2.7 docs relating to Unix and - # sys.getfilesystemencoding(): the return value is "the user’s preference - # according to the result of nl_langinfo(CODESET), or None if the - # nl_langinfo(CODESET) failed." - _fsencoding = sys.getfilesystemencoding() or 'utf-8' - if _fsencoding == 'mbcs': - _fserrors = 'strict' - else: - _fserrors = 'surrogateescape' - - def fsencode(filename): - if isinstance(filename, bytes): - return filename - elif isinstance(filename, text_type): - return filename.encode(_fsencoding, _fserrors) - else: - raise TypeError("expect bytes or str, not %s" % - type(filename).__name__) - - def fsdecode(filename): - if isinstance(filename, text_type): - return filename - elif isinstance(filename, bytes): - return filename.decode(_fsencoding, _fserrors) - else: - raise TypeError("expect bytes or str, not %s" % - type(filename).__name__) - - -try: - from tokenize import detect_encoding -except ImportError: # pragma: no cover - from codecs import BOM_UTF8, lookup - - cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") - - def _get_normal_name(orig_enc): - """Imitates get_normal_name in tokenizer.c.""" - # Only care about the first 12 characters. - enc = orig_enc[:12].lower().replace("_", "-") - if enc == "utf-8" or enc.startswith("utf-8-"): - return "utf-8" - if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ - enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): - return "iso-8859-1" - return orig_enc - - def detect_encoding(readline): - """ - The detect_encoding() function is used to detect the encoding that should - be used to decode a Python source file. It requires one argument, readline, - in the same way as the tokenize() generator. - - It will call readline a maximum of twice, and return the encoding used - (as a string) and a list of any lines (left as bytes) it has read in. - - It detects the encoding from the presence of a utf-8 bom or an encoding - cookie as specified in pep-0263. If both a bom and a cookie are present, - but disagree, a SyntaxError will be raised. If the encoding cookie is an - invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, - 'utf-8-sig' is returned. - - If no encoding is specified, then the default of 'utf-8' will be returned. - """ - try: - filename = readline.__self__.name - except AttributeError: - filename = None - bom_found = False - encoding = None - default = 'utf-8' - - def read_or_stop(): - try: - return readline() - except StopIteration: - return b'' - - def find_cookie(line): - try: - # Decode as UTF-8. Either the line is an encoding declaration, - # in which case it should be pure ASCII, or it must be UTF-8 - # per default encoding. - line_string = line.decode('utf-8') - except UnicodeDecodeError: - msg = "invalid or missing encoding declaration" - if filename is not None: - msg = '{} for {!r}'.format(msg, filename) - raise SyntaxError(msg) - - matches = cookie_re.findall(line_string) - if not matches: - return None - encoding = _get_normal_name(matches[0]) - try: - codec = lookup(encoding) - except LookupError: - # This behaviour mimics the Python interpreter - if filename is None: - msg = "unknown encoding: " + encoding - else: - msg = "unknown encoding for {!r}: {}".format( - filename, encoding) - raise SyntaxError(msg) - - if bom_found: - if codec.name != 'utf-8': - # This behaviour mimics the Python interpreter - if filename is None: - msg = 'encoding problem: utf-8' - else: - msg = 'encoding problem for {!r}: utf-8'.format( - filename) - raise SyntaxError(msg) - encoding += '-sig' - return encoding - - first = read_or_stop() - if first.startswith(BOM_UTF8): - bom_found = True - first = first[3:] - default = 'utf-8-sig' - if not first: - return default, [] - - encoding = find_cookie(first) - if encoding: - return encoding, [first] - - second = read_or_stop() - if not second: - return default, [first] - - encoding = find_cookie(second) - if encoding: - return encoding, [first, second] - - return default, [first, second] - - -# For converting & <-> & etc. -try: - from html import escape -except ImportError: - from cgi import escape -if sys.version_info[:2] < (3, 4): - unescape = HTMLParser().unescape -else: - from html import unescape - -try: - from collections import ChainMap -except ImportError: # pragma: no cover - from collections import MutableMapping - - try: - from reprlib import recursive_repr as _recursive_repr - except ImportError: - - def _recursive_repr(fillvalue='...'): - ''' - Decorator to make a repr function return fillvalue for a recursive - call - ''' - - def decorating_function(user_function): - repr_running = set() - - def wrapper(self): - key = id(self), get_ident() - if key in repr_running: - return fillvalue - repr_running.add(key) - try: - result = user_function(self) - finally: - repr_running.discard(key) - return result - - # Can't use functools.wraps() here because of bootstrap issues - wrapper.__module__ = getattr(user_function, '__module__') - wrapper.__doc__ = getattr(user_function, '__doc__') - wrapper.__name__ = getattr(user_function, '__name__') - wrapper.__annotations__ = getattr(user_function, - '__annotations__', {}) - return wrapper - - return decorating_function - - class ChainMap(MutableMapping): - ''' - A ChainMap groups multiple dicts (or other mappings) together - to create a single, updateable view. - - The underlying mappings are stored in a list. That list is public and can - accessed or updated using the *maps* attribute. There is no other state. - - Lookups search the underlying mappings successively until a key is found. - In contrast, writes, updates, and deletions only operate on the first - mapping. - ''' - - def __init__(self, *maps): - '''Initialize a ChainMap by setting *maps* to the given mappings. - If no mappings are provided, a single empty dictionary is used. - - ''' - self.maps = list(maps) or [{}] # always at least one map - - def __missing__(self, key): - raise KeyError(key) - - def __getitem__(self, key): - for mapping in self.maps: - try: - return mapping[ - key] # can't use 'key in mapping' with defaultdict - except KeyError: - pass - return self.__missing__( - key) # support subclasses that define __missing__ - - def get(self, key, default=None): - return self[key] if key in self else default - - def __len__(self): - return len(set().union( - *self.maps)) # reuses stored hash values if possible - - def __iter__(self): - return iter(set().union(*self.maps)) - - def __contains__(self, key): - return any(key in m for m in self.maps) - - def __bool__(self): - return any(self.maps) - - @_recursive_repr() - def __repr__(self): - return '{0.__class__.__name__}({1})'.format( - self, ', '.join(map(repr, self.maps))) - - @classmethod - def fromkeys(cls, iterable, *args): - 'Create a ChainMap with a single dict created from the iterable.' - return cls(dict.fromkeys(iterable, *args)) - - def copy(self): - 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' - return self.__class__(self.maps[0].copy(), *self.maps[1:]) - - __copy__ = copy - - def new_child(self): # like Django's Context.push() - 'New ChainMap with a new dict followed by all previous maps.' - return self.__class__({}, *self.maps) - - @property - def parents(self): # like Django's Context.pop() - 'New ChainMap from maps[1:].' - return self.__class__(*self.maps[1:]) - - def __setitem__(self, key, value): - self.maps[0][key] = value - - def __delitem__(self, key): - try: - del self.maps[0][key] - except KeyError: - raise KeyError( - 'Key not found in the first mapping: {!r}'.format(key)) - - def popitem(self): - 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' - try: - return self.maps[0].popitem() - except KeyError: - raise KeyError('No keys found in the first mapping.') - - def pop(self, key, *args): - 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' - try: - return self.maps[0].pop(key, *args) - except KeyError: - raise KeyError( - 'Key not found in the first mapping: {!r}'.format(key)) - - def clear(self): - 'Clear maps[0], leaving maps[1:] intact.' - self.maps[0].clear() - - -try: - from importlib.util import cache_from_source # Python >= 3.4 -except ImportError: # pragma: no cover - - def cache_from_source(path, debug_override=None): - assert path.endswith('.py') - if debug_override is None: - debug_override = __debug__ - if debug_override: - suffix = 'c' - else: - suffix = 'o' - return path + suffix - - -try: - from collections import OrderedDict -except ImportError: # pragma: no cover - # {{{ http://code.activestate.com/recipes/576693/ (r9) - # Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. - # Passes Python2.7's test suite and incorporates all the latest updates. - try: - from thread import get_ident as _get_ident - except ImportError: - from dummy_thread import get_ident as _get_ident - - try: - from _abcoll import KeysView, ValuesView, ItemsView - except ImportError: - pass - - class OrderedDict(dict): - 'Dictionary that remembers insertion order' - - # An inherited dict maps keys to values. - # The inherited dict provides __getitem__, __len__, __contains__, and get. - # The remaining methods are order-aware. - # Big-O running times for all methods are the same as for regular dictionaries. - - # The internal self.__map dictionary maps keys to links in a doubly linked list. - # The circular doubly linked list starts and ends with a sentinel element. - # The sentinel element never gets deleted (this simplifies the algorithm). - # Each link is stored as a list of length three: [PREV, NEXT, KEY]. - - def __init__(self, *args, **kwds): - '''Initialize an ordered dictionary. Signature is the same as for - regular dictionaries, but keyword arguments are not recommended - because their insertion order is arbitrary. - - ''' - if len(args) > 1: - raise TypeError('expected at most 1 arguments, got %d' % - len(args)) - try: - self.__root - except AttributeError: - self.__root = root = [] # sentinel node - root[:] = [root, root, None] - self.__map = {} - self.__update(*args, **kwds) - - def __setitem__(self, key, value, dict_setitem=dict.__setitem__): - 'od.__setitem__(i, y) <==> od[i]=y' - # Setting a new item creates a new link which goes at the end of the linked - # list, and the inherited dictionary is updated with the new key/value pair. - if key not in self: - root = self.__root - last = root[0] - last[1] = root[0] = self.__map[key] = [last, root, key] - dict_setitem(self, key, value) - - def __delitem__(self, key, dict_delitem=dict.__delitem__): - 'od.__delitem__(y) <==> del od[y]' - # Deleting an existing item uses self.__map to find the link which is - # then removed by updating the links in the predecessor and successor nodes. - dict_delitem(self, key) - link_prev, link_next, key = self.__map.pop(key) - link_prev[1] = link_next - link_next[0] = link_prev - - def __iter__(self): - 'od.__iter__() <==> iter(od)' - root = self.__root - curr = root[1] - while curr is not root: - yield curr[2] - curr = curr[1] - - def __reversed__(self): - 'od.__reversed__() <==> reversed(od)' - root = self.__root - curr = root[0] - while curr is not root: - yield curr[2] - curr = curr[0] - - def clear(self): - 'od.clear() -> None. Remove all items from od.' - try: - for node in self.__map.itervalues(): - del node[:] - root = self.__root - root[:] = [root, root, None] - self.__map.clear() - except AttributeError: - pass - dict.clear(self) - - def popitem(self, last=True): - '''od.popitem() -> (k, v), return and remove a (key, value) pair. - Pairs are returned in LIFO order if last is true or FIFO order if false. - - ''' - if not self: - raise KeyError('dictionary is empty') - root = self.__root - if last: - link = root[0] - link_prev = link[0] - link_prev[1] = root - root[0] = link_prev - else: - link = root[1] - link_next = link[1] - root[1] = link_next - link_next[0] = root - key = link[2] - del self.__map[key] - value = dict.pop(self, key) - return key, value - - # -- the following methods do not depend on the internal structure -- - - def keys(self): - 'od.keys() -> list of keys in od' - return list(self) - - def values(self): - 'od.values() -> list of values in od' - return [self[key] for key in self] - - def items(self): - 'od.items() -> list of (key, value) pairs in od' - return [(key, self[key]) for key in self] - - def iterkeys(self): - 'od.iterkeys() -> an iterator over the keys in od' - return iter(self) - - def itervalues(self): - 'od.itervalues -> an iterator over the values in od' - for k in self: - yield self[k] - - def iteritems(self): - 'od.iteritems -> an iterator over the (key, value) items in od' - for k in self: - yield (k, self[k]) - - def update(*args, **kwds): - '''od.update(E, **F) -> None. Update od from dict/iterable E and F. - - If E is a dict instance, does: for k in E: od[k] = E[k] - If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] - Or if E is an iterable of items, does: for k, v in E: od[k] = v - In either case, this is followed by: for k, v in F.items(): od[k] = v - - ''' - if len(args) > 2: - raise TypeError('update() takes at most 2 positional ' - 'arguments (%d given)' % (len(args), )) - elif not args: - raise TypeError('update() takes at least 1 argument (0 given)') - self = args[0] - # Make progressively weaker assumptions about "other" - other = () - if len(args) == 2: - other = args[1] - if isinstance(other, dict): - for key in other: - self[key] = other[key] - elif hasattr(other, 'keys'): - for key in other.keys(): - self[key] = other[key] - else: - for key, value in other: - self[key] = value - for key, value in kwds.items(): - self[key] = value - - __update = update # let subclasses override update without breaking __init__ - - __marker = object() - - def pop(self, key, default=__marker): - '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. - If key is not found, d is returned if given, otherwise KeyError is raised. - - ''' - if key in self: - result = self[key] - del self[key] - return result - if default is self.__marker: - raise KeyError(key) - return default - - def setdefault(self, key, default=None): - 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' - if key in self: - return self[key] - self[key] = default - return default - - def __repr__(self, _repr_running=None): - 'od.__repr__() <==> repr(od)' - if not _repr_running: - _repr_running = {} - call_key = id(self), _get_ident() - if call_key in _repr_running: - return '...' - _repr_running[call_key] = 1 - try: - if not self: - return '%s()' % (self.__class__.__name__, ) - return '%s(%r)' % (self.__class__.__name__, self.items()) - finally: - del _repr_running[call_key] - - def __reduce__(self): - 'Return state information for pickling' - items = [[k, self[k]] for k in self] - inst_dict = vars(self).copy() - for k in vars(OrderedDict()): - inst_dict.pop(k, None) - if inst_dict: - return (self.__class__, (items, ), inst_dict) - return self.__class__, (items, ) - - def copy(self): - 'od.copy() -> a shallow copy of od' - return self.__class__(self) - - @classmethod - def fromkeys(cls, iterable, value=None): - '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S - and values equal to v (which defaults to None). - - ''' - d = cls() - for key in iterable: - d[key] = value - return d - - def __eq__(self, other): - '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive - while comparison to a regular mapping is order-insensitive. - - ''' - if isinstance(other, OrderedDict): - return len(self) == len( - other) and self.items() == other.items() - return dict.__eq__(self, other) - - def __ne__(self, other): - return not self == other - - # -- the following methods are only used in Python 2.7 -- - - def viewkeys(self): - "od.viewkeys() -> a set-like object providing a view on od's keys" - return KeysView(self) - - def viewvalues(self): - "od.viewvalues() -> an object providing a view on od's values" - return ValuesView(self) - - def viewitems(self): - "od.viewitems() -> a set-like object providing a view on od's items" - return ItemsView(self) - - -try: - from logging.config import BaseConfigurator, valid_ident -except ImportError: # pragma: no cover - IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) - - def valid_ident(s): - m = IDENTIFIER.match(s) - if not m: - raise ValueError('Not a valid Python identifier: %r' % s) - return True - - # The ConvertingXXX classes are wrappers around standard Python containers, - # and they serve to convert any suitable values in the container. The - # conversion converts base dicts, lists and tuples to their wrapped - # equivalents, whereas strings which match a conversion format are converted - # appropriately. - # - # Each wrapper should have a configurator attribute holding the actual - # configurator to use for conversion. - - class ConvertingDict(dict): - """A converting dictionary wrapper.""" - - def __getitem__(self, key): - value = dict.__getitem__(self, key) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def get(self, key, default=None): - value = dict.get(self, key, default) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, key, default=None): - value = dict.pop(self, key, default) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - class ConvertingList(list): - """A converting list wrapper.""" - - def __getitem__(self, key): - value = list.__getitem__(self, key) - result = self.configurator.convert(value) - # If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, idx=-1): - value = list.pop(self, idx) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - return result - - class ConvertingTuple(tuple): - """A converting tuple wrapper.""" - - def __getitem__(self, key): - value = tuple.__getitem__(self, key) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - class BaseConfigurator(object): - """ - The configurator base class which defines some useful defaults. - """ - - CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') - - WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') - DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') - INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') - DIGIT_PATTERN = re.compile(r'^\d+$') - - value_converters = { - 'ext': 'ext_convert', - 'cfg': 'cfg_convert', - } - - # We might want to use a different one, e.g. importlib - importer = staticmethod(__import__) - - def __init__(self, config): - self.config = ConvertingDict(config) - self.config.configurator = self - - def resolve(self, s): - """ - Resolve strings to objects using standard import and attribute - syntax. - """ - name = s.split('.') - used = name.pop(0) - try: - found = self.importer(used) - for frag in name: - used += '.' + frag - try: - found = getattr(found, frag) - except AttributeError: - self.importer(used) - found = getattr(found, frag) - return found - except ImportError: - e, tb = sys.exc_info()[1:] - v = ValueError('Cannot resolve %r: %s' % (s, e)) - v.__cause__, v.__traceback__ = e, tb - raise v - - def ext_convert(self, value): - """Default converter for the ext:// protocol.""" - return self.resolve(value) - - def cfg_convert(self, value): - """Default converter for the cfg:// protocol.""" - rest = value - m = self.WORD_PATTERN.match(rest) - if m is None: - raise ValueError("Unable to convert %r" % value) - else: - rest = rest[m.end():] - d = self.config[m.groups()[0]] - while rest: - m = self.DOT_PATTERN.match(rest) - if m: - d = d[m.groups()[0]] - else: - m = self.INDEX_PATTERN.match(rest) - if m: - idx = m.groups()[0] - if not self.DIGIT_PATTERN.match(idx): - d = d[idx] - else: - try: - n = int( - idx - ) # try as number first (most likely) - d = d[n] - except TypeError: - d = d[idx] - if m: - rest = rest[m.end():] - else: - raise ValueError('Unable to convert ' - '%r at %r' % (value, rest)) - # rest should be empty - return d - - def convert(self, value): - """ - Convert values to an appropriate type. dicts, lists and tuples are - replaced by their converting alternatives. Strings are checked to - see if they have a conversion format and are converted if they do. - """ - if not isinstance(value, ConvertingDict) and isinstance( - value, dict): - value = ConvertingDict(value) - value.configurator = self - elif not isinstance(value, ConvertingList) and isinstance( - value, list): - value = ConvertingList(value) - value.configurator = self - elif not isinstance(value, ConvertingTuple) and isinstance(value, tuple): - value = ConvertingTuple(value) - value.configurator = self - elif isinstance(value, string_types): - m = self.CONVERT_PATTERN.match(value) - if m: - d = m.groupdict() - prefix = d['prefix'] - converter = self.value_converters.get(prefix, None) - if converter: - suffix = d['suffix'] - converter = getattr(self, converter) - value = converter(suffix) - return value - - def configure_custom(self, config): - """Configure an object with a user-supplied factory.""" - c = config.pop('()') - if not callable(c): - c = self.resolve(c) - props = config.pop('.', None) - # Check for valid identifiers - kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) - result = c(**kwargs) - if props: - for name, value in props.items(): - setattr(result, name, value) - return result - - def as_tuple(self, value): - """Utility function which converts lists to tuples.""" - if isinstance(value, list): - value = tuple(value) - return value diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py deleted file mode 100644 index eb3765f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py +++ /dev/null @@ -1,1359 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2023 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -"""PEP 376 implementation.""" - -from __future__ import unicode_literals - -import base64 -import codecs -import contextlib -import hashlib -import logging -import os -import posixpath -import sys -import zipimport - -from . import DistlibException, resources -from .compat import StringIO -from .version import get_scheme, UnsupportedVersionError -from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, - LEGACY_METADATA_FILENAME) -from .util import (parse_requirement, cached_property, parse_name_and_version, - read_exports, write_exports, CSVReader, CSVWriter) - -__all__ = [ - 'Distribution', 'BaseInstalledDistribution', 'InstalledDistribution', - 'EggInfoDistribution', 'DistributionPath' -] - -logger = logging.getLogger(__name__) - -EXPORTS_FILENAME = 'pydist-exports.json' -COMMANDS_FILENAME = 'pydist-commands.json' - -DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', - 'RESOURCES', EXPORTS_FILENAME, 'SHARED') - -DISTINFO_EXT = '.dist-info' - - -class _Cache(object): - """ - A simple cache mapping names and .dist-info paths to distributions - """ - - def __init__(self): - """ - Initialise an instance. There is normally one for each DistributionPath. - """ - self.name = {} - self.path = {} - self.generated = False - - def clear(self): - """ - Clear the cache, setting it to its initial state. - """ - self.name.clear() - self.path.clear() - self.generated = False - - def add(self, dist): - """ - Add a distribution to the cache. - :param dist: The distribution to add. - """ - if dist.path not in self.path: - self.path[dist.path] = dist - self.name.setdefault(dist.key, []).append(dist) - - -class DistributionPath(object): - """ - Represents a set of distributions installed on a path (typically sys.path). - """ - - def __init__(self, path=None, include_egg=False): - """ - Create an instance from a path, optionally including legacy (distutils/ - setuptools/distribute) distributions. - :param path: The path to use, as a list of directories. If not specified, - sys.path is used. - :param include_egg: If True, this instance will look for and return legacy - distributions as well as those based on PEP 376. - """ - if path is None: - path = sys.path - self.path = path - self._include_dist = True - self._include_egg = include_egg - - self._cache = _Cache() - self._cache_egg = _Cache() - self._cache_enabled = True - self._scheme = get_scheme('default') - - def _get_cache_enabled(self): - return self._cache_enabled - - def _set_cache_enabled(self, value): - self._cache_enabled = value - - cache_enabled = property(_get_cache_enabled, _set_cache_enabled) - - def clear_cache(self): - """ - Clears the internal cache. - """ - self._cache.clear() - self._cache_egg.clear() - - def _yield_distributions(self): - """ - Yield .dist-info and/or .egg(-info) distributions. - """ - # We need to check if we've seen some resources already, because on - # some Linux systems (e.g. some Debian/Ubuntu variants) there are - # symlinks which alias other files in the environment. - seen = set() - for path in self.path: - finder = resources.finder_for_path(path) - if finder is None: - continue - r = finder.find('') - if not r or not r.is_container: - continue - rset = sorted(r.resources) - for entry in rset: - r = finder.find(entry) - if not r or r.path in seen: - continue - try: - if self._include_dist and entry.endswith(DISTINFO_EXT): - possible_filenames = [ - METADATA_FILENAME, WHEEL_METADATA_FILENAME, - LEGACY_METADATA_FILENAME - ] - for metadata_filename in possible_filenames: - metadata_path = posixpath.join( - entry, metadata_filename) - pydist = finder.find(metadata_path) - if pydist: - break - else: - continue - - with contextlib.closing(pydist.as_stream()) as stream: - metadata = Metadata(fileobj=stream, - scheme='legacy') - logger.debug('Found %s', r.path) - seen.add(r.path) - yield new_dist_class(r.path, - metadata=metadata, - env=self) - elif self._include_egg and entry.endswith( - ('.egg-info', '.egg')): - logger.debug('Found %s', r.path) - seen.add(r.path) - yield old_dist_class(r.path, self) - except Exception as e: - msg = 'Unable to read distribution at %s, perhaps due to bad metadata: %s' - logger.warning(msg, r.path, e) - import warnings - warnings.warn(msg % (r.path, e), stacklevel=2) - - def _generate_cache(self): - """ - Scan the path for distributions and populate the cache with - those that are found. - """ - gen_dist = not self._cache.generated - gen_egg = self._include_egg and not self._cache_egg.generated - if gen_dist or gen_egg: - for dist in self._yield_distributions(): - if isinstance(dist, InstalledDistribution): - self._cache.add(dist) - else: - self._cache_egg.add(dist) - - if gen_dist: - self._cache.generated = True - if gen_egg: - self._cache_egg.generated = True - - @classmethod - def distinfo_dirname(cls, name, version): - """ - The *name* and *version* parameters are converted into their - filename-escaped form, i.e. any ``'-'`` characters are replaced - with ``'_'`` other than the one in ``'dist-info'`` and the one - separating the name from the version number. - - :parameter name: is converted to a standard distribution name by replacing - any runs of non- alphanumeric characters with a single - ``'-'``. - :type name: string - :parameter version: is converted to a standard version string. Spaces - become dots, and all other non-alphanumeric characters - (except dots) become dashes, with runs of multiple - dashes condensed to a single dash. - :type version: string - :returns: directory name - :rtype: string""" - name = name.replace('-', '_') - return '-'.join([name, version]) + DISTINFO_EXT - - def get_distributions(self): - """ - Provides an iterator that looks for distributions and returns - :class:`InstalledDistribution` or - :class:`EggInfoDistribution` instances for each one of them. - - :rtype: iterator of :class:`InstalledDistribution` and - :class:`EggInfoDistribution` instances - """ - if not self._cache_enabled: - for dist in self._yield_distributions(): - yield dist - else: - self._generate_cache() - - for dist in self._cache.path.values(): - yield dist - - if self._include_egg: - for dist in self._cache_egg.path.values(): - yield dist - - def get_distribution(self, name): - """ - Looks for a named distribution on the path. - - This function only returns the first result found, as no more than one - value is expected. If nothing is found, ``None`` is returned. - - :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` - or ``None`` - """ - result = None - name = name.lower() - if not self._cache_enabled: - for dist in self._yield_distributions(): - if dist.key == name: - result = dist - break - else: - self._generate_cache() - - if name in self._cache.name: - result = self._cache.name[name][0] - elif self._include_egg and name in self._cache_egg.name: - result = self._cache_egg.name[name][0] - return result - - def provides_distribution(self, name, version=None): - """ - Iterates over all distributions to find which distributions provide *name*. - If a *version* is provided, it will be used to filter the results. - - This function only returns the first result found, since no more than - one values are expected. If the directory is not found, returns ``None``. - - :parameter version: a version specifier that indicates the version - required, conforming to the format in ``PEP-345`` - - :type name: string - :type version: string - """ - matcher = None - if version is not None: - try: - matcher = self._scheme.matcher('%s (%s)' % (name, version)) - except ValueError: - raise DistlibException('invalid name or version: %r, %r' % - (name, version)) - - for dist in self.get_distributions(): - # We hit a problem on Travis where enum34 was installed and doesn't - # have a provides attribute ... - if not hasattr(dist, 'provides'): - logger.debug('No "provides": %s', dist) - else: - provided = dist.provides - - for p in provided: - p_name, p_ver = parse_name_and_version(p) - if matcher is None: - if p_name == name: - yield dist - break - else: - if p_name == name and matcher.match(p_ver): - yield dist - break - - def get_file_path(self, name, relative_path): - """ - Return the path to a resource file. - """ - dist = self.get_distribution(name) - if dist is None: - raise LookupError('no distribution named %r found' % name) - return dist.get_resource_path(relative_path) - - def get_exported_entries(self, category, name=None): - """ - Return all of the exported entries in a particular category. - - :param category: The category to search for entries. - :param name: If specified, only entries with that name are returned. - """ - for dist in self.get_distributions(): - r = dist.exports - if category in r: - d = r[category] - if name is not None: - if name in d: - yield d[name] - else: - for v in d.values(): - yield v - - -class Distribution(object): - """ - A base class for distributions, whether installed or from indexes. - Either way, it must have some metadata, so that's all that's needed - for construction. - """ - - build_time_dependency = False - """ - Set to True if it's known to be only a build-time dependency (i.e. - not needed after installation). - """ - - requested = False - """A boolean that indicates whether the ``REQUESTED`` metadata file is - present (in other words, whether the package was installed by user - request or it was installed as a dependency).""" - - def __init__(self, metadata): - """ - Initialise an instance. - :param metadata: The instance of :class:`Metadata` describing this - distribution. - """ - self.metadata = metadata - self.name = metadata.name - self.key = self.name.lower() # for case-insensitive comparisons - self.version = metadata.version - self.locator = None - self.digest = None - self.extras = None # additional features requested - self.context = None # environment marker overrides - self.download_urls = set() - self.digests = {} - - @property - def source_url(self): - """ - The source archive download URL for this distribution. - """ - return self.metadata.source_url - - download_url = source_url # Backward compatibility - - @property - def name_and_version(self): - """ - A utility property which displays the name and version in parentheses. - """ - return '%s (%s)' % (self.name, self.version) - - @property - def provides(self): - """ - A set of distribution names and versions provided by this distribution. - :return: A set of "name (version)" strings. - """ - plist = self.metadata.provides - s = '%s (%s)' % (self.name, self.version) - if s not in plist: - plist.append(s) - return plist - - def _get_requirements(self, req_attr): - md = self.metadata - reqts = getattr(md, req_attr) - logger.debug('%s: got requirements %r from metadata: %r', self.name, - req_attr, reqts) - return set( - md.get_requirements(reqts, extras=self.extras, env=self.context)) - - @property - def run_requires(self): - return self._get_requirements('run_requires') - - @property - def meta_requires(self): - return self._get_requirements('meta_requires') - - @property - def build_requires(self): - return self._get_requirements('build_requires') - - @property - def test_requires(self): - return self._get_requirements('test_requires') - - @property - def dev_requires(self): - return self._get_requirements('dev_requires') - - def matches_requirement(self, req): - """ - Say if this instance matches (fulfills) a requirement. - :param req: The requirement to match. - :rtype req: str - :return: True if it matches, else False. - """ - # Requirement may contain extras - parse to lose those - # from what's passed to the matcher - r = parse_requirement(req) - scheme = get_scheme(self.metadata.scheme) - try: - matcher = scheme.matcher(r.requirement) - except UnsupportedVersionError: - # XXX compat-mode if cannot read the version - logger.warning('could not read version %r - using name only', req) - name = req.split()[0] - matcher = scheme.matcher(name) - - name = matcher.key # case-insensitive - - result = False - for p in self.provides: - p_name, p_ver = parse_name_and_version(p) - if p_name != name: - continue - try: - result = matcher.match(p_ver) - break - except UnsupportedVersionError: - pass - return result - - def __repr__(self): - """ - Return a textual representation of this instance, - """ - if self.source_url: - suffix = ' [%s]' % self.source_url - else: - suffix = '' - return '' % (self.name, self.version, suffix) - - def __eq__(self, other): - """ - See if this distribution is the same as another. - :param other: The distribution to compare with. To be equal to one - another. distributions must have the same type, name, - version and source_url. - :return: True if it is the same, else False. - """ - if type(other) is not type(self): - result = False - else: - result = (self.name == other.name and self.version == other.version - and self.source_url == other.source_url) - return result - - def __hash__(self): - """ - Compute hash in a way which matches the equality test. - """ - return hash(self.name) + hash(self.version) + hash(self.source_url) - - -class BaseInstalledDistribution(Distribution): - """ - This is the base class for installed distributions (whether PEP 376 or - legacy). - """ - - hasher = None - - def __init__(self, metadata, path, env=None): - """ - Initialise an instance. - :param metadata: An instance of :class:`Metadata` which describes the - distribution. This will normally have been initialised - from a metadata file in the ``path``. - :param path: The path of the ``.dist-info`` or ``.egg-info`` - directory for the distribution. - :param env: This is normally the :class:`DistributionPath` - instance where this distribution was found. - """ - super(BaseInstalledDistribution, self).__init__(metadata) - self.path = path - self.dist_path = env - - def get_hash(self, data, hasher=None): - """ - Get the hash of some data, using a particular hash algorithm, if - specified. - - :param data: The data to be hashed. - :type data: bytes - :param hasher: The name of a hash implementation, supported by hashlib, - or ``None``. Examples of valid values are ``'sha1'``, - ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and - ``'sha512'``. If no hasher is specified, the ``hasher`` - attribute of the :class:`InstalledDistribution` instance - is used. If the hasher is determined to be ``None``, MD5 - is used as the hashing algorithm. - :returns: The hash of the data. If a hasher was explicitly specified, - the returned hash will be prefixed with the specified hasher - followed by '='. - :rtype: str - """ - if hasher is None: - hasher = self.hasher - if hasher is None: - hasher = hashlib.md5 - prefix = '' - else: - hasher = getattr(hashlib, hasher) - prefix = '%s=' % self.hasher - digest = hasher(data).digest() - digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') - return '%s%s' % (prefix, digest) - - -class InstalledDistribution(BaseInstalledDistribution): - """ - Created with the *path* of the ``.dist-info`` directory provided to the - constructor. It reads the metadata contained in ``pydist.json`` when it is - instantiated., or uses a passed in Metadata instance (useful for when - dry-run mode is being used). - """ - - hasher = 'sha256' - - def __init__(self, path, metadata=None, env=None): - self.modules = [] - self.finder = finder = resources.finder_for_path(path) - if finder is None: - raise ValueError('finder unavailable for %s' % path) - if env and env._cache_enabled and path in env._cache.path: - metadata = env._cache.path[path].metadata - elif metadata is None: - r = finder.find(METADATA_FILENAME) - # Temporary - for Wheel 0.23 support - if r is None: - r = finder.find(WHEEL_METADATA_FILENAME) - # Temporary - for legacy support - if r is None: - r = finder.find(LEGACY_METADATA_FILENAME) - if r is None: - raise ValueError('no %s found in %s' % - (METADATA_FILENAME, path)) - with contextlib.closing(r.as_stream()) as stream: - metadata = Metadata(fileobj=stream, scheme='legacy') - - super(InstalledDistribution, self).__init__(metadata, path, env) - - if env and env._cache_enabled: - env._cache.add(self) - - r = finder.find('REQUESTED') - self.requested = r is not None - p = os.path.join(path, 'top_level.txt') - if os.path.exists(p): - with open(p, 'rb') as f: - data = f.read().decode('utf-8') - self.modules = data.splitlines() - - def __repr__(self): - return '' % ( - self.name, self.version, self.path) - - def __str__(self): - return "%s %s" % (self.name, self.version) - - def _get_records(self): - """ - Get the list of installed files for the distribution - :return: A list of tuples of path, hash and size. Note that hash and - size might be ``None`` for some entries. The path is exactly - as stored in the file (which is as in PEP 376). - """ - results = [] - r = self.get_distinfo_resource('RECORD') - with contextlib.closing(r.as_stream()) as stream: - with CSVReader(stream=stream) as record_reader: - # Base location is parent dir of .dist-info dir - # base_location = os.path.dirname(self.path) - # base_location = os.path.abspath(base_location) - for row in record_reader: - missing = [None for i in range(len(row), 3)] - path, checksum, size = row + missing - # if not os.path.isabs(path): - # path = path.replace('/', os.sep) - # path = os.path.join(base_location, path) - results.append((path, checksum, size)) - return results - - @cached_property - def exports(self): - """ - Return the information exported by this distribution. - :return: A dictionary of exports, mapping an export category to a dict - of :class:`ExportEntry` instances describing the individual - export entries, and keyed by name. - """ - result = {} - r = self.get_distinfo_resource(EXPORTS_FILENAME) - if r: - result = self.read_exports() - return result - - def read_exports(self): - """ - Read exports data from a file in .ini format. - - :return: A dictionary of exports, mapping an export category to a list - of :class:`ExportEntry` instances describing the individual - export entries. - """ - result = {} - r = self.get_distinfo_resource(EXPORTS_FILENAME) - if r: - with contextlib.closing(r.as_stream()) as stream: - result = read_exports(stream) - return result - - def write_exports(self, exports): - """ - Write a dictionary of exports to a file in .ini format. - :param exports: A dictionary of exports, mapping an export category to - a list of :class:`ExportEntry` instances describing the - individual export entries. - """ - rf = self.get_distinfo_file(EXPORTS_FILENAME) - with open(rf, 'w') as f: - write_exports(exports, f) - - def get_resource_path(self, relative_path): - """ - NOTE: This API may change in the future. - - Return the absolute path to a resource file with the given relative - path. - - :param relative_path: The path, relative to .dist-info, of the resource - of interest. - :return: The absolute path where the resource is to be found. - """ - r = self.get_distinfo_resource('RESOURCES') - with contextlib.closing(r.as_stream()) as stream: - with CSVReader(stream=stream) as resources_reader: - for relative, destination in resources_reader: - if relative == relative_path: - return destination - raise KeyError('no resource file with relative path %r ' - 'is installed' % relative_path) - - def list_installed_files(self): - """ - Iterates over the ``RECORD`` entries and returns a tuple - ``(path, hash, size)`` for each line. - - :returns: iterator of (path, hash, size) - """ - for result in self._get_records(): - yield result - - def write_installed_files(self, paths, prefix, dry_run=False): - """ - Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any - existing ``RECORD`` file is silently overwritten. - - prefix is used to determine when to write absolute paths. - """ - prefix = os.path.join(prefix, '') - base = os.path.dirname(self.path) - base_under_prefix = base.startswith(prefix) - base = os.path.join(base, '') - record_path = self.get_distinfo_file('RECORD') - logger.info('creating %s', record_path) - if dry_run: - return None - with CSVWriter(record_path) as writer: - for path in paths: - if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): - # do not put size and hash, as in PEP-376 - hash_value = size = '' - else: - size = '%d' % os.path.getsize(path) - with open(path, 'rb') as fp: - hash_value = self.get_hash(fp.read()) - if path.startswith(base) or (base_under_prefix - and path.startswith(prefix)): - path = os.path.relpath(path, base) - writer.writerow((path, hash_value, size)) - - # add the RECORD file itself - if record_path.startswith(base): - record_path = os.path.relpath(record_path, base) - writer.writerow((record_path, '', '')) - return record_path - - def check_installed_files(self): - """ - Checks that the hashes and sizes of the files in ``RECORD`` are - matched by the files themselves. Returns a (possibly empty) list of - mismatches. Each entry in the mismatch list will be a tuple consisting - of the path, 'exists', 'size' or 'hash' according to what didn't match - (existence is checked first, then size, then hash), the expected - value and the actual value. - """ - mismatches = [] - base = os.path.dirname(self.path) - record_path = self.get_distinfo_file('RECORD') - for path, hash_value, size in self.list_installed_files(): - if not os.path.isabs(path): - path = os.path.join(base, path) - if path == record_path: - continue - if not os.path.exists(path): - mismatches.append((path, 'exists', True, False)) - elif os.path.isfile(path): - actual_size = str(os.path.getsize(path)) - if size and actual_size != size: - mismatches.append((path, 'size', size, actual_size)) - elif hash_value: - if '=' in hash_value: - hasher = hash_value.split('=', 1)[0] - else: - hasher = None - - with open(path, 'rb') as f: - actual_hash = self.get_hash(f.read(), hasher) - if actual_hash != hash_value: - mismatches.append( - (path, 'hash', hash_value, actual_hash)) - return mismatches - - @cached_property - def shared_locations(self): - """ - A dictionary of shared locations whose keys are in the set 'prefix', - 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. - The corresponding value is the absolute path of that category for - this distribution, and takes into account any paths selected by the - user at installation time (e.g. via command-line arguments). In the - case of the 'namespace' key, this would be a list of absolute paths - for the roots of namespace packages in this distribution. - - The first time this property is accessed, the relevant information is - read from the SHARED file in the .dist-info directory. - """ - result = {} - shared_path = os.path.join(self.path, 'SHARED') - if os.path.isfile(shared_path): - with codecs.open(shared_path, 'r', encoding='utf-8') as f: - lines = f.read().splitlines() - for line in lines: - key, value = line.split('=', 1) - if key == 'namespace': - result.setdefault(key, []).append(value) - else: - result[key] = value - return result - - def write_shared_locations(self, paths, dry_run=False): - """ - Write shared location information to the SHARED file in .dist-info. - :param paths: A dictionary as described in the documentation for - :meth:`shared_locations`. - :param dry_run: If True, the action is logged but no file is actually - written. - :return: The path of the file written to. - """ - shared_path = os.path.join(self.path, 'SHARED') - logger.info('creating %s', shared_path) - if dry_run: - return None - lines = [] - for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): - path = paths[key] - if os.path.isdir(paths[key]): - lines.append('%s=%s' % (key, path)) - for ns in paths.get('namespace', ()): - lines.append('namespace=%s' % ns) - - with codecs.open(shared_path, 'w', encoding='utf-8') as f: - f.write('\n'.join(lines)) - return shared_path - - def get_distinfo_resource(self, path): - if path not in DIST_FILES: - raise DistlibException('invalid path for a dist-info file: ' - '%r at %r' % (path, self.path)) - finder = resources.finder_for_path(self.path) - if finder is None: - raise DistlibException('Unable to get a finder for %s' % self.path) - return finder.find(path) - - def get_distinfo_file(self, path): - """ - Returns a path located under the ``.dist-info`` directory. Returns a - string representing the path. - - :parameter path: a ``'/'``-separated path relative to the - ``.dist-info`` directory or an absolute path; - If *path* is an absolute path and doesn't start - with the ``.dist-info`` directory path, - a :class:`DistlibException` is raised - :type path: str - :rtype: str - """ - # Check if it is an absolute path # XXX use relpath, add tests - if path.find(os.sep) >= 0: - # it's an absolute path? - distinfo_dirname, path = path.split(os.sep)[-2:] - if distinfo_dirname != self.path.split(os.sep)[-1]: - raise DistlibException( - 'dist-info file %r does not belong to the %r %s ' - 'distribution' % (path, self.name, self.version)) - - # The file must be relative - if path not in DIST_FILES: - raise DistlibException('invalid path for a dist-info file: ' - '%r at %r' % (path, self.path)) - - return os.path.join(self.path, path) - - def list_distinfo_files(self): - """ - Iterates over the ``RECORD`` entries and returns paths for each line if - the path is pointing to a file located in the ``.dist-info`` directory - or one of its subdirectories. - - :returns: iterator of paths - """ - base = os.path.dirname(self.path) - for path, checksum, size in self._get_records(): - # XXX add separator or use real relpath algo - if not os.path.isabs(path): - path = os.path.join(base, path) - if path.startswith(self.path): - yield path - - def __eq__(self, other): - return (isinstance(other, InstalledDistribution) - and self.path == other.path) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - __hash__ = object.__hash__ - - -class EggInfoDistribution(BaseInstalledDistribution): - """Created with the *path* of the ``.egg-info`` directory or file provided - to the constructor. It reads the metadata contained in the file itself, or - if the given path happens to be a directory, the metadata is read from the - file ``PKG-INFO`` under that directory.""" - - requested = True # as we have no way of knowing, assume it was - shared_locations = {} - - def __init__(self, path, env=None): - - def set_name_and_version(s, n, v): - s.name = n - s.key = n.lower() # for case-insensitive comparisons - s.version = v - - self.path = path - self.dist_path = env - if env and env._cache_enabled and path in env._cache_egg.path: - metadata = env._cache_egg.path[path].metadata - set_name_and_version(self, metadata.name, metadata.version) - else: - metadata = self._get_metadata(path) - - # Need to be set before caching - set_name_and_version(self, metadata.name, metadata.version) - - if env and env._cache_enabled: - env._cache_egg.add(self) - super(EggInfoDistribution, self).__init__(metadata, path, env) - - def _get_metadata(self, path): - requires = None - - def parse_requires_data(data): - """Create a list of dependencies from a requires.txt file. - - *data*: the contents of a setuptools-produced requires.txt file. - """ - reqs = [] - lines = data.splitlines() - for line in lines: - line = line.strip() - # sectioned files have bare newlines (separating sections) - if not line: # pragma: no cover - continue - if line.startswith('['): # pragma: no cover - logger.warning( - 'Unexpected line: quitting requirement scan: %r', line) - break - r = parse_requirement(line) - if not r: # pragma: no cover - logger.warning('Not recognised as a requirement: %r', line) - continue - if r.extras: # pragma: no cover - logger.warning('extra requirements in requires.txt are ' - 'not supported') - if not r.constraints: - reqs.append(r.name) - else: - cons = ', '.join('%s%s' % c for c in r.constraints) - reqs.append('%s (%s)' % (r.name, cons)) - return reqs - - def parse_requires_path(req_path): - """Create a list of dependencies from a requires.txt file. - - *req_path*: the path to a setuptools-produced requires.txt file. - """ - - reqs = [] - try: - with codecs.open(req_path, 'r', 'utf-8') as fp: - reqs = parse_requires_data(fp.read()) - except IOError: - pass - return reqs - - tl_path = tl_data = None - if path.endswith('.egg'): - if os.path.isdir(path): - p = os.path.join(path, 'EGG-INFO') - meta_path = os.path.join(p, 'PKG-INFO') - metadata = Metadata(path=meta_path, scheme='legacy') - req_path = os.path.join(p, 'requires.txt') - tl_path = os.path.join(p, 'top_level.txt') - requires = parse_requires_path(req_path) - else: - # FIXME handle the case where zipfile is not available - zipf = zipimport.zipimporter(path) - fileobj = StringIO( - zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) - metadata = Metadata(fileobj=fileobj, scheme='legacy') - try: - data = zipf.get_data('EGG-INFO/requires.txt') - tl_data = zipf.get_data('EGG-INFO/top_level.txt').decode( - 'utf-8') - requires = parse_requires_data(data.decode('utf-8')) - except IOError: - requires = None - elif path.endswith('.egg-info'): - if os.path.isdir(path): - req_path = os.path.join(path, 'requires.txt') - requires = parse_requires_path(req_path) - path = os.path.join(path, 'PKG-INFO') - tl_path = os.path.join(path, 'top_level.txt') - metadata = Metadata(path=path, scheme='legacy') - else: - raise DistlibException('path must end with .egg-info or .egg, ' - 'got %r' % path) - - if requires: - metadata.add_requirements(requires) - # look for top-level modules in top_level.txt, if present - if tl_data is None: - if tl_path is not None and os.path.exists(tl_path): - with open(tl_path, 'rb') as f: - tl_data = f.read().decode('utf-8') - if not tl_data: - tl_data = [] - else: - tl_data = tl_data.splitlines() - self.modules = tl_data - return metadata - - def __repr__(self): - return '' % (self.name, self.version, - self.path) - - def __str__(self): - return "%s %s" % (self.name, self.version) - - def check_installed_files(self): - """ - Checks that the hashes and sizes of the files in ``RECORD`` are - matched by the files themselves. Returns a (possibly empty) list of - mismatches. Each entry in the mismatch list will be a tuple consisting - of the path, 'exists', 'size' or 'hash' according to what didn't match - (existence is checked first, then size, then hash), the expected - value and the actual value. - """ - mismatches = [] - record_path = os.path.join(self.path, 'installed-files.txt') - if os.path.exists(record_path): - for path, _, _ in self.list_installed_files(): - if path == record_path: - continue - if not os.path.exists(path): - mismatches.append((path, 'exists', True, False)) - return mismatches - - def list_installed_files(self): - """ - Iterates over the ``installed-files.txt`` entries and returns a tuple - ``(path, hash, size)`` for each line. - - :returns: a list of (path, hash, size) - """ - - def _md5(path): - f = open(path, 'rb') - try: - content = f.read() - finally: - f.close() - return hashlib.md5(content).hexdigest() - - def _size(path): - return os.stat(path).st_size - - record_path = os.path.join(self.path, 'installed-files.txt') - result = [] - if os.path.exists(record_path): - with codecs.open(record_path, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - p = os.path.normpath(os.path.join(self.path, line)) - # "./" is present as a marker between installed files - # and installation metadata files - if not os.path.exists(p): - logger.warning('Non-existent file: %s', p) - if p.endswith(('.pyc', '.pyo')): - continue - # otherwise fall through and fail - if not os.path.isdir(p): - result.append((p, _md5(p), _size(p))) - result.append((record_path, None, None)) - return result - - def list_distinfo_files(self, absolute=False): - """ - Iterates over the ``installed-files.txt`` entries and returns paths for - each line if the path is pointing to a file located in the - ``.egg-info`` directory or one of its subdirectories. - - :parameter absolute: If *absolute* is ``True``, each returned path is - transformed into a local absolute path. Otherwise the - raw value from ``installed-files.txt`` is returned. - :type absolute: boolean - :returns: iterator of paths - """ - record_path = os.path.join(self.path, 'installed-files.txt') - if os.path.exists(record_path): - skip = True - with codecs.open(record_path, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - if line == './': - skip = False - continue - if not skip: - p = os.path.normpath(os.path.join(self.path, line)) - if p.startswith(self.path): - if absolute: - yield p - else: - yield line - - def __eq__(self, other): - return (isinstance(other, EggInfoDistribution) - and self.path == other.path) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - __hash__ = object.__hash__ - - -new_dist_class = InstalledDistribution -old_dist_class = EggInfoDistribution - - -class DependencyGraph(object): - """ - Represents a dependency graph between distributions. - - The dependency relationships are stored in an ``adjacency_list`` that maps - distributions to a list of ``(other, label)`` tuples where ``other`` - is a distribution and the edge is labeled with ``label`` (i.e. the version - specifier, if such was provided). Also, for more efficient traversal, for - every distribution ``x``, a list of predecessors is kept in - ``reverse_list[x]``. An edge from distribution ``a`` to - distribution ``b`` means that ``a`` depends on ``b``. If any missing - dependencies are found, they are stored in ``missing``, which is a - dictionary that maps distributions to a list of requirements that were not - provided by any other distributions. - """ - - def __init__(self): - self.adjacency_list = {} - self.reverse_list = {} - self.missing = {} - - def add_distribution(self, distribution): - """Add the *distribution* to the graph. - - :type distribution: :class:`distutils2.database.InstalledDistribution` - or :class:`distutils2.database.EggInfoDistribution` - """ - self.adjacency_list[distribution] = [] - self.reverse_list[distribution] = [] - # self.missing[distribution] = [] - - def add_edge(self, x, y, label=None): - """Add an edge from distribution *x* to distribution *y* with the given - *label*. - - :type x: :class:`distutils2.database.InstalledDistribution` or - :class:`distutils2.database.EggInfoDistribution` - :type y: :class:`distutils2.database.InstalledDistribution` or - :class:`distutils2.database.EggInfoDistribution` - :type label: ``str`` or ``None`` - """ - self.adjacency_list[x].append((y, label)) - # multiple edges are allowed, so be careful - if x not in self.reverse_list[y]: - self.reverse_list[y].append(x) - - def add_missing(self, distribution, requirement): - """ - Add a missing *requirement* for the given *distribution*. - - :type distribution: :class:`distutils2.database.InstalledDistribution` - or :class:`distutils2.database.EggInfoDistribution` - :type requirement: ``str`` - """ - logger.debug('%s missing %r', distribution, requirement) - self.missing.setdefault(distribution, []).append(requirement) - - def _repr_dist(self, dist): - return '%s %s' % (dist.name, dist.version) - - def repr_node(self, dist, level=1): - """Prints only a subgraph""" - output = [self._repr_dist(dist)] - for other, label in self.adjacency_list[dist]: - dist = self._repr_dist(other) - if label is not None: - dist = '%s [%s]' % (dist, label) - output.append(' ' * level + str(dist)) - suboutput = self.repr_node(other, level + 1) - subs = suboutput.split('\n') - output.extend(subs[1:]) - return '\n'.join(output) - - def to_dot(self, f, skip_disconnected=True): - """Writes a DOT output for the graph to the provided file *f*. - - If *skip_disconnected* is set to ``True``, then all distributions - that are not dependent on any other distribution are skipped. - - :type f: has to support ``file``-like operations - :type skip_disconnected: ``bool`` - """ - disconnected = [] - - f.write("digraph dependencies {\n") - for dist, adjs in self.adjacency_list.items(): - if len(adjs) == 0 and not skip_disconnected: - disconnected.append(dist) - for other, label in adjs: - if label is not None: - f.write('"%s" -> "%s" [label="%s"]\n' % - (dist.name, other.name, label)) - else: - f.write('"%s" -> "%s"\n' % (dist.name, other.name)) - if not skip_disconnected and len(disconnected) > 0: - f.write('subgraph disconnected {\n') - f.write('label = "Disconnected"\n') - f.write('bgcolor = red\n') - - for dist in disconnected: - f.write('"%s"' % dist.name) - f.write('\n') - f.write('}\n') - f.write('}\n') - - def topological_sort(self): - """ - Perform a topological sort of the graph. - :return: A tuple, the first element of which is a topologically sorted - list of distributions, and the second element of which is a - list of distributions that cannot be sorted because they have - circular dependencies and so form a cycle. - """ - result = [] - # Make a shallow copy of the adjacency list - alist = {} - for k, v in self.adjacency_list.items(): - alist[k] = v[:] - while True: - # See what we can remove in this run - to_remove = [] - for k, v in list(alist.items())[:]: - if not v: - to_remove.append(k) - del alist[k] - if not to_remove: - # What's left in alist (if anything) is a cycle. - break - # Remove from the adjacency list of others - for k, v in alist.items(): - alist[k] = [(d, r) for d, r in v if d not in to_remove] - logger.debug('Moving to result: %s', - ['%s (%s)' % (d.name, d.version) for d in to_remove]) - result.extend(to_remove) - return result, list(alist.keys()) - - def __repr__(self): - """Representation of the graph""" - output = [] - for dist, adjs in self.adjacency_list.items(): - output.append(self.repr_node(dist)) - return '\n'.join(output) - - -def make_graph(dists, scheme='default'): - """Makes a dependency graph from the given distributions. - - :parameter dists: a list of distributions - :type dists: list of :class:`distutils2.database.InstalledDistribution` and - :class:`distutils2.database.EggInfoDistribution` instances - :rtype: a :class:`DependencyGraph` instance - """ - scheme = get_scheme(scheme) - graph = DependencyGraph() - provided = {} # maps names to lists of (version, dist) tuples - - # first, build the graph and find out what's provided - for dist in dists: - graph.add_distribution(dist) - - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Add to provided: %s, %s, %s', name, version, dist) - provided.setdefault(name, []).append((version, dist)) - - # now make the edges - for dist in dists: - requires = (dist.run_requires | dist.meta_requires - | dist.build_requires | dist.dev_requires) - for req in requires: - try: - matcher = scheme.matcher(req) - except UnsupportedVersionError: - # XXX compat-mode if cannot read the version - logger.warning('could not read version %r - using name only', - req) - name = req.split()[0] - matcher = scheme.matcher(name) - - name = matcher.key # case-insensitive - - matched = False - if name in provided: - for version, provider in provided[name]: - try: - match = matcher.match(version) - except UnsupportedVersionError: - match = False - - if match: - graph.add_edge(dist, provider, req) - matched = True - break - if not matched: - graph.add_missing(dist, req) - return graph - - -def get_dependent_dists(dists, dist): - """Recursively generate a list of distributions from *dists* that are - dependent on *dist*. - - :param dists: a list of distributions - :param dist: a distribution, member of *dists* for which we are interested - """ - if dist not in dists: - raise DistlibException('given distribution %r is not a member ' - 'of the list' % dist.name) - graph = make_graph(dists) - - dep = [dist] # dependent distributions - todo = graph.reverse_list[dist] # list of nodes we should inspect - - while todo: - d = todo.pop() - dep.append(d) - for succ in graph.reverse_list[d]: - if succ not in dep: - todo.append(succ) - - dep.pop(0) # remove dist from dep, was there to prevent infinite loops - return dep - - -def get_required_dists(dists, dist): - """Recursively generate a list of distributions from *dists* that are - required by *dist*. - - :param dists: a list of distributions - :param dist: a distribution, member of *dists* for which we are interested - in finding the dependencies. - """ - if dist not in dists: - raise DistlibException('given distribution %r is not a member ' - 'of the list' % dist.name) - graph = make_graph(dists) - - req = set() # required distributions - todo = graph.adjacency_list[dist] # list of nodes we should inspect - seen = set(t[0] for t in todo) # already added to todo - - while todo: - d = todo.pop()[0] - req.add(d) - pred_list = graph.adjacency_list[d] - for pred in pred_list: - d = pred[0] - if d not in req and d not in seen: - seen.add(d) - todo.append(pred) - return req - - -def make_dist(name, version, **kwargs): - """ - A convenience method for making a dist given just a name and version. - """ - summary = kwargs.pop('summary', 'Placeholder for summary') - md = Metadata(**kwargs) - md.name = name - md.version = version - md.summary = summary or 'Placeholder for summary' - return Distribution(md) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py deleted file mode 100644 index 56cd286..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py +++ /dev/null @@ -1,508 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2023 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -import hashlib -import logging -import os -import shutil -import subprocess -import tempfile -try: - from threading import Thread -except ImportError: # pragma: no cover - from dummy_threading import Thread - -from . import DistlibException -from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, - urlparse, build_opener, string_types) -from .util import zip_dir, ServerProxy - -logger = logging.getLogger(__name__) - -DEFAULT_INDEX = 'https://pypi.org/pypi' -DEFAULT_REALM = 'pypi' - - -class PackageIndex(object): - """ - This class represents a package index compatible with PyPI, the Python - Package Index. - """ - - boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' - - def __init__(self, url=None): - """ - Initialise an instance. - - :param url: The URL of the index. If not specified, the URL for PyPI is - used. - """ - self.url = url or DEFAULT_INDEX - self.read_configuration() - scheme, netloc, path, params, query, frag = urlparse(self.url) - if params or query or frag or scheme not in ('http', 'https'): - raise DistlibException('invalid repository: %s' % self.url) - self.password_handler = None - self.ssl_verifier = None - self.gpg = None - self.gpg_home = None - with open(os.devnull, 'w') as sink: - # Use gpg by default rather than gpg2, as gpg2 insists on - # prompting for passwords - for s in ('gpg', 'gpg2'): - try: - rc = subprocess.check_call([s, '--version'], stdout=sink, - stderr=sink) - if rc == 0: - self.gpg = s - break - except OSError: - pass - - def _get_pypirc_command(self): - """ - Get the distutils command for interacting with PyPI configurations. - :return: the command. - """ - from .util import _get_pypirc_command as cmd - return cmd() - - def read_configuration(self): - """ - Read the PyPI access configuration as supported by distutils. This populates - ``username``, ``password``, ``realm`` and ``url`` attributes from the - configuration. - """ - from .util import _load_pypirc - cfg = _load_pypirc(self) - self.username = cfg.get('username') - self.password = cfg.get('password') - self.realm = cfg.get('realm', 'pypi') - self.url = cfg.get('repository', self.url) - - def save_configuration(self): - """ - Save the PyPI access configuration. You must have set ``username`` and - ``password`` attributes before calling this method. - """ - self.check_credentials() - from .util import _store_pypirc - _store_pypirc(self) - - def check_credentials(self): - """ - Check that ``username`` and ``password`` have been set, and raise an - exception if not. - """ - if self.username is None or self.password is None: - raise DistlibException('username and password must be set') - pm = HTTPPasswordMgr() - _, netloc, _, _, _, _ = urlparse(self.url) - pm.add_password(self.realm, netloc, self.username, self.password) - self.password_handler = HTTPBasicAuthHandler(pm) - - def register(self, metadata): # pragma: no cover - """ - Register a distribution on PyPI, using the provided metadata. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the distribution to be - registered. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - metadata.validate() - d = metadata.todict() - d[':action'] = 'verify' - request = self.encode_request(d.items(), []) - self.send_request(request) - d[':action'] = 'submit' - request = self.encode_request(d.items(), []) - return self.send_request(request) - - def _reader(self, name, stream, outbuf): - """ - Thread runner for reading lines of from a subprocess into a buffer. - - :param name: The logical name of the stream (used for logging only). - :param stream: The stream to read from. This will typically a pipe - connected to the output stream of a subprocess. - :param outbuf: The list to append the read lines to. - """ - while True: - s = stream.readline() - if not s: - break - s = s.decode('utf-8').rstrip() - outbuf.append(s) - logger.debug('%s: %s' % (name, s)) - stream.close() - - def get_sign_command(self, filename, signer, sign_password, keystore=None): # pragma: no cover - """ - Return a suitable command for signing a file. - - :param filename: The pathname to the file to be signed. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: The signing command as a list suitable to be - passed to :class:`subprocess.Popen`. - """ - cmd = [self.gpg, '--status-fd', '2', '--no-tty'] - if keystore is None: - keystore = self.gpg_home - if keystore: - cmd.extend(['--homedir', keystore]) - if sign_password is not None: - cmd.extend(['--batch', '--passphrase-fd', '0']) - td = tempfile.mkdtemp() - sf = os.path.join(td, os.path.basename(filename) + '.asc') - cmd.extend(['--detach-sign', '--armor', '--local-user', - signer, '--output', sf, filename]) - logger.debug('invoking: %s', ' '.join(cmd)) - return cmd, sf - - def run_command(self, cmd, input_data=None): - """ - Run a command in a child process , passing it any input data specified. - - :param cmd: The command to run. - :param input_data: If specified, this must be a byte string containing - data to be sent to the child process. - :return: A tuple consisting of the subprocess' exit code, a list of - lines read from the subprocess' ``stdout``, and a list of - lines read from the subprocess' ``stderr``. - """ - kwargs = { - 'stdout': subprocess.PIPE, - 'stderr': subprocess.PIPE, - } - if input_data is not None: - kwargs['stdin'] = subprocess.PIPE - stdout = [] - stderr = [] - p = subprocess.Popen(cmd, **kwargs) - # We don't use communicate() here because we may need to - # get clever with interacting with the command - t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) - t1.start() - t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) - t2.start() - if input_data is not None: - p.stdin.write(input_data) - p.stdin.close() - - p.wait() - t1.join() - t2.join() - return p.returncode, stdout, stderr - - def sign_file(self, filename, signer, sign_password, keystore=None): # pragma: no cover - """ - Sign a file. - - :param filename: The pathname to the file to be signed. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param keystore: The path to a directory which contains the keys - used in signing. If not specified, the instance's - ``gpg_home`` attribute is used instead. - :return: The absolute pathname of the file where the signature is - stored. - """ - cmd, sig_file = self.get_sign_command(filename, signer, sign_password, - keystore) - rc, stdout, stderr = self.run_command(cmd, - sign_password.encode('utf-8')) - if rc != 0: - raise DistlibException('sign command failed with error ' - 'code %s' % rc) - return sig_file - - def upload_file(self, metadata, filename, signer=None, sign_password=None, - filetype='sdist', pyversion='source', keystore=None): - """ - Upload a release file to the index. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the file to be uploaded. - :param filename: The pathname of the file to be uploaded. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param filetype: The type of the file being uploaded. This is the - distutils command which produced that file, e.g. - ``sdist`` or ``bdist_wheel``. - :param pyversion: The version of Python which the release relates - to. For code compatible with any Python, this would - be ``source``, otherwise it would be e.g. ``3.2``. - :param keystore: The path to a directory which contains the keys - used in signing. If not specified, the instance's - ``gpg_home`` attribute is used instead. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - if not os.path.exists(filename): - raise DistlibException('not found: %s' % filename) - metadata.validate() - d = metadata.todict() - sig_file = None - if signer: - if not self.gpg: - logger.warning('no signing program available - not signed') - else: - sig_file = self.sign_file(filename, signer, sign_password, - keystore) - with open(filename, 'rb') as f: - file_data = f.read() - md5_digest = hashlib.md5(file_data).hexdigest() - sha256_digest = hashlib.sha256(file_data).hexdigest() - d.update({ - ':action': 'file_upload', - 'protocol_version': '1', - 'filetype': filetype, - 'pyversion': pyversion, - 'md5_digest': md5_digest, - 'sha256_digest': sha256_digest, - }) - files = [('content', os.path.basename(filename), file_data)] - if sig_file: - with open(sig_file, 'rb') as f: - sig_data = f.read() - files.append(('gpg_signature', os.path.basename(sig_file), - sig_data)) - shutil.rmtree(os.path.dirname(sig_file)) - request = self.encode_request(d.items(), files) - return self.send_request(request) - - def upload_documentation(self, metadata, doc_dir): # pragma: no cover - """ - Upload documentation to the index. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the documentation to be - uploaded. - :param doc_dir: The pathname of the directory which contains the - documentation. This should be the directory that - contains the ``index.html`` for the documentation. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - if not os.path.isdir(doc_dir): - raise DistlibException('not a directory: %r' % doc_dir) - fn = os.path.join(doc_dir, 'index.html') - if not os.path.exists(fn): - raise DistlibException('not found: %r' % fn) - metadata.validate() - name, version = metadata.name, metadata.version - zip_data = zip_dir(doc_dir).getvalue() - fields = [(':action', 'doc_upload'), - ('name', name), ('version', version)] - files = [('content', name, zip_data)] - request = self.encode_request(fields, files) - return self.send_request(request) - - def get_verify_command(self, signature_filename, data_filename, - keystore=None): - """ - Return a suitable command for verifying a file. - - :param signature_filename: The pathname to the file containing the - signature. - :param data_filename: The pathname to the file containing the - signed data. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: The verifying command as a list suitable to be - passed to :class:`subprocess.Popen`. - """ - cmd = [self.gpg, '--status-fd', '2', '--no-tty'] - if keystore is None: - keystore = self.gpg_home - if keystore: - cmd.extend(['--homedir', keystore]) - cmd.extend(['--verify', signature_filename, data_filename]) - logger.debug('invoking: %s', ' '.join(cmd)) - return cmd - - def verify_signature(self, signature_filename, data_filename, - keystore=None): - """ - Verify a signature for a file. - - :param signature_filename: The pathname to the file containing the - signature. - :param data_filename: The pathname to the file containing the - signed data. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: True if the signature was verified, else False. - """ - if not self.gpg: - raise DistlibException('verification unavailable because gpg ' - 'unavailable') - cmd = self.get_verify_command(signature_filename, data_filename, - keystore) - rc, stdout, stderr = self.run_command(cmd) - if rc not in (0, 1): - raise DistlibException('verify command failed with error code %s' % rc) - return rc == 0 - - def download_file(self, url, destfile, digest=None, reporthook=None): - """ - This is a convenience method for downloading a file from an URL. - Normally, this will be a file from the index, though currently - no check is made for this (i.e. a file can be downloaded from - anywhere). - - The method is just like the :func:`urlretrieve` function in the - standard library, except that it allows digest computation to be - done during download and checking that the downloaded data - matched any expected value. - - :param url: The URL of the file to be downloaded (assumed to be - available via an HTTP GET request). - :param destfile: The pathname where the downloaded file is to be - saved. - :param digest: If specified, this must be a (hasher, value) - tuple, where hasher is the algorithm used (e.g. - ``'md5'``) and ``value`` is the expected value. - :param reporthook: The same as for :func:`urlretrieve` in the - standard library. - """ - if digest is None: - digester = None - logger.debug('No digest specified') - else: - if isinstance(digest, (list, tuple)): - hasher, digest = digest - else: - hasher = 'md5' - digester = getattr(hashlib, hasher)() - logger.debug('Digest specified: %s' % digest) - # The following code is equivalent to urlretrieve. - # We need to do it this way so that we can compute the - # digest of the file as we go. - with open(destfile, 'wb') as dfp: - # addinfourl is not a context manager on 2.x - # so we have to use try/finally - sfp = self.send_request(Request(url)) - try: - headers = sfp.info() - blocksize = 8192 - size = -1 - read = 0 - blocknum = 0 - if "content-length" in headers: - size = int(headers["Content-Length"]) - if reporthook: - reporthook(blocknum, blocksize, size) - while True: - block = sfp.read(blocksize) - if not block: - break - read += len(block) - dfp.write(block) - if digester: - digester.update(block) - blocknum += 1 - if reporthook: - reporthook(blocknum, blocksize, size) - finally: - sfp.close() - - # check that we got the whole file, if we can - if size >= 0 and read < size: - raise DistlibException( - 'retrieval incomplete: got only %d out of %d bytes' - % (read, size)) - # if we have a digest, it must match. - if digester: - actual = digester.hexdigest() - if digest != actual: - raise DistlibException('%s digest mismatch for %s: expected ' - '%s, got %s' % (hasher, destfile, - digest, actual)) - logger.debug('Digest verified: %s', digest) - - def send_request(self, req): - """ - Send a standard library :class:`Request` to PyPI and return its - response. - - :param req: The request to send. - :return: The HTTP response from PyPI (a standard library HTTPResponse). - """ - handlers = [] - if self.password_handler: - handlers.append(self.password_handler) - if self.ssl_verifier: - handlers.append(self.ssl_verifier) - opener = build_opener(*handlers) - return opener.open(req) - - def encode_request(self, fields, files): - """ - Encode fields and files for posting to an HTTP server. - - :param fields: The fields to send as a list of (fieldname, value) - tuples. - :param files: The files to send as a list of (fieldname, filename, - file_bytes) tuple. - """ - # Adapted from packaging, which in turn was adapted from - # http://code.activestate.com/recipes/146306 - - parts = [] - boundary = self.boundary - for k, values in fields: - if not isinstance(values, (list, tuple)): - values = [values] - - for v in values: - parts.extend(( - b'--' + boundary, - ('Content-Disposition: form-data; name="%s"' % - k).encode('utf-8'), - b'', - v.encode('utf-8'))) - for key, filename, value in files: - parts.extend(( - b'--' + boundary, - ('Content-Disposition: form-data; name="%s"; filename="%s"' % - (key, filename)).encode('utf-8'), - b'', - value)) - - parts.extend((b'--' + boundary + b'--', b'')) - - body = b'\r\n'.join(parts) - ct = b'multipart/form-data; boundary=' + boundary - headers = { - 'Content-type': ct, - 'Content-length': str(len(body)) - } - return Request(self.url, body, headers) - - def search(self, terms, operator=None): # pragma: no cover - if isinstance(terms, string_types): - terms = {'name': terms} - rpc_proxy = ServerProxy(self.url, timeout=3.0) - try: - return rpc_proxy.search(terms, operator or 'and') - finally: - rpc_proxy('close')() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py deleted file mode 100644 index f9f0788..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py +++ /dev/null @@ -1,1303 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2023 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# - -import gzip -from io import BytesIO -import json -import logging -import os -import posixpath -import re -try: - import threading -except ImportError: # pragma: no cover - import dummy_threading as threading -import zlib - -from . import DistlibException -from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, - queue, quote, unescape, build_opener, - HTTPRedirectHandler as BaseRedirectHandler, text_type, - Request, HTTPError, URLError) -from .database import Distribution, DistributionPath, make_dist -from .metadata import Metadata, MetadataInvalidError -from .util import (cached_property, ensure_slash, split_filename, get_project_data, - parse_requirement, parse_name_and_version, ServerProxy, - normalize_name) -from .version import get_scheme, UnsupportedVersionError -from .wheel import Wheel, is_compatible - -logger = logging.getLogger(__name__) - -HASHER_HASH = re.compile(r'^(\w+)=([a-f0-9]+)') -CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) -HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') -DEFAULT_INDEX = 'https://pypi.org/pypi' - - -def get_all_distribution_names(url=None): - """ - Return all distribution names known by an index. - :param url: The URL of the index. - :return: A list of all known distribution names. - """ - if url is None: - url = DEFAULT_INDEX - client = ServerProxy(url, timeout=3.0) - try: - return client.list_packages() - finally: - client('close')() - - -class RedirectHandler(BaseRedirectHandler): - """ - A class to work around a bug in some Python 3.2.x releases. - """ - # There's a bug in the base version for some 3.2.x - # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header - # returns e.g. /abc, it bails because it says the scheme '' - # is bogus, when actually it should use the request's - # URL for the scheme. See Python issue #13696. - def http_error_302(self, req, fp, code, msg, headers): - # Some servers (incorrectly) return multiple Location headers - # (so probably same goes for URI). Use first header. - newurl = None - for key in ('location', 'uri'): - if key in headers: - newurl = headers[key] - break - if newurl is None: # pragma: no cover - return - urlparts = urlparse(newurl) - if urlparts.scheme == '': - newurl = urljoin(req.get_full_url(), newurl) - if hasattr(headers, 'replace_header'): - headers.replace_header(key, newurl) - else: - headers[key] = newurl - return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, - headers) - - http_error_301 = http_error_303 = http_error_307 = http_error_302 - - -class Locator(object): - """ - A base class for locators - things that locate distributions. - """ - source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') - binary_extensions = ('.egg', '.exe', '.whl') - excluded_extensions = ('.pdf',) - - # A list of tags indicating which wheels you want to match. The default - # value of None matches against the tags compatible with the running - # Python. If you want to match other values, set wheel_tags on a locator - # instance to a list of tuples (pyver, abi, arch) which you want to match. - wheel_tags = None - - downloadable_extensions = source_extensions + ('.whl',) - - def __init__(self, scheme='default'): - """ - Initialise an instance. - :param scheme: Because locators look for most recent versions, they - need to know the version scheme to use. This specifies - the current PEP-recommended scheme - use ``'legacy'`` - if you need to support existing distributions on PyPI. - """ - self._cache = {} - self.scheme = scheme - # Because of bugs in some of the handlers on some of the platforms, - # we use our own opener rather than just using urlopen. - self.opener = build_opener(RedirectHandler()) - # If get_project() is called from locate(), the matcher instance - # is set from the requirement passed to locate(). See issue #18 for - # why this can be useful to know. - self.matcher = None - self.errors = queue.Queue() - - def get_errors(self): - """ - Return any errors which have occurred. - """ - result = [] - while not self.errors.empty(): # pragma: no cover - try: - e = self.errors.get(False) - result.append(e) - except self.errors.Empty: - continue - self.errors.task_done() - return result - - def clear_errors(self): - """ - Clear any errors which may have been logged. - """ - # Just get the errors and throw them away - self.get_errors() - - def clear_cache(self): - self._cache.clear() - - def _get_scheme(self): - return self._scheme - - def _set_scheme(self, value): - self._scheme = value - - scheme = property(_get_scheme, _set_scheme) - - def _get_project(self, name): - """ - For a given project, get a dictionary mapping available versions to Distribution - instances. - - This should be implemented in subclasses. - - If called from a locate() request, self.matcher will be set to a - matcher for the requirement to satisfy, otherwise it will be None. - """ - raise NotImplementedError('Please implement in the subclass') - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Please implement in the subclass') - - def get_project(self, name): - """ - For a given project, get a dictionary mapping available versions to Distribution - instances. - - This calls _get_project to do all the work, and just implements a caching layer on top. - """ - if self._cache is None: # pragma: no cover - result = self._get_project(name) - elif name in self._cache: - result = self._cache[name] - else: - self.clear_errors() - result = self._get_project(name) - self._cache[name] = result - return result - - def score_url(self, url): - """ - Give an url a score which can be used to choose preferred URLs - for a given project release. - """ - t = urlparse(url) - basename = posixpath.basename(t.path) - compatible = True - is_wheel = basename.endswith('.whl') - is_downloadable = basename.endswith(self.downloadable_extensions) - if is_wheel: - compatible = is_compatible(Wheel(basename), self.wheel_tags) - return (t.scheme == 'https', 'pypi.org' in t.netloc, - is_downloadable, is_wheel, compatible, basename) - - def prefer_url(self, url1, url2): - """ - Choose one of two URLs where both are candidates for distribution - archives for the same version of a distribution (for example, - .tar.gz vs. zip). - - The current implementation favours https:// URLs over http://, archives - from PyPI over those from other locations, wheel compatibility (if a - wheel) and then the archive name. - """ - result = url2 - if url1: - s1 = self.score_url(url1) - s2 = self.score_url(url2) - if s1 > s2: - result = url1 - if result != url2: - logger.debug('Not replacing %r with %r', url1, url2) - else: - logger.debug('Replacing %r with %r', url1, url2) - return result - - def split_filename(self, filename, project_name): - """ - Attempt to split a filename in project name, version and Python version. - """ - return split_filename(filename, project_name) - - def convert_url_to_download_info(self, url, project_name): - """ - See if a URL is a candidate for a download URL for a project (the URL - has typically been scraped from an HTML page). - - If it is, a dictionary is returned with keys "name", "version", - "filename" and "url"; otherwise, None is returned. - """ - def same_project(name1, name2): - return normalize_name(name1) == normalize_name(name2) - - result = None - scheme, netloc, path, params, query, frag = urlparse(url) - if frag.lower().startswith('egg='): # pragma: no cover - logger.debug('%s: version hint in fragment: %r', - project_name, frag) - m = HASHER_HASH.match(frag) - if m: - algo, digest = m.groups() - else: - algo, digest = None, None - origpath = path - if path and path[-1] == '/': # pragma: no cover - path = path[:-1] - if path.endswith('.whl'): - try: - wheel = Wheel(path) - if not is_compatible(wheel, self.wheel_tags): - logger.debug('Wheel not compatible: %s', path) - else: - if project_name is None: - include = True - else: - include = same_project(wheel.name, project_name) - if include: - result = { - 'name': wheel.name, - 'version': wheel.version, - 'filename': wheel.filename, - 'url': urlunparse((scheme, netloc, origpath, - params, query, '')), - 'python-version': ', '.join( - ['.'.join(list(v[2:])) for v in wheel.pyver]), - } - except Exception: # pragma: no cover - logger.warning('invalid path for wheel: %s', path) - elif not path.endswith(self.downloadable_extensions): # pragma: no cover - logger.debug('Not downloadable: %s', path) - else: # downloadable extension - path = filename = posixpath.basename(path) - for ext in self.downloadable_extensions: - if path.endswith(ext): - path = path[:-len(ext)] - t = self.split_filename(path, project_name) - if not t: # pragma: no cover - logger.debug('No match for project/version: %s', path) - else: - name, version, pyver = t - if not project_name or same_project(project_name, name): - result = { - 'name': name, - 'version': version, - 'filename': filename, - 'url': urlunparse((scheme, netloc, origpath, - params, query, '')), - } - if pyver: # pragma: no cover - result['python-version'] = pyver - break - if result and algo: - result['%s_digest' % algo] = digest - return result - - def _get_digest(self, info): - """ - Get a digest from a dictionary by looking at a "digests" dictionary - or keys of the form 'algo_digest'. - - Returns a 2-tuple (algo, digest) if found, else None. Currently - looks only for SHA256, then MD5. - """ - result = None - if 'digests' in info: - digests = info['digests'] - for algo in ('sha256', 'md5'): - if algo in digests: - result = (algo, digests[algo]) - break - if not result: - for algo in ('sha256', 'md5'): - key = '%s_digest' % algo - if key in info: - result = (algo, info[key]) - break - return result - - def _update_version_data(self, result, info): - """ - Update a result dictionary (the final result from _get_project) with a - dictionary for a specific version, which typically holds information - gleaned from a filename or URL for an archive for the distribution. - """ - name = info.pop('name') - version = info.pop('version') - if version in result: - dist = result[version] - md = dist.metadata - else: - dist = make_dist(name, version, scheme=self.scheme) - md = dist.metadata - dist.digest = digest = self._get_digest(info) - url = info['url'] - result['digests'][url] = digest - if md.source_url != info['url']: - md.source_url = self.prefer_url(md.source_url, url) - result['urls'].setdefault(version, set()).add(url) - dist.locator = self - result[version] = dist - - def locate(self, requirement, prereleases=False): - """ - Find the most recent distribution which matches the given - requirement. - - :param requirement: A requirement of the form 'foo (1.0)' or perhaps - 'foo (>= 1.0, < 2.0, != 1.3)' - :param prereleases: If ``True``, allow pre-release versions - to be located. Otherwise, pre-release versions - are not returned. - :return: A :class:`Distribution` instance, or ``None`` if no such - distribution could be located. - """ - result = None - r = parse_requirement(requirement) - if r is None: # pragma: no cover - raise DistlibException('Not a valid requirement: %r' % requirement) - scheme = get_scheme(self.scheme) - self.matcher = matcher = scheme.matcher(r.requirement) - logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) - versions = self.get_project(r.name) - if len(versions) > 2: # urls and digests keys are present - # sometimes, versions are invalid - slist = [] - vcls = matcher.version_class - for k in versions: - if k in ('urls', 'digests'): - continue - try: - if not matcher.match(k): - pass # logger.debug('%s did not match %r', matcher, k) - else: - if prereleases or not vcls(k).is_prerelease: - slist.append(k) - except Exception: # pragma: no cover - logger.warning('error matching %s with %r', matcher, k) - pass # slist.append(k) - if len(slist) > 1: - slist = sorted(slist, key=scheme.key) - if slist: - logger.debug('sorted list: %s', slist) - version = slist[-1] - result = versions[version] - if result: - if r.extras: - result.extras = r.extras - result.download_urls = versions.get('urls', {}).get(version, set()) - d = {} - sd = versions.get('digests', {}) - for url in result.download_urls: - if url in sd: # pragma: no cover - d[url] = sd[url] - result.digests = d - self.matcher = None - return result - - -class PyPIRPCLocator(Locator): - """ - This locator uses XML-RPC to locate distributions. It therefore - cannot be used with simple mirrors (that only mirror file content). - """ - def __init__(self, url, **kwargs): - """ - Initialise an instance. - - :param url: The URL to use for XML-RPC. - :param kwargs: Passed to the superclass constructor. - """ - super(PyPIRPCLocator, self).__init__(**kwargs) - self.base_url = url - self.client = ServerProxy(url, timeout=3.0) - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - return set(self.client.list_packages()) - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - versions = self.client.package_releases(name, True) - for v in versions: - urls = self.client.release_urls(name, v) - data = self.client.release_data(name, v) - metadata = Metadata(scheme=self.scheme) - metadata.name = data['name'] - metadata.version = data['version'] - metadata.license = data.get('license') - metadata.keywords = data.get('keywords', []) - metadata.summary = data.get('summary') - dist = Distribution(metadata) - if urls: - info = urls[0] - metadata.source_url = info['url'] - dist.digest = self._get_digest(info) - dist.locator = self - result[v] = dist - for info in urls: - url = info['url'] - digest = self._get_digest(info) - result['urls'].setdefault(v, set()).add(url) - result['digests'][url] = digest - return result - - -class PyPIJSONLocator(Locator): - """ - This locator uses PyPI's JSON interface. It's very limited in functionality - and probably not worth using. - """ - def __init__(self, url, **kwargs): - super(PyPIJSONLocator, self).__init__(**kwargs) - self.base_url = ensure_slash(url) - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Not available from this locator') - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - url = urljoin(self.base_url, '%s/json' % quote(name)) - try: - resp = self.opener.open(url) - data = resp.read().decode() # for now - d = json.loads(data) - md = Metadata(scheme=self.scheme) - data = d['info'] - md.name = data['name'] - md.version = data['version'] - md.license = data.get('license') - md.keywords = data.get('keywords', []) - md.summary = data.get('summary') - dist = Distribution(md) - dist.locator = self - # urls = d['urls'] - result[md.version] = dist - for info in d['urls']: - url = info['url'] - dist.download_urls.add(url) - dist.digests[url] = self._get_digest(info) - result['urls'].setdefault(md.version, set()).add(url) - result['digests'][url] = self._get_digest(info) - # Now get other releases - for version, infos in d['releases'].items(): - if version == md.version: - continue # already done - omd = Metadata(scheme=self.scheme) - omd.name = md.name - omd.version = version - odist = Distribution(omd) - odist.locator = self - result[version] = odist - for info in infos: - url = info['url'] - odist.download_urls.add(url) - odist.digests[url] = self._get_digest(info) - result['urls'].setdefault(version, set()).add(url) - result['digests'][url] = self._get_digest(info) -# for info in urls: -# md.source_url = info['url'] -# dist.digest = self._get_digest(info) -# dist.locator = self -# for info in urls: -# url = info['url'] -# result['urls'].setdefault(md.version, set()).add(url) -# result['digests'][url] = self._get_digest(info) - except Exception as e: - self.errors.put(text_type(e)) - logger.exception('JSON fetch failed: %s', e) - return result - - -class Page(object): - """ - This class represents a scraped HTML page. - """ - # The following slightly hairy-looking regex just looks for the contents of - # an anchor link, which has an attribute "href" either immediately preceded - # or immediately followed by a "rel" attribute. The attribute values can be - # declared with double quotes, single quotes or no quotes - which leads to - # the length of the expression. - _href = re.compile(""" -(rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*))\\s+)? -href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) -(\\s+rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)))? -""", re.I | re.S | re.X) - _base = re.compile(r"""]+)""", re.I | re.S) - - def __init__(self, data, url): - """ - Initialise an instance with the Unicode page contents and the URL they - came from. - """ - self.data = data - self.base_url = self.url = url - m = self._base.search(self.data) - if m: - self.base_url = m.group(1) - - _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) - - @cached_property - def links(self): - """ - Return the URLs of all the links on a page together with information - about their "rel" attribute, for determining which ones to treat as - downloads and which ones to queue for further scraping. - """ - def clean(url): - "Tidy up an URL." - scheme, netloc, path, params, query, frag = urlparse(url) - return urlunparse((scheme, netloc, quote(path), - params, query, frag)) - - result = set() - for match in self._href.finditer(self.data): - d = match.groupdict('') - rel = (d['rel1'] or d['rel2'] or d['rel3'] or - d['rel4'] or d['rel5'] or d['rel6']) - url = d['url1'] or d['url2'] or d['url3'] - url = urljoin(self.base_url, url) - url = unescape(url) - url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) - result.add((url, rel)) - # We sort the result, hoping to bring the most recent versions - # to the front - result = sorted(result, key=lambda t: t[0], reverse=True) - return result - - -class SimpleScrapingLocator(Locator): - """ - A locator which scrapes HTML pages to locate downloads for a distribution. - This runs multiple threads to do the I/O; performance is at least as good - as pip's PackageFinder, which works in an analogous fashion. - """ - - # These are used to deal with various Content-Encoding schemes. - decoders = { - 'deflate': zlib.decompress, - 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(b)).read(), - 'none': lambda b: b, - } - - def __init__(self, url, timeout=None, num_workers=10, **kwargs): - """ - Initialise an instance. - :param url: The root URL to use for scraping. - :param timeout: The timeout, in seconds, to be applied to requests. - This defaults to ``None`` (no timeout specified). - :param num_workers: The number of worker threads you want to do I/O, - This defaults to 10. - :param kwargs: Passed to the superclass. - """ - super(SimpleScrapingLocator, self).__init__(**kwargs) - self.base_url = ensure_slash(url) - self.timeout = timeout - self._page_cache = {} - self._seen = set() - self._to_fetch = queue.Queue() - self._bad_hosts = set() - self.skip_externals = False - self.num_workers = num_workers - self._lock = threading.RLock() - # See issue #45: we need to be resilient when the locator is used - # in a thread, e.g. with concurrent.futures. We can't use self._lock - # as it is for coordinating our internal threads - the ones created - # in _prepare_threads. - self._gplock = threading.RLock() - self.platform_check = False # See issue #112 - - def _prepare_threads(self): - """ - Threads are created only when get_project is called, and terminate - before it returns. They are there primarily to parallelise I/O (i.e. - fetching web pages). - """ - self._threads = [] - for i in range(self.num_workers): - t = threading.Thread(target=self._fetch) - t.daemon = True - t.start() - self._threads.append(t) - - def _wait_threads(self): - """ - Tell all the threads to terminate (by sending a sentinel value) and - wait for them to do so. - """ - # Note that you need two loops, since you can't say which - # thread will get each sentinel - for t in self._threads: - self._to_fetch.put(None) # sentinel - for t in self._threads: - t.join() - self._threads = [] - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - with self._gplock: - self.result = result - self.project_name = name - url = urljoin(self.base_url, '%s/' % quote(name)) - self._seen.clear() - self._page_cache.clear() - self._prepare_threads() - try: - logger.debug('Queueing %s', url) - self._to_fetch.put(url) - self._to_fetch.join() - finally: - self._wait_threads() - del self.result - return result - - platform_dependent = re.compile(r'\b(linux_(i\d86|x86_64|arm\w+)|' - r'win(32|_amd64)|macosx_?\d+)\b', re.I) - - def _is_platform_dependent(self, url): - """ - Does an URL refer to a platform-specific download? - """ - return self.platform_dependent.search(url) - - def _process_download(self, url): - """ - See if an URL is a suitable download for a project. - - If it is, register information in the result dictionary (for - _get_project) about the specific version it's for. - - Note that the return value isn't actually used other than as a boolean - value. - """ - if self.platform_check and self._is_platform_dependent(url): - info = None - else: - info = self.convert_url_to_download_info(url, self.project_name) - logger.debug('process_download: %s -> %s', url, info) - if info: - with self._lock: # needed because self.result is shared - self._update_version_data(self.result, info) - return info - - def _should_queue(self, link, referrer, rel): - """ - Determine whether a link URL from a referring page and with a - particular "rel" attribute should be queued for scraping. - """ - scheme, netloc, path, _, _, _ = urlparse(link) - if path.endswith(self.source_extensions + self.binary_extensions + - self.excluded_extensions): - result = False - elif self.skip_externals and not link.startswith(self.base_url): - result = False - elif not referrer.startswith(self.base_url): - result = False - elif rel not in ('homepage', 'download'): - result = False - elif scheme not in ('http', 'https', 'ftp'): - result = False - elif self._is_platform_dependent(link): - result = False - else: - host = netloc.split(':', 1)[0] - if host.lower() == 'localhost': - result = False - else: - result = True - logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, - referrer, result) - return result - - def _fetch(self): - """ - Get a URL to fetch from the work queue, get the HTML page, examine its - links for download candidates and candidates for further scraping. - - This is a handy method to run in a thread. - """ - while True: - url = self._to_fetch.get() - try: - if url: - page = self.get_page(url) - if page is None: # e.g. after an error - continue - for link, rel in page.links: - if link not in self._seen: - try: - self._seen.add(link) - if (not self._process_download(link) and - self._should_queue(link, url, rel)): - logger.debug('Queueing %s from %s', link, url) - self._to_fetch.put(link) - except MetadataInvalidError: # e.g. invalid versions - pass - except Exception as e: # pragma: no cover - self.errors.put(text_type(e)) - finally: - # always do this, to avoid hangs :-) - self._to_fetch.task_done() - if not url: - # logger.debug('Sentinel seen, quitting.') - break - - def get_page(self, url): - """ - Get the HTML for an URL, possibly from an in-memory cache. - - XXX TODO Note: this cache is never actually cleared. It's assumed that - the data won't get stale over the lifetime of a locator instance (not - necessarily true for the default_locator). - """ - # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api - scheme, netloc, path, _, _, _ = urlparse(url) - if scheme == 'file' and os.path.isdir(url2pathname(path)): - url = urljoin(ensure_slash(url), 'index.html') - - if url in self._page_cache: - result = self._page_cache[url] - logger.debug('Returning %s from cache: %s', url, result) - else: - host = netloc.split(':', 1)[0] - result = None - if host in self._bad_hosts: - logger.debug('Skipping %s due to bad host %s', url, host) - else: - req = Request(url, headers={'Accept-encoding': 'identity'}) - try: - logger.debug('Fetching %s', url) - resp = self.opener.open(req, timeout=self.timeout) - logger.debug('Fetched %s', url) - headers = resp.info() - content_type = headers.get('Content-Type', '') - if HTML_CONTENT_TYPE.match(content_type): - final_url = resp.geturl() - data = resp.read() - encoding = headers.get('Content-Encoding') - if encoding: - decoder = self.decoders[encoding] # fail if not found - data = decoder(data) - encoding = 'utf-8' - m = CHARSET.search(content_type) - if m: - encoding = m.group(1) - try: - data = data.decode(encoding) - except UnicodeError: # pragma: no cover - data = data.decode('latin-1') # fallback - result = Page(data, final_url) - self._page_cache[final_url] = result - except HTTPError as e: - if e.code != 404: - logger.exception('Fetch failed: %s: %s', url, e) - except URLError as e: # pragma: no cover - logger.exception('Fetch failed: %s: %s', url, e) - with self._lock: - self._bad_hosts.add(host) - except Exception as e: # pragma: no cover - logger.exception('Fetch failed: %s: %s', url, e) - finally: - self._page_cache[url] = result # even if None (failure) - return result - - _distname_re = re.compile(']*>([^<]+)<') - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - page = self.get_page(self.base_url) - if not page: - raise DistlibException('Unable to get %s' % self.base_url) - for match in self._distname_re.finditer(page.data): - result.add(match.group(1)) - return result - - -class DirectoryLocator(Locator): - """ - This class locates distributions in a directory tree. - """ - - def __init__(self, path, **kwargs): - """ - Initialise an instance. - :param path: The root of the directory tree to search. - :param kwargs: Passed to the superclass constructor, - except for: - * recursive - if True (the default), subdirectories are - recursed into. If False, only the top-level directory - is searched, - """ - self.recursive = kwargs.pop('recursive', True) - super(DirectoryLocator, self).__init__(**kwargs) - path = os.path.abspath(path) - if not os.path.isdir(path): # pragma: no cover - raise DistlibException('Not a directory: %r' % path) - self.base_dir = path - - def should_include(self, filename, parent): - """ - Should a filename be considered as a candidate for a distribution - archive? As well as the filename, the directory which contains it - is provided, though not used by the current implementation. - """ - return filename.endswith(self.downloadable_extensions) - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - for root, dirs, files in os.walk(self.base_dir): - for fn in files: - if self.should_include(fn, root): - fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(fn)), - '', '', '')) - info = self.convert_url_to_download_info(url, name) - if info: - self._update_version_data(result, info) - if not self.recursive: - break - return result - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - for root, dirs, files in os.walk(self.base_dir): - for fn in files: - if self.should_include(fn, root): - fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(fn)), - '', '', '')) - info = self.convert_url_to_download_info(url, None) - if info: - result.add(info['name']) - if not self.recursive: - break - return result - - -class JSONLocator(Locator): - """ - This locator uses special extended metadata (not available on PyPI) and is - the basis of performant dependency resolution in distlib. Other locators - require archive downloads before dependencies can be determined! As you - might imagine, that can be slow. - """ - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Not available from this locator') - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - data = get_project_data(name) - if data: - for info in data.get('files', []): - if info['ptype'] != 'sdist' or info['pyversion'] != 'source': - continue - # We don't store summary in project metadata as it makes - # the data bigger for no benefit during dependency - # resolution - dist = make_dist(data['name'], info['version'], - summary=data.get('summary', - 'Placeholder for summary'), - scheme=self.scheme) - md = dist.metadata - md.source_url = info['url'] - # TODO SHA256 digest - if 'digest' in info and info['digest']: - dist.digest = ('md5', info['digest']) - md.dependencies = info.get('requirements', {}) - dist.exports = info.get('exports', {}) - result[dist.version] = dist - result['urls'].setdefault(dist.version, set()).add(info['url']) - return result - - -class DistPathLocator(Locator): - """ - This locator finds installed distributions in a path. It can be useful for - adding to an :class:`AggregatingLocator`. - """ - def __init__(self, distpath, **kwargs): - """ - Initialise an instance. - - :param distpath: A :class:`DistributionPath` instance to search. - """ - super(DistPathLocator, self).__init__(**kwargs) - assert isinstance(distpath, DistributionPath) - self.distpath = distpath - - def _get_project(self, name): - dist = self.distpath.get_distribution(name) - if dist is None: - result = {'urls': {}, 'digests': {}} - else: - result = { - dist.version: dist, - 'urls': {dist.version: set([dist.source_url])}, - 'digests': {dist.version: set([None])} - } - return result - - -class AggregatingLocator(Locator): - """ - This class allows you to chain and/or merge a list of locators. - """ - def __init__(self, *locators, **kwargs): - """ - Initialise an instance. - - :param locators: The list of locators to search. - :param kwargs: Passed to the superclass constructor, - except for: - * merge - if False (the default), the first successful - search from any of the locators is returned. If True, - the results from all locators are merged (this can be - slow). - """ - self.merge = kwargs.pop('merge', False) - self.locators = locators - super(AggregatingLocator, self).__init__(**kwargs) - - def clear_cache(self): - super(AggregatingLocator, self).clear_cache() - for locator in self.locators: - locator.clear_cache() - - def _set_scheme(self, value): - self._scheme = value - for locator in self.locators: - locator.scheme = value - - scheme = property(Locator.scheme.fget, _set_scheme) - - def _get_project(self, name): - result = {} - for locator in self.locators: - d = locator.get_project(name) - if d: - if self.merge: - files = result.get('urls', {}) - digests = result.get('digests', {}) - # next line could overwrite result['urls'], result['digests'] - result.update(d) - df = result.get('urls') - if files and df: - for k, v in files.items(): - if k in df: - df[k] |= v - else: - df[k] = v - dd = result.get('digests') - if digests and dd: - dd.update(digests) - else: - # See issue #18. If any dists are found and we're looking - # for specific constraints, we only return something if - # a match is found. For example, if a DirectoryLocator - # returns just foo (1.0) while we're looking for - # foo (>= 2.0), we'll pretend there was nothing there so - # that subsequent locators can be queried. Otherwise we - # would just return foo (1.0) which would then lead to a - # failure to find foo (>= 2.0), because other locators - # weren't searched. Note that this only matters when - # merge=False. - if self.matcher is None: - found = True - else: - found = False - for k in d: - if self.matcher.match(k): - found = True - break - if found: - result = d - break - return result - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - for locator in self.locators: - try: - result |= locator.get_distribution_names() - except NotImplementedError: - pass - return result - - -# We use a legacy scheme simply because most of the dists on PyPI use legacy -# versions which don't conform to PEP 440. -default_locator = AggregatingLocator( - # JSONLocator(), # don't use as PEP 426 is withdrawn - SimpleScrapingLocator('https://pypi.org/simple/', - timeout=3.0), - scheme='legacy') - -locate = default_locator.locate - - -class DependencyFinder(object): - """ - Locate dependencies for distributions. - """ - - def __init__(self, locator=None): - """ - Initialise an instance, using the specified locator - to locate distributions. - """ - self.locator = locator or default_locator - self.scheme = get_scheme(self.locator.scheme) - - def add_distribution(self, dist): - """ - Add a distribution to the finder. This will update internal information - about who provides what. - :param dist: The distribution to add. - """ - logger.debug('adding distribution %s', dist) - name = dist.key - self.dists_by_name[name] = dist - self.dists[(name, dist.version)] = dist - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Add to provided: %s, %s, %s', name, version, dist) - self.provided.setdefault(name, set()).add((version, dist)) - - def remove_distribution(self, dist): - """ - Remove a distribution from the finder. This will update internal - information about who provides what. - :param dist: The distribution to remove. - """ - logger.debug('removing distribution %s', dist) - name = dist.key - del self.dists_by_name[name] - del self.dists[(name, dist.version)] - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Remove from provided: %s, %s, %s', name, version, dist) - s = self.provided[name] - s.remove((version, dist)) - if not s: - del self.provided[name] - - def get_matcher(self, reqt): - """ - Get a version matcher for a requirement. - :param reqt: The requirement - :type reqt: str - :return: A version matcher (an instance of - :class:`distlib.version.Matcher`). - """ - try: - matcher = self.scheme.matcher(reqt) - except UnsupportedVersionError: # pragma: no cover - # XXX compat-mode if cannot read the version - name = reqt.split()[0] - matcher = self.scheme.matcher(name) - return matcher - - def find_providers(self, reqt): - """ - Find the distributions which can fulfill a requirement. - - :param reqt: The requirement. - :type reqt: str - :return: A set of distribution which can fulfill the requirement. - """ - matcher = self.get_matcher(reqt) - name = matcher.key # case-insensitive - result = set() - provided = self.provided - if name in provided: - for version, provider in provided[name]: - try: - match = matcher.match(version) - except UnsupportedVersionError: - match = False - - if match: - result.add(provider) - break - return result - - def try_to_replace(self, provider, other, problems): - """ - Attempt to replace one provider with another. This is typically used - when resolving dependencies from multiple sources, e.g. A requires - (B >= 1.0) while C requires (B >= 1.1). - - For successful replacement, ``provider`` must meet all the requirements - which ``other`` fulfills. - - :param provider: The provider we are trying to replace with. - :param other: The provider we're trying to replace. - :param problems: If False is returned, this will contain what - problems prevented replacement. This is currently - a tuple of the literal string 'cantreplace', - ``provider``, ``other`` and the set of requirements - that ``provider`` couldn't fulfill. - :return: True if we can replace ``other`` with ``provider``, else - False. - """ - rlist = self.reqts[other] - unmatched = set() - for s in rlist: - matcher = self.get_matcher(s) - if not matcher.match(provider.version): - unmatched.add(s) - if unmatched: - # can't replace other with provider - problems.add(('cantreplace', provider, other, - frozenset(unmatched))) - result = False - else: - # can replace other with provider - self.remove_distribution(other) - del self.reqts[other] - for s in rlist: - self.reqts.setdefault(provider, set()).add(s) - self.add_distribution(provider) - result = True - return result - - def find(self, requirement, meta_extras=None, prereleases=False): - """ - Find a distribution and all distributions it depends on. - - :param requirement: The requirement specifying the distribution to - find, or a Distribution instance. - :param meta_extras: A list of meta extras such as :test:, :build: and - so on. - :param prereleases: If ``True``, allow pre-release versions to be - returned - otherwise, don't return prereleases - unless they're all that's available. - - Return a set of :class:`Distribution` instances and a set of - problems. - - The distributions returned should be such that they have the - :attr:`required` attribute set to ``True`` if they were - from the ``requirement`` passed to ``find()``, and they have the - :attr:`build_time_dependency` attribute set to ``True`` unless they - are post-installation dependencies of the ``requirement``. - - The problems should be a tuple consisting of the string - ``'unsatisfied'`` and the requirement which couldn't be satisfied - by any distribution known to the locator. - """ - - self.provided = {} - self.dists = {} - self.dists_by_name = {} - self.reqts = {} - - meta_extras = set(meta_extras or []) - if ':*:' in meta_extras: - meta_extras.remove(':*:') - # :meta: and :run: are implicitly included - meta_extras |= set([':test:', ':build:', ':dev:']) - - if isinstance(requirement, Distribution): - dist = odist = requirement - logger.debug('passed %s as requirement', odist) - else: - dist = odist = self.locator.locate(requirement, - prereleases=prereleases) - if dist is None: - raise DistlibException('Unable to locate %r' % requirement) - logger.debug('located %s', odist) - dist.requested = True - problems = set() - todo = set([dist]) - install_dists = set([odist]) - while todo: - dist = todo.pop() - name = dist.key # case-insensitive - if name not in self.dists_by_name: - self.add_distribution(dist) - else: - # import pdb; pdb.set_trace() - other = self.dists_by_name[name] - if other != dist: - self.try_to_replace(dist, other, problems) - - ireqts = dist.run_requires | dist.meta_requires - sreqts = dist.build_requires - ereqts = set() - if meta_extras and dist in install_dists: - for key in ('test', 'build', 'dev'): - e = ':%s:' % key - if e in meta_extras: - ereqts |= getattr(dist, '%s_requires' % key) - all_reqts = ireqts | sreqts | ereqts - for r in all_reqts: - providers = self.find_providers(r) - if not providers: - logger.debug('No providers found for %r', r) - provider = self.locator.locate(r, prereleases=prereleases) - # If no provider is found and we didn't consider - # prereleases, consider them now. - if provider is None and not prereleases: - provider = self.locator.locate(r, prereleases=True) - if provider is None: - logger.debug('Cannot satisfy %r', r) - problems.add(('unsatisfied', r)) - else: - n, v = provider.key, provider.version - if (n, v) not in self.dists: - todo.add(provider) - providers.add(provider) - if r in ireqts and dist in install_dists: - install_dists.add(provider) - logger.debug('Adding %s to install_dists', - provider.name_and_version) - for p in providers: - name = p.key - if name not in self.dists_by_name: - self.reqts.setdefault(p, set()).add(r) - else: - other = self.dists_by_name[name] - if other != p: - # see if other can be replaced by p - self.try_to_replace(p, other, problems) - - dists = set(self.dists.values()) - for dist in dists: - dist.build_time_dependency = dist not in install_dists - if dist.build_time_dependency: - logger.debug('%s is a build-time dependency only.', - dist.name_and_version) - logger.debug('find done for %s', odist) - return dists, problems diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py deleted file mode 100644 index 420dcf1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py +++ /dev/null @@ -1,384 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2023 Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -""" -Class representing the list of files in a distribution. - -Equivalent to distutils.filelist, but fixes some problems. -""" -import fnmatch -import logging -import os -import re -import sys - -from . import DistlibException -from .compat import fsdecode -from .util import convert_path - - -__all__ = ['Manifest'] - -logger = logging.getLogger(__name__) - -# a \ followed by some spaces + EOL -_COLLAPSE_PATTERN = re.compile('\\\\w*\n', re.M) -_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) - -# -# Due to the different results returned by fnmatch.translate, we need -# to do slightly different processing for Python 2.7 and 3.2 ... this needed -# to be brought in for Python 3.6 onwards. -# -_PYTHON_VERSION = sys.version_info[:2] - - -class Manifest(object): - """ - A list of files built by exploring the filesystem and filtered by applying various - patterns to what we find there. - """ - - def __init__(self, base=None): - """ - Initialise an instance. - - :param base: The base directory to explore under. - """ - self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) - self.prefix = self.base + os.sep - self.allfiles = None - self.files = set() - - # - # Public API - # - - def findall(self): - """Find all files under the base and set ``allfiles`` to the absolute - pathnames of files found. - """ - from stat import S_ISREG, S_ISDIR, S_ISLNK - - self.allfiles = allfiles = [] - root = self.base - stack = [root] - pop = stack.pop - push = stack.append - - while stack: - root = pop() - names = os.listdir(root) - - for name in names: - fullname = os.path.join(root, name) - - # Avoid excess stat calls -- just one will do, thank you! - stat = os.stat(fullname) - mode = stat.st_mode - if S_ISREG(mode): - allfiles.append(fsdecode(fullname)) - elif S_ISDIR(mode) and not S_ISLNK(mode): - push(fullname) - - def add(self, item): - """ - Add a file to the manifest. - - :param item: The pathname to add. This can be relative to the base. - """ - if not item.startswith(self.prefix): - item = os.path.join(self.base, item) - self.files.add(os.path.normpath(item)) - - def add_many(self, items): - """ - Add a list of files to the manifest. - - :param items: The pathnames to add. These can be relative to the base. - """ - for item in items: - self.add(item) - - def sorted(self, wantdirs=False): - """ - Return sorted files in directory order - """ - - def add_dir(dirs, d): - dirs.add(d) - logger.debug('add_dir added %s', d) - if d != self.base: - parent, _ = os.path.split(d) - assert parent not in ('', '/') - add_dir(dirs, parent) - - result = set(self.files) # make a copy! - if wantdirs: - dirs = set() - for f in result: - add_dir(dirs, os.path.dirname(f)) - result |= dirs - return [os.path.join(*path_tuple) for path_tuple in - sorted(os.path.split(path) for path in result)] - - def clear(self): - """Clear all collected files.""" - self.files = set() - self.allfiles = [] - - def process_directive(self, directive): - """ - Process a directive which either adds some files from ``allfiles`` to - ``files``, or removes some files from ``files``. - - :param directive: The directive to process. This should be in a format - compatible with distutils ``MANIFEST.in`` files: - - http://docs.python.org/distutils/sourcedist.html#commands - """ - # Parse the line: split it up, make sure the right number of words - # is there, and return the relevant words. 'action' is always - # defined: it's the first word of the line. Which of the other - # three are defined depends on the action; it'll be either - # patterns, (dir and patterns), or (dirpattern). - action, patterns, thedir, dirpattern = self._parse_directive(directive) - - # OK, now we know that the action is valid and we have the - # right number of words on the line for that action -- so we - # can proceed with minimal error-checking. - if action == 'include': - for pattern in patterns: - if not self._include_pattern(pattern, anchor=True): - logger.warning('no files found matching %r', pattern) - - elif action == 'exclude': - for pattern in patterns: - self._exclude_pattern(pattern, anchor=True) - - elif action == 'global-include': - for pattern in patterns: - if not self._include_pattern(pattern, anchor=False): - logger.warning('no files found matching %r ' - 'anywhere in distribution', pattern) - - elif action == 'global-exclude': - for pattern in patterns: - self._exclude_pattern(pattern, anchor=False) - - elif action == 'recursive-include': - for pattern in patterns: - if not self._include_pattern(pattern, prefix=thedir): - logger.warning('no files found matching %r ' - 'under directory %r', pattern, thedir) - - elif action == 'recursive-exclude': - for pattern in patterns: - self._exclude_pattern(pattern, prefix=thedir) - - elif action == 'graft': - if not self._include_pattern(None, prefix=dirpattern): - logger.warning('no directories found matching %r', - dirpattern) - - elif action == 'prune': - if not self._exclude_pattern(None, prefix=dirpattern): - logger.warning('no previously-included directories found ' - 'matching %r', dirpattern) - else: # pragma: no cover - # This should never happen, as it should be caught in - # _parse_template_line - raise DistlibException( - 'invalid action %r' % action) - - # - # Private API - # - - def _parse_directive(self, directive): - """ - Validate a directive. - :param directive: The directive to validate. - :return: A tuple of action, patterns, thedir, dir_patterns - """ - words = directive.split() - if len(words) == 1 and words[0] not in ('include', 'exclude', - 'global-include', - 'global-exclude', - 'recursive-include', - 'recursive-exclude', - 'graft', 'prune'): - # no action given, let's use the default 'include' - words.insert(0, 'include') - - action = words[0] - patterns = thedir = dir_pattern = None - - if action in ('include', 'exclude', - 'global-include', 'global-exclude'): - if len(words) < 2: - raise DistlibException( - '%r expects ...' % action) - - patterns = [convert_path(word) for word in words[1:]] - - elif action in ('recursive-include', 'recursive-exclude'): - if len(words) < 3: - raise DistlibException( - '%r expects

    ...' % action) - - thedir = convert_path(words[1]) - patterns = [convert_path(word) for word in words[2:]] - - elif action in ('graft', 'prune'): - if len(words) != 2: - raise DistlibException( - '%r expects a single ' % action) - - dir_pattern = convert_path(words[1]) - - else: - raise DistlibException('unknown action %r' % action) - - return action, patterns, thedir, dir_pattern - - def _include_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Select strings (presumably filenames) from 'self.files' that - match 'pattern', a Unix-style wildcard (glob) pattern. - - Patterns are not quite the same as implemented by the 'fnmatch' - module: '*' and '?' match non-special characters, where "special" - is platform-dependent: slash on Unix; colon, slash, and backslash on - DOS/Windows; and colon on Mac OS. - - If 'anchor' is true (the default), then the pattern match is more - stringent: "*.py" will match "foo.py" but not "foo/bar.py". If - 'anchor' is false, both of these will match. - - If 'prefix' is supplied, then only filenames starting with 'prefix' - (itself a pattern) and ending with 'pattern', with anything in between - them, will match. 'anchor' is ignored in this case. - - If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and - 'pattern' is assumed to be either a string containing a regex or a - regex object -- no translation is done, the regex is just compiled - and used as-is. - - Selected strings will be added to self.files. - - Return True if files are found. - """ - # XXX docstring lying about what the special chars are? - found = False - pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) - - # delayed loading of allfiles list - if self.allfiles is None: - self.findall() - - for name in self.allfiles: - if pattern_re.search(name): - self.files.add(name) - found = True - return found - - def _exclude_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Remove strings (presumably filenames) from 'files' that match - 'pattern'. - - Other parameters are the same as for 'include_pattern()', above. - The list 'self.files' is modified in place. Return True if files are - found. - - This API is public to allow e.g. exclusion of SCM subdirs, e.g. when - packaging source distributions - """ - found = False - pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) - for f in list(self.files): - if pattern_re.search(f): - self.files.remove(f) - found = True - return found - - def _translate_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Translate a shell-like wildcard pattern to a compiled regular - expression. - - Return the compiled regex. If 'is_regex' true, - then 'pattern' is directly compiled to a regex (if it's a string) - or just returned as-is (assumes it's a regex object). - """ - if is_regex: - if isinstance(pattern, str): - return re.compile(pattern) - else: - return pattern - - if _PYTHON_VERSION > (3, 2): - # ditch start and end characters - start, _, end = self._glob_to_re('_').partition('_') - - if pattern: - pattern_re = self._glob_to_re(pattern) - if _PYTHON_VERSION > (3, 2): - assert pattern_re.startswith(start) and pattern_re.endswith(end) - else: - pattern_re = '' - - base = re.escape(os.path.join(self.base, '')) - if prefix is not None: - # ditch end of pattern character - if _PYTHON_VERSION <= (3, 2): - empty_pattern = self._glob_to_re('') - prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] - else: - prefix_re = self._glob_to_re(prefix) - assert prefix_re.startswith(start) and prefix_re.endswith(end) - prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] - sep = os.sep - if os.sep == '\\': - sep = r'\\' - if _PYTHON_VERSION <= (3, 2): - pattern_re = '^' + base + sep.join((prefix_re, - '.*' + pattern_re)) - else: - pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] - pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, - pattern_re, end) - else: # no prefix -- respect anchor flag - if anchor: - if _PYTHON_VERSION <= (3, 2): - pattern_re = '^' + base + pattern_re - else: - pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) - - return re.compile(pattern_re) - - def _glob_to_re(self, pattern): - """Translate a shell-like glob pattern to a regular expression. - - Return a string containing the regex. Differs from - 'fnmatch.translate()' in that '*' does not match "special characters" - (which are platform-specific). - """ - pattern_re = fnmatch.translate(pattern) - - # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which - # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, - # and by extension they shouldn't match such "special characters" under - # any OS. So change all non-escaped dots in the RE to match any - # character except the special characters (currently: just os.sep). - sep = os.sep - if os.sep == '\\': - # we're using a regex to manipulate a regex, so we need - # to escape the backslash twice - sep = r'\\\\' - escaped = r'\1[^%s]' % sep - pattern_re = re.sub(r'((? y, - '!=': lambda x, y: x != y, - '<': lambda x, y: x < y, - '<=': lambda x, y: x == y or x < y, - '>': lambda x, y: x > y, - '>=': lambda x, y: x == y or x > y, - 'and': lambda x, y: x and y, - 'or': lambda x, y: x or y, - 'in': lambda x, y: x in y, - 'not in': lambda x, y: x not in y, - } - - def evaluate(self, expr, context): - """ - Evaluate a marker expression returned by the :func:`parse_requirement` - function in the specified context. - """ - if isinstance(expr, string_types): - if expr[0] in '\'"': - result = expr[1:-1] - else: - if expr not in context: - raise SyntaxError('unknown variable: %s' % expr) - result = context[expr] - else: - assert isinstance(expr, dict) - op = expr['op'] - if op not in self.operations: - raise NotImplementedError('op not implemented: %s' % op) - elhs = expr['lhs'] - erhs = expr['rhs'] - if _is_literal(expr['lhs']) and _is_literal(expr['rhs']): - raise SyntaxError('invalid comparison: %s %s %s' % - (elhs, op, erhs)) - - lhs = self.evaluate(elhs, context) - rhs = self.evaluate(erhs, context) - if ((_is_version_marker(elhs) or _is_version_marker(erhs)) - and op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): - lhs = LV(lhs) - rhs = LV(rhs) - elif _is_version_marker(elhs) and op in ('in', 'not in'): - lhs = LV(lhs) - rhs = _get_versions(rhs) - result = self.operations[op](lhs, rhs) - return result - - -_DIGITS = re.compile(r'\d+\.\d+') - - -def default_context(): - - def format_full_version(info): - version = '%s.%s.%s' % (info.major, info.minor, info.micro) - kind = info.releaselevel - if kind != 'final': - version += kind[0] + str(info.serial) - return version - - if hasattr(sys, 'implementation'): - implementation_version = format_full_version( - sys.implementation.version) - implementation_name = sys.implementation.name - else: - implementation_version = '0' - implementation_name = '' - - ppv = platform.python_version() - m = _DIGITS.match(ppv) - pv = m.group(0) - result = { - 'implementation_name': implementation_name, - 'implementation_version': implementation_version, - 'os_name': os.name, - 'platform_machine': platform.machine(), - 'platform_python_implementation': platform.python_implementation(), - 'platform_release': platform.release(), - 'platform_system': platform.system(), - 'platform_version': platform.version(), - 'platform_in_venv': str(in_venv()), - 'python_full_version': ppv, - 'python_version': pv, - 'sys_platform': sys.platform, - } - return result - - -DEFAULT_CONTEXT = default_context() -del default_context - -evaluator = Evaluator() - - -def interpret(marker, execution_context=None): - """ - Interpret a marker and return a result depending on environment. - - :param marker: The marker to interpret. - :type marker: str - :param execution_context: The context used for name lookup. - :type execution_context: mapping - """ - try: - expr, rest = parse_marker(marker) - except Exception as e: - raise SyntaxError('Unable to interpret marker syntax: %s: %s' % - (marker, e)) - if rest and rest[0] != '#': - raise SyntaxError('unexpected trailing data in marker: %s: %s' % - (marker, rest)) - context = dict(DEFAULT_CONTEXT) - if execution_context: - context.update(execution_context) - return evaluator.evaluate(expr, context) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py deleted file mode 100644 index 7189aee..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py +++ /dev/null @@ -1,1068 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -"""Implementation of the Metadata for Python packages PEPs. - -Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and 2.2). -""" -from __future__ import unicode_literals - -import codecs -from email import message_from_file -import json -import logging -import re - - -from . import DistlibException, __version__ -from .compat import StringIO, string_types, text_type -from .markers import interpret -from .util import extract_by_key, get_extras -from .version import get_scheme, PEP440_VERSION_RE - -logger = logging.getLogger(__name__) - - -class MetadataMissingError(DistlibException): - """A required metadata is missing""" - - -class MetadataConflictError(DistlibException): - """Attempt to read or write metadata fields that are conflictual.""" - - -class MetadataUnrecognizedVersionError(DistlibException): - """Unknown metadata version number.""" - - -class MetadataInvalidError(DistlibException): - """A metadata value is invalid""" - -# public API of this module -__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] - -# Encoding used for the PKG-INFO files -PKG_INFO_ENCODING = 'utf-8' - -# preferred version. Hopefully will be changed -# to 1.2 once PEP 345 is supported everywhere -PKG_INFO_PREFERRED_VERSION = '1.1' - -_LINE_PREFIX_1_2 = re.compile('\n \\|') -_LINE_PREFIX_PRE_1_2 = re.compile('\n ') -_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'License') - -_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'License', 'Classifier', 'Download-URL', 'Obsoletes', - 'Provides', 'Requires') - -_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', - 'Download-URL') - -_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'Maintainer', 'Maintainer-email', 'License', - 'Classifier', 'Download-URL', 'Obsoletes-Dist', - 'Project-URL', 'Provides-Dist', 'Requires-Dist', - 'Requires-Python', 'Requires-External') - -_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', - 'Obsoletes-Dist', 'Requires-External', 'Maintainer', - 'Maintainer-email', 'Project-URL') - -_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'Maintainer', 'Maintainer-email', 'License', - 'Classifier', 'Download-URL', 'Obsoletes-Dist', - 'Project-URL', 'Provides-Dist', 'Requires-Dist', - 'Requires-Python', 'Requires-External', 'Private-Version', - 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', - 'Provides-Extra') - -_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', - 'Setup-Requires-Dist', 'Extension') - -# See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in -# the metadata. Include them in the tuple literal below to allow them -# (for now). -# Ditto for Obsoletes - see issue #140. -_566_FIELDS = _426_FIELDS + ('Description-Content-Type', - 'Requires', 'Provides', 'Obsoletes') - -_566_MARKERS = ('Description-Content-Type',) - -_643_MARKERS = ('Dynamic', 'License-File') - -_643_FIELDS = _566_FIELDS + _643_MARKERS - -_ALL_FIELDS = set() -_ALL_FIELDS.update(_241_FIELDS) -_ALL_FIELDS.update(_314_FIELDS) -_ALL_FIELDS.update(_345_FIELDS) -_ALL_FIELDS.update(_426_FIELDS) -_ALL_FIELDS.update(_566_FIELDS) -_ALL_FIELDS.update(_643_FIELDS) - -EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') - - -def _version2fieldlist(version): - if version == '1.0': - return _241_FIELDS - elif version == '1.1': - return _314_FIELDS - elif version == '1.2': - return _345_FIELDS - elif version in ('1.3', '2.1'): - # avoid adding field names if already there - return _345_FIELDS + tuple(f for f in _566_FIELDS if f not in _345_FIELDS) - elif version == '2.0': - raise ValueError('Metadata 2.0 is withdrawn and not supported') - # return _426_FIELDS - elif version == '2.2': - return _643_FIELDS - raise MetadataUnrecognizedVersionError(version) - - -def _best_version(fields): - """Detect the best version depending on the fields used.""" - def _has_marker(keys, markers): - return any(marker in keys for marker in markers) - - keys = [key for key, value in fields.items() if value not in ([], 'UNKNOWN', None)] - possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.1', '2.2'] # 2.0 removed - - # first let's try to see if a field is not part of one of the version - for key in keys: - if key not in _241_FIELDS and '1.0' in possible_versions: - possible_versions.remove('1.0') - logger.debug('Removed 1.0 due to %s', key) - if key not in _314_FIELDS and '1.1' in possible_versions: - possible_versions.remove('1.1') - logger.debug('Removed 1.1 due to %s', key) - if key not in _345_FIELDS and '1.2' in possible_versions: - possible_versions.remove('1.2') - logger.debug('Removed 1.2 due to %s', key) - if key not in _566_FIELDS and '1.3' in possible_versions: - possible_versions.remove('1.3') - logger.debug('Removed 1.3 due to %s', key) - if key not in _566_FIELDS and '2.1' in possible_versions: - if key != 'Description': # In 2.1, description allowed after headers - possible_versions.remove('2.1') - logger.debug('Removed 2.1 due to %s', key) - if key not in _643_FIELDS and '2.2' in possible_versions: - possible_versions.remove('2.2') - logger.debug('Removed 2.2 due to %s', key) - # if key not in _426_FIELDS and '2.0' in possible_versions: - # possible_versions.remove('2.0') - # logger.debug('Removed 2.0 due to %s', key) - - # possible_version contains qualified versions - if len(possible_versions) == 1: - return possible_versions[0] # found ! - elif len(possible_versions) == 0: - logger.debug('Out of options - unknown metadata set: %s', fields) - raise MetadataConflictError('Unknown metadata set') - - # let's see if one unique marker is found - is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) - is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) - is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS) - # is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) - is_2_2 = '2.2' in possible_versions and _has_marker(keys, _643_MARKERS) - if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_2) > 1: - raise MetadataConflictError('You used incompatible 1.1/1.2/2.1/2.2 fields') - - # we have the choice, 1.0, or 1.2, 2.1 or 2.2 - # - 1.0 has a broken Summary field but works with all tools - # - 1.1 is to avoid - # - 1.2 fixes Summary but has little adoption - # - 2.1 adds more features - # - 2.2 is the latest - if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_2: - # we couldn't find any specific marker - if PKG_INFO_PREFERRED_VERSION in possible_versions: - return PKG_INFO_PREFERRED_VERSION - if is_1_1: - return '1.1' - if is_1_2: - return '1.2' - if is_2_1: - return '2.1' - # if is_2_2: - # return '2.2' - - return '2.2' - -# This follows the rules about transforming keys as described in -# https://www.python.org/dev/peps/pep-0566/#id17 -_ATTR2FIELD = { - name.lower().replace("-", "_"): name for name in _ALL_FIELDS -} -_FIELD2ATTR = {field: attr for attr, field in _ATTR2FIELD.items()} - -_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') -_VERSIONS_FIELDS = ('Requires-Python',) -_VERSION_FIELDS = ('Version',) -_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', - 'Requires', 'Provides', 'Obsoletes-Dist', - 'Provides-Dist', 'Requires-Dist', 'Requires-External', - 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', - 'Provides-Extra', 'Extension', 'License-File') -_LISTTUPLEFIELDS = ('Project-URL',) - -_ELEMENTSFIELD = ('Keywords',) - -_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') - -_MISSING = object() - -_FILESAFE = re.compile('[^A-Za-z0-9.]+') - - -def _get_name_and_version(name, version, for_filename=False): - """Return the distribution name with version. - - If for_filename is true, return a filename-escaped form.""" - if for_filename: - # For both name and version any runs of non-alphanumeric or '.' - # characters are replaced with a single '-'. Additionally any - # spaces in the version string become '.' - name = _FILESAFE.sub('-', name) - version = _FILESAFE.sub('-', version.replace(' ', '.')) - return '%s-%s' % (name, version) - - -class LegacyMetadata(object): - """The legacy metadata of a release. - - Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can - instantiate the class with one of these arguments (or none): - - *path*, the path to a metadata file - - *fileobj* give a file-like object with metadata as content - - *mapping* is a dict-like object - - *scheme* is a version scheme name - """ - # TODO document the mapping API and UNKNOWN default key - - def __init__(self, path=None, fileobj=None, mapping=None, - scheme='default'): - if [path, fileobj, mapping].count(None) < 2: - raise TypeError('path, fileobj and mapping are exclusive') - self._fields = {} - self.requires_files = [] - self._dependencies = None - self.scheme = scheme - if path is not None: - self.read(path) - elif fileobj is not None: - self.read_file(fileobj) - elif mapping is not None: - self.update(mapping) - self.set_metadata_version() - - def set_metadata_version(self): - self._fields['Metadata-Version'] = _best_version(self._fields) - - def _write_field(self, fileobj, name, value): - fileobj.write('%s: %s\n' % (name, value)) - - def __getitem__(self, name): - return self.get(name) - - def __setitem__(self, name, value): - return self.set(name, value) - - def __delitem__(self, name): - field_name = self._convert_name(name) - try: - del self._fields[field_name] - except KeyError: - raise KeyError(name) - - def __contains__(self, name): - return (name in self._fields or - self._convert_name(name) in self._fields) - - def _convert_name(self, name): - if name in _ALL_FIELDS: - return name - name = name.replace('-', '_').lower() - return _ATTR2FIELD.get(name, name) - - def _default_value(self, name): - if name in _LISTFIELDS or name in _ELEMENTSFIELD: - return [] - return 'UNKNOWN' - - def _remove_line_prefix(self, value): - if self.metadata_version in ('1.0', '1.1'): - return _LINE_PREFIX_PRE_1_2.sub('\n', value) - else: - return _LINE_PREFIX_1_2.sub('\n', value) - - def __getattr__(self, name): - if name in _ATTR2FIELD: - return self[name] - raise AttributeError(name) - - # - # Public API - # - -# dependencies = property(_get_dependencies, _set_dependencies) - - def get_fullname(self, filesafe=False): - """Return the distribution name with version. - - If filesafe is true, return a filename-escaped form.""" - return _get_name_and_version(self['Name'], self['Version'], filesafe) - - def is_field(self, name): - """return True if name is a valid metadata key""" - name = self._convert_name(name) - return name in _ALL_FIELDS - - def is_multi_field(self, name): - name = self._convert_name(name) - return name in _LISTFIELDS - - def read(self, filepath): - """Read the metadata values from a file path.""" - fp = codecs.open(filepath, 'r', encoding='utf-8') - try: - self.read_file(fp) - finally: - fp.close() - - def read_file(self, fileob): - """Read the metadata values from a file object.""" - msg = message_from_file(fileob) - self._fields['Metadata-Version'] = msg['metadata-version'] - - # When reading, get all the fields we can - for field in _ALL_FIELDS: - if field not in msg: - continue - if field in _LISTFIELDS: - # we can have multiple lines - values = msg.get_all(field) - if field in _LISTTUPLEFIELDS and values is not None: - values = [tuple(value.split(',')) for value in values] - self.set(field, values) - else: - # single line - value = msg[field] - if value is not None and value != 'UNKNOWN': - self.set(field, value) - - # PEP 566 specifies that the body be used for the description, if - # available - body = msg.get_payload() - self["Description"] = body if body else self["Description"] - # logger.debug('Attempting to set metadata for %s', self) - # self.set_metadata_version() - - def write(self, filepath, skip_unknown=False): - """Write the metadata fields to filepath.""" - fp = codecs.open(filepath, 'w', encoding='utf-8') - try: - self.write_file(fp, skip_unknown) - finally: - fp.close() - - def write_file(self, fileobject, skip_unknown=False): - """Write the PKG-INFO format data to a file object.""" - self.set_metadata_version() - - for field in _version2fieldlist(self['Metadata-Version']): - values = self.get(field) - if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): - continue - if field in _ELEMENTSFIELD: - self._write_field(fileobject, field, ','.join(values)) - continue - if field not in _LISTFIELDS: - if field == 'Description': - if self.metadata_version in ('1.0', '1.1'): - values = values.replace('\n', '\n ') - else: - values = values.replace('\n', '\n |') - values = [values] - - if field in _LISTTUPLEFIELDS: - values = [','.join(value) for value in values] - - for value in values: - self._write_field(fileobject, field, value) - - def update(self, other=None, **kwargs): - """Set metadata values from the given iterable `other` and kwargs. - - Behavior is like `dict.update`: If `other` has a ``keys`` method, - they are looped over and ``self[key]`` is assigned ``other[key]``. - Else, ``other`` is an iterable of ``(key, value)`` iterables. - - Keys that don't match a metadata field or that have an empty value are - dropped. - """ - def _set(key, value): - if key in _ATTR2FIELD and value: - self.set(self._convert_name(key), value) - - if not other: - # other is None or empty container - pass - elif hasattr(other, 'keys'): - for k in other.keys(): - _set(k, other[k]) - else: - for k, v in other: - _set(k, v) - - if kwargs: - for k, v in kwargs.items(): - _set(k, v) - - def set(self, name, value): - """Control then set a metadata field.""" - name = self._convert_name(name) - - if ((name in _ELEMENTSFIELD or name == 'Platform') and - not isinstance(value, (list, tuple))): - if isinstance(value, string_types): - value = [v.strip() for v in value.split(',')] - else: - value = [] - elif (name in _LISTFIELDS and - not isinstance(value, (list, tuple))): - if isinstance(value, string_types): - value = [value] - else: - value = [] - - if logger.isEnabledFor(logging.WARNING): - project_name = self['Name'] - - scheme = get_scheme(self.scheme) - if name in _PREDICATE_FIELDS and value is not None: - for v in value: - # check that the values are valid - if not scheme.is_valid_matcher(v.split(';')[0]): - logger.warning( - "'%s': '%s' is not valid (field '%s')", - project_name, v, name) - # FIXME this rejects UNKNOWN, is that right? - elif name in _VERSIONS_FIELDS and value is not None: - if not scheme.is_valid_constraint_list(value): - logger.warning("'%s': '%s' is not a valid version (field '%s')", - project_name, value, name) - elif name in _VERSION_FIELDS and value is not None: - if not scheme.is_valid_version(value): - logger.warning("'%s': '%s' is not a valid version (field '%s')", - project_name, value, name) - - if name in _UNICODEFIELDS: - if name == 'Description': - value = self._remove_line_prefix(value) - - self._fields[name] = value - - def get(self, name, default=_MISSING): - """Get a metadata field.""" - name = self._convert_name(name) - if name not in self._fields: - if default is _MISSING: - default = self._default_value(name) - return default - if name in _UNICODEFIELDS: - value = self._fields[name] - return value - elif name in _LISTFIELDS: - value = self._fields[name] - if value is None: - return [] - res = [] - for val in value: - if name not in _LISTTUPLEFIELDS: - res.append(val) - else: - # That's for Project-URL - res.append((val[0], val[1])) - return res - - elif name in _ELEMENTSFIELD: - value = self._fields[name] - if isinstance(value, string_types): - return value.split(',') - return self._fields[name] - - def check(self, strict=False): - """Check if the metadata is compliant. If strict is True then raise if - no Name or Version are provided""" - self.set_metadata_version() - - # XXX should check the versions (if the file was loaded) - missing, warnings = [], [] - - for attr in ('Name', 'Version'): # required by PEP 345 - if attr not in self: - missing.append(attr) - - if strict and missing != []: - msg = 'missing required metadata: %s' % ', '.join(missing) - raise MetadataMissingError(msg) - - for attr in ('Home-page', 'Author'): - if attr not in self: - missing.append(attr) - - # checking metadata 1.2 (XXX needs to check 1.1, 1.0) - if self['Metadata-Version'] != '1.2': - return missing, warnings - - scheme = get_scheme(self.scheme) - - def are_valid_constraints(value): - for v in value: - if not scheme.is_valid_matcher(v.split(';')[0]): - return False - return True - - for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), - (_VERSIONS_FIELDS, - scheme.is_valid_constraint_list), - (_VERSION_FIELDS, - scheme.is_valid_version)): - for field in fields: - value = self.get(field, None) - if value is not None and not controller(value): - warnings.append("Wrong value for '%s': %s" % (field, value)) - - return missing, warnings - - def todict(self, skip_missing=False): - """Return fields as a dict. - - Field names will be converted to use the underscore-lowercase style - instead of hyphen-mixed case (i.e. home_page instead of Home-page). - This is as per https://www.python.org/dev/peps/pep-0566/#id17. - """ - self.set_metadata_version() - - fields = _version2fieldlist(self['Metadata-Version']) - - data = {} - - for field_name in fields: - if not skip_missing or field_name in self._fields: - key = _FIELD2ATTR[field_name] - if key != 'project_url': - data[key] = self[field_name] - else: - data[key] = [','.join(u) for u in self[field_name]] - - return data - - def add_requirements(self, requirements): - if self['Metadata-Version'] == '1.1': - # we can't have 1.1 metadata *and* Setuptools requires - for field in ('Obsoletes', 'Requires', 'Provides'): - if field in self: - del self[field] - self['Requires-Dist'] += requirements - - # Mapping API - # TODO could add iter* variants - - def keys(self): - return list(_version2fieldlist(self['Metadata-Version'])) - - def __iter__(self): - for key in self.keys(): - yield key - - def values(self): - return [self[key] for key in self.keys()] - - def items(self): - return [(key, self[key]) for key in self.keys()] - - def __repr__(self): - return '<%s %s %s>' % (self.__class__.__name__, self.name, - self.version) - - -METADATA_FILENAME = 'pydist.json' -WHEEL_METADATA_FILENAME = 'metadata.json' -LEGACY_METADATA_FILENAME = 'METADATA' - - -class Metadata(object): - """ - The metadata of a release. This implementation uses 2.1 - metadata where possible. If not possible, it wraps a LegacyMetadata - instance which handles the key-value metadata format. - """ - - METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$') - - NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) - - FIELDNAME_MATCHER = re.compile('^[A-Z]([0-9A-Z-]*[0-9A-Z])?$', re.I) - - VERSION_MATCHER = PEP440_VERSION_RE - - SUMMARY_MATCHER = re.compile('.{1,2047}') - - METADATA_VERSION = '2.0' - - GENERATOR = 'distlib (%s)' % __version__ - - MANDATORY_KEYS = { - 'name': (), - 'version': (), - 'summary': ('legacy',), - } - - INDEX_KEYS = ('name version license summary description author ' - 'author_email keywords platform home_page classifiers ' - 'download_url') - - DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' - 'dev_requires provides meta_requires obsoleted_by ' - 'supports_environments') - - SYNTAX_VALIDATORS = { - 'metadata_version': (METADATA_VERSION_MATCHER, ()), - 'name': (NAME_MATCHER, ('legacy',)), - 'version': (VERSION_MATCHER, ('legacy',)), - 'summary': (SUMMARY_MATCHER, ('legacy',)), - 'dynamic': (FIELDNAME_MATCHER, ('legacy',)), - } - - __slots__ = ('_legacy', '_data', 'scheme') - - def __init__(self, path=None, fileobj=None, mapping=None, - scheme='default'): - if [path, fileobj, mapping].count(None) < 2: - raise TypeError('path, fileobj and mapping are exclusive') - self._legacy = None - self._data = None - self.scheme = scheme - #import pdb; pdb.set_trace() - if mapping is not None: - try: - self._validate_mapping(mapping, scheme) - self._data = mapping - except MetadataUnrecognizedVersionError: - self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) - self.validate() - else: - data = None - if path: - with open(path, 'rb') as f: - data = f.read() - elif fileobj: - data = fileobj.read() - if data is None: - # Initialised with no args - to be added - self._data = { - 'metadata_version': self.METADATA_VERSION, - 'generator': self.GENERATOR, - } - else: - if not isinstance(data, text_type): - data = data.decode('utf-8') - try: - self._data = json.loads(data) - self._validate_mapping(self._data, scheme) - except ValueError: - # Note: MetadataUnrecognizedVersionError does not - # inherit from ValueError (it's a DistlibException, - # which should not inherit from ValueError). - # The ValueError comes from the json.load - if that - # succeeds and we get a validation error, we want - # that to propagate - self._legacy = LegacyMetadata(fileobj=StringIO(data), - scheme=scheme) - self.validate() - - common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) - - none_list = (None, list) - none_dict = (None, dict) - - mapped_keys = { - 'run_requires': ('Requires-Dist', list), - 'build_requires': ('Setup-Requires-Dist', list), - 'dev_requires': none_list, - 'test_requires': none_list, - 'meta_requires': none_list, - 'extras': ('Provides-Extra', list), - 'modules': none_list, - 'namespaces': none_list, - 'exports': none_dict, - 'commands': none_dict, - 'classifiers': ('Classifier', list), - 'source_url': ('Download-URL', None), - 'metadata_version': ('Metadata-Version', None), - } - - del none_list, none_dict - - def __getattribute__(self, key): - common = object.__getattribute__(self, 'common_keys') - mapped = object.__getattribute__(self, 'mapped_keys') - if key in mapped: - lk, maker = mapped[key] - if self._legacy: - if lk is None: - result = None if maker is None else maker() - else: - result = self._legacy.get(lk) - else: - value = None if maker is None else maker() - if key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): - result = self._data.get(key, value) - else: - # special cases for PEP 459 - sentinel = object() - result = sentinel - d = self._data.get('extensions') - if d: - if key == 'commands': - result = d.get('python.commands', value) - elif key == 'classifiers': - d = d.get('python.details') - if d: - result = d.get(key, value) - else: - d = d.get('python.exports') - if not d: - d = self._data.get('python.exports') - if d: - result = d.get(key, value) - if result is sentinel: - result = value - elif key not in common: - result = object.__getattribute__(self, key) - elif self._legacy: - result = self._legacy.get(key) - else: - result = self._data.get(key) - return result - - def _validate_value(self, key, value, scheme=None): - if key in self.SYNTAX_VALIDATORS: - pattern, exclusions = self.SYNTAX_VALIDATORS[key] - if (scheme or self.scheme) not in exclusions: - m = pattern.match(value) - if not m: - raise MetadataInvalidError("'%s' is an invalid value for " - "the '%s' property" % (value, - key)) - - def __setattr__(self, key, value): - self._validate_value(key, value) - common = object.__getattribute__(self, 'common_keys') - mapped = object.__getattribute__(self, 'mapped_keys') - if key in mapped: - lk, _ = mapped[key] - if self._legacy: - if lk is None: - raise NotImplementedError - self._legacy[lk] = value - elif key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): - self._data[key] = value - else: - # special cases for PEP 459 - d = self._data.setdefault('extensions', {}) - if key == 'commands': - d['python.commands'] = value - elif key == 'classifiers': - d = d.setdefault('python.details', {}) - d[key] = value - else: - d = d.setdefault('python.exports', {}) - d[key] = value - elif key not in common: - object.__setattr__(self, key, value) - else: - if key == 'keywords': - if isinstance(value, string_types): - value = value.strip() - if value: - value = value.split() - else: - value = [] - if self._legacy: - self._legacy[key] = value - else: - self._data[key] = value - - @property - def name_and_version(self): - return _get_name_and_version(self.name, self.version, True) - - @property - def provides(self): - if self._legacy: - result = self._legacy['Provides-Dist'] - else: - result = self._data.setdefault('provides', []) - s = '%s (%s)' % (self.name, self.version) - if s not in result: - result.append(s) - return result - - @provides.setter - def provides(self, value): - if self._legacy: - self._legacy['Provides-Dist'] = value - else: - self._data['provides'] = value - - def get_requirements(self, reqts, extras=None, env=None): - """ - Base method to get dependencies, given a set of extras - to satisfy and an optional environment context. - :param reqts: A list of sometimes-wanted dependencies, - perhaps dependent on extras and environment. - :param extras: A list of optional components being requested. - :param env: An optional environment for marker evaluation. - """ - if self._legacy: - result = reqts - else: - result = [] - extras = get_extras(extras or [], self.extras) - for d in reqts: - if 'extra' not in d and 'environment' not in d: - # unconditional - include = True - else: - if 'extra' not in d: - # Not extra-dependent - only environment-dependent - include = True - else: - include = d.get('extra') in extras - if include: - # Not excluded because of extras, check environment - marker = d.get('environment') - if marker: - include = interpret(marker, env) - if include: - result.extend(d['requires']) - for key in ('build', 'dev', 'test'): - e = ':%s:' % key - if e in extras: - extras.remove(e) - # A recursive call, but it should terminate since 'test' - # has been removed from the extras - reqts = self._data.get('%s_requires' % key, []) - result.extend(self.get_requirements(reqts, extras=extras, - env=env)) - return result - - @property - def dictionary(self): - if self._legacy: - return self._from_legacy() - return self._data - - @property - def dependencies(self): - if self._legacy: - raise NotImplementedError - else: - return extract_by_key(self._data, self.DEPENDENCY_KEYS) - - @dependencies.setter - def dependencies(self, value): - if self._legacy: - raise NotImplementedError - else: - self._data.update(value) - - def _validate_mapping(self, mapping, scheme): - if mapping.get('metadata_version') != self.METADATA_VERSION: - raise MetadataUnrecognizedVersionError() - missing = [] - for key, exclusions in self.MANDATORY_KEYS.items(): - if key not in mapping: - if scheme not in exclusions: - missing.append(key) - if missing: - msg = 'Missing metadata items: %s' % ', '.join(missing) - raise MetadataMissingError(msg) - for k, v in mapping.items(): - self._validate_value(k, v, scheme) - - def validate(self): - if self._legacy: - missing, warnings = self._legacy.check(True) - if missing or warnings: - logger.warning('Metadata: missing: %s, warnings: %s', - missing, warnings) - else: - self._validate_mapping(self._data, self.scheme) - - def todict(self): - if self._legacy: - return self._legacy.todict(True) - else: - result = extract_by_key(self._data, self.INDEX_KEYS) - return result - - def _from_legacy(self): - assert self._legacy and not self._data - result = { - 'metadata_version': self.METADATA_VERSION, - 'generator': self.GENERATOR, - } - lmd = self._legacy.todict(True) # skip missing ones - for k in ('name', 'version', 'license', 'summary', 'description', - 'classifier'): - if k in lmd: - if k == 'classifier': - nk = 'classifiers' - else: - nk = k - result[nk] = lmd[k] - kw = lmd.get('Keywords', []) - if kw == ['']: - kw = [] - result['keywords'] = kw - keys = (('requires_dist', 'run_requires'), - ('setup_requires_dist', 'build_requires')) - for ok, nk in keys: - if ok in lmd and lmd[ok]: - result[nk] = [{'requires': lmd[ok]}] - result['provides'] = self.provides - author = {} - maintainer = {} - return result - - LEGACY_MAPPING = { - 'name': 'Name', - 'version': 'Version', - ('extensions', 'python.details', 'license'): 'License', - 'summary': 'Summary', - 'description': 'Description', - ('extensions', 'python.project', 'project_urls', 'Home'): 'Home-page', - ('extensions', 'python.project', 'contacts', 0, 'name'): 'Author', - ('extensions', 'python.project', 'contacts', 0, 'email'): 'Author-email', - 'source_url': 'Download-URL', - ('extensions', 'python.details', 'classifiers'): 'Classifier', - } - - def _to_legacy(self): - def process_entries(entries): - reqts = set() - for e in entries: - extra = e.get('extra') - env = e.get('environment') - rlist = e['requires'] - for r in rlist: - if not env and not extra: - reqts.add(r) - else: - marker = '' - if extra: - marker = 'extra == "%s"' % extra - if env: - if marker: - marker = '(%s) and %s' % (env, marker) - else: - marker = env - reqts.add(';'.join((r, marker))) - return reqts - - assert self._data and not self._legacy - result = LegacyMetadata() - nmd = self._data - # import pdb; pdb.set_trace() - for nk, ok in self.LEGACY_MAPPING.items(): - if not isinstance(nk, tuple): - if nk in nmd: - result[ok] = nmd[nk] - else: - d = nmd - found = True - for k in nk: - try: - d = d[k] - except (KeyError, IndexError): - found = False - break - if found: - result[ok] = d - r1 = process_entries(self.run_requires + self.meta_requires) - r2 = process_entries(self.build_requires + self.dev_requires) - if self.extras: - result['Provides-Extra'] = sorted(self.extras) - result['Requires-Dist'] = sorted(r1) - result['Setup-Requires-Dist'] = sorted(r2) - # TODO: any other fields wanted - return result - - def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): - if [path, fileobj].count(None) != 1: - raise ValueError('Exactly one of path and fileobj is needed') - self.validate() - if legacy: - if self._legacy: - legacy_md = self._legacy - else: - legacy_md = self._to_legacy() - if path: - legacy_md.write(path, skip_unknown=skip_unknown) - else: - legacy_md.write_file(fileobj, skip_unknown=skip_unknown) - else: - if self._legacy: - d = self._from_legacy() - else: - d = self._data - if fileobj: - json.dump(d, fileobj, ensure_ascii=True, indent=2, - sort_keys=True) - else: - with codecs.open(path, 'w', 'utf-8') as f: - json.dump(d, f, ensure_ascii=True, indent=2, - sort_keys=True) - - def add_requirements(self, requirements): - if self._legacy: - self._legacy.add_requirements(requirements) - else: - run_requires = self._data.setdefault('run_requires', []) - always = None - for entry in run_requires: - if 'environment' not in entry and 'extra' not in entry: - always = entry - break - if always is None: - always = { 'requires': requirements } - run_requires.insert(0, always) - else: - rset = set(always['requires']) | set(requirements) - always['requires'] = sorted(rset) - - def __repr__(self): - name = self.name or '(no name)' - version = self.version or 'no version' - return '<%s %s %s (%s)>' % (self.__class__.__name__, - self.metadata_version, name, version) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py deleted file mode 100644 index fef52aa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py +++ /dev/null @@ -1,358 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2017 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from __future__ import unicode_literals - -import bisect -import io -import logging -import os -import pkgutil -import sys -import types -import zipimport - -from . import DistlibException -from .util import cached_property, get_cache_base, Cache - -logger = logging.getLogger(__name__) - - -cache = None # created when needed - - -class ResourceCache(Cache): - def __init__(self, base=None): - if base is None: - # Use native string to avoid issues on 2.x: see Python #20140. - base = os.path.join(get_cache_base(), str('resource-cache')) - super(ResourceCache, self).__init__(base) - - def is_stale(self, resource, path): - """ - Is the cache stale for the given resource? - - :param resource: The :class:`Resource` being cached. - :param path: The path of the resource in the cache. - :return: True if the cache is stale. - """ - # Cache invalidation is a hard problem :-) - return True - - def get(self, resource): - """ - Get a resource into the cache, - - :param resource: A :class:`Resource` instance. - :return: The pathname of the resource in the cache. - """ - prefix, path = resource.finder.get_cache_info(resource) - if prefix is None: - result = path - else: - result = os.path.join(self.base, self.prefix_to_dir(prefix), path) - dirname = os.path.dirname(result) - if not os.path.isdir(dirname): - os.makedirs(dirname) - if not os.path.exists(result): - stale = True - else: - stale = self.is_stale(resource, path) - if stale: - # write the bytes of the resource to the cache location - with open(result, 'wb') as f: - f.write(resource.bytes) - return result - - -class ResourceBase(object): - def __init__(self, finder, name): - self.finder = finder - self.name = name - - -class Resource(ResourceBase): - """ - A class representing an in-package resource, such as a data file. This is - not normally instantiated by user code, but rather by a - :class:`ResourceFinder` which manages the resource. - """ - is_container = False # Backwards compatibility - - def as_stream(self): - """ - Get the resource as a stream. - - This is not a property to make it obvious that it returns a new stream - each time. - """ - return self.finder.get_stream(self) - - @cached_property - def file_path(self): - global cache - if cache is None: - cache = ResourceCache() - return cache.get(self) - - @cached_property - def bytes(self): - return self.finder.get_bytes(self) - - @cached_property - def size(self): - return self.finder.get_size(self) - - -class ResourceContainer(ResourceBase): - is_container = True # Backwards compatibility - - @cached_property - def resources(self): - return self.finder.get_resources(self) - - -class ResourceFinder(object): - """ - Resource finder for file system resources. - """ - - if sys.platform.startswith('java'): - skipped_extensions = ('.pyc', '.pyo', '.class') - else: - skipped_extensions = ('.pyc', '.pyo') - - def __init__(self, module): - self.module = module - self.loader = getattr(module, '__loader__', None) - self.base = os.path.dirname(getattr(module, '__file__', '')) - - def _adjust_path(self, path): - return os.path.realpath(path) - - def _make_path(self, resource_name): - # Issue #50: need to preserve type of path on Python 2.x - # like os.path._get_sep - if isinstance(resource_name, bytes): # should only happen on 2.x - sep = b'/' - else: - sep = '/' - parts = resource_name.split(sep) - parts.insert(0, self.base) - result = os.path.join(*parts) - return self._adjust_path(result) - - def _find(self, path): - return os.path.exists(path) - - def get_cache_info(self, resource): - return None, resource.path - - def find(self, resource_name): - path = self._make_path(resource_name) - if not self._find(path): - result = None - else: - if self._is_directory(path): - result = ResourceContainer(self, resource_name) - else: - result = Resource(self, resource_name) - result.path = path - return result - - def get_stream(self, resource): - return open(resource.path, 'rb') - - def get_bytes(self, resource): - with open(resource.path, 'rb') as f: - return f.read() - - def get_size(self, resource): - return os.path.getsize(resource.path) - - def get_resources(self, resource): - def allowed(f): - return (f != '__pycache__' and not - f.endswith(self.skipped_extensions)) - return set([f for f in os.listdir(resource.path) if allowed(f)]) - - def is_container(self, resource): - return self._is_directory(resource.path) - - _is_directory = staticmethod(os.path.isdir) - - def iterator(self, resource_name): - resource = self.find(resource_name) - if resource is not None: - todo = [resource] - while todo: - resource = todo.pop(0) - yield resource - if resource.is_container: - rname = resource.name - for name in resource.resources: - if not rname: - new_name = name - else: - new_name = '/'.join([rname, name]) - child = self.find(new_name) - if child.is_container: - todo.append(child) - else: - yield child - - -class ZipResourceFinder(ResourceFinder): - """ - Resource finder for resources in .zip files. - """ - def __init__(self, module): - super(ZipResourceFinder, self).__init__(module) - archive = self.loader.archive - self.prefix_len = 1 + len(archive) - # PyPy doesn't have a _files attr on zipimporter, and you can't set one - if hasattr(self.loader, '_files'): - self._files = self.loader._files - else: - self._files = zipimport._zip_directory_cache[archive] - self.index = sorted(self._files) - - def _adjust_path(self, path): - return path - - def _find(self, path): - path = path[self.prefix_len:] - if path in self._files: - result = True - else: - if path and path[-1] != os.sep: - path = path + os.sep - i = bisect.bisect(self.index, path) - try: - result = self.index[i].startswith(path) - except IndexError: - result = False - if not result: - logger.debug('_find failed: %r %r', path, self.loader.prefix) - else: - logger.debug('_find worked: %r %r', path, self.loader.prefix) - return result - - def get_cache_info(self, resource): - prefix = self.loader.archive - path = resource.path[1 + len(prefix):] - return prefix, path - - def get_bytes(self, resource): - return self.loader.get_data(resource.path) - - def get_stream(self, resource): - return io.BytesIO(self.get_bytes(resource)) - - def get_size(self, resource): - path = resource.path[self.prefix_len:] - return self._files[path][3] - - def get_resources(self, resource): - path = resource.path[self.prefix_len:] - if path and path[-1] != os.sep: - path += os.sep - plen = len(path) - result = set() - i = bisect.bisect(self.index, path) - while i < len(self.index): - if not self.index[i].startswith(path): - break - s = self.index[i][plen:] - result.add(s.split(os.sep, 1)[0]) # only immediate children - i += 1 - return result - - def _is_directory(self, path): - path = path[self.prefix_len:] - if path and path[-1] != os.sep: - path += os.sep - i = bisect.bisect(self.index, path) - try: - result = self.index[i].startswith(path) - except IndexError: - result = False - return result - - -_finder_registry = { - type(None): ResourceFinder, - zipimport.zipimporter: ZipResourceFinder -} - -try: - # In Python 3.6, _frozen_importlib -> _frozen_importlib_external - try: - import _frozen_importlib_external as _fi - except ImportError: - import _frozen_importlib as _fi - _finder_registry[_fi.SourceFileLoader] = ResourceFinder - _finder_registry[_fi.FileFinder] = ResourceFinder - # See issue #146 - _finder_registry[_fi.SourcelessFileLoader] = ResourceFinder - del _fi -except (ImportError, AttributeError): - pass - - -def register_finder(loader, finder_maker): - _finder_registry[type(loader)] = finder_maker - - -_finder_cache = {} - - -def finder(package): - """ - Return a resource finder for a package. - :param package: The name of the package. - :return: A :class:`ResourceFinder` instance for the package. - """ - if package in _finder_cache: - result = _finder_cache[package] - else: - if package not in sys.modules: - __import__(package) - module = sys.modules[package] - path = getattr(module, '__path__', None) - if path is None: - raise DistlibException('You cannot get a finder for a module, ' - 'only for a package') - loader = getattr(module, '__loader__', None) - finder_maker = _finder_registry.get(type(loader)) - if finder_maker is None: - raise DistlibException('Unable to locate finder for %r' % package) - result = finder_maker(module) - _finder_cache[package] = result - return result - - -_dummy_module = types.ModuleType(str('__dummy__')) - - -def finder_for_path(path): - """ - Return a resource finder for a path, which should represent a container. - - :param path: The path. - :return: A :class:`ResourceFinder` instance for the path. - """ - result = None - # calls any path hooks, gets importer into cache - pkgutil.get_importer(path) - loader = sys.path_importer_cache.get(path) - finder = _finder_registry.get(type(loader)) - if finder: - module = _dummy_module - module.__file__ = os.path.join(path, '') - module.__loader__ = loader - result = finder(module) - return result diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py deleted file mode 100644 index cfa45d2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py +++ /dev/null @@ -1,452 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2023 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from io import BytesIO -import logging -import os -import re -import struct -import sys -import time -from zipfile import ZipInfo - -from .compat import sysconfig, detect_encoding, ZipFile -from .resources import finder -from .util import (FileOperator, get_export_entry, convert_path, - get_executable, get_platform, in_venv) - -logger = logging.getLogger(__name__) - -_DEFAULT_MANIFEST = ''' - - - - - - - - - - - - -'''.strip() - -# check if Python is called on the first line with this expression -FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') -SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- -import re -import sys -from %(module)s import %(import_name)s -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(%(func)s()) -''' - - -def enquote_executable(executable): - if ' ' in executable: - # make sure we quote only the executable in case of env - # for example /usr/bin/env "/dir with spaces/bin/jython" - # instead of "/usr/bin/env /dir with spaces/bin/jython" - # otherwise whole - if executable.startswith('/usr/bin/env '): - env, _executable = executable.split(' ', 1) - if ' ' in _executable and not _executable.startswith('"'): - executable = '%s "%s"' % (env, _executable) - else: - if not executable.startswith('"'): - executable = '"%s"' % executable - return executable - - -# Keep the old name around (for now), as there is at least one project using it! -_enquote_executable = enquote_executable - - -class ScriptMaker(object): - """ - A class to copy or create scripts from source scripts or callable - specifications. - """ - script_template = SCRIPT_TEMPLATE - - executable = None # for shebangs - - def __init__(self, - source_dir, - target_dir, - add_launchers=True, - dry_run=False, - fileop=None): - self.source_dir = source_dir - self.target_dir = target_dir - self.add_launchers = add_launchers - self.force = False - self.clobber = False - # It only makes sense to set mode bits on POSIX. - self.set_mode = (os.name == 'posix') or (os.name == 'java' - and os._name == 'posix') - self.variants = set(('', 'X.Y')) - self._fileop = fileop or FileOperator(dry_run) - - self._is_nt = os.name == 'nt' or (os.name == 'java' - and os._name == 'nt') - self.version_info = sys.version_info - - def _get_alternate_executable(self, executable, options): - if options.get('gui', False) and self._is_nt: # pragma: no cover - dn, fn = os.path.split(executable) - fn = fn.replace('python', 'pythonw') - executable = os.path.join(dn, fn) - return executable - - if sys.platform.startswith('java'): # pragma: no cover - - def _is_shell(self, executable): - """ - Determine if the specified executable is a script - (contains a #! line) - """ - try: - with open(executable) as fp: - return fp.read(2) == '#!' - except (OSError, IOError): - logger.warning('Failed to open %s', executable) - return False - - def _fix_jython_executable(self, executable): - if self._is_shell(executable): - # Workaround for Jython is not needed on Linux systems. - import java - - if java.lang.System.getProperty('os.name') == 'Linux': - return executable - elif executable.lower().endswith('jython.exe'): - # Use wrapper exe for Jython on Windows - return executable - return '/usr/bin/env %s' % executable - - def _build_shebang(self, executable, post_interp): - """ - Build a shebang line. In the simple case (on Windows, or a shebang line - which is not too long or contains spaces) use a simple formulation for - the shebang. Otherwise, use /bin/sh as the executable, with a contrived - shebang which allows the script to run either under Python or sh, using - suitable quoting. Thanks to Harald Nordgren for his input. - - See also: http://www.in-ulm.de/~mascheck/various/shebang/#length - https://hg.mozilla.org/mozilla-central/file/tip/mach - """ - if os.name != 'posix': - simple_shebang = True - else: - # Add 3 for '#!' prefix and newline suffix. - shebang_length = len(executable) + len(post_interp) + 3 - if sys.platform == 'darwin': - max_shebang_length = 512 - else: - max_shebang_length = 127 - simple_shebang = ((b' ' not in executable) - and (shebang_length <= max_shebang_length)) - - if simple_shebang: - result = b'#!' + executable + post_interp + b'\n' - else: - result = b'#!/bin/sh\n' - result += b"'''exec' " + executable + post_interp + b' "$0" "$@"\n' - result += b"' '''" - return result - - def _get_shebang(self, encoding, post_interp=b'', options=None): - enquote = True - if self.executable: - executable = self.executable - enquote = False # assume this will be taken care of - elif not sysconfig.is_python_build(): - executable = get_executable() - elif in_venv(): # pragma: no cover - executable = os.path.join( - sysconfig.get_path('scripts'), - 'python%s' % sysconfig.get_config_var('EXE')) - else: # pragma: no cover - if os.name == 'nt': - # for Python builds from source on Windows, no Python executables with - # a version suffix are created, so we use python.exe - executable = os.path.join( - sysconfig.get_config_var('BINDIR'), - 'python%s' % (sysconfig.get_config_var('EXE'))) - else: - executable = os.path.join( - sysconfig.get_config_var('BINDIR'), - 'python%s%s' % (sysconfig.get_config_var('VERSION'), - sysconfig.get_config_var('EXE'))) - if options: - executable = self._get_alternate_executable(executable, options) - - if sys.platform.startswith('java'): # pragma: no cover - executable = self._fix_jython_executable(executable) - - # Normalise case for Windows - COMMENTED OUT - # executable = os.path.normcase(executable) - # N.B. The normalising operation above has been commented out: See - # issue #124. Although paths in Windows are generally case-insensitive, - # they aren't always. For example, a path containing a ẞ (which is a - # LATIN CAPITAL LETTER SHARP S - U+1E9E) is normcased to ß (which is a - # LATIN SMALL LETTER SHARP S' - U+00DF). The two are not considered by - # Windows as equivalent in path names. - - # If the user didn't specify an executable, it may be necessary to - # cater for executable paths with spaces (not uncommon on Windows) - if enquote: - executable = enquote_executable(executable) - # Issue #51: don't use fsencode, since we later try to - # check that the shebang is decodable using utf-8. - executable = executable.encode('utf-8') - # in case of IronPython, play safe and enable frames support - if (sys.platform == 'cli' and '-X:Frames' not in post_interp - and '-X:FullFrames' not in post_interp): # pragma: no cover - post_interp += b' -X:Frames' - shebang = self._build_shebang(executable, post_interp) - # Python parser starts to read a script using UTF-8 until - # it gets a #coding:xxx cookie. The shebang has to be the - # first line of a file, the #coding:xxx cookie cannot be - # written before. So the shebang has to be decodable from - # UTF-8. - try: - shebang.decode('utf-8') - except UnicodeDecodeError: # pragma: no cover - raise ValueError('The shebang (%r) is not decodable from utf-8' % - shebang) - # If the script is encoded to a custom encoding (use a - # #coding:xxx cookie), the shebang has to be decodable from - # the script encoding too. - if encoding != 'utf-8': - try: - shebang.decode(encoding) - except UnicodeDecodeError: # pragma: no cover - raise ValueError('The shebang (%r) is not decodable ' - 'from the script encoding (%r)' % - (shebang, encoding)) - return shebang - - def _get_script_text(self, entry): - return self.script_template % dict( - module=entry.prefix, - import_name=entry.suffix.split('.')[0], - func=entry.suffix) - - manifest = _DEFAULT_MANIFEST - - def get_manifest(self, exename): - base = os.path.basename(exename) - return self.manifest % base - - def _write_script(self, names, shebang, script_bytes, filenames, ext): - use_launcher = self.add_launchers and self._is_nt - linesep = os.linesep.encode('utf-8') - if not shebang.endswith(linesep): - shebang += linesep - if not use_launcher: - script_bytes = shebang + script_bytes - else: # pragma: no cover - if ext == 'py': - launcher = self._get_launcher('t') - else: - launcher = self._get_launcher('w') - stream = BytesIO() - with ZipFile(stream, 'w') as zf: - source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH') - if source_date_epoch: - date_time = time.gmtime(int(source_date_epoch))[:6] - zinfo = ZipInfo(filename='__main__.py', - date_time=date_time) - zf.writestr(zinfo, script_bytes) - else: - zf.writestr('__main__.py', script_bytes) - zip_data = stream.getvalue() - script_bytes = launcher + shebang + zip_data - for name in names: - outname = os.path.join(self.target_dir, name) - if use_launcher: # pragma: no cover - n, e = os.path.splitext(outname) - if e.startswith('.py'): - outname = n - outname = '%s.exe' % outname - try: - self._fileop.write_binary_file(outname, script_bytes) - except Exception: - # Failed writing an executable - it might be in use. - logger.warning('Failed to write executable - trying to ' - 'use .deleteme logic') - dfname = '%s.deleteme' % outname - if os.path.exists(dfname): - os.remove(dfname) # Not allowed to fail here - os.rename(outname, dfname) # nor here - self._fileop.write_binary_file(outname, script_bytes) - logger.debug('Able to replace executable using ' - '.deleteme logic') - try: - os.remove(dfname) - except Exception: - pass # still in use - ignore error - else: - if self._is_nt and not outname.endswith( - '.' + ext): # pragma: no cover - outname = '%s.%s' % (outname, ext) - if os.path.exists(outname) and not self.clobber: - logger.warning('Skipping existing file %s', outname) - continue - self._fileop.write_binary_file(outname, script_bytes) - if self.set_mode: - self._fileop.set_executable_mode([outname]) - filenames.append(outname) - - variant_separator = '-' - - def get_script_filenames(self, name): - result = set() - if '' in self.variants: - result.add(name) - if 'X' in self.variants: - result.add('%s%s' % (name, self.version_info[0])) - if 'X.Y' in self.variants: - result.add('%s%s%s.%s' % - (name, self.variant_separator, self.version_info[0], - self.version_info[1])) - return result - - def _make_script(self, entry, filenames, options=None): - post_interp = b'' - if options: - args = options.get('interpreter_args', []) - if args: - args = ' %s' % ' '.join(args) - post_interp = args.encode('utf-8') - shebang = self._get_shebang('utf-8', post_interp, options=options) - script = self._get_script_text(entry).encode('utf-8') - scriptnames = self.get_script_filenames(entry.name) - if options and options.get('gui', False): - ext = 'pyw' - else: - ext = 'py' - self._write_script(scriptnames, shebang, script, filenames, ext) - - def _copy_script(self, script, filenames): - adjust = False - script = os.path.join(self.source_dir, convert_path(script)) - outname = os.path.join(self.target_dir, os.path.basename(script)) - if not self.force and not self._fileop.newer(script, outname): - logger.debug('not copying %s (up-to-date)', script) - return - - # Always open the file, but ignore failures in dry-run mode -- - # that way, we'll get accurate feedback if we can read the - # script. - try: - f = open(script, 'rb') - except IOError: # pragma: no cover - if not self.dry_run: - raise - f = None - else: - first_line = f.readline() - if not first_line: # pragma: no cover - logger.warning('%s is an empty file (skipping)', script) - return - - match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) - if match: - adjust = True - post_interp = match.group(1) or b'' - - if not adjust: - if f: - f.close() - self._fileop.copy_file(script, outname) - if self.set_mode: - self._fileop.set_executable_mode([outname]) - filenames.append(outname) - else: - logger.info('copying and adjusting %s -> %s', script, - self.target_dir) - if not self._fileop.dry_run: - encoding, lines = detect_encoding(f.readline) - f.seek(0) - shebang = self._get_shebang(encoding, post_interp) - if b'pythonw' in first_line: # pragma: no cover - ext = 'pyw' - else: - ext = 'py' - n = os.path.basename(outname) - self._write_script([n], shebang, f.read(), filenames, ext) - if f: - f.close() - - @property - def dry_run(self): - return self._fileop.dry_run - - @dry_run.setter - def dry_run(self, value): - self._fileop.dry_run = value - - if os.name == 'nt' or (os.name == 'java' - and os._name == 'nt'): # pragma: no cover - # Executable launcher support. - # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ - - def _get_launcher(self, kind): - if struct.calcsize('P') == 8: # 64-bit - bits = '64' - else: - bits = '32' - platform_suffix = '-arm' if get_platform() == 'win-arm64' else '' - name = '%s%s%s.exe' % (kind, bits, platform_suffix) - # Issue 31: don't hardcode an absolute package name, but - # determine it relative to the current package - distlib_package = __name__.rsplit('.', 1)[0] - resource = finder(distlib_package).find(name) - if not resource: - msg = ('Unable to find resource %s in package %s' % - (name, distlib_package)) - raise ValueError(msg) - return resource.bytes - - # Public API follows - - def make(self, specification, options=None): - """ - Make a script. - - :param specification: The specification, which is either a valid export - entry specification (to make a script from a - callable) or a filename (to make a script by - copying from a source location). - :param options: A dictionary of options controlling script generation. - :return: A list of all absolute pathnames written to. - """ - filenames = [] - entry = get_export_entry(specification) - if entry is None: - self._copy_script(specification, filenames) - else: - self._make_script(entry, filenames, options=options) - return filenames - - def make_multiple(self, specifications, options=None): - """ - Take a list of specifications and make scripts from them, - :param specifications: A list of specifications. - :return: A list of all absolute pathnames written to, - """ - filenames = [] - for specification in specifications: - filenames.extend(self.make(specification, options)) - return filenames diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe deleted file mode 100644 index 52154f0be32cc2bdbf98af131d477900667d0abd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97792 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

    XMwe#*Lv$g8jIpIBEV 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 w+IyK^N3WCD*(>mhAj=irKyR>D9b+D<@QBhV6U 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

    qx{CqlSNQ_YhQ()VtG-D; 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 z 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 bB!6W7g#4-b3-g!cLzth+PZapSNrC?c%T_@< diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py deleted file mode 100644 index 4a5a30e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py +++ /dev/null @@ -1,1099 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2023 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from __future__ import unicode_literals - -import base64 -import codecs -import datetime -from email import message_from_file -import hashlib -import json -import logging -import os -import posixpath -import re -import shutil -import sys -import tempfile -import zipfile - -from . import __version__, DistlibException -from .compat import sysconfig, ZipFile, fsdecode, text_type, filter -from .database import InstalledDistribution -from .metadata import Metadata, WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME -from .util import (FileOperator, convert_path, CSVReader, CSVWriter, Cache, - cached_property, get_cache_base, read_exports, tempdir, - get_platform) -from .version import NormalizedVersion, UnsupportedVersionError - -logger = logging.getLogger(__name__) - -cache = None # created when needed - -if hasattr(sys, 'pypy_version_info'): # pragma: no cover - IMP_PREFIX = 'pp' -elif sys.platform.startswith('java'): # pragma: no cover - IMP_PREFIX = 'jy' -elif sys.platform == 'cli': # pragma: no cover - IMP_PREFIX = 'ip' -else: - IMP_PREFIX = 'cp' - -VER_SUFFIX = sysconfig.get_config_var('py_version_nodot') -if not VER_SUFFIX: # pragma: no cover - VER_SUFFIX = '%s%s' % sys.version_info[:2] -PYVER = 'py' + VER_SUFFIX -IMPVER = IMP_PREFIX + VER_SUFFIX - -ARCH = get_platform().replace('-', '_').replace('.', '_') - -ABI = sysconfig.get_config_var('SOABI') -if ABI and ABI.startswith('cpython-'): - ABI = ABI.replace('cpython-', 'cp').split('-')[0] -else: - - def _derive_abi(): - parts = ['cp', VER_SUFFIX] - if sysconfig.get_config_var('Py_DEBUG'): - parts.append('d') - if IMP_PREFIX == 'cp': - vi = sys.version_info[:2] - if vi < (3, 8): - wpm = sysconfig.get_config_var('WITH_PYMALLOC') - if wpm is None: - wpm = True - if wpm: - parts.append('m') - if vi < (3, 3): - us = sysconfig.get_config_var('Py_UNICODE_SIZE') - if us == 4 or (us is None and sys.maxunicode == 0x10FFFF): - parts.append('u') - return ''.join(parts) - - ABI = _derive_abi() - del _derive_abi - -FILENAME_RE = re.compile( - r''' -(?P[^-]+) --(?P\d+[^-]*) -(-(?P\d+[^-]*))? --(?P\w+\d+(\.\w+\d+)*) --(?P\w+) --(?P\w+(\.\w+)*) -\.whl$ -''', re.IGNORECASE | re.VERBOSE) - -NAME_VERSION_RE = re.compile( - r''' -(?P[^-]+) --(?P\d+[^-]*) -(-(?P\d+[^-]*))?$ -''', re.IGNORECASE | re.VERBOSE) - -SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') -SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') -SHEBANG_PYTHON = b'#!python' -SHEBANG_PYTHONW = b'#!pythonw' - -if os.sep == '/': - to_posix = lambda o: o -else: - to_posix = lambda o: o.replace(os.sep, '/') - -if sys.version_info[0] < 3: - import imp -else: - imp = None - import importlib.machinery - import importlib.util - - -def _get_suffixes(): - if imp: - return [s[0] for s in imp.get_suffixes()] - else: - return importlib.machinery.EXTENSION_SUFFIXES - - -def _load_dynamic(name, path): - # https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly - if imp: - return imp.load_dynamic(name, path) - else: - spec = importlib.util.spec_from_file_location(name, path) - module = importlib.util.module_from_spec(spec) - sys.modules[name] = module - spec.loader.exec_module(module) - return module - - -class Mounter(object): - - def __init__(self): - self.impure_wheels = {} - self.libs = {} - - def add(self, pathname, extensions): - self.impure_wheels[pathname] = extensions - self.libs.update(extensions) - - def remove(self, pathname): - extensions = self.impure_wheels.pop(pathname) - for k, v in extensions: - if k in self.libs: - del self.libs[k] - - def find_module(self, fullname, path=None): - if fullname in self.libs: - result = self - else: - result = None - return result - - def load_module(self, fullname): - if fullname in sys.modules: - result = sys.modules[fullname] - else: - if fullname not in self.libs: - raise ImportError('unable to find extension for %s' % fullname) - result = _load_dynamic(fullname, self.libs[fullname]) - result.__loader__ = self - parts = fullname.rsplit('.', 1) - if len(parts) > 1: - result.__package__ = parts[0] - return result - - -_hook = Mounter() - - -class Wheel(object): - """ - Class to build and install from Wheel files (PEP 427). - """ - - wheel_version = (1, 1) - hash_kind = 'sha256' - - def __init__(self, filename=None, sign=False, verify=False): - """ - Initialise an instance using a (valid) filename. - """ - self.sign = sign - self.should_verify = verify - self.buildver = '' - self.pyver = [PYVER] - self.abi = ['none'] - self.arch = ['any'] - self.dirname = os.getcwd() - if filename is None: - self.name = 'dummy' - self.version = '0.1' - self._filename = self.filename - else: - m = NAME_VERSION_RE.match(filename) - if m: - info = m.groupdict('') - self.name = info['nm'] - # Reinstate the local version separator - self.version = info['vn'].replace('_', '-') - self.buildver = info['bn'] - self._filename = self.filename - else: - dirname, filename = os.path.split(filename) - m = FILENAME_RE.match(filename) - if not m: - raise DistlibException('Invalid name or ' - 'filename: %r' % filename) - if dirname: - self.dirname = os.path.abspath(dirname) - self._filename = filename - info = m.groupdict('') - self.name = info['nm'] - self.version = info['vn'] - self.buildver = info['bn'] - self.pyver = info['py'].split('.') - self.abi = info['bi'].split('.') - self.arch = info['ar'].split('.') - - @property - def filename(self): - """ - Build and return a filename from the various components. - """ - if self.buildver: - buildver = '-' + self.buildver - else: - buildver = '' - pyver = '.'.join(self.pyver) - abi = '.'.join(self.abi) - arch = '.'.join(self.arch) - # replace - with _ as a local version separator - version = self.version.replace('-', '_') - return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, pyver, - abi, arch) - - @property - def exists(self): - path = os.path.join(self.dirname, self.filename) - return os.path.isfile(path) - - @property - def tags(self): - for pyver in self.pyver: - for abi in self.abi: - for arch in self.arch: - yield pyver, abi, arch - - @cached_property - def metadata(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - wrapper = codecs.getreader('utf-8') - with ZipFile(pathname, 'r') as zf: - self.get_wheel_metadata(zf) - # wv = wheel_metadata['Wheel-Version'].split('.', 1) - # file_version = tuple([int(i) for i in wv]) - # if file_version < (1, 1): - # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, - # LEGACY_METADATA_FILENAME] - # else: - # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] - fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME] - result = None - for fn in fns: - try: - metadata_filename = posixpath.join(info_dir, fn) - with zf.open(metadata_filename) as bf: - wf = wrapper(bf) - result = Metadata(fileobj=wf) - if result: - break - except KeyError: - pass - if not result: - raise ValueError('Invalid wheel, because metadata is ' - 'missing: looked in %s' % ', '.join(fns)) - return result - - def get_wheel_metadata(self, zf): - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - metadata_filename = posixpath.join(info_dir, 'WHEEL') - with zf.open(metadata_filename) as bf: - wf = codecs.getreader('utf-8')(bf) - message = message_from_file(wf) - return dict(message) - - @cached_property - def info(self): - pathname = os.path.join(self.dirname, self.filename) - with ZipFile(pathname, 'r') as zf: - result = self.get_wheel_metadata(zf) - return result - - def process_shebang(self, data): - m = SHEBANG_RE.match(data) - if m: - end = m.end() - shebang, data_after_shebang = data[:end], data[end:] - # Preserve any arguments after the interpreter - if b'pythonw' in shebang.lower(): - shebang_python = SHEBANG_PYTHONW - else: - shebang_python = SHEBANG_PYTHON - m = SHEBANG_DETAIL_RE.match(shebang) - if m: - args = b' ' + m.groups()[-1] - else: - args = b'' - shebang = shebang_python + args - data = shebang + data_after_shebang - else: - cr = data.find(b'\r') - lf = data.find(b'\n') - if cr < 0 or cr > lf: - term = b'\n' - else: - if data[cr:cr + 2] == b'\r\n': - term = b'\r\n' - else: - term = b'\r' - data = SHEBANG_PYTHON + term + data - return data - - def get_hash(self, data, hash_kind=None): - if hash_kind is None: - hash_kind = self.hash_kind - try: - hasher = getattr(hashlib, hash_kind) - except AttributeError: - raise DistlibException('Unsupported hash algorithm: %r' % - hash_kind) - result = hasher(data).digest() - result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') - return hash_kind, result - - def write_record(self, records, record_path, archive_record_path): - records = list(records) # make a copy, as mutated - records.append((archive_record_path, '', '')) - with CSVWriter(record_path) as writer: - for row in records: - writer.writerow(row) - - def write_records(self, info, libdir, archive_paths): - records = [] - distinfo, info_dir = info - # hasher = getattr(hashlib, self.hash_kind) - for ap, p in archive_paths: - with open(p, 'rb') as f: - data = f.read() - digest = '%s=%s' % self.get_hash(data) - size = os.path.getsize(p) - records.append((ap, digest, size)) - - p = os.path.join(distinfo, 'RECORD') - ap = to_posix(os.path.join(info_dir, 'RECORD')) - self.write_record(records, p, ap) - archive_paths.append((ap, p)) - - def build_zip(self, pathname, archive_paths): - with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: - for ap, p in archive_paths: - logger.debug('Wrote %s to %s in wheel', p, ap) - zf.write(p, ap) - - def build(self, paths, tags=None, wheel_version=None): - """ - Build a wheel from files in specified paths, and use any specified tags - when determining the name of the wheel. - """ - if tags is None: - tags = {} - - libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] - if libkey == 'platlib': - is_pure = 'false' - default_pyver = [IMPVER] - default_abi = [ABI] - default_arch = [ARCH] - else: - is_pure = 'true' - default_pyver = [PYVER] - default_abi = ['none'] - default_arch = ['any'] - - self.pyver = tags.get('pyver', default_pyver) - self.abi = tags.get('abi', default_abi) - self.arch = tags.get('arch', default_arch) - - libdir = paths[libkey] - - name_ver = '%s-%s' % (self.name, self.version) - data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - archive_paths = [] - - # First, stuff which is not in site-packages - for key in ('data', 'headers', 'scripts'): - if key not in paths: - continue - path = paths[key] - if os.path.isdir(path): - for root, dirs, files in os.walk(path): - for fn in files: - p = fsdecode(os.path.join(root, fn)) - rp = os.path.relpath(p, path) - ap = to_posix(os.path.join(data_dir, key, rp)) - archive_paths.append((ap, p)) - if key == 'scripts' and not p.endswith('.exe'): - with open(p, 'rb') as f: - data = f.read() - data = self.process_shebang(data) - with open(p, 'wb') as f: - f.write(data) - - # Now, stuff which is in site-packages, other than the - # distinfo stuff. - path = libdir - distinfo = None - for root, dirs, files in os.walk(path): - if root == path: - # At the top level only, save distinfo for later - # and skip it for now - for i, dn in enumerate(dirs): - dn = fsdecode(dn) - if dn.endswith('.dist-info'): - distinfo = os.path.join(root, dn) - del dirs[i] - break - assert distinfo, '.dist-info directory expected, not found' - - for fn in files: - # comment out next suite to leave .pyc files in - if fsdecode(fn).endswith(('.pyc', '.pyo')): - continue - p = os.path.join(root, fn) - rp = to_posix(os.path.relpath(p, path)) - archive_paths.append((rp, p)) - - # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. - files = os.listdir(distinfo) - for fn in files: - if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): - p = fsdecode(os.path.join(distinfo, fn)) - ap = to_posix(os.path.join(info_dir, fn)) - archive_paths.append((ap, p)) - - wheel_metadata = [ - 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), - 'Generator: distlib %s' % __version__, - 'Root-Is-Purelib: %s' % is_pure, - ] - for pyver, abi, arch in self.tags: - wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) - p = os.path.join(distinfo, 'WHEEL') - with open(p, 'w') as f: - f.write('\n'.join(wheel_metadata)) - ap = to_posix(os.path.join(info_dir, 'WHEEL')) - archive_paths.append((ap, p)) - - # sort the entries by archive path. Not needed by any spec, but it - # keeps the archive listing and RECORD tidier than they would otherwise - # be. Use the number of path segments to keep directory entries together, - # and keep the dist-info stuff at the end. - def sorter(t): - ap = t[0] - n = ap.count('/') - if '.dist-info' in ap: - n += 10000 - return (n, ap) - - archive_paths = sorted(archive_paths, key=sorter) - - # Now, at last, RECORD. - # Paths in here are archive paths - nothing else makes sense. - self.write_records((distinfo, info_dir), libdir, archive_paths) - # Now, ready to build the zip file - pathname = os.path.join(self.dirname, self.filename) - self.build_zip(pathname, archive_paths) - return pathname - - def skip_entry(self, arcname): - """ - Determine whether an archive entry should be skipped when verifying - or installing. - """ - # The signature file won't be in RECORD, - # and we don't currently don't do anything with it - # We also skip directories, as they won't be in RECORD - # either. See: - # - # https://github.com/pypa/wheel/issues/294 - # https://github.com/pypa/wheel/issues/287 - # https://github.com/pypa/wheel/pull/289 - # - return arcname.endswith(('/', '/RECORD.jws')) - - def install(self, paths, maker, **kwargs): - """ - Install a wheel to the specified paths. If kwarg ``warner`` is - specified, it should be a callable, which will be called with two - tuples indicating the wheel version of this software and the wheel - version in the file, if there is a discrepancy in the versions. - This can be used to issue any warnings to raise any exceptions. - If kwarg ``lib_only`` is True, only the purelib/platlib files are - installed, and the headers, scripts, data and dist-info metadata are - not written. If kwarg ``bytecode_hashed_invalidation`` is True, written - bytecode will try to use file-hash based invalidation (PEP-552) on - supported interpreter versions (CPython 2.7+). - - The return value is a :class:`InstalledDistribution` instance unless - ``options.lib_only`` is True, in which case the return value is ``None``. - """ - - dry_run = maker.dry_run - warner = kwargs.get('warner') - lib_only = kwargs.get('lib_only', False) - bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', - False) - - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) - wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') - record_name = posixpath.join(info_dir, 'RECORD') - - wrapper = codecs.getreader('utf-8') - - with ZipFile(pathname, 'r') as zf: - with zf.open(wheel_metadata_name) as bwf: - wf = wrapper(bwf) - message = message_from_file(wf) - wv = message['Wheel-Version'].split('.', 1) - file_version = tuple([int(i) for i in wv]) - if (file_version != self.wheel_version) and warner: - warner(self.wheel_version, file_version) - - if message['Root-Is-Purelib'] == 'true': - libdir = paths['purelib'] - else: - libdir = paths['platlib'] - - records = {} - with zf.open(record_name) as bf: - with CSVReader(stream=bf) as reader: - for row in reader: - p = row[0] - records[p] = row - - data_pfx = posixpath.join(data_dir, '') - info_pfx = posixpath.join(info_dir, '') - script_pfx = posixpath.join(data_dir, 'scripts', '') - - # make a new instance rather than a copy of maker's, - # as we mutate it - fileop = FileOperator(dry_run=dry_run) - fileop.record = True # so we can rollback if needed - - bc = not sys.dont_write_bytecode # Double negatives. Lovely! - - outfiles = [] # for RECORD writing - - # for script copying/shebang processing - workdir = tempfile.mkdtemp() - # set target dir later - # we default add_launchers to False, as the - # Python Launcher should be used instead - maker.source_dir = workdir - maker.target_dir = None - try: - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - if self.skip_entry(u_arcname): - continue - row = records[u_arcname] - if row[2] and str(zinfo.file_size) != row[2]: - raise DistlibException('size mismatch for ' - '%s' % u_arcname) - if row[1]: - kind, value = row[1].split('=', 1) - with zf.open(arcname) as bf: - data = bf.read() - _, digest = self.get_hash(data, kind) - if digest != value: - raise DistlibException('digest mismatch for ' - '%s' % arcname) - - if lib_only and u_arcname.startswith((info_pfx, data_pfx)): - logger.debug('lib_only: skipping %s', u_arcname) - continue - is_script = (u_arcname.startswith(script_pfx) - and not u_arcname.endswith('.exe')) - - if u_arcname.startswith(data_pfx): - _, where, rp = u_arcname.split('/', 2) - outfile = os.path.join(paths[where], convert_path(rp)) - else: - # meant for site-packages. - if u_arcname in (wheel_metadata_name, record_name): - continue - outfile = os.path.join(libdir, convert_path(u_arcname)) - if not is_script: - with zf.open(arcname) as bf: - fileop.copy_stream(bf, outfile) - # Issue #147: permission bits aren't preserved. Using - # zf.extract(zinfo, libdir) should have worked, but didn't, - # see https://www.thetopsites.net/article/53834422.shtml - # So ... manually preserve permission bits as given in zinfo - if os.name == 'posix': - # just set the normal permission bits - os.chmod(outfile, - (zinfo.external_attr >> 16) & 0x1FF) - outfiles.append(outfile) - # Double check the digest of the written file - if not dry_run and row[1]: - with open(outfile, 'rb') as bf: - data = bf.read() - _, newdigest = self.get_hash(data, kind) - if newdigest != digest: - raise DistlibException('digest mismatch ' - 'on write for ' - '%s' % outfile) - if bc and outfile.endswith('.py'): - try: - pyc = fileop.byte_compile( - outfile, - hashed_invalidation=bc_hashed_invalidation) - outfiles.append(pyc) - except Exception: - # Don't give up if byte-compilation fails, - # but log it and perhaps warn the user - logger.warning('Byte-compilation failed', - exc_info=True) - else: - fn = os.path.basename(convert_path(arcname)) - workname = os.path.join(workdir, fn) - with zf.open(arcname) as bf: - fileop.copy_stream(bf, workname) - - dn, fn = os.path.split(outfile) - maker.target_dir = dn - filenames = maker.make(fn) - fileop.set_executable_mode(filenames) - outfiles.extend(filenames) - - if lib_only: - logger.debug('lib_only: returning None') - dist = None - else: - # Generate scripts - - # Try to get pydist.json so we can see if there are - # any commands to generate. If this fails (e.g. because - # of a legacy wheel), log a warning but don't give up. - commands = None - file_version = self.info['Wheel-Version'] - if file_version == '1.0': - # Use legacy info - ep = posixpath.join(info_dir, 'entry_points.txt') - try: - with zf.open(ep) as bwf: - epdata = read_exports(bwf) - commands = {} - for key in ('console', 'gui'): - k = '%s_scripts' % key - if k in epdata: - commands['wrap_%s' % key] = d = {} - for v in epdata[k].values(): - s = '%s:%s' % (v.prefix, v.suffix) - if v.flags: - s += ' [%s]' % ','.join(v.flags) - d[v.name] = s - except Exception: - logger.warning('Unable to read legacy script ' - 'metadata, so cannot generate ' - 'scripts') - else: - try: - with zf.open(metadata_name) as bwf: - wf = wrapper(bwf) - commands = json.load(wf).get('extensions') - if commands: - commands = commands.get('python.commands') - except Exception: - logger.warning('Unable to read JSON metadata, so ' - 'cannot generate scripts') - if commands: - console_scripts = commands.get('wrap_console', {}) - gui_scripts = commands.get('wrap_gui', {}) - if console_scripts or gui_scripts: - script_dir = paths.get('scripts', '') - if not os.path.isdir(script_dir): - raise ValueError('Valid script path not ' - 'specified') - maker.target_dir = script_dir - for k, v in console_scripts.items(): - script = '%s = %s' % (k, v) - filenames = maker.make(script) - fileop.set_executable_mode(filenames) - - if gui_scripts: - options = {'gui': True} - for k, v in gui_scripts.items(): - script = '%s = %s' % (k, v) - filenames = maker.make(script, options) - fileop.set_executable_mode(filenames) - - p = os.path.join(libdir, info_dir) - dist = InstalledDistribution(p) - - # Write SHARED - paths = dict(paths) # don't change passed in dict - del paths['purelib'] - del paths['platlib'] - paths['lib'] = libdir - p = dist.write_shared_locations(paths, dry_run) - if p: - outfiles.append(p) - - # Write RECORD - dist.write_installed_files(outfiles, paths['prefix'], - dry_run) - return dist - except Exception: # pragma: no cover - logger.exception('installation failed.') - fileop.rollback() - raise - finally: - shutil.rmtree(workdir) - - def _get_dylib_cache(self): - global cache - if cache is None: - # Use native string to avoid issues on 2.x: see Python #20140. - base = os.path.join(get_cache_base(), str('dylib-cache'), - '%s.%s' % sys.version_info[:2]) - cache = Cache(base) - return cache - - def _get_extensions(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - arcname = posixpath.join(info_dir, 'EXTENSIONS') - wrapper = codecs.getreader('utf-8') - result = [] - with ZipFile(pathname, 'r') as zf: - try: - with zf.open(arcname) as bf: - wf = wrapper(bf) - extensions = json.load(wf) - cache = self._get_dylib_cache() - prefix = cache.prefix_to_dir(pathname) - cache_base = os.path.join(cache.base, prefix) - if not os.path.isdir(cache_base): - os.makedirs(cache_base) - for name, relpath in extensions.items(): - dest = os.path.join(cache_base, convert_path(relpath)) - if not os.path.exists(dest): - extract = True - else: - file_time = os.stat(dest).st_mtime - file_time = datetime.datetime.fromtimestamp( - file_time) - info = zf.getinfo(relpath) - wheel_time = datetime.datetime(*info.date_time) - extract = wheel_time > file_time - if extract: - zf.extract(relpath, cache_base) - result.append((name, dest)) - except KeyError: - pass - return result - - def is_compatible(self): - """ - Determine if a wheel is compatible with the running system. - """ - return is_compatible(self) - - def is_mountable(self): - """ - Determine if a wheel is asserted as mountable by its metadata. - """ - return True # for now - metadata details TBD - - def mount(self, append=False): - pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) - if not self.is_compatible(): - msg = 'Wheel %s not compatible with this Python.' % pathname - raise DistlibException(msg) - if not self.is_mountable(): - msg = 'Wheel %s is marked as not mountable.' % pathname - raise DistlibException(msg) - if pathname in sys.path: - logger.debug('%s already in path', pathname) - else: - if append: - sys.path.append(pathname) - else: - sys.path.insert(0, pathname) - extensions = self._get_extensions() - if extensions: - if _hook not in sys.meta_path: - sys.meta_path.append(_hook) - _hook.add(pathname, extensions) - - def unmount(self): - pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) - if pathname not in sys.path: - logger.debug('%s not in path', pathname) - else: - sys.path.remove(pathname) - if pathname in _hook.impure_wheels: - _hook.remove(pathname) - if not _hook.impure_wheels: - if _hook in sys.meta_path: - sys.meta_path.remove(_hook) - - def verify(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - # data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - # metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) - wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') - record_name = posixpath.join(info_dir, 'RECORD') - - wrapper = codecs.getreader('utf-8') - - with ZipFile(pathname, 'r') as zf: - with zf.open(wheel_metadata_name) as bwf: - wf = wrapper(bwf) - message_from_file(wf) - # wv = message['Wheel-Version'].split('.', 1) - # file_version = tuple([int(i) for i in wv]) - # TODO version verification - - records = {} - with zf.open(record_name) as bf: - with CSVReader(stream=bf) as reader: - for row in reader: - p = row[0] - records[p] = row - - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - # See issue #115: some wheels have .. in their entries, but - # in the filename ... e.g. __main__..py ! So the check is - # updated to look for .. in the directory portions - p = u_arcname.split('/') - if '..' in p: - raise DistlibException('invalid entry in ' - 'wheel: %r' % u_arcname) - - if self.skip_entry(u_arcname): - continue - row = records[u_arcname] - if row[2] and str(zinfo.file_size) != row[2]: - raise DistlibException('size mismatch for ' - '%s' % u_arcname) - if row[1]: - kind, value = row[1].split('=', 1) - with zf.open(arcname) as bf: - data = bf.read() - _, digest = self.get_hash(data, kind) - if digest != value: - raise DistlibException('digest mismatch for ' - '%s' % arcname) - - def update(self, modifier, dest_dir=None, **kwargs): - """ - Update the contents of a wheel in a generic way. The modifier should - be a callable which expects a dictionary argument: its keys are - archive-entry paths, and its values are absolute filesystem paths - where the contents the corresponding archive entries can be found. The - modifier is free to change the contents of the files pointed to, add - new entries and remove entries, before returning. This method will - extract the entire contents of the wheel to a temporary location, call - the modifier, and then use the passed (and possibly updated) - dictionary to write a new wheel. If ``dest_dir`` is specified, the new - wheel is written there -- otherwise, the original wheel is overwritten. - - The modifier should return True if it updated the wheel, else False. - This method returns the same value the modifier returns. - """ - - def get_version(path_map, info_dir): - version = path = None - key = '%s/%s' % (info_dir, LEGACY_METADATA_FILENAME) - if key not in path_map: - key = '%s/PKG-INFO' % info_dir - if key in path_map: - path = path_map[key] - version = Metadata(path=path).version - return version, path - - def update_version(version, path): - updated = None - try: - NormalizedVersion(version) - i = version.find('-') - if i < 0: - updated = '%s+1' % version - else: - parts = [int(s) for s in version[i + 1:].split('.')] - parts[-1] += 1 - updated = '%s+%s' % (version[:i], '.'.join( - str(i) for i in parts)) - except UnsupportedVersionError: - logger.debug( - 'Cannot update non-compliant (PEP-440) ' - 'version %r', version) - if updated: - md = Metadata(path=path) - md.version = updated - legacy = path.endswith(LEGACY_METADATA_FILENAME) - md.write(path=path, legacy=legacy) - logger.debug('Version updated from %r to %r', version, updated) - - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - record_name = posixpath.join(info_dir, 'RECORD') - with tempdir() as workdir: - with ZipFile(pathname, 'r') as zf: - path_map = {} - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - if u_arcname == record_name: - continue - if '..' in u_arcname: - raise DistlibException('invalid entry in ' - 'wheel: %r' % u_arcname) - zf.extract(zinfo, workdir) - path = os.path.join(workdir, convert_path(u_arcname)) - path_map[u_arcname] = path - - # Remember the version. - original_version, _ = get_version(path_map, info_dir) - # Files extracted. Call the modifier. - modified = modifier(path_map, **kwargs) - if modified: - # Something changed - need to build a new wheel. - current_version, path = get_version(path_map, info_dir) - if current_version and (current_version == original_version): - # Add or update local version to signify changes. - update_version(current_version, path) - # Decide where the new wheel goes. - if dest_dir is None: - fd, newpath = tempfile.mkstemp(suffix='.whl', - prefix='wheel-update-', - dir=workdir) - os.close(fd) - else: - if not os.path.isdir(dest_dir): - raise DistlibException('Not a directory: %r' % - dest_dir) - newpath = os.path.join(dest_dir, self.filename) - archive_paths = list(path_map.items()) - distinfo = os.path.join(workdir, info_dir) - info = distinfo, info_dir - self.write_records(info, workdir, archive_paths) - self.build_zip(newpath, archive_paths) - if dest_dir is None: - shutil.copyfile(newpath, pathname) - return modified - - -def _get_glibc_version(): - import platform - ver = platform.libc_ver() - result = [] - if ver[0] == 'glibc': - for s in ver[1].split('.'): - result.append(int(s) if s.isdigit() else 0) - result = tuple(result) - return result - - -def compatible_tags(): - """ - Return (pyver, abi, arch) tuples compatible with this Python. - """ - versions = [VER_SUFFIX] - major = VER_SUFFIX[0] - for minor in range(sys.version_info[1] - 1, -1, -1): - versions.append(''.join([major, str(minor)])) - - abis = [] - for suffix in _get_suffixes(): - if suffix.startswith('.abi'): - abis.append(suffix.split('.', 2)[1]) - abis.sort() - if ABI != 'none': - abis.insert(0, ABI) - abis.append('none') - result = [] - - arches = [ARCH] - if sys.platform == 'darwin': - m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) - if m: - name, major, minor, arch = m.groups() - minor = int(minor) - matches = [arch] - if arch in ('i386', 'ppc'): - matches.append('fat') - if arch in ('i386', 'ppc', 'x86_64'): - matches.append('fat3') - if arch in ('ppc64', 'x86_64'): - matches.append('fat64') - if arch in ('i386', 'x86_64'): - matches.append('intel') - if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): - matches.append('universal') - while minor >= 0: - for match in matches: - s = '%s_%s_%s_%s' % (name, major, minor, match) - if s != ARCH: # already there - arches.append(s) - minor -= 1 - - # Most specific - our Python version, ABI and arch - for abi in abis: - for arch in arches: - result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) - # manylinux - if abi != 'none' and sys.platform.startswith('linux'): - arch = arch.replace('linux_', '') - parts = _get_glibc_version() - if len(parts) == 2: - if parts >= (2, 5): - result.append((''.join((IMP_PREFIX, versions[0])), abi, - 'manylinux1_%s' % arch)) - if parts >= (2, 12): - result.append((''.join((IMP_PREFIX, versions[0])), abi, - 'manylinux2010_%s' % arch)) - if parts >= (2, 17): - result.append((''.join((IMP_PREFIX, versions[0])), abi, - 'manylinux2014_%s' % arch)) - result.append( - (''.join((IMP_PREFIX, versions[0])), abi, - 'manylinux_%s_%s_%s' % (parts[0], parts[1], arch))) - - # where no ABI / arch dependency, but IMP_PREFIX dependency - for i, version in enumerate(versions): - result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) - if i == 0: - result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) - - # no IMP_PREFIX, ABI or arch dependency - for i, version in enumerate(versions): - result.append((''.join(('py', version)), 'none', 'any')) - if i == 0: - result.append((''.join(('py', version[0])), 'none', 'any')) - - return set(result) - - -COMPATIBLE_TAGS = compatible_tags() - -del compatible_tags - - -def is_compatible(wheel, tags=None): - if not isinstance(wheel, Wheel): - wheel = Wheel(wheel) # assume it's a filename - result = False - if tags is None: - tags = COMPATIBLE_TAGS - for ver, abi, arch in tags: - if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: - result = True - break - return result diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py deleted file mode 100644 index 7686fe8..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py +++ /dev/null @@ -1,54 +0,0 @@ -from .distro import ( - NORMALIZED_DISTRO_ID, - NORMALIZED_LSB_ID, - NORMALIZED_OS_ID, - LinuxDistribution, - __version__, - build_number, - codename, - distro_release_attr, - distro_release_info, - id, - info, - like, - linux_distribution, - lsb_release_attr, - lsb_release_info, - major_version, - minor_version, - name, - os_release_attr, - os_release_info, - uname_attr, - uname_info, - version, - version_parts, -) - -__all__ = [ - "NORMALIZED_DISTRO_ID", - "NORMALIZED_LSB_ID", - "NORMALIZED_OS_ID", - "LinuxDistribution", - "build_number", - "codename", - "distro_release_attr", - "distro_release_info", - "id", - "info", - "like", - "linux_distribution", - "lsb_release_attr", - "lsb_release_info", - "major_version", - "minor_version", - "name", - "os_release_attr", - "os_release_info", - "uname_attr", - "uname_info", - "version", - "version_parts", -] - -__version__ = __version__ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py b/venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py deleted file mode 100644 index 0c01d5b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .distro import main - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 068fa6f19ba39e13cb8fc042395ca058dc154ba0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 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 for more information. -""" - -import argparse -import json -import logging -import os -import re -import shlex -import subprocess -import sys -import warnings -from typing import ( - Any, - Callable, - Dict, - Iterable, - Optional, - Sequence, - TextIO, - Tuple, - Type, -) - -try: - from typing import TypedDict -except ImportError: - # Python 3.7 - TypedDict = dict - -__version__ = "1.8.0" - - -class VersionDict(TypedDict): - major: str - minor: str - build_number: str - - -class InfoDict(TypedDict): - id: str - version: str - version_parts: VersionDict - like: str - codename: str - - -_UNIXCONFDIR = os.environ.get("UNIXCONFDIR", "/etc") -_UNIXUSRLIBDIR = os.environ.get("UNIXUSRLIBDIR", "/usr/lib") -_OS_RELEASE_BASENAME = "os-release" - -#: Translation table for normalizing the "ID" attribute defined in os-release -#: files, for use by the :func:`distro.id` method. -#: -#: * Key: Value as defined in the os-release file, translated to lower case, -#: with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_OS_ID = { - "ol": "oracle", # Oracle Linux - "opensuse-leap": "opensuse", # Newer versions of OpenSuSE report as opensuse-leap -} - -#: Translation table for normalizing the "Distributor ID" attribute returned by -#: the lsb_release command, for use by the :func:`distro.id` method. -#: -#: * Key: Value as returned by the lsb_release command, translated to lower -#: case, with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_LSB_ID = { - "enterpriseenterpriseas": "oracle", # Oracle Enterprise Linux 4 - "enterpriseenterpriseserver": "oracle", # Oracle Linux 5 - "redhatenterpriseworkstation": "rhel", # RHEL 6, 7 Workstation - "redhatenterpriseserver": "rhel", # RHEL 6, 7 Server - "redhatenterprisecomputenode": "rhel", # RHEL 6 ComputeNode -} - -#: Translation table for normalizing the distro ID derived from the file name -#: of distro release files, for use by the :func:`distro.id` method. -#: -#: * Key: Value as derived from the file name of a distro release file, -#: translated to lower case, with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_DISTRO_ID = { - "redhat": "rhel", # RHEL 6.x, 7.x -} - -# Pattern for content of distro release file (reversed) -_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( - r"(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)" -) - -# Pattern for base file name of distro release file -_DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") - -# Base file names to be looked up for if _UNIXCONFDIR is not readable. -_DISTRO_RELEASE_BASENAMES = [ - "SuSE-release", - "arch-release", - "base-release", - "centos-release", - "fedora-release", - "gentoo-release", - "mageia-release", - "mandrake-release", - "mandriva-release", - "mandrivalinux-release", - "manjaro-release", - "oracle-release", - "redhat-release", - "rocky-release", - "sl-release", - "slackware-version", -] - -# Base file names to be ignored when searching for distro release file -_DISTRO_RELEASE_IGNORE_BASENAMES = ( - "debian_version", - "lsb-release", - "oem-release", - _OS_RELEASE_BASENAME, - "system-release", - "plesk-release", - "iredmail-release", -) - - -def linux_distribution(full_distribution_name: bool = True) -> Tuple[str, str, str]: - """ - .. deprecated:: 1.6.0 - - :func:`distro.linux_distribution()` is deprecated. It should only be - used as a compatibility shim with Python's - :py:func:`platform.linux_distribution()`. Please use :func:`distro.id`, - :func:`distro.version` and :func:`distro.name` instead. - - Return information about the current OS distribution as a tuple - ``(id_name, version, codename)`` with items as follows: - - * ``id_name``: If *full_distribution_name* is false, the result of - :func:`distro.id`. Otherwise, the result of :func:`distro.name`. - - * ``version``: The result of :func:`distro.version`. - - * ``codename``: The extra item (usually in parentheses) after the - os-release version number, or the result of :func:`distro.codename`. - - The interface of this function is compatible with the original - :py:func:`platform.linux_distribution` function, supporting a subset of - its parameters. - - The data it returns may not exactly be the same, because it uses more data - sources than the original function, and that may lead to different data if - the OS distribution is not consistent across multiple data sources it - provides (there are indeed such distributions ...). - - Another reason for differences is the fact that the :func:`distro.id` - method normalizes the distro ID string to a reliable machine-readable value - for a number of popular OS distributions. - """ - warnings.warn( - "distro.linux_distribution() is deprecated. It should only be used as a " - "compatibility shim with Python's platform.linux_distribution(). Please use " - "distro.id(), distro.version() and distro.name() instead.", - DeprecationWarning, - stacklevel=2, - ) - return _distro.linux_distribution(full_distribution_name) - - -def id() -> str: - """ - Return the distro ID of the current distribution, as a - machine-readable string. - - For a number of OS distributions, the returned distro ID value is - *reliable*, in the sense that it is documented and that it does not change - across releases of the distribution. - - This package maintains the following reliable distro ID values: - - ============== ========================================= - Distro ID Distribution - ============== ========================================= - "ubuntu" Ubuntu - "debian" Debian - "rhel" RedHat Enterprise Linux - "centos" CentOS - "fedora" Fedora - "sles" SUSE Linux Enterprise Server - "opensuse" openSUSE - "amzn" Amazon Linux - "arch" Arch Linux - "buildroot" Buildroot - "cloudlinux" CloudLinux OS - "exherbo" Exherbo Linux - "gentoo" GenToo Linux - "ibm_powerkvm" IBM PowerKVM - "kvmibm" KVM for IBM z Systems - "linuxmint" Linux Mint - "mageia" Mageia - "mandriva" Mandriva Linux - "parallels" Parallels - "pidora" Pidora - "raspbian" Raspbian - "oracle" Oracle Linux (and Oracle Enterprise Linux) - "scientific" Scientific Linux - "slackware" Slackware - "xenserver" XenServer - "openbsd" OpenBSD - "netbsd" NetBSD - "freebsd" FreeBSD - "midnightbsd" MidnightBSD - "rocky" Rocky Linux - "aix" AIX - "guix" Guix System - ============== ========================================= - - If you have a need to get distros for reliable IDs added into this set, - or if you find that the :func:`distro.id` function returns a different - distro ID for one of the listed distros, please create an issue in the - `distro issue tracker`_. - - **Lookup hierarchy and transformations:** - - First, the ID is obtained from the following sources, in the specified - order. The first available and non-empty value is used: - - * the value of the "ID" attribute of the os-release file, - - * the value of the "Distributor ID" attribute returned by the lsb_release - command, - - * the first part of the file name of the distro release file, - - The so determined ID value then passes the following transformations, - before it is returned by this method: - - * it is translated to lower case, - - * blanks (which should not be there anyway) are translated to underscores, - - * a normalization of the ID is performed, based upon - `normalization tables`_. The purpose of this normalization is to ensure - that the ID is as reliable as possible, even across incompatible changes - in the OS distributions. A common reason for an incompatible change is - the addition of an os-release file, or the addition of the lsb_release - command, with ID values that differ from what was previously determined - from the distro release file name. - """ - return _distro.id() - - -def name(pretty: bool = False) -> str: - """ - Return the name of the current OS distribution, as a human-readable - string. - - If *pretty* is false, the name is returned without version or codename. - (e.g. "CentOS Linux") - - If *pretty* is true, the version and codename are appended. - (e.g. "CentOS Linux 7.1.1503 (Core)") - - **Lookup hierarchy:** - - The name is obtained from the following sources, in the specified order. - The first available and non-empty value is used: - - * If *pretty* is false: - - - the value of the "NAME" attribute of the os-release file, - - - the value of the "Distributor ID" attribute returned by the lsb_release - command, - - - the value of the "" field of the distro release file. - - * If *pretty* is true: - - - the value of the "PRETTY_NAME" attribute of the os-release file, - - - the value of the "Description" attribute returned by the lsb_release - command, - - - the value of the "" field of the distro release file, appended - with the value of the pretty version ("" and "" - fields) of the distro release file, if available. - """ - return _distro.name(pretty) - - -def version(pretty: bool = False, best: bool = False) -> str: - """ - Return the version of the current OS distribution, as a human-readable - string. - - If *pretty* is false, the version is returned without codename (e.g. - "7.0"). - - If *pretty* is true, the codename in parenthesis is appended, if the - codename is non-empty (e.g. "7.0 (Maipo)"). - - Some distributions provide version numbers with different precisions in - the different sources of distribution information. Examining the different - sources in a fixed priority order does not always yield the most precise - version (e.g. for Debian 8.2, or CentOS 7.1). - - Some other distributions may not provide this kind of information. In these - cases, an empty string would be returned. This behavior can be observed - with rolling releases distributions (e.g. Arch Linux). - - The *best* parameter can be used to control the approach for the returned - version: - - If *best* is false, the first non-empty version number in priority order of - the examined sources is returned. - - If *best* is true, the most precise version number out of all examined - sources is returned. - - **Lookup hierarchy:** - - In all cases, the version number is obtained from the following sources. - If *best* is false, this order represents the priority order: - - * the value of the "VERSION_ID" attribute of the os-release file, - * the value of the "Release" attribute returned by the lsb_release - command, - * the version number parsed from the "" field of the first line - of the distro release file, - * the version number parsed from the "PRETTY_NAME" attribute of the - os-release file, if it follows the format of the distro release files. - * the version number parsed from the "Description" attribute returned by - the lsb_release command, if it follows the format of the distro release - files. - """ - return _distro.version(pretty, best) - - -def version_parts(best: bool = False) -> Tuple[str, str, str]: - """ - Return the version of the current OS distribution as a tuple - ``(major, minor, build_number)`` with items as follows: - - * ``major``: The result of :func:`distro.major_version`. - - * ``minor``: The result of :func:`distro.minor_version`. - - * ``build_number``: The result of :func:`distro.build_number`. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.version_parts(best) - - -def major_version(best: bool = False) -> str: - """ - Return the major version of the current OS distribution, as a string, - if provided. - Otherwise, the empty string is returned. The major version is the first - part of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.major_version(best) - - -def minor_version(best: bool = False) -> str: - """ - Return the minor version of the current OS distribution, as a string, - if provided. - Otherwise, the empty string is returned. The minor version is the second - part of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.minor_version(best) - - -def build_number(best: bool = False) -> str: - """ - Return the build number of the current OS distribution, as a string, - if provided. - Otherwise, the empty string is returned. The build number is the third part - of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.build_number(best) - - -def like() -> str: - """ - Return a space-separated list of distro IDs of distributions that are - closely related to the current OS distribution in regards to packaging - and programming interfaces, for example distributions the current - distribution is a derivative from. - - **Lookup hierarchy:** - - This information item is only provided by the os-release file. - For details, see the description of the "ID_LIKE" attribute in the - `os-release man page - `_. - """ - return _distro.like() - - -def codename() -> str: - """ - Return the codename for the release of the current OS distribution, - as a string. - - If the distribution does not have a codename, an empty string is returned. - - Note that the returned codename is not always really a codename. For - example, openSUSE returns "x86_64". This function does not handle such - cases in any special way and just returns the string it finds, if any. - - **Lookup hierarchy:** - - * the codename within the "VERSION" attribute of the os-release file, if - provided, - - * the value of the "Codename" attribute returned by the lsb_release - command, - - * the value of the "" field of the distro release file. - """ - return _distro.codename() - - -def info(pretty: bool = False, best: bool = False) -> InfoDict: - """ - Return certain machine-readable information items about the current OS - distribution in a dictionary, as shown in the following example: - - .. sourcecode:: python - - { - 'id': 'rhel', - 'version': '7.0', - 'version_parts': { - 'major': '7', - 'minor': '0', - 'build_number': '' - }, - 'like': 'fedora', - 'codename': 'Maipo' - } - - The dictionary structure and keys are always the same, regardless of which - information items are available in the underlying data sources. The values - for the various keys are as follows: - - * ``id``: The result of :func:`distro.id`. - - * ``version``: The result of :func:`distro.version`. - - * ``version_parts -> major``: The result of :func:`distro.major_version`. - - * ``version_parts -> minor``: The result of :func:`distro.minor_version`. - - * ``version_parts -> build_number``: The result of - :func:`distro.build_number`. - - * ``like``: The result of :func:`distro.like`. - - * ``codename``: The result of :func:`distro.codename`. - - For a description of the *pretty* and *best* parameters, see the - :func:`distro.version` method. - """ - return _distro.info(pretty, best) - - -def os_release_info() -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information items - from the os-release file data source of the current OS distribution. - - See `os-release file`_ for details about these information items. - """ - return _distro.os_release_info() - - -def lsb_release_info() -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information items - from the lsb_release command data source of the current OS distribution. - - See `lsb_release command output`_ for details about these information - items. - """ - return _distro.lsb_release_info() - - -def distro_release_info() -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information items - from the distro release file data source of the current OS distribution. - - See `distro release file`_ for details about these information items. - """ - return _distro.distro_release_info() - - -def uname_info() -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information items - from the distro release file data source of the current OS distribution. - """ - return _distro.uname_info() - - -def os_release_attr(attribute: str) -> str: - """ - Return a single named information item from the os-release file data source - of the current OS distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `os-release file`_ for details about these information items. - """ - return _distro.os_release_attr(attribute) - - -def lsb_release_attr(attribute: str) -> str: - """ - Return a single named information item from the lsb_release command output - data source of the current OS distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `lsb_release command output`_ for details about these information - items. - """ - return _distro.lsb_release_attr(attribute) - - -def distro_release_attr(attribute: str) -> str: - """ - Return a single named information item from the distro release file - data source of the current OS distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `distro release file`_ for details about these information items. - """ - return _distro.distro_release_attr(attribute) - - -def uname_attr(attribute: str) -> str: - """ - Return a single named information item from the distro release file - data source of the current OS distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - """ - return _distro.uname_attr(attribute) - - -try: - from functools import cached_property -except ImportError: - # Python < 3.8 - class cached_property: # type: ignore - """A version of @property which caches the value. On access, it calls the - underlying function and sets the value in `__dict__` so future accesses - will not re-call the property. - """ - - def __init__(self, f: Callable[[Any], Any]) -> None: - self._fname = f.__name__ - self._f = f - - def __get__(self, obj: Any, owner: Type[Any]) -> Any: - assert obj is not None, f"call {self._fname} on an instance" - ret = obj.__dict__[self._fname] = self._f(obj) - return ret - - -class LinuxDistribution: - """ - Provides information about a OS distribution. - - This package creates a private module-global instance of this class with - default initialization arguments, that is used by the - `consolidated accessor functions`_ and `single source accessor functions`_. - By using default initialization arguments, that module-global instance - returns data about the current OS distribution (i.e. the distro this - package runs on). - - Normally, it is not necessary to create additional instances of this class. - However, in situations where control is needed over the exact data sources - that are used, instances of this class can be created with a specific - distro release file, or a specific os-release file, or without invoking the - lsb_release command. - """ - - def __init__( - self, - include_lsb: Optional[bool] = None, - os_release_file: str = "", - distro_release_file: str = "", - include_uname: Optional[bool] = None, - root_dir: Optional[str] = None, - include_oslevel: Optional[bool] = None, - ) -> None: - """ - The initialization method of this class gathers information from the - available data sources, and stores that in private instance attributes. - Subsequent access to the information items uses these private instance - attributes, so that the data sources are read only once. - - Parameters: - - * ``include_lsb`` (bool): Controls whether the - `lsb_release command output`_ is included as a data source. - - If the lsb_release command is not available in the program execution - path, the data source for the lsb_release command will be empty. - - * ``os_release_file`` (string): The path name of the - `os-release file`_ that is to be used as a data source. - - An empty string (the default) will cause the default path name to - be used (see `os-release file`_ for details). - - If the specified or defaulted os-release file does not exist, the - data source for the os-release file will be empty. - - * ``distro_release_file`` (string): The path name of the - `distro release file`_ that is to be used as a data source. - - An empty string (the default) will cause a default search algorithm - to be used (see `distro release file`_ for details). - - If the specified distro release file does not exist, or if no default - distro release file can be found, the data source for the distro - release file will be empty. - - * ``include_uname`` (bool): Controls whether uname command output is - included as a data source. If the uname command is not available in - the program execution path the data source for the uname command will - be empty. - - * ``root_dir`` (string): The absolute path to the root directory to use - to find distro-related information files. Note that ``include_*`` - parameters must not be enabled in combination with ``root_dir``. - - * ``include_oslevel`` (bool): Controls whether (AIX) oslevel command - output is included as a data source. If the oslevel command is not - available in the program execution path the data source will be - empty. - - Public instance attributes: - - * ``os_release_file`` (string): The path name of the - `os-release file`_ that is actually used as a data source. The - empty string if no distro release file is used as a data source. - - * ``distro_release_file`` (string): The path name of the - `distro release file`_ that is actually used as a data source. The - empty string if no distro release file is used as a data source. - - * ``include_lsb`` (bool): The result of the ``include_lsb`` parameter. - This controls whether the lsb information will be loaded. - - * ``include_uname`` (bool): The result of the ``include_uname`` - parameter. This controls whether the uname information will - be loaded. - - * ``include_oslevel`` (bool): The result of the ``include_oslevel`` - parameter. This controls whether (AIX) oslevel information will be - loaded. - - * ``root_dir`` (string): The result of the ``root_dir`` parameter. - The absolute path to the root directory to use to find distro-related - information files. - - Raises: - - * :py:exc:`ValueError`: Initialization parameters combination is not - supported. - - * :py:exc:`OSError`: Some I/O issue with an os-release file or distro - release file. - - * :py:exc:`UnicodeError`: A data source has unexpected characters or - uses an unexpected encoding. - """ - self.root_dir = root_dir - self.etc_dir = os.path.join(root_dir, "etc") if root_dir else _UNIXCONFDIR - self.usr_lib_dir = ( - os.path.join(root_dir, "usr/lib") if root_dir else _UNIXUSRLIBDIR - ) - - if os_release_file: - self.os_release_file = os_release_file - else: - etc_dir_os_release_file = os.path.join(self.etc_dir, _OS_RELEASE_BASENAME) - usr_lib_os_release_file = os.path.join( - self.usr_lib_dir, _OS_RELEASE_BASENAME - ) - - # NOTE: The idea is to respect order **and** have it set - # at all times for API backwards compatibility. - if os.path.isfile(etc_dir_os_release_file) or not os.path.isfile( - usr_lib_os_release_file - ): - self.os_release_file = etc_dir_os_release_file - else: - self.os_release_file = usr_lib_os_release_file - - self.distro_release_file = distro_release_file or "" # updated later - - is_root_dir_defined = root_dir is not None - if is_root_dir_defined and (include_lsb or include_uname or include_oslevel): - raise ValueError( - "Including subprocess data sources from specific root_dir is disallowed" - " to prevent false information" - ) - self.include_lsb = ( - include_lsb if include_lsb is not None else not is_root_dir_defined - ) - self.include_uname = ( - include_uname if include_uname is not None else not is_root_dir_defined - ) - self.include_oslevel = ( - include_oslevel if include_oslevel is not None else not is_root_dir_defined - ) - - def __repr__(self) -> str: - """Return repr of all info""" - return ( - "LinuxDistribution(" - "os_release_file={self.os_release_file!r}, " - "distro_release_file={self.distro_release_file!r}, " - "include_lsb={self.include_lsb!r}, " - "include_uname={self.include_uname!r}, " - "include_oslevel={self.include_oslevel!r}, " - "root_dir={self.root_dir!r}, " - "_os_release_info={self._os_release_info!r}, " - "_lsb_release_info={self._lsb_release_info!r}, " - "_distro_release_info={self._distro_release_info!r}, " - "_uname_info={self._uname_info!r}, " - "_oslevel_info={self._oslevel_info!r})".format(self=self) - ) - - def linux_distribution( - self, full_distribution_name: bool = True - ) -> Tuple[str, str, str]: - """ - Return information about the OS distribution that is compatible - with Python's :func:`platform.linux_distribution`, supporting a subset - of its parameters. - - For details, see :func:`distro.linux_distribution`. - """ - return ( - self.name() if full_distribution_name else self.id(), - self.version(), - self._os_release_info.get("release_codename") or self.codename(), - ) - - def id(self) -> str: - """Return the distro ID of the OS distribution, as a string. - - For details, see :func:`distro.id`. - """ - - def normalize(distro_id: str, table: Dict[str, str]) -> str: - distro_id = distro_id.lower().replace(" ", "_") - return table.get(distro_id, distro_id) - - distro_id = self.os_release_attr("id") - if distro_id: - return normalize(distro_id, NORMALIZED_OS_ID) - - distro_id = self.lsb_release_attr("distributor_id") - if distro_id: - return normalize(distro_id, NORMALIZED_LSB_ID) - - distro_id = self.distro_release_attr("id") - if distro_id: - return normalize(distro_id, NORMALIZED_DISTRO_ID) - - distro_id = self.uname_attr("id") - if distro_id: - return normalize(distro_id, NORMALIZED_DISTRO_ID) - - return "" - - def name(self, pretty: bool = False) -> str: - """ - Return the name of the OS distribution, as a string. - - For details, see :func:`distro.name`. - """ - name = ( - self.os_release_attr("name") - or self.lsb_release_attr("distributor_id") - or self.distro_release_attr("name") - or self.uname_attr("name") - ) - if pretty: - name = self.os_release_attr("pretty_name") or self.lsb_release_attr( - "description" - ) - if not name: - name = self.distro_release_attr("name") or self.uname_attr("name") - version = self.version(pretty=True) - if version: - name = f"{name} {version}" - return name or "" - - def version(self, pretty: bool = False, best: bool = False) -> str: - """ - Return the version of the OS distribution, as a string. - - For details, see :func:`distro.version`. - """ - versions = [ - self.os_release_attr("version_id"), - self.lsb_release_attr("release"), - self.distro_release_attr("version_id"), - self._parse_distro_release_content(self.os_release_attr("pretty_name")).get( - "version_id", "" - ), - self._parse_distro_release_content( - self.lsb_release_attr("description") - ).get("version_id", ""), - self.uname_attr("release"), - ] - if self.uname_attr("id").startswith("aix"): - # On AIX platforms, prefer oslevel command output. - versions.insert(0, self.oslevel_info()) - elif self.id() == "debian" or "debian" in self.like().split(): - # On Debian-like, add debian_version file content to candidates list. - versions.append(self._debian_version) - version = "" - if best: - # This algorithm uses the last version in priority order that has - # the best precision. If the versions are not in conflict, that - # does not matter; otherwise, using the last one instead of the - # first one might be considered a surprise. - for v in versions: - if v.count(".") > version.count(".") or version == "": - version = v - else: - for v in versions: - if v != "": - version = v - break - if pretty and version and self.codename(): - version = f"{version} ({self.codename()})" - return version - - def version_parts(self, best: bool = False) -> Tuple[str, str, str]: - """ - Return the version of the OS distribution, as a tuple of version - numbers. - - For details, see :func:`distro.version_parts`. - """ - version_str = self.version(best=best) - if version_str: - version_regex = re.compile(r"(\d+)\.?(\d+)?\.?(\d+)?") - matches = version_regex.match(version_str) - if matches: - major, minor, build_number = matches.groups() - return major, minor or "", build_number or "" - return "", "", "" - - def major_version(self, best: bool = False) -> str: - """ - Return the major version number of the current distribution. - - For details, see :func:`distro.major_version`. - """ - return self.version_parts(best)[0] - - def minor_version(self, best: bool = False) -> str: - """ - Return the minor version number of the current distribution. - - For details, see :func:`distro.minor_version`. - """ - return self.version_parts(best)[1] - - def build_number(self, best: bool = False) -> str: - """ - Return the build number of the current distribution. - - For details, see :func:`distro.build_number`. - """ - return self.version_parts(best)[2] - - def like(self) -> str: - """ - Return the IDs of distributions that are like the OS distribution. - - For details, see :func:`distro.like`. - """ - return self.os_release_attr("id_like") or "" - - def codename(self) -> str: - """ - Return the codename of the OS distribution. - - For details, see :func:`distro.codename`. - """ - try: - # Handle os_release specially since distros might purposefully set - # this to empty string to have no codename - return self._os_release_info["codename"] - except KeyError: - return ( - self.lsb_release_attr("codename") - or self.distro_release_attr("codename") - or "" - ) - - def info(self, pretty: bool = False, best: bool = False) -> InfoDict: - """ - Return certain machine-readable information about the OS - distribution. - - For details, see :func:`distro.info`. - """ - return dict( - id=self.id(), - version=self.version(pretty, best), - version_parts=dict( - major=self.major_version(best), - minor=self.minor_version(best), - build_number=self.build_number(best), - ), - like=self.like(), - codename=self.codename(), - ) - - def os_release_info(self) -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information - items from the os-release file data source of the OS distribution. - - For details, see :func:`distro.os_release_info`. - """ - return self._os_release_info - - def lsb_release_info(self) -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information - items from the lsb_release command data source of the OS - distribution. - - For details, see :func:`distro.lsb_release_info`. - """ - return self._lsb_release_info - - def distro_release_info(self) -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information - items from the distro release file data source of the OS - distribution. - - For details, see :func:`distro.distro_release_info`. - """ - return self._distro_release_info - - def uname_info(self) -> Dict[str, str]: - """ - Return a dictionary containing key-value pairs for the information - items from the uname command data source of the OS distribution. - - For details, see :func:`distro.uname_info`. - """ - return self._uname_info - - def oslevel_info(self) -> str: - """ - Return AIX' oslevel command output. - """ - return self._oslevel_info - - def os_release_attr(self, attribute: str) -> str: - """ - Return a single named information item from the os-release file data - source of the OS distribution. - - For details, see :func:`distro.os_release_attr`. - """ - return self._os_release_info.get(attribute, "") - - def lsb_release_attr(self, attribute: str) -> str: - """ - Return a single named information item from the lsb_release command - output data source of the OS distribution. - - For details, see :func:`distro.lsb_release_attr`. - """ - return self._lsb_release_info.get(attribute, "") - - def distro_release_attr(self, attribute: str) -> str: - """ - Return a single named information item from the distro release file - data source of the OS distribution. - - For details, see :func:`distro.distro_release_attr`. - """ - return self._distro_release_info.get(attribute, "") - - def uname_attr(self, attribute: str) -> str: - """ - Return a single named information item from the uname command - output data source of the OS distribution. - - For details, see :func:`distro.uname_attr`. - """ - return self._uname_info.get(attribute, "") - - @cached_property - def _os_release_info(self) -> Dict[str, str]: - """ - Get the information items from the specified os-release file. - - Returns: - A dictionary containing all information items. - """ - if os.path.isfile(self.os_release_file): - with open(self.os_release_file, encoding="utf-8") as release_file: - return self._parse_os_release_content(release_file) - return {} - - @staticmethod - def _parse_os_release_content(lines: TextIO) -> Dict[str, str]: - """ - Parse the lines of an os-release file. - - Parameters: - - * lines: Iterable through the lines in the os-release file. - Each line must be a unicode string or a UTF-8 encoded byte - string. - - Returns: - A dictionary containing all information items. - """ - props = {} - lexer = shlex.shlex(lines, posix=True) - lexer.whitespace_split = True - - tokens = list(lexer) - for token in tokens: - # At this point, all shell-like parsing has been done (i.e. - # comments processed, quotes and backslash escape sequences - # processed, multi-line values assembled, trailing newlines - # stripped, etc.), so the tokens are now either: - # * variable assignments: var=value - # * commands or their arguments (not allowed in os-release) - # Ignore any tokens that are not variable assignments - if "=" in token: - k, v = token.split("=", 1) - props[k.lower()] = v - - if "version" in props: - # extract release codename (if any) from version attribute - match = re.search(r"\((\D+)\)|,\s*(\D+)", props["version"]) - if match: - release_codename = match.group(1) or match.group(2) - props["codename"] = props["release_codename"] = release_codename - - if "version_codename" in props: - # os-release added a version_codename field. Use that in - # preference to anything else Note that some distros purposefully - # do not have code names. They should be setting - # version_codename="" - props["codename"] = props["version_codename"] - elif "ubuntu_codename" in props: - # Same as above but a non-standard field name used on older Ubuntus - props["codename"] = props["ubuntu_codename"] - - return props - - @cached_property - def _lsb_release_info(self) -> Dict[str, str]: - """ - Get the information items from the lsb_release command output. - - Returns: - A dictionary containing all information items. - """ - if not self.include_lsb: - return {} - try: - cmd = ("lsb_release", "-a") - stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) - # Command not found or lsb_release returned error - except (OSError, subprocess.CalledProcessError): - return {} - content = self._to_str(stdout).splitlines() - return self._parse_lsb_release_content(content) - - @staticmethod - def _parse_lsb_release_content(lines: Iterable[str]) -> Dict[str, str]: - """ - Parse the output of the lsb_release command. - - Parameters: - - * lines: Iterable through the lines of the lsb_release output. - Each line must be a unicode string or a UTF-8 encoded byte - string. - - Returns: - A dictionary containing all information items. - """ - props = {} - for line in lines: - kv = line.strip("\n").split(":", 1) - if len(kv) != 2: - # Ignore lines without colon. - continue - k, v = kv - props.update({k.replace(" ", "_").lower(): v.strip()}) - return props - - @cached_property - def _uname_info(self) -> Dict[str, str]: - if not self.include_uname: - return {} - try: - cmd = ("uname", "-rs") - stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) - except OSError: - return {} - content = self._to_str(stdout).splitlines() - return self._parse_uname_content(content) - - @cached_property - def _oslevel_info(self) -> str: - if not self.include_oslevel: - return "" - try: - stdout = subprocess.check_output("oslevel", stderr=subprocess.DEVNULL) - except (OSError, subprocess.CalledProcessError): - return "" - return self._to_str(stdout).strip() - - @cached_property - def _debian_version(self) -> str: - try: - with open( - os.path.join(self.etc_dir, "debian_version"), encoding="ascii" - ) as fp: - return fp.readline().rstrip() - except FileNotFoundError: - return "" - - @staticmethod - def _parse_uname_content(lines: Sequence[str]) -> Dict[str, str]: - if not lines: - return {} - props = {} - match = re.search(r"^([^\s]+)\s+([\d\.]+)", lines[0].strip()) - if match: - name, version = match.groups() - - # This is to prevent the Linux kernel version from - # appearing as the 'best' version on otherwise - # identifiable distributions. - if name == "Linux": - return {} - props["id"] = name.lower() - props["name"] = name - props["release"] = version - return props - - @staticmethod - def _to_str(bytestring: bytes) -> str: - encoding = sys.getfilesystemencoding() - return bytestring.decode(encoding) - - @cached_property - def _distro_release_info(self) -> Dict[str, str]: - """ - Get the information items from the specified distro release file. - - Returns: - A dictionary containing all information items. - """ - if self.distro_release_file: - # If it was specified, we use it and parse what we can, even if - # its file name or content does not match the expected pattern. - distro_info = self._parse_distro_release_file(self.distro_release_file) - basename = os.path.basename(self.distro_release_file) - # The file name pattern for user-specified distro release files - # is somewhat more tolerant (compared to when searching for the - # file), because we want to use what was specified as best as - # possible. - match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) - else: - try: - basenames = [ - basename - for basename in os.listdir(self.etc_dir) - if basename not in _DISTRO_RELEASE_IGNORE_BASENAMES - and os.path.isfile(os.path.join(self.etc_dir, basename)) - ] - # We sort for repeatability in cases where there are multiple - # distro specific files; e.g. CentOS, Oracle, Enterprise all - # containing `redhat-release` on top of their own. - basenames.sort() - except OSError: - # This may occur when /etc is not readable but we can't be - # sure about the *-release files. Check common entries of - # /etc for information. If they turn out to not be there the - # error is handled in `_parse_distro_release_file()`. - basenames = _DISTRO_RELEASE_BASENAMES - for basename in basenames: - match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) - if match is None: - continue - filepath = os.path.join(self.etc_dir, basename) - distro_info = self._parse_distro_release_file(filepath) - # The name is always present if the pattern matches. - if "name" not in distro_info: - continue - self.distro_release_file = filepath - break - else: # the loop didn't "break": no candidate. - return {} - - if match is not None: - distro_info["id"] = match.group(1) - - # CloudLinux < 7: manually enrich info with proper id. - if "cloudlinux" in distro_info.get("name", "").lower(): - distro_info["id"] = "cloudlinux" - - return distro_info - - def _parse_distro_release_file(self, filepath: str) -> Dict[str, str]: - """ - Parse a distro release file. - - Parameters: - - * filepath: Path name of the distro release file. - - Returns: - A dictionary containing all information items. - """ - try: - with open(filepath, encoding="utf-8") as fp: - # Only parse the first line. For instance, on SLES there - # are multiple lines. We don't want them... - return self._parse_distro_release_content(fp.readline()) - except OSError: - # Ignore not being able to read a specific, seemingly version - # related file. - # See https://github.com/python-distro/distro/issues/162 - return {} - - @staticmethod - def _parse_distro_release_content(line: str) -> Dict[str, str]: - """ - Parse a line from a distro release file. - - Parameters: - * line: Line from the distro release file. Must be a unicode string - or a UTF-8 encoded byte string. - - Returns: - A dictionary containing all information items. - """ - matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match(line.strip()[::-1]) - distro_info = {} - if matches: - # regexp ensures non-None - distro_info["name"] = matches.group(3)[::-1] - if matches.group(2): - distro_info["version_id"] = matches.group(2)[::-1] - if matches.group(1): - distro_info["codename"] = matches.group(1)[::-1] - elif line: - distro_info["name"] = line.strip() - return distro_info - - -_distro = LinuxDistribution() - - -def main() -> None: - logger = logging.getLogger(__name__) - logger.setLevel(logging.DEBUG) - logger.addHandler(logging.StreamHandler(sys.stdout)) - - parser = argparse.ArgumentParser(description="OS distro info tool") - parser.add_argument( - "--json", "-j", help="Output in machine readable format", action="store_true" - ) - - parser.add_argument( - "--root-dir", - "-r", - type=str, - dest="root_dir", - help="Path to the root filesystem directory (defaults to /)", - ) - - args = parser.parse_args() - - if args.root_dir: - dist = LinuxDistribution( - include_lsb=False, - include_uname=False, - include_oslevel=False, - root_dir=args.root_dir, - ) - else: - dist = _distro - - if args.json: - logger.info(json.dumps(dist.info(), indent=4, sort_keys=True)) - else: - logger.info("Name: %s", dist.name(pretty=True)) - distribution_version = dist.version(pretty=True) - logger.info("Version: %s", distribution_version) - distribution_codename = dist.codename() - logger.info("Codename: %s", distribution_codename) - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distro/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/distro/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py deleted file mode 100644 index a40eeaf..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -from .package_data import __version__ -from .core import ( - IDNABidiError, - IDNAError, - InvalidCodepoint, - InvalidCodepointContext, - alabel, - check_bidi, - check_hyphen_ok, - check_initial_combiner, - check_label, - check_nfc, - decode, - encode, - ulabel, - uts46_remap, - valid_contextj, - valid_contexto, - valid_label_length, - valid_string_length, -) -from .intranges import intranges_contain - -__all__ = [ - "IDNABidiError", - "IDNAError", - "InvalidCodepoint", - "InvalidCodepointContext", - "alabel", - "check_bidi", - "check_hyphen_ok", - "check_initial_combiner", - "check_label", - "check_nfc", - "decode", - "encode", - "intranges_contain", - "ulabel", - "uts46_remap", - "valid_contextj", - "valid_contexto", - "valid_label_length", - "valid_string_length", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e6f7b9dfd43e76c859b9923fac6096bf97c82392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmbu7JCD>b5P*|?WH*~+-?xYO2V2}31VR)D0SCo3Cmx*}%NzR=v#}jH-WA*POX&DZ zZmIYSRCtmTLRZjW$zNv1@w_}b%O-(eU&D{LANoP?1C+m4&nvI|Zmb6jSXc!z#9;_> zujmpjw9k1LZFL}NvJMYfTI=MX6C09i6-KH}L zC9I$o$+g@G#f?ikd*>nU6m^@si1FNqb`e+I_t5>49BlLS88KYa+D+ROy|Xrv&-Zlg zmfd-KlT=(4wsfn`)>tD{acA_6S@;qSRRwQacT}kD%J|0&%m6S1M1T=s42S{n@+JYK zfDAANoB?KlIbZ=;0#<;v$IbSEOKY0%X~7AjmKqooH^{Z&{}uY5QC<9}(l$poB7{~I zA>RY@5K;sD+M!ZQj*5fGjn28X0_~qSsL2hjecvu>%^Gy%>WC__L-om)T0OaZ{0KF| v@{7Bo8dQrK`GHeR8zh*bh!B_nLN4o*8^4g69V-43X0w5orosC#U8lX@-mvFZ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc deleted file mode 100644 index 49caa08dc14c21b199f62af8d7313d341ac85006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2821 zcmb7F&2QX96!-XhH@iu?Nn2V9B%vUd(%qHcqLd;9Dy zN^vCAEC%-}KDBZTwX(@hR8S~6NuFL7$RecOd@g&kp^!f z(iBa^TI;6QLTsE*AU2_}Da5AuBxV-h8+Wz#)H8FSBd6XtWJZzxi`_9v!pFIEL*XMt3 z-3w{v{!+uiJl59Tn=ESZ`w8>7Xcd&K?*rmgALe zvO?ct>+A_DST;ef%Jl-rxk0k0qe*iS#_+EfZ+)9&!@(ehT<{rXZ{~iG@Hk4AXXbud zn``SkI86fwMcV`$8)^4a=m$CIG%#Y3Y#Y+dMBD@NAt2whZ4FLf^TO}mPy3>~Jd8p} zLy_lE_raB{n}rYz(8T#c%Cqhxkv!_g(NcG?n%_^8OPz}sx>=Nq^MfFK5G;$VJBS8d zAE)sYx)D!;F5Pn28LX;35Y=}`xNMx6y2&Q>#|`DsPRWZ`dJZP=uaPfc5(nG5JaAZO zAqeDcm?AMvf{s>-lhh-vQoe?rk>!$!i*2U-+^$L2_miM6d|%dmzn}79O#O!MKO6?} zuExOo2Nze7*3xP&GHFCf>F06_m0{IW*44rBmyGVl)n@dwH6Sd+dY}+Ek5$oSkG~9= zTQb;023umpP**Y7Ly}n8!We>aTs|aPjtbeNT%&0E z8+QJSrkhC7Ew+YxS+fcg&J`xNPHEX3w`t6+t6EYkj7;HIHJU-1Wo->}&ze)13);Qo zYi?n0nz>cD>$n!v3J2y3jJL}g&Tw*@aOyw2$n8z1u(w!Yoz&K9N@tb20!I`m+qE)K z6gl7&o&Zjxc=k6I$vP@7KxH9U1&88`ob-oDL>%>bnrA);X=Q^r%B39)21sKdA1Ojf zb0v+E?K&JMWG{Z;Z5&ElWv@&&atI;{Nm`E5K{kvrNo3JuTv*NV>LutCfhv{|LFBl< zH0<>R_+>D>fmn6{#VA_p7%?VucdM;N6h%s}s-rIsUo4VP$J zltW5ae{yh_m8(BS#Z^*%M1n?#+)TWl$GStjtTG1X16?-m<{*OpcYui+7PpO;@4a$N zW%3Fx^8>9{-mb}jkXM?8%c!kP-4OvtQ}8LG`}|%l|2Zm_NckBF8kM(>odbm)@|#$* z85Fs;!Z^$Ib#28^5)(&m=T7c&{TE7o#-cRo&1pN*q%^Ib9F>k`E2?s08C-AxD=!LU z1EUgs^`r9DXoLtJ2OkDoJ!YA#sVD1pg0Cy3&B~670d+&lU**Y;@UI+O7HDW0b2O~> z=z#QinYzww{Pf+={tFfmZl925n8Lo}lu1dEoSqW6fkNt-yX<_G9_x}+_b!$Zx+m91$));xsD^oN!u`#XeKa z0T1h-3726LEh9>J1Tl{xSw}qKz1wKn!%hSVr0d`XK_x~d<$YB8d;lSj`4Brte1x3= zAI?dBe1{Yyr;fh5!-C|23n!v=@mEnv;o`bjLG2O^cB@6{_uda*2RJWq{z)-d@{`=q zIoZ(}-j{$VC5Ii=32Hl{k1+lH&MsvGY_qLOElaSrVpr#enNk<35}Q*cxnb8Ju325J zm}>2%6z|U7jG3t{oT{R{DmGx4sucT%+ql%M;-X-sY*b;-RO@;RIhkKfr?JQKd@0q( zm>y);o?Z7bcxn!wS`U5C6Ys+aE7xC0G{wu^iAP?2;st7E58iI}&Tx7|f6+Xc{dhh7 zG@E2^$K&&iOE8&`Hrv{&t_);TjI^BsN1_YAk?Ll>1&gNr?T=@Q#|ueE<_+S}wpW3`J{tp(G0<@&xZv@Y8254FGM dz>b4YzHcPo*6_i<2IKoF8vdA`1TVwq;XnGLs5Srq diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc deleted file mode 100644 index e41031312fc035685bef6ab5f2418d61c22f0cd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9707 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 H^2q-I+9BOl diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc deleted file mode 100644 index abba517732026352789b88b93b0feff22d53d710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38386 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 PxG4Vr?fZ7?j%)uvQ2+Rh diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc deleted file mode 100644 index fe9668162c91a0c067d8319c034003be1cb6ba12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1987 zcmZuyTW=IM6t?HG*=#NZ2#^4(EGTM53cCbeN);|@QTtL+33zGLYBCvnH>1qXOl%L3 zYF9jjN`2^$fXDu&dF@mFLSNGFcyfWNUfE+GpZj-?w_I50F^u>8#qj4D#{Q!;pXDGCdkb~?vlKW+n)4ZvS>M(<&5=y$X=^L zBqGm@73EN5g;gV^&AJ#TQi-}E;@WOmsbQVx2N77!ILUKS)Z-nc={7Hmk?7q527-@?3saT49Hm2s+Wy-AFCD^Aq+vcg@LIvZt0lDhz(+=5TSW@9COTFcAP z+HL1|6!m*Yz=u7Lye9Y&nP|dSb(O0oq_o6MM=M+FqMssTXM>;xM)|>D{{GPF2H>SZPklr=c()O6XGvSk9mC;IcK<}-vJx|}+Uj)r3T6^<5 zpq+*j?}KlHNhp2Dgpw2gHFoHI_j2#s}N>U0-*PV8sNc3Ms=NhDec^)^XuegLl0 zD4=vM=P-{mvH1w(O@bZ=)Ppc3V9NSEr|gAuuT@o~rBsqaFj+Cm&+F`@V8rI8cyM1# zNEcizN=v+!05yH5?dTZeh``jeM4hH%N^O;FLYIfe&sEWMlB$A=W+6tBU@~s+LZ>O} z=m4V4Tq_t;p`cEjn@ulIP&RLLW>v$pW+AP$M#;Ad{$lzvB>zbVyNGZwsp`CF45|a9u6WSjxHm9Rd$&r`y#$C2s;nBsV3VaDWU@#G z$b0KXzdC3xpPk~NF2~NzIaoJWv2?ou5BL&(E8OGD{3h@4uBWe1T%p6I@u4{NKsX(= zr|GJG9-9fCw8yC8Zy74jdwwK9a{)%4CL{XVDZx?oG95`!U>Z_2&)vD<`m_EbWPD6# zX$c#$^n_OLDI3xg=0Ddfpy$MO{O*WtARh1qyyBw#nUX zF~n1B=%Fn|iHnoxw8fv^y6twm-FJnqDVkT`M`4@r&Q6B6+BS3TH_p}2x@2hjQ;TNw z4SZZmnvN^_xbdsfGyyT9RkG2pZFv0OL|;6wIs6;gBrCpx9z#&|ym{XBm-!{sop(I% zFYzvR0oMdaG}p|;u`JU#);Dp6(F5uPO+}&!&$J()!;0qf2z@h`lqSFZcFf`0)&tothf diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc deleted file mode 100644 index 58281f0a0afa369dda9dfd0b3bbb6258dc4f587e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmYjLu?oU46ijp}N=HAUL;I9EIEeTK4!XI7n51oJn}j4S)Y+f$m%92FPNw4E!QFA( zgL^uT7bxI?&&4YEYYP9sAsho;6ojKI;`oA+*?pd8+f#zaB_X}APHIKS6WLj~`pUb2 zO1A>aPBN>R@Loc_bKsbzMyfJ3nmg!)>Yhe_Wr#)i&;@HXUu@)90f&GKoA53mkdJ~GD8NDWf#~b=bV-8G$RZRc$RCU#ybNsz8!{<7;>ieATuCA^+r>Z(^zw55MI)VO;O?>A!&w-;j_HP6#LVPUw@EoY*In9O{#loRpYwRYEwFTqvB>HL+__*HG8X zx?bKbbbEqLQ99}N1my7>E)>3OY@y^U;>g4qrpISI1?0 zZTLE}y(TW(!r|-5_S(2?ZwMD5+w0=8EgHU&YzxO_dsFykvb{bo+grl7lI;y~+1?hu zootK5WqU{XPO>c;m+f8QyUF&(xNPqU-%GYP#bsM8d>`4~9GC6=;Rnd}mbh#m3_nD+ zx5j1raQG3jy)7==;^7ixdwX2ACBu)B?HzI1mI{|9+dJd3EfX$Fws*y4TP|FlZ10ZC zwnDff+1?YEZKZH!vb{Gh+bZFzWLqpQ+iKzJWP4v+wl%^v$@c!ZY-@#UlkEd>**+Go zL$(jbWm`A=IN3fFm+cebdSv@>T((b!>yzyxaoIiO2hntganYe6QgjRtV4!0rO3US%C4YwoPigDSt4|gEjN^#kC40j^i%5m9t4tF8jDskC{!(GX? zYFxJ6!rjTXT3oh0!V$8q9+z#;a4)j05tnW6a38X*8JBI}a6huG6_;)Q@Bp%{9hYr1 zJdkW3i_3OUcre-4iOY6KcqrM{jmvgecsSWU9+&Ni@JOhewm` zlX2OmgvXF={kUvX!)avuR9v=W!{f;I>9}mihttXSnYe5-!V}20L0q;I!;{FiVO+M8 z!&At%QCzlD!_&z2*|=<{hi8y&Us> z6JATUt-HS1^@_BFu2-fd+?vq!D)W1_`Mt*cUTc1@Grxt+@Ac;Q2J>6Q{1!F8H=5s@ z%6RXWqwPW-!kU6tobcxe#@KR3g)+>`K@GrE1Tac=C`W(t!93! zo8KDdx2E~6Wqxa$-^a{v9rIh){621epD@4m%AP6^ZkE1>rSE0wVk~_hOW)7Z53uxuEd3BmKg`mPuyk>jF2T|zS^80yF2&NNDV?48 z0=0%Rpq1%|(q)-NImXMgbOn~K$kLTq8oP7*tisY&S-KiaS7+%ONCz#oCQH|1>Dny) z7)#e->AF6hRPZ>ZvlAO&LQPDf?6`+l{hM z$Fkii`%Em`gR%``*$8EE$lyRdDcdNP?M2yVW7*!6Z5+$?p=^^_wl8I$i)H&!wrMQe zpR&zj*#VS&K9-GAws|Z&kg_de*+Gbu2rKvM{7Nzzdl{db{`z+ z67AQe>!3lAvc0MeEIY7Ev{U~`-|nUR_X`g!JEUvhA!U0meJhqJU#{%H z$e^yJ`*-Tnt5f%`1IzZ0^e@|i%)YaHm0?%Jd(eeR+q0UAuQE z2Z#3)JnWT;(Fyc_D347Xgh@}U!^bnRF%F@GFdN@muVCj)a2My*WmLA2@FSGP$mQJB` zc4BL4c4I)-(GR6lSvrlS$FlS|mLAX2rZolo$zUAU*zJEJOHX3y$t*pErKhs=G?t#u z(lc0kCQHv^>Deqjho$GT^gNcH&(aH6dLc_MV(G;!y@aKgvh*^aPAbSm8dvUOVlk@r z<;Vs-b_GkXWa(8by_%)hu=HA=PAb5aFozhNM5$tLXV7uhGkpWn#^b`zlDN@}p@K~; zy_wS4i4DkNi>FBiTam^Y{9<=Mmh^324;5_p>7;@kNaIl1i51B0?Q~h&c9RNr0kD0I zA*0>S=oh$yQ-^5xdw_yk+UwIv1^bZ3=E0e+rOo$)*+Z76>;adJcBd5W>mY#HS5mv*IwjE-LZ>C#O6ZJ4+X%fY(RM=b zNwkB|`x5OW^npaX2z@BgZbBbPw1*nl$3Q`o_(aP4Xp2uJ+D|B3q636JljtC!&m}rU z=nIJs6Z%r3EJ9xq%1(STJ2Y@074IwzOz}bmU$gW%mOjtY7g#!nrE^(2kEQcjx`3s> zVd-yK`a72X7fXN7(*I`ZA6WW7Ed3)(|HRTiv-B@4{a=>;A4~tr(!a6vMV9`ZrT<{* zKUw-OmPXHVO(G#N=sSbawcZ$0A{0pkvMnYOl5!f!bZ6Ylg`_-=bIzDde+NWPiL zw@7&&$+t53HYqP4`F1AXA>~CR-^t{=q`ZXWyP15Cl$ViwFO!Q&c{$1VG5LNeuO#^a zCO;_U)g(W}$@Qf?p5&*P{Iry5NEmsB$ql@W@|-+G6X{4p$4uLL6W*W^+vHg% zo7#O7-k>p)n@Abn;5jBYl`_0RGbW=+#ReE}!W%SaatkNhW5XM?WbzAAhBs)%`>hBxTIKjVxe0S?pwcA~ZdTERkpjZLySX zu}sP|y@+HwWRC%Nv7BwOLdrOgl}uhGWw?vgOkU$;Q^J!ebiB0=+2gIFE!MFu);rm5 zftI>~$(x*Pw}y+@%;YUjwp(Y=@wPf-x7bEoY-3w&ce34LB5kolqDh2yI%IdUi*~Y$ z?PRx7RRNCb!prBKnmhyCx&oKF2DWglh$K>~=Je%YXnEauX=aT#plRuX7 ze3Cz5@~2W>NOCrlKa=uel0Rqimr_Qw{EEqErHtnPHIvUt8O{GZlP^da%|D09xl%^7 z%wuxClo2fpnEZ{D5iP%E@^?~3SNIo`zn3zi<-eKyA15b=!Xv18{Ot0!c_9A%!p#3G z`Jh<%1;u&g4I&j7I+_lmC+P5t9FAasmx$&3Mk7!0|C8 zCjz-iuax0el9*gb%7}oMG5K;SV_I+pldqJrne;OGYAIuwdkvGXmGYEJ#iL3aaoQ#x zVe}MFJfdkdJ78gXKn$F(XYvhFHq&S(7nQP^Ml<;)DP!P#Gm~$TvYAFR`8Fvd;@!^V zJEUx;(M-Ne%4QnPDc!%`FJj&!!Qidxi&EzsthASw`Uz9M8XL(b7gWpAs@v!<4K3i z!a$ql89j@^jK&q{d;$&H!ZM9S!f&oOzM zlcO)vDN|XuJ7CV}1TDo!b~qGmXKi+R(8q#Z4%ichFgmZ4w&jX3GbBy6da;1wa!?Oc^mEQafuLj zo&XBAs3&Di#-8-35FPaGjJHwU^&K=9_Y^|sQ+_wpFp$QwKk=rXCq??Z%}jaUF_T^< zN2P2gy-Xe?>w?DUI?H7Pq9SzLTm5vOscDL}#A#yach*LL^g9QXzI<>(HkxeDXmUhGw%J4KOn zfy^>mhCrw2=22vVM0E2gGEpLU-AO<}i6#sAG$y}Om^@X=Q)q|NB*F-OI#AHkW(fHd z-G++Hl!$IaMP^Avx1l1lC8FCoIf`{Zx@7+KGtXm{P$huV`gsj^nLdd$^AyZ#xFlfHRA#*}!5VY=;2yO8$iO?4BmI!U}9*GdP z?v)5(tC&FVrVzSMB8(gFmnfCc0}>&6Jtz^P*FzE^dOa)=qSqr5A$k>;2+^yAL$-Y( zdX;p@HULDgMA13#eGF*EDPuA*oXI1k497l_$uCJ6i+`h-{IZm>_&1u#DMEe^ zw#^mWvHjU{$ESJq-@=Pb2#`NASl4mh_wv;j9 zoWta~QpR%GJSNYVGKNnJn7mNR7(Ojx@?t4t__V~ymx_E<&D7bNs>n#pUVj9$Bz$?K$yUb~*j8=Pz}GJ5SsCU0`G zy~yabo0+`D$#!e>+O169CS~;6?M&X`WV>_p+MP_^C1v#5-AvviW%Sy;Ox`DD^xFMQ zJ|JcE+Jj6!BxUs4!%WVSGJ5S1FNY$pARSD(UKOVAV}b8AZ<-W&UCMYgQ`O$C-RW$`eUG$>g`BjG6k|Onyho=EfS6&qx{W;aw)bCuO*Y_nG{Gl;Ive zWb#K+hI{y!$)7mcw7d7s?25_RPBsneeYl6unEbhv&FqTFUrO1`u9$pQ%IM5rGx?m9 z&FqTF7o==vS4_^8vYA~mIp4|lyv^*2$=^8Hp0}A@G5I?wo7okUzn3yP^S_z=gOt&k z|HI@TrHsz}6O(_IGCK1wO#ZKw(V73pMYa2%EAGA3Ux<#dv- zVDgnxoYt_9a4tJxRc3uNf{pFZYJL&Wq6ExnOscD@EG?o`F<(GV?4m* z2c-;;@eq?AmNGoXBTOzXWq6DdOfD&9c#KDxTuRFD7^Rt9M#}IQWxY%j7o>wQSYDWZ zNN;mQDo8|cb3`giL~nCMDoI3db3`gjgd1~JB*HDEsuI!rEs<&x;eJeYiSWEq4T&}o zswok@dl9K65mwY|ON8a~$0Wk?c^!%Ha8q50u!8WoL|8$1LL#gn)RPD+2v16c6@>Z{ zVFlqSiLiq3v_x1zct#?uAT*E&D+moG!U{qoiLiq3tVCErXe<#{5SmDY6@=#`!U{rD zfj+_tLNkf5g7CaVSV3qm5mpddNQ4!HmJ(qF;RT5>4r>KuS~oodi*yhW(!D7Kk%SLd ze}o}lhBu%Y8ryIRL3OK37@4KILyJpfS*nzNK-UAiD}d=y0k-8=%4DlG zISU+A>;-QgisUl>H{*#{$LtFs9bAaZ7{7+`>lrV?_>GL0V7w&b=6kcpkuq|+KY1<)J` zZoR!K!A4tx4(_OQb-Ja zLyR9~{21dW8GnoMQ;eTs{9VS+GJb*aT*iN7{5QrEt_iL#)pH`!!BsEB_+^Y=$N2S( z7h(KH#!E0>lJWA4S75vnofi|;|&;Z#CQ|NTQc6-^Q1^yq#OD!v}yU- zP3S`H6kY)winRAz(wjv{2Q?UGyc^@g7*AzP9I5eg&nGvI}|m&`iwutcmu{8GTwyo zmW;Pzyfx!(7;ndTd&WC59%j57wofio z;|&;Z$aqu6TQDAGyc^>wjE`Y_EaT%CpU3z@#&#`sCb-(vhU z;~z5q5#t{-{t4q}8P8?>2gZM7{1?U(3%lz`qfw+|foA`dv-|K4S|x81iqu3pxYTtR zZ_D@?#?u%d%lJ6P$1^^O@yU#@Vth5@YZzbaIlc3RbnH|PPC0u3r?ShLT+%UC_|`kd z*W-4KS*$d#xI@ul-(>tKiLn;@CELqc zzn4%X;d=R84Lqk+ zFtzDqyJ-_<^1L#cVNIGdlUB-Pt~F`ROxh}wMb@MpGl?jZl(Sj5Q`6I%&_f$Y2d6Q> z^Q6c?wdwY=htaAAF_XdnG%*W95@+o=n}rpkns(M==w=PFqa2e|nt;@kQKm z={YE*g8_YmqA}hO>3}z3yeZ?Y7;nw^i;O2T-k$M}j89;EBI8pTpU(Jp#&jF)1(9OJbZugm!3j6cbEU&i}0KA7)~hZ()2Jj`pLZaT;eZLe z-z>m*cLJEHRr)xI(+AtYjMolkD2DeAW-2z5*eu2Hp1^FyW)qvE7~T|^s~BDtn5P)t z6_~FWUKUuO7^VaZ6~pTSixk8A0*f7s;u94FmN*bp0A3eZsuknR#5Tnc&bKRuaK1w^g!7$>A)N104B>pYVt8m`k79Ug zVy|L&Y+|2ccy409Vt8=kfMWQR(m}AGlO0w%9+1dV3{OZLQ4CM8y#f}vtK&!q?(hub zzcZe2x3j007mzk?tPx@=y}IDR9~PAHps|g*W!dKCyx7cIm-nE#1rsNq3Z09wKUFttVx_;|6qwXW>}zUM{N z@|Xt^Yf;C8J{HvVV1NaWdoa*~Cp;KxK|K$G%74-U^UUW7c-s0B!O=eDko8Bq@U+X* zjz!H?qUU)$2(C;64}vSx(1SMi928xGYUQ z2(Cgi51QLUJnunJ^UXbIMHZKgtCb(1slAP>Z;?F?BmVuLFR!(5#|SDAk)@?#h%7HS z77Z?XD-VKe+}eZS8o%g3uxrGMWXGbN?Mb)sU@#SyEZRB{Yy}VA&N265YkLn~w!7)z z!DtIQdJw#}+Q|cabc}Y|*@K{Kb@3o*#$gYFGwSL=P}puB1aI7S_aG=(4-bNOF(V!X z1?%a7DHy#z1Q0Z%VP3>%xTvcRXW}9!+BS(n#$tz}&)Mo+;(&QJ`UD0OOC5?9u{E*G zgOe6ydeGADWw`@(FNo$V9I^*T;9e;auG}hzqMhunS9{RWf;A4<{UDgGb;ve>-FS{} zonyxAB-+w?hist`N;i09#%Fu*4BJM}&;d@O?3*02$3)QF?2z3VV(S)%qFroJw>n^L z5JR^~gb=#jp=j7{w!;Ct8N%XDhfD!Z!fWkvDB8_#w%Y--*-?xr_Ba&nV{P_&fG;(Y z#Xbju-UC0i-?3=K8XfSUuLTD^7-g^bAqUK{Pr~^gmI%%_%b{pbyPqQ-m{*A@90LSR zIpH2k$5tcunJ3D@0zIVkG-~ZhOfRH#^8`54FIT#G1f1ztD&0H-&h)F5ZXN<>`n5_o zPk}SNu+q(A;7q?k>E=0brWaMZc@UiGH!0mb3C{Felx`jcXZmeQH_w7I{SKv@hryYC zm(tDC;7q?q>E>~8rWaGXc^;hU_bc5z5bpF#2EQtkeDK4^>*5Q352{0&hs@m}sewPN zbn}!s(~B$JJZ8@Hl1ewvnKQkV(#?bBOfRE!^Q1Y`%PAc%r<7-U1*PNdl!{ERq;xFa zRc3k>rQ_aCRi;-{I$ltz&h#2e#~Ug&nO;ljctxc)(;rhhM)-A@URUb-;Zh!F`V&fr zOR2~7CzTGDQlIHhDIG55X{JA;bhwlTOmC=kxRgdre^%*mDUF%lMCouT&oRBJ(&18? zG5vX^!=*H5dJCn)rL<)F3rdGeX~p!`N{35%k?F}whf8V0^tMWeOKHdS_DY9K>A>`k zPXEP(`~7e!otWO)={6efhfC?g^sv&=|GP51o6^z$yEDCq($W7TOz)|5^#5K=@2zz7 z|2|Cbt911LeoXJLboBoLOphuZ{eK|S2Pqx>e=yUBC>{NODAR{29sPee(?=*B{eL9W zUs5{y|0t%vtaSAM(M(T~`T_L+F-%WYI{JSa)5j_u{eK+O$15HEKi%n<3`tdg@*xQy zOpPxjWvD~KrA%;#q>waG>2N8Nm_AwQa4A!mK2_;(DbtufUFmQsGnhV8>2N8tm_A$S za4B<`zEJ3$PGTWvkz-MOWR^Bq%r;o+#j;jh#>7k~+75mI4q!RcS1270U?tO6DIE@A zHPhE99S&eE)7L2-4q!dgHz*wrU?bBvDIE@AGt;*y9S&eC)3+%d4q!XecPJeWU?90urARNG}On*)3 zZ~(6}{SBqV0ldldqe_PZIL7qjN=I)!!Ss_#M{j+L>2E6?z4aZYpHez{>uIK+Q963- zyG(yi>FBNRGyMalqqly@^pBK|0l>#h|3v8+0DQ{yY^7rW@EOxTS2_j&UoibkrDFi_ z71Pfu9sU1nrk_(f`u};RUr;*we-6`gm5%43DrEkAvP^#7jFLs%mZ}?<)JVA+GcxQ+FQ5_O4WaSvEa&WWtu|H+A+iZraLt<{9h9xL=k%7B z+76*9ndxnmj?mPW>Ftz`w$`5M9h8pH)DbMWrahF7_7_nM?XRa|Xn(yFL;LHk7}{SS z#nArxDu(vgPcgK={$N2_2RJ=C$c}NNOdRONAyyp3#KB%1YQ-T;9O}hkRvgB};a(hW z#Su&#=|%HdQ2JXoOdRFKk#@_M0fHu(;zYcTo$&Rc6#CFFJ-wmm7(-JPO*J%4(KJKH zDmvECaf*&JbiAVD4NX@x{nY+TM$782`)K(UoohVNk{%*)2a4hkVbIx6@Bn`XgTO=& z@V77sO!6Sxg2^6yX2BE>@W(J{lc^qjVZk&HzO-Pv1Hq-pG}SOe(dCBDRCI-*vlLxv z=xjw-89GPN)rQVhbd90&6kTiRd`F}BBOY{$3p~J|@F1|z1N@@TWY; zVu=U%LmmW{dVs&?L138&_*)(XG99q>cG%Y2az$;utx(j~+e$@ky{%Hz*4t`DZN05g z)YjWtMQy#Ub2N%SKtd<5-UIyk5ds@L_{M^b9(-%TCJ*puNNAJI9^j9V5ZL0u_ZDpR z0Dp&sJlZyZz@zPO;$Y(j4sSD8c&DT0vj?ZP8@S6s^Vx$_n+Vb*6flS|dyo$HyVo0= z{bubkyV&QcSqIEQ{NAq^;`af`4#V!CW7hX3MGkrJgFVs10OSYUUoXb!D9alKAHhE2 zjH38UEM)PD17>NW*gJ^1uX={k(?`k;ea-DFsHICb0Wpwo@G9$f9f9;Lz2^)QdQ7H@Ss8Q-$&ZqFT{P@Q}_!;9{>es`Vlkz#G9IP zI)bt9r;1_hn=RR4jJG~>EE)vK&jEsH_65@HjAolN`tlzXXY`e(=8VpQ24{30>DU?J zPgh-Fa=w@CS!B{q3lzhM})d3*?jM4bfCSA z|90SFVn-_C56A}f@gvga3~aYPWLo78Ylv{^IvVUzJ80HFK#b zT%p{fSCW;Pv*K?Ub)jv)){mR{pfVGRxeZRxRwP~nV4mluX(Q5Q zXwTVD3L|GWqX{6=L5nJaw7DKQopUMZBt@BiE7InQLofC=ChNC(JrsEm>0rN)Fkakq znmi$G&MPQpId4es2O@0>Kx^GpfF1Nds*6eZaNeOvYi8I1X?p` z6pS_*>jC~g8G&&gT(n@k2ftg8?g9Qz8Eul`!JigP@Zc{CCIXl%`nLs>yaoPR8SP`T zx4_>jBQV8-kOfmcNCKdnF94<`(BtJu9&`EtuuOa0_O8(8d;W zjt4JVi@6?juwb4Coh+E|K^F@aco1B)g&st##Uc;-S+LlH0RZ$VVt}B@XCfVVfpyL> zI}{yAcI&-HYxzhA+niziKc3TH0=SQCa8*Vmbt>D1>L`(efdoPTrdppPGXhBt7|;CL zwk~woLSQJ;CBsqqSyz(PM3~}l%AtzHKVtv!XvloM_ zev1Ryp}zgd_*Q0oyVKkQqIY=E3%jOOMi0#Mm9%uoHZSJH?9jkIWPG2`Ck^V_o51}Z zga-AYV?V$)e$Z*rQT8kzV&cPIoRMfw@ew8#_hPVR2_}~GV$e|@_28mCrBWU=wxF~J zrm2M@WdMTuEbGOfH<$OIr7d>_0Mp(nw0beInnQL&OlYb*t7{+c?`Oh(F|8#5NMuGv2*V%+nd zVju$B@`$+2J-#f!6^XVGv;rA}wiFb*K;V5rP}qXD60~AKTMJq#pf3uF{UU-V3tBm# zZ3Kla;(1#^aWv3&f?^M#?FFqG&<>u`2M|p4kZDH;ZG%aQbaEh@9)cl*&OT2IuK-;< z2t|faKJ4<*!MJ=$k**G8hlXH-Za$wh#O$HF2Zad0q=zS=2pVR@<)cA3?CC&uXc#u= z5bb13(Z_=zTJ-fGXqo*y2zq9J4}z9Czyti9PC9JV1N^a00s}q3pXwwq z$b+CZ277=%;7JxkJSbwpP!I4oJjr612l#7k1crMMRL2Mp@OM4QVx$K*Tkw(xov1!8 z84N4@?t>xz6li?GaFjnrP{l8M5LEGK4@?!)AAbWdU7H@^K{^-}jP;z>S=~ma%a^0p zTald1L~lWVj+|{d-E+FRbU*D8BLwr&y>l5G>3>u?r9HliG>f5-TZa;OnzG)?Ok*;( zoXfx~T;)8r8v{e3M>PG$bjt#1j9!R$V!SWo{XM5!Xb%J>HRJE|Dfn|OB^AR{2#_IT-?(BgnF7;;*f8F`u{>OB zf0jqY7{Kyykx`aM>=+o!S3uAhguES&7B63dz+eU{01RQEBEV1vDgg{*pfbR42C4vz zV4y0%NCv6_yu?6tfKeV4Do!;?IwMrO)UGo?Ok1XxU7UI`sdy)x&=LkZ11x2r3&1i4!T^~JbOl(>KsSID z40H!r$v_W)RSZM`Rx{8OU=0Jk0M;_l8(1N{ItGSDAj69WSPHZu?f z*uua-fUOJ+0@%jDV1Vrm3<21|z)*ml3=9L<#lUcY-3*KX*aKj^O)$~j>p?J(-seFO zBKCU_gopzk1mnYl9<;PB?2reo2wXChRqR5J+Rp1Lh2jlmhy5{vIaihk!C2sk2WFH? zcLqENrWLPx(8(73H4jYmqd%A8K`;}0!-HTh@TLb5yN{zD1kG@QslS?{p=2E@RkRIEqL35p%%R3K``Pt<-tg6aoPhj<)S}Z=|RvK-t{184DWdmG=}#* z2pYo&9t4fyLl1(+@R0{-4Acfc_8_=&pLh^lxlcU^u3WYU!Ik^WgW$@2?m=+nzVINp za$kB7T)D422(H{&4}vTAwFkkKJLf@g<<5H$T)7J#1XnJ{gW$^LdJtT>JP(2^m+wJv zr&$art`@hCf4)HpdM`<}yCdb6QX; z<@T6FyFIsU8x5G$$}?vUQ77@kVH zNijT?bhBc3g6)fXp7IyAe3@bYiC^n1OgNn^2_K;$8h&`;>Tw;$XHjh|w#pYi! zvQ{!*f}cpeDOx%1$XY@jW&s_#q+xf7T`t?cj`SW(k0^Zu z={=d=OX-_P@6Gf+PLH0j^Q^ueylX)}4~|>V--EZUw;uoy)JoKeL3wefaUjzND}4{? zLzw=O)1yJG9p%Ab8&6(#U@$eIgyZluqXjwvN0Z`_ao#(|&~e6q1?5atI^GCKWBOR7 zFAxynZ82lcq3pX(^n}SZv?Dn`WmInYU#E1u5wM==8W79q;$Lyu$k#w zl#Vw7wlaO2(zlboo#{K2j()n6>ARGU+wQxWzDMbJJb5qE_bD9@bM0sP0i~Naf|!0t z>F|q(nVzL|JidQ~>90tAC;I=ZOn*)3|381Y&i>7a3YE=Y2N7uF#SuV!=-%1^s`EbOZl4V z=ag<!HZcNC)$q-xz!Lk8Q;eEUdHz^euVK? z7(d4NamG(GeunXn8UKXwuNXhec>6N3I!-}4sN;oq!{LsNs3_vRmd^Bzx^0wU*?$I-vP|6 zE_ck@9l#vt3daJwOk!6$7T96Vd6i?vE@v!`d$nZa@Oa`ij+t$9#$n`qtz&lE@t7lC zrx@lbg%!iL*Gra;^4;K=Jw`g_-9;R;$H+jP7In_;Tqf~HVhvaP7+5|VAhw7sNb_88k%5PQ@ydyH+^wv=Pm zZaeN3mUhhAZO8Ib8Oipd36@n1-KLyk*tWc4SgNTY*?ufnRa6Y!wUT1!u9YP_h$XBl zj@k1#h+|ZB%$^7Ry#RXHL@_K$RF~{9>b{0z%Zb%g4A-reWJj<>R9mpz47AC|6hqss z3}K*=V|Lq3IL5P*ZALq7?3mr(W|XgqV|Lpu zsQc$6+lu;Ysu-4+nkk01`@CeP&ooyI+qQ7bmSr32zNKJ!W8foRaLkl1F9TnWYo!>j zd27WE5_?fGwDDxgCgA$EQ4Ha+tztO0c9KoRr(WAjHWka39TdYdV@Jtm!9RCW3@;IO zmTdNXVqF|Fb(J?8{xs~Et(Vzo2VE6I8|o(6TwKfUieX8yhhz&-rxC@lpw&~dh45>= z6hl4tmTVF1`bf46b=p@kw9|fyp-uLeY!!Ui0Lj+C??x4azZxjndbG7cj@dfhhW}5%Mru2$>@tv!|DZ zOZSps`6(DSjB?DJa()U%d@n18<}q3^R6~knV{qBWNS2DGpDI~8h7D4Kn+cLlK(m~v7((VG#c+uyOSS;3{ZkZ!%bF_Lattq~IcBa$ z{&JLgx?-r88IIZOu^P>Hrek*7HE61{9J6+7agAn6whqUgBiT0GS(+=^cHBXk=a@al zb_}uRJ7$lu9d)okvK?4nUntpbgu+FR+5PQ?D_ZQB-QONu-zAbAK>aOs%x-%S?RlAF zcH1mm-%Q7>op~Q{xnqGHM*b@VD@es%m6ei>Lpxn1Svu-vwPWTO1?jkMYZSx&);ea6 zTQCRpyiT&YxE|{zn~yNCL9&H#9UB#cE7~O4BDnm`k}W}5wkWog*jB~hX16JZ>A`l% zmZ7cfPz;}7-KiL^ET;gTH!Bvdy@i^}1v`af~-4+mE*Uren7K z?T3#&>X>b72e9oi$E@9fgT#(IX6+7Q2z^2^_^^|Tp$)y|nBCt&w7<6<3-*VY@{VMO zrV=})*eqhF6~hqqjAQl~hfwBs9ka(cjK2S#V(@kEJ7%}d!g+k482Z+Sj@kWXWztH^ zM__KHr5vU4R6_Iw?myAro&^Z*B88B~GER148IqEiRK-bVzvokCl3tbR)tnxEoZ|Q; z<9@YXKJJI(j{DW!F-#e9reNq^z^AK_&_1W97RH>0qU;oaZ#{ zMH+iI*Z%9V@T(ORgYT&**?5dGDoHjrl~`rT#>0P9Q4Bt>s$^r)pQ0t8dlkzdyC)UH^u4}f zh^0>{hJO6CVu&rzD2DjjKr!^~hKj+@G*S%9GtVkEomgYV;NO}k2A}erWaDsdO%+4j zY^E5-ZO;Jdpz-T1$+$Ihm0x+#Wn zY8ylq< z+Rn?0VXQn_vT=w9DT?8mk5LTQH&wE9wAnPpaNMzyjhlDLkY4?LAJXT?9n#0C!(fOy zUNJPIbjije>|`j0uron1H1mmy!5vOg4DN8UV(4B|6hm{Hsu*q-P6G>u8PkytMpQGM zZL~Vo32i*fgPIo1cEAMp3;PgE<_MOv2or|6f?e2$05eZ9G`9JQA?Pe{%s7s`*|@+9 z9gEhm1zF^PF}kqN415&BC}W9ZrocI?&^wkoX12{)4DYziv1lzEfJQ?A!SLn+(m{Rw z;5j{{T7kG3e&OB3;u!1Dt`ap(1r2GM2AZVlIM70xjt9L=({#|wHJt!@g{G50uheuh z=vA6d1-)9+X`t6=Ivw;{O=o~!r|C@4!jgWo&D7cTl75>yAGS9rI%ySX5k;3A0xhcO z+6>Se72P%)^d?EaOWg!|v!Zjxg5IL&Qgg<)D!OeQY;RL^|1QwmCH+^LIpaGNoouef zor=ye^>CM@->o!fe7C1pqV;_@f7N%HrpWjFL-^Ms5<-!CAq3&Mm^U(Q7k9C#toJEO z_n3*^uPAkUq7O)lj!*PKNiQ5QHU5yKIpa3N_F+jc>@$7h5lL|mnrw?pdSU+(&=Qj7 zOc?`OQqo+yHAD1KNpS;%Xemi^=~f5P(uyuN*SCzM1?i@pmz6Y!Zm7~8%1N3_w~>gJ zS2S}2Xaz+VoBFLNY2KXZjS-%97?y*biDo()=CEL90rdx7yTXHA!4k$Uv4Ahs+gvLel(nQ|t9K-HGx(32G+Cc(^8K4yG;jCEJf>qo*8;K0^WHQsa$^B&j`2X&=FHFF?4RG~cOpLhA> zP=yMVZ_e@+Dc^$SD^b2B%U7oS3oKuS@~vE+_Ft9qtzDk>UybrFvV3*QC&%&?%Tc}! z%cFd4SsvwU$MPs&dzMG}I8fF4T8sb5DbD-Jy>8bOqvG^Eg0*7xl)LMbg#^@UyNg+2uPC$$E+R2Kbkx^7Oib} zmf?UkqQFNp2gl3;CV`0_G_+ey@}P+YlRao`!4wY~SuoXuwiZnD;0X(+d(gmw84j4T z+!vxD2k9o~X!E!faC190f(M7hvt36n3!5R;iSg_UsQ)fAQvADHPvT0cC zS?`#w$H`du-yqo*ETC+ZjKV$L1QQIwo^FB(hEPv8!30B~r<-7cAE*W^suk?X;9o0j8fp-Tx1mfIIm(LDWtVa1=ERQ(1+vSr(l@RClusq`2UY19k z+sE>VbNgAo66FuDJmTCzmPZ^u#PTTLVVBPiRYLi)SRUm&;_}I%$|&C}E^qD|l*a&> zZjK39!NS)BtZ3ou0#>r{4FM}#_@;nWEIcY;RSS;^Sk1!Y0#>*1gol{9lrLxLNlAlq zdP~yaq~3NkJJh2)o%uU1pPbY+3UJDUP}d=pKkf5Ly$6K}oN>VPrSqv+uzOcAgx&WP zLmzoxF}Q~h6oYH|P%$jxeWVzI$j6FdaqbhvwiEkQG4%Cp#dZ_>OfmS!&lQ7T{z5VM zi7yp9OzbPgaFg_`WNGjTUn_6-z$a{ynic(#pWLr!+7UEiXl$^s2JMmPl}

    Ma9sbe^(6c`47iTOgf*2F#D%sXybo5 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%0D>mNK!PU2Ac7{tV1g#Y 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 Tuple[bytes, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return b"", 0 - - return encode(data), len(data) - - def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]: - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return '', 0 - - return decode(data), len(data) - -class IncrementalEncoder(codecs.BufferedIncrementalEncoder): - def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[str, int]: # type: ignore - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return "", 0 - - labels = _unicode_dots_re.split(data) - trailing_dot = '' - if labels: - if not labels[-1]: - trailing_dot = '.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = '.' - - result = [] - size = 0 - for label in labels: - result.append(alabel(label)) - if size: - size += 1 - size += len(label) - - # Join with U+002E - result_str = '.'.join(result) + trailing_dot # type: ignore - size += len(trailing_dot) - return result_str, size - -class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, data: str, errors: str, final: bool) -> Tuple[str, int]: # type: ignore - if errors != 'strict': - raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) - - if not data: - return ('', 0) - - labels = _unicode_dots_re.split(data) - trailing_dot = '' - if labels: - if not labels[-1]: - trailing_dot = '.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = '.' - - result = [] - size = 0 - for label in labels: - result.append(ulabel(label)) - if size: - size += 1 - size += len(label) - - result_str = '.'.join(result) + trailing_dot - size += len(trailing_dot) - return (result_str, size) - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - - -class StreamReader(Codec, codecs.StreamReader): - pass - - -def getregentry() -> codecs.CodecInfo: - # Compatibility as a search_function for codecs.register() - return codecs.CodecInfo( - name='idna', - encode=Codec().encode, # type: ignore - decode=Codec().decode, # type: ignore - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py deleted file mode 100644 index 786e6bd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py +++ /dev/null @@ -1,13 +0,0 @@ -from .core import * -from .codec import * -from typing import Any, Union - -def ToASCII(label: str) -> bytes: - return encode(label) - -def ToUnicode(label: Union[bytes, bytearray]) -> str: - return decode(label) - -def nameprep(s: Any) -> None: - raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol') - diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py deleted file mode 100644 index 4f30037..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py +++ /dev/null @@ -1,400 +0,0 @@ -from . import idnadata -import bisect -import unicodedata -import re -from typing import Union, Optional -from .intranges import intranges_contain - -_virama_combining_class = 9 -_alabel_prefix = b'xn--' -_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') - -class IDNAError(UnicodeError): - """ Base exception for all IDNA-encoding related problems """ - pass - - -class IDNABidiError(IDNAError): - """ Exception when bidirectional requirements are not satisfied """ - pass - - -class InvalidCodepoint(IDNAError): - """ Exception when a disallowed or unallocated codepoint is used """ - pass - - -class InvalidCodepointContext(IDNAError): - """ Exception when the codepoint is not valid in the context it is used """ - pass - - -def _combining_class(cp: int) -> int: - v = unicodedata.combining(chr(cp)) - if v == 0: - if not unicodedata.name(chr(cp)): - raise ValueError('Unknown character in unicodedata') - return v - -def _is_script(cp: str, script: str) -> bool: - return intranges_contain(ord(cp), idnadata.scripts[script]) - -def _punycode(s: str) -> bytes: - return s.encode('punycode') - -def _unot(s: int) -> str: - return 'U+{:04X}'.format(s) - - -def valid_label_length(label: Union[bytes, str]) -> bool: - if len(label) > 63: - return False - return True - - -def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: - if len(label) > (254 if trailing_dot else 253): - return False - return True - - -def check_bidi(label: str, check_ltr: bool = False) -> bool: - # Bidi rules should only be applied if string contains RTL characters - bidi_label = False - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - if direction == '': - # String likely comes from a newer version of Unicode - raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx)) - if direction in ['R', 'AL', 'AN']: - bidi_label = True - if not bidi_label and not check_ltr: - return True - - # Bidi rule 1 - direction = unicodedata.bidirectional(label[0]) - if direction in ['R', 'AL']: - rtl = True - elif direction == 'L': - rtl = False - else: - raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label))) - - valid_ending = False - number_type = None # type: Optional[str] - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - - if rtl: - # Bidi rule 2 - if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx)) - # Bidi rule 3 - if direction in ['R', 'AL', 'EN', 'AN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - # Bidi rule 4 - if direction in ['AN', 'EN']: - if not number_type: - number_type = direction - else: - if number_type != direction: - raise IDNABidiError('Can not mix numeral types in a right-to-left label') - else: - # Bidi rule 5 - if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx)) - # Bidi rule 6 - if direction in ['L', 'EN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - - if not valid_ending: - raise IDNABidiError('Label ends with illegal codepoint directionality') - - return True - - -def check_initial_combiner(label: str) -> bool: - if unicodedata.category(label[0])[0] == 'M': - raise IDNAError('Label begins with an illegal combining character') - return True - - -def check_hyphen_ok(label: str) -> bool: - if label[2:4] == '--': - raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') - if label[0] == '-' or label[-1] == '-': - raise IDNAError('Label must not start or end with a hyphen') - return True - - -def check_nfc(label: str) -> None: - if unicodedata.normalize('NFC', label) != label: - raise IDNAError('Label must be in Normalization Form C') - - -def valid_contextj(label: str, pos: int) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x200c: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - - ok = False - for i in range(pos-1, -1, -1): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - if joining_type in [ord('L'), ord('D')]: - ok = True - break - - if not ok: - return False - - ok = False - for i in range(pos+1, len(label)): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - if joining_type in [ord('R'), ord('D')]: - ok = True - break - return ok - - if cp_value == 0x200d: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - return False - - else: - - return False - - -def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x00b7: - if 0 < pos < len(label)-1: - if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: - return True - return False - - elif cp_value == 0x0375: - if pos < len(label)-1 and len(label) > 1: - return _is_script(label[pos + 1], 'Greek') - return False - - elif cp_value == 0x05f3 or cp_value == 0x05f4: - if pos > 0: - return _is_script(label[pos - 1], 'Hebrew') - return False - - elif cp_value == 0x30fb: - for cp in label: - if cp == '\u30fb': - continue - if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): - return True - return False - - elif 0x660 <= cp_value <= 0x669: - for cp in label: - if 0x6f0 <= ord(cp) <= 0x06f9: - return False - return True - - elif 0x6f0 <= cp_value <= 0x6f9: - for cp in label: - if 0x660 <= ord(cp) <= 0x0669: - return False - return True - - return False - - -def check_label(label: Union[str, bytes, bytearray]) -> None: - if isinstance(label, (bytes, bytearray)): - label = label.decode('utf-8') - if len(label) == 0: - raise IDNAError('Empty Label') - - check_nfc(label) - check_hyphen_ok(label) - check_initial_combiner(label) - - for (pos, cp) in enumerate(label): - cp_value = ord(cp) - if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): - continue - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): - try: - if not valid_contextj(label, pos): - raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( - _unot(cp_value), pos+1, repr(label))) - except ValueError: - raise IDNAError('Unknown codepoint adjacent to joiner {} at position {} in {}'.format( - _unot(cp_value), pos+1, repr(label))) - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): - if not valid_contexto(label, pos): - raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label))) - else: - raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label))) - - check_bidi(label) - - -def alabel(label: str) -> bytes: - try: - label_bytes = label.encode('ascii') - ulabel(label_bytes) - if not valid_label_length(label_bytes): - raise IDNAError('Label too long') - return label_bytes - except UnicodeEncodeError: - pass - - if not label: - raise IDNAError('No Input') - - label = str(label) - check_label(label) - label_bytes = _punycode(label) - label_bytes = _alabel_prefix + label_bytes - - if not valid_label_length(label_bytes): - raise IDNAError('Label too long') - - return label_bytes - - -def ulabel(label: Union[str, bytes, bytearray]) -> str: - if not isinstance(label, (bytes, bytearray)): - try: - label_bytes = label.encode('ascii') - except UnicodeEncodeError: - check_label(label) - return label - else: - label_bytes = label - - label_bytes = label_bytes.lower() - if label_bytes.startswith(_alabel_prefix): - label_bytes = label_bytes[len(_alabel_prefix):] - if not label_bytes: - raise IDNAError('Malformed A-label, no Punycode eligible content found') - if label_bytes.decode('ascii')[-1] == '-': - raise IDNAError('A-label must not end with a hyphen') - else: - check_label(label_bytes) - return label_bytes.decode('ascii') - - try: - label = label_bytes.decode('punycode') - except UnicodeError: - raise IDNAError('Invalid A-label') - check_label(label) - return label - - -def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: - """Re-map the characters in the string according to UTS46 processing.""" - from .uts46data import uts46data - output = '' - - for pos, char in enumerate(domain): - code_point = ord(char) - try: - uts46row = uts46data[code_point if code_point < 256 else - bisect.bisect_left(uts46data, (code_point, 'Z')) - 1] - status = uts46row[1] - replacement = None # type: Optional[str] - if len(uts46row) == 3: - replacement = uts46row[2] # type: ignore - if (status == 'V' or - (status == 'D' and not transitional) or - (status == '3' and not std3_rules and replacement is None)): - output += char - elif replacement is not None and (status == 'M' or - (status == '3' and not std3_rules) or - (status == 'D' and transitional)): - output += replacement - elif status != 'I': - raise IndexError() - except IndexError: - raise InvalidCodepoint( - 'Codepoint {} not allowed at position {} in {}'.format( - _unot(code_point), pos + 1, repr(domain))) - - return unicodedata.normalize('NFC', output) - - -def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: - if isinstance(s, (bytes, bytearray)): - try: - s = s.decode('ascii') - except UnicodeDecodeError: - raise IDNAError('should pass a unicode string to the function rather than a byte string.') - if uts46: - s = uts46_remap(s, std3_rules, transitional) - trailing_dot = False - result = [] - if strict: - labels = s.split('.') - else: - labels = _unicode_dots_re.split(s) - if not labels or labels == ['']: - raise IDNAError('Empty domain') - if labels[-1] == '': - del labels[-1] - trailing_dot = True - for label in labels: - s = alabel(label) - if s: - result.append(s) - else: - raise IDNAError('Empty label') - if trailing_dot: - result.append(b'') - s = b'.'.join(result) - if not valid_string_length(s, trailing_dot): - raise IDNAError('Domain too long') - return s - - -def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str: - try: - if isinstance(s, (bytes, bytearray)): - s = s.decode('ascii') - except UnicodeDecodeError: - raise IDNAError('Invalid ASCII in A-label') - if uts46: - s = uts46_remap(s, std3_rules, False) - trailing_dot = False - result = [] - if not strict: - labels = _unicode_dots_re.split(s) - else: - labels = s.split('.') - if not labels or labels == ['']: - raise IDNAError('Empty domain') - if not labels[-1]: - del labels[-1] - trailing_dot = True - for label in labels: - s = ulabel(label) - if s: - result.append(s) - else: - raise IDNAError('Empty label') - if trailing_dot: - result.append('') - return '.'.join(result) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py deleted file mode 100644 index 67db462..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py +++ /dev/null @@ -1,2151 +0,0 @@ -# This file is automatically generated by tools/idna-data - -__version__ = '15.0.0' -scripts = { - 'Greek': ( - 0x37000000374, - 0x37500000378, - 0x37a0000037e, - 0x37f00000380, - 0x38400000385, - 0x38600000387, - 0x3880000038b, - 0x38c0000038d, - 0x38e000003a2, - 0x3a3000003e2, - 0x3f000000400, - 0x1d2600001d2b, - 0x1d5d00001d62, - 0x1d6600001d6b, - 0x1dbf00001dc0, - 0x1f0000001f16, - 0x1f1800001f1e, - 0x1f2000001f46, - 0x1f4800001f4e, - 0x1f5000001f58, - 0x1f5900001f5a, - 0x1f5b00001f5c, - 0x1f5d00001f5e, - 0x1f5f00001f7e, - 0x1f8000001fb5, - 0x1fb600001fc5, - 0x1fc600001fd4, - 0x1fd600001fdc, - 0x1fdd00001ff0, - 0x1ff200001ff5, - 0x1ff600001fff, - 0x212600002127, - 0xab650000ab66, - 0x101400001018f, - 0x101a0000101a1, - 0x1d2000001d246, - ), - 'Han': ( - 0x2e8000002e9a, - 0x2e9b00002ef4, - 0x2f0000002fd6, - 0x300500003006, - 0x300700003008, - 0x30210000302a, - 0x30380000303c, - 0x340000004dc0, - 0x4e000000a000, - 0xf9000000fa6e, - 0xfa700000fada, - 0x16fe200016fe4, - 0x16ff000016ff2, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x2f8000002fa1e, - 0x300000003134b, - 0x31350000323b0, - ), - 'Hebrew': ( - 0x591000005c8, - 0x5d0000005eb, - 0x5ef000005f5, - 0xfb1d0000fb37, - 0xfb380000fb3d, - 0xfb3e0000fb3f, - 0xfb400000fb42, - 0xfb430000fb45, - 0xfb460000fb50, - ), - 'Hiragana': ( - 0x304100003097, - 0x309d000030a0, - 0x1b0010001b120, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1f2000001f201, - ), - 'Katakana': ( - 0x30a1000030fb, - 0x30fd00003100, - 0x31f000003200, - 0x32d0000032ff, - 0x330000003358, - 0xff660000ff70, - 0xff710000ff9e, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b001, - 0x1b1200001b123, - 0x1b1550001b156, - 0x1b1640001b168, - ), -} -joining_types = { - 0x600: 85, - 0x601: 85, - 0x602: 85, - 0x603: 85, - 0x604: 85, - 0x605: 85, - 0x608: 85, - 0x60b: 85, - 0x620: 68, - 0x621: 85, - 0x622: 82, - 0x623: 82, - 0x624: 82, - 0x625: 82, - 0x626: 68, - 0x627: 82, - 0x628: 68, - 0x629: 82, - 0x62a: 68, - 0x62b: 68, - 0x62c: 68, - 0x62d: 68, - 0x62e: 68, - 0x62f: 82, - 0x630: 82, - 0x631: 82, - 0x632: 82, - 0x633: 68, - 0x634: 68, - 0x635: 68, - 0x636: 68, - 0x637: 68, - 0x638: 68, - 0x639: 68, - 0x63a: 68, - 0x63b: 68, - 0x63c: 68, - 0x63d: 68, - 0x63e: 68, - 0x63f: 68, - 0x640: 67, - 0x641: 68, - 0x642: 68, - 0x643: 68, - 0x644: 68, - 0x645: 68, - 0x646: 68, - 0x647: 68, - 0x648: 82, - 0x649: 68, - 0x64a: 68, - 0x66e: 68, - 0x66f: 68, - 0x671: 82, - 0x672: 82, - 0x673: 82, - 0x674: 85, - 0x675: 82, - 0x676: 82, - 0x677: 82, - 0x678: 68, - 0x679: 68, - 0x67a: 68, - 0x67b: 68, - 0x67c: 68, - 0x67d: 68, - 0x67e: 68, - 0x67f: 68, - 0x680: 68, - 0x681: 68, - 0x682: 68, - 0x683: 68, - 0x684: 68, - 0x685: 68, - 0x686: 68, - 0x687: 68, - 0x688: 82, - 0x689: 82, - 0x68a: 82, - 0x68b: 82, - 0x68c: 82, - 0x68d: 82, - 0x68e: 82, - 0x68f: 82, - 0x690: 82, - 0x691: 82, - 0x692: 82, - 0x693: 82, - 0x694: 82, - 0x695: 82, - 0x696: 82, - 0x697: 82, - 0x698: 82, - 0x699: 82, - 0x69a: 68, - 0x69b: 68, - 0x69c: 68, - 0x69d: 68, - 0x69e: 68, - 0x69f: 68, - 0x6a0: 68, - 0x6a1: 68, - 0x6a2: 68, - 0x6a3: 68, - 0x6a4: 68, - 0x6a5: 68, - 0x6a6: 68, - 0x6a7: 68, - 0x6a8: 68, - 0x6a9: 68, - 0x6aa: 68, - 0x6ab: 68, - 0x6ac: 68, - 0x6ad: 68, - 0x6ae: 68, - 0x6af: 68, - 0x6b0: 68, - 0x6b1: 68, - 0x6b2: 68, - 0x6b3: 68, - 0x6b4: 68, - 0x6b5: 68, - 0x6b6: 68, - 0x6b7: 68, - 0x6b8: 68, - 0x6b9: 68, - 0x6ba: 68, - 0x6bb: 68, - 0x6bc: 68, - 0x6bd: 68, - 0x6be: 68, - 0x6bf: 68, - 0x6c0: 82, - 0x6c1: 68, - 0x6c2: 68, - 0x6c3: 82, - 0x6c4: 82, - 0x6c5: 82, - 0x6c6: 82, - 0x6c7: 82, - 0x6c8: 82, - 0x6c9: 82, - 0x6ca: 82, - 0x6cb: 82, - 0x6cc: 68, - 0x6cd: 82, - 0x6ce: 68, - 0x6cf: 82, - 0x6d0: 68, - 0x6d1: 68, - 0x6d2: 82, - 0x6d3: 82, - 0x6d5: 82, - 0x6dd: 85, - 0x6ee: 82, - 0x6ef: 82, - 0x6fa: 68, - 0x6fb: 68, - 0x6fc: 68, - 0x6ff: 68, - 0x70f: 84, - 0x710: 82, - 0x712: 68, - 0x713: 68, - 0x714: 68, - 0x715: 82, - 0x716: 82, - 0x717: 82, - 0x718: 82, - 0x719: 82, - 0x71a: 68, - 0x71b: 68, - 0x71c: 68, - 0x71d: 68, - 0x71e: 82, - 0x71f: 68, - 0x720: 68, - 0x721: 68, - 0x722: 68, - 0x723: 68, - 0x724: 68, - 0x725: 68, - 0x726: 68, - 0x727: 68, - 0x728: 82, - 0x729: 68, - 0x72a: 82, - 0x72b: 68, - 0x72c: 82, - 0x72d: 68, - 0x72e: 68, - 0x72f: 82, - 0x74d: 82, - 0x74e: 68, - 0x74f: 68, - 0x750: 68, - 0x751: 68, - 0x752: 68, - 0x753: 68, - 0x754: 68, - 0x755: 68, - 0x756: 68, - 0x757: 68, - 0x758: 68, - 0x759: 82, - 0x75a: 82, - 0x75b: 82, - 0x75c: 68, - 0x75d: 68, - 0x75e: 68, - 0x75f: 68, - 0x760: 68, - 0x761: 68, - 0x762: 68, - 0x763: 68, - 0x764: 68, - 0x765: 68, - 0x766: 68, - 0x767: 68, - 0x768: 68, - 0x769: 68, - 0x76a: 68, - 0x76b: 82, - 0x76c: 82, - 0x76d: 68, - 0x76e: 68, - 0x76f: 68, - 0x770: 68, - 0x771: 82, - 0x772: 68, - 0x773: 82, - 0x774: 82, - 0x775: 68, - 0x776: 68, - 0x777: 68, - 0x778: 82, - 0x779: 82, - 0x77a: 68, - 0x77b: 68, - 0x77c: 68, - 0x77d: 68, - 0x77e: 68, - 0x77f: 68, - 0x7ca: 68, - 0x7cb: 68, - 0x7cc: 68, - 0x7cd: 68, - 0x7ce: 68, - 0x7cf: 68, - 0x7d0: 68, - 0x7d1: 68, - 0x7d2: 68, - 0x7d3: 68, - 0x7d4: 68, - 0x7d5: 68, - 0x7d6: 68, - 0x7d7: 68, - 0x7d8: 68, - 0x7d9: 68, - 0x7da: 68, - 0x7db: 68, - 0x7dc: 68, - 0x7dd: 68, - 0x7de: 68, - 0x7df: 68, - 0x7e0: 68, - 0x7e1: 68, - 0x7e2: 68, - 0x7e3: 68, - 0x7e4: 68, - 0x7e5: 68, - 0x7e6: 68, - 0x7e7: 68, - 0x7e8: 68, - 0x7e9: 68, - 0x7ea: 68, - 0x7fa: 67, - 0x840: 82, - 0x841: 68, - 0x842: 68, - 0x843: 68, - 0x844: 68, - 0x845: 68, - 0x846: 82, - 0x847: 82, - 0x848: 68, - 0x849: 82, - 0x84a: 68, - 0x84b: 68, - 0x84c: 68, - 0x84d: 68, - 0x84e: 68, - 0x84f: 68, - 0x850: 68, - 0x851: 68, - 0x852: 68, - 0x853: 68, - 0x854: 82, - 0x855: 68, - 0x856: 82, - 0x857: 82, - 0x858: 82, - 0x860: 68, - 0x861: 85, - 0x862: 68, - 0x863: 68, - 0x864: 68, - 0x865: 68, - 0x866: 85, - 0x867: 82, - 0x868: 68, - 0x869: 82, - 0x86a: 82, - 0x870: 82, - 0x871: 82, - 0x872: 82, - 0x873: 82, - 0x874: 82, - 0x875: 82, - 0x876: 82, - 0x877: 82, - 0x878: 82, - 0x879: 82, - 0x87a: 82, - 0x87b: 82, - 0x87c: 82, - 0x87d: 82, - 0x87e: 82, - 0x87f: 82, - 0x880: 82, - 0x881: 82, - 0x882: 82, - 0x883: 67, - 0x884: 67, - 0x885: 67, - 0x886: 68, - 0x887: 85, - 0x888: 85, - 0x889: 68, - 0x88a: 68, - 0x88b: 68, - 0x88c: 68, - 0x88d: 68, - 0x88e: 82, - 0x890: 85, - 0x891: 85, - 0x8a0: 68, - 0x8a1: 68, - 0x8a2: 68, - 0x8a3: 68, - 0x8a4: 68, - 0x8a5: 68, - 0x8a6: 68, - 0x8a7: 68, - 0x8a8: 68, - 0x8a9: 68, - 0x8aa: 82, - 0x8ab: 82, - 0x8ac: 82, - 0x8ad: 85, - 0x8ae: 82, - 0x8af: 68, - 0x8b0: 68, - 0x8b1: 82, - 0x8b2: 82, - 0x8b3: 68, - 0x8b4: 68, - 0x8b5: 68, - 0x8b6: 68, - 0x8b7: 68, - 0x8b8: 68, - 0x8b9: 82, - 0x8ba: 68, - 0x8bb: 68, - 0x8bc: 68, - 0x8bd: 68, - 0x8be: 68, - 0x8bf: 68, - 0x8c0: 68, - 0x8c1: 68, - 0x8c2: 68, - 0x8c3: 68, - 0x8c4: 68, - 0x8c5: 68, - 0x8c6: 68, - 0x8c7: 68, - 0x8c8: 68, - 0x8e2: 85, - 0x1806: 85, - 0x1807: 68, - 0x180a: 67, - 0x180e: 85, - 0x1820: 68, - 0x1821: 68, - 0x1822: 68, - 0x1823: 68, - 0x1824: 68, - 0x1825: 68, - 0x1826: 68, - 0x1827: 68, - 0x1828: 68, - 0x1829: 68, - 0x182a: 68, - 0x182b: 68, - 0x182c: 68, - 0x182d: 68, - 0x182e: 68, - 0x182f: 68, - 0x1830: 68, - 0x1831: 68, - 0x1832: 68, - 0x1833: 68, - 0x1834: 68, - 0x1835: 68, - 0x1836: 68, - 0x1837: 68, - 0x1838: 68, - 0x1839: 68, - 0x183a: 68, - 0x183b: 68, - 0x183c: 68, - 0x183d: 68, - 0x183e: 68, - 0x183f: 68, - 0x1840: 68, - 0x1841: 68, - 0x1842: 68, - 0x1843: 68, - 0x1844: 68, - 0x1845: 68, - 0x1846: 68, - 0x1847: 68, - 0x1848: 68, - 0x1849: 68, - 0x184a: 68, - 0x184b: 68, - 0x184c: 68, - 0x184d: 68, - 0x184e: 68, - 0x184f: 68, - 0x1850: 68, - 0x1851: 68, - 0x1852: 68, - 0x1853: 68, - 0x1854: 68, - 0x1855: 68, - 0x1856: 68, - 0x1857: 68, - 0x1858: 68, - 0x1859: 68, - 0x185a: 68, - 0x185b: 68, - 0x185c: 68, - 0x185d: 68, - 0x185e: 68, - 0x185f: 68, - 0x1860: 68, - 0x1861: 68, - 0x1862: 68, - 0x1863: 68, - 0x1864: 68, - 0x1865: 68, - 0x1866: 68, - 0x1867: 68, - 0x1868: 68, - 0x1869: 68, - 0x186a: 68, - 0x186b: 68, - 0x186c: 68, - 0x186d: 68, - 0x186e: 68, - 0x186f: 68, - 0x1870: 68, - 0x1871: 68, - 0x1872: 68, - 0x1873: 68, - 0x1874: 68, - 0x1875: 68, - 0x1876: 68, - 0x1877: 68, - 0x1878: 68, - 0x1880: 85, - 0x1881: 85, - 0x1882: 85, - 0x1883: 85, - 0x1884: 85, - 0x1885: 84, - 0x1886: 84, - 0x1887: 68, - 0x1888: 68, - 0x1889: 68, - 0x188a: 68, - 0x188b: 68, - 0x188c: 68, - 0x188d: 68, - 0x188e: 68, - 0x188f: 68, - 0x1890: 68, - 0x1891: 68, - 0x1892: 68, - 0x1893: 68, - 0x1894: 68, - 0x1895: 68, - 0x1896: 68, - 0x1897: 68, - 0x1898: 68, - 0x1899: 68, - 0x189a: 68, - 0x189b: 68, - 0x189c: 68, - 0x189d: 68, - 0x189e: 68, - 0x189f: 68, - 0x18a0: 68, - 0x18a1: 68, - 0x18a2: 68, - 0x18a3: 68, - 0x18a4: 68, - 0x18a5: 68, - 0x18a6: 68, - 0x18a7: 68, - 0x18a8: 68, - 0x18aa: 68, - 0x200c: 85, - 0x200d: 67, - 0x202f: 85, - 0x2066: 85, - 0x2067: 85, - 0x2068: 85, - 0x2069: 85, - 0xa840: 68, - 0xa841: 68, - 0xa842: 68, - 0xa843: 68, - 0xa844: 68, - 0xa845: 68, - 0xa846: 68, - 0xa847: 68, - 0xa848: 68, - 0xa849: 68, - 0xa84a: 68, - 0xa84b: 68, - 0xa84c: 68, - 0xa84d: 68, - 0xa84e: 68, - 0xa84f: 68, - 0xa850: 68, - 0xa851: 68, - 0xa852: 68, - 0xa853: 68, - 0xa854: 68, - 0xa855: 68, - 0xa856: 68, - 0xa857: 68, - 0xa858: 68, - 0xa859: 68, - 0xa85a: 68, - 0xa85b: 68, - 0xa85c: 68, - 0xa85d: 68, - 0xa85e: 68, - 0xa85f: 68, - 0xa860: 68, - 0xa861: 68, - 0xa862: 68, - 0xa863: 68, - 0xa864: 68, - 0xa865: 68, - 0xa866: 68, - 0xa867: 68, - 0xa868: 68, - 0xa869: 68, - 0xa86a: 68, - 0xa86b: 68, - 0xa86c: 68, - 0xa86d: 68, - 0xa86e: 68, - 0xa86f: 68, - 0xa870: 68, - 0xa871: 68, - 0xa872: 76, - 0xa873: 85, - 0x10ac0: 68, - 0x10ac1: 68, - 0x10ac2: 68, - 0x10ac3: 68, - 0x10ac4: 68, - 0x10ac5: 82, - 0x10ac6: 85, - 0x10ac7: 82, - 0x10ac8: 85, - 0x10ac9: 82, - 0x10aca: 82, - 0x10acb: 85, - 0x10acc: 85, - 0x10acd: 76, - 0x10ace: 82, - 0x10acf: 82, - 0x10ad0: 82, - 0x10ad1: 82, - 0x10ad2: 82, - 0x10ad3: 68, - 0x10ad4: 68, - 0x10ad5: 68, - 0x10ad6: 68, - 0x10ad7: 76, - 0x10ad8: 68, - 0x10ad9: 68, - 0x10ada: 68, - 0x10adb: 68, - 0x10adc: 68, - 0x10add: 82, - 0x10ade: 68, - 0x10adf: 68, - 0x10ae0: 68, - 0x10ae1: 82, - 0x10ae2: 85, - 0x10ae3: 85, - 0x10ae4: 82, - 0x10aeb: 68, - 0x10aec: 68, - 0x10aed: 68, - 0x10aee: 68, - 0x10aef: 82, - 0x10b80: 68, - 0x10b81: 82, - 0x10b82: 68, - 0x10b83: 82, - 0x10b84: 82, - 0x10b85: 82, - 0x10b86: 68, - 0x10b87: 68, - 0x10b88: 68, - 0x10b89: 82, - 0x10b8a: 68, - 0x10b8b: 68, - 0x10b8c: 82, - 0x10b8d: 68, - 0x10b8e: 82, - 0x10b8f: 82, - 0x10b90: 68, - 0x10b91: 82, - 0x10ba9: 82, - 0x10baa: 82, - 0x10bab: 82, - 0x10bac: 82, - 0x10bad: 68, - 0x10bae: 68, - 0x10baf: 85, - 0x10d00: 76, - 0x10d01: 68, - 0x10d02: 68, - 0x10d03: 68, - 0x10d04: 68, - 0x10d05: 68, - 0x10d06: 68, - 0x10d07: 68, - 0x10d08: 68, - 0x10d09: 68, - 0x10d0a: 68, - 0x10d0b: 68, - 0x10d0c: 68, - 0x10d0d: 68, - 0x10d0e: 68, - 0x10d0f: 68, - 0x10d10: 68, - 0x10d11: 68, - 0x10d12: 68, - 0x10d13: 68, - 0x10d14: 68, - 0x10d15: 68, - 0x10d16: 68, - 0x10d17: 68, - 0x10d18: 68, - 0x10d19: 68, - 0x10d1a: 68, - 0x10d1b: 68, - 0x10d1c: 68, - 0x10d1d: 68, - 0x10d1e: 68, - 0x10d1f: 68, - 0x10d20: 68, - 0x10d21: 68, - 0x10d22: 82, - 0x10d23: 68, - 0x10f30: 68, - 0x10f31: 68, - 0x10f32: 68, - 0x10f33: 82, - 0x10f34: 68, - 0x10f35: 68, - 0x10f36: 68, - 0x10f37: 68, - 0x10f38: 68, - 0x10f39: 68, - 0x10f3a: 68, - 0x10f3b: 68, - 0x10f3c: 68, - 0x10f3d: 68, - 0x10f3e: 68, - 0x10f3f: 68, - 0x10f40: 68, - 0x10f41: 68, - 0x10f42: 68, - 0x10f43: 68, - 0x10f44: 68, - 0x10f45: 85, - 0x10f51: 68, - 0x10f52: 68, - 0x10f53: 68, - 0x10f54: 82, - 0x10f70: 68, - 0x10f71: 68, - 0x10f72: 68, - 0x10f73: 68, - 0x10f74: 82, - 0x10f75: 82, - 0x10f76: 68, - 0x10f77: 68, - 0x10f78: 68, - 0x10f79: 68, - 0x10f7a: 68, - 0x10f7b: 68, - 0x10f7c: 68, - 0x10f7d: 68, - 0x10f7e: 68, - 0x10f7f: 68, - 0x10f80: 68, - 0x10f81: 68, - 0x10fb0: 68, - 0x10fb1: 85, - 0x10fb2: 68, - 0x10fb3: 68, - 0x10fb4: 82, - 0x10fb5: 82, - 0x10fb6: 82, - 0x10fb7: 85, - 0x10fb8: 68, - 0x10fb9: 82, - 0x10fba: 82, - 0x10fbb: 68, - 0x10fbc: 68, - 0x10fbd: 82, - 0x10fbe: 68, - 0x10fbf: 68, - 0x10fc0: 85, - 0x10fc1: 68, - 0x10fc2: 82, - 0x10fc3: 82, - 0x10fc4: 68, - 0x10fc5: 85, - 0x10fc6: 85, - 0x10fc7: 85, - 0x10fc8: 85, - 0x10fc9: 82, - 0x10fca: 68, - 0x10fcb: 76, - 0x110bd: 85, - 0x110cd: 85, - 0x1e900: 68, - 0x1e901: 68, - 0x1e902: 68, - 0x1e903: 68, - 0x1e904: 68, - 0x1e905: 68, - 0x1e906: 68, - 0x1e907: 68, - 0x1e908: 68, - 0x1e909: 68, - 0x1e90a: 68, - 0x1e90b: 68, - 0x1e90c: 68, - 0x1e90d: 68, - 0x1e90e: 68, - 0x1e90f: 68, - 0x1e910: 68, - 0x1e911: 68, - 0x1e912: 68, - 0x1e913: 68, - 0x1e914: 68, - 0x1e915: 68, - 0x1e916: 68, - 0x1e917: 68, - 0x1e918: 68, - 0x1e919: 68, - 0x1e91a: 68, - 0x1e91b: 68, - 0x1e91c: 68, - 0x1e91d: 68, - 0x1e91e: 68, - 0x1e91f: 68, - 0x1e920: 68, - 0x1e921: 68, - 0x1e922: 68, - 0x1e923: 68, - 0x1e924: 68, - 0x1e925: 68, - 0x1e926: 68, - 0x1e927: 68, - 0x1e928: 68, - 0x1e929: 68, - 0x1e92a: 68, - 0x1e92b: 68, - 0x1e92c: 68, - 0x1e92d: 68, - 0x1e92e: 68, - 0x1e92f: 68, - 0x1e930: 68, - 0x1e931: 68, - 0x1e932: 68, - 0x1e933: 68, - 0x1e934: 68, - 0x1e935: 68, - 0x1e936: 68, - 0x1e937: 68, - 0x1e938: 68, - 0x1e939: 68, - 0x1e93a: 68, - 0x1e93b: 68, - 0x1e93c: 68, - 0x1e93d: 68, - 0x1e93e: 68, - 0x1e93f: 68, - 0x1e940: 68, - 0x1e941: 68, - 0x1e942: 68, - 0x1e943: 68, - 0x1e94b: 84, -} -codepoint_classes = { - 'PVALID': ( - 0x2d0000002e, - 0x300000003a, - 0x610000007b, - 0xdf000000f7, - 0xf800000100, - 0x10100000102, - 0x10300000104, - 0x10500000106, - 0x10700000108, - 0x1090000010a, - 0x10b0000010c, - 0x10d0000010e, - 0x10f00000110, - 0x11100000112, - 0x11300000114, - 0x11500000116, - 0x11700000118, - 0x1190000011a, - 0x11b0000011c, - 0x11d0000011e, - 0x11f00000120, - 0x12100000122, - 0x12300000124, - 0x12500000126, - 0x12700000128, - 0x1290000012a, - 0x12b0000012c, - 0x12d0000012e, - 0x12f00000130, - 0x13100000132, - 0x13500000136, - 0x13700000139, - 0x13a0000013b, - 0x13c0000013d, - 0x13e0000013f, - 0x14200000143, - 0x14400000145, - 0x14600000147, - 0x14800000149, - 0x14b0000014c, - 0x14d0000014e, - 0x14f00000150, - 0x15100000152, - 0x15300000154, - 0x15500000156, - 0x15700000158, - 0x1590000015a, - 0x15b0000015c, - 0x15d0000015e, - 0x15f00000160, - 0x16100000162, - 0x16300000164, - 0x16500000166, - 0x16700000168, - 0x1690000016a, - 0x16b0000016c, - 0x16d0000016e, - 0x16f00000170, - 0x17100000172, - 0x17300000174, - 0x17500000176, - 0x17700000178, - 0x17a0000017b, - 0x17c0000017d, - 0x17e0000017f, - 0x18000000181, - 0x18300000184, - 0x18500000186, - 0x18800000189, - 0x18c0000018e, - 0x19200000193, - 0x19500000196, - 0x1990000019c, - 0x19e0000019f, - 0x1a1000001a2, - 0x1a3000001a4, - 0x1a5000001a6, - 0x1a8000001a9, - 0x1aa000001ac, - 0x1ad000001ae, - 0x1b0000001b1, - 0x1b4000001b5, - 0x1b6000001b7, - 0x1b9000001bc, - 0x1bd000001c4, - 0x1ce000001cf, - 0x1d0000001d1, - 0x1d2000001d3, - 0x1d4000001d5, - 0x1d6000001d7, - 0x1d8000001d9, - 0x1da000001db, - 0x1dc000001de, - 0x1df000001e0, - 0x1e1000001e2, - 0x1e3000001e4, - 0x1e5000001e6, - 0x1e7000001e8, - 0x1e9000001ea, - 0x1eb000001ec, - 0x1ed000001ee, - 0x1ef000001f1, - 0x1f5000001f6, - 0x1f9000001fa, - 0x1fb000001fc, - 0x1fd000001fe, - 0x1ff00000200, - 0x20100000202, - 0x20300000204, - 0x20500000206, - 0x20700000208, - 0x2090000020a, - 0x20b0000020c, - 0x20d0000020e, - 0x20f00000210, - 0x21100000212, - 0x21300000214, - 0x21500000216, - 0x21700000218, - 0x2190000021a, - 0x21b0000021c, - 0x21d0000021e, - 0x21f00000220, - 0x22100000222, - 0x22300000224, - 0x22500000226, - 0x22700000228, - 0x2290000022a, - 0x22b0000022c, - 0x22d0000022e, - 0x22f00000230, - 0x23100000232, - 0x2330000023a, - 0x23c0000023d, - 0x23f00000241, - 0x24200000243, - 0x24700000248, - 0x2490000024a, - 0x24b0000024c, - 0x24d0000024e, - 0x24f000002b0, - 0x2b9000002c2, - 0x2c6000002d2, - 0x2ec000002ed, - 0x2ee000002ef, - 0x30000000340, - 0x34200000343, - 0x3460000034f, - 0x35000000370, - 0x37100000372, - 0x37300000374, - 0x37700000378, - 0x37b0000037e, - 0x39000000391, - 0x3ac000003cf, - 0x3d7000003d8, - 0x3d9000003da, - 0x3db000003dc, - 0x3dd000003de, - 0x3df000003e0, - 0x3e1000003e2, - 0x3e3000003e4, - 0x3e5000003e6, - 0x3e7000003e8, - 0x3e9000003ea, - 0x3eb000003ec, - 0x3ed000003ee, - 0x3ef000003f0, - 0x3f3000003f4, - 0x3f8000003f9, - 0x3fb000003fd, - 0x43000000460, - 0x46100000462, - 0x46300000464, - 0x46500000466, - 0x46700000468, - 0x4690000046a, - 0x46b0000046c, - 0x46d0000046e, - 0x46f00000470, - 0x47100000472, - 0x47300000474, - 0x47500000476, - 0x47700000478, - 0x4790000047a, - 0x47b0000047c, - 0x47d0000047e, - 0x47f00000480, - 0x48100000482, - 0x48300000488, - 0x48b0000048c, - 0x48d0000048e, - 0x48f00000490, - 0x49100000492, - 0x49300000494, - 0x49500000496, - 0x49700000498, - 0x4990000049a, - 0x49b0000049c, - 0x49d0000049e, - 0x49f000004a0, - 0x4a1000004a2, - 0x4a3000004a4, - 0x4a5000004a6, - 0x4a7000004a8, - 0x4a9000004aa, - 0x4ab000004ac, - 0x4ad000004ae, - 0x4af000004b0, - 0x4b1000004b2, - 0x4b3000004b4, - 0x4b5000004b6, - 0x4b7000004b8, - 0x4b9000004ba, - 0x4bb000004bc, - 0x4bd000004be, - 0x4bf000004c0, - 0x4c2000004c3, - 0x4c4000004c5, - 0x4c6000004c7, - 0x4c8000004c9, - 0x4ca000004cb, - 0x4cc000004cd, - 0x4ce000004d0, - 0x4d1000004d2, - 0x4d3000004d4, - 0x4d5000004d6, - 0x4d7000004d8, - 0x4d9000004da, - 0x4db000004dc, - 0x4dd000004de, - 0x4df000004e0, - 0x4e1000004e2, - 0x4e3000004e4, - 0x4e5000004e6, - 0x4e7000004e8, - 0x4e9000004ea, - 0x4eb000004ec, - 0x4ed000004ee, - 0x4ef000004f0, - 0x4f1000004f2, - 0x4f3000004f4, - 0x4f5000004f6, - 0x4f7000004f8, - 0x4f9000004fa, - 0x4fb000004fc, - 0x4fd000004fe, - 0x4ff00000500, - 0x50100000502, - 0x50300000504, - 0x50500000506, - 0x50700000508, - 0x5090000050a, - 0x50b0000050c, - 0x50d0000050e, - 0x50f00000510, - 0x51100000512, - 0x51300000514, - 0x51500000516, - 0x51700000518, - 0x5190000051a, - 0x51b0000051c, - 0x51d0000051e, - 0x51f00000520, - 0x52100000522, - 0x52300000524, - 0x52500000526, - 0x52700000528, - 0x5290000052a, - 0x52b0000052c, - 0x52d0000052e, - 0x52f00000530, - 0x5590000055a, - 0x56000000587, - 0x58800000589, - 0x591000005be, - 0x5bf000005c0, - 0x5c1000005c3, - 0x5c4000005c6, - 0x5c7000005c8, - 0x5d0000005eb, - 0x5ef000005f3, - 0x6100000061b, - 0x62000000640, - 0x64100000660, - 0x66e00000675, - 0x679000006d4, - 0x6d5000006dd, - 0x6df000006e9, - 0x6ea000006f0, - 0x6fa00000700, - 0x7100000074b, - 0x74d000007b2, - 0x7c0000007f6, - 0x7fd000007fe, - 0x8000000082e, - 0x8400000085c, - 0x8600000086b, - 0x87000000888, - 0x8890000088f, - 0x898000008e2, - 0x8e300000958, - 0x96000000964, - 0x96600000970, - 0x97100000984, - 0x9850000098d, - 0x98f00000991, - 0x993000009a9, - 0x9aa000009b1, - 0x9b2000009b3, - 0x9b6000009ba, - 0x9bc000009c5, - 0x9c7000009c9, - 0x9cb000009cf, - 0x9d7000009d8, - 0x9e0000009e4, - 0x9e6000009f2, - 0x9fc000009fd, - 0x9fe000009ff, - 0xa0100000a04, - 0xa0500000a0b, - 0xa0f00000a11, - 0xa1300000a29, - 0xa2a00000a31, - 0xa3200000a33, - 0xa3500000a36, - 0xa3800000a3a, - 0xa3c00000a3d, - 0xa3e00000a43, - 0xa4700000a49, - 0xa4b00000a4e, - 0xa5100000a52, - 0xa5c00000a5d, - 0xa6600000a76, - 0xa8100000a84, - 0xa8500000a8e, - 0xa8f00000a92, - 0xa9300000aa9, - 0xaaa00000ab1, - 0xab200000ab4, - 0xab500000aba, - 0xabc00000ac6, - 0xac700000aca, - 0xacb00000ace, - 0xad000000ad1, - 0xae000000ae4, - 0xae600000af0, - 0xaf900000b00, - 0xb0100000b04, - 0xb0500000b0d, - 0xb0f00000b11, - 0xb1300000b29, - 0xb2a00000b31, - 0xb3200000b34, - 0xb3500000b3a, - 0xb3c00000b45, - 0xb4700000b49, - 0xb4b00000b4e, - 0xb5500000b58, - 0xb5f00000b64, - 0xb6600000b70, - 0xb7100000b72, - 0xb8200000b84, - 0xb8500000b8b, - 0xb8e00000b91, - 0xb9200000b96, - 0xb9900000b9b, - 0xb9c00000b9d, - 0xb9e00000ba0, - 0xba300000ba5, - 0xba800000bab, - 0xbae00000bba, - 0xbbe00000bc3, - 0xbc600000bc9, - 0xbca00000bce, - 0xbd000000bd1, - 0xbd700000bd8, - 0xbe600000bf0, - 0xc0000000c0d, - 0xc0e00000c11, - 0xc1200000c29, - 0xc2a00000c3a, - 0xc3c00000c45, - 0xc4600000c49, - 0xc4a00000c4e, - 0xc5500000c57, - 0xc5800000c5b, - 0xc5d00000c5e, - 0xc6000000c64, - 0xc6600000c70, - 0xc8000000c84, - 0xc8500000c8d, - 0xc8e00000c91, - 0xc9200000ca9, - 0xcaa00000cb4, - 0xcb500000cba, - 0xcbc00000cc5, - 0xcc600000cc9, - 0xcca00000cce, - 0xcd500000cd7, - 0xcdd00000cdf, - 0xce000000ce4, - 0xce600000cf0, - 0xcf100000cf4, - 0xd0000000d0d, - 0xd0e00000d11, - 0xd1200000d45, - 0xd4600000d49, - 0xd4a00000d4f, - 0xd5400000d58, - 0xd5f00000d64, - 0xd6600000d70, - 0xd7a00000d80, - 0xd8100000d84, - 0xd8500000d97, - 0xd9a00000db2, - 0xdb300000dbc, - 0xdbd00000dbe, - 0xdc000000dc7, - 0xdca00000dcb, - 0xdcf00000dd5, - 0xdd600000dd7, - 0xdd800000de0, - 0xde600000df0, - 0xdf200000df4, - 0xe0100000e33, - 0xe3400000e3b, - 0xe4000000e4f, - 0xe5000000e5a, - 0xe8100000e83, - 0xe8400000e85, - 0xe8600000e8b, - 0xe8c00000ea4, - 0xea500000ea6, - 0xea700000eb3, - 0xeb400000ebe, - 0xec000000ec5, - 0xec600000ec7, - 0xec800000ecf, - 0xed000000eda, - 0xede00000ee0, - 0xf0000000f01, - 0xf0b00000f0c, - 0xf1800000f1a, - 0xf2000000f2a, - 0xf3500000f36, - 0xf3700000f38, - 0xf3900000f3a, - 0xf3e00000f43, - 0xf4400000f48, - 0xf4900000f4d, - 0xf4e00000f52, - 0xf5300000f57, - 0xf5800000f5c, - 0xf5d00000f69, - 0xf6a00000f6d, - 0xf7100000f73, - 0xf7400000f75, - 0xf7a00000f81, - 0xf8200000f85, - 0xf8600000f93, - 0xf9400000f98, - 0xf9900000f9d, - 0xf9e00000fa2, - 0xfa300000fa7, - 0xfa800000fac, - 0xfad00000fb9, - 0xfba00000fbd, - 0xfc600000fc7, - 0x10000000104a, - 0x10500000109e, - 0x10d0000010fb, - 0x10fd00001100, - 0x120000001249, - 0x124a0000124e, - 0x125000001257, - 0x125800001259, - 0x125a0000125e, - 0x126000001289, - 0x128a0000128e, - 0x1290000012b1, - 0x12b2000012b6, - 0x12b8000012bf, - 0x12c0000012c1, - 0x12c2000012c6, - 0x12c8000012d7, - 0x12d800001311, - 0x131200001316, - 0x13180000135b, - 0x135d00001360, - 0x138000001390, - 0x13a0000013f6, - 0x14010000166d, - 0x166f00001680, - 0x16810000169b, - 0x16a0000016eb, - 0x16f1000016f9, - 0x170000001716, - 0x171f00001735, - 0x174000001754, - 0x17600000176d, - 0x176e00001771, - 0x177200001774, - 0x1780000017b4, - 0x17b6000017d4, - 0x17d7000017d8, - 0x17dc000017de, - 0x17e0000017ea, - 0x18100000181a, - 0x182000001879, - 0x1880000018ab, - 0x18b0000018f6, - 0x19000000191f, - 0x19200000192c, - 0x19300000193c, - 0x19460000196e, - 0x197000001975, - 0x1980000019ac, - 0x19b0000019ca, - 0x19d0000019da, - 0x1a0000001a1c, - 0x1a2000001a5f, - 0x1a6000001a7d, - 0x1a7f00001a8a, - 0x1a9000001a9a, - 0x1aa700001aa8, - 0x1ab000001abe, - 0x1abf00001acf, - 0x1b0000001b4d, - 0x1b5000001b5a, - 0x1b6b00001b74, - 0x1b8000001bf4, - 0x1c0000001c38, - 0x1c4000001c4a, - 0x1c4d00001c7e, - 0x1cd000001cd3, - 0x1cd400001cfb, - 0x1d0000001d2c, - 0x1d2f00001d30, - 0x1d3b00001d3c, - 0x1d4e00001d4f, - 0x1d6b00001d78, - 0x1d7900001d9b, - 0x1dc000001e00, - 0x1e0100001e02, - 0x1e0300001e04, - 0x1e0500001e06, - 0x1e0700001e08, - 0x1e0900001e0a, - 0x1e0b00001e0c, - 0x1e0d00001e0e, - 0x1e0f00001e10, - 0x1e1100001e12, - 0x1e1300001e14, - 0x1e1500001e16, - 0x1e1700001e18, - 0x1e1900001e1a, - 0x1e1b00001e1c, - 0x1e1d00001e1e, - 0x1e1f00001e20, - 0x1e2100001e22, - 0x1e2300001e24, - 0x1e2500001e26, - 0x1e2700001e28, - 0x1e2900001e2a, - 0x1e2b00001e2c, - 0x1e2d00001e2e, - 0x1e2f00001e30, - 0x1e3100001e32, - 0x1e3300001e34, - 0x1e3500001e36, - 0x1e3700001e38, - 0x1e3900001e3a, - 0x1e3b00001e3c, - 0x1e3d00001e3e, - 0x1e3f00001e40, - 0x1e4100001e42, - 0x1e4300001e44, - 0x1e4500001e46, - 0x1e4700001e48, - 0x1e4900001e4a, - 0x1e4b00001e4c, - 0x1e4d00001e4e, - 0x1e4f00001e50, - 0x1e5100001e52, - 0x1e5300001e54, - 0x1e5500001e56, - 0x1e5700001e58, - 0x1e5900001e5a, - 0x1e5b00001e5c, - 0x1e5d00001e5e, - 0x1e5f00001e60, - 0x1e6100001e62, - 0x1e6300001e64, - 0x1e6500001e66, - 0x1e6700001e68, - 0x1e6900001e6a, - 0x1e6b00001e6c, - 0x1e6d00001e6e, - 0x1e6f00001e70, - 0x1e7100001e72, - 0x1e7300001e74, - 0x1e7500001e76, - 0x1e7700001e78, - 0x1e7900001e7a, - 0x1e7b00001e7c, - 0x1e7d00001e7e, - 0x1e7f00001e80, - 0x1e8100001e82, - 0x1e8300001e84, - 0x1e8500001e86, - 0x1e8700001e88, - 0x1e8900001e8a, - 0x1e8b00001e8c, - 0x1e8d00001e8e, - 0x1e8f00001e90, - 0x1e9100001e92, - 0x1e9300001e94, - 0x1e9500001e9a, - 0x1e9c00001e9e, - 0x1e9f00001ea0, - 0x1ea100001ea2, - 0x1ea300001ea4, - 0x1ea500001ea6, - 0x1ea700001ea8, - 0x1ea900001eaa, - 0x1eab00001eac, - 0x1ead00001eae, - 0x1eaf00001eb0, - 0x1eb100001eb2, - 0x1eb300001eb4, - 0x1eb500001eb6, - 0x1eb700001eb8, - 0x1eb900001eba, - 0x1ebb00001ebc, - 0x1ebd00001ebe, - 0x1ebf00001ec0, - 0x1ec100001ec2, - 0x1ec300001ec4, - 0x1ec500001ec6, - 0x1ec700001ec8, - 0x1ec900001eca, - 0x1ecb00001ecc, - 0x1ecd00001ece, - 0x1ecf00001ed0, - 0x1ed100001ed2, - 0x1ed300001ed4, - 0x1ed500001ed6, - 0x1ed700001ed8, - 0x1ed900001eda, - 0x1edb00001edc, - 0x1edd00001ede, - 0x1edf00001ee0, - 0x1ee100001ee2, - 0x1ee300001ee4, - 0x1ee500001ee6, - 0x1ee700001ee8, - 0x1ee900001eea, - 0x1eeb00001eec, - 0x1eed00001eee, - 0x1eef00001ef0, - 0x1ef100001ef2, - 0x1ef300001ef4, - 0x1ef500001ef6, - 0x1ef700001ef8, - 0x1ef900001efa, - 0x1efb00001efc, - 0x1efd00001efe, - 0x1eff00001f08, - 0x1f1000001f16, - 0x1f2000001f28, - 0x1f3000001f38, - 0x1f4000001f46, - 0x1f5000001f58, - 0x1f6000001f68, - 0x1f7000001f71, - 0x1f7200001f73, - 0x1f7400001f75, - 0x1f7600001f77, - 0x1f7800001f79, - 0x1f7a00001f7b, - 0x1f7c00001f7d, - 0x1fb000001fb2, - 0x1fb600001fb7, - 0x1fc600001fc7, - 0x1fd000001fd3, - 0x1fd600001fd8, - 0x1fe000001fe3, - 0x1fe400001fe8, - 0x1ff600001ff7, - 0x214e0000214f, - 0x218400002185, - 0x2c3000002c60, - 0x2c6100002c62, - 0x2c6500002c67, - 0x2c6800002c69, - 0x2c6a00002c6b, - 0x2c6c00002c6d, - 0x2c7100002c72, - 0x2c7300002c75, - 0x2c7600002c7c, - 0x2c8100002c82, - 0x2c8300002c84, - 0x2c8500002c86, - 0x2c8700002c88, - 0x2c8900002c8a, - 0x2c8b00002c8c, - 0x2c8d00002c8e, - 0x2c8f00002c90, - 0x2c9100002c92, - 0x2c9300002c94, - 0x2c9500002c96, - 0x2c9700002c98, - 0x2c9900002c9a, - 0x2c9b00002c9c, - 0x2c9d00002c9e, - 0x2c9f00002ca0, - 0x2ca100002ca2, - 0x2ca300002ca4, - 0x2ca500002ca6, - 0x2ca700002ca8, - 0x2ca900002caa, - 0x2cab00002cac, - 0x2cad00002cae, - 0x2caf00002cb0, - 0x2cb100002cb2, - 0x2cb300002cb4, - 0x2cb500002cb6, - 0x2cb700002cb8, - 0x2cb900002cba, - 0x2cbb00002cbc, - 0x2cbd00002cbe, - 0x2cbf00002cc0, - 0x2cc100002cc2, - 0x2cc300002cc4, - 0x2cc500002cc6, - 0x2cc700002cc8, - 0x2cc900002cca, - 0x2ccb00002ccc, - 0x2ccd00002cce, - 0x2ccf00002cd0, - 0x2cd100002cd2, - 0x2cd300002cd4, - 0x2cd500002cd6, - 0x2cd700002cd8, - 0x2cd900002cda, - 0x2cdb00002cdc, - 0x2cdd00002cde, - 0x2cdf00002ce0, - 0x2ce100002ce2, - 0x2ce300002ce5, - 0x2cec00002ced, - 0x2cee00002cf2, - 0x2cf300002cf4, - 0x2d0000002d26, - 0x2d2700002d28, - 0x2d2d00002d2e, - 0x2d3000002d68, - 0x2d7f00002d97, - 0x2da000002da7, - 0x2da800002daf, - 0x2db000002db7, - 0x2db800002dbf, - 0x2dc000002dc7, - 0x2dc800002dcf, - 0x2dd000002dd7, - 0x2dd800002ddf, - 0x2de000002e00, - 0x2e2f00002e30, - 0x300500003008, - 0x302a0000302e, - 0x303c0000303d, - 0x304100003097, - 0x30990000309b, - 0x309d0000309f, - 0x30a1000030fb, - 0x30fc000030ff, - 0x310500003130, - 0x31a0000031c0, - 0x31f000003200, - 0x340000004dc0, - 0x4e000000a48d, - 0xa4d00000a4fe, - 0xa5000000a60d, - 0xa6100000a62c, - 0xa6410000a642, - 0xa6430000a644, - 0xa6450000a646, - 0xa6470000a648, - 0xa6490000a64a, - 0xa64b0000a64c, - 0xa64d0000a64e, - 0xa64f0000a650, - 0xa6510000a652, - 0xa6530000a654, - 0xa6550000a656, - 0xa6570000a658, - 0xa6590000a65a, - 0xa65b0000a65c, - 0xa65d0000a65e, - 0xa65f0000a660, - 0xa6610000a662, - 0xa6630000a664, - 0xa6650000a666, - 0xa6670000a668, - 0xa6690000a66a, - 0xa66b0000a66c, - 0xa66d0000a670, - 0xa6740000a67e, - 0xa67f0000a680, - 0xa6810000a682, - 0xa6830000a684, - 0xa6850000a686, - 0xa6870000a688, - 0xa6890000a68a, - 0xa68b0000a68c, - 0xa68d0000a68e, - 0xa68f0000a690, - 0xa6910000a692, - 0xa6930000a694, - 0xa6950000a696, - 0xa6970000a698, - 0xa6990000a69a, - 0xa69b0000a69c, - 0xa69e0000a6e6, - 0xa6f00000a6f2, - 0xa7170000a720, - 0xa7230000a724, - 0xa7250000a726, - 0xa7270000a728, - 0xa7290000a72a, - 0xa72b0000a72c, - 0xa72d0000a72e, - 0xa72f0000a732, - 0xa7330000a734, - 0xa7350000a736, - 0xa7370000a738, - 0xa7390000a73a, - 0xa73b0000a73c, - 0xa73d0000a73e, - 0xa73f0000a740, - 0xa7410000a742, - 0xa7430000a744, - 0xa7450000a746, - 0xa7470000a748, - 0xa7490000a74a, - 0xa74b0000a74c, - 0xa74d0000a74e, - 0xa74f0000a750, - 0xa7510000a752, - 0xa7530000a754, - 0xa7550000a756, - 0xa7570000a758, - 0xa7590000a75a, - 0xa75b0000a75c, - 0xa75d0000a75e, - 0xa75f0000a760, - 0xa7610000a762, - 0xa7630000a764, - 0xa7650000a766, - 0xa7670000a768, - 0xa7690000a76a, - 0xa76b0000a76c, - 0xa76d0000a76e, - 0xa76f0000a770, - 0xa7710000a779, - 0xa77a0000a77b, - 0xa77c0000a77d, - 0xa77f0000a780, - 0xa7810000a782, - 0xa7830000a784, - 0xa7850000a786, - 0xa7870000a789, - 0xa78c0000a78d, - 0xa78e0000a790, - 0xa7910000a792, - 0xa7930000a796, - 0xa7970000a798, - 0xa7990000a79a, - 0xa79b0000a79c, - 0xa79d0000a79e, - 0xa79f0000a7a0, - 0xa7a10000a7a2, - 0xa7a30000a7a4, - 0xa7a50000a7a6, - 0xa7a70000a7a8, - 0xa7a90000a7aa, - 0xa7af0000a7b0, - 0xa7b50000a7b6, - 0xa7b70000a7b8, - 0xa7b90000a7ba, - 0xa7bb0000a7bc, - 0xa7bd0000a7be, - 0xa7bf0000a7c0, - 0xa7c10000a7c2, - 0xa7c30000a7c4, - 0xa7c80000a7c9, - 0xa7ca0000a7cb, - 0xa7d10000a7d2, - 0xa7d30000a7d4, - 0xa7d50000a7d6, - 0xa7d70000a7d8, - 0xa7d90000a7da, - 0xa7f20000a7f5, - 0xa7f60000a7f8, - 0xa7fa0000a828, - 0xa82c0000a82d, - 0xa8400000a874, - 0xa8800000a8c6, - 0xa8d00000a8da, - 0xa8e00000a8f8, - 0xa8fb0000a8fc, - 0xa8fd0000a92e, - 0xa9300000a954, - 0xa9800000a9c1, - 0xa9cf0000a9da, - 0xa9e00000a9ff, - 0xaa000000aa37, - 0xaa400000aa4e, - 0xaa500000aa5a, - 0xaa600000aa77, - 0xaa7a0000aac3, - 0xaadb0000aade, - 0xaae00000aaf0, - 0xaaf20000aaf7, - 0xab010000ab07, - 0xab090000ab0f, - 0xab110000ab17, - 0xab200000ab27, - 0xab280000ab2f, - 0xab300000ab5b, - 0xab600000ab69, - 0xabc00000abeb, - 0xabec0000abee, - 0xabf00000abfa, - 0xac000000d7a4, - 0xfa0e0000fa10, - 0xfa110000fa12, - 0xfa130000fa15, - 0xfa1f0000fa20, - 0xfa210000fa22, - 0xfa230000fa25, - 0xfa270000fa2a, - 0xfb1e0000fb1f, - 0xfe200000fe30, - 0xfe730000fe74, - 0x100000001000c, - 0x1000d00010027, - 0x100280001003b, - 0x1003c0001003e, - 0x1003f0001004e, - 0x100500001005e, - 0x10080000100fb, - 0x101fd000101fe, - 0x102800001029d, - 0x102a0000102d1, - 0x102e0000102e1, - 0x1030000010320, - 0x1032d00010341, - 0x103420001034a, - 0x103500001037b, - 0x103800001039e, - 0x103a0000103c4, - 0x103c8000103d0, - 0x104280001049e, - 0x104a0000104aa, - 0x104d8000104fc, - 0x1050000010528, - 0x1053000010564, - 0x10597000105a2, - 0x105a3000105b2, - 0x105b3000105ba, - 0x105bb000105bd, - 0x1060000010737, - 0x1074000010756, - 0x1076000010768, - 0x1078000010786, - 0x10787000107b1, - 0x107b2000107bb, - 0x1080000010806, - 0x1080800010809, - 0x1080a00010836, - 0x1083700010839, - 0x1083c0001083d, - 0x1083f00010856, - 0x1086000010877, - 0x108800001089f, - 0x108e0000108f3, - 0x108f4000108f6, - 0x1090000010916, - 0x109200001093a, - 0x10980000109b8, - 0x109be000109c0, - 0x10a0000010a04, - 0x10a0500010a07, - 0x10a0c00010a14, - 0x10a1500010a18, - 0x10a1900010a36, - 0x10a3800010a3b, - 0x10a3f00010a40, - 0x10a6000010a7d, - 0x10a8000010a9d, - 0x10ac000010ac8, - 0x10ac900010ae7, - 0x10b0000010b36, - 0x10b4000010b56, - 0x10b6000010b73, - 0x10b8000010b92, - 0x10c0000010c49, - 0x10cc000010cf3, - 0x10d0000010d28, - 0x10d3000010d3a, - 0x10e8000010eaa, - 0x10eab00010ead, - 0x10eb000010eb2, - 0x10efd00010f1d, - 0x10f2700010f28, - 0x10f3000010f51, - 0x10f7000010f86, - 0x10fb000010fc5, - 0x10fe000010ff7, - 0x1100000011047, - 0x1106600011076, - 0x1107f000110bb, - 0x110c2000110c3, - 0x110d0000110e9, - 0x110f0000110fa, - 0x1110000011135, - 0x1113600011140, - 0x1114400011148, - 0x1115000011174, - 0x1117600011177, - 0x11180000111c5, - 0x111c9000111cd, - 0x111ce000111db, - 0x111dc000111dd, - 0x1120000011212, - 0x1121300011238, - 0x1123e00011242, - 0x1128000011287, - 0x1128800011289, - 0x1128a0001128e, - 0x1128f0001129e, - 0x1129f000112a9, - 0x112b0000112eb, - 0x112f0000112fa, - 0x1130000011304, - 0x113050001130d, - 0x1130f00011311, - 0x1131300011329, - 0x1132a00011331, - 0x1133200011334, - 0x113350001133a, - 0x1133b00011345, - 0x1134700011349, - 0x1134b0001134e, - 0x1135000011351, - 0x1135700011358, - 0x1135d00011364, - 0x113660001136d, - 0x1137000011375, - 0x114000001144b, - 0x114500001145a, - 0x1145e00011462, - 0x11480000114c6, - 0x114c7000114c8, - 0x114d0000114da, - 0x11580000115b6, - 0x115b8000115c1, - 0x115d8000115de, - 0x1160000011641, - 0x1164400011645, - 0x116500001165a, - 0x11680000116b9, - 0x116c0000116ca, - 0x117000001171b, - 0x1171d0001172c, - 0x117300001173a, - 0x1174000011747, - 0x118000001183b, - 0x118c0000118ea, - 0x118ff00011907, - 0x119090001190a, - 0x1190c00011914, - 0x1191500011917, - 0x1191800011936, - 0x1193700011939, - 0x1193b00011944, - 0x119500001195a, - 0x119a0000119a8, - 0x119aa000119d8, - 0x119da000119e2, - 0x119e3000119e5, - 0x11a0000011a3f, - 0x11a4700011a48, - 0x11a5000011a9a, - 0x11a9d00011a9e, - 0x11ab000011af9, - 0x11c0000011c09, - 0x11c0a00011c37, - 0x11c3800011c41, - 0x11c5000011c5a, - 0x11c7200011c90, - 0x11c9200011ca8, - 0x11ca900011cb7, - 0x11d0000011d07, - 0x11d0800011d0a, - 0x11d0b00011d37, - 0x11d3a00011d3b, - 0x11d3c00011d3e, - 0x11d3f00011d48, - 0x11d5000011d5a, - 0x11d6000011d66, - 0x11d6700011d69, - 0x11d6a00011d8f, - 0x11d9000011d92, - 0x11d9300011d99, - 0x11da000011daa, - 0x11ee000011ef7, - 0x11f0000011f11, - 0x11f1200011f3b, - 0x11f3e00011f43, - 0x11f5000011f5a, - 0x11fb000011fb1, - 0x120000001239a, - 0x1248000012544, - 0x12f9000012ff1, - 0x1300000013430, - 0x1344000013456, - 0x1440000014647, - 0x1680000016a39, - 0x16a4000016a5f, - 0x16a6000016a6a, - 0x16a7000016abf, - 0x16ac000016aca, - 0x16ad000016aee, - 0x16af000016af5, - 0x16b0000016b37, - 0x16b4000016b44, - 0x16b5000016b5a, - 0x16b6300016b78, - 0x16b7d00016b90, - 0x16e6000016e80, - 0x16f0000016f4b, - 0x16f4f00016f88, - 0x16f8f00016fa0, - 0x16fe000016fe2, - 0x16fe300016fe5, - 0x16ff000016ff2, - 0x17000000187f8, - 0x1880000018cd6, - 0x18d0000018d09, - 0x1aff00001aff4, - 0x1aff50001affc, - 0x1affd0001afff, - 0x1b0000001b123, - 0x1b1320001b133, - 0x1b1500001b153, - 0x1b1550001b156, - 0x1b1640001b168, - 0x1b1700001b2fc, - 0x1bc000001bc6b, - 0x1bc700001bc7d, - 0x1bc800001bc89, - 0x1bc900001bc9a, - 0x1bc9d0001bc9f, - 0x1cf000001cf2e, - 0x1cf300001cf47, - 0x1da000001da37, - 0x1da3b0001da6d, - 0x1da750001da76, - 0x1da840001da85, - 0x1da9b0001daa0, - 0x1daa10001dab0, - 0x1df000001df1f, - 0x1df250001df2b, - 0x1e0000001e007, - 0x1e0080001e019, - 0x1e01b0001e022, - 0x1e0230001e025, - 0x1e0260001e02b, - 0x1e0300001e06e, - 0x1e08f0001e090, - 0x1e1000001e12d, - 0x1e1300001e13e, - 0x1e1400001e14a, - 0x1e14e0001e14f, - 0x1e2900001e2af, - 0x1e2c00001e2fa, - 0x1e4d00001e4fa, - 0x1e7e00001e7e7, - 0x1e7e80001e7ec, - 0x1e7ed0001e7ef, - 0x1e7f00001e7ff, - 0x1e8000001e8c5, - 0x1e8d00001e8d7, - 0x1e9220001e94c, - 0x1e9500001e95a, - 0x200000002a6e0, - 0x2a7000002b73a, - 0x2b7400002b81e, - 0x2b8200002cea2, - 0x2ceb00002ebe1, - 0x300000003134b, - 0x31350000323b0, - ), - 'CONTEXTJ': ( - 0x200c0000200e, - ), - 'CONTEXTO': ( - 0xb7000000b8, - 0x37500000376, - 0x5f3000005f5, - 0x6600000066a, - 0x6f0000006fa, - 0x30fb000030fc, - ), -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py deleted file mode 100644 index 6a43b04..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -Given a list of integers, made up of (hopefully) a small number of long runs -of consecutive integers, compute a representation of the form -((start1, end1), (start2, end2) ...). Then answer the question "was x present -in the original list?" in time O(log(# runs)). -""" - -import bisect -from typing import List, Tuple - -def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: - """Represent a list of integers as a sequence of ranges: - ((start_0, end_0), (start_1, end_1), ...), such that the original - integers are exactly those x such that start_i <= x < end_i for some i. - - Ranges are encoded as single integers (start << 32 | end), not as tuples. - """ - - sorted_list = sorted(list_) - ranges = [] - last_write = -1 - for i in range(len(sorted_list)): - if i+1 < len(sorted_list): - if sorted_list[i] == sorted_list[i+1]-1: - continue - current_range = sorted_list[last_write+1:i+1] - ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) - last_write = i - - return tuple(ranges) - -def _encode_range(start: int, end: int) -> int: - return (start << 32) | end - -def _decode_range(r: int) -> Tuple[int, int]: - return (r >> 32), (r & ((1 << 32) - 1)) - - -def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: - """Determine if `int_` falls into one of the ranges in `ranges`.""" - tuple_ = _encode_range(int_, 0) - pos = bisect.bisect_left(ranges, tuple_) - # we could be immediately ahead of a tuple (start, end) - # with start < int_ <= end - if pos > 0: - left, right = _decode_range(ranges[pos-1]) - if left <= int_ < right: - return True - # or we could be immediately behind a tuple (int_, end) - if pos < len(ranges): - left, _ = _decode_range(ranges[pos]) - if left == int_: - return True - return False diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py deleted file mode 100644 index 8501893..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py +++ /dev/null @@ -1,2 +0,0 @@ -__version__ = '3.4' - diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/idna/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py b/venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py deleted file mode 100644 index 186796c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py +++ /dev/null @@ -1,8600 +0,0 @@ -# This file is automatically generated by tools/idna-data -# vim: set fileencoding=utf-8 : - -from typing import List, Tuple, Union - - -"""IDNA Mapping Table from UTS46.""" - - -__version__ = '15.0.0' -def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x0, '3'), - (0x1, '3'), - (0x2, '3'), - (0x3, '3'), - (0x4, '3'), - (0x5, '3'), - (0x6, '3'), - (0x7, '3'), - (0x8, '3'), - (0x9, '3'), - (0xA, '3'), - (0xB, '3'), - (0xC, '3'), - (0xD, '3'), - (0xE, '3'), - (0xF, '3'), - (0x10, '3'), - (0x11, '3'), - (0x12, '3'), - (0x13, '3'), - (0x14, '3'), - (0x15, '3'), - (0x16, '3'), - (0x17, '3'), - (0x18, '3'), - (0x19, '3'), - (0x1A, '3'), - (0x1B, '3'), - (0x1C, '3'), - (0x1D, '3'), - (0x1E, '3'), - (0x1F, '3'), - (0x20, '3'), - (0x21, '3'), - (0x22, '3'), - (0x23, '3'), - (0x24, '3'), - (0x25, '3'), - (0x26, '3'), - (0x27, '3'), - (0x28, '3'), - (0x29, '3'), - (0x2A, '3'), - (0x2B, '3'), - (0x2C, '3'), - (0x2D, 'V'), - (0x2E, 'V'), - (0x2F, '3'), - (0x30, 'V'), - (0x31, 'V'), - (0x32, 'V'), - (0x33, 'V'), - (0x34, 'V'), - (0x35, 'V'), - (0x36, 'V'), - (0x37, 'V'), - (0x38, 'V'), - (0x39, 'V'), - (0x3A, '3'), - (0x3B, '3'), - (0x3C, '3'), - (0x3D, '3'), - (0x3E, '3'), - (0x3F, '3'), - (0x40, '3'), - (0x41, 'M', 'a'), - (0x42, 'M', 'b'), - (0x43, 'M', 'c'), - (0x44, 'M', 'd'), - (0x45, 'M', 'e'), - (0x46, 'M', 'f'), - (0x47, 'M', 'g'), - (0x48, 'M', 'h'), - (0x49, 'M', 'i'), - (0x4A, 'M', 'j'), - (0x4B, 'M', 'k'), - (0x4C, 'M', 'l'), - (0x4D, 'M', 'm'), - (0x4E, 'M', 'n'), - (0x4F, 'M', 'o'), - (0x50, 'M', 'p'), - (0x51, 'M', 'q'), - (0x52, 'M', 'r'), - (0x53, 'M', 's'), - (0x54, 'M', 't'), - (0x55, 'M', 'u'), - (0x56, 'M', 'v'), - (0x57, 'M', 'w'), - (0x58, 'M', 'x'), - (0x59, 'M', 'y'), - (0x5A, 'M', 'z'), - (0x5B, '3'), - (0x5C, '3'), - (0x5D, '3'), - (0x5E, '3'), - (0x5F, '3'), - (0x60, '3'), - (0x61, 'V'), - (0x62, 'V'), - (0x63, 'V'), - ] - -def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x64, 'V'), - (0x65, 'V'), - (0x66, 'V'), - (0x67, 'V'), - (0x68, 'V'), - (0x69, 'V'), - (0x6A, 'V'), - (0x6B, 'V'), - (0x6C, 'V'), - (0x6D, 'V'), - (0x6E, 'V'), - (0x6F, 'V'), - (0x70, 'V'), - (0x71, 'V'), - (0x72, 'V'), - (0x73, 'V'), - (0x74, 'V'), - (0x75, 'V'), - (0x76, 'V'), - (0x77, 'V'), - (0x78, 'V'), - (0x79, 'V'), - (0x7A, 'V'), - (0x7B, '3'), - (0x7C, '3'), - (0x7D, '3'), - (0x7E, '3'), - (0x7F, '3'), - (0x80, 'X'), - (0x81, 'X'), - (0x82, 'X'), - (0x83, 'X'), - (0x84, 'X'), - (0x85, 'X'), - (0x86, 'X'), - (0x87, 'X'), - (0x88, 'X'), - (0x89, 'X'), - (0x8A, 'X'), - (0x8B, 'X'), - (0x8C, 'X'), - (0x8D, 'X'), - (0x8E, 'X'), - (0x8F, 'X'), - (0x90, 'X'), - (0x91, 'X'), - (0x92, 'X'), - (0x93, 'X'), - (0x94, 'X'), - (0x95, 'X'), - (0x96, 'X'), - (0x97, 'X'), - (0x98, 'X'), - (0x99, 'X'), - (0x9A, 'X'), - (0x9B, 'X'), - (0x9C, 'X'), - (0x9D, 'X'), - (0x9E, 'X'), - (0x9F, 'X'), - (0xA0, '3', ' '), - (0xA1, 'V'), - (0xA2, 'V'), - (0xA3, 'V'), - (0xA4, 'V'), - (0xA5, 'V'), - (0xA6, 'V'), - (0xA7, 'V'), - (0xA8, '3', ' ̈'), - (0xA9, 'V'), - (0xAA, 'M', 'a'), - (0xAB, 'V'), - (0xAC, 'V'), - (0xAD, 'I'), - (0xAE, 'V'), - (0xAF, '3', ' ̄'), - (0xB0, 'V'), - (0xB1, 'V'), - (0xB2, 'M', '2'), - (0xB3, 'M', '3'), - (0xB4, '3', ' ́'), - (0xB5, 'M', 'μ'), - (0xB6, 'V'), - (0xB7, 'V'), - (0xB8, '3', ' ̧'), - (0xB9, 'M', '1'), - (0xBA, 'M', 'o'), - (0xBB, 'V'), - (0xBC, 'M', '1⁄4'), - (0xBD, 'M', '1⁄2'), - (0xBE, 'M', '3⁄4'), - (0xBF, 'V'), - (0xC0, 'M', 'à'), - (0xC1, 'M', 'á'), - (0xC2, 'M', 'â'), - (0xC3, 'M', 'ã'), - (0xC4, 'M', 'ä'), - (0xC5, 'M', 'å'), - (0xC6, 'M', 'æ'), - (0xC7, 'M', 'ç'), - ] - -def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC8, 'M', 'è'), - (0xC9, 'M', 'é'), - (0xCA, 'M', 'ê'), - (0xCB, 'M', 'ë'), - (0xCC, 'M', 'ì'), - (0xCD, 'M', 'í'), - (0xCE, 'M', 'î'), - (0xCF, 'M', 'ï'), - (0xD0, 'M', 'ð'), - (0xD1, 'M', 'ñ'), - (0xD2, 'M', 'ò'), - (0xD3, 'M', 'ó'), - (0xD4, 'M', 'ô'), - (0xD5, 'M', 'õ'), - (0xD6, 'M', 'ö'), - (0xD7, 'V'), - (0xD8, 'M', 'ø'), - (0xD9, 'M', 'ù'), - (0xDA, 'M', 'ú'), - (0xDB, 'M', 'û'), - (0xDC, 'M', 'ü'), - (0xDD, 'M', 'ý'), - (0xDE, 'M', 'þ'), - (0xDF, 'D', 'ss'), - (0xE0, 'V'), - (0xE1, 'V'), - (0xE2, 'V'), - (0xE3, 'V'), - (0xE4, 'V'), - (0xE5, 'V'), - (0xE6, 'V'), - (0xE7, 'V'), - (0xE8, 'V'), - (0xE9, 'V'), - (0xEA, 'V'), - (0xEB, 'V'), - (0xEC, 'V'), - (0xED, 'V'), - (0xEE, 'V'), - (0xEF, 'V'), - (0xF0, 'V'), - (0xF1, 'V'), - (0xF2, 'V'), - (0xF3, 'V'), - (0xF4, 'V'), - (0xF5, 'V'), - (0xF6, 'V'), - (0xF7, 'V'), - (0xF8, 'V'), - (0xF9, 'V'), - (0xFA, 'V'), - (0xFB, 'V'), - (0xFC, 'V'), - (0xFD, 'V'), - (0xFE, 'V'), - (0xFF, 'V'), - (0x100, 'M', 'ā'), - (0x101, 'V'), - (0x102, 'M', 'ă'), - (0x103, 'V'), - (0x104, 'M', 'ą'), - (0x105, 'V'), - (0x106, 'M', 'ć'), - (0x107, 'V'), - (0x108, 'M', 'ĉ'), - (0x109, 'V'), - (0x10A, 'M', 'ċ'), - (0x10B, 'V'), - (0x10C, 'M', 'č'), - (0x10D, 'V'), - (0x10E, 'M', 'ď'), - (0x10F, 'V'), - (0x110, 'M', 'đ'), - (0x111, 'V'), - (0x112, 'M', 'ē'), - (0x113, 'V'), - (0x114, 'M', 'ĕ'), - (0x115, 'V'), - (0x116, 'M', 'ė'), - (0x117, 'V'), - (0x118, 'M', 'ę'), - (0x119, 'V'), - (0x11A, 'M', 'ě'), - (0x11B, 'V'), - (0x11C, 'M', 'ĝ'), - (0x11D, 'V'), - (0x11E, 'M', 'ğ'), - (0x11F, 'V'), - (0x120, 'M', 'ġ'), - (0x121, 'V'), - (0x122, 'M', 'ģ'), - (0x123, 'V'), - (0x124, 'M', 'ĥ'), - (0x125, 'V'), - (0x126, 'M', 'ħ'), - (0x127, 'V'), - (0x128, 'M', 'ĩ'), - (0x129, 'V'), - (0x12A, 'M', 'ī'), - (0x12B, 'V'), - ] - -def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x12C, 'M', 'ĭ'), - (0x12D, 'V'), - (0x12E, 'M', 'į'), - (0x12F, 'V'), - (0x130, 'M', 'i̇'), - (0x131, 'V'), - (0x132, 'M', 'ij'), - (0x134, 'M', 'ĵ'), - (0x135, 'V'), - (0x136, 'M', 'ķ'), - (0x137, 'V'), - (0x139, 'M', 'ĺ'), - (0x13A, 'V'), - (0x13B, 'M', 'ļ'), - (0x13C, 'V'), - (0x13D, 'M', 'ľ'), - (0x13E, 'V'), - (0x13F, 'M', 'l·'), - (0x141, 'M', 'ł'), - (0x142, 'V'), - (0x143, 'M', 'ń'), - (0x144, 'V'), - (0x145, 'M', 'ņ'), - (0x146, 'V'), - (0x147, 'M', 'ň'), - (0x148, 'V'), - (0x149, 'M', 'ʼn'), - (0x14A, 'M', 'ŋ'), - (0x14B, 'V'), - (0x14C, 'M', 'ō'), - (0x14D, 'V'), - (0x14E, 'M', 'ŏ'), - (0x14F, 'V'), - (0x150, 'M', 'ő'), - (0x151, 'V'), - (0x152, 'M', 'œ'), - (0x153, 'V'), - (0x154, 'M', 'ŕ'), - (0x155, 'V'), - (0x156, 'M', 'ŗ'), - (0x157, 'V'), - (0x158, 'M', 'ř'), - (0x159, 'V'), - (0x15A, 'M', 'ś'), - (0x15B, 'V'), - (0x15C, 'M', 'ŝ'), - (0x15D, 'V'), - (0x15E, 'M', 'ş'), - (0x15F, 'V'), - (0x160, 'M', 'š'), - (0x161, 'V'), - (0x162, 'M', 'ţ'), - (0x163, 'V'), - (0x164, 'M', 'ť'), - (0x165, 'V'), - (0x166, 'M', 'ŧ'), - (0x167, 'V'), - (0x168, 'M', 'ũ'), - (0x169, 'V'), - (0x16A, 'M', 'ū'), - (0x16B, 'V'), - (0x16C, 'M', 'ŭ'), - (0x16D, 'V'), - (0x16E, 'M', 'ů'), - (0x16F, 'V'), - (0x170, 'M', 'ű'), - (0x171, 'V'), - (0x172, 'M', 'ų'), - (0x173, 'V'), - (0x174, 'M', 'ŵ'), - (0x175, 'V'), - (0x176, 'M', 'ŷ'), - (0x177, 'V'), - (0x178, 'M', 'ÿ'), - (0x179, 'M', 'ź'), - (0x17A, 'V'), - (0x17B, 'M', 'ż'), - (0x17C, 'V'), - (0x17D, 'M', 'ž'), - (0x17E, 'V'), - (0x17F, 'M', 's'), - (0x180, 'V'), - (0x181, 'M', 'ɓ'), - (0x182, 'M', 'ƃ'), - (0x183, 'V'), - (0x184, 'M', 'ƅ'), - (0x185, 'V'), - (0x186, 'M', 'ɔ'), - (0x187, 'M', 'ƈ'), - (0x188, 'V'), - (0x189, 'M', 'ɖ'), - (0x18A, 'M', 'ɗ'), - (0x18B, 'M', 'ƌ'), - (0x18C, 'V'), - (0x18E, 'M', 'ǝ'), - (0x18F, 'M', 'ə'), - (0x190, 'M', 'ɛ'), - (0x191, 'M', 'ƒ'), - (0x192, 'V'), - (0x193, 'M', 'ɠ'), - ] - -def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x194, 'M', 'ɣ'), - (0x195, 'V'), - (0x196, 'M', 'ɩ'), - (0x197, 'M', 'ɨ'), - (0x198, 'M', 'ƙ'), - (0x199, 'V'), - (0x19C, 'M', 'ɯ'), - (0x19D, 'M', 'ɲ'), - (0x19E, 'V'), - (0x19F, 'M', 'ɵ'), - (0x1A0, 'M', 'ơ'), - (0x1A1, 'V'), - (0x1A2, 'M', 'ƣ'), - (0x1A3, 'V'), - (0x1A4, 'M', 'ƥ'), - (0x1A5, 'V'), - (0x1A6, 'M', 'ʀ'), - (0x1A7, 'M', 'ƨ'), - (0x1A8, 'V'), - (0x1A9, 'M', 'ʃ'), - (0x1AA, 'V'), - (0x1AC, 'M', 'ƭ'), - (0x1AD, 'V'), - (0x1AE, 'M', 'ʈ'), - (0x1AF, 'M', 'ư'), - (0x1B0, 'V'), - (0x1B1, 'M', 'ʊ'), - (0x1B2, 'M', 'ʋ'), - (0x1B3, 'M', 'ƴ'), - (0x1B4, 'V'), - (0x1B5, 'M', 'ƶ'), - (0x1B6, 'V'), - (0x1B7, 'M', 'ʒ'), - (0x1B8, 'M', 'ƹ'), - (0x1B9, 'V'), - (0x1BC, 'M', 'ƽ'), - (0x1BD, 'V'), - (0x1C4, 'M', 'dž'), - (0x1C7, 'M', 'lj'), - (0x1CA, 'M', 'nj'), - (0x1CD, 'M', 'ǎ'), - (0x1CE, 'V'), - (0x1CF, 'M', 'ǐ'), - (0x1D0, 'V'), - (0x1D1, 'M', 'ǒ'), - (0x1D2, 'V'), - (0x1D3, 'M', 'ǔ'), - (0x1D4, 'V'), - (0x1D5, 'M', 'ǖ'), - (0x1D6, 'V'), - (0x1D7, 'M', 'ǘ'), - (0x1D8, 'V'), - (0x1D9, 'M', 'ǚ'), - (0x1DA, 'V'), - (0x1DB, 'M', 'ǜ'), - (0x1DC, 'V'), - (0x1DE, 'M', 'ǟ'), - (0x1DF, 'V'), - (0x1E0, 'M', 'ǡ'), - (0x1E1, 'V'), - (0x1E2, 'M', 'ǣ'), - (0x1E3, 'V'), - (0x1E4, 'M', 'ǥ'), - (0x1E5, 'V'), - (0x1E6, 'M', 'ǧ'), - (0x1E7, 'V'), - (0x1E8, 'M', 'ǩ'), - (0x1E9, 'V'), - (0x1EA, 'M', 'ǫ'), - (0x1EB, 'V'), - (0x1EC, 'M', 'ǭ'), - (0x1ED, 'V'), - (0x1EE, 'M', 'ǯ'), - (0x1EF, 'V'), - (0x1F1, 'M', 'dz'), - (0x1F4, 'M', 'ǵ'), - (0x1F5, 'V'), - (0x1F6, 'M', 'ƕ'), - (0x1F7, 'M', 'ƿ'), - (0x1F8, 'M', 'ǹ'), - (0x1F9, 'V'), - (0x1FA, 'M', 'ǻ'), - (0x1FB, 'V'), - (0x1FC, 'M', 'ǽ'), - (0x1FD, 'V'), - (0x1FE, 'M', 'ǿ'), - (0x1FF, 'V'), - (0x200, 'M', 'ȁ'), - (0x201, 'V'), - (0x202, 'M', 'ȃ'), - (0x203, 'V'), - (0x204, 'M', 'ȅ'), - (0x205, 'V'), - (0x206, 'M', 'ȇ'), - (0x207, 'V'), - (0x208, 'M', 'ȉ'), - (0x209, 'V'), - (0x20A, 'M', 'ȋ'), - (0x20B, 'V'), - (0x20C, 'M', 'ȍ'), - ] - -def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x20D, 'V'), - (0x20E, 'M', 'ȏ'), - (0x20F, 'V'), - (0x210, 'M', 'ȑ'), - (0x211, 'V'), - (0x212, 'M', 'ȓ'), - (0x213, 'V'), - (0x214, 'M', 'ȕ'), - (0x215, 'V'), - (0x216, 'M', 'ȗ'), - (0x217, 'V'), - (0x218, 'M', 'ș'), - (0x219, 'V'), - (0x21A, 'M', 'ț'), - (0x21B, 'V'), - (0x21C, 'M', 'ȝ'), - (0x21D, 'V'), - (0x21E, 'M', 'ȟ'), - (0x21F, 'V'), - (0x220, 'M', 'ƞ'), - (0x221, 'V'), - (0x222, 'M', 'ȣ'), - (0x223, 'V'), - (0x224, 'M', 'ȥ'), - (0x225, 'V'), - (0x226, 'M', 'ȧ'), - (0x227, 'V'), - (0x228, 'M', 'ȩ'), - (0x229, 'V'), - (0x22A, 'M', 'ȫ'), - (0x22B, 'V'), - (0x22C, 'M', 'ȭ'), - (0x22D, 'V'), - (0x22E, 'M', 'ȯ'), - (0x22F, 'V'), - (0x230, 'M', 'ȱ'), - (0x231, 'V'), - (0x232, 'M', 'ȳ'), - (0x233, 'V'), - (0x23A, 'M', 'ⱥ'), - (0x23B, 'M', 'ȼ'), - (0x23C, 'V'), - (0x23D, 'M', 'ƚ'), - (0x23E, 'M', 'ⱦ'), - (0x23F, 'V'), - (0x241, 'M', 'ɂ'), - (0x242, 'V'), - (0x243, 'M', 'ƀ'), - (0x244, 'M', 'ʉ'), - (0x245, 'M', 'ʌ'), - (0x246, 'M', 'ɇ'), - (0x247, 'V'), - (0x248, 'M', 'ɉ'), - (0x249, 'V'), - (0x24A, 'M', 'ɋ'), - (0x24B, 'V'), - (0x24C, 'M', 'ɍ'), - (0x24D, 'V'), - (0x24E, 'M', 'ɏ'), - (0x24F, 'V'), - (0x2B0, 'M', 'h'), - (0x2B1, 'M', 'ɦ'), - (0x2B2, 'M', 'j'), - (0x2B3, 'M', 'r'), - (0x2B4, 'M', 'ɹ'), - (0x2B5, 'M', 'ɻ'), - (0x2B6, 'M', 'ʁ'), - (0x2B7, 'M', 'w'), - (0x2B8, 'M', 'y'), - (0x2B9, 'V'), - (0x2D8, '3', ' ̆'), - (0x2D9, '3', ' ̇'), - (0x2DA, '3', ' ̊'), - (0x2DB, '3', ' ̨'), - (0x2DC, '3', ' ̃'), - (0x2DD, '3', ' ̋'), - (0x2DE, 'V'), - (0x2E0, 'M', 'ɣ'), - (0x2E1, 'M', 'l'), - (0x2E2, 'M', 's'), - (0x2E3, 'M', 'x'), - (0x2E4, 'M', 'ʕ'), - (0x2E5, 'V'), - (0x340, 'M', '̀'), - (0x341, 'M', '́'), - (0x342, 'V'), - (0x343, 'M', '̓'), - (0x344, 'M', '̈́'), - (0x345, 'M', 'ι'), - (0x346, 'V'), - (0x34F, 'I'), - (0x350, 'V'), - (0x370, 'M', 'ͱ'), - (0x371, 'V'), - (0x372, 'M', 'ͳ'), - (0x373, 'V'), - (0x374, 'M', 'ʹ'), - (0x375, 'V'), - (0x376, 'M', 'ͷ'), - (0x377, 'V'), - ] - -def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x378, 'X'), - (0x37A, '3', ' ι'), - (0x37B, 'V'), - (0x37E, '3', ';'), - (0x37F, 'M', 'ϳ'), - (0x380, 'X'), - (0x384, '3', ' ́'), - (0x385, '3', ' ̈́'), - (0x386, 'M', 'ά'), - (0x387, 'M', '·'), - (0x388, 'M', 'έ'), - (0x389, 'M', 'ή'), - (0x38A, 'M', 'ί'), - (0x38B, 'X'), - (0x38C, 'M', 'ό'), - (0x38D, 'X'), - (0x38E, 'M', 'ύ'), - (0x38F, 'M', 'ώ'), - (0x390, 'V'), - (0x391, 'M', 'α'), - (0x392, 'M', 'β'), - (0x393, 'M', 'γ'), - (0x394, 'M', 'δ'), - (0x395, 'M', 'ε'), - (0x396, 'M', 'ζ'), - (0x397, 'M', 'η'), - (0x398, 'M', 'θ'), - (0x399, 'M', 'ι'), - (0x39A, 'M', 'κ'), - (0x39B, 'M', 'λ'), - (0x39C, 'M', 'μ'), - (0x39D, 'M', 'ν'), - (0x39E, 'M', 'ξ'), - (0x39F, 'M', 'ο'), - (0x3A0, 'M', 'π'), - (0x3A1, 'M', 'ρ'), - (0x3A2, 'X'), - (0x3A3, 'M', 'σ'), - (0x3A4, 'M', 'τ'), - (0x3A5, 'M', 'υ'), - (0x3A6, 'M', 'φ'), - (0x3A7, 'M', 'χ'), - (0x3A8, 'M', 'ψ'), - (0x3A9, 'M', 'ω'), - (0x3AA, 'M', 'ϊ'), - (0x3AB, 'M', 'ϋ'), - (0x3AC, 'V'), - (0x3C2, 'D', 'σ'), - (0x3C3, 'V'), - (0x3CF, 'M', 'ϗ'), - (0x3D0, 'M', 'β'), - (0x3D1, 'M', 'θ'), - (0x3D2, 'M', 'υ'), - (0x3D3, 'M', 'ύ'), - (0x3D4, 'M', 'ϋ'), - (0x3D5, 'M', 'φ'), - (0x3D6, 'M', 'π'), - (0x3D7, 'V'), - (0x3D8, 'M', 'ϙ'), - (0x3D9, 'V'), - (0x3DA, 'M', 'ϛ'), - (0x3DB, 'V'), - (0x3DC, 'M', 'ϝ'), - (0x3DD, 'V'), - (0x3DE, 'M', 'ϟ'), - (0x3DF, 'V'), - (0x3E0, 'M', 'ϡ'), - (0x3E1, 'V'), - (0x3E2, 'M', 'ϣ'), - (0x3E3, 'V'), - (0x3E4, 'M', 'ϥ'), - (0x3E5, 'V'), - (0x3E6, 'M', 'ϧ'), - (0x3E7, 'V'), - (0x3E8, 'M', 'ϩ'), - (0x3E9, 'V'), - (0x3EA, 'M', 'ϫ'), - (0x3EB, 'V'), - (0x3EC, 'M', 'ϭ'), - (0x3ED, 'V'), - (0x3EE, 'M', 'ϯ'), - (0x3EF, 'V'), - (0x3F0, 'M', 'κ'), - (0x3F1, 'M', 'ρ'), - (0x3F2, 'M', 'σ'), - (0x3F3, 'V'), - (0x3F4, 'M', 'θ'), - (0x3F5, 'M', 'ε'), - (0x3F6, 'V'), - (0x3F7, 'M', 'ϸ'), - (0x3F8, 'V'), - (0x3F9, 'M', 'σ'), - (0x3FA, 'M', 'ϻ'), - (0x3FB, 'V'), - (0x3FD, 'M', 'ͻ'), - (0x3FE, 'M', 'ͼ'), - (0x3FF, 'M', 'ͽ'), - (0x400, 'M', 'ѐ'), - (0x401, 'M', 'ё'), - (0x402, 'M', 'ђ'), - ] - -def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x403, 'M', 'ѓ'), - (0x404, 'M', 'є'), - (0x405, 'M', 'ѕ'), - (0x406, 'M', 'і'), - (0x407, 'M', 'ї'), - (0x408, 'M', 'ј'), - (0x409, 'M', 'љ'), - (0x40A, 'M', 'њ'), - (0x40B, 'M', 'ћ'), - (0x40C, 'M', 'ќ'), - (0x40D, 'M', 'ѝ'), - (0x40E, 'M', 'ў'), - (0x40F, 'M', 'џ'), - (0x410, 'M', 'а'), - (0x411, 'M', 'б'), - (0x412, 'M', 'в'), - (0x413, 'M', 'г'), - (0x414, 'M', 'д'), - (0x415, 'M', 'е'), - (0x416, 'M', 'ж'), - (0x417, 'M', 'з'), - (0x418, 'M', 'и'), - (0x419, 'M', 'й'), - (0x41A, 'M', 'к'), - (0x41B, 'M', 'л'), - (0x41C, 'M', 'м'), - (0x41D, 'M', 'н'), - (0x41E, 'M', 'о'), - (0x41F, 'M', 'п'), - (0x420, 'M', 'р'), - (0x421, 'M', 'с'), - (0x422, 'M', 'т'), - (0x423, 'M', 'у'), - (0x424, 'M', 'ф'), - (0x425, 'M', 'х'), - (0x426, 'M', 'ц'), - (0x427, 'M', 'ч'), - (0x428, 'M', 'ш'), - (0x429, 'M', 'щ'), - (0x42A, 'M', 'ъ'), - (0x42B, 'M', 'ы'), - (0x42C, 'M', 'ь'), - (0x42D, 'M', 'э'), - (0x42E, 'M', 'ю'), - (0x42F, 'M', 'я'), - (0x430, 'V'), - (0x460, 'M', 'ѡ'), - (0x461, 'V'), - (0x462, 'M', 'ѣ'), - (0x463, 'V'), - (0x464, 'M', 'ѥ'), - (0x465, 'V'), - (0x466, 'M', 'ѧ'), - (0x467, 'V'), - (0x468, 'M', 'ѩ'), - (0x469, 'V'), - (0x46A, 'M', 'ѫ'), - (0x46B, 'V'), - (0x46C, 'M', 'ѭ'), - (0x46D, 'V'), - (0x46E, 'M', 'ѯ'), - (0x46F, 'V'), - (0x470, 'M', 'ѱ'), - (0x471, 'V'), - (0x472, 'M', 'ѳ'), - (0x473, 'V'), - (0x474, 'M', 'ѵ'), - (0x475, 'V'), - (0x476, 'M', 'ѷ'), - (0x477, 'V'), - (0x478, 'M', 'ѹ'), - (0x479, 'V'), - (0x47A, 'M', 'ѻ'), - (0x47B, 'V'), - (0x47C, 'M', 'ѽ'), - (0x47D, 'V'), - (0x47E, 'M', 'ѿ'), - (0x47F, 'V'), - (0x480, 'M', 'ҁ'), - (0x481, 'V'), - (0x48A, 'M', 'ҋ'), - (0x48B, 'V'), - (0x48C, 'M', 'ҍ'), - (0x48D, 'V'), - (0x48E, 'M', 'ҏ'), - (0x48F, 'V'), - (0x490, 'M', 'ґ'), - (0x491, 'V'), - (0x492, 'M', 'ғ'), - (0x493, 'V'), - (0x494, 'M', 'ҕ'), - (0x495, 'V'), - (0x496, 'M', 'җ'), - (0x497, 'V'), - (0x498, 'M', 'ҙ'), - (0x499, 'V'), - (0x49A, 'M', 'қ'), - (0x49B, 'V'), - (0x49C, 'M', 'ҝ'), - (0x49D, 'V'), - ] - -def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x49E, 'M', 'ҟ'), - (0x49F, 'V'), - (0x4A0, 'M', 'ҡ'), - (0x4A1, 'V'), - (0x4A2, 'M', 'ң'), - (0x4A3, 'V'), - (0x4A4, 'M', 'ҥ'), - (0x4A5, 'V'), - (0x4A6, 'M', 'ҧ'), - (0x4A7, 'V'), - (0x4A8, 'M', 'ҩ'), - (0x4A9, 'V'), - (0x4AA, 'M', 'ҫ'), - (0x4AB, 'V'), - (0x4AC, 'M', 'ҭ'), - (0x4AD, 'V'), - (0x4AE, 'M', 'ү'), - (0x4AF, 'V'), - (0x4B0, 'M', 'ұ'), - (0x4B1, 'V'), - (0x4B2, 'M', 'ҳ'), - (0x4B3, 'V'), - (0x4B4, 'M', 'ҵ'), - (0x4B5, 'V'), - (0x4B6, 'M', 'ҷ'), - (0x4B7, 'V'), - (0x4B8, 'M', 'ҹ'), - (0x4B9, 'V'), - (0x4BA, 'M', 'һ'), - (0x4BB, 'V'), - (0x4BC, 'M', 'ҽ'), - (0x4BD, 'V'), - (0x4BE, 'M', 'ҿ'), - (0x4BF, 'V'), - (0x4C0, 'X'), - (0x4C1, 'M', 'ӂ'), - (0x4C2, 'V'), - (0x4C3, 'M', 'ӄ'), - (0x4C4, 'V'), - (0x4C5, 'M', 'ӆ'), - (0x4C6, 'V'), - (0x4C7, 'M', 'ӈ'), - (0x4C8, 'V'), - (0x4C9, 'M', 'ӊ'), - (0x4CA, 'V'), - (0x4CB, 'M', 'ӌ'), - (0x4CC, 'V'), - (0x4CD, 'M', 'ӎ'), - (0x4CE, 'V'), - (0x4D0, 'M', 'ӑ'), - (0x4D1, 'V'), - (0x4D2, 'M', 'ӓ'), - (0x4D3, 'V'), - (0x4D4, 'M', 'ӕ'), - (0x4D5, 'V'), - (0x4D6, 'M', 'ӗ'), - (0x4D7, 'V'), - (0x4D8, 'M', 'ә'), - (0x4D9, 'V'), - (0x4DA, 'M', 'ӛ'), - (0x4DB, 'V'), - (0x4DC, 'M', 'ӝ'), - (0x4DD, 'V'), - (0x4DE, 'M', 'ӟ'), - (0x4DF, 'V'), - (0x4E0, 'M', 'ӡ'), - (0x4E1, 'V'), - (0x4E2, 'M', 'ӣ'), - (0x4E3, 'V'), - (0x4E4, 'M', 'ӥ'), - (0x4E5, 'V'), - (0x4E6, 'M', 'ӧ'), - (0x4E7, 'V'), - (0x4E8, 'M', 'ө'), - (0x4E9, 'V'), - (0x4EA, 'M', 'ӫ'), - (0x4EB, 'V'), - (0x4EC, 'M', 'ӭ'), - (0x4ED, 'V'), - (0x4EE, 'M', 'ӯ'), - (0x4EF, 'V'), - (0x4F0, 'M', 'ӱ'), - (0x4F1, 'V'), - (0x4F2, 'M', 'ӳ'), - (0x4F3, 'V'), - (0x4F4, 'M', 'ӵ'), - (0x4F5, 'V'), - (0x4F6, 'M', 'ӷ'), - (0x4F7, 'V'), - (0x4F8, 'M', 'ӹ'), - (0x4F9, 'V'), - (0x4FA, 'M', 'ӻ'), - (0x4FB, 'V'), - (0x4FC, 'M', 'ӽ'), - (0x4FD, 'V'), - (0x4FE, 'M', 'ӿ'), - (0x4FF, 'V'), - (0x500, 'M', 'ԁ'), - (0x501, 'V'), - (0x502, 'M', 'ԃ'), - ] - -def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x503, 'V'), - (0x504, 'M', 'ԅ'), - (0x505, 'V'), - (0x506, 'M', 'ԇ'), - (0x507, 'V'), - (0x508, 'M', 'ԉ'), - (0x509, 'V'), - (0x50A, 'M', 'ԋ'), - (0x50B, 'V'), - (0x50C, 'M', 'ԍ'), - (0x50D, 'V'), - (0x50E, 'M', 'ԏ'), - (0x50F, 'V'), - (0x510, 'M', 'ԑ'), - (0x511, 'V'), - (0x512, 'M', 'ԓ'), - (0x513, 'V'), - (0x514, 'M', 'ԕ'), - (0x515, 'V'), - (0x516, 'M', 'ԗ'), - (0x517, 'V'), - (0x518, 'M', 'ԙ'), - (0x519, 'V'), - (0x51A, 'M', 'ԛ'), - (0x51B, 'V'), - (0x51C, 'M', 'ԝ'), - (0x51D, 'V'), - (0x51E, 'M', 'ԟ'), - (0x51F, 'V'), - (0x520, 'M', 'ԡ'), - (0x521, 'V'), - (0x522, 'M', 'ԣ'), - (0x523, 'V'), - (0x524, 'M', 'ԥ'), - (0x525, 'V'), - (0x526, 'M', 'ԧ'), - (0x527, 'V'), - (0x528, 'M', 'ԩ'), - (0x529, 'V'), - (0x52A, 'M', 'ԫ'), - (0x52B, 'V'), - (0x52C, 'M', 'ԭ'), - (0x52D, 'V'), - (0x52E, 'M', 'ԯ'), - (0x52F, 'V'), - (0x530, 'X'), - (0x531, 'M', 'ա'), - (0x532, 'M', 'բ'), - (0x533, 'M', 'գ'), - (0x534, 'M', 'դ'), - (0x535, 'M', 'ե'), - (0x536, 'M', 'զ'), - (0x537, 'M', 'է'), - (0x538, 'M', 'ը'), - (0x539, 'M', 'թ'), - (0x53A, 'M', 'ժ'), - (0x53B, 'M', 'ի'), - (0x53C, 'M', 'լ'), - (0x53D, 'M', 'խ'), - (0x53E, 'M', 'ծ'), - (0x53F, 'M', 'կ'), - (0x540, 'M', 'հ'), - (0x541, 'M', 'ձ'), - (0x542, 'M', 'ղ'), - (0x543, 'M', 'ճ'), - (0x544, 'M', 'մ'), - (0x545, 'M', 'յ'), - (0x546, 'M', 'ն'), - (0x547, 'M', 'շ'), - (0x548, 'M', 'ո'), - (0x549, 'M', 'չ'), - (0x54A, 'M', 'պ'), - (0x54B, 'M', 'ջ'), - (0x54C, 'M', 'ռ'), - (0x54D, 'M', 'ս'), - (0x54E, 'M', 'վ'), - (0x54F, 'M', 'տ'), - (0x550, 'M', 'ր'), - (0x551, 'M', 'ց'), - (0x552, 'M', 'ւ'), - (0x553, 'M', 'փ'), - (0x554, 'M', 'ք'), - (0x555, 'M', 'օ'), - (0x556, 'M', 'ֆ'), - (0x557, 'X'), - (0x559, 'V'), - (0x587, 'M', 'եւ'), - (0x588, 'V'), - (0x58B, 'X'), - (0x58D, 'V'), - (0x590, 'X'), - (0x591, 'V'), - (0x5C8, 'X'), - (0x5D0, 'V'), - (0x5EB, 'X'), - (0x5EF, 'V'), - (0x5F5, 'X'), - (0x606, 'V'), - (0x61C, 'X'), - (0x61D, 'V'), - ] - -def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x675, 'M', 'اٴ'), - (0x676, 'M', 'وٴ'), - (0x677, 'M', 'ۇٴ'), - (0x678, 'M', 'يٴ'), - (0x679, 'V'), - (0x6DD, 'X'), - (0x6DE, 'V'), - (0x70E, 'X'), - (0x710, 'V'), - (0x74B, 'X'), - (0x74D, 'V'), - (0x7B2, 'X'), - (0x7C0, 'V'), - (0x7FB, 'X'), - (0x7FD, 'V'), - (0x82E, 'X'), - (0x830, 'V'), - (0x83F, 'X'), - (0x840, 'V'), - (0x85C, 'X'), - (0x85E, 'V'), - (0x85F, 'X'), - (0x860, 'V'), - (0x86B, 'X'), - (0x870, 'V'), - (0x88F, 'X'), - (0x898, 'V'), - (0x8E2, 'X'), - (0x8E3, 'V'), - (0x958, 'M', 'क़'), - (0x959, 'M', 'ख़'), - (0x95A, 'M', 'ग़'), - (0x95B, 'M', 'ज़'), - (0x95C, 'M', 'ड़'), - (0x95D, 'M', 'ढ़'), - (0x95E, 'M', 'फ़'), - (0x95F, 'M', 'य़'), - (0x960, 'V'), - (0x984, 'X'), - (0x985, 'V'), - (0x98D, 'X'), - (0x98F, 'V'), - (0x991, 'X'), - (0x993, 'V'), - (0x9A9, 'X'), - (0x9AA, 'V'), - (0x9B1, 'X'), - (0x9B2, 'V'), - (0x9B3, 'X'), - (0x9B6, 'V'), - (0x9BA, 'X'), - (0x9BC, 'V'), - (0x9C5, 'X'), - (0x9C7, 'V'), - (0x9C9, 'X'), - (0x9CB, 'V'), - (0x9CF, 'X'), - (0x9D7, 'V'), - (0x9D8, 'X'), - (0x9DC, 'M', 'ড়'), - (0x9DD, 'M', 'ঢ়'), - (0x9DE, 'X'), - (0x9DF, 'M', 'য়'), - (0x9E0, 'V'), - (0x9E4, 'X'), - (0x9E6, 'V'), - (0x9FF, 'X'), - (0xA01, 'V'), - (0xA04, 'X'), - (0xA05, 'V'), - (0xA0B, 'X'), - (0xA0F, 'V'), - (0xA11, 'X'), - (0xA13, 'V'), - (0xA29, 'X'), - (0xA2A, 'V'), - (0xA31, 'X'), - (0xA32, 'V'), - (0xA33, 'M', 'ਲ਼'), - (0xA34, 'X'), - (0xA35, 'V'), - (0xA36, 'M', 'ਸ਼'), - (0xA37, 'X'), - (0xA38, 'V'), - (0xA3A, 'X'), - (0xA3C, 'V'), - (0xA3D, 'X'), - (0xA3E, 'V'), - (0xA43, 'X'), - (0xA47, 'V'), - (0xA49, 'X'), - (0xA4B, 'V'), - (0xA4E, 'X'), - (0xA51, 'V'), - (0xA52, 'X'), - (0xA59, 'M', 'ਖ਼'), - (0xA5A, 'M', 'ਗ਼'), - (0xA5B, 'M', 'ਜ਼'), - (0xA5C, 'V'), - (0xA5D, 'X'), - ] - -def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA5E, 'M', 'ਫ਼'), - (0xA5F, 'X'), - (0xA66, 'V'), - (0xA77, 'X'), - (0xA81, 'V'), - (0xA84, 'X'), - (0xA85, 'V'), - (0xA8E, 'X'), - (0xA8F, 'V'), - (0xA92, 'X'), - (0xA93, 'V'), - (0xAA9, 'X'), - (0xAAA, 'V'), - (0xAB1, 'X'), - (0xAB2, 'V'), - (0xAB4, 'X'), - (0xAB5, 'V'), - (0xABA, 'X'), - (0xABC, 'V'), - (0xAC6, 'X'), - (0xAC7, 'V'), - (0xACA, 'X'), - (0xACB, 'V'), - (0xACE, 'X'), - (0xAD0, 'V'), - (0xAD1, 'X'), - (0xAE0, 'V'), - (0xAE4, 'X'), - (0xAE6, 'V'), - (0xAF2, 'X'), - (0xAF9, 'V'), - (0xB00, 'X'), - (0xB01, 'V'), - (0xB04, 'X'), - (0xB05, 'V'), - (0xB0D, 'X'), - (0xB0F, 'V'), - (0xB11, 'X'), - (0xB13, 'V'), - (0xB29, 'X'), - (0xB2A, 'V'), - (0xB31, 'X'), - (0xB32, 'V'), - (0xB34, 'X'), - (0xB35, 'V'), - (0xB3A, 'X'), - (0xB3C, 'V'), - (0xB45, 'X'), - (0xB47, 'V'), - (0xB49, 'X'), - (0xB4B, 'V'), - (0xB4E, 'X'), - (0xB55, 'V'), - (0xB58, 'X'), - (0xB5C, 'M', 'ଡ଼'), - (0xB5D, 'M', 'ଢ଼'), - (0xB5E, 'X'), - (0xB5F, 'V'), - (0xB64, 'X'), - (0xB66, 'V'), - (0xB78, 'X'), - (0xB82, 'V'), - (0xB84, 'X'), - (0xB85, 'V'), - (0xB8B, 'X'), - (0xB8E, 'V'), - (0xB91, 'X'), - (0xB92, 'V'), - (0xB96, 'X'), - (0xB99, 'V'), - (0xB9B, 'X'), - (0xB9C, 'V'), - (0xB9D, 'X'), - (0xB9E, 'V'), - (0xBA0, 'X'), - (0xBA3, 'V'), - (0xBA5, 'X'), - (0xBA8, 'V'), - (0xBAB, 'X'), - (0xBAE, 'V'), - (0xBBA, 'X'), - (0xBBE, 'V'), - (0xBC3, 'X'), - (0xBC6, 'V'), - (0xBC9, 'X'), - (0xBCA, 'V'), - (0xBCE, 'X'), - (0xBD0, 'V'), - (0xBD1, 'X'), - (0xBD7, 'V'), - (0xBD8, 'X'), - (0xBE6, 'V'), - (0xBFB, 'X'), - (0xC00, 'V'), - (0xC0D, 'X'), - (0xC0E, 'V'), - (0xC11, 'X'), - (0xC12, 'V'), - (0xC29, 'X'), - (0xC2A, 'V'), - ] - -def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC3A, 'X'), - (0xC3C, 'V'), - (0xC45, 'X'), - (0xC46, 'V'), - (0xC49, 'X'), - (0xC4A, 'V'), - (0xC4E, 'X'), - (0xC55, 'V'), - (0xC57, 'X'), - (0xC58, 'V'), - (0xC5B, 'X'), - (0xC5D, 'V'), - (0xC5E, 'X'), - (0xC60, 'V'), - (0xC64, 'X'), - (0xC66, 'V'), - (0xC70, 'X'), - (0xC77, 'V'), - (0xC8D, 'X'), - (0xC8E, 'V'), - (0xC91, 'X'), - (0xC92, 'V'), - (0xCA9, 'X'), - (0xCAA, 'V'), - (0xCB4, 'X'), - (0xCB5, 'V'), - (0xCBA, 'X'), - (0xCBC, 'V'), - (0xCC5, 'X'), - (0xCC6, 'V'), - (0xCC9, 'X'), - (0xCCA, 'V'), - (0xCCE, 'X'), - (0xCD5, 'V'), - (0xCD7, 'X'), - (0xCDD, 'V'), - (0xCDF, 'X'), - (0xCE0, 'V'), - (0xCE4, 'X'), - (0xCE6, 'V'), - (0xCF0, 'X'), - (0xCF1, 'V'), - (0xCF4, 'X'), - (0xD00, 'V'), - (0xD0D, 'X'), - (0xD0E, 'V'), - (0xD11, 'X'), - (0xD12, 'V'), - (0xD45, 'X'), - (0xD46, 'V'), - (0xD49, 'X'), - (0xD4A, 'V'), - (0xD50, 'X'), - (0xD54, 'V'), - (0xD64, 'X'), - (0xD66, 'V'), - (0xD80, 'X'), - (0xD81, 'V'), - (0xD84, 'X'), - (0xD85, 'V'), - (0xD97, 'X'), - (0xD9A, 'V'), - (0xDB2, 'X'), - (0xDB3, 'V'), - (0xDBC, 'X'), - (0xDBD, 'V'), - (0xDBE, 'X'), - (0xDC0, 'V'), - (0xDC7, 'X'), - (0xDCA, 'V'), - (0xDCB, 'X'), - (0xDCF, 'V'), - (0xDD5, 'X'), - (0xDD6, 'V'), - (0xDD7, 'X'), - (0xDD8, 'V'), - (0xDE0, 'X'), - (0xDE6, 'V'), - (0xDF0, 'X'), - (0xDF2, 'V'), - (0xDF5, 'X'), - (0xE01, 'V'), - (0xE33, 'M', 'ํา'), - (0xE34, 'V'), - (0xE3B, 'X'), - (0xE3F, 'V'), - (0xE5C, 'X'), - (0xE81, 'V'), - (0xE83, 'X'), - (0xE84, 'V'), - (0xE85, 'X'), - (0xE86, 'V'), - (0xE8B, 'X'), - (0xE8C, 'V'), - (0xEA4, 'X'), - (0xEA5, 'V'), - (0xEA6, 'X'), - (0xEA7, 'V'), - (0xEB3, 'M', 'ໍາ'), - (0xEB4, 'V'), - ] - -def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xEBE, 'X'), - (0xEC0, 'V'), - (0xEC5, 'X'), - (0xEC6, 'V'), - (0xEC7, 'X'), - (0xEC8, 'V'), - (0xECF, 'X'), - (0xED0, 'V'), - (0xEDA, 'X'), - (0xEDC, 'M', 'ຫນ'), - (0xEDD, 'M', 'ຫມ'), - (0xEDE, 'V'), - (0xEE0, 'X'), - (0xF00, 'V'), - (0xF0C, 'M', '་'), - (0xF0D, 'V'), - (0xF43, 'M', 'གྷ'), - (0xF44, 'V'), - (0xF48, 'X'), - (0xF49, 'V'), - (0xF4D, 'M', 'ཌྷ'), - (0xF4E, 'V'), - (0xF52, 'M', 'དྷ'), - (0xF53, 'V'), - (0xF57, 'M', 'བྷ'), - (0xF58, 'V'), - (0xF5C, 'M', 'ཛྷ'), - (0xF5D, 'V'), - (0xF69, 'M', 'ཀྵ'), - (0xF6A, 'V'), - (0xF6D, 'X'), - (0xF71, 'V'), - (0xF73, 'M', 'ཱི'), - (0xF74, 'V'), - (0xF75, 'M', 'ཱུ'), - (0xF76, 'M', 'ྲྀ'), - (0xF77, 'M', 'ྲཱྀ'), - (0xF78, 'M', 'ླྀ'), - (0xF79, 'M', 'ླཱྀ'), - (0xF7A, 'V'), - (0xF81, 'M', 'ཱྀ'), - (0xF82, 'V'), - (0xF93, 'M', 'ྒྷ'), - (0xF94, 'V'), - (0xF98, 'X'), - (0xF99, 'V'), - (0xF9D, 'M', 'ྜྷ'), - (0xF9E, 'V'), - (0xFA2, 'M', 'ྡྷ'), - (0xFA3, 'V'), - (0xFA7, 'M', 'ྦྷ'), - (0xFA8, 'V'), - (0xFAC, 'M', 'ྫྷ'), - (0xFAD, 'V'), - (0xFB9, 'M', 'ྐྵ'), - (0xFBA, 'V'), - (0xFBD, 'X'), - (0xFBE, 'V'), - (0xFCD, 'X'), - (0xFCE, 'V'), - (0xFDB, 'X'), - (0x1000, 'V'), - (0x10A0, 'X'), - (0x10C7, 'M', 'ⴧ'), - (0x10C8, 'X'), - (0x10CD, 'M', 'ⴭ'), - (0x10CE, 'X'), - (0x10D0, 'V'), - (0x10FC, 'M', 'ნ'), - (0x10FD, 'V'), - (0x115F, 'X'), - (0x1161, 'V'), - (0x1249, 'X'), - (0x124A, 'V'), - (0x124E, 'X'), - (0x1250, 'V'), - (0x1257, 'X'), - (0x1258, 'V'), - (0x1259, 'X'), - (0x125A, 'V'), - (0x125E, 'X'), - (0x1260, 'V'), - (0x1289, 'X'), - (0x128A, 'V'), - (0x128E, 'X'), - (0x1290, 'V'), - (0x12B1, 'X'), - (0x12B2, 'V'), - (0x12B6, 'X'), - (0x12B8, 'V'), - (0x12BF, 'X'), - (0x12C0, 'V'), - (0x12C1, 'X'), - (0x12C2, 'V'), - (0x12C6, 'X'), - (0x12C8, 'V'), - (0x12D7, 'X'), - (0x12D8, 'V'), - (0x1311, 'X'), - (0x1312, 'V'), - ] - -def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1316, 'X'), - (0x1318, 'V'), - (0x135B, 'X'), - (0x135D, 'V'), - (0x137D, 'X'), - (0x1380, 'V'), - (0x139A, 'X'), - (0x13A0, 'V'), - (0x13F6, 'X'), - (0x13F8, 'M', 'Ᏸ'), - (0x13F9, 'M', 'Ᏹ'), - (0x13FA, 'M', 'Ᏺ'), - (0x13FB, 'M', 'Ᏻ'), - (0x13FC, 'M', 'Ᏼ'), - (0x13FD, 'M', 'Ᏽ'), - (0x13FE, 'X'), - (0x1400, 'V'), - (0x1680, 'X'), - (0x1681, 'V'), - (0x169D, 'X'), - (0x16A0, 'V'), - (0x16F9, 'X'), - (0x1700, 'V'), - (0x1716, 'X'), - (0x171F, 'V'), - (0x1737, 'X'), - (0x1740, 'V'), - (0x1754, 'X'), - (0x1760, 'V'), - (0x176D, 'X'), - (0x176E, 'V'), - (0x1771, 'X'), - (0x1772, 'V'), - (0x1774, 'X'), - (0x1780, 'V'), - (0x17B4, 'X'), - (0x17B6, 'V'), - (0x17DE, 'X'), - (0x17E0, 'V'), - (0x17EA, 'X'), - (0x17F0, 'V'), - (0x17FA, 'X'), - (0x1800, 'V'), - (0x1806, 'X'), - (0x1807, 'V'), - (0x180B, 'I'), - (0x180E, 'X'), - (0x180F, 'I'), - (0x1810, 'V'), - (0x181A, 'X'), - (0x1820, 'V'), - (0x1879, 'X'), - (0x1880, 'V'), - (0x18AB, 'X'), - (0x18B0, 'V'), - (0x18F6, 'X'), - (0x1900, 'V'), - (0x191F, 'X'), - (0x1920, 'V'), - (0x192C, 'X'), - (0x1930, 'V'), - (0x193C, 'X'), - (0x1940, 'V'), - (0x1941, 'X'), - (0x1944, 'V'), - (0x196E, 'X'), - (0x1970, 'V'), - (0x1975, 'X'), - (0x1980, 'V'), - (0x19AC, 'X'), - (0x19B0, 'V'), - (0x19CA, 'X'), - (0x19D0, 'V'), - (0x19DB, 'X'), - (0x19DE, 'V'), - (0x1A1C, 'X'), - (0x1A1E, 'V'), - (0x1A5F, 'X'), - (0x1A60, 'V'), - (0x1A7D, 'X'), - (0x1A7F, 'V'), - (0x1A8A, 'X'), - (0x1A90, 'V'), - (0x1A9A, 'X'), - (0x1AA0, 'V'), - (0x1AAE, 'X'), - (0x1AB0, 'V'), - (0x1ACF, 'X'), - (0x1B00, 'V'), - (0x1B4D, 'X'), - (0x1B50, 'V'), - (0x1B7F, 'X'), - (0x1B80, 'V'), - (0x1BF4, 'X'), - (0x1BFC, 'V'), - (0x1C38, 'X'), - (0x1C3B, 'V'), - (0x1C4A, 'X'), - (0x1C4D, 'V'), - (0x1C80, 'M', 'в'), - ] - -def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1C81, 'M', 'д'), - (0x1C82, 'M', 'о'), - (0x1C83, 'M', 'с'), - (0x1C84, 'M', 'т'), - (0x1C86, 'M', 'ъ'), - (0x1C87, 'M', 'ѣ'), - (0x1C88, 'M', 'ꙋ'), - (0x1C89, 'X'), - (0x1C90, 'M', 'ა'), - (0x1C91, 'M', 'ბ'), - (0x1C92, 'M', 'გ'), - (0x1C93, 'M', 'დ'), - (0x1C94, 'M', 'ე'), - (0x1C95, 'M', 'ვ'), - (0x1C96, 'M', 'ზ'), - (0x1C97, 'M', 'თ'), - (0x1C98, 'M', 'ი'), - (0x1C99, 'M', 'კ'), - (0x1C9A, 'M', 'ლ'), - (0x1C9B, 'M', 'მ'), - (0x1C9C, 'M', 'ნ'), - (0x1C9D, 'M', 'ო'), - (0x1C9E, 'M', 'პ'), - (0x1C9F, 'M', 'ჟ'), - (0x1CA0, 'M', 'რ'), - (0x1CA1, 'M', 'ს'), - (0x1CA2, 'M', 'ტ'), - (0x1CA3, 'M', 'უ'), - (0x1CA4, 'M', 'ფ'), - (0x1CA5, 'M', 'ქ'), - (0x1CA6, 'M', 'ღ'), - (0x1CA7, 'M', 'ყ'), - (0x1CA8, 'M', 'შ'), - (0x1CA9, 'M', 'ჩ'), - (0x1CAA, 'M', 'ც'), - (0x1CAB, 'M', 'ძ'), - (0x1CAC, 'M', 'წ'), - (0x1CAD, 'M', 'ჭ'), - (0x1CAE, 'M', 'ხ'), - (0x1CAF, 'M', 'ჯ'), - (0x1CB0, 'M', 'ჰ'), - (0x1CB1, 'M', 'ჱ'), - (0x1CB2, 'M', 'ჲ'), - (0x1CB3, 'M', 'ჳ'), - (0x1CB4, 'M', 'ჴ'), - (0x1CB5, 'M', 'ჵ'), - (0x1CB6, 'M', 'ჶ'), - (0x1CB7, 'M', 'ჷ'), - (0x1CB8, 'M', 'ჸ'), - (0x1CB9, 'M', 'ჹ'), - (0x1CBA, 'M', 'ჺ'), - (0x1CBB, 'X'), - (0x1CBD, 'M', 'ჽ'), - (0x1CBE, 'M', 'ჾ'), - (0x1CBF, 'M', 'ჿ'), - (0x1CC0, 'V'), - (0x1CC8, 'X'), - (0x1CD0, 'V'), - (0x1CFB, 'X'), - (0x1D00, 'V'), - (0x1D2C, 'M', 'a'), - (0x1D2D, 'M', 'æ'), - (0x1D2E, 'M', 'b'), - (0x1D2F, 'V'), - (0x1D30, 'M', 'd'), - (0x1D31, 'M', 'e'), - (0x1D32, 'M', 'ǝ'), - (0x1D33, 'M', 'g'), - (0x1D34, 'M', 'h'), - (0x1D35, 'M', 'i'), - (0x1D36, 'M', 'j'), - (0x1D37, 'M', 'k'), - (0x1D38, 'M', 'l'), - (0x1D39, 'M', 'm'), - (0x1D3A, 'M', 'n'), - (0x1D3B, 'V'), - (0x1D3C, 'M', 'o'), - (0x1D3D, 'M', 'ȣ'), - (0x1D3E, 'M', 'p'), - (0x1D3F, 'M', 'r'), - (0x1D40, 'M', 't'), - (0x1D41, 'M', 'u'), - (0x1D42, 'M', 'w'), - (0x1D43, 'M', 'a'), - (0x1D44, 'M', 'ɐ'), - (0x1D45, 'M', 'ɑ'), - (0x1D46, 'M', 'ᴂ'), - (0x1D47, 'M', 'b'), - (0x1D48, 'M', 'd'), - (0x1D49, 'M', 'e'), - (0x1D4A, 'M', 'ə'), - (0x1D4B, 'M', 'ɛ'), - (0x1D4C, 'M', 'ɜ'), - (0x1D4D, 'M', 'g'), - (0x1D4E, 'V'), - (0x1D4F, 'M', 'k'), - (0x1D50, 'M', 'm'), - (0x1D51, 'M', 'ŋ'), - (0x1D52, 'M', 'o'), - (0x1D53, 'M', 'ɔ'), - ] - -def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D54, 'M', 'ᴖ'), - (0x1D55, 'M', 'ᴗ'), - (0x1D56, 'M', 'p'), - (0x1D57, 'M', 't'), - (0x1D58, 'M', 'u'), - (0x1D59, 'M', 'ᴝ'), - (0x1D5A, 'M', 'ɯ'), - (0x1D5B, 'M', 'v'), - (0x1D5C, 'M', 'ᴥ'), - (0x1D5D, 'M', 'β'), - (0x1D5E, 'M', 'γ'), - (0x1D5F, 'M', 'δ'), - (0x1D60, 'M', 'φ'), - (0x1D61, 'M', 'χ'), - (0x1D62, 'M', 'i'), - (0x1D63, 'M', 'r'), - (0x1D64, 'M', 'u'), - (0x1D65, 'M', 'v'), - (0x1D66, 'M', 'β'), - (0x1D67, 'M', 'γ'), - (0x1D68, 'M', 'ρ'), - (0x1D69, 'M', 'φ'), - (0x1D6A, 'M', 'χ'), - (0x1D6B, 'V'), - (0x1D78, 'M', 'н'), - (0x1D79, 'V'), - (0x1D9B, 'M', 'ɒ'), - (0x1D9C, 'M', 'c'), - (0x1D9D, 'M', 'ɕ'), - (0x1D9E, 'M', 'ð'), - (0x1D9F, 'M', 'ɜ'), - (0x1DA0, 'M', 'f'), - (0x1DA1, 'M', 'ɟ'), - (0x1DA2, 'M', 'ɡ'), - (0x1DA3, 'M', 'ɥ'), - (0x1DA4, 'M', 'ɨ'), - (0x1DA5, 'M', 'ɩ'), - (0x1DA6, 'M', 'ɪ'), - (0x1DA7, 'M', 'ᵻ'), - (0x1DA8, 'M', 'ʝ'), - (0x1DA9, 'M', 'ɭ'), - (0x1DAA, 'M', 'ᶅ'), - (0x1DAB, 'M', 'ʟ'), - (0x1DAC, 'M', 'ɱ'), - (0x1DAD, 'M', 'ɰ'), - (0x1DAE, 'M', 'ɲ'), - (0x1DAF, 'M', 'ɳ'), - (0x1DB0, 'M', 'ɴ'), - (0x1DB1, 'M', 'ɵ'), - (0x1DB2, 'M', 'ɸ'), - (0x1DB3, 'M', 'ʂ'), - (0x1DB4, 'M', 'ʃ'), - (0x1DB5, 'M', 'ƫ'), - (0x1DB6, 'M', 'ʉ'), - (0x1DB7, 'M', 'ʊ'), - (0x1DB8, 'M', 'ᴜ'), - (0x1DB9, 'M', 'ʋ'), - (0x1DBA, 'M', 'ʌ'), - (0x1DBB, 'M', 'z'), - (0x1DBC, 'M', 'ʐ'), - (0x1DBD, 'M', 'ʑ'), - (0x1DBE, 'M', 'ʒ'), - (0x1DBF, 'M', 'θ'), - (0x1DC0, 'V'), - (0x1E00, 'M', 'ḁ'), - (0x1E01, 'V'), - (0x1E02, 'M', 'ḃ'), - (0x1E03, 'V'), - (0x1E04, 'M', 'ḅ'), - (0x1E05, 'V'), - (0x1E06, 'M', 'ḇ'), - (0x1E07, 'V'), - (0x1E08, 'M', 'ḉ'), - (0x1E09, 'V'), - (0x1E0A, 'M', 'ḋ'), - (0x1E0B, 'V'), - (0x1E0C, 'M', 'ḍ'), - (0x1E0D, 'V'), - (0x1E0E, 'M', 'ḏ'), - (0x1E0F, 'V'), - (0x1E10, 'M', 'ḑ'), - (0x1E11, 'V'), - (0x1E12, 'M', 'ḓ'), - (0x1E13, 'V'), - (0x1E14, 'M', 'ḕ'), - (0x1E15, 'V'), - (0x1E16, 'M', 'ḗ'), - (0x1E17, 'V'), - (0x1E18, 'M', 'ḙ'), - (0x1E19, 'V'), - (0x1E1A, 'M', 'ḛ'), - (0x1E1B, 'V'), - (0x1E1C, 'M', 'ḝ'), - (0x1E1D, 'V'), - (0x1E1E, 'M', 'ḟ'), - (0x1E1F, 'V'), - (0x1E20, 'M', 'ḡ'), - (0x1E21, 'V'), - (0x1E22, 'M', 'ḣ'), - (0x1E23, 'V'), - ] - -def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E24, 'M', 'ḥ'), - (0x1E25, 'V'), - (0x1E26, 'M', 'ḧ'), - (0x1E27, 'V'), - (0x1E28, 'M', 'ḩ'), - (0x1E29, 'V'), - (0x1E2A, 'M', 'ḫ'), - (0x1E2B, 'V'), - (0x1E2C, 'M', 'ḭ'), - (0x1E2D, 'V'), - (0x1E2E, 'M', 'ḯ'), - (0x1E2F, 'V'), - (0x1E30, 'M', 'ḱ'), - (0x1E31, 'V'), - (0x1E32, 'M', 'ḳ'), - (0x1E33, 'V'), - (0x1E34, 'M', 'ḵ'), - (0x1E35, 'V'), - (0x1E36, 'M', 'ḷ'), - (0x1E37, 'V'), - (0x1E38, 'M', 'ḹ'), - (0x1E39, 'V'), - (0x1E3A, 'M', 'ḻ'), - (0x1E3B, 'V'), - (0x1E3C, 'M', 'ḽ'), - (0x1E3D, 'V'), - (0x1E3E, 'M', 'ḿ'), - (0x1E3F, 'V'), - (0x1E40, 'M', 'ṁ'), - (0x1E41, 'V'), - (0x1E42, 'M', 'ṃ'), - (0x1E43, 'V'), - (0x1E44, 'M', 'ṅ'), - (0x1E45, 'V'), - (0x1E46, 'M', 'ṇ'), - (0x1E47, 'V'), - (0x1E48, 'M', 'ṉ'), - (0x1E49, 'V'), - (0x1E4A, 'M', 'ṋ'), - (0x1E4B, 'V'), - (0x1E4C, 'M', 'ṍ'), - (0x1E4D, 'V'), - (0x1E4E, 'M', 'ṏ'), - (0x1E4F, 'V'), - (0x1E50, 'M', 'ṑ'), - (0x1E51, 'V'), - (0x1E52, 'M', 'ṓ'), - (0x1E53, 'V'), - (0x1E54, 'M', 'ṕ'), - (0x1E55, 'V'), - (0x1E56, 'M', 'ṗ'), - (0x1E57, 'V'), - (0x1E58, 'M', 'ṙ'), - (0x1E59, 'V'), - (0x1E5A, 'M', 'ṛ'), - (0x1E5B, 'V'), - (0x1E5C, 'M', 'ṝ'), - (0x1E5D, 'V'), - (0x1E5E, 'M', 'ṟ'), - (0x1E5F, 'V'), - (0x1E60, 'M', 'ṡ'), - (0x1E61, 'V'), - (0x1E62, 'M', 'ṣ'), - (0x1E63, 'V'), - (0x1E64, 'M', 'ṥ'), - (0x1E65, 'V'), - (0x1E66, 'M', 'ṧ'), - (0x1E67, 'V'), - (0x1E68, 'M', 'ṩ'), - (0x1E69, 'V'), - (0x1E6A, 'M', 'ṫ'), - (0x1E6B, 'V'), - (0x1E6C, 'M', 'ṭ'), - (0x1E6D, 'V'), - (0x1E6E, 'M', 'ṯ'), - (0x1E6F, 'V'), - (0x1E70, 'M', 'ṱ'), - (0x1E71, 'V'), - (0x1E72, 'M', 'ṳ'), - (0x1E73, 'V'), - (0x1E74, 'M', 'ṵ'), - (0x1E75, 'V'), - (0x1E76, 'M', 'ṷ'), - (0x1E77, 'V'), - (0x1E78, 'M', 'ṹ'), - (0x1E79, 'V'), - (0x1E7A, 'M', 'ṻ'), - (0x1E7B, 'V'), - (0x1E7C, 'M', 'ṽ'), - (0x1E7D, 'V'), - (0x1E7E, 'M', 'ṿ'), - (0x1E7F, 'V'), - (0x1E80, 'M', 'ẁ'), - (0x1E81, 'V'), - (0x1E82, 'M', 'ẃ'), - (0x1E83, 'V'), - (0x1E84, 'M', 'ẅ'), - (0x1E85, 'V'), - (0x1E86, 'M', 'ẇ'), - (0x1E87, 'V'), - ] - -def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E88, 'M', 'ẉ'), - (0x1E89, 'V'), - (0x1E8A, 'M', 'ẋ'), - (0x1E8B, 'V'), - (0x1E8C, 'M', 'ẍ'), - (0x1E8D, 'V'), - (0x1E8E, 'M', 'ẏ'), - (0x1E8F, 'V'), - (0x1E90, 'M', 'ẑ'), - (0x1E91, 'V'), - (0x1E92, 'M', 'ẓ'), - (0x1E93, 'V'), - (0x1E94, 'M', 'ẕ'), - (0x1E95, 'V'), - (0x1E9A, 'M', 'aʾ'), - (0x1E9B, 'M', 'ṡ'), - (0x1E9C, 'V'), - (0x1E9E, 'M', 'ss'), - (0x1E9F, 'V'), - (0x1EA0, 'M', 'ạ'), - (0x1EA1, 'V'), - (0x1EA2, 'M', 'ả'), - (0x1EA3, 'V'), - (0x1EA4, 'M', 'ấ'), - (0x1EA5, 'V'), - (0x1EA6, 'M', 'ầ'), - (0x1EA7, 'V'), - (0x1EA8, 'M', 'ẩ'), - (0x1EA9, 'V'), - (0x1EAA, 'M', 'ẫ'), - (0x1EAB, 'V'), - (0x1EAC, 'M', 'ậ'), - (0x1EAD, 'V'), - (0x1EAE, 'M', 'ắ'), - (0x1EAF, 'V'), - (0x1EB0, 'M', 'ằ'), - (0x1EB1, 'V'), - (0x1EB2, 'M', 'ẳ'), - (0x1EB3, 'V'), - (0x1EB4, 'M', 'ẵ'), - (0x1EB5, 'V'), - (0x1EB6, 'M', 'ặ'), - (0x1EB7, 'V'), - (0x1EB8, 'M', 'ẹ'), - (0x1EB9, 'V'), - (0x1EBA, 'M', 'ẻ'), - (0x1EBB, 'V'), - (0x1EBC, 'M', 'ẽ'), - (0x1EBD, 'V'), - (0x1EBE, 'M', 'ế'), - (0x1EBF, 'V'), - (0x1EC0, 'M', 'ề'), - (0x1EC1, 'V'), - (0x1EC2, 'M', 'ể'), - (0x1EC3, 'V'), - (0x1EC4, 'M', 'ễ'), - (0x1EC5, 'V'), - (0x1EC6, 'M', 'ệ'), - (0x1EC7, 'V'), - (0x1EC8, 'M', 'ỉ'), - (0x1EC9, 'V'), - (0x1ECA, 'M', 'ị'), - (0x1ECB, 'V'), - (0x1ECC, 'M', 'ọ'), - (0x1ECD, 'V'), - (0x1ECE, 'M', 'ỏ'), - (0x1ECF, 'V'), - (0x1ED0, 'M', 'ố'), - (0x1ED1, 'V'), - (0x1ED2, 'M', 'ồ'), - (0x1ED3, 'V'), - (0x1ED4, 'M', 'ổ'), - (0x1ED5, 'V'), - (0x1ED6, 'M', 'ỗ'), - (0x1ED7, 'V'), - (0x1ED8, 'M', 'ộ'), - (0x1ED9, 'V'), - (0x1EDA, 'M', 'ớ'), - (0x1EDB, 'V'), - (0x1EDC, 'M', 'ờ'), - (0x1EDD, 'V'), - (0x1EDE, 'M', 'ở'), - (0x1EDF, 'V'), - (0x1EE0, 'M', 'ỡ'), - (0x1EE1, 'V'), - (0x1EE2, 'M', 'ợ'), - (0x1EE3, 'V'), - (0x1EE4, 'M', 'ụ'), - (0x1EE5, 'V'), - (0x1EE6, 'M', 'ủ'), - (0x1EE7, 'V'), - (0x1EE8, 'M', 'ứ'), - (0x1EE9, 'V'), - (0x1EEA, 'M', 'ừ'), - (0x1EEB, 'V'), - (0x1EEC, 'M', 'ử'), - (0x1EED, 'V'), - (0x1EEE, 'M', 'ữ'), - (0x1EEF, 'V'), - (0x1EF0, 'M', 'ự'), - ] - -def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EF1, 'V'), - (0x1EF2, 'M', 'ỳ'), - (0x1EF3, 'V'), - (0x1EF4, 'M', 'ỵ'), - (0x1EF5, 'V'), - (0x1EF6, 'M', 'ỷ'), - (0x1EF7, 'V'), - (0x1EF8, 'M', 'ỹ'), - (0x1EF9, 'V'), - (0x1EFA, 'M', 'ỻ'), - (0x1EFB, 'V'), - (0x1EFC, 'M', 'ỽ'), - (0x1EFD, 'V'), - (0x1EFE, 'M', 'ỿ'), - (0x1EFF, 'V'), - (0x1F08, 'M', 'ἀ'), - (0x1F09, 'M', 'ἁ'), - (0x1F0A, 'M', 'ἂ'), - (0x1F0B, 'M', 'ἃ'), - (0x1F0C, 'M', 'ἄ'), - (0x1F0D, 'M', 'ἅ'), - (0x1F0E, 'M', 'ἆ'), - (0x1F0F, 'M', 'ἇ'), - (0x1F10, 'V'), - (0x1F16, 'X'), - (0x1F18, 'M', 'ἐ'), - (0x1F19, 'M', 'ἑ'), - (0x1F1A, 'M', 'ἒ'), - (0x1F1B, 'M', 'ἓ'), - (0x1F1C, 'M', 'ἔ'), - (0x1F1D, 'M', 'ἕ'), - (0x1F1E, 'X'), - (0x1F20, 'V'), - (0x1F28, 'M', 'ἠ'), - (0x1F29, 'M', 'ἡ'), - (0x1F2A, 'M', 'ἢ'), - (0x1F2B, 'M', 'ἣ'), - (0x1F2C, 'M', 'ἤ'), - (0x1F2D, 'M', 'ἥ'), - (0x1F2E, 'M', 'ἦ'), - (0x1F2F, 'M', 'ἧ'), - (0x1F30, 'V'), - (0x1F38, 'M', 'ἰ'), - (0x1F39, 'M', 'ἱ'), - (0x1F3A, 'M', 'ἲ'), - (0x1F3B, 'M', 'ἳ'), - (0x1F3C, 'M', 'ἴ'), - (0x1F3D, 'M', 'ἵ'), - (0x1F3E, 'M', 'ἶ'), - (0x1F3F, 'M', 'ἷ'), - (0x1F40, 'V'), - (0x1F46, 'X'), - (0x1F48, 'M', 'ὀ'), - (0x1F49, 'M', 'ὁ'), - (0x1F4A, 'M', 'ὂ'), - (0x1F4B, 'M', 'ὃ'), - (0x1F4C, 'M', 'ὄ'), - (0x1F4D, 'M', 'ὅ'), - (0x1F4E, 'X'), - (0x1F50, 'V'), - (0x1F58, 'X'), - (0x1F59, 'M', 'ὑ'), - (0x1F5A, 'X'), - (0x1F5B, 'M', 'ὓ'), - (0x1F5C, 'X'), - (0x1F5D, 'M', 'ὕ'), - (0x1F5E, 'X'), - (0x1F5F, 'M', 'ὗ'), - (0x1F60, 'V'), - (0x1F68, 'M', 'ὠ'), - (0x1F69, 'M', 'ὡ'), - (0x1F6A, 'M', 'ὢ'), - (0x1F6B, 'M', 'ὣ'), - (0x1F6C, 'M', 'ὤ'), - (0x1F6D, 'M', 'ὥ'), - (0x1F6E, 'M', 'ὦ'), - (0x1F6F, 'M', 'ὧ'), - (0x1F70, 'V'), - (0x1F71, 'M', 'ά'), - (0x1F72, 'V'), - (0x1F73, 'M', 'έ'), - (0x1F74, 'V'), - (0x1F75, 'M', 'ή'), - (0x1F76, 'V'), - (0x1F77, 'M', 'ί'), - (0x1F78, 'V'), - (0x1F79, 'M', 'ό'), - (0x1F7A, 'V'), - (0x1F7B, 'M', 'ύ'), - (0x1F7C, 'V'), - (0x1F7D, 'M', 'ώ'), - (0x1F7E, 'X'), - (0x1F80, 'M', 'ἀι'), - (0x1F81, 'M', 'ἁι'), - (0x1F82, 'M', 'ἂι'), - (0x1F83, 'M', 'ἃι'), - (0x1F84, 'M', 'ἄι'), - (0x1F85, 'M', 'ἅι'), - (0x1F86, 'M', 'ἆι'), - (0x1F87, 'M', 'ἇι'), - ] - -def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F88, 'M', 'ἀι'), - (0x1F89, 'M', 'ἁι'), - (0x1F8A, 'M', 'ἂι'), - (0x1F8B, 'M', 'ἃι'), - (0x1F8C, 'M', 'ἄι'), - (0x1F8D, 'M', 'ἅι'), - (0x1F8E, 'M', 'ἆι'), - (0x1F8F, 'M', 'ἇι'), - (0x1F90, 'M', 'ἠι'), - (0x1F91, 'M', 'ἡι'), - (0x1F92, 'M', 'ἢι'), - (0x1F93, 'M', 'ἣι'), - (0x1F94, 'M', 'ἤι'), - (0x1F95, 'M', 'ἥι'), - (0x1F96, 'M', 'ἦι'), - (0x1F97, 'M', 'ἧι'), - (0x1F98, 'M', 'ἠι'), - (0x1F99, 'M', 'ἡι'), - (0x1F9A, 'M', 'ἢι'), - (0x1F9B, 'M', 'ἣι'), - (0x1F9C, 'M', 'ἤι'), - (0x1F9D, 'M', 'ἥι'), - (0x1F9E, 'M', 'ἦι'), - (0x1F9F, 'M', 'ἧι'), - (0x1FA0, 'M', 'ὠι'), - (0x1FA1, 'M', 'ὡι'), - (0x1FA2, 'M', 'ὢι'), - (0x1FA3, 'M', 'ὣι'), - (0x1FA4, 'M', 'ὤι'), - (0x1FA5, 'M', 'ὥι'), - (0x1FA6, 'M', 'ὦι'), - (0x1FA7, 'M', 'ὧι'), - (0x1FA8, 'M', 'ὠι'), - (0x1FA9, 'M', 'ὡι'), - (0x1FAA, 'M', 'ὢι'), - (0x1FAB, 'M', 'ὣι'), - (0x1FAC, 'M', 'ὤι'), - (0x1FAD, 'M', 'ὥι'), - (0x1FAE, 'M', 'ὦι'), - (0x1FAF, 'M', 'ὧι'), - (0x1FB0, 'V'), - (0x1FB2, 'M', 'ὰι'), - (0x1FB3, 'M', 'αι'), - (0x1FB4, 'M', 'άι'), - (0x1FB5, 'X'), - (0x1FB6, 'V'), - (0x1FB7, 'M', 'ᾶι'), - (0x1FB8, 'M', 'ᾰ'), - (0x1FB9, 'M', 'ᾱ'), - (0x1FBA, 'M', 'ὰ'), - (0x1FBB, 'M', 'ά'), - (0x1FBC, 'M', 'αι'), - (0x1FBD, '3', ' ̓'), - (0x1FBE, 'M', 'ι'), - (0x1FBF, '3', ' ̓'), - (0x1FC0, '3', ' ͂'), - (0x1FC1, '3', ' ̈͂'), - (0x1FC2, 'M', 'ὴι'), - (0x1FC3, 'M', 'ηι'), - (0x1FC4, 'M', 'ήι'), - (0x1FC5, 'X'), - (0x1FC6, 'V'), - (0x1FC7, 'M', 'ῆι'), - (0x1FC8, 'M', 'ὲ'), - (0x1FC9, 'M', 'έ'), - (0x1FCA, 'M', 'ὴ'), - (0x1FCB, 'M', 'ή'), - (0x1FCC, 'M', 'ηι'), - (0x1FCD, '3', ' ̓̀'), - (0x1FCE, '3', ' ̓́'), - (0x1FCF, '3', ' ̓͂'), - (0x1FD0, 'V'), - (0x1FD3, 'M', 'ΐ'), - (0x1FD4, 'X'), - (0x1FD6, 'V'), - (0x1FD8, 'M', 'ῐ'), - (0x1FD9, 'M', 'ῑ'), - (0x1FDA, 'M', 'ὶ'), - (0x1FDB, 'M', 'ί'), - (0x1FDC, 'X'), - (0x1FDD, '3', ' ̔̀'), - (0x1FDE, '3', ' ̔́'), - (0x1FDF, '3', ' ̔͂'), - (0x1FE0, 'V'), - (0x1FE3, 'M', 'ΰ'), - (0x1FE4, 'V'), - (0x1FE8, 'M', 'ῠ'), - (0x1FE9, 'M', 'ῡ'), - (0x1FEA, 'M', 'ὺ'), - (0x1FEB, 'M', 'ύ'), - (0x1FEC, 'M', 'ῥ'), - (0x1FED, '3', ' ̈̀'), - (0x1FEE, '3', ' ̈́'), - (0x1FEF, '3', '`'), - (0x1FF0, 'X'), - (0x1FF2, 'M', 'ὼι'), - (0x1FF3, 'M', 'ωι'), - (0x1FF4, 'M', 'ώι'), - (0x1FF5, 'X'), - (0x1FF6, 'V'), - ] - -def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FF7, 'M', 'ῶι'), - (0x1FF8, 'M', 'ὸ'), - (0x1FF9, 'M', 'ό'), - (0x1FFA, 'M', 'ὼ'), - (0x1FFB, 'M', 'ώ'), - (0x1FFC, 'M', 'ωι'), - (0x1FFD, '3', ' ́'), - (0x1FFE, '3', ' ̔'), - (0x1FFF, 'X'), - (0x2000, '3', ' '), - (0x200B, 'I'), - (0x200C, 'D', ''), - (0x200E, 'X'), - (0x2010, 'V'), - (0x2011, 'M', '‐'), - (0x2012, 'V'), - (0x2017, '3', ' ̳'), - (0x2018, 'V'), - (0x2024, 'X'), - (0x2027, 'V'), - (0x2028, 'X'), - (0x202F, '3', ' '), - (0x2030, 'V'), - (0x2033, 'M', '′′'), - (0x2034, 'M', '′′′'), - (0x2035, 'V'), - (0x2036, 'M', '‵‵'), - (0x2037, 'M', '‵‵‵'), - (0x2038, 'V'), - (0x203C, '3', '!!'), - (0x203D, 'V'), - (0x203E, '3', ' ̅'), - (0x203F, 'V'), - (0x2047, '3', '??'), - (0x2048, '3', '?!'), - (0x2049, '3', '!?'), - (0x204A, 'V'), - (0x2057, 'M', '′′′′'), - (0x2058, 'V'), - (0x205F, '3', ' '), - (0x2060, 'I'), - (0x2061, 'X'), - (0x2064, 'I'), - (0x2065, 'X'), - (0x2070, 'M', '0'), - (0x2071, 'M', 'i'), - (0x2072, 'X'), - (0x2074, 'M', '4'), - (0x2075, 'M', '5'), - (0x2076, 'M', '6'), - (0x2077, 'M', '7'), - (0x2078, 'M', '8'), - (0x2079, 'M', '9'), - (0x207A, '3', '+'), - (0x207B, 'M', '−'), - (0x207C, '3', '='), - (0x207D, '3', '('), - (0x207E, '3', ')'), - (0x207F, 'M', 'n'), - (0x2080, 'M', '0'), - (0x2081, 'M', '1'), - (0x2082, 'M', '2'), - (0x2083, 'M', '3'), - (0x2084, 'M', '4'), - (0x2085, 'M', '5'), - (0x2086, 'M', '6'), - (0x2087, 'M', '7'), - (0x2088, 'M', '8'), - (0x2089, 'M', '9'), - (0x208A, '3', '+'), - (0x208B, 'M', '−'), - (0x208C, '3', '='), - (0x208D, '3', '('), - (0x208E, '3', ')'), - (0x208F, 'X'), - (0x2090, 'M', 'a'), - (0x2091, 'M', 'e'), - (0x2092, 'M', 'o'), - (0x2093, 'M', 'x'), - (0x2094, 'M', 'ə'), - (0x2095, 'M', 'h'), - (0x2096, 'M', 'k'), - (0x2097, 'M', 'l'), - (0x2098, 'M', 'm'), - (0x2099, 'M', 'n'), - (0x209A, 'M', 'p'), - (0x209B, 'M', 's'), - (0x209C, 'M', 't'), - (0x209D, 'X'), - (0x20A0, 'V'), - (0x20A8, 'M', 'rs'), - (0x20A9, 'V'), - (0x20C1, 'X'), - (0x20D0, 'V'), - (0x20F1, 'X'), - (0x2100, '3', 'a/c'), - (0x2101, '3', 'a/s'), - (0x2102, 'M', 'c'), - (0x2103, 'M', '°c'), - (0x2104, 'V'), - ] - -def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2105, '3', 'c/o'), - (0x2106, '3', 'c/u'), - (0x2107, 'M', 'ɛ'), - (0x2108, 'V'), - (0x2109, 'M', '°f'), - (0x210A, 'M', 'g'), - (0x210B, 'M', 'h'), - (0x210F, 'M', 'ħ'), - (0x2110, 'M', 'i'), - (0x2112, 'M', 'l'), - (0x2114, 'V'), - (0x2115, 'M', 'n'), - (0x2116, 'M', 'no'), - (0x2117, 'V'), - (0x2119, 'M', 'p'), - (0x211A, 'M', 'q'), - (0x211B, 'M', 'r'), - (0x211E, 'V'), - (0x2120, 'M', 'sm'), - (0x2121, 'M', 'tel'), - (0x2122, 'M', 'tm'), - (0x2123, 'V'), - (0x2124, 'M', 'z'), - (0x2125, 'V'), - (0x2126, 'M', 'ω'), - (0x2127, 'V'), - (0x2128, 'M', 'z'), - (0x2129, 'V'), - (0x212A, 'M', 'k'), - (0x212B, 'M', 'å'), - (0x212C, 'M', 'b'), - (0x212D, 'M', 'c'), - (0x212E, 'V'), - (0x212F, 'M', 'e'), - (0x2131, 'M', 'f'), - (0x2132, 'X'), - (0x2133, 'M', 'm'), - (0x2134, 'M', 'o'), - (0x2135, 'M', 'א'), - (0x2136, 'M', 'ב'), - (0x2137, 'M', 'ג'), - (0x2138, 'M', 'ד'), - (0x2139, 'M', 'i'), - (0x213A, 'V'), - (0x213B, 'M', 'fax'), - (0x213C, 'M', 'π'), - (0x213D, 'M', 'γ'), - (0x213F, 'M', 'π'), - (0x2140, 'M', '∑'), - (0x2141, 'V'), - (0x2145, 'M', 'd'), - (0x2147, 'M', 'e'), - (0x2148, 'M', 'i'), - (0x2149, 'M', 'j'), - (0x214A, 'V'), - (0x2150, 'M', '1⁄7'), - (0x2151, 'M', '1⁄9'), - (0x2152, 'M', '1⁄10'), - (0x2153, 'M', '1⁄3'), - (0x2154, 'M', '2⁄3'), - (0x2155, 'M', '1⁄5'), - (0x2156, 'M', '2⁄5'), - (0x2157, 'M', '3⁄5'), - (0x2158, 'M', '4⁄5'), - (0x2159, 'M', '1⁄6'), - (0x215A, 'M', '5⁄6'), - (0x215B, 'M', '1⁄8'), - (0x215C, 'M', '3⁄8'), - (0x215D, 'M', '5⁄8'), - (0x215E, 'M', '7⁄8'), - (0x215F, 'M', '1⁄'), - (0x2160, 'M', 'i'), - (0x2161, 'M', 'ii'), - (0x2162, 'M', 'iii'), - (0x2163, 'M', 'iv'), - (0x2164, 'M', 'v'), - (0x2165, 'M', 'vi'), - (0x2166, 'M', 'vii'), - (0x2167, 'M', 'viii'), - (0x2168, 'M', 'ix'), - (0x2169, 'M', 'x'), - (0x216A, 'M', 'xi'), - (0x216B, 'M', 'xii'), - (0x216C, 'M', 'l'), - (0x216D, 'M', 'c'), - (0x216E, 'M', 'd'), - (0x216F, 'M', 'm'), - (0x2170, 'M', 'i'), - (0x2171, 'M', 'ii'), - (0x2172, 'M', 'iii'), - (0x2173, 'M', 'iv'), - (0x2174, 'M', 'v'), - (0x2175, 'M', 'vi'), - (0x2176, 'M', 'vii'), - (0x2177, 'M', 'viii'), - (0x2178, 'M', 'ix'), - (0x2179, 'M', 'x'), - (0x217A, 'M', 'xi'), - (0x217B, 'M', 'xii'), - (0x217C, 'M', 'l'), - ] - -def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x217D, 'M', 'c'), - (0x217E, 'M', 'd'), - (0x217F, 'M', 'm'), - (0x2180, 'V'), - (0x2183, 'X'), - (0x2184, 'V'), - (0x2189, 'M', '0⁄3'), - (0x218A, 'V'), - (0x218C, 'X'), - (0x2190, 'V'), - (0x222C, 'M', '∫∫'), - (0x222D, 'M', '∫∫∫'), - (0x222E, 'V'), - (0x222F, 'M', '∮∮'), - (0x2230, 'M', '∮∮∮'), - (0x2231, 'V'), - (0x2260, '3'), - (0x2261, 'V'), - (0x226E, '3'), - (0x2270, 'V'), - (0x2329, 'M', '〈'), - (0x232A, 'M', '〉'), - (0x232B, 'V'), - (0x2427, 'X'), - (0x2440, 'V'), - (0x244B, 'X'), - (0x2460, 'M', '1'), - (0x2461, 'M', '2'), - (0x2462, 'M', '3'), - (0x2463, 'M', '4'), - (0x2464, 'M', '5'), - (0x2465, 'M', '6'), - (0x2466, 'M', '7'), - (0x2467, 'M', '8'), - (0x2468, 'M', '9'), - (0x2469, 'M', '10'), - (0x246A, 'M', '11'), - (0x246B, 'M', '12'), - (0x246C, 'M', '13'), - (0x246D, 'M', '14'), - (0x246E, 'M', '15'), - (0x246F, 'M', '16'), - (0x2470, 'M', '17'), - (0x2471, 'M', '18'), - (0x2472, 'M', '19'), - (0x2473, 'M', '20'), - (0x2474, '3', '(1)'), - (0x2475, '3', '(2)'), - (0x2476, '3', '(3)'), - (0x2477, '3', '(4)'), - (0x2478, '3', '(5)'), - (0x2479, '3', '(6)'), - (0x247A, '3', '(7)'), - (0x247B, '3', '(8)'), - (0x247C, '3', '(9)'), - (0x247D, '3', '(10)'), - (0x247E, '3', '(11)'), - (0x247F, '3', '(12)'), - (0x2480, '3', '(13)'), - (0x2481, '3', '(14)'), - (0x2482, '3', '(15)'), - (0x2483, '3', '(16)'), - (0x2484, '3', '(17)'), - (0x2485, '3', '(18)'), - (0x2486, '3', '(19)'), - (0x2487, '3', '(20)'), - (0x2488, 'X'), - (0x249C, '3', '(a)'), - (0x249D, '3', '(b)'), - (0x249E, '3', '(c)'), - (0x249F, '3', '(d)'), - (0x24A0, '3', '(e)'), - (0x24A1, '3', '(f)'), - (0x24A2, '3', '(g)'), - (0x24A3, '3', '(h)'), - (0x24A4, '3', '(i)'), - (0x24A5, '3', '(j)'), - (0x24A6, '3', '(k)'), - (0x24A7, '3', '(l)'), - (0x24A8, '3', '(m)'), - (0x24A9, '3', '(n)'), - (0x24AA, '3', '(o)'), - (0x24AB, '3', '(p)'), - (0x24AC, '3', '(q)'), - (0x24AD, '3', '(r)'), - (0x24AE, '3', '(s)'), - (0x24AF, '3', '(t)'), - (0x24B0, '3', '(u)'), - (0x24B1, '3', '(v)'), - (0x24B2, '3', '(w)'), - (0x24B3, '3', '(x)'), - (0x24B4, '3', '(y)'), - (0x24B5, '3', '(z)'), - (0x24B6, 'M', 'a'), - (0x24B7, 'M', 'b'), - (0x24B8, 'M', 'c'), - (0x24B9, 'M', 'd'), - (0x24BA, 'M', 'e'), - (0x24BB, 'M', 'f'), - (0x24BC, 'M', 'g'), - ] - -def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x24BD, 'M', 'h'), - (0x24BE, 'M', 'i'), - (0x24BF, 'M', 'j'), - (0x24C0, 'M', 'k'), - (0x24C1, 'M', 'l'), - (0x24C2, 'M', 'm'), - (0x24C3, 'M', 'n'), - (0x24C4, 'M', 'o'), - (0x24C5, 'M', 'p'), - (0x24C6, 'M', 'q'), - (0x24C7, 'M', 'r'), - (0x24C8, 'M', 's'), - (0x24C9, 'M', 't'), - (0x24CA, 'M', 'u'), - (0x24CB, 'M', 'v'), - (0x24CC, 'M', 'w'), - (0x24CD, 'M', 'x'), - (0x24CE, 'M', 'y'), - (0x24CF, 'M', 'z'), - (0x24D0, 'M', 'a'), - (0x24D1, 'M', 'b'), - (0x24D2, 'M', 'c'), - (0x24D3, 'M', 'd'), - (0x24D4, 'M', 'e'), - (0x24D5, 'M', 'f'), - (0x24D6, 'M', 'g'), - (0x24D7, 'M', 'h'), - (0x24D8, 'M', 'i'), - (0x24D9, 'M', 'j'), - (0x24DA, 'M', 'k'), - (0x24DB, 'M', 'l'), - (0x24DC, 'M', 'm'), - (0x24DD, 'M', 'n'), - (0x24DE, 'M', 'o'), - (0x24DF, 'M', 'p'), - (0x24E0, 'M', 'q'), - (0x24E1, 'M', 'r'), - (0x24E2, 'M', 's'), - (0x24E3, 'M', 't'), - (0x24E4, 'M', 'u'), - (0x24E5, 'M', 'v'), - (0x24E6, 'M', 'w'), - (0x24E7, 'M', 'x'), - (0x24E8, 'M', 'y'), - (0x24E9, 'M', 'z'), - (0x24EA, 'M', '0'), - (0x24EB, 'V'), - (0x2A0C, 'M', '∫∫∫∫'), - (0x2A0D, 'V'), - (0x2A74, '3', '::='), - (0x2A75, '3', '=='), - (0x2A76, '3', '==='), - (0x2A77, 'V'), - (0x2ADC, 'M', '⫝̸'), - (0x2ADD, 'V'), - (0x2B74, 'X'), - (0x2B76, 'V'), - (0x2B96, 'X'), - (0x2B97, 'V'), - (0x2C00, 'M', 'ⰰ'), - (0x2C01, 'M', 'ⰱ'), - (0x2C02, 'M', 'ⰲ'), - (0x2C03, 'M', 'ⰳ'), - (0x2C04, 'M', 'ⰴ'), - (0x2C05, 'M', 'ⰵ'), - (0x2C06, 'M', 'ⰶ'), - (0x2C07, 'M', 'ⰷ'), - (0x2C08, 'M', 'ⰸ'), - (0x2C09, 'M', 'ⰹ'), - (0x2C0A, 'M', 'ⰺ'), - (0x2C0B, 'M', 'ⰻ'), - (0x2C0C, 'M', 'ⰼ'), - (0x2C0D, 'M', 'ⰽ'), - (0x2C0E, 'M', 'ⰾ'), - (0x2C0F, 'M', 'ⰿ'), - (0x2C10, 'M', 'ⱀ'), - (0x2C11, 'M', 'ⱁ'), - (0x2C12, 'M', 'ⱂ'), - (0x2C13, 'M', 'ⱃ'), - (0x2C14, 'M', 'ⱄ'), - (0x2C15, 'M', 'ⱅ'), - (0x2C16, 'M', 'ⱆ'), - (0x2C17, 'M', 'ⱇ'), - (0x2C18, 'M', 'ⱈ'), - (0x2C19, 'M', 'ⱉ'), - (0x2C1A, 'M', 'ⱊ'), - (0x2C1B, 'M', 'ⱋ'), - (0x2C1C, 'M', 'ⱌ'), - (0x2C1D, 'M', 'ⱍ'), - (0x2C1E, 'M', 'ⱎ'), - (0x2C1F, 'M', 'ⱏ'), - (0x2C20, 'M', 'ⱐ'), - (0x2C21, 'M', 'ⱑ'), - (0x2C22, 'M', 'ⱒ'), - (0x2C23, 'M', 'ⱓ'), - (0x2C24, 'M', 'ⱔ'), - (0x2C25, 'M', 'ⱕ'), - (0x2C26, 'M', 'ⱖ'), - (0x2C27, 'M', 'ⱗ'), - (0x2C28, 'M', 'ⱘ'), - ] - -def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2C29, 'M', 'ⱙ'), - (0x2C2A, 'M', 'ⱚ'), - (0x2C2B, 'M', 'ⱛ'), - (0x2C2C, 'M', 'ⱜ'), - (0x2C2D, 'M', 'ⱝ'), - (0x2C2E, 'M', 'ⱞ'), - (0x2C2F, 'M', 'ⱟ'), - (0x2C30, 'V'), - (0x2C60, 'M', 'ⱡ'), - (0x2C61, 'V'), - (0x2C62, 'M', 'ɫ'), - (0x2C63, 'M', 'ᵽ'), - (0x2C64, 'M', 'ɽ'), - (0x2C65, 'V'), - (0x2C67, 'M', 'ⱨ'), - (0x2C68, 'V'), - (0x2C69, 'M', 'ⱪ'), - (0x2C6A, 'V'), - (0x2C6B, 'M', 'ⱬ'), - (0x2C6C, 'V'), - (0x2C6D, 'M', 'ɑ'), - (0x2C6E, 'M', 'ɱ'), - (0x2C6F, 'M', 'ɐ'), - (0x2C70, 'M', 'ɒ'), - (0x2C71, 'V'), - (0x2C72, 'M', 'ⱳ'), - (0x2C73, 'V'), - (0x2C75, 'M', 'ⱶ'), - (0x2C76, 'V'), - (0x2C7C, 'M', 'j'), - (0x2C7D, 'M', 'v'), - (0x2C7E, 'M', 'ȿ'), - (0x2C7F, 'M', 'ɀ'), - (0x2C80, 'M', 'ⲁ'), - (0x2C81, 'V'), - (0x2C82, 'M', 'ⲃ'), - (0x2C83, 'V'), - (0x2C84, 'M', 'ⲅ'), - (0x2C85, 'V'), - (0x2C86, 'M', 'ⲇ'), - (0x2C87, 'V'), - (0x2C88, 'M', 'ⲉ'), - (0x2C89, 'V'), - (0x2C8A, 'M', 'ⲋ'), - (0x2C8B, 'V'), - (0x2C8C, 'M', 'ⲍ'), - (0x2C8D, 'V'), - (0x2C8E, 'M', 'ⲏ'), - (0x2C8F, 'V'), - (0x2C90, 'M', 'ⲑ'), - (0x2C91, 'V'), - (0x2C92, 'M', 'ⲓ'), - (0x2C93, 'V'), - (0x2C94, 'M', 'ⲕ'), - (0x2C95, 'V'), - (0x2C96, 'M', 'ⲗ'), - (0x2C97, 'V'), - (0x2C98, 'M', 'ⲙ'), - (0x2C99, 'V'), - (0x2C9A, 'M', 'ⲛ'), - (0x2C9B, 'V'), - (0x2C9C, 'M', 'ⲝ'), - (0x2C9D, 'V'), - (0x2C9E, 'M', 'ⲟ'), - (0x2C9F, 'V'), - (0x2CA0, 'M', 'ⲡ'), - (0x2CA1, 'V'), - (0x2CA2, 'M', 'ⲣ'), - (0x2CA3, 'V'), - (0x2CA4, 'M', 'ⲥ'), - (0x2CA5, 'V'), - (0x2CA6, 'M', 'ⲧ'), - (0x2CA7, 'V'), - (0x2CA8, 'M', 'ⲩ'), - (0x2CA9, 'V'), - (0x2CAA, 'M', 'ⲫ'), - (0x2CAB, 'V'), - (0x2CAC, 'M', 'ⲭ'), - (0x2CAD, 'V'), - (0x2CAE, 'M', 'ⲯ'), - (0x2CAF, 'V'), - (0x2CB0, 'M', 'ⲱ'), - (0x2CB1, 'V'), - (0x2CB2, 'M', 'ⲳ'), - (0x2CB3, 'V'), - (0x2CB4, 'M', 'ⲵ'), - (0x2CB5, 'V'), - (0x2CB6, 'M', 'ⲷ'), - (0x2CB7, 'V'), - (0x2CB8, 'M', 'ⲹ'), - (0x2CB9, 'V'), - (0x2CBA, 'M', 'ⲻ'), - (0x2CBB, 'V'), - (0x2CBC, 'M', 'ⲽ'), - (0x2CBD, 'V'), - (0x2CBE, 'M', 'ⲿ'), - (0x2CBF, 'V'), - (0x2CC0, 'M', 'ⳁ'), - (0x2CC1, 'V'), - (0x2CC2, 'M', 'ⳃ'), - ] - -def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2CC3, 'V'), - (0x2CC4, 'M', 'ⳅ'), - (0x2CC5, 'V'), - (0x2CC6, 'M', 'ⳇ'), - (0x2CC7, 'V'), - (0x2CC8, 'M', 'ⳉ'), - (0x2CC9, 'V'), - (0x2CCA, 'M', 'ⳋ'), - (0x2CCB, 'V'), - (0x2CCC, 'M', 'ⳍ'), - (0x2CCD, 'V'), - (0x2CCE, 'M', 'ⳏ'), - (0x2CCF, 'V'), - (0x2CD0, 'M', 'ⳑ'), - (0x2CD1, 'V'), - (0x2CD2, 'M', 'ⳓ'), - (0x2CD3, 'V'), - (0x2CD4, 'M', 'ⳕ'), - (0x2CD5, 'V'), - (0x2CD6, 'M', 'ⳗ'), - (0x2CD7, 'V'), - (0x2CD8, 'M', 'ⳙ'), - (0x2CD9, 'V'), - (0x2CDA, 'M', 'ⳛ'), - (0x2CDB, 'V'), - (0x2CDC, 'M', 'ⳝ'), - (0x2CDD, 'V'), - (0x2CDE, 'M', 'ⳟ'), - (0x2CDF, 'V'), - (0x2CE0, 'M', 'ⳡ'), - (0x2CE1, 'V'), - (0x2CE2, 'M', 'ⳣ'), - (0x2CE3, 'V'), - (0x2CEB, 'M', 'ⳬ'), - (0x2CEC, 'V'), - (0x2CED, 'M', 'ⳮ'), - (0x2CEE, 'V'), - (0x2CF2, 'M', 'ⳳ'), - (0x2CF3, 'V'), - (0x2CF4, 'X'), - (0x2CF9, 'V'), - (0x2D26, 'X'), - (0x2D27, 'V'), - (0x2D28, 'X'), - (0x2D2D, 'V'), - (0x2D2E, 'X'), - (0x2D30, 'V'), - (0x2D68, 'X'), - (0x2D6F, 'M', 'ⵡ'), - (0x2D70, 'V'), - (0x2D71, 'X'), - (0x2D7F, 'V'), - (0x2D97, 'X'), - (0x2DA0, 'V'), - (0x2DA7, 'X'), - (0x2DA8, 'V'), - (0x2DAF, 'X'), - (0x2DB0, 'V'), - (0x2DB7, 'X'), - (0x2DB8, 'V'), - (0x2DBF, 'X'), - (0x2DC0, 'V'), - (0x2DC7, 'X'), - (0x2DC8, 'V'), - (0x2DCF, 'X'), - (0x2DD0, 'V'), - (0x2DD7, 'X'), - (0x2DD8, 'V'), - (0x2DDF, 'X'), - (0x2DE0, 'V'), - (0x2E5E, 'X'), - (0x2E80, 'V'), - (0x2E9A, 'X'), - (0x2E9B, 'V'), - (0x2E9F, 'M', '母'), - (0x2EA0, 'V'), - (0x2EF3, 'M', '龟'), - (0x2EF4, 'X'), - (0x2F00, 'M', '一'), - (0x2F01, 'M', '丨'), - (0x2F02, 'M', '丶'), - (0x2F03, 'M', '丿'), - (0x2F04, 'M', '乙'), - (0x2F05, 'M', '亅'), - (0x2F06, 'M', '二'), - (0x2F07, 'M', '亠'), - (0x2F08, 'M', '人'), - (0x2F09, 'M', '儿'), - (0x2F0A, 'M', '入'), - (0x2F0B, 'M', '八'), - (0x2F0C, 'M', '冂'), - (0x2F0D, 'M', '冖'), - (0x2F0E, 'M', '冫'), - (0x2F0F, 'M', '几'), - (0x2F10, 'M', '凵'), - (0x2F11, 'M', '刀'), - (0x2F12, 'M', '力'), - (0x2F13, 'M', '勹'), - (0x2F14, 'M', '匕'), - (0x2F15, 'M', '匚'), - ] - -def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F16, 'M', '匸'), - (0x2F17, 'M', '十'), - (0x2F18, 'M', '卜'), - (0x2F19, 'M', '卩'), - (0x2F1A, 'M', '厂'), - (0x2F1B, 'M', '厶'), - (0x2F1C, 'M', '又'), - (0x2F1D, 'M', '口'), - (0x2F1E, 'M', '囗'), - (0x2F1F, 'M', '土'), - (0x2F20, 'M', '士'), - (0x2F21, 'M', '夂'), - (0x2F22, 'M', '夊'), - (0x2F23, 'M', '夕'), - (0x2F24, 'M', '大'), - (0x2F25, 'M', '女'), - (0x2F26, 'M', '子'), - (0x2F27, 'M', '宀'), - (0x2F28, 'M', '寸'), - (0x2F29, 'M', '小'), - (0x2F2A, 'M', '尢'), - (0x2F2B, 'M', '尸'), - (0x2F2C, 'M', '屮'), - (0x2F2D, 'M', '山'), - (0x2F2E, 'M', '巛'), - (0x2F2F, 'M', '工'), - (0x2F30, 'M', '己'), - (0x2F31, 'M', '巾'), - (0x2F32, 'M', '干'), - (0x2F33, 'M', '幺'), - (0x2F34, 'M', '广'), - (0x2F35, 'M', '廴'), - (0x2F36, 'M', '廾'), - (0x2F37, 'M', '弋'), - (0x2F38, 'M', '弓'), - (0x2F39, 'M', '彐'), - (0x2F3A, 'M', '彡'), - (0x2F3B, 'M', '彳'), - (0x2F3C, 'M', '心'), - (0x2F3D, 'M', '戈'), - (0x2F3E, 'M', '戶'), - (0x2F3F, 'M', '手'), - (0x2F40, 'M', '支'), - (0x2F41, 'M', '攴'), - (0x2F42, 'M', '文'), - (0x2F43, 'M', '斗'), - (0x2F44, 'M', '斤'), - (0x2F45, 'M', '方'), - (0x2F46, 'M', '无'), - (0x2F47, 'M', '日'), - (0x2F48, 'M', '曰'), - (0x2F49, 'M', '月'), - (0x2F4A, 'M', '木'), - (0x2F4B, 'M', '欠'), - (0x2F4C, 'M', '止'), - (0x2F4D, 'M', '歹'), - (0x2F4E, 'M', '殳'), - (0x2F4F, 'M', '毋'), - (0x2F50, 'M', '比'), - (0x2F51, 'M', '毛'), - (0x2F52, 'M', '氏'), - (0x2F53, 'M', '气'), - (0x2F54, 'M', '水'), - (0x2F55, 'M', '火'), - (0x2F56, 'M', '爪'), - (0x2F57, 'M', '父'), - (0x2F58, 'M', '爻'), - (0x2F59, 'M', '爿'), - (0x2F5A, 'M', '片'), - (0x2F5B, 'M', '牙'), - (0x2F5C, 'M', '牛'), - (0x2F5D, 'M', '犬'), - (0x2F5E, 'M', '玄'), - (0x2F5F, 'M', '玉'), - (0x2F60, 'M', '瓜'), - (0x2F61, 'M', '瓦'), - (0x2F62, 'M', '甘'), - (0x2F63, 'M', '生'), - (0x2F64, 'M', '用'), - (0x2F65, 'M', '田'), - (0x2F66, 'M', '疋'), - (0x2F67, 'M', '疒'), - (0x2F68, 'M', '癶'), - (0x2F69, 'M', '白'), - (0x2F6A, 'M', '皮'), - (0x2F6B, 'M', '皿'), - (0x2F6C, 'M', '目'), - (0x2F6D, 'M', '矛'), - (0x2F6E, 'M', '矢'), - (0x2F6F, 'M', '石'), - (0x2F70, 'M', '示'), - (0x2F71, 'M', '禸'), - (0x2F72, 'M', '禾'), - (0x2F73, 'M', '穴'), - (0x2F74, 'M', '立'), - (0x2F75, 'M', '竹'), - (0x2F76, 'M', '米'), - (0x2F77, 'M', '糸'), - (0x2F78, 'M', '缶'), - (0x2F79, 'M', '网'), - ] - -def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F7A, 'M', '羊'), - (0x2F7B, 'M', '羽'), - (0x2F7C, 'M', '老'), - (0x2F7D, 'M', '而'), - (0x2F7E, 'M', '耒'), - (0x2F7F, 'M', '耳'), - (0x2F80, 'M', '聿'), - (0x2F81, 'M', '肉'), - (0x2F82, 'M', '臣'), - (0x2F83, 'M', '自'), - (0x2F84, 'M', '至'), - (0x2F85, 'M', '臼'), - (0x2F86, 'M', '舌'), - (0x2F87, 'M', '舛'), - (0x2F88, 'M', '舟'), - (0x2F89, 'M', '艮'), - (0x2F8A, 'M', '色'), - (0x2F8B, 'M', '艸'), - (0x2F8C, 'M', '虍'), - (0x2F8D, 'M', '虫'), - (0x2F8E, 'M', '血'), - (0x2F8F, 'M', '行'), - (0x2F90, 'M', '衣'), - (0x2F91, 'M', '襾'), - (0x2F92, 'M', '見'), - (0x2F93, 'M', '角'), - (0x2F94, 'M', '言'), - (0x2F95, 'M', '谷'), - (0x2F96, 'M', '豆'), - (0x2F97, 'M', '豕'), - (0x2F98, 'M', '豸'), - (0x2F99, 'M', '貝'), - (0x2F9A, 'M', '赤'), - (0x2F9B, 'M', '走'), - (0x2F9C, 'M', '足'), - (0x2F9D, 'M', '身'), - (0x2F9E, 'M', '車'), - (0x2F9F, 'M', '辛'), - (0x2FA0, 'M', '辰'), - (0x2FA1, 'M', '辵'), - (0x2FA2, 'M', '邑'), - (0x2FA3, 'M', '酉'), - (0x2FA4, 'M', '釆'), - (0x2FA5, 'M', '里'), - (0x2FA6, 'M', '金'), - (0x2FA7, 'M', '長'), - (0x2FA8, 'M', '門'), - (0x2FA9, 'M', '阜'), - (0x2FAA, 'M', '隶'), - (0x2FAB, 'M', '隹'), - (0x2FAC, 'M', '雨'), - (0x2FAD, 'M', '靑'), - (0x2FAE, 'M', '非'), - (0x2FAF, 'M', '面'), - (0x2FB0, 'M', '革'), - (0x2FB1, 'M', '韋'), - (0x2FB2, 'M', '韭'), - (0x2FB3, 'M', '音'), - (0x2FB4, 'M', '頁'), - (0x2FB5, 'M', '風'), - (0x2FB6, 'M', '飛'), - (0x2FB7, 'M', '食'), - (0x2FB8, 'M', '首'), - (0x2FB9, 'M', '香'), - (0x2FBA, 'M', '馬'), - (0x2FBB, 'M', '骨'), - (0x2FBC, 'M', '高'), - (0x2FBD, 'M', '髟'), - (0x2FBE, 'M', '鬥'), - (0x2FBF, 'M', '鬯'), - (0x2FC0, 'M', '鬲'), - (0x2FC1, 'M', '鬼'), - (0x2FC2, 'M', '魚'), - (0x2FC3, 'M', '鳥'), - (0x2FC4, 'M', '鹵'), - (0x2FC5, 'M', '鹿'), - (0x2FC6, 'M', '麥'), - (0x2FC7, 'M', '麻'), - (0x2FC8, 'M', '黃'), - (0x2FC9, 'M', '黍'), - (0x2FCA, 'M', '黑'), - (0x2FCB, 'M', '黹'), - (0x2FCC, 'M', '黽'), - (0x2FCD, 'M', '鼎'), - (0x2FCE, 'M', '鼓'), - (0x2FCF, 'M', '鼠'), - (0x2FD0, 'M', '鼻'), - (0x2FD1, 'M', '齊'), - (0x2FD2, 'M', '齒'), - (0x2FD3, 'M', '龍'), - (0x2FD4, 'M', '龜'), - (0x2FD5, 'M', '龠'), - (0x2FD6, 'X'), - (0x3000, '3', ' '), - (0x3001, 'V'), - (0x3002, 'M', '.'), - (0x3003, 'V'), - (0x3036, 'M', '〒'), - (0x3037, 'V'), - (0x3038, 'M', '十'), - ] - -def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3039, 'M', '卄'), - (0x303A, 'M', '卅'), - (0x303B, 'V'), - (0x3040, 'X'), - (0x3041, 'V'), - (0x3097, 'X'), - (0x3099, 'V'), - (0x309B, '3', ' ゙'), - (0x309C, '3', ' ゚'), - (0x309D, 'V'), - (0x309F, 'M', 'より'), - (0x30A0, 'V'), - (0x30FF, 'M', 'コト'), - (0x3100, 'X'), - (0x3105, 'V'), - (0x3130, 'X'), - (0x3131, 'M', 'ᄀ'), - (0x3132, 'M', 'ᄁ'), - (0x3133, 'M', 'ᆪ'), - (0x3134, 'M', 'ᄂ'), - (0x3135, 'M', 'ᆬ'), - (0x3136, 'M', 'ᆭ'), - (0x3137, 'M', 'ᄃ'), - (0x3138, 'M', 'ᄄ'), - (0x3139, 'M', 'ᄅ'), - (0x313A, 'M', 'ᆰ'), - (0x313B, 'M', 'ᆱ'), - (0x313C, 'M', 'ᆲ'), - (0x313D, 'M', 'ᆳ'), - (0x313E, 'M', 'ᆴ'), - (0x313F, 'M', 'ᆵ'), - (0x3140, 'M', 'ᄚ'), - (0x3141, 'M', 'ᄆ'), - (0x3142, 'M', 'ᄇ'), - (0x3143, 'M', 'ᄈ'), - (0x3144, 'M', 'ᄡ'), - (0x3145, 'M', 'ᄉ'), - (0x3146, 'M', 'ᄊ'), - (0x3147, 'M', 'ᄋ'), - (0x3148, 'M', 'ᄌ'), - (0x3149, 'M', 'ᄍ'), - (0x314A, 'M', 'ᄎ'), - (0x314B, 'M', 'ᄏ'), - (0x314C, 'M', 'ᄐ'), - (0x314D, 'M', 'ᄑ'), - (0x314E, 'M', 'ᄒ'), - (0x314F, 'M', 'ᅡ'), - (0x3150, 'M', 'ᅢ'), - (0x3151, 'M', 'ᅣ'), - (0x3152, 'M', 'ᅤ'), - (0x3153, 'M', 'ᅥ'), - (0x3154, 'M', 'ᅦ'), - (0x3155, 'M', 'ᅧ'), - (0x3156, 'M', 'ᅨ'), - (0x3157, 'M', 'ᅩ'), - (0x3158, 'M', 'ᅪ'), - (0x3159, 'M', 'ᅫ'), - (0x315A, 'M', 'ᅬ'), - (0x315B, 'M', 'ᅭ'), - (0x315C, 'M', 'ᅮ'), - (0x315D, 'M', 'ᅯ'), - (0x315E, 'M', 'ᅰ'), - (0x315F, 'M', 'ᅱ'), - (0x3160, 'M', 'ᅲ'), - (0x3161, 'M', 'ᅳ'), - (0x3162, 'M', 'ᅴ'), - (0x3163, 'M', 'ᅵ'), - (0x3164, 'X'), - (0x3165, 'M', 'ᄔ'), - (0x3166, 'M', 'ᄕ'), - (0x3167, 'M', 'ᇇ'), - (0x3168, 'M', 'ᇈ'), - (0x3169, 'M', 'ᇌ'), - (0x316A, 'M', 'ᇎ'), - (0x316B, 'M', 'ᇓ'), - (0x316C, 'M', 'ᇗ'), - (0x316D, 'M', 'ᇙ'), - (0x316E, 'M', 'ᄜ'), - (0x316F, 'M', 'ᇝ'), - (0x3170, 'M', 'ᇟ'), - (0x3171, 'M', 'ᄝ'), - (0x3172, 'M', 'ᄞ'), - (0x3173, 'M', 'ᄠ'), - (0x3174, 'M', 'ᄢ'), - (0x3175, 'M', 'ᄣ'), - (0x3176, 'M', 'ᄧ'), - (0x3177, 'M', 'ᄩ'), - (0x3178, 'M', 'ᄫ'), - (0x3179, 'M', 'ᄬ'), - (0x317A, 'M', 'ᄭ'), - (0x317B, 'M', 'ᄮ'), - (0x317C, 'M', 'ᄯ'), - (0x317D, 'M', 'ᄲ'), - (0x317E, 'M', 'ᄶ'), - (0x317F, 'M', 'ᅀ'), - (0x3180, 'M', 'ᅇ'), - (0x3181, 'M', 'ᅌ'), - (0x3182, 'M', 'ᇱ'), - (0x3183, 'M', 'ᇲ'), - (0x3184, 'M', 'ᅗ'), - ] - -def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3185, 'M', 'ᅘ'), - (0x3186, 'M', 'ᅙ'), - (0x3187, 'M', 'ᆄ'), - (0x3188, 'M', 'ᆅ'), - (0x3189, 'M', 'ᆈ'), - (0x318A, 'M', 'ᆑ'), - (0x318B, 'M', 'ᆒ'), - (0x318C, 'M', 'ᆔ'), - (0x318D, 'M', 'ᆞ'), - (0x318E, 'M', 'ᆡ'), - (0x318F, 'X'), - (0x3190, 'V'), - (0x3192, 'M', '一'), - (0x3193, 'M', '二'), - (0x3194, 'M', '三'), - (0x3195, 'M', '四'), - (0x3196, 'M', '上'), - (0x3197, 'M', '中'), - (0x3198, 'M', '下'), - (0x3199, 'M', '甲'), - (0x319A, 'M', '乙'), - (0x319B, 'M', '丙'), - (0x319C, 'M', '丁'), - (0x319D, 'M', '天'), - (0x319E, 'M', '地'), - (0x319F, 'M', '人'), - (0x31A0, 'V'), - (0x31E4, 'X'), - (0x31F0, 'V'), - (0x3200, '3', '(ᄀ)'), - (0x3201, '3', '(ᄂ)'), - (0x3202, '3', '(ᄃ)'), - (0x3203, '3', '(ᄅ)'), - (0x3204, '3', '(ᄆ)'), - (0x3205, '3', '(ᄇ)'), - (0x3206, '3', '(ᄉ)'), - (0x3207, '3', '(ᄋ)'), - (0x3208, '3', '(ᄌ)'), - (0x3209, '3', '(ᄎ)'), - (0x320A, '3', '(ᄏ)'), - (0x320B, '3', '(ᄐ)'), - (0x320C, '3', '(ᄑ)'), - (0x320D, '3', '(ᄒ)'), - (0x320E, '3', '(가)'), - (0x320F, '3', '(나)'), - (0x3210, '3', '(다)'), - (0x3211, '3', '(라)'), - (0x3212, '3', '(마)'), - (0x3213, '3', '(바)'), - (0x3214, '3', '(사)'), - (0x3215, '3', '(아)'), - (0x3216, '3', '(자)'), - (0x3217, '3', '(차)'), - (0x3218, '3', '(카)'), - (0x3219, '3', '(타)'), - (0x321A, '3', '(파)'), - (0x321B, '3', '(하)'), - (0x321C, '3', '(주)'), - (0x321D, '3', '(오전)'), - (0x321E, '3', '(오후)'), - (0x321F, 'X'), - (0x3220, '3', '(一)'), - (0x3221, '3', '(二)'), - (0x3222, '3', '(三)'), - (0x3223, '3', '(四)'), - (0x3224, '3', '(五)'), - (0x3225, '3', '(六)'), - (0x3226, '3', '(七)'), - (0x3227, '3', '(八)'), - (0x3228, '3', '(九)'), - (0x3229, '3', '(十)'), - (0x322A, '3', '(月)'), - (0x322B, '3', '(火)'), - (0x322C, '3', '(水)'), - (0x322D, '3', '(木)'), - (0x322E, '3', '(金)'), - (0x322F, '3', '(土)'), - (0x3230, '3', '(日)'), - (0x3231, '3', '(株)'), - (0x3232, '3', '(有)'), - (0x3233, '3', '(社)'), - (0x3234, '3', '(名)'), - (0x3235, '3', '(特)'), - (0x3236, '3', '(財)'), - (0x3237, '3', '(祝)'), - (0x3238, '3', '(労)'), - (0x3239, '3', '(代)'), - (0x323A, '3', '(呼)'), - (0x323B, '3', '(学)'), - (0x323C, '3', '(監)'), - (0x323D, '3', '(企)'), - (0x323E, '3', '(資)'), - (0x323F, '3', '(協)'), - (0x3240, '3', '(祭)'), - (0x3241, '3', '(休)'), - (0x3242, '3', '(自)'), - (0x3243, '3', '(至)'), - (0x3244, 'M', '問'), - (0x3245, 'M', '幼'), - (0x3246, 'M', '文'), - ] - -def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3247, 'M', '箏'), - (0x3248, 'V'), - (0x3250, 'M', 'pte'), - (0x3251, 'M', '21'), - (0x3252, 'M', '22'), - (0x3253, 'M', '23'), - (0x3254, 'M', '24'), - (0x3255, 'M', '25'), - (0x3256, 'M', '26'), - (0x3257, 'M', '27'), - (0x3258, 'M', '28'), - (0x3259, 'M', '29'), - (0x325A, 'M', '30'), - (0x325B, 'M', '31'), - (0x325C, 'M', '32'), - (0x325D, 'M', '33'), - (0x325E, 'M', '34'), - (0x325F, 'M', '35'), - (0x3260, 'M', 'ᄀ'), - (0x3261, 'M', 'ᄂ'), - (0x3262, 'M', 'ᄃ'), - (0x3263, 'M', 'ᄅ'), - (0x3264, 'M', 'ᄆ'), - (0x3265, 'M', 'ᄇ'), - (0x3266, 'M', 'ᄉ'), - (0x3267, 'M', 'ᄋ'), - (0x3268, 'M', 'ᄌ'), - (0x3269, 'M', 'ᄎ'), - (0x326A, 'M', 'ᄏ'), - (0x326B, 'M', 'ᄐ'), - (0x326C, 'M', 'ᄑ'), - (0x326D, 'M', 'ᄒ'), - (0x326E, 'M', '가'), - (0x326F, 'M', '나'), - (0x3270, 'M', '다'), - (0x3271, 'M', '라'), - (0x3272, 'M', '마'), - (0x3273, 'M', '바'), - (0x3274, 'M', '사'), - (0x3275, 'M', '아'), - (0x3276, 'M', '자'), - (0x3277, 'M', '차'), - (0x3278, 'M', '카'), - (0x3279, 'M', '타'), - (0x327A, 'M', '파'), - (0x327B, 'M', '하'), - (0x327C, 'M', '참고'), - (0x327D, 'M', '주의'), - (0x327E, 'M', '우'), - (0x327F, 'V'), - (0x3280, 'M', '一'), - (0x3281, 'M', '二'), - (0x3282, 'M', '三'), - (0x3283, 'M', '四'), - (0x3284, 'M', '五'), - (0x3285, 'M', '六'), - (0x3286, 'M', '七'), - (0x3287, 'M', '八'), - (0x3288, 'M', '九'), - (0x3289, 'M', '十'), - (0x328A, 'M', '月'), - (0x328B, 'M', '火'), - (0x328C, 'M', '水'), - (0x328D, 'M', '木'), - (0x328E, 'M', '金'), - (0x328F, 'M', '土'), - (0x3290, 'M', '日'), - (0x3291, 'M', '株'), - (0x3292, 'M', '有'), - (0x3293, 'M', '社'), - (0x3294, 'M', '名'), - (0x3295, 'M', '特'), - (0x3296, 'M', '財'), - (0x3297, 'M', '祝'), - (0x3298, 'M', '労'), - (0x3299, 'M', '秘'), - (0x329A, 'M', '男'), - (0x329B, 'M', '女'), - (0x329C, 'M', '適'), - (0x329D, 'M', '優'), - (0x329E, 'M', '印'), - (0x329F, 'M', '注'), - (0x32A0, 'M', '項'), - (0x32A1, 'M', '休'), - (0x32A2, 'M', '写'), - (0x32A3, 'M', '正'), - (0x32A4, 'M', '上'), - (0x32A5, 'M', '中'), - (0x32A6, 'M', '下'), - (0x32A7, 'M', '左'), - (0x32A8, 'M', '右'), - (0x32A9, 'M', '医'), - (0x32AA, 'M', '宗'), - (0x32AB, 'M', '学'), - (0x32AC, 'M', '監'), - (0x32AD, 'M', '企'), - (0x32AE, 'M', '資'), - (0x32AF, 'M', '協'), - (0x32B0, 'M', '夜'), - (0x32B1, 'M', '36'), - ] - -def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x32B2, 'M', '37'), - (0x32B3, 'M', '38'), - (0x32B4, 'M', '39'), - (0x32B5, 'M', '40'), - (0x32B6, 'M', '41'), - (0x32B7, 'M', '42'), - (0x32B8, 'M', '43'), - (0x32B9, 'M', '44'), - (0x32BA, 'M', '45'), - (0x32BB, 'M', '46'), - (0x32BC, 'M', '47'), - (0x32BD, 'M', '48'), - (0x32BE, 'M', '49'), - (0x32BF, 'M', '50'), - (0x32C0, 'M', '1月'), - (0x32C1, 'M', '2月'), - (0x32C2, 'M', '3月'), - (0x32C3, 'M', '4月'), - (0x32C4, 'M', '5月'), - (0x32C5, 'M', '6月'), - (0x32C6, 'M', '7月'), - (0x32C7, 'M', '8月'), - (0x32C8, 'M', '9月'), - (0x32C9, 'M', '10月'), - (0x32CA, 'M', '11月'), - (0x32CB, 'M', '12月'), - (0x32CC, 'M', 'hg'), - (0x32CD, 'M', 'erg'), - (0x32CE, 'M', 'ev'), - (0x32CF, 'M', 'ltd'), - (0x32D0, 'M', 'ア'), - (0x32D1, 'M', 'イ'), - (0x32D2, 'M', 'ウ'), - (0x32D3, 'M', 'エ'), - (0x32D4, 'M', 'オ'), - (0x32D5, 'M', 'カ'), - (0x32D6, 'M', 'キ'), - (0x32D7, 'M', 'ク'), - (0x32D8, 'M', 'ケ'), - (0x32D9, 'M', 'コ'), - (0x32DA, 'M', 'サ'), - (0x32DB, 'M', 'シ'), - (0x32DC, 'M', 'ス'), - (0x32DD, 'M', 'セ'), - (0x32DE, 'M', 'ソ'), - (0x32DF, 'M', 'タ'), - (0x32E0, 'M', 'チ'), - (0x32E1, 'M', 'ツ'), - (0x32E2, 'M', 'テ'), - (0x32E3, 'M', 'ト'), - (0x32E4, 'M', 'ナ'), - (0x32E5, 'M', 'ニ'), - (0x32E6, 'M', 'ヌ'), - (0x32E7, 'M', 'ネ'), - (0x32E8, 'M', 'ノ'), - (0x32E9, 'M', 'ハ'), - (0x32EA, 'M', 'ヒ'), - (0x32EB, 'M', 'フ'), - (0x32EC, 'M', 'ヘ'), - (0x32ED, 'M', 'ホ'), - (0x32EE, 'M', 'マ'), - (0x32EF, 'M', 'ミ'), - (0x32F0, 'M', 'ム'), - (0x32F1, 'M', 'メ'), - (0x32F2, 'M', 'モ'), - (0x32F3, 'M', 'ヤ'), - (0x32F4, 'M', 'ユ'), - (0x32F5, 'M', 'ヨ'), - (0x32F6, 'M', 'ラ'), - (0x32F7, 'M', 'リ'), - (0x32F8, 'M', 'ル'), - (0x32F9, 'M', 'レ'), - (0x32FA, 'M', 'ロ'), - (0x32FB, 'M', 'ワ'), - (0x32FC, 'M', 'ヰ'), - (0x32FD, 'M', 'ヱ'), - (0x32FE, 'M', 'ヲ'), - (0x32FF, 'M', '令和'), - (0x3300, 'M', 'アパート'), - (0x3301, 'M', 'アルファ'), - (0x3302, 'M', 'アンペア'), - (0x3303, 'M', 'アール'), - (0x3304, 'M', 'イニング'), - (0x3305, 'M', 'インチ'), - (0x3306, 'M', 'ウォン'), - (0x3307, 'M', 'エスクード'), - (0x3308, 'M', 'エーカー'), - (0x3309, 'M', 'オンス'), - (0x330A, 'M', 'オーム'), - (0x330B, 'M', 'カイリ'), - (0x330C, 'M', 'カラット'), - (0x330D, 'M', 'カロリー'), - (0x330E, 'M', 'ガロン'), - (0x330F, 'M', 'ガンマ'), - (0x3310, 'M', 'ギガ'), - (0x3311, 'M', 'ギニー'), - (0x3312, 'M', 'キュリー'), - (0x3313, 'M', 'ギルダー'), - (0x3314, 'M', 'キロ'), - (0x3315, 'M', 'キログラム'), - ] - -def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3316, 'M', 'キロメートル'), - (0x3317, 'M', 'キロワット'), - (0x3318, 'M', 'グラム'), - (0x3319, 'M', 'グラムトン'), - (0x331A, 'M', 'クルゼイロ'), - (0x331B, 'M', 'クローネ'), - (0x331C, 'M', 'ケース'), - (0x331D, 'M', 'コルナ'), - (0x331E, 'M', 'コーポ'), - (0x331F, 'M', 'サイクル'), - (0x3320, 'M', 'サンチーム'), - (0x3321, 'M', 'シリング'), - (0x3322, 'M', 'センチ'), - (0x3323, 'M', 'セント'), - (0x3324, 'M', 'ダース'), - (0x3325, 'M', 'デシ'), - (0x3326, 'M', 'ドル'), - (0x3327, 'M', 'トン'), - (0x3328, 'M', 'ナノ'), - (0x3329, 'M', 'ノット'), - (0x332A, 'M', 'ハイツ'), - (0x332B, 'M', 'パーセント'), - (0x332C, 'M', 'パーツ'), - (0x332D, 'M', 'バーレル'), - (0x332E, 'M', 'ピアストル'), - (0x332F, 'M', 'ピクル'), - (0x3330, 'M', 'ピコ'), - (0x3331, 'M', 'ビル'), - (0x3332, 'M', 'ファラッド'), - (0x3333, 'M', 'フィート'), - (0x3334, 'M', 'ブッシェル'), - (0x3335, 'M', 'フラン'), - (0x3336, 'M', 'ヘクタール'), - (0x3337, 'M', 'ペソ'), - (0x3338, 'M', 'ペニヒ'), - (0x3339, 'M', 'ヘルツ'), - (0x333A, 'M', 'ペンス'), - (0x333B, 'M', 'ページ'), - (0x333C, 'M', 'ベータ'), - (0x333D, 'M', 'ポイント'), - (0x333E, 'M', 'ボルト'), - (0x333F, 'M', 'ホン'), - (0x3340, 'M', 'ポンド'), - (0x3341, 'M', 'ホール'), - (0x3342, 'M', 'ホーン'), - (0x3343, 'M', 'マイクロ'), - (0x3344, 'M', 'マイル'), - (0x3345, 'M', 'マッハ'), - (0x3346, 'M', 'マルク'), - (0x3347, 'M', 'マンション'), - (0x3348, 'M', 'ミクロン'), - (0x3349, 'M', 'ミリ'), - (0x334A, 'M', 'ミリバール'), - (0x334B, 'M', 'メガ'), - (0x334C, 'M', 'メガトン'), - (0x334D, 'M', 'メートル'), - (0x334E, 'M', 'ヤード'), - (0x334F, 'M', 'ヤール'), - (0x3350, 'M', 'ユアン'), - (0x3351, 'M', 'リットル'), - (0x3352, 'M', 'リラ'), - (0x3353, 'M', 'ルピー'), - (0x3354, 'M', 'ルーブル'), - (0x3355, 'M', 'レム'), - (0x3356, 'M', 'レントゲン'), - (0x3357, 'M', 'ワット'), - (0x3358, 'M', '0点'), - (0x3359, 'M', '1点'), - (0x335A, 'M', '2点'), - (0x335B, 'M', '3点'), - (0x335C, 'M', '4点'), - (0x335D, 'M', '5点'), - (0x335E, 'M', '6点'), - (0x335F, 'M', '7点'), - (0x3360, 'M', '8点'), - (0x3361, 'M', '9点'), - (0x3362, 'M', '10点'), - (0x3363, 'M', '11点'), - (0x3364, 'M', '12点'), - (0x3365, 'M', '13点'), - (0x3366, 'M', '14点'), - (0x3367, 'M', '15点'), - (0x3368, 'M', '16点'), - (0x3369, 'M', '17点'), - (0x336A, 'M', '18点'), - (0x336B, 'M', '19点'), - (0x336C, 'M', '20点'), - (0x336D, 'M', '21点'), - (0x336E, 'M', '22点'), - (0x336F, 'M', '23点'), - (0x3370, 'M', '24点'), - (0x3371, 'M', 'hpa'), - (0x3372, 'M', 'da'), - (0x3373, 'M', 'au'), - (0x3374, 'M', 'bar'), - (0x3375, 'M', 'ov'), - (0x3376, 'M', 'pc'), - (0x3377, 'M', 'dm'), - (0x3378, 'M', 'dm2'), - (0x3379, 'M', 'dm3'), - ] - -def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x337A, 'M', 'iu'), - (0x337B, 'M', '平成'), - (0x337C, 'M', '昭和'), - (0x337D, 'M', '大正'), - (0x337E, 'M', '明治'), - (0x337F, 'M', '株式会社'), - (0x3380, 'M', 'pa'), - (0x3381, 'M', 'na'), - (0x3382, 'M', 'μa'), - (0x3383, 'M', 'ma'), - (0x3384, 'M', 'ka'), - (0x3385, 'M', 'kb'), - (0x3386, 'M', 'mb'), - (0x3387, 'M', 'gb'), - (0x3388, 'M', 'cal'), - (0x3389, 'M', 'kcal'), - (0x338A, 'M', 'pf'), - (0x338B, 'M', 'nf'), - (0x338C, 'M', 'μf'), - (0x338D, 'M', 'μg'), - (0x338E, 'M', 'mg'), - (0x338F, 'M', 'kg'), - (0x3390, 'M', 'hz'), - (0x3391, 'M', 'khz'), - (0x3392, 'M', 'mhz'), - (0x3393, 'M', 'ghz'), - (0x3394, 'M', 'thz'), - (0x3395, 'M', 'μl'), - (0x3396, 'M', 'ml'), - (0x3397, 'M', 'dl'), - (0x3398, 'M', 'kl'), - (0x3399, 'M', 'fm'), - (0x339A, 'M', 'nm'), - (0x339B, 'M', 'μm'), - (0x339C, 'M', 'mm'), - (0x339D, 'M', 'cm'), - (0x339E, 'M', 'km'), - (0x339F, 'M', 'mm2'), - (0x33A0, 'M', 'cm2'), - (0x33A1, 'M', 'm2'), - (0x33A2, 'M', 'km2'), - (0x33A3, 'M', 'mm3'), - (0x33A4, 'M', 'cm3'), - (0x33A5, 'M', 'm3'), - (0x33A6, 'M', 'km3'), - (0x33A7, 'M', 'm∕s'), - (0x33A8, 'M', 'm∕s2'), - (0x33A9, 'M', 'pa'), - (0x33AA, 'M', 'kpa'), - (0x33AB, 'M', 'mpa'), - (0x33AC, 'M', 'gpa'), - (0x33AD, 'M', 'rad'), - (0x33AE, 'M', 'rad∕s'), - (0x33AF, 'M', 'rad∕s2'), - (0x33B0, 'M', 'ps'), - (0x33B1, 'M', 'ns'), - (0x33B2, 'M', 'μs'), - (0x33B3, 'M', 'ms'), - (0x33B4, 'M', 'pv'), - (0x33B5, 'M', 'nv'), - (0x33B6, 'M', 'μv'), - (0x33B7, 'M', 'mv'), - (0x33B8, 'M', 'kv'), - (0x33B9, 'M', 'mv'), - (0x33BA, 'M', 'pw'), - (0x33BB, 'M', 'nw'), - (0x33BC, 'M', 'μw'), - (0x33BD, 'M', 'mw'), - (0x33BE, 'M', 'kw'), - (0x33BF, 'M', 'mw'), - (0x33C0, 'M', 'kω'), - (0x33C1, 'M', 'mω'), - (0x33C2, 'X'), - (0x33C3, 'M', 'bq'), - (0x33C4, 'M', 'cc'), - (0x33C5, 'M', 'cd'), - (0x33C6, 'M', 'c∕kg'), - (0x33C7, 'X'), - (0x33C8, 'M', 'db'), - (0x33C9, 'M', 'gy'), - (0x33CA, 'M', 'ha'), - (0x33CB, 'M', 'hp'), - (0x33CC, 'M', 'in'), - (0x33CD, 'M', 'kk'), - (0x33CE, 'M', 'km'), - (0x33CF, 'M', 'kt'), - (0x33D0, 'M', 'lm'), - (0x33D1, 'M', 'ln'), - (0x33D2, 'M', 'log'), - (0x33D3, 'M', 'lx'), - (0x33D4, 'M', 'mb'), - (0x33D5, 'M', 'mil'), - (0x33D6, 'M', 'mol'), - (0x33D7, 'M', 'ph'), - (0x33D8, 'X'), - (0x33D9, 'M', 'ppm'), - (0x33DA, 'M', 'pr'), - (0x33DB, 'M', 'sr'), - (0x33DC, 'M', 'sv'), - (0x33DD, 'M', 'wb'), - ] - -def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x33DE, 'M', 'v∕m'), - (0x33DF, 'M', 'a∕m'), - (0x33E0, 'M', '1日'), - (0x33E1, 'M', '2日'), - (0x33E2, 'M', '3日'), - (0x33E3, 'M', '4日'), - (0x33E4, 'M', '5日'), - (0x33E5, 'M', '6日'), - (0x33E6, 'M', '7日'), - (0x33E7, 'M', '8日'), - (0x33E8, 'M', '9日'), - (0x33E9, 'M', '10日'), - (0x33EA, 'M', '11日'), - (0x33EB, 'M', '12日'), - (0x33EC, 'M', '13日'), - (0x33ED, 'M', '14日'), - (0x33EE, 'M', '15日'), - (0x33EF, 'M', '16日'), - (0x33F0, 'M', '17日'), - (0x33F1, 'M', '18日'), - (0x33F2, 'M', '19日'), - (0x33F3, 'M', '20日'), - (0x33F4, 'M', '21日'), - (0x33F5, 'M', '22日'), - (0x33F6, 'M', '23日'), - (0x33F7, 'M', '24日'), - (0x33F8, 'M', '25日'), - (0x33F9, 'M', '26日'), - (0x33FA, 'M', '27日'), - (0x33FB, 'M', '28日'), - (0x33FC, 'M', '29日'), - (0x33FD, 'M', '30日'), - (0x33FE, 'M', '31日'), - (0x33FF, 'M', 'gal'), - (0x3400, 'V'), - (0xA48D, 'X'), - (0xA490, 'V'), - (0xA4C7, 'X'), - (0xA4D0, 'V'), - (0xA62C, 'X'), - (0xA640, 'M', 'ꙁ'), - (0xA641, 'V'), - (0xA642, 'M', 'ꙃ'), - (0xA643, 'V'), - (0xA644, 'M', 'ꙅ'), - (0xA645, 'V'), - (0xA646, 'M', 'ꙇ'), - (0xA647, 'V'), - (0xA648, 'M', 'ꙉ'), - (0xA649, 'V'), - (0xA64A, 'M', 'ꙋ'), - (0xA64B, 'V'), - (0xA64C, 'M', 'ꙍ'), - (0xA64D, 'V'), - (0xA64E, 'M', 'ꙏ'), - (0xA64F, 'V'), - (0xA650, 'M', 'ꙑ'), - (0xA651, 'V'), - (0xA652, 'M', 'ꙓ'), - (0xA653, 'V'), - (0xA654, 'M', 'ꙕ'), - (0xA655, 'V'), - (0xA656, 'M', 'ꙗ'), - (0xA657, 'V'), - (0xA658, 'M', 'ꙙ'), - (0xA659, 'V'), - (0xA65A, 'M', 'ꙛ'), - (0xA65B, 'V'), - (0xA65C, 'M', 'ꙝ'), - (0xA65D, 'V'), - (0xA65E, 'M', 'ꙟ'), - (0xA65F, 'V'), - (0xA660, 'M', 'ꙡ'), - (0xA661, 'V'), - (0xA662, 'M', 'ꙣ'), - (0xA663, 'V'), - (0xA664, 'M', 'ꙥ'), - (0xA665, 'V'), - (0xA666, 'M', 'ꙧ'), - (0xA667, 'V'), - (0xA668, 'M', 'ꙩ'), - (0xA669, 'V'), - (0xA66A, 'M', 'ꙫ'), - (0xA66B, 'V'), - (0xA66C, 'M', 'ꙭ'), - (0xA66D, 'V'), - (0xA680, 'M', 'ꚁ'), - (0xA681, 'V'), - (0xA682, 'M', 'ꚃ'), - (0xA683, 'V'), - (0xA684, 'M', 'ꚅ'), - (0xA685, 'V'), - (0xA686, 'M', 'ꚇ'), - (0xA687, 'V'), - (0xA688, 'M', 'ꚉ'), - (0xA689, 'V'), - (0xA68A, 'M', 'ꚋ'), - (0xA68B, 'V'), - (0xA68C, 'M', 'ꚍ'), - (0xA68D, 'V'), - ] - -def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA68E, 'M', 'ꚏ'), - (0xA68F, 'V'), - (0xA690, 'M', 'ꚑ'), - (0xA691, 'V'), - (0xA692, 'M', 'ꚓ'), - (0xA693, 'V'), - (0xA694, 'M', 'ꚕ'), - (0xA695, 'V'), - (0xA696, 'M', 'ꚗ'), - (0xA697, 'V'), - (0xA698, 'M', 'ꚙ'), - (0xA699, 'V'), - (0xA69A, 'M', 'ꚛ'), - (0xA69B, 'V'), - (0xA69C, 'M', 'ъ'), - (0xA69D, 'M', 'ь'), - (0xA69E, 'V'), - (0xA6F8, 'X'), - (0xA700, 'V'), - (0xA722, 'M', 'ꜣ'), - (0xA723, 'V'), - (0xA724, 'M', 'ꜥ'), - (0xA725, 'V'), - (0xA726, 'M', 'ꜧ'), - (0xA727, 'V'), - (0xA728, 'M', 'ꜩ'), - (0xA729, 'V'), - (0xA72A, 'M', 'ꜫ'), - (0xA72B, 'V'), - (0xA72C, 'M', 'ꜭ'), - (0xA72D, 'V'), - (0xA72E, 'M', 'ꜯ'), - (0xA72F, 'V'), - (0xA732, 'M', 'ꜳ'), - (0xA733, 'V'), - (0xA734, 'M', 'ꜵ'), - (0xA735, 'V'), - (0xA736, 'M', 'ꜷ'), - (0xA737, 'V'), - (0xA738, 'M', 'ꜹ'), - (0xA739, 'V'), - (0xA73A, 'M', 'ꜻ'), - (0xA73B, 'V'), - (0xA73C, 'M', 'ꜽ'), - (0xA73D, 'V'), - (0xA73E, 'M', 'ꜿ'), - (0xA73F, 'V'), - (0xA740, 'M', 'ꝁ'), - (0xA741, 'V'), - (0xA742, 'M', 'ꝃ'), - (0xA743, 'V'), - (0xA744, 'M', 'ꝅ'), - (0xA745, 'V'), - (0xA746, 'M', 'ꝇ'), - (0xA747, 'V'), - (0xA748, 'M', 'ꝉ'), - (0xA749, 'V'), - (0xA74A, 'M', 'ꝋ'), - (0xA74B, 'V'), - (0xA74C, 'M', 'ꝍ'), - (0xA74D, 'V'), - (0xA74E, 'M', 'ꝏ'), - (0xA74F, 'V'), - (0xA750, 'M', 'ꝑ'), - (0xA751, 'V'), - (0xA752, 'M', 'ꝓ'), - (0xA753, 'V'), - (0xA754, 'M', 'ꝕ'), - (0xA755, 'V'), - (0xA756, 'M', 'ꝗ'), - (0xA757, 'V'), - (0xA758, 'M', 'ꝙ'), - (0xA759, 'V'), - (0xA75A, 'M', 'ꝛ'), - (0xA75B, 'V'), - (0xA75C, 'M', 'ꝝ'), - (0xA75D, 'V'), - (0xA75E, 'M', 'ꝟ'), - (0xA75F, 'V'), - (0xA760, 'M', 'ꝡ'), - (0xA761, 'V'), - (0xA762, 'M', 'ꝣ'), - (0xA763, 'V'), - (0xA764, 'M', 'ꝥ'), - (0xA765, 'V'), - (0xA766, 'M', 'ꝧ'), - (0xA767, 'V'), - (0xA768, 'M', 'ꝩ'), - (0xA769, 'V'), - (0xA76A, 'M', 'ꝫ'), - (0xA76B, 'V'), - (0xA76C, 'M', 'ꝭ'), - (0xA76D, 'V'), - (0xA76E, 'M', 'ꝯ'), - (0xA76F, 'V'), - (0xA770, 'M', 'ꝯ'), - (0xA771, 'V'), - (0xA779, 'M', 'ꝺ'), - (0xA77A, 'V'), - (0xA77B, 'M', 'ꝼ'), - ] - -def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA77C, 'V'), - (0xA77D, 'M', 'ᵹ'), - (0xA77E, 'M', 'ꝿ'), - (0xA77F, 'V'), - (0xA780, 'M', 'ꞁ'), - (0xA781, 'V'), - (0xA782, 'M', 'ꞃ'), - (0xA783, 'V'), - (0xA784, 'M', 'ꞅ'), - (0xA785, 'V'), - (0xA786, 'M', 'ꞇ'), - (0xA787, 'V'), - (0xA78B, 'M', 'ꞌ'), - (0xA78C, 'V'), - (0xA78D, 'M', 'ɥ'), - (0xA78E, 'V'), - (0xA790, 'M', 'ꞑ'), - (0xA791, 'V'), - (0xA792, 'M', 'ꞓ'), - (0xA793, 'V'), - (0xA796, 'M', 'ꞗ'), - (0xA797, 'V'), - (0xA798, 'M', 'ꞙ'), - (0xA799, 'V'), - (0xA79A, 'M', 'ꞛ'), - (0xA79B, 'V'), - (0xA79C, 'M', 'ꞝ'), - (0xA79D, 'V'), - (0xA79E, 'M', 'ꞟ'), - (0xA79F, 'V'), - (0xA7A0, 'M', 'ꞡ'), - (0xA7A1, 'V'), - (0xA7A2, 'M', 'ꞣ'), - (0xA7A3, 'V'), - (0xA7A4, 'M', 'ꞥ'), - (0xA7A5, 'V'), - (0xA7A6, 'M', 'ꞧ'), - (0xA7A7, 'V'), - (0xA7A8, 'M', 'ꞩ'), - (0xA7A9, 'V'), - (0xA7AA, 'M', 'ɦ'), - (0xA7AB, 'M', 'ɜ'), - (0xA7AC, 'M', 'ɡ'), - (0xA7AD, 'M', 'ɬ'), - (0xA7AE, 'M', 'ɪ'), - (0xA7AF, 'V'), - (0xA7B0, 'M', 'ʞ'), - (0xA7B1, 'M', 'ʇ'), - (0xA7B2, 'M', 'ʝ'), - (0xA7B3, 'M', 'ꭓ'), - (0xA7B4, 'M', 'ꞵ'), - (0xA7B5, 'V'), - (0xA7B6, 'M', 'ꞷ'), - (0xA7B7, 'V'), - (0xA7B8, 'M', 'ꞹ'), - (0xA7B9, 'V'), - (0xA7BA, 'M', 'ꞻ'), - (0xA7BB, 'V'), - (0xA7BC, 'M', 'ꞽ'), - (0xA7BD, 'V'), - (0xA7BE, 'M', 'ꞿ'), - (0xA7BF, 'V'), - (0xA7C0, 'M', 'ꟁ'), - (0xA7C1, 'V'), - (0xA7C2, 'M', 'ꟃ'), - (0xA7C3, 'V'), - (0xA7C4, 'M', 'ꞔ'), - (0xA7C5, 'M', 'ʂ'), - (0xA7C6, 'M', 'ᶎ'), - (0xA7C7, 'M', 'ꟈ'), - (0xA7C8, 'V'), - (0xA7C9, 'M', 'ꟊ'), - (0xA7CA, 'V'), - (0xA7CB, 'X'), - (0xA7D0, 'M', 'ꟑ'), - (0xA7D1, 'V'), - (0xA7D2, 'X'), - (0xA7D3, 'V'), - (0xA7D4, 'X'), - (0xA7D5, 'V'), - (0xA7D6, 'M', 'ꟗ'), - (0xA7D7, 'V'), - (0xA7D8, 'M', 'ꟙ'), - (0xA7D9, 'V'), - (0xA7DA, 'X'), - (0xA7F2, 'M', 'c'), - (0xA7F3, 'M', 'f'), - (0xA7F4, 'M', 'q'), - (0xA7F5, 'M', 'ꟶ'), - (0xA7F6, 'V'), - (0xA7F8, 'M', 'ħ'), - (0xA7F9, 'M', 'œ'), - (0xA7FA, 'V'), - (0xA82D, 'X'), - (0xA830, 'V'), - (0xA83A, 'X'), - (0xA840, 'V'), - (0xA878, 'X'), - (0xA880, 'V'), - (0xA8C6, 'X'), - ] - -def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA8CE, 'V'), - (0xA8DA, 'X'), - (0xA8E0, 'V'), - (0xA954, 'X'), - (0xA95F, 'V'), - (0xA97D, 'X'), - (0xA980, 'V'), - (0xA9CE, 'X'), - (0xA9CF, 'V'), - (0xA9DA, 'X'), - (0xA9DE, 'V'), - (0xA9FF, 'X'), - (0xAA00, 'V'), - (0xAA37, 'X'), - (0xAA40, 'V'), - (0xAA4E, 'X'), - (0xAA50, 'V'), - (0xAA5A, 'X'), - (0xAA5C, 'V'), - (0xAAC3, 'X'), - (0xAADB, 'V'), - (0xAAF7, 'X'), - (0xAB01, 'V'), - (0xAB07, 'X'), - (0xAB09, 'V'), - (0xAB0F, 'X'), - (0xAB11, 'V'), - (0xAB17, 'X'), - (0xAB20, 'V'), - (0xAB27, 'X'), - (0xAB28, 'V'), - (0xAB2F, 'X'), - (0xAB30, 'V'), - (0xAB5C, 'M', 'ꜧ'), - (0xAB5D, 'M', 'ꬷ'), - (0xAB5E, 'M', 'ɫ'), - (0xAB5F, 'M', 'ꭒ'), - (0xAB60, 'V'), - (0xAB69, 'M', 'ʍ'), - (0xAB6A, 'V'), - (0xAB6C, 'X'), - (0xAB70, 'M', 'Ꭰ'), - (0xAB71, 'M', 'Ꭱ'), - (0xAB72, 'M', 'Ꭲ'), - (0xAB73, 'M', 'Ꭳ'), - (0xAB74, 'M', 'Ꭴ'), - (0xAB75, 'M', 'Ꭵ'), - (0xAB76, 'M', 'Ꭶ'), - (0xAB77, 'M', 'Ꭷ'), - (0xAB78, 'M', 'Ꭸ'), - (0xAB79, 'M', 'Ꭹ'), - (0xAB7A, 'M', 'Ꭺ'), - (0xAB7B, 'M', 'Ꭻ'), - (0xAB7C, 'M', 'Ꭼ'), - (0xAB7D, 'M', 'Ꭽ'), - (0xAB7E, 'M', 'Ꭾ'), - (0xAB7F, 'M', 'Ꭿ'), - (0xAB80, 'M', 'Ꮀ'), - (0xAB81, 'M', 'Ꮁ'), - (0xAB82, 'M', 'Ꮂ'), - (0xAB83, 'M', 'Ꮃ'), - (0xAB84, 'M', 'Ꮄ'), - (0xAB85, 'M', 'Ꮅ'), - (0xAB86, 'M', 'Ꮆ'), - (0xAB87, 'M', 'Ꮇ'), - (0xAB88, 'M', 'Ꮈ'), - (0xAB89, 'M', 'Ꮉ'), - (0xAB8A, 'M', 'Ꮊ'), - (0xAB8B, 'M', 'Ꮋ'), - (0xAB8C, 'M', 'Ꮌ'), - (0xAB8D, 'M', 'Ꮍ'), - (0xAB8E, 'M', 'Ꮎ'), - (0xAB8F, 'M', 'Ꮏ'), - (0xAB90, 'M', 'Ꮐ'), - (0xAB91, 'M', 'Ꮑ'), - (0xAB92, 'M', 'Ꮒ'), - (0xAB93, 'M', 'Ꮓ'), - (0xAB94, 'M', 'Ꮔ'), - (0xAB95, 'M', 'Ꮕ'), - (0xAB96, 'M', 'Ꮖ'), - (0xAB97, 'M', 'Ꮗ'), - (0xAB98, 'M', 'Ꮘ'), - (0xAB99, 'M', 'Ꮙ'), - (0xAB9A, 'M', 'Ꮚ'), - (0xAB9B, 'M', 'Ꮛ'), - (0xAB9C, 'M', 'Ꮜ'), - (0xAB9D, 'M', 'Ꮝ'), - (0xAB9E, 'M', 'Ꮞ'), - (0xAB9F, 'M', 'Ꮟ'), - (0xABA0, 'M', 'Ꮠ'), - (0xABA1, 'M', 'Ꮡ'), - (0xABA2, 'M', 'Ꮢ'), - (0xABA3, 'M', 'Ꮣ'), - (0xABA4, 'M', 'Ꮤ'), - (0xABA5, 'M', 'Ꮥ'), - (0xABA6, 'M', 'Ꮦ'), - (0xABA7, 'M', 'Ꮧ'), - (0xABA8, 'M', 'Ꮨ'), - (0xABA9, 'M', 'Ꮩ'), - (0xABAA, 'M', 'Ꮪ'), - ] - -def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xABAB, 'M', 'Ꮫ'), - (0xABAC, 'M', 'Ꮬ'), - (0xABAD, 'M', 'Ꮭ'), - (0xABAE, 'M', 'Ꮮ'), - (0xABAF, 'M', 'Ꮯ'), - (0xABB0, 'M', 'Ꮰ'), - (0xABB1, 'M', 'Ꮱ'), - (0xABB2, 'M', 'Ꮲ'), - (0xABB3, 'M', 'Ꮳ'), - (0xABB4, 'M', 'Ꮴ'), - (0xABB5, 'M', 'Ꮵ'), - (0xABB6, 'M', 'Ꮶ'), - (0xABB7, 'M', 'Ꮷ'), - (0xABB8, 'M', 'Ꮸ'), - (0xABB9, 'M', 'Ꮹ'), - (0xABBA, 'M', 'Ꮺ'), - (0xABBB, 'M', 'Ꮻ'), - (0xABBC, 'M', 'Ꮼ'), - (0xABBD, 'M', 'Ꮽ'), - (0xABBE, 'M', 'Ꮾ'), - (0xABBF, 'M', 'Ꮿ'), - (0xABC0, 'V'), - (0xABEE, 'X'), - (0xABF0, 'V'), - (0xABFA, 'X'), - (0xAC00, 'V'), - (0xD7A4, 'X'), - (0xD7B0, 'V'), - (0xD7C7, 'X'), - (0xD7CB, 'V'), - (0xD7FC, 'X'), - (0xF900, 'M', '豈'), - (0xF901, 'M', '更'), - (0xF902, 'M', '車'), - (0xF903, 'M', '賈'), - (0xF904, 'M', '滑'), - (0xF905, 'M', '串'), - (0xF906, 'M', '句'), - (0xF907, 'M', '龜'), - (0xF909, 'M', '契'), - (0xF90A, 'M', '金'), - (0xF90B, 'M', '喇'), - (0xF90C, 'M', '奈'), - (0xF90D, 'M', '懶'), - (0xF90E, 'M', '癩'), - (0xF90F, 'M', '羅'), - (0xF910, 'M', '蘿'), - (0xF911, 'M', '螺'), - (0xF912, 'M', '裸'), - (0xF913, 'M', '邏'), - (0xF914, 'M', '樂'), - (0xF915, 'M', '洛'), - (0xF916, 'M', '烙'), - (0xF917, 'M', '珞'), - (0xF918, 'M', '落'), - (0xF919, 'M', '酪'), - (0xF91A, 'M', '駱'), - (0xF91B, 'M', '亂'), - (0xF91C, 'M', '卵'), - (0xF91D, 'M', '欄'), - (0xF91E, 'M', '爛'), - (0xF91F, 'M', '蘭'), - (0xF920, 'M', '鸞'), - (0xF921, 'M', '嵐'), - (0xF922, 'M', '濫'), - (0xF923, 'M', '藍'), - (0xF924, 'M', '襤'), - (0xF925, 'M', '拉'), - (0xF926, 'M', '臘'), - (0xF927, 'M', '蠟'), - (0xF928, 'M', '廊'), - (0xF929, 'M', '朗'), - (0xF92A, 'M', '浪'), - (0xF92B, 'M', '狼'), - (0xF92C, 'M', '郎'), - (0xF92D, 'M', '來'), - (0xF92E, 'M', '冷'), - (0xF92F, 'M', '勞'), - (0xF930, 'M', '擄'), - (0xF931, 'M', '櫓'), - (0xF932, 'M', '爐'), - (0xF933, 'M', '盧'), - (0xF934, 'M', '老'), - (0xF935, 'M', '蘆'), - (0xF936, 'M', '虜'), - (0xF937, 'M', '路'), - (0xF938, 'M', '露'), - (0xF939, 'M', '魯'), - (0xF93A, 'M', '鷺'), - (0xF93B, 'M', '碌'), - (0xF93C, 'M', '祿'), - (0xF93D, 'M', '綠'), - (0xF93E, 'M', '菉'), - (0xF93F, 'M', '錄'), - (0xF940, 'M', '鹿'), - (0xF941, 'M', '論'), - (0xF942, 'M', '壟'), - (0xF943, 'M', '弄'), - (0xF944, 'M', '籠'), - (0xF945, 'M', '聾'), - ] - -def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF946, 'M', '牢'), - (0xF947, 'M', '磊'), - (0xF948, 'M', '賂'), - (0xF949, 'M', '雷'), - (0xF94A, 'M', '壘'), - (0xF94B, 'M', '屢'), - (0xF94C, 'M', '樓'), - (0xF94D, 'M', '淚'), - (0xF94E, 'M', '漏'), - (0xF94F, 'M', '累'), - (0xF950, 'M', '縷'), - (0xF951, 'M', '陋'), - (0xF952, 'M', '勒'), - (0xF953, 'M', '肋'), - (0xF954, 'M', '凜'), - (0xF955, 'M', '凌'), - (0xF956, 'M', '稜'), - (0xF957, 'M', '綾'), - (0xF958, 'M', '菱'), - (0xF959, 'M', '陵'), - (0xF95A, 'M', '讀'), - (0xF95B, 'M', '拏'), - (0xF95C, 'M', '樂'), - (0xF95D, 'M', '諾'), - (0xF95E, 'M', '丹'), - (0xF95F, 'M', '寧'), - (0xF960, 'M', '怒'), - (0xF961, 'M', '率'), - (0xF962, 'M', '異'), - (0xF963, 'M', '北'), - (0xF964, 'M', '磻'), - (0xF965, 'M', '便'), - (0xF966, 'M', '復'), - (0xF967, 'M', '不'), - (0xF968, 'M', '泌'), - (0xF969, 'M', '數'), - (0xF96A, 'M', '索'), - (0xF96B, 'M', '參'), - (0xF96C, 'M', '塞'), - (0xF96D, 'M', '省'), - (0xF96E, 'M', '葉'), - (0xF96F, 'M', '說'), - (0xF970, 'M', '殺'), - (0xF971, 'M', '辰'), - (0xF972, 'M', '沈'), - (0xF973, 'M', '拾'), - (0xF974, 'M', '若'), - (0xF975, 'M', '掠'), - (0xF976, 'M', '略'), - (0xF977, 'M', '亮'), - (0xF978, 'M', '兩'), - (0xF979, 'M', '凉'), - (0xF97A, 'M', '梁'), - (0xF97B, 'M', '糧'), - (0xF97C, 'M', '良'), - (0xF97D, 'M', '諒'), - (0xF97E, 'M', '量'), - (0xF97F, 'M', '勵'), - (0xF980, 'M', '呂'), - (0xF981, 'M', '女'), - (0xF982, 'M', '廬'), - (0xF983, 'M', '旅'), - (0xF984, 'M', '濾'), - (0xF985, 'M', '礪'), - (0xF986, 'M', '閭'), - (0xF987, 'M', '驪'), - (0xF988, 'M', '麗'), - (0xF989, 'M', '黎'), - (0xF98A, 'M', '力'), - (0xF98B, 'M', '曆'), - (0xF98C, 'M', '歷'), - (0xF98D, 'M', '轢'), - (0xF98E, 'M', '年'), - (0xF98F, 'M', '憐'), - (0xF990, 'M', '戀'), - (0xF991, 'M', '撚'), - (0xF992, 'M', '漣'), - (0xF993, 'M', '煉'), - (0xF994, 'M', '璉'), - (0xF995, 'M', '秊'), - (0xF996, 'M', '練'), - (0xF997, 'M', '聯'), - (0xF998, 'M', '輦'), - (0xF999, 'M', '蓮'), - (0xF99A, 'M', '連'), - (0xF99B, 'M', '鍊'), - (0xF99C, 'M', '列'), - (0xF99D, 'M', '劣'), - (0xF99E, 'M', '咽'), - (0xF99F, 'M', '烈'), - (0xF9A0, 'M', '裂'), - (0xF9A1, 'M', '說'), - (0xF9A2, 'M', '廉'), - (0xF9A3, 'M', '念'), - (0xF9A4, 'M', '捻'), - (0xF9A5, 'M', '殮'), - (0xF9A6, 'M', '簾'), - (0xF9A7, 'M', '獵'), - (0xF9A8, 'M', '令'), - (0xF9A9, 'M', '囹'), - ] - -def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF9AA, 'M', '寧'), - (0xF9AB, 'M', '嶺'), - (0xF9AC, 'M', '怜'), - (0xF9AD, 'M', '玲'), - (0xF9AE, 'M', '瑩'), - (0xF9AF, 'M', '羚'), - (0xF9B0, 'M', '聆'), - (0xF9B1, 'M', '鈴'), - (0xF9B2, 'M', '零'), - (0xF9B3, 'M', '靈'), - (0xF9B4, 'M', '領'), - (0xF9B5, 'M', '例'), - (0xF9B6, 'M', '禮'), - (0xF9B7, 'M', '醴'), - (0xF9B8, 'M', '隸'), - (0xF9B9, 'M', '惡'), - (0xF9BA, 'M', '了'), - (0xF9BB, 'M', '僚'), - (0xF9BC, 'M', '寮'), - (0xF9BD, 'M', '尿'), - (0xF9BE, 'M', '料'), - (0xF9BF, 'M', '樂'), - (0xF9C0, 'M', '燎'), - (0xF9C1, 'M', '療'), - (0xF9C2, 'M', '蓼'), - (0xF9C3, 'M', '遼'), - (0xF9C4, 'M', '龍'), - (0xF9C5, 'M', '暈'), - (0xF9C6, 'M', '阮'), - (0xF9C7, 'M', '劉'), - (0xF9C8, 'M', '杻'), - (0xF9C9, 'M', '柳'), - (0xF9CA, 'M', '流'), - (0xF9CB, 'M', '溜'), - (0xF9CC, 'M', '琉'), - (0xF9CD, 'M', '留'), - (0xF9CE, 'M', '硫'), - (0xF9CF, 'M', '紐'), - (0xF9D0, 'M', '類'), - (0xF9D1, 'M', '六'), - (0xF9D2, 'M', '戮'), - (0xF9D3, 'M', '陸'), - (0xF9D4, 'M', '倫'), - (0xF9D5, 'M', '崙'), - (0xF9D6, 'M', '淪'), - (0xF9D7, 'M', '輪'), - (0xF9D8, 'M', '律'), - (0xF9D9, 'M', '慄'), - (0xF9DA, 'M', '栗'), - (0xF9DB, 'M', '率'), - (0xF9DC, 'M', '隆'), - (0xF9DD, 'M', '利'), - (0xF9DE, 'M', '吏'), - (0xF9DF, 'M', '履'), - (0xF9E0, 'M', '易'), - (0xF9E1, 'M', '李'), - (0xF9E2, 'M', '梨'), - (0xF9E3, 'M', '泥'), - (0xF9E4, 'M', '理'), - (0xF9E5, 'M', '痢'), - (0xF9E6, 'M', '罹'), - (0xF9E7, 'M', '裏'), - (0xF9E8, 'M', '裡'), - (0xF9E9, 'M', '里'), - (0xF9EA, 'M', '離'), - (0xF9EB, 'M', '匿'), - (0xF9EC, 'M', '溺'), - (0xF9ED, 'M', '吝'), - (0xF9EE, 'M', '燐'), - (0xF9EF, 'M', '璘'), - (0xF9F0, 'M', '藺'), - (0xF9F1, 'M', '隣'), - (0xF9F2, 'M', '鱗'), - (0xF9F3, 'M', '麟'), - (0xF9F4, 'M', '林'), - (0xF9F5, 'M', '淋'), - (0xF9F6, 'M', '臨'), - (0xF9F7, 'M', '立'), - (0xF9F8, 'M', '笠'), - (0xF9F9, 'M', '粒'), - (0xF9FA, 'M', '狀'), - (0xF9FB, 'M', '炙'), - (0xF9FC, 'M', '識'), - (0xF9FD, 'M', '什'), - (0xF9FE, 'M', '茶'), - (0xF9FF, 'M', '刺'), - (0xFA00, 'M', '切'), - (0xFA01, 'M', '度'), - (0xFA02, 'M', '拓'), - (0xFA03, 'M', '糖'), - (0xFA04, 'M', '宅'), - (0xFA05, 'M', '洞'), - (0xFA06, 'M', '暴'), - (0xFA07, 'M', '輻'), - (0xFA08, 'M', '行'), - (0xFA09, 'M', '降'), - (0xFA0A, 'M', '見'), - (0xFA0B, 'M', '廓'), - (0xFA0C, 'M', '兀'), - (0xFA0D, 'M', '嗀'), - ] - -def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA0E, 'V'), - (0xFA10, 'M', '塚'), - (0xFA11, 'V'), - (0xFA12, 'M', '晴'), - (0xFA13, 'V'), - (0xFA15, 'M', '凞'), - (0xFA16, 'M', '猪'), - (0xFA17, 'M', '益'), - (0xFA18, 'M', '礼'), - (0xFA19, 'M', '神'), - (0xFA1A, 'M', '祥'), - (0xFA1B, 'M', '福'), - (0xFA1C, 'M', '靖'), - (0xFA1D, 'M', '精'), - (0xFA1E, 'M', '羽'), - (0xFA1F, 'V'), - (0xFA20, 'M', '蘒'), - (0xFA21, 'V'), - (0xFA22, 'M', '諸'), - (0xFA23, 'V'), - (0xFA25, 'M', '逸'), - (0xFA26, 'M', '都'), - (0xFA27, 'V'), - (0xFA2A, 'M', '飯'), - (0xFA2B, 'M', '飼'), - (0xFA2C, 'M', '館'), - (0xFA2D, 'M', '鶴'), - (0xFA2E, 'M', '郞'), - (0xFA2F, 'M', '隷'), - (0xFA30, 'M', '侮'), - (0xFA31, 'M', '僧'), - (0xFA32, 'M', '免'), - (0xFA33, 'M', '勉'), - (0xFA34, 'M', '勤'), - (0xFA35, 'M', '卑'), - (0xFA36, 'M', '喝'), - (0xFA37, 'M', '嘆'), - (0xFA38, 'M', '器'), - (0xFA39, 'M', '塀'), - (0xFA3A, 'M', '墨'), - (0xFA3B, 'M', '層'), - (0xFA3C, 'M', '屮'), - (0xFA3D, 'M', '悔'), - (0xFA3E, 'M', '慨'), - (0xFA3F, 'M', '憎'), - (0xFA40, 'M', '懲'), - (0xFA41, 'M', '敏'), - (0xFA42, 'M', '既'), - (0xFA43, 'M', '暑'), - (0xFA44, 'M', '梅'), - (0xFA45, 'M', '海'), - (0xFA46, 'M', '渚'), - (0xFA47, 'M', '漢'), - (0xFA48, 'M', '煮'), - (0xFA49, 'M', '爫'), - (0xFA4A, 'M', '琢'), - (0xFA4B, 'M', '碑'), - (0xFA4C, 'M', '社'), - (0xFA4D, 'M', '祉'), - (0xFA4E, 'M', '祈'), - (0xFA4F, 'M', '祐'), - (0xFA50, 'M', '祖'), - (0xFA51, 'M', '祝'), - (0xFA52, 'M', '禍'), - (0xFA53, 'M', '禎'), - (0xFA54, 'M', '穀'), - (0xFA55, 'M', '突'), - (0xFA56, 'M', '節'), - (0xFA57, 'M', '練'), - (0xFA58, 'M', '縉'), - (0xFA59, 'M', '繁'), - (0xFA5A, 'M', '署'), - (0xFA5B, 'M', '者'), - (0xFA5C, 'M', '臭'), - (0xFA5D, 'M', '艹'), - (0xFA5F, 'M', '著'), - (0xFA60, 'M', '褐'), - (0xFA61, 'M', '視'), - (0xFA62, 'M', '謁'), - (0xFA63, 'M', '謹'), - (0xFA64, 'M', '賓'), - (0xFA65, 'M', '贈'), - (0xFA66, 'M', '辶'), - (0xFA67, 'M', '逸'), - (0xFA68, 'M', '難'), - (0xFA69, 'M', '響'), - (0xFA6A, 'M', '頻'), - (0xFA6B, 'M', '恵'), - (0xFA6C, 'M', '𤋮'), - (0xFA6D, 'M', '舘'), - (0xFA6E, 'X'), - (0xFA70, 'M', '並'), - (0xFA71, 'M', '况'), - (0xFA72, 'M', '全'), - (0xFA73, 'M', '侀'), - (0xFA74, 'M', '充'), - (0xFA75, 'M', '冀'), - (0xFA76, 'M', '勇'), - (0xFA77, 'M', '勺'), - (0xFA78, 'M', '喝'), - ] - -def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA79, 'M', '啕'), - (0xFA7A, 'M', '喙'), - (0xFA7B, 'M', '嗢'), - (0xFA7C, 'M', '塚'), - (0xFA7D, 'M', '墳'), - (0xFA7E, 'M', '奄'), - (0xFA7F, 'M', '奔'), - (0xFA80, 'M', '婢'), - (0xFA81, 'M', '嬨'), - (0xFA82, 'M', '廒'), - (0xFA83, 'M', '廙'), - (0xFA84, 'M', '彩'), - (0xFA85, 'M', '徭'), - (0xFA86, 'M', '惘'), - (0xFA87, 'M', '慎'), - (0xFA88, 'M', '愈'), - (0xFA89, 'M', '憎'), - (0xFA8A, 'M', '慠'), - (0xFA8B, 'M', '懲'), - (0xFA8C, 'M', '戴'), - (0xFA8D, 'M', '揄'), - (0xFA8E, 'M', '搜'), - (0xFA8F, 'M', '摒'), - (0xFA90, 'M', '敖'), - (0xFA91, 'M', '晴'), - (0xFA92, 'M', '朗'), - (0xFA93, 'M', '望'), - (0xFA94, 'M', '杖'), - (0xFA95, 'M', '歹'), - (0xFA96, 'M', '殺'), - (0xFA97, 'M', '流'), - (0xFA98, 'M', '滛'), - (0xFA99, 'M', '滋'), - (0xFA9A, 'M', '漢'), - (0xFA9B, 'M', '瀞'), - (0xFA9C, 'M', '煮'), - (0xFA9D, 'M', '瞧'), - (0xFA9E, 'M', '爵'), - (0xFA9F, 'M', '犯'), - (0xFAA0, 'M', '猪'), - (0xFAA1, 'M', '瑱'), - (0xFAA2, 'M', '甆'), - (0xFAA3, 'M', '画'), - (0xFAA4, 'M', '瘝'), - (0xFAA5, 'M', '瘟'), - (0xFAA6, 'M', '益'), - (0xFAA7, 'M', '盛'), - (0xFAA8, 'M', '直'), - (0xFAA9, 'M', '睊'), - (0xFAAA, 'M', '着'), - (0xFAAB, 'M', '磌'), - (0xFAAC, 'M', '窱'), - (0xFAAD, 'M', '節'), - (0xFAAE, 'M', '类'), - (0xFAAF, 'M', '絛'), - (0xFAB0, 'M', '練'), - (0xFAB1, 'M', '缾'), - (0xFAB2, 'M', '者'), - (0xFAB3, 'M', '荒'), - (0xFAB4, 'M', '華'), - (0xFAB5, 'M', '蝹'), - (0xFAB6, 'M', '襁'), - (0xFAB7, 'M', '覆'), - (0xFAB8, 'M', '視'), - (0xFAB9, 'M', '調'), - (0xFABA, 'M', '諸'), - (0xFABB, 'M', '請'), - (0xFABC, 'M', '謁'), - (0xFABD, 'M', '諾'), - (0xFABE, 'M', '諭'), - (0xFABF, 'M', '謹'), - (0xFAC0, 'M', '變'), - (0xFAC1, 'M', '贈'), - (0xFAC2, 'M', '輸'), - (0xFAC3, 'M', '遲'), - (0xFAC4, 'M', '醙'), - (0xFAC5, 'M', '鉶'), - (0xFAC6, 'M', '陼'), - (0xFAC7, 'M', '難'), - (0xFAC8, 'M', '靖'), - (0xFAC9, 'M', '韛'), - (0xFACA, 'M', '響'), - (0xFACB, 'M', '頋'), - (0xFACC, 'M', '頻'), - (0xFACD, 'M', '鬒'), - (0xFACE, 'M', '龜'), - (0xFACF, 'M', '𢡊'), - (0xFAD0, 'M', '𢡄'), - (0xFAD1, 'M', '𣏕'), - (0xFAD2, 'M', '㮝'), - (0xFAD3, 'M', '䀘'), - (0xFAD4, 'M', '䀹'), - (0xFAD5, 'M', '𥉉'), - (0xFAD6, 'M', '𥳐'), - (0xFAD7, 'M', '𧻓'), - (0xFAD8, 'M', '齃'), - (0xFAD9, 'M', '龎'), - (0xFADA, 'X'), - (0xFB00, 'M', 'ff'), - (0xFB01, 'M', 'fi'), - ] - -def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFB02, 'M', 'fl'), - (0xFB03, 'M', 'ffi'), - (0xFB04, 'M', 'ffl'), - (0xFB05, 'M', 'st'), - (0xFB07, 'X'), - (0xFB13, 'M', 'մն'), - (0xFB14, 'M', 'մե'), - (0xFB15, 'M', 'մի'), - (0xFB16, 'M', 'վն'), - (0xFB17, 'M', 'մխ'), - (0xFB18, 'X'), - (0xFB1D, 'M', 'יִ'), - (0xFB1E, 'V'), - (0xFB1F, 'M', 'ײַ'), - (0xFB20, 'M', 'ע'), - (0xFB21, 'M', 'א'), - (0xFB22, 'M', 'ד'), - (0xFB23, 'M', 'ה'), - (0xFB24, 'M', 'כ'), - (0xFB25, 'M', 'ל'), - (0xFB26, 'M', 'ם'), - (0xFB27, 'M', 'ר'), - (0xFB28, 'M', 'ת'), - (0xFB29, '3', '+'), - (0xFB2A, 'M', 'שׁ'), - (0xFB2B, 'M', 'שׂ'), - (0xFB2C, 'M', 'שּׁ'), - (0xFB2D, 'M', 'שּׂ'), - (0xFB2E, 'M', 'אַ'), - (0xFB2F, 'M', 'אָ'), - (0xFB30, 'M', 'אּ'), - (0xFB31, 'M', 'בּ'), - (0xFB32, 'M', 'גּ'), - (0xFB33, 'M', 'דּ'), - (0xFB34, 'M', 'הּ'), - (0xFB35, 'M', 'וּ'), - (0xFB36, 'M', 'זּ'), - (0xFB37, 'X'), - (0xFB38, 'M', 'טּ'), - (0xFB39, 'M', 'יּ'), - (0xFB3A, 'M', 'ךּ'), - (0xFB3B, 'M', 'כּ'), - (0xFB3C, 'M', 'לּ'), - (0xFB3D, 'X'), - (0xFB3E, 'M', 'מּ'), - (0xFB3F, 'X'), - (0xFB40, 'M', 'נּ'), - (0xFB41, 'M', 'סּ'), - (0xFB42, 'X'), - (0xFB43, 'M', 'ףּ'), - (0xFB44, 'M', 'פּ'), - (0xFB45, 'X'), - (0xFB46, 'M', 'צּ'), - (0xFB47, 'M', 'קּ'), - (0xFB48, 'M', 'רּ'), - (0xFB49, 'M', 'שּ'), - (0xFB4A, 'M', 'תּ'), - (0xFB4B, 'M', 'וֹ'), - (0xFB4C, 'M', 'בֿ'), - (0xFB4D, 'M', 'כֿ'), - (0xFB4E, 'M', 'פֿ'), - (0xFB4F, 'M', 'אל'), - (0xFB50, 'M', 'ٱ'), - (0xFB52, 'M', 'ٻ'), - (0xFB56, 'M', 'پ'), - (0xFB5A, 'M', 'ڀ'), - (0xFB5E, 'M', 'ٺ'), - (0xFB62, 'M', 'ٿ'), - (0xFB66, 'M', 'ٹ'), - (0xFB6A, 'M', 'ڤ'), - (0xFB6E, 'M', 'ڦ'), - (0xFB72, 'M', 'ڄ'), - (0xFB76, 'M', 'ڃ'), - (0xFB7A, 'M', 'چ'), - (0xFB7E, 'M', 'ڇ'), - (0xFB82, 'M', 'ڍ'), - (0xFB84, 'M', 'ڌ'), - (0xFB86, 'M', 'ڎ'), - (0xFB88, 'M', 'ڈ'), - (0xFB8A, 'M', 'ژ'), - (0xFB8C, 'M', 'ڑ'), - (0xFB8E, 'M', 'ک'), - (0xFB92, 'M', 'گ'), - (0xFB96, 'M', 'ڳ'), - (0xFB9A, 'M', 'ڱ'), - (0xFB9E, 'M', 'ں'), - (0xFBA0, 'M', 'ڻ'), - (0xFBA4, 'M', 'ۀ'), - (0xFBA6, 'M', 'ہ'), - (0xFBAA, 'M', 'ھ'), - (0xFBAE, 'M', 'ے'), - (0xFBB0, 'M', 'ۓ'), - (0xFBB2, 'V'), - (0xFBC3, 'X'), - (0xFBD3, 'M', 'ڭ'), - (0xFBD7, 'M', 'ۇ'), - (0xFBD9, 'M', 'ۆ'), - (0xFBDB, 'M', 'ۈ'), - (0xFBDD, 'M', 'ۇٴ'), - (0xFBDE, 'M', 'ۋ'), - ] - -def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFBE0, 'M', 'ۅ'), - (0xFBE2, 'M', 'ۉ'), - (0xFBE4, 'M', 'ې'), - (0xFBE8, 'M', 'ى'), - (0xFBEA, 'M', 'ئا'), - (0xFBEC, 'M', 'ئە'), - (0xFBEE, 'M', 'ئو'), - (0xFBF0, 'M', 'ئۇ'), - (0xFBF2, 'M', 'ئۆ'), - (0xFBF4, 'M', 'ئۈ'), - (0xFBF6, 'M', 'ئې'), - (0xFBF9, 'M', 'ئى'), - (0xFBFC, 'M', 'ی'), - (0xFC00, 'M', 'ئج'), - (0xFC01, 'M', 'ئح'), - (0xFC02, 'M', 'ئم'), - (0xFC03, 'M', 'ئى'), - (0xFC04, 'M', 'ئي'), - (0xFC05, 'M', 'بج'), - (0xFC06, 'M', 'بح'), - (0xFC07, 'M', 'بخ'), - (0xFC08, 'M', 'بم'), - (0xFC09, 'M', 'بى'), - (0xFC0A, 'M', 'بي'), - (0xFC0B, 'M', 'تج'), - (0xFC0C, 'M', 'تح'), - (0xFC0D, 'M', 'تخ'), - (0xFC0E, 'M', 'تم'), - (0xFC0F, 'M', 'تى'), - (0xFC10, 'M', 'تي'), - (0xFC11, 'M', 'ثج'), - (0xFC12, 'M', 'ثم'), - (0xFC13, 'M', 'ثى'), - (0xFC14, 'M', 'ثي'), - (0xFC15, 'M', 'جح'), - (0xFC16, 'M', 'جم'), - (0xFC17, 'M', 'حج'), - (0xFC18, 'M', 'حم'), - (0xFC19, 'M', 'خج'), - (0xFC1A, 'M', 'خح'), - (0xFC1B, 'M', 'خم'), - (0xFC1C, 'M', 'سج'), - (0xFC1D, 'M', 'سح'), - (0xFC1E, 'M', 'سخ'), - (0xFC1F, 'M', 'سم'), - (0xFC20, 'M', 'صح'), - (0xFC21, 'M', 'صم'), - (0xFC22, 'M', 'ضج'), - (0xFC23, 'M', 'ضح'), - (0xFC24, 'M', 'ضخ'), - (0xFC25, 'M', 'ضم'), - (0xFC26, 'M', 'طح'), - (0xFC27, 'M', 'طم'), - (0xFC28, 'M', 'ظم'), - (0xFC29, 'M', 'عج'), - (0xFC2A, 'M', 'عم'), - (0xFC2B, 'M', 'غج'), - (0xFC2C, 'M', 'غم'), - (0xFC2D, 'M', 'فج'), - (0xFC2E, 'M', 'فح'), - (0xFC2F, 'M', 'فخ'), - (0xFC30, 'M', 'فم'), - (0xFC31, 'M', 'فى'), - (0xFC32, 'M', 'في'), - (0xFC33, 'M', 'قح'), - (0xFC34, 'M', 'قم'), - (0xFC35, 'M', 'قى'), - (0xFC36, 'M', 'قي'), - (0xFC37, 'M', 'كا'), - (0xFC38, 'M', 'كج'), - (0xFC39, 'M', 'كح'), - (0xFC3A, 'M', 'كخ'), - (0xFC3B, 'M', 'كل'), - (0xFC3C, 'M', 'كم'), - (0xFC3D, 'M', 'كى'), - (0xFC3E, 'M', 'كي'), - (0xFC3F, 'M', 'لج'), - (0xFC40, 'M', 'لح'), - (0xFC41, 'M', 'لخ'), - (0xFC42, 'M', 'لم'), - (0xFC43, 'M', 'لى'), - (0xFC44, 'M', 'لي'), - (0xFC45, 'M', 'مج'), - (0xFC46, 'M', 'مح'), - (0xFC47, 'M', 'مخ'), - (0xFC48, 'M', 'مم'), - (0xFC49, 'M', 'مى'), - (0xFC4A, 'M', 'مي'), - (0xFC4B, 'M', 'نج'), - (0xFC4C, 'M', 'نح'), - (0xFC4D, 'M', 'نخ'), - (0xFC4E, 'M', 'نم'), - (0xFC4F, 'M', 'نى'), - (0xFC50, 'M', 'ني'), - (0xFC51, 'M', 'هج'), - (0xFC52, 'M', 'هم'), - (0xFC53, 'M', 'هى'), - (0xFC54, 'M', 'هي'), - (0xFC55, 'M', 'يج'), - (0xFC56, 'M', 'يح'), - ] - -def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFC57, 'M', 'يخ'), - (0xFC58, 'M', 'يم'), - (0xFC59, 'M', 'يى'), - (0xFC5A, 'M', 'يي'), - (0xFC5B, 'M', 'ذٰ'), - (0xFC5C, 'M', 'رٰ'), - (0xFC5D, 'M', 'ىٰ'), - (0xFC5E, '3', ' ٌّ'), - (0xFC5F, '3', ' ٍّ'), - (0xFC60, '3', ' َّ'), - (0xFC61, '3', ' ُّ'), - (0xFC62, '3', ' ِّ'), - (0xFC63, '3', ' ّٰ'), - (0xFC64, 'M', 'ئر'), - (0xFC65, 'M', 'ئز'), - (0xFC66, 'M', 'ئم'), - (0xFC67, 'M', 'ئن'), - (0xFC68, 'M', 'ئى'), - (0xFC69, 'M', 'ئي'), - (0xFC6A, 'M', 'بر'), - (0xFC6B, 'M', 'بز'), - (0xFC6C, 'M', 'بم'), - (0xFC6D, 'M', 'بن'), - (0xFC6E, 'M', 'بى'), - (0xFC6F, 'M', 'بي'), - (0xFC70, 'M', 'تر'), - (0xFC71, 'M', 'تز'), - (0xFC72, 'M', 'تم'), - (0xFC73, 'M', 'تن'), - (0xFC74, 'M', 'تى'), - (0xFC75, 'M', 'تي'), - (0xFC76, 'M', 'ثر'), - (0xFC77, 'M', 'ثز'), - (0xFC78, 'M', 'ثم'), - (0xFC79, 'M', 'ثن'), - (0xFC7A, 'M', 'ثى'), - (0xFC7B, 'M', 'ثي'), - (0xFC7C, 'M', 'فى'), - (0xFC7D, 'M', 'في'), - (0xFC7E, 'M', 'قى'), - (0xFC7F, 'M', 'قي'), - (0xFC80, 'M', 'كا'), - (0xFC81, 'M', 'كل'), - (0xFC82, 'M', 'كم'), - (0xFC83, 'M', 'كى'), - (0xFC84, 'M', 'كي'), - (0xFC85, 'M', 'لم'), - (0xFC86, 'M', 'لى'), - (0xFC87, 'M', 'لي'), - (0xFC88, 'M', 'ما'), - (0xFC89, 'M', 'مم'), - (0xFC8A, 'M', 'نر'), - (0xFC8B, 'M', 'نز'), - (0xFC8C, 'M', 'نم'), - (0xFC8D, 'M', 'نن'), - (0xFC8E, 'M', 'نى'), - (0xFC8F, 'M', 'ني'), - (0xFC90, 'M', 'ىٰ'), - (0xFC91, 'M', 'ير'), - (0xFC92, 'M', 'يز'), - (0xFC93, 'M', 'يم'), - (0xFC94, 'M', 'ين'), - (0xFC95, 'M', 'يى'), - (0xFC96, 'M', 'يي'), - (0xFC97, 'M', 'ئج'), - (0xFC98, 'M', 'ئح'), - (0xFC99, 'M', 'ئخ'), - (0xFC9A, 'M', 'ئم'), - (0xFC9B, 'M', 'ئه'), - (0xFC9C, 'M', 'بج'), - (0xFC9D, 'M', 'بح'), - (0xFC9E, 'M', 'بخ'), - (0xFC9F, 'M', 'بم'), - (0xFCA0, 'M', 'به'), - (0xFCA1, 'M', 'تج'), - (0xFCA2, 'M', 'تح'), - (0xFCA3, 'M', 'تخ'), - (0xFCA4, 'M', 'تم'), - (0xFCA5, 'M', 'ته'), - (0xFCA6, 'M', 'ثم'), - (0xFCA7, 'M', 'جح'), - (0xFCA8, 'M', 'جم'), - (0xFCA9, 'M', 'حج'), - (0xFCAA, 'M', 'حم'), - (0xFCAB, 'M', 'خج'), - (0xFCAC, 'M', 'خم'), - (0xFCAD, 'M', 'سج'), - (0xFCAE, 'M', 'سح'), - (0xFCAF, 'M', 'سخ'), - (0xFCB0, 'M', 'سم'), - (0xFCB1, 'M', 'صح'), - (0xFCB2, 'M', 'صخ'), - (0xFCB3, 'M', 'صم'), - (0xFCB4, 'M', 'ضج'), - (0xFCB5, 'M', 'ضح'), - (0xFCB6, 'M', 'ضخ'), - (0xFCB7, 'M', 'ضم'), - (0xFCB8, 'M', 'طح'), - (0xFCB9, 'M', 'ظم'), - (0xFCBA, 'M', 'عج'), - ] - -def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFCBB, 'M', 'عم'), - (0xFCBC, 'M', 'غج'), - (0xFCBD, 'M', 'غم'), - (0xFCBE, 'M', 'فج'), - (0xFCBF, 'M', 'فح'), - (0xFCC0, 'M', 'فخ'), - (0xFCC1, 'M', 'فم'), - (0xFCC2, 'M', 'قح'), - (0xFCC3, 'M', 'قم'), - (0xFCC4, 'M', 'كج'), - (0xFCC5, 'M', 'كح'), - (0xFCC6, 'M', 'كخ'), - (0xFCC7, 'M', 'كل'), - (0xFCC8, 'M', 'كم'), - (0xFCC9, 'M', 'لج'), - (0xFCCA, 'M', 'لح'), - (0xFCCB, 'M', 'لخ'), - (0xFCCC, 'M', 'لم'), - (0xFCCD, 'M', 'له'), - (0xFCCE, 'M', 'مج'), - (0xFCCF, 'M', 'مح'), - (0xFCD0, 'M', 'مخ'), - (0xFCD1, 'M', 'مم'), - (0xFCD2, 'M', 'نج'), - (0xFCD3, 'M', 'نح'), - (0xFCD4, 'M', 'نخ'), - (0xFCD5, 'M', 'نم'), - (0xFCD6, 'M', 'نه'), - (0xFCD7, 'M', 'هج'), - (0xFCD8, 'M', 'هم'), - (0xFCD9, 'M', 'هٰ'), - (0xFCDA, 'M', 'يج'), - (0xFCDB, 'M', 'يح'), - (0xFCDC, 'M', 'يخ'), - (0xFCDD, 'M', 'يم'), - (0xFCDE, 'M', 'يه'), - (0xFCDF, 'M', 'ئم'), - (0xFCE0, 'M', 'ئه'), - (0xFCE1, 'M', 'بم'), - (0xFCE2, 'M', 'به'), - (0xFCE3, 'M', 'تم'), - (0xFCE4, 'M', 'ته'), - (0xFCE5, 'M', 'ثم'), - (0xFCE6, 'M', 'ثه'), - (0xFCE7, 'M', 'سم'), - (0xFCE8, 'M', 'سه'), - (0xFCE9, 'M', 'شم'), - (0xFCEA, 'M', 'شه'), - (0xFCEB, 'M', 'كل'), - (0xFCEC, 'M', 'كم'), - (0xFCED, 'M', 'لم'), - (0xFCEE, 'M', 'نم'), - (0xFCEF, 'M', 'نه'), - (0xFCF0, 'M', 'يم'), - (0xFCF1, 'M', 'يه'), - (0xFCF2, 'M', 'ـَّ'), - (0xFCF3, 'M', 'ـُّ'), - (0xFCF4, 'M', 'ـِّ'), - (0xFCF5, 'M', 'طى'), - (0xFCF6, 'M', 'طي'), - (0xFCF7, 'M', 'عى'), - (0xFCF8, 'M', 'عي'), - (0xFCF9, 'M', 'غى'), - (0xFCFA, 'M', 'غي'), - (0xFCFB, 'M', 'سى'), - (0xFCFC, 'M', 'سي'), - (0xFCFD, 'M', 'شى'), - (0xFCFE, 'M', 'شي'), - (0xFCFF, 'M', 'حى'), - (0xFD00, 'M', 'حي'), - (0xFD01, 'M', 'جى'), - (0xFD02, 'M', 'جي'), - (0xFD03, 'M', 'خى'), - (0xFD04, 'M', 'خي'), - (0xFD05, 'M', 'صى'), - (0xFD06, 'M', 'صي'), - (0xFD07, 'M', 'ضى'), - (0xFD08, 'M', 'ضي'), - (0xFD09, 'M', 'شج'), - (0xFD0A, 'M', 'شح'), - (0xFD0B, 'M', 'شخ'), - (0xFD0C, 'M', 'شم'), - (0xFD0D, 'M', 'شر'), - (0xFD0E, 'M', 'سر'), - (0xFD0F, 'M', 'صر'), - (0xFD10, 'M', 'ضر'), - (0xFD11, 'M', 'طى'), - (0xFD12, 'M', 'طي'), - (0xFD13, 'M', 'عى'), - (0xFD14, 'M', 'عي'), - (0xFD15, 'M', 'غى'), - (0xFD16, 'M', 'غي'), - (0xFD17, 'M', 'سى'), - (0xFD18, 'M', 'سي'), - (0xFD19, 'M', 'شى'), - (0xFD1A, 'M', 'شي'), - (0xFD1B, 'M', 'حى'), - (0xFD1C, 'M', 'حي'), - (0xFD1D, 'M', 'جى'), - (0xFD1E, 'M', 'جي'), - ] - -def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFD1F, 'M', 'خى'), - (0xFD20, 'M', 'خي'), - (0xFD21, 'M', 'صى'), - (0xFD22, 'M', 'صي'), - (0xFD23, 'M', 'ضى'), - (0xFD24, 'M', 'ضي'), - (0xFD25, 'M', 'شج'), - (0xFD26, 'M', 'شح'), - (0xFD27, 'M', 'شخ'), - (0xFD28, 'M', 'شم'), - (0xFD29, 'M', 'شر'), - (0xFD2A, 'M', 'سر'), - (0xFD2B, 'M', 'صر'), - (0xFD2C, 'M', 'ضر'), - (0xFD2D, 'M', 'شج'), - (0xFD2E, 'M', 'شح'), - (0xFD2F, 'M', 'شخ'), - (0xFD30, 'M', 'شم'), - (0xFD31, 'M', 'سه'), - (0xFD32, 'M', 'شه'), - (0xFD33, 'M', 'طم'), - (0xFD34, 'M', 'سج'), - (0xFD35, 'M', 'سح'), - (0xFD36, 'M', 'سخ'), - (0xFD37, 'M', 'شج'), - (0xFD38, 'M', 'شح'), - (0xFD39, 'M', 'شخ'), - (0xFD3A, 'M', 'طم'), - (0xFD3B, 'M', 'ظم'), - (0xFD3C, 'M', 'اً'), - (0xFD3E, 'V'), - (0xFD50, 'M', 'تجم'), - (0xFD51, 'M', 'تحج'), - (0xFD53, 'M', 'تحم'), - (0xFD54, 'M', 'تخم'), - (0xFD55, 'M', 'تمج'), - (0xFD56, 'M', 'تمح'), - (0xFD57, 'M', 'تمخ'), - (0xFD58, 'M', 'جمح'), - (0xFD5A, 'M', 'حمي'), - (0xFD5B, 'M', 'حمى'), - (0xFD5C, 'M', 'سحج'), - (0xFD5D, 'M', 'سجح'), - (0xFD5E, 'M', 'سجى'), - (0xFD5F, 'M', 'سمح'), - (0xFD61, 'M', 'سمج'), - (0xFD62, 'M', 'سمم'), - (0xFD64, 'M', 'صحح'), - (0xFD66, 'M', 'صمم'), - (0xFD67, 'M', 'شحم'), - (0xFD69, 'M', 'شجي'), - (0xFD6A, 'M', 'شمخ'), - (0xFD6C, 'M', 'شمم'), - (0xFD6E, 'M', 'ضحى'), - (0xFD6F, 'M', 'ضخم'), - (0xFD71, 'M', 'طمح'), - (0xFD73, 'M', 'طمم'), - (0xFD74, 'M', 'طمي'), - (0xFD75, 'M', 'عجم'), - (0xFD76, 'M', 'عمم'), - (0xFD78, 'M', 'عمى'), - (0xFD79, 'M', 'غمم'), - (0xFD7A, 'M', 'غمي'), - (0xFD7B, 'M', 'غمى'), - (0xFD7C, 'M', 'فخم'), - (0xFD7E, 'M', 'قمح'), - (0xFD7F, 'M', 'قمم'), - (0xFD80, 'M', 'لحم'), - (0xFD81, 'M', 'لحي'), - (0xFD82, 'M', 'لحى'), - (0xFD83, 'M', 'لجج'), - (0xFD85, 'M', 'لخم'), - (0xFD87, 'M', 'لمح'), - (0xFD89, 'M', 'محج'), - (0xFD8A, 'M', 'محم'), - (0xFD8B, 'M', 'محي'), - (0xFD8C, 'M', 'مجح'), - (0xFD8D, 'M', 'مجم'), - (0xFD8E, 'M', 'مخج'), - (0xFD8F, 'M', 'مخم'), - (0xFD90, 'X'), - (0xFD92, 'M', 'مجخ'), - (0xFD93, 'M', 'همج'), - (0xFD94, 'M', 'همم'), - (0xFD95, 'M', 'نحم'), - (0xFD96, 'M', 'نحى'), - (0xFD97, 'M', 'نجم'), - (0xFD99, 'M', 'نجى'), - (0xFD9A, 'M', 'نمي'), - (0xFD9B, 'M', 'نمى'), - (0xFD9C, 'M', 'يمم'), - (0xFD9E, 'M', 'بخي'), - (0xFD9F, 'M', 'تجي'), - (0xFDA0, 'M', 'تجى'), - (0xFDA1, 'M', 'تخي'), - (0xFDA2, 'M', 'تخى'), - (0xFDA3, 'M', 'تمي'), - (0xFDA4, 'M', 'تمى'), - (0xFDA5, 'M', 'جمي'), - (0xFDA6, 'M', 'جحى'), - ] - -def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFDA7, 'M', 'جمى'), - (0xFDA8, 'M', 'سخى'), - (0xFDA9, 'M', 'صحي'), - (0xFDAA, 'M', 'شحي'), - (0xFDAB, 'M', 'ضحي'), - (0xFDAC, 'M', 'لجي'), - (0xFDAD, 'M', 'لمي'), - (0xFDAE, 'M', 'يحي'), - (0xFDAF, 'M', 'يجي'), - (0xFDB0, 'M', 'يمي'), - (0xFDB1, 'M', 'ممي'), - (0xFDB2, 'M', 'قمي'), - (0xFDB3, 'M', 'نحي'), - (0xFDB4, 'M', 'قمح'), - (0xFDB5, 'M', 'لحم'), - (0xFDB6, 'M', 'عمي'), - (0xFDB7, 'M', 'كمي'), - (0xFDB8, 'M', 'نجح'), - (0xFDB9, 'M', 'مخي'), - (0xFDBA, 'M', 'لجم'), - (0xFDBB, 'M', 'كمم'), - (0xFDBC, 'M', 'لجم'), - (0xFDBD, 'M', 'نجح'), - (0xFDBE, 'M', 'جحي'), - (0xFDBF, 'M', 'حجي'), - (0xFDC0, 'M', 'مجي'), - (0xFDC1, 'M', 'فمي'), - (0xFDC2, 'M', 'بحي'), - (0xFDC3, 'M', 'كمم'), - (0xFDC4, 'M', 'عجم'), - (0xFDC5, 'M', 'صمم'), - (0xFDC6, 'M', 'سخي'), - (0xFDC7, 'M', 'نجي'), - (0xFDC8, 'X'), - (0xFDCF, 'V'), - (0xFDD0, 'X'), - (0xFDF0, 'M', 'صلے'), - (0xFDF1, 'M', 'قلے'), - (0xFDF2, 'M', 'الله'), - (0xFDF3, 'M', 'اكبر'), - (0xFDF4, 'M', 'محمد'), - (0xFDF5, 'M', 'صلعم'), - (0xFDF6, 'M', 'رسول'), - (0xFDF7, 'M', 'عليه'), - (0xFDF8, 'M', 'وسلم'), - (0xFDF9, 'M', 'صلى'), - (0xFDFA, '3', 'صلى الله عليه وسلم'), - (0xFDFB, '3', 'جل جلاله'), - (0xFDFC, 'M', 'ریال'), - (0xFDFD, 'V'), - (0xFE00, 'I'), - (0xFE10, '3', ','), - (0xFE11, 'M', '、'), - (0xFE12, 'X'), - (0xFE13, '3', ':'), - (0xFE14, '3', ';'), - (0xFE15, '3', '!'), - (0xFE16, '3', '?'), - (0xFE17, 'M', '〖'), - (0xFE18, 'M', '〗'), - (0xFE19, 'X'), - (0xFE20, 'V'), - (0xFE30, 'X'), - (0xFE31, 'M', '—'), - (0xFE32, 'M', '–'), - (0xFE33, '3', '_'), - (0xFE35, '3', '('), - (0xFE36, '3', ')'), - (0xFE37, '3', '{'), - (0xFE38, '3', '}'), - (0xFE39, 'M', '〔'), - (0xFE3A, 'M', '〕'), - (0xFE3B, 'M', '【'), - (0xFE3C, 'M', '】'), - (0xFE3D, 'M', '《'), - (0xFE3E, 'M', '》'), - (0xFE3F, 'M', '〈'), - (0xFE40, 'M', '〉'), - (0xFE41, 'M', '「'), - (0xFE42, 'M', '」'), - (0xFE43, 'M', '『'), - (0xFE44, 'M', '』'), - (0xFE45, 'V'), - (0xFE47, '3', '['), - (0xFE48, '3', ']'), - (0xFE49, '3', ' ̅'), - (0xFE4D, '3', '_'), - (0xFE50, '3', ','), - (0xFE51, 'M', '、'), - (0xFE52, 'X'), - (0xFE54, '3', ';'), - (0xFE55, '3', ':'), - (0xFE56, '3', '?'), - (0xFE57, '3', '!'), - (0xFE58, 'M', '—'), - (0xFE59, '3', '('), - (0xFE5A, '3', ')'), - (0xFE5B, '3', '{'), - (0xFE5C, '3', '}'), - (0xFE5D, 'M', '〔'), - ] - -def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFE5E, 'M', '〕'), - (0xFE5F, '3', '#'), - (0xFE60, '3', '&'), - (0xFE61, '3', '*'), - (0xFE62, '3', '+'), - (0xFE63, 'M', '-'), - (0xFE64, '3', '<'), - (0xFE65, '3', '>'), - (0xFE66, '3', '='), - (0xFE67, 'X'), - (0xFE68, '3', '\\'), - (0xFE69, '3', '$'), - (0xFE6A, '3', '%'), - (0xFE6B, '3', '@'), - (0xFE6C, 'X'), - (0xFE70, '3', ' ً'), - (0xFE71, 'M', 'ـً'), - (0xFE72, '3', ' ٌ'), - (0xFE73, 'V'), - (0xFE74, '3', ' ٍ'), - (0xFE75, 'X'), - (0xFE76, '3', ' َ'), - (0xFE77, 'M', 'ـَ'), - (0xFE78, '3', ' ُ'), - (0xFE79, 'M', 'ـُ'), - (0xFE7A, '3', ' ِ'), - (0xFE7B, 'M', 'ـِ'), - (0xFE7C, '3', ' ّ'), - (0xFE7D, 'M', 'ـّ'), - (0xFE7E, '3', ' ْ'), - (0xFE7F, 'M', 'ـْ'), - (0xFE80, 'M', 'ء'), - (0xFE81, 'M', 'آ'), - (0xFE83, 'M', 'أ'), - (0xFE85, 'M', 'ؤ'), - (0xFE87, 'M', 'إ'), - (0xFE89, 'M', 'ئ'), - (0xFE8D, 'M', 'ا'), - (0xFE8F, 'M', 'ب'), - (0xFE93, 'M', 'ة'), - (0xFE95, 'M', 'ت'), - (0xFE99, 'M', 'ث'), - (0xFE9D, 'M', 'ج'), - (0xFEA1, 'M', 'ح'), - (0xFEA5, 'M', 'خ'), - (0xFEA9, 'M', 'د'), - (0xFEAB, 'M', 'ذ'), - (0xFEAD, 'M', 'ر'), - (0xFEAF, 'M', 'ز'), - (0xFEB1, 'M', 'س'), - (0xFEB5, 'M', 'ش'), - (0xFEB9, 'M', 'ص'), - (0xFEBD, 'M', 'ض'), - (0xFEC1, 'M', 'ط'), - (0xFEC5, 'M', 'ظ'), - (0xFEC9, 'M', 'ع'), - (0xFECD, 'M', 'غ'), - (0xFED1, 'M', 'ف'), - (0xFED5, 'M', 'ق'), - (0xFED9, 'M', 'ك'), - (0xFEDD, 'M', 'ل'), - (0xFEE1, 'M', 'م'), - (0xFEE5, 'M', 'ن'), - (0xFEE9, 'M', 'ه'), - (0xFEED, 'M', 'و'), - (0xFEEF, 'M', 'ى'), - (0xFEF1, 'M', 'ي'), - (0xFEF5, 'M', 'لآ'), - (0xFEF7, 'M', 'لأ'), - (0xFEF9, 'M', 'لإ'), - (0xFEFB, 'M', 'لا'), - (0xFEFD, 'X'), - (0xFEFF, 'I'), - (0xFF00, 'X'), - (0xFF01, '3', '!'), - (0xFF02, '3', '"'), - (0xFF03, '3', '#'), - (0xFF04, '3', '$'), - (0xFF05, '3', '%'), - (0xFF06, '3', '&'), - (0xFF07, '3', '\''), - (0xFF08, '3', '('), - (0xFF09, '3', ')'), - (0xFF0A, '3', '*'), - (0xFF0B, '3', '+'), - (0xFF0C, '3', ','), - (0xFF0D, 'M', '-'), - (0xFF0E, 'M', '.'), - (0xFF0F, '3', '/'), - (0xFF10, 'M', '0'), - (0xFF11, 'M', '1'), - (0xFF12, 'M', '2'), - (0xFF13, 'M', '3'), - (0xFF14, 'M', '4'), - (0xFF15, 'M', '5'), - (0xFF16, 'M', '6'), - (0xFF17, 'M', '7'), - (0xFF18, 'M', '8'), - (0xFF19, 'M', '9'), - (0xFF1A, '3', ':'), - ] - -def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF1B, '3', ';'), - (0xFF1C, '3', '<'), - (0xFF1D, '3', '='), - (0xFF1E, '3', '>'), - (0xFF1F, '3', '?'), - (0xFF20, '3', '@'), - (0xFF21, 'M', 'a'), - (0xFF22, 'M', 'b'), - (0xFF23, 'M', 'c'), - (0xFF24, 'M', 'd'), - (0xFF25, 'M', 'e'), - (0xFF26, 'M', 'f'), - (0xFF27, 'M', 'g'), - (0xFF28, 'M', 'h'), - (0xFF29, 'M', 'i'), - (0xFF2A, 'M', 'j'), - (0xFF2B, 'M', 'k'), - (0xFF2C, 'M', 'l'), - (0xFF2D, 'M', 'm'), - (0xFF2E, 'M', 'n'), - (0xFF2F, 'M', 'o'), - (0xFF30, 'M', 'p'), - (0xFF31, 'M', 'q'), - (0xFF32, 'M', 'r'), - (0xFF33, 'M', 's'), - (0xFF34, 'M', 't'), - (0xFF35, 'M', 'u'), - (0xFF36, 'M', 'v'), - (0xFF37, 'M', 'w'), - (0xFF38, 'M', 'x'), - (0xFF39, 'M', 'y'), - (0xFF3A, 'M', 'z'), - (0xFF3B, '3', '['), - (0xFF3C, '3', '\\'), - (0xFF3D, '3', ']'), - (0xFF3E, '3', '^'), - (0xFF3F, '3', '_'), - (0xFF40, '3', '`'), - (0xFF41, 'M', 'a'), - (0xFF42, 'M', 'b'), - (0xFF43, 'M', 'c'), - (0xFF44, 'M', 'd'), - (0xFF45, 'M', 'e'), - (0xFF46, 'M', 'f'), - (0xFF47, 'M', 'g'), - (0xFF48, 'M', 'h'), - (0xFF49, 'M', 'i'), - (0xFF4A, 'M', 'j'), - (0xFF4B, 'M', 'k'), - (0xFF4C, 'M', 'l'), - (0xFF4D, 'M', 'm'), - (0xFF4E, 'M', 'n'), - (0xFF4F, 'M', 'o'), - (0xFF50, 'M', 'p'), - (0xFF51, 'M', 'q'), - (0xFF52, 'M', 'r'), - (0xFF53, 'M', 's'), - (0xFF54, 'M', 't'), - (0xFF55, 'M', 'u'), - (0xFF56, 'M', 'v'), - (0xFF57, 'M', 'w'), - (0xFF58, 'M', 'x'), - (0xFF59, 'M', 'y'), - (0xFF5A, 'M', 'z'), - (0xFF5B, '3', '{'), - (0xFF5C, '3', '|'), - (0xFF5D, '3', '}'), - (0xFF5E, '3', '~'), - (0xFF5F, 'M', '⦅'), - (0xFF60, 'M', '⦆'), - (0xFF61, 'M', '.'), - (0xFF62, 'M', '「'), - (0xFF63, 'M', '」'), - (0xFF64, 'M', '、'), - (0xFF65, 'M', '・'), - (0xFF66, 'M', 'ヲ'), - (0xFF67, 'M', 'ァ'), - (0xFF68, 'M', 'ィ'), - (0xFF69, 'M', 'ゥ'), - (0xFF6A, 'M', 'ェ'), - (0xFF6B, 'M', 'ォ'), - (0xFF6C, 'M', 'ャ'), - (0xFF6D, 'M', 'ュ'), - (0xFF6E, 'M', 'ョ'), - (0xFF6F, 'M', 'ッ'), - (0xFF70, 'M', 'ー'), - (0xFF71, 'M', 'ア'), - (0xFF72, 'M', 'イ'), - (0xFF73, 'M', 'ウ'), - (0xFF74, 'M', 'エ'), - (0xFF75, 'M', 'オ'), - (0xFF76, 'M', 'カ'), - (0xFF77, 'M', 'キ'), - (0xFF78, 'M', 'ク'), - (0xFF79, 'M', 'ケ'), - (0xFF7A, 'M', 'コ'), - (0xFF7B, 'M', 'サ'), - (0xFF7C, 'M', 'シ'), - (0xFF7D, 'M', 'ス'), - (0xFF7E, 'M', 'セ'), - ] - -def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF7F, 'M', 'ソ'), - (0xFF80, 'M', 'タ'), - (0xFF81, 'M', 'チ'), - (0xFF82, 'M', 'ツ'), - (0xFF83, 'M', 'テ'), - (0xFF84, 'M', 'ト'), - (0xFF85, 'M', 'ナ'), - (0xFF86, 'M', 'ニ'), - (0xFF87, 'M', 'ヌ'), - (0xFF88, 'M', 'ネ'), - (0xFF89, 'M', 'ノ'), - (0xFF8A, 'M', 'ハ'), - (0xFF8B, 'M', 'ヒ'), - (0xFF8C, 'M', 'フ'), - (0xFF8D, 'M', 'ヘ'), - (0xFF8E, 'M', 'ホ'), - (0xFF8F, 'M', 'マ'), - (0xFF90, 'M', 'ミ'), - (0xFF91, 'M', 'ム'), - (0xFF92, 'M', 'メ'), - (0xFF93, 'M', 'モ'), - (0xFF94, 'M', 'ヤ'), - (0xFF95, 'M', 'ユ'), - (0xFF96, 'M', 'ヨ'), - (0xFF97, 'M', 'ラ'), - (0xFF98, 'M', 'リ'), - (0xFF99, 'M', 'ル'), - (0xFF9A, 'M', 'レ'), - (0xFF9B, 'M', 'ロ'), - (0xFF9C, 'M', 'ワ'), - (0xFF9D, 'M', 'ン'), - (0xFF9E, 'M', '゙'), - (0xFF9F, 'M', '゚'), - (0xFFA0, 'X'), - (0xFFA1, 'M', 'ᄀ'), - (0xFFA2, 'M', 'ᄁ'), - (0xFFA3, 'M', 'ᆪ'), - (0xFFA4, 'M', 'ᄂ'), - (0xFFA5, 'M', 'ᆬ'), - (0xFFA6, 'M', 'ᆭ'), - (0xFFA7, 'M', 'ᄃ'), - (0xFFA8, 'M', 'ᄄ'), - (0xFFA9, 'M', 'ᄅ'), - (0xFFAA, 'M', 'ᆰ'), - (0xFFAB, 'M', 'ᆱ'), - (0xFFAC, 'M', 'ᆲ'), - (0xFFAD, 'M', 'ᆳ'), - (0xFFAE, 'M', 'ᆴ'), - (0xFFAF, 'M', 'ᆵ'), - (0xFFB0, 'M', 'ᄚ'), - (0xFFB1, 'M', 'ᄆ'), - (0xFFB2, 'M', 'ᄇ'), - (0xFFB3, 'M', 'ᄈ'), - (0xFFB4, 'M', 'ᄡ'), - (0xFFB5, 'M', 'ᄉ'), - (0xFFB6, 'M', 'ᄊ'), - (0xFFB7, 'M', 'ᄋ'), - (0xFFB8, 'M', 'ᄌ'), - (0xFFB9, 'M', 'ᄍ'), - (0xFFBA, 'M', 'ᄎ'), - (0xFFBB, 'M', 'ᄏ'), - (0xFFBC, 'M', 'ᄐ'), - (0xFFBD, 'M', 'ᄑ'), - (0xFFBE, 'M', 'ᄒ'), - (0xFFBF, 'X'), - (0xFFC2, 'M', 'ᅡ'), - (0xFFC3, 'M', 'ᅢ'), - (0xFFC4, 'M', 'ᅣ'), - (0xFFC5, 'M', 'ᅤ'), - (0xFFC6, 'M', 'ᅥ'), - (0xFFC7, 'M', 'ᅦ'), - (0xFFC8, 'X'), - (0xFFCA, 'M', 'ᅧ'), - (0xFFCB, 'M', 'ᅨ'), - (0xFFCC, 'M', 'ᅩ'), - (0xFFCD, 'M', 'ᅪ'), - (0xFFCE, 'M', 'ᅫ'), - (0xFFCF, 'M', 'ᅬ'), - (0xFFD0, 'X'), - (0xFFD2, 'M', 'ᅭ'), - (0xFFD3, 'M', 'ᅮ'), - (0xFFD4, 'M', 'ᅯ'), - (0xFFD5, 'M', 'ᅰ'), - (0xFFD6, 'M', 'ᅱ'), - (0xFFD7, 'M', 'ᅲ'), - (0xFFD8, 'X'), - (0xFFDA, 'M', 'ᅳ'), - (0xFFDB, 'M', 'ᅴ'), - (0xFFDC, 'M', 'ᅵ'), - (0xFFDD, 'X'), - (0xFFE0, 'M', '¢'), - (0xFFE1, 'M', '£'), - (0xFFE2, 'M', '¬'), - (0xFFE3, '3', ' ̄'), - (0xFFE4, 'M', '¦'), - (0xFFE5, 'M', '¥'), - (0xFFE6, 'M', '₩'), - (0xFFE7, 'X'), - (0xFFE8, 'M', '│'), - (0xFFE9, 'M', '←'), - ] - -def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFFEA, 'M', '↑'), - (0xFFEB, 'M', '→'), - (0xFFEC, 'M', '↓'), - (0xFFED, 'M', '■'), - (0xFFEE, 'M', '○'), - (0xFFEF, 'X'), - (0x10000, 'V'), - (0x1000C, 'X'), - (0x1000D, 'V'), - (0x10027, 'X'), - (0x10028, 'V'), - (0x1003B, 'X'), - (0x1003C, 'V'), - (0x1003E, 'X'), - (0x1003F, 'V'), - (0x1004E, 'X'), - (0x10050, 'V'), - (0x1005E, 'X'), - (0x10080, 'V'), - (0x100FB, 'X'), - (0x10100, 'V'), - (0x10103, 'X'), - (0x10107, 'V'), - (0x10134, 'X'), - (0x10137, 'V'), - (0x1018F, 'X'), - (0x10190, 'V'), - (0x1019D, 'X'), - (0x101A0, 'V'), - (0x101A1, 'X'), - (0x101D0, 'V'), - (0x101FE, 'X'), - (0x10280, 'V'), - (0x1029D, 'X'), - (0x102A0, 'V'), - (0x102D1, 'X'), - (0x102E0, 'V'), - (0x102FC, 'X'), - (0x10300, 'V'), - (0x10324, 'X'), - (0x1032D, 'V'), - (0x1034B, 'X'), - (0x10350, 'V'), - (0x1037B, 'X'), - (0x10380, 'V'), - (0x1039E, 'X'), - (0x1039F, 'V'), - (0x103C4, 'X'), - (0x103C8, 'V'), - (0x103D6, 'X'), - (0x10400, 'M', '𐐨'), - (0x10401, 'M', '𐐩'), - (0x10402, 'M', '𐐪'), - (0x10403, 'M', '𐐫'), - (0x10404, 'M', '𐐬'), - (0x10405, 'M', '𐐭'), - (0x10406, 'M', '𐐮'), - (0x10407, 'M', '𐐯'), - (0x10408, 'M', '𐐰'), - (0x10409, 'M', '𐐱'), - (0x1040A, 'M', '𐐲'), - (0x1040B, 'M', '𐐳'), - (0x1040C, 'M', '𐐴'), - (0x1040D, 'M', '𐐵'), - (0x1040E, 'M', '𐐶'), - (0x1040F, 'M', '𐐷'), - (0x10410, 'M', '𐐸'), - (0x10411, 'M', '𐐹'), - (0x10412, 'M', '𐐺'), - (0x10413, 'M', '𐐻'), - (0x10414, 'M', '𐐼'), - (0x10415, 'M', '𐐽'), - (0x10416, 'M', '𐐾'), - (0x10417, 'M', '𐐿'), - (0x10418, 'M', '𐑀'), - (0x10419, 'M', '𐑁'), - (0x1041A, 'M', '𐑂'), - (0x1041B, 'M', '𐑃'), - (0x1041C, 'M', '𐑄'), - (0x1041D, 'M', '𐑅'), - (0x1041E, 'M', '𐑆'), - (0x1041F, 'M', '𐑇'), - (0x10420, 'M', '𐑈'), - (0x10421, 'M', '𐑉'), - (0x10422, 'M', '𐑊'), - (0x10423, 'M', '𐑋'), - (0x10424, 'M', '𐑌'), - (0x10425, 'M', '𐑍'), - (0x10426, 'M', '𐑎'), - (0x10427, 'M', '𐑏'), - (0x10428, 'V'), - (0x1049E, 'X'), - (0x104A0, 'V'), - (0x104AA, 'X'), - (0x104B0, 'M', '𐓘'), - (0x104B1, 'M', '𐓙'), - (0x104B2, 'M', '𐓚'), - (0x104B3, 'M', '𐓛'), - (0x104B4, 'M', '𐓜'), - (0x104B5, 'M', '𐓝'), - ] - -def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x104B6, 'M', '𐓞'), - (0x104B7, 'M', '𐓟'), - (0x104B8, 'M', '𐓠'), - (0x104B9, 'M', '𐓡'), - (0x104BA, 'M', '𐓢'), - (0x104BB, 'M', '𐓣'), - (0x104BC, 'M', '𐓤'), - (0x104BD, 'M', '𐓥'), - (0x104BE, 'M', '𐓦'), - (0x104BF, 'M', '𐓧'), - (0x104C0, 'M', '𐓨'), - (0x104C1, 'M', '𐓩'), - (0x104C2, 'M', '𐓪'), - (0x104C3, 'M', '𐓫'), - (0x104C4, 'M', '𐓬'), - (0x104C5, 'M', '𐓭'), - (0x104C6, 'M', '𐓮'), - (0x104C7, 'M', '𐓯'), - (0x104C8, 'M', '𐓰'), - (0x104C9, 'M', '𐓱'), - (0x104CA, 'M', '𐓲'), - (0x104CB, 'M', '𐓳'), - (0x104CC, 'M', '𐓴'), - (0x104CD, 'M', '𐓵'), - (0x104CE, 'M', '𐓶'), - (0x104CF, 'M', '𐓷'), - (0x104D0, 'M', '𐓸'), - (0x104D1, 'M', '𐓹'), - (0x104D2, 'M', '𐓺'), - (0x104D3, 'M', '𐓻'), - (0x104D4, 'X'), - (0x104D8, 'V'), - (0x104FC, 'X'), - (0x10500, 'V'), - (0x10528, 'X'), - (0x10530, 'V'), - (0x10564, 'X'), - (0x1056F, 'V'), - (0x10570, 'M', '𐖗'), - (0x10571, 'M', '𐖘'), - (0x10572, 'M', '𐖙'), - (0x10573, 'M', '𐖚'), - (0x10574, 'M', '𐖛'), - (0x10575, 'M', '𐖜'), - (0x10576, 'M', '𐖝'), - (0x10577, 'M', '𐖞'), - (0x10578, 'M', '𐖟'), - (0x10579, 'M', '𐖠'), - (0x1057A, 'M', '𐖡'), - (0x1057B, 'X'), - (0x1057C, 'M', '𐖣'), - (0x1057D, 'M', '𐖤'), - (0x1057E, 'M', '𐖥'), - (0x1057F, 'M', '𐖦'), - (0x10580, 'M', '𐖧'), - (0x10581, 'M', '𐖨'), - (0x10582, 'M', '𐖩'), - (0x10583, 'M', '𐖪'), - (0x10584, 'M', '𐖫'), - (0x10585, 'M', '𐖬'), - (0x10586, 'M', '𐖭'), - (0x10587, 'M', '𐖮'), - (0x10588, 'M', '𐖯'), - (0x10589, 'M', '𐖰'), - (0x1058A, 'M', '𐖱'), - (0x1058B, 'X'), - (0x1058C, 'M', '𐖳'), - (0x1058D, 'M', '𐖴'), - (0x1058E, 'M', '𐖵'), - (0x1058F, 'M', '𐖶'), - (0x10590, 'M', '𐖷'), - (0x10591, 'M', '𐖸'), - (0x10592, 'M', '𐖹'), - (0x10593, 'X'), - (0x10594, 'M', '𐖻'), - (0x10595, 'M', '𐖼'), - (0x10596, 'X'), - (0x10597, 'V'), - (0x105A2, 'X'), - (0x105A3, 'V'), - (0x105B2, 'X'), - (0x105B3, 'V'), - (0x105BA, 'X'), - (0x105BB, 'V'), - (0x105BD, 'X'), - (0x10600, 'V'), - (0x10737, 'X'), - (0x10740, 'V'), - (0x10756, 'X'), - (0x10760, 'V'), - (0x10768, 'X'), - (0x10780, 'V'), - (0x10781, 'M', 'ː'), - (0x10782, 'M', 'ˑ'), - (0x10783, 'M', 'æ'), - (0x10784, 'M', 'ʙ'), - (0x10785, 'M', 'ɓ'), - (0x10786, 'X'), - (0x10787, 'M', 'ʣ'), - (0x10788, 'M', 'ꭦ'), - ] - -def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x10789, 'M', 'ʥ'), - (0x1078A, 'M', 'ʤ'), - (0x1078B, 'M', 'ɖ'), - (0x1078C, 'M', 'ɗ'), - (0x1078D, 'M', 'ᶑ'), - (0x1078E, 'M', 'ɘ'), - (0x1078F, 'M', 'ɞ'), - (0x10790, 'M', 'ʩ'), - (0x10791, 'M', 'ɤ'), - (0x10792, 'M', 'ɢ'), - (0x10793, 'M', 'ɠ'), - (0x10794, 'M', 'ʛ'), - (0x10795, 'M', 'ħ'), - (0x10796, 'M', 'ʜ'), - (0x10797, 'M', 'ɧ'), - (0x10798, 'M', 'ʄ'), - (0x10799, 'M', 'ʪ'), - (0x1079A, 'M', 'ʫ'), - (0x1079B, 'M', 'ɬ'), - (0x1079C, 'M', '𝼄'), - (0x1079D, 'M', 'ꞎ'), - (0x1079E, 'M', 'ɮ'), - (0x1079F, 'M', '𝼅'), - (0x107A0, 'M', 'ʎ'), - (0x107A1, 'M', '𝼆'), - (0x107A2, 'M', 'ø'), - (0x107A3, 'M', 'ɶ'), - (0x107A4, 'M', 'ɷ'), - (0x107A5, 'M', 'q'), - (0x107A6, 'M', 'ɺ'), - (0x107A7, 'M', '𝼈'), - (0x107A8, 'M', 'ɽ'), - (0x107A9, 'M', 'ɾ'), - (0x107AA, 'M', 'ʀ'), - (0x107AB, 'M', 'ʨ'), - (0x107AC, 'M', 'ʦ'), - (0x107AD, 'M', 'ꭧ'), - (0x107AE, 'M', 'ʧ'), - (0x107AF, 'M', 'ʈ'), - (0x107B0, 'M', 'ⱱ'), - (0x107B1, 'X'), - (0x107B2, 'M', 'ʏ'), - (0x107B3, 'M', 'ʡ'), - (0x107B4, 'M', 'ʢ'), - (0x107B5, 'M', 'ʘ'), - (0x107B6, 'M', 'ǀ'), - (0x107B7, 'M', 'ǁ'), - (0x107B8, 'M', 'ǂ'), - (0x107B9, 'M', '𝼊'), - (0x107BA, 'M', '𝼞'), - (0x107BB, 'X'), - (0x10800, 'V'), - (0x10806, 'X'), - (0x10808, 'V'), - (0x10809, 'X'), - (0x1080A, 'V'), - (0x10836, 'X'), - (0x10837, 'V'), - (0x10839, 'X'), - (0x1083C, 'V'), - (0x1083D, 'X'), - (0x1083F, 'V'), - (0x10856, 'X'), - (0x10857, 'V'), - (0x1089F, 'X'), - (0x108A7, 'V'), - (0x108B0, 'X'), - (0x108E0, 'V'), - (0x108F3, 'X'), - (0x108F4, 'V'), - (0x108F6, 'X'), - (0x108FB, 'V'), - (0x1091C, 'X'), - (0x1091F, 'V'), - (0x1093A, 'X'), - (0x1093F, 'V'), - (0x10940, 'X'), - (0x10980, 'V'), - (0x109B8, 'X'), - (0x109BC, 'V'), - (0x109D0, 'X'), - (0x109D2, 'V'), - (0x10A04, 'X'), - (0x10A05, 'V'), - (0x10A07, 'X'), - (0x10A0C, 'V'), - (0x10A14, 'X'), - (0x10A15, 'V'), - (0x10A18, 'X'), - (0x10A19, 'V'), - (0x10A36, 'X'), - (0x10A38, 'V'), - (0x10A3B, 'X'), - (0x10A3F, 'V'), - (0x10A49, 'X'), - (0x10A50, 'V'), - (0x10A59, 'X'), - (0x10A60, 'V'), - (0x10AA0, 'X'), - (0x10AC0, 'V'), - ] - -def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x10AE7, 'X'), - (0x10AEB, 'V'), - (0x10AF7, 'X'), - (0x10B00, 'V'), - (0x10B36, 'X'), - (0x10B39, 'V'), - (0x10B56, 'X'), - (0x10B58, 'V'), - (0x10B73, 'X'), - (0x10B78, 'V'), - (0x10B92, 'X'), - (0x10B99, 'V'), - (0x10B9D, 'X'), - (0x10BA9, 'V'), - (0x10BB0, 'X'), - (0x10C00, 'V'), - (0x10C49, 'X'), - (0x10C80, 'M', '𐳀'), - (0x10C81, 'M', '𐳁'), - (0x10C82, 'M', '𐳂'), - (0x10C83, 'M', '𐳃'), - (0x10C84, 'M', '𐳄'), - (0x10C85, 'M', '𐳅'), - (0x10C86, 'M', '𐳆'), - (0x10C87, 'M', '𐳇'), - (0x10C88, 'M', '𐳈'), - (0x10C89, 'M', '𐳉'), - (0x10C8A, 'M', '𐳊'), - (0x10C8B, 'M', '𐳋'), - (0x10C8C, 'M', '𐳌'), - (0x10C8D, 'M', '𐳍'), - (0x10C8E, 'M', '𐳎'), - (0x10C8F, 'M', '𐳏'), - (0x10C90, 'M', '𐳐'), - (0x10C91, 'M', '𐳑'), - (0x10C92, 'M', '𐳒'), - (0x10C93, 'M', '𐳓'), - (0x10C94, 'M', '𐳔'), - (0x10C95, 'M', '𐳕'), - (0x10C96, 'M', '𐳖'), - (0x10C97, 'M', '𐳗'), - (0x10C98, 'M', '𐳘'), - (0x10C99, 'M', '𐳙'), - (0x10C9A, 'M', '𐳚'), - (0x10C9B, 'M', '𐳛'), - (0x10C9C, 'M', '𐳜'), - (0x10C9D, 'M', '𐳝'), - (0x10C9E, 'M', '𐳞'), - (0x10C9F, 'M', '𐳟'), - (0x10CA0, 'M', '𐳠'), - (0x10CA1, 'M', '𐳡'), - (0x10CA2, 'M', '𐳢'), - (0x10CA3, 'M', '𐳣'), - (0x10CA4, 'M', '𐳤'), - (0x10CA5, 'M', '𐳥'), - (0x10CA6, 'M', '𐳦'), - (0x10CA7, 'M', '𐳧'), - (0x10CA8, 'M', '𐳨'), - (0x10CA9, 'M', '𐳩'), - (0x10CAA, 'M', '𐳪'), - (0x10CAB, 'M', '𐳫'), - (0x10CAC, 'M', '𐳬'), - (0x10CAD, 'M', '𐳭'), - (0x10CAE, 'M', '𐳮'), - (0x10CAF, 'M', '𐳯'), - (0x10CB0, 'M', '𐳰'), - (0x10CB1, 'M', '𐳱'), - (0x10CB2, 'M', '𐳲'), - (0x10CB3, 'X'), - (0x10CC0, 'V'), - (0x10CF3, 'X'), - (0x10CFA, 'V'), - (0x10D28, 'X'), - (0x10D30, 'V'), - (0x10D3A, 'X'), - (0x10E60, 'V'), - (0x10E7F, 'X'), - (0x10E80, 'V'), - (0x10EAA, 'X'), - (0x10EAB, 'V'), - (0x10EAE, 'X'), - (0x10EB0, 'V'), - (0x10EB2, 'X'), - (0x10EFD, 'V'), - (0x10F28, 'X'), - (0x10F30, 'V'), - (0x10F5A, 'X'), - (0x10F70, 'V'), - (0x10F8A, 'X'), - (0x10FB0, 'V'), - (0x10FCC, 'X'), - (0x10FE0, 'V'), - (0x10FF7, 'X'), - (0x11000, 'V'), - (0x1104E, 'X'), - (0x11052, 'V'), - (0x11076, 'X'), - (0x1107F, 'V'), - (0x110BD, 'X'), - (0x110BE, 'V'), - ] - -def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x110C3, 'X'), - (0x110D0, 'V'), - (0x110E9, 'X'), - (0x110F0, 'V'), - (0x110FA, 'X'), - (0x11100, 'V'), - (0x11135, 'X'), - (0x11136, 'V'), - (0x11148, 'X'), - (0x11150, 'V'), - (0x11177, 'X'), - (0x11180, 'V'), - (0x111E0, 'X'), - (0x111E1, 'V'), - (0x111F5, 'X'), - (0x11200, 'V'), - (0x11212, 'X'), - (0x11213, 'V'), - (0x11242, 'X'), - (0x11280, 'V'), - (0x11287, 'X'), - (0x11288, 'V'), - (0x11289, 'X'), - (0x1128A, 'V'), - (0x1128E, 'X'), - (0x1128F, 'V'), - (0x1129E, 'X'), - (0x1129F, 'V'), - (0x112AA, 'X'), - (0x112B0, 'V'), - (0x112EB, 'X'), - (0x112F0, 'V'), - (0x112FA, 'X'), - (0x11300, 'V'), - (0x11304, 'X'), - (0x11305, 'V'), - (0x1130D, 'X'), - (0x1130F, 'V'), - (0x11311, 'X'), - (0x11313, 'V'), - (0x11329, 'X'), - (0x1132A, 'V'), - (0x11331, 'X'), - (0x11332, 'V'), - (0x11334, 'X'), - (0x11335, 'V'), - (0x1133A, 'X'), - (0x1133B, 'V'), - (0x11345, 'X'), - (0x11347, 'V'), - (0x11349, 'X'), - (0x1134B, 'V'), - (0x1134E, 'X'), - (0x11350, 'V'), - (0x11351, 'X'), - (0x11357, 'V'), - (0x11358, 'X'), - (0x1135D, 'V'), - (0x11364, 'X'), - (0x11366, 'V'), - (0x1136D, 'X'), - (0x11370, 'V'), - (0x11375, 'X'), - (0x11400, 'V'), - (0x1145C, 'X'), - (0x1145D, 'V'), - (0x11462, 'X'), - (0x11480, 'V'), - (0x114C8, 'X'), - (0x114D0, 'V'), - (0x114DA, 'X'), - (0x11580, 'V'), - (0x115B6, 'X'), - (0x115B8, 'V'), - (0x115DE, 'X'), - (0x11600, 'V'), - (0x11645, 'X'), - (0x11650, 'V'), - (0x1165A, 'X'), - (0x11660, 'V'), - (0x1166D, 'X'), - (0x11680, 'V'), - (0x116BA, 'X'), - (0x116C0, 'V'), - (0x116CA, 'X'), - (0x11700, 'V'), - (0x1171B, 'X'), - (0x1171D, 'V'), - (0x1172C, 'X'), - (0x11730, 'V'), - (0x11747, 'X'), - (0x11800, 'V'), - (0x1183C, 'X'), - (0x118A0, 'M', '𑣀'), - (0x118A1, 'M', '𑣁'), - (0x118A2, 'M', '𑣂'), - (0x118A3, 'M', '𑣃'), - (0x118A4, 'M', '𑣄'), - (0x118A5, 'M', '𑣅'), - (0x118A6, 'M', '𑣆'), - ] - -def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x118A7, 'M', '𑣇'), - (0x118A8, 'M', '𑣈'), - (0x118A9, 'M', '𑣉'), - (0x118AA, 'M', '𑣊'), - (0x118AB, 'M', '𑣋'), - (0x118AC, 'M', '𑣌'), - (0x118AD, 'M', '𑣍'), - (0x118AE, 'M', '𑣎'), - (0x118AF, 'M', '𑣏'), - (0x118B0, 'M', '𑣐'), - (0x118B1, 'M', '𑣑'), - (0x118B2, 'M', '𑣒'), - (0x118B3, 'M', '𑣓'), - (0x118B4, 'M', '𑣔'), - (0x118B5, 'M', '𑣕'), - (0x118B6, 'M', '𑣖'), - (0x118B7, 'M', '𑣗'), - (0x118B8, 'M', '𑣘'), - (0x118B9, 'M', '𑣙'), - (0x118BA, 'M', '𑣚'), - (0x118BB, 'M', '𑣛'), - (0x118BC, 'M', '𑣜'), - (0x118BD, 'M', '𑣝'), - (0x118BE, 'M', '𑣞'), - (0x118BF, 'M', '𑣟'), - (0x118C0, 'V'), - (0x118F3, 'X'), - (0x118FF, 'V'), - (0x11907, 'X'), - (0x11909, 'V'), - (0x1190A, 'X'), - (0x1190C, 'V'), - (0x11914, 'X'), - (0x11915, 'V'), - (0x11917, 'X'), - (0x11918, 'V'), - (0x11936, 'X'), - (0x11937, 'V'), - (0x11939, 'X'), - (0x1193B, 'V'), - (0x11947, 'X'), - (0x11950, 'V'), - (0x1195A, 'X'), - (0x119A0, 'V'), - (0x119A8, 'X'), - (0x119AA, 'V'), - (0x119D8, 'X'), - (0x119DA, 'V'), - (0x119E5, 'X'), - (0x11A00, 'V'), - (0x11A48, 'X'), - (0x11A50, 'V'), - (0x11AA3, 'X'), - (0x11AB0, 'V'), - (0x11AF9, 'X'), - (0x11B00, 'V'), - (0x11B0A, 'X'), - (0x11C00, 'V'), - (0x11C09, 'X'), - (0x11C0A, 'V'), - (0x11C37, 'X'), - (0x11C38, 'V'), - (0x11C46, 'X'), - (0x11C50, 'V'), - (0x11C6D, 'X'), - (0x11C70, 'V'), - (0x11C90, 'X'), - (0x11C92, 'V'), - (0x11CA8, 'X'), - (0x11CA9, 'V'), - (0x11CB7, 'X'), - (0x11D00, 'V'), - (0x11D07, 'X'), - (0x11D08, 'V'), - (0x11D0A, 'X'), - (0x11D0B, 'V'), - (0x11D37, 'X'), - (0x11D3A, 'V'), - (0x11D3B, 'X'), - (0x11D3C, 'V'), - (0x11D3E, 'X'), - (0x11D3F, 'V'), - (0x11D48, 'X'), - (0x11D50, 'V'), - (0x11D5A, 'X'), - (0x11D60, 'V'), - (0x11D66, 'X'), - (0x11D67, 'V'), - (0x11D69, 'X'), - (0x11D6A, 'V'), - (0x11D8F, 'X'), - (0x11D90, 'V'), - (0x11D92, 'X'), - (0x11D93, 'V'), - (0x11D99, 'X'), - (0x11DA0, 'V'), - (0x11DAA, 'X'), - (0x11EE0, 'V'), - (0x11EF9, 'X'), - (0x11F00, 'V'), - ] - -def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x11F11, 'X'), - (0x11F12, 'V'), - (0x11F3B, 'X'), - (0x11F3E, 'V'), - (0x11F5A, 'X'), - (0x11FB0, 'V'), - (0x11FB1, 'X'), - (0x11FC0, 'V'), - (0x11FF2, 'X'), - (0x11FFF, 'V'), - (0x1239A, 'X'), - (0x12400, 'V'), - (0x1246F, 'X'), - (0x12470, 'V'), - (0x12475, 'X'), - (0x12480, 'V'), - (0x12544, 'X'), - (0x12F90, 'V'), - (0x12FF3, 'X'), - (0x13000, 'V'), - (0x13430, 'X'), - (0x13440, 'V'), - (0x13456, 'X'), - (0x14400, 'V'), - (0x14647, 'X'), - (0x16800, 'V'), - (0x16A39, 'X'), - (0x16A40, 'V'), - (0x16A5F, 'X'), - (0x16A60, 'V'), - (0x16A6A, 'X'), - (0x16A6E, 'V'), - (0x16ABF, 'X'), - (0x16AC0, 'V'), - (0x16ACA, 'X'), - (0x16AD0, 'V'), - (0x16AEE, 'X'), - (0x16AF0, 'V'), - (0x16AF6, 'X'), - (0x16B00, 'V'), - (0x16B46, 'X'), - (0x16B50, 'V'), - (0x16B5A, 'X'), - (0x16B5B, 'V'), - (0x16B62, 'X'), - (0x16B63, 'V'), - (0x16B78, 'X'), - (0x16B7D, 'V'), - (0x16B90, 'X'), - (0x16E40, 'M', '𖹠'), - (0x16E41, 'M', '𖹡'), - (0x16E42, 'M', '𖹢'), - (0x16E43, 'M', '𖹣'), - (0x16E44, 'M', '𖹤'), - (0x16E45, 'M', '𖹥'), - (0x16E46, 'M', '𖹦'), - (0x16E47, 'M', '𖹧'), - (0x16E48, 'M', '𖹨'), - (0x16E49, 'M', '𖹩'), - (0x16E4A, 'M', '𖹪'), - (0x16E4B, 'M', '𖹫'), - (0x16E4C, 'M', '𖹬'), - (0x16E4D, 'M', '𖹭'), - (0x16E4E, 'M', '𖹮'), - (0x16E4F, 'M', '𖹯'), - (0x16E50, 'M', '𖹰'), - (0x16E51, 'M', '𖹱'), - (0x16E52, 'M', '𖹲'), - (0x16E53, 'M', '𖹳'), - (0x16E54, 'M', '𖹴'), - (0x16E55, 'M', '𖹵'), - (0x16E56, 'M', '𖹶'), - (0x16E57, 'M', '𖹷'), - (0x16E58, 'M', '𖹸'), - (0x16E59, 'M', '𖹹'), - (0x16E5A, 'M', '𖹺'), - (0x16E5B, 'M', '𖹻'), - (0x16E5C, 'M', '𖹼'), - (0x16E5D, 'M', '𖹽'), - (0x16E5E, 'M', '𖹾'), - (0x16E5F, 'M', '𖹿'), - (0x16E60, 'V'), - (0x16E9B, 'X'), - (0x16F00, 'V'), - (0x16F4B, 'X'), - (0x16F4F, 'V'), - (0x16F88, 'X'), - (0x16F8F, 'V'), - (0x16FA0, 'X'), - (0x16FE0, 'V'), - (0x16FE5, 'X'), - (0x16FF0, 'V'), - (0x16FF2, 'X'), - (0x17000, 'V'), - (0x187F8, 'X'), - (0x18800, 'V'), - (0x18CD6, 'X'), - (0x18D00, 'V'), - (0x18D09, 'X'), - (0x1AFF0, 'V'), - ] - -def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1AFF4, 'X'), - (0x1AFF5, 'V'), - (0x1AFFC, 'X'), - (0x1AFFD, 'V'), - (0x1AFFF, 'X'), - (0x1B000, 'V'), - (0x1B123, 'X'), - (0x1B132, 'V'), - (0x1B133, 'X'), - (0x1B150, 'V'), - (0x1B153, 'X'), - (0x1B155, 'V'), - (0x1B156, 'X'), - (0x1B164, 'V'), - (0x1B168, 'X'), - (0x1B170, 'V'), - (0x1B2FC, 'X'), - (0x1BC00, 'V'), - (0x1BC6B, 'X'), - (0x1BC70, 'V'), - (0x1BC7D, 'X'), - (0x1BC80, 'V'), - (0x1BC89, 'X'), - (0x1BC90, 'V'), - (0x1BC9A, 'X'), - (0x1BC9C, 'V'), - (0x1BCA0, 'I'), - (0x1BCA4, 'X'), - (0x1CF00, 'V'), - (0x1CF2E, 'X'), - (0x1CF30, 'V'), - (0x1CF47, 'X'), - (0x1CF50, 'V'), - (0x1CFC4, 'X'), - (0x1D000, 'V'), - (0x1D0F6, 'X'), - (0x1D100, 'V'), - (0x1D127, 'X'), - (0x1D129, 'V'), - (0x1D15E, 'M', '𝅗𝅥'), - (0x1D15F, 'M', '𝅘𝅥'), - (0x1D160, 'M', '𝅘𝅥𝅮'), - (0x1D161, 'M', '𝅘𝅥𝅯'), - (0x1D162, 'M', '𝅘𝅥𝅰'), - (0x1D163, 'M', '𝅘𝅥𝅱'), - (0x1D164, 'M', '𝅘𝅥𝅲'), - (0x1D165, 'V'), - (0x1D173, 'X'), - (0x1D17B, 'V'), - (0x1D1BB, 'M', '𝆹𝅥'), - (0x1D1BC, 'M', '𝆺𝅥'), - (0x1D1BD, 'M', '𝆹𝅥𝅮'), - (0x1D1BE, 'M', '𝆺𝅥𝅮'), - (0x1D1BF, 'M', '𝆹𝅥𝅯'), - (0x1D1C0, 'M', '𝆺𝅥𝅯'), - (0x1D1C1, 'V'), - (0x1D1EB, 'X'), - (0x1D200, 'V'), - (0x1D246, 'X'), - (0x1D2C0, 'V'), - (0x1D2D4, 'X'), - (0x1D2E0, 'V'), - (0x1D2F4, 'X'), - (0x1D300, 'V'), - (0x1D357, 'X'), - (0x1D360, 'V'), - (0x1D379, 'X'), - (0x1D400, 'M', 'a'), - (0x1D401, 'M', 'b'), - (0x1D402, 'M', 'c'), - (0x1D403, 'M', 'd'), - (0x1D404, 'M', 'e'), - (0x1D405, 'M', 'f'), - (0x1D406, 'M', 'g'), - (0x1D407, 'M', 'h'), - (0x1D408, 'M', 'i'), - (0x1D409, 'M', 'j'), - (0x1D40A, 'M', 'k'), - (0x1D40B, 'M', 'l'), - (0x1D40C, 'M', 'm'), - (0x1D40D, 'M', 'n'), - (0x1D40E, 'M', 'o'), - (0x1D40F, 'M', 'p'), - (0x1D410, 'M', 'q'), - (0x1D411, 'M', 'r'), - (0x1D412, 'M', 's'), - (0x1D413, 'M', 't'), - (0x1D414, 'M', 'u'), - (0x1D415, 'M', 'v'), - (0x1D416, 'M', 'w'), - (0x1D417, 'M', 'x'), - (0x1D418, 'M', 'y'), - (0x1D419, 'M', 'z'), - (0x1D41A, 'M', 'a'), - (0x1D41B, 'M', 'b'), - (0x1D41C, 'M', 'c'), - (0x1D41D, 'M', 'd'), - (0x1D41E, 'M', 'e'), - (0x1D41F, 'M', 'f'), - (0x1D420, 'M', 'g'), - ] - -def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D421, 'M', 'h'), - (0x1D422, 'M', 'i'), - (0x1D423, 'M', 'j'), - (0x1D424, 'M', 'k'), - (0x1D425, 'M', 'l'), - (0x1D426, 'M', 'm'), - (0x1D427, 'M', 'n'), - (0x1D428, 'M', 'o'), - (0x1D429, 'M', 'p'), - (0x1D42A, 'M', 'q'), - (0x1D42B, 'M', 'r'), - (0x1D42C, 'M', 's'), - (0x1D42D, 'M', 't'), - (0x1D42E, 'M', 'u'), - (0x1D42F, 'M', 'v'), - (0x1D430, 'M', 'w'), - (0x1D431, 'M', 'x'), - (0x1D432, 'M', 'y'), - (0x1D433, 'M', 'z'), - (0x1D434, 'M', 'a'), - (0x1D435, 'M', 'b'), - (0x1D436, 'M', 'c'), - (0x1D437, 'M', 'd'), - (0x1D438, 'M', 'e'), - (0x1D439, 'M', 'f'), - (0x1D43A, 'M', 'g'), - (0x1D43B, 'M', 'h'), - (0x1D43C, 'M', 'i'), - (0x1D43D, 'M', 'j'), - (0x1D43E, 'M', 'k'), - (0x1D43F, 'M', 'l'), - (0x1D440, 'M', 'm'), - (0x1D441, 'M', 'n'), - (0x1D442, 'M', 'o'), - (0x1D443, 'M', 'p'), - (0x1D444, 'M', 'q'), - (0x1D445, 'M', 'r'), - (0x1D446, 'M', 's'), - (0x1D447, 'M', 't'), - (0x1D448, 'M', 'u'), - (0x1D449, 'M', 'v'), - (0x1D44A, 'M', 'w'), - (0x1D44B, 'M', 'x'), - (0x1D44C, 'M', 'y'), - (0x1D44D, 'M', 'z'), - (0x1D44E, 'M', 'a'), - (0x1D44F, 'M', 'b'), - (0x1D450, 'M', 'c'), - (0x1D451, 'M', 'd'), - (0x1D452, 'M', 'e'), - (0x1D453, 'M', 'f'), - (0x1D454, 'M', 'g'), - (0x1D455, 'X'), - (0x1D456, 'M', 'i'), - (0x1D457, 'M', 'j'), - (0x1D458, 'M', 'k'), - (0x1D459, 'M', 'l'), - (0x1D45A, 'M', 'm'), - (0x1D45B, 'M', 'n'), - (0x1D45C, 'M', 'o'), - (0x1D45D, 'M', 'p'), - (0x1D45E, 'M', 'q'), - (0x1D45F, 'M', 'r'), - (0x1D460, 'M', 's'), - (0x1D461, 'M', 't'), - (0x1D462, 'M', 'u'), - (0x1D463, 'M', 'v'), - (0x1D464, 'M', 'w'), - (0x1D465, 'M', 'x'), - (0x1D466, 'M', 'y'), - (0x1D467, 'M', 'z'), - (0x1D468, 'M', 'a'), - (0x1D469, 'M', 'b'), - (0x1D46A, 'M', 'c'), - (0x1D46B, 'M', 'd'), - (0x1D46C, 'M', 'e'), - (0x1D46D, 'M', 'f'), - (0x1D46E, 'M', 'g'), - (0x1D46F, 'M', 'h'), - (0x1D470, 'M', 'i'), - (0x1D471, 'M', 'j'), - (0x1D472, 'M', 'k'), - (0x1D473, 'M', 'l'), - (0x1D474, 'M', 'm'), - (0x1D475, 'M', 'n'), - (0x1D476, 'M', 'o'), - (0x1D477, 'M', 'p'), - (0x1D478, 'M', 'q'), - (0x1D479, 'M', 'r'), - (0x1D47A, 'M', 's'), - (0x1D47B, 'M', 't'), - (0x1D47C, 'M', 'u'), - (0x1D47D, 'M', 'v'), - (0x1D47E, 'M', 'w'), - (0x1D47F, 'M', 'x'), - (0x1D480, 'M', 'y'), - (0x1D481, 'M', 'z'), - (0x1D482, 'M', 'a'), - (0x1D483, 'M', 'b'), - (0x1D484, 'M', 'c'), - ] - -def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D485, 'M', 'd'), - (0x1D486, 'M', 'e'), - (0x1D487, 'M', 'f'), - (0x1D488, 'M', 'g'), - (0x1D489, 'M', 'h'), - (0x1D48A, 'M', 'i'), - (0x1D48B, 'M', 'j'), - (0x1D48C, 'M', 'k'), - (0x1D48D, 'M', 'l'), - (0x1D48E, 'M', 'm'), - (0x1D48F, 'M', 'n'), - (0x1D490, 'M', 'o'), - (0x1D491, 'M', 'p'), - (0x1D492, 'M', 'q'), - (0x1D493, 'M', 'r'), - (0x1D494, 'M', 's'), - (0x1D495, 'M', 't'), - (0x1D496, 'M', 'u'), - (0x1D497, 'M', 'v'), - (0x1D498, 'M', 'w'), - (0x1D499, 'M', 'x'), - (0x1D49A, 'M', 'y'), - (0x1D49B, 'M', 'z'), - (0x1D49C, 'M', 'a'), - (0x1D49D, 'X'), - (0x1D49E, 'M', 'c'), - (0x1D49F, 'M', 'd'), - (0x1D4A0, 'X'), - (0x1D4A2, 'M', 'g'), - (0x1D4A3, 'X'), - (0x1D4A5, 'M', 'j'), - (0x1D4A6, 'M', 'k'), - (0x1D4A7, 'X'), - (0x1D4A9, 'M', 'n'), - (0x1D4AA, 'M', 'o'), - (0x1D4AB, 'M', 'p'), - (0x1D4AC, 'M', 'q'), - (0x1D4AD, 'X'), - (0x1D4AE, 'M', 's'), - (0x1D4AF, 'M', 't'), - (0x1D4B0, 'M', 'u'), - (0x1D4B1, 'M', 'v'), - (0x1D4B2, 'M', 'w'), - (0x1D4B3, 'M', 'x'), - (0x1D4B4, 'M', 'y'), - (0x1D4B5, 'M', 'z'), - (0x1D4B6, 'M', 'a'), - (0x1D4B7, 'M', 'b'), - (0x1D4B8, 'M', 'c'), - (0x1D4B9, 'M', 'd'), - (0x1D4BA, 'X'), - (0x1D4BB, 'M', 'f'), - (0x1D4BC, 'X'), - (0x1D4BD, 'M', 'h'), - (0x1D4BE, 'M', 'i'), - (0x1D4BF, 'M', 'j'), - (0x1D4C0, 'M', 'k'), - (0x1D4C1, 'M', 'l'), - (0x1D4C2, 'M', 'm'), - (0x1D4C3, 'M', 'n'), - (0x1D4C4, 'X'), - (0x1D4C5, 'M', 'p'), - (0x1D4C6, 'M', 'q'), - (0x1D4C7, 'M', 'r'), - (0x1D4C8, 'M', 's'), - (0x1D4C9, 'M', 't'), - (0x1D4CA, 'M', 'u'), - (0x1D4CB, 'M', 'v'), - (0x1D4CC, 'M', 'w'), - (0x1D4CD, 'M', 'x'), - (0x1D4CE, 'M', 'y'), - (0x1D4CF, 'M', 'z'), - (0x1D4D0, 'M', 'a'), - (0x1D4D1, 'M', 'b'), - (0x1D4D2, 'M', 'c'), - (0x1D4D3, 'M', 'd'), - (0x1D4D4, 'M', 'e'), - (0x1D4D5, 'M', 'f'), - (0x1D4D6, 'M', 'g'), - (0x1D4D7, 'M', 'h'), - (0x1D4D8, 'M', 'i'), - (0x1D4D9, 'M', 'j'), - (0x1D4DA, 'M', 'k'), - (0x1D4DB, 'M', 'l'), - (0x1D4DC, 'M', 'm'), - (0x1D4DD, 'M', 'n'), - (0x1D4DE, 'M', 'o'), - (0x1D4DF, 'M', 'p'), - (0x1D4E0, 'M', 'q'), - (0x1D4E1, 'M', 'r'), - (0x1D4E2, 'M', 's'), - (0x1D4E3, 'M', 't'), - (0x1D4E4, 'M', 'u'), - (0x1D4E5, 'M', 'v'), - (0x1D4E6, 'M', 'w'), - (0x1D4E7, 'M', 'x'), - (0x1D4E8, 'M', 'y'), - (0x1D4E9, 'M', 'z'), - (0x1D4EA, 'M', 'a'), - (0x1D4EB, 'M', 'b'), - ] - -def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D4EC, 'M', 'c'), - (0x1D4ED, 'M', 'd'), - (0x1D4EE, 'M', 'e'), - (0x1D4EF, 'M', 'f'), - (0x1D4F0, 'M', 'g'), - (0x1D4F1, 'M', 'h'), - (0x1D4F2, 'M', 'i'), - (0x1D4F3, 'M', 'j'), - (0x1D4F4, 'M', 'k'), - (0x1D4F5, 'M', 'l'), - (0x1D4F6, 'M', 'm'), - (0x1D4F7, 'M', 'n'), - (0x1D4F8, 'M', 'o'), - (0x1D4F9, 'M', 'p'), - (0x1D4FA, 'M', 'q'), - (0x1D4FB, 'M', 'r'), - (0x1D4FC, 'M', 's'), - (0x1D4FD, 'M', 't'), - (0x1D4FE, 'M', 'u'), - (0x1D4FF, 'M', 'v'), - (0x1D500, 'M', 'w'), - (0x1D501, 'M', 'x'), - (0x1D502, 'M', 'y'), - (0x1D503, 'M', 'z'), - (0x1D504, 'M', 'a'), - (0x1D505, 'M', 'b'), - (0x1D506, 'X'), - (0x1D507, 'M', 'd'), - (0x1D508, 'M', 'e'), - (0x1D509, 'M', 'f'), - (0x1D50A, 'M', 'g'), - (0x1D50B, 'X'), - (0x1D50D, 'M', 'j'), - (0x1D50E, 'M', 'k'), - (0x1D50F, 'M', 'l'), - (0x1D510, 'M', 'm'), - (0x1D511, 'M', 'n'), - (0x1D512, 'M', 'o'), - (0x1D513, 'M', 'p'), - (0x1D514, 'M', 'q'), - (0x1D515, 'X'), - (0x1D516, 'M', 's'), - (0x1D517, 'M', 't'), - (0x1D518, 'M', 'u'), - (0x1D519, 'M', 'v'), - (0x1D51A, 'M', 'w'), - (0x1D51B, 'M', 'x'), - (0x1D51C, 'M', 'y'), - (0x1D51D, 'X'), - (0x1D51E, 'M', 'a'), - (0x1D51F, 'M', 'b'), - (0x1D520, 'M', 'c'), - (0x1D521, 'M', 'd'), - (0x1D522, 'M', 'e'), - (0x1D523, 'M', 'f'), - (0x1D524, 'M', 'g'), - (0x1D525, 'M', 'h'), - (0x1D526, 'M', 'i'), - (0x1D527, 'M', 'j'), - (0x1D528, 'M', 'k'), - (0x1D529, 'M', 'l'), - (0x1D52A, 'M', 'm'), - (0x1D52B, 'M', 'n'), - (0x1D52C, 'M', 'o'), - (0x1D52D, 'M', 'p'), - (0x1D52E, 'M', 'q'), - (0x1D52F, 'M', 'r'), - (0x1D530, 'M', 's'), - (0x1D531, 'M', 't'), - (0x1D532, 'M', 'u'), - (0x1D533, 'M', 'v'), - (0x1D534, 'M', 'w'), - (0x1D535, 'M', 'x'), - (0x1D536, 'M', 'y'), - (0x1D537, 'M', 'z'), - (0x1D538, 'M', 'a'), - (0x1D539, 'M', 'b'), - (0x1D53A, 'X'), - (0x1D53B, 'M', 'd'), - (0x1D53C, 'M', 'e'), - (0x1D53D, 'M', 'f'), - (0x1D53E, 'M', 'g'), - (0x1D53F, 'X'), - (0x1D540, 'M', 'i'), - (0x1D541, 'M', 'j'), - (0x1D542, 'M', 'k'), - (0x1D543, 'M', 'l'), - (0x1D544, 'M', 'm'), - (0x1D545, 'X'), - (0x1D546, 'M', 'o'), - (0x1D547, 'X'), - (0x1D54A, 'M', 's'), - (0x1D54B, 'M', 't'), - (0x1D54C, 'M', 'u'), - (0x1D54D, 'M', 'v'), - (0x1D54E, 'M', 'w'), - (0x1D54F, 'M', 'x'), - (0x1D550, 'M', 'y'), - (0x1D551, 'X'), - (0x1D552, 'M', 'a'), - ] - -def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D553, 'M', 'b'), - (0x1D554, 'M', 'c'), - (0x1D555, 'M', 'd'), - (0x1D556, 'M', 'e'), - (0x1D557, 'M', 'f'), - (0x1D558, 'M', 'g'), - (0x1D559, 'M', 'h'), - (0x1D55A, 'M', 'i'), - (0x1D55B, 'M', 'j'), - (0x1D55C, 'M', 'k'), - (0x1D55D, 'M', 'l'), - (0x1D55E, 'M', 'm'), - (0x1D55F, 'M', 'n'), - (0x1D560, 'M', 'o'), - (0x1D561, 'M', 'p'), - (0x1D562, 'M', 'q'), - (0x1D563, 'M', 'r'), - (0x1D564, 'M', 's'), - (0x1D565, 'M', 't'), - (0x1D566, 'M', 'u'), - (0x1D567, 'M', 'v'), - (0x1D568, 'M', 'w'), - (0x1D569, 'M', 'x'), - (0x1D56A, 'M', 'y'), - (0x1D56B, 'M', 'z'), - (0x1D56C, 'M', 'a'), - (0x1D56D, 'M', 'b'), - (0x1D56E, 'M', 'c'), - (0x1D56F, 'M', 'd'), - (0x1D570, 'M', 'e'), - (0x1D571, 'M', 'f'), - (0x1D572, 'M', 'g'), - (0x1D573, 'M', 'h'), - (0x1D574, 'M', 'i'), - (0x1D575, 'M', 'j'), - (0x1D576, 'M', 'k'), - (0x1D577, 'M', 'l'), - (0x1D578, 'M', 'm'), - (0x1D579, 'M', 'n'), - (0x1D57A, 'M', 'o'), - (0x1D57B, 'M', 'p'), - (0x1D57C, 'M', 'q'), - (0x1D57D, 'M', 'r'), - (0x1D57E, 'M', 's'), - (0x1D57F, 'M', 't'), - (0x1D580, 'M', 'u'), - (0x1D581, 'M', 'v'), - (0x1D582, 'M', 'w'), - (0x1D583, 'M', 'x'), - (0x1D584, 'M', 'y'), - (0x1D585, 'M', 'z'), - (0x1D586, 'M', 'a'), - (0x1D587, 'M', 'b'), - (0x1D588, 'M', 'c'), - (0x1D589, 'M', 'd'), - (0x1D58A, 'M', 'e'), - (0x1D58B, 'M', 'f'), - (0x1D58C, 'M', 'g'), - (0x1D58D, 'M', 'h'), - (0x1D58E, 'M', 'i'), - (0x1D58F, 'M', 'j'), - (0x1D590, 'M', 'k'), - (0x1D591, 'M', 'l'), - (0x1D592, 'M', 'm'), - (0x1D593, 'M', 'n'), - (0x1D594, 'M', 'o'), - (0x1D595, 'M', 'p'), - (0x1D596, 'M', 'q'), - (0x1D597, 'M', 'r'), - (0x1D598, 'M', 's'), - (0x1D599, 'M', 't'), - (0x1D59A, 'M', 'u'), - (0x1D59B, 'M', 'v'), - (0x1D59C, 'M', 'w'), - (0x1D59D, 'M', 'x'), - (0x1D59E, 'M', 'y'), - (0x1D59F, 'M', 'z'), - (0x1D5A0, 'M', 'a'), - (0x1D5A1, 'M', 'b'), - (0x1D5A2, 'M', 'c'), - (0x1D5A3, 'M', 'd'), - (0x1D5A4, 'M', 'e'), - (0x1D5A5, 'M', 'f'), - (0x1D5A6, 'M', 'g'), - (0x1D5A7, 'M', 'h'), - (0x1D5A8, 'M', 'i'), - (0x1D5A9, 'M', 'j'), - (0x1D5AA, 'M', 'k'), - (0x1D5AB, 'M', 'l'), - (0x1D5AC, 'M', 'm'), - (0x1D5AD, 'M', 'n'), - (0x1D5AE, 'M', 'o'), - (0x1D5AF, 'M', 'p'), - (0x1D5B0, 'M', 'q'), - (0x1D5B1, 'M', 'r'), - (0x1D5B2, 'M', 's'), - (0x1D5B3, 'M', 't'), - (0x1D5B4, 'M', 'u'), - (0x1D5B5, 'M', 'v'), - (0x1D5B6, 'M', 'w'), - ] - -def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D5B7, 'M', 'x'), - (0x1D5B8, 'M', 'y'), - (0x1D5B9, 'M', 'z'), - (0x1D5BA, 'M', 'a'), - (0x1D5BB, 'M', 'b'), - (0x1D5BC, 'M', 'c'), - (0x1D5BD, 'M', 'd'), - (0x1D5BE, 'M', 'e'), - (0x1D5BF, 'M', 'f'), - (0x1D5C0, 'M', 'g'), - (0x1D5C1, 'M', 'h'), - (0x1D5C2, 'M', 'i'), - (0x1D5C3, 'M', 'j'), - (0x1D5C4, 'M', 'k'), - (0x1D5C5, 'M', 'l'), - (0x1D5C6, 'M', 'm'), - (0x1D5C7, 'M', 'n'), - (0x1D5C8, 'M', 'o'), - (0x1D5C9, 'M', 'p'), - (0x1D5CA, 'M', 'q'), - (0x1D5CB, 'M', 'r'), - (0x1D5CC, 'M', 's'), - (0x1D5CD, 'M', 't'), - (0x1D5CE, 'M', 'u'), - (0x1D5CF, 'M', 'v'), - (0x1D5D0, 'M', 'w'), - (0x1D5D1, 'M', 'x'), - (0x1D5D2, 'M', 'y'), - (0x1D5D3, 'M', 'z'), - (0x1D5D4, 'M', 'a'), - (0x1D5D5, 'M', 'b'), - (0x1D5D6, 'M', 'c'), - (0x1D5D7, 'M', 'd'), - (0x1D5D8, 'M', 'e'), - (0x1D5D9, 'M', 'f'), - (0x1D5DA, 'M', 'g'), - (0x1D5DB, 'M', 'h'), - (0x1D5DC, 'M', 'i'), - (0x1D5DD, 'M', 'j'), - (0x1D5DE, 'M', 'k'), - (0x1D5DF, 'M', 'l'), - (0x1D5E0, 'M', 'm'), - (0x1D5E1, 'M', 'n'), - (0x1D5E2, 'M', 'o'), - (0x1D5E3, 'M', 'p'), - (0x1D5E4, 'M', 'q'), - (0x1D5E5, 'M', 'r'), - (0x1D5E6, 'M', 's'), - (0x1D5E7, 'M', 't'), - (0x1D5E8, 'M', 'u'), - (0x1D5E9, 'M', 'v'), - (0x1D5EA, 'M', 'w'), - (0x1D5EB, 'M', 'x'), - (0x1D5EC, 'M', 'y'), - (0x1D5ED, 'M', 'z'), - (0x1D5EE, 'M', 'a'), - (0x1D5EF, 'M', 'b'), - (0x1D5F0, 'M', 'c'), - (0x1D5F1, 'M', 'd'), - (0x1D5F2, 'M', 'e'), - (0x1D5F3, 'M', 'f'), - (0x1D5F4, 'M', 'g'), - (0x1D5F5, 'M', 'h'), - (0x1D5F6, 'M', 'i'), - (0x1D5F7, 'M', 'j'), - (0x1D5F8, 'M', 'k'), - (0x1D5F9, 'M', 'l'), - (0x1D5FA, 'M', 'm'), - (0x1D5FB, 'M', 'n'), - (0x1D5FC, 'M', 'o'), - (0x1D5FD, 'M', 'p'), - (0x1D5FE, 'M', 'q'), - (0x1D5FF, 'M', 'r'), - (0x1D600, 'M', 's'), - (0x1D601, 'M', 't'), - (0x1D602, 'M', 'u'), - (0x1D603, 'M', 'v'), - (0x1D604, 'M', 'w'), - (0x1D605, 'M', 'x'), - (0x1D606, 'M', 'y'), - (0x1D607, 'M', 'z'), - (0x1D608, 'M', 'a'), - (0x1D609, 'M', 'b'), - (0x1D60A, 'M', 'c'), - (0x1D60B, 'M', 'd'), - (0x1D60C, 'M', 'e'), - (0x1D60D, 'M', 'f'), - (0x1D60E, 'M', 'g'), - (0x1D60F, 'M', 'h'), - (0x1D610, 'M', 'i'), - (0x1D611, 'M', 'j'), - (0x1D612, 'M', 'k'), - (0x1D613, 'M', 'l'), - (0x1D614, 'M', 'm'), - (0x1D615, 'M', 'n'), - (0x1D616, 'M', 'o'), - (0x1D617, 'M', 'p'), - (0x1D618, 'M', 'q'), - (0x1D619, 'M', 'r'), - (0x1D61A, 'M', 's'), - ] - -def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D61B, 'M', 't'), - (0x1D61C, 'M', 'u'), - (0x1D61D, 'M', 'v'), - (0x1D61E, 'M', 'w'), - (0x1D61F, 'M', 'x'), - (0x1D620, 'M', 'y'), - (0x1D621, 'M', 'z'), - (0x1D622, 'M', 'a'), - (0x1D623, 'M', 'b'), - (0x1D624, 'M', 'c'), - (0x1D625, 'M', 'd'), - (0x1D626, 'M', 'e'), - (0x1D627, 'M', 'f'), - (0x1D628, 'M', 'g'), - (0x1D629, 'M', 'h'), - (0x1D62A, 'M', 'i'), - (0x1D62B, 'M', 'j'), - (0x1D62C, 'M', 'k'), - (0x1D62D, 'M', 'l'), - (0x1D62E, 'M', 'm'), - (0x1D62F, 'M', 'n'), - (0x1D630, 'M', 'o'), - (0x1D631, 'M', 'p'), - (0x1D632, 'M', 'q'), - (0x1D633, 'M', 'r'), - (0x1D634, 'M', 's'), - (0x1D635, 'M', 't'), - (0x1D636, 'M', 'u'), - (0x1D637, 'M', 'v'), - (0x1D638, 'M', 'w'), - (0x1D639, 'M', 'x'), - (0x1D63A, 'M', 'y'), - (0x1D63B, 'M', 'z'), - (0x1D63C, 'M', 'a'), - (0x1D63D, 'M', 'b'), - (0x1D63E, 'M', 'c'), - (0x1D63F, 'M', 'd'), - (0x1D640, 'M', 'e'), - (0x1D641, 'M', 'f'), - (0x1D642, 'M', 'g'), - (0x1D643, 'M', 'h'), - (0x1D644, 'M', 'i'), - (0x1D645, 'M', 'j'), - (0x1D646, 'M', 'k'), - (0x1D647, 'M', 'l'), - (0x1D648, 'M', 'm'), - (0x1D649, 'M', 'n'), - (0x1D64A, 'M', 'o'), - (0x1D64B, 'M', 'p'), - (0x1D64C, 'M', 'q'), - (0x1D64D, 'M', 'r'), - (0x1D64E, 'M', 's'), - (0x1D64F, 'M', 't'), - (0x1D650, 'M', 'u'), - (0x1D651, 'M', 'v'), - (0x1D652, 'M', 'w'), - (0x1D653, 'M', 'x'), - (0x1D654, 'M', 'y'), - (0x1D655, 'M', 'z'), - (0x1D656, 'M', 'a'), - (0x1D657, 'M', 'b'), - (0x1D658, 'M', 'c'), - (0x1D659, 'M', 'd'), - (0x1D65A, 'M', 'e'), - (0x1D65B, 'M', 'f'), - (0x1D65C, 'M', 'g'), - (0x1D65D, 'M', 'h'), - (0x1D65E, 'M', 'i'), - (0x1D65F, 'M', 'j'), - (0x1D660, 'M', 'k'), - (0x1D661, 'M', 'l'), - (0x1D662, 'M', 'm'), - (0x1D663, 'M', 'n'), - (0x1D664, 'M', 'o'), - (0x1D665, 'M', 'p'), - (0x1D666, 'M', 'q'), - (0x1D667, 'M', 'r'), - (0x1D668, 'M', 's'), - (0x1D669, 'M', 't'), - (0x1D66A, 'M', 'u'), - (0x1D66B, 'M', 'v'), - (0x1D66C, 'M', 'w'), - (0x1D66D, 'M', 'x'), - (0x1D66E, 'M', 'y'), - (0x1D66F, 'M', 'z'), - (0x1D670, 'M', 'a'), - (0x1D671, 'M', 'b'), - (0x1D672, 'M', 'c'), - (0x1D673, 'M', 'd'), - (0x1D674, 'M', 'e'), - (0x1D675, 'M', 'f'), - (0x1D676, 'M', 'g'), - (0x1D677, 'M', 'h'), - (0x1D678, 'M', 'i'), - (0x1D679, 'M', 'j'), - (0x1D67A, 'M', 'k'), - (0x1D67B, 'M', 'l'), - (0x1D67C, 'M', 'm'), - (0x1D67D, 'M', 'n'), - (0x1D67E, 'M', 'o'), - ] - -def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D67F, 'M', 'p'), - (0x1D680, 'M', 'q'), - (0x1D681, 'M', 'r'), - (0x1D682, 'M', 's'), - (0x1D683, 'M', 't'), - (0x1D684, 'M', 'u'), - (0x1D685, 'M', 'v'), - (0x1D686, 'M', 'w'), - (0x1D687, 'M', 'x'), - (0x1D688, 'M', 'y'), - (0x1D689, 'M', 'z'), - (0x1D68A, 'M', 'a'), - (0x1D68B, 'M', 'b'), - (0x1D68C, 'M', 'c'), - (0x1D68D, 'M', 'd'), - (0x1D68E, 'M', 'e'), - (0x1D68F, 'M', 'f'), - (0x1D690, 'M', 'g'), - (0x1D691, 'M', 'h'), - (0x1D692, 'M', 'i'), - (0x1D693, 'M', 'j'), - (0x1D694, 'M', 'k'), - (0x1D695, 'M', 'l'), - (0x1D696, 'M', 'm'), - (0x1D697, 'M', 'n'), - (0x1D698, 'M', 'o'), - (0x1D699, 'M', 'p'), - (0x1D69A, 'M', 'q'), - (0x1D69B, 'M', 'r'), - (0x1D69C, 'M', 's'), - (0x1D69D, 'M', 't'), - (0x1D69E, 'M', 'u'), - (0x1D69F, 'M', 'v'), - (0x1D6A0, 'M', 'w'), - (0x1D6A1, 'M', 'x'), - (0x1D6A2, 'M', 'y'), - (0x1D6A3, 'M', 'z'), - (0x1D6A4, 'M', 'ı'), - (0x1D6A5, 'M', 'ȷ'), - (0x1D6A6, 'X'), - (0x1D6A8, 'M', 'α'), - (0x1D6A9, 'M', 'β'), - (0x1D6AA, 'M', 'γ'), - (0x1D6AB, 'M', 'δ'), - (0x1D6AC, 'M', 'ε'), - (0x1D6AD, 'M', 'ζ'), - (0x1D6AE, 'M', 'η'), - (0x1D6AF, 'M', 'θ'), - (0x1D6B0, 'M', 'ι'), - (0x1D6B1, 'M', 'κ'), - (0x1D6B2, 'M', 'λ'), - (0x1D6B3, 'M', 'μ'), - (0x1D6B4, 'M', 'ν'), - (0x1D6B5, 'M', 'ξ'), - (0x1D6B6, 'M', 'ο'), - (0x1D6B7, 'M', 'π'), - (0x1D6B8, 'M', 'ρ'), - (0x1D6B9, 'M', 'θ'), - (0x1D6BA, 'M', 'σ'), - (0x1D6BB, 'M', 'τ'), - (0x1D6BC, 'M', 'υ'), - (0x1D6BD, 'M', 'φ'), - (0x1D6BE, 'M', 'χ'), - (0x1D6BF, 'M', 'ψ'), - (0x1D6C0, 'M', 'ω'), - (0x1D6C1, 'M', '∇'), - (0x1D6C2, 'M', 'α'), - (0x1D6C3, 'M', 'β'), - (0x1D6C4, 'M', 'γ'), - (0x1D6C5, 'M', 'δ'), - (0x1D6C6, 'M', 'ε'), - (0x1D6C7, 'M', 'ζ'), - (0x1D6C8, 'M', 'η'), - (0x1D6C9, 'M', 'θ'), - (0x1D6CA, 'M', 'ι'), - (0x1D6CB, 'M', 'κ'), - (0x1D6CC, 'M', 'λ'), - (0x1D6CD, 'M', 'μ'), - (0x1D6CE, 'M', 'ν'), - (0x1D6CF, 'M', 'ξ'), - (0x1D6D0, 'M', 'ο'), - (0x1D6D1, 'M', 'π'), - (0x1D6D2, 'M', 'ρ'), - (0x1D6D3, 'M', 'σ'), - (0x1D6D5, 'M', 'τ'), - (0x1D6D6, 'M', 'υ'), - (0x1D6D7, 'M', 'φ'), - (0x1D6D8, 'M', 'χ'), - (0x1D6D9, 'M', 'ψ'), - (0x1D6DA, 'M', 'ω'), - (0x1D6DB, 'M', '∂'), - (0x1D6DC, 'M', 'ε'), - (0x1D6DD, 'M', 'θ'), - (0x1D6DE, 'M', 'κ'), - (0x1D6DF, 'M', 'φ'), - (0x1D6E0, 'M', 'ρ'), - (0x1D6E1, 'M', 'π'), - (0x1D6E2, 'M', 'α'), - (0x1D6E3, 'M', 'β'), - (0x1D6E4, 'M', 'γ'), - ] - -def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D6E5, 'M', 'δ'), - (0x1D6E6, 'M', 'ε'), - (0x1D6E7, 'M', 'ζ'), - (0x1D6E8, 'M', 'η'), - (0x1D6E9, 'M', 'θ'), - (0x1D6EA, 'M', 'ι'), - (0x1D6EB, 'M', 'κ'), - (0x1D6EC, 'M', 'λ'), - (0x1D6ED, 'M', 'μ'), - (0x1D6EE, 'M', 'ν'), - (0x1D6EF, 'M', 'ξ'), - (0x1D6F0, 'M', 'ο'), - (0x1D6F1, 'M', 'π'), - (0x1D6F2, 'M', 'ρ'), - (0x1D6F3, 'M', 'θ'), - (0x1D6F4, 'M', 'σ'), - (0x1D6F5, 'M', 'τ'), - (0x1D6F6, 'M', 'υ'), - (0x1D6F7, 'M', 'φ'), - (0x1D6F8, 'M', 'χ'), - (0x1D6F9, 'M', 'ψ'), - (0x1D6FA, 'M', 'ω'), - (0x1D6FB, 'M', '∇'), - (0x1D6FC, 'M', 'α'), - (0x1D6FD, 'M', 'β'), - (0x1D6FE, 'M', 'γ'), - (0x1D6FF, 'M', 'δ'), - (0x1D700, 'M', 'ε'), - (0x1D701, 'M', 'ζ'), - (0x1D702, 'M', 'η'), - (0x1D703, 'M', 'θ'), - (0x1D704, 'M', 'ι'), - (0x1D705, 'M', 'κ'), - (0x1D706, 'M', 'λ'), - (0x1D707, 'M', 'μ'), - (0x1D708, 'M', 'ν'), - (0x1D709, 'M', 'ξ'), - (0x1D70A, 'M', 'ο'), - (0x1D70B, 'M', 'π'), - (0x1D70C, 'M', 'ρ'), - (0x1D70D, 'M', 'σ'), - (0x1D70F, 'M', 'τ'), - (0x1D710, 'M', 'υ'), - (0x1D711, 'M', 'φ'), - (0x1D712, 'M', 'χ'), - (0x1D713, 'M', 'ψ'), - (0x1D714, 'M', 'ω'), - (0x1D715, 'M', '∂'), - (0x1D716, 'M', 'ε'), - (0x1D717, 'M', 'θ'), - (0x1D718, 'M', 'κ'), - (0x1D719, 'M', 'φ'), - (0x1D71A, 'M', 'ρ'), - (0x1D71B, 'M', 'π'), - (0x1D71C, 'M', 'α'), - (0x1D71D, 'M', 'β'), - (0x1D71E, 'M', 'γ'), - (0x1D71F, 'M', 'δ'), - (0x1D720, 'M', 'ε'), - (0x1D721, 'M', 'ζ'), - (0x1D722, 'M', 'η'), - (0x1D723, 'M', 'θ'), - (0x1D724, 'M', 'ι'), - (0x1D725, 'M', 'κ'), - (0x1D726, 'M', 'λ'), - (0x1D727, 'M', 'μ'), - (0x1D728, 'M', 'ν'), - (0x1D729, 'M', 'ξ'), - (0x1D72A, 'M', 'ο'), - (0x1D72B, 'M', 'π'), - (0x1D72C, 'M', 'ρ'), - (0x1D72D, 'M', 'θ'), - (0x1D72E, 'M', 'σ'), - (0x1D72F, 'M', 'τ'), - (0x1D730, 'M', 'υ'), - (0x1D731, 'M', 'φ'), - (0x1D732, 'M', 'χ'), - (0x1D733, 'M', 'ψ'), - (0x1D734, 'M', 'ω'), - (0x1D735, 'M', '∇'), - (0x1D736, 'M', 'α'), - (0x1D737, 'M', 'β'), - (0x1D738, 'M', 'γ'), - (0x1D739, 'M', 'δ'), - (0x1D73A, 'M', 'ε'), - (0x1D73B, 'M', 'ζ'), - (0x1D73C, 'M', 'η'), - (0x1D73D, 'M', 'θ'), - (0x1D73E, 'M', 'ι'), - (0x1D73F, 'M', 'κ'), - (0x1D740, 'M', 'λ'), - (0x1D741, 'M', 'μ'), - (0x1D742, 'M', 'ν'), - (0x1D743, 'M', 'ξ'), - (0x1D744, 'M', 'ο'), - (0x1D745, 'M', 'π'), - (0x1D746, 'M', 'ρ'), - (0x1D747, 'M', 'σ'), - (0x1D749, 'M', 'τ'), - (0x1D74A, 'M', 'υ'), - ] - -def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D74B, 'M', 'φ'), - (0x1D74C, 'M', 'χ'), - (0x1D74D, 'M', 'ψ'), - (0x1D74E, 'M', 'ω'), - (0x1D74F, 'M', '∂'), - (0x1D750, 'M', 'ε'), - (0x1D751, 'M', 'θ'), - (0x1D752, 'M', 'κ'), - (0x1D753, 'M', 'φ'), - (0x1D754, 'M', 'ρ'), - (0x1D755, 'M', 'π'), - (0x1D756, 'M', 'α'), - (0x1D757, 'M', 'β'), - (0x1D758, 'M', 'γ'), - (0x1D759, 'M', 'δ'), - (0x1D75A, 'M', 'ε'), - (0x1D75B, 'M', 'ζ'), - (0x1D75C, 'M', 'η'), - (0x1D75D, 'M', 'θ'), - (0x1D75E, 'M', 'ι'), - (0x1D75F, 'M', 'κ'), - (0x1D760, 'M', 'λ'), - (0x1D761, 'M', 'μ'), - (0x1D762, 'M', 'ν'), - (0x1D763, 'M', 'ξ'), - (0x1D764, 'M', 'ο'), - (0x1D765, 'M', 'π'), - (0x1D766, 'M', 'ρ'), - (0x1D767, 'M', 'θ'), - (0x1D768, 'M', 'σ'), - (0x1D769, 'M', 'τ'), - (0x1D76A, 'M', 'υ'), - (0x1D76B, 'M', 'φ'), - (0x1D76C, 'M', 'χ'), - (0x1D76D, 'M', 'ψ'), - (0x1D76E, 'M', 'ω'), - (0x1D76F, 'M', '∇'), - (0x1D770, 'M', 'α'), - (0x1D771, 'M', 'β'), - (0x1D772, 'M', 'γ'), - (0x1D773, 'M', 'δ'), - (0x1D774, 'M', 'ε'), - (0x1D775, 'M', 'ζ'), - (0x1D776, 'M', 'η'), - (0x1D777, 'M', 'θ'), - (0x1D778, 'M', 'ι'), - (0x1D779, 'M', 'κ'), - (0x1D77A, 'M', 'λ'), - (0x1D77B, 'M', 'μ'), - (0x1D77C, 'M', 'ν'), - (0x1D77D, 'M', 'ξ'), - (0x1D77E, 'M', 'ο'), - (0x1D77F, 'M', 'π'), - (0x1D780, 'M', 'ρ'), - (0x1D781, 'M', 'σ'), - (0x1D783, 'M', 'τ'), - (0x1D784, 'M', 'υ'), - (0x1D785, 'M', 'φ'), - (0x1D786, 'M', 'χ'), - (0x1D787, 'M', 'ψ'), - (0x1D788, 'M', 'ω'), - (0x1D789, 'M', '∂'), - (0x1D78A, 'M', 'ε'), - (0x1D78B, 'M', 'θ'), - (0x1D78C, 'M', 'κ'), - (0x1D78D, 'M', 'φ'), - (0x1D78E, 'M', 'ρ'), - (0x1D78F, 'M', 'π'), - (0x1D790, 'M', 'α'), - (0x1D791, 'M', 'β'), - (0x1D792, 'M', 'γ'), - (0x1D793, 'M', 'δ'), - (0x1D794, 'M', 'ε'), - (0x1D795, 'M', 'ζ'), - (0x1D796, 'M', 'η'), - (0x1D797, 'M', 'θ'), - (0x1D798, 'M', 'ι'), - (0x1D799, 'M', 'κ'), - (0x1D79A, 'M', 'λ'), - (0x1D79B, 'M', 'μ'), - (0x1D79C, 'M', 'ν'), - (0x1D79D, 'M', 'ξ'), - (0x1D79E, 'M', 'ο'), - (0x1D79F, 'M', 'π'), - (0x1D7A0, 'M', 'ρ'), - (0x1D7A1, 'M', 'θ'), - (0x1D7A2, 'M', 'σ'), - (0x1D7A3, 'M', 'τ'), - (0x1D7A4, 'M', 'υ'), - (0x1D7A5, 'M', 'φ'), - (0x1D7A6, 'M', 'χ'), - (0x1D7A7, 'M', 'ψ'), - (0x1D7A8, 'M', 'ω'), - (0x1D7A9, 'M', '∇'), - (0x1D7AA, 'M', 'α'), - (0x1D7AB, 'M', 'β'), - (0x1D7AC, 'M', 'γ'), - (0x1D7AD, 'M', 'δ'), - (0x1D7AE, 'M', 'ε'), - (0x1D7AF, 'M', 'ζ'), - ] - -def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D7B0, 'M', 'η'), - (0x1D7B1, 'M', 'θ'), - (0x1D7B2, 'M', 'ι'), - (0x1D7B3, 'M', 'κ'), - (0x1D7B4, 'M', 'λ'), - (0x1D7B5, 'M', 'μ'), - (0x1D7B6, 'M', 'ν'), - (0x1D7B7, 'M', 'ξ'), - (0x1D7B8, 'M', 'ο'), - (0x1D7B9, 'M', 'π'), - (0x1D7BA, 'M', 'ρ'), - (0x1D7BB, 'M', 'σ'), - (0x1D7BD, 'M', 'τ'), - (0x1D7BE, 'M', 'υ'), - (0x1D7BF, 'M', 'φ'), - (0x1D7C0, 'M', 'χ'), - (0x1D7C1, 'M', 'ψ'), - (0x1D7C2, 'M', 'ω'), - (0x1D7C3, 'M', '∂'), - (0x1D7C4, 'M', 'ε'), - (0x1D7C5, 'M', 'θ'), - (0x1D7C6, 'M', 'κ'), - (0x1D7C7, 'M', 'φ'), - (0x1D7C8, 'M', 'ρ'), - (0x1D7C9, 'M', 'π'), - (0x1D7CA, 'M', 'ϝ'), - (0x1D7CC, 'X'), - (0x1D7CE, 'M', '0'), - (0x1D7CF, 'M', '1'), - (0x1D7D0, 'M', '2'), - (0x1D7D1, 'M', '3'), - (0x1D7D2, 'M', '4'), - (0x1D7D3, 'M', '5'), - (0x1D7D4, 'M', '6'), - (0x1D7D5, 'M', '7'), - (0x1D7D6, 'M', '8'), - (0x1D7D7, 'M', '9'), - (0x1D7D8, 'M', '0'), - (0x1D7D9, 'M', '1'), - (0x1D7DA, 'M', '2'), - (0x1D7DB, 'M', '3'), - (0x1D7DC, 'M', '4'), - (0x1D7DD, 'M', '5'), - (0x1D7DE, 'M', '6'), - (0x1D7DF, 'M', '7'), - (0x1D7E0, 'M', '8'), - (0x1D7E1, 'M', '9'), - (0x1D7E2, 'M', '0'), - (0x1D7E3, 'M', '1'), - (0x1D7E4, 'M', '2'), - (0x1D7E5, 'M', '3'), - (0x1D7E6, 'M', '4'), - (0x1D7E7, 'M', '5'), - (0x1D7E8, 'M', '6'), - (0x1D7E9, 'M', '7'), - (0x1D7EA, 'M', '8'), - (0x1D7EB, 'M', '9'), - (0x1D7EC, 'M', '0'), - (0x1D7ED, 'M', '1'), - (0x1D7EE, 'M', '2'), - (0x1D7EF, 'M', '3'), - (0x1D7F0, 'M', '4'), - (0x1D7F1, 'M', '5'), - (0x1D7F2, 'M', '6'), - (0x1D7F3, 'M', '7'), - (0x1D7F4, 'M', '8'), - (0x1D7F5, 'M', '9'), - (0x1D7F6, 'M', '0'), - (0x1D7F7, 'M', '1'), - (0x1D7F8, 'M', '2'), - (0x1D7F9, 'M', '3'), - (0x1D7FA, 'M', '4'), - (0x1D7FB, 'M', '5'), - (0x1D7FC, 'M', '6'), - (0x1D7FD, 'M', '7'), - (0x1D7FE, 'M', '8'), - (0x1D7FF, 'M', '9'), - (0x1D800, 'V'), - (0x1DA8C, 'X'), - (0x1DA9B, 'V'), - (0x1DAA0, 'X'), - (0x1DAA1, 'V'), - (0x1DAB0, 'X'), - (0x1DF00, 'V'), - (0x1DF1F, 'X'), - (0x1DF25, 'V'), - (0x1DF2B, 'X'), - (0x1E000, 'V'), - (0x1E007, 'X'), - (0x1E008, 'V'), - (0x1E019, 'X'), - (0x1E01B, 'V'), - (0x1E022, 'X'), - (0x1E023, 'V'), - (0x1E025, 'X'), - (0x1E026, 'V'), - (0x1E02B, 'X'), - (0x1E030, 'M', 'а'), - (0x1E031, 'M', 'б'), - (0x1E032, 'M', 'в'), - ] - -def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E033, 'M', 'г'), - (0x1E034, 'M', 'д'), - (0x1E035, 'M', 'е'), - (0x1E036, 'M', 'ж'), - (0x1E037, 'M', 'з'), - (0x1E038, 'M', 'и'), - (0x1E039, 'M', 'к'), - (0x1E03A, 'M', 'л'), - (0x1E03B, 'M', 'м'), - (0x1E03C, 'M', 'о'), - (0x1E03D, 'M', 'п'), - (0x1E03E, 'M', 'р'), - (0x1E03F, 'M', 'с'), - (0x1E040, 'M', 'т'), - (0x1E041, 'M', 'у'), - (0x1E042, 'M', 'ф'), - (0x1E043, 'M', 'х'), - (0x1E044, 'M', 'ц'), - (0x1E045, 'M', 'ч'), - (0x1E046, 'M', 'ш'), - (0x1E047, 'M', 'ы'), - (0x1E048, 'M', 'э'), - (0x1E049, 'M', 'ю'), - (0x1E04A, 'M', 'ꚉ'), - (0x1E04B, 'M', 'ә'), - (0x1E04C, 'M', 'і'), - (0x1E04D, 'M', 'ј'), - (0x1E04E, 'M', 'ө'), - (0x1E04F, 'M', 'ү'), - (0x1E050, 'M', 'ӏ'), - (0x1E051, 'M', 'а'), - (0x1E052, 'M', 'б'), - (0x1E053, 'M', 'в'), - (0x1E054, 'M', 'г'), - (0x1E055, 'M', 'д'), - (0x1E056, 'M', 'е'), - (0x1E057, 'M', 'ж'), - (0x1E058, 'M', 'з'), - (0x1E059, 'M', 'и'), - (0x1E05A, 'M', 'к'), - (0x1E05B, 'M', 'л'), - (0x1E05C, 'M', 'о'), - (0x1E05D, 'M', 'п'), - (0x1E05E, 'M', 'с'), - (0x1E05F, 'M', 'у'), - (0x1E060, 'M', 'ф'), - (0x1E061, 'M', 'х'), - (0x1E062, 'M', 'ц'), - (0x1E063, 'M', 'ч'), - (0x1E064, 'M', 'ш'), - (0x1E065, 'M', 'ъ'), - (0x1E066, 'M', 'ы'), - (0x1E067, 'M', 'ґ'), - (0x1E068, 'M', 'і'), - (0x1E069, 'M', 'ѕ'), - (0x1E06A, 'M', 'џ'), - (0x1E06B, 'M', 'ҫ'), - (0x1E06C, 'M', 'ꙑ'), - (0x1E06D, 'M', 'ұ'), - (0x1E06E, 'X'), - (0x1E08F, 'V'), - (0x1E090, 'X'), - (0x1E100, 'V'), - (0x1E12D, 'X'), - (0x1E130, 'V'), - (0x1E13E, 'X'), - (0x1E140, 'V'), - (0x1E14A, 'X'), - (0x1E14E, 'V'), - (0x1E150, 'X'), - (0x1E290, 'V'), - (0x1E2AF, 'X'), - (0x1E2C0, 'V'), - (0x1E2FA, 'X'), - (0x1E2FF, 'V'), - (0x1E300, 'X'), - (0x1E4D0, 'V'), - (0x1E4FA, 'X'), - (0x1E7E0, 'V'), - (0x1E7E7, 'X'), - (0x1E7E8, 'V'), - (0x1E7EC, 'X'), - (0x1E7ED, 'V'), - (0x1E7EF, 'X'), - (0x1E7F0, 'V'), - (0x1E7FF, 'X'), - (0x1E800, 'V'), - (0x1E8C5, 'X'), - (0x1E8C7, 'V'), - (0x1E8D7, 'X'), - (0x1E900, 'M', '𞤢'), - (0x1E901, 'M', '𞤣'), - (0x1E902, 'M', '𞤤'), - (0x1E903, 'M', '𞤥'), - (0x1E904, 'M', '𞤦'), - (0x1E905, 'M', '𞤧'), - (0x1E906, 'M', '𞤨'), - (0x1E907, 'M', '𞤩'), - (0x1E908, 'M', '𞤪'), - (0x1E909, 'M', '𞤫'), - ] - -def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E90A, 'M', '𞤬'), - (0x1E90B, 'M', '𞤭'), - (0x1E90C, 'M', '𞤮'), - (0x1E90D, 'M', '𞤯'), - (0x1E90E, 'M', '𞤰'), - (0x1E90F, 'M', '𞤱'), - (0x1E910, 'M', '𞤲'), - (0x1E911, 'M', '𞤳'), - (0x1E912, 'M', '𞤴'), - (0x1E913, 'M', '𞤵'), - (0x1E914, 'M', '𞤶'), - (0x1E915, 'M', '𞤷'), - (0x1E916, 'M', '𞤸'), - (0x1E917, 'M', '𞤹'), - (0x1E918, 'M', '𞤺'), - (0x1E919, 'M', '𞤻'), - (0x1E91A, 'M', '𞤼'), - (0x1E91B, 'M', '𞤽'), - (0x1E91C, 'M', '𞤾'), - (0x1E91D, 'M', '𞤿'), - (0x1E91E, 'M', '𞥀'), - (0x1E91F, 'M', '𞥁'), - (0x1E920, 'M', '𞥂'), - (0x1E921, 'M', '𞥃'), - (0x1E922, 'V'), - (0x1E94C, 'X'), - (0x1E950, 'V'), - (0x1E95A, 'X'), - (0x1E95E, 'V'), - (0x1E960, 'X'), - (0x1EC71, 'V'), - (0x1ECB5, 'X'), - (0x1ED01, 'V'), - (0x1ED3E, 'X'), - (0x1EE00, 'M', 'ا'), - (0x1EE01, 'M', 'ب'), - (0x1EE02, 'M', 'ج'), - (0x1EE03, 'M', 'د'), - (0x1EE04, 'X'), - (0x1EE05, 'M', 'و'), - (0x1EE06, 'M', 'ز'), - (0x1EE07, 'M', 'ح'), - (0x1EE08, 'M', 'ط'), - (0x1EE09, 'M', 'ي'), - (0x1EE0A, 'M', 'ك'), - (0x1EE0B, 'M', 'ل'), - (0x1EE0C, 'M', 'م'), - (0x1EE0D, 'M', 'ن'), - (0x1EE0E, 'M', 'س'), - (0x1EE0F, 'M', 'ع'), - (0x1EE10, 'M', 'ف'), - (0x1EE11, 'M', 'ص'), - (0x1EE12, 'M', 'ق'), - (0x1EE13, 'M', 'ر'), - (0x1EE14, 'M', 'ش'), - (0x1EE15, 'M', 'ت'), - (0x1EE16, 'M', 'ث'), - (0x1EE17, 'M', 'خ'), - (0x1EE18, 'M', 'ذ'), - (0x1EE19, 'M', 'ض'), - (0x1EE1A, 'M', 'ظ'), - (0x1EE1B, 'M', 'غ'), - (0x1EE1C, 'M', 'ٮ'), - (0x1EE1D, 'M', 'ں'), - (0x1EE1E, 'M', 'ڡ'), - (0x1EE1F, 'M', 'ٯ'), - (0x1EE20, 'X'), - (0x1EE21, 'M', 'ب'), - (0x1EE22, 'M', 'ج'), - (0x1EE23, 'X'), - (0x1EE24, 'M', 'ه'), - (0x1EE25, 'X'), - (0x1EE27, 'M', 'ح'), - (0x1EE28, 'X'), - (0x1EE29, 'M', 'ي'), - (0x1EE2A, 'M', 'ك'), - (0x1EE2B, 'M', 'ل'), - (0x1EE2C, 'M', 'م'), - (0x1EE2D, 'M', 'ن'), - (0x1EE2E, 'M', 'س'), - (0x1EE2F, 'M', 'ع'), - (0x1EE30, 'M', 'ف'), - (0x1EE31, 'M', 'ص'), - (0x1EE32, 'M', 'ق'), - (0x1EE33, 'X'), - (0x1EE34, 'M', 'ش'), - (0x1EE35, 'M', 'ت'), - (0x1EE36, 'M', 'ث'), - (0x1EE37, 'M', 'خ'), - (0x1EE38, 'X'), - (0x1EE39, 'M', 'ض'), - (0x1EE3A, 'X'), - (0x1EE3B, 'M', 'غ'), - (0x1EE3C, 'X'), - (0x1EE42, 'M', 'ج'), - (0x1EE43, 'X'), - (0x1EE47, 'M', 'ح'), - (0x1EE48, 'X'), - (0x1EE49, 'M', 'ي'), - (0x1EE4A, 'X'), - ] - -def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EE4B, 'M', 'ل'), - (0x1EE4C, 'X'), - (0x1EE4D, 'M', 'ن'), - (0x1EE4E, 'M', 'س'), - (0x1EE4F, 'M', 'ع'), - (0x1EE50, 'X'), - (0x1EE51, 'M', 'ص'), - (0x1EE52, 'M', 'ق'), - (0x1EE53, 'X'), - (0x1EE54, 'M', 'ش'), - (0x1EE55, 'X'), - (0x1EE57, 'M', 'خ'), - (0x1EE58, 'X'), - (0x1EE59, 'M', 'ض'), - (0x1EE5A, 'X'), - (0x1EE5B, 'M', 'غ'), - (0x1EE5C, 'X'), - (0x1EE5D, 'M', 'ں'), - (0x1EE5E, 'X'), - (0x1EE5F, 'M', 'ٯ'), - (0x1EE60, 'X'), - (0x1EE61, 'M', 'ب'), - (0x1EE62, 'M', 'ج'), - (0x1EE63, 'X'), - (0x1EE64, 'M', 'ه'), - (0x1EE65, 'X'), - (0x1EE67, 'M', 'ح'), - (0x1EE68, 'M', 'ط'), - (0x1EE69, 'M', 'ي'), - (0x1EE6A, 'M', 'ك'), - (0x1EE6B, 'X'), - (0x1EE6C, 'M', 'م'), - (0x1EE6D, 'M', 'ن'), - (0x1EE6E, 'M', 'س'), - (0x1EE6F, 'M', 'ع'), - (0x1EE70, 'M', 'ف'), - (0x1EE71, 'M', 'ص'), - (0x1EE72, 'M', 'ق'), - (0x1EE73, 'X'), - (0x1EE74, 'M', 'ش'), - (0x1EE75, 'M', 'ت'), - (0x1EE76, 'M', 'ث'), - (0x1EE77, 'M', 'خ'), - (0x1EE78, 'X'), - (0x1EE79, 'M', 'ض'), - (0x1EE7A, 'M', 'ظ'), - (0x1EE7B, 'M', 'غ'), - (0x1EE7C, 'M', 'ٮ'), - (0x1EE7D, 'X'), - (0x1EE7E, 'M', 'ڡ'), - (0x1EE7F, 'X'), - (0x1EE80, 'M', 'ا'), - (0x1EE81, 'M', 'ب'), - (0x1EE82, 'M', 'ج'), - (0x1EE83, 'M', 'د'), - (0x1EE84, 'M', 'ه'), - (0x1EE85, 'M', 'و'), - (0x1EE86, 'M', 'ز'), - (0x1EE87, 'M', 'ح'), - (0x1EE88, 'M', 'ط'), - (0x1EE89, 'M', 'ي'), - (0x1EE8A, 'X'), - (0x1EE8B, 'M', 'ل'), - (0x1EE8C, 'M', 'م'), - (0x1EE8D, 'M', 'ن'), - (0x1EE8E, 'M', 'س'), - (0x1EE8F, 'M', 'ع'), - (0x1EE90, 'M', 'ف'), - (0x1EE91, 'M', 'ص'), - (0x1EE92, 'M', 'ق'), - (0x1EE93, 'M', 'ر'), - (0x1EE94, 'M', 'ش'), - (0x1EE95, 'M', 'ت'), - (0x1EE96, 'M', 'ث'), - (0x1EE97, 'M', 'خ'), - (0x1EE98, 'M', 'ذ'), - (0x1EE99, 'M', 'ض'), - (0x1EE9A, 'M', 'ظ'), - (0x1EE9B, 'M', 'غ'), - (0x1EE9C, 'X'), - (0x1EEA1, 'M', 'ب'), - (0x1EEA2, 'M', 'ج'), - (0x1EEA3, 'M', 'د'), - (0x1EEA4, 'X'), - (0x1EEA5, 'M', 'و'), - (0x1EEA6, 'M', 'ز'), - (0x1EEA7, 'M', 'ح'), - (0x1EEA8, 'M', 'ط'), - (0x1EEA9, 'M', 'ي'), - (0x1EEAA, 'X'), - (0x1EEAB, 'M', 'ل'), - (0x1EEAC, 'M', 'م'), - (0x1EEAD, 'M', 'ن'), - (0x1EEAE, 'M', 'س'), - (0x1EEAF, 'M', 'ع'), - (0x1EEB0, 'M', 'ف'), - (0x1EEB1, 'M', 'ص'), - (0x1EEB2, 'M', 'ق'), - (0x1EEB3, 'M', 'ر'), - (0x1EEB4, 'M', 'ش'), - ] - -def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EEB5, 'M', 'ت'), - (0x1EEB6, 'M', 'ث'), - (0x1EEB7, 'M', 'خ'), - (0x1EEB8, 'M', 'ذ'), - (0x1EEB9, 'M', 'ض'), - (0x1EEBA, 'M', 'ظ'), - (0x1EEBB, 'M', 'غ'), - (0x1EEBC, 'X'), - (0x1EEF0, 'V'), - (0x1EEF2, 'X'), - (0x1F000, 'V'), - (0x1F02C, 'X'), - (0x1F030, 'V'), - (0x1F094, 'X'), - (0x1F0A0, 'V'), - (0x1F0AF, 'X'), - (0x1F0B1, 'V'), - (0x1F0C0, 'X'), - (0x1F0C1, 'V'), - (0x1F0D0, 'X'), - (0x1F0D1, 'V'), - (0x1F0F6, 'X'), - (0x1F101, '3', '0,'), - (0x1F102, '3', '1,'), - (0x1F103, '3', '2,'), - (0x1F104, '3', '3,'), - (0x1F105, '3', '4,'), - (0x1F106, '3', '5,'), - (0x1F107, '3', '6,'), - (0x1F108, '3', '7,'), - (0x1F109, '3', '8,'), - (0x1F10A, '3', '9,'), - (0x1F10B, 'V'), - (0x1F110, '3', '(a)'), - (0x1F111, '3', '(b)'), - (0x1F112, '3', '(c)'), - (0x1F113, '3', '(d)'), - (0x1F114, '3', '(e)'), - (0x1F115, '3', '(f)'), - (0x1F116, '3', '(g)'), - (0x1F117, '3', '(h)'), - (0x1F118, '3', '(i)'), - (0x1F119, '3', '(j)'), - (0x1F11A, '3', '(k)'), - (0x1F11B, '3', '(l)'), - (0x1F11C, '3', '(m)'), - (0x1F11D, '3', '(n)'), - (0x1F11E, '3', '(o)'), - (0x1F11F, '3', '(p)'), - (0x1F120, '3', '(q)'), - (0x1F121, '3', '(r)'), - (0x1F122, '3', '(s)'), - (0x1F123, '3', '(t)'), - (0x1F124, '3', '(u)'), - (0x1F125, '3', '(v)'), - (0x1F126, '3', '(w)'), - (0x1F127, '3', '(x)'), - (0x1F128, '3', '(y)'), - (0x1F129, '3', '(z)'), - (0x1F12A, 'M', '〔s〕'), - (0x1F12B, 'M', 'c'), - (0x1F12C, 'M', 'r'), - (0x1F12D, 'M', 'cd'), - (0x1F12E, 'M', 'wz'), - (0x1F12F, 'V'), - (0x1F130, 'M', 'a'), - (0x1F131, 'M', 'b'), - (0x1F132, 'M', 'c'), - (0x1F133, 'M', 'd'), - (0x1F134, 'M', 'e'), - (0x1F135, 'M', 'f'), - (0x1F136, 'M', 'g'), - (0x1F137, 'M', 'h'), - (0x1F138, 'M', 'i'), - (0x1F139, 'M', 'j'), - (0x1F13A, 'M', 'k'), - (0x1F13B, 'M', 'l'), - (0x1F13C, 'M', 'm'), - (0x1F13D, 'M', 'n'), - (0x1F13E, 'M', 'o'), - (0x1F13F, 'M', 'p'), - (0x1F140, 'M', 'q'), - (0x1F141, 'M', 'r'), - (0x1F142, 'M', 's'), - (0x1F143, 'M', 't'), - (0x1F144, 'M', 'u'), - (0x1F145, 'M', 'v'), - (0x1F146, 'M', 'w'), - (0x1F147, 'M', 'x'), - (0x1F148, 'M', 'y'), - (0x1F149, 'M', 'z'), - (0x1F14A, 'M', 'hv'), - (0x1F14B, 'M', 'mv'), - (0x1F14C, 'M', 'sd'), - (0x1F14D, 'M', 'ss'), - (0x1F14E, 'M', 'ppv'), - (0x1F14F, 'M', 'wc'), - (0x1F150, 'V'), - (0x1F16A, 'M', 'mc'), - (0x1F16B, 'M', 'md'), - ] - -def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F16C, 'M', 'mr'), - (0x1F16D, 'V'), - (0x1F190, 'M', 'dj'), - (0x1F191, 'V'), - (0x1F1AE, 'X'), - (0x1F1E6, 'V'), - (0x1F200, 'M', 'ほか'), - (0x1F201, 'M', 'ココ'), - (0x1F202, 'M', 'サ'), - (0x1F203, 'X'), - (0x1F210, 'M', '手'), - (0x1F211, 'M', '字'), - (0x1F212, 'M', '双'), - (0x1F213, 'M', 'デ'), - (0x1F214, 'M', '二'), - (0x1F215, 'M', '多'), - (0x1F216, 'M', '解'), - (0x1F217, 'M', '天'), - (0x1F218, 'M', '交'), - (0x1F219, 'M', '映'), - (0x1F21A, 'M', '無'), - (0x1F21B, 'M', '料'), - (0x1F21C, 'M', '前'), - (0x1F21D, 'M', '後'), - (0x1F21E, 'M', '再'), - (0x1F21F, 'M', '新'), - (0x1F220, 'M', '初'), - (0x1F221, 'M', '終'), - (0x1F222, 'M', '生'), - (0x1F223, 'M', '販'), - (0x1F224, 'M', '声'), - (0x1F225, 'M', '吹'), - (0x1F226, 'M', '演'), - (0x1F227, 'M', '投'), - (0x1F228, 'M', '捕'), - (0x1F229, 'M', '一'), - (0x1F22A, 'M', '三'), - (0x1F22B, 'M', '遊'), - (0x1F22C, 'M', '左'), - (0x1F22D, 'M', '中'), - (0x1F22E, 'M', '右'), - (0x1F22F, 'M', '指'), - (0x1F230, 'M', '走'), - (0x1F231, 'M', '打'), - (0x1F232, 'M', '禁'), - (0x1F233, 'M', '空'), - (0x1F234, 'M', '合'), - (0x1F235, 'M', '満'), - (0x1F236, 'M', '有'), - (0x1F237, 'M', '月'), - (0x1F238, 'M', '申'), - (0x1F239, 'M', '割'), - (0x1F23A, 'M', '営'), - (0x1F23B, 'M', '配'), - (0x1F23C, 'X'), - (0x1F240, 'M', '〔本〕'), - (0x1F241, 'M', '〔三〕'), - (0x1F242, 'M', '〔二〕'), - (0x1F243, 'M', '〔安〕'), - (0x1F244, 'M', '〔点〕'), - (0x1F245, 'M', '〔打〕'), - (0x1F246, 'M', '〔盗〕'), - (0x1F247, 'M', '〔勝〕'), - (0x1F248, 'M', '〔敗〕'), - (0x1F249, 'X'), - (0x1F250, 'M', '得'), - (0x1F251, 'M', '可'), - (0x1F252, 'X'), - (0x1F260, 'V'), - (0x1F266, 'X'), - (0x1F300, 'V'), - (0x1F6D8, 'X'), - (0x1F6DC, 'V'), - (0x1F6ED, 'X'), - (0x1F6F0, 'V'), - (0x1F6FD, 'X'), - (0x1F700, 'V'), - (0x1F777, 'X'), - (0x1F77B, 'V'), - (0x1F7DA, 'X'), - (0x1F7E0, 'V'), - (0x1F7EC, 'X'), - (0x1F7F0, 'V'), - (0x1F7F1, 'X'), - (0x1F800, 'V'), - (0x1F80C, 'X'), - (0x1F810, 'V'), - (0x1F848, 'X'), - (0x1F850, 'V'), - (0x1F85A, 'X'), - (0x1F860, 'V'), - (0x1F888, 'X'), - (0x1F890, 'V'), - (0x1F8AE, 'X'), - (0x1F8B0, 'V'), - (0x1F8B2, 'X'), - (0x1F900, 'V'), - (0x1FA54, 'X'), - (0x1FA60, 'V'), - (0x1FA6E, 'X'), - ] - -def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FA70, 'V'), - (0x1FA7D, 'X'), - (0x1FA80, 'V'), - (0x1FA89, 'X'), - (0x1FA90, 'V'), - (0x1FABE, 'X'), - (0x1FABF, 'V'), - (0x1FAC6, 'X'), - (0x1FACE, 'V'), - (0x1FADC, 'X'), - (0x1FAE0, 'V'), - (0x1FAE9, 'X'), - (0x1FAF0, 'V'), - (0x1FAF9, 'X'), - (0x1FB00, 'V'), - (0x1FB93, 'X'), - (0x1FB94, 'V'), - (0x1FBCB, 'X'), - (0x1FBF0, 'M', '0'), - (0x1FBF1, 'M', '1'), - (0x1FBF2, 'M', '2'), - (0x1FBF3, 'M', '3'), - (0x1FBF4, 'M', '4'), - (0x1FBF5, 'M', '5'), - (0x1FBF6, 'M', '6'), - (0x1FBF7, 'M', '7'), - (0x1FBF8, 'M', '8'), - (0x1FBF9, 'M', '9'), - (0x1FBFA, 'X'), - (0x20000, 'V'), - (0x2A6E0, 'X'), - (0x2A700, 'V'), - (0x2B73A, 'X'), - (0x2B740, 'V'), - (0x2B81E, 'X'), - (0x2B820, 'V'), - (0x2CEA2, 'X'), - (0x2CEB0, 'V'), - (0x2EBE1, 'X'), - (0x2F800, 'M', '丽'), - (0x2F801, 'M', '丸'), - (0x2F802, 'M', '乁'), - (0x2F803, 'M', '𠄢'), - (0x2F804, 'M', '你'), - (0x2F805, 'M', '侮'), - (0x2F806, 'M', '侻'), - (0x2F807, 'M', '倂'), - (0x2F808, 'M', '偺'), - (0x2F809, 'M', '備'), - (0x2F80A, 'M', '僧'), - (0x2F80B, 'M', '像'), - (0x2F80C, 'M', '㒞'), - (0x2F80D, 'M', '𠘺'), - (0x2F80E, 'M', '免'), - (0x2F80F, 'M', '兔'), - (0x2F810, 'M', '兤'), - (0x2F811, 'M', '具'), - (0x2F812, 'M', '𠔜'), - (0x2F813, 'M', '㒹'), - (0x2F814, 'M', '內'), - (0x2F815, 'M', '再'), - (0x2F816, 'M', '𠕋'), - (0x2F817, 'M', '冗'), - (0x2F818, 'M', '冤'), - (0x2F819, 'M', '仌'), - (0x2F81A, 'M', '冬'), - (0x2F81B, 'M', '况'), - (0x2F81C, 'M', '𩇟'), - (0x2F81D, 'M', '凵'), - (0x2F81E, 'M', '刃'), - (0x2F81F, 'M', '㓟'), - (0x2F820, 'M', '刻'), - (0x2F821, 'M', '剆'), - (0x2F822, 'M', '割'), - (0x2F823, 'M', '剷'), - (0x2F824, 'M', '㔕'), - (0x2F825, 'M', '勇'), - (0x2F826, 'M', '勉'), - (0x2F827, 'M', '勤'), - (0x2F828, 'M', '勺'), - (0x2F829, 'M', '包'), - (0x2F82A, 'M', '匆'), - (0x2F82B, 'M', '北'), - (0x2F82C, 'M', '卉'), - (0x2F82D, 'M', '卑'), - (0x2F82E, 'M', '博'), - (0x2F82F, 'M', '即'), - (0x2F830, 'M', '卽'), - (0x2F831, 'M', '卿'), - (0x2F834, 'M', '𠨬'), - (0x2F835, 'M', '灰'), - (0x2F836, 'M', '及'), - (0x2F837, 'M', '叟'), - (0x2F838, 'M', '𠭣'), - (0x2F839, 'M', '叫'), - (0x2F83A, 'M', '叱'), - (0x2F83B, 'M', '吆'), - (0x2F83C, 'M', '咞'), - (0x2F83D, 'M', '吸'), - (0x2F83E, 'M', '呈'), - ] - -def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F83F, 'M', '周'), - (0x2F840, 'M', '咢'), - (0x2F841, 'M', '哶'), - (0x2F842, 'M', '唐'), - (0x2F843, 'M', '啓'), - (0x2F844, 'M', '啣'), - (0x2F845, 'M', '善'), - (0x2F847, 'M', '喙'), - (0x2F848, 'M', '喫'), - (0x2F849, 'M', '喳'), - (0x2F84A, 'M', '嗂'), - (0x2F84B, 'M', '圖'), - (0x2F84C, 'M', '嘆'), - (0x2F84D, 'M', '圗'), - (0x2F84E, 'M', '噑'), - (0x2F84F, 'M', '噴'), - (0x2F850, 'M', '切'), - (0x2F851, 'M', '壮'), - (0x2F852, 'M', '城'), - (0x2F853, 'M', '埴'), - (0x2F854, 'M', '堍'), - (0x2F855, 'M', '型'), - (0x2F856, 'M', '堲'), - (0x2F857, 'M', '報'), - (0x2F858, 'M', '墬'), - (0x2F859, 'M', '𡓤'), - (0x2F85A, 'M', '売'), - (0x2F85B, 'M', '壷'), - (0x2F85C, 'M', '夆'), - (0x2F85D, 'M', '多'), - (0x2F85E, 'M', '夢'), - (0x2F85F, 'M', '奢'), - (0x2F860, 'M', '𡚨'), - (0x2F861, 'M', '𡛪'), - (0x2F862, 'M', '姬'), - (0x2F863, 'M', '娛'), - (0x2F864, 'M', '娧'), - (0x2F865, 'M', '姘'), - (0x2F866, 'M', '婦'), - (0x2F867, 'M', '㛮'), - (0x2F868, 'X'), - (0x2F869, 'M', '嬈'), - (0x2F86A, 'M', '嬾'), - (0x2F86C, 'M', '𡧈'), - (0x2F86D, 'M', '寃'), - (0x2F86E, 'M', '寘'), - (0x2F86F, 'M', '寧'), - (0x2F870, 'M', '寳'), - (0x2F871, 'M', '𡬘'), - (0x2F872, 'M', '寿'), - (0x2F873, 'M', '将'), - (0x2F874, 'X'), - (0x2F875, 'M', '尢'), - (0x2F876, 'M', '㞁'), - (0x2F877, 'M', '屠'), - (0x2F878, 'M', '屮'), - (0x2F879, 'M', '峀'), - (0x2F87A, 'M', '岍'), - (0x2F87B, 'M', '𡷤'), - (0x2F87C, 'M', '嵃'), - (0x2F87D, 'M', '𡷦'), - (0x2F87E, 'M', '嵮'), - (0x2F87F, 'M', '嵫'), - (0x2F880, 'M', '嵼'), - (0x2F881, 'M', '巡'), - (0x2F882, 'M', '巢'), - (0x2F883, 'M', '㠯'), - (0x2F884, 'M', '巽'), - (0x2F885, 'M', '帨'), - (0x2F886, 'M', '帽'), - (0x2F887, 'M', '幩'), - (0x2F888, 'M', '㡢'), - (0x2F889, 'M', '𢆃'), - (0x2F88A, 'M', '㡼'), - (0x2F88B, 'M', '庰'), - (0x2F88C, 'M', '庳'), - (0x2F88D, 'M', '庶'), - (0x2F88E, 'M', '廊'), - (0x2F88F, 'M', '𪎒'), - (0x2F890, 'M', '廾'), - (0x2F891, 'M', '𢌱'), - (0x2F893, 'M', '舁'), - (0x2F894, 'M', '弢'), - (0x2F896, 'M', '㣇'), - (0x2F897, 'M', '𣊸'), - (0x2F898, 'M', '𦇚'), - (0x2F899, 'M', '形'), - (0x2F89A, 'M', '彫'), - (0x2F89B, 'M', '㣣'), - (0x2F89C, 'M', '徚'), - (0x2F89D, 'M', '忍'), - (0x2F89E, 'M', '志'), - (0x2F89F, 'M', '忹'), - (0x2F8A0, 'M', '悁'), - (0x2F8A1, 'M', '㤺'), - (0x2F8A2, 'M', '㤜'), - (0x2F8A3, 'M', '悔'), - (0x2F8A4, 'M', '𢛔'), - (0x2F8A5, 'M', '惇'), - (0x2F8A6, 'M', '慈'), - ] - -def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F8A7, 'M', '慌'), - (0x2F8A8, 'M', '慎'), - (0x2F8A9, 'M', '慌'), - (0x2F8AA, 'M', '慺'), - (0x2F8AB, 'M', '憎'), - (0x2F8AC, 'M', '憲'), - (0x2F8AD, 'M', '憤'), - (0x2F8AE, 'M', '憯'), - (0x2F8AF, 'M', '懞'), - (0x2F8B0, 'M', '懲'), - (0x2F8B1, 'M', '懶'), - (0x2F8B2, 'M', '成'), - (0x2F8B3, 'M', '戛'), - (0x2F8B4, 'M', '扝'), - (0x2F8B5, 'M', '抱'), - (0x2F8B6, 'M', '拔'), - (0x2F8B7, 'M', '捐'), - (0x2F8B8, 'M', '𢬌'), - (0x2F8B9, 'M', '挽'), - (0x2F8BA, 'M', '拼'), - (0x2F8BB, 'M', '捨'), - (0x2F8BC, 'M', '掃'), - (0x2F8BD, 'M', '揤'), - (0x2F8BE, 'M', '𢯱'), - (0x2F8BF, 'M', '搢'), - (0x2F8C0, 'M', '揅'), - (0x2F8C1, 'M', '掩'), - (0x2F8C2, 'M', '㨮'), - (0x2F8C3, 'M', '摩'), - (0x2F8C4, 'M', '摾'), - (0x2F8C5, 'M', '撝'), - (0x2F8C6, 'M', '摷'), - (0x2F8C7, 'M', '㩬'), - (0x2F8C8, 'M', '敏'), - (0x2F8C9, 'M', '敬'), - (0x2F8CA, 'M', '𣀊'), - (0x2F8CB, 'M', '旣'), - (0x2F8CC, 'M', '書'), - (0x2F8CD, 'M', '晉'), - (0x2F8CE, 'M', '㬙'), - (0x2F8CF, 'M', '暑'), - (0x2F8D0, 'M', '㬈'), - (0x2F8D1, 'M', '㫤'), - (0x2F8D2, 'M', '冒'), - (0x2F8D3, 'M', '冕'), - (0x2F8D4, 'M', '最'), - (0x2F8D5, 'M', '暜'), - (0x2F8D6, 'M', '肭'), - (0x2F8D7, 'M', '䏙'), - (0x2F8D8, 'M', '朗'), - (0x2F8D9, 'M', '望'), - (0x2F8DA, 'M', '朡'), - (0x2F8DB, 'M', '杞'), - (0x2F8DC, 'M', '杓'), - (0x2F8DD, 'M', '𣏃'), - (0x2F8DE, 'M', '㭉'), - (0x2F8DF, 'M', '柺'), - (0x2F8E0, 'M', '枅'), - (0x2F8E1, 'M', '桒'), - (0x2F8E2, 'M', '梅'), - (0x2F8E3, 'M', '𣑭'), - (0x2F8E4, 'M', '梎'), - (0x2F8E5, 'M', '栟'), - (0x2F8E6, 'M', '椔'), - (0x2F8E7, 'M', '㮝'), - (0x2F8E8, 'M', '楂'), - (0x2F8E9, 'M', '榣'), - (0x2F8EA, 'M', '槪'), - (0x2F8EB, 'M', '檨'), - (0x2F8EC, 'M', '𣚣'), - (0x2F8ED, 'M', '櫛'), - (0x2F8EE, 'M', '㰘'), - (0x2F8EF, 'M', '次'), - (0x2F8F0, 'M', '𣢧'), - (0x2F8F1, 'M', '歔'), - (0x2F8F2, 'M', '㱎'), - (0x2F8F3, 'M', '歲'), - (0x2F8F4, 'M', '殟'), - (0x2F8F5, 'M', '殺'), - (0x2F8F6, 'M', '殻'), - (0x2F8F7, 'M', '𣪍'), - (0x2F8F8, 'M', '𡴋'), - (0x2F8F9, 'M', '𣫺'), - (0x2F8FA, 'M', '汎'), - (0x2F8FB, 'M', '𣲼'), - (0x2F8FC, 'M', '沿'), - (0x2F8FD, 'M', '泍'), - (0x2F8FE, 'M', '汧'), - (0x2F8FF, 'M', '洖'), - (0x2F900, 'M', '派'), - (0x2F901, 'M', '海'), - (0x2F902, 'M', '流'), - (0x2F903, 'M', '浩'), - (0x2F904, 'M', '浸'), - (0x2F905, 'M', '涅'), - (0x2F906, 'M', '𣴞'), - (0x2F907, 'M', '洴'), - (0x2F908, 'M', '港'), - (0x2F909, 'M', '湮'), - (0x2F90A, 'M', '㴳'), - ] - -def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F90B, 'M', '滋'), - (0x2F90C, 'M', '滇'), - (0x2F90D, 'M', '𣻑'), - (0x2F90E, 'M', '淹'), - (0x2F90F, 'M', '潮'), - (0x2F910, 'M', '𣽞'), - (0x2F911, 'M', '𣾎'), - (0x2F912, 'M', '濆'), - (0x2F913, 'M', '瀹'), - (0x2F914, 'M', '瀞'), - (0x2F915, 'M', '瀛'), - (0x2F916, 'M', '㶖'), - (0x2F917, 'M', '灊'), - (0x2F918, 'M', '災'), - (0x2F919, 'M', '灷'), - (0x2F91A, 'M', '炭'), - (0x2F91B, 'M', '𠔥'), - (0x2F91C, 'M', '煅'), - (0x2F91D, 'M', '𤉣'), - (0x2F91E, 'M', '熜'), - (0x2F91F, 'X'), - (0x2F920, 'M', '爨'), - (0x2F921, 'M', '爵'), - (0x2F922, 'M', '牐'), - (0x2F923, 'M', '𤘈'), - (0x2F924, 'M', '犀'), - (0x2F925, 'M', '犕'), - (0x2F926, 'M', '𤜵'), - (0x2F927, 'M', '𤠔'), - (0x2F928, 'M', '獺'), - (0x2F929, 'M', '王'), - (0x2F92A, 'M', '㺬'), - (0x2F92B, 'M', '玥'), - (0x2F92C, 'M', '㺸'), - (0x2F92E, 'M', '瑇'), - (0x2F92F, 'M', '瑜'), - (0x2F930, 'M', '瑱'), - (0x2F931, 'M', '璅'), - (0x2F932, 'M', '瓊'), - (0x2F933, 'M', '㼛'), - (0x2F934, 'M', '甤'), - (0x2F935, 'M', '𤰶'), - (0x2F936, 'M', '甾'), - (0x2F937, 'M', '𤲒'), - (0x2F938, 'M', '異'), - (0x2F939, 'M', '𢆟'), - (0x2F93A, 'M', '瘐'), - (0x2F93B, 'M', '𤾡'), - (0x2F93C, 'M', '𤾸'), - (0x2F93D, 'M', '𥁄'), - (0x2F93E, 'M', '㿼'), - (0x2F93F, 'M', '䀈'), - (0x2F940, 'M', '直'), - (0x2F941, 'M', '𥃳'), - (0x2F942, 'M', '𥃲'), - (0x2F943, 'M', '𥄙'), - (0x2F944, 'M', '𥄳'), - (0x2F945, 'M', '眞'), - (0x2F946, 'M', '真'), - (0x2F948, 'M', '睊'), - (0x2F949, 'M', '䀹'), - (0x2F94A, 'M', '瞋'), - (0x2F94B, 'M', '䁆'), - (0x2F94C, 'M', '䂖'), - (0x2F94D, 'M', '𥐝'), - (0x2F94E, 'M', '硎'), - (0x2F94F, 'M', '碌'), - (0x2F950, 'M', '磌'), - (0x2F951, 'M', '䃣'), - (0x2F952, 'M', '𥘦'), - (0x2F953, 'M', '祖'), - (0x2F954, 'M', '𥚚'), - (0x2F955, 'M', '𥛅'), - (0x2F956, 'M', '福'), - (0x2F957, 'M', '秫'), - (0x2F958, 'M', '䄯'), - (0x2F959, 'M', '穀'), - (0x2F95A, 'M', '穊'), - (0x2F95B, 'M', '穏'), - (0x2F95C, 'M', '𥥼'), - (0x2F95D, 'M', '𥪧'), - (0x2F95F, 'X'), - (0x2F960, 'M', '䈂'), - (0x2F961, 'M', '𥮫'), - (0x2F962, 'M', '篆'), - (0x2F963, 'M', '築'), - (0x2F964, 'M', '䈧'), - (0x2F965, 'M', '𥲀'), - (0x2F966, 'M', '糒'), - (0x2F967, 'M', '䊠'), - (0x2F968, 'M', '糨'), - (0x2F969, 'M', '糣'), - (0x2F96A, 'M', '紀'), - (0x2F96B, 'M', '𥾆'), - (0x2F96C, 'M', '絣'), - (0x2F96D, 'M', '䌁'), - (0x2F96E, 'M', '緇'), - (0x2F96F, 'M', '縂'), - (0x2F970, 'M', '繅'), - (0x2F971, 'M', '䌴'), - ] - -def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F972, 'M', '𦈨'), - (0x2F973, 'M', '𦉇'), - (0x2F974, 'M', '䍙'), - (0x2F975, 'M', '𦋙'), - (0x2F976, 'M', '罺'), - (0x2F977, 'M', '𦌾'), - (0x2F978, 'M', '羕'), - (0x2F979, 'M', '翺'), - (0x2F97A, 'M', '者'), - (0x2F97B, 'M', '𦓚'), - (0x2F97C, 'M', '𦔣'), - (0x2F97D, 'M', '聠'), - (0x2F97E, 'M', '𦖨'), - (0x2F97F, 'M', '聰'), - (0x2F980, 'M', '𣍟'), - (0x2F981, 'M', '䏕'), - (0x2F982, 'M', '育'), - (0x2F983, 'M', '脃'), - (0x2F984, 'M', '䐋'), - (0x2F985, 'M', '脾'), - (0x2F986, 'M', '媵'), - (0x2F987, 'M', '𦞧'), - (0x2F988, 'M', '𦞵'), - (0x2F989, 'M', '𣎓'), - (0x2F98A, 'M', '𣎜'), - (0x2F98B, 'M', '舁'), - (0x2F98C, 'M', '舄'), - (0x2F98D, 'M', '辞'), - (0x2F98E, 'M', '䑫'), - (0x2F98F, 'M', '芑'), - (0x2F990, 'M', '芋'), - (0x2F991, 'M', '芝'), - (0x2F992, 'M', '劳'), - (0x2F993, 'M', '花'), - (0x2F994, 'M', '芳'), - (0x2F995, 'M', '芽'), - (0x2F996, 'M', '苦'), - (0x2F997, 'M', '𦬼'), - (0x2F998, 'M', '若'), - (0x2F999, 'M', '茝'), - (0x2F99A, 'M', '荣'), - (0x2F99B, 'M', '莭'), - (0x2F99C, 'M', '茣'), - (0x2F99D, 'M', '莽'), - (0x2F99E, 'M', '菧'), - (0x2F99F, 'M', '著'), - (0x2F9A0, 'M', '荓'), - (0x2F9A1, 'M', '菊'), - (0x2F9A2, 'M', '菌'), - (0x2F9A3, 'M', '菜'), - (0x2F9A4, 'M', '𦰶'), - (0x2F9A5, 'M', '𦵫'), - (0x2F9A6, 'M', '𦳕'), - (0x2F9A7, 'M', '䔫'), - (0x2F9A8, 'M', '蓱'), - (0x2F9A9, 'M', '蓳'), - (0x2F9AA, 'M', '蔖'), - (0x2F9AB, 'M', '𧏊'), - (0x2F9AC, 'M', '蕤'), - (0x2F9AD, 'M', '𦼬'), - (0x2F9AE, 'M', '䕝'), - (0x2F9AF, 'M', '䕡'), - (0x2F9B0, 'M', '𦾱'), - (0x2F9B1, 'M', '𧃒'), - (0x2F9B2, 'M', '䕫'), - (0x2F9B3, 'M', '虐'), - (0x2F9B4, 'M', '虜'), - (0x2F9B5, 'M', '虧'), - (0x2F9B6, 'M', '虩'), - (0x2F9B7, 'M', '蚩'), - (0x2F9B8, 'M', '蚈'), - (0x2F9B9, 'M', '蜎'), - (0x2F9BA, 'M', '蛢'), - (0x2F9BB, 'M', '蝹'), - (0x2F9BC, 'M', '蜨'), - (0x2F9BD, 'M', '蝫'), - (0x2F9BE, 'M', '螆'), - (0x2F9BF, 'X'), - (0x2F9C0, 'M', '蟡'), - (0x2F9C1, 'M', '蠁'), - (0x2F9C2, 'M', '䗹'), - (0x2F9C3, 'M', '衠'), - (0x2F9C4, 'M', '衣'), - (0x2F9C5, 'M', '𧙧'), - (0x2F9C6, 'M', '裗'), - (0x2F9C7, 'M', '裞'), - (0x2F9C8, 'M', '䘵'), - (0x2F9C9, 'M', '裺'), - (0x2F9CA, 'M', '㒻'), - (0x2F9CB, 'M', '𧢮'), - (0x2F9CC, 'M', '𧥦'), - (0x2F9CD, 'M', '䚾'), - (0x2F9CE, 'M', '䛇'), - (0x2F9CF, 'M', '誠'), - (0x2F9D0, 'M', '諭'), - (0x2F9D1, 'M', '變'), - (0x2F9D2, 'M', '豕'), - (0x2F9D3, 'M', '𧲨'), - (0x2F9D4, 'M', '貫'), - (0x2F9D5, 'M', '賁'), - ] - -def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F9D6, 'M', '贛'), - (0x2F9D7, 'M', '起'), - (0x2F9D8, 'M', '𧼯'), - (0x2F9D9, 'M', '𠠄'), - (0x2F9DA, 'M', '跋'), - (0x2F9DB, 'M', '趼'), - (0x2F9DC, 'M', '跰'), - (0x2F9DD, 'M', '𠣞'), - (0x2F9DE, 'M', '軔'), - (0x2F9DF, 'M', '輸'), - (0x2F9E0, 'M', '𨗒'), - (0x2F9E1, 'M', '𨗭'), - (0x2F9E2, 'M', '邔'), - (0x2F9E3, 'M', '郱'), - (0x2F9E4, 'M', '鄑'), - (0x2F9E5, 'M', '𨜮'), - (0x2F9E6, 'M', '鄛'), - (0x2F9E7, 'M', '鈸'), - (0x2F9E8, 'M', '鋗'), - (0x2F9E9, 'M', '鋘'), - (0x2F9EA, 'M', '鉼'), - (0x2F9EB, 'M', '鏹'), - (0x2F9EC, 'M', '鐕'), - (0x2F9ED, 'M', '𨯺'), - (0x2F9EE, 'M', '開'), - (0x2F9EF, 'M', '䦕'), - (0x2F9F0, 'M', '閷'), - (0x2F9F1, 'M', '𨵷'), - (0x2F9F2, 'M', '䧦'), - (0x2F9F3, 'M', '雃'), - (0x2F9F4, 'M', '嶲'), - (0x2F9F5, 'M', '霣'), - (0x2F9F6, 'M', '𩅅'), - (0x2F9F7, 'M', '𩈚'), - (0x2F9F8, 'M', '䩮'), - (0x2F9F9, 'M', '䩶'), - (0x2F9FA, 'M', '韠'), - (0x2F9FB, 'M', '𩐊'), - (0x2F9FC, 'M', '䪲'), - (0x2F9FD, 'M', '𩒖'), - (0x2F9FE, 'M', '頋'), - (0x2FA00, 'M', '頩'), - (0x2FA01, 'M', '𩖶'), - (0x2FA02, 'M', '飢'), - (0x2FA03, 'M', '䬳'), - (0x2FA04, 'M', '餩'), - (0x2FA05, 'M', '馧'), - (0x2FA06, 'M', '駂'), - (0x2FA07, 'M', '駾'), - (0x2FA08, 'M', '䯎'), - (0x2FA09, 'M', '𩬰'), - (0x2FA0A, 'M', '鬒'), - (0x2FA0B, 'M', '鱀'), - (0x2FA0C, 'M', '鳽'), - (0x2FA0D, 'M', '䳎'), - (0x2FA0E, 'M', '䳭'), - (0x2FA0F, 'M', '鵧'), - (0x2FA10, 'M', '𪃎'), - (0x2FA11, 'M', '䳸'), - (0x2FA12, 'M', '𪄅'), - (0x2FA13, 'M', '𪈎'), - (0x2FA14, 'M', '𪊑'), - (0x2FA15, 'M', '麻'), - (0x2FA16, 'M', '䵖'), - (0x2FA17, 'M', '黹'), - (0x2FA18, 'M', '黾'), - (0x2FA19, 'M', '鼅'), - (0x2FA1A, 'M', '鼏'), - (0x2FA1B, 'M', '鼖'), - (0x2FA1C, 'M', '鼻'), - (0x2FA1D, 'M', '𪘀'), - (0x2FA1E, 'X'), - (0x30000, 'V'), - (0x3134B, 'X'), - (0x31350, 'V'), - (0x323B0, 'X'), - (0xE0100, 'I'), - (0xE01F0, 'X'), - ] - -uts46data = tuple( - _seg_0() - + _seg_1() - + _seg_2() - + _seg_3() - + _seg_4() - + _seg_5() - + _seg_6() - + _seg_7() - + _seg_8() - + _seg_9() - + _seg_10() - + _seg_11() - + _seg_12() - + _seg_13() - + _seg_14() - + _seg_15() - + _seg_16() - + _seg_17() - + _seg_18() - + _seg_19() - + _seg_20() - + _seg_21() - + _seg_22() - + _seg_23() - + _seg_24() - + _seg_25() - + _seg_26() - + _seg_27() - + _seg_28() - + _seg_29() - + _seg_30() - + _seg_31() - + _seg_32() - + _seg_33() - + _seg_34() - + _seg_35() - + _seg_36() - + _seg_37() - + _seg_38() - + _seg_39() - + _seg_40() - + _seg_41() - + _seg_42() - + _seg_43() - + _seg_44() - + _seg_45() - + _seg_46() - + _seg_47() - + _seg_48() - + _seg_49() - + _seg_50() - + _seg_51() - + _seg_52() - + _seg_53() - + _seg_54() - + _seg_55() - + _seg_56() - + _seg_57() - + _seg_58() - + _seg_59() - + _seg_60() - + _seg_61() - + _seg_62() - + _seg_63() - + _seg_64() - + _seg_65() - + _seg_66() - + _seg_67() - + _seg_68() - + _seg_69() - + _seg_70() - + _seg_71() - + _seg_72() - + _seg_73() - + _seg_74() - + _seg_75() - + _seg_76() - + _seg_77() - + _seg_78() - + _seg_79() - + _seg_80() - + _seg_81() -) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py deleted file mode 100644 index 1300b86..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py +++ /dev/null @@ -1,57 +0,0 @@ -# coding: utf-8 -from .exceptions import * -from .ext import ExtType, Timestamp - -import os -import sys - - -version = (1, 0, 5) -__version__ = "1.0.5" - - -if os.environ.get("MSGPACK_PUREPYTHON") or sys.version_info[0] == 2: - from .fallback import Packer, unpackb, Unpacker -else: - try: - from ._cmsgpack import Packer, unpackb, Unpacker - except ImportError: - from .fallback import Packer, unpackb, Unpacker - - -def pack(o, stream, **kwargs): - """ - Pack object `o` and write it to `stream` - - See :class:`Packer` for options. - """ - packer = Packer(**kwargs) - stream.write(packer.pack(o)) - - -def packb(o, **kwargs): - """ - Pack object `o` and return packed bytes - - See :class:`Packer` for options. - """ - return Packer(**kwargs).pack(o) - - -def unpack(stream, **kwargs): - """ - Unpack an object from `stream`. - - Raises `ExtraData` when `stream` contains extra bytes. - See :class:`Unpacker` for options. - """ - data = stream.read() - return unpackb(data, **kwargs) - - -# alias for compatibility to simplejson/marshal/pickle. -load = unpack -loads = unpackb - -dump = pack -dumps = packb diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 0fb0e02c15d76c7c4cba425275cf29d852d69e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmb7E&2HpG5bpNRjORDANeF>c3keA$?KmrhgjNWFAOf@^8zosS>x;+Z?wL5T-Bx!` zvJ=hT_K0|fMB>7`@C1G3lvm&a)$N@qi#2=#~ArUk>6yIgE!GRphE~?Hg~~pQCEaLu|Bsijn!f>%T8hg)b59 z(%x$nKcIa&0KG|vbOZDj+lsf@AbyWMhEA&{Bvs{xo!Sd;g_6S=LN< zPV$mTm6r7_xY0rA3KJ)M5VuBL`H#kXFo3{lgb0KRi9Sb-*9G zx^jiitlko{W@*@xmaLv)m`3?VyU%4xMjaTlqvqCrc z21DN%s&=n_?h;t$2EwOjEK_8{CnT*XxfHo#Bv(XnGLcHKw48Kp^f6=PaaN>KKAtqS zO~{N3!fTcDN{(&N!S9e>n1O5GrqZ6NKJ+x^y4B>`qElY7 zXuilZ!84{*9-V(7BbkY`&a3&uno}8Fu<9Zz@@Z5r)hVw&8$a5MBvk#-q)X>aMs;3C z34~EDqEgO{JxY?i%2kq#>!ldLg*)&_gWj;Ujjbg!Gg>c$vGH15w_)=JS8Q+vOaV`e zVr{|}HBkkGMM+VWsOggV5?h&#x{CLFbIZkZC;N>liDOKgF9 zt05N*cMa{rVTG>I4SMA$ymDq3C}UfLrtsA-wyB11z=}0TW`dV@q!>5N9HqHrl1za5 zBK4aRKvg$63WV}*oUP;1CM1w=amHUKRbNd~Xf)~pJ8dA}LqJdl+pezX5qj2B9 zp=dSlO9)YRyg_?}g&B6ZtGn!F#u~b6*VJP`5e60QaH(Cnl)8PvgaktCUIG-d+a%F# z;9M@i>du+c{k0>nW?Toev?!)9fM!;vOkqBVaVN>%uuu1XENd>*z7Sm4Y1#qVy0lmD zlxp8d2|X>!TKh)Id#%}d+ffH!mYgmM_LX6)`~*aRM>uc-?71HP(A~j~vy1z97dw9k OUeFCXUf;tW`2PWIBxer* diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index 8c31a163e30d4a1368b44b2560e2f72ede15d31d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1811 zcmah}&2HN`5SA?2mSwwjvb)_|!ApS}*jQccr7emgXqzs2aTaa52VDq8q->$G=#rEZ z8@aVFlV|B0=-NltH9m4)L00QS-?!*o5#vX6Ld9S+rzL>M* z!_j#n<|dQH>dOnJ1xa$IHA$r+TFwL!S87cZ%e3I+Y?|eQl=gB~Oh#cyV2zJYj-IZi zWX6{D>FsqQ%~U92rmP^kJgvRR)ZV=j$cT_PDOt*roUy_XBT2$cG9@g}iBL+a-)e!q zy9u9Ug*JlmQ60{uUj>vFY$hnJLP}?nmpT6TDE(Nne649y%4I_7rK18UlO_L5qA8>v zP0B1$G7-jP(TB%6(urbo$oOC`xsDd1SVVbt8qJqxDvLixzdwp}X2by&l}&_>=Gi== zaEwb8&GZE2(YBnU`BF8&CAR4s;K~V{z_pUwJK2L{+fG6k8&&wCOjDs=mw7(E^b{IW zh)C5!vdO9b>!1vcAfne!eb-8Eb*j2>794esOLLsQVup=XAMO0e_FYiiL8T?g-EJ2X z2N-r=OEqKW2phY)_oi5|JmX|tFT^1z$I3&aKk|s+-bW>-q>%exkKsFmxVH|&6Ddg{ z06F|Woa}+wdmAUnedh#Qc?eq*Aln|{wBh{6em(bbleeI6?W%KhZWP0Eu0CykNwza( zqJU`;N}v#qW;sBQaJaCZxRWU;Hh8*r6$exn`4WgY&{Jv1!vcslO0XH28QK}CN4TDs z1Pgq%@E`Me30q@HFWd`srm`7sGpH+JBHB1 ziOh=3Q2GEkjaY5Dp}X4O6kv39AVG9oE&RuAE4_h}!s*T1h7=FEO*5+y_4Dom$wnk9^ zmV;K$S1271``G#Qi)*LdPM^Y2slvZmUJ46Li)4jJs|NM+xT8Z$RsXNu$Gf_N?DkC6 wKVArx=JL#%tM*WRO|(;xP2^SZtbQk-W4Sf9aNrC&1AiYrzd7*y0VL!83x~9sMgRZ+ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc deleted file mode 100644 index c8140907fbe516d21fdad910076835d3c5193c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6318 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 ZmHdGHXW7As> 34 - elif len(b) == 12: - nanoseconds, seconds = struct.unpack("!Iq", b) - else: - raise ValueError( - "Timestamp type can only be created from 32, 64, or 96-bit byte objects" - ) - return Timestamp(seconds, nanoseconds) - - def to_bytes(self): - """Pack this Timestamp object into bytes. - - Used for pure-Python msgpack packing. - - :returns data: Payload for EXT message with code -1 (timestamp type) - :rtype: bytes - """ - if (self.seconds >> 34) == 0: # seconds is non-negative and fits in 34 bits - data64 = self.nanoseconds << 34 | self.seconds - if data64 & 0xFFFFFFFF00000000 == 0: - # nanoseconds is zero and seconds < 2**32, so timestamp 32 - data = struct.pack("!L", data64) - else: - # timestamp 64 - data = struct.pack("!Q", data64) - else: - # timestamp 96 - data = struct.pack("!Iq", self.nanoseconds, self.seconds) - return data - - @staticmethod - def from_unix(unix_sec): - """Create a Timestamp from posix timestamp in seconds. - - :param unix_float: Posix timestamp in seconds. - :type unix_float: int or float. - """ - seconds = int(unix_sec // 1) - nanoseconds = int((unix_sec % 1) * 10**9) - return Timestamp(seconds, nanoseconds) - - def to_unix(self): - """Get the timestamp as a floating-point value. - - :returns: posix timestamp - :rtype: float - """ - return self.seconds + self.nanoseconds / 1e9 - - @staticmethod - def from_unix_nano(unix_ns): - """Create a Timestamp from posix timestamp in nanoseconds. - - :param int unix_ns: Posix timestamp in nanoseconds. - :rtype: Timestamp - """ - return Timestamp(*divmod(unix_ns, 10**9)) - - def to_unix_nano(self): - """Get the timestamp as a unixtime in nanoseconds. - - :returns: posix timestamp in nanoseconds - :rtype: int - """ - return self.seconds * 10**9 + self.nanoseconds - - def to_datetime(self): - """Get the timestamp as a UTC datetime. - - Python 2 is not supported. - - :rtype: datetime. - """ - return datetime.datetime.fromtimestamp(0, _utc) + datetime.timedelta( - seconds=self.to_unix() - ) - - @staticmethod - def from_datetime(dt): - """Create a Timestamp from datetime with tzinfo. - - Python 2 is not supported. - - :rtype: Timestamp - """ - return Timestamp.from_unix(dt.timestamp()) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py b/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py deleted file mode 100644 index e8cebc1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py +++ /dev/null @@ -1,1010 +0,0 @@ -"""Fallback pure Python implementation of msgpack""" -from datetime import datetime as _DateTime -import sys -import struct - - -PY2 = sys.version_info[0] == 2 -if PY2: - int_types = (int, long) - - def dict_iteritems(d): - return d.iteritems() - -else: - int_types = int - unicode = str - xrange = range - - def dict_iteritems(d): - return d.items() - - -if sys.version_info < (3, 5): - # Ugly hack... - RecursionError = RuntimeError - - def _is_recursionerror(e): - return ( - len(e.args) == 1 - and isinstance(e.args[0], str) - and e.args[0].startswith("maximum recursion depth exceeded") - ) - -else: - - def _is_recursionerror(e): - return True - - -if hasattr(sys, "pypy_version_info"): - # StringIO is slow on PyPy, StringIO is faster. However: PyPy's own - # StringBuilder is fastest. - from __pypy__ import newlist_hint - - try: - from __pypy__.builders import BytesBuilder as StringBuilder - except ImportError: - from __pypy__.builders import StringBuilder - USING_STRINGBUILDER = True - - class StringIO(object): - def __init__(self, s=b""): - if s: - self.builder = StringBuilder(len(s)) - self.builder.append(s) - else: - self.builder = StringBuilder() - - def write(self, s): - if isinstance(s, memoryview): - s = s.tobytes() - elif isinstance(s, bytearray): - s = bytes(s) - self.builder.append(s) - - def getvalue(self): - return self.builder.build() - -else: - USING_STRINGBUILDER = False - from io import BytesIO as StringIO - - newlist_hint = lambda size: [] - - -from .exceptions import BufferFull, OutOfData, ExtraData, FormatError, StackError - -from .ext import ExtType, Timestamp - - -EX_SKIP = 0 -EX_CONSTRUCT = 1 -EX_READ_ARRAY_HEADER = 2 -EX_READ_MAP_HEADER = 3 - -TYPE_IMMEDIATE = 0 -TYPE_ARRAY = 1 -TYPE_MAP = 2 -TYPE_RAW = 3 -TYPE_BIN = 4 -TYPE_EXT = 5 - -DEFAULT_RECURSE_LIMIT = 511 - - -def _check_type_strict(obj, t, type=type, tuple=tuple): - if type(t) is tuple: - return type(obj) in t - else: - return type(obj) is t - - -def _get_data_from_buffer(obj): - view = memoryview(obj) - if view.itemsize != 1: - raise ValueError("cannot unpack from multi-byte object") - return view - - -def unpackb(packed, **kwargs): - """ - Unpack an object from `packed`. - - Raises ``ExtraData`` when *packed* contains extra bytes. - Raises ``ValueError`` when *packed* is incomplete. - Raises ``FormatError`` when *packed* is not valid msgpack. - Raises ``StackError`` when *packed* contains too nested. - Other exceptions can be raised during unpacking. - - See :class:`Unpacker` for options. - """ - unpacker = Unpacker(None, max_buffer_size=len(packed), **kwargs) - unpacker.feed(packed) - try: - ret = unpacker._unpack() - except OutOfData: - raise ValueError("Unpack failed: incomplete input") - except RecursionError as e: - if _is_recursionerror(e): - raise StackError - raise - if unpacker._got_extradata(): - raise ExtraData(ret, unpacker._get_extradata()) - return ret - - -if sys.version_info < (2, 7, 6): - - def _unpack_from(f, b, o=0): - """Explicit type cast for legacy struct.unpack_from""" - return struct.unpack_from(f, bytes(b), o) - -else: - _unpack_from = struct.unpack_from - -_NO_FORMAT_USED = "" -_MSGPACK_HEADERS = { - 0xC4: (1, _NO_FORMAT_USED, TYPE_BIN), - 0xC5: (2, ">H", TYPE_BIN), - 0xC6: (4, ">I", TYPE_BIN), - 0xC7: (2, "Bb", TYPE_EXT), - 0xC8: (3, ">Hb", TYPE_EXT), - 0xC9: (5, ">Ib", TYPE_EXT), - 0xCA: (4, ">f"), - 0xCB: (8, ">d"), - 0xCC: (1, _NO_FORMAT_USED), - 0xCD: (2, ">H"), - 0xCE: (4, ">I"), - 0xCF: (8, ">Q"), - 0xD0: (1, "b"), - 0xD1: (2, ">h"), - 0xD2: (4, ">i"), - 0xD3: (8, ">q"), - 0xD4: (1, "b1s", TYPE_EXT), - 0xD5: (2, "b2s", TYPE_EXT), - 0xD6: (4, "b4s", TYPE_EXT), - 0xD7: (8, "b8s", TYPE_EXT), - 0xD8: (16, "b16s", TYPE_EXT), - 0xD9: (1, _NO_FORMAT_USED, TYPE_RAW), - 0xDA: (2, ">H", TYPE_RAW), - 0xDB: (4, ">I", TYPE_RAW), - 0xDC: (2, ">H", TYPE_ARRAY), - 0xDD: (4, ">I", TYPE_ARRAY), - 0xDE: (2, ">H", TYPE_MAP), - 0xDF: (4, ">I", TYPE_MAP), -} - - -class Unpacker(object): - """Streaming unpacker. - - Arguments: - - :param file_like: - File-like object having `.read(n)` method. - If specified, unpacker reads serialized data from it and :meth:`feed()` is not usable. - - :param int read_size: - Used as `file_like.read(read_size)`. (default: `min(16*1024, max_buffer_size)`) - - :param bool use_list: - If true, unpack msgpack array to Python list. - Otherwise, unpack to Python tuple. (default: True) - - :param bool raw: - If true, unpack msgpack raw to Python bytes. - Otherwise, unpack to Python str by decoding with UTF-8 encoding (default). - - :param int timestamp: - Control how timestamp type is unpacked: - - 0 - Timestamp - 1 - float (Seconds from the EPOCH) - 2 - int (Nanoseconds from the EPOCH) - 3 - datetime.datetime (UTC). Python 2 is not supported. - - :param bool strict_map_key: - If true (default), only str or bytes are accepted for map (dict) keys. - - :param callable object_hook: - When specified, it should be callable. - Unpacker calls it with a dict argument after unpacking msgpack map. - (See also simplejson) - - :param callable object_pairs_hook: - When specified, it should be callable. - Unpacker calls it with a list of key-value pairs after unpacking msgpack map. - (See also simplejson) - - :param str unicode_errors: - The error handler for decoding unicode. (default: 'strict') - This option should be used only when you have msgpack data which - contains invalid UTF-8 string. - - :param int max_buffer_size: - Limits size of data waiting unpacked. 0 means 2**32-1. - The default value is 100*1024*1024 (100MiB). - Raises `BufferFull` exception when it is insufficient. - You should set this parameter when unpacking data from untrusted source. - - :param int max_str_len: - Deprecated, use *max_buffer_size* instead. - Limits max length of str. (default: max_buffer_size) - - :param int max_bin_len: - Deprecated, use *max_buffer_size* instead. - Limits max length of bin. (default: max_buffer_size) - - :param int max_array_len: - Limits max length of array. - (default: max_buffer_size) - - :param int max_map_len: - Limits max length of map. - (default: max_buffer_size//2) - - :param int max_ext_len: - Deprecated, use *max_buffer_size* instead. - Limits max size of ext type. (default: max_buffer_size) - - Example of streaming deserialize from file-like object:: - - unpacker = Unpacker(file_like) - for o in unpacker: - process(o) - - Example of streaming deserialize from socket:: - - unpacker = Unpacker() - while True: - buf = sock.recv(1024**2) - if not buf: - break - unpacker.feed(buf) - for o in unpacker: - process(o) - - Raises ``ExtraData`` when *packed* contains extra bytes. - Raises ``OutOfData`` when *packed* is incomplete. - Raises ``FormatError`` when *packed* is not valid msgpack. - Raises ``StackError`` when *packed* contains too nested. - Other exceptions can be raised during unpacking. - """ - - def __init__( - self, - file_like=None, - read_size=0, - use_list=True, - raw=False, - timestamp=0, - strict_map_key=True, - object_hook=None, - object_pairs_hook=None, - list_hook=None, - unicode_errors=None, - max_buffer_size=100 * 1024 * 1024, - ext_hook=ExtType, - max_str_len=-1, - max_bin_len=-1, - max_array_len=-1, - max_map_len=-1, - max_ext_len=-1, - ): - if unicode_errors is None: - unicode_errors = "strict" - - if file_like is None: - self._feeding = True - else: - if not callable(file_like.read): - raise TypeError("`file_like.read` must be callable") - self.file_like = file_like - self._feeding = False - - #: array of bytes fed. - self._buffer = bytearray() - #: Which position we currently reads - self._buff_i = 0 - - # When Unpacker is used as an iterable, between the calls to next(), - # the buffer is not "consumed" completely, for efficiency sake. - # Instead, it is done sloppily. To make sure we raise BufferFull at - # the correct moments, we have to keep track of how sloppy we were. - # Furthermore, when the buffer is incomplete (that is: in the case - # we raise an OutOfData) we need to rollback the buffer to the correct - # state, which _buf_checkpoint records. - self._buf_checkpoint = 0 - - if not max_buffer_size: - max_buffer_size = 2**31 - 1 - if max_str_len == -1: - max_str_len = max_buffer_size - if max_bin_len == -1: - max_bin_len = max_buffer_size - if max_array_len == -1: - max_array_len = max_buffer_size - if max_map_len == -1: - max_map_len = max_buffer_size // 2 - if max_ext_len == -1: - max_ext_len = max_buffer_size - - self._max_buffer_size = max_buffer_size - if read_size > self._max_buffer_size: - raise ValueError("read_size must be smaller than max_buffer_size") - self._read_size = read_size or min(self._max_buffer_size, 16 * 1024) - self._raw = bool(raw) - self._strict_map_key = bool(strict_map_key) - self._unicode_errors = unicode_errors - self._use_list = use_list - if not (0 <= timestamp <= 3): - raise ValueError("timestamp must be 0..3") - self._timestamp = timestamp - self._list_hook = list_hook - self._object_hook = object_hook - self._object_pairs_hook = object_pairs_hook - self._ext_hook = ext_hook - self._max_str_len = max_str_len - self._max_bin_len = max_bin_len - self._max_array_len = max_array_len - self._max_map_len = max_map_len - self._max_ext_len = max_ext_len - self._stream_offset = 0 - - if list_hook is not None and not callable(list_hook): - raise TypeError("`list_hook` is not callable") - if object_hook is not None and not callable(object_hook): - raise TypeError("`object_hook` is not callable") - if object_pairs_hook is not None and not callable(object_pairs_hook): - raise TypeError("`object_pairs_hook` is not callable") - if object_hook is not None and object_pairs_hook is not None: - raise TypeError( - "object_pairs_hook and object_hook are mutually " "exclusive" - ) - if not callable(ext_hook): - raise TypeError("`ext_hook` is not callable") - - def feed(self, next_bytes): - assert self._feeding - view = _get_data_from_buffer(next_bytes) - if len(self._buffer) - self._buff_i + len(view) > self._max_buffer_size: - raise BufferFull - - # Strip buffer before checkpoint before reading file. - if self._buf_checkpoint > 0: - del self._buffer[: self._buf_checkpoint] - self._buff_i -= self._buf_checkpoint - self._buf_checkpoint = 0 - - # Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython - self._buffer.extend(view) - - def _consume(self): - """Gets rid of the used parts of the buffer.""" - self._stream_offset += self._buff_i - self._buf_checkpoint - self._buf_checkpoint = self._buff_i - - def _got_extradata(self): - return self._buff_i < len(self._buffer) - - def _get_extradata(self): - return self._buffer[self._buff_i :] - - def read_bytes(self, n): - ret = self._read(n, raise_outofdata=False) - self._consume() - return ret - - def _read(self, n, raise_outofdata=True): - # (int) -> bytearray - self._reserve(n, raise_outofdata=raise_outofdata) - i = self._buff_i - ret = self._buffer[i : i + n] - self._buff_i = i + len(ret) - return ret - - def _reserve(self, n, raise_outofdata=True): - remain_bytes = len(self._buffer) - self._buff_i - n - - # Fast path: buffer has n bytes already - if remain_bytes >= 0: - return - - if self._feeding: - self._buff_i = self._buf_checkpoint - raise OutOfData - - # Strip buffer before checkpoint before reading file. - if self._buf_checkpoint > 0: - del self._buffer[: self._buf_checkpoint] - self._buff_i -= self._buf_checkpoint - self._buf_checkpoint = 0 - - # Read from file - remain_bytes = -remain_bytes - if remain_bytes + len(self._buffer) > self._max_buffer_size: - raise BufferFull - while remain_bytes > 0: - to_read_bytes = max(self._read_size, remain_bytes) - read_data = self.file_like.read(to_read_bytes) - if not read_data: - break - assert isinstance(read_data, bytes) - self._buffer += read_data - remain_bytes -= len(read_data) - - if len(self._buffer) < n + self._buff_i and raise_outofdata: - self._buff_i = 0 # rollback - raise OutOfData - - def _read_header(self): - typ = TYPE_IMMEDIATE - n = 0 - obj = None - self._reserve(1) - b = self._buffer[self._buff_i] - self._buff_i += 1 - if b & 0b10000000 == 0: - obj = b - elif b & 0b11100000 == 0b11100000: - obj = -1 - (b ^ 0xFF) - elif b & 0b11100000 == 0b10100000: - n = b & 0b00011111 - typ = TYPE_RAW - if n > self._max_str_len: - raise ValueError("%s exceeds max_str_len(%s)" % (n, self._max_str_len)) - obj = self._read(n) - elif b & 0b11110000 == 0b10010000: - n = b & 0b00001111 - typ = TYPE_ARRAY - if n > self._max_array_len: - raise ValueError( - "%s exceeds max_array_len(%s)" % (n, self._max_array_len) - ) - elif b & 0b11110000 == 0b10000000: - n = b & 0b00001111 - typ = TYPE_MAP - if n > self._max_map_len: - raise ValueError("%s exceeds max_map_len(%s)" % (n, self._max_map_len)) - elif b == 0xC0: - obj = None - elif b == 0xC2: - obj = False - elif b == 0xC3: - obj = True - elif 0xC4 <= b <= 0xC6: - size, fmt, typ = _MSGPACK_HEADERS[b] - self._reserve(size) - if len(fmt) > 0: - n = _unpack_from(fmt, self._buffer, self._buff_i)[0] - else: - n = self._buffer[self._buff_i] - self._buff_i += size - if n > self._max_bin_len: - raise ValueError("%s exceeds max_bin_len(%s)" % (n, self._max_bin_len)) - obj = self._read(n) - elif 0xC7 <= b <= 0xC9: - size, fmt, typ = _MSGPACK_HEADERS[b] - self._reserve(size) - L, n = _unpack_from(fmt, self._buffer, self._buff_i) - self._buff_i += size - if L > self._max_ext_len: - raise ValueError("%s exceeds max_ext_len(%s)" % (L, self._max_ext_len)) - obj = self._read(L) - elif 0xCA <= b <= 0xD3: - size, fmt = _MSGPACK_HEADERS[b] - self._reserve(size) - if len(fmt) > 0: - obj = _unpack_from(fmt, self._buffer, self._buff_i)[0] - else: - obj = self._buffer[self._buff_i] - self._buff_i += size - elif 0xD4 <= b <= 0xD8: - size, fmt, typ = _MSGPACK_HEADERS[b] - if self._max_ext_len < size: - raise ValueError( - "%s exceeds max_ext_len(%s)" % (size, self._max_ext_len) - ) - self._reserve(size + 1) - n, obj = _unpack_from(fmt, self._buffer, self._buff_i) - self._buff_i += size + 1 - elif 0xD9 <= b <= 0xDB: - size, fmt, typ = _MSGPACK_HEADERS[b] - self._reserve(size) - if len(fmt) > 0: - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) - else: - n = self._buffer[self._buff_i] - self._buff_i += size - if n > self._max_str_len: - raise ValueError("%s exceeds max_str_len(%s)" % (n, self._max_str_len)) - obj = self._read(n) - elif 0xDC <= b <= 0xDD: - size, fmt, typ = _MSGPACK_HEADERS[b] - self._reserve(size) - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) - self._buff_i += size - if n > self._max_array_len: - raise ValueError( - "%s exceeds max_array_len(%s)" % (n, self._max_array_len) - ) - elif 0xDE <= b <= 0xDF: - size, fmt, typ = _MSGPACK_HEADERS[b] - self._reserve(size) - (n,) = _unpack_from(fmt, self._buffer, self._buff_i) - self._buff_i += size - if n > self._max_map_len: - raise ValueError("%s exceeds max_map_len(%s)" % (n, self._max_map_len)) - else: - raise FormatError("Unknown header: 0x%x" % b) - return typ, n, obj - - def _unpack(self, execute=EX_CONSTRUCT): - typ, n, obj = self._read_header() - - if execute == EX_READ_ARRAY_HEADER: - if typ != TYPE_ARRAY: - raise ValueError("Expected array") - return n - if execute == EX_READ_MAP_HEADER: - if typ != TYPE_MAP: - raise ValueError("Expected map") - return n - # TODO should we eliminate the recursion? - if typ == TYPE_ARRAY: - if execute == EX_SKIP: - for i in xrange(n): - # TODO check whether we need to call `list_hook` - self._unpack(EX_SKIP) - return - ret = newlist_hint(n) - for i in xrange(n): - ret.append(self._unpack(EX_CONSTRUCT)) - if self._list_hook is not None: - ret = self._list_hook(ret) - # TODO is the interaction between `list_hook` and `use_list` ok? - return ret if self._use_list else tuple(ret) - if typ == TYPE_MAP: - if execute == EX_SKIP: - for i in xrange(n): - # TODO check whether we need to call hooks - self._unpack(EX_SKIP) - self._unpack(EX_SKIP) - return - if self._object_pairs_hook is not None: - ret = self._object_pairs_hook( - (self._unpack(EX_CONSTRUCT), self._unpack(EX_CONSTRUCT)) - for _ in xrange(n) - ) - else: - ret = {} - for _ in xrange(n): - key = self._unpack(EX_CONSTRUCT) - if self._strict_map_key and type(key) not in (unicode, bytes): - raise ValueError( - "%s is not allowed for map key" % str(type(key)) - ) - if not PY2 and type(key) is str: - key = sys.intern(key) - ret[key] = self._unpack(EX_CONSTRUCT) - if self._object_hook is not None: - ret = self._object_hook(ret) - return ret - if execute == EX_SKIP: - return - if typ == TYPE_RAW: - if self._raw: - obj = bytes(obj) - else: - obj = obj.decode("utf_8", self._unicode_errors) - return obj - if typ == TYPE_BIN: - return bytes(obj) - if typ == TYPE_EXT: - if n == -1: # timestamp - ts = Timestamp.from_bytes(bytes(obj)) - if self._timestamp == 1: - return ts.to_unix() - elif self._timestamp == 2: - return ts.to_unix_nano() - elif self._timestamp == 3: - return ts.to_datetime() - else: - return ts - else: - return self._ext_hook(n, bytes(obj)) - assert typ == TYPE_IMMEDIATE - return obj - - def __iter__(self): - return self - - def __next__(self): - try: - ret = self._unpack(EX_CONSTRUCT) - self._consume() - return ret - except OutOfData: - self._consume() - raise StopIteration - except RecursionError: - raise StackError - - next = __next__ - - def skip(self): - self._unpack(EX_SKIP) - self._consume() - - def unpack(self): - try: - ret = self._unpack(EX_CONSTRUCT) - except RecursionError: - raise StackError - self._consume() - return ret - - def read_array_header(self): - ret = self._unpack(EX_READ_ARRAY_HEADER) - self._consume() - return ret - - def read_map_header(self): - ret = self._unpack(EX_READ_MAP_HEADER) - self._consume() - return ret - - def tell(self): - return self._stream_offset - - -class Packer(object): - """ - MessagePack Packer - - Usage:: - - packer = Packer() - astream.write(packer.pack(a)) - astream.write(packer.pack(b)) - - Packer's constructor has some keyword arguments: - - :param callable default: - Convert user type to builtin type that Packer supports. - See also simplejson's document. - - :param bool use_single_float: - Use single precision float type for float. (default: False) - - :param bool autoreset: - Reset buffer after each pack and return its content as `bytes`. (default: True). - If set this to false, use `bytes()` to get content and `.reset()` to clear buffer. - - :param bool use_bin_type: - Use bin type introduced in msgpack spec 2.0 for bytes. - It also enables str8 type for unicode. (default: True) - - :param bool strict_types: - If set to true, types will be checked to be exact. Derived classes - from serializable types will not be serialized and will be - treated as unsupported type and forwarded to default. - Additionally tuples will not be serialized as lists. - This is useful when trying to implement accurate serialization - for python types. - - :param bool datetime: - If set to true, datetime with tzinfo is packed into Timestamp type. - Note that the tzinfo is stripped in the timestamp. - You can get UTC datetime with `timestamp=3` option of the Unpacker. - (Python 2 is not supported). - - :param str unicode_errors: - The error handler for encoding unicode. (default: 'strict') - DO NOT USE THIS!! This option is kept for very specific usage. - - Example of streaming deserialize from file-like object:: - - unpacker = Unpacker(file_like) - for o in unpacker: - process(o) - - Example of streaming deserialize from socket:: - - unpacker = Unpacker() - while True: - buf = sock.recv(1024**2) - if not buf: - break - unpacker.feed(buf) - for o in unpacker: - process(o) - - Raises ``ExtraData`` when *packed* contains extra bytes. - Raises ``OutOfData`` when *packed* is incomplete. - Raises ``FormatError`` when *packed* is not valid msgpack. - Raises ``StackError`` when *packed* contains too nested. - Other exceptions can be raised during unpacking. - """ - - def __init__( - self, - default=None, - use_single_float=False, - autoreset=True, - use_bin_type=True, - strict_types=False, - datetime=False, - unicode_errors=None, - ): - self._strict_types = strict_types - self._use_float = use_single_float - self._autoreset = autoreset - self._use_bin_type = use_bin_type - self._buffer = StringIO() - if PY2 and datetime: - raise ValueError("datetime is not supported in Python 2") - self._datetime = bool(datetime) - self._unicode_errors = unicode_errors or "strict" - if default is not None: - if not callable(default): - raise TypeError("default must be callable") - self._default = default - - def _pack( - self, - obj, - nest_limit=DEFAULT_RECURSE_LIMIT, - check=isinstance, - check_type_strict=_check_type_strict, - ): - default_used = False - if self._strict_types: - check = check_type_strict - list_types = list - else: - list_types = (list, tuple) - while True: - if nest_limit < 0: - raise ValueError("recursion limit exceeded") - if obj is None: - return self._buffer.write(b"\xc0") - if check(obj, bool): - if obj: - return self._buffer.write(b"\xc3") - return self._buffer.write(b"\xc2") - if check(obj, int_types): - if 0 <= obj < 0x80: - return self._buffer.write(struct.pack("B", obj)) - if -0x20 <= obj < 0: - return self._buffer.write(struct.pack("b", obj)) - if 0x80 <= obj <= 0xFF: - return self._buffer.write(struct.pack("BB", 0xCC, obj)) - if -0x80 <= obj < 0: - return self._buffer.write(struct.pack(">Bb", 0xD0, obj)) - if 0xFF < obj <= 0xFFFF: - return self._buffer.write(struct.pack(">BH", 0xCD, obj)) - if -0x8000 <= obj < -0x80: - return self._buffer.write(struct.pack(">Bh", 0xD1, obj)) - if 0xFFFF < obj <= 0xFFFFFFFF: - return self._buffer.write(struct.pack(">BI", 0xCE, obj)) - if -0x80000000 <= obj < -0x8000: - return self._buffer.write(struct.pack(">Bi", 0xD2, obj)) - if 0xFFFFFFFF < obj <= 0xFFFFFFFFFFFFFFFF: - return self._buffer.write(struct.pack(">BQ", 0xCF, obj)) - if -0x8000000000000000 <= obj < -0x80000000: - return self._buffer.write(struct.pack(">Bq", 0xD3, obj)) - if not default_used and self._default is not None: - obj = self._default(obj) - default_used = True - continue - raise OverflowError("Integer value out of range") - if check(obj, (bytes, bytearray)): - n = len(obj) - if n >= 2**32: - raise ValueError("%s is too large" % type(obj).__name__) - self._pack_bin_header(n) - return self._buffer.write(obj) - if check(obj, unicode): - obj = obj.encode("utf-8", self._unicode_errors) - n = len(obj) - if n >= 2**32: - raise ValueError("String is too large") - self._pack_raw_header(n) - return self._buffer.write(obj) - if check(obj, memoryview): - n = obj.nbytes - if n >= 2**32: - raise ValueError("Memoryview is too large") - self._pack_bin_header(n) - return self._buffer.write(obj) - if check(obj, float): - if self._use_float: - return self._buffer.write(struct.pack(">Bf", 0xCA, obj)) - return self._buffer.write(struct.pack(">Bd", 0xCB, obj)) - if check(obj, (ExtType, Timestamp)): - if check(obj, Timestamp): - code = -1 - data = obj.to_bytes() - else: - code = obj.code - data = obj.data - assert isinstance(code, int) - assert isinstance(data, bytes) - L = len(data) - if L == 1: - self._buffer.write(b"\xd4") - elif L == 2: - self._buffer.write(b"\xd5") - elif L == 4: - self._buffer.write(b"\xd6") - elif L == 8: - self._buffer.write(b"\xd7") - elif L == 16: - self._buffer.write(b"\xd8") - elif L <= 0xFF: - self._buffer.write(struct.pack(">BB", 0xC7, L)) - elif L <= 0xFFFF: - self._buffer.write(struct.pack(">BH", 0xC8, L)) - else: - self._buffer.write(struct.pack(">BI", 0xC9, L)) - self._buffer.write(struct.pack("b", code)) - self._buffer.write(data) - return - if check(obj, list_types): - n = len(obj) - self._pack_array_header(n) - for i in xrange(n): - self._pack(obj[i], nest_limit - 1) - return - if check(obj, dict): - return self._pack_map_pairs( - len(obj), dict_iteritems(obj), nest_limit - 1 - ) - - if self._datetime and check(obj, _DateTime) and obj.tzinfo is not None: - obj = Timestamp.from_datetime(obj) - default_used = 1 - continue - - if not default_used and self._default is not None: - obj = self._default(obj) - default_used = 1 - continue - - if self._datetime and check(obj, _DateTime): - raise ValueError("Cannot serialize %r where tzinfo=None" % (obj,)) - - raise TypeError("Cannot serialize %r" % (obj,)) - - def pack(self, obj): - try: - self._pack(obj) - except: - self._buffer = StringIO() # force reset - raise - if self._autoreset: - ret = self._buffer.getvalue() - self._buffer = StringIO() - return ret - - def pack_map_pairs(self, pairs): - self._pack_map_pairs(len(pairs), pairs) - if self._autoreset: - ret = self._buffer.getvalue() - self._buffer = StringIO() - return ret - - def pack_array_header(self, n): - if n >= 2**32: - raise ValueError - self._pack_array_header(n) - if self._autoreset: - ret = self._buffer.getvalue() - self._buffer = StringIO() - return ret - - def pack_map_header(self, n): - if n >= 2**32: - raise ValueError - self._pack_map_header(n) - if self._autoreset: - ret = self._buffer.getvalue() - self._buffer = StringIO() - return ret - - def pack_ext_type(self, typecode, data): - if not isinstance(typecode, int): - raise TypeError("typecode must have int type.") - if not 0 <= typecode <= 127: - raise ValueError("typecode should be 0-127") - if not isinstance(data, bytes): - raise TypeError("data must have bytes type") - L = len(data) - if L > 0xFFFFFFFF: - raise ValueError("Too large data") - if L == 1: - self._buffer.write(b"\xd4") - elif L == 2: - self._buffer.write(b"\xd5") - elif L == 4: - self._buffer.write(b"\xd6") - elif L == 8: - self._buffer.write(b"\xd7") - elif L == 16: - self._buffer.write(b"\xd8") - elif L <= 0xFF: - self._buffer.write(b"\xc7" + struct.pack("B", L)) - elif L <= 0xFFFF: - self._buffer.write(b"\xc8" + struct.pack(">H", L)) - else: - self._buffer.write(b"\xc9" + struct.pack(">I", L)) - self._buffer.write(struct.pack("B", typecode)) - self._buffer.write(data) - - def _pack_array_header(self, n): - if n <= 0x0F: - return self._buffer.write(struct.pack("B", 0x90 + n)) - if n <= 0xFFFF: - return self._buffer.write(struct.pack(">BH", 0xDC, n)) - if n <= 0xFFFFFFFF: - return self._buffer.write(struct.pack(">BI", 0xDD, n)) - raise ValueError("Array is too large") - - def _pack_map_header(self, n): - if n <= 0x0F: - return self._buffer.write(struct.pack("B", 0x80 + n)) - if n <= 0xFFFF: - return self._buffer.write(struct.pack(">BH", 0xDE, n)) - if n <= 0xFFFFFFFF: - return self._buffer.write(struct.pack(">BI", 0xDF, n)) - raise ValueError("Dict is too large") - - def _pack_map_pairs(self, n, pairs, nest_limit=DEFAULT_RECURSE_LIMIT): - self._pack_map_header(n) - for (k, v) in pairs: - self._pack(k, nest_limit - 1) - self._pack(v, nest_limit - 1) - - def _pack_raw_header(self, n): - if n <= 0x1F: - self._buffer.write(struct.pack("B", 0xA0 + n)) - elif self._use_bin_type and n <= 0xFF: - self._buffer.write(struct.pack(">BB", 0xD9, n)) - elif n <= 0xFFFF: - self._buffer.write(struct.pack(">BH", 0xDA, n)) - elif n <= 0xFFFFFFFF: - self._buffer.write(struct.pack(">BI", 0xDB, n)) - else: - raise ValueError("Raw is too large") - - def _pack_bin_header(self, n): - if not self._use_bin_type: - return self._pack_raw_header(n) - elif n <= 0xFF: - return self._buffer.write(struct.pack(">BB", 0xC4, n)) - elif n <= 0xFFFF: - return self._buffer.write(struct.pack(">BH", 0xC5, n)) - elif n <= 0xFFFFFFFF: - return self._buffer.write(struct.pack(">BI", 0xC6, n)) - else: - raise ValueError("Bin is too large") - - def bytes(self): - """Return internal buffer contents as bytes object""" - return self._buffer.getvalue() - - def reset(self): - """Reset internal buffer. - - This method is useful only when autoreset=False. - """ - self._buffer = StringIO() - - def getbuffer(self): - """Return view of internal buffer.""" - if USING_STRINGBUILDER or PY2: - return memoryview(self.bytes()) - else: - return self._buffer.getbuffer() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py deleted file mode 100644 index 3551bc2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py +++ /dev/null @@ -1,26 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] - -__title__ = "packaging" -__summary__ = "Core utilities for Python packages" -__uri__ = "https://github.com/pypa/packaging" - -__version__ = "21.3" - -__author__ = "Donald Stufft and individual contributors" -__email__ = "donald@stufft.io" - -__license__ = "BSD-2-Clause or Apache-2.0" -__copyright__ = "2014-2019 %s" % __author__ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py deleted file mode 100644 index 3c50c5d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from .__about__ import ( - __author__, - __copyright__, - __email__, - __license__, - __summary__, - __title__, - __uri__, - __version__, -) - -__all__ = [ - "__title__", - "__summary__", - "__uri__", - "__version__", - "__author__", - "__email__", - "__license__", - "__copyright__", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc deleted file mode 100644 index 412af2d1b0a9153d5eba5dc78b8f89dd4cc5378f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmYk2&yLeD5XPN0ZPRuuAr2fk1tbnVByPJL7KG5k?inF^%f)hIHyN!HNB&bOIr9p< z05@K#SKfjX~@p6}7OeateA;JPF|2A5%WD+FV@L<&X@zIBxC0#W7anfH$4_J#=L>c z>q#05y2WC_827H$26Ox=8xHECQBca(hBhn4O5ODas@erv$IAy^L0b*4@3fJrcc8$5 zwCPcs^lOjp+Vmolc6e1g*V*@!R^V!X$V=VOuJ1T~Y7_6a`Sq~A*DY5f-8+9gx|Fvf zg;u}`gy$+Pb?Xcqywk=G&%~qj);>ye(8J5m`}=H{-6`&^OmU1)*uIw8F5e7SyUq4( zhIp60v0v8nU3=TB&|G@Mwik#pbs~e z+S2e2J;^#PEIrBgL=_xx)8NK+zTHp@PGlmBKH|4`8h#Ouppofd`d7QND!WjB}K};9WZ@T zQ2#=9HaXk-p5g#~eU+8b{o@@svLpTMeyxr0)#0&{eu# F{Q+JRc0m9D diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc deleted file mode 100644 index d24746b7590ed2175cc177744c929bf4700426d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7303 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc deleted file mode 100644 index 0aa89ddbfdf9342ce62159db65b85ab1c3f1c764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4615 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc deleted file mode 100644 index 3014bf20faa9e06a4f94518881fbe9b57a771af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2708 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc deleted file mode 100644 index e322abd551a17b5ff0ebfda814055f05eb00007a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3978 zcmZ`+TXPdf7M`9NjmEMp%d(6yAz=bZK#6UUgaj4{u`mkpMwY#@$z_u4)Szh_8I7d$ zi~^|4R%*>YZq@E{Dplq&KV$z!zwT51f*+RsPLE`Zusg0kI=4Q3IhQ`}PEBPre9u^8 z=T1S>{!PUAmjbbZ5$))j7H9!$Yi{z(T&8HvxaMqoLz8R$2#cmn=g_!=rVtkTf9s-KR>SpMd)7UIli#>KG*g> z!1(aCcA&dgz&rgr-befj|EQw5A7c+6E2|$TR)eWvE;#jfBbbM^tFV88Uxod*Fs{NH zbFcAhhkpo82Mf=%=ZtB5hF`-z&p>jWUx(ziG0EHkW&~#;o8xnky?!iv$GyRC@Hw2~ zCclnVZmJV~!k3TnTl_uXm(}TR@lS4R(EXIp@=vjo0`L{Sa##u8pgq8+=K=>lb#U6- z0o&3_Z~jIRST7mUthJ(8+8e#N)$RCgX>9Shl#%JxZg{`d;WAxo#a#GpVPJyHZTceO z)yGY)^ku5Scll#!e$^F$%(z^1H^h2Za5>!-t=$$3Zu7_SXI&vDqFA&#yVXu0Clhol z_C@>~gV~ZUC)X>DFRBf%`t@c*TI;@e$OU#cUE{lc^T}3^H(NU`4l^fc_87&Mn{=M> zkL<2sM0o(NQ6{;1z>rBg&Tq)VTIWZ<-3l7~hki@&kayz2A2SZVO2=s>GDn;UokxD; z>~#B`VA1JETtrUvpxbW;(AnX_iM!5bb<_Fi^0j4Uq+T+m?RgzPn5ew*;D z=l#(4+e1m(^MY>E^M2LD0ye6^(ZlkCZph2K{Z>>zN<%idza?})l4|llK>jqKz zN8b6d+-}`3_nyQLx}6V~-@jar;H#yc-+bur@~GTv^~xU9g03hhOiV71ohe%GJrPAL z`x;%831DkBQ=B9A?GgL_h+R5jr6aa@#BLn1m4UJ3ElZQOK1hB0XXpF(q|p~`X~D~dGz6tuJk2bM_5#0iKIsCa97=gKi#~`qt znQkgDxVfXNvTwT9keUcGkfj3?+ntn?<5}`ARRbJphu)m@bJvIJfJYtV1 zGOT^gv+$c1er)ee9A*fIb#vd`n+(i{y7*l2v-{?AilX#GL)^tWDYDcll9t#8oKkQy z`i}7EJ7_4YSW_oWnu(Rt9dr`(8|T2879qjI{By0tb`hJ9Ovf|e;cW$805&UrA_!_W zK$@u83M-}SgM8v}E<{&2e(aq8jZ$i0oWJf!bEnnjgPEbT95~ZaVKJB*V_kPjMMPKi zPxsau)%9w9TTUV}BA!$bk%l!@j-=7!uR`NIB5e_^LA&>2=>Hq&2ZbrXJ{~2B4F9!7ikfp>0 z;>U=(Jw(uun-*79%prd0an1OUEyqLBAP&F#Gbgt9dWoI(dL@Ufp^Y2r^v5 zo$9|BII&S5SeVxlNGYLg+fsfzqBfKbZHjOOSLbXWYV&V za&ZF+(u$u@uOX-!CcWRp_NYk|^t#A7^cTy+{sN5z&7}zxqQW8tR!b6?YJ!*`K&4bn z5}=zDQvfoZJfo4ACYE{?Gsh1>BxZ<)$-ctlF*b% zD?r2NE6Iz<}%6e6%s$Xw6D$=;u zSR+uAlZvtB)z-GQrIiq93I#RK6st1*Wwmj8W2*{dck3IC>S_ge4$LjA=%KT`a^>;~ zU8~-$tbQXWNAit&Rc1%TdZqpi+K3UkwOL)2ITXE3s;iYIwfQH?N}3<`-dk1NL1lY` z8gSK(%fiS?rGCd7@^UzkH%8CUk?(k8HC$XJcU>buvG%`$6OCKa5Z|KwitYp0rj7bo zWS8~)RFUP4yp`3nsEwmP8_AnzHmYYqu<#g|3_bDH=J*Pv N=q&WIdd4Ui{{_-7^Jf46 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc deleted file mode 100644 index a5574ad822e175ea844edb31fc51fb8ed4a47951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21530 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 H_1gac>YIK! diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc deleted file mode 100644 index 2f0a141bed89ed609890fff080a5db5f57bf1c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12928 zcmbtaO>i4WcAlOY3Rsg@CnksLf`R+Wc*j-Nd_zxSNZra@eX=ZaL(TTTZ#oF*&&^H|3CMvsS+MW(EX6 zKvry^rlY64sDau+dc#E9i zvYylVZR8BR^|D!sH3f!u)5q#@1nU}Y#bR7vGhmEqiQ zC7nwPZAFu@pNZUvGvK70^s>HB%Z(yG>Li^pXPn9m+rzMNXKdL3#so@fU<^1DNGAXV z9&%}Cg1-Qcv|8WpMa?)p0nFLM|Gmo=TAB>&#@g`rIWe?6>FncHTe%h8nIcGTzoR{v zmT~ml{+Za;a|dL?8I$OZ96)bPIVgwjo4JE;X)+~;?`v|{IkaWuGAO6z2+AW{dhRev zqjC(TG3PL9XB_>(5jpPYYe&)Ib8-*<6L|K@$)Ch>$K*byU^!zTF3q-&LONDj(zW#6FFCF}a+Qb8;Rn&r5Ml%bxz6 z*5G0`?%Nj%<#J)E?D+O&&rt=hrhN0AlI!{Qdv&i=s}{=sz_s;yy{0_(a@F%=*VpU7 zj=f(+<>vy;WKDcqT`pBi-d%q%%3Z%(cl`9Cvr_O%8%_lE$GahfmyP+cdO^94AOFBn zE*kcS-ocl}yHPQ9xw=s(mt<5P{@~KpYnR_!%wIWw{raV=i*vr659_j)A9L!p;;J84 zPT47-RYN)(zEM|>Z`NxVTC7|vVqEc!keH<$Z(UWhx=Ld_Y8Xk8Mi%`jZ{xXu$32Fm z5%aXBwk1B)u4$&`iMyjhqrayU)Y85M_#G`P8vmBe;CF?_mho1d%nEo>&4hF_uBS@X zl}w>3GeHkBP6=2lQ^>qlEEin&wU5FgdmGy(ZmxFkxf9Tw0p1-}P2&)feZ^oSt_}o-X301p$u@{B z6MziJm@^pSB;^1gLv1*L+)cGXNdB6+;kK_x0-L$C90h;JF!DFB55u+WoB7+$U9}%w z-nGl11cO~hvr2nxO>9A6Jrs*s-8WYY?y5S1nuo$SU8lU<#WvzQ;pFq@faFqRNzvHT zPJAxH@MAUFYDGedev~)xT)^YfqDBvdC$@Aq?qQ*zH%3#e8Mm>!)lpPGH2q}BEmd8w zP%S!Y1|UDRSo1DdAR;SH)pKOfU0oeVoyt-|yCg_xrhO})FMIj?CFCDjNRq-7gL-4E ztJ8$@mHG{b_&I`8J+~c9llfmp0WdW=GUP!Z<`ph7!_%zICBef7^kc z5A;r08qVhn)oRUyuCG;Hh&rQG_0$Raz+9@;%4&`pIL!?NicFm$$P1LbNXbi->?};q zu_UBTbrz31iX^F}MM@vFqW^@&n~sLk@oUM&{{%Rai&8j{_tJpeGi40Y$%KS6AQuBE z7z;~*1hkxZSZ4XRC31EP!txK01VfT&f#n|{1At`M`ZQ4*xDX;SXvQW_=Q89}>jf8yKG7KH6jK*m~-gYpo6H7+sr*~5VeL&A$C?BcEkOuS(M zM}`auxGmAt@`6kk61K=2p7|gqg=cN+@FyVbvif2pcR@LrUNToQ9X3Y>5;wEtz^sAM zp`2m?QjblVJEd|N6;P9v+6G{yDw`oy=MyheDXhW52<A|jdgP0h zI_Zid=&EnuDX1zs;QA)z{LzacJ*>G8gDO~XENFT7JFAHWEp!8!sQLVDH0BN>A)CR} zb)oC_uNo5_gMyj}kauY)G9`$8EUdw@mM##AmZ>7Hwk>2P4ONfv<@4*PW36OCD|ORj zj9ugme8S|Y!xFRe8FcqgX{L?EM*3_=BPWhOHjZZ(0_wf`0Tw9mET8`bjXff5Hz;-w zJV4pilW5@T4SW}fb?R8p0bBL;rE;nGI}sU6Z;W?zbuK{oT0{nyU{gd(<~!7t-$c@w z>Lk>T)R){N+7#>=>5HE~!LKh5)i^M>@G$#KDC$mf?0I|%ooLDQC$a|wzK2IGBI#Z# z;jZaRM7>8}l6}&jz+Tk;Az?6qkibHfSztVL&kCyP3; zo=#6)p+;EJ_1f?$Y6=VwDgJGX;`DBcJ7`~vB#jZX5K{bki{kDv?qES|lQ*!K-P3Jz z{5pMqo|21{yoJQK>#A0Fly_HMCK%hTuTYM*rlPH*Xn8AIhKg2;qFGglzG;dL&8w8V zM#+wf;2awqhZu~BmFJQlOQu8Q1iU$`9;LE<`wr$~MKHj+=F zy&pg$Y>SK9ts|Sz;1A%QG!ZG=M5@M{LWw(^!VlfaQ=QvL<3eUfUe8 zE*;Nvq$ra6RPx+^AfAwcsNYLbAOK1|t*7)sJ!zrSd07vV;cRt3q(LAd>l14n>_pEQ94u4sT$41etJC5>` z@It|gJBT15)>W(fR-sNoAV20c-cn1(kAN83DCIn?^j9^mEwO~C#I5BtBSWtwS` z6t;LnEi zTkR0`joJLoxm&@AqpxYGz|WT#P86C;&0%doj;i)@L@K3@~7XN10Qpabf*XX20}a_^!~FNv_Xsf6d|*{ zu|NuhcMsq}FItf7$!u#w9mz0y6tql|n&|jhD7}uyRj}nEpV%>=34{~d3;nPcalqQA1ruF~Xn}#0LkRA!#}()JER%FhkN#N&h@3sSqGaH8P384wb#TgDmCm2dS-6y9QvbP1< zFQ*wY$q<}8$pi8rL#A2~I@KYMeSZsbSk5qHnjthwKF0yhffnRBd5m!mwjg|#1Drz= z!KiGOt^NRdb=5_N!-NRZzWRUu6e`dwQ0p`rkdZ;J1 zKGc1E?zAsTT}sbSoLzAcm#C|SVNhakP`@{!HI9TK>sB~mF4&ar!d&Z%z~a1t=Al+e z0|c+CZ;_-!G0yMmnJDvuA7iNzysB)SLYF_)dPNM~f;F|`eBxWKQ&7d#-~eWf$*!o{ zdYwn8$^fVWLHC4)QWeH(_&ocVhTq!&57gcO~8V#^l*sSftW!X>NkMaPO3-HgO(Tx%?o(ke?|fu5$5(9?8V!LO2dfe z5^qCTiLe3zkz_Mcc#%&FXq#>0k2-D5l-jybXBf)@Ry@QqJFsv#1FUn5W#g;ZXWCDL z*0nW@>)z$M1nR7|x;WR};JPI0;!&LhEfO6NK?92<`?bg7u%h+a!Pxc*W#V6gfO#5$^80sO@nAw>-4rle)F8;HSRrk@F`Yt71tBUBIY0-<#(cWs9 zbJ$Ri#i^_v>>`Tr`Q}=!RPE~yVnn=vD?Mmj1nfD`2uxs+G)Bd=ku;_`M$O{?b-1@AB?2(XfC76~Oih#1mtgUdtR!6s)DxO>!uavrU*WU_TrG=?JDj6c_x zwBjhw(SXERyqF^qIU6#CkI1_Tk{A6ZvH1tc>9s!mqe$nPa?v;vsk(5 z{-dX5PEPn12~q*q8>6RrrP2OA5u|7Yi!d;sM%N?o+#%@S z#D`x;(6@=(cpz@o7WMQQ1@6;ltK6EcNM0J zBGcFtk$!qyG@|{8Oy`JpBx*$v4eUjXqJdttQj&UOqMaN>K`)sH^p-SIe~tnxOIVqG zg~2r-eL_R}3uHQm1bOgfBwU&#+8A^|2kRrI$gsu+VWG!YSOTHPdjnRkQFcPr*JH$F zui^Bq8I5_mZG&=6-)VjH)PB&Rl)3mh&BM+{Rewpv-n}SQYw8~HECkhc-+xj5x`yHW7AXJndWRS?GR6{G$!)&7K% zzoCStpe^B;-7sLVF*WxMWNd9(AJtO_5VW3#$!$*JnZ^UN+Xx>k3|0?DLF@K60@&1^ zZv~EnZ&lYTOHaEfvjOZTu9i@gc^%gTD4dEws`1noXgMNVuiSCHPc#XQ}|NA=1+TI7O8s=ia!YJlamgG zPqw?+xXRJC>xJ8nn<+$h2g{|~PNuL_oI5k;-EqnrDBw0B-DY$%B@burxSn=m1_(3H zXU;sInF)|)vf*8|j*ijJrCmifwtE5z`_#i^veIn2gXCOnYgGex1<AKUQbC0CYK zN?r$7$#LizX(lrNNL(d>t=}^>U7vW8e9|}`Ij(d`GxAV-s5VS7dAt6;e1|WacO9Gw z&_!04%>zhfwphC6^d3I_MMT|3T-(;|FHBPryss}_v``!U29UAw@I2D8@i23q?r}&> z>NJnUrftOZ>Az{=M1VHPA)F=z@4zEGLYQYW9^%cT-Uh_jw43w= z)+=xlfS8+!Ci#mvA_Gpcn!pO8OMY5276f=UVIDWFX1r-P6V2qZg>@8L?3iDe-UeMX9S;PW3g%1N^OD>kGQ_?ljMBu-u ze>6H;W>W%-Y-)EeqYzLw9;_=Hk^;9q9qF58x)7bf1y$wYHk0coB#t2OtdfRcy0n6` z1AUiGumJyvI!EW?evA)gaSsx@A1)s+-|lXI3dDb+Zqr88Q&YlxGHFBF7#1vQPK_|t zE!|G&!p7;0qOY>2{efbwT*h@_x{alN0hr>W-v#7+%ezY#aTQH~qV29|8Wd|MTHcB^ z7BR~opld7ZMMx9JRWwFLYd#qA5Fy}V3$BmjzSmHA!P}wh+-{&3Nvis(E6TY7E9#=N z!8gJOudOe=LmQh*iB?v9gIa!>5>kTx-p~rW07YC-CAU_6*TGd`=_l#>tmGptHAd(u zLQj5BD6c!0l&Yy9Fg8O~bd;+eP_j+QN0cm4vP=n`V6lP^^j&P}u7|FZ>{fqI$vsMl zp>0#cYb#v)!M)xE%#r4j4ah@V>JB>{fQpae~I*o`9vR> zz@&~F6b&<F1h@}TpR(dYApaUNKtzS+gMn}v8>5TRr9TTlTp^MHbJ^4lQ=!5}6 bC?$3M3n=_wrA+;QQ=pKv^v8NU^*{dyDw=GI diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py deleted file mode 100644 index 4c379aa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py +++ /dev/null @@ -1,301 +0,0 @@ -import collections -import functools -import os -import re -import struct -import sys -import warnings -from typing import IO, Dict, Iterator, NamedTuple, Optional, Tuple - - -# Python does not provide platform information at sufficient granularity to -# identify the architecture of the running executable in some cases, so we -# determine it dynamically by reading the information from the running -# process. This only applies on Linux, which uses the ELF format. -class _ELFFileHeader: - # https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header - class _InvalidELFFileHeader(ValueError): - """ - An invalid ELF file header was found. - """ - - ELF_MAGIC_NUMBER = 0x7F454C46 - ELFCLASS32 = 1 - ELFCLASS64 = 2 - ELFDATA2LSB = 1 - ELFDATA2MSB = 2 - EM_386 = 3 - EM_S390 = 22 - EM_ARM = 40 - EM_X86_64 = 62 - EF_ARM_ABIMASK = 0xFF000000 - EF_ARM_ABI_VER5 = 0x05000000 - EF_ARM_ABI_FLOAT_HARD = 0x00000400 - - def __init__(self, file: IO[bytes]) -> None: - def unpack(fmt: str) -> int: - try: - data = file.read(struct.calcsize(fmt)) - result: Tuple[int, ...] = struct.unpack(fmt, data) - except struct.error: - raise _ELFFileHeader._InvalidELFFileHeader() - return result[0] - - self.e_ident_magic = unpack(">I") - if self.e_ident_magic != self.ELF_MAGIC_NUMBER: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_class = unpack("B") - if self.e_ident_class not in {self.ELFCLASS32, self.ELFCLASS64}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_data = unpack("B") - if self.e_ident_data not in {self.ELFDATA2LSB, self.ELFDATA2MSB}: - raise _ELFFileHeader._InvalidELFFileHeader() - self.e_ident_version = unpack("B") - self.e_ident_osabi = unpack("B") - self.e_ident_abiversion = unpack("B") - self.e_ident_pad = file.read(7) - format_h = "H" - format_i = "I" - format_q = "Q" - format_p = format_i if self.e_ident_class == self.ELFCLASS32 else format_q - self.e_type = unpack(format_h) - self.e_machine = unpack(format_h) - self.e_version = unpack(format_i) - self.e_entry = unpack(format_p) - self.e_phoff = unpack(format_p) - self.e_shoff = unpack(format_p) - self.e_flags = unpack(format_i) - self.e_ehsize = unpack(format_h) - self.e_phentsize = unpack(format_h) - self.e_phnum = unpack(format_h) - self.e_shentsize = unpack(format_h) - self.e_shnum = unpack(format_h) - self.e_shstrndx = unpack(format_h) - - -def _get_elf_header() -> Optional[_ELFFileHeader]: - try: - with open(sys.executable, "rb") as f: - elf_header = _ELFFileHeader(f) - except (OSError, TypeError, _ELFFileHeader._InvalidELFFileHeader): - return None - return elf_header - - -def _is_linux_armhf() -> bool: - # hard-float ABI can be detected from the ELF header of the running - # process - # https://static.docs.arm.com/ihi0044/g/aaelf32.pdf - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_ARM - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABIMASK - ) == elf_header.EF_ARM_ABI_VER5 - result &= ( - elf_header.e_flags & elf_header.EF_ARM_ABI_FLOAT_HARD - ) == elf_header.EF_ARM_ABI_FLOAT_HARD - return result - - -def _is_linux_i686() -> bool: - elf_header = _get_elf_header() - if elf_header is None: - return False - result = elf_header.e_ident_class == elf_header.ELFCLASS32 - result &= elf_header.e_ident_data == elf_header.ELFDATA2LSB - result &= elf_header.e_machine == elf_header.EM_386 - return result - - -def _have_compatible_abi(arch: str) -> bool: - if arch == "armv7l": - return _is_linux_armhf() - if arch == "i686": - return _is_linux_i686() - return arch in {"x86_64", "aarch64", "ppc64", "ppc64le", "s390x"} - - -# If glibc ever changes its major version, we need to know what the last -# minor version was, so we can build the complete list of all versions. -# For now, guess what the highest minor version might be, assume it will -# be 50 for testing. Once this actually happens, update the dictionary -# with the actual value. -_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50) - - -class _GLibCVersion(NamedTuple): - major: int - minor: int - - -def _glibc_version_string_confstr() -> Optional[str]: - """ - Primary implementation of glibc_version_string using os.confstr. - """ - # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely - # to be broken or missing. This strategy is used in the standard library - # platform module. - # https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183 - try: - # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17". - version_string = os.confstr("CS_GNU_LIBC_VERSION") - assert version_string is not None - _, version = version_string.split() - except (AssertionError, AttributeError, OSError, ValueError): - # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... - return None - return version - - -def _glibc_version_string_ctypes() -> Optional[str]: - """ - Fallback implementation of glibc_version_string using ctypes. - """ - try: - import ctypes - except ImportError: - return None - - # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen - # manpage says, "If filename is NULL, then the returned handle is for the - # main program". This way we can let the linker do the work to figure out - # which libc our process is actually using. - # - # We must also handle the special case where the executable is not a - # dynamically linked executable. This can occur when using musl libc, - # for example. In this situation, dlopen() will error, leading to an - # OSError. Interestingly, at least in the case of musl, there is no - # errno set on the OSError. The single string argument used to construct - # OSError comes from libc itself and is therefore not portable to - # hard code here. In any case, failure to call dlopen() means we - # can proceed, so we bail on our attempt. - try: - process_namespace = ctypes.CDLL(None) - except OSError: - return None - - try: - gnu_get_libc_version = process_namespace.gnu_get_libc_version - except AttributeError: - # Symbol doesn't exist -> therefore, we are not linked to - # glibc. - return None - - # Call gnu_get_libc_version, which returns a string like "2.5" - gnu_get_libc_version.restype = ctypes.c_char_p - version_str: str = gnu_get_libc_version() - # py2 / py3 compatibility: - if not isinstance(version_str, str): - version_str = version_str.decode("ascii") - - return version_str - - -def _glibc_version_string() -> Optional[str]: - """Returns glibc version string, or None if not using glibc.""" - return _glibc_version_string_confstr() or _glibc_version_string_ctypes() - - -def _parse_glibc_version(version_str: str) -> Tuple[int, int]: - """Parse glibc version. - - We use a regexp instead of str.split because we want to discard any - random junk that might come after the minor version -- this might happen - in patched/forked versions of glibc (e.g. Linaro's version of glibc - uses version strings like "2.20-2014.11"). See gh-3588. - """ - m = re.match(r"(?P[0-9]+)\.(?P[0-9]+)", version_str) - if not m: - warnings.warn( - "Expected glibc version with 2 components major.minor," - " got: %s" % version_str, - RuntimeWarning, - ) - return -1, -1 - return int(m.group("major")), int(m.group("minor")) - - -@functools.lru_cache() -def _get_glibc_version() -> Tuple[int, int]: - version_str = _glibc_version_string() - if version_str is None: - return (-1, -1) - return _parse_glibc_version(version_str) - - -# From PEP 513, PEP 600 -def _is_compatible(name: str, arch: str, version: _GLibCVersion) -> bool: - sys_glibc = _get_glibc_version() - if sys_glibc < version: - return False - # Check for presence of _manylinux module. - try: - import _manylinux # noqa - except ImportError: - return True - if hasattr(_manylinux, "manylinux_compatible"): - result = _manylinux.manylinux_compatible(version[0], version[1], arch) - if result is not None: - return bool(result) - return True - if version == _GLibCVersion(2, 5): - if hasattr(_manylinux, "manylinux1_compatible"): - return bool(_manylinux.manylinux1_compatible) - if version == _GLibCVersion(2, 12): - if hasattr(_manylinux, "manylinux2010_compatible"): - return bool(_manylinux.manylinux2010_compatible) - if version == _GLibCVersion(2, 17): - if hasattr(_manylinux, "manylinux2014_compatible"): - return bool(_manylinux.manylinux2014_compatible) - return True - - -_LEGACY_MANYLINUX_MAP = { - # CentOS 7 w/ glibc 2.17 (PEP 599) - (2, 17): "manylinux2014", - # CentOS 6 w/ glibc 2.12 (PEP 571) - (2, 12): "manylinux2010", - # CentOS 5 w/ glibc 2.5 (PEP 513) - (2, 5): "manylinux1", -} - - -def platform_tags(linux: str, arch: str) -> Iterator[str]: - if not _have_compatible_abi(arch): - return - # Oldest glibc to be supported regardless of architecture is (2, 17). - too_old_glibc2 = _GLibCVersion(2, 16) - if arch in {"x86_64", "i686"}: - # On x86/i686 also oldest glibc to be supported is (2, 5). - too_old_glibc2 = _GLibCVersion(2, 4) - current_glibc = _GLibCVersion(*_get_glibc_version()) - glibc_max_list = [current_glibc] - # We can assume compatibility across glibc major versions. - # https://sourceware.org/bugzilla/show_bug.cgi?id=24636 - # - # Build a list of maximum glibc versions so that we can - # output the canonical list of all glibc from current_glibc - # down to too_old_glibc2, including all intermediary versions. - for glibc_major in range(current_glibc.major - 1, 1, -1): - glibc_minor = _LAST_GLIBC_MINOR[glibc_major] - glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor)) - for glibc_max in glibc_max_list: - if glibc_max.major == too_old_glibc2.major: - min_minor = too_old_glibc2.minor - else: - # For other glibc major versions oldest supported is (x, 0). - min_minor = -1 - for glibc_minor in range(glibc_max.minor, min_minor, -1): - glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) - tag = "manylinux_{}_{}".format(*glibc_version) - if _is_compatible(tag, arch, glibc_version): - yield linux.replace("linux", tag) - # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. - if glibc_version in _LEGACY_MANYLINUX_MAP: - legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] - if _is_compatible(legacy_tag, arch, glibc_version): - yield linux.replace("linux", legacy_tag) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py deleted file mode 100644 index 8ac3059..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py +++ /dev/null @@ -1,136 +0,0 @@ -"""PEP 656 support. - -This module implements logic to detect if the currently running Python is -linked against musl, and what musl version is used. -""" - -import contextlib -import functools -import operator -import os -import re -import struct -import subprocess -import sys -from typing import IO, Iterator, NamedTuple, Optional, Tuple - - -def _read_unpacked(f: IO[bytes], fmt: str) -> Tuple[int, ...]: - return struct.unpack(fmt, f.read(struct.calcsize(fmt))) - - -def _parse_ld_musl_from_elf(f: IO[bytes]) -> Optional[str]: - """Detect musl libc location by parsing the Python executable. - - Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca - ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html - """ - f.seek(0) - try: - ident = _read_unpacked(f, "16B") - except struct.error: - return None - if ident[:4] != tuple(b"\x7fELF"): # Invalid magic, not ELF. - return None - f.seek(struct.calcsize("HHI"), 1) # Skip file type, machine, and version. - - try: - # e_fmt: Format for program header. - # p_fmt: Format for section header. - # p_idx: Indexes to find p_type, p_offset, and p_filesz. - e_fmt, p_fmt, p_idx = { - 1: ("IIIIHHH", "IIIIIIII", (0, 1, 4)), # 32-bit. - 2: ("QQQIHHH", "IIQQQQQQ", (0, 2, 5)), # 64-bit. - }[ident[4]] - except KeyError: - return None - else: - p_get = operator.itemgetter(*p_idx) - - # Find the interpreter section and return its content. - try: - _, e_phoff, _, _, _, e_phentsize, e_phnum = _read_unpacked(f, e_fmt) - except struct.error: - return None - for i in range(e_phnum + 1): - f.seek(e_phoff + e_phentsize * i) - try: - p_type, p_offset, p_filesz = p_get(_read_unpacked(f, p_fmt)) - except struct.error: - return None - if p_type != 3: # Not PT_INTERP. - continue - f.seek(p_offset) - interpreter = os.fsdecode(f.read(p_filesz)).strip("\0") - if "musl" not in interpreter: - return None - return interpreter - return None - - -class _MuslVersion(NamedTuple): - major: int - minor: int - - -def _parse_musl_version(output: str) -> Optional[_MuslVersion]: - lines = [n for n in (n.strip() for n in output.splitlines()) if n] - if len(lines) < 2 or lines[0][:4] != "musl": - return None - m = re.match(r"Version (\d+)\.(\d+)", lines[1]) - if not m: - return None - return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) - - -@functools.lru_cache() -def _get_musl_version(executable: str) -> Optional[_MuslVersion]: - """Detect currently-running musl runtime version. - - This is done by checking the specified executable's dynamic linking - information, and invoking the loader to parse its output for a version - string. If the loader is musl, the output would be something like:: - - musl libc (x86_64) - Version 1.2.2 - Dynamic Program Loader - """ - with contextlib.ExitStack() as stack: - try: - f = stack.enter_context(open(executable, "rb")) - except OSError: - return None - ld = _parse_ld_musl_from_elf(f) - if not ld: - return None - proc = subprocess.run([ld], stderr=subprocess.PIPE, universal_newlines=True) - return _parse_musl_version(proc.stderr) - - -def platform_tags(arch: str) -> Iterator[str]: - """Generate musllinux tags compatible to the current platform. - - :param arch: Should be the part of platform tag after the ``linux_`` - prefix, e.g. ``x86_64``. The ``linux_`` prefix is assumed as a - prerequisite for the current platform to be musllinux-compatible. - - :returns: An iterator of compatible musllinux tags. - """ - sys_musl = _get_musl_version(sys.executable) - if sys_musl is None: # Python not dynamically linked against musl. - return - for minor in range(sys_musl.minor, -1, -1): - yield f"musllinux_{sys_musl.major}_{minor}_{arch}" - - -if __name__ == "__main__": # pragma: no cover - import sysconfig - - plat = sysconfig.get_platform() - assert plat.startswith("linux-"), "not linux" - - print("plat:", plat) - print("musl:", _get_musl_version(sys.executable)) - print("tags:", end=" ") - for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])): - print(t, end="\n ") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py deleted file mode 100644 index 90a6465..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py +++ /dev/null @@ -1,61 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - - -class InfinityType: - def __repr__(self) -> str: - return "Infinity" - - def __hash__(self) -> int: - return hash(repr(self)) - - def __lt__(self, other: object) -> bool: - return False - - def __le__(self, other: object) -> bool: - return False - - def __eq__(self, other: object) -> bool: - return isinstance(other, self.__class__) - - def __gt__(self, other: object) -> bool: - return True - - def __ge__(self, other: object) -> bool: - return True - - def __neg__(self: object) -> "NegativeInfinityType": - return NegativeInfinity - - -Infinity = InfinityType() - - -class NegativeInfinityType: - def __repr__(self) -> str: - return "-Infinity" - - def __hash__(self) -> int: - return hash(repr(self)) - - def __lt__(self, other: object) -> bool: - return True - - def __le__(self, other: object) -> bool: - return True - - def __eq__(self, other: object) -> bool: - return isinstance(other, self.__class__) - - def __gt__(self, other: object) -> bool: - return False - - def __ge__(self, other: object) -> bool: - return False - - def __neg__(self: object) -> InfinityType: - return Infinity - - -NegativeInfinity = NegativeInfinityType() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py deleted file mode 100644 index 540e7a4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py +++ /dev/null @@ -1,304 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import operator -import os -import platform -import sys -from typing import Any, Callable, Dict, List, Optional, Tuple, Union - -from pip._vendor.pyparsing import ( # noqa: N817 - Forward, - Group, - Literal as L, - ParseException, - ParseResults, - QuotedString, - ZeroOrMore, - stringEnd, - stringStart, -) - -from .specifiers import InvalidSpecifier, Specifier - -__all__ = [ - "InvalidMarker", - "UndefinedComparison", - "UndefinedEnvironmentName", - "Marker", - "default_environment", -] - -Operator = Callable[[str, str], bool] - - -class InvalidMarker(ValueError): - """ - An invalid marker was found, users should refer to PEP 508. - """ - - -class UndefinedComparison(ValueError): - """ - An invalid operation was attempted on a value that doesn't support it. - """ - - -class UndefinedEnvironmentName(ValueError): - """ - A name was attempted to be used that does not exist inside of the - environment. - """ - - -class Node: - def __init__(self, value: Any) -> None: - self.value = value - - def __str__(self) -> str: - return str(self.value) - - def __repr__(self) -> str: - return f"<{self.__class__.__name__}('{self}')>" - - def serialize(self) -> str: - raise NotImplementedError - - -class Variable(Node): - def serialize(self) -> str: - return str(self) - - -class Value(Node): - def serialize(self) -> str: - return f'"{self}"' - - -class Op(Node): - def serialize(self) -> str: - return str(self) - - -VARIABLE = ( - L("implementation_version") - | L("platform_python_implementation") - | L("implementation_name") - | L("python_full_version") - | L("platform_release") - | L("platform_version") - | L("platform_machine") - | L("platform_system") - | L("python_version") - | L("sys_platform") - | L("os_name") - | L("os.name") # PEP-345 - | L("sys.platform") # PEP-345 - | L("platform.version") # PEP-345 - | L("platform.machine") # PEP-345 - | L("platform.python_implementation") # PEP-345 - | L("python_implementation") # undocumented setuptools legacy - | L("extra") # PEP-508 -) -ALIASES = { - "os.name": "os_name", - "sys.platform": "sys_platform", - "platform.version": "platform_version", - "platform.machine": "platform_machine", - "platform.python_implementation": "platform_python_implementation", - "python_implementation": "platform_python_implementation", -} -VARIABLE.setParseAction(lambda s, l, t: Variable(ALIASES.get(t[0], t[0]))) - -VERSION_CMP = ( - L("===") | L("==") | L(">=") | L("<=") | L("!=") | L("~=") | L(">") | L("<") -) - -MARKER_OP = VERSION_CMP | L("not in") | L("in") -MARKER_OP.setParseAction(lambda s, l, t: Op(t[0])) - -MARKER_VALUE = QuotedString("'") | QuotedString('"') -MARKER_VALUE.setParseAction(lambda s, l, t: Value(t[0])) - -BOOLOP = L("and") | L("or") - -MARKER_VAR = VARIABLE | MARKER_VALUE - -MARKER_ITEM = Group(MARKER_VAR + MARKER_OP + MARKER_VAR) -MARKER_ITEM.setParseAction(lambda s, l, t: tuple(t[0])) - -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() - -MARKER_EXPR = Forward() -MARKER_ATOM = MARKER_ITEM | Group(LPAREN + MARKER_EXPR + RPAREN) -MARKER_EXPR << MARKER_ATOM + ZeroOrMore(BOOLOP + MARKER_EXPR) - -MARKER = stringStart + MARKER_EXPR + stringEnd - - -def _coerce_parse_result(results: Union[ParseResults, List[Any]]) -> List[Any]: - if isinstance(results, ParseResults): - return [_coerce_parse_result(i) for i in results] - else: - return results - - -def _format_marker( - marker: Union[List[str], Tuple[Node, ...], str], first: Optional[bool] = True -) -> str: - - assert isinstance(marker, (list, tuple, str)) - - # Sometimes we have a structure like [[...]] which is a single item list - # where the single item is itself it's own list. In that case we want skip - # the rest of this function so that we don't get extraneous () on the - # outside. - if ( - isinstance(marker, list) - and len(marker) == 1 - and isinstance(marker[0], (list, tuple)) - ): - return _format_marker(marker[0]) - - if isinstance(marker, list): - inner = (_format_marker(m, first=False) for m in marker) - if first: - return " ".join(inner) - else: - return "(" + " ".join(inner) + ")" - elif isinstance(marker, tuple): - return " ".join([m.serialize() for m in marker]) - else: - return marker - - -_operators: Dict[str, Operator] = { - "in": lambda lhs, rhs: lhs in rhs, - "not in": lambda lhs, rhs: lhs not in rhs, - "<": operator.lt, - "<=": operator.le, - "==": operator.eq, - "!=": operator.ne, - ">=": operator.ge, - ">": operator.gt, -} - - -def _eval_op(lhs: str, op: Op, rhs: str) -> bool: - try: - spec = Specifier("".join([op.serialize(), rhs])) - except InvalidSpecifier: - pass - else: - return spec.contains(lhs) - - oper: Optional[Operator] = _operators.get(op.serialize()) - if oper is None: - raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.") - - return oper(lhs, rhs) - - -class Undefined: - pass - - -_undefined = Undefined() - - -def _get_env(environment: Dict[str, str], name: str) -> str: - value: Union[str, Undefined] = environment.get(name, _undefined) - - if isinstance(value, Undefined): - raise UndefinedEnvironmentName( - f"{name!r} does not exist in evaluation environment." - ) - - return value - - -def _evaluate_markers(markers: List[Any], environment: Dict[str, str]) -> bool: - groups: List[List[bool]] = [[]] - - for marker in markers: - assert isinstance(marker, (list, tuple, str)) - - if isinstance(marker, list): - groups[-1].append(_evaluate_markers(marker, environment)) - elif isinstance(marker, tuple): - lhs, op, rhs = marker - - if isinstance(lhs, Variable): - lhs_value = _get_env(environment, lhs.value) - rhs_value = rhs.value - else: - lhs_value = lhs.value - rhs_value = _get_env(environment, rhs.value) - - groups[-1].append(_eval_op(lhs_value, op, rhs_value)) - else: - assert marker in ["and", "or"] - if marker == "or": - groups.append([]) - - return any(all(item) for item in groups) - - -def format_full_version(info: "sys._version_info") -> str: - version = "{0.major}.{0.minor}.{0.micro}".format(info) - kind = info.releaselevel - if kind != "final": - version += kind[0] + str(info.serial) - return version - - -def default_environment() -> Dict[str, str]: - iver = format_full_version(sys.implementation.version) - implementation_name = sys.implementation.name - return { - "implementation_name": implementation_name, - "implementation_version": iver, - "os_name": os.name, - "platform_machine": platform.machine(), - "platform_release": platform.release(), - "platform_system": platform.system(), - "platform_version": platform.version(), - "python_full_version": platform.python_version(), - "platform_python_implementation": platform.python_implementation(), - "python_version": ".".join(platform.python_version_tuple()[:2]), - "sys_platform": sys.platform, - } - - -class Marker: - def __init__(self, marker: str) -> None: - try: - self._markers = _coerce_parse_result(MARKER.parseString(marker)) - except ParseException as e: - raise InvalidMarker( - f"Invalid marker: {marker!r}, parse error at " - f"{marker[e.loc : e.loc + 8]!r}" - ) - - def __str__(self) -> str: - return _format_marker(self._markers) - - def __repr__(self) -> str: - return f"" - - def evaluate(self, environment: Optional[Dict[str, str]] = None) -> bool: - """Evaluate a marker. - - Return the boolean from evaluating the given marker against the - environment. environment is an optional argument to override all or - part of the determined environment. - - The environment is determined from the current Python process. - """ - current_environment = default_environment() - if environment is not None: - current_environment.update(environment) - - return _evaluate_markers(self._markers, current_environment) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py deleted file mode 100644 index 1eab7dd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py +++ /dev/null @@ -1,146 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import re -import string -import urllib.parse -from typing import List, Optional as TOptional, Set - -from pip._vendor.pyparsing import ( # noqa - Combine, - Literal as L, - Optional, - ParseException, - Regex, - Word, - ZeroOrMore, - originalTextFor, - stringEnd, - stringStart, -) - -from .markers import MARKER_EXPR, Marker -from .specifiers import LegacySpecifier, Specifier, SpecifierSet - - -class InvalidRequirement(ValueError): - """ - An invalid requirement was found, users should refer to PEP 508. - """ - - -ALPHANUM = Word(string.ascii_letters + string.digits) - -LBRACKET = L("[").suppress() -RBRACKET = L("]").suppress() -LPAREN = L("(").suppress() -RPAREN = L(")").suppress() -COMMA = L(",").suppress() -SEMICOLON = L(";").suppress() -AT = L("@").suppress() - -PUNCTUATION = Word("-_.") -IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM) -IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END)) - -NAME = IDENTIFIER("name") -EXTRA = IDENTIFIER - -URI = Regex(r"[^ ]+")("url") -URL = AT + URI - -EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA) -EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras") - -VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE) -VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE) - -VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY -VERSION_MANY = Combine( - VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE), joinString=",", adjacent=False -)("_raw_spec") -_VERSION_SPEC = Optional((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY) -_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or "") - -VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier") -VERSION_SPEC.setParseAction(lambda s, l, t: t[1]) - -MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") -MARKER_EXPR.setParseAction( - lambda s, l, t: Marker(s[t._original_start : t._original_end]) -) -MARKER_SEPARATOR = SEMICOLON -MARKER = MARKER_SEPARATOR + MARKER_EXPR - -VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER) -URL_AND_MARKER = URL + Optional(MARKER) - -NAMED_REQUIREMENT = NAME + Optional(EXTRAS) + (URL_AND_MARKER | VERSION_AND_MARKER) - -REQUIREMENT = stringStart + NAMED_REQUIREMENT + stringEnd -# pyparsing isn't thread safe during initialization, so we do it eagerly, see -# issue #104 -REQUIREMENT.parseString("x[]") - - -class Requirement: - """Parse a requirement. - - Parse a given requirement string into its parts, such as name, specifier, - URL, and extras. Raises InvalidRequirement on a badly-formed requirement - string. - """ - - # TODO: Can we test whether something is contained within a requirement? - # If so how do we do that? Do we need to test against the _name_ of - # the thing as well as the version? What about the markers? - # TODO: Can we normalize the name and extra name? - - def __init__(self, requirement_string: str) -> None: - try: - req = REQUIREMENT.parseString(requirement_string) - except ParseException as e: - raise InvalidRequirement( - f'Parse error at "{ requirement_string[e.loc : e.loc + 8]!r}": {e.msg}' - ) - - self.name: str = req.name - if req.url: - parsed_url = urllib.parse.urlparse(req.url) - if parsed_url.scheme == "file": - if urllib.parse.urlunparse(parsed_url) != req.url: - raise InvalidRequirement("Invalid URL given") - elif not (parsed_url.scheme and parsed_url.netloc) or ( - not parsed_url.scheme and not parsed_url.netloc - ): - raise InvalidRequirement(f"Invalid URL: {req.url}") - self.url: TOptional[str] = req.url - else: - self.url = None - self.extras: Set[str] = set(req.extras.asList() if req.extras else []) - self.specifier: SpecifierSet = SpecifierSet(req.specifier) - self.marker: TOptional[Marker] = req.marker if req.marker else None - - def __str__(self) -> str: - parts: List[str] = [self.name] - - if self.extras: - formatted_extras = ",".join(sorted(self.extras)) - parts.append(f"[{formatted_extras}]") - - if self.specifier: - parts.append(str(self.specifier)) - - if self.url: - parts.append(f"@ {self.url}") - if self.marker: - parts.append(" ") - - if self.marker: - parts.append(f"; {self.marker}") - - return "".join(parts) - - def __repr__(self) -> str: - return f"" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py deleted file mode 100644 index 0e218a6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py +++ /dev/null @@ -1,802 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import abc -import functools -import itertools -import re -import warnings -from typing import ( - Callable, - Dict, - Iterable, - Iterator, - List, - Optional, - Pattern, - Set, - Tuple, - TypeVar, - Union, -) - -from .utils import canonicalize_version -from .version import LegacyVersion, Version, parse - -ParsedVersion = Union[Version, LegacyVersion] -UnparsedVersion = Union[Version, LegacyVersion, str] -VersionTypeVar = TypeVar("VersionTypeVar", bound=UnparsedVersion) -CallableOperator = Callable[[ParsedVersion, str], bool] - - -class InvalidSpecifier(ValueError): - """ - An invalid specifier was found, users should refer to PEP 440. - """ - - -class BaseSpecifier(metaclass=abc.ABCMeta): - @abc.abstractmethod - def __str__(self) -> str: - """ - Returns the str representation of this Specifier like object. This - should be representative of the Specifier itself. - """ - - @abc.abstractmethod - def __hash__(self) -> int: - """ - Returns a hash value for this Specifier like object. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Returns a boolean representing whether or not the two Specifier like - objects are equal. - """ - - @abc.abstractproperty - def prereleases(self) -> Optional[bool]: - """ - Returns whether or not pre-releases as a whole are allowed by this - specifier. - """ - - @prereleases.setter - def prereleases(self, value: bool) -> None: - """ - Sets whether or not pre-releases as a whole are allowed by this - specifier. - """ - - @abc.abstractmethod - def contains(self, item: str, prereleases: Optional[bool] = None) -> bool: - """ - Determines if the given item is contained within this specifier. - """ - - @abc.abstractmethod - def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - """ - Takes an iterable of items and filters them so that only items which - are contained within this specifier are allowed in it. - """ - - -class _IndividualSpecifier(BaseSpecifier): - - _operators: Dict[str, str] = {} - _regex: Pattern[str] - - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - match = self._regex.search(spec) - if not match: - raise InvalidSpecifier(f"Invalid specifier: '{spec}'") - - self._spec: Tuple[str, str] = ( - match.group("operator").strip(), - match.group("version").strip(), - ) - - # Store whether or not this Specifier should accept prereleases - self._prereleases = prereleases - - def __repr__(self) -> str: - pre = ( - f", prereleases={self.prereleases!r}" - if self._prereleases is not None - else "" - ) - - return f"<{self.__class__.__name__}({str(self)!r}{pre})>" - - def __str__(self) -> str: - return "{}{}".format(*self._spec) - - @property - def _canonical_spec(self) -> Tuple[str, str]: - return self._spec[0], canonicalize_version(self._spec[1]) - - def __hash__(self) -> int: - return hash(self._canonical_spec) - - def __eq__(self, other: object) -> bool: - if isinstance(other, str): - try: - other = self.__class__(str(other)) - except InvalidSpecifier: - return NotImplemented - elif not isinstance(other, self.__class__): - return NotImplemented - - return self._canonical_spec == other._canonical_spec - - def _get_operator(self, op: str) -> CallableOperator: - operator_callable: CallableOperator = getattr( - self, f"_compare_{self._operators[op]}" - ) - return operator_callable - - def _coerce_version(self, version: UnparsedVersion) -> ParsedVersion: - if not isinstance(version, (LegacyVersion, Version)): - version = parse(version) - return version - - @property - def operator(self) -> str: - return self._spec[0] - - @property - def version(self) -> str: - return self._spec[1] - - @property - def prereleases(self) -> Optional[bool]: - return self._prereleases - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - - def __contains__(self, item: str) -> bool: - return self.contains(item) - - def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None - ) -> bool: - - # Determine if prereleases are to be allowed or not. - if prereleases is None: - prereleases = self.prereleases - - # Normalize item to a Version or LegacyVersion, this allows us to have - # a shortcut for ``"2.0" in Specifier(">=2") - normalized_item = self._coerce_version(item) - - # Determine if we should be supporting prereleases in this specifier - # or not, if we do not support prereleases than we can short circuit - # logic if this version is a prereleases. - if normalized_item.is_prerelease and not prereleases: - return False - - # Actually do the comparison to determine if this item is contained - # within this Specifier or not. - operator_callable: CallableOperator = self._get_operator(self.operator) - return operator_callable(normalized_item, self.version) - - def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - - yielded = False - found_prereleases = [] - - kw = {"prereleases": prereleases if prereleases is not None else True} - - # Attempt to iterate over all the values in the iterable and if any of - # them match, yield them. - for version in iterable: - parsed_version = self._coerce_version(version) - - if self.contains(parsed_version, **kw): - # If our version is a prerelease, and we were not set to allow - # prereleases, then we'll store it for later in case nothing - # else matches this specifier. - if parsed_version.is_prerelease and not ( - prereleases or self.prereleases - ): - found_prereleases.append(version) - # Either this is not a prerelease, or we should have been - # accepting prereleases from the beginning. - else: - yielded = True - yield version - - # Now that we've iterated over everything, determine if we've yielded - # any values, and if we have not and we have any prereleases stored up - # then we will go ahead and yield the prereleases. - if not yielded and found_prereleases: - for version in found_prereleases: - yield version - - -class LegacySpecifier(_IndividualSpecifier): - - _regex_str = r""" - (?P(==|!=|<=|>=|<|>)) - \s* - (?P - [^,;\s)]* # Since this is a "legacy" specifier, and the version - # string can be just about anything, we match everything - # except for whitespace, a semi-colon for marker support, - # a closing paren since versions can be enclosed in - # them, and a comma since it's a version separator. - ) - """ - - _regex = re.compile(r"^\s*" + _regex_str + r"\s*$", re.VERBOSE | re.IGNORECASE) - - _operators = { - "==": "equal", - "!=": "not_equal", - "<=": "less_than_equal", - ">=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - } - - def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: - super().__init__(spec, prereleases) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def _coerce_version(self, version: UnparsedVersion) -> LegacyVersion: - if not isinstance(version, LegacyVersion): - version = LegacyVersion(str(version)) - return version - - def _compare_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective == self._coerce_version(spec) - - def _compare_not_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective != self._coerce_version(spec) - - def _compare_less_than_equal(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective <= self._coerce_version(spec) - - def _compare_greater_than_equal( - self, prospective: LegacyVersion, spec: str - ) -> bool: - return prospective >= self._coerce_version(spec) - - def _compare_less_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective < self._coerce_version(spec) - - def _compare_greater_than(self, prospective: LegacyVersion, spec: str) -> bool: - return prospective > self._coerce_version(spec) - - -def _require_version_compare( - fn: Callable[["Specifier", ParsedVersion, str], bool] -) -> Callable[["Specifier", ParsedVersion, str], bool]: - @functools.wraps(fn) - def wrapped(self: "Specifier", prospective: ParsedVersion, spec: str) -> bool: - if not isinstance(prospective, Version): - return False - return fn(self, prospective, spec) - - return wrapped - - -class Specifier(_IndividualSpecifier): - - _regex_str = r""" - (?P(~=|==|!=|<=|>=|<|>|===)) - (?P - (?: - # The identity operators allow for an escape hatch that will - # do an exact string match of the version you wish to install. - # This will not be parsed by PEP 440 and we cannot determine - # any semantic meaning from it. This operator is discouraged - # but included entirely as an escape hatch. - (?<====) # Only match for the identity operator - \s* - [^\s]* # We just match everything, except for whitespace - # since we are only testing for strict identity. - ) - | - (?: - # The (non)equality operators allow for wild card and local - # versions to be specified so we have to define these two - # operators separately to enable that. - (?<===|!=) # Only match for equals and not equals - - \s* - v? - (?:[0-9]+!)? # epoch - [0-9]+(?:\.[0-9]+)* # release - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - - # You cannot use a wild card and a dev or local version - # together so group them with a | and make them optional. - (?: - (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release - (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local - | - \.\* # Wild card syntax of .* - )? - ) - | - (?: - # The compatible operator requires at least two digits in the - # release segment. - (?<=~=) # Only match for the compatible operator - - \s* - v? - (?:[0-9]+!)? # epoch - [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) - (?: # pre release - [-_\.]? - (a|b|c|rc|alpha|beta|pre|preview) - [-_\.]? - [0-9]* - )? - (?: # post release - (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) - )? - (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release - ) - | - (?: - # All other operators only allow a sub set of what the - # (non)equality operators do. Specifically they do not allow - # local versions to be specified nor do they allow the prefix - # matching wild cards. - (?=": "greater_than_equal", - "<": "less_than", - ">": "greater_than", - "===": "arbitrary", - } - - @_require_version_compare - def _compare_compatible(self, prospective: ParsedVersion, spec: str) -> bool: - - # Compatible releases have an equivalent combination of >= and ==. That - # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to - # implement this in terms of the other specifiers instead of - # implementing it ourselves. The only thing we need to do is construct - # the other specifiers. - - # We want everything but the last item in the version, but we want to - # ignore suffix segments. - prefix = ".".join( - list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1] - ) - - # Add the prefix notation to the end of our string - prefix += ".*" - - return self._get_operator(">=")(prospective, spec) and self._get_operator("==")( - prospective, prefix - ) - - @_require_version_compare - def _compare_equal(self, prospective: ParsedVersion, spec: str) -> bool: - - # We need special logic to handle prefix matching - if spec.endswith(".*"): - # In the case of prefix matching we want to ignore local segment. - prospective = Version(prospective.public) - # Split the spec out by dots, and pretend that there is an implicit - # dot in between a release segment and a pre-release segment. - split_spec = _version_split(spec[:-2]) # Remove the trailing .* - - # Split the prospective version out by dots, and pretend that there - # is an implicit dot in between a release segment and a pre-release - # segment. - split_prospective = _version_split(str(prospective)) - - # Shorten the prospective version to be the same length as the spec - # so that we can determine if the specifier is a prefix of the - # prospective version or not. - shortened_prospective = split_prospective[: len(split_spec)] - - # Pad out our two sides with zeros so that they both equal the same - # length. - padded_spec, padded_prospective = _pad_version( - split_spec, shortened_prospective - ) - - return padded_prospective == padded_spec - else: - # Convert our spec string into a Version - spec_version = Version(spec) - - # If the specifier does not have a local segment, then we want to - # act as if the prospective version also does not have a local - # segment. - if not spec_version.local: - prospective = Version(prospective.public) - - return prospective == spec_version - - @_require_version_compare - def _compare_not_equal(self, prospective: ParsedVersion, spec: str) -> bool: - return not self._compare_equal(prospective, spec) - - @_require_version_compare - def _compare_less_than_equal(self, prospective: ParsedVersion, spec: str) -> bool: - - # NB: Local version identifiers are NOT permitted in the version - # specifier, so local version labels can be universally removed from - # the prospective version. - return Version(prospective.public) <= Version(spec) - - @_require_version_compare - def _compare_greater_than_equal( - self, prospective: ParsedVersion, spec: str - ) -> bool: - - # NB: Local version identifiers are NOT permitted in the version - # specifier, so local version labels can be universally removed from - # the prospective version. - return Version(prospective.public) >= Version(spec) - - @_require_version_compare - def _compare_less_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - - # Convert our spec to a Version instance, since we'll want to work with - # it as a version. - spec = Version(spec_str) - - # Check to see if the prospective version is less than the spec - # version. If it's not we can short circuit and just return False now - # instead of doing extra unneeded work. - if not prospective < spec: - return False - - # This special case is here so that, unless the specifier itself - # includes is a pre-release version, that we do not accept pre-release - # versions for the version mentioned in the specifier (e.g. <3.1 should - # not match 3.1.dev0, but should match 3.0.dev0). - if not spec.is_prerelease and prospective.is_prerelease: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # If we've gotten to here, it means that prospective version is both - # less than the spec version *and* it's not a pre-release of the same - # version in the spec. - return True - - @_require_version_compare - def _compare_greater_than(self, prospective: ParsedVersion, spec_str: str) -> bool: - - # Convert our spec to a Version instance, since we'll want to work with - # it as a version. - spec = Version(spec_str) - - # Check to see if the prospective version is greater than the spec - # version. If it's not we can short circuit and just return False now - # instead of doing extra unneeded work. - if not prospective > spec: - return False - - # This special case is here so that, unless the specifier itself - # includes is a post-release version, that we do not accept - # post-release versions for the version mentioned in the specifier - # (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0). - if not spec.is_postrelease and prospective.is_postrelease: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # Ensure that we do not allow a local version of the version mentioned - # in the specifier, which is technically greater than, to match. - if prospective.local is not None: - if Version(prospective.base_version) == Version(spec.base_version): - return False - - # If we've gotten to here, it means that prospective version is both - # greater than the spec version *and* it's not a pre-release of the - # same version in the spec. - return True - - def _compare_arbitrary(self, prospective: Version, spec: str) -> bool: - return str(prospective).lower() == str(spec).lower() - - @property - def prereleases(self) -> bool: - - # If there is an explicit prereleases set for this, then we'll just - # blindly use that. - if self._prereleases is not None: - return self._prereleases - - # Look at all of our specifiers and determine if they are inclusive - # operators, and if they are if they are including an explicit - # prerelease. - operator, version = self._spec - if operator in ["==", ">=", "<=", "~=", "==="]: - # The == specifier can include a trailing .*, if it does we - # want to remove before parsing. - if operator == "==" and version.endswith(".*"): - version = version[:-2] - - # Parse the version, and if it is a pre-release than this - # specifier allows pre-releases. - if parse(version).is_prerelease: - return True - - return False - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - - -_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") - - -def _version_split(version: str) -> List[str]: - result: List[str] = [] - for item in version.split("."): - match = _prefix_regex.search(item) - if match: - result.extend(match.groups()) - else: - result.append(item) - return result - - -def _is_not_suffix(segment: str) -> bool: - return not any( - segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post") - ) - - -def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]: - left_split, right_split = [], [] - - # Get the release segment of our versions - left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left))) - right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right))) - - # Get the rest of our versions - left_split.append(left[len(left_split[0]) :]) - right_split.append(right[len(right_split[0]) :]) - - # Insert our padding - left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0]))) - right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0]))) - - return (list(itertools.chain(*left_split)), list(itertools.chain(*right_split))) - - -class SpecifierSet(BaseSpecifier): - def __init__( - self, specifiers: str = "", prereleases: Optional[bool] = None - ) -> None: - - # Split on , to break each individual specifier into it's own item, and - # strip each item to remove leading/trailing whitespace. - split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] - - # Parsed each individual specifier, attempting first to make it a - # Specifier and falling back to a LegacySpecifier. - parsed: Set[_IndividualSpecifier] = set() - for specifier in split_specifiers: - try: - parsed.add(Specifier(specifier)) - except InvalidSpecifier: - parsed.add(LegacySpecifier(specifier)) - - # Turn our parsed specifiers into a frozen set and save them for later. - self._specs = frozenset(parsed) - - # Store our prereleases value so we can use it later to determine if - # we accept prereleases or not. - self._prereleases = prereleases - - def __repr__(self) -> str: - pre = ( - f", prereleases={self.prereleases!r}" - if self._prereleases is not None - else "" - ) - - return f"" - - def __str__(self) -> str: - return ",".join(sorted(str(s) for s in self._specs)) - - def __hash__(self) -> int: - return hash(self._specs) - - def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet": - if isinstance(other, str): - other = SpecifierSet(other) - elif not isinstance(other, SpecifierSet): - return NotImplemented - - specifier = SpecifierSet() - specifier._specs = frozenset(self._specs | other._specs) - - if self._prereleases is None and other._prereleases is not None: - specifier._prereleases = other._prereleases - elif self._prereleases is not None and other._prereleases is None: - specifier._prereleases = self._prereleases - elif self._prereleases == other._prereleases: - specifier._prereleases = self._prereleases - else: - raise ValueError( - "Cannot combine SpecifierSets with True and False prerelease " - "overrides." - ) - - return specifier - - def __eq__(self, other: object) -> bool: - if isinstance(other, (str, _IndividualSpecifier)): - other = SpecifierSet(str(other)) - elif not isinstance(other, SpecifierSet): - return NotImplemented - - return self._specs == other._specs - - def __len__(self) -> int: - return len(self._specs) - - def __iter__(self) -> Iterator[_IndividualSpecifier]: - return iter(self._specs) - - @property - def prereleases(self) -> Optional[bool]: - - # If we have been given an explicit prerelease modifier, then we'll - # pass that through here. - if self._prereleases is not None: - return self._prereleases - - # If we don't have any specifiers, and we don't have a forced value, - # then we'll just return None since we don't know if this should have - # pre-releases or not. - if not self._specs: - return None - - # Otherwise we'll see if any of the given specifiers accept - # prereleases, if any of them do we'll return True, otherwise False. - return any(s.prereleases for s in self._specs) - - @prereleases.setter - def prereleases(self, value: bool) -> None: - self._prereleases = value - - def __contains__(self, item: UnparsedVersion) -> bool: - return self.contains(item) - - def contains( - self, item: UnparsedVersion, prereleases: Optional[bool] = None - ) -> bool: - - # Ensure that our item is a Version or LegacyVersion instance. - if not isinstance(item, (LegacyVersion, Version)): - item = parse(item) - - # Determine if we're forcing a prerelease or not, if we're not forcing - # one for this particular filter call, then we'll use whatever the - # SpecifierSet thinks for whether or not we should support prereleases. - if prereleases is None: - prereleases = self.prereleases - - # We can determine if we're going to allow pre-releases by looking to - # see if any of the underlying items supports them. If none of them do - # and this item is a pre-release then we do not allow it and we can - # short circuit that here. - # Note: This means that 1.0.dev1 would not be contained in something - # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 - if not prereleases and item.is_prerelease: - return False - - # We simply dispatch to the underlying specs here to make sure that the - # given version is contained within all of them. - # Note: This use of all() here means that an empty set of specifiers - # will always return True, this is an explicit design decision. - return all(s.contains(item, prereleases=prereleases) for s in self._specs) - - def filter( - self, iterable: Iterable[VersionTypeVar], prereleases: Optional[bool] = None - ) -> Iterable[VersionTypeVar]: - - # Determine if we're forcing a prerelease or not, if we're not forcing - # one for this particular filter call, then we'll use whatever the - # SpecifierSet thinks for whether or not we should support prereleases. - if prereleases is None: - prereleases = self.prereleases - - # If we have any specifiers, then we want to wrap our iterable in the - # filter method for each one, this will act as a logical AND amongst - # each specifier. - if self._specs: - for spec in self._specs: - iterable = spec.filter(iterable, prereleases=bool(prereleases)) - return iterable - # If we do not have any specifiers, then we need to have a rough filter - # which will filter out any pre-releases, unless there are no final - # releases, and which will filter out LegacyVersion in general. - else: - filtered: List[VersionTypeVar] = [] - found_prereleases: List[VersionTypeVar] = [] - - item: UnparsedVersion - parsed_version: Union[Version, LegacyVersion] - - for item in iterable: - # Ensure that we some kind of Version class for this item. - if not isinstance(item, (LegacyVersion, Version)): - parsed_version = parse(item) - else: - parsed_version = item - - # Filter out any item which is parsed as a LegacyVersion - if isinstance(parsed_version, LegacyVersion): - continue - - # Store any item which is a pre-release for later unless we've - # already found a final version or we are accepting prereleases - if parsed_version.is_prerelease and not prereleases: - if not filtered: - found_prereleases.append(item) - else: - filtered.append(item) - - # If we've found no items except for pre-releases, then we'll go - # ahead and use the pre-releases - if not filtered and found_prereleases and prereleases is None: - return found_prereleases - - return filtered diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py deleted file mode 100644 index 9a3d25a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py +++ /dev/null @@ -1,487 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import logging -import platform -import sys -import sysconfig -from importlib.machinery import EXTENSION_SUFFIXES -from typing import ( - Dict, - FrozenSet, - Iterable, - Iterator, - List, - Optional, - Sequence, - Tuple, - Union, - cast, -) - -from . import _manylinux, _musllinux - -logger = logging.getLogger(__name__) - -PythonVersion = Sequence[int] -MacVersion = Tuple[int, int] - -INTERPRETER_SHORT_NAMES: Dict[str, str] = { - "python": "py", # Generic. - "cpython": "cp", - "pypy": "pp", - "ironpython": "ip", - "jython": "jy", -} - - -_32_BIT_INTERPRETER = sys.maxsize <= 2 ** 32 - - -class Tag: - """ - A representation of the tag triple for a wheel. - - Instances are considered immutable and thus are hashable. Equality checking - is also supported. - """ - - __slots__ = ["_interpreter", "_abi", "_platform", "_hash"] - - def __init__(self, interpreter: str, abi: str, platform: str) -> None: - self._interpreter = interpreter.lower() - self._abi = abi.lower() - self._platform = platform.lower() - # The __hash__ of every single element in a Set[Tag] will be evaluated each time - # that a set calls its `.disjoint()` method, which may be called hundreds of - # times when scanning a page of links for packages with tags matching that - # Set[Tag]. Pre-computing the value here produces significant speedups for - # downstream consumers. - self._hash = hash((self._interpreter, self._abi, self._platform)) - - @property - def interpreter(self) -> str: - return self._interpreter - - @property - def abi(self) -> str: - return self._abi - - @property - def platform(self) -> str: - return self._platform - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Tag): - return NotImplemented - - return ( - (self._hash == other._hash) # Short-circuit ASAP for perf reasons. - and (self._platform == other._platform) - and (self._abi == other._abi) - and (self._interpreter == other._interpreter) - ) - - def __hash__(self) -> int: - return self._hash - - def __str__(self) -> str: - return f"{self._interpreter}-{self._abi}-{self._platform}" - - def __repr__(self) -> str: - return f"<{self} @ {id(self)}>" - - -def parse_tag(tag: str) -> FrozenSet[Tag]: - """ - Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances. - - Returning a set is required due to the possibility that the tag is a - compressed tag set. - """ - tags = set() - interpreters, abis, platforms = tag.split("-") - for interpreter in interpreters.split("."): - for abi in abis.split("."): - for platform_ in platforms.split("."): - tags.add(Tag(interpreter, abi, platform_)) - return frozenset(tags) - - -def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: - value = sysconfig.get_config_var(name) - if value is None and warn: - logger.debug( - "Config variable '%s' is unset, Python ABI tag may be incorrect", name - ) - return value - - -def _normalize_string(string: str) -> str: - return string.replace(".", "_").replace("-", "_") - - -def _abi3_applies(python_version: PythonVersion) -> bool: - """ - Determine if the Python version supports abi3. - - PEP 384 was first implemented in Python 3.2. - """ - return len(python_version) > 1 and tuple(python_version) >= (3, 2) - - -def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: - py_version = tuple(py_version) # To allow for version comparison. - abis = [] - version = _version_nodot(py_version[:2]) - debug = pymalloc = ucs4 = "" - with_debug = _get_config_var("Py_DEBUG", warn) - has_refcount = hasattr(sys, "gettotalrefcount") - # Windows doesn't set Py_DEBUG, so checking for support of debug-compiled - # extension modules is the best option. - # https://github.com/pypa/pip/issues/3383#issuecomment-173267692 - has_ext = "_d.pyd" in EXTENSION_SUFFIXES - if with_debug or (with_debug is None and (has_refcount or has_ext)): - debug = "d" - if py_version < (3, 8): - with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) - if with_pymalloc or with_pymalloc is None: - pymalloc = "m" - if py_version < (3, 3): - unicode_size = _get_config_var("Py_UNICODE_SIZE", warn) - if unicode_size == 4 or ( - unicode_size is None and sys.maxunicode == 0x10FFFF - ): - ucs4 = "u" - elif debug: - # Debug builds can also load "normal" extension modules. - # We can also assume no UCS-4 or pymalloc requirement. - abis.append(f"cp{version}") - abis.insert( - 0, - "cp{version}{debug}{pymalloc}{ucs4}".format( - version=version, debug=debug, pymalloc=pymalloc, ucs4=ucs4 - ), - ) - return abis - - -def cpython_tags( - python_version: Optional[PythonVersion] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, - *, - warn: bool = False, -) -> Iterator[Tag]: - """ - Yields the tags for a CPython interpreter. - - The tags consist of: - - cp-- - - cp-abi3- - - cp-none- - - cp-abi3- # Older Python versions down to 3.2. - - If python_version only specifies a major version then user-provided ABIs and - the 'none' ABItag will be used. - - If 'abi3' or 'none' are specified in 'abis' then they will be yielded at - their normal position and not at the beginning. - """ - if not python_version: - python_version = sys.version_info[:2] - - interpreter = f"cp{_version_nodot(python_version[:2])}" - - if abis is None: - if len(python_version) > 1: - abis = _cpython_abis(python_version, warn) - else: - abis = [] - abis = list(abis) - # 'abi3' and 'none' are explicitly handled later. - for explicit_abi in ("abi3", "none"): - try: - abis.remove(explicit_abi) - except ValueError: - pass - - platforms = list(platforms or platform_tags()) - for abi in abis: - for platform_ in platforms: - yield Tag(interpreter, abi, platform_) - if _abi3_applies(python_version): - yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms) - yield from (Tag(interpreter, "none", platform_) for platform_ in platforms) - - if _abi3_applies(python_version): - for minor_version in range(python_version[1] - 1, 1, -1): - for platform_ in platforms: - interpreter = "cp{version}".format( - version=_version_nodot((python_version[0], minor_version)) - ) - yield Tag(interpreter, "abi3", platform_) - - -def _generic_abi() -> Iterator[str]: - abi = sysconfig.get_config_var("SOABI") - if abi: - yield _normalize_string(abi) - - -def generic_tags( - interpreter: Optional[str] = None, - abis: Optional[Iterable[str]] = None, - platforms: Optional[Iterable[str]] = None, - *, - warn: bool = False, -) -> Iterator[Tag]: - """ - Yields the tags for a generic interpreter. - - The tags consist of: - - -- - - The "none" ABI will be added if it was not explicitly provided. - """ - if not interpreter: - interp_name = interpreter_name() - interp_version = interpreter_version(warn=warn) - interpreter = "".join([interp_name, interp_version]) - if abis is None: - abis = _generic_abi() - platforms = list(platforms or platform_tags()) - abis = list(abis) - if "none" not in abis: - abis.append("none") - for abi in abis: - for platform_ in platforms: - yield Tag(interpreter, abi, platform_) - - -def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]: - """ - Yields Python versions in descending order. - - After the latest version, the major-only version will be yielded, and then - all previous versions of that major version. - """ - if len(py_version) > 1: - yield f"py{_version_nodot(py_version[:2])}" - yield f"py{py_version[0]}" - if len(py_version) > 1: - for minor in range(py_version[1] - 1, -1, -1): - yield f"py{_version_nodot((py_version[0], minor))}" - - -def compatible_tags( - python_version: Optional[PythonVersion] = None, - interpreter: Optional[str] = None, - platforms: Optional[Iterable[str]] = None, -) -> Iterator[Tag]: - """ - Yields the sequence of tags that are compatible with a specific version of Python. - - The tags consist of: - - py*-none- - - -none-any # ... if `interpreter` is provided. - - py*-none-any - """ - if not python_version: - python_version = sys.version_info[:2] - platforms = list(platforms or platform_tags()) - for version in _py_interpreter_range(python_version): - for platform_ in platforms: - yield Tag(version, "none", platform_) - if interpreter: - yield Tag(interpreter, "none", "any") - for version in _py_interpreter_range(python_version): - yield Tag(version, "none", "any") - - -def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str: - if not is_32bit: - return arch - - if arch.startswith("ppc"): - return "ppc" - - return "i386" - - -def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: - formats = [cpu_arch] - if cpu_arch == "x86_64": - if version < (10, 4): - return [] - formats.extend(["intel", "fat64", "fat32"]) - - elif cpu_arch == "i386": - if version < (10, 4): - return [] - formats.extend(["intel", "fat32", "fat"]) - - elif cpu_arch == "ppc64": - # TODO: Need to care about 32-bit PPC for ppc64 through 10.2? - if version > (10, 5) or version < (10, 4): - return [] - formats.append("fat64") - - elif cpu_arch == "ppc": - if version > (10, 6): - return [] - formats.extend(["fat32", "fat"]) - - if cpu_arch in {"arm64", "x86_64"}: - formats.append("universal2") - - if cpu_arch in {"x86_64", "i386", "ppc64", "ppc", "intel"}: - formats.append("universal") - - return formats - - -def mac_platforms( - version: Optional[MacVersion] = None, arch: Optional[str] = None -) -> Iterator[str]: - """ - Yields the platform tags for a macOS system. - - The `version` parameter is a two-item tuple specifying the macOS version to - generate platform tags for. The `arch` parameter is the CPU architecture to - generate platform tags for. Both parameters default to the appropriate value - for the current system. - """ - version_str, _, cpu_arch = platform.mac_ver() - if version is None: - version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) - else: - version = version - if arch is None: - arch = _mac_arch(cpu_arch) - else: - arch = arch - - if (10, 0) <= version and version < (11, 0): - # Prior to Mac OS 11, each yearly release of Mac OS bumped the - # "minor" version number. The major version was always 10. - for minor_version in range(version[1], -1, -1): - compat_version = 10, minor_version - binary_formats = _mac_binary_formats(compat_version, arch) - for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=10, minor=minor_version, binary_format=binary_format - ) - - if version >= (11, 0): - # Starting with Mac OS 11, each yearly release bumps the major version - # number. The minor versions are now the midyear updates. - for major_version in range(version[0], 10, -1): - compat_version = major_version, 0 - binary_formats = _mac_binary_formats(compat_version, arch) - for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=major_version, minor=0, binary_format=binary_format - ) - - if version >= (11, 0): - # Mac OS 11 on x86_64 is compatible with binaries from previous releases. - # Arm64 support was introduced in 11.0, so no Arm binaries from previous - # releases exist. - # - # However, the "universal2" binary format can have a - # macOS version earlier than 11.0 when the x86_64 part of the binary supports - # that version of macOS. - if arch == "x86_64": - for minor_version in range(16, 3, -1): - compat_version = 10, minor_version - binary_formats = _mac_binary_formats(compat_version, arch) - for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) - else: - for minor_version in range(16, 3, -1): - compat_version = 10, minor_version - binary_format = "universal2" - yield "macosx_{major}_{minor}_{binary_format}".format( - major=compat_version[0], - minor=compat_version[1], - binary_format=binary_format, - ) - - -def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: - linux = _normalize_string(sysconfig.get_platform()) - if is_32bit: - if linux == "linux_x86_64": - linux = "linux_i686" - elif linux == "linux_aarch64": - linux = "linux_armv7l" - _, arch = linux.split("_", 1) - yield from _manylinux.platform_tags(linux, arch) - yield from _musllinux.platform_tags(arch) - yield linux - - -def _generic_platforms() -> Iterator[str]: - yield _normalize_string(sysconfig.get_platform()) - - -def platform_tags() -> Iterator[str]: - """ - Provides the platform tags for this installation. - """ - if platform.system() == "Darwin": - return mac_platforms() - elif platform.system() == "Linux": - return _linux_platforms() - else: - return _generic_platforms() - - -def interpreter_name() -> str: - """ - Returns the name of the running interpreter. - """ - name = sys.implementation.name - return INTERPRETER_SHORT_NAMES.get(name) or name - - -def interpreter_version(*, warn: bool = False) -> str: - """ - Returns the version of the running interpreter. - """ - version = _get_config_var("py_version_nodot", warn=warn) - if version: - version = str(version) - else: - version = _version_nodot(sys.version_info[:2]) - return version - - -def _version_nodot(version: PythonVersion) -> str: - return "".join(map(str, version)) - - -def sys_tags(*, warn: bool = False) -> Iterator[Tag]: - """ - Returns the sequence of tag triples for the running interpreter. - - The order of the sequence corresponds to priority order for the - interpreter, from most to least important. - """ - - interp_name = interpreter_name() - if interp_name == "cp": - yield from cpython_tags(warn=warn) - else: - yield from generic_tags() - - if interp_name == "pp": - yield from compatible_tags(interpreter="pp3") - else: - yield from compatible_tags() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py deleted file mode 100644 index bab11b8..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py +++ /dev/null @@ -1,136 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import re -from typing import FrozenSet, NewType, Tuple, Union, cast - -from .tags import Tag, parse_tag -from .version import InvalidVersion, Version - -BuildTag = Union[Tuple[()], Tuple[int, str]] -NormalizedName = NewType("NormalizedName", str) - - -class InvalidWheelFilename(ValueError): - """ - An invalid wheel filename was found, users should refer to PEP 427. - """ - - -class InvalidSdistFilename(ValueError): - """ - An invalid sdist filename was found, users should refer to the packaging user guide. - """ - - -_canonicalize_regex = re.compile(r"[-_.]+") -# PEP 427: The build number must start with a digit. -_build_tag_regex = re.compile(r"(\d+)(.*)") - - -def canonicalize_name(name: str) -> NormalizedName: - # This is taken from PEP 503. - value = _canonicalize_regex.sub("-", name).lower() - return cast(NormalizedName, value) - - -def canonicalize_version(version: Union[Version, str]) -> str: - """ - This is very similar to Version.__str__, but has one subtle difference - with the way it handles the release segment. - """ - if isinstance(version, str): - try: - parsed = Version(version) - except InvalidVersion: - # Legacy versions cannot be normalized - return version - else: - parsed = version - - parts = [] - - # Epoch - if parsed.epoch != 0: - parts.append(f"{parsed.epoch}!") - - # Release segment - # NB: This strips trailing '.0's to normalize - parts.append(re.sub(r"(\.0)+$", "", ".".join(str(x) for x in parsed.release))) - - # Pre-release - if parsed.pre is not None: - parts.append("".join(str(x) for x in parsed.pre)) - - # Post-release - if parsed.post is not None: - parts.append(f".post{parsed.post}") - - # Development release - if parsed.dev is not None: - parts.append(f".dev{parsed.dev}") - - # Local version segment - if parsed.local is not None: - parts.append(f"+{parsed.local}") - - return "".join(parts) - - -def parse_wheel_filename( - filename: str, -) -> Tuple[NormalizedName, Version, BuildTag, FrozenSet[Tag]]: - if not filename.endswith(".whl"): - raise InvalidWheelFilename( - f"Invalid wheel filename (extension must be '.whl'): {filename}" - ) - - filename = filename[:-4] - dashes = filename.count("-") - if dashes not in (4, 5): - raise InvalidWheelFilename( - f"Invalid wheel filename (wrong number of parts): {filename}" - ) - - parts = filename.split("-", dashes - 2) - name_part = parts[0] - # See PEP 427 for the rules on escaping the project name - if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None: - raise InvalidWheelFilename(f"Invalid project name: {filename}") - name = canonicalize_name(name_part) - version = Version(parts[1]) - if dashes == 5: - build_part = parts[2] - build_match = _build_tag_regex.match(build_part) - if build_match is None: - raise InvalidWheelFilename( - f"Invalid build number: {build_part} in '{filename}'" - ) - build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2))) - else: - build = () - tags = parse_tag(parts[-1]) - return (name, version, build, tags) - - -def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: - if filename.endswith(".tar.gz"): - file_stem = filename[: -len(".tar.gz")] - elif filename.endswith(".zip"): - file_stem = filename[: -len(".zip")] - else: - raise InvalidSdistFilename( - f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" - f" {filename}" - ) - - # We are requiring a PEP 440 version, which cannot contain dashes, - # so we split on the last dash. - name_part, sep, version_part = file_stem.rpartition("-") - if not sep: - raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") - - name = canonicalize_name(name_part) - version = Version(version_part) - return (name, version) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py deleted file mode 100644 index de9a09a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py +++ /dev/null @@ -1,504 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import collections -import itertools -import re -import warnings -from typing import Callable, Iterator, List, Optional, SupportsInt, Tuple, Union - -from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType - -__all__ = ["parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN"] - -InfiniteTypes = Union[InfinityType, NegativeInfinityType] -PrePostDevType = Union[InfiniteTypes, Tuple[str, int]] -SubLocalType = Union[InfiniteTypes, int, str] -LocalType = Union[ - NegativeInfinityType, - Tuple[ - Union[ - SubLocalType, - Tuple[SubLocalType, str], - Tuple[NegativeInfinityType, SubLocalType], - ], - ..., - ], -] -CmpKey = Tuple[ - int, Tuple[int, ...], PrePostDevType, PrePostDevType, PrePostDevType, LocalType -] -LegacyCmpKey = Tuple[int, Tuple[str, ...]] -VersionComparisonMethod = Callable[ - [Union[CmpKey, LegacyCmpKey], Union[CmpKey, LegacyCmpKey]], bool -] - -_Version = collections.namedtuple( - "_Version", ["epoch", "release", "dev", "pre", "post", "local"] -) - - -def parse(version: str) -> Union["LegacyVersion", "Version"]: - """ - Parse the given version string and return either a :class:`Version` object - or a :class:`LegacyVersion` object depending on if the given version is - a valid PEP 440 version or a legacy version. - """ - try: - return Version(version) - except InvalidVersion: - return LegacyVersion(version) - - -class InvalidVersion(ValueError): - """ - An invalid version was found, users should refer to PEP 440. - """ - - -class _BaseVersion: - _key: Union[CmpKey, LegacyCmpKey] - - def __hash__(self) -> int: - return hash(self._key) - - # Please keep the duplicated `isinstance` check - # in the six comparisons hereunder - # unless you find a way to avoid adding overhead function calls. - def __lt__(self, other: "_BaseVersion") -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key < other._key - - def __le__(self, other: "_BaseVersion") -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key <= other._key - - def __eq__(self, other: object) -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key == other._key - - def __ge__(self, other: "_BaseVersion") -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key >= other._key - - def __gt__(self, other: "_BaseVersion") -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key > other._key - - def __ne__(self, other: object) -> bool: - if not isinstance(other, _BaseVersion): - return NotImplemented - - return self._key != other._key - - -class LegacyVersion(_BaseVersion): - def __init__(self, version: str) -> None: - self._version = str(version) - self._key = _legacy_cmpkey(self._version) - - warnings.warn( - "Creating a LegacyVersion has been deprecated and will be " - "removed in the next major release", - DeprecationWarning, - ) - - def __str__(self) -> str: - return self._version - - def __repr__(self) -> str: - return f"" - - @property - def public(self) -> str: - return self._version - - @property - def base_version(self) -> str: - return self._version - - @property - def epoch(self) -> int: - return -1 - - @property - def release(self) -> None: - return None - - @property - def pre(self) -> None: - return None - - @property - def post(self) -> None: - return None - - @property - def dev(self) -> None: - return None - - @property - def local(self) -> None: - return None - - @property - def is_prerelease(self) -> bool: - return False - - @property - def is_postrelease(self) -> bool: - return False - - @property - def is_devrelease(self) -> bool: - return False - - -_legacy_version_component_re = re.compile(r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE) - -_legacy_version_replacement_map = { - "pre": "c", - "preview": "c", - "-": "final-", - "rc": "c", - "dev": "@", -} - - -def _parse_version_parts(s: str) -> Iterator[str]: - for part in _legacy_version_component_re.split(s): - part = _legacy_version_replacement_map.get(part, part) - - if not part or part == ".": - continue - - if part[:1] in "0123456789": - # pad for numeric comparison - yield part.zfill(8) - else: - yield "*" + part - - # ensure that alpha/beta/candidate are before final - yield "*final" - - -def _legacy_cmpkey(version: str) -> LegacyCmpKey: - - # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch - # greater than or equal to 0. This will effectively put the LegacyVersion, - # which uses the defacto standard originally implemented by setuptools, - # as before all PEP 440 versions. - epoch = -1 - - # This scheme is taken from pkg_resources.parse_version setuptools prior to - # it's adoption of the packaging library. - parts: List[str] = [] - for part in _parse_version_parts(version.lower()): - if part.startswith("*"): - # remove "-" before a prerelease tag - if part < "*final": - while parts and parts[-1] == "*final-": - parts.pop() - - # remove trailing zeros from each series of numeric parts - while parts and parts[-1] == "00000000": - parts.pop() - - parts.append(part) - - return epoch, tuple(parts) - - -# Deliberately not anchored to the start and end of the string, to make it -# easier for 3rd party code to reuse -VERSION_PATTERN = r""" - v? - (?: - (?:(?P[0-9]+)!)? # epoch - (?P[0-9]+(?:\.[0-9]+)*) # release segment - (?P

                                              # pre-release
    -            [-_\.]?
    -            (?P(a|b|c|rc|alpha|beta|pre|preview))
    -            [-_\.]?
    -            (?P[0-9]+)?
    -        )?
    -        (?P                                         # post release
    -            (?:-(?P[0-9]+))
    -            |
    -            (?:
    -                [-_\.]?
    -                (?Ppost|rev|r)
    -                [-_\.]?
    -                (?P[0-9]+)?
    -            )
    -        )?
    -        (?P                                          # dev release
    -            [-_\.]?
    -            (?Pdev)
    -            [-_\.]?
    -            (?P[0-9]+)?
    -        )?
    -    )
    -    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
    -"""
    -
    -
    -class Version(_BaseVersion):
    -
    -    _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
    -
    -    def __init__(self, version: str) -> None:
    -
    -        # Validate the version and parse it into pieces
    -        match = self._regex.search(version)
    -        if not match:
    -            raise InvalidVersion(f"Invalid version: '{version}'")
    -
    -        # Store the parsed out pieces of the version
    -        self._version = _Version(
    -            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
    -            release=tuple(int(i) for i in match.group("release").split(".")),
    -            pre=_parse_letter_version(match.group("pre_l"), match.group("pre_n")),
    -            post=_parse_letter_version(
    -                match.group("post_l"), match.group("post_n1") or match.group("post_n2")
    -            ),
    -            dev=_parse_letter_version(match.group("dev_l"), match.group("dev_n")),
    -            local=_parse_local_version(match.group("local")),
    -        )
    -
    -        # Generate a key which will be used for sorting
    -        self._key = _cmpkey(
    -            self._version.epoch,
    -            self._version.release,
    -            self._version.pre,
    -            self._version.post,
    -            self._version.dev,
    -            self._version.local,
    -        )
    -
    -    def __repr__(self) -> str:
    -        return f""
    -
    -    def __str__(self) -> str:
    -        parts = []
    -
    -        # Epoch
    -        if self.epoch != 0:
    -            parts.append(f"{self.epoch}!")
    -
    -        # Release segment
    -        parts.append(".".join(str(x) for x in self.release))
    -
    -        # Pre-release
    -        if self.pre is not None:
    -            parts.append("".join(str(x) for x in self.pre))
    -
    -        # Post-release
    -        if self.post is not None:
    -            parts.append(f".post{self.post}")
    -
    -        # Development release
    -        if self.dev is not None:
    -            parts.append(f".dev{self.dev}")
    -
    -        # Local version segment
    -        if self.local is not None:
    -            parts.append(f"+{self.local}")
    -
    -        return "".join(parts)
    -
    -    @property
    -    def epoch(self) -> int:
    -        _epoch: int = self._version.epoch
    -        return _epoch
    -
    -    @property
    -    def release(self) -> Tuple[int, ...]:
    -        _release: Tuple[int, ...] = self._version.release
    -        return _release
    -
    -    @property
    -    def pre(self) -> Optional[Tuple[str, int]]:
    -        _pre: Optional[Tuple[str, int]] = self._version.pre
    -        return _pre
    -
    -    @property
    -    def post(self) -> Optional[int]:
    -        return self._version.post[1] if self._version.post else None
    -
    -    @property
    -    def dev(self) -> Optional[int]:
    -        return self._version.dev[1] if self._version.dev else None
    -
    -    @property
    -    def local(self) -> Optional[str]:
    -        if self._version.local:
    -            return ".".join(str(x) for x in self._version.local)
    -        else:
    -            return None
    -
    -    @property
    -    def public(self) -> str:
    -        return str(self).split("+", 1)[0]
    -
    -    @property
    -    def base_version(self) -> str:
    -        parts = []
    -
    -        # Epoch
    -        if self.epoch != 0:
    -            parts.append(f"{self.epoch}!")
    -
    -        # Release segment
    -        parts.append(".".join(str(x) for x in self.release))
    -
    -        return "".join(parts)
    -
    -    @property
    -    def is_prerelease(self) -> bool:
    -        return self.dev is not None or self.pre is not None
    -
    -    @property
    -    def is_postrelease(self) -> bool:
    -        return self.post is not None
    -
    -    @property
    -    def is_devrelease(self) -> bool:
    -        return self.dev is not None
    -
    -    @property
    -    def major(self) -> int:
    -        return self.release[0] if len(self.release) >= 1 else 0
    -
    -    @property
    -    def minor(self) -> int:
    -        return self.release[1] if len(self.release) >= 2 else 0
    -
    -    @property
    -    def micro(self) -> int:
    -        return self.release[2] if len(self.release) >= 3 else 0
    -
    -
    -def _parse_letter_version(
    -    letter: str, number: Union[str, bytes, SupportsInt]
    -) -> Optional[Tuple[str, int]]:
    -
    -    if letter:
    -        # We consider there to be an implicit 0 in a pre-release if there is
    -        # not a numeral associated with it.
    -        if number is None:
    -            number = 0
    -
    -        # We normalize any letters to their lower case form
    -        letter = letter.lower()
    -
    -        # We consider some words to be alternate spellings of other words and
    -        # in those cases we want to normalize the spellings to our preferred
    -        # spelling.
    -        if letter == "alpha":
    -            letter = "a"
    -        elif letter == "beta":
    -            letter = "b"
    -        elif letter in ["c", "pre", "preview"]:
    -            letter = "rc"
    -        elif letter in ["rev", "r"]:
    -            letter = "post"
    -
    -        return letter, int(number)
    -    if not letter and number:
    -        # We assume if we are given a number, but we are not given a letter
    -        # then this is using the implicit post release syntax (e.g. 1.0-1)
    -        letter = "post"
    -
    -        return letter, int(number)
    -
    -    return None
    -
    -
    -_local_version_separators = re.compile(r"[\._-]")
    -
    -
    -def _parse_local_version(local: str) -> Optional[LocalType]:
    -    """
    -    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    -    """
    -    if local is not None:
    -        return tuple(
    -            part.lower() if not part.isdigit() else int(part)
    -            for part in _local_version_separators.split(local)
    -        )
    -    return None
    -
    -
    -def _cmpkey(
    -    epoch: int,
    -    release: Tuple[int, ...],
    -    pre: Optional[Tuple[str, int]],
    -    post: Optional[Tuple[str, int]],
    -    dev: Optional[Tuple[str, int]],
    -    local: Optional[Tuple[SubLocalType]],
    -) -> CmpKey:
    -
    -    # When we compare a release version, we want to compare it with all of the
    -    # trailing zeros removed. So we'll use a reverse the list, drop all the now
    -    # leading zeros until we come to something non zero, then take the rest
    -    # re-reverse it back into the correct order and make it a tuple and use
    -    # that for our sorting key.
    -    _release = tuple(
    -        reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
    -    )
    -
    -    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
    -    # We'll do this by abusing the pre segment, but we _only_ want to do this
    -    # if there is not a pre or a post segment. If we have one of those then
    -    # the normal sorting rules will handle this case correctly.
    -    if pre is None and post is None and dev is not None:
    -        _pre: PrePostDevType = NegativeInfinity
    -    # Versions without a pre-release (except as noted above) should sort after
    -    # those with one.
    -    elif pre is None:
    -        _pre = Infinity
    -    else:
    -        _pre = pre
    -
    -    # Versions without a post segment should sort before those with one.
    -    if post is None:
    -        _post: PrePostDevType = NegativeInfinity
    -
    -    else:
    -        _post = post
    -
    -    # Versions without a development segment should sort after those with one.
    -    if dev is None:
    -        _dev: PrePostDevType = Infinity
    -
    -    else:
    -        _dev = dev
    -
    -    if local is None:
    -        # Versions without a local segment should sort before those with one.
    -        _local: LocalType = NegativeInfinity
    -    else:
    -        # Versions with a local segment need that segment parsed to implement
    -        # the sorting rules in PEP440.
    -        # - Alpha numeric segments sort before numeric segments
    -        # - Alpha numeric segments sort lexicographically
    -        # - Numeric segments sort numerically
    -        # - Shorter versions sort before longer versions when the prefixes
    -        #   match exactly
    -        _local = tuple(
    -            (i, "") if isinstance(i, int) else (NegativeInfinity, i) for i in local
    -        )
    -
    -    return epoch, _release, _pre, _post, _dev, _local
    diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py
    deleted file mode 100644
    index ad27940..0000000
    --- a/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py
    +++ /dev/null
    @@ -1,3361 +0,0 @@
    -"""
    -Package resource API
    ---------------------
    -
    -A resource is a logical file contained within a package, or a logical
    -subdirectory thereof.  The package resource API expects resource names
    -to have their path parts separated with ``/``, *not* whatever the local
    -path separator is.  Do not use os.path operations to manipulate resource
    -names being passed into the API.
    -
    -The package resource API is designed to work with normal filesystem packages,
    -.egg files, and unpacked .egg files.  It can also work in a limited way with
    -.zip files and with custom PEP 302 loaders that support the ``get_data()``
    -method.
    -
    -This module is deprecated. Users are directed to :mod:`importlib.resources`,
    -:mod:`importlib.metadata` and :pypi:`packaging` instead.
    -"""
    -
    -import sys
    -import os
    -import io
    -import time
    -import re
    -import types
    -import zipfile
    -import zipimport
    -import warnings
    -import stat
    -import functools
    -import pkgutil
    -import operator
    -import platform
    -import collections
    -import plistlib
    -import email.parser
    -import errno
    -import tempfile
    -import textwrap
    -import inspect
    -import ntpath
    -import posixpath
    -import importlib
    -from pkgutil import get_importer
    -
    -try:
    -    import _imp
    -except ImportError:
    -    # Python 3.2 compatibility
    -    import imp as _imp
    -
    -try:
    -    FileExistsError
    -except NameError:
    -    FileExistsError = OSError
    -
    -# capture these to bypass sandboxing
    -from os import utime
    -
    -try:
    -    from os import mkdir, rename, unlink
    -
    -    WRITE_SUPPORT = True
    -except ImportError:
    -    # no write support, probably under GAE
    -    WRITE_SUPPORT = False
    -
    -from os import open as os_open
    -from os.path import isdir, split
    -
    -try:
    -    import importlib.machinery as importlib_machinery
    -
    -    # access attribute to force import under delayed import mechanisms.
    -    importlib_machinery.__name__
    -except ImportError:
    -    importlib_machinery = None
    -
    -from pip._internal.utils._jaraco_text import (
    -    yield_lines,
    -    drop_comment,
    -    join_continuation,
    -)
    -
    -from pip._vendor import platformdirs
    -from pip._vendor import packaging
    -
    -__import__('pip._vendor.packaging.version')
    -__import__('pip._vendor.packaging.specifiers')
    -__import__('pip._vendor.packaging.requirements')
    -__import__('pip._vendor.packaging.markers')
    -__import__('pip._vendor.packaging.utils')
    -
    -if sys.version_info < (3, 5):
    -    raise RuntimeError("Python 3.5 or later is required")
    -
    -# declare some globals that will be defined later to
    -# satisfy the linters.
    -require = None
    -working_set = None
    -add_activation_listener = None
    -resources_stream = None
    -cleanup_resources = None
    -resource_dir = None
    -resource_stream = None
    -set_extraction_path = None
    -resource_isdir = None
    -resource_string = None
    -iter_entry_points = None
    -resource_listdir = None
    -resource_filename = None
    -resource_exists = None
    -_distribution_finders = None
    -_namespace_handlers = None
    -_namespace_packages = None
    -
    -
    -warnings.warn(
    -    "pkg_resources is deprecated as an API. "
    -    "See https://setuptools.pypa.io/en/latest/pkg_resources.html",
    -    DeprecationWarning,
    -    stacklevel=2
    -)
    -
    -
    -_PEP440_FALLBACK = re.compile(r"^v?(?P(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)", re.I)
    -
    -
    -class PEP440Warning(RuntimeWarning):
    -    """
    -    Used when there is an issue with a version or specifier not complying with
    -    PEP 440.
    -    """
    -
    -
    -parse_version = packaging.version.Version
    -
    -
    -_state_vars = {}
    -
    -
    -def _declare_state(vartype, **kw):
    -    globals().update(kw)
    -    _state_vars.update(dict.fromkeys(kw, vartype))
    -
    -
    -def __getstate__():
    -    state = {}
    -    g = globals()
    -    for k, v in _state_vars.items():
    -        state[k] = g['_sget_' + v](g[k])
    -    return state
    -
    -
    -def __setstate__(state):
    -    g = globals()
    -    for k, v in state.items():
    -        g['_sset_' + _state_vars[k]](k, g[k], v)
    -    return state
    -
    -
    -def _sget_dict(val):
    -    return val.copy()
    -
    -
    -def _sset_dict(key, ob, state):
    -    ob.clear()
    -    ob.update(state)
    -
    -
    -def _sget_object(val):
    -    return val.__getstate__()
    -
    -
    -def _sset_object(key, ob, state):
    -    ob.__setstate__(state)
    -
    -
    -_sget_none = _sset_none = lambda *args: None
    -
    -
    -def get_supported_platform():
    -    """Return this platform's maximum compatible version.
    -
    -    distutils.util.get_platform() normally reports the minimum version
    -    of macOS that would be required to *use* extensions produced by
    -    distutils.  But what we want when checking compatibility is to know the
    -    version of macOS that we are *running*.  To allow usage of packages that
    -    explicitly require a newer version of macOS, we must also know the
    -    current version of the OS.
    -
    -    If this condition occurs for any other platform with a version in its
    -    platform strings, this function should be extended accordingly.
    -    """
    -    plat = get_build_platform()
    -    m = macosVersionString.match(plat)
    -    if m is not None and sys.platform == "darwin":
    -        try:
    -            plat = 'macosx-%s-%s' % ('.'.join(_macos_vers()[:2]), m.group(3))
    -        except ValueError:
    -            # not macOS
    -            pass
    -    return plat
    -
    -
    -__all__ = [
    -    # Basic resource access and distribution/entry point discovery
    -    'require',
    -    'run_script',
    -    'get_provider',
    -    'get_distribution',
    -    'load_entry_point',
    -    'get_entry_map',
    -    'get_entry_info',
    -    'iter_entry_points',
    -    'resource_string',
    -    'resource_stream',
    -    'resource_filename',
    -    'resource_listdir',
    -    'resource_exists',
    -    'resource_isdir',
    -    # Environmental control
    -    'declare_namespace',
    -    'working_set',
    -    'add_activation_listener',
    -    'find_distributions',
    -    'set_extraction_path',
    -    'cleanup_resources',
    -    'get_default_cache',
    -    # Primary implementation classes
    -    'Environment',
    -    'WorkingSet',
    -    'ResourceManager',
    -    'Distribution',
    -    'Requirement',
    -    'EntryPoint',
    -    # Exceptions
    -    'ResolutionError',
    -    'VersionConflict',
    -    'DistributionNotFound',
    -    'UnknownExtra',
    -    'ExtractionError',
    -    # Warnings
    -    'PEP440Warning',
    -    # Parsing functions and string utilities
    -    'parse_requirements',
    -    'parse_version',
    -    'safe_name',
    -    'safe_version',
    -    'get_platform',
    -    'compatible_platforms',
    -    'yield_lines',
    -    'split_sections',
    -    'safe_extra',
    -    'to_filename',
    -    'invalid_marker',
    -    'evaluate_marker',
    -    # filesystem utilities
    -    'ensure_directory',
    -    'normalize_path',
    -    # Distribution "precedence" constants
    -    'EGG_DIST',
    -    'BINARY_DIST',
    -    'SOURCE_DIST',
    -    'CHECKOUT_DIST',
    -    'DEVELOP_DIST',
    -    # "Provider" interfaces, implementations, and registration/lookup APIs
    -    'IMetadataProvider',
    -    'IResourceProvider',
    -    'FileMetadata',
    -    'PathMetadata',
    -    'EggMetadata',
    -    'EmptyProvider',
    -    'empty_provider',
    -    'NullProvider',
    -    'EggProvider',
    -    'DefaultProvider',
    -    'ZipProvider',
    -    'register_finder',
    -    'register_namespace_handler',
    -    'register_loader_type',
    -    'fixup_namespace_packages',
    -    'get_importer',
    -    # Warnings
    -    'PkgResourcesDeprecationWarning',
    -    # Deprecated/backward compatibility only
    -    'run_main',
    -    'AvailableDistributions',
    -]
    -
    -
    -class ResolutionError(Exception):
    -    """Abstract base for dependency resolution errors"""
    -
    -    def __repr__(self):
    -        return self.__class__.__name__ + repr(self.args)
    -
    -
    -class VersionConflict(ResolutionError):
    -    """
    -    An already-installed version conflicts with the requested version.
    -
    -    Should be initialized with the installed Distribution and the requested
    -    Requirement.
    -    """
    -
    -    _template = "{self.dist} is installed but {self.req} is required"
    -
    -    @property
    -    def dist(self):
    -        return self.args[0]
    -
    -    @property
    -    def req(self):
    -        return self.args[1]
    -
    -    def report(self):
    -        return self._template.format(**locals())
    -
    -    def with_context(self, required_by):
    -        """
    -        If required_by is non-empty, return a version of self that is a
    -        ContextualVersionConflict.
    -        """
    -        if not required_by:
    -            return self
    -        args = self.args + (required_by,)
    -        return ContextualVersionConflict(*args)
    -
    -
    -class ContextualVersionConflict(VersionConflict):
    -    """
    -    A VersionConflict that accepts a third parameter, the set of the
    -    requirements that required the installed Distribution.
    -    """
    -
    -    _template = VersionConflict._template + ' by {self.required_by}'
    -
    -    @property
    -    def required_by(self):
    -        return self.args[2]
    -
    -
    -class DistributionNotFound(ResolutionError):
    -    """A requested distribution was not found"""
    -
    -    _template = (
    -        "The '{self.req}' distribution was not found "
    -        "and is required by {self.requirers_str}"
    -    )
    -
    -    @property
    -    def req(self):
    -        return self.args[0]
    -
    -    @property
    -    def requirers(self):
    -        return self.args[1]
    -
    -    @property
    -    def requirers_str(self):
    -        if not self.requirers:
    -            return 'the application'
    -        return ', '.join(self.requirers)
    -
    -    def report(self):
    -        return self._template.format(**locals())
    -
    -    def __str__(self):
    -        return self.report()
    -
    -
    -class UnknownExtra(ResolutionError):
    -    """Distribution doesn't have an "extra feature" of the given name"""
    -
    -
    -_provider_factories = {}
    -
    -PY_MAJOR = '{}.{}'.format(*sys.version_info)
    -EGG_DIST = 3
    -BINARY_DIST = 2
    -SOURCE_DIST = 1
    -CHECKOUT_DIST = 0
    -DEVELOP_DIST = -1
    -
    -
    -def register_loader_type(loader_type, provider_factory):
    -    """Register `provider_factory` to make providers for `loader_type`
    -
    -    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
    -    and `provider_factory` is a function that, passed a *module* object,
    -    returns an ``IResourceProvider`` for that module.
    -    """
    -    _provider_factories[loader_type] = provider_factory
    -
    -
    -def get_provider(moduleOrReq):
    -    """Return an IResourceProvider for the named module or requirement"""
    -    if isinstance(moduleOrReq, Requirement):
    -        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
    -    try:
    -        module = sys.modules[moduleOrReq]
    -    except KeyError:
    -        __import__(moduleOrReq)
    -        module = sys.modules[moduleOrReq]
    -    loader = getattr(module, '__loader__', None)
    -    return _find_adapter(_provider_factories, loader)(module)
    -
    -
    -def _macos_vers(_cache=[]):
    -    if not _cache:
    -        version = platform.mac_ver()[0]
    -        # fallback for MacPorts
    -        if version == '':
    -            plist = '/System/Library/CoreServices/SystemVersion.plist'
    -            if os.path.exists(plist):
    -                if hasattr(plistlib, 'readPlist'):
    -                    plist_content = plistlib.readPlist(plist)
    -                    if 'ProductVersion' in plist_content:
    -                        version = plist_content['ProductVersion']
    -
    -        _cache.append(version.split('.'))
    -    return _cache[0]
    -
    -
    -def _macos_arch(machine):
    -    return {'PowerPC': 'ppc', 'Power_Macintosh': 'ppc'}.get(machine, machine)
    -
    -
    -def get_build_platform():
    -    """Return this platform's string for platform-specific distributions
    -
    -    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
    -    needs some hacks for Linux and macOS.
    -    """
    -    from sysconfig import get_platform
    -
    -    plat = get_platform()
    -    if sys.platform == "darwin" and not plat.startswith('macosx-'):
    -        try:
    -            version = _macos_vers()
    -            machine = os.uname()[4].replace(" ", "_")
    -            return "macosx-%d.%d-%s" % (
    -                int(version[0]),
    -                int(version[1]),
    -                _macos_arch(machine),
    -            )
    -        except ValueError:
    -            # if someone is running a non-Mac darwin system, this will fall
    -            # through to the default implementation
    -            pass
    -    return plat
    -
    -
    -macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
    -darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
    -# XXX backward compat
    -get_platform = get_build_platform
    -
    -
    -def compatible_platforms(provided, required):
    -    """Can code for the `provided` platform run on the `required` platform?
    -
    -    Returns true if either platform is ``None``, or the platforms are equal.
    -
    -    XXX Needs compatibility checks for Linux and other unixy OSes.
    -    """
    -    if provided is None or required is None or provided == required:
    -        # easy case
    -        return True
    -
    -    # macOS special cases
    -    reqMac = macosVersionString.match(required)
    -    if reqMac:
    -        provMac = macosVersionString.match(provided)
    -
    -        # is this a Mac package?
    -        if not provMac:
    -            # this is backwards compatibility for packages built before
    -            # setuptools 0.6. All packages built after this point will
    -            # use the new macOS designation.
    -            provDarwin = darwinVersionString.match(provided)
    -            if provDarwin:
    -                dversion = int(provDarwin.group(1))
    -                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
    -                if (
    -                    dversion == 7
    -                    and macosversion >= "10.3"
    -                    or dversion == 8
    -                    and macosversion >= "10.4"
    -                ):
    -                    return True
    -            # egg isn't macOS or legacy darwin
    -            return False
    -
    -        # are they the same major version and machine type?
    -        if provMac.group(1) != reqMac.group(1) or provMac.group(3) != reqMac.group(3):
    -            return False
    -
    -        # is the required OS major update >= the provided one?
    -        if int(provMac.group(2)) > int(reqMac.group(2)):
    -            return False
    -
    -        return True
    -
    -    # XXX Linux and other platforms' special cases should go here
    -    return False
    -
    -
    -def run_script(dist_spec, script_name):
    -    """Locate distribution `dist_spec` and run its `script_name` script"""
    -    ns = sys._getframe(1).f_globals
    -    name = ns['__name__']
    -    ns.clear()
    -    ns['__name__'] = name
    -    require(dist_spec)[0].run_script(script_name, ns)
    -
    -
    -# backward compatibility
    -run_main = run_script
    -
    -
    -def get_distribution(dist):
    -    """Return a current distribution object for a Requirement or string"""
    -    if isinstance(dist, str):
    -        dist = Requirement.parse(dist)
    -    if isinstance(dist, Requirement):
    -        dist = get_provider(dist)
    -    if not isinstance(dist, Distribution):
    -        raise TypeError("Expected string, Requirement, or Distribution", dist)
    -    return dist
    -
    -
    -def load_entry_point(dist, group, name):
    -    """Return `name` entry point of `group` for `dist` or raise ImportError"""
    -    return get_distribution(dist).load_entry_point(group, name)
    -
    -
    -def get_entry_map(dist, group=None):
    -    """Return the entry point map for `group`, or the full entry map"""
    -    return get_distribution(dist).get_entry_map(group)
    -
    -
    -def get_entry_info(dist, group, name):
    -    """Return the EntryPoint object for `group`+`name`, or ``None``"""
    -    return get_distribution(dist).get_entry_info(group, name)
    -
    -
    -class IMetadataProvider:
    -    def has_metadata(name):
    -        """Does the package's distribution contain the named metadata?"""
    -
    -    def get_metadata(name):
    -        """The named metadata resource as a string"""
    -
    -    def get_metadata_lines(name):
    -        """Yield named metadata resource as list of non-blank non-comment lines
    -
    -        Leading and trailing whitespace is stripped from each line, and lines
    -        with ``#`` as the first non-blank character are omitted."""
    -
    -    def metadata_isdir(name):
    -        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
    -
    -    def metadata_listdir(name):
    -        """List of metadata names in the directory (like ``os.listdir()``)"""
    -
    -    def run_script(script_name, namespace):
    -        """Execute the named script in the supplied namespace dictionary"""
    -
    -
    -class IResourceProvider(IMetadataProvider):
    -    """An object that provides access to package resources"""
    -
    -    def get_resource_filename(manager, resource_name):
    -        """Return a true filesystem path for `resource_name`
    -
    -        `manager` must be an ``IResourceManager``"""
    -
    -    def get_resource_stream(manager, resource_name):
    -        """Return a readable file-like object for `resource_name`
    -
    -        `manager` must be an ``IResourceManager``"""
    -
    -    def get_resource_string(manager, resource_name):
    -        """Return a string containing the contents of `resource_name`
    -
    -        `manager` must be an ``IResourceManager``"""
    -
    -    def has_resource(resource_name):
    -        """Does the package contain the named resource?"""
    -
    -    def resource_isdir(resource_name):
    -        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
    -
    -    def resource_listdir(resource_name):
    -        """List of resource names in the directory (like ``os.listdir()``)"""
    -
    -
    -class WorkingSet:
    -    """A collection of active distributions on sys.path (or a similar list)"""
    -
    -    def __init__(self, entries=None):
    -        """Create working set from list of path entries (default=sys.path)"""
    -        self.entries = []
    -        self.entry_keys = {}
    -        self.by_key = {}
    -        self.normalized_to_canonical_keys = {}
    -        self.callbacks = []
    -
    -        if entries is None:
    -            entries = sys.path
    -
    -        for entry in entries:
    -            self.add_entry(entry)
    -
    -    @classmethod
    -    def _build_master(cls):
    -        """
    -        Prepare the master working set.
    -        """
    -        ws = cls()
    -        try:
    -            from __main__ import __requires__
    -        except ImportError:
    -            # The main program does not list any requirements
    -            return ws
    -
    -        # ensure the requirements are met
    -        try:
    -            ws.require(__requires__)
    -        except VersionConflict:
    -            return cls._build_from_requirements(__requires__)
    -
    -        return ws
    -
    -    @classmethod
    -    def _build_from_requirements(cls, req_spec):
    -        """
    -        Build a working set from a requirement spec. Rewrites sys.path.
    -        """
    -        # try it without defaults already on sys.path
    -        # by starting with an empty path
    -        ws = cls([])
    -        reqs = parse_requirements(req_spec)
    -        dists = ws.resolve(reqs, Environment())
    -        for dist in dists:
    -            ws.add(dist)
    -
    -        # add any missing entries from sys.path
    -        for entry in sys.path:
    -            if entry not in ws.entries:
    -                ws.add_entry(entry)
    -
    -        # then copy back to sys.path
    -        sys.path[:] = ws.entries
    -        return ws
    -
    -    def add_entry(self, entry):
    -        """Add a path item to ``.entries``, finding any distributions on it
    -
    -        ``find_distributions(entry, True)`` is used to find distributions
    -        corresponding to the path entry, and they are added.  `entry` is
    -        always appended to ``.entries``, even if it is already present.
    -        (This is because ``sys.path`` can contain the same value more than
    -        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
    -        equal ``sys.path``.)
    -        """
    -        self.entry_keys.setdefault(entry, [])
    -        self.entries.append(entry)
    -        for dist in find_distributions(entry, True):
    -            self.add(dist, entry, False)
    -
    -    def __contains__(self, dist):
    -        """True if `dist` is the active distribution for its project"""
    -        return self.by_key.get(dist.key) == dist
    -
    -    def find(self, req):
    -        """Find a distribution matching requirement `req`
    -
    -        If there is an active distribution for the requested project, this
    -        returns it as long as it meets the version requirement specified by
    -        `req`.  But, if there is an active distribution for the project and it
    -        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
    -        If there is no active distribution for the requested project, ``None``
    -        is returned.
    -        """
    -        dist = self.by_key.get(req.key)
    -
    -        if dist is None:
    -            canonical_key = self.normalized_to_canonical_keys.get(req.key)
    -
    -            if canonical_key is not None:
    -                req.key = canonical_key
    -                dist = self.by_key.get(canonical_key)
    -
    -        if dist is not None and dist not in req:
    -            # XXX add more info
    -            raise VersionConflict(dist, req)
    -        return dist
    -
    -    def iter_entry_points(self, group, name=None):
    -        """Yield entry point objects from `group` matching `name`
    -
    -        If `name` is None, yields all entry points in `group` from all
    -        distributions in the working set, otherwise only ones matching
    -        both `group` and `name` are yielded (in distribution order).
    -        """
    -        return (
    -            entry
    -            for dist in self
    -            for entry in dist.get_entry_map(group).values()
    -            if name is None or name == entry.name
    -        )
    -
    -    def run_script(self, requires, script_name):
    -        """Locate distribution for `requires` and run `script_name` script"""
    -        ns = sys._getframe(1).f_globals
    -        name = ns['__name__']
    -        ns.clear()
    -        ns['__name__'] = name
    -        self.require(requires)[0].run_script(script_name, ns)
    -
    -    def __iter__(self):
    -        """Yield distributions for non-duplicate projects in the working set
    -
    -        The yield order is the order in which the items' path entries were
    -        added to the working set.
    -        """
    -        seen = {}
    -        for item in self.entries:
    -            if item not in self.entry_keys:
    -                # workaround a cache issue
    -                continue
    -
    -            for key in self.entry_keys[item]:
    -                if key not in seen:
    -                    seen[key] = 1
    -                    yield self.by_key[key]
    -
    -    def add(self, dist, entry=None, insert=True, replace=False):
    -        """Add `dist` to working set, associated with `entry`
    -
    -        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
    -        On exit from this routine, `entry` is added to the end of the working
    -        set's ``.entries`` (if it wasn't already present).
    -
    -        `dist` is only added to the working set if it's for a project that
    -        doesn't already have a distribution in the set, unless `replace=True`.
    -        If it's added, any callbacks registered with the ``subscribe()`` method
    -        will be called.
    -        """
    -        if insert:
    -            dist.insert_on(self.entries, entry, replace=replace)
    -
    -        if entry is None:
    -            entry = dist.location
    -        keys = self.entry_keys.setdefault(entry, [])
    -        keys2 = self.entry_keys.setdefault(dist.location, [])
    -        if not replace and dist.key in self.by_key:
    -            # ignore hidden distros
    -            return
    -
    -        self.by_key[dist.key] = dist
    -        normalized_name = packaging.utils.canonicalize_name(dist.key)
    -        self.normalized_to_canonical_keys[normalized_name] = dist.key
    -        if dist.key not in keys:
    -            keys.append(dist.key)
    -        if dist.key not in keys2:
    -            keys2.append(dist.key)
    -        self._added_new(dist)
    -
    -    def resolve(
    -        self,
    -        requirements,
    -        env=None,
    -        installer=None,
    -        replace_conflicting=False,
    -        extras=None,
    -    ):
    -        """List all distributions needed to (recursively) meet `requirements`
    -
    -        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
    -        if supplied, should be an ``Environment`` instance.  If
    -        not supplied, it defaults to all distributions available within any
    -        entry or distribution in the working set.  `installer`, if supplied,
    -        will be invoked with each requirement that cannot be met by an
    -        already-installed distribution; it should return a ``Distribution`` or
    -        ``None``.
    -
    -        Unless `replace_conflicting=True`, raises a VersionConflict exception
    -        if
    -        any requirements are found on the path that have the correct name but
    -        the wrong version.  Otherwise, if an `installer` is supplied it will be
    -        invoked to obtain the correct version of the requirement and activate
    -        it.
    -
    -        `extras` is a list of the extras to be used with these requirements.
    -        This is important because extra requirements may look like `my_req;
    -        extra = "my_extra"`, which would otherwise be interpreted as a purely
    -        optional requirement.  Instead, we want to be able to assert that these
    -        requirements are truly required.
    -        """
    -
    -        # set up the stack
    -        requirements = list(requirements)[::-1]
    -        # set of processed requirements
    -        processed = {}
    -        # key -> dist
    -        best = {}
    -        to_activate = []
    -
    -        req_extras = _ReqExtras()
    -
    -        # Mapping of requirement to set of distributions that required it;
    -        # useful for reporting info about conflicts.
    -        required_by = collections.defaultdict(set)
    -
    -        while requirements:
    -            # process dependencies breadth-first
    -            req = requirements.pop(0)
    -            if req in processed:
    -                # Ignore cyclic or redundant dependencies
    -                continue
    -
    -            if not req_extras.markers_pass(req, extras):
    -                continue
    -
    -            dist = self._resolve_dist(
    -                req, best, replace_conflicting, env, installer, required_by, to_activate
    -            )
    -
    -            # push the new requirements onto the stack
    -            new_requirements = dist.requires(req.extras)[::-1]
    -            requirements.extend(new_requirements)
    -
    -            # Register the new requirements needed by req
    -            for new_requirement in new_requirements:
    -                required_by[new_requirement].add(req.project_name)
    -                req_extras[new_requirement] = req.extras
    -
    -            processed[req] = True
    -
    -        # return list of distros to activate
    -        return to_activate
    -
    -    def _resolve_dist(
    -        self, req, best, replace_conflicting, env, installer, required_by, to_activate
    -    ):
    -        dist = best.get(req.key)
    -        if dist is None:
    -            # Find the best distribution and add it to the map
    -            dist = self.by_key.get(req.key)
    -            if dist is None or (dist not in req and replace_conflicting):
    -                ws = self
    -                if env is None:
    -                    if dist is None:
    -                        env = Environment(self.entries)
    -                    else:
    -                        # Use an empty environment and workingset to avoid
    -                        # any further conflicts with the conflicting
    -                        # distribution
    -                        env = Environment([])
    -                        ws = WorkingSet([])
    -                dist = best[req.key] = env.best_match(
    -                    req, ws, installer, replace_conflicting=replace_conflicting
    -                )
    -                if dist is None:
    -                    requirers = required_by.get(req, None)
    -                    raise DistributionNotFound(req, requirers)
    -            to_activate.append(dist)
    -        if dist not in req:
    -            # Oops, the "best" so far conflicts with a dependency
    -            dependent_req = required_by[req]
    -            raise VersionConflict(dist, req).with_context(dependent_req)
    -        return dist
    -
    -    def find_plugins(self, plugin_env, full_env=None, installer=None, fallback=True):
    -        """Find all activatable distributions in `plugin_env`
    -
    -        Example usage::
    -
    -            distributions, errors = working_set.find_plugins(
    -                Environment(plugin_dirlist)
    -            )
    -            # add plugins+libs to sys.path
    -            map(working_set.add, distributions)
    -            # display errors
    -            print('Could not load', errors)
    -
    -        The `plugin_env` should be an ``Environment`` instance that contains
    -        only distributions that are in the project's "plugin directory" or
    -        directories. The `full_env`, if supplied, should be an ``Environment``
    -        contains all currently-available distributions.  If `full_env` is not
    -        supplied, one is created automatically from the ``WorkingSet`` this
    -        method is called on, which will typically mean that every directory on
    -        ``sys.path`` will be scanned for distributions.
    -
    -        `installer` is a standard installer callback as used by the
    -        ``resolve()`` method. The `fallback` flag indicates whether we should
    -        attempt to resolve older versions of a plugin if the newest version
    -        cannot be resolved.
    -
    -        This method returns a 2-tuple: (`distributions`, `error_info`), where
    -        `distributions` is a list of the distributions found in `plugin_env`
    -        that were loadable, along with any other distributions that are needed
    -        to resolve their dependencies.  `error_info` is a dictionary mapping
    -        unloadable plugin distributions to an exception instance describing the
    -        error that occurred. Usually this will be a ``DistributionNotFound`` or
    -        ``VersionConflict`` instance.
    -        """
    -
    -        plugin_projects = list(plugin_env)
    -        # scan project names in alphabetic order
    -        plugin_projects.sort()
    -
    -        error_info = {}
    -        distributions = {}
    -
    -        if full_env is None:
    -            env = Environment(self.entries)
    -            env += plugin_env
    -        else:
    -            env = full_env + plugin_env
    -
    -        shadow_set = self.__class__([])
    -        # put all our entries in shadow_set
    -        list(map(shadow_set.add, self))
    -
    -        for project_name in plugin_projects:
    -            for dist in plugin_env[project_name]:
    -                req = [dist.as_requirement()]
    -
    -                try:
    -                    resolvees = shadow_set.resolve(req, env, installer)
    -
    -                except ResolutionError as v:
    -                    # save error info
    -                    error_info[dist] = v
    -                    if fallback:
    -                        # try the next older version of project
    -                        continue
    -                    else:
    -                        # give up on this project, keep going
    -                        break
    -
    -                else:
    -                    list(map(shadow_set.add, resolvees))
    -                    distributions.update(dict.fromkeys(resolvees))
    -
    -                    # success, no need to try any more versions of this project
    -                    break
    -
    -        distributions = list(distributions)
    -        distributions.sort()
    -
    -        return distributions, error_info
    -
    -    def require(self, *requirements):
    -        """Ensure that distributions matching `requirements` are activated
    -
    -        `requirements` must be a string or a (possibly-nested) sequence
    -        thereof, specifying the distributions and versions required.  The
    -        return value is a sequence of the distributions that needed to be
    -        activated to fulfill the requirements; all relevant distributions are
    -        included, even if they were already activated in this working set.
    -        """
    -        needed = self.resolve(parse_requirements(requirements))
    -
    -        for dist in needed:
    -            self.add(dist)
    -
    -        return needed
    -
    -    def subscribe(self, callback, existing=True):
    -        """Invoke `callback` for all distributions
    -
    -        If `existing=True` (default),
    -        call on all existing ones, as well.
    -        """
    -        if callback in self.callbacks:
    -            return
    -        self.callbacks.append(callback)
    -        if not existing:
    -            return
    -        for dist in self:
    -            callback(dist)
    -
    -    def _added_new(self, dist):
    -        for callback in self.callbacks:
    -            callback(dist)
    -
    -    def __getstate__(self):
    -        return (
    -            self.entries[:],
    -            self.entry_keys.copy(),
    -            self.by_key.copy(),
    -            self.normalized_to_canonical_keys.copy(),
    -            self.callbacks[:],
    -        )
    -
    -    def __setstate__(self, e_k_b_n_c):
    -        entries, keys, by_key, normalized_to_canonical_keys, callbacks = e_k_b_n_c
    -        self.entries = entries[:]
    -        self.entry_keys = keys.copy()
    -        self.by_key = by_key.copy()
    -        self.normalized_to_canonical_keys = normalized_to_canonical_keys.copy()
    -        self.callbacks = callbacks[:]
    -
    -
    -class _ReqExtras(dict):
    -    """
    -    Map each requirement to the extras that demanded it.
    -    """
    -
    -    def markers_pass(self, req, extras=None):
    -        """
    -        Evaluate markers for req against each extra that
    -        demanded it.
    -
    -        Return False if the req has a marker and fails
    -        evaluation. Otherwise, return True.
    -        """
    -        extra_evals = (
    -            req.marker.evaluate({'extra': extra})
    -            for extra in self.get(req, ()) + (extras or (None,))
    -        )
    -        return not req.marker or any(extra_evals)
    -
    -
    -class Environment:
    -    """Searchable snapshot of distributions on a search path"""
    -
    -    def __init__(
    -        self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR
    -    ):
    -        """Snapshot distributions available on a search path
    -
    -        Any distributions found on `search_path` are added to the environment.
    -        `search_path` should be a sequence of ``sys.path`` items.  If not
    -        supplied, ``sys.path`` is used.
    -
    -        `platform` is an optional string specifying the name of the platform
    -        that platform-specific distributions must be compatible with.  If
    -        unspecified, it defaults to the current platform.  `python` is an
    -        optional string naming the desired version of Python (e.g. ``'3.6'``);
    -        it defaults to the current version.
    -
    -        You may explicitly set `platform` (and/or `python`) to ``None`` if you
    -        wish to map *all* distributions, not just those compatible with the
    -        running platform or Python version.
    -        """
    -        self._distmap = {}
    -        self.platform = platform
    -        self.python = python
    -        self.scan(search_path)
    -
    -    def can_add(self, dist):
    -        """Is distribution `dist` acceptable for this environment?
    -
    -        The distribution must match the platform and python version
    -        requirements specified when this environment was created, or False
    -        is returned.
    -        """
    -        py_compat = (
    -            self.python is None
    -            or dist.py_version is None
    -            or dist.py_version == self.python
    -        )
    -        return py_compat and compatible_platforms(dist.platform, self.platform)
    -
    -    def remove(self, dist):
    -        """Remove `dist` from the environment"""
    -        self._distmap[dist.key].remove(dist)
    -
    -    def scan(self, search_path=None):
    -        """Scan `search_path` for distributions usable in this environment
    -
    -        Any distributions found are added to the environment.
    -        `search_path` should be a sequence of ``sys.path`` items.  If not
    -        supplied, ``sys.path`` is used.  Only distributions conforming to
    -        the platform/python version defined at initialization are added.
    -        """
    -        if search_path is None:
    -            search_path = sys.path
    -
    -        for item in search_path:
    -            for dist in find_distributions(item):
    -                self.add(dist)
    -
    -    def __getitem__(self, project_name):
    -        """Return a newest-to-oldest list of distributions for `project_name`
    -
    -        Uses case-insensitive `project_name` comparison, assuming all the
    -        project's distributions use their project's name converted to all
    -        lowercase as their key.
    -
    -        """
    -        distribution_key = project_name.lower()
    -        return self._distmap.get(distribution_key, [])
    -
    -    def add(self, dist):
    -        """Add `dist` if we ``can_add()`` it and it has not already been added"""
    -        if self.can_add(dist) and dist.has_version():
    -            dists = self._distmap.setdefault(dist.key, [])
    -            if dist not in dists:
    -                dists.append(dist)
    -                dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
    -
    -    def best_match(self, req, working_set, installer=None, replace_conflicting=False):
    -        """Find distribution best matching `req` and usable on `working_set`
    -
    -        This calls the ``find(req)`` method of the `working_set` to see if a
    -        suitable distribution is already active.  (This may raise
    -        ``VersionConflict`` if an unsuitable version of the project is already
    -        active in the specified `working_set`.)  If a suitable distribution
    -        isn't active, this method returns the newest distribution in the
    -        environment that meets the ``Requirement`` in `req`.  If no suitable
    -        distribution is found, and `installer` is supplied, then the result of
    -        calling the environment's ``obtain(req, installer)`` method will be
    -        returned.
    -        """
    -        try:
    -            dist = working_set.find(req)
    -        except VersionConflict:
    -            if not replace_conflicting:
    -                raise
    -            dist = None
    -        if dist is not None:
    -            return dist
    -        for dist in self[req.key]:
    -            if dist in req:
    -                return dist
    -        # try to download/install
    -        return self.obtain(req, installer)
    -
    -    def obtain(self, requirement, installer=None):
    -        """Obtain a distribution matching `requirement` (e.g. via download)
    -
    -        Obtain a distro that matches requirement (e.g. via download).  In the
    -        base ``Environment`` class, this routine just returns
    -        ``installer(requirement)``, unless `installer` is None, in which case
    -        None is returned instead.  This method is a hook that allows subclasses
    -        to attempt other ways of obtaining a distribution before falling back
    -        to the `installer` argument."""
    -        if installer is not None:
    -            return installer(requirement)
    -
    -    def __iter__(self):
    -        """Yield the unique project names of the available distributions"""
    -        for key in self._distmap.keys():
    -            if self[key]:
    -                yield key
    -
    -    def __iadd__(self, other):
    -        """In-place addition of a distribution or environment"""
    -        if isinstance(other, Distribution):
    -            self.add(other)
    -        elif isinstance(other, Environment):
    -            for project in other:
    -                for dist in other[project]:
    -                    self.add(dist)
    -        else:
    -            raise TypeError("Can't add %r to environment" % (other,))
    -        return self
    -
    -    def __add__(self, other):
    -        """Add an environment or distribution to an environment"""
    -        new = self.__class__([], platform=None, python=None)
    -        for env in self, other:
    -            new += env
    -        return new
    -
    -
    -# XXX backward compatibility
    -AvailableDistributions = Environment
    -
    -
    -class ExtractionError(RuntimeError):
    -    """An error occurred extracting a resource
    -
    -    The following attributes are available from instances of this exception:
    -
    -    manager
    -        The resource manager that raised this exception
    -
    -    cache_path
    -        The base directory for resource extraction
    -
    -    original_error
    -        The exception instance that caused extraction to fail
    -    """
    -
    -
    -class ResourceManager:
    -    """Manage resource extraction and packages"""
    -
    -    extraction_path = None
    -
    -    def __init__(self):
    -        self.cached_files = {}
    -
    -    def resource_exists(self, package_or_requirement, resource_name):
    -        """Does the named resource exist?"""
    -        return get_provider(package_or_requirement).has_resource(resource_name)
    -
    -    def resource_isdir(self, package_or_requirement, resource_name):
    -        """Is the named resource an existing directory?"""
    -        return get_provider(package_or_requirement).resource_isdir(resource_name)
    -
    -    def resource_filename(self, package_or_requirement, resource_name):
    -        """Return a true filesystem path for specified resource"""
    -        return get_provider(package_or_requirement).get_resource_filename(
    -            self, resource_name
    -        )
    -
    -    def resource_stream(self, package_or_requirement, resource_name):
    -        """Return a readable file-like object for specified resource"""
    -        return get_provider(package_or_requirement).get_resource_stream(
    -            self, resource_name
    -        )
    -
    -    def resource_string(self, package_or_requirement, resource_name):
    -        """Return specified resource as a string"""
    -        return get_provider(package_or_requirement).get_resource_string(
    -            self, resource_name
    -        )
    -
    -    def resource_listdir(self, package_or_requirement, resource_name):
    -        """List the contents of the named resource directory"""
    -        return get_provider(package_or_requirement).resource_listdir(resource_name)
    -
    -    def extraction_error(self):
    -        """Give an error message for problems extracting file(s)"""
    -
    -        old_exc = sys.exc_info()[1]
    -        cache_path = self.extraction_path or get_default_cache()
    -
    -        tmpl = textwrap.dedent(
    -            """
    -            Can't extract file(s) to egg cache
    -
    -            The following error occurred while trying to extract file(s)
    -            to the Python egg cache:
    -
    -              {old_exc}
    -
    -            The Python egg cache directory is currently set to:
    -
    -              {cache_path}
    -
    -            Perhaps your account does not have write access to this directory?
    -            You can change the cache directory by setting the PYTHON_EGG_CACHE
    -            environment variable to point to an accessible directory.
    -            """
    -        ).lstrip()
    -        err = ExtractionError(tmpl.format(**locals()))
    -        err.manager = self
    -        err.cache_path = cache_path
    -        err.original_error = old_exc
    -        raise err
    -
    -    def get_cache_path(self, archive_name, names=()):
    -        """Return absolute location in cache for `archive_name` and `names`
    -
    -        The parent directory of the resulting path will be created if it does
    -        not already exist.  `archive_name` should be the base filename of the
    -        enclosing egg (which may not be the name of the enclosing zipfile!),
    -        including its ".egg" extension.  `names`, if provided, should be a
    -        sequence of path name parts "under" the egg's extraction location.
    -
    -        This method should only be called by resource providers that need to
    -        obtain an extraction location, and only for names they intend to
    -        extract, as it tracks the generated names for possible cleanup later.
    -        """
    -        extract_path = self.extraction_path or get_default_cache()
    -        target_path = os.path.join(extract_path, archive_name + '-tmp', *names)
    -        try:
    -            _bypass_ensure_directory(target_path)
    -        except Exception:
    -            self.extraction_error()
    -
    -        self._warn_unsafe_extraction_path(extract_path)
    -
    -        self.cached_files[target_path] = 1
    -        return target_path
    -
    -    @staticmethod
    -    def _warn_unsafe_extraction_path(path):
    -        """
    -        If the default extraction path is overridden and set to an insecure
    -        location, such as /tmp, it opens up an opportunity for an attacker to
    -        replace an extracted file with an unauthorized payload. Warn the user
    -        if a known insecure location is used.
    -
    -        See Distribute #375 for more details.
    -        """
    -        if os.name == 'nt' and not path.startswith(os.environ['windir']):
    -            # On Windows, permissions are generally restrictive by default
    -            #  and temp directories are not writable by other users, so
    -            #  bypass the warning.
    -            return
    -        mode = os.stat(path).st_mode
    -        if mode & stat.S_IWOTH or mode & stat.S_IWGRP:
    -            msg = (
    -                "Extraction path is writable by group/others "
    -                "and vulnerable to attack when "
    -                "used with get_resource_filename ({path}). "
    -                "Consider a more secure "
    -                "location (set with .set_extraction_path or the "
    -                "PYTHON_EGG_CACHE environment variable)."
    -            ).format(**locals())
    -            warnings.warn(msg, UserWarning)
    -
    -    def postprocess(self, tempname, filename):
    -        """Perform any platform-specific postprocessing of `tempname`
    -
    -        This is where Mac header rewrites should be done; other platforms don't
    -        have anything special they should do.
    -
    -        Resource providers should call this method ONLY after successfully
    -        extracting a compressed resource.  They must NOT call it on resources
    -        that are already in the filesystem.
    -
    -        `tempname` is the current (temporary) name of the file, and `filename`
    -        is the name it will be renamed to by the caller after this routine
    -        returns.
    -        """
    -
    -        if os.name == 'posix':
    -            # Make the resource executable
    -            mode = ((os.stat(tempname).st_mode) | 0o555) & 0o7777
    -            os.chmod(tempname, mode)
    -
    -    def set_extraction_path(self, path):
    -        """Set the base path where resources will be extracted to, if needed.
    -
    -        If you do not call this routine before any extractions take place, the
    -        path defaults to the return value of ``get_default_cache()``.  (Which
    -        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
    -        platform-specific fallbacks.  See that routine's documentation for more
    -        details.)
    -
    -        Resources are extracted to subdirectories of this path based upon
    -        information given by the ``IResourceProvider``.  You may set this to a
    -        temporary directory, but then you must call ``cleanup_resources()`` to
    -        delete the extracted files when done.  There is no guarantee that
    -        ``cleanup_resources()`` will be able to remove all extracted files.
    -
    -        (Note: you may not change the extraction path for a given resource
    -        manager once resources have been extracted, unless you first call
    -        ``cleanup_resources()``.)
    -        """
    -        if self.cached_files:
    -            raise ValueError("Can't change extraction path, files already extracted")
    -
    -        self.extraction_path = path
    -
    -    def cleanup_resources(self, force=False):
    -        """
    -        Delete all extracted resource files and directories, returning a list
    -        of the file and directory names that could not be successfully removed.
    -        This function does not have any concurrency protection, so it should
    -        generally only be called when the extraction path is a temporary
    -        directory exclusive to a single process.  This method is not
    -        automatically called; you must call it explicitly or register it as an
    -        ``atexit`` function if you wish to ensure cleanup of a temporary
    -        directory used for extractions.
    -        """
    -        # XXX
    -
    -
    -def get_default_cache():
    -    """
    -    Return the ``PYTHON_EGG_CACHE`` environment variable
    -    or a platform-relevant user cache dir for an app
    -    named "Python-Eggs".
    -    """
    -    return os.environ.get('PYTHON_EGG_CACHE') or platformdirs.user_cache_dir(
    -        appname='Python-Eggs'
    -    )
    -
    -
    -def safe_name(name):
    -    """Convert an arbitrary string to a standard distribution name
    -
    -    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
    -    """
    -    return re.sub('[^A-Za-z0-9.]+', '-', name)
    -
    -
    -def safe_version(version):
    -    """
    -    Convert an arbitrary string to a standard version string
    -    """
    -    try:
    -        # normalize the version
    -        return str(packaging.version.Version(version))
    -    except packaging.version.InvalidVersion:
    -        version = version.replace(' ', '.')
    -        return re.sub('[^A-Za-z0-9.]+', '-', version)
    -
    -
    -def _forgiving_version(version):
    -    """Fallback when ``safe_version`` is not safe enough
    -    >>> parse_version(_forgiving_version('0.23ubuntu1'))
    -    
    -    >>> parse_version(_forgiving_version('0.23-'))
    -    
    -    >>> parse_version(_forgiving_version('0.-_'))
    -    
    -    >>> parse_version(_forgiving_version('42.+?1'))
    -    
    -    >>> parse_version(_forgiving_version('hello world'))
    -    
    -    """
    -    version = version.replace(' ', '.')
    -    match = _PEP440_FALLBACK.search(version)
    -    if match:
    -        safe = match["safe"]
    -        rest = version[len(safe):]
    -    else:
    -        safe = "0"
    -        rest = version
    -    local = f"sanitized.{_safe_segment(rest)}".strip(".")
    -    return f"{safe}.dev0+{local}"
    -
    -
    -def _safe_segment(segment):
    -    """Convert an arbitrary string into a safe segment"""
    -    segment = re.sub('[^A-Za-z0-9.]+', '-', segment)
    -    segment = re.sub('-[^A-Za-z0-9]+', '-', segment)
    -    return re.sub(r'\.[^A-Za-z0-9]+', '.', segment).strip(".-")
    -
    -
    -def safe_extra(extra):
    -    """Convert an arbitrary string to a standard 'extra' name
    -
    -    Any runs of non-alphanumeric characters are replaced with a single '_',
    -    and the result is always lowercased.
    -    """
    -    return re.sub('[^A-Za-z0-9.-]+', '_', extra).lower()
    -
    -
    -def to_filename(name):
    -    """Convert a project or version name to its filename-escaped form
    -
    -    Any '-' characters are currently replaced with '_'.
    -    """
    -    return name.replace('-', '_')
    -
    -
    -def invalid_marker(text):
    -    """
    -    Validate text as a PEP 508 environment marker; return an exception
    -    if invalid or False otherwise.
    -    """
    -    try:
    -        evaluate_marker(text)
    -    except SyntaxError as e:
    -        e.filename = None
    -        e.lineno = None
    -        return e
    -    return False
    -
    -
    -def evaluate_marker(text, extra=None):
    -    """
    -    Evaluate a PEP 508 environment marker.
    -    Return a boolean indicating the marker result in this environment.
    -    Raise SyntaxError if marker is invalid.
    -
    -    This implementation uses the 'pyparsing' module.
    -    """
    -    try:
    -        marker = packaging.markers.Marker(text)
    -        return marker.evaluate()
    -    except packaging.markers.InvalidMarker as e:
    -        raise SyntaxError(e) from e
    -
    -
    -class NullProvider:
    -    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
    -
    -    egg_name = None
    -    egg_info = None
    -    loader = None
    -
    -    def __init__(self, module):
    -        self.loader = getattr(module, '__loader__', None)
    -        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
    -
    -    def get_resource_filename(self, manager, resource_name):
    -        return self._fn(self.module_path, resource_name)
    -
    -    def get_resource_stream(self, manager, resource_name):
    -        return io.BytesIO(self.get_resource_string(manager, resource_name))
    -
    -    def get_resource_string(self, manager, resource_name):
    -        return self._get(self._fn(self.module_path, resource_name))
    -
    -    def has_resource(self, resource_name):
    -        return self._has(self._fn(self.module_path, resource_name))
    -
    -    def _get_metadata_path(self, name):
    -        return self._fn(self.egg_info, name)
    -
    -    def has_metadata(self, name):
    -        if not self.egg_info:
    -            return self.egg_info
    -
    -        path = self._get_metadata_path(name)
    -        return self._has(path)
    -
    -    def get_metadata(self, name):
    -        if not self.egg_info:
    -            return ""
    -        path = self._get_metadata_path(name)
    -        value = self._get(path)
    -        try:
    -            return value.decode('utf-8')
    -        except UnicodeDecodeError as exc:
    -            # Include the path in the error message to simplify
    -            # troubleshooting, and without changing the exception type.
    -            exc.reason += ' in {} file at path: {}'.format(name, path)
    -            raise
    -
    -    def get_metadata_lines(self, name):
    -        return yield_lines(self.get_metadata(name))
    -
    -    def resource_isdir(self, resource_name):
    -        return self._isdir(self._fn(self.module_path, resource_name))
    -
    -    def metadata_isdir(self, name):
    -        return self.egg_info and self._isdir(self._fn(self.egg_info, name))
    -
    -    def resource_listdir(self, resource_name):
    -        return self._listdir(self._fn(self.module_path, resource_name))
    -
    -    def metadata_listdir(self, name):
    -        if self.egg_info:
    -            return self._listdir(self._fn(self.egg_info, name))
    -        return []
    -
    -    def run_script(self, script_name, namespace):
    -        script = 'scripts/' + script_name
    -        if not self.has_metadata(script):
    -            raise ResolutionError(
    -                "Script {script!r} not found in metadata at {self.egg_info!r}".format(
    -                    **locals()
    -                ),
    -            )
    -        script_text = self.get_metadata(script).replace('\r\n', '\n')
    -        script_text = script_text.replace('\r', '\n')
    -        script_filename = self._fn(self.egg_info, script)
    -        namespace['__file__'] = script_filename
    -        if os.path.exists(script_filename):
    -            with open(script_filename) as fid:
    -                source = fid.read()
    -            code = compile(source, script_filename, 'exec')
    -            exec(code, namespace, namespace)
    -        else:
    -            from linecache import cache
    -
    -            cache[script_filename] = (
    -                len(script_text),
    -                0,
    -                script_text.split('\n'),
    -                script_filename,
    -            )
    -            script_code = compile(script_text, script_filename, 'exec')
    -            exec(script_code, namespace, namespace)
    -
    -    def _has(self, path):
    -        raise NotImplementedError(
    -            "Can't perform this operation for unregistered loader type"
    -        )
    -
    -    def _isdir(self, path):
    -        raise NotImplementedError(
    -            "Can't perform this operation for unregistered loader type"
    -        )
    -
    -    def _listdir(self, path):
    -        raise NotImplementedError(
    -            "Can't perform this operation for unregistered loader type"
    -        )
    -
    -    def _fn(self, base, resource_name):
    -        self._validate_resource_path(resource_name)
    -        if resource_name:
    -            return os.path.join(base, *resource_name.split('/'))
    -        return base
    -
    -    @staticmethod
    -    def _validate_resource_path(path):
    -        """
    -        Validate the resource paths according to the docs.
    -        https://setuptools.pypa.io/en/latest/pkg_resources.html#basic-resource-access
    -
    -        >>> warned = getfixture('recwarn')
    -        >>> warnings.simplefilter('always')
    -        >>> vrp = NullProvider._validate_resource_path
    -        >>> vrp('foo/bar.txt')
    -        >>> bool(warned)
    -        False
    -        >>> vrp('../foo/bar.txt')
    -        >>> bool(warned)
    -        True
    -        >>> warned.clear()
    -        >>> vrp('/foo/bar.txt')
    -        >>> bool(warned)
    -        True
    -        >>> vrp('foo/../../bar.txt')
    -        >>> bool(warned)
    -        True
    -        >>> warned.clear()
    -        >>> vrp('foo/f../bar.txt')
    -        >>> bool(warned)
    -        False
    -
    -        Windows path separators are straight-up disallowed.
    -        >>> vrp(r'\\foo/bar.txt')
    -        Traceback (most recent call last):
    -        ...
    -        ValueError: Use of .. or absolute path in a resource path \
    -is not allowed.
    -
    -        >>> vrp(r'C:\\foo/bar.txt')
    -        Traceback (most recent call last):
    -        ...
    -        ValueError: Use of .. or absolute path in a resource path \
    -is not allowed.
    -
    -        Blank values are allowed
    -
    -        >>> vrp('')
    -        >>> bool(warned)
    -        False
    -
    -        Non-string values are not.
    -
    -        >>> vrp(None)
    -        Traceback (most recent call last):
    -        ...
    -        AttributeError: ...
    -        """
    -        invalid = (
    -            os.path.pardir in path.split(posixpath.sep)
    -            or posixpath.isabs(path)
    -            or ntpath.isabs(path)
    -        )
    -        if not invalid:
    -            return
    -
    -        msg = "Use of .. or absolute path in a resource path is not allowed."
    -
    -        # Aggressively disallow Windows absolute paths
    -        if ntpath.isabs(path) and not posixpath.isabs(path):
    -            raise ValueError(msg)
    -
    -        # for compatibility, warn; in future
    -        # raise ValueError(msg)
    -        issue_warning(
    -            msg[:-1] + " and will raise exceptions in a future release.",
    -            DeprecationWarning,
    -        )
    -
    -    def _get(self, path):
    -        if hasattr(self.loader, 'get_data'):
    -            return self.loader.get_data(path)
    -        raise NotImplementedError(
    -            "Can't perform this operation for loaders without 'get_data()'"
    -        )
    -
    -
    -register_loader_type(object, NullProvider)
    -
    -
    -def _parents(path):
    -    """
    -    yield all parents of path including path
    -    """
    -    last = None
    -    while path != last:
    -        yield path
    -        last = path
    -        path, _ = os.path.split(path)
    -
    -
    -class EggProvider(NullProvider):
    -    """Provider based on a virtual filesystem"""
    -
    -    def __init__(self, module):
    -        super().__init__(module)
    -        self._setup_prefix()
    -
    -    def _setup_prefix(self):
    -        # Assume that metadata may be nested inside a "basket"
    -        # of multiple eggs and use module_path instead of .archive.
    -        eggs = filter(_is_egg_path, _parents(self.module_path))
    -        egg = next(eggs, None)
    -        egg and self._set_egg(egg)
    -
    -    def _set_egg(self, path):
    -        self.egg_name = os.path.basename(path)
    -        self.egg_info = os.path.join(path, 'EGG-INFO')
    -        self.egg_root = path
    -
    -
    -class DefaultProvider(EggProvider):
    -    """Provides access to package resources in the filesystem"""
    -
    -    def _has(self, path):
    -        return os.path.exists(path)
    -
    -    def _isdir(self, path):
    -        return os.path.isdir(path)
    -
    -    def _listdir(self, path):
    -        return os.listdir(path)
    -
    -    def get_resource_stream(self, manager, resource_name):
    -        return open(self._fn(self.module_path, resource_name), 'rb')
    -
    -    def _get(self, path):
    -        with open(path, 'rb') as stream:
    -            return stream.read()
    -
    -    @classmethod
    -    def _register(cls):
    -        loader_names = (
    -            'SourceFileLoader',
    -            'SourcelessFileLoader',
    -        )
    -        for name in loader_names:
    -            loader_cls = getattr(importlib_machinery, name, type(None))
    -            register_loader_type(loader_cls, cls)
    -
    -
    -DefaultProvider._register()
    -
    -
    -class EmptyProvider(NullProvider):
    -    """Provider that returns nothing for all requests"""
    -
    -    module_path = None
    -
    -    _isdir = _has = lambda self, path: False
    -
    -    def _get(self, path):
    -        return ''
    -
    -    def _listdir(self, path):
    -        return []
    -
    -    def __init__(self):
    -        pass
    -
    -
    -empty_provider = EmptyProvider()
    -
    -
    -class ZipManifests(dict):
    -    """
    -    zip manifest builder
    -    """
    -
    -    @classmethod
    -    def build(cls, path):
    -        """
    -        Build a dictionary similar to the zipimport directory
    -        caches, except instead of tuples, store ZipInfo objects.
    -
    -        Use a platform-specific path separator (os.sep) for the path keys
    -        for compatibility with pypy on Windows.
    -        """
    -        with zipfile.ZipFile(path) as zfile:
    -            items = (
    -                (
    -                    name.replace('/', os.sep),
    -                    zfile.getinfo(name),
    -                )
    -                for name in zfile.namelist()
    -            )
    -            return dict(items)
    -
    -    load = build
    -
    -
    -class MemoizedZipManifests(ZipManifests):
    -    """
    -    Memoized zipfile manifests.
    -    """
    -
    -    manifest_mod = collections.namedtuple('manifest_mod', 'manifest mtime')
    -
    -    def load(self, path):
    -        """
    -        Load a manifest at path or return a suitable manifest already loaded.
    -        """
    -        path = os.path.normpath(path)
    -        mtime = os.stat(path).st_mtime
    -
    -        if path not in self or self[path].mtime != mtime:
    -            manifest = self.build(path)
    -            self[path] = self.manifest_mod(manifest, mtime)
    -
    -        return self[path].manifest
    -
    -
    -class ZipProvider(EggProvider):
    -    """Resource support for zips and eggs"""
    -
    -    eagers = None
    -    _zip_manifests = MemoizedZipManifests()
    -
    -    def __init__(self, module):
    -        super().__init__(module)
    -        self.zip_pre = self.loader.archive + os.sep
    -
    -    def _zipinfo_name(self, fspath):
    -        # Convert a virtual filename (full path to file) into a zipfile subpath
    -        # usable with the zipimport directory cache for our target archive
    -        fspath = fspath.rstrip(os.sep)
    -        if fspath == self.loader.archive:
    -            return ''
    -        if fspath.startswith(self.zip_pre):
    -            return fspath[len(self.zip_pre) :]
    -        raise AssertionError("%s is not a subpath of %s" % (fspath, self.zip_pre))
    -
    -    def _parts(self, zip_path):
    -        # Convert a zipfile subpath into an egg-relative path part list.
    -        # pseudo-fs path
    -        fspath = self.zip_pre + zip_path
    -        if fspath.startswith(self.egg_root + os.sep):
    -            return fspath[len(self.egg_root) + 1 :].split(os.sep)
    -        raise AssertionError("%s is not a subpath of %s" % (fspath, self.egg_root))
    -
    -    @property
    -    def zipinfo(self):
    -        return self._zip_manifests.load(self.loader.archive)
    -
    -    def get_resource_filename(self, manager, resource_name):
    -        if not self.egg_name:
    -            raise NotImplementedError(
    -                "resource_filename() only supported for .egg, not .zip"
    -            )
    -        # no need to lock for extraction, since we use temp names
    -        zip_path = self._resource_to_zip(resource_name)
    -        eagers = self._get_eager_resources()
    -        if '/'.join(self._parts(zip_path)) in eagers:
    -            for name in eagers:
    -                self._extract_resource(manager, self._eager_to_zip(name))
    -        return self._extract_resource(manager, zip_path)
    -
    -    @staticmethod
    -    def _get_date_and_size(zip_stat):
    -        size = zip_stat.file_size
    -        # ymdhms+wday, yday, dst
    -        date_time = zip_stat.date_time + (0, 0, -1)
    -        # 1980 offset already done
    -        timestamp = time.mktime(date_time)
    -        return timestamp, size
    -
    -    # FIXME: 'ZipProvider._extract_resource' is too complex (12)
    -    def _extract_resource(self, manager, zip_path):  # noqa: C901
    -        if zip_path in self._index():
    -            for name in self._index()[zip_path]:
    -                last = self._extract_resource(manager, os.path.join(zip_path, name))
    -            # return the extracted directory name
    -            return os.path.dirname(last)
    -
    -        timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
    -
    -        if not WRITE_SUPPORT:
    -            raise IOError(
    -                '"os.rename" and "os.unlink" are not supported ' 'on this platform'
    -            )
    -        try:
    -            real_path = manager.get_cache_path(self.egg_name, self._parts(zip_path))
    -
    -            if self._is_current(real_path, zip_path):
    -                return real_path
    -
    -            outf, tmpnam = _mkstemp(
    -                ".$extract",
    -                dir=os.path.dirname(real_path),
    -            )
    -            os.write(outf, self.loader.get_data(zip_path))
    -            os.close(outf)
    -            utime(tmpnam, (timestamp, timestamp))
    -            manager.postprocess(tmpnam, real_path)
    -
    -            try:
    -                rename(tmpnam, real_path)
    -
    -            except os.error:
    -                if os.path.isfile(real_path):
    -                    if self._is_current(real_path, zip_path):
    -                        # the file became current since it was checked above,
    -                        #  so proceed.
    -                        return real_path
    -                    # Windows, del old file and retry
    -                    elif os.name == 'nt':
    -                        unlink(real_path)
    -                        rename(tmpnam, real_path)
    -                        return real_path
    -                raise
    -
    -        except os.error:
    -            # report a user-friendly error
    -            manager.extraction_error()
    -
    -        return real_path
    -
    -    def _is_current(self, file_path, zip_path):
    -        """
    -        Return True if the file_path is current for this zip_path
    -        """
    -        timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
    -        if not os.path.isfile(file_path):
    -            return False
    -        stat = os.stat(file_path)
    -        if stat.st_size != size or stat.st_mtime != timestamp:
    -            return False
    -        # check that the contents match
    -        zip_contents = self.loader.get_data(zip_path)
    -        with open(file_path, 'rb') as f:
    -            file_contents = f.read()
    -        return zip_contents == file_contents
    -
    -    def _get_eager_resources(self):
    -        if self.eagers is None:
    -            eagers = []
    -            for name in ('native_libs.txt', 'eager_resources.txt'):
    -                if self.has_metadata(name):
    -                    eagers.extend(self.get_metadata_lines(name))
    -            self.eagers = eagers
    -        return self.eagers
    -
    -    def _index(self):
    -        try:
    -            return self._dirindex
    -        except AttributeError:
    -            ind = {}
    -            for path in self.zipinfo:
    -                parts = path.split(os.sep)
    -                while parts:
    -                    parent = os.sep.join(parts[:-1])
    -                    if parent in ind:
    -                        ind[parent].append(parts[-1])
    -                        break
    -                    else:
    -                        ind[parent] = [parts.pop()]
    -            self._dirindex = ind
    -            return ind
    -
    -    def _has(self, fspath):
    -        zip_path = self._zipinfo_name(fspath)
    -        return zip_path in self.zipinfo or zip_path in self._index()
    -
    -    def _isdir(self, fspath):
    -        return self._zipinfo_name(fspath) in self._index()
    -
    -    def _listdir(self, fspath):
    -        return list(self._index().get(self._zipinfo_name(fspath), ()))
    -
    -    def _eager_to_zip(self, resource_name):
    -        return self._zipinfo_name(self._fn(self.egg_root, resource_name))
    -
    -    def _resource_to_zip(self, resource_name):
    -        return self._zipinfo_name(self._fn(self.module_path, resource_name))
    -
    -
    -register_loader_type(zipimport.zipimporter, ZipProvider)
    -
    -
    -class FileMetadata(EmptyProvider):
    -    """Metadata handler for standalone PKG-INFO files
    -
    -    Usage::
    -
    -        metadata = FileMetadata("/path/to/PKG-INFO")
    -
    -    This provider rejects all data and metadata requests except for PKG-INFO,
    -    which is treated as existing, and will be the contents of the file at
    -    the provided location.
    -    """
    -
    -    def __init__(self, path):
    -        self.path = path
    -
    -    def _get_metadata_path(self, name):
    -        return self.path
    -
    -    def has_metadata(self, name):
    -        return name == 'PKG-INFO' and os.path.isfile(self.path)
    -
    -    def get_metadata(self, name):
    -        if name != 'PKG-INFO':
    -            raise KeyError("No metadata except PKG-INFO is available")
    -
    -        with io.open(self.path, encoding='utf-8', errors="replace") as f:
    -            metadata = f.read()
    -        self._warn_on_replacement(metadata)
    -        return metadata
    -
    -    def _warn_on_replacement(self, metadata):
    -        replacement_char = '�'
    -        if replacement_char in metadata:
    -            tmpl = "{self.path} could not be properly decoded in UTF-8"
    -            msg = tmpl.format(**locals())
    -            warnings.warn(msg)
    -
    -    def get_metadata_lines(self, name):
    -        return yield_lines(self.get_metadata(name))
    -
    -
    -class PathMetadata(DefaultProvider):
    -    """Metadata provider for egg directories
    -
    -    Usage::
    -
    -        # Development eggs:
    -
    -        egg_info = "/path/to/PackageName.egg-info"
    -        base_dir = os.path.dirname(egg_info)
    -        metadata = PathMetadata(base_dir, egg_info)
    -        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
    -        dist = Distribution(basedir, project_name=dist_name, metadata=metadata)
    -
    -        # Unpacked egg directories:
    -
    -        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
    -        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
    -        dist = Distribution.from_filename(egg_path, metadata=metadata)
    -    """
    -
    -    def __init__(self, path, egg_info):
    -        self.module_path = path
    -        self.egg_info = egg_info
    -
    -
    -class EggMetadata(ZipProvider):
    -    """Metadata provider for .egg files"""
    -
    -    def __init__(self, importer):
    -        """Create a metadata provider from a zipimporter"""
    -
    -        self.zip_pre = importer.archive + os.sep
    -        self.loader = importer
    -        if importer.prefix:
    -            self.module_path = os.path.join(importer.archive, importer.prefix)
    -        else:
    -            self.module_path = importer.archive
    -        self._setup_prefix()
    -
    -
    -_declare_state('dict', _distribution_finders={})
    -
    -
    -def register_finder(importer_type, distribution_finder):
    -    """Register `distribution_finder` to find distributions in sys.path items
    -
    -    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
    -    handler), and `distribution_finder` is a callable that, passed a path
    -    item and the importer instance, yields ``Distribution`` instances found on
    -    that path item.  See ``pkg_resources.find_on_path`` for an example."""
    -    _distribution_finders[importer_type] = distribution_finder
    -
    -
    -def find_distributions(path_item, only=False):
    -    """Yield distributions accessible via `path_item`"""
    -    importer = get_importer(path_item)
    -    finder = _find_adapter(_distribution_finders, importer)
    -    return finder(importer, path_item, only)
    -
    -
    -def find_eggs_in_zip(importer, path_item, only=False):
    -    """
    -    Find eggs in zip files; possibly multiple nested eggs.
    -    """
    -    if importer.archive.endswith('.whl'):
    -        # wheels are not supported with this finder
    -        # they don't have PKG-INFO metadata, and won't ever contain eggs
    -        return
    -    metadata = EggMetadata(importer)
    -    if metadata.has_metadata('PKG-INFO'):
    -        yield Distribution.from_filename(path_item, metadata=metadata)
    -    if only:
    -        # don't yield nested distros
    -        return
    -    for subitem in metadata.resource_listdir(''):
    -        if _is_egg_path(subitem):
    -            subpath = os.path.join(path_item, subitem)
    -            dists = find_eggs_in_zip(zipimport.zipimporter(subpath), subpath)
    -            for dist in dists:
    -                yield dist
    -        elif subitem.lower().endswith(('.dist-info', '.egg-info')):
    -            subpath = os.path.join(path_item, subitem)
    -            submeta = EggMetadata(zipimport.zipimporter(subpath))
    -            submeta.egg_info = subpath
    -            yield Distribution.from_location(path_item, subitem, submeta)
    -
    -
    -register_finder(zipimport.zipimporter, find_eggs_in_zip)
    -
    -
    -def find_nothing(importer, path_item, only=False):
    -    return ()
    -
    -
    -register_finder(object, find_nothing)
    -
    -
    -def find_on_path(importer, path_item, only=False):
    -    """Yield distributions accessible on a sys.path directory"""
    -    path_item = _normalize_cached(path_item)
    -
    -    if _is_unpacked_egg(path_item):
    -        yield Distribution.from_filename(
    -            path_item,
    -            metadata=PathMetadata(path_item, os.path.join(path_item, 'EGG-INFO')),
    -        )
    -        return
    -
    -    entries = (os.path.join(path_item, child) for child in safe_listdir(path_item))
    -
    -    # scan for .egg and .egg-info in directory
    -    for entry in sorted(entries):
    -        fullpath = os.path.join(path_item, entry)
    -        factory = dist_factory(path_item, entry, only)
    -        for dist in factory(fullpath):
    -            yield dist
    -
    -
    -def dist_factory(path_item, entry, only):
    -    """Return a dist_factory for the given entry."""
    -    lower = entry.lower()
    -    is_egg_info = lower.endswith('.egg-info')
    -    is_dist_info = lower.endswith('.dist-info') and os.path.isdir(
    -        os.path.join(path_item, entry)
    -    )
    -    is_meta = is_egg_info or is_dist_info
    -    return (
    -        distributions_from_metadata
    -        if is_meta
    -        else find_distributions
    -        if not only and _is_egg_path(entry)
    -        else resolve_egg_link
    -        if not only and lower.endswith('.egg-link')
    -        else NoDists()
    -    )
    -
    -
    -class NoDists:
    -    """
    -    >>> bool(NoDists())
    -    False
    -
    -    >>> list(NoDists()('anything'))
    -    []
    -    """
    -
    -    def __bool__(self):
    -        return False
    -
    -    def __call__(self, fullpath):
    -        return iter(())
    -
    -
    -def safe_listdir(path):
    -    """
    -    Attempt to list contents of path, but suppress some exceptions.
    -    """
    -    try:
    -        return os.listdir(path)
    -    except (PermissionError, NotADirectoryError):
    -        pass
    -    except OSError as e:
    -        # Ignore the directory if does not exist, not a directory or
    -        # permission denied
    -        if e.errno not in (errno.ENOTDIR, errno.EACCES, errno.ENOENT):
    -            raise
    -    return ()
    -
    -
    -def distributions_from_metadata(path):
    -    root = os.path.dirname(path)
    -    if os.path.isdir(path):
    -        if len(os.listdir(path)) == 0:
    -            # empty metadata dir; skip
    -            return
    -        metadata = PathMetadata(root, path)
    -    else:
    -        metadata = FileMetadata(path)
    -    entry = os.path.basename(path)
    -    yield Distribution.from_location(
    -        root,
    -        entry,
    -        metadata,
    -        precedence=DEVELOP_DIST,
    -    )
    -
    -
    -def non_empty_lines(path):
    -    """
    -    Yield non-empty lines from file at path
    -    """
    -    with open(path) as f:
    -        for line in f:
    -            line = line.strip()
    -            if line:
    -                yield line
    -
    -
    -def resolve_egg_link(path):
    -    """
    -    Given a path to an .egg-link, resolve distributions
    -    present in the referenced path.
    -    """
    -    referenced_paths = non_empty_lines(path)
    -    resolved_paths = (
    -        os.path.join(os.path.dirname(path), ref) for ref in referenced_paths
    -    )
    -    dist_groups = map(find_distributions, resolved_paths)
    -    return next(dist_groups, ())
    -
    -
    -if hasattr(pkgutil, 'ImpImporter'):
    -    register_finder(pkgutil.ImpImporter, find_on_path)
    -
    -register_finder(importlib_machinery.FileFinder, find_on_path)
    -
    -_declare_state('dict', _namespace_handlers={})
    -_declare_state('dict', _namespace_packages={})
    -
    -
    -def register_namespace_handler(importer_type, namespace_handler):
    -    """Register `namespace_handler` to declare namespace packages
    -
    -    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
    -    handler), and `namespace_handler` is a callable like this::
    -
    -        def namespace_handler(importer, path_entry, moduleName, module):
    -            # return a path_entry to use for child packages
    -
    -    Namespace handlers are only called if the importer object has already
    -    agreed that it can handle the relevant path item, and they should only
    -    return a subpath if the module __path__ does not already contain an
    -    equivalent subpath.  For an example namespace handler, see
    -    ``pkg_resources.file_ns_handler``.
    -    """
    -    _namespace_handlers[importer_type] = namespace_handler
    -
    -
    -def _handle_ns(packageName, path_item):
    -    """Ensure that named package includes a subpath of path_item (if needed)"""
    -
    -    importer = get_importer(path_item)
    -    if importer is None:
    -        return None
    -
    -    # use find_spec (PEP 451) and fall-back to find_module (PEP 302)
    -    try:
    -        spec = importer.find_spec(packageName)
    -    except AttributeError:
    -        # capture warnings due to #1111
    -        with warnings.catch_warnings():
    -            warnings.simplefilter("ignore")
    -            loader = importer.find_module(packageName)
    -    else:
    -        loader = spec.loader if spec else None
    -
    -    if loader is None:
    -        return None
    -    module = sys.modules.get(packageName)
    -    if module is None:
    -        module = sys.modules[packageName] = types.ModuleType(packageName)
    -        module.__path__ = []
    -        _set_parent_ns(packageName)
    -    elif not hasattr(module, '__path__'):
    -        raise TypeError("Not a package:", packageName)
    -    handler = _find_adapter(_namespace_handlers, importer)
    -    subpath = handler(importer, path_item, packageName, module)
    -    if subpath is not None:
    -        path = module.__path__
    -        path.append(subpath)
    -        importlib.import_module(packageName)
    -        _rebuild_mod_path(path, packageName, module)
    -    return subpath
    -
    -
    -def _rebuild_mod_path(orig_path, package_name, module):
    -    """
    -    Rebuild module.__path__ ensuring that all entries are ordered
    -    corresponding to their sys.path order
    -    """
    -    sys_path = [_normalize_cached(p) for p in sys.path]
    -
    -    def safe_sys_path_index(entry):
    -        """
    -        Workaround for #520 and #513.
    -        """
    -        try:
    -            return sys_path.index(entry)
    -        except ValueError:
    -            return float('inf')
    -
    -    def position_in_sys_path(path):
    -        """
    -        Return the ordinal of the path based on its position in sys.path
    -        """
    -        path_parts = path.split(os.sep)
    -        module_parts = package_name.count('.') + 1
    -        parts = path_parts[:-module_parts]
    -        return safe_sys_path_index(_normalize_cached(os.sep.join(parts)))
    -
    -    new_path = sorted(orig_path, key=position_in_sys_path)
    -    new_path = [_normalize_cached(p) for p in new_path]
    -
    -    if isinstance(module.__path__, list):
    -        module.__path__[:] = new_path
    -    else:
    -        module.__path__ = new_path
    -
    -
    -def declare_namespace(packageName):
    -    """Declare that package 'packageName' is a namespace package"""
    -
    -    msg = (
    -        f"Deprecated call to `pkg_resources.declare_namespace({packageName!r})`.\n"
    -        "Implementing implicit namespace packages (as specified in PEP 420) "
    -        "is preferred to `pkg_resources.declare_namespace`. "
    -        "See https://setuptools.pypa.io/en/latest/references/"
    -        "keywords.html#keyword-namespace-packages"
    -    )
    -    warnings.warn(msg, DeprecationWarning, stacklevel=2)
    -
    -    _imp.acquire_lock()
    -    try:
    -        if packageName in _namespace_packages:
    -            return
    -
    -        path = sys.path
    -        parent, _, _ = packageName.rpartition('.')
    -
    -        if parent:
    -            declare_namespace(parent)
    -            if parent not in _namespace_packages:
    -                __import__(parent)
    -            try:
    -                path = sys.modules[parent].__path__
    -            except AttributeError as e:
    -                raise TypeError("Not a package:", parent) from e
    -
    -        # Track what packages are namespaces, so when new path items are added,
    -        # they can be updated
    -        _namespace_packages.setdefault(parent or None, []).append(packageName)
    -        _namespace_packages.setdefault(packageName, [])
    -
    -        for path_item in path:
    -            # Ensure all the parent's path items are reflected in the child,
    -            # if they apply
    -            _handle_ns(packageName, path_item)
    -
    -    finally:
    -        _imp.release_lock()
    -
    -
    -def fixup_namespace_packages(path_item, parent=None):
    -    """Ensure that previously-declared namespace packages include path_item"""
    -    _imp.acquire_lock()
    -    try:
    -        for package in _namespace_packages.get(parent, ()):
    -            subpath = _handle_ns(package, path_item)
    -            if subpath:
    -                fixup_namespace_packages(subpath, package)
    -    finally:
    -        _imp.release_lock()
    -
    -
    -def file_ns_handler(importer, path_item, packageName, module):
    -    """Compute an ns-package subpath for a filesystem or zipfile importer"""
    -
    -    subpath = os.path.join(path_item, packageName.split('.')[-1])
    -    normalized = _normalize_cached(subpath)
    -    for item in module.__path__:
    -        if _normalize_cached(item) == normalized:
    -            break
    -    else:
    -        # Only return the path if it's not already there
    -        return subpath
    -
    -
    -if hasattr(pkgutil, 'ImpImporter'):
    -    register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
    -
    -register_namespace_handler(zipimport.zipimporter, file_ns_handler)
    -register_namespace_handler(importlib_machinery.FileFinder, file_ns_handler)
    -
    -
    -def null_ns_handler(importer, path_item, packageName, module):
    -    return None
    -
    -
    -register_namespace_handler(object, null_ns_handler)
    -
    -
    -def normalize_path(filename):
    -    """Normalize a file/dir name for comparison purposes"""
    -    return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
    -
    -
    -def _cygwin_patch(filename):  # pragma: nocover
    -    """
    -    Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
    -    symlink components. Using
    -    os.path.abspath() works around this limitation. A fix in os.getcwd()
    -    would probably better, in Cygwin even more so, except
    -    that this seems to be by design...
    -    """
    -    return os.path.abspath(filename) if sys.platform == 'cygwin' else filename
    -
    -
    -def _normalize_cached(filename, _cache={}):
    -    try:
    -        return _cache[filename]
    -    except KeyError:
    -        _cache[filename] = result = normalize_path(filename)
    -        return result
    -
    -
    -def _is_egg_path(path):
    -    """
    -    Determine if given path appears to be an egg.
    -    """
    -    return _is_zip_egg(path) or _is_unpacked_egg(path)
    -
    -
    -def _is_zip_egg(path):
    -    return (
    -        path.lower().endswith('.egg')
    -        and os.path.isfile(path)
    -        and zipfile.is_zipfile(path)
    -    )
    -
    -
    -def _is_unpacked_egg(path):
    -    """
    -    Determine if given path appears to be an unpacked egg.
    -    """
    -    return path.lower().endswith('.egg') and os.path.isfile(
    -        os.path.join(path, 'EGG-INFO', 'PKG-INFO')
    -    )
    -
    -
    -def _set_parent_ns(packageName):
    -    parts = packageName.split('.')
    -    name = parts.pop()
    -    if parts:
    -        parent = '.'.join(parts)
    -        setattr(sys.modules[parent], name, sys.modules[packageName])
    -
    -
    -MODULE = re.compile(r"\w+(\.\w+)*$").match
    -EGG_NAME = re.compile(
    -    r"""
    -    (?P[^-]+) (
    -        -(?P[^-]+) (
    -            -py(?P[^-]+) (
    -                -(?P.+)
    -            )?
    -        )?
    -    )?
    -    """,
    -    re.VERBOSE | re.IGNORECASE,
    -).match
    -
    -
    -class EntryPoint:
    -    """Object representing an advertised importable object"""
    -
    -    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
    -        if not MODULE(module_name):
    -            raise ValueError("Invalid module name", module_name)
    -        self.name = name
    -        self.module_name = module_name
    -        self.attrs = tuple(attrs)
    -        self.extras = tuple(extras)
    -        self.dist = dist
    -
    -    def __str__(self):
    -        s = "%s = %s" % (self.name, self.module_name)
    -        if self.attrs:
    -            s += ':' + '.'.join(self.attrs)
    -        if self.extras:
    -            s += ' [%s]' % ','.join(self.extras)
    -        return s
    -
    -    def __repr__(self):
    -        return "EntryPoint.parse(%r)" % str(self)
    -
    -    def load(self, require=True, *args, **kwargs):
    -        """
    -        Require packages for this EntryPoint, then resolve it.
    -        """
    -        if not require or args or kwargs:
    -            warnings.warn(
    -                "Parameters to load are deprecated.  Call .resolve and "
    -                ".require separately.",
    -                PkgResourcesDeprecationWarning,
    -                stacklevel=2,
    -            )
    -        if require:
    -            self.require(*args, **kwargs)
    -        return self.resolve()
    -
    -    def resolve(self):
    -        """
    -        Resolve the entry point from its module and attrs.
    -        """
    -        module = __import__(self.module_name, fromlist=['__name__'], level=0)
    -        try:
    -            return functools.reduce(getattr, self.attrs, module)
    -        except AttributeError as exc:
    -            raise ImportError(str(exc)) from exc
    -
    -    def require(self, env=None, installer=None):
    -        if self.extras and not self.dist:
    -            raise UnknownExtra("Can't require() without a distribution", self)
    -
    -        # Get the requirements for this entry point with all its extras and
    -        # then resolve them. We have to pass `extras` along when resolving so
    -        # that the working set knows what extras we want. Otherwise, for
    -        # dist-info distributions, the working set will assume that the
    -        # requirements for that extra are purely optional and skip over them.
    -        reqs = self.dist.requires(self.extras)
    -        items = working_set.resolve(reqs, env, installer, extras=self.extras)
    -        list(map(working_set.add, items))
    -
    -    pattern = re.compile(
    -        r'\s*'
    -        r'(?P.+?)\s*'
    -        r'=\s*'
    -        r'(?P[\w.]+)\s*'
    -        r'(:\s*(?P[\w.]+))?\s*'
    -        r'(?P\[.*\])?\s*$'
    -    )
    -
    -    @classmethod
    -    def parse(cls, src, dist=None):
    -        """Parse a single entry point from string `src`
    -
    -        Entry point syntax follows the form::
    -
    -            name = some.module:some.attr [extra1, extra2]
    -
    -        The entry name and module name are required, but the ``:attrs`` and
    -        ``[extras]`` parts are optional
    -        """
    -        m = cls.pattern.match(src)
    -        if not m:
    -            msg = "EntryPoint must be in 'name=module:attrs [extras]' format"
    -            raise ValueError(msg, src)
    -        res = m.groupdict()
    -        extras = cls._parse_extras(res['extras'])
    -        attrs = res['attr'].split('.') if res['attr'] else ()
    -        return cls(res['name'], res['module'], attrs, extras, dist)
    -
    -    @classmethod
    -    def _parse_extras(cls, extras_spec):
    -        if not extras_spec:
    -            return ()
    -        req = Requirement.parse('x' + extras_spec)
    -        if req.specs:
    -            raise ValueError()
    -        return req.extras
    -
    -    @classmethod
    -    def parse_group(cls, group, lines, dist=None):
    -        """Parse an entry point group"""
    -        if not MODULE(group):
    -            raise ValueError("Invalid group name", group)
    -        this = {}
    -        for line in yield_lines(lines):
    -            ep = cls.parse(line, dist)
    -            if ep.name in this:
    -                raise ValueError("Duplicate entry point", group, ep.name)
    -            this[ep.name] = ep
    -        return this
    -
    -    @classmethod
    -    def parse_map(cls, data, dist=None):
    -        """Parse a map of entry point groups"""
    -        if isinstance(data, dict):
    -            data = data.items()
    -        else:
    -            data = split_sections(data)
    -        maps = {}
    -        for group, lines in data:
    -            if group is None:
    -                if not lines:
    -                    continue
    -                raise ValueError("Entry points must be listed in groups")
    -            group = group.strip()
    -            if group in maps:
    -                raise ValueError("Duplicate group name", group)
    -            maps[group] = cls.parse_group(group, lines, dist)
    -        return maps
    -
    -
    -def _version_from_file(lines):
    -    """
    -    Given an iterable of lines from a Metadata file, return
    -    the value of the Version field, if present, or None otherwise.
    -    """
    -
    -    def is_version_line(line):
    -        return line.lower().startswith('version:')
    -
    -    version_lines = filter(is_version_line, lines)
    -    line = next(iter(version_lines), '')
    -    _, _, value = line.partition(':')
    -    return safe_version(value.strip()) or None
    -
    -
    -class Distribution:
    -    """Wrap an actual or potential sys.path entry w/metadata"""
    -
    -    PKG_INFO = 'PKG-INFO'
    -
    -    def __init__(
    -        self,
    -        location=None,
    -        metadata=None,
    -        project_name=None,
    -        version=None,
    -        py_version=PY_MAJOR,
    -        platform=None,
    -        precedence=EGG_DIST,
    -    ):
    -        self.project_name = safe_name(project_name or 'Unknown')
    -        if version is not None:
    -            self._version = safe_version(version)
    -        self.py_version = py_version
    -        self.platform = platform
    -        self.location = location
    -        self.precedence = precedence
    -        self._provider = metadata or empty_provider
    -
    -    @classmethod
    -    def from_location(cls, location, basename, metadata=None, **kw):
    -        project_name, version, py_version, platform = [None] * 4
    -        basename, ext = os.path.splitext(basename)
    -        if ext.lower() in _distributionImpl:
    -            cls = _distributionImpl[ext.lower()]
    -
    -            match = EGG_NAME(basename)
    -            if match:
    -                project_name, version, py_version, platform = match.group(
    -                    'name', 'ver', 'pyver', 'plat'
    -                )
    -        return cls(
    -            location,
    -            metadata,
    -            project_name=project_name,
    -            version=version,
    -            py_version=py_version,
    -            platform=platform,
    -            **kw,
    -        )._reload_version()
    -
    -    def _reload_version(self):
    -        return self
    -
    -    @property
    -    def hashcmp(self):
    -        return (
    -            self._forgiving_parsed_version,
    -            self.precedence,
    -            self.key,
    -            self.location,
    -            self.py_version or '',
    -            self.platform or '',
    -        )
    -
    -    def __hash__(self):
    -        return hash(self.hashcmp)
    -
    -    def __lt__(self, other):
    -        return self.hashcmp < other.hashcmp
    -
    -    def __le__(self, other):
    -        return self.hashcmp <= other.hashcmp
    -
    -    def __gt__(self, other):
    -        return self.hashcmp > other.hashcmp
    -
    -    def __ge__(self, other):
    -        return self.hashcmp >= other.hashcmp
    -
    -    def __eq__(self, other):
    -        if not isinstance(other, self.__class__):
    -            # It's not a Distribution, so they are not equal
    -            return False
    -        return self.hashcmp == other.hashcmp
    -
    -    def __ne__(self, other):
    -        return not self == other
    -
    -    # These properties have to be lazy so that we don't have to load any
    -    # metadata until/unless it's actually needed.  (i.e., some distributions
    -    # may not know their name or version without loading PKG-INFO)
    -
    -    @property
    -    def key(self):
    -        try:
    -            return self._key
    -        except AttributeError:
    -            self._key = key = self.project_name.lower()
    -            return key
    -
    -    @property
    -    def parsed_version(self):
    -        if not hasattr(self, "_parsed_version"):
    -            try:
    -                self._parsed_version = parse_version(self.version)
    -            except packaging.version.InvalidVersion as ex:
    -                info = f"(package: {self.project_name})"
    -                if hasattr(ex, "add_note"):
    -                    ex.add_note(info)  # PEP 678
    -                    raise
    -                raise packaging.version.InvalidVersion(f"{str(ex)} {info}") from None
    -
    -        return self._parsed_version
    -
    -    @property
    -    def _forgiving_parsed_version(self):
    -        try:
    -            return self.parsed_version
    -        except packaging.version.InvalidVersion as ex:
    -            self._parsed_version = parse_version(_forgiving_version(self.version))
    -
    -            notes = "\n".join(getattr(ex, "__notes__", []))  # PEP 678
    -            msg = f"""!!\n\n
    -            *************************************************************************
    -            {str(ex)}\n{notes}
    -
    -            This is a long overdue deprecation.
    -            For the time being, `pkg_resources` will use `{self._parsed_version}`
    -            as a replacement to avoid breaking existing environments,
    -            but no future compatibility is guaranteed.
    -
    -            If you maintain package {self.project_name} you should implement
    -            the relevant changes to adequate the project to PEP 440 immediately.
    -            *************************************************************************
    -            \n\n!!
    -            """
    -            warnings.warn(msg, DeprecationWarning)
    -
    -            return self._parsed_version
    -
    -    @property
    -    def version(self):
    -        try:
    -            return self._version
    -        except AttributeError as e:
    -            version = self._get_version()
    -            if version is None:
    -                path = self._get_metadata_path_for_display(self.PKG_INFO)
    -                msg = ("Missing 'Version:' header and/or {} file at path: {}").format(
    -                    self.PKG_INFO, path
    -                )
    -                raise ValueError(msg, self) from e
    -
    -            return version
    -
    -    @property
    -    def _dep_map(self):
    -        """
    -        A map of extra to its list of (direct) requirements
    -        for this distribution, including the null extra.
    -        """
    -        try:
    -            return self.__dep_map
    -        except AttributeError:
    -            self.__dep_map = self._filter_extras(self._build_dep_map())
    -        return self.__dep_map
    -
    -    @staticmethod
    -    def _filter_extras(dm):
    -        """
    -        Given a mapping of extras to dependencies, strip off
    -        environment markers and filter out any dependencies
    -        not matching the markers.
    -        """
    -        for extra in list(filter(None, dm)):
    -            new_extra = extra
    -            reqs = dm.pop(extra)
    -            new_extra, _, marker = extra.partition(':')
    -            fails_marker = marker and (
    -                invalid_marker(marker) or not evaluate_marker(marker)
    -            )
    -            if fails_marker:
    -                reqs = []
    -            new_extra = safe_extra(new_extra) or None
    -
    -            dm.setdefault(new_extra, []).extend(reqs)
    -        return dm
    -
    -    def _build_dep_map(self):
    -        dm = {}
    -        for name in 'requires.txt', 'depends.txt':
    -            for extra, reqs in split_sections(self._get_metadata(name)):
    -                dm.setdefault(extra, []).extend(parse_requirements(reqs))
    -        return dm
    -
    -    def requires(self, extras=()):
    -        """List of Requirements needed for this distro if `extras` are used"""
    -        dm = self._dep_map
    -        deps = []
    -        deps.extend(dm.get(None, ()))
    -        for ext in extras:
    -            try:
    -                deps.extend(dm[safe_extra(ext)])
    -            except KeyError as e:
    -                raise UnknownExtra(
    -                    "%s has no such extra feature %r" % (self, ext)
    -                ) from e
    -        return deps
    -
    -    def _get_metadata_path_for_display(self, name):
    -        """
    -        Return the path to the given metadata file, if available.
    -        """
    -        try:
    -            # We need to access _get_metadata_path() on the provider object
    -            # directly rather than through this class's __getattr__()
    -            # since _get_metadata_path() is marked private.
    -            path = self._provider._get_metadata_path(name)
    -
    -        # Handle exceptions e.g. in case the distribution's metadata
    -        # provider doesn't support _get_metadata_path().
    -        except Exception:
    -            return '[could not detect]'
    -
    -        return path
    -
    -    def _get_metadata(self, name):
    -        if self.has_metadata(name):
    -            for line in self.get_metadata_lines(name):
    -                yield line
    -
    -    def _get_version(self):
    -        lines = self._get_metadata(self.PKG_INFO)
    -        version = _version_from_file(lines)
    -
    -        return version
    -
    -    def activate(self, path=None, replace=False):
    -        """Ensure distribution is importable on `path` (default=sys.path)"""
    -        if path is None:
    -            path = sys.path
    -        self.insert_on(path, replace=replace)
    -        if path is sys.path:
    -            fixup_namespace_packages(self.location)
    -            for pkg in self._get_metadata('namespace_packages.txt'):
    -                if pkg in sys.modules:
    -                    declare_namespace(pkg)
    -
    -    def egg_name(self):
    -        """Return what this distribution's standard .egg filename should be"""
    -        filename = "%s-%s-py%s" % (
    -            to_filename(self.project_name),
    -            to_filename(self.version),
    -            self.py_version or PY_MAJOR,
    -        )
    -
    -        if self.platform:
    -            filename += '-' + self.platform
    -        return filename
    -
    -    def __repr__(self):
    -        if self.location:
    -            return "%s (%s)" % (self, self.location)
    -        else:
    -            return str(self)
    -
    -    def __str__(self):
    -        try:
    -            version = getattr(self, 'version', None)
    -        except ValueError:
    -            version = None
    -        version = version or "[unknown version]"
    -        return "%s %s" % (self.project_name, version)
    -
    -    def __getattr__(self, attr):
    -        """Delegate all unrecognized public attributes to .metadata provider"""
    -        if attr.startswith('_'):
    -            raise AttributeError(attr)
    -        return getattr(self._provider, attr)
    -
    -    def __dir__(self):
    -        return list(
    -            set(super(Distribution, self).__dir__())
    -            | set(attr for attr in self._provider.__dir__() if not attr.startswith('_'))
    -        )
    -
    -    @classmethod
    -    def from_filename(cls, filename, metadata=None, **kw):
    -        return cls.from_location(
    -            _normalize_cached(filename), os.path.basename(filename), metadata, **kw
    -        )
    -
    -    def as_requirement(self):
    -        """Return a ``Requirement`` that matches this distribution exactly"""
    -        if isinstance(self.parsed_version, packaging.version.Version):
    -            spec = "%s==%s" % (self.project_name, self.parsed_version)
    -        else:
    -            spec = "%s===%s" % (self.project_name, self.parsed_version)
    -
    -        return Requirement.parse(spec)
    -
    -    def load_entry_point(self, group, name):
    -        """Return the `name` entry point of `group` or raise ImportError"""
    -        ep = self.get_entry_info(group, name)
    -        if ep is None:
    -            raise ImportError("Entry point %r not found" % ((group, name),))
    -        return ep.load()
    -
    -    def get_entry_map(self, group=None):
    -        """Return the entry point map for `group`, or the full entry map"""
    -        try:
    -            ep_map = self._ep_map
    -        except AttributeError:
    -            ep_map = self._ep_map = EntryPoint.parse_map(
    -                self._get_metadata('entry_points.txt'), self
    -            )
    -        if group is not None:
    -            return ep_map.get(group, {})
    -        return ep_map
    -
    -    def get_entry_info(self, group, name):
    -        """Return the EntryPoint object for `group`+`name`, or ``None``"""
    -        return self.get_entry_map(group).get(name)
    -
    -    # FIXME: 'Distribution.insert_on' is too complex (13)
    -    def insert_on(self, path, loc=None, replace=False):  # noqa: C901
    -        """Ensure self.location is on path
    -
    -        If replace=False (default):
    -            - If location is already in path anywhere, do nothing.
    -            - Else:
    -              - If it's an egg and its parent directory is on path,
    -                insert just ahead of the parent.
    -              - Else: add to the end of path.
    -        If replace=True:
    -            - If location is already on path anywhere (not eggs)
    -              or higher priority than its parent (eggs)
    -              do nothing.
    -            - Else:
    -              - If it's an egg and its parent directory is on path,
    -                insert just ahead of the parent,
    -                removing any lower-priority entries.
    -              - Else: add it to the front of path.
    -        """
    -
    -        loc = loc or self.location
    -        if not loc:
    -            return
    -
    -        nloc = _normalize_cached(loc)
    -        bdir = os.path.dirname(nloc)
    -        npath = [(p and _normalize_cached(p) or p) for p in path]
    -
    -        for p, item in enumerate(npath):
    -            if item == nloc:
    -                if replace:
    -                    break
    -                else:
    -                    # don't modify path (even removing duplicates) if
    -                    # found and not replace
    -                    return
    -            elif item == bdir and self.precedence == EGG_DIST:
    -                # if it's an .egg, give it precedence over its directory
    -                # UNLESS it's already been added to sys.path and replace=False
    -                if (not replace) and nloc in npath[p:]:
    -                    return
    -                if path is sys.path:
    -                    self.check_version_conflict()
    -                path.insert(p, loc)
    -                npath.insert(p, nloc)
    -                break
    -        else:
    -            if path is sys.path:
    -                self.check_version_conflict()
    -            if replace:
    -                path.insert(0, loc)
    -            else:
    -                path.append(loc)
    -            return
    -
    -        # p is the spot where we found or inserted loc; now remove duplicates
    -        while True:
    -            try:
    -                np = npath.index(nloc, p + 1)
    -            except ValueError:
    -                break
    -            else:
    -                del npath[np], path[np]
    -                # ha!
    -                p = np
    -
    -        return
    -
    -    def check_version_conflict(self):
    -        if self.key == 'setuptools':
    -            # ignore the inevitable setuptools self-conflicts  :(
    -            return
    -
    -        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
    -        loc = normalize_path(self.location)
    -        for modname in self._get_metadata('top_level.txt'):
    -            if (
    -                modname not in sys.modules
    -                or modname in nsp
    -                or modname in _namespace_packages
    -            ):
    -                continue
    -            if modname in ('pkg_resources', 'setuptools', 'site'):
    -                continue
    -            fn = getattr(sys.modules[modname], '__file__', None)
    -            if fn and (
    -                normalize_path(fn).startswith(loc) or fn.startswith(self.location)
    -            ):
    -                continue
    -            issue_warning(
    -                "Module %s was already imported from %s, but %s is being added"
    -                " to sys.path" % (modname, fn, self.location),
    -            )
    -
    -    def has_version(self):
    -        try:
    -            self.version
    -        except ValueError:
    -            issue_warning("Unbuilt egg for " + repr(self))
    -            return False
    -        except SystemError:
    -            # TODO: remove this except clause when python/cpython#103632 is fixed.
    -            return False
    -        return True
    -
    -    def clone(self, **kw):
    -        """Copy this distribution, substituting in any changed keyword args"""
    -        names = 'project_name version py_version platform location precedence'
    -        for attr in names.split():
    -            kw.setdefault(attr, getattr(self, attr, None))
    -        kw.setdefault('metadata', self._provider)
    -        return self.__class__(**kw)
    -
    -    @property
    -    def extras(self):
    -        return [dep for dep in self._dep_map if dep]
    -
    -
    -class EggInfoDistribution(Distribution):
    -    def _reload_version(self):
    -        """
    -        Packages installed by distutils (e.g. numpy or scipy),
    -        which uses an old safe_version, and so
    -        their version numbers can get mangled when
    -        converted to filenames (e.g., 1.11.0.dev0+2329eae to
    -        1.11.0.dev0_2329eae). These distributions will not be
    -        parsed properly
    -        downstream by Distribution and safe_version, so
    -        take an extra step and try to get the version number from
    -        the metadata file itself instead of the filename.
    -        """
    -        md_version = self._get_version()
    -        if md_version:
    -            self._version = md_version
    -        return self
    -
    -
    -class DistInfoDistribution(Distribution):
    -    """
    -    Wrap an actual or potential sys.path entry
    -    w/metadata, .dist-info style.
    -    """
    -
    -    PKG_INFO = 'METADATA'
    -    EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])")
    -
    -    @property
    -    def _parsed_pkg_info(self):
    -        """Parse and cache metadata"""
    -        try:
    -            return self._pkg_info
    -        except AttributeError:
    -            metadata = self.get_metadata(self.PKG_INFO)
    -            self._pkg_info = email.parser.Parser().parsestr(metadata)
    -            return self._pkg_info
    -
    -    @property
    -    def _dep_map(self):
    -        try:
    -            return self.__dep_map
    -        except AttributeError:
    -            self.__dep_map = self._compute_dependencies()
    -            return self.__dep_map
    -
    -    def _compute_dependencies(self):
    -        """Recompute this distribution's dependencies."""
    -        dm = self.__dep_map = {None: []}
    -
    -        reqs = []
    -        # Including any condition expressions
    -        for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
    -            reqs.extend(parse_requirements(req))
    -
    -        def reqs_for_extra(extra):
    -            for req in reqs:
    -                if not req.marker or req.marker.evaluate({'extra': extra}):
    -                    yield req
    -
    -        common = types.MappingProxyType(dict.fromkeys(reqs_for_extra(None)))
    -        dm[None].extend(common)
    -
    -        for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []:
    -            s_extra = safe_extra(extra.strip())
    -            dm[s_extra] = [r for r in reqs_for_extra(extra) if r not in common]
    -
    -        return dm
    -
    -
    -_distributionImpl = {
    -    '.egg': Distribution,
    -    '.egg-info': EggInfoDistribution,
    -    '.dist-info': DistInfoDistribution,
    -}
    -
    -
    -def issue_warning(*args, **kw):
    -    level = 1
    -    g = globals()
    -    try:
    -        # find the first stack frame that is *not* code in
    -        # the pkg_resources module, to use for the warning
    -        while sys._getframe(level).f_globals is g:
    -            level += 1
    -    except ValueError:
    -        pass
    -    warnings.warn(stacklevel=level + 1, *args, **kw)
    -
    -
    -def parse_requirements(strs):
    -    """
    -    Yield ``Requirement`` objects for each specification in `strs`.
    -
    -    `strs` must be a string, or a (possibly-nested) iterable thereof.
    -    """
    -    return map(Requirement, join_continuation(map(drop_comment, yield_lines(strs))))
    -
    -
    -class RequirementParseError(packaging.requirements.InvalidRequirement):
    -    "Compatibility wrapper for InvalidRequirement"
    -
    -
    -class Requirement(packaging.requirements.Requirement):
    -    def __init__(self, requirement_string):
    -        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
    -        super(Requirement, self).__init__(requirement_string)
    -        self.unsafe_name = self.name
    -        project_name = safe_name(self.name)
    -        self.project_name, self.key = project_name, project_name.lower()
    -        self.specs = [(spec.operator, spec.version) for spec in self.specifier]
    -        self.extras = tuple(map(safe_extra, self.extras))
    -        self.hashCmp = (
    -            self.key,
    -            self.url,
    -            self.specifier,
    -            frozenset(self.extras),
    -            str(self.marker) if self.marker else None,
    -        )
    -        self.__hash = hash(self.hashCmp)
    -
    -    def __eq__(self, other):
    -        return isinstance(other, Requirement) and self.hashCmp == other.hashCmp
    -
    -    def __ne__(self, other):
    -        return not self == other
    -
    -    def __contains__(self, item):
    -        if isinstance(item, Distribution):
    -            if item.key != self.key:
    -                return False
    -
    -            item = item.version
    -
    -        # Allow prereleases always in order to match the previous behavior of
    -        # this method. In the future this should be smarter and follow PEP 440
    -        # more accurately.
    -        return self.specifier.contains(item, prereleases=True)
    -
    -    def __hash__(self):
    -        return self.__hash
    -
    -    def __repr__(self):
    -        return "Requirement.parse(%r)" % str(self)
    -
    -    @staticmethod
    -    def parse(s):
    -        (req,) = parse_requirements(s)
    -        return req
    -
    -
    -def _always_object(classes):
    -    """
    -    Ensure object appears in the mro even
    -    for old-style classes.
    -    """
    -    if object not in classes:
    -        return classes + (object,)
    -    return classes
    -
    -
    -def _find_adapter(registry, ob):
    -    """Return an adapter factory for `ob` from `registry`"""
    -    types = _always_object(inspect.getmro(getattr(ob, '__class__', type(ob))))
    -    for t in types:
    -        if t in registry:
    -            return registry[t]
    -
    -
    -def ensure_directory(path):
    -    """Ensure that the parent directory of `path` exists"""
    -    dirname = os.path.dirname(path)
    -    os.makedirs(dirname, exist_ok=True)
    -
    -
    -def _bypass_ensure_directory(path):
    -    """Sandbox-bypassing version of ensure_directory()"""
    -    if not WRITE_SUPPORT:
    -        raise IOError('"os.mkdir" not supported on this platform.')
    -    dirname, filename = split(path)
    -    if dirname and filename and not isdir(dirname):
    -        _bypass_ensure_directory(dirname)
    -        try:
    -            mkdir(dirname, 0o755)
    -        except FileExistsError:
    -            pass
    -
    -
    -def split_sections(s):
    -    """Split a string or iterable thereof into (section, content) pairs
    -
    -    Each ``section`` is a stripped version of the section header ("[section]")
    -    and each ``content`` is a list of stripped lines excluding blank lines and
    -    comment-only lines.  If there are any such lines before the first section
    -    header, they're returned in a first ``section`` of ``None``.
    -    """
    -    section = None
    -    content = []
    -    for line in yield_lines(s):
    -        if line.startswith("["):
    -            if line.endswith("]"):
    -                if section or content:
    -                    yield section, content
    -                section = line[1:-1].strip()
    -                content = []
    -            else:
    -                raise ValueError("Invalid section heading", line)
    -        else:
    -            content.append(line)
    -
    -    # wrap up last segment
    -    yield section, content
    -
    -
    -def _mkstemp(*args, **kw):
    -    old_open = os.open
    -    try:
    -        # temporarily bypass sandboxing
    -        os.open = os_open
    -        return tempfile.mkstemp(*args, **kw)
    -    finally:
    -        # and then put it back
    -        os.open = old_open
    -
    -
    -# Silence the PEP440Warning by default, so that end users don't get hit by it
    -# randomly just because they use pkg_resources. We want to append the rule
    -# because we want earlier uses of filterwarnings to take precedence over this
    -# one.
    -warnings.filterwarnings("ignore", category=PEP440Warning, append=True)
    -
    -
    -# from jaraco.functools 1.3
    -def _call_aside(f, *args, **kwargs):
    -    f(*args, **kwargs)
    -    return f
    -
    -
    -@_call_aside
    -def _initialize(g=globals()):
    -    "Set up global resource manager (deliberately not state-saved)"
    -    manager = ResourceManager()
    -    g['_manager'] = manager
    -    g.update(
    -        (name, getattr(manager, name))
    -        for name in dir(manager)
    -        if not name.startswith('_')
    -    )
    -
    -
    -class PkgResourcesDeprecationWarning(Warning):
    -    """
    -    Base class for warning about deprecations in ``pkg_resources``
    -
    -    This class is not derived from ``DeprecationWarning``, and as such is
    -    visible by default.
    -    """
    -
    -
    -@_call_aside
    -def _initialize_master_working_set():
    -    """
    -    Prepare the master working set and make the ``require()``
    -    API available.
    -
    -    This function has explicit effects on the global state
    -    of pkg_resources. It is intended to be invoked once at
    -    the initialization of this module.
    -
    -    Invocation by other packages is unsupported and done
    -    at their own risk.
    -    """
    -    working_set = WorkingSet._build_master()
    -    _declare_state('object', working_set=working_set)
    -
    -    require = working_set.require
    -    iter_entry_points = working_set.iter_entry_points
    -    add_activation_listener = working_set.subscribe
    -    run_script = working_set.run_script
    -    # backward compatibility
    -    run_main = run_script
    -    # Activate all distributions already on sys.path with replace=False and
    -    # ensure that all distributions added to the working set in the future
    -    # (e.g. by calling ``require()``) will get activated as well,
    -    # with higher priority (replace=True).
    -    tuple(dist.activate(replace=False) for dist in working_set)
    -    add_activation_listener(
    -        lambda dist: dist.activate(replace=True),
    -        existing=False,
    -    )
    -    working_set.entries = []
    -    # match order
    -    list(map(working_set.add_entry, sys.path))
    -    globals().update(locals())
    diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc
    deleted file mode 100644
    index 6467f9d74e2a7242d244df8879a354b6094570b5..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 101082
    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

    gRbBE|4p)aCgV6MiZu~r*=ONMZG$yH4KGx+c) zeL|8#%+E}A_**n8V|@$4;%mN-$)H4vpxN%jO?S|6!!jYmOw4T?EE@wZ8EnjTXu>p_ zFblIWCgG*@JJ5{F>9?h&!BX8n6T}a~HPo-rP^QL~xvrN_wA<8`pot_f8%0=-9n+}6 z5TgDH<0zu5vf0Qk?~yj+3Kjb;(%W{o3J#H75q%eaCLrNPGX&n4La4w_lR8RI(uix@=*5KZ{iuc^0$f6GG=SM`XUcKd=z{8 zv+Oixo+>c%)jIspVV49G8h9N0OXF@Ie(tZ~u*%6Xg*|#xaBeitj(Ho&pkSRH2kg#{ z*tJ*U7!2At1|`|ok^4BBeI1AGzK(0uHEJW=8b@SzN4ht1Pe<~V3Q zr7Rt8z;2|aK%(F{* zaBjfUES)P6Fh>6}($lY-6c52Y|mr=k) z8v}{nEPWj;=_vTefI`c--yVaYuYoUSjv^8UZR^j(07)GBFNlw*jUVErnr$!tz#@E| z4?k-5JN-k#)YB;R0{l~g^AY6SEnglS@LT=7{Q_WU4mWKBXH__?v3Bfx#lj5Evh8as;fWfd=vHF9Vpi#2Sbz zCH?WT3Yh*_13>&XNeKXOpqic*2Pz+m|BlM{K;f-p>s6t%fv;z$E~x&E0Ew=T0kt}1 z3^Za8e}d3uT+mqKazh-9Ky)A`X9>_poQig!{yH1y&v^J_9DF<%VEbunUqaS@0}xI4 z1x$uqn$ca|etw-|K;pY_f_%yc5)ynr5SP>49CtdROll`h*{XCog9#I^kC_B^%}it0 z2pO}lfvKvR#p+OaVZALQ(C88?3!SO)*LFA2dicz;FkP_3i>m!DJU|$&unqnQ zZ9tE<294Y69>XTExHu@c!aFc_Kpo4Z#msHJP>h*eh*uW;$O5z=P?z>}wd^?m-`H?m z{hfnQ!hlU6v#D?OG-DJsV$H}g;iIANO>TRb%k1pZ5KUIZY;^yp?B1RM za0ze!^)k2?Eg73HBb?o;@_hoKzs9_;LuOdBovVtAb~pm{pY$o2?%w~-l7$>x8^dyc z*qMwjTdD-%B5t?2BnpIyN)LvIh|vSnuYXMtgh2Ic2Ds!UUIsAY&yTqy4vvq-R{Z>#Z{fd)lM$-(h>fa2$Q!%^T|BI4Dmo3k#>!E%PF^$1*JI6G}-(ImXz|AKz z0LhqQATz@4DGpfBAU(aKjVfX0b-hiKfvS)j=%vznbbmmkAK(h|8B$u*N8HUqG=|k9>#^g{$4)n?nau^$&>=qaicfRB9 z>E3fpuFB7tCpYM2u?U$!PoPMCi;^Tg<2tibbX}B*14+B7p`wQXb;%+9yXYG)Fo4vE@&AMT@*jDCKMd%lshT%v&Q+18*4P_g#;v5MnhHsU3-vOj ztC|@HU&)gmB6SR93=ko2!v%v1aB(u%T4XM*!*-X(~rj%2eMfV>57u?DArDGobMd^5RcEbDEmiUt7Mgn(l+o}M9^zY%#G z#I@_DGW2Tb%fxe(+(~pJ7Ep1xl@xF!-d0ns29gDTtcO1tyEC|<$PYdlq2jo&_XWhE zm|x$?kc7b`wjKdN~!YcyY}pXoqb`x1Koi;LBV~Z z+1}%{_R!(i?d+L9H666FJ8`lzH+v(Rve|$w&J62uv&ta!d!S;TzJC}Q_rkZhGu1o? zWsWnt1FqLdq&SA&v@7L$AzGMSOh*B-7(c} z?>SM|6Py*! z-$tdsZCKeBQ{P@0reT8?c>>BR#x4-oBiDi6sNUhW9$3FXV`sfNeX=tSM`PGHVT?iy zp@;*8-(-5nQ~f*TI1HQ)BN&uN=irnHg-C;|BE+!>VQM>LcLi`vOc*T~hZV-uf+K|c zF2t^vt=lFhsBo#bA9N6vJFtxtT6 z3!1(1p%gR)LR^d+Lu<4Mc#lMUr~Kw(IE-+J{4aLret)I7?b2vhPj>J9-|Au6bgR2Z z6l~%pCX2=4RARN(ve!)=UMnPlKo$&o*O>r270gwLi--+6;7dS03!(MsBueyxS>2iU zvOxP2*lnxT;WKfr@`jp-*5!!XGYF@*?x2JH$joA)C*q#gd8@S5KZ@C_m;d-TJiD6{ z-!>Gy;nfWKQb3%(OqLEI8?aweDl<&3>gDcDuY}^RVpKRu9>C8n<3LjaS3@9h1*A86 zi%>U#RS*#MB``&L(koB|rB0-K?^PKvtF08@O6-hU-r;{cI<^B!<1eE~qhw5jq0#@$ z>VKk78&LFrC)=Qi4`k&>Up@?(BkJrXX37BSdJ7L*aWEPmsxFPF^;>*F<)oHH#MH{eg(N&`RCFg95o9_ z=xu1YpDQ2+0t~@Wy(7G_%Hy1S7dXL69+fNT_u#YcExr;u^cSv|;TGJ%9w^4;P!^*1 z9WDewyskTm^H#Y7&KQagt|AO$79da_LQ*-}L|lh8oeW$RL;$Ro{(WM`GXZ)CQV=6Q z%9bG0N;F3tmFa08&`?{BWWgU{33yzJV)V@MH!(Y(LT_XLaTo$j)YOfD5<)sTdBPcm zHs|FGQ|FbSQmInX62!S3xH^qDw(PIH|Ig-r;)@Z5r4ZF95g$1heM;E2=14x*R%DF9yG)U zO+m76kCU4J97@w0@LhM~sudqPuxj zu~(JUX@cPd9$JGqksm`atVuWkp1^peMk%8D>}L?-T=-c+@kylZ-q;HT=Wk!6tXcyV zS}FKrE3jeN_x0t=uf1OQ0 z(gA86 z@{fF~yl>!D?2ibv4?p2r;xx<;W`xN*3tNBhZUqCX2pTpZ_Vq#ioyem*;S&Y;I6!Y} zTvQ|&gsixuT96zKqw+v;(#MdF`Ux_~QU(1sR#)oRk1#!ew11518t3wjhp>m$O5;3_SroWfN(-8-!a)+QefWtO6vaVD+~j3`%sRwD ztTBalvs7u$V+Bleib&MGPFP^XK7c2Vd4~PJo7_QBUc@kfC6Pq(>^_WxKUutg(|1O8 zk9oK7lLtX~K!(IaSO{m@H=PLKygo)a=@Fc%r_m--DpVxp2M9%(VFP7Viuk5C=bE#1 zF8UTPAOLOXQLwxwTr%3A6@z=Yiku81En+j(;nRiH>)fvqZ(L}BoHE+tFxH+SS|wfT zqN}SYwMSM4*oZ_85gXueY4u3u(KZx|&it5Y?a5Gxl!4&U;YvIXTocV6+ZoPs6}v3h zgDRA3Y06eX6>5iKM4m%}8g1E@hU_FmQi8x^l7@dai2MwEC(z>1YF|Lq!RYoh`d`tW z3{C!5_{^{mFX4%o$3(&fckm&&iC9RpJnRbDE_oq?lY;jMG9tDEU%W}AvZa?GwZDvw zYHp4q(S%@3pFL_&xR*yaF=H=}PdKG`1+uann0h-(#{9@hL*_@#3K|G*M#VM3@UoKo z3mg(;#7YCjWG+&zh7PK3F<$^pak-iAl8MvKnoQMkJ|3)1_q%C^CR z0ckbr+&kTjP_B~i4*PfIxlVJ=i49bO#@_*gcNB+^d!-OQml+t{<3dzz)!9VwT9HK}D2f~b#Jumu!DY}wppgUOQO6U}gGa*Ez zLF-Ofa)yjUA)XCem%=sHrEtW$6t1-{h3l+K;d<**xWT#ba5IaDHcL3 z3uK^u#0oV;Wq}Jb4U14)Bxc~!uV01OD|ueS`Y+oNLOWT&5&*iuVSjTQKsRk2jJDhi z8P$XWt8+QE%qy6`Zg$58;4lR0iLh8QPDs>^F7kFZ#$N&=%^(tDUH69fBUXau%4*S0 zTgNe|Ok5dN@lgRGAFaj7L74aJg7Lv9Sh98qyZLR2wNNyDteM!A0TGgB5@#B?ZiqOA zN`pI?f$dS6CIx3@JVDdIxx+NiN{;VEiJM0=fdtK@qRsRptmvJnC`P5!S8BeNH4oe6 zb8H-HzV&OE(rSJRfZ8aDUdQA;jgX^quj7ug_8g+c^t$AA+{cj9O^6$kC^lK6tk7SM zks|@J6>4YTiQ>D>WV~TEGh`^sg&9&Ix?SnQK3u5GqwJWyfJ*-h^6svWLWBJHw!v2S z|3G5Gy)d7`4Z(54SPRx|Pslu+$d|z{GGq`C7Qn(WC4=1#Mwc=WCzy;020P!oV#_!RV^D7UCd$MT*a zqfVPm11gt8(hSz-l1pX~SU60i)shN$7 z&l?9ZDQy!=(-$J}yl*Mbbu9u@YG$+Iv~i)c1v#<2AkQ$>I}&I8oIhi71{_F%T_PTP)8Cz;sOnRJpf-KltboQ@}xOctMR zr`xt{k@Ne1_q|v33Po9GPR^VuvL0T&_1^D(_q*Tz5fRfhR^Pt`sl+Fh*ep4%8 zdhQ&*5qp$ApgAQi;|Oa_6b4=I8M)7bt|k}p2+PWL_*WRc;XCDvNvgUl?x3h<%%u5w z_`hgoJ+2e`g=edtIezry;mV1pj~#pJ_{m28=u@`-SX{ZE>NatErLqqLkkHVdKc^(R zm?bUqrC-&udR&*%`c<8#j}JkYP(%Sv#ojc!r)!!J-e*=+&r-f2k{cgrQ(m*(pQn0D z$~~sdQ9YQ7=;X%MTG+^8=$mSElY

    ' : '\U0001d4ab', - '\\' : '\U0001d4ac', - '\\' : '\U0000211b', - '\\' : '\U0001d4ae', - '\\' : '\U0001d4af', - '\\' : '\U0001d4b0', - '\\' : '\U0001d4b1', - '\\' : '\U0001d4b2', - '\\' : '\U0001d4b3', - '\\' : '\U0001d4b4', - '\\' : '\U0001d4b5', - '\\' : '\U0001d5ba', - '\\' : '\U0001d5bb', - '\\' : '\U0001d5bc', - '\\' : '\U0001d5bd', - '\\' : '\U0001d5be', - '\\' : '\U0001d5bf', - '\\' : '\U0001d5c0', - '\\' : '\U0001d5c1', - '\\' : '\U0001d5c2', - '\\' : '\U0001d5c3', - '\\' : '\U0001d5c4', - '\\' : '\U0001d5c5', - '\\' : '\U0001d5c6', - '\\' : '\U0001d5c7', - '\\' : '\U0001d5c8', - '\\

    ' : '\U0001d5c9', - '\\' : '\U0001d5ca', - '\\' : '\U0001d5cb', - '\\' : '\U0001d5cc', - '\\' : '\U0001d5cd', - '\\' : '\U0001d5ce', - '\\' : '\U0001d5cf', - '\\' : '\U0001d5d0', - '\\' : '\U0001d5d1', - '\\' : '\U0001d5d2', - '\\' : '\U0001d5d3', - '\\' : '\U0001d504', - '\\' : '\U0001d505', - '\\' : '\U0000212d', - '\\

    ' : '\U0001d507', - '\\' : '\U0001d508', - '\\' : '\U0001d509', - '\\' : '\U0001d50a', - '\\' : '\U0000210c', - '\\' : '\U00002111', - '\\' : '\U0001d50d', - '\\' : '\U0001d50e', - '\\' : '\U0001d50f', - '\\' : '\U0001d510', - '\\' : '\U0001d511', - '\\' : '\U0001d512', - '\\' : '\U0001d513', - '\\' : '\U0001d514', - '\\' : '\U0000211c', - '\\' : '\U0001d516', - '\\' : '\U0001d517', - '\\' : '\U0001d518', - '\\' : '\U0001d519', - '\\' : '\U0001d51a', - '\\' : '\U0001d51b', - '\\' : '\U0001d51c', - '\\' : '\U00002128', - '\\' : '\U0001d51e', - '\\' : '\U0001d51f', - '\\' : '\U0001d520', - '\\
    ' : '\U0001d521', - '\\' : '\U0001d522', - '\\' : '\U0001d523', - '\\' : '\U0001d524', - '\\' : '\U0001d525', - '\\' : '\U0001d526', - '\\' : '\U0001d527', - '\\' : '\U0001d528', - '\\' : '\U0001d529', - '\\' : '\U0001d52a', - '\\' : '\U0001d52b', - '\\' : '\U0001d52c', - '\\' : '\U0001d52d', - '\\' : '\U0001d52e', - '\\' : '\U0001d52f', - '\\' : '\U0001d530', - '\\' : '\U0001d531', - '\\' : '\U0001d532', - '\\' : '\U0001d533', - '\\' : '\U0001d534', - '\\' : '\U0001d535', - '\\' : '\U0001d536', - '\\' : '\U0001d537', - '\\' : '\U000003b1', - '\\' : '\U000003b2', - '\\' : '\U000003b3', - '\\' : '\U000003b4', - '\\' : '\U000003b5', - '\\' : '\U000003b6', - '\\' : '\U000003b7', - '\\' : '\U000003b8', - '\\' : '\U000003b9', - '\\' : '\U000003ba', - '\\' : '\U000003bb', - '\\' : '\U000003bc', - '\\' : '\U000003bd', - '\\' : '\U000003be', - '\\' : '\U000003c0', - '\\' : '\U000003c1', - '\\' : '\U000003c3', - '\\' : '\U000003c4', - '\\' : '\U000003c5', - '\\' : '\U000003c6', - '\\' : '\U000003c7', - '\\' : '\U000003c8', - '\\' : '\U000003c9', - '\\' : '\U00000393', - '\\' : '\U00000394', - '\\' : '\U00000398', - '\\' : '\U0000039b', - '\\' : '\U0000039e', - '\\' : '\U000003a0', - '\\' : '\U000003a3', - '\\' : '\U000003a5', - '\\' : '\U000003a6', - '\\' : '\U000003a8', - '\\' : '\U000003a9', - '\\' : '\U0001d539', - '\\' : '\U00002102', - '\\' : '\U00002115', - '\\' : '\U0000211a', - '\\' : '\U0000211d', - '\\' : '\U00002124', - '\\' : '\U00002190', - '\\' : '\U000027f5', - '\\' : '\U00002192', - '\\' : '\U000027f6', - '\\' : '\U000021d0', - '\\' : '\U000027f8', - '\\' : '\U000021d2', - '\\' : '\U000027f9', - '\\' : '\U00002194', - '\\' : '\U000027f7', - '\\' : '\U000021d4', - '\\' : '\U000027fa', - '\\' : '\U000021a6', - '\\' : '\U000027fc', - '\\' : '\U00002500', - '\\' : '\U00002550', - '\\' : '\U000021a9', - '\\' : '\U000021aa', - '\\' : '\U000021bd', - '\\' : '\U000021c1', - '\\' : '\U000021bc', - '\\' : '\U000021c0', - '\\' : '\U000021cc', - '\\' : '\U0000219d', - '\\' : '\U000021c3', - '\\' : '\U000021c2', - '\\' : '\U000021bf', - '\\' : '\U000021be', - '\\' : '\U000021be', - '\\' : '\U00002237', - '\\' : '\U00002191', - '\\' : '\U000021d1', - '\\' : '\U00002193', - '\\' : '\U000021d3', - '\\' : '\U00002195', - '\\' : '\U000021d5', - '\\' : '\U000027e8', - '\\' : '\U000027e9', - '\\' : '\U00002308', - '\\' : '\U00002309', - '\\' : '\U0000230a', - '\\' : '\U0000230b', - '\\' : '\U00002987', - '\\' : '\U00002988', - '\\' : '\U000027e6', - '\\' : '\U000027e7', - '\\' : '\U00002983', - '\\' : '\U00002984', - '\\' : '\U000000ab', - '\\' : '\U000000bb', - '\\' : '\U000022a5', - '\\' : '\U000022a4', - '\\' : '\U00002227', - '\\' : '\U000022c0', - '\\' : '\U00002228', - '\\' : '\U000022c1', - '\\' : '\U00002200', - '\\' : '\U00002203', - '\\' : '\U00002204', - '\\' : '\U000000ac', - '\\' : '\U000025a1', - '\\' : '\U000025c7', - '\\' : '\U000022a2', - '\\' : '\U000022a8', - '\\' : '\U000022a9', - '\\' : '\U000022ab', - '\\' : '\U000022a3', - '\\' : '\U0000221a', - '\\' : '\U00002264', - '\\' : '\U00002265', - '\\' : '\U0000226a', - '\\' : '\U0000226b', - '\\' : '\U00002272', - '\\' : '\U00002273', - '\\' : '\U00002a85', - '\\' : '\U00002a86', - '\\' : '\U00002208', - '\\' : '\U00002209', - '\\' : '\U00002282', - '\\' : '\U00002283', - '\\' : '\U00002286', - '\\' : '\U00002287', - '\\' : '\U0000228f', - '\\' : '\U00002290', - '\\' : '\U00002291', - '\\' : '\U00002292', - '\\' : '\U00002229', - '\\' : '\U000022c2', - '\\' : '\U0000222a', - '\\' : '\U000022c3', - '\\' : '\U00002294', - '\\' : '\U00002a06', - '\\' : '\U00002293', - '\\' : '\U00002a05', - '\\' : '\U00002216', - '\\' : '\U0000221d', - '\\' : '\U0000228e', - '\\' : '\U00002a04', - '\\' : '\U00002260', - '\\' : '\U0000223c', - '\\' : '\U00002250', - '\\' : '\U00002243', - '\\' : '\U00002248', - '\\' : '\U0000224d', - '\\' : '\U00002245', - '\\' : '\U00002323', - '\\' : '\U00002261', - '\\' : '\U00002322', - '\\' : '\U000022c8', - '\\' : '\U00002a1d', - '\\' : '\U0000227a', - '\\' : '\U0000227b', - '\\' : '\U0000227c', - '\\' : '\U0000227d', - '\\' : '\U00002225', - '\\' : '\U000000a6', - '\\' : '\U000000b1', - '\\' : '\U00002213', - '\\' : '\U000000d7', - '\\
    ' : '\U000000f7', - '\\' : '\U000022c5', - '\\' : '\U000022c6', - '\\' : '\U00002219', - '\\' : '\U00002218', - '\\' : '\U00002020', - '\\' : '\U00002021', - '\\' : '\U000022b2', - '\\' : '\U000022b3', - '\\' : '\U000022b4', - '\\' : '\U000022b5', - '\\' : '\U000025c3', - '\\' : '\U000025b9', - '\\' : '\U000025b3', - '\\' : '\U0000225c', - '\\' : '\U00002295', - '\\' : '\U00002a01', - '\\' : '\U00002297', - '\\' : '\U00002a02', - '\\' : '\U00002299', - '\\' : '\U00002a00', - '\\' : '\U00002296', - '\\' : '\U00002298', - '\\' : '\U00002026', - '\\' : '\U000022ef', - '\\' : '\U00002211', - '\\' : '\U0000220f', - '\\' : '\U00002210', - '\\' : '\U0000221e', - '\\' : '\U0000222b', - '\\' : '\U0000222e', - '\\' : '\U00002663', - '\\' : '\U00002662', - '\\' : '\U00002661', - '\\' : '\U00002660', - '\\' : '\U00002135', - '\\' : '\U00002205', - '\\' : '\U00002207', - '\\' : '\U00002202', - '\\' : '\U0000266d', - '\\' : '\U0000266e', - '\\' : '\U0000266f', - '\\' : '\U00002220', - '\\' : '\U000000a9', - '\\' : '\U000000ae', - '\\' : '\U000000ad', - '\\' : '\U000000af', - '\\' : '\U000000bc', - '\\' : '\U000000bd', - '\\' : '\U000000be', - '\\' : '\U000000aa', - '\\' : '\U000000ba', - '\\
    ' : '\U000000a7', - '\\' : '\U000000b6', - '\\' : '\U000000a1', - '\\' : '\U000000bf', - '\\' : '\U000020ac', - '\\' : '\U000000a3', - '\\' : '\U000000a5', - '\\' : '\U000000a2', - '\\' : '\U000000a4', - '\\' : '\U000000b0', - '\\' : '\U00002a3f', - '\\' : '\U00002127', - '\\' : '\U000025ca', - '\\' : '\U00002118', - '\\' : '\U00002240', - '\\' : '\U000022c4', - '\\' : '\U000000b4', - '\\' : '\U00000131', - '\\' : '\U000000a8', - '\\' : '\U000000b8', - '\\' : '\U000002dd', - '\\' : '\U000003f5', - '\\' : '\U000023ce', - '\\' : '\U00002039', - '\\' : '\U0000203a', - '\\' : '\U00002302', - '\\<^sub>' : '\U000021e9', - '\\<^sup>' : '\U000021e7', - '\\<^bold>' : '\U00002759', - '\\<^bsub>' : '\U000021d8', - '\\<^esub>' : '\U000021d9', - '\\<^bsup>' : '\U000021d7', - '\\<^esup>' : '\U000021d6', - } - - lang_map = {'isabelle' : isabelle_symbols, 'latex' : latex_symbols} - - def __init__(self, **options): - Filter.__init__(self, **options) - lang = get_choice_opt(options, 'lang', - ['isabelle', 'latex'], 'isabelle') - self.symbols = self.lang_map[lang] - - def filter(self, lexer, stream): - for ttype, value in stream: - if value in self.symbols: - yield ttype, self.symbols[value] - else: - yield ttype, value - - -class KeywordCaseFilter(Filter): - """Convert keywords to lowercase or uppercase or capitalize them, which - means first letter uppercase, rest lowercase. - - This can be useful e.g. if you highlight Pascal code and want to adapt the - code to your styleguide. - - Options accepted: - - `case` : string - The casing to convert keywords to. Must be one of ``'lower'``, - ``'upper'`` or ``'capitalize'``. The default is ``'lower'``. - """ - - def __init__(self, **options): - Filter.__init__(self, **options) - case = get_choice_opt(options, 'case', - ['lower', 'upper', 'capitalize'], 'lower') - self.convert = getattr(str, case) - - def filter(self, lexer, stream): - for ttype, value in stream: - if ttype in Keyword: - yield ttype, self.convert(value) - else: - yield ttype, value - - -class NameHighlightFilter(Filter): - """Highlight a normal Name (and Name.*) token with a different token type. - - Example:: - - filter = NameHighlightFilter( - names=['foo', 'bar', 'baz'], - tokentype=Name.Function, - ) - - This would highlight the names "foo", "bar" and "baz" - as functions. `Name.Function` is the default token type. - - Options accepted: - - `names` : list of strings - A list of names that should be given the different token type. - There is no default. - `tokentype` : TokenType or string - A token type or a string containing a token type name that is - used for highlighting the strings in `names`. The default is - `Name.Function`. - """ - - def __init__(self, **options): - Filter.__init__(self, **options) - self.names = set(get_list_opt(options, 'names', [])) - tokentype = options.get('tokentype') - if tokentype: - self.tokentype = string_to_tokentype(tokentype) - else: - self.tokentype = Name.Function - - def filter(self, lexer, stream): - for ttype, value in stream: - if ttype in Name and value in self.names: - yield self.tokentype, value - else: - yield ttype, value - - -class ErrorToken(Exception): - pass - - -class RaiseOnErrorTokenFilter(Filter): - """Raise an exception when the lexer generates an error token. - - Options accepted: - - `excclass` : Exception class - The exception class to raise. - The default is `pygments.filters.ErrorToken`. - - .. versionadded:: 0.8 - """ - - def __init__(self, **options): - Filter.__init__(self, **options) - self.exception = options.get('excclass', ErrorToken) - try: - # issubclass() will raise TypeError if first argument is not a class - if not issubclass(self.exception, Exception): - raise TypeError - except TypeError: - raise OptionError('excclass option is not an exception class') - - def filter(self, lexer, stream): - for ttype, value in stream: - if ttype is Error: - raise self.exception(value) - yield ttype, value - - -class VisibleWhitespaceFilter(Filter): - """Convert tabs, newlines and/or spaces to visible characters. - - Options accepted: - - `spaces` : string or bool - If this is a one-character string, spaces will be replaces by this string. - If it is another true value, spaces will be replaced by ``·`` (unicode - MIDDLE DOT). If it is a false value, spaces will not be replaced. The - default is ``False``. - `tabs` : string or bool - The same as for `spaces`, but the default replacement character is ``»`` - (unicode RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK). The default value - is ``False``. Note: this will not work if the `tabsize` option for the - lexer is nonzero, as tabs will already have been expanded then. - `tabsize` : int - If tabs are to be replaced by this filter (see the `tabs` option), this - is the total number of characters that a tab should be expanded to. - The default is ``8``. - `newlines` : string or bool - The same as for `spaces`, but the default replacement character is ``¶`` - (unicode PILCROW SIGN). The default value is ``False``. - `wstokentype` : bool - If true, give whitespace the special `Whitespace` token type. This allows - styling the visible whitespace differently (e.g. greyed out), but it can - disrupt background colors. The default is ``True``. - - .. versionadded:: 0.8 - """ - - def __init__(self, **options): - Filter.__init__(self, **options) - for name, default in [('spaces', '·'), - ('tabs', '»'), - ('newlines', '¶')]: - opt = options.get(name, False) - if isinstance(opt, str) and len(opt) == 1: - setattr(self, name, opt) - else: - setattr(self, name, (opt and default or '')) - tabsize = get_int_opt(options, 'tabsize', 8) - if self.tabs: - self.tabs += ' ' * (tabsize - 1) - if self.newlines: - self.newlines += '\n' - self.wstt = get_bool_opt(options, 'wstokentype', True) - - def filter(self, lexer, stream): - if self.wstt: - spaces = self.spaces or ' ' - tabs = self.tabs or '\t' - newlines = self.newlines or '\n' - regex = re.compile(r'\s') - - def replacefunc(wschar): - if wschar == ' ': - return spaces - elif wschar == '\t': - return tabs - elif wschar == '\n': - return newlines - return wschar - - for ttype, value in stream: - yield from _replace_special(ttype, value, regex, Whitespace, - replacefunc) - else: - spaces, tabs, newlines = self.spaces, self.tabs, self.newlines - # simpler processing - for ttype, value in stream: - if spaces: - value = value.replace(' ', spaces) - if tabs: - value = value.replace('\t', tabs) - if newlines: - value = value.replace('\n', newlines) - yield ttype, value - - -class GobbleFilter(Filter): - """Gobbles source code lines (eats initial characters). - - This filter drops the first ``n`` characters off every line of code. This - may be useful when the source code fed to the lexer is indented by a fixed - amount of space that isn't desired in the output. - - Options accepted: - - `n` : int - The number of characters to gobble. - - .. versionadded:: 1.2 - """ - def __init__(self, **options): - Filter.__init__(self, **options) - self.n = get_int_opt(options, 'n', 0) - - def gobble(self, value, left): - if left < len(value): - return value[left:], 0 - else: - return '', left - len(value) - - def filter(self, lexer, stream): - n = self.n - left = n # How many characters left to gobble. - for ttype, value in stream: - # Remove ``left`` tokens from first line, ``n`` from all others. - parts = value.split('\n') - (parts[0], left) = self.gobble(parts[0], left) - for i in range(1, len(parts)): - (parts[i], left) = self.gobble(parts[i], n) - value = '\n'.join(parts) - - if value != '': - yield ttype, value - - -class TokenMergeFilter(Filter): - """Merges consecutive tokens with the same token type in the output - stream of a lexer. - - .. versionadded:: 1.2 - """ - def __init__(self, **options): - Filter.__init__(self, **options) - - def filter(self, lexer, stream): - current_type = None - current_value = None - for ttype, value in stream: - if ttype is current_type: - current_value += value - else: - if current_type is not None: - yield current_type, current_value - current_type = ttype - current_value = value - if current_type is not None: - yield current_type, current_value - - -FILTERS = { - 'codetagify': CodeTagFilter, - 'keywordcase': KeywordCaseFilter, - 'highlight': NameHighlightFilter, - 'raiseonerror': RaiseOnErrorTokenFilter, - 'whitespace': VisibleWhitespaceFilter, - 'gobble': GobbleFilter, - 'tokenmerge': TokenMergeFilter, - 'symbols': SymbolFilter, -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index a6ea39dcc00525c4dea40ba27df03b9c8a536410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29615 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, - the `arg` is then given by the ``-a`` option. - """ - return '' - - def format(self, tokensource, outfile): - """ - This method must format the tokens from the `tokensource` iterable and - write the formatted version to the file object `outfile`. - - Formatter options can control how exactly the tokens are converted. - """ - if self.encoding: - # wrap the outfile in a StreamWriter - outfile = codecs.lookup(self.encoding)[3](outfile) - return self.format_unencoded(tokensource, outfile) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py deleted file mode 100644 index 39db842..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py +++ /dev/null @@ -1,158 +0,0 @@ -""" - pygments.formatters - ~~~~~~~~~~~~~~~~~~~ - - Pygments formatters. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import re -import sys -import types -import fnmatch -from os.path import basename - -from pip._vendor.pygments.formatters._mapping import FORMATTERS -from pip._vendor.pygments.plugin import find_plugin_formatters -from pip._vendor.pygments.util import ClassNotFound - -__all__ = ['get_formatter_by_name', 'get_formatter_for_filename', - 'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS) - -_formatter_cache = {} # classes by name -_pattern_cache = {} - - -def _fn_matches(fn, glob): - """Return whether the supplied file name fn matches pattern filename.""" - if glob not in _pattern_cache: - pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob)) - return pattern.match(fn) - return _pattern_cache[glob].match(fn) - - -def _load_formatters(module_name): - """Load a formatter (and all others in the module too).""" - mod = __import__(module_name, None, None, ['__all__']) - for formatter_name in mod.__all__: - cls = getattr(mod, formatter_name) - _formatter_cache[cls.name] = cls - - -def get_all_formatters(): - """Return a generator for all formatter classes.""" - # NB: this returns formatter classes, not info like get_all_lexers(). - for info in FORMATTERS.values(): - if info[1] not in _formatter_cache: - _load_formatters(info[0]) - yield _formatter_cache[info[1]] - for _, formatter in find_plugin_formatters(): - yield formatter - - -def find_formatter_class(alias): - """Lookup a formatter by alias. - - Returns None if not found. - """ - for module_name, name, aliases, _, _ in FORMATTERS.values(): - if alias in aliases: - if name not in _formatter_cache: - _load_formatters(module_name) - return _formatter_cache[name] - for _, cls in find_plugin_formatters(): - if alias in cls.aliases: - return cls - - -def get_formatter_by_name(_alias, **options): - """ - Return an instance of a :class:`.Formatter` subclass that has `alias` in its - aliases list. The formatter is given the `options` at its instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no formatter with that - alias is found. - """ - cls = find_formatter_class(_alias) - if cls is None: - raise ClassNotFound("no formatter found for name %r" % _alias) - return cls(**options) - - -def load_formatter_from_file(filename, formattername="CustomFormatter", **options): - """ - Return a `Formatter` subclass instance loaded from the provided file, relative - to the current directory. - - The file is expected to contain a Formatter class named ``formattername`` - (by default, CustomFormatter). Users should be very careful with the input, because - this method is equivalent to running ``eval()`` on the input file. The formatter is - given the `options` at its instantiation. - - :exc:`pygments.util.ClassNotFound` is raised if there are any errors loading - the formatter. - - .. versionadded:: 2.2 - """ - try: - # This empty dict will contain the namespace for the exec'd file - custom_namespace = {} - with open(filename, 'rb') as f: - exec(f.read(), custom_namespace) - # Retrieve the class `formattername` from that namespace - if formattername not in custom_namespace: - raise ClassNotFound('no valid %s class found in %s' % - (formattername, filename)) - formatter_class = custom_namespace[formattername] - # And finally instantiate it with the options - return formatter_class(**options) - except OSError as err: - raise ClassNotFound('cannot read %s: %s' % (filename, err)) - except ClassNotFound: - raise - except Exception as err: - raise ClassNotFound('error when loading custom formatter: %s' % err) - - -def get_formatter_for_filename(fn, **options): - """ - Return a :class:`.Formatter` subclass instance that has a filename pattern - matching `fn`. The formatter is given the `options` at its instantiation. - - Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename - is found. - """ - fn = basename(fn) - for modname, name, _, filenames, _ in FORMATTERS.values(): - for filename in filenames: - if _fn_matches(fn, filename): - if name not in _formatter_cache: - _load_formatters(modname) - return _formatter_cache[name](**options) - for cls in find_plugin_formatters(): - for filename in cls.filenames: - if _fn_matches(fn, filename): - return cls(**options) - raise ClassNotFound("no formatter found for file name %r" % fn) - - -class _automodule(types.ModuleType): - """Automatically import formatters.""" - - def __getattr__(self, name): - info = FORMATTERS.get(name) - if info: - _load_formatters(info[0]) - cls = _formatter_cache[info[1]] - setattr(self, name, cls) - return cls - raise AttributeError(name) - - -oldmod = sys.modules[__name__] -newmod = _automodule(__name__) -newmod.__dict__.update(oldmod.__dict__) -sys.modules[__name__] = newmod -del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 6594ad826e21e276555270c99c52ac885ef9c4bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5011 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc deleted file mode 100644 index 426604ffa06a3422c07d73651b879c7de93a9743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4003 zcmd5*YAwv#>VOr z{(jLoPLFObEq!KR>VF|#-od{<0})GXi8X%NU;zt3Bi006X4gPh*mclVwg$S+Hb6Jo z4bYox3-l@WH0Uk%4bX40XF#82&w<`%-vWJ}eH-*U>;+K5UIhIvdr34tZp2IM<&&k> z_u?Dd+dGo+U8#oD7_M5)@$GVy4S8X7JDu(7cE6v1ZL;jyTft=6@5DjB|LdjkM_vIj z@{|{voC`A`+uK$|w@G)vH78SLqR5EbCsc7#Y0gN0M255&k$#ou+=znoB~?t{AzG4= ztVlu&G7#Ay$G@>V3MZ9HxYgtDnwd=c9QSZiN)1IB5r&unSG*l>Z4b-+A!!AbkfV_q$bwiyta%5buc#U!Y$W3aS6*W&E^wFEWre)6USGVmC(^I_p(2!!w>cAO zs}YCpVQs}?Z05G^?e9J@LpS%7OjBPMzObHK6z$A%O`7h}3RTm3(lmB6jx1HSPsY0o z>dT1`t`l0?=t`0dXn`CcWI`cYxm1J}424%1qRl8r6>Pj`hI!qlXBXKt0MjITuX}jV zYD^;g)(XbUuea^W1{Kfor&leanpl4FL(=QLrAu18-RluUGnD`Kh%lbgDmQmr4J5D! z?L|-*yhw6sTL48*tz@bARPYXJSMxk2=ZcnPjfIJ`DGPb6U%@l(TqeCjTGk$sr4h1d zxxTYHy}+xQ?3|pCB&S-tj_RYZxUtP=Ypj=O?apTM?Rb6vc&8q!#m%CUNeD(DLMT+C zR*)^9vRAGK$Uy=ar-{-0!wTMW9d9nIW@sB`s0WLoakziD7l&n$`ToPAR?|lh_nufy zZ#^iph35L^`=HD$VBir)AC!D*E?&pgyagW|-G6fSZXN(pF6v2K*n_#{ikkO(*KzvDZ!q|vMrW$ua~;@o&DcW|q8|b6q@>9y;8LR@ z9|H7i23{^SP@+WD_&1S2CDWhPMp@u`s)W_<7c%9Q8{ThaEMRD}lx=Ej7? zksUOtpKCzic6{pypdk;bI<3l@9pe`k0R#FvlS9WlUU!1TOCs$}cNnkLcot$8B3GB3 z25{fFri9@bf1D^@FpMo`VGYyoV8`^lYv*gtOtoRraTO=i(QErq(euf&pTs^i z*ciX#rKW5IR#1X{+yuVx^c&D))urhrfq< zQFwXlg@t`rGj{Sq3{F&O+9pR_r93gt%N<#c9ODty804Zrs1HS=q?W09?YKpLCKa>K z`E3Zn$yw(8@Dpue2=rMNhsYRaM~Jl#0T$!W9t(j_Ey;k}1ChW(fgwe{8V!U7Uo-HX zUzA)4>p9Ka5aUhe{DHblMN2&+WG zQBeQ`Fc>hKs3>gqF*(d^kWCd$KkRIGi2`Fqu!`pMGQogFmE7ubHH5bO`#*ZK7OKmI z{e&pac;mI2U@MH*>SwF4OUs-?=OhI2jrH5B@pKdB-G?Xp@WRgi`G~pW^6jh0PgzQV^5C}{!K>`lMsdbU`W;V?|vEjO++QaBs>2buW!#> z=&FjlJLZvYHPzF0_|F3~XQ@}my*G#PtUByE1o57K^7TE3E&qq*p-n<{{pX7Ve_I9q z1dxj=@M|A}H?D@jVt!dFSt@~McTGWUv0_wusrEzYSlxa9`0(9s_x|yT)AC<(`C(@u zhrE+j7A6yJjOd*HSa);+`~qa$EhW>PGhUo^a?$UU?zhel+V|e*Xkqx>+0gHlqU<~Z z8-!DY_B-F}fN2A=(OlA3e4D GyDtIUBW2G3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc deleted file mode 100644 index 925ed9813c6b8d7047095530bd73ad49ac6423dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3088 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 KA!g|pjQ<1JQ&1HE diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc deleted file mode 100644 index e2d170386273deb9cbaee3780d9b553a5fb5a326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29168 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 N^OMZs%*0IYe*=Ccu~+~A diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc deleted file mode 100644 index f2512b65431fa754149bc1b379eaef525e522d29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17565 zcmd6Pd5j!adSBPk-8DTu2ZzI(qDn(?#nw_Yl(dp1Mv}!_+$D!xk`h*?$Q^kUxY3 zfgCOK`+cwaoS}CU{}K0~Ue!D59pC-F_ti8eCNc^9J~D1D|N5JW#P2gR_!~#&bzDK- zNF=;OKH(XjSvB&8+|9g+yH&MncHTBvXIGQ8R6bQp=hHPO@6^WfV^VHbGxGpv@6!^L5=O zu9=Y<{r1=5x6S+>{kBfa3D5bSk>88^*!K)C@a^=3axc(eZWeJg(u`F-Ag?wPj|xhLAcopJGNZj@_&Jq+fT8>&_e zLth2+m0DTqKG^-2k;+Tm_AcIZZ&dEpicPoC3Y)EPUbi??YBV=grMwcJanE-j-RDl9 ze({;-PCxg&yR_kkE53Upo`DkBI;;oA^vge1zN;R0zd_po>%o)*GZ)!O^%9j1Gu+(T&3yo$NjWbuNhmw)1Y9-LQ zNmi9s8W@bVIV(zDsTIq9G$ywTs<<9MUTW0C+n3Pyq}23Ai}qZuERPm_xmg}9I#+8B z7v)k>BA>k3s1@sZ`&^^(UOu%*=vMRTn|`@fEvkI#n(tLwwS4;eQnj+y^7E-HVG)2~ z`>NN@GIis+_PFG9157iuc>U(Jvsa_kmD^_lxyU|u{py7%!&H~Fr!V-c#kX4StztcJ zuQlq8_W1cmOI3X3F8b^FsthW#Mthe7g zfcu1Z5R&FdG|q)yE7k#1)qYKwTIT|{2!0RU#0b)RyVK-Z^SKP=79 zYiaPwB<5Y>D!M;D^E!_!P)IsPCs9arOr%C7fzJsBRCMIrCnmn z*`@|a+)BhPOthFsi<9A4+#=I$fzs#0@whbGEzMbrk+oi_M=7tUaL-LdW5k+JZ~Pck z+J2N2Tt<#xFEu<6Vq^syLF6>6#gJqbWrDD%!eG4;u0;DTT)cGl&8xQym##0~E-aqC zcCm2h%3?HLC@H@f`UQ@+OPgzF&-dHZilyD!EMECqzfHYz55#B(esx*R0etE>lO8WA zQWiO}Qm=%C!a3xEV@Ohl{>vIRp0fDUciUvHJv)H&`R>a@cpF0}NnC=rHXg#ns%UxO z&s;Y5Cp@ccp$ypb?2oNYt7C0h+lhC~O?xxhu~tE+@0sdPbnLCc3 zsQRy-2qJsAQuT9YlnO!*%1!RRQi`%KARlv?rAB?ZQg+vist%l<`OG+z8v`m^OHB%& zAc>8cn|***C7-xEPI>8ns%hUMT^IQAYV;OOYDz95kzyuv)46fjWt`J;!pR5GCd1$mR`I#c*X5k23|TIiS2C^vNc-@v>lamKc4Q zH8X~Tzl>oTGr*~1m=A5!{$K55Lm1uBO^G1s{)pEUF2U{J$3qBP?N9<3ItV?7>jysT-L~1B2A=_U40^5N3+00a@g2~5Qmx$5h95&jmzTu*fAt3iA{ro zX3Go{TNagpXKtHReaj@QJwMB}+22kqW8(ld=%7{dXRxvhAiizGNUTkTDK9OAcNoN* z*h*8~tU4WYTSSx)^N)vPTbYi9@^K;Nte1|7`9wJ3Icy&j^BBf_anlY{9XswbInZZv zpwG%^pB+0U=j$EY%YdBM(Qnop7vjybcI}FkV79#L5+Ud8Vr0K@{o2L$>*G9^RU`(_S&d(FZuOsD_n&G&cVV ztl(lbcx}Gdg@^@p5q+pjOoZ=+~SVfG7*uG(jws+3x?%_y23J1*>CYljKNcQqFN1JLSk!K{&3QC%*+q6$?09> zL%-~Y$p^sVQi(FY`{SOTmk5aW@!)}B-hG;S8ut^MsrF&WaI=$YOnX)*1+kG_w)Q7B z(_k-7SI%$hl3*F6!qCr<=9*>fz@0Cy{OSNUb&L~RJk zVds>lk%hu2`_-1OHr^^$TmHp+QTqC=i%K<=MoUJ^HS0ZpBXX9CfiL;hX&4*wTWFY1{}*);YW(-7`7w#3L1*-^2%f$Sap=Y3&@+}H5Mh6T5yj@xd9dTMS+=RAfybZT zwA$Z5EiAF`BsT4Kt^HL9E4u^zyPAYpgg*A{ZCGbvddulRkgbl1_{(_EtzHs6%)?F_ zc%zd#lz@m!c9QDG=sTSh1lW&tV9Pq&iIhu>%L-Fm9u4{O%;qnC+|U+huh{&ff~ zwcUX|5@tPz^p_i3Y(ICau^hq-^xwJ0jc0(|J9jGBKCTDu;_Y|Nx0Hgfc7722~F zF5wjlH&8C*nl^IUIoZb2gLWAkSo*O_D@9c-!GY#-tEYFXtdERqa7sTU)B(vsu%M2uV3!G4wBKS7;lf`O_?`=Y z7CjYik$Oa27w&SkScX@UFYwp54D>F6+libZ!0ADOUF6dZ?co~%MC1_b9P&TlO|e=W zK!f6+7hp29m5NLpr44s$e^!%cgd?OMjF;gMDiE`~1B7zScBF&%-A5 zjC&d$PF;7_^C}^9P_YV?!3TKaN+rJ;qMdGWm;PBF1V?A*-5wdA)s9;_C0T)q#Xf&N zg)1n*Y82cS<$8sT0U!U3D_2i(ZGjIHt5j`yemn%(;%Rpdz?pMTdj4{;RSo-M6*XVJ zaq;q8Z)g;pyLMwJfBDL#xp=yCc@&yOuRqn>fC|KlD#CSIED@R~Vd4R9eie4#k{_=7 zP?mnNv;rS=-KP_hQY1dS;N&joIh}Eziw7b5iBE5M6cGf}Y6QZPPi#UIXoONeh;vh; zeto5a@frY!3UHRuLZ%q>mbgQPV7$OxuT-n-wu^ml-qlnC@~T!h++d~Ag6u(yVy~wf zocLUJJT~Sn>+tNO!5I zPPq-$8+Wk*W(9?S%S2?#MhmTm22i_AbndwCdqV<41F^6?GFvftI8U|9gs^c0VfCgC zr}2ATaR`H`H_aY+=8nJg(u=!|N)v8?goxQbQZag~2C)pOGyn{U=_NfaC^i zdt=v%3hHCG$#f+d`z*w(r_||VYgbC{iXb-qA!Iy2-ggH_(Pq()IF4=%q457YTHrTf zjfV}jbHJhoS$9bu4t8O^#p+-LqCAN!idBb-9(V_Itu*){5P1Y+?~q$74OMAF;zKFN zB5YTUH9AF&>|wFYHlwrLjT~N#S$CycAg%_e@s=DnZotx@o2pBOUD3P(^S{b1fbR`- zyVK%$c0MLJ>WCgk__b!ZA^rA;7jEk#t2;awq8Skehua&rE0zZ3(T_TMuamfA>V1OC zulm@%d9KJ4!F6QefEU(z3szm;x^nGuWHsyMcJk?Y+%75lxrTO(^oVhD{1sfmKg0ep zOa!SA?oRp#=lmf>y?oX zN$y~rJ1i{`ry_Mnr0$59mfTUv9gTC3NlQemNZm2XJs#&C$Lx-(UqgzStsa==mh6a^ zolU@lm?*e)%X4`zGxtO|huJ()PGF_*P{G@@4?e04-gsi`c=%+;)((7lbAAinoD&k+oE7-iF)3;emPyHfS`~vz9*LE+ukAI785=8nW8g z%$=fk^w5VIO%BTM33h9Hl~O29Ds`9n>AuZTkj|9MeAd(3hQc6<)IIh^kBHi2@=Ye(4l4=^?d0b+ zTSo}2>)VR@kd;5lE7Q^(14woR8Ujj0%zlM-ZP$M(LQS_2~*t_k6YsS(vLzo#R-2FM+u5 z=w>JaJ3$ihdIBhmfoI9rs=LeG(+}q|X{5+H9Bzzk@y~O!*FYTA| zDFxpLoPiHh7NZX6AfJt$<0Mdsc8$FCanA3Whvr#5u3?xWwng zlWXzsnv3l_x1lJWxfOFYx4JdI$TNRHN0?Q_g5bT+y7TUvuvDM9t`*Cxuk?;^U&96k zL|gRc!Kix?2y~^^ton?`^F29Vz*&Zz_**dNM&KDqxSDiT0KEmjK+tmD@NPafvRL|p z`Ynev7TKk@+AK1VfV^<93z=uMzu1#`mt!xd_WV(_X*;Sf*)ZEbiyky-ukvY_1fpq) zJrGXTy?nPj>8#y;d}Pw2ZFeAvydX&8ksHrod7>x^qC5GQc1-?lsQiY)=8!&=-V$P~ zduS!U#QBp`AH+CFao!N7BWoJ(&vWCKyUUre+lL>yoQ)j_AQEIH6dy!@fPP`e?1ho_ zv?*Z4*E}$3L;XA_y&L4GWR~JGmQEgYXPUCx$99`(zv&LR_sC_Mv!x*-%D6`|KfYt$ zU)uro-t@8IN5ma;<-j^jEg}CLy6-YThQP1-_43Yu7L5Rz@4df)Wqr!|O+Nwwy4emF zF~zbVfPs7@B>KW}hsS&y=U{@4t2>qj_#+Cjw*pbx#eq`*`hq#{UW=hMejh`rZ6vYx zSN$>zwwR2N*n}WY9Nd7`Z*);NYqyW?hPrOU9f<3#QV=J6&a>Cv3a|V~D-=_iL27?E z|A>;~^3-44Wl4K`ToZ3Wv9RC7!qi_vHUC-DF?5D^BR ziLjzc95+kuK!S&u2=|i1OrSJ5V9<4iTM1{n*aQshIJn%f@gCeEeNQV7cKf)DlA`+& z^>Q4>#Oc$g1%F+vzJ}>Y5LtB;t(qqVThhTl!1_O>WtO#ZR%O`_ZA7~428sSFe*`E< z;1!@?w{Pq~dlw3Q^XC5!AnB#D28nur$o3TU$@CWCsq74bkly~ zk+A5t9Rdf%0L>jC3Z8pVP?6qA8c1>6vrW#n+Alm30OHrxwm9~O!)R9l`ixTAhJ~CW z-O2GtEVHzoII=*EbFGWn`R`(NqP6!wLJs$v?hsnN#RFkC(ODE@ED<4Q zw)<4urFiAXTaF41q>+FDEa>jEBTF>BtXcbWnK^AgTYv3p|v5F7?qzLy#%5AkHfe2$B5dU!! zTW=n9TJ5tv)Zc{NMVGD{dxv62T-Wxczp+__!R%ri2K%x1-r@sGDNG|u3)wE0MygA1?xCUs?`?m-$Fs3Y6h(O4^a`rIG=>913GWJgE2=1{B)QOLT(W3kz7tPz(QbXw$Jro zF#y9rY+|<$z7{OoM*|T&^9vY9{dpt^^wLHzmaf)VO8BbZVDh(_48uYF9hCj|E*~An zN%@r#Q@@9UA^AWhNNFpCG>!K?!-k5$Wo_E>oJ6dO0WU%mkx6Mp4wH-$?=yBhy=pMd zSm%R%ymt_r!sw+foU!XT<1Ndx@RSMdPUb%Q`3m|O-^_NhTR6=`%|vHH)$uMPV$z)y zYz?zBfoG>PCf3JTe9!RiB}ukuJ-(IgOl%wIYjSf6Z%zIfVxPkaMBAk9n~b*#Cp#1O z4U}3awL2C{ZHzg^G1WIbV-u0J@Q;{Y3T@1_(`#8q>J+BYmfj%xd}h2f*u!bR+(T`A zlG(*)f3Kr;BLbii+J>VuH~xv_P<6ofc4TDK-@=3XlSmeGd-dKq1@|o8h%)e(z)%W{ zOMxOgM`J!%PYyYw6pl0y_beDzzrrqlmC0Xa^4FP&%&p)lvLJjS3l^ff!HQpF83hsz zKJd@4BcGerbTuwh*3MC3tb8hN^$)wRiY*o;L&oJsNd##j_=}2Mon^m9MK-t*f);Ac ze1<9Fv=A1dUT2$O@{IO$!}WWx`yV9Mb7-0cpJu_Q*u!Fv%Gic!?18!CW$d*MaY_Bb zbegf)Y==7RgR#f`(EM+yS?+w>?kKUxu`Ip8hBg}(2JNX0&VZB~B+1B#4nc&q(CI7# zH<3eNFHI&q*@(qA5ruUO)R{ybC>5canOKPSw^@&*5(=7lmo*R)v8eS+N?aHai^V#= z4EX2F|Yg z?vRWitZZB&BR;@GA6|HZB>_KeR-hNh&j4NqzDs~@0S<%u!NpidsGx(0m+P4H?UE-E zQ%AUt;kyPv5>FZR3ThF#<|UUA;n-_|?;F|T11NKFWUBpokHc<=Hllet0NlY-F!&!? zD|)ogn2Vo0#1HZoM3|5Sp-6wF`<%;achZL}V8BgeU*LCdHk~~EZJ9WpqA{Avz**JT z9xCxck*d0WBC}G1&y4RU*>pwU)<-e856AYL}DD{LZ1-0BlR$4 z9tGF5pB$zB-8vdFA4nBkmtgcIzyK62yFFrI3t{XAB2FQ>LH~$rj4>#tLs~+yDV-tJ z(MkfmA;sBhT)mAni)%u#J$VrP0`39+x2ELV6l)c6udq9lpabfSap;31&?$+nJsrn0 z55iD`_OMrHAdAO90m)7pJ&iF^Hl~%mniAGt#oM!Z`%CX6H#5{Hn-iOpok{g=yuGh8 z-pN8!n9vODOUFlMNRRRJ6lZ~+b=eea4kXHUXELTldv$*&!(KWQUg~4S%dfqIuWk;A z6gaqb2qFHUMy(x+F2L6#N9|g3@7^7du6OV9Pzv!-5a;}k4Gx#PcTY+KN>&7gaAQRo zUoYqG_RoGo8Vfk-#Qu3*;cfH)PZ=z*yLa&k4nN4bdw1Z}NdjmpUDuiRydz4xgzqLp zbc3^Od`*Wg;xGvkq>ccP;Th}zKItt)$JI!{O5GjkhP>1>mgC?XiCW+^*{2Toz;tT^ zA}+FSUOp$9Pcz(alReD7S%YV>ZpeX)xx?z8;;tC?r)YphR^4A$f0J2iG%Xwd44?iT z6B4remrTUDD+W5fCfYA79;|=G>^75s&4dnJv9$6I%~j#*HI#wDi-;AXk2*@W;2u`7 zwp9O!Md=vqih+3QcUWZHQ@_j1zeSQ4_l&lfBV$ATCM*646Iol&a?6j2jVz;%Xvvg5 z=y;h-e;RLQ90!bU3cK5%XOd8oCL%jyX?_@W&cj(K!%5>sIDGdT?R_JnK=;S!H=bnV zj_exx_A08PG(Mxn`AC4z^gvlUHg$rZXCXREf6lCaj%(qx)OVQ(WCf_-V^(%YVxG{( zA23gTm07_awU{|!IJ+b@jv7bP_IHIndf{vc zyV82)|8F?kv-78AUimbRX$v^@Qf*Ea$Fq1|eBeA1=juPBo%%0K1hu;%fb0GVk|Vw1 zf`Bx?cf_~7tl0rtwA7&e0v>jP7U7E~f*6w$#Aq{!5x`9=_TB!aVc;_8?T;UHSDWR$ zg+y&|$^bE*7uD|}vn%;>VO7B7(?0Y_zJMMJ{z%XxX=>d#-k&XN?qQQ;>t z_zoYjNri&`oaq_9kz?{jCUmSvV;Ao+#1!6s{gJ>i)=OuTlXl{p P(+i1jB5h4i&QAUx)#`MG diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc deleted file mode 100644 index 60555de405afaf8e805b64ca92a72dfceabdbdd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4101 zcmZu!-E$Pj5#OEtywgbtA;7|b*Vx#c0+Ng!W2<7vSb$Az3ku0`WnV z?t!H`rBcBuzvacLJmmqZl83zJ&q)4*c}-sKA&K*yki^cfXHP;BA&)DR8seqoAn?t!`$-8jg7 z^lV-ux-q4D^^HTkj=r-ot^3Z#VLqn&M|eZGNBOvJpBjzN@Cn^N#t-QB=}~)pG=73l zLhkW{qQ+}tY~v)K0)2*$fd>2#=(Btp)Q8;Xhg1KTW_T(!_z`Y?Ve+H=DbN{y4D@M! z9P|V~3Hl5VK%eEOK%e8!gPzv(1^y!VGrS2ptLZoRS@7rh9O%5J3;ZSU=lRQ^ukdg3 ziJvp9`5b?hU---jpMS^TuW{!y#7?lgR(P7fzG5^Nw|`p?@b$LZ9nmd|xtqD{#APXD zF_+3jkNx1uUtJGg+0_p)Gq`$VDaiX}uU}T9i%H(wl4*OrTnv_W+2H)b!mH=bFPwil zXl(`Mx(Ke1Ru4)Mcg_Zd5W&R{SKqyMV`WY+vY4fb=oVrzczfkiHU9q9rOV4Jm-VV# zlyRCBbM+x5U(-~zJ+GQ|<-I4i?&OjydpYh1#jUT zLqwYF0h^tb$2GfMn;khiyM17`GPNs!jj_@4upY@1n4z3I6iemkcnpCKhMWc&GUA>h z&LWN$8rsCs@DW9)Rz@dDPJJ{Lwr%fP{El`TDX9;GIrSWkwIo6Uv-@U@}Rk@W8a>vuK-+ zvN9x^Q{a;Hl!Zo(Bg3PmYwusX5q)s+x^lK}rdigsm6PNdu8UoYPfKORoI}0e`jsKy zAcNWbdfpN9?S7ibJP~D?&Tqa}%omA_d$@k*dO0uVZ;S5j`7CYC_qNLQy!-OpOAGS_ z6672%+a_*6G2csj^AXf|E}>L`)jS|)1Xl9^tGV8ms-dlB{xhyqaCP2Wv8)(Zw zO|5dRSEf0M(dDt+q#hSNoDew! z^91auBb~GxXD=2(3n$r@dB4l|?47}`;(mtOu+L<3D zpcD5fg{puC_`Tnek?4(}Ux=X9 zPqQ-ZRt73x_WaAzuIT2)L*Mqovnu;!6|Stuw?#mTL04CoB7iXpOjRU<7-;}_-ScR_ zBUj?AATw_SIKKTh-~pXRXyHC83kjdl&E5SdbqR*v!>?EcDUA(tVB9oQV_^Qm{E2BA zCE$QwV%%yo&h8?iH`&05tO0?C&5ir4cf14yMXr`O+`UiZ9``_fP9WkhE7n5o)SgrV{hsd!Ok2vx)` zM0QhoD7KWT8eJ;#CTU*=*~YIRXrD4&+-~+YGu^MJ*o0X(w-4{H&vUzeJc8ilBB8iO z@UvhB#s=!r0KyFf?1I6J$V5mGG>n)>jQa>Cg+qtLs&IANJ-zS>UksX--hjLcJ1BP& zXokxA9qM^FePE|}Yzt~U(rTj}{|KrDl`z+wFsDuXtLP|7J2vg%9ve`_aRv@I`i49`us9y(KV~z!9z8x@93D9GlL1m= z!-9r0u#qsZyWxct^3uC zTOLUVHqE)^jiNmK8lN)jO;0XkZ&j|mL);Y*RIFZ>mXhFKV|&xrK@Z0&*v6LqpFMQ`uM*H)tx@}L?s<e+{_8sIKeo#rxE}kr>$88kHTF-p&i>(!vA??w_BVH&{nedde{m16Kf9CcOZOoA zlRL%!Xdkjom$`sL`m>q)dlqQBj3HGk+xEz|4cj(s+pulJwhh}hY}>GH!?q3EHf-Cl O&8C>?|G_^pefa+cy;D#C diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc deleted file mode 100644 index 45ec0eaf01ed6584c7776a2ad5720f5de3169111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13801 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc deleted file mode 100644 index 08fe9ea8d832a4266e657a1d4877304d93f894fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4807 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 Z)JqBtrq*x?>=6(E{_{u8b<JXLjSpYr8YE zfn9mIG-v*XR_X__t2ZMmb@NpANdtw)&J&^pkzQX{mPJ;c*KP>n-mXdMdmvKHS#xXyblzPsO|6M#i>Eq+| z1a>0#)E1=KgA@~4PNd(=+fIsd%G1%l+$KB6U9z>g`Rn1ux;|u-mPZ*^E*4YclU1V^C^>YnhD?g1Hy*7xNe{L zSFdU3zR>qOL7(A`nY|H@%j?f@Z)R;|@_J&ZwTq(qCfE*`P?S~ZF{<3xfG9F~?XT;mE;WHWR7h@KTCTYTpgh`nO z2k(nOBs?zDd~~HOs0a>Oei&rwASkDDzsRrpZ*K-7mF!9xCkOF}iJ(l&AcASM;4rCS zHvmo+>;|XU^~-6!#viHp=3vu~AIRpi#MIKYi==L_*@~`PrW}QZo&9<>Dv*W4Q zDx-%UzCsa1cV)LmwVf1M!Dnkd0aql$k^a1K@r_I3Vt>}^1q$xh)}YAf%Sz2bbbu|B0yCBI7*XR1@LFNu^Bv&Ro;#HdvBig&pReo( zfE<5|HRxFf1~6<&vx2k>te6j%DwAJRD=O<8f*o3OSM6K1DsvrG?mANYH}mIaWzQ|W z;{N}w(7u^!t>)L-X`5Iv1QuD%! z2~QZ%GLgeHV__?cg*=S2&{Z8dEg3M?G=NT6=xII&Y?S7qtNSmqR{ zfD^@=P$}{}qhom3!QS7lv4SnIGeD)Y=&cyDOD`qx`8{{LZKbz79y8FJ7e(WOPBPW+ zMA5@ZoGnILQACRbU`qjY3j`etP-a_QSV2Ooj9&ovPRUP6gKG^c!JG#ZD^R)W3XZEZ zXmrl*c3plE(C`AJS$~mcA&ox&C)&IY@FdPM@Wd=Q4VR-us?}LvbEEU%%Y3NaUUR#? W%1UAtDhqWy$8;@l<*$yjX8!{MZ7CN3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc deleted file mode 100644 index a9540fb9018fb87fe7ec4612e9d3df63b07a132f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4137 zcmai2&2JmW72nxiE-8vqWW{l;q-h5MgoLe4%5snvO3=n}KKr2>mfHXX3v#(LORlxr zUCqqO7DW~Y>=r%sP!zrNA_2X$*Is+=f6zm*$M)o7dn$sq>2GF9T6PR{1NY10-i{|L*L)~pj`j{r#C;`-TP3hLK#ne+RIws+A<`j~&HP9djoT_*@CN$r^N)?md-zG+aH~UL zb(@in!|aaB99S6E)pmxJy+;=8TV*x$HMYd+=$F_sYoM>Q71(`MR3OIxg=1OfQ02Z< zrTaJ<^-JR&_+mfLTJ+8+lIP6q=PHGdqQH;iW18kF%N5r1IMyaN;#eBw#-H?Fq((GI zV^}6iU?2TrnovJsG=;SV%_YaHRH{4-Tl5weArF+Xr1p_!G!k$5QgMh-Dg8kdh*YMb zdh>RZewGTR`^AnkXWxpsFF8$8yk+8|-{(n?vM3q$`)2!oAF7|D!6VQNhZopqn52TU z(&2Xy6egC8_7t|bv3K*+Picaq9P#-03LWH%j-V-Gjpj*&Z8!}^zVHJb$T+?bI8=OW zP6BO`eF;-jE(1T~h_J&PdMx6!)uKmu4a)e8akjHVw_0z{qMflwYw5>yp>7cHOo6TB z=u34R^S;?hCze*;ko1PI^%WZU2_10igDhYT3eWg-PrpTFJ_ur8O8O?_p`XWUXCbHG ze`7{_qu+1NjNA{?M1_9v%zoI0!Gj6h=pRJdKyWacOItogW_eN1L(oT?hmZf?p9Bkwtapd}a%NF(r5tKd zLLxZJCF4o?dW(LNB565N^w_{cq@!AcUAdteMM&?bPp5NG+sYpRa%ic4t933airU=7 zg;kDq_y`>UyG>7M=NGje3P+@Ry~05e5gup)@NJ128k81S@;EH2GhFz+C00QHJZ_JW zLhWI$K{Mb=MeY4>$+irHpCM2Yw@kK=cyiQ^qd_}6R--hz-nzEcmXYFDGe6k(hg`O^ zC~Nn?#!>;MvR1cCIM)!@M!2?6T$ixrHhxlTx87JI>ty`W`LfoUA0p6anm_a4z6pZ- z3L1p6xlx?i=n=xEM_oI!^_^k&bJ88#-EKin(47=yif)QhTNONu0Y^<+EJI4+Dt=!X zJCx0;CRTeT?!K=#)3&RV8vgA6jxRo~Y037KqPl46qZvhijlqOSmytbdVx3}qMy6zF zP3;N!!1~GcsiVlmc}S-2#AWurCB8PXPi^IB+8H6%;R^E9buGu*C!)z5a9mGteM)MY zkKwIL){M`YxZruu&@0Gm_aRxVk<-e=J|m|d^H|jwsJ1Jr(CzU9G?8TyYwVqL^G!A# zH_EZaZfwoV=x=9y0%N|j%#ak*T|ZE8NV7?ckBo2_ITrY#y9T=I?Cry0|V__ zXARyFRO;&&JJec1vII;E8&YlT7Fy4= z)eS4utLI>D+>4?&1EEF|z;wukMb&d(s8uTtFLiMr++^LM;5Bw;wa%`r<=#)3*BHe5KN#8!pv8A-#yusR9t}kW}~Rw6Ts-Q5Sa9>n2TQF;KE{x zLeVe;*)!Mr!b7T~OcgH}Y7gjLE{MyJCtlIbYeurk@y>GjF@T~SaFmr?>2ImdiZM&? z03d<#QFv(>!l(u5iEn5D6irc4>Nw*?<;aJT#H)rRl`p;o#cO2+>E(&JhjZ2guME+6 zwr8&r`wQFl{_R#>vPxbd4SSt_=|HOnRLs~(P4vukU$ zO5^fwvnKQxcjv1p$gNpHM&W(-hA=~UF-EzkXJ Togh;GU%<5*^)=!-7oGnBLT7Qi diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc deleted file mode 100644 index 6219ba6f9648b39509edd9454afc8d348ee0c3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6335 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 Hux9-q7C{;h diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc deleted file mode 100644 index 7ee30b8822289e3d5f63f1c37c03b26eae44292a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4002 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py deleted file mode 100644 index 72ca840..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py +++ /dev/null @@ -1,23 +0,0 @@ -# Automatically generated by scripts/gen_mapfiles.py. -# DO NOT EDIT BY HAND; run `tox -e mapfiles` instead. - -FORMATTERS = { - 'BBCodeFormatter': ('pygments.formatters.bbcode', 'BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'), - 'BmpImageFormatter': ('pygments.formatters.img', 'img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), - 'GifImageFormatter': ('pygments.formatters.img', 'img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), - 'GroffFormatter': ('pygments.formatters.groff', 'groff', ('groff', 'troff', 'roff'), (), 'Format tokens with groff escapes to change their color and font style.'), - 'HtmlFormatter': ('pygments.formatters.html', 'HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ```` tags. By default, the content is enclosed in a ``
    `` tag, itself wrapped in a ``
    `` tag (but see the `nowrap` option). The ``
    ``'s CSS class can be set by the `cssclass` option."), - 'IRCFormatter': ('pygments.formatters.irc', 'IRC', ('irc', 'IRC'), (), 'Format tokens with IRC color sequences'), - 'ImageFormatter': ('pygments.formatters.img', 'img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), - 'JpgImageFormatter': ('pygments.formatters.img', 'img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), - 'LatexFormatter': ('pygments.formatters.latex', 'LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'), - 'NullFormatter': ('pygments.formatters.other', 'Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'), - 'PangoMarkupFormatter': ('pygments.formatters.pangomarkup', 'Pango Markup', ('pango', 'pangomarkup'), (), 'Format tokens as Pango Markup code. It can then be rendered to an SVG.'), - 'RawTokenFormatter': ('pygments.formatters.other', 'Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'), - 'RtfFormatter': ('pygments.formatters.rtf', 'RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft(R) Word(R) documents.'), - 'SvgFormatter': ('pygments.formatters.svg', 'SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ```` element with explicit ``x`` and ``y`` coordinates containing ```` elements with the individual token styles.'), - 'Terminal256Formatter': ('pygments.formatters.terminal256', 'Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), - 'TerminalFormatter': ('pygments.formatters.terminal', 'Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.'), - 'TerminalTrueColorFormatter': ('pygments.formatters.terminal256', 'TerminalTrueColor', ('terminal16m', 'console16m', '16m'), (), 'Format tokens with ANSI color sequences, for output in a true-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), - 'TestcaseFormatter': ('pygments.formatters.other', 'Testcase', ('testcase',), (), 'Format tokens as appropriate for a new testcase.'), -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py deleted file mode 100644 index c4db8f4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py +++ /dev/null @@ -1,108 +0,0 @@ -""" - pygments.formatters.bbcode - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - - BBcode formatter. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - - -from pip._vendor.pygments.formatter import Formatter -from pip._vendor.pygments.util import get_bool_opt - -__all__ = ['BBCodeFormatter'] - - -class BBCodeFormatter(Formatter): - """ - Format tokens with BBcodes. These formatting codes are used by many - bulletin boards, so you can highlight your sourcecode with pygments before - posting it there. - - This formatter has no support for background colors and borders, as there - are no common BBcode tags for that. - - Some board systems (e.g. phpBB) don't support colors in their [code] tag, - so you can't use the highlighting together with that tag. - Text in a [code] tag usually is shown with a monospace font (which this - formatter can do with the ``monofont`` option) and no spaces (which you - need for indentation) are removed. - - Additional options accepted: - - `style` - The style to use, can be a string or a Style subclass (default: - ``'default'``). - - `codetag` - If set to true, put the output into ``[code]`` tags (default: - ``false``) - - `monofont` - If set to true, add a tag to show the code with a monospace font - (default: ``false``). - """ - name = 'BBCode' - aliases = ['bbcode', 'bb'] - filenames = [] - - def __init__(self, **options): - Formatter.__init__(self, **options) - self._code = get_bool_opt(options, 'codetag', False) - self._mono = get_bool_opt(options, 'monofont', False) - - self.styles = {} - self._make_styles() - - def _make_styles(self): - for ttype, ndef in self.style: - start = end = '' - if ndef['color']: - start += '[color=#%s]' % ndef['color'] - end = '[/color]' + end - if ndef['bold']: - start += '[b]' - end = '[/b]' + end - if ndef['italic']: - start += '[i]' - end = '[/i]' + end - if ndef['underline']: - start += '[u]' - end = '[/u]' + end - # there are no common BBcodes for background-color and border - - self.styles[ttype] = start, end - - def format_unencoded(self, tokensource, outfile): - if self._code: - outfile.write('[code]') - if self._mono: - outfile.write('[font=monospace]') - - lastval = '' - lasttype = None - - for ttype, value in tokensource: - while ttype not in self.styles: - ttype = ttype.parent - if ttype == lasttype: - lastval += value - else: - if lastval: - start, end = self.styles[lasttype] - outfile.write(''.join((start, lastval, end))) - lastval = value - lasttype = ttype - - if lastval: - start, end = self.styles[lasttype] - outfile.write(''.join((start, lastval, end))) - - if self._mono: - outfile.write('[/font]') - if self._code: - outfile.write('[/code]') - if self._code or self._mono: - outfile.write('\n') diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py deleted file mode 100644 index 30a528e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py +++ /dev/null @@ -1,170 +0,0 @@ -""" - pygments.formatters.groff - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - Formatter for groff output. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import math -from pip._vendor.pygments.formatter import Formatter -from pip._vendor.pygments.util import get_bool_opt, get_int_opt - -__all__ = ['GroffFormatter'] - - -class GroffFormatter(Formatter): - """ - Format tokens with groff escapes to change their color and font style. - - .. versionadded:: 2.11 - - Additional options accepted: - - `style` - The style to use, can be a string or a Style subclass (default: - ``'default'``). - - `monospaced` - If set to true, monospace font will be used (default: ``true``). - - `linenos` - If set to true, print the line numbers (default: ``false``). - - `wrap` - Wrap lines to the specified number of characters. Disabled if set to 0 - (default: ``0``). - """ - - name = 'groff' - aliases = ['groff','troff','roff'] - filenames = [] - - def __init__(self, **options): - Formatter.__init__(self, **options) - - self.monospaced = get_bool_opt(options, 'monospaced', True) - self.linenos = get_bool_opt(options, 'linenos', False) - self._lineno = 0 - self.wrap = get_int_opt(options, 'wrap', 0) - self._linelen = 0 - - self.styles = {} - self._make_styles() - - - def _make_styles(self): - regular = '\\f[CR]' if self.monospaced else '\\f[R]' - bold = '\\f[CB]' if self.monospaced else '\\f[B]' - italic = '\\f[CI]' if self.monospaced else '\\f[I]' - - for ttype, ndef in self.style: - start = end = '' - if ndef['color']: - start += '\\m[%s]' % ndef['color'] - end = '\\m[]' + end - if ndef['bold']: - start += bold - end = regular + end - if ndef['italic']: - start += italic - end = regular + end - if ndef['bgcolor']: - start += '\\M[%s]' % ndef['bgcolor'] - end = '\\M[]' + end - - self.styles[ttype] = start, end - - - def _define_colors(self, outfile): - colors = set() - for _, ndef in self.style: - if ndef['color'] is not None: - colors.add(ndef['color']) - - for color in sorted(colors): - outfile.write('.defcolor ' + color + ' rgb #' + color + '\n') - - - def _write_lineno(self, outfile): - self._lineno += 1 - outfile.write("%s% 4d " % (self._lineno != 1 and '\n' or '', self._lineno)) - - - def _wrap_line(self, line): - length = len(line.rstrip('\n')) - space = ' ' if self.linenos else '' - newline = '' - - if length > self.wrap: - for i in range(0, math.floor(length / self.wrap)): - chunk = line[i*self.wrap:i*self.wrap+self.wrap] - newline += (chunk + '\n' + space) - remainder = length % self.wrap - if remainder > 0: - newline += line[-remainder-1:] - self._linelen = remainder - elif self._linelen + length > self.wrap: - newline = ('\n' + space) + line - self._linelen = length - else: - newline = line - self._linelen += length - - return newline - - - def _escape_chars(self, text): - text = text.replace('\\', '\\[u005C]'). \ - replace('.', '\\[char46]'). \ - replace('\'', '\\[u0027]'). \ - replace('`', '\\[u0060]'). \ - replace('~', '\\[u007E]') - copy = text - - for char in copy: - if len(char) != len(char.encode()): - uni = char.encode('unicode_escape') \ - .decode()[1:] \ - .replace('x', 'u00') \ - .upper() - text = text.replace(char, '\\[u' + uni[1:] + ']') - - return text - - - def format_unencoded(self, tokensource, outfile): - self._define_colors(outfile) - - outfile.write('.nf\n\\f[CR]\n') - - if self.linenos: - self._write_lineno(outfile) - - for ttype, value in tokensource: - while ttype not in self.styles: - ttype = ttype.parent - start, end = self.styles[ttype] - - for line in value.splitlines(True): - if self.wrap > 0: - line = self._wrap_line(line) - - if start and end: - text = self._escape_chars(line.rstrip('\n')) - if text != '': - outfile.write(''.join((start, text, end))) - else: - outfile.write(self._escape_chars(line.rstrip('\n'))) - - if line.endswith('\n'): - if self.linenos: - self._write_lineno(outfile) - self._linelen = 0 - else: - outfile.write('\n') - self._linelen = 0 - - outfile.write('\n.fi') diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py deleted file mode 100644 index 931d7c3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py +++ /dev/null @@ -1,989 +0,0 @@ -""" - pygments.formatters.html - ~~~~~~~~~~~~~~~~~~~~~~~~ - - Formatter for HTML output. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import functools -import os -import sys -import os.path -from io import StringIO - -from pip._vendor.pygments.formatter import Formatter -from pip._vendor.pygments.token import Token, Text, STANDARD_TYPES -from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt - -try: - import ctags -except ImportError: - ctags = None - -__all__ = ['HtmlFormatter'] - - -_escape_html_table = { - ord('&'): '&', - ord('<'): '<', - ord('>'): '>', - ord('"'): '"', - ord("'"): ''', -} - - -def escape_html(text, table=_escape_html_table): - """Escape &, <, > as well as single and double quotes for HTML.""" - return text.translate(table) - - -def webify(color): - if color.startswith('calc') or color.startswith('var'): - return color - else: - return '#' + color - - -def _get_ttype_class(ttype): - fname = STANDARD_TYPES.get(ttype) - if fname: - return fname - aname = '' - while fname is None: - aname = '-' + ttype[-1] + aname - ttype = ttype.parent - fname = STANDARD_TYPES.get(ttype) - return fname + aname - - -CSSFILE_TEMPLATE = '''\ -/* -generated by Pygments -Copyright 2006-2023 by the Pygments team. -Licensed under the BSD license, see LICENSE for details. -*/ -%(styledefs)s -''' - -DOC_HEADER = '''\ - - - - - %(title)s - - - - -

    %(title)s

    - -''' - -DOC_HEADER_EXTERNALCSS = '''\ - - - - - %(title)s - - - - -

    %(title)s

    - -''' - -DOC_FOOTER = '''\ - - -''' - - -class HtmlFormatter(Formatter): - r""" - Format tokens as HTML 4 ```` tags. By default, the content is enclosed - in a ``
    `` tag, itself wrapped in a ``
    `` tag (but see the `nowrap` option). - The ``
    ``'s CSS class can be set by the `cssclass` option. - - If the `linenos` option is set to ``"table"``, the ``
    `` is
    -    additionally wrapped inside a ```` which has one row and two
    -    cells: one containing the line numbers and one containing the code.
    -    Example:
    -
    -    .. sourcecode:: html
    -
    -        
    -
    - - -
    -
    1
    -            2
    -
    -
    def foo(bar):
    -              pass
    -            
    -
    - - (whitespace added to improve clarity). - - A list of lines can be specified using the `hl_lines` option to make these - lines highlighted (as of Pygments 0.11). - - With the `full` option, a complete HTML 4 document is output, including - the style definitions inside a `` - {% else %} - {{ head | safe }} - {% endif %} -{% if not embed %} - - -{% endif %} -{{ body | safe }} -{% for diagram in diagrams %} -
    -

    {{ diagram.title }}

    -
    {{ diagram.text }}
    -
    - {{ diagram.svg }} -
    -
    -{% endfor %} -{% if not embed %} - - -{% endif %} -""" - -template = Template(jinja2_template_source) - -# Note: ideally this would be a dataclass, but we're supporting Python 3.5+ so we can't do this yet -NamedDiagram = NamedTuple( - "NamedDiagram", - [("name", str), ("diagram", typing.Optional[railroad.DiagramItem]), ("index", int)], -) -""" -A simple structure for associating a name with a railroad diagram -""" - -T = TypeVar("T") - - -class EachItem(railroad.Group): - """ - Custom railroad item to compose a: - - Group containing a - - OneOrMore containing a - - Choice of the elements in the Each - with the group label indicating that all must be matched - """ - - all_label = "[ALL]" - - def __init__(self, *items): - choice_item = railroad.Choice(len(items) - 1, *items) - one_or_more_item = railroad.OneOrMore(item=choice_item) - super().__init__(one_or_more_item, label=self.all_label) - - -class AnnotatedItem(railroad.Group): - """ - Simple subclass of Group that creates an annotation label - """ - - def __init__(self, label: str, item): - super().__init__(item=item, label="[{}]".format(label) if label else label) - - -class EditablePartial(Generic[T]): - """ - Acts like a functools.partial, but can be edited. In other words, it represents a type that hasn't yet been - constructed. - """ - - # We need this here because the railroad constructors actually transform the data, so can't be called until the - # entire tree is assembled - - def __init__(self, func: Callable[..., T], args: list, kwargs: dict): - self.func = func - self.args = args - self.kwargs = kwargs - - @classmethod - def from_call(cls, func: Callable[..., T], *args, **kwargs) -> "EditablePartial[T]": - """ - If you call this function in the same way that you would call the constructor, it will store the arguments - as you expect. For example EditablePartial.from_call(Fraction, 1, 3)() == Fraction(1, 3) - """ - return EditablePartial(func=func, args=list(args), kwargs=kwargs) - - @property - def name(self): - return self.kwargs["name"] - - def __call__(self) -> T: - """ - Evaluate the partial and return the result - """ - args = self.args.copy() - kwargs = self.kwargs.copy() - - # This is a helpful hack to allow you to specify varargs parameters (e.g. *args) as keyword args (e.g. - # args=['list', 'of', 'things']) - arg_spec = inspect.getfullargspec(self.func) - if arg_spec.varargs in self.kwargs: - args += kwargs.pop(arg_spec.varargs) - - return self.func(*args, **kwargs) - - -def railroad_to_html(diagrams: List[NamedDiagram], embed=False, **kwargs) -> str: - """ - Given a list of NamedDiagram, produce a single HTML string that visualises those diagrams - :params kwargs: kwargs to be passed in to the template - """ - data = [] - for diagram in diagrams: - if diagram.diagram is None: - continue - io = StringIO() - try: - css = kwargs.get('css') - diagram.diagram.writeStandalone(io.write, css=css) - except AttributeError: - diagram.diagram.writeSvg(io.write) - title = diagram.name - if diagram.index == 0: - title += " (root)" - data.append({"title": title, "text": "", "svg": io.getvalue()}) - - return template.render(diagrams=data, embed=embed, **kwargs) - - -def resolve_partial(partial: "EditablePartial[T]") -> T: - """ - Recursively resolves a collection of Partials into whatever type they are - """ - if isinstance(partial, EditablePartial): - partial.args = resolve_partial(partial.args) - partial.kwargs = resolve_partial(partial.kwargs) - return partial() - elif isinstance(partial, list): - return [resolve_partial(x) for x in partial] - elif isinstance(partial, dict): - return {key: resolve_partial(x) for key, x in partial.items()} - else: - return partial - - -def to_railroad( - element: pyparsing.ParserElement, - diagram_kwargs: typing.Optional[dict] = None, - vertical: int = 3, - show_results_names: bool = False, - show_groups: bool = False, -) -> List[NamedDiagram]: - """ - Convert a pyparsing element tree into a list of diagrams. This is the recommended entrypoint to diagram - creation if you want to access the Railroad tree before it is converted to HTML - :param element: base element of the parser being diagrammed - :param diagram_kwargs: kwargs to pass to the Diagram() constructor - :param vertical: (optional) - int - limit at which number of alternatives should be - shown vertically instead of horizontally - :param show_results_names - bool to indicate whether results name annotations should be - included in the diagram - :param show_groups - bool to indicate whether groups should be highlighted with an unlabeled - surrounding box - """ - # Convert the whole tree underneath the root - lookup = ConverterState(diagram_kwargs=diagram_kwargs or {}) - _to_diagram_element( - element, - lookup=lookup, - parent=None, - vertical=vertical, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - root_id = id(element) - # Convert the root if it hasn't been already - if root_id in lookup: - if not element.customName: - lookup[root_id].name = "" - lookup[root_id].mark_for_extraction(root_id, lookup, force=True) - - # Now that we're finished, we can convert from intermediate structures into Railroad elements - diags = list(lookup.diagrams.values()) - if len(diags) > 1: - # collapse out duplicate diags with the same name - seen = set() - deduped_diags = [] - for d in diags: - # don't extract SkipTo elements, they are uninformative as subdiagrams - if d.name == "...": - continue - if d.name is not None and d.name not in seen: - seen.add(d.name) - deduped_diags.append(d) - resolved = [resolve_partial(partial) for partial in deduped_diags] - else: - # special case - if just one diagram, always display it, even if - # it has no name - resolved = [resolve_partial(partial) for partial in diags] - return sorted(resolved, key=lambda diag: diag.index) - - -def _should_vertical( - specification: int, exprs: Iterable[pyparsing.ParserElement] -) -> bool: - """ - Returns true if we should return a vertical list of elements - """ - if specification is None: - return False - else: - return len(_visible_exprs(exprs)) >= specification - - -class ElementState: - """ - State recorded for an individual pyparsing Element - """ - - # Note: this should be a dataclass, but we have to support Python 3.5 - def __init__( - self, - element: pyparsing.ParserElement, - converted: EditablePartial, - parent: EditablePartial, - number: int, - name: str = None, - parent_index: typing.Optional[int] = None, - ): - #: The pyparsing element that this represents - self.element: pyparsing.ParserElement = element - #: The name of the element - self.name: typing.Optional[str] = name - #: The output Railroad element in an unconverted state - self.converted: EditablePartial = converted - #: The parent Railroad element, which we store so that we can extract this if it's duplicated - self.parent: EditablePartial = parent - #: The order in which we found this element, used for sorting diagrams if this is extracted into a diagram - self.number: int = number - #: The index of this inside its parent - self.parent_index: typing.Optional[int] = parent_index - #: If true, we should extract this out into a subdiagram - self.extract: bool = False - #: If true, all of this element's children have been filled out - self.complete: bool = False - - def mark_for_extraction( - self, el_id: int, state: "ConverterState", name: str = None, force: bool = False - ): - """ - Called when this instance has been seen twice, and thus should eventually be extracted into a sub-diagram - :param el_id: id of the element - :param state: element/diagram state tracker - :param name: name to use for this element's text - :param force: If true, force extraction now, regardless of the state of this. Only useful for extracting the - root element when we know we're finished - """ - self.extract = True - - # Set the name - if not self.name: - if name: - # Allow forcing a custom name - self.name = name - elif self.element.customName: - self.name = self.element.customName - else: - self.name = "" - - # Just because this is marked for extraction doesn't mean we can do it yet. We may have to wait for children - # to be added - # Also, if this is just a string literal etc, don't bother extracting it - if force or (self.complete and _worth_extracting(self.element)): - state.extract_into_diagram(el_id) - - -class ConverterState: - """ - Stores some state that persists between recursions into the element tree - """ - - def __init__(self, diagram_kwargs: typing.Optional[dict] = None): - #: A dictionary mapping ParserElements to state relating to them - self._element_diagram_states: Dict[int, ElementState] = {} - #: A dictionary mapping ParserElement IDs to subdiagrams generated from them - self.diagrams: Dict[int, EditablePartial[NamedDiagram]] = {} - #: The index of the next unnamed element - self.unnamed_index: int = 1 - #: The index of the next element. This is used for sorting - self.index: int = 0 - #: Shared kwargs that are used to customize the construction of diagrams - self.diagram_kwargs: dict = diagram_kwargs or {} - self.extracted_diagram_names: Set[str] = set() - - def __setitem__(self, key: int, value: ElementState): - self._element_diagram_states[key] = value - - def __getitem__(self, key: int) -> ElementState: - return self._element_diagram_states[key] - - def __delitem__(self, key: int): - del self._element_diagram_states[key] - - def __contains__(self, key: int): - return key in self._element_diagram_states - - def generate_unnamed(self) -> int: - """ - Generate a number used in the name of an otherwise unnamed diagram - """ - self.unnamed_index += 1 - return self.unnamed_index - - def generate_index(self) -> int: - """ - Generate a number used to index a diagram - """ - self.index += 1 - return self.index - - def extract_into_diagram(self, el_id: int): - """ - Used when we encounter the same token twice in the same tree. When this - happens, we replace all instances of that token with a terminal, and - create a new subdiagram for the token - """ - position = self[el_id] - - # Replace the original definition of this element with a regular block - if position.parent: - ret = EditablePartial.from_call(railroad.NonTerminal, text=position.name) - if "item" in position.parent.kwargs: - position.parent.kwargs["item"] = ret - elif "items" in position.parent.kwargs: - position.parent.kwargs["items"][position.parent_index] = ret - - # If the element we're extracting is a group, skip to its content but keep the title - if position.converted.func == railroad.Group: - content = position.converted.kwargs["item"] - else: - content = position.converted - - self.diagrams[el_id] = EditablePartial.from_call( - NamedDiagram, - name=position.name, - diagram=EditablePartial.from_call( - railroad.Diagram, content, **self.diagram_kwargs - ), - index=position.number, - ) - - del self[el_id] - - -def _worth_extracting(element: pyparsing.ParserElement) -> bool: - """ - Returns true if this element is worth having its own sub-diagram. Simply, if any of its children - themselves have children, then its complex enough to extract - """ - children = element.recurse() - return any(child.recurse() for child in children) - - -def _apply_diagram_item_enhancements(fn): - """ - decorator to ensure enhancements to a diagram item (such as results name annotations) - get applied on return from _to_diagram_element (we do this since there are several - returns in _to_diagram_element) - """ - - def _inner( - element: pyparsing.ParserElement, - parent: typing.Optional[EditablePartial], - lookup: ConverterState = None, - vertical: int = None, - index: int = 0, - name_hint: str = None, - show_results_names: bool = False, - show_groups: bool = False, - ) -> typing.Optional[EditablePartial]: - ret = fn( - element, - parent, - lookup, - vertical, - index, - name_hint, - show_results_names, - show_groups, - ) - - # apply annotation for results name, if present - if show_results_names and ret is not None: - element_results_name = element.resultsName - if element_results_name: - # add "*" to indicate if this is a "list all results" name - element_results_name += "" if element.modalResults else "*" - ret = EditablePartial.from_call( - railroad.Group, item=ret, label=element_results_name - ) - - return ret - - return _inner - - -def _visible_exprs(exprs: Iterable[pyparsing.ParserElement]): - non_diagramming_exprs = ( - pyparsing.ParseElementEnhance, - pyparsing.PositionToken, - pyparsing.And._ErrorStop, - ) - return [ - e - for e in exprs - if not (e.customName or e.resultsName or isinstance(e, non_diagramming_exprs)) - ] - - -@_apply_diagram_item_enhancements -def _to_diagram_element( - element: pyparsing.ParserElement, - parent: typing.Optional[EditablePartial], - lookup: ConverterState = None, - vertical: int = None, - index: int = 0, - name_hint: str = None, - show_results_names: bool = False, - show_groups: bool = False, -) -> typing.Optional[EditablePartial]: - """ - Recursively converts a PyParsing Element to a railroad Element - :param lookup: The shared converter state that keeps track of useful things - :param index: The index of this element within the parent - :param parent: The parent of this element in the output tree - :param vertical: Controls at what point we make a list of elements vertical. If this is an integer (the default), - it sets the threshold of the number of items before we go vertical. If True, always go vertical, if False, never - do so - :param name_hint: If provided, this will override the generated name - :param show_results_names: bool flag indicating whether to add annotations for results names - :returns: The converted version of the input element, but as a Partial that hasn't yet been constructed - :param show_groups: bool flag indicating whether to show groups using bounding box - """ - exprs = element.recurse() - name = name_hint or element.customName or element.__class__.__name__ - - # Python's id() is used to provide a unique identifier for elements - el_id = id(element) - - element_results_name = element.resultsName - - # Here we basically bypass processing certain wrapper elements if they contribute nothing to the diagram - if not element.customName: - if isinstance( - element, - ( - # pyparsing.TokenConverter, - # pyparsing.Forward, - pyparsing.Located, - ), - ): - # However, if this element has a useful custom name, and its child does not, we can pass it on to the child - if exprs: - if not exprs[0].customName: - propagated_name = name - else: - propagated_name = None - - return _to_diagram_element( - element.expr, - parent=parent, - lookup=lookup, - vertical=vertical, - index=index, - name_hint=propagated_name, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - # If the element isn't worth extracting, we always treat it as the first time we say it - if _worth_extracting(element): - if el_id in lookup: - # If we've seen this element exactly once before, we are only just now finding out that it's a duplicate, - # so we have to extract it into a new diagram. - looked_up = lookup[el_id] - looked_up.mark_for_extraction(el_id, lookup, name=name_hint) - ret = EditablePartial.from_call(railroad.NonTerminal, text=looked_up.name) - return ret - - elif el_id in lookup.diagrams: - # If we have seen the element at least twice before, and have already extracted it into a subdiagram, we - # just put in a marker element that refers to the sub-diagram - ret = EditablePartial.from_call( - railroad.NonTerminal, text=lookup.diagrams[el_id].kwargs["name"] - ) - return ret - - # Recursively convert child elements - # Here we find the most relevant Railroad element for matching pyparsing Element - # We use ``items=[]`` here to hold the place for where the child elements will go once created - if isinstance(element, pyparsing.And): - # detect And's created with ``expr*N`` notation - for these use a OneOrMore with a repeat - # (all will have the same name, and resultsName) - if not exprs: - return None - if len(set((e.name, e.resultsName) for e in exprs)) == 1: - ret = EditablePartial.from_call( - railroad.OneOrMore, item="", repeat=str(len(exprs)) - ) - elif _should_vertical(vertical, exprs): - ret = EditablePartial.from_call(railroad.Stack, items=[]) - else: - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - elif isinstance(element, (pyparsing.Or, pyparsing.MatchFirst)): - if not exprs: - return None - if _should_vertical(vertical, exprs): - ret = EditablePartial.from_call(railroad.Choice, 0, items=[]) - else: - ret = EditablePartial.from_call(railroad.HorizontalChoice, items=[]) - elif isinstance(element, pyparsing.Each): - if not exprs: - return None - ret = EditablePartial.from_call(EachItem, items=[]) - elif isinstance(element, pyparsing.NotAny): - ret = EditablePartial.from_call(AnnotatedItem, label="NOT", item="") - elif isinstance(element, pyparsing.FollowedBy): - ret = EditablePartial.from_call(AnnotatedItem, label="LOOKAHEAD", item="") - elif isinstance(element, pyparsing.PrecededBy): - ret = EditablePartial.from_call(AnnotatedItem, label="LOOKBEHIND", item="") - elif isinstance(element, pyparsing.Group): - if show_groups: - ret = EditablePartial.from_call(AnnotatedItem, label="", item="") - else: - ret = EditablePartial.from_call(railroad.Group, label="", item="") - elif isinstance(element, pyparsing.TokenConverter): - label = type(element).__name__.lower() - if label == "tokenconverter": - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - else: - ret = EditablePartial.from_call(AnnotatedItem, label=label, item="") - elif isinstance(element, pyparsing.Opt): - ret = EditablePartial.from_call(railroad.Optional, item="") - elif isinstance(element, pyparsing.OneOrMore): - ret = EditablePartial.from_call(railroad.OneOrMore, item="") - elif isinstance(element, pyparsing.ZeroOrMore): - ret = EditablePartial.from_call(railroad.ZeroOrMore, item="") - elif isinstance(element, pyparsing.Group): - ret = EditablePartial.from_call( - railroad.Group, item=None, label=element_results_name - ) - elif isinstance(element, pyparsing.Empty) and not element.customName: - # Skip unnamed "Empty" elements - ret = None - elif isinstance(element, pyparsing.ParseElementEnhance): - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - elif len(exprs) > 0 and not element_results_name: - ret = EditablePartial.from_call(railroad.Group, item="", label=name) - elif len(exprs) > 0: - ret = EditablePartial.from_call(railroad.Sequence, items=[]) - else: - terminal = EditablePartial.from_call(railroad.Terminal, element.defaultName) - ret = terminal - - if ret is None: - return - - # Indicate this element's position in the tree so we can extract it if necessary - lookup[el_id] = ElementState( - element=element, - converted=ret, - parent=parent, - parent_index=index, - number=lookup.generate_index(), - ) - if element.customName: - lookup[el_id].mark_for_extraction(el_id, lookup, element.customName) - - i = 0 - for expr in exprs: - # Add a placeholder index in case we have to extract the child before we even add it to the parent - if "items" in ret.kwargs: - ret.kwargs["items"].insert(i, None) - - item = _to_diagram_element( - expr, - parent=ret, - lookup=lookup, - vertical=vertical, - index=i, - show_results_names=show_results_names, - show_groups=show_groups, - ) - - # Some elements don't need to be shown in the diagram - if item is not None: - if "item" in ret.kwargs: - ret.kwargs["item"] = item - elif "items" in ret.kwargs: - # If we've already extracted the child, don't touch this index, since it's occupied by a nonterminal - ret.kwargs["items"][i] = item - i += 1 - elif "items" in ret.kwargs: - # If we're supposed to skip this element, remove it from the parent - del ret.kwargs["items"][i] - - # If all this items children are none, skip this item - if ret and ( - ("items" in ret.kwargs and len(ret.kwargs["items"]) == 0) - or ("item" in ret.kwargs and ret.kwargs["item"] is None) - ): - ret = EditablePartial.from_call(railroad.Terminal, name) - - # Mark this element as "complete", ie it has all of its children - if el_id in lookup: - lookup[el_id].complete = True - - if el_id in lookup and lookup[el_id].extract and lookup[el_id].complete: - lookup.extract_into_diagram(el_id) - if ret is not None: - ret = EditablePartial.from_call( - railroad.NonTerminal, text=lookup.diagrams[el_id].kwargs["name"] - ) - - return ret diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 5cef4b6181af90475242030f7a73b17db308cd2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16913 zcma)jTaX;rd0ux<&rHwk?Cb@LD{oDJ7YqgLk|HI_$PyBX3&|3-V2HI8jRcPdb9#4Y zFgKp=*~Knr6e!|%Q_Y|()6R6-=BPrDX)Od+>+o?4Z^huq znzNp{~+m@O}yW_Vq)e|Tws~MEcBqfiaWLC|gWG=`B$BtWQ z^{D!^Iuy9U(c_j{z+A36td88yRv%MG)iIPDL&sGum27J*iG&q?76tYM%i6yC?CblpA4QBNU?wF#o*8w#N1u9SesWbsZZU`Vm~X&zG_u|?gzw%m5Ln~`rG}w z4x8QeiWj?YHNz+_uGBk$S{?M;L7aa*=mxski1Vx4{ospr9lIBsjVSgm)Z6X)b+pJ_ z4ee5`q2Ihx{~gD&-h0|_uKC?wml9S+g8Q+wI`IwBkGe7InSZ*1ftq z%hmwHe{Z6mZPt3-=<)yJ{2wXc1#-VucJzoGD z`eA)7@OMX0k5;j_g1s$RVjnF1dQWXnt{LO8(BB&m{nvWhSIzpmu6O)qH_e7A9LuV? z={MT-Fns0YXam-DZ_q!vw>`@nFFepD*`$-_F>5mZV$_Vb93r?G$q4B5GlmE^*T-PwhL3@Q%5+1`QH;i0UXm=&qpP?(z?K8|*=#V@BB*BC z8{~>hg7X*6w#IH36cFc=U5K;It_p6(_G*JvGya!JUc#r439PEEtg54I@J*-ce#=_3 zRYtkDy=wMbmTOgWpuBACU8*-WKrfx0|0rm7VGu^Wj-Q^D-$a!k_54P!)9(Sl>gS}{ zS^sq&B8t0Fz1bx?*Ap~7>tE>xSM(QpIyk7>_s{wlHhRrQ;P=-2Xd?jL2A!ZAg~T7e z6CxRFs~K%bi6D#*3J=<7q?(O-#2KTFdgO!h{SJWkuLpjo9yK-sC7pM&UwQSdx2`oH zQbvC+a(wc5!eu0p)v_aJXy3Axeau?7hxR|S-?6@J?K-H*3?1d%v3E0(d&_ENhnb<( z%Bjp95lGlPcjX5h{6jl-xl3R+Spl(t8I2#W7fsVae4Z9cB zYHTItY)Oxzs!S+fCrZ3cLLSnVrht@~ErHx)E zSXv)68@ksBqNura<1^tB$f4fHrk(BgRJgPmbT^mU&Ff43?P#OdeR1)H=a)i^e-`}a zMtwa9m-@~AQVq>iPoq)7l!4kp=}Rfpi~Vi=DE8oOZfFk43AaX;$UWF$NkECyVpK+G_@!hw35+}FwcXDb6`Or3zR*c)|-|-Uu7R<3)%Q9 zctQusNqgtW#EQp`QIomora>~#DbK|-msB&N&hU0!N6mVB=bLg$uQtG!+RYnaeE!;?+lYF- zcDM*~V4E}k^+Dt}aKhj{0s04O(SNh+_rS%pztz(!JOc*m>!7cLP*_~ukD$32&b3hw zyU#}cc0k@0bY(v9Q*7m+!J(ueb~){0?AG;q80T(m@wbs;F?L888V~IPo{&g2w1-yB z0@_$Ln@p?bDC;WN)XIk$y@-0f#N>G-71veM;6GK7TK~7QZU}Fa& zhelJ@LzyzT*$*1gqJJ5}Jh)jGqTjc;#WmgQ)Ck+@%evm6+HuBz;f()c<#fe=6|x(;`b+d7}yIsQsW>aTjFO5i=<%U#(BmYE3^(@_VWyR1&8DRv2Rb`<^DMb%zifJBhjtSP{`>Z~X+GFH z%cC8=v{`Qtz<1?D6EX$=RiHs)r4)k}2kmIorQ!)e#BQSpX-2Y$^UZF^Gmp#bL9{l2 zZ2_V~fgDSm->hq)#!SE0Pf2J*Q&kUjHEBJ$Z$+O&pHQ@ zlxekzg?l4iZzGQW0T`S6NFWDCVvBljSTimm4 z>&sTx-eOsPH;>d)?hQvT5A!MuBmuhIEg+B9cZ>HdmH*ug`(WOwR!J4W6>a7Ht}{ZR z;?6%2e0aSHmB+7x<3pi@JYNAOtBXeIIpbpw)c|^H-KT{L(f`Kk7v2H~p;2kL&So=& zF4GJl_p$d-m(#71(a!-P>z&XyO#EE(OYIu+qYoPiRw$WSPtX*Kh8V8Wbp>o83_+J9 zAx#qA$@`~uuNPHftCEScVjIP71p5Zkcyk?GoSS81x%Vgs@yykLm(N>@<63F;v{faFJ*j&!+lwE$Y>1ApJ5*Lm!Eo^&o#7NFfKm zN1$%b+s^%*Q?xz%n0>_2@34P9A$|Q4-X>TPw=RQ+`xt%=3B-;CY;^Pj3;|#u#E(_W zNFJI4@?c80z#FAq7VUfm1?)C@U9@h2{YZHZ<%?onq5N+CUQ#zCPtERJl_Pv7Xbj-m z*bLg+;6`Duy-Dp5CQ`c%RzpDsgnQd)7PN(c23s(2f=%cWiP8{kLrMiQ+Qgz9tb_dZ zDxSYwK(Y=nuH|-Z%G6u-cb#{gt7ea3EzBg7*OEP|II*+%d~Dy`e+b28k^v3B^B;0x z&azleV9Lj@wO1Pw2uENWiYqm& zD6C(?Pn@|CZ0o;++=I}O-wAYogzAvco%pHHjoQPvRBVETLm+-55U!@Fn(iq^!cp~S zS@r}H&>ex_2ZHpui*iw4is0iVQI5($%z4{&r2Yq7eVk8h+_;=Dgqq<2v4_)*V9&PW z`EaARRWq_F6hkSDr=(1*->|_gO#ev2 zCudv4=v(Bo;E52cpCGP>Pbznq9p;V`%jFklF6vcQfgsn3kh84b-8<>p^<@_`V#y|2Z5oX zJ!YQr;zfUz`Xl~R?b88p2zs9a^M#78xBETN9+_~`-jExuIZ-x^8oE_CZR(9i5SoGB zN&I_e?&|>zFMtqn9%%K16f2NW?0KoCje z{UI6911!+(YNcTBZKde=IAR$&yAjL?$CSGZf}pn@gNys z{_8NixRS*A13iBO$_+qB=*6eXIc8@c086vmXb*VEiMcR-y2(k5QQJ?O)6nDIYW~@j~*(v-3WTywRu`i?If3mWQ zWakM;+*JDhOxFHWX4LB(QUH+T6kj>j|6+zyO~6jM%twR-T>#)uc+oE)3p<1=N5!r} z$AtrGa?sdYZr3~4RsH<`Mx&4*<*c2@96D|^Hs6kN>AEL&Ql2ppI zou-P54e^XpBNQztKGdn}8#SCq4LVn1^clJF8itN@q7;StIA1a$!V;OfQkvFJoC|y8 z29=Vgt}QsQ|G*V0s(C7SwWg|O2~kM5V9B~{um>M zpFvVyaG*Tx{mXsi6+DM#{eoT2K!!Okl&PZQ;Jrj;>-|}~?9SSH6P@E}nl{Zf@xk`G z&@XTHbvR)J@B}h=F5n62JQy0aKc~RJBPd(cNvK-g$bz9~b}kDoydwr0_>~@jZLaxS z@T?hrl9+Dw5hEF?=c(sd23WZaomY0dT!S9ogf9mt1K?1+1t|1QCi`$_wq_=QtJBEg z|3jdOe_qaoRi<~4B?V6W(E|P)o)FQ@2^UqtDL85#PAIpPOpEySfu#z8I!n%KIM7uluB(}0C^ zG?G1THWf^eF_D<`HhUxp7Z*kXNe5U#oHGpF;C0DxAo!&bW@yk=p8heJ;cHn%9XcmzUi?rF4$3o#&wbQGCImz8GWj|Z=u3vAVvh=5 zJ3#m@Z+sC#F#Ed5FzmPQbj29{Ym|#Mn=9s=y?^jq93J1-kpt^8P`VA8gNL3BLAN;W z8j=YGjLO&u$G?gfSs}m zbLZ09G-?1#8O0!Q#25mjdyI`u34YGVaey&^Dnz7~kLR`y{=W8${Lgp!fv3Emu9$#pcVE5)56^&Gp7THX+P3vd~)P;VdezD zsBT~iFsx^x@U0=76Q(gJE^k$2_X_a$eV~akpaqHPy3@aiB%Z6mR~&7O(5g2klU>pI_1jHDMQc{!>SS2W#VhMVHedDc^ zyv?XtyiMZ<3G3$6Jl@L5+aa}pw;6R<>W-+Rc$*bQe_UA2&O3tNSLv1p#UhlKk`05M zaN&ipu}S377D*h|3!Msx8i4tOZpMgG><}4jMKp{DWHb-(0=Huk32pM4Nf8T09&S0L zaFq3Dq|S}9x7a2}CSJ*`hz=^AD1`Qo))E>WsZK&&q47aY54xmoWkibTaz^LrW8&)3 z1l1FT1|BkF{X%R%j(XEluwxHJ9!15^5xr>$r%b)*lIIYMol`GQr~(m+hSs4*)f4 z_Mi`yefS7KsegVb{&~@c^|w(8eO@+4KzR@f_~Z-}Zvu+H|LMI;>yDX&{^?<_IEEt0Va%mysyZ>Zw5t@iDS5#UiDJ zoWujS;1z~dD1?w&@}r@Im|&FreQqgr^!@ufyUv?Wn5>oz@eU7`46W?u?42j}t#W_s zhptrrI)=ci_U;%xWL3ua4sK$x`;`O32{s-EI$|gZ=%P`6nMd=RXuR{-!+@4{`Wt97 zfg9AhsDcV%{2OH88{eI~M7h#|q<M{EvryB@!QJ&3^fAdRXW8n` zsN@YbXGS%db8(5 zC%s#X{+CkyZ#3S9_~a3E#&8Haw{dw)?#HD1VWRs$keHE;vjSR`?lilMXCn|W8q8c^ zAaVy=R0@-0Pt>vmxKV4^=$COM=5E0g$bngso0^crEOINAS)=AN#w1ZGeH6KPYNgj* zO&~B`o@WEm=S9({c#5-fwL(uLU(H`M&MYGu#ATrR0$x2_Xn|miGq4}yJgJ_3 zl}TQye+m7*Mn3f%GF~p1nTL*4#xoC7xJ*+RW-#uPz_IJz$M1bNQ~Ib_*g3TicMnq6 zgj-kU4vgJ>fax@Y8pg>?d8WU`gvyWp2TZ=pG=#6!hiYsytJ6$1rAzf@CZ%OH;?dz#kgz)EkME?HXX4Hbih*oBRTH< zmioAkPH(3uvoJ+A>FR1iS)mhf%&J)Q<>t&bg79RI+f>Netg+E-D>%Po5-2hqT!Nxo z5hEdZpH!Y9b->bPdoc}ff^d3+bzBtdrAogHaNsgStS~%=% zwT<|Rsoa{`px33nST;{;=(d{8+;7sKj5~L9XszIv38z%K%pP=q@`Uj^grd$ z8EgUavyV&thQJf*b7+PvI`qHa6QodOEX?!>aW3QluKBN}Mf^)7sy z{w492V{no(>1_9K$|+n9H^zBSR(e!NuB5a7Kj065kK+JNO59=KRy( zbc$*(@D33j@H?OffPoVgHZYtz^|lOa#*r(A2MlATUJ-5fvT;oW*g&nA)R~Zh#RUrQ z+6K*=>nvc@l>+0D*!Ss;eK7c z{f^vp2u+0RWi%6xtN#%@6d$@y{rhaWx59snR~V$m2{jR+LNw7?>l$1on#MV(_z?EL zN=$tU1x|6#&1iD&4@)KRQhQ#UjJf-+yYqaF2fjTr9YlK^$EH2vF~fhDgJp^-td+}` zD+Ns+roYK#kE@D|AwM)+mDZ^Kdq_ZNf5<#Th6ZkiHpT9Y{htNLuW(r}q5b%>+#kX~ zz3&}hoH}{uM~>(G&?}Vx%6(G*OLUwdSgwG?%13rfZll5z#Ji_0cP;bFmJlHMu$P9L zVR=mq!o_Ft2(~?gjD&t?NUtp`M0gbrDTh~FKd^2&d>;!2LqvDbL;nGjYe+s!xSbt* zXjcz+d)@R*pdPFnXX@Tzi!=XExh3Q}Im^L`IzMq?p?kE_?cDvHlar3vy>r})6hmlp z3GpFuBqV->ONN!eyO0R+RVqSp=2hG`DAwdo0u1Cn6y`mj?jLgzL_)odg#NOS`iBds zfNwu3W*sN@vD6tYL};6sK0&-(N)gWmJmDHPHj#(kFxxMYG$jQK1!3}HfQ`T>?kw$2 zu`YZW0aGi=x4bo8D0q43@!{1f)Pb~jOI=viyCnottyYounxK2S!xC8nNE>7gof2c} z8^hv|cb~q97Dect)5GZ&0;YI_SNTo`f!XO+IhtwBqI^zeq3f21<*OE3wC2(8#;6|e z9HDhc!L_m1GJ$geQ2yc23kTwvKO7z5r!WY{dPe3W*js=G{M}@YtJNrC}bUJe{;Ej#~Yxl+3iAK}kCEzfO8S zD?L{u2!dO7D|5F34QysOqvmc9qR%HiM|;@)4Kq4gq$Ax)M#3jO=%JDxpFsUQPole< z)E|}lD5=MZCiR`9{*2V$PU_E$>aQjBW{tm|)IS3Y3lR+2#kZ0cXJv%nBRzb_4u22$ zUhbYx>K3K$Pmsd5drR*Cnp#T1G3O!Q{zsEGa`d0}JE+xnRZ%u*J%tJ=lqNKZ&bh3wN@lGTLZ>*wL`?NHM&ifE>#1f!>t8 zJ4dRxwz4~~4iC$%Lz@=b9%D}7bFsTG4(D)<4Y#sE+w&NolszYOedJDl_t5YVVBqL) zsH3CapBf&L{zsQF*1P$!aW5w|7*S+*S8@CMO7QWCk3mGfjQojdV8A^f+j^GB&d4U_dZlfN@a*7 z3}Hg*=WyMFu|%kZxD1@!#L(kj)f++3XW$WW3ECn_5CA%5cRd^*Py7;QILVqw0yNJ= zHpmJ#^ty~)W|B`8yG<7Rd^UMbe!W!xJ>$fiq8T_%Mt zANIx027w+W;{_s{}l&4IZ943cMr*N=!l7VjXQqN z9ALtY>6WR1ZTylK(H&a^mGRa6~8Uh1obx2|0I{Ht$Vdi7$p z$n0yE-gtB6Vzn&Zvh-lJrjlr^uB0manYHslj`gnqpMrV z$89b@_mc0e;@nCvdbPVPpZ3JX%edUy+X~cc+i~%2xKskr?rYm(fW~D}>cPs$*YGKv z%S*2KgbwX>oI%7;{9|#k8t9(+oG{K_>hy7i{dZkbzw<;>=uf&T^zBj#xCr@w)&x0^3Z;k z7fo?h$A#Y#wsfYHbrI=3fwEbodc9MT1+j5l6f zokuRM;V&-(dH0V1HkM;V=`{`9n^RGc!t)iPSR z@8i0xs52DX17)Uq@H5Q-)2%`a*lOJ zOkFL#+g=NM1Kz+}VGD69(2HB0N?g)!qMdO$OtZlp6S`Z3ID{ySGlu>-bLaS*%zc&# z{S$J>N{G>5a*JiRnb3V;%va*g7%rXUD>)@D!kMos&jX*VkPc%;{5|`$T`Ka|&3LDH zUXR-D$Byf{^O^a%g~GAt=8rn_iFfA52RSoxx#CC8IkdR%G0yH3KQ5Qb=NDGI!onw< RX}HKo=lnNuhRpue{|93emL~uJ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py deleted file mode 100644 index 12219f1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py +++ /dev/null @@ -1,299 +0,0 @@ -# exceptions.py - -import re -import sys -import typing - -from .util import ( - col, - line, - lineno, - _collapse_string_to_ranges, - replaced_by_pep8, -) -from .unicode import pyparsing_unicode as ppu - - -class ExceptionWordUnicode(ppu.Latin1, ppu.LatinA, ppu.LatinB, ppu.Greek, ppu.Cyrillic): - pass - - -_extract_alphanums = _collapse_string_to_ranges(ExceptionWordUnicode.alphanums) -_exception_word_extractor = re.compile("([" + _extract_alphanums + "]{1,16})|.") - - -class ParseBaseException(Exception): - """base exception class for all parsing runtime exceptions""" - - loc: int - msg: str - pstr: str - parser_element: typing.Any # "ParserElement" - args: typing.Tuple[str, int, typing.Optional[str]] - - __slots__ = ( - "loc", - "msg", - "pstr", - "parser_element", - "args", - ) - - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( - self, - pstr: str, - loc: int = 0, - msg: typing.Optional[str] = None, - elem=None, - ): - self.loc = loc - if msg is None: - self.msg = pstr - self.pstr = "" - else: - self.msg = msg - self.pstr = pstr - self.parser_element = elem - self.args = (pstr, loc, msg) - - @staticmethod - def explain_exception(exc, depth=16): - """ - Method to take an exception and translate the Python internal traceback into a list - of the pyparsing expressions that caused the exception to be raised. - - Parameters: - - - exc - exception raised during parsing (need not be a ParseException, in support - of Python exceptions that might be raised in a parse action) - - depth (default=16) - number of levels back in the stack trace to list expression - and function names; if None, the full stack trace names will be listed; if 0, only - the failing input line, marker, and exception string will be shown - - Returns a multi-line string listing the ParserElements and/or function names in the - exception's stack trace. - """ - import inspect - from .core import ParserElement - - if depth is None: - depth = sys.getrecursionlimit() - ret = [] - if isinstance(exc, ParseBaseException): - ret.append(exc.line) - ret.append(" " * (exc.column - 1) + "^") - ret.append(f"{type(exc).__name__}: {exc}") - - if depth > 0: - callers = inspect.getinnerframes(exc.__traceback__, context=depth) - seen = set() - for i, ff in enumerate(callers[-depth:]): - frm = ff[0] - - f_self = frm.f_locals.get("self", None) - if isinstance(f_self, ParserElement): - if not frm.f_code.co_name.startswith( - ("parseImpl", "_parseNoCache") - ): - continue - if id(f_self) in seen: - continue - seen.add(id(f_self)) - - self_type = type(f_self) - ret.append( - f"{self_type.__module__}.{self_type.__name__} - {f_self}" - ) - - elif f_self is not None: - self_type = type(f_self) - ret.append(f"{self_type.__module__}.{self_type.__name__}") - - else: - code = frm.f_code - if code.co_name in ("wrapper", ""): - continue - - ret.append(code.co_name) - - depth -= 1 - if not depth: - break - - return "\n".join(ret) - - @classmethod - def _from_exception(cls, pe): - """ - internal factory method to simplify creating one type of ParseException - from another - avoids having __init__ signature conflicts among subclasses - """ - return cls(pe.pstr, pe.loc, pe.msg, pe.parser_element) - - @property - def line(self) -> str: - """ - Return the line of text where the exception occurred. - """ - return line(self.loc, self.pstr) - - @property - def lineno(self) -> int: - """ - Return the 1-based line number of text where the exception occurred. - """ - return lineno(self.loc, self.pstr) - - @property - def col(self) -> int: - """ - Return the 1-based column on the line of text where the exception occurred. - """ - return col(self.loc, self.pstr) - - @property - def column(self) -> int: - """ - Return the 1-based column on the line of text where the exception occurred. - """ - return col(self.loc, self.pstr) - - # pre-PEP8 compatibility - @property - def parserElement(self): - return self.parser_element - - @parserElement.setter - def parserElement(self, elem): - self.parser_element = elem - - def __str__(self) -> str: - if self.pstr: - if self.loc >= len(self.pstr): - foundstr = ", found end of text" - else: - # pull out next word at error location - found_match = _exception_word_extractor.match(self.pstr, self.loc) - if found_match is not None: - found = found_match.group(0) - else: - found = self.pstr[self.loc : self.loc + 1] - foundstr = (", found %r" % found).replace(r"\\", "\\") - else: - foundstr = "" - return f"{self.msg}{foundstr} (at char {self.loc}), (line:{self.lineno}, col:{self.column})" - - def __repr__(self): - return str(self) - - def mark_input_line( - self, marker_string: typing.Optional[str] = None, *, markerString: str = ">!<" - ) -> str: - """ - Extracts the exception line from the input string, and marks - the location of the exception with a special symbol. - """ - markerString = marker_string if marker_string is not None else markerString - line_str = self.line - line_column = self.column - 1 - if markerString: - line_str = "".join( - (line_str[:line_column], markerString, line_str[line_column:]) - ) - return line_str.strip() - - def explain(self, depth=16) -> str: - """ - Method to translate the Python internal traceback into a list - of the pyparsing expressions that caused the exception to be raised. - - Parameters: - - - depth (default=16) - number of levels back in the stack trace to list expression - and function names; if None, the full stack trace names will be listed; if 0, only - the failing input line, marker, and exception string will be shown - - Returns a multi-line string listing the ParserElements and/or function names in the - exception's stack trace. - - Example:: - - expr = pp.Word(pp.nums) * 3 - try: - expr.parse_string("123 456 A789") - except pp.ParseException as pe: - print(pe.explain(depth=0)) - - prints:: - - 123 456 A789 - ^ - ParseException: Expected W:(0-9), found 'A' (at char 8), (line:1, col:9) - - Note: the diagnostic output will include string representations of the expressions - that failed to parse. These representations will be more helpful if you use `set_name` to - give identifiable names to your expressions. Otherwise they will use the default string - forms, which may be cryptic to read. - - Note: pyparsing's default truncation of exception tracebacks may also truncate the - stack of expressions that are displayed in the ``explain`` output. To get the full listing - of parser expressions, you may have to set ``ParserElement.verbose_stacktrace = True`` - """ - return self.explain_exception(self, depth) - - # fmt: off - @replaced_by_pep8(mark_input_line) - def markInputline(self): ... - # fmt: on - - -class ParseException(ParseBaseException): - """ - Exception thrown when a parse expression doesn't match the input string - - Example:: - - try: - Word(nums).set_name("integer").parse_string("ABC") - except ParseException as pe: - print(pe) - print("column: {}".format(pe.column)) - - prints:: - - Expected integer (at char 0), (line:1, col:1) - column: 1 - - """ - - -class ParseFatalException(ParseBaseException): - """ - User-throwable exception thrown when inconsistent parse content - is found; stops all parsing immediately - """ - - -class ParseSyntaxException(ParseFatalException): - """ - Just like :class:`ParseFatalException`, but thrown internally - when an :class:`ErrorStop` ('-' operator) indicates - that parsing is to stop immediately because an unbacktrackable - syntax error has been found. - """ - - -class RecursiveGrammarException(Exception): - """ - Exception thrown by :class:`ParserElement.validate` if the - grammar could be left-recursive; parser may need to enable - left recursion using :class:`ParserElement.enable_left_recursion` - """ - - def __init__(self, parseElementList): - self.parseElementTrace = parseElementList - - def __str__(self) -> str: - return f"RecursiveGrammarException: {self.parseElementTrace}" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py deleted file mode 100644 index 018f0d6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py +++ /dev/null @@ -1,1100 +0,0 @@ -# helpers.py -import html.entities -import re -import sys -import typing - -from . import __diag__ -from .core import * -from .util import ( - _bslash, - _flatten, - _escape_regex_range_chars, - replaced_by_pep8, -) - - -# -# global helpers -# -def counted_array( - expr: ParserElement, - int_expr: typing.Optional[ParserElement] = None, - *, - intExpr: typing.Optional[ParserElement] = None, -) -> ParserElement: - """Helper to define a counted list of expressions. - - This helper defines a pattern of the form:: - - integer expr expr expr... - - where the leading integer tells how many expr expressions follow. - The matched tokens returns the array of expr tokens as a list - the - leading count token is suppressed. - - If ``int_expr`` is specified, it should be a pyparsing expression - that produces an integer value. - - Example:: - - counted_array(Word(alphas)).parse_string('2 ab cd ef') # -> ['ab', 'cd'] - - # in this parser, the leading integer value is given in binary, - # '10' indicating that 2 values are in the array - binary_constant = Word('01').set_parse_action(lambda t: int(t[0], 2)) - counted_array(Word(alphas), int_expr=binary_constant).parse_string('10 ab cd ef') # -> ['ab', 'cd'] - - # if other fields must be parsed after the count but before the - # list items, give the fields results names and they will - # be preserved in the returned ParseResults: - count_with_metadata = integer + Word(alphas)("type") - typed_array = counted_array(Word(alphanums), int_expr=count_with_metadata)("items") - result = typed_array.parse_string("3 bool True True False") - print(result.dump()) - - # prints - # ['True', 'True', 'False'] - # - items: ['True', 'True', 'False'] - # - type: 'bool' - """ - intExpr = intExpr or int_expr - array_expr = Forward() - - def count_field_parse_action(s, l, t): - nonlocal array_expr - n = t[0] - array_expr <<= (expr * n) if n else Empty() - # clear list contents, but keep any named results - del t[:] - - if intExpr is None: - intExpr = Word(nums).set_parse_action(lambda t: int(t[0])) - else: - intExpr = intExpr.copy() - intExpr.set_name("arrayLen") - intExpr.add_parse_action(count_field_parse_action, call_during_try=True) - return (intExpr + array_expr).set_name("(len) " + str(expr) + "...") - - -def match_previous_literal(expr: ParserElement) -> ParserElement: - """Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks for - a 'repeat' of a previous expression. For example:: - - first = Word(nums) - second = match_previous_literal(first) - match_expr = first + ":" + second - - will match ``"1:1"``, but not ``"1:2"``. Because this - matches a previous literal, will also match the leading - ``"1:1"`` in ``"1:10"``. If this is not desired, use - :class:`match_previous_expr`. Do *not* use with packrat parsing - enabled. - """ - rep = Forward() - - def copy_token_to_repeater(s, l, t): - if t: - if len(t) == 1: - rep << t[0] - else: - # flatten t tokens - tflat = _flatten(t.as_list()) - rep << And(Literal(tt) for tt in tflat) - else: - rep << Empty() - - expr.add_parse_action(copy_token_to_repeater, callDuringTry=True) - rep.set_name("(prev) " + str(expr)) - return rep - - -def match_previous_expr(expr: ParserElement) -> ParserElement: - """Helper to define an expression that is indirectly defined from - the tokens matched in a previous expression, that is, it looks for - a 'repeat' of a previous expression. For example:: - - first = Word(nums) - second = match_previous_expr(first) - match_expr = first + ":" + second - - will match ``"1:1"``, but not ``"1:2"``. Because this - matches by expressions, will *not* match the leading ``"1:1"`` - in ``"1:10"``; the expressions are evaluated first, and then - compared, so ``"1"`` is compared with ``"10"``. Do *not* use - with packrat parsing enabled. - """ - rep = Forward() - e2 = expr.copy() - rep <<= e2 - - def copy_token_to_repeater(s, l, t): - matchTokens = _flatten(t.as_list()) - - def must_match_these_tokens(s, l, t): - theseTokens = _flatten(t.as_list()) - if theseTokens != matchTokens: - raise ParseException( - s, l, f"Expected {matchTokens}, found{theseTokens}" - ) - - rep.set_parse_action(must_match_these_tokens, callDuringTry=True) - - expr.add_parse_action(copy_token_to_repeater, callDuringTry=True) - rep.set_name("(prev) " + str(expr)) - return rep - - -def one_of( - strs: Union[typing.Iterable[str], str], - caseless: bool = False, - use_regex: bool = True, - as_keyword: bool = False, - *, - useRegex: bool = True, - asKeyword: bool = False, -) -> ParserElement: - """Helper to quickly define a set of alternative :class:`Literal` s, - and makes sure to do longest-first testing when there is a conflict, - regardless of the input order, but returns - a :class:`MatchFirst` for best performance. - - Parameters: - - - ``strs`` - a string of space-delimited literals, or a collection of - string literals - - ``caseless`` - treat all literals as caseless - (default= ``False``) - - ``use_regex`` - as an optimization, will - generate a :class:`Regex` object; otherwise, will generate - a :class:`MatchFirst` object (if ``caseless=True`` or ``as_keyword=True``, or if - creating a :class:`Regex` raises an exception) - (default= ``True``) - - ``as_keyword`` - enforce :class:`Keyword`-style matching on the - generated expressions - (default= ``False``) - - ``asKeyword`` and ``useRegex`` are retained for pre-PEP8 compatibility, - but will be removed in a future release - - Example:: - - comp_oper = one_of("< = > <= >= !=") - var = Word(alphas) - number = Word(nums) - term = var | number - comparison_expr = term + comp_oper + term - print(comparison_expr.search_string("B = 12 AA=23 B<=AA AA>12")) - - prints:: - - [['B', '=', '12'], ['AA', '=', '23'], ['B', '<=', 'AA'], ['AA', '>', '12']] - """ - asKeyword = asKeyword or as_keyword - useRegex = useRegex and use_regex - - if ( - isinstance(caseless, str_type) - and __diag__.warn_on_multiple_string_args_to_oneof - ): - warnings.warn( - "More than one string argument passed to one_of, pass" - " choices as a list or space-delimited string", - stacklevel=2, - ) - - if caseless: - isequal = lambda a, b: a.upper() == b.upper() - masks = lambda a, b: b.upper().startswith(a.upper()) - parseElementClass = CaselessKeyword if asKeyword else CaselessLiteral - else: - isequal = lambda a, b: a == b - masks = lambda a, b: b.startswith(a) - parseElementClass = Keyword if asKeyword else Literal - - symbols: List[str] = [] - if isinstance(strs, str_type): - strs = typing.cast(str, strs) - symbols = strs.split() - elif isinstance(strs, Iterable): - symbols = list(strs) - else: - raise TypeError("Invalid argument to one_of, expected string or iterable") - if not symbols: - return NoMatch() - - # reorder given symbols to take care to avoid masking longer choices with shorter ones - # (but only if the given symbols are not just single characters) - if any(len(sym) > 1 for sym in symbols): - i = 0 - while i < len(symbols) - 1: - cur = symbols[i] - for j, other in enumerate(symbols[i + 1 :]): - if isequal(other, cur): - del symbols[i + j + 1] - break - elif masks(cur, other): - del symbols[i + j + 1] - symbols.insert(i, other) - break - else: - i += 1 - - if useRegex: - re_flags: int = re.IGNORECASE if caseless else 0 - - try: - if all(len(sym) == 1 for sym in symbols): - # symbols are just single characters, create range regex pattern - patt = f"[{''.join(_escape_regex_range_chars(sym) for sym in symbols)}]" - else: - patt = "|".join(re.escape(sym) for sym in symbols) - - # wrap with \b word break markers if defining as keywords - if asKeyword: - patt = rf"\b(?:{patt})\b" - - ret = Regex(patt, flags=re_flags).set_name(" | ".join(symbols)) - - if caseless: - # add parse action to return symbols as specified, not in random - # casing as found in input string - symbol_map = {sym.lower(): sym for sym in symbols} - ret.add_parse_action(lambda s, l, t: symbol_map[t[0].lower()]) - - return ret - - except re.error: - warnings.warn( - "Exception creating Regex for one_of, building MatchFirst", stacklevel=2 - ) - - # last resort, just use MatchFirst - return MatchFirst(parseElementClass(sym) for sym in symbols).set_name( - " | ".join(symbols) - ) - - -def dict_of(key: ParserElement, value: ParserElement) -> ParserElement: - """Helper to easily and clearly define a dictionary by specifying - the respective patterns for the key and value. Takes care of - defining the :class:`Dict`, :class:`ZeroOrMore`, and - :class:`Group` tokens in the proper order. The key pattern - can include delimiting markers or punctuation, as long as they are - suppressed, thereby leaving the significant key text. The value - pattern can include named results, so that the :class:`Dict` results - can include named token fields. - - Example:: - - text = "shape: SQUARE posn: upper left color: light blue texture: burlap" - attr_expr = (label + Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join)) - print(attr_expr[1, ...].parse_string(text).dump()) - - attr_label = label - attr_value = Suppress(':') + OneOrMore(data_word, stop_on=label).set_parse_action(' '.join) - - # similar to Dict, but simpler call format - result = dict_of(attr_label, attr_value).parse_string(text) - print(result.dump()) - print(result['shape']) - print(result.shape) # object attribute access works too - print(result.as_dict()) - - prints:: - - [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']] - - color: 'light blue' - - posn: 'upper left' - - shape: 'SQUARE' - - texture: 'burlap' - SQUARE - SQUARE - {'color': 'light blue', 'shape': 'SQUARE', 'posn': 'upper left', 'texture': 'burlap'} - """ - return Dict(OneOrMore(Group(key + value))) - - -def original_text_for( - expr: ParserElement, as_string: bool = True, *, asString: bool = True -) -> ParserElement: - """Helper to return the original, untokenized text for a given - expression. Useful to restore the parsed fields of an HTML start - tag into the raw tag text itself, or to revert separate tokens with - intervening whitespace back to the original matching input text. By - default, returns a string containing the original parsed text. - - If the optional ``as_string`` argument is passed as - ``False``, then the return value is - a :class:`ParseResults` containing any results names that - were originally matched, and a single token containing the original - matched text from the input string. So if the expression passed to - :class:`original_text_for` contains expressions with defined - results names, you must set ``as_string`` to ``False`` if you - want to preserve those results name values. - - The ``asString`` pre-PEP8 argument is retained for compatibility, - but will be removed in a future release. - - Example:: - - src = "this is test bold text normal text " - for tag in ("b", "i"): - opener, closer = make_html_tags(tag) - patt = original_text_for(opener + ... + closer) - print(patt.search_string(src)[0]) - - prints:: - - [' bold text '] - ['text'] - """ - asString = asString and as_string - - locMarker = Empty().set_parse_action(lambda s, loc, t: loc) - endlocMarker = locMarker.copy() - endlocMarker.callPreparse = False - matchExpr = locMarker("_original_start") + expr + endlocMarker("_original_end") - if asString: - extractText = lambda s, l, t: s[t._original_start : t._original_end] - else: - - def extractText(s, l, t): - t[:] = [s[t.pop("_original_start") : t.pop("_original_end")]] - - matchExpr.set_parse_action(extractText) - matchExpr.ignoreExprs = expr.ignoreExprs - matchExpr.suppress_warning(Diagnostics.warn_ungrouped_named_tokens_in_collection) - return matchExpr - - -def ungroup(expr: ParserElement) -> ParserElement: - """Helper to undo pyparsing's default grouping of And expressions, - even if all but one are non-empty. - """ - return TokenConverter(expr).add_parse_action(lambda t: t[0]) - - -def locatedExpr(expr: ParserElement) -> ParserElement: - """ - (DEPRECATED - future code should use the :class:`Located` class) - Helper to decorate a returned token with its starting and ending - locations in the input string. - - This helper adds the following results names: - - - ``locn_start`` - location where matched expression begins - - ``locn_end`` - location where matched expression ends - - ``value`` - the actual parsed results - - Be careful if the input text contains ```` characters, you - may want to call :class:`ParserElement.parse_with_tabs` - - Example:: - - wd = Word(alphas) - for match in locatedExpr(wd).search_string("ljsdf123lksdjjf123lkkjj1222"): - print(match) - - prints:: - - [[0, 'ljsdf', 5]] - [[8, 'lksdjjf', 15]] - [[18, 'lkkjj', 23]] - """ - locator = Empty().set_parse_action(lambda ss, ll, tt: ll) - return Group( - locator("locn_start") - + expr("value") - + locator.copy().leaveWhitespace()("locn_end") - ) - - -def nested_expr( - opener: Union[str, ParserElement] = "(", - closer: Union[str, ParserElement] = ")", - content: typing.Optional[ParserElement] = None, - ignore_expr: ParserElement = quoted_string(), - *, - ignoreExpr: ParserElement = quoted_string(), -) -> ParserElement: - """Helper method for defining nested lists enclosed in opening and - closing delimiters (``"("`` and ``")"`` are the default). - - Parameters: - - - ``opener`` - opening character for a nested list - (default= ``"("``); can also be a pyparsing expression - - ``closer`` - closing character for a nested list - (default= ``")"``); can also be a pyparsing expression - - ``content`` - expression for items within the nested lists - (default= ``None``) - - ``ignore_expr`` - expression for ignoring opening and closing delimiters - (default= :class:`quoted_string`) - - ``ignoreExpr`` - this pre-PEP8 argument is retained for compatibility - but will be removed in a future release - - If an expression is not provided for the content argument, the - nested expression will capture all whitespace-delimited content - between delimiters as a list of separate values. - - Use the ``ignore_expr`` argument to define expressions that may - contain opening or closing characters that should not be treated as - opening or closing characters for nesting, such as quoted_string or - a comment expression. Specify multiple expressions using an - :class:`Or` or :class:`MatchFirst`. The default is - :class:`quoted_string`, but if no expressions are to be ignored, then - pass ``None`` for this argument. - - Example:: - - data_type = one_of("void int short long char float double") - decl_data_type = Combine(data_type + Opt(Word('*'))) - ident = Word(alphas+'_', alphanums+'_') - number = pyparsing_common.number - arg = Group(decl_data_type + ident) - LPAR, RPAR = map(Suppress, "()") - - code_body = nested_expr('{', '}', ignore_expr=(quoted_string | c_style_comment)) - - c_function = (decl_data_type("type") - + ident("name") - + LPAR + Opt(DelimitedList(arg), [])("args") + RPAR - + code_body("body")) - c_function.ignore(c_style_comment) - - source_code = ''' - int is_odd(int x) { - return (x%2); - } - - int dec_to_hex(char hchar) { - if (hchar >= '0' && hchar <= '9') { - return (ord(hchar)-ord('0')); - } else { - return (10+ord(hchar)-ord('A')); - } - } - ''' - for func in c_function.search_string(source_code): - print("%(name)s (%(type)s) args: %(args)s" % func) - - - prints:: - - is_odd (int) args: [['int', 'x']] - dec_to_hex (int) args: [['char', 'hchar']] - """ - if ignoreExpr != ignore_expr: - ignoreExpr = ignore_expr if ignoreExpr == quoted_string() else ignoreExpr - if opener == closer: - raise ValueError("opening and closing strings cannot be the same") - if content is None: - if isinstance(opener, str_type) and isinstance(closer, str_type): - opener = typing.cast(str, opener) - closer = typing.cast(str, closer) - if len(opener) == 1 and len(closer) == 1: - if ignoreExpr is not None: - content = Combine( - OneOrMore( - ~ignoreExpr - + CharsNotIn( - opener + closer + ParserElement.DEFAULT_WHITE_CHARS, - exact=1, - ) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - content = empty.copy() + CharsNotIn( - opener + closer + ParserElement.DEFAULT_WHITE_CHARS - ).set_parse_action(lambda t: t[0].strip()) - else: - if ignoreExpr is not None: - content = Combine( - OneOrMore( - ~ignoreExpr - + ~Literal(opener) - + ~Literal(closer) - + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - content = Combine( - OneOrMore( - ~Literal(opener) - + ~Literal(closer) - + CharsNotIn(ParserElement.DEFAULT_WHITE_CHARS, exact=1) - ) - ).set_parse_action(lambda t: t[0].strip()) - else: - raise ValueError( - "opening and closing arguments must be strings if no content expression is given" - ) - ret = Forward() - if ignoreExpr is not None: - ret <<= Group( - Suppress(opener) + ZeroOrMore(ignoreExpr | ret | content) + Suppress(closer) - ) - else: - ret <<= Group(Suppress(opener) + ZeroOrMore(ret | content) + Suppress(closer)) - ret.set_name("nested %s%s expression" % (opener, closer)) - return ret - - -def _makeTags(tagStr, xml, suppress_LT=Suppress("<"), suppress_GT=Suppress(">")): - """Internal helper to construct opening and closing tag expressions, given a tag name""" - if isinstance(tagStr, str_type): - resname = tagStr - tagStr = Keyword(tagStr, caseless=not xml) - else: - resname = tagStr.name - - tagAttrName = Word(alphas, alphanums + "_-:") - if xml: - tagAttrValue = dbl_quoted_string.copy().set_parse_action(remove_quotes) - openTag = ( - suppress_LT - + tagStr("tag") - + Dict(ZeroOrMore(Group(tagAttrName + Suppress("=") + tagAttrValue))) - + Opt("/", default=[False])("empty").set_parse_action( - lambda s, l, t: t[0] == "/" - ) - + suppress_GT - ) - else: - tagAttrValue = quoted_string.copy().set_parse_action(remove_quotes) | Word( - printables, exclude_chars=">" - ) - openTag = ( - suppress_LT - + tagStr("tag") - + Dict( - ZeroOrMore( - Group( - tagAttrName.set_parse_action(lambda t: t[0].lower()) - + Opt(Suppress("=") + tagAttrValue) - ) - ) - ) - + Opt("/", default=[False])("empty").set_parse_action( - lambda s, l, t: t[0] == "/" - ) - + suppress_GT - ) - closeTag = Combine(Literal("", adjacent=False) - - openTag.set_name("<%s>" % resname) - # add start results name in parse action now that ungrouped names are not reported at two levels - openTag.add_parse_action( - lambda t: t.__setitem__( - "start" + "".join(resname.replace(":", " ").title().split()), t.copy() - ) - ) - closeTag = closeTag( - "end" + "".join(resname.replace(":", " ").title().split()) - ).set_name("" % resname) - openTag.tag = resname - closeTag.tag = resname - openTag.tag_body = SkipTo(closeTag()) - return openTag, closeTag - - -def make_html_tags( - tag_str: Union[str, ParserElement] -) -> Tuple[ParserElement, ParserElement]: - """Helper to construct opening and closing tag expressions for HTML, - given a tag name. Matches tags in either upper or lower case, - attributes with namespaces and with quoted or unquoted values. - - Example:: - - text = 'More info at the
    pyparsing wiki page' - # make_html_tags returns pyparsing expressions for the opening and - # closing tags as a 2-tuple - a, a_end = make_html_tags("A") - link_expr = a + SkipTo(a_end)("link_text") + a_end - - for link in link_expr.search_string(text): - # attributes in the tag (like "href" shown here) are - # also accessible as named results - print(link.link_text, '->', link.href) - - prints:: - - pyparsing -> https://github.com/pyparsing/pyparsing/wiki - """ - return _makeTags(tag_str, False) - - -def make_xml_tags( - tag_str: Union[str, ParserElement] -) -> Tuple[ParserElement, ParserElement]: - """Helper to construct opening and closing tag expressions for XML, - given a tag name. Matches tags only in the given upper/lower case. - - Example: similar to :class:`make_html_tags` - """ - return _makeTags(tag_str, True) - - -any_open_tag: ParserElement -any_close_tag: ParserElement -any_open_tag, any_close_tag = make_html_tags( - Word(alphas, alphanums + "_:").set_name("any tag") -) - -_htmlEntityMap = {k.rstrip(";"): v for k, v in html.entities.html5.items()} -common_html_entity = Regex("&(?P" + "|".join(_htmlEntityMap) + ");").set_name( - "common HTML entity" -) - - -def replace_html_entity(s, l, t): - """Helper parser action to replace common HTML entities with their special characters""" - return _htmlEntityMap.get(t.entity) - - -class OpAssoc(Enum): - """Enumeration of operator associativity - - used in constructing InfixNotationOperatorSpec for :class:`infix_notation`""" - - LEFT = 1 - RIGHT = 2 - - -InfixNotationOperatorArgType = Union[ - ParserElement, str, Tuple[Union[ParserElement, str], Union[ParserElement, str]] -] -InfixNotationOperatorSpec = Union[ - Tuple[ - InfixNotationOperatorArgType, - int, - OpAssoc, - typing.Optional[ParseAction], - ], - Tuple[ - InfixNotationOperatorArgType, - int, - OpAssoc, - ], -] - - -def infix_notation( - base_expr: ParserElement, - op_list: List[InfixNotationOperatorSpec], - lpar: Union[str, ParserElement] = Suppress("("), - rpar: Union[str, ParserElement] = Suppress(")"), -) -> ParserElement: - """Helper method for constructing grammars of expressions made up of - operators working in a precedence hierarchy. Operators may be unary - or binary, left- or right-associative. Parse actions can also be - attached to operator expressions. The generated parser will also - recognize the use of parentheses to override operator precedences - (see example below). - - Note: if you define a deep operator list, you may see performance - issues when using infix_notation. See - :class:`ParserElement.enable_packrat` for a mechanism to potentially - improve your parser performance. - - Parameters: - - - ``base_expr`` - expression representing the most basic operand to - be used in the expression - - ``op_list`` - list of tuples, one for each operator precedence level - in the expression grammar; each tuple is of the form ``(op_expr, - num_operands, right_left_assoc, (optional)parse_action)``, where: - - - ``op_expr`` is the pyparsing expression for the operator; may also - be a string, which will be converted to a Literal; if ``num_operands`` - is 3, ``op_expr`` is a tuple of two expressions, for the two - operators separating the 3 terms - - ``num_operands`` is the number of terms for this operator (must be 1, - 2, or 3) - - ``right_left_assoc`` is the indicator whether the operator is right - or left associative, using the pyparsing-defined constants - ``OpAssoc.RIGHT`` and ``OpAssoc.LEFT``. - - ``parse_action`` is the parse action to be associated with - expressions matching this operator expression (the parse action - tuple member may be omitted); if the parse action is passed - a tuple or list of functions, this is equivalent to calling - ``set_parse_action(*fn)`` - (:class:`ParserElement.set_parse_action`) - - ``lpar`` - expression for matching left-parentheses; if passed as a - str, then will be parsed as ``Suppress(lpar)``. If lpar is passed as - an expression (such as ``Literal('(')``), then it will be kept in - the parsed results, and grouped with them. (default= ``Suppress('(')``) - - ``rpar`` - expression for matching right-parentheses; if passed as a - str, then will be parsed as ``Suppress(rpar)``. If rpar is passed as - an expression (such as ``Literal(')')``), then it will be kept in - the parsed results, and grouped with them. (default= ``Suppress(')')``) - - Example:: - - # simple example of four-function arithmetic with ints and - # variable names - integer = pyparsing_common.signed_integer - varname = pyparsing_common.identifier - - arith_expr = infix_notation(integer | varname, - [ - ('-', 1, OpAssoc.RIGHT), - (one_of('* /'), 2, OpAssoc.LEFT), - (one_of('+ -'), 2, OpAssoc.LEFT), - ]) - - arith_expr.run_tests(''' - 5+3*6 - (5+3)*6 - -2--11 - ''', full_dump=False) - - prints:: - - 5+3*6 - [[5, '+', [3, '*', 6]]] - - (5+3)*6 - [[[5, '+', 3], '*', 6]] - - (5+x)*y - [[[5, '+', 'x'], '*', 'y']] - - -2--11 - [[['-', 2], '-', ['-', 11]]] - """ - - # captive version of FollowedBy that does not do parse actions or capture results names - class _FB(FollowedBy): - def parseImpl(self, instring, loc, doActions=True): - self.expr.try_parse(instring, loc) - return loc, [] - - _FB.__name__ = "FollowedBy>" - - ret = Forward() - if isinstance(lpar, str): - lpar = Suppress(lpar) - if isinstance(rpar, str): - rpar = Suppress(rpar) - - # if lpar and rpar are not suppressed, wrap in group - if not (isinstance(rpar, Suppress) and isinstance(rpar, Suppress)): - lastExpr = base_expr | Group(lpar + ret + rpar) - else: - lastExpr = base_expr | (lpar + ret + rpar) - - arity: int - rightLeftAssoc: opAssoc - pa: typing.Optional[ParseAction] - opExpr1: ParserElement - opExpr2: ParserElement - for i, operDef in enumerate(op_list): - opExpr, arity, rightLeftAssoc, pa = (operDef + (None,))[:4] # type: ignore[assignment] - if isinstance(opExpr, str_type): - opExpr = ParserElement._literalStringClass(opExpr) - opExpr = typing.cast(ParserElement, opExpr) - if arity == 3: - if not isinstance(opExpr, (tuple, list)) or len(opExpr) != 2: - raise ValueError( - "if numterms=3, opExpr must be a tuple or list of two expressions" - ) - opExpr1, opExpr2 = opExpr - term_name = f"{opExpr1}{opExpr2} term" - else: - term_name = f"{opExpr} term" - - if not 1 <= arity <= 3: - raise ValueError("operator must be unary (1), binary (2), or ternary (3)") - - if rightLeftAssoc not in (OpAssoc.LEFT, OpAssoc.RIGHT): - raise ValueError("operator must indicate right or left associativity") - - thisExpr: ParserElement = Forward().set_name(term_name) - thisExpr = typing.cast(Forward, thisExpr) - if rightLeftAssoc is OpAssoc.LEFT: - if arity == 1: - matchExpr = _FB(lastExpr + opExpr) + Group(lastExpr + opExpr[1, ...]) - elif arity == 2: - if opExpr is not None: - matchExpr = _FB(lastExpr + opExpr + lastExpr) + Group( - lastExpr + (opExpr + lastExpr)[1, ...] - ) - else: - matchExpr = _FB(lastExpr + lastExpr) + Group(lastExpr[2, ...]) - elif arity == 3: - matchExpr = _FB( - lastExpr + opExpr1 + lastExpr + opExpr2 + lastExpr - ) + Group(lastExpr + OneOrMore(opExpr1 + lastExpr + opExpr2 + lastExpr)) - elif rightLeftAssoc is OpAssoc.RIGHT: - if arity == 1: - # try to avoid LR with this extra test - if not isinstance(opExpr, Opt): - opExpr = Opt(opExpr) - matchExpr = _FB(opExpr.expr + thisExpr) + Group(opExpr + thisExpr) - elif arity == 2: - if opExpr is not None: - matchExpr = _FB(lastExpr + opExpr + thisExpr) + Group( - lastExpr + (opExpr + thisExpr)[1, ...] - ) - else: - matchExpr = _FB(lastExpr + thisExpr) + Group( - lastExpr + thisExpr[1, ...] - ) - elif arity == 3: - matchExpr = _FB( - lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr - ) + Group(lastExpr + opExpr1 + thisExpr + opExpr2 + thisExpr) - if pa: - if isinstance(pa, (tuple, list)): - matchExpr.set_parse_action(*pa) - else: - matchExpr.set_parse_action(pa) - thisExpr <<= (matchExpr | lastExpr).setName(term_name) - lastExpr = thisExpr - ret <<= lastExpr - return ret - - -def indentedBlock(blockStatementExpr, indentStack, indent=True, backup_stacks=[]): - """ - (DEPRECATED - use :class:`IndentedBlock` class instead) - Helper method for defining space-delimited indentation blocks, - such as those used to define block statements in Python source code. - - Parameters: - - - ``blockStatementExpr`` - expression defining syntax of statement that - is repeated within the indented block - - ``indentStack`` - list created by caller to manage indentation stack - (multiple ``statementWithIndentedBlock`` expressions within a single - grammar should share a common ``indentStack``) - - ``indent`` - boolean indicating whether block must be indented beyond - the current level; set to ``False`` for block of left-most statements - (default= ``True``) - - A valid block must contain at least one ``blockStatement``. - - (Note that indentedBlock uses internal parse actions which make it - incompatible with packrat parsing.) - - Example:: - - data = ''' - def A(z): - A1 - B = 100 - G = A2 - A2 - A3 - B - def BB(a,b,c): - BB1 - def BBA(): - bba1 - bba2 - bba3 - C - D - def spam(x,y): - def eggs(z): - pass - ''' - - - indentStack = [1] - stmt = Forward() - - identifier = Word(alphas, alphanums) - funcDecl = ("def" + identifier + Group("(" + Opt(delimitedList(identifier)) + ")") + ":") - func_body = indentedBlock(stmt, indentStack) - funcDef = Group(funcDecl + func_body) - - rvalue = Forward() - funcCall = Group(identifier + "(" + Opt(delimitedList(rvalue)) + ")") - rvalue << (funcCall | identifier | Word(nums)) - assignment = Group(identifier + "=" + rvalue) - stmt << (funcDef | assignment | identifier) - - module_body = stmt[1, ...] - - parseTree = module_body.parseString(data) - parseTree.pprint() - - prints:: - - [['def', - 'A', - ['(', 'z', ')'], - ':', - [['A1'], [['B', '=', '100']], [['G', '=', 'A2']], ['A2'], ['A3']]], - 'B', - ['def', - 'BB', - ['(', 'a', 'b', 'c', ')'], - ':', - [['BB1'], [['def', 'BBA', ['(', ')'], ':', [['bba1'], ['bba2'], ['bba3']]]]]], - 'C', - 'D', - ['def', - 'spam', - ['(', 'x', 'y', ')'], - ':', - [[['def', 'eggs', ['(', 'z', ')'], ':', [['pass']]]]]]] - """ - backup_stacks.append(indentStack[:]) - - def reset_stack(): - indentStack[:] = backup_stacks[-1] - - def checkPeerIndent(s, l, t): - if l >= len(s): - return - curCol = col(l, s) - if curCol != indentStack[-1]: - if curCol > indentStack[-1]: - raise ParseException(s, l, "illegal nesting") - raise ParseException(s, l, "not a peer entry") - - def checkSubIndent(s, l, t): - curCol = col(l, s) - if curCol > indentStack[-1]: - indentStack.append(curCol) - else: - raise ParseException(s, l, "not a subentry") - - def checkUnindent(s, l, t): - if l >= len(s): - return - curCol = col(l, s) - if not (indentStack and curCol in indentStack): - raise ParseException(s, l, "not an unindent") - if curCol < indentStack[-1]: - indentStack.pop() - - NL = OneOrMore(LineEnd().set_whitespace_chars("\t ").suppress()) - INDENT = (Empty() + Empty().set_parse_action(checkSubIndent)).set_name("INDENT") - PEER = Empty().set_parse_action(checkPeerIndent).set_name("") - UNDENT = Empty().set_parse_action(checkUnindent).set_name("UNINDENT") - if indent: - smExpr = Group( - Opt(NL) - + INDENT - + OneOrMore(PEER + Group(blockStatementExpr) + Opt(NL)) - + UNDENT - ) - else: - smExpr = Group( - Opt(NL) - + OneOrMore(PEER + Group(blockStatementExpr) + Opt(NL)) - + Opt(UNDENT) - ) - - # add a parse action to remove backup_stack from list of backups - smExpr.add_parse_action( - lambda: backup_stacks.pop(-1) and None if backup_stacks else None - ) - smExpr.set_fail_action(lambda a, b, c, d: reset_stack()) - blockStatementExpr.ignore(_bslash + LineEnd()) - return smExpr.set_name("indented block") - - -# it's easy to get these comment structures wrong - they're very common, so may as well make them available -c_style_comment = Combine(Regex(r"/\*(?:[^*]|\*(?!/))*") + "*/").set_name( - "C style comment" -) -"Comment of the form ``/* ... */``" - -html_comment = Regex(r"").set_name("HTML comment") -"Comment of the form ````" - -rest_of_line = Regex(r".*").leave_whitespace().set_name("rest of line") -dbl_slash_comment = Regex(r"//(?:\\\n|[^\n])*").set_name("// comment") -"Comment of the form ``// ... (to end of line)``" - -cpp_style_comment = Combine( - Regex(r"/\*(?:[^*]|\*(?!/))*") + "*/" | dbl_slash_comment -).set_name("C++ style comment") -"Comment of either form :class:`c_style_comment` or :class:`dbl_slash_comment`" - -java_style_comment = cpp_style_comment -"Same as :class:`cpp_style_comment`" - -python_style_comment = Regex(r"#.*").set_name("Python style comment") -"Comment of the form ``# ... (to end of line)``" - - -# build list of built-in expressions, for future reference if a global default value -# gets updated -_builtin_exprs: List[ParserElement] = [ - v for v in vars().values() if isinstance(v, ParserElement) -] - - -# compatibility function, superseded by DelimitedList class -def delimited_list( - expr: Union[str, ParserElement], - delim: Union[str, ParserElement] = ",", - combine: bool = False, - min: typing.Optional[int] = None, - max: typing.Optional[int] = None, - *, - allow_trailing_delim: bool = False, -) -> ParserElement: - """(DEPRECATED - use :class:`DelimitedList` class)""" - return DelimitedList( - expr, delim, combine, min, max, allow_trailing_delim=allow_trailing_delim - ) - - -# pre-PEP8 compatible names -# fmt: off -opAssoc = OpAssoc -anyOpenTag = any_open_tag -anyCloseTag = any_close_tag -commonHTMLEntity = common_html_entity -cStyleComment = c_style_comment -htmlComment = html_comment -restOfLine = rest_of_line -dblSlashComment = dbl_slash_comment -cppStyleComment = cpp_style_comment -javaStyleComment = java_style_comment -pythonStyleComment = python_style_comment - -@replaced_by_pep8(DelimitedList) -def delimitedList(): ... - -@replaced_by_pep8(DelimitedList) -def delimited_list(): ... - -@replaced_by_pep8(counted_array) -def countedArray(): ... - -@replaced_by_pep8(match_previous_literal) -def matchPreviousLiteral(): ... - -@replaced_by_pep8(match_previous_expr) -def matchPreviousExpr(): ... - -@replaced_by_pep8(one_of) -def oneOf(): ... - -@replaced_by_pep8(dict_of) -def dictOf(): ... - -@replaced_by_pep8(original_text_for) -def originalTextFor(): ... - -@replaced_by_pep8(nested_expr) -def nestedExpr(): ... - -@replaced_by_pep8(make_html_tags) -def makeHTMLTags(): ... - -@replaced_by_pep8(make_xml_tags) -def makeXMLTags(): ... - -@replaced_by_pep8(replace_html_entity) -def replaceHTMLEntity(): ... - -@replaced_by_pep8(infix_notation) -def infixNotation(): ... -# fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py deleted file mode 100644 index 0313049..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py +++ /dev/null @@ -1,796 +0,0 @@ -# results.py -from collections.abc import ( - MutableMapping, - Mapping, - MutableSequence, - Iterator, - Sequence, - Container, -) -import pprint -from typing import Tuple, Any, Dict, Set, List - -str_type: Tuple[type, ...] = (str, bytes) -_generator_type = type((_ for _ in ())) - - -class _ParseResultsWithOffset: - tup: Tuple["ParseResults", int] - __slots__ = ["tup"] - - def __init__(self, p1: "ParseResults", p2: int): - self.tup: Tuple[ParseResults, int] = (p1, p2) - - def __getitem__(self, i): - return self.tup[i] - - def __getstate__(self): - return self.tup - - def __setstate__(self, *args): - self.tup = args[0] - - -class ParseResults: - """Structured parse results, to provide multiple means of access to - the parsed data: - - - as a list (``len(results)``) - - by list index (``results[0], results[1]``, etc.) - - by attribute (``results.`` - see :class:`ParserElement.set_results_name`) - - Example:: - - integer = Word(nums) - date_str = (integer.set_results_name("year") + '/' - + integer.set_results_name("month") + '/' - + integer.set_results_name("day")) - # equivalent form: - # date_str = (integer("year") + '/' - # + integer("month") + '/' - # + integer("day")) - - # parse_string returns a ParseResults object - result = date_str.parse_string("1999/12/31") - - def test(s, fn=repr): - print(f"{s} -> {fn(eval(s))}") - test("list(result)") - test("result[0]") - test("result['month']") - test("result.day") - test("'month' in result") - test("'minutes' in result") - test("result.dump()", str) - - prints:: - - list(result) -> ['1999', '/', '12', '/', '31'] - result[0] -> '1999' - result['month'] -> '12' - result.day -> '31' - 'month' in result -> True - 'minutes' in result -> False - result.dump() -> ['1999', '/', '12', '/', '31'] - - day: '31' - - month: '12' - - year: '1999' - """ - - _null_values: Tuple[Any, ...] = (None, [], ()) - - _name: str - _parent: "ParseResults" - _all_names: Set[str] - _modal: bool - _toklist: List[Any] - _tokdict: Dict[str, Any] - - __slots__ = ( - "_name", - "_parent", - "_all_names", - "_modal", - "_toklist", - "_tokdict", - ) - - class List(list): - """ - Simple wrapper class to distinguish parsed list results that should be preserved - as actual Python lists, instead of being converted to :class:`ParseResults`:: - - LBRACK, RBRACK = map(pp.Suppress, "[]") - element = pp.Forward() - item = ppc.integer - element_list = LBRACK + pp.DelimitedList(element) + RBRACK - - # add parse actions to convert from ParseResults to actual Python collection types - def as_python_list(t): - return pp.ParseResults.List(t.as_list()) - element_list.add_parse_action(as_python_list) - - element <<= item | element_list - - element.run_tests(''' - 100 - [2,3,4] - [[2, 1],3,4] - [(2, 1),3,4] - (2,3,4) - ''', post_parse=lambda s, r: (r[0], type(r[0]))) - - prints:: - - 100 - (100, ) - - [2,3,4] - ([2, 3, 4], ) - - [[2, 1],3,4] - ([[2, 1], 3, 4], ) - - (Used internally by :class:`Group` when `aslist=True`.) - """ - - def __new__(cls, contained=None): - if contained is None: - contained = [] - - if not isinstance(contained, list): - raise TypeError( - f"{cls.__name__} may only be constructed with a list, not {type(contained).__name__}" - ) - - return list.__new__(cls) - - def __new__(cls, toklist=None, name=None, **kwargs): - if isinstance(toklist, ParseResults): - return toklist - self = object.__new__(cls) - self._name = None - self._parent = None - self._all_names = set() - - if toklist is None: - self._toklist = [] - elif isinstance(toklist, (list, _generator_type)): - self._toklist = ( - [toklist[:]] - if isinstance(toklist, ParseResults.List) - else list(toklist) - ) - else: - self._toklist = [toklist] - self._tokdict = dict() - return self - - # Performance tuning: we construct a *lot* of these, so keep this - # constructor as small and fast as possible - def __init__( - self, toklist=None, name=None, asList=True, modal=True, isinstance=isinstance - ): - self._tokdict: Dict[str, _ParseResultsWithOffset] - self._modal = modal - if name is not None and name != "": - if isinstance(name, int): - name = str(name) - if not modal: - self._all_names = {name} - self._name = name - if toklist not in self._null_values: - if isinstance(toklist, (str_type, type)): - toklist = [toklist] - if asList: - if isinstance(toklist, ParseResults): - self[name] = _ParseResultsWithOffset( - ParseResults(toklist._toklist), 0 - ) - else: - self[name] = _ParseResultsWithOffset( - ParseResults(toklist[0]), 0 - ) - self[name]._name = name - else: - try: - self[name] = toklist[0] - except (KeyError, TypeError, IndexError): - if toklist is not self: - self[name] = toklist - else: - self._name = name - - def __getitem__(self, i): - if isinstance(i, (int, slice)): - return self._toklist[i] - else: - if i not in self._all_names: - return self._tokdict[i][-1][0] - else: - return ParseResults([v[0] for v in self._tokdict[i]]) - - def __setitem__(self, k, v, isinstance=isinstance): - if isinstance(v, _ParseResultsWithOffset): - self._tokdict[k] = self._tokdict.get(k, list()) + [v] - sub = v[0] - elif isinstance(k, (int, slice)): - self._toklist[k] = v - sub = v - else: - self._tokdict[k] = self._tokdict.get(k, list()) + [ - _ParseResultsWithOffset(v, 0) - ] - sub = v - if isinstance(sub, ParseResults): - sub._parent = self - - def __delitem__(self, i): - if isinstance(i, (int, slice)): - mylen = len(self._toklist) - del self._toklist[i] - - # convert int to slice - if isinstance(i, int): - if i < 0: - i += mylen - i = slice(i, i + 1) - # get removed indices - removed = list(range(*i.indices(mylen))) - removed.reverse() - # fixup indices in token dictionary - for name, occurrences in self._tokdict.items(): - for j in removed: - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset( - value, position - (position > j) - ) - else: - del self._tokdict[i] - - def __contains__(self, k) -> bool: - return k in self._tokdict - - def __len__(self) -> int: - return len(self._toklist) - - def __bool__(self) -> bool: - return not not (self._toklist or self._tokdict) - - def __iter__(self) -> Iterator: - return iter(self._toklist) - - def __reversed__(self) -> Iterator: - return iter(self._toklist[::-1]) - - def keys(self): - return iter(self._tokdict) - - def values(self): - return (self[k] for k in self.keys()) - - def items(self): - return ((k, self[k]) for k in self.keys()) - - def haskeys(self) -> bool: - """ - Since ``keys()`` returns an iterator, this method is helpful in bypassing - code that looks for the existence of any defined results names.""" - return not not self._tokdict - - def pop(self, *args, **kwargs): - """ - Removes and returns item at specified index (default= ``last``). - Supports both ``list`` and ``dict`` semantics for ``pop()``. If - passed no argument or an integer argument, it will use ``list`` - semantics and pop tokens from the list of parsed tokens. If passed - a non-integer argument (most likely a string), it will use ``dict`` - semantics and pop the corresponding value from any defined results - names. A second default return value argument is supported, just as in - ``dict.pop()``. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - def remove_first(tokens): - tokens.pop(0) - numlist.add_parse_action(remove_first) - print(numlist.parse_string("0 123 321")) # -> ['123', '321'] - - label = Word(alphas) - patt = label("LABEL") + Word(nums)[1, ...] - print(patt.parse_string("AAB 123 321").dump()) - - # Use pop() in a parse action to remove named result (note that corresponding value is not - # removed from list form of results) - def remove_LABEL(tokens): - tokens.pop("LABEL") - return tokens - patt.add_parse_action(remove_LABEL) - print(patt.parse_string("AAB 123 321").dump()) - - prints:: - - ['AAB', '123', '321'] - - LABEL: 'AAB' - - ['AAB', '123', '321'] - """ - if not args: - args = [-1] - for k, v in kwargs.items(): - if k == "default": - args = (args[0], v) - else: - raise TypeError(f"pop() got an unexpected keyword argument {k!r}") - if isinstance(args[0], int) or len(args) == 1 or args[0] in self: - index = args[0] - ret = self[index] - del self[index] - return ret - else: - defaultvalue = args[1] - return defaultvalue - - def get(self, key, default_value=None): - """ - Returns named result matching the given key, or if there is no - such name, then returns the given ``default_value`` or ``None`` if no - ``default_value`` is specified. - - Similar to ``dict.get()``. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string("1999/12/31") - print(result.get("year")) # -> '1999' - print(result.get("hour", "not specified")) # -> 'not specified' - print(result.get("hour")) # -> None - """ - if key in self: - return self[key] - else: - return default_value - - def insert(self, index, ins_string): - """ - Inserts new element at location index in the list of parsed tokens. - - Similar to ``list.insert()``. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to insert the parse location in the front of the parsed results - def insert_locn(locn, tokens): - tokens.insert(0, locn) - numlist.add_parse_action(insert_locn) - print(numlist.parse_string("0 123 321")) # -> [0, '0', '123', '321'] - """ - self._toklist.insert(index, ins_string) - # fixup indices in token dictionary - for name, occurrences in self._tokdict.items(): - for k, (value, position) in enumerate(occurrences): - occurrences[k] = _ParseResultsWithOffset( - value, position + (position > index) - ) - - def append(self, item): - """ - Add single element to end of ``ParseResults`` list of elements. - - Example:: - - numlist = Word(nums)[...] - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321'] - - # use a parse action to compute the sum of the parsed integers, and add it to the end - def append_sum(tokens): - tokens.append(sum(map(int, tokens))) - numlist.add_parse_action(append_sum) - print(numlist.parse_string("0 123 321")) # -> ['0', '123', '321', 444] - """ - self._toklist.append(item) - - def extend(self, itemseq): - """ - Add sequence of elements to end of ``ParseResults`` list of elements. - - Example:: - - patt = Word(alphas)[1, ...] - - # use a parse action to append the reverse of the matched strings, to make a palindrome - def make_palindrome(tokens): - tokens.extend(reversed([t[::-1] for t in tokens])) - return ''.join(tokens) - patt.add_parse_action(make_palindrome) - print(patt.parse_string("lskdj sdlkjf lksd")) # -> 'lskdjsdlkjflksddsklfjkldsjdksl' - """ - if isinstance(itemseq, ParseResults): - self.__iadd__(itemseq) - else: - self._toklist.extend(itemseq) - - def clear(self): - """ - Clear all elements and results names. - """ - del self._toklist[:] - self._tokdict.clear() - - def __getattr__(self, name): - try: - return self[name] - except KeyError: - if name.startswith("__"): - raise AttributeError(name) - return "" - - def __add__(self, other: "ParseResults") -> "ParseResults": - ret = self.copy() - ret += other - return ret - - def __iadd__(self, other: "ParseResults") -> "ParseResults": - if not other: - return self - - if other._tokdict: - offset = len(self._toklist) - addoffset = lambda a: offset if a < 0 else a + offset - otheritems = other._tokdict.items() - otherdictitems = [ - (k, _ParseResultsWithOffset(v[0], addoffset(v[1]))) - for k, vlist in otheritems - for v in vlist - ] - for k, v in otherdictitems: - self[k] = v - if isinstance(v[0], ParseResults): - v[0]._parent = self - - self._toklist += other._toklist - self._all_names |= other._all_names - return self - - def __radd__(self, other) -> "ParseResults": - if isinstance(other, int) and other == 0: - # useful for merging many ParseResults using sum() builtin - return self.copy() - else: - # this may raise a TypeError - so be it - return other + self - - def __repr__(self) -> str: - return f"{type(self).__name__}({self._toklist!r}, {self.as_dict()})" - - def __str__(self) -> str: - return ( - "[" - + ", ".join( - [ - str(i) if isinstance(i, ParseResults) else repr(i) - for i in self._toklist - ] - ) - + "]" - ) - - def _asStringList(self, sep=""): - out = [] - for item in self._toklist: - if out and sep: - out.append(sep) - if isinstance(item, ParseResults): - out += item._asStringList() - else: - out.append(str(item)) - return out - - def as_list(self) -> list: - """ - Returns the parse results as a nested list of matching tokens, all converted to strings. - - Example:: - - patt = Word(alphas)[1, ...] - result = patt.parse_string("sldkj lsdkj sldkj") - # even though the result prints in string-like form, it is actually a pyparsing ParseResults - print(type(result), result) # -> ['sldkj', 'lsdkj', 'sldkj'] - - # Use as_list() to create an actual list - result_list = result.as_list() - print(type(result_list), result_list) # -> ['sldkj', 'lsdkj', 'sldkj'] - """ - return [ - res.as_list() if isinstance(res, ParseResults) else res - for res in self._toklist - ] - - def as_dict(self) -> dict: - """ - Returns the named parse results as a nested dictionary. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string('12/31/1999') - print(type(result), repr(result)) # -> (['12', '/', '31', '/', '1999'], {'day': [('1999', 4)], 'year': [('12', 0)], 'month': [('31', 2)]}) - - result_dict = result.as_dict() - print(type(result_dict), repr(result_dict)) # -> {'day': '1999', 'year': '12', 'month': '31'} - - # even though a ParseResults supports dict-like access, sometime you just need to have a dict - import json - print(json.dumps(result)) # -> Exception: TypeError: ... is not JSON serializable - print(json.dumps(result.as_dict())) # -> {"month": "31", "day": "1999", "year": "12"} - """ - - def to_item(obj): - if isinstance(obj, ParseResults): - return obj.as_dict() if obj.haskeys() else [to_item(v) for v in obj] - else: - return obj - - return dict((k, to_item(v)) for k, v in self.items()) - - def copy(self) -> "ParseResults": - """ - Returns a new shallow copy of a :class:`ParseResults` object. `ParseResults` - items contained within the source are shared with the copy. Use - :class:`ParseResults.deepcopy()` to create a copy with its own separate - content values. - """ - ret = ParseResults(self._toklist) - ret._tokdict = self._tokdict.copy() - ret._parent = self._parent - ret._all_names |= self._all_names - ret._name = self._name - return ret - - def deepcopy(self) -> "ParseResults": - """ - Returns a new deep copy of a :class:`ParseResults` object. - """ - ret = self.copy() - # replace values with copies if they are of known mutable types - for i, obj in enumerate(self._toklist): - if isinstance(obj, ParseResults): - self._toklist[i] = obj.deepcopy() - elif isinstance(obj, (str, bytes)): - pass - elif isinstance(obj, MutableMapping): - self._toklist[i] = dest = type(obj)() - for k, v in obj.items(): - dest[k] = v.deepcopy() if isinstance(v, ParseResults) else v - elif isinstance(obj, Container): - self._toklist[i] = type(obj)( - v.deepcopy() if isinstance(v, ParseResults) else v for v in obj - ) - return ret - - def get_name(self): - r""" - Returns the results name for this token expression. Useful when several - different expressions might match at a particular location. - - Example:: - - integer = Word(nums) - ssn_expr = Regex(r"\d\d\d-\d\d-\d\d\d\d") - house_number_expr = Suppress('#') + Word(nums, alphanums) - user_data = (Group(house_number_expr)("house_number") - | Group(ssn_expr)("ssn") - | Group(integer)("age")) - user_info = user_data[1, ...] - - result = user_info.parse_string("22 111-22-3333 #221B") - for item in result: - print(item.get_name(), ':', item[0]) - - prints:: - - age : 22 - ssn : 111-22-3333 - house_number : 221B - """ - if self._name: - return self._name - elif self._parent: - par: "ParseResults" = self._parent - parent_tokdict_items = par._tokdict.items() - return next( - ( - k - for k, vlist in parent_tokdict_items - for v, loc in vlist - if v is self - ), - None, - ) - elif ( - len(self) == 1 - and len(self._tokdict) == 1 - and next(iter(self._tokdict.values()))[0][1] in (0, -1) - ): - return next(iter(self._tokdict.keys())) - else: - return None - - def dump(self, indent="", full=True, include_list=True, _depth=0) -> str: - """ - Diagnostic method for listing out the contents of - a :class:`ParseResults`. Accepts an optional ``indent`` argument so - that this string can be embedded in a nested display of other data. - - Example:: - - integer = Word(nums) - date_str = integer("year") + '/' + integer("month") + '/' + integer("day") - - result = date_str.parse_string('1999/12/31') - print(result.dump()) - - prints:: - - ['1999', '/', '12', '/', '31'] - - day: '31' - - month: '12' - - year: '1999' - """ - out = [] - NL = "\n" - out.append(indent + str(self.as_list()) if include_list else "") - - if full: - if self.haskeys(): - items = sorted((str(k), v) for k, v in self.items()) - for k, v in items: - if out: - out.append(NL) - out.append(f"{indent}{(' ' * _depth)}- {k}: ") - if isinstance(v, ParseResults): - if v: - out.append( - v.dump( - indent=indent, - full=full, - include_list=include_list, - _depth=_depth + 1, - ) - ) - else: - out.append(str(v)) - else: - out.append(repr(v)) - if any(isinstance(vv, ParseResults) for vv in self): - v = self - for i, vv in enumerate(v): - if isinstance(vv, ParseResults): - out.append( - "\n{}{}[{}]:\n{}{}{}".format( - indent, - (" " * (_depth)), - i, - indent, - (" " * (_depth + 1)), - vv.dump( - indent=indent, - full=full, - include_list=include_list, - _depth=_depth + 1, - ), - ) - ) - else: - out.append( - "\n%s%s[%d]:\n%s%s%s" - % ( - indent, - (" " * (_depth)), - i, - indent, - (" " * (_depth + 1)), - str(vv), - ) - ) - - return "".join(out) - - def pprint(self, *args, **kwargs): - """ - Pretty-printer for parsed results as a list, using the - `pprint `_ module. - Accepts additional positional or keyword args as defined for - `pprint.pprint `_ . - - Example:: - - ident = Word(alphas, alphanums) - num = Word(nums) - func = Forward() - term = ident | num | Group('(' + func + ')') - func <<= ident + Group(Optional(DelimitedList(term))) - result = func.parse_string("fna a,b,(fnb c,d,200),100") - result.pprint(width=40) - - prints:: - - ['fna', - ['a', - 'b', - ['(', 'fnb', ['c', 'd', '200'], ')'], - '100']] - """ - pprint.pprint(self.as_list(), *args, **kwargs) - - # add support for pickle protocol - def __getstate__(self): - return ( - self._toklist, - ( - self._tokdict.copy(), - None, - self._all_names, - self._name, - ), - ) - - def __setstate__(self, state): - self._toklist, (self._tokdict, par, inAccumNames, self._name) = state - self._all_names = set(inAccumNames) - self._parent = None - - def __getnewargs__(self): - return self._toklist, self._name - - def __dir__(self): - return dir(type(self)) + list(self.keys()) - - @classmethod - def from_dict(cls, other, name=None) -> "ParseResults": - """ - Helper classmethod to construct a ``ParseResults`` from a ``dict``, preserving the - name-value relations as results names. If an optional ``name`` argument is - given, a nested ``ParseResults`` will be returned. - """ - - def is_iterable(obj): - try: - iter(obj) - except Exception: - return False - # str's are iterable, but in pyparsing, we don't want to iterate over them - else: - return not isinstance(obj, str_type) - - ret = cls([]) - for k, v in other.items(): - if isinstance(v, Mapping): - ret += cls.from_dict(v, name=k) - else: - ret += cls([v], name=k, asList=is_iterable(v)) - if name is not None: - ret = cls([ret], name=name) - return ret - - asList = as_list - """Deprecated - use :class:`as_list`""" - asDict = as_dict - """Deprecated - use :class:`as_dict`""" - getName = get_name - """Deprecated - use :class:`get_name`""" - - -MutableMapping.register(ParseResults) -MutableSequence.register(ParseResults) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py deleted file mode 100644 index 6a254c1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py +++ /dev/null @@ -1,331 +0,0 @@ -# testing.py - -from contextlib import contextmanager -import typing - -from .core import ( - ParserElement, - ParseException, - Keyword, - __diag__, - __compat__, -) - - -class pyparsing_test: - """ - namespace class for classes useful in writing unit tests - """ - - class reset_pyparsing_context: - """ - Context manager to be used when writing unit tests that modify pyparsing config values: - - packrat parsing - - bounded recursion parsing - - default whitespace characters. - - default keyword characters - - literal string auto-conversion class - - __diag__ settings - - Example:: - - with reset_pyparsing_context(): - # test that literals used to construct a grammar are automatically suppressed - ParserElement.inlineLiteralsUsing(Suppress) - - term = Word(alphas) | Word(nums) - group = Group('(' + term[...] + ')') - - # assert that the '()' characters are not included in the parsed tokens - self.assertParseAndCheckList(group, "(abc 123 def)", ['abc', '123', 'def']) - - # after exiting context manager, literals are converted to Literal expressions again - """ - - def __init__(self): - self._save_context = {} - - def save(self): - self._save_context["default_whitespace"] = ParserElement.DEFAULT_WHITE_CHARS - self._save_context["default_keyword_chars"] = Keyword.DEFAULT_KEYWORD_CHARS - - self._save_context[ - "literal_string_class" - ] = ParserElement._literalStringClass - - self._save_context["verbose_stacktrace"] = ParserElement.verbose_stacktrace - - self._save_context["packrat_enabled"] = ParserElement._packratEnabled - if ParserElement._packratEnabled: - self._save_context[ - "packrat_cache_size" - ] = ParserElement.packrat_cache.size - else: - self._save_context["packrat_cache_size"] = None - self._save_context["packrat_parse"] = ParserElement._parse - self._save_context[ - "recursion_enabled" - ] = ParserElement._left_recursion_enabled - - self._save_context["__diag__"] = { - name: getattr(__diag__, name) for name in __diag__._all_names - } - - self._save_context["__compat__"] = { - "collect_all_And_tokens": __compat__.collect_all_And_tokens - } - - return self - - def restore(self): - # reset pyparsing global state - if ( - ParserElement.DEFAULT_WHITE_CHARS - != self._save_context["default_whitespace"] - ): - ParserElement.set_default_whitespace_chars( - self._save_context["default_whitespace"] - ) - - ParserElement.verbose_stacktrace = self._save_context["verbose_stacktrace"] - - Keyword.DEFAULT_KEYWORD_CHARS = self._save_context["default_keyword_chars"] - ParserElement.inlineLiteralsUsing( - self._save_context["literal_string_class"] - ) - - for name, value in self._save_context["__diag__"].items(): - (__diag__.enable if value else __diag__.disable)(name) - - ParserElement._packratEnabled = False - if self._save_context["packrat_enabled"]: - ParserElement.enable_packrat(self._save_context["packrat_cache_size"]) - else: - ParserElement._parse = self._save_context["packrat_parse"] - ParserElement._left_recursion_enabled = self._save_context[ - "recursion_enabled" - ] - - __compat__.collect_all_And_tokens = self._save_context["__compat__"] - - return self - - def copy(self): - ret = type(self)() - ret._save_context.update(self._save_context) - return ret - - def __enter__(self): - return self.save() - - def __exit__(self, *args): - self.restore() - - class TestParseResultsAsserts: - """ - A mixin class to add parse results assertion methods to normal unittest.TestCase classes. - """ - - def assertParseResultsEquals( - self, result, expected_list=None, expected_dict=None, msg=None - ): - """ - Unit test assertion to compare a :class:`ParseResults` object with an optional ``expected_list``, - and compare any defined results names with an optional ``expected_dict``. - """ - if expected_list is not None: - self.assertEqual(expected_list, result.as_list(), msg=msg) - if expected_dict is not None: - self.assertEqual(expected_dict, result.as_dict(), msg=msg) - - def assertParseAndCheckList( - self, expr, test_string, expected_list, msg=None, verbose=True - ): - """ - Convenience wrapper assert to test a parser element and input string, and assert that - the resulting ``ParseResults.asList()`` is equal to the ``expected_list``. - """ - result = expr.parse_string(test_string, parse_all=True) - if verbose: - print(result.dump()) - else: - print(result.as_list()) - self.assertParseResultsEquals(result, expected_list=expected_list, msg=msg) - - def assertParseAndCheckDict( - self, expr, test_string, expected_dict, msg=None, verbose=True - ): - """ - Convenience wrapper assert to test a parser element and input string, and assert that - the resulting ``ParseResults.asDict()`` is equal to the ``expected_dict``. - """ - result = expr.parse_string(test_string, parseAll=True) - if verbose: - print(result.dump()) - else: - print(result.as_list()) - self.assertParseResultsEquals(result, expected_dict=expected_dict, msg=msg) - - def assertRunTestResults( - self, run_tests_report, expected_parse_results=None, msg=None - ): - """ - Unit test assertion to evaluate output of ``ParserElement.runTests()``. If a list of - list-dict tuples is given as the ``expected_parse_results`` argument, then these are zipped - with the report tuples returned by ``runTests`` and evaluated using ``assertParseResultsEquals``. - Finally, asserts that the overall ``runTests()`` success value is ``True``. - - :param run_tests_report: tuple(bool, [tuple(str, ParseResults or Exception)]) returned from runTests - :param expected_parse_results (optional): [tuple(str, list, dict, Exception)] - """ - run_test_success, run_test_results = run_tests_report - - if expected_parse_results is not None: - merged = [ - (*rpt, expected) - for rpt, expected in zip(run_test_results, expected_parse_results) - ] - for test_string, result, expected in merged: - # expected should be a tuple containing a list and/or a dict or an exception, - # and optional failure message string - # an empty tuple will skip any result validation - fail_msg = next( - (exp for exp in expected if isinstance(exp, str)), None - ) - expected_exception = next( - ( - exp - for exp in expected - if isinstance(exp, type) and issubclass(exp, Exception) - ), - None, - ) - if expected_exception is not None: - with self.assertRaises( - expected_exception=expected_exception, msg=fail_msg or msg - ): - if isinstance(result, Exception): - raise result - else: - expected_list = next( - (exp for exp in expected if isinstance(exp, list)), None - ) - expected_dict = next( - (exp for exp in expected if isinstance(exp, dict)), None - ) - if (expected_list, expected_dict) != (None, None): - self.assertParseResultsEquals( - result, - expected_list=expected_list, - expected_dict=expected_dict, - msg=fail_msg or msg, - ) - else: - # warning here maybe? - print(f"no validation for {test_string!r}") - - # do this last, in case some specific test results can be reported instead - self.assertTrue( - run_test_success, msg=msg if msg is not None else "failed runTests" - ) - - @contextmanager - def assertRaisesParseException(self, exc_type=ParseException, msg=None): - with self.assertRaises(exc_type, msg=msg): - yield - - @staticmethod - def with_line_numbers( - s: str, - start_line: typing.Optional[int] = None, - end_line: typing.Optional[int] = None, - expand_tabs: bool = True, - eol_mark: str = "|", - mark_spaces: typing.Optional[str] = None, - mark_control: typing.Optional[str] = None, - ) -> str: - """ - Helpful method for debugging a parser - prints a string with line and column numbers. - (Line and column numbers are 1-based.) - - :param s: tuple(bool, str - string to be printed with line and column numbers - :param start_line: int - (optional) starting line number in s to print (default=1) - :param end_line: int - (optional) ending line number in s to print (default=len(s)) - :param expand_tabs: bool - (optional) expand tabs to spaces, to match the pyparsing default - :param eol_mark: str - (optional) string to mark the end of lines, helps visualize trailing spaces (default="|") - :param mark_spaces: str - (optional) special character to display in place of spaces - :param mark_control: str - (optional) convert non-printing control characters to a placeholding - character; valid values: - - "unicode" - replaces control chars with Unicode symbols, such as "␍" and "␊" - - any single character string - replace control characters with given string - - None (default) - string is displayed as-is - - :return: str - input string with leading line numbers and column number headers - """ - if expand_tabs: - s = s.expandtabs() - if mark_control is not None: - mark_control = typing.cast(str, mark_control) - if mark_control == "unicode": - transtable_map = { - c: u for c, u in zip(range(0, 33), range(0x2400, 0x2433)) - } - transtable_map[127] = 0x2421 - tbl = str.maketrans(transtable_map) - eol_mark = "" - else: - ord_mark_control = ord(mark_control) - tbl = str.maketrans( - {c: ord_mark_control for c in list(range(0, 32)) + [127]} - ) - s = s.translate(tbl) - if mark_spaces is not None and mark_spaces != " ": - if mark_spaces == "unicode": - tbl = str.maketrans({9: 0x2409, 32: 0x2423}) - s = s.translate(tbl) - else: - s = s.replace(" ", mark_spaces) - if start_line is None: - start_line = 1 - if end_line is None: - end_line = len(s) - end_line = min(end_line, len(s)) - start_line = min(max(1, start_line), end_line) - - if mark_control != "unicode": - s_lines = s.splitlines()[start_line - 1 : end_line] - else: - s_lines = [line + "␊" for line in s.split("␊")[start_line - 1 : end_line]] - if not s_lines: - return "" - - lineno_width = len(str(end_line)) - max_line_len = max(len(line) for line in s_lines) - lead = " " * (lineno_width + 1) - if max_line_len >= 99: - header0 = ( - lead - + "".join( - f"{' ' * 99}{(i + 1) % 100}" - for i in range(max(max_line_len // 100, 1)) - ) - + "\n" - ) - else: - header0 = "" - header1 = ( - header0 - + lead - + "".join(f" {(i + 1) % 10}" for i in range(-(-max_line_len // 10))) - + "\n" - ) - header2 = lead + "1234567890" * (-(-max_line_len // 10)) + "\n" - return ( - header1 - + header2 - + "\n".join( - f"{i:{lineno_width}d}:{line}{eol_mark}" - for i, line in enumerate(s_lines, start=start_line) - ) - + "\n" - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py deleted file mode 100644 index ec0b3a4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py +++ /dev/null @@ -1,361 +0,0 @@ -# unicode.py - -import sys -from itertools import filterfalse -from typing import List, Tuple, Union - - -class _lazyclassproperty: - def __init__(self, fn): - self.fn = fn - self.__doc__ = fn.__doc__ - self.__name__ = fn.__name__ - - def __get__(self, obj, cls): - if cls is None: - cls = type(obj) - if not hasattr(cls, "_intern") or any( - cls._intern is getattr(superclass, "_intern", []) - for superclass in cls.__mro__[1:] - ): - cls._intern = {} - attrname = self.fn.__name__ - if attrname not in cls._intern: - cls._intern[attrname] = self.fn(cls) - return cls._intern[attrname] - - -UnicodeRangeList = List[Union[Tuple[int, int], Tuple[int]]] - - -class unicode_set: - """ - A set of Unicode characters, for language-specific strings for - ``alphas``, ``nums``, ``alphanums``, and ``printables``. - A unicode_set is defined by a list of ranges in the Unicode character - set, in a class attribute ``_ranges``. Ranges can be specified using - 2-tuples or a 1-tuple, such as:: - - _ranges = [ - (0x0020, 0x007e), - (0x00a0, 0x00ff), - (0x0100,), - ] - - Ranges are left- and right-inclusive. A 1-tuple of (x,) is treated as (x, x). - - A unicode set can also be defined using multiple inheritance of other unicode sets:: - - class CJK(Chinese, Japanese, Korean): - pass - """ - - _ranges: UnicodeRangeList = [] - - @_lazyclassproperty - def _chars_for_ranges(cls): - ret = [] - for cc in cls.__mro__: - if cc is unicode_set: - break - for rr in getattr(cc, "_ranges", ()): - ret.extend(range(rr[0], rr[-1] + 1)) - return [chr(c) for c in sorted(set(ret))] - - @_lazyclassproperty - def printables(cls): - """all non-whitespace characters in this range""" - return "".join(filterfalse(str.isspace, cls._chars_for_ranges)) - - @_lazyclassproperty - def alphas(cls): - """all alphabetic characters in this range""" - return "".join(filter(str.isalpha, cls._chars_for_ranges)) - - @_lazyclassproperty - def nums(cls): - """all numeric digit characters in this range""" - return "".join(filter(str.isdigit, cls._chars_for_ranges)) - - @_lazyclassproperty - def alphanums(cls): - """all alphanumeric characters in this range""" - return cls.alphas + cls.nums - - @_lazyclassproperty - def identchars(cls): - """all characters in this range that are valid identifier characters, plus underscore '_'""" - return "".join( - sorted( - set( - "".join(filter(str.isidentifier, cls._chars_for_ranges)) - + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµº" - + "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ" - + "_" - ) - ) - ) - - @_lazyclassproperty - def identbodychars(cls): - """ - all characters in this range that are valid identifier body characters, - plus the digits 0-9, and · (Unicode MIDDLE DOT) - """ - return "".join( - sorted( - set( - cls.identchars - + "0123456789·" - + "".join( - [c for c in cls._chars_for_ranges if ("_" + c).isidentifier()] - ) - ) - ) - ) - - @_lazyclassproperty - def identifier(cls): - """ - a pyparsing Word expression for an identifier using this range's definitions for - identchars and identbodychars - """ - from pip._vendor.pyparsing import Word - - return Word(cls.identchars, cls.identbodychars) - - -class pyparsing_unicode(unicode_set): - """ - A namespace class for defining common language unicode_sets. - """ - - # fmt: off - - # define ranges in language character sets - _ranges: UnicodeRangeList = [ - (0x0020, sys.maxunicode), - ] - - class BasicMultilingualPlane(unicode_set): - """Unicode set for the Basic Multilingual Plane""" - _ranges: UnicodeRangeList = [ - (0x0020, 0xFFFF), - ] - - class Latin1(unicode_set): - """Unicode set for Latin-1 Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0020, 0x007E), - (0x00A0, 0x00FF), - ] - - class LatinA(unicode_set): - """Unicode set for Latin-A Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0100, 0x017F), - ] - - class LatinB(unicode_set): - """Unicode set for Latin-B Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0180, 0x024F), - ] - - class Greek(unicode_set): - """Unicode set for Greek Unicode Character Ranges""" - _ranges: UnicodeRangeList = [ - (0x0342, 0x0345), - (0x0370, 0x0377), - (0x037A, 0x037F), - (0x0384, 0x038A), - (0x038C,), - (0x038E, 0x03A1), - (0x03A3, 0x03E1), - (0x03F0, 0x03FF), - (0x1D26, 0x1D2A), - (0x1D5E,), - (0x1D60,), - (0x1D66, 0x1D6A), - (0x1F00, 0x1F15), - (0x1F18, 0x1F1D), - (0x1F20, 0x1F45), - (0x1F48, 0x1F4D), - (0x1F50, 0x1F57), - (0x1F59,), - (0x1F5B,), - (0x1F5D,), - (0x1F5F, 0x1F7D), - (0x1F80, 0x1FB4), - (0x1FB6, 0x1FC4), - (0x1FC6, 0x1FD3), - (0x1FD6, 0x1FDB), - (0x1FDD, 0x1FEF), - (0x1FF2, 0x1FF4), - (0x1FF6, 0x1FFE), - (0x2129,), - (0x2719, 0x271A), - (0xAB65,), - (0x10140, 0x1018D), - (0x101A0,), - (0x1D200, 0x1D245), - (0x1F7A1, 0x1F7A7), - ] - - class Cyrillic(unicode_set): - """Unicode set for Cyrillic Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0400, 0x052F), - (0x1C80, 0x1C88), - (0x1D2B,), - (0x1D78,), - (0x2DE0, 0x2DFF), - (0xA640, 0xA672), - (0xA674, 0xA69F), - (0xFE2E, 0xFE2F), - ] - - class Chinese(unicode_set): - """Unicode set for Chinese Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x2E80, 0x2E99), - (0x2E9B, 0x2EF3), - (0x31C0, 0x31E3), - (0x3400, 0x4DB5), - (0x4E00, 0x9FEF), - (0xA700, 0xA707), - (0xF900, 0xFA6D), - (0xFA70, 0xFAD9), - (0x16FE2, 0x16FE3), - (0x1F210, 0x1F212), - (0x1F214, 0x1F23B), - (0x1F240, 0x1F248), - (0x20000, 0x2A6D6), - (0x2A700, 0x2B734), - (0x2B740, 0x2B81D), - (0x2B820, 0x2CEA1), - (0x2CEB0, 0x2EBE0), - (0x2F800, 0x2FA1D), - ] - - class Japanese(unicode_set): - """Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana ranges""" - - class Kanji(unicode_set): - "Unicode set for Kanji Unicode Character Range" - _ranges: UnicodeRangeList = [ - (0x4E00, 0x9FBF), - (0x3000, 0x303F), - ] - - class Hiragana(unicode_set): - """Unicode set for Hiragana Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x3041, 0x3096), - (0x3099, 0x30A0), - (0x30FC,), - (0xFF70,), - (0x1B001,), - (0x1B150, 0x1B152), - (0x1F200,), - ] - - class Katakana(unicode_set): - """Unicode set for Katakana Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x3099, 0x309C), - (0x30A0, 0x30FF), - (0x31F0, 0x31FF), - (0x32D0, 0x32FE), - (0xFF65, 0xFF9F), - (0x1B000,), - (0x1B164, 0x1B167), - (0x1F201, 0x1F202), - (0x1F213,), - ] - - 漢字 = Kanji - カタカナ = Katakana - ひらがな = Hiragana - - _ranges = ( - Kanji._ranges - + Hiragana._ranges - + Katakana._ranges - ) - - class Hangul(unicode_set): - """Unicode set for Hangul (Korean) Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x1100, 0x11FF), - (0x302E, 0x302F), - (0x3131, 0x318E), - (0x3200, 0x321C), - (0x3260, 0x327B), - (0x327E,), - (0xA960, 0xA97C), - (0xAC00, 0xD7A3), - (0xD7B0, 0xD7C6), - (0xD7CB, 0xD7FB), - (0xFFA0, 0xFFBE), - (0xFFC2, 0xFFC7), - (0xFFCA, 0xFFCF), - (0xFFD2, 0xFFD7), - (0xFFDA, 0xFFDC), - ] - - Korean = Hangul - - class CJK(Chinese, Japanese, Hangul): - """Unicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character Range""" - - class Thai(unicode_set): - """Unicode set for Thai Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0E01, 0x0E3A), - (0x0E3F, 0x0E5B) - ] - - class Arabic(unicode_set): - """Unicode set for Arabic Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0600, 0x061B), - (0x061E, 0x06FF), - (0x0700, 0x077F), - ] - - class Hebrew(unicode_set): - """Unicode set for Hebrew Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0591, 0x05C7), - (0x05D0, 0x05EA), - (0x05EF, 0x05F4), - (0xFB1D, 0xFB36), - (0xFB38, 0xFB3C), - (0xFB3E,), - (0xFB40, 0xFB41), - (0xFB43, 0xFB44), - (0xFB46, 0xFB4F), - ] - - class Devanagari(unicode_set): - """Unicode set for Devanagari Unicode Character Range""" - _ranges: UnicodeRangeList = [ - (0x0900, 0x097F), - (0xA8E0, 0xA8FF) - ] - - BMP = BasicMultilingualPlane - - # add language identifiers using language Unicode - العربية = Arabic - 中文 = Chinese - кириллица = Cyrillic - Ελληνικά = Greek - עִברִית = Hebrew - 日本語 = Japanese - 한국어 = Korean - ไทย = Thai - देवनागरी = Devanagari - - # fmt: on diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py deleted file mode 100644 index d8d3f41..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py +++ /dev/null @@ -1,284 +0,0 @@ -# util.py -import inspect -import warnings -import types -import collections -import itertools -from functools import lru_cache, wraps -from typing import Callable, List, Union, Iterable, TypeVar, cast - -_bslash = chr(92) -C = TypeVar("C", bound=Callable) - - -class __config_flags: - """Internal class for defining compatibility and debugging flags""" - - _all_names: List[str] = [] - _fixed_names: List[str] = [] - _type_desc = "configuration" - - @classmethod - def _set(cls, dname, value): - if dname in cls._fixed_names: - warnings.warn( - f"{cls.__name__}.{dname} {cls._type_desc} is {str(getattr(cls, dname)).upper()}" - f" and cannot be overridden", - stacklevel=3, - ) - return - if dname in cls._all_names: - setattr(cls, dname, value) - else: - raise ValueError(f"no such {cls._type_desc} {dname!r}") - - enable = classmethod(lambda cls, name: cls._set(name, True)) - disable = classmethod(lambda cls, name: cls._set(name, False)) - - -@lru_cache(maxsize=128) -def col(loc: int, strg: str) -> int: - """ - Returns current column within a string, counting newlines as line separators. - The first column is number 1. - - Note: the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See - :class:`ParserElement.parse_string` for more - information on parsing strings containing ```` s, and suggested - methods to maintain a consistent view of the parsed string, the parse - location, and line and column positions within the parsed string. - """ - s = strg - return 1 if 0 < loc < len(s) and s[loc - 1] == "\n" else loc - s.rfind("\n", 0, loc) - - -@lru_cache(maxsize=128) -def lineno(loc: int, strg: str) -> int: - """Returns current line number within a string, counting newlines as line separators. - The first line is number 1. - - Note - the default parsing behavior is to expand tabs in the input string - before starting the parsing process. See :class:`ParserElement.parse_string` - for more information on parsing strings containing ```` s, and - suggested methods to maintain a consistent view of the parsed string, the - parse location, and line and column positions within the parsed string. - """ - return strg.count("\n", 0, loc) + 1 - - -@lru_cache(maxsize=128) -def line(loc: int, strg: str) -> str: - """ - Returns the line of text containing loc within a string, counting newlines as line separators. - """ - last_cr = strg.rfind("\n", 0, loc) - next_cr = strg.find("\n", loc) - return strg[last_cr + 1 : next_cr] if next_cr >= 0 else strg[last_cr + 1 :] - - -class _UnboundedCache: - def __init__(self): - cache = {} - cache_get = cache.get - self.not_in_cache = not_in_cache = object() - - def get(_, key): - return cache_get(key, not_in_cache) - - def set_(_, key, value): - cache[key] = value - - def clear(_): - cache.clear() - - self.size = None - self.get = types.MethodType(get, self) - self.set = types.MethodType(set_, self) - self.clear = types.MethodType(clear, self) - - -class _FifoCache: - def __init__(self, size): - self.not_in_cache = not_in_cache = object() - cache = {} - keyring = [object()] * size - cache_get = cache.get - cache_pop = cache.pop - keyiter = itertools.cycle(range(size)) - - def get(_, key): - return cache_get(key, not_in_cache) - - def set_(_, key, value): - cache[key] = value - i = next(keyiter) - cache_pop(keyring[i], None) - keyring[i] = key - - def clear(_): - cache.clear() - keyring[:] = [object()] * size - - self.size = size - self.get = types.MethodType(get, self) - self.set = types.MethodType(set_, self) - self.clear = types.MethodType(clear, self) - - -class LRUMemo: - """ - A memoizing mapping that retains `capacity` deleted items - - The memo tracks retained items by their access order; once `capacity` items - are retained, the least recently used item is discarded. - """ - - def __init__(self, capacity): - self._capacity = capacity - self._active = {} - self._memory = collections.OrderedDict() - - def __getitem__(self, key): - try: - return self._active[key] - except KeyError: - self._memory.move_to_end(key) - return self._memory[key] - - def __setitem__(self, key, value): - self._memory.pop(key, None) - self._active[key] = value - - def __delitem__(self, key): - try: - value = self._active.pop(key) - except KeyError: - pass - else: - while len(self._memory) >= self._capacity: - self._memory.popitem(last=False) - self._memory[key] = value - - def clear(self): - self._active.clear() - self._memory.clear() - - -class UnboundedMemo(dict): - """ - A memoizing mapping that retains all deleted items - """ - - def __delitem__(self, key): - pass - - -def _escape_regex_range_chars(s: str) -> str: - # escape these chars: ^-[] - for c in r"\^-[]": - s = s.replace(c, _bslash + c) - s = s.replace("\n", r"\n") - s = s.replace("\t", r"\t") - return str(s) - - -def _collapse_string_to_ranges( - s: Union[str, Iterable[str]], re_escape: bool = True -) -> str: - def is_consecutive(c): - c_int = ord(c) - is_consecutive.prev, prev = c_int, is_consecutive.prev - if c_int - prev > 1: - is_consecutive.value = next(is_consecutive.counter) - return is_consecutive.value - - is_consecutive.prev = 0 # type: ignore [attr-defined] - is_consecutive.counter = itertools.count() # type: ignore [attr-defined] - is_consecutive.value = -1 # type: ignore [attr-defined] - - def escape_re_range_char(c): - return "\\" + c if c in r"\^-][" else c - - def no_escape_re_range_char(c): - return c - - if not re_escape: - escape_re_range_char = no_escape_re_range_char - - ret = [] - s = "".join(sorted(set(s))) - if len(s) > 3: - for _, chars in itertools.groupby(s, key=is_consecutive): - first = last = next(chars) - last = collections.deque( - itertools.chain(iter([last]), chars), maxlen=1 - ).pop() - if first == last: - ret.append(escape_re_range_char(first)) - else: - sep = "" if ord(last) == ord(first) + 1 else "-" - ret.append( - f"{escape_re_range_char(first)}{sep}{escape_re_range_char(last)}" - ) - else: - ret = [escape_re_range_char(c) for c in s] - - return "".join(ret) - - -def _flatten(ll: list) -> list: - ret = [] - for i in ll: - if isinstance(i, list): - ret.extend(_flatten(i)) - else: - ret.append(i) - return ret - - -def _make_synonym_function(compat_name: str, fn: C) -> C: - # In a future version, uncomment the code in the internal _inner() functions - # to begin emitting DeprecationWarnings. - - # Unwrap staticmethod/classmethod - fn = getattr(fn, "__func__", fn) - - # (Presence of 'self' arg in signature is used by explain_exception() methods, so we take - # some extra steps to add it if present in decorated function.) - if "self" == list(inspect.signature(fn).parameters)[0]: - - @wraps(fn) - def _inner(self, *args, **kwargs): - # warnings.warn( - # f"Deprecated - use {fn.__name__}", DeprecationWarning, stacklevel=3 - # ) - return fn(self, *args, **kwargs) - - else: - - @wraps(fn) - def _inner(*args, **kwargs): - # warnings.warn( - # f"Deprecated - use {fn.__name__}", DeprecationWarning, stacklevel=3 - # ) - return fn(*args, **kwargs) - - _inner.__doc__ = f"""Deprecated - use :class:`{fn.__name__}`""" - _inner.__name__ = compat_name - _inner.__annotations__ = fn.__annotations__ - if isinstance(fn, types.FunctionType): - _inner.__kwdefaults__ = fn.__kwdefaults__ - elif isinstance(fn, type) and hasattr(fn, "__init__"): - _inner.__kwdefaults__ = fn.__init__.__kwdefaults__ - else: - _inner.__kwdefaults__ = None - _inner.__qualname__ = fn.__qualname__ - return cast(C, _inner) - - -def replaced_by_pep8(fn: C) -> Callable[[Callable], C]: - """ - Decorator for pre-PEP8 compatibility synonyms, to link them to the new function. - """ - return lambda other: _make_synonym_function(other.__name__, fn) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py deleted file mode 100644 index ddfcf7f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Wrappers to call pyproject.toml-based build backend hooks. -""" - -from ._impl import ( - BackendInvalid, - BackendUnavailable, - BuildBackendHookCaller, - HookMissing, - UnsupportedOperation, - default_subprocess_runner, - quiet_subprocess_runner, -) - -__version__ = '1.0.0' -__all__ = [ - 'BackendUnavailable', - 'BackendInvalid', - 'HookMissing', - 'UnsupportedOperation', - 'default_subprocess_runner', - 'quiet_subprocess_runner', - 'BuildBackendHookCaller', -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index c2ed5f0525344b1d59bfbe74d16437acea623588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmZuuJ&zMH5cOtvvmqfA2!ZHQ(4@#ZCz_K$2ptU+fCM@rxv{)!Ut;1fZ0}0BnqNZ4 zUvf)@_y<&s?^00QNPhBo=6T-C*yVDLz`hrsuKpAV{mRb&HUZ}~oNx}n5kb7*6IJL5 zndp*~x+0aXNv)@3svFYi8JQJ`m*n0K@#;rG=Dhxl*3;`3Up#Y8_^^t0)ib45?&!Sz zD*D()tJS7sLGV>KNCn9HgD`xxxAqX)`EL-0)=heFar^$xj7&+M9-jP5!$u|*>y${3 zFY*tkz+2$Ifm*_+MZUk6AxN`Jk1kCZoU=X({t-m6D6L6PxwvA3iZl!zNb5xi)DOl0 z`^mRKiaP?=^;x@Zx9i52AkpVx`8vZiLz7{ap#u1@UZjRnZhJ~oO{I3~mT*JO8Fx|B zg3=Mj1_FTwd}xQ#pU5vWA;Vvd_f`wM8)TnV$0+gPJmAp7#G%`bvpnEYm=P=4VRwvs zYo51fTO4E*8wWFGI}xyx4nrx!t%s!3Zs^SlFs0JSNNMYiY4%cEJ}B`jZzbgRD)g+Z H=J$(#s0OUm diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc deleted file mode 100644 index f992549326eb654f5055ae777458eeb9301cbe1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmYjLJ5Izf5Vf6zUF}DLW2D%aPeXwaC!l~XjTK^V;*FEBY;UCWRNRCsrKQ>{P%&O@ z!ASE)Z{B^-Wf zN&Bo!D2Y7Jayl;p^v39q6P_TiIXfj-Piq7evncBPYF-FY86(7;_{qGVW)Zd)Pp=4^&Fk~=prRc KwqhH4&Hez($XfgW diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc deleted file mode 100644 index 1335013ca9080c7d1d932b6344a6843679d6594b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11392 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py deleted file mode 100644 index 95e509c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py +++ /dev/null @@ -1,8 +0,0 @@ -__all__ = ("tomllib",) - -import sys - -if sys.version_info >= (3, 11): - import tomllib -else: - from pip._vendor import tomli as tomllib diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py deleted file mode 100644 index 37b0e65..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py +++ /dev/null @@ -1,330 +0,0 @@ -import json -import os -import sys -import tempfile -from contextlib import contextmanager -from os.path import abspath -from os.path import join as pjoin -from subprocess import STDOUT, check_call, check_output - -from ._in_process import _in_proc_script_path - - -def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: - json.dump(obj, f, **kwargs) - - -def read_json(path): - with open(path, encoding='utf-8') as f: - return json.load(f) - - -class BackendUnavailable(Exception): - """Will be raised if the backend cannot be imported in the hook process.""" - def __init__(self, traceback): - self.traceback = traceback - - -class BackendInvalid(Exception): - """Will be raised if the backend is invalid.""" - def __init__(self, backend_name, backend_path, message): - super().__init__(message) - self.backend_name = backend_name - self.backend_path = backend_path - - -class HookMissing(Exception): - """Will be raised on missing hooks (if a fallback can't be used).""" - def __init__(self, hook_name): - super().__init__(hook_name) - self.hook_name = hook_name - - -class UnsupportedOperation(Exception): - """May be raised by build_sdist if the backend indicates that it can't.""" - def __init__(self, traceback): - self.traceback = traceback - - -def default_subprocess_runner(cmd, cwd=None, extra_environ=None): - """The default method of calling the wrapper subprocess. - - This uses :func:`subprocess.check_call` under the hood. - """ - env = os.environ.copy() - if extra_environ: - env.update(extra_environ) - - check_call(cmd, cwd=cwd, env=env) - - -def quiet_subprocess_runner(cmd, cwd=None, extra_environ=None): - """Call the subprocess while suppressing output. - - This uses :func:`subprocess.check_output` under the hood. - """ - env = os.environ.copy() - if extra_environ: - env.update(extra_environ) - - check_output(cmd, cwd=cwd, env=env, stderr=STDOUT) - - -def norm_and_check(source_tree, requested): - """Normalise and check a backend path. - - Ensure that the requested backend path is specified as a relative path, - and resolves to a location under the given source tree. - - Return an absolute version of the requested path. - """ - if os.path.isabs(requested): - raise ValueError("paths must be relative") - - abs_source = os.path.abspath(source_tree) - abs_requested = os.path.normpath(os.path.join(abs_source, requested)) - # We have to use commonprefix for Python 2.7 compatibility. So we - # normalise case to avoid problems because commonprefix is a character - # based comparison :-( - norm_source = os.path.normcase(abs_source) - norm_requested = os.path.normcase(abs_requested) - if os.path.commonprefix([norm_source, norm_requested]) != norm_source: - raise ValueError("paths must be inside source tree") - - return abs_requested - - -class BuildBackendHookCaller: - """A wrapper to call the build backend hooks for a source directory. - """ - - def __init__( - self, - source_dir, - build_backend, - backend_path=None, - runner=None, - python_executable=None, - ): - """ - :param source_dir: The source directory to invoke the build backend for - :param build_backend: The build backend spec - :param backend_path: Additional path entries for the build backend spec - :param runner: The :ref:`subprocess runner ` to use - :param python_executable: - The Python executable used to invoke the build backend - """ - if runner is None: - runner = default_subprocess_runner - - self.source_dir = abspath(source_dir) - self.build_backend = build_backend - if backend_path: - backend_path = [ - norm_and_check(self.source_dir, p) for p in backend_path - ] - self.backend_path = backend_path - self._subprocess_runner = runner - if not python_executable: - python_executable = sys.executable - self.python_executable = python_executable - - @contextmanager - def subprocess_runner(self, runner): - """A context manager for temporarily overriding the default - :ref:`subprocess runner `. - - .. code-block:: python - - hook_caller = BuildBackendHookCaller(...) - with hook_caller.subprocess_runner(quiet_subprocess_runner): - ... - """ - prev = self._subprocess_runner - self._subprocess_runner = runner - try: - yield - finally: - self._subprocess_runner = prev - - def _supported_features(self): - """Return the list of optional features supported by the backend.""" - return self._call_hook('_supported_features', {}) - - def get_requires_for_build_wheel(self, config_settings=None): - """Get additional dependencies required for building a wheel. - - :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] - - .. admonition:: Fallback - - If the build backend does not defined a hook with this name, an - empty list will be returned. - """ - return self._call_hook('get_requires_for_build_wheel', { - 'config_settings': config_settings - }) - - def prepare_metadata_for_build_wheel( - self, metadata_directory, config_settings=None, - _allow_fallback=True): - """Prepare a ``*.dist-info`` folder with metadata for this project. - - :returns: Name of the newly created subfolder within - ``metadata_directory``, containing the metadata. - :rtype: str - - .. admonition:: Fallback - - If the build backend does not define a hook with this name and - ``_allow_fallback`` is truthy, the backend will be asked to build a - wheel via the ``build_wheel`` hook and the dist-info extracted from - that will be returned. - """ - return self._call_hook('prepare_metadata_for_build_wheel', { - 'metadata_directory': abspath(metadata_directory), - 'config_settings': config_settings, - '_allow_fallback': _allow_fallback, - }) - - def build_wheel( - self, wheel_directory, config_settings=None, - metadata_directory=None): - """Build a wheel from this project. - - :returns: - The name of the newly created wheel within ``wheel_directory``. - - .. admonition:: Interaction with fallback - - If the ``build_wheel`` hook was called in the fallback for - :meth:`prepare_metadata_for_build_wheel`, the build backend would - not be invoked. Instead, the previously built wheel will be copied - to ``wheel_directory`` and the name of that file will be returned. - """ - if metadata_directory is not None: - metadata_directory = abspath(metadata_directory) - return self._call_hook('build_wheel', { - 'wheel_directory': abspath(wheel_directory), - 'config_settings': config_settings, - 'metadata_directory': metadata_directory, - }) - - def get_requires_for_build_editable(self, config_settings=None): - """Get additional dependencies required for building an editable wheel. - - :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] - - .. admonition:: Fallback - - If the build backend does not defined a hook with this name, an - empty list will be returned. - """ - return self._call_hook('get_requires_for_build_editable', { - 'config_settings': config_settings - }) - - def prepare_metadata_for_build_editable( - self, metadata_directory, config_settings=None, - _allow_fallback=True): - """Prepare a ``*.dist-info`` folder with metadata for this project. - - :returns: Name of the newly created subfolder within - ``metadata_directory``, containing the metadata. - :rtype: str - - .. admonition:: Fallback - - If the build backend does not define a hook with this name and - ``_allow_fallback`` is truthy, the backend will be asked to build a - wheel via the ``build_editable`` hook and the dist-info - extracted from that will be returned. - """ - return self._call_hook('prepare_metadata_for_build_editable', { - 'metadata_directory': abspath(metadata_directory), - 'config_settings': config_settings, - '_allow_fallback': _allow_fallback, - }) - - def build_editable( - self, wheel_directory, config_settings=None, - metadata_directory=None): - """Build an editable wheel from this project. - - :returns: - The name of the newly created wheel within ``wheel_directory``. - - .. admonition:: Interaction with fallback - - If the ``build_editable`` hook was called in the fallback for - :meth:`prepare_metadata_for_build_editable`, the build backend - would not be invoked. Instead, the previously built wheel will be - copied to ``wheel_directory`` and the name of that file will be - returned. - """ - if metadata_directory is not None: - metadata_directory = abspath(metadata_directory) - return self._call_hook('build_editable', { - 'wheel_directory': abspath(wheel_directory), - 'config_settings': config_settings, - 'metadata_directory': metadata_directory, - }) - - def get_requires_for_build_sdist(self, config_settings=None): - """Get additional dependencies required for building an sdist. - - :returns: A list of :pep:`dependency specifiers <508>`. - :rtype: list[str] - """ - return self._call_hook('get_requires_for_build_sdist', { - 'config_settings': config_settings - }) - - def build_sdist(self, sdist_directory, config_settings=None): - """Build an sdist from this project. - - :returns: - The name of the newly created sdist within ``wheel_directory``. - """ - return self._call_hook('build_sdist', { - 'sdist_directory': abspath(sdist_directory), - 'config_settings': config_settings, - }) - - def _call_hook(self, hook_name, kwargs): - extra_environ = {'PEP517_BUILD_BACKEND': self.build_backend} - - if self.backend_path: - backend_path = os.pathsep.join(self.backend_path) - extra_environ['PEP517_BACKEND_PATH'] = backend_path - - with tempfile.TemporaryDirectory() as td: - hook_input = {'kwargs': kwargs} - write_json(hook_input, pjoin(td, 'input.json'), indent=2) - - # Run the hook in a subprocess - with _in_proc_script_path() as script: - python = self.python_executable - self._subprocess_runner( - [python, abspath(str(script)), hook_name, td], - cwd=self.source_dir, - extra_environ=extra_environ - ) - - data = read_json(pjoin(td, 'output.json')) - if data.get('unsupported'): - raise UnsupportedOperation(data.get('traceback', '')) - if data.get('no_backend'): - raise BackendUnavailable(data.get('traceback', '')) - if data.get('backend_invalid'): - raise BackendInvalid( - backend_name=self.build_backend, - backend_path=self.backend_path, - message=data.get('backend_error', '') - ) - if data.get('hook_missing'): - raise HookMissing(data.get('missing_hook_name') or hook_name) - return data['return_val'] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py deleted file mode 100644 index 917fa06..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -"""This is a subpackage because the directory is on sys.path for _in_process.py - -The subpackage should stay as empty as possible to avoid shadowing modules that -the backend might import. -""" - -import importlib.resources as resources - -try: - resources.files -except AttributeError: - # Python 3.8 compatibility - def _in_proc_script_path(): - return resources.path(__package__, '_in_process.py') -else: - def _in_proc_script_path(): - return resources.as_file( - resources.files(__package__).joinpath('_in_process.py')) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 768398f702be3808f978062119037512456f71bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmZuv!H&}~5VhT;EumW>fw*w7xb?6#hzkd_0s+@Ouqz>Yv7Fd#+$M2kJ6)yc{gCc) z|A24Fl@q_f0T`zX6oDO2X6*62nddPlCkcXajXx}(5`?}4<9Lk0cn!T^Y}C`Nb0<3 zsc=-4weOYMIH%JB01OpdqroK?(p>3kMN1=_LOH+|J_!k=kd&$XT*Wyd%e+H(%9c8`7?a6r?whYWpw5{iT_K@)64WBkKJ44XX@ zk3s2~Kzrf`H+UZbBQP(J4fkiU9l);}3CEYZP+c6Pv*CU>UK?EnxIauBv=N;4xDP;a zfu;ygar9$0>_(hRlX2cXJiHa~G5<|-k7YxjchfiCTb(vuy|>obKHC3ay78++Pn_X^ T6#yeN84{A<37!)2eG>l!7i!!I diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc deleted file mode 100644 index 5ecb7bf09b9e528ef8fd10950c899e9b021eb3c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9709 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py b/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py deleted file mode 100644 index ee511ff..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +++ /dev/null @@ -1,353 +0,0 @@ -"""This is invoked in a subprocess to call the build backend hooks. - -It expects: -- Command line args: hook_name, control_dir -- Environment variables: - PEP517_BUILD_BACKEND=entry.point:spec - PEP517_BACKEND_PATH=paths (separated with os.pathsep) -- control_dir/input.json: - - {"kwargs": {...}} - -Results: -- control_dir/output.json - - {"return_val": ...} -""" -import json -import os -import os.path -import re -import shutil -import sys -import traceback -from glob import glob -from importlib import import_module -from os.path import join as pjoin - -# This file is run as a script, and `import wrappers` is not zip-safe, so we -# include write_json() and read_json() from wrappers.py. - - -def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: - json.dump(obj, f, **kwargs) - - -def read_json(path): - with open(path, encoding='utf-8') as f: - return json.load(f) - - -class BackendUnavailable(Exception): - """Raised if we cannot import the backend""" - def __init__(self, traceback): - self.traceback = traceback - - -class BackendInvalid(Exception): - """Raised if the backend is invalid""" - def __init__(self, message): - self.message = message - - -class HookMissing(Exception): - """Raised if a hook is missing and we are not executing the fallback""" - def __init__(self, hook_name=None): - super().__init__(hook_name) - self.hook_name = hook_name - - -def contained_in(filename, directory): - """Test if a file is located within the given directory.""" - filename = os.path.normcase(os.path.abspath(filename)) - directory = os.path.normcase(os.path.abspath(directory)) - return os.path.commonprefix([filename, directory]) == directory - - -def _build_backend(): - """Find and load the build backend""" - # Add in-tree backend directories to the front of sys.path. - backend_path = os.environ.get('PEP517_BACKEND_PATH') - if backend_path: - extra_pathitems = backend_path.split(os.pathsep) - sys.path[:0] = extra_pathitems - - ep = os.environ['PEP517_BUILD_BACKEND'] - mod_path, _, obj_path = ep.partition(':') - try: - obj = import_module(mod_path) - except ImportError: - raise BackendUnavailable(traceback.format_exc()) - - if backend_path: - if not any( - contained_in(obj.__file__, path) - for path in extra_pathitems - ): - raise BackendInvalid("Backend was not loaded from backend-path") - - if obj_path: - for path_part in obj_path.split('.'): - obj = getattr(obj, path_part) - return obj - - -def _supported_features(): - """Return the list of options features supported by the backend. - - Returns a list of strings. - The only possible value is 'build_editable'. - """ - backend = _build_backend() - features = [] - if hasattr(backend, "build_editable"): - features.append("build_editable") - return features - - -def get_requires_for_build_wheel(config_settings): - """Invoke the optional get_requires_for_build_wheel hook - - Returns [] if the hook is not defined. - """ - backend = _build_backend() - try: - hook = backend.get_requires_for_build_wheel - except AttributeError: - return [] - else: - return hook(config_settings) - - -def get_requires_for_build_editable(config_settings): - """Invoke the optional get_requires_for_build_editable hook - - Returns [] if the hook is not defined. - """ - backend = _build_backend() - try: - hook = backend.get_requires_for_build_editable - except AttributeError: - return [] - else: - return hook(config_settings) - - -def prepare_metadata_for_build_wheel( - metadata_directory, config_settings, _allow_fallback): - """Invoke optional prepare_metadata_for_build_wheel - - Implements a fallback by building a wheel if the hook isn't defined, - unless _allow_fallback is False in which case HookMissing is raised. - """ - backend = _build_backend() - try: - hook = backend.prepare_metadata_for_build_wheel - except AttributeError: - if not _allow_fallback: - raise HookMissing() - else: - return hook(metadata_directory, config_settings) - # fallback to build_wheel outside the try block to avoid exception chaining - # which can be confusing to users and is not relevant - whl_basename = backend.build_wheel(metadata_directory, config_settings) - return _get_wheel_metadata_from_wheel(whl_basename, metadata_directory, - config_settings) - - -def prepare_metadata_for_build_editable( - metadata_directory, config_settings, _allow_fallback): - """Invoke optional prepare_metadata_for_build_editable - - Implements a fallback by building an editable wheel if the hook isn't - defined, unless _allow_fallback is False in which case HookMissing is - raised. - """ - backend = _build_backend() - try: - hook = backend.prepare_metadata_for_build_editable - except AttributeError: - if not _allow_fallback: - raise HookMissing() - try: - build_hook = backend.build_editable - except AttributeError: - raise HookMissing(hook_name='build_editable') - else: - whl_basename = build_hook(metadata_directory, config_settings) - return _get_wheel_metadata_from_wheel(whl_basename, - metadata_directory, - config_settings) - else: - return hook(metadata_directory, config_settings) - - -WHEEL_BUILT_MARKER = 'PEP517_ALREADY_BUILT_WHEEL' - - -def _dist_info_files(whl_zip): - """Identify the .dist-info folder inside a wheel ZipFile.""" - res = [] - for path in whl_zip.namelist(): - m = re.match(r'[^/\\]+-[^/\\]+\.dist-info/', path) - if m: - res.append(path) - if res: - return res - raise Exception("No .dist-info folder found in wheel") - - -def _get_wheel_metadata_from_wheel( - whl_basename, metadata_directory, config_settings): - """Extract the metadata from a wheel. - - Fallback for when the build backend does not - define the 'get_wheel_metadata' hook. - """ - from zipfile import ZipFile - with open(os.path.join(metadata_directory, WHEEL_BUILT_MARKER), 'wb'): - pass # Touch marker file - - whl_file = os.path.join(metadata_directory, whl_basename) - with ZipFile(whl_file) as zipf: - dist_info = _dist_info_files(zipf) - zipf.extractall(path=metadata_directory, members=dist_info) - return dist_info[0].split('/')[0] - - -def _find_already_built_wheel(metadata_directory): - """Check for a wheel already built during the get_wheel_metadata hook. - """ - if not metadata_directory: - return None - metadata_parent = os.path.dirname(metadata_directory) - if not os.path.isfile(pjoin(metadata_parent, WHEEL_BUILT_MARKER)): - return None - - whl_files = glob(os.path.join(metadata_parent, '*.whl')) - if not whl_files: - print('Found wheel built marker, but no .whl files') - return None - if len(whl_files) > 1: - print('Found multiple .whl files; unspecified behaviour. ' - 'Will call build_wheel.') - return None - - # Exactly one .whl file - return whl_files[0] - - -def build_wheel(wheel_directory, config_settings, metadata_directory=None): - """Invoke the mandatory build_wheel hook. - - If a wheel was already built in the - prepare_metadata_for_build_wheel fallback, this - will copy it rather than rebuilding the wheel. - """ - prebuilt_whl = _find_already_built_wheel(metadata_directory) - if prebuilt_whl: - shutil.copy2(prebuilt_whl, wheel_directory) - return os.path.basename(prebuilt_whl) - - return _build_backend().build_wheel(wheel_directory, config_settings, - metadata_directory) - - -def build_editable(wheel_directory, config_settings, metadata_directory=None): - """Invoke the optional build_editable hook. - - If a wheel was already built in the - prepare_metadata_for_build_editable fallback, this - will copy it rather than rebuilding the wheel. - """ - backend = _build_backend() - try: - hook = backend.build_editable - except AttributeError: - raise HookMissing() - else: - prebuilt_whl = _find_already_built_wheel(metadata_directory) - if prebuilt_whl: - shutil.copy2(prebuilt_whl, wheel_directory) - return os.path.basename(prebuilt_whl) - - return hook(wheel_directory, config_settings, metadata_directory) - - -def get_requires_for_build_sdist(config_settings): - """Invoke the optional get_requires_for_build_wheel hook - - Returns [] if the hook is not defined. - """ - backend = _build_backend() - try: - hook = backend.get_requires_for_build_sdist - except AttributeError: - return [] - else: - return hook(config_settings) - - -class _DummyException(Exception): - """Nothing should ever raise this exception""" - - -class GotUnsupportedOperation(Exception): - """For internal use when backend raises UnsupportedOperation""" - def __init__(self, traceback): - self.traceback = traceback - - -def build_sdist(sdist_directory, config_settings): - """Invoke the mandatory build_sdist hook.""" - backend = _build_backend() - try: - return backend.build_sdist(sdist_directory, config_settings) - except getattr(backend, 'UnsupportedOperation', _DummyException): - raise GotUnsupportedOperation(traceback.format_exc()) - - -HOOK_NAMES = { - 'get_requires_for_build_wheel', - 'prepare_metadata_for_build_wheel', - 'build_wheel', - 'get_requires_for_build_editable', - 'prepare_metadata_for_build_editable', - 'build_editable', - 'get_requires_for_build_sdist', - 'build_sdist', - '_supported_features', -} - - -def main(): - if len(sys.argv) < 3: - sys.exit("Needs args: hook_name, control_dir") - hook_name = sys.argv[1] - control_dir = sys.argv[2] - if hook_name not in HOOK_NAMES: - sys.exit("Unknown hook: %s" % hook_name) - hook = globals()[hook_name] - - hook_input = read_json(pjoin(control_dir, 'input.json')) - - json_out = {'unsupported': False, 'return_val': None} - try: - json_out['return_val'] = hook(**hook_input['kwargs']) - except BackendUnavailable as e: - json_out['no_backend'] = True - json_out['traceback'] = e.traceback - except BackendInvalid as e: - json_out['backend_invalid'] = True - json_out['backend_error'] = e.message - except GotUnsupportedOperation as e: - json_out['unsupported'] = True - json_out['traceback'] = e.traceback - except HookMissing as e: - json_out['hook_missing'] = True - json_out['missing_hook_name'] = e.hook_name or hook_name - - write_json(json_out, pjoin(control_dir, 'output.json'), indent=2) - - -if __name__ == '__main__': - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py deleted file mode 100644 index 10ff67f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py +++ /dev/null @@ -1,182 +0,0 @@ -# __ -# /__) _ _ _ _ _/ _ -# / ( (- (/ (/ (- _) / _) -# / - -""" -Requests HTTP Library -~~~~~~~~~~~~~~~~~~~~~ - -Requests is an HTTP library, written in Python, for human beings. -Basic GET usage: - - >>> import requests - >>> r = requests.get('https://www.python.org') - >>> r.status_code - 200 - >>> b'Python is a programming language' in r.content - True - -... or POST: - - >>> payload = dict(key1='value1', key2='value2') - >>> r = requests.post('https://httpbin.org/post', data=payload) - >>> print(r.text) - { - ... - "form": { - "key1": "value1", - "key2": "value2" - }, - ... - } - -The other HTTP methods are supported - see `requests.api`. Full documentation -is at . - -:copyright: (c) 2017 by Kenneth Reitz. -:license: Apache 2.0, see LICENSE for more details. -""" - -import warnings - -from pip._vendor import urllib3 - -from .exceptions import RequestsDependencyWarning - -charset_normalizer_version = None - -try: - from pip._vendor.chardet import __version__ as chardet_version -except ImportError: - chardet_version = None - - -def check_compatibility(urllib3_version, chardet_version, charset_normalizer_version): - urllib3_version = urllib3_version.split(".") - assert urllib3_version != ["dev"] # Verify urllib3 isn't installed from git. - - # Sometimes, urllib3 only reports its version as 16.1. - if len(urllib3_version) == 2: - urllib3_version.append("0") - - # Check urllib3 for compatibility. - major, minor, patch = urllib3_version # noqa: F811 - major, minor, patch = int(major), int(minor), int(patch) - # urllib3 >= 1.21.1 - assert major >= 1 - if major == 1: - assert minor >= 21 - - # Check charset_normalizer for compatibility. - if chardet_version: - major, minor, patch = chardet_version.split(".")[:3] - major, minor, patch = int(major), int(minor), int(patch) - # chardet_version >= 3.0.2, < 6.0.0 - assert (3, 0, 2) <= (major, minor, patch) < (6, 0, 0) - elif charset_normalizer_version: - major, minor, patch = charset_normalizer_version.split(".")[:3] - major, minor, patch = int(major), int(minor), int(patch) - # charset_normalizer >= 2.0.0 < 4.0.0 - assert (2, 0, 0) <= (major, minor, patch) < (4, 0, 0) - else: - raise Exception("You need either charset_normalizer or chardet installed") - - -def _check_cryptography(cryptography_version): - # cryptography < 1.3.4 - try: - cryptography_version = list(map(int, cryptography_version.split("."))) - except ValueError: - return - - if cryptography_version < [1, 3, 4]: - warning = "Old version of cryptography ({}) may cause slowdown.".format( - cryptography_version - ) - warnings.warn(warning, RequestsDependencyWarning) - - -# Check imported dependencies for compatibility. -try: - check_compatibility( - urllib3.__version__, chardet_version, charset_normalizer_version - ) -except (AssertionError, ValueError): - warnings.warn( - "urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported " - "version!".format( - urllib3.__version__, chardet_version, charset_normalizer_version - ), - RequestsDependencyWarning, - ) - -# Attempt to enable urllib3's fallback for SNI support -# if the standard library doesn't support SNI or the -# 'ssl' library isn't available. -try: - # Note: This logic prevents upgrading cryptography on Windows, if imported - # as part of pip. - from pip._internal.utils.compat import WINDOWS - if not WINDOWS: - raise ImportError("pip internals: don't import cryptography on Windows") - try: - import ssl - except ImportError: - ssl = None - - if not getattr(ssl, "HAS_SNI", False): - from pip._vendor.urllib3.contrib import pyopenssl - - pyopenssl.inject_into_urllib3() - - # Check cryptography version - from cryptography import __version__ as cryptography_version - - _check_cryptography(cryptography_version) -except ImportError: - pass - -# urllib3's DependencyWarnings should be silenced. -from pip._vendor.urllib3.exceptions import DependencyWarning - -warnings.simplefilter("ignore", DependencyWarning) - -# Set default logging handler to avoid "No handler found" warnings. -import logging -from logging import NullHandler - -from . import packages, utils -from .__version__ import ( - __author__, - __author_email__, - __build__, - __cake__, - __copyright__, - __description__, - __license__, - __title__, - __url__, - __version__, -) -from .api import delete, get, head, options, patch, post, put, request -from .exceptions import ( - ConnectionError, - ConnectTimeout, - FileModeWarning, - HTTPError, - JSONDecodeError, - ReadTimeout, - RequestException, - Timeout, - TooManyRedirects, - URLRequired, -) -from .models import PreparedRequest, Request, Response -from .sessions import Session, session -from .status_codes import codes - -logging.getLogger(__name__).addHandler(NullHandler()) - -# FileModeWarnings go off per the default. -warnings.simplefilter("default", FileModeWarning, append=True) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 3bfedc2893525676a628008c41fe93da0331f5d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4010 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 tJfI0I^Af$V+6pqvpA*D!96er1^beiMugL%a diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc deleted file mode 100644 index e0cfc87c209935f8b4eab75e46588ffbeefa330d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1629 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc deleted file mode 100644 index dbb6caaa6ba02a2ebf855fcebdb3461455d3c5a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6729 zcmeHM&u<&Y72YLjNv32waa=b|e_##;CR(pb~vnX3N!*sogM?J2|hsTjnPseTsAzD%rPwkO%$;w`qmeXCimwxTo}Y1Qr7 z7F&+$Z1u|3Rn{J{4`q@_+rxBaA2qA3SVb~1vc=Xj9`)pEgBdB=?OPk0TRWSqlWHud zB@@ze6`N-DGan|X`{M;8jZtZ0q7phLzX}=)xIV;XuH$CCkNr=)-@o-y`LO)3B+7^0 zp)dSDmJUmQ_J8O9*eiLWRPid_Z_2*6<6ZU4J44_1=-*Fqi4sgw;r}@6c^g>D>Oq9v z@n2&vp)8midOO0?Td_-$l*y5Axqm2WdyT@ z;g2?V!?1zIo$cLQceZx&hnt)0H}cl@ot(hl@s=yRa|h(UvTwCzP2+%N5yg_R{L_QL2luRViSehsTeu^;h5*@ z@zA8nj2`RkgPl8D*rirHR*!fa;juk}$CJXDFTGSxav}AzY);zV+}+(~H}h%JWrhkN zMgV*6KB6?;SMq7$vWBCeXm=&^ioj3Gd5Vi%q?=l6%F3Apl0; z{ngAAhpLalu%0J{L2MQ9Xqil+R1k!Kx|E9?umrO(bfVpRkQwoWwIxD!b;WgIe7Qz5 zoE{CQ2Q;Wt?7a8fDGgSO(!?V3?b%T#Yk1`dSsE*R?+d-&V9~(Xw7*yQ+G#NCNn|}( zsaR>nt%PkL|MDVeri%*MQ3;uVJYKxO=!FTIyXrtDZig;;h2iXq5X+fBB)ce?IGhCW zTrL+vP*FKbLO0VP>+=N3L_%rgWe6T}Wv5ypFb|}jMhE4Q=?2;oMMg51Coggu@LWKs?h`OnqqPNbj6)m$C=KC!4cMh4V@8naUIWRgY zMXBI%oDTQ26iQ>Y*&w=}rm^HnlWjV?1wt8TKNO0fs1X4bg#h&+*rrktSy@ti!xcV}owgSxg>EmP?wt zhcW^!nM0vw*zWBe7D;VYM@8Jq!qs^>I%SDIK$+){jN9ItS0IVD zcT)V0tG5kCyKn(vViv^;$;??JPZG<`O!n(dcB{j7shBs|a*c%5koxxJs8+}8N*9jP z(hfB0;Zdn6GzJ&STL^?ax98~51g{prSkTPLw45;AGrTKXt^9$pwY4>3nkh2<yJ}aVln(E7bwtD5t&(~acy)>T7 z$=kRL;h!U>8@m{FaZ+wK@h8UkU1XlUi0dez$hzMK$G`jAroXO3-&Ng zq&k?GCV+${c=tTkIgiWC;Z|*2^1u5p*S9spmPuPume}&=mvOT=SR8ttk|-Ve%Fj76 z7;u>ju1D@l#oM=DsozH+ba*{qrH#*!LK}plGQ7_@PhRYBvFE6_1h>l55KP#Mu=o|zemmYmqI5=TNC3(eOevPa=pK}MJDMp@@a{HcU+BYzM8`tM#!i#4$ zJwMa5<~tZY^gni|^G|Rxw>}*>JEdc0uJHY1p;Q!Qmj_=_EWMnSk?D&h2;O|6@H@_# zq?W4nfkKTzb+l|!hKvLuN?B2~*fKX$L1~tyMv6(@2TLWs!CI6~ThnktE$i_EmFoJJ z6HymVZ0G%Pg*YtodKJ1CO1VJOZ^C~kgXKYnp9x%s0Wlzq z=&#d_0CH*?rvlu?<Svg*c>yiOcgZ1 zf#|eag%8Kx0WMdoE-z_%{*UA|;QkUx;! zh*oQQs{32@($-deaXi1bC(>wdZ|u1PW6m*%tUDU%c!W#xE>fN0oq%Khac4&2_~V6Z g`Tx4CAznR06r|!URTs+DD+}irmZ}%%-_nJD1Mw;2G5`Po diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc deleted file mode 100644 index ef5c03c9aa4269f729b6e12b5ff74c1998b44628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8125 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 F`QM+7(?S3M diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc deleted file mode 100644 index c4e52f2e895bbb15948dc6bf0058cf73d0b307c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 812 zcmY*X!EV$r5Vf<}?#iMSf?l`{H&$vB5El*zs7fnUs+OwV(_Sn$p6t3!>|i?!dqGI; zC-4*eQjT!q7r20v4Nyj!k!Rw0GcSH-dz+D9xAZ)J9TD=qP3~H#kvGBJaR`#kiKH?r z=$y&{(yM4i?SoK>i$NLBV@h-^hjQzd%wrtN(RE}W;}*s@azCAXz1#t&;d&_)GK9;E>Ziv4m1-QvZc@q?1l#lN~=v@4jHp31w zYcJik_EisqyY}%txuTLjA{S&5O>O&W5;c)=&8Xl0E3sRl+J&E4x-=!Gi&|yYWazz0 zuV1*-WmZ(-KkZjWx^xvf(?VUQ)!HwOex5vgnmXlizo+2RN>wQj*QBxOA0ecj5Rz(b z2VvZ9aMy0bXqPu*&P$;*=aW%0;#``Ha~rpd4MS)i2FRp`>?9TR@V8Nm5;<>%l~vmR jW3xGp+V=6wjn-ZTX%crogg6@CW6=&BN8`Z`jeq?H+mz>% diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc deleted file mode 100644 index 0ce393eaceb7cb6fe1a49c97dd553e2a743dd29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1374 zcmY*Z&2rl|5GF-Rq9{trkK_0+3Df+_jYT)^p@&YVGffZajN?q*6D}NzTuG1tf&oA$ z$|0w|Odq4Kfoo5Gg`T>gRYq`ff;(@pHNgLXQyXzGGMT>Mcyp6oucm*WDxx)h9BfTcF%R=5K z{e}lD;sY|^Lo(zeGHSFQyTxylI}H!nUA{%O8s2C3_%_*Yc*O4W9kRoB$u8d`dwiel z^8<3gACL$9A$iCjkw-ixF@H=RH~s_m4SzzO@TcS{e@341=j1tmL0-5Hyd-11U&0|d z1jJd3d<(DO2ndeb zX%pFqRXSZ&nNnuwrgbxLd~CXDT8KPNO~0bmB)x>P5K`K#8c(g1i8i@UX*mpvLwR%pwFcFXgNSh4lRr<+_G@n!W|2DEo@o1XJH$`3^(zcW{~&o z%8rFy3wsv!5ikK-n*Ow=Ow%&8Mti!_Sch<$DQqKq9E?Y?0PPtQnKpy6<{)XF>Q#kq z16+bR$hG;GBfqy>Tllv~7J@@EuW2qt4qDUX;s=$eTxRxE9#x`H2^Qlr!7oj!rln3M z-yJ84YB;K}d9pdE1Z$RTYL;C0cCv1$NwqS;kLynO> V+j0@{I&L3Ce&D;l8{ieX{{faRr}Y2; diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc deleted file mode 100644 index 130c5021b54dbf6156ee98d877a6d1018859af34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18700 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc deleted file mode 100644 index 1958236eb5b9ecae516192ff99112bd7fe8057f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5744 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 BE{XsE diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc deleted file mode 100644 index a4a6efe0442756eef8ba18f4c2fba8dfac5fac37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2870 zcmZ`*-EZT@5hs_Ql4#4m++EYOXxRjfqT(zyxPGM9q6l)h78f+Odrtbn7lPKVE!q^x zE?0KsNI(JSwfzU0hr7rAN#$evbnkr%khs5DQa;}W6}7vwyR$R1vopWlVq>Fg;P<)t z@0jQ>#Q=FdmxeU$3osJIas+~h1XBU865V!E{=OSg7pqqQ<;=0>hbyf$br@<2P> z&HPy>>Vjrb@50BdhuI(sOyiG6-m?v{vG|2)&2g}8mG^&LRxfic{= z7<^Rlc_zY1k*g%l)BHF*oF9i$l!a8`RAi-)?^MIlb2!A<9h$YB@;pK7&1IIQhxebG zm_WZ5$7e!TX_3bT0H&jzG?@E{ztyn}n;pf!O;o0WrA zYx>92vr`9yE+ypX3=cql4$QyFb|f3d%K5TmUMp{JewO*)g+QEhY*=nT!wR4o_Nmd)R+Zb7Q zUzk{XpX8@`ah?xZZIe4|ul3-tSNm%f^_^00FMc^b>dkhzT~fPbPoiq8T2%FRxhNOc zIh5u{MeWRzlR~0N^QM`|q7J0UL{gzT6IpGa6e$_A`HHH$FZb7S|7pnYA=SP-98Zgx z7$475h@1$e((&ng)wr6-q(pe_lm)NGXCglvBge;$*%Tk+Dpg{qOeUwvv8cvnT8<$) z=YboFO{6*#upHSH_*SKp!;(5%a3 z26Bxp0$)O-$T#WJ)7Hv?2zTCj(n^-K%&k`_oTLE!O5Hcfj2t{8@I?7R@Q*FqY1eE$yYXbeA4vZKs4! z0pZid+rJgLkcpy%X(EY0h$23@0pcS>hl>DHVpe-??8r^{PHv&vl|9r$raN`N1?qLU z)aIv>FnSosZCdeNRCTuz76Z_u{=7oC#McNPz1|EE`d325h}&6`r58d*xCZuc4ICW& zPFf_(C0Vz=$yf&yxhPd}j8L2|BwZ7=zYeb9t;Ucakc2mB%G*15Bqj1cq#-StES7Im zrFD3%+Q@?L`tIKTqg@d3A09n9c)Yh8?|$;p2alfA-mw6RD=7!GP;0fYL+PPgZ>{yO z9W(4k8|!S3$@|f3uOyrv4BAVwVfofKH``1E?Pb~YfD-Ft&_cFv`lDg#&?T%%`9s(j z^u=VjiT96< zcy=y^`?#&tVyBd8-rzbtMaXnQNqxaq;fDu%yQ7bv(*Yr{I~ATO@u>iQx@pdFNA3>o z+R+k#ja8A?4xi7;O54_WaQ{~`{jU2pz0Rr!sBFV$bi}?HumFY5e#;EdXIIQ3%EpJ@ RSH1%-%YV!NrSA|Z{|^$!8ub7G diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc deleted file mode 100644 index db94cb6f81c4d4cae140a1e9c6259b0ab6ee7b0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmY*Y&ubGw6rR~1$-3HFDteUhppZj%D}qQVMX?8=&`Q%&p=_o*lg*G#W;-*9q-;cJ z&tCio6ufx!-x=`af8ohD+k~bM-rKj|y!Y+AZ)WA%T8zN1@p1o;htOa5vTA^#x8V9I z1cpu#!v#LY%wzsFI`vq zoC?M@F#}F=TG4Y+3L^mMOVxnK3o_D>5k1p}kCHfkH>IMa=fKe{?8I@er?{@%c2|xykl!M#sxvGw5y=2>le9FhBL7MO{PX}_u(_$iWC39|! zNQZB9s&hpvF)p?$$#e=m)3g-lX*DwgIewMA+)lMHe5<1QkQQ90m8jAT%9vE?@+g2A zjv}dMHr{0-H@O^DdmC=2ZbO^s@)_fOIw?(dQ@C5ooR)eoxvlPC8-6%CI_Tc+_$CX1 z!LHruf4F2`$0~w6_aQ8;1&Ql90M{QO)VT5mazcFv$$ns$sTT$!!&jbq1OhhLK04c& z2X#<;eGKCIKk-*Q59^S56Re)s;oQ4;T!YLV|MK;|&=ocL0B#a(ZU}K>3pu80M&ua4 zLV!l35fMeXk5#9g~u=gdv%3YzuPGH+v#$=vlstrJ+ fX0xZ{;NHAF||`ZK&|_c|DgRJ^XCJ4 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc deleted file mode 100644 index e930b4f39bfb3d9eebef16bca8df8a9f2c5a9f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24271 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc deleted file mode 100644 index 58665eeac6c7c419e69ea3438696bde4a3f6ca6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmYjM!EO^V5S{UEc9(@lMM4d|z==Z+T|;|l4-w+PnFHKbLaSvxNlZ3t$My!&6H?$m z+9O}Uzxc|DUjQND&_?P=e)hbX@w}%F4srUb2M{2zg%SjN z4ew7&6cOPFN=6Z}EmFJ%!U@oT;A67I(DSrRDJ8aG_8FyD88H!$;2O<&VDE`&ivqu~ zV<_|81f|EYyTyR=5lmq9c$Elz2jk>d*bQ&SkxzTmw(`T7kEQ5ppEmQ_2y&MXwA4kl zrcNkRcq}fT+$9XHda}+Ix^5QrjBGK!?<2dhKD}l9;ms_GYR}|VC6`(mS5-b~Ra3Xt z$E~!^r%NUJmaLD$!{^r3#@SEO&3)8T=ZAf#4Nc|e@L6d14(4G{{~vx&`CKiD&wAMy z)sS24{eqYzo)y3{+^PGF6DV;MdambMr?@G*Qc1JU#)$B@~@sL`3dnGrUT}85+ zed$&8P;3`>*GmOntSw`Wzz6KznA{_Qk^nIrAeR%zIUE=Xl6*;kpzeZ`v{_p?)u{}PXP2u;Bc5nS#_fx5V$A{sciHDEl z^6OeE<)%t0S9A4-R?_5MFX{4blnmUBhS^M)(i-cS4Xc?cWspz1R>N+NmBwT~)5tb+ zrJT&$jeK*wG%oXFjY4yxG|`+aO*W@WQ_bnpv@FjyW}365+2)DTiRQ`D$>yojDOsLt zoNk^eooSveoo${gook*iotNeL#zW1AOAj|MlrG5U@rKiUr1VJh(bA*M$4ZYiA1^&F z%L|PsnopLVl=+Fq#pb2bC7GXW6q`?#o@zc_db&ARnrmJzU2e{o=9>$ph31vgmF6?0 zXPVEJo^3u?dQMAudi_tiQ(Lqnp zq}-G4sdrNDsXe{)0-jF0XYh2!dtuKgExKpjbMK@|f7;cTQ^oVWpUVpGt*++>{=Dz` zey!c|v!6Ts%Vt+LYrfNLyWNK8bVU1p&Gmez;w-CAoc3DXs|HTccAAw|Wy5nSE!XLI z!ms&(<9k6+Yi*!@RkVG--=TA<+HP;vJb%uqbc4+~HvBdoi}Ts{2^>pBEy~>yt|vVA zX000FaV)4cJ=bdlmG=QCDU?hG?Q*LU)b4v_KM?4KAHA}&a`(Dh=>(p@<3xF_;@7HW zcEU2y#z8dF1P)YhU*S2XJFS}U@V=~RU8q2koNcy(^bp?oa(cQ_Lw_d*f`l~DDd$(@hzIW@!O8M2>uiajW3jOEhmFp|Fqlvr1!<;=go^O<*7iB9;N z?QR1PJDrN}_v=hx7q+~eGFGwN04PRjeDd70RfFIa|18`|es19MJ4iwhoo-54VQM)Q zg2*7B54Gh~fH#4*r;C%wrI_3H}I6&(+)Hsy6zh9q)=uaq;8^Y z*9^^@sW;QR>Cgz%FQ(qQ5*k24v-jrU}4|PzM=1GyLza*DJ(sf_Gk6CK&#%$KK^mrMd;0XoE^ouC+A4XzZre^E7O#K5}(?2kc zyk5|zOin7;5#Dm_`b!c_u})-PZ{MyLw;% zg^fL+u4|(8bnm10ut}g{BqaCZU6@BM=!zE0zSlK_*<^#my_?J%x27SERWpP6KM<(`(pZDV?8ptYvLM;4)22GMoBB> zpaPB^Y;l6z4a?4I*-Tb5wce%UmS>(^>(Iv|*g|CQGnik(0~raK1@5|J3PxQE&APT_ zh)EZWCN%0;LSWF7$YDe8r;syIX38=XWoedi(^v!Vj4gvqrLMCc@>XE(%V#%ppu3rM zeK!+Y{%u)1gKuy1n^5LtE9uUwAwj_Iy$lfq!X42^67uU1n%bh)lk4xO1$Gp-CEXWZ zvwh!l6Kqo(2$H)JnVUh-DeCXv#f+DtG@l@_)P5ZdVCm(hq9t;85!stJ^4hef z>w|JLZ5zEOj|G+^9lX4>QXND4$!``Jf}MoFmw&DItT8e*o zm#gPVHr~~=)MrvHZ95f=qtx01g{~L2(&DvX!c8;(%PH6TngME`c~}3U25LWfz!q}* zQ?7lW2@hk_IJVt_JGMU^%!GydELzEJkRWj6IlP+)Cjh}&!18vO$2Czu5$4_8yLi*G z_)hFH#q1{bPhws0=!D>Gp>gyT=MKer?R+zyKO@7r1$G)lk zjJB&`To?oUP~#fFN2sxdFy~`#AidP`rg|@Z2!PyJ1UoGn z-z&r_&*fLW)<&?|%O}q(J00(PQ!Ap<^4C3aIZ>1%OQ~SuGiX$lkU(0pfT>=k8D*#! zw!1-O-S>Z42XPyHD)r3}m2L8uiW?aXuLU`)^7f!JF~cv?)kfR*qAWx} z5%}A+U^6nQZb~L4KE*0FzUee7RS-ik6%soO>JXTpAVm<5uuegEYuy?sUla7X?M6AY z7j%7W2Ke1s)|iGQ3E~D>s6T{g8ln|6bF6&7OuWR(MyK70OzKdgz-K#ARmB7!F>|S* zM-v^TA11FUr>b!zOPo&%sAfk6sh5ESQ&ViW#A9p?e7NNnXC*-ww`BK_n8X{%i8q=2 z7?U!SRU}bir{-a%u~g+pg^JSY%Uj#v(LPuVHb|_o>J-Lzzt+Y=Bp?<|#zXEm5akqy zC=0o?F}o;qy5RS2xi34Yj9MPpDyU>u)*9Ynp{zG1qMGi7L-k~12l8H9;55Rx40coBMSJ5&*gjzQ5C|j09A8OBDqfrC>3!r)^X~yrjN38=`-GMSqsTF`d z)H@_30b>{}S~Y;jpwB^H4lv$VN&`n1jgJUZOT~-?G6}$f`ec-eCjdK_==#z^A{@TR zC+Np9Kz5=?B;H{{5<6%nvMC6$(jjmaA?lrj?B!Fyu+jhwg3bp3I>QDCnjiEYIaXj9 z#_ACWp;*gHY64$GMnOm-0)T;=fk_1q@Q~hvcp5{^DFr3HYyemY%`>ozK;gG`GZ0V4 zA)aJ*=9OUL>Z)9cB%!%)yT*a$e=M}b$HI*GSTIJmxTmwdtEn&zMrT%j6;mAEU*TQ$ zVEySr$M&UxgXC(*0YP7{ZFIr%K%AU4S>QwLr2%mSqGB5rd6sj(0;>$R8XyGg2mrK# z{T~8ZLLGFMSJ67S5MX$1rw>U>cglC~-TBea%<($~%m5~7@jNt|dFKuV@9moJsmfm9 zG;08|)<(ZIH3_Qu(liv%ILnSN!HQFbjV`v$5I$vJ9XS|`E}@eBmXhJa=GreCUOymA z8*`LgNiE=AF5u-6NKVuOi4px~`YQQQ(~BYicVCotq<+QT%rR}gr!Osu+W@O#R)IHJ zwL%s0O7SR@cbU+F5!s*eb|fzrO_pVl#F~RblU0_I<0(#?llp=(H^biRdqV0UHm!%- zZQ&lqo*&1T3&b9BSSz0g#@M8A}aYCSMiMvI4 z%`#`fPG?PZW%b@;f8ZXep%g9XWlNBD#~=~GztHr`Q69hU?sI|WPItp0eyzjZD9U+vJI&0mo9s;D>eGw}3r zT>ig6GB5y@j19>9U)M@zYy?WvD<;i78P}HPo-sE|bI(|Ai~2jdAy~d&)hHTmiW=?pfp}+;i@E)S7f3av#Qh%Dvz^ zxKF!}xR2sK<38p-j{B_pg!?4!C)|tfCEQQCMfWM(Pq{e|^7$we?^5Lp*vRXBH6$?t z#xwVrABLGSFF0vW&A-d}*9H zu9zTw7vDfaDh9n#P`Z9kQ>1K^c9GoFTD72D{z($B^QdU2Ez^QU2|}A;Ws$cmGiy!&m9zoj>7g=@)Yd{0#MP1GsKm-MDh%!p|1m^C&&AI<}(sO=fhU(>r zJ(?@Yg_bk?HFgX=rDN7$iKd~9EEIma2}q(eOX)!xe->e*o`U44!;nOsCIio0s%}F= zG5sQP8NUeWQmbcao(*z)De5qFcmeC<`-KDck;OHEYZBK~K>PO$zMBbVUF}`K8=j#Z z)lcl{$g^!Jrv@icehN=;%)9!#S(s@kwHlS5!hCPQDFLY;Ze3vgqV$<9uHGH>$~spM z6$%y^*{pOT&sjp`BzrLqzLJlaG z^i^RLiEB&t3d4l&#Zp7Rv1CdyAgvBdg_3?GglzF}KSQlU#Evx~cpgFfDEan#kW@}N zFfI;eGmt$J;WL(F{P{zR*>4E2N@oouPbpojArCR62FX7%;jOE{aO14_5TbM!CMhBQ zB47U{CV!a;9dl|F=a~CCldDYRC}J(~r&%Bgcj7FJZ91~=Nb4NN!oH~|UZ;OTWPBE_ zWV3nbiaH1n^~Omp3&R8q;xJXHKZq@OlZRnLhfHk!7qieim5_~iHi<0B2 zmqTLl+sM#GvabQtbm)kg(ClPE|0hGEQ^4JZ-j@fSWnspp1!4-u<>@fjIS;JQp~MKM z>t>jPakLOl9He1r9fLt!|Ej(_8_vQ+KBLUFbt{}+*U;XqG^w5lPe@$c#*Q6}i$|fJ z5i4?&d8;-;@(QYzt8OZY#-R8!e@?Rgc3#<;S!~-FV^)uI6JqG;z-g4 zv4Fotg;X$gElS;xF$9$2|4%+ve0|Zm)b3D>sx*qu&3*&`t;1_OQm<~)6$Im606HK$ z0a*|O<(I>u9tzz$8O2~ZBn1IAU?u+IaTCuT(D9r@zq+I^-42j)P7Py@10t4QZq&90 zHX*h-2v4E~G8rVTo{4Vrq2nROkBo-}H2OTC#r}NcoMLhwgV530#>U5y4u)5H-C;q5=zQ1{w z)rR@2Dr$sF$RB~HiD0K1;4*+$9yV{n6o8;zagRU{#nh3mX|r$wf(&Ph5RC?{Ib2K( z0J)JZlM2DYO;`r~VBrRgaWFN?Jzy(G`ik8TBi+5y-i85?_M|q>`d>_an#eJI() zkzNV)z$Mi581AEH2d#xN!8&G%upbN^@`3Qy7grHKCp8==?tX5hExIF;H$~@aT*n8w zk!vtC2ijzkn%D*Q!)|1?ev>g?9&)6N%y=25Dol1obUoVCVo&Sgj*hgj2IcHF)XsYl%+RuV^wcX%w`*{%Jescty#Kp|9kpj|E7MnEKO&r$2n(-V#tKd``=^Lgk zS|iv*t%(pshG)TG?6$XC1U}g=Eb20{WTbPczqKHK-Bf{kFru{q_AkS*hR}wgwNd0+ zxvxgLz6C)CJp(SVPF|%oNBXtBS*va;TOS~correB?|bcGWK=DUjD?d|zz6wg<<(_r zxT&qvoDOwa0+u4v$8^yI3XsafhFA$UN1LVH^Tu^&4R#uZPcWz*o-ly|^L3;N3X&$4 zVWg4%lFTJ?AZEkhGK98y9dg&5!$T(bCDR$Tv~nK@6IB|&Y^b);B3kvK0djJap^~)h zx7-CxA5n7%Kp6!d+P2~)0;5sOE}LsswmfI2-Nnw(KM=bl?spsXq$;{HGC{cCF4tO@ zF|^Cgn#+Z{^ja-=t>{#O00C$)Dg%8OCmZkF2%H>hiBV1nvGdlu4aY@vBtDWcXF$38 zUZdTS=4xUvh!i73=>ZCKz|a_u33S4z11kPnB1ZC$wz zD=39S$qq8c$YRHP8gv$9!)?Q%M&mk$ERO)zN;#cCd6t<`sYB>5!qP1N zc<<+bFPlfu9$bUw2fBsw?`O?v+Mp*AnLC!>NAzU_?a>hMDO}%mkRW&jF|I1u0h%eo z>qBjwwilgJF(hKM_aBxqT5=#5Z4=}i#BB}44MqJPEY1F3iK1^j^~O`m?YrpQiKS6E zU^cphb$TYivsPE*DX)UZ0X>I&ZyyePf}6P_eje$2I^6VL5c4m&8SfbiJgA^WmKw<6 zO?v_Feptu4a)I;qtk%mVTLF9D1Gho^byUYPzn?7gox3Zy?<_6JNz+U(wD{0aS(bjs9BZ6X;}d zl|Y;P(#Y^4m5?3^PzF#5QU++`26gGsjOl|>p|vhqWx90!$X5CPcb)NwQa@m{v1Iy# zr-HwLEr*e|Z)Ad*n#`z}9?-wROY!S?br@+8zzHc5P$q51XLG$iobkmG=VzZAokm*& zID^VX}kR&M=~?f4HKoh&s&@ta)O=&@Sl7!CMy+X3U>ea{!)1zSHlFa(cKpiF0Q2K| zZZSkgKPCgU5T=E4Ymdh^%&Q2*!f`hn$KB?FF*m)ZA>Lcx&$<>*6fh2DKj$(Y9U)%z zJltccI%AOwu8lZui|$vRIG}q>n%Jc>v1?1WZ02-ocPy9+$K0`Zwa_jjPTbAH%x|w7 z2}JB7`k_860;Y)9&h2Icy3Rerq!>LmR3jG{jd>>kJ$OLn_Q}&ds@b z9K*}WBY63ij(GY!BF_)P{Qg;YJhbI1<@d9QHMhe&Ml>55{%`cAf^&n`a8M=#b|mKk z7qeYHk8rgygsVNY^LJFZS`wz_{{xKYVXV6iCjDPg4oX)!jzf@BmqE-3DTj#% zXA;}hEvfhmPB_YVjY@cAKBsQ6R8A)Wp*$F#GWVR5P5v6ft6}R!_ zpxwC*zqt%46ziy199J@v{9H203fquVJ77bZcyv)(28BnO5dWMtZt*1!mbKJCMv1Q+ z^Z{3Q3DpW21`yi_CC=iw9(`|?Rxm7M+Q=eQcow;=F{@1?qe-#OE1FH>Mp&_(44|+f&0t0@D|2QuZ zTCVXf&q8GO4IY1eljl0^-7(ZOfuUo>y0=b;rfYUn{?oYgpzRAmx^AH*1POPZkMkDu zp$SKPMh26DCc%-P!O4hJeT)u#E{HCl@7Hxkq(JYV2@obZ z&u172iNHv`_h^Fd4>rDyFfeKWebBm!2Z9#8zW|yk0F8{%*w+u}*~RI?gA|S$oeT{f z;U&wdx6%PXC)9pf{~97ZzNi)T-sk!|k~m*!4~CVtf37%OH-gR{-q2Fom$))yC>{-$S%-M{`mC=l{H>gzKz+~mVMrj;R0cC2kU>Zph z=(vV_WWjv6UVB?G-0$$#{8N+_K*Ho%#c69AQQi6n1+zDkY{C!~JeJl=gg%c}hF0Ao z#pg-`MG?0R4K-6f%4DjF)@$ztra=MRVe91CC# z^naeSAjv5Js1T3d7b@k!nGvOd&_bxe7b*W55=j_RUrJp~{bXt#B*@j@u{j^f@^LC( z3K1j{fUD3v;K8<32qEV!M2ATm=k`5s15Rc9y8=hX+{J-|$xLYwm(kPMh9SU+w;tax z(i(Asa7Dm5ga4LL1^uL19J{G1n!J1jv&gO3B$A zMCIv<{6HjBixDgL{}D}yf6rm1B?ha($`L1n#TW6!uW+zLT=E2L@X&Avm5PNW^+Q-S zf8s0b;vy1+OMR93uQB;^NTN)+?6#}rviKbq{dp#TfysMJevQdbGm)(EH<nFG#zy?3J#A0e*K7l) zeisH&+J|%5-?cw$=j>cImmP<5CU0l$CHsP1u+w%fZwj_r#WnInFG{B30x|#=z^zqE zD3%N*;b4Q1z!-65;9n9Qd|Cb19lAnd>V%+Q*8|O=Yu8;|be@^NGJhqBYjzL|$baXf zqKX*$x8~st*5CsNr%kHTh0K2lq&}9?5x$a&#ui<&h*Ib?y*0QnaVQUNA|eZ9;I&$# z7VOMBONdqC*~H|`IJ}m9Gw0{}3>Az;{_CM6j(QOH0m6#|RhWfSfgq;Th5%1_ZFa&$?LL`o#c-iEDK{2@($89~8BiYFh5vWNlt-ScpxD~I8@9>*{ zjU+OB{DTdX5fxDm(FY9`W$w#B-^ga~e5W*v3B>aP+Yvlf?gq7nug-gZgKcrkWfYz~ zuM$~m>C}G*VceiP_L*Z&>LGdN#+gXngi(Z1*2Cdj=@0V<$5W*UA&;G^Xk{61#zfY?j9j z<1ZpHQ+9^`t3*nmkWKU2Y5rN0)@dVe<+UqXwqWxVrICNQFp>KFWSIIq|MJWK3ld1; A&;S4c diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc deleted file mode 100644 index ce0c43cc9f7df2d7f6147d3ee401433508e7a95d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4676 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 MSJ&({=hmnH1FW<%JOBUy diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index 7298e9c08f772687da0e0f433a915b64575fc56a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24450 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 VgT!6vd>Kg9Auf&8|$YY1o>XuAhcD+!4Q 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py deleted file mode 100644 index 5063c3f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py +++ /dev/null @@ -1,14 +0,0 @@ -# .-. .-. .-. . . .-. .-. .-. .-. -# |( |- |.| | | |- `-. | `-. -# ' ' `-' `-`.`-' `-' `-' ' `-' - -__title__ = "requests" -__description__ = "Python HTTP for Humans." -__url__ = "https://requests.readthedocs.io" -__version__ = "2.31.0" -__build__ = 0x023100 -__author__ = "Kenneth Reitz" -__author_email__ = "me@kennethreitz.org" -__license__ = "Apache 2.0" -__copyright__ = "Copyright Kenneth Reitz" -__cake__ = "\u2728 \U0001f370 \u2728" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py deleted file mode 100644 index f2cf635..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -requests._internal_utils -~~~~~~~~~~~~~~ - -Provides utility functions that are consumed internally by Requests -which depend on extremely few external helpers (such as compat) -""" -import re - -from .compat import builtin_str - -_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*$") -_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*$") -_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*$|^$") -_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*$|^$") - -_HEADER_VALIDATORS_STR = (_VALID_HEADER_NAME_RE_STR, _VALID_HEADER_VALUE_RE_STR) -_HEADER_VALIDATORS_BYTE = (_VALID_HEADER_NAME_RE_BYTE, _VALID_HEADER_VALUE_RE_BYTE) -HEADER_VALIDATORS = { - bytes: _HEADER_VALIDATORS_BYTE, - str: _HEADER_VALIDATORS_STR, -} - - -def to_native_string(string, encoding="ascii"): - """Given a string object, regardless of type, returns a representation of - that string in the native string type, encoding and decoding where - necessary. This assumes ASCII unless told otherwise. - """ - if isinstance(string, builtin_str): - out = string - else: - out = string.decode(encoding) - - return out - - -def unicode_is_ascii(u_string): - """Determine if unicode string only contains ASCII characters. - - :param str u_string: unicode string to check. Must be unicode - and not Python 2 `str`. - :rtype: bool - """ - assert isinstance(u_string, str) - try: - u_string.encode("ascii") - return True - except UnicodeEncodeError: - return False diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py deleted file mode 100644 index 10c1767..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py +++ /dev/null @@ -1,538 +0,0 @@ -""" -requests.adapters -~~~~~~~~~~~~~~~~~ - -This module contains the transport adapters that Requests uses to define -and maintain connections. -""" - -import os.path -import socket # noqa: F401 - -from pip._vendor.urllib3.exceptions import ClosedPoolError, ConnectTimeoutError -from pip._vendor.urllib3.exceptions import HTTPError as _HTTPError -from pip._vendor.urllib3.exceptions import InvalidHeader as _InvalidHeader -from pip._vendor.urllib3.exceptions import ( - LocationValueError, - MaxRetryError, - NewConnectionError, - ProtocolError, -) -from pip._vendor.urllib3.exceptions import ProxyError as _ProxyError -from pip._vendor.urllib3.exceptions import ReadTimeoutError, ResponseError -from pip._vendor.urllib3.exceptions import SSLError as _SSLError -from pip._vendor.urllib3.poolmanager import PoolManager, proxy_from_url -from pip._vendor.urllib3.util import Timeout as TimeoutSauce -from pip._vendor.urllib3.util import parse_url -from pip._vendor.urllib3.util.retry import Retry - -from .auth import _basic_auth_str -from .compat import basestring, urlparse -from .cookies import extract_cookies_to_jar -from .exceptions import ( - ConnectionError, - ConnectTimeout, - InvalidHeader, - InvalidProxyURL, - InvalidSchema, - InvalidURL, - ProxyError, - ReadTimeout, - RetryError, - SSLError, -) -from .models import Response -from .structures import CaseInsensitiveDict -from .utils import ( - DEFAULT_CA_BUNDLE_PATH, - extract_zipped_paths, - get_auth_from_url, - get_encoding_from_headers, - prepend_scheme_if_needed, - select_proxy, - urldefragauth, -) - -try: - from pip._vendor.urllib3.contrib.socks import SOCKSProxyManager -except ImportError: - - def SOCKSProxyManager(*args, **kwargs): - raise InvalidSchema("Missing dependencies for SOCKS support.") - - -DEFAULT_POOLBLOCK = False -DEFAULT_POOLSIZE = 10 -DEFAULT_RETRIES = 0 -DEFAULT_POOL_TIMEOUT = None - - -class BaseAdapter: - """The Base Transport Adapter""" - - def __init__(self): - super().__init__() - - def send( - self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None - ): - """Sends PreparedRequest object. Returns Response object. - - :param request: The :class:`PreparedRequest ` being sent. - :param stream: (optional) Whether to stream the request content. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use - :param cert: (optional) Any user-provided SSL certificate to be trusted. - :param proxies: (optional) The proxies dictionary to apply to the request. - """ - raise NotImplementedError - - def close(self): - """Cleans up adapter specific items.""" - raise NotImplementedError - - -class HTTPAdapter(BaseAdapter): - """The built-in HTTP Adapter for urllib3. - - Provides a general-case interface for Requests sessions to contact HTTP and - HTTPS urls by implementing the Transport Adapter interface. This class will - usually be created by the :class:`Session ` class under the - covers. - - :param pool_connections: The number of urllib3 connection pools to cache. - :param pool_maxsize: The maximum number of connections to save in the pool. - :param max_retries: The maximum number of retries each connection - should attempt. Note, this applies only to failed DNS lookups, socket - connections and connection timeouts, never to requests where data has - made it to the server. By default, Requests does not retry failed - connections. If you need granular control over the conditions under - which we retry a request, import urllib3's ``Retry`` class and pass - that instead. - :param pool_block: Whether the connection pool should block for connections. - - Usage:: - - >>> import requests - >>> s = requests.Session() - >>> a = requests.adapters.HTTPAdapter(max_retries=3) - >>> s.mount('http://', a) - """ - - __attrs__ = [ - "max_retries", - "config", - "_pool_connections", - "_pool_maxsize", - "_pool_block", - ] - - def __init__( - self, - pool_connections=DEFAULT_POOLSIZE, - pool_maxsize=DEFAULT_POOLSIZE, - max_retries=DEFAULT_RETRIES, - pool_block=DEFAULT_POOLBLOCK, - ): - if max_retries == DEFAULT_RETRIES: - self.max_retries = Retry(0, read=False) - else: - self.max_retries = Retry.from_int(max_retries) - self.config = {} - self.proxy_manager = {} - - super().__init__() - - self._pool_connections = pool_connections - self._pool_maxsize = pool_maxsize - self._pool_block = pool_block - - self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block) - - def __getstate__(self): - return {attr: getattr(self, attr, None) for attr in self.__attrs__} - - def __setstate__(self, state): - # Can't handle by adding 'proxy_manager' to self.__attrs__ because - # self.poolmanager uses a lambda function, which isn't pickleable. - self.proxy_manager = {} - self.config = {} - - for attr, value in state.items(): - setattr(self, attr, value) - - self.init_poolmanager( - self._pool_connections, self._pool_maxsize, block=self._pool_block - ) - - def init_poolmanager( - self, connections, maxsize, block=DEFAULT_POOLBLOCK, **pool_kwargs - ): - """Initializes a urllib3 PoolManager. - - This method should not be called from user code, and is only - exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param connections: The number of urllib3 connection pools to cache. - :param maxsize: The maximum number of connections to save in the pool. - :param block: Block when no free connections are available. - :param pool_kwargs: Extra keyword arguments used to initialize the Pool Manager. - """ - # save these values for pickling - self._pool_connections = connections - self._pool_maxsize = maxsize - self._pool_block = block - - self.poolmanager = PoolManager( - num_pools=connections, - maxsize=maxsize, - block=block, - **pool_kwargs, - ) - - def proxy_manager_for(self, proxy, **proxy_kwargs): - """Return urllib3 ProxyManager for the given proxy. - - This method should not be called from user code, and is only - exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param proxy: The proxy to return a urllib3 ProxyManager for. - :param proxy_kwargs: Extra keyword arguments used to configure the Proxy Manager. - :returns: ProxyManager - :rtype: urllib3.ProxyManager - """ - if proxy in self.proxy_manager: - manager = self.proxy_manager[proxy] - elif proxy.lower().startswith("socks"): - username, password = get_auth_from_url(proxy) - manager = self.proxy_manager[proxy] = SOCKSProxyManager( - proxy, - username=username, - password=password, - num_pools=self._pool_connections, - maxsize=self._pool_maxsize, - block=self._pool_block, - **proxy_kwargs, - ) - else: - proxy_headers = self.proxy_headers(proxy) - manager = self.proxy_manager[proxy] = proxy_from_url( - proxy, - proxy_headers=proxy_headers, - num_pools=self._pool_connections, - maxsize=self._pool_maxsize, - block=self._pool_block, - **proxy_kwargs, - ) - - return manager - - def cert_verify(self, conn, url, verify, cert): - """Verify a SSL certificate. This method should not be called from user - code, and is only exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param conn: The urllib3 connection object associated with the cert. - :param url: The requested URL. - :param verify: Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use - :param cert: The SSL certificate to verify. - """ - if url.lower().startswith("https") and verify: - - cert_loc = None - - # Allow self-specified cert location. - if verify is not True: - cert_loc = verify - - if not cert_loc: - cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) - - if not cert_loc or not os.path.exists(cert_loc): - raise OSError( - f"Could not find a suitable TLS CA certificate bundle, " - f"invalid path: {cert_loc}" - ) - - conn.cert_reqs = "CERT_REQUIRED" - - if not os.path.isdir(cert_loc): - conn.ca_certs = cert_loc - else: - conn.ca_cert_dir = cert_loc - else: - conn.cert_reqs = "CERT_NONE" - conn.ca_certs = None - conn.ca_cert_dir = None - - if cert: - if not isinstance(cert, basestring): - conn.cert_file = cert[0] - conn.key_file = cert[1] - else: - conn.cert_file = cert - conn.key_file = None - if conn.cert_file and not os.path.exists(conn.cert_file): - raise OSError( - f"Could not find the TLS certificate file, " - f"invalid path: {conn.cert_file}" - ) - if conn.key_file and not os.path.exists(conn.key_file): - raise OSError( - f"Could not find the TLS key file, invalid path: {conn.key_file}" - ) - - def build_response(self, req, resp): - """Builds a :class:`Response ` object from a urllib3 - response. This should not be called from user code, and is only exposed - for use when subclassing the - :class:`HTTPAdapter ` - - :param req: The :class:`PreparedRequest ` used to generate the response. - :param resp: The urllib3 response object. - :rtype: requests.Response - """ - response = Response() - - # Fallback to None if there's no status_code, for whatever reason. - response.status_code = getattr(resp, "status", None) - - # Make headers case-insensitive. - response.headers = CaseInsensitiveDict(getattr(resp, "headers", {})) - - # Set encoding. - response.encoding = get_encoding_from_headers(response.headers) - response.raw = resp - response.reason = response.raw.reason - - if isinstance(req.url, bytes): - response.url = req.url.decode("utf-8") - else: - response.url = req.url - - # Add new cookies from the server. - extract_cookies_to_jar(response.cookies, req, resp) - - # Give the Response some context. - response.request = req - response.connection = self - - return response - - def get_connection(self, url, proxies=None): - """Returns a urllib3 connection for the given URL. This should not be - called from user code, and is only exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param url: The URL to connect to. - :param proxies: (optional) A Requests-style dictionary of proxies used on this request. - :rtype: urllib3.ConnectionPool - """ - proxy = select_proxy(url, proxies) - - if proxy: - proxy = prepend_scheme_if_needed(proxy, "http") - proxy_url = parse_url(proxy) - if not proxy_url.host: - raise InvalidProxyURL( - "Please check proxy URL. It is malformed " - "and could be missing the host." - ) - proxy_manager = self.proxy_manager_for(proxy) - conn = proxy_manager.connection_from_url(url) - else: - # Only scheme should be lower case - parsed = urlparse(url) - url = parsed.geturl() - conn = self.poolmanager.connection_from_url(url) - - return conn - - def close(self): - """Disposes of any internal state. - - Currently, this closes the PoolManager and any active ProxyManager, - which closes any pooled connections. - """ - self.poolmanager.clear() - for proxy in self.proxy_manager.values(): - proxy.clear() - - def request_url(self, request, proxies): - """Obtain the url to use when making the final request. - - If the message is being sent through a HTTP proxy, the full URL has to - be used. Otherwise, we should only use the path portion of the URL. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param request: The :class:`PreparedRequest ` being sent. - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs. - :rtype: str - """ - proxy = select_proxy(request.url, proxies) - scheme = urlparse(request.url).scheme - - is_proxied_http_request = proxy and scheme != "https" - using_socks_proxy = False - if proxy: - proxy_scheme = urlparse(proxy).scheme.lower() - using_socks_proxy = proxy_scheme.startswith("socks") - - url = request.path_url - if is_proxied_http_request and not using_socks_proxy: - url = urldefragauth(request.url) - - return url - - def add_headers(self, request, **kwargs): - """Add any headers needed by the connection. As of v2.0 this does - nothing by default, but is left for overriding by users that subclass - the :class:`HTTPAdapter `. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param request: The :class:`PreparedRequest ` to add headers to. - :param kwargs: The keyword arguments from the call to send(). - """ - pass - - def proxy_headers(self, proxy): - """Returns a dictionary of the headers to add to any request sent - through a proxy. This works with urllib3 magic to ensure that they are - correctly sent to the proxy, rather than in a tunnelled request if - CONNECT is being used. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param proxy: The url of the proxy being used for this request. - :rtype: dict - """ - headers = {} - username, password = get_auth_from_url(proxy) - - if username: - headers["Proxy-Authorization"] = _basic_auth_str(username, password) - - return headers - - def send( - self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None - ): - """Sends PreparedRequest object. Returns Response object. - - :param request: The :class:`PreparedRequest ` being sent. - :param stream: (optional) Whether to stream the request content. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple or urllib3 Timeout object - :param verify: (optional) Either a boolean, in which case it controls whether - we verify the server's TLS certificate, or a string, in which case it - must be a path to a CA bundle to use - :param cert: (optional) Any user-provided SSL certificate to be trusted. - :param proxies: (optional) The proxies dictionary to apply to the request. - :rtype: requests.Response - """ - - try: - conn = self.get_connection(request.url, proxies) - except LocationValueError as e: - raise InvalidURL(e, request=request) - - self.cert_verify(conn, request.url, verify, cert) - url = self.request_url(request, proxies) - self.add_headers( - request, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - ) - - chunked = not (request.body is None or "Content-Length" in request.headers) - - if isinstance(timeout, tuple): - try: - connect, read = timeout - timeout = TimeoutSauce(connect=connect, read=read) - except ValueError: - raise ValueError( - f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " - f"or a single float to set both timeouts to the same value." - ) - elif isinstance(timeout, TimeoutSauce): - pass - else: - timeout = TimeoutSauce(connect=timeout, read=timeout) - - try: - resp = conn.urlopen( - method=request.method, - url=url, - body=request.body, - headers=request.headers, - redirect=False, - assert_same_host=False, - preload_content=False, - decode_content=False, - retries=self.max_retries, - timeout=timeout, - chunked=chunked, - ) - - except (ProtocolError, OSError) as err: - raise ConnectionError(err, request=request) - - except MaxRetryError as e: - if isinstance(e.reason, ConnectTimeoutError): - # TODO: Remove this in 3.0.0: see #2811 - if not isinstance(e.reason, NewConnectionError): - raise ConnectTimeout(e, request=request) - - if isinstance(e.reason, ResponseError): - raise RetryError(e, request=request) - - if isinstance(e.reason, _ProxyError): - raise ProxyError(e, request=request) - - if isinstance(e.reason, _SSLError): - # This branch is for urllib3 v1.22 and later. - raise SSLError(e, request=request) - - raise ConnectionError(e, request=request) - - except ClosedPoolError as e: - raise ConnectionError(e, request=request) - - except _ProxyError as e: - raise ProxyError(e) - - except (_SSLError, _HTTPError) as e: - if isinstance(e, _SSLError): - # This branch is for urllib3 versions earlier than v1.22 - raise SSLError(e, request=request) - elif isinstance(e, ReadTimeoutError): - raise ReadTimeout(e, request=request) - elif isinstance(e, _InvalidHeader): - raise InvalidHeader(e, request=request) - else: - raise - - return self.build_response(request, resp) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py deleted file mode 100644 index cd0b3ee..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py +++ /dev/null @@ -1,157 +0,0 @@ -""" -requests.api -~~~~~~~~~~~~ - -This module implements the Requests API. - -:copyright: (c) 2012 by Kenneth Reitz. -:license: Apache2, see LICENSE for more details. -""" - -from . import sessions - - -def request(method, url, **kwargs): - """Constructs and sends a :class:`Request `. - - :param method: method for the new :class:`Request` object: ``GET``, ``OPTIONS``, ``HEAD``, ``POST``, ``PUT``, ``PATCH``, or ``DELETE``. - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary, list of tuples or bytes to send - in the query string for the :class:`Request`. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. - :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. - :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. - ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` - or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string - defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers - to add for the file. - :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How many seconds to wait for the server to send data - before giving up, as a float, or a :ref:`(connect timeout, read - timeout) ` tuple. - :type timeout: float or tuple - :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. - :type allow_redirects: bool - :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use. Defaults to ``True``. - :param stream: (optional) if ``False``, the response content will be immediately downloaded. - :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. - :return: :class:`Response ` object - :rtype: requests.Response - - Usage:: - - >>> import requests - >>> req = requests.request('GET', 'https://httpbin.org/get') - >>> req - - """ - - # By using the 'with' statement we are sure the session is closed, thus we - # avoid leaving sockets open which can trigger a ResourceWarning in some - # cases, and look like a memory leak in others. - with sessions.Session() as session: - return session.request(method=method, url=url, **kwargs) - - -def get(url, params=None, **kwargs): - r"""Sends a GET request. - - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary, list of tuples or bytes to send - in the query string for the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("get", url, params=params, **kwargs) - - -def options(url, **kwargs): - r"""Sends an OPTIONS request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("options", url, **kwargs) - - -def head(url, **kwargs): - r"""Sends a HEAD request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. If - `allow_redirects` is not provided, it will be set to `False` (as - opposed to the default :meth:`request` behavior). - :return: :class:`Response ` object - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", False) - return request("head", url, **kwargs) - - -def post(url, data=None, json=None, **kwargs): - r"""Sends a POST request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("post", url, data=data, json=json, **kwargs) - - -def put(url, data=None, **kwargs): - r"""Sends a PUT request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("put", url, data=data, **kwargs) - - -def patch(url, data=None, **kwargs): - r"""Sends a PATCH request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("patch", url, data=data, **kwargs) - - -def delete(url, **kwargs): - r"""Sends a DELETE request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("delete", url, **kwargs) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py deleted file mode 100644 index 9733686..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py +++ /dev/null @@ -1,315 +0,0 @@ -""" -requests.auth -~~~~~~~~~~~~~ - -This module contains the authentication handlers for Requests. -""" - -import hashlib -import os -import re -import threading -import time -import warnings -from base64 import b64encode - -from ._internal_utils import to_native_string -from .compat import basestring, str, urlparse -from .cookies import extract_cookies_to_jar -from .utils import parse_dict_header - -CONTENT_TYPE_FORM_URLENCODED = "application/x-www-form-urlencoded" -CONTENT_TYPE_MULTI_PART = "multipart/form-data" - - -def _basic_auth_str(username, password): - """Returns a Basic Auth string.""" - - # "I want us to put a big-ol' comment on top of it that - # says that this behaviour is dumb but we need to preserve - # it because people are relying on it." - # - Lukasa - # - # These are here solely to maintain backwards compatibility - # for things like ints. This will be removed in 3.0.0. - if not isinstance(username, basestring): - warnings.warn( - "Non-string usernames will no longer be supported in Requests " - "3.0.0. Please convert the object you've passed in ({!r}) to " - "a string or bytes object in the near future to avoid " - "problems.".format(username), - category=DeprecationWarning, - ) - username = str(username) - - if not isinstance(password, basestring): - warnings.warn( - "Non-string passwords will no longer be supported in Requests " - "3.0.0. Please convert the object you've passed in ({!r}) to " - "a string or bytes object in the near future to avoid " - "problems.".format(type(password)), - category=DeprecationWarning, - ) - password = str(password) - # -- End Removal -- - - if isinstance(username, str): - username = username.encode("latin1") - - if isinstance(password, str): - password = password.encode("latin1") - - authstr = "Basic " + to_native_string( - b64encode(b":".join((username, password))).strip() - ) - - return authstr - - -class AuthBase: - """Base class that all auth implementations derive from""" - - def __call__(self, r): - raise NotImplementedError("Auth hooks must be callable.") - - -class HTTPBasicAuth(AuthBase): - """Attaches HTTP Basic Authentication to the given Request object.""" - - def __init__(self, username, password): - self.username = username - self.password = password - - def __eq__(self, other): - return all( - [ - self.username == getattr(other, "username", None), - self.password == getattr(other, "password", None), - ] - ) - - def __ne__(self, other): - return not self == other - - def __call__(self, r): - r.headers["Authorization"] = _basic_auth_str(self.username, self.password) - return r - - -class HTTPProxyAuth(HTTPBasicAuth): - """Attaches HTTP Proxy Authentication to a given Request object.""" - - def __call__(self, r): - r.headers["Proxy-Authorization"] = _basic_auth_str(self.username, self.password) - return r - - -class HTTPDigestAuth(AuthBase): - """Attaches HTTP Digest Authentication to the given Request object.""" - - def __init__(self, username, password): - self.username = username - self.password = password - # Keep state in per-thread local storage - self._thread_local = threading.local() - - def init_per_thread_state(self): - # Ensure state is initialized just once per-thread - if not hasattr(self._thread_local, "init"): - self._thread_local.init = True - self._thread_local.last_nonce = "" - self._thread_local.nonce_count = 0 - self._thread_local.chal = {} - self._thread_local.pos = None - self._thread_local.num_401_calls = None - - def build_digest_header(self, method, url): - """ - :rtype: str - """ - - realm = self._thread_local.chal["realm"] - nonce = self._thread_local.chal["nonce"] - qop = self._thread_local.chal.get("qop") - algorithm = self._thread_local.chal.get("algorithm") - opaque = self._thread_local.chal.get("opaque") - hash_utf8 = None - - if algorithm is None: - _algorithm = "MD5" - else: - _algorithm = algorithm.upper() - # lambdas assume digest modules are imported at the top level - if _algorithm == "MD5" or _algorithm == "MD5-SESS": - - def md5_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.md5(x).hexdigest() - - hash_utf8 = md5_utf8 - elif _algorithm == "SHA": - - def sha_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha1(x).hexdigest() - - hash_utf8 = sha_utf8 - elif _algorithm == "SHA-256": - - def sha256_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha256(x).hexdigest() - - hash_utf8 = sha256_utf8 - elif _algorithm == "SHA-512": - - def sha512_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha512(x).hexdigest() - - hash_utf8 = sha512_utf8 - - KD = lambda s, d: hash_utf8(f"{s}:{d}") # noqa:E731 - - if hash_utf8 is None: - return None - - # XXX not implemented yet - entdig = None - p_parsed = urlparse(url) - #: path is request-uri defined in RFC 2616 which should not be empty - path = p_parsed.path or "/" - if p_parsed.query: - path += f"?{p_parsed.query}" - - A1 = f"{self.username}:{realm}:{self.password}" - A2 = f"{method}:{path}" - - HA1 = hash_utf8(A1) - HA2 = hash_utf8(A2) - - if nonce == self._thread_local.last_nonce: - self._thread_local.nonce_count += 1 - else: - self._thread_local.nonce_count = 1 - ncvalue = f"{self._thread_local.nonce_count:08x}" - s = str(self._thread_local.nonce_count).encode("utf-8") - s += nonce.encode("utf-8") - s += time.ctime().encode("utf-8") - s += os.urandom(8) - - cnonce = hashlib.sha1(s).hexdigest()[:16] - if _algorithm == "MD5-SESS": - HA1 = hash_utf8(f"{HA1}:{nonce}:{cnonce}") - - if not qop: - respdig = KD(HA1, f"{nonce}:{HA2}") - elif qop == "auth" or "auth" in qop.split(","): - noncebit = f"{nonce}:{ncvalue}:{cnonce}:auth:{HA2}" - respdig = KD(HA1, noncebit) - else: - # XXX handle auth-int. - return None - - self._thread_local.last_nonce = nonce - - # XXX should the partial digests be encoded too? - base = ( - f'username="{self.username}", realm="{realm}", nonce="{nonce}", ' - f'uri="{path}", response="{respdig}"' - ) - if opaque: - base += f', opaque="{opaque}"' - if algorithm: - base += f', algorithm="{algorithm}"' - if entdig: - base += f', digest="{entdig}"' - if qop: - base += f', qop="auth", nc={ncvalue}, cnonce="{cnonce}"' - - return f"Digest {base}" - - def handle_redirect(self, r, **kwargs): - """Reset num_401_calls counter on redirects.""" - if r.is_redirect: - self._thread_local.num_401_calls = 1 - - def handle_401(self, r, **kwargs): - """ - Takes the given response and tries digest-auth, if needed. - - :rtype: requests.Response - """ - - # If response is not 4xx, do not auth - # See https://github.com/psf/requests/issues/3772 - if not 400 <= r.status_code < 500: - self._thread_local.num_401_calls = 1 - return r - - if self._thread_local.pos is not None: - # Rewind the file position indicator of the body to where - # it was to resend the request. - r.request.body.seek(self._thread_local.pos) - s_auth = r.headers.get("www-authenticate", "") - - if "digest" in s_auth.lower() and self._thread_local.num_401_calls < 2: - - self._thread_local.num_401_calls += 1 - pat = re.compile(r"digest ", flags=re.IGNORECASE) - self._thread_local.chal = parse_dict_header(pat.sub("", s_auth, count=1)) - - # Consume content and release the original connection - # to allow our new request to reuse the same one. - r.content - r.close() - prep = r.request.copy() - extract_cookies_to_jar(prep._cookies, r.request, r.raw) - prep.prepare_cookies(prep._cookies) - - prep.headers["Authorization"] = self.build_digest_header( - prep.method, prep.url - ) - _r = r.connection.send(prep, **kwargs) - _r.history.append(r) - _r.request = prep - - return _r - - self._thread_local.num_401_calls = 1 - return r - - def __call__(self, r): - # Initialize per-thread state, if needed - self.init_per_thread_state() - # If we have a saved nonce, skip the 401 - if self._thread_local.last_nonce: - r.headers["Authorization"] = self.build_digest_header(r.method, r.url) - try: - self._thread_local.pos = r.body.tell() - except AttributeError: - # In the case of HTTPDigestAuth being reused and the body of - # the previous request was a file-like object, pos has the - # file position of the previous body. Ensure it's set to - # None. - self._thread_local.pos = None - r.register_hook("response", self.handle_401) - r.register_hook("response", self.handle_redirect) - self._thread_local.num_401_calls = 1 - - return r - - def __eq__(self, other): - return all( - [ - self.username == getattr(other, "username", None), - self.password == getattr(other, "password", None), - ] - ) - - def __ne__(self, other): - return not self == other diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py deleted file mode 100644 index 38696a1..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env python - -""" -requests.certs -~~~~~~~~~~~~~~ - -This module returns the preferred default CA certificate bundle. There is -only one — the one from the certifi package. - -If you are packaging Requests, e.g., for a Linux distribution or a managed -environment, you can change the definition of where() to return a separately -packaged CA bundle. -""" - -import os - -if "_PIP_STANDALONE_CERT" not in os.environ: - from pip._vendor.certifi import where -else: - def where(): - return os.environ["_PIP_STANDALONE_CERT"] - -if __name__ == "__main__": - print(where()) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py deleted file mode 100644 index 9ab2bb4..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py +++ /dev/null @@ -1,67 +0,0 @@ -""" -requests.compat -~~~~~~~~~~~~~~~ - -This module previously handled import compatibility issues -between Python 2 and Python 3. It remains for backwards -compatibility until the next major version. -""" - -from pip._vendor import chardet - -import sys - -# ------- -# Pythons -# ------- - -# Syntax sugar. -_ver = sys.version_info - -#: Python 2.x? -is_py2 = _ver[0] == 2 - -#: Python 3.x? -is_py3 = _ver[0] == 3 - -# Note: We've patched out simplejson support in pip because it prevents -# upgrading simplejson on Windows. -import json -from json import JSONDecodeError - -# Keep OrderedDict for backwards compatibility. -from collections import OrderedDict -from collections.abc import Callable, Mapping, MutableMapping -from http import cookiejar as cookielib -from http.cookies import Morsel -from io import StringIO - -# -------------- -# Legacy Imports -# -------------- -from urllib.parse import ( - quote, - quote_plus, - unquote, - unquote_plus, - urldefrag, - urlencode, - urljoin, - urlparse, - urlsplit, - urlunparse, -) -from urllib.request import ( - getproxies, - getproxies_environment, - parse_http_list, - proxy_bypass, - proxy_bypass_environment, -) - -builtin_str = str -str = str -bytes = bytes -basestring = (str, bytes) -numeric_types = (int, float) -integer_types = (int,) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py deleted file mode 100644 index bf54ab2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py +++ /dev/null @@ -1,561 +0,0 @@ -""" -requests.cookies -~~~~~~~~~~~~~~~~ - -Compatibility code to be able to use `cookielib.CookieJar` with requests. - -requests.utils imports from here, so be careful with imports. -""" - -import calendar -import copy -import time - -from ._internal_utils import to_native_string -from .compat import Morsel, MutableMapping, cookielib, urlparse, urlunparse - -try: - import threading -except ImportError: - import dummy_threading as threading - - -class MockRequest: - """Wraps a `requests.Request` to mimic a `urllib2.Request`. - - The code in `cookielib.CookieJar` expects this interface in order to correctly - manage cookie policies, i.e., determine whether a cookie can be set, given the - domains of the request and the cookie. - - The original request object is read-only. The client is responsible for collecting - the new headers via `get_new_headers()` and interpreting them appropriately. You - probably want `get_cookie_header`, defined below. - """ - - def __init__(self, request): - self._r = request - self._new_headers = {} - self.type = urlparse(self._r.url).scheme - - def get_type(self): - return self.type - - def get_host(self): - return urlparse(self._r.url).netloc - - def get_origin_req_host(self): - return self.get_host() - - def get_full_url(self): - # Only return the response's URL if the user hadn't set the Host - # header - if not self._r.headers.get("Host"): - return self._r.url - # If they did set it, retrieve it and reconstruct the expected domain - host = to_native_string(self._r.headers["Host"], encoding="utf-8") - parsed = urlparse(self._r.url) - # Reconstruct the URL as we expect it - return urlunparse( - [ - parsed.scheme, - host, - parsed.path, - parsed.params, - parsed.query, - parsed.fragment, - ] - ) - - def is_unverifiable(self): - return True - - def has_header(self, name): - return name in self._r.headers or name in self._new_headers - - def get_header(self, name, default=None): - return self._r.headers.get(name, self._new_headers.get(name, default)) - - def add_header(self, key, val): - """cookielib has no legitimate use for this method; add it back if you find one.""" - raise NotImplementedError( - "Cookie headers should be added with add_unredirected_header()" - ) - - def add_unredirected_header(self, name, value): - self._new_headers[name] = value - - def get_new_headers(self): - return self._new_headers - - @property - def unverifiable(self): - return self.is_unverifiable() - - @property - def origin_req_host(self): - return self.get_origin_req_host() - - @property - def host(self): - return self.get_host() - - -class MockResponse: - """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`. - - ...what? Basically, expose the parsed HTTP headers from the server response - the way `cookielib` expects to see them. - """ - - def __init__(self, headers): - """Make a MockResponse for `cookielib` to read. - - :param headers: a httplib.HTTPMessage or analogous carrying the headers - """ - self._headers = headers - - def info(self): - return self._headers - - def getheaders(self, name): - self._headers.getheaders(name) - - -def extract_cookies_to_jar(jar, request, response): - """Extract the cookies from the response into a CookieJar. - - :param jar: cookielib.CookieJar (not necessarily a RequestsCookieJar) - :param request: our own requests.Request object - :param response: urllib3.HTTPResponse object - """ - if not (hasattr(response, "_original_response") and response._original_response): - return - # the _original_response field is the wrapped httplib.HTTPResponse object, - req = MockRequest(request) - # pull out the HTTPMessage with the headers and put it in the mock: - res = MockResponse(response._original_response.msg) - jar.extract_cookies(res, req) - - -def get_cookie_header(jar, request): - """ - Produce an appropriate Cookie header string to be sent with `request`, or None. - - :rtype: str - """ - r = MockRequest(request) - jar.add_cookie_header(r) - return r.get_new_headers().get("Cookie") - - -def remove_cookie_by_name(cookiejar, name, domain=None, path=None): - """Unsets a cookie by name, by default over all domains and paths. - - Wraps CookieJar.clear(), is O(n). - """ - clearables = [] - for cookie in cookiejar: - if cookie.name != name: - continue - if domain is not None and domain != cookie.domain: - continue - if path is not None and path != cookie.path: - continue - clearables.append((cookie.domain, cookie.path, cookie.name)) - - for domain, path, name in clearables: - cookiejar.clear(domain, path, name) - - -class CookieConflictError(RuntimeError): - """There are two cookies that meet the criteria specified in the cookie jar. - Use .get and .set and include domain and path args in order to be more specific. - """ - - -class RequestsCookieJar(cookielib.CookieJar, MutableMapping): - """Compatibility class; is a cookielib.CookieJar, but exposes a dict - interface. - - This is the CookieJar we create by default for requests and sessions that - don't specify one, since some clients may expect response.cookies and - session.cookies to support dict operations. - - Requests does not use the dict interface internally; it's just for - compatibility with external client code. All requests code should work - out of the box with externally provided instances of ``CookieJar``, e.g. - ``LWPCookieJar`` and ``FileCookieJar``. - - Unlike a regular CookieJar, this class is pickleable. - - .. warning:: dictionary operations that are normally O(1) may be O(n). - """ - - def get(self, name, default=None, domain=None, path=None): - """Dict-like get() that also supports optional domain and path args in - order to resolve naming collisions from using one cookie jar over - multiple domains. - - .. warning:: operation is O(n), not O(1). - """ - try: - return self._find_no_duplicates(name, domain, path) - except KeyError: - return default - - def set(self, name, value, **kwargs): - """Dict-like set() that also supports optional domain and path args in - order to resolve naming collisions from using one cookie jar over - multiple domains. - """ - # support client code that unsets cookies by assignment of a None value: - if value is None: - remove_cookie_by_name( - self, name, domain=kwargs.get("domain"), path=kwargs.get("path") - ) - return - - if isinstance(value, Morsel): - c = morsel_to_cookie(value) - else: - c = create_cookie(name, value, **kwargs) - self.set_cookie(c) - return c - - def iterkeys(self): - """Dict-like iterkeys() that returns an iterator of names of cookies - from the jar. - - .. seealso:: itervalues() and iteritems(). - """ - for cookie in iter(self): - yield cookie.name - - def keys(self): - """Dict-like keys() that returns a list of names of cookies from the - jar. - - .. seealso:: values() and items(). - """ - return list(self.iterkeys()) - - def itervalues(self): - """Dict-like itervalues() that returns an iterator of values of cookies - from the jar. - - .. seealso:: iterkeys() and iteritems(). - """ - for cookie in iter(self): - yield cookie.value - - def values(self): - """Dict-like values() that returns a list of values of cookies from the - jar. - - .. seealso:: keys() and items(). - """ - return list(self.itervalues()) - - def iteritems(self): - """Dict-like iteritems() that returns an iterator of name-value tuples - from the jar. - - .. seealso:: iterkeys() and itervalues(). - """ - for cookie in iter(self): - yield cookie.name, cookie.value - - def items(self): - """Dict-like items() that returns a list of name-value tuples from the - jar. Allows client-code to call ``dict(RequestsCookieJar)`` and get a - vanilla python dict of key value pairs. - - .. seealso:: keys() and values(). - """ - return list(self.iteritems()) - - def list_domains(self): - """Utility method to list all the domains in the jar.""" - domains = [] - for cookie in iter(self): - if cookie.domain not in domains: - domains.append(cookie.domain) - return domains - - def list_paths(self): - """Utility method to list all the paths in the jar.""" - paths = [] - for cookie in iter(self): - if cookie.path not in paths: - paths.append(cookie.path) - return paths - - def multiple_domains(self): - """Returns True if there are multiple domains in the jar. - Returns False otherwise. - - :rtype: bool - """ - domains = [] - for cookie in iter(self): - if cookie.domain is not None and cookie.domain in domains: - return True - domains.append(cookie.domain) - return False # there is only one domain in jar - - def get_dict(self, domain=None, path=None): - """Takes as an argument an optional domain and path and returns a plain - old Python dict of name-value pairs of cookies that meet the - requirements. - - :rtype: dict - """ - dictionary = {} - for cookie in iter(self): - if (domain is None or cookie.domain == domain) and ( - path is None or cookie.path == path - ): - dictionary[cookie.name] = cookie.value - return dictionary - - def __contains__(self, name): - try: - return super().__contains__(name) - except CookieConflictError: - return True - - def __getitem__(self, name): - """Dict-like __getitem__() for compatibility with client code. Throws - exception if there are more than one cookie with name. In that case, - use the more explicit get() method instead. - - .. warning:: operation is O(n), not O(1). - """ - return self._find_no_duplicates(name) - - def __setitem__(self, name, value): - """Dict-like __setitem__ for compatibility with client code. Throws - exception if there is already a cookie of that name in the jar. In that - case, use the more explicit set() method instead. - """ - self.set(name, value) - - def __delitem__(self, name): - """Deletes a cookie given a name. Wraps ``cookielib.CookieJar``'s - ``remove_cookie_by_name()``. - """ - remove_cookie_by_name(self, name) - - def set_cookie(self, cookie, *args, **kwargs): - if ( - hasattr(cookie.value, "startswith") - and cookie.value.startswith('"') - and cookie.value.endswith('"') - ): - cookie.value = cookie.value.replace('\\"', "") - return super().set_cookie(cookie, *args, **kwargs) - - def update(self, other): - """Updates this jar with cookies from another CookieJar or dict-like""" - if isinstance(other, cookielib.CookieJar): - for cookie in other: - self.set_cookie(copy.copy(cookie)) - else: - super().update(other) - - def _find(self, name, domain=None, path=None): - """Requests uses this method internally to get cookie values. - - If there are conflicting cookies, _find arbitrarily chooses one. - See _find_no_duplicates if you want an exception thrown if there are - conflicting cookies. - - :param name: a string containing name of cookie - :param domain: (optional) string containing domain of cookie - :param path: (optional) string containing path of cookie - :return: cookie.value - """ - for cookie in iter(self): - if cookie.name == name: - if domain is None or cookie.domain == domain: - if path is None or cookie.path == path: - return cookie.value - - raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}") - - def _find_no_duplicates(self, name, domain=None, path=None): - """Both ``__get_item__`` and ``get`` call this function: it's never - used elsewhere in Requests. - - :param name: a string containing name of cookie - :param domain: (optional) string containing domain of cookie - :param path: (optional) string containing path of cookie - :raises KeyError: if cookie is not found - :raises CookieConflictError: if there are multiple cookies - that match name and optionally domain and path - :return: cookie.value - """ - toReturn = None - for cookie in iter(self): - if cookie.name == name: - if domain is None or cookie.domain == domain: - if path is None or cookie.path == path: - if toReturn is not None: - # if there are multiple cookies that meet passed in criteria - raise CookieConflictError( - f"There are multiple cookies with name, {name!r}" - ) - # we will eventually return this as long as no cookie conflict - toReturn = cookie.value - - if toReturn: - return toReturn - raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}") - - def __getstate__(self): - """Unlike a normal CookieJar, this class is pickleable.""" - state = self.__dict__.copy() - # remove the unpickleable RLock object - state.pop("_cookies_lock") - return state - - def __setstate__(self, state): - """Unlike a normal CookieJar, this class is pickleable.""" - self.__dict__.update(state) - if "_cookies_lock" not in self.__dict__: - self._cookies_lock = threading.RLock() - - def copy(self): - """Return a copy of this RequestsCookieJar.""" - new_cj = RequestsCookieJar() - new_cj.set_policy(self.get_policy()) - new_cj.update(self) - return new_cj - - def get_policy(self): - """Return the CookiePolicy instance used.""" - return self._policy - - -def _copy_cookie_jar(jar): - if jar is None: - return None - - if hasattr(jar, "copy"): - # We're dealing with an instance of RequestsCookieJar - return jar.copy() - # We're dealing with a generic CookieJar instance - new_jar = copy.copy(jar) - new_jar.clear() - for cookie in jar: - new_jar.set_cookie(copy.copy(cookie)) - return new_jar - - -def create_cookie(name, value, **kwargs): - """Make a cookie from underspecified parameters. - - By default, the pair of `name` and `value` will be set for the domain '' - and sent on every request (this is sometimes called a "supercookie"). - """ - result = { - "version": 0, - "name": name, - "value": value, - "port": None, - "domain": "", - "path": "/", - "secure": False, - "expires": None, - "discard": True, - "comment": None, - "comment_url": None, - "rest": {"HttpOnly": None}, - "rfc2109": False, - } - - badargs = set(kwargs) - set(result) - if badargs: - raise TypeError( - f"create_cookie() got unexpected keyword arguments: {list(badargs)}" - ) - - result.update(kwargs) - result["port_specified"] = bool(result["port"]) - result["domain_specified"] = bool(result["domain"]) - result["domain_initial_dot"] = result["domain"].startswith(".") - result["path_specified"] = bool(result["path"]) - - return cookielib.Cookie(**result) - - -def morsel_to_cookie(morsel): - """Convert a Morsel object into a Cookie containing the one k/v pair.""" - - expires = None - if morsel["max-age"]: - try: - expires = int(time.time() + int(morsel["max-age"])) - except ValueError: - raise TypeError(f"max-age: {morsel['max-age']} must be integer") - elif morsel["expires"]: - time_template = "%a, %d-%b-%Y %H:%M:%S GMT" - expires = calendar.timegm(time.strptime(morsel["expires"], time_template)) - return create_cookie( - comment=morsel["comment"], - comment_url=bool(morsel["comment"]), - discard=False, - domain=morsel["domain"], - expires=expires, - name=morsel.key, - path=morsel["path"], - port=None, - rest={"HttpOnly": morsel["httponly"]}, - rfc2109=False, - secure=bool(morsel["secure"]), - value=morsel.value, - version=morsel["version"] or 0, - ) - - -def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True): - """Returns a CookieJar from a key/value dictionary. - - :param cookie_dict: Dict of key/values to insert into CookieJar. - :param cookiejar: (optional) A cookiejar to add the cookies to. - :param overwrite: (optional) If False, will not replace cookies - already in the jar with new ones. - :rtype: CookieJar - """ - if cookiejar is None: - cookiejar = RequestsCookieJar() - - if cookie_dict is not None: - names_from_jar = [cookie.name for cookie in cookiejar] - for name in cookie_dict: - if overwrite or (name not in names_from_jar): - cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) - - return cookiejar - - -def merge_cookies(cookiejar, cookies): - """Add cookies to cookiejar and returns a merged CookieJar. - - :param cookiejar: CookieJar object to add the cookies to. - :param cookies: Dictionary or CookieJar object to be added. - :rtype: CookieJar - """ - if not isinstance(cookiejar, cookielib.CookieJar): - raise ValueError("You can only merge into CookieJar") - - if isinstance(cookies, dict): - cookiejar = cookiejar_from_dict(cookies, cookiejar=cookiejar, overwrite=False) - elif isinstance(cookies, cookielib.CookieJar): - try: - cookiejar.update(cookies) - except AttributeError: - for cookie_in_jar in cookies: - cookiejar.set_cookie(cookie_in_jar) - - return cookiejar diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py deleted file mode 100644 index 168d073..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py +++ /dev/null @@ -1,141 +0,0 @@ -""" -requests.exceptions -~~~~~~~~~~~~~~~~~~~ - -This module contains the set of Requests' exceptions. -""" -from pip._vendor.urllib3.exceptions import HTTPError as BaseHTTPError - -from .compat import JSONDecodeError as CompatJSONDecodeError - - -class RequestException(IOError): - """There was an ambiguous exception that occurred while handling your - request. - """ - - def __init__(self, *args, **kwargs): - """Initialize RequestException with `request` and `response` objects.""" - response = kwargs.pop("response", None) - self.response = response - self.request = kwargs.pop("request", None) - if response is not None and not self.request and hasattr(response, "request"): - self.request = self.response.request - super().__init__(*args, **kwargs) - - -class InvalidJSONError(RequestException): - """A JSON error occurred.""" - - -class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError): - """Couldn't decode the text into json""" - - def __init__(self, *args, **kwargs): - """ - Construct the JSONDecodeError instance first with all - args. Then use it's args to construct the IOError so that - the json specific args aren't used as IOError specific args - and the error message from JSONDecodeError is preserved. - """ - CompatJSONDecodeError.__init__(self, *args) - InvalidJSONError.__init__(self, *self.args, **kwargs) - - -class HTTPError(RequestException): - """An HTTP error occurred.""" - - -class ConnectionError(RequestException): - """A Connection error occurred.""" - - -class ProxyError(ConnectionError): - """A proxy error occurred.""" - - -class SSLError(ConnectionError): - """An SSL error occurred.""" - - -class Timeout(RequestException): - """The request timed out. - - Catching this error will catch both - :exc:`~requests.exceptions.ConnectTimeout` and - :exc:`~requests.exceptions.ReadTimeout` errors. - """ - - -class ConnectTimeout(ConnectionError, Timeout): - """The request timed out while trying to connect to the remote server. - - Requests that produced this error are safe to retry. - """ - - -class ReadTimeout(Timeout): - """The server did not send any data in the allotted amount of time.""" - - -class URLRequired(RequestException): - """A valid URL is required to make a request.""" - - -class TooManyRedirects(RequestException): - """Too many redirects.""" - - -class MissingSchema(RequestException, ValueError): - """The URL scheme (e.g. http or https) is missing.""" - - -class InvalidSchema(RequestException, ValueError): - """The URL scheme provided is either invalid or unsupported.""" - - -class InvalidURL(RequestException, ValueError): - """The URL provided was somehow invalid.""" - - -class InvalidHeader(RequestException, ValueError): - """The header value provided was somehow invalid.""" - - -class InvalidProxyURL(InvalidURL): - """The proxy URL provided is invalid.""" - - -class ChunkedEncodingError(RequestException): - """The server declared chunked encoding but sent an invalid chunk.""" - - -class ContentDecodingError(RequestException, BaseHTTPError): - """Failed to decode response content.""" - - -class StreamConsumedError(RequestException, TypeError): - """The content for this response was already consumed.""" - - -class RetryError(RequestException): - """Custom retries logic failed""" - - -class UnrewindableBodyError(RequestException): - """Requests encountered an error when trying to rewind a body.""" - - -# Warnings - - -class RequestsWarning(Warning): - """Base warning for Requests.""" - - -class FileModeWarning(RequestsWarning, DeprecationWarning): - """A file was opened in text mode, but Requests determined its binary length.""" - - -class RequestsDependencyWarning(RequestsWarning): - """An imported dependency doesn't match the expected version range.""" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py deleted file mode 100644 index 2d292c2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py +++ /dev/null @@ -1,131 +0,0 @@ -"""Module containing bug report helper(s).""" - -import json -import platform -import ssl -import sys - -from pip._vendor import idna -from pip._vendor import urllib3 - -from . import __version__ as requests_version - -charset_normalizer = None - -try: - from pip._vendor import chardet -except ImportError: - chardet = None - -try: - from pip._vendor.urllib3.contrib import pyopenssl -except ImportError: - pyopenssl = None - OpenSSL = None - cryptography = None -else: - import cryptography - import OpenSSL - - -def _implementation(): - """Return a dict with the Python implementation and version. - - Provide both the name and the version of the Python implementation - currently running. For example, on CPython 3.10.3 it will return - {'name': 'CPython', 'version': '3.10.3'}. - - This function works best on CPython and PyPy: in particular, it probably - doesn't work for Jython or IronPython. Future investigation should be done - to work out the correct shape of the code for those platforms. - """ - implementation = platform.python_implementation() - - if implementation == "CPython": - implementation_version = platform.python_version() - elif implementation == "PyPy": - implementation_version = "{}.{}.{}".format( - sys.pypy_version_info.major, - sys.pypy_version_info.minor, - sys.pypy_version_info.micro, - ) - if sys.pypy_version_info.releaselevel != "final": - implementation_version = "".join( - [implementation_version, sys.pypy_version_info.releaselevel] - ) - elif implementation == "Jython": - implementation_version = platform.python_version() # Complete Guess - elif implementation == "IronPython": - implementation_version = platform.python_version() # Complete Guess - else: - implementation_version = "Unknown" - - return {"name": implementation, "version": implementation_version} - - -def info(): - """Generate information for a bug report.""" - try: - platform_info = { - "system": platform.system(), - "release": platform.release(), - } - except OSError: - platform_info = { - "system": "Unknown", - "release": "Unknown", - } - - implementation_info = _implementation() - urllib3_info = {"version": urllib3.__version__} - charset_normalizer_info = {"version": None} - chardet_info = {"version": None} - if charset_normalizer: - charset_normalizer_info = {"version": charset_normalizer.__version__} - if chardet: - chardet_info = {"version": chardet.__version__} - - pyopenssl_info = { - "version": None, - "openssl_version": "", - } - if OpenSSL: - pyopenssl_info = { - "version": OpenSSL.__version__, - "openssl_version": f"{OpenSSL.SSL.OPENSSL_VERSION_NUMBER:x}", - } - cryptography_info = { - "version": getattr(cryptography, "__version__", ""), - } - idna_info = { - "version": getattr(idna, "__version__", ""), - } - - system_ssl = ssl.OPENSSL_VERSION_NUMBER - system_ssl_info = {"version": f"{system_ssl:x}" if system_ssl is not None else ""} - - return { - "platform": platform_info, - "implementation": implementation_info, - "system_ssl": system_ssl_info, - "using_pyopenssl": pyopenssl is not None, - "using_charset_normalizer": chardet is None, - "pyOpenSSL": pyopenssl_info, - "urllib3": urllib3_info, - "chardet": chardet_info, - "charset_normalizer": charset_normalizer_info, - "cryptography": cryptography_info, - "idna": idna_info, - "requests": { - "version": requests_version, - }, - } - - -def main(): - """Pretty-print the bug information as JSON.""" - print(json.dumps(info(), sort_keys=True, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py deleted file mode 100644 index d181ba2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py +++ /dev/null @@ -1,33 +0,0 @@ -""" -requests.hooks -~~~~~~~~~~~~~~ - -This module provides the capabilities for the Requests hooks system. - -Available hooks: - -``response``: - The response generated from a Request. -""" -HOOKS = ["response"] - - -def default_hooks(): - return {event: [] for event in HOOKS} - - -# TODO: response is the only one - - -def dispatch_hook(key, hooks, hook_data, **kwargs): - """Dispatches a hook dictionary on a given piece of data.""" - hooks = hooks or {} - hooks = hooks.get(key) - if hooks: - if hasattr(hooks, "__call__"): - hooks = [hooks] - for hook in hooks: - _hook_data = hook(hook_data, **kwargs) - if _hook_data is not None: - hook_data = _hook_data - return hook_data diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py deleted file mode 100644 index 76e6f19..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py +++ /dev/null @@ -1,1034 +0,0 @@ -""" -requests.models -~~~~~~~~~~~~~~~ - -This module contains the primary objects that power Requests. -""" - -import datetime - -# Import encoding now, to avoid implicit import later. -# Implicit import within threads may cause LookupError when standard library is in a ZIP, -# such as in Embedded Python. See https://github.com/psf/requests/issues/3578. -import encodings.idna # noqa: F401 -from io import UnsupportedOperation - -from pip._vendor.urllib3.exceptions import ( - DecodeError, - LocationParseError, - ProtocolError, - ReadTimeoutError, - SSLError, -) -from pip._vendor.urllib3.fields import RequestField -from pip._vendor.urllib3.filepost import encode_multipart_formdata -from pip._vendor.urllib3.util import parse_url - -from ._internal_utils import to_native_string, unicode_is_ascii -from .auth import HTTPBasicAuth -from .compat import ( - Callable, - JSONDecodeError, - Mapping, - basestring, - builtin_str, - chardet, - cookielib, -) -from .compat import json as complexjson -from .compat import urlencode, urlsplit, urlunparse -from .cookies import _copy_cookie_jar, cookiejar_from_dict, get_cookie_header -from .exceptions import ( - ChunkedEncodingError, - ConnectionError, - ContentDecodingError, - HTTPError, - InvalidJSONError, - InvalidURL, -) -from .exceptions import JSONDecodeError as RequestsJSONDecodeError -from .exceptions import MissingSchema -from .exceptions import SSLError as RequestsSSLError -from .exceptions import StreamConsumedError -from .hooks import default_hooks -from .status_codes import codes -from .structures import CaseInsensitiveDict -from .utils import ( - check_header_validity, - get_auth_from_url, - guess_filename, - guess_json_utf, - iter_slices, - parse_header_links, - requote_uri, - stream_decode_response_unicode, - super_len, - to_key_val_list, -) - -#: The set of HTTP status codes that indicate an automatically -#: processable redirect. -REDIRECT_STATI = ( - codes.moved, # 301 - codes.found, # 302 - codes.other, # 303 - codes.temporary_redirect, # 307 - codes.permanent_redirect, # 308 -) - -DEFAULT_REDIRECT_LIMIT = 30 -CONTENT_CHUNK_SIZE = 10 * 1024 -ITER_CHUNK_SIZE = 512 - - -class RequestEncodingMixin: - @property - def path_url(self): - """Build the path URL to use.""" - - url = [] - - p = urlsplit(self.url) - - path = p.path - if not path: - path = "/" - - url.append(path) - - query = p.query - if query: - url.append("?") - url.append(query) - - return "".join(url) - - @staticmethod - def _encode_params(data): - """Encode parameters in a piece of data. - - Will successfully encode parameters when passed as a dict or a list of - 2-tuples. Order is retained if data is a list of 2-tuples but arbitrary - if parameters are supplied as a dict. - """ - - if isinstance(data, (str, bytes)): - return data - elif hasattr(data, "read"): - return data - elif hasattr(data, "__iter__"): - result = [] - for k, vs in to_key_val_list(data): - if isinstance(vs, basestring) or not hasattr(vs, "__iter__"): - vs = [vs] - for v in vs: - if v is not None: - result.append( - ( - k.encode("utf-8") if isinstance(k, str) else k, - v.encode("utf-8") if isinstance(v, str) else v, - ) - ) - return urlencode(result, doseq=True) - else: - return data - - @staticmethod - def _encode_files(files, data): - """Build the body for a multipart/form-data request. - - Will successfully encode files when passed as a dict or a list of - tuples. Order is retained if data is a list of tuples but arbitrary - if parameters are supplied as a dict. - The tuples may be 2-tuples (filename, fileobj), 3-tuples (filename, fileobj, contentype) - or 4-tuples (filename, fileobj, contentype, custom_headers). - """ - if not files: - raise ValueError("Files must be provided.") - elif isinstance(data, basestring): - raise ValueError("Data must not be a string.") - - new_fields = [] - fields = to_key_val_list(data or {}) - files = to_key_val_list(files or {}) - - for field, val in fields: - if isinstance(val, basestring) or not hasattr(val, "__iter__"): - val = [val] - for v in val: - if v is not None: - # Don't call str() on bytestrings: in Py3 it all goes wrong. - if not isinstance(v, bytes): - v = str(v) - - new_fields.append( - ( - field.decode("utf-8") - if isinstance(field, bytes) - else field, - v.encode("utf-8") if isinstance(v, str) else v, - ) - ) - - for (k, v) in files: - # support for explicit filename - ft = None - fh = None - if isinstance(v, (tuple, list)): - if len(v) == 2: - fn, fp = v - elif len(v) == 3: - fn, fp, ft = v - else: - fn, fp, ft, fh = v - else: - fn = guess_filename(v) or k - fp = v - - if isinstance(fp, (str, bytes, bytearray)): - fdata = fp - elif hasattr(fp, "read"): - fdata = fp.read() - elif fp is None: - continue - else: - fdata = fp - - rf = RequestField(name=k, data=fdata, filename=fn, headers=fh) - rf.make_multipart(content_type=ft) - new_fields.append(rf) - - body, content_type = encode_multipart_formdata(new_fields) - - return body, content_type - - -class RequestHooksMixin: - def register_hook(self, event, hook): - """Properly register a hook.""" - - if event not in self.hooks: - raise ValueError(f'Unsupported event specified, with event name "{event}"') - - if isinstance(hook, Callable): - self.hooks[event].append(hook) - elif hasattr(hook, "__iter__"): - self.hooks[event].extend(h for h in hook if isinstance(h, Callable)) - - def deregister_hook(self, event, hook): - """Deregister a previously registered hook. - Returns True if the hook existed, False if not. - """ - - try: - self.hooks[event].remove(hook) - return True - except ValueError: - return False - - -class Request(RequestHooksMixin): - """A user-created :class:`Request ` object. - - Used to prepare a :class:`PreparedRequest `, which is sent to the server. - - :param method: HTTP method to use. - :param url: URL to send. - :param headers: dictionary of headers to send. - :param files: dictionary of {filename: fileobject} files to multipart upload. - :param data: the body to attach to the request. If a dictionary or - list of tuples ``[(key, value)]`` is provided, form-encoding will - take place. - :param json: json for the body to attach to the request (if files or data is not specified). - :param params: URL parameters to append to the URL. If a dictionary or - list of tuples ``[(key, value)]`` is provided, form-encoding will - take place. - :param auth: Auth handler or (user, pass) tuple. - :param cookies: dictionary or CookieJar of cookies to attach to this request. - :param hooks: dictionary of callback hooks, for internal usage. - - Usage:: - - >>> import requests - >>> req = requests.Request('GET', 'https://httpbin.org/get') - >>> req.prepare() - - """ - - def __init__( - self, - method=None, - url=None, - headers=None, - files=None, - data=None, - params=None, - auth=None, - cookies=None, - hooks=None, - json=None, - ): - - # Default empty dicts for dict params. - data = [] if data is None else data - files = [] if files is None else files - headers = {} if headers is None else headers - params = {} if params is None else params - hooks = {} if hooks is None else hooks - - self.hooks = default_hooks() - for (k, v) in list(hooks.items()): - self.register_hook(event=k, hook=v) - - self.method = method - self.url = url - self.headers = headers - self.files = files - self.data = data - self.json = json - self.params = params - self.auth = auth - self.cookies = cookies - - def __repr__(self): - return f"" - - def prepare(self): - """Constructs a :class:`PreparedRequest ` for transmission and returns it.""" - p = PreparedRequest() - p.prepare( - method=self.method, - url=self.url, - headers=self.headers, - files=self.files, - data=self.data, - json=self.json, - params=self.params, - auth=self.auth, - cookies=self.cookies, - hooks=self.hooks, - ) - return p - - -class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): - """The fully mutable :class:`PreparedRequest ` object, - containing the exact bytes that will be sent to the server. - - Instances are generated from a :class:`Request ` object, and - should not be instantiated manually; doing so may produce undesirable - effects. - - Usage:: - - >>> import requests - >>> req = requests.Request('GET', 'https://httpbin.org/get') - >>> r = req.prepare() - >>> r - - - >>> s = requests.Session() - >>> s.send(r) - - """ - - def __init__(self): - #: HTTP verb to send to the server. - self.method = None - #: HTTP URL to send the request to. - self.url = None - #: dictionary of HTTP headers. - self.headers = None - # The `CookieJar` used to create the Cookie header will be stored here - # after prepare_cookies is called - self._cookies = None - #: request body to send to the server. - self.body = None - #: dictionary of callback hooks, for internal usage. - self.hooks = default_hooks() - #: integer denoting starting position of a readable file-like body. - self._body_position = None - - def prepare( - self, - method=None, - url=None, - headers=None, - files=None, - data=None, - params=None, - auth=None, - cookies=None, - hooks=None, - json=None, - ): - """Prepares the entire request with the given parameters.""" - - self.prepare_method(method) - self.prepare_url(url, params) - self.prepare_headers(headers) - self.prepare_cookies(cookies) - self.prepare_body(data, files, json) - self.prepare_auth(auth, url) - - # Note that prepare_auth must be last to enable authentication schemes - # such as OAuth to work on a fully prepared request. - - # This MUST go after prepare_auth. Authenticators could add a hook - self.prepare_hooks(hooks) - - def __repr__(self): - return f"" - - def copy(self): - p = PreparedRequest() - p.method = self.method - p.url = self.url - p.headers = self.headers.copy() if self.headers is not None else None - p._cookies = _copy_cookie_jar(self._cookies) - p.body = self.body - p.hooks = self.hooks - p._body_position = self._body_position - return p - - def prepare_method(self, method): - """Prepares the given HTTP method.""" - self.method = method - if self.method is not None: - self.method = to_native_string(self.method.upper()) - - @staticmethod - def _get_idna_encoded_host(host): - from pip._vendor import idna - - try: - host = idna.encode(host, uts46=True).decode("utf-8") - except idna.IDNAError: - raise UnicodeError - return host - - def prepare_url(self, url, params): - """Prepares the given HTTP URL.""" - #: Accept objects that have string representations. - #: We're unable to blindly call unicode/str functions - #: as this will include the bytestring indicator (b'') - #: on python 3.x. - #: https://github.com/psf/requests/pull/2238 - if isinstance(url, bytes): - url = url.decode("utf8") - else: - url = str(url) - - # Remove leading whitespaces from url - url = url.lstrip() - - # Don't do any URL preparation for non-HTTP schemes like `mailto`, - # `data` etc to work around exceptions from `url_parse`, which - # handles RFC 3986 only. - if ":" in url and not url.lower().startswith("http"): - self.url = url - return - - # Support for unicode domain names and paths. - try: - scheme, auth, host, port, path, query, fragment = parse_url(url) - except LocationParseError as e: - raise InvalidURL(*e.args) - - if not scheme: - raise MissingSchema( - f"Invalid URL {url!r}: No scheme supplied. " - f"Perhaps you meant https://{url}?" - ) - - if not host: - raise InvalidURL(f"Invalid URL {url!r}: No host supplied") - - # In general, we want to try IDNA encoding the hostname if the string contains - # non-ASCII characters. This allows users to automatically get the correct IDNA - # behaviour. For strings containing only ASCII characters, we need to also verify - # it doesn't start with a wildcard (*), before allowing the unencoded hostname. - if not unicode_is_ascii(host): - try: - host = self._get_idna_encoded_host(host) - except UnicodeError: - raise InvalidURL("URL has an invalid label.") - elif host.startswith(("*", ".")): - raise InvalidURL("URL has an invalid label.") - - # Carefully reconstruct the network location - netloc = auth or "" - if netloc: - netloc += "@" - netloc += host - if port: - netloc += f":{port}" - - # Bare domains aren't valid URLs. - if not path: - path = "/" - - if isinstance(params, (str, bytes)): - params = to_native_string(params) - - enc_params = self._encode_params(params) - if enc_params: - if query: - query = f"{query}&{enc_params}" - else: - query = enc_params - - url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment])) - self.url = url - - def prepare_headers(self, headers): - """Prepares the given HTTP headers.""" - - self.headers = CaseInsensitiveDict() - if headers: - for header in headers.items(): - # Raise exception on invalid header value. - check_header_validity(header) - name, value = header - self.headers[to_native_string(name)] = value - - def prepare_body(self, data, files, json=None): - """Prepares the given HTTP body data.""" - - # Check if file, fo, generator, iterator. - # If not, run through normal process. - - # Nottin' on you. - body = None - content_type = None - - if not data and json is not None: - # urllib3 requires a bytes-like body. Python 2's json.dumps - # provides this natively, but Python 3 gives a Unicode string. - content_type = "application/json" - - try: - body = complexjson.dumps(json, allow_nan=False) - except ValueError as ve: - raise InvalidJSONError(ve, request=self) - - if not isinstance(body, bytes): - body = body.encode("utf-8") - - is_stream = all( - [ - hasattr(data, "__iter__"), - not isinstance(data, (basestring, list, tuple, Mapping)), - ] - ) - - if is_stream: - try: - length = super_len(data) - except (TypeError, AttributeError, UnsupportedOperation): - length = None - - body = data - - if getattr(body, "tell", None) is not None: - # Record the current file position before reading. - # This will allow us to rewind a file in the event - # of a redirect. - try: - self._body_position = body.tell() - except OSError: - # This differentiates from None, allowing us to catch - # a failed `tell()` later when trying to rewind the body - self._body_position = object() - - if files: - raise NotImplementedError( - "Streamed bodies and files are mutually exclusive." - ) - - if length: - self.headers["Content-Length"] = builtin_str(length) - else: - self.headers["Transfer-Encoding"] = "chunked" - else: - # Multi-part file uploads. - if files: - (body, content_type) = self._encode_files(files, data) - else: - if data: - body = self._encode_params(data) - if isinstance(data, basestring) or hasattr(data, "read"): - content_type = None - else: - content_type = "application/x-www-form-urlencoded" - - self.prepare_content_length(body) - - # Add content-type if it wasn't explicitly provided. - if content_type and ("content-type" not in self.headers): - self.headers["Content-Type"] = content_type - - self.body = body - - def prepare_content_length(self, body): - """Prepare Content-Length header based on request method and body""" - if body is not None: - length = super_len(body) - if length: - # If length exists, set it. Otherwise, we fallback - # to Transfer-Encoding: chunked. - self.headers["Content-Length"] = builtin_str(length) - elif ( - self.method not in ("GET", "HEAD") - and self.headers.get("Content-Length") is None - ): - # Set Content-Length to 0 for methods that can have a body - # but don't provide one. (i.e. not GET or HEAD) - self.headers["Content-Length"] = "0" - - def prepare_auth(self, auth, url=""): - """Prepares the given HTTP auth data.""" - - # If no Auth is explicitly provided, extract it from the URL first. - if auth is None: - url_auth = get_auth_from_url(self.url) - auth = url_auth if any(url_auth) else None - - if auth: - if isinstance(auth, tuple) and len(auth) == 2: - # special-case basic HTTP auth - auth = HTTPBasicAuth(*auth) - - # Allow auth to make its changes. - r = auth(self) - - # Update self to reflect the auth changes. - self.__dict__.update(r.__dict__) - - # Recompute Content-Length - self.prepare_content_length(self.body) - - def prepare_cookies(self, cookies): - """Prepares the given HTTP cookie data. - - This function eventually generates a ``Cookie`` header from the - given cookies using cookielib. Due to cookielib's design, the header - will not be regenerated if it already exists, meaning this function - can only be called once for the life of the - :class:`PreparedRequest ` object. Any subsequent calls - to ``prepare_cookies`` will have no actual effect, unless the "Cookie" - header is removed beforehand. - """ - if isinstance(cookies, cookielib.CookieJar): - self._cookies = cookies - else: - self._cookies = cookiejar_from_dict(cookies) - - cookie_header = get_cookie_header(self._cookies, self) - if cookie_header is not None: - self.headers["Cookie"] = cookie_header - - def prepare_hooks(self, hooks): - """Prepares the given hooks.""" - # hooks can be passed as None to the prepare method and to this - # method. To prevent iterating over None, simply use an empty list - # if hooks is False-y - hooks = hooks or [] - for event in hooks: - self.register_hook(event, hooks[event]) - - -class Response: - """The :class:`Response ` object, which contains a - server's response to an HTTP request. - """ - - __attrs__ = [ - "_content", - "status_code", - "headers", - "url", - "history", - "encoding", - "reason", - "cookies", - "elapsed", - "request", - ] - - def __init__(self): - self._content = False - self._content_consumed = False - self._next = None - - #: Integer Code of responded HTTP Status, e.g. 404 or 200. - self.status_code = None - - #: Case-insensitive Dictionary of Response Headers. - #: For example, ``headers['content-encoding']`` will return the - #: value of a ``'Content-Encoding'`` response header. - self.headers = CaseInsensitiveDict() - - #: File-like object representation of response (for advanced usage). - #: Use of ``raw`` requires that ``stream=True`` be set on the request. - #: This requirement does not apply for use internally to Requests. - self.raw = None - - #: Final URL location of Response. - self.url = None - - #: Encoding to decode with when accessing r.text. - self.encoding = None - - #: A list of :class:`Response ` objects from - #: the history of the Request. Any redirect responses will end - #: up here. The list is sorted from the oldest to the most recent request. - self.history = [] - - #: Textual reason of responded HTTP Status, e.g. "Not Found" or "OK". - self.reason = None - - #: A CookieJar of Cookies the server sent back. - self.cookies = cookiejar_from_dict({}) - - #: The amount of time elapsed between sending the request - #: and the arrival of the response (as a timedelta). - #: This property specifically measures the time taken between sending - #: the first byte of the request and finishing parsing the headers. It - #: is therefore unaffected by consuming the response content or the - #: value of the ``stream`` keyword argument. - self.elapsed = datetime.timedelta(0) - - #: The :class:`PreparedRequest ` object to which this - #: is a response. - self.request = None - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - def __getstate__(self): - # Consume everything; accessing the content attribute makes - # sure the content has been fully read. - if not self._content_consumed: - self.content - - return {attr: getattr(self, attr, None) for attr in self.__attrs__} - - def __setstate__(self, state): - for name, value in state.items(): - setattr(self, name, value) - - # pickled objects do not have .raw - setattr(self, "_content_consumed", True) - setattr(self, "raw", None) - - def __repr__(self): - return f"" - - def __bool__(self): - """Returns True if :attr:`status_code` is less than 400. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code, is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - return self.ok - - def __nonzero__(self): - """Returns True if :attr:`status_code` is less than 400. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code, is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - return self.ok - - def __iter__(self): - """Allows you to use a response as an iterator.""" - return self.iter_content(128) - - @property - def ok(self): - """Returns True if :attr:`status_code` is less than 400, False if not. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - try: - self.raise_for_status() - except HTTPError: - return False - return True - - @property - def is_redirect(self): - """True if this Response is a well-formed HTTP redirect that could have - been processed automatically (by :meth:`Session.resolve_redirects`). - """ - return "location" in self.headers and self.status_code in REDIRECT_STATI - - @property - def is_permanent_redirect(self): - """True if this Response one of the permanent versions of redirect.""" - return "location" in self.headers and self.status_code in ( - codes.moved_permanently, - codes.permanent_redirect, - ) - - @property - def next(self): - """Returns a PreparedRequest for the next request in a redirect chain, if there is one.""" - return self._next - - @property - def apparent_encoding(self): - """The apparent encoding, provided by the charset_normalizer or chardet libraries.""" - return chardet.detect(self.content)["encoding"] - - def iter_content(self, chunk_size=1, decode_unicode=False): - """Iterates over the response data. When stream=True is set on the - request, this avoids reading the content at once into memory for - large responses. The chunk size is the number of bytes it should - read into memory. This is not necessarily the length of each item - returned as decoding can take place. - - chunk_size must be of type int or None. A value of None will - function differently depending on the value of `stream`. - stream=True will read data as it arrives in whatever size the - chunks are received. If stream=False, data is returned as - a single chunk. - - If decode_unicode is True, content will be decoded using the best - available encoding based on the response. - """ - - def generate(): - # Special case for urllib3. - if hasattr(self.raw, "stream"): - try: - yield from self.raw.stream(chunk_size, decode_content=True) - except ProtocolError as e: - raise ChunkedEncodingError(e) - except DecodeError as e: - raise ContentDecodingError(e) - except ReadTimeoutError as e: - raise ConnectionError(e) - except SSLError as e: - raise RequestsSSLError(e) - else: - # Standard file-like object. - while True: - chunk = self.raw.read(chunk_size) - if not chunk: - break - yield chunk - - self._content_consumed = True - - if self._content_consumed and isinstance(self._content, bool): - raise StreamConsumedError() - elif chunk_size is not None and not isinstance(chunk_size, int): - raise TypeError( - f"chunk_size must be an int, it is instead a {type(chunk_size)}." - ) - # simulate reading small chunks of the content - reused_chunks = iter_slices(self._content, chunk_size) - - stream_chunks = generate() - - chunks = reused_chunks if self._content_consumed else stream_chunks - - if decode_unicode: - chunks = stream_decode_response_unicode(chunks, self) - - return chunks - - def iter_lines( - self, chunk_size=ITER_CHUNK_SIZE, decode_unicode=False, delimiter=None - ): - """Iterates over the response data, one line at a time. When - stream=True is set on the request, this avoids reading the - content at once into memory for large responses. - - .. note:: This method is not reentrant safe. - """ - - pending = None - - for chunk in self.iter_content( - chunk_size=chunk_size, decode_unicode=decode_unicode - ): - - if pending is not None: - chunk = pending + chunk - - if delimiter: - lines = chunk.split(delimiter) - else: - lines = chunk.splitlines() - - if lines and lines[-1] and chunk and lines[-1][-1] == chunk[-1]: - pending = lines.pop() - else: - pending = None - - yield from lines - - if pending is not None: - yield pending - - @property - def content(self): - """Content of the response, in bytes.""" - - if self._content is False: - # Read the contents. - if self._content_consumed: - raise RuntimeError("The content for this response was already consumed") - - if self.status_code == 0 or self.raw is None: - self._content = None - else: - self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b"" - - self._content_consumed = True - # don't need to release the connection; that's been handled by urllib3 - # since we exhausted the data. - return self._content - - @property - def text(self): - """Content of the response, in unicode. - - If Response.encoding is None, encoding will be guessed using - ``charset_normalizer`` or ``chardet``. - - The encoding of the response content is determined based solely on HTTP - headers, following RFC 2616 to the letter. If you can take advantage of - non-HTTP knowledge to make a better guess at the encoding, you should - set ``r.encoding`` appropriately before accessing this property. - """ - - # Try charset from content-type - content = None - encoding = self.encoding - - if not self.content: - return "" - - # Fallback to auto-detected encoding. - if self.encoding is None: - encoding = self.apparent_encoding - - # Decode unicode from given encoding. - try: - content = str(self.content, encoding, errors="replace") - except (LookupError, TypeError): - # A LookupError is raised if the encoding was not found which could - # indicate a misspelling or similar mistake. - # - # A TypeError can be raised if encoding is None - # - # So we try blindly encoding. - content = str(self.content, errors="replace") - - return content - - def json(self, **kwargs): - r"""Returns the json-encoded content of a response, if any. - - :param \*\*kwargs: Optional arguments that ``json.loads`` takes. - :raises requests.exceptions.JSONDecodeError: If the response body does not - contain valid json. - """ - - if not self.encoding and self.content and len(self.content) > 3: - # No encoding set. JSON RFC 4627 section 3 states we should expect - # UTF-8, -16 or -32. Detect which one to use; If the detection or - # decoding fails, fall back to `self.text` (using charset_normalizer to make - # a best guess). - encoding = guess_json_utf(self.content) - if encoding is not None: - try: - return complexjson.loads(self.content.decode(encoding), **kwargs) - except UnicodeDecodeError: - # Wrong UTF codec detected; usually because it's not UTF-8 - # but some other 8-bit codec. This is an RFC violation, - # and the server didn't bother to tell us what codec *was* - # used. - pass - except JSONDecodeError as e: - raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) - - try: - return complexjson.loads(self.text, **kwargs) - except JSONDecodeError as e: - # Catch JSON-related errors and raise as requests.JSONDecodeError - # This aliases json.JSONDecodeError and simplejson.JSONDecodeError - raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) - - @property - def links(self): - """Returns the parsed header links of the response, if any.""" - - header = self.headers.get("link") - - resolved_links = {} - - if header: - links = parse_header_links(header) - - for link in links: - key = link.get("rel") or link.get("url") - resolved_links[key] = link - - return resolved_links - - def raise_for_status(self): - """Raises :class:`HTTPError`, if one occurred.""" - - http_error_msg = "" - if isinstance(self.reason, bytes): - # We attempt to decode utf-8 first because some servers - # choose to localize their reason strings. If the string - # isn't utf-8, we fall back to iso-8859-1 for all other - # encodings. (See PR #3538) - try: - reason = self.reason.decode("utf-8") - except UnicodeDecodeError: - reason = self.reason.decode("iso-8859-1") - else: - reason = self.reason - - if 400 <= self.status_code < 500: - http_error_msg = ( - f"{self.status_code} Client Error: {reason} for url: {self.url}" - ) - - elif 500 <= self.status_code < 600: - http_error_msg = ( - f"{self.status_code} Server Error: {reason} for url: {self.url}" - ) - - if http_error_msg: - raise HTTPError(http_error_msg, response=self) - - def close(self): - """Releases the connection back to the pool. Once this method has been - called the underlying ``raw`` object must not be accessed again. - - *Note: Should not normally need to be called explicitly.* - """ - if not self._content_consumed: - self.raw.close() - - release_conn = getattr(self.raw, "release_conn", None) - if release_conn is not None: - release_conn() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py deleted file mode 100644 index 9582fa7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py +++ /dev/null @@ -1,16 +0,0 @@ -import sys - -# This code exists for backwards compatibility reasons. -# I don't like it either. Just look the other way. :) - -for package in ('urllib3', 'idna', 'chardet'): - vendored_package = "pip._vendor." + package - locals()[package] = __import__(vendored_package) - # This traversal is apparently necessary such that the identities are - # preserved (requests.packages.urllib3.* is urllib3.*) - for mod in list(sys.modules): - if mod == vendored_package or mod.startswith(vendored_package + '.'): - unprefixed_mod = mod[len("pip._vendor."):] - sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod] - -# Kinda cool, though, right? diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py deleted file mode 100644 index dbcf2a7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py +++ /dev/null @@ -1,833 +0,0 @@ -""" -requests.sessions -~~~~~~~~~~~~~~~~~ - -This module provides a Session object to manage and persist settings across -requests (cookies, auth, proxies). -""" -import os -import sys -import time -from collections import OrderedDict -from datetime import timedelta - -from ._internal_utils import to_native_string -from .adapters import HTTPAdapter -from .auth import _basic_auth_str -from .compat import Mapping, cookielib, urljoin, urlparse -from .cookies import ( - RequestsCookieJar, - cookiejar_from_dict, - extract_cookies_to_jar, - merge_cookies, -) -from .exceptions import ( - ChunkedEncodingError, - ContentDecodingError, - InvalidSchema, - TooManyRedirects, -) -from .hooks import default_hooks, dispatch_hook - -# formerly defined here, reexposed here for backward compatibility -from .models import ( # noqa: F401 - DEFAULT_REDIRECT_LIMIT, - REDIRECT_STATI, - PreparedRequest, - Request, -) -from .status_codes import codes -from .structures import CaseInsensitiveDict -from .utils import ( # noqa: F401 - DEFAULT_PORTS, - default_headers, - get_auth_from_url, - get_environ_proxies, - get_netrc_auth, - requote_uri, - resolve_proxies, - rewind_body, - should_bypass_proxies, - to_key_val_list, -) - -# Preferred clock, based on which one is more accurate on a given system. -if sys.platform == "win32": - preferred_clock = time.perf_counter -else: - preferred_clock = time.time - - -def merge_setting(request_setting, session_setting, dict_class=OrderedDict): - """Determines appropriate setting for a given request, taking into account - the explicit setting on that request, and the setting in the session. If a - setting is a dictionary, they will be merged together using `dict_class` - """ - - if session_setting is None: - return request_setting - - if request_setting is None: - return session_setting - - # Bypass if not a dictionary (e.g. verify) - if not ( - isinstance(session_setting, Mapping) and isinstance(request_setting, Mapping) - ): - return request_setting - - merged_setting = dict_class(to_key_val_list(session_setting)) - merged_setting.update(to_key_val_list(request_setting)) - - # Remove keys that are set to None. Extract keys first to avoid altering - # the dictionary during iteration. - none_keys = [k for (k, v) in merged_setting.items() if v is None] - for key in none_keys: - del merged_setting[key] - - return merged_setting - - -def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): - """Properly merges both requests and session hooks. - - This is necessary because when request_hooks == {'response': []}, the - merge breaks Session hooks entirely. - """ - if session_hooks is None or session_hooks.get("response") == []: - return request_hooks - - if request_hooks is None or request_hooks.get("response") == []: - return session_hooks - - return merge_setting(request_hooks, session_hooks, dict_class) - - -class SessionRedirectMixin: - def get_redirect_target(self, resp): - """Receives a Response. Returns a redirect URI or ``None``""" - # Due to the nature of how requests processes redirects this method will - # be called at least once upon the original response and at least twice - # on each subsequent redirect response (if any). - # If a custom mixin is used to handle this logic, it may be advantageous - # to cache the redirect location onto the response object as a private - # attribute. - if resp.is_redirect: - location = resp.headers["location"] - # Currently the underlying http module on py3 decode headers - # in latin1, but empirical evidence suggests that latin1 is very - # rarely used with non-ASCII characters in HTTP headers. - # It is more likely to get UTF8 header rather than latin1. - # This causes incorrect handling of UTF8 encoded location headers. - # To solve this, we re-encode the location in latin1. - location = location.encode("latin1") - return to_native_string(location, "utf8") - return None - - def should_strip_auth(self, old_url, new_url): - """Decide whether Authorization header should be removed when redirecting""" - old_parsed = urlparse(old_url) - new_parsed = urlparse(new_url) - if old_parsed.hostname != new_parsed.hostname: - return True - # Special case: allow http -> https redirect when using the standard - # ports. This isn't specified by RFC 7235, but is kept to avoid - # breaking backwards compatibility with older versions of requests - # that allowed any redirects on the same host. - if ( - old_parsed.scheme == "http" - and old_parsed.port in (80, None) - and new_parsed.scheme == "https" - and new_parsed.port in (443, None) - ): - return False - - # Handle default port usage corresponding to scheme. - changed_port = old_parsed.port != new_parsed.port - changed_scheme = old_parsed.scheme != new_parsed.scheme - default_port = (DEFAULT_PORTS.get(old_parsed.scheme, None), None) - if ( - not changed_scheme - and old_parsed.port in default_port - and new_parsed.port in default_port - ): - return False - - # Standard case: root URI must match - return changed_port or changed_scheme - - def resolve_redirects( - self, - resp, - req, - stream=False, - timeout=None, - verify=True, - cert=None, - proxies=None, - yield_requests=False, - **adapter_kwargs, - ): - """Receives a Response. Returns a generator of Responses or Requests.""" - - hist = [] # keep track of history - - url = self.get_redirect_target(resp) - previous_fragment = urlparse(req.url).fragment - while url: - prepared_request = req.copy() - - # Update history and keep track of redirects. - # resp.history must ignore the original request in this loop - hist.append(resp) - resp.history = hist[1:] - - try: - resp.content # Consume socket so it can be released - except (ChunkedEncodingError, ContentDecodingError, RuntimeError): - resp.raw.read(decode_content=False) - - if len(resp.history) >= self.max_redirects: - raise TooManyRedirects( - f"Exceeded {self.max_redirects} redirects.", response=resp - ) - - # Release the connection back into the pool. - resp.close() - - # Handle redirection without scheme (see: RFC 1808 Section 4) - if url.startswith("//"): - parsed_rurl = urlparse(resp.url) - url = ":".join([to_native_string(parsed_rurl.scheme), url]) - - # Normalize url case and attach previous fragment if needed (RFC 7231 7.1.2) - parsed = urlparse(url) - if parsed.fragment == "" and previous_fragment: - parsed = parsed._replace(fragment=previous_fragment) - elif parsed.fragment: - previous_fragment = parsed.fragment - url = parsed.geturl() - - # Facilitate relative 'location' headers, as allowed by RFC 7231. - # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource') - # Compliant with RFC3986, we percent encode the url. - if not parsed.netloc: - url = urljoin(resp.url, requote_uri(url)) - else: - url = requote_uri(url) - - prepared_request.url = to_native_string(url) - - self.rebuild_method(prepared_request, resp) - - # https://github.com/psf/requests/issues/1084 - if resp.status_code not in ( - codes.temporary_redirect, - codes.permanent_redirect, - ): - # https://github.com/psf/requests/issues/3490 - purged_headers = ("Content-Length", "Content-Type", "Transfer-Encoding") - for header in purged_headers: - prepared_request.headers.pop(header, None) - prepared_request.body = None - - headers = prepared_request.headers - headers.pop("Cookie", None) - - # Extract any cookies sent on the response to the cookiejar - # in the new request. Because we've mutated our copied prepared - # request, use the old one that we haven't yet touched. - extract_cookies_to_jar(prepared_request._cookies, req, resp.raw) - merge_cookies(prepared_request._cookies, self.cookies) - prepared_request.prepare_cookies(prepared_request._cookies) - - # Rebuild auth and proxy information. - proxies = self.rebuild_proxies(prepared_request, proxies) - self.rebuild_auth(prepared_request, resp) - - # A failed tell() sets `_body_position` to `object()`. This non-None - # value ensures `rewindable` will be True, allowing us to raise an - # UnrewindableBodyError, instead of hanging the connection. - rewindable = prepared_request._body_position is not None and ( - "Content-Length" in headers or "Transfer-Encoding" in headers - ) - - # Attempt to rewind consumed file-like object. - if rewindable: - rewind_body(prepared_request) - - # Override the original request. - req = prepared_request - - if yield_requests: - yield req - else: - - resp = self.send( - req, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - allow_redirects=False, - **adapter_kwargs, - ) - - extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) - - # extract redirect url, if any, for the next loop - url = self.get_redirect_target(resp) - yield resp - - def rebuild_auth(self, prepared_request, response): - """When being redirected we may want to strip authentication from the - request to avoid leaking credentials. This method intelligently removes - and reapplies authentication where possible to avoid credential loss. - """ - headers = prepared_request.headers - url = prepared_request.url - - if "Authorization" in headers and self.should_strip_auth( - response.request.url, url - ): - # If we get redirected to a new host, we should strip out any - # authentication headers. - del headers["Authorization"] - - # .netrc might have more auth for us on our new host. - new_auth = get_netrc_auth(url) if self.trust_env else None - if new_auth is not None: - prepared_request.prepare_auth(new_auth) - - def rebuild_proxies(self, prepared_request, proxies): - """This method re-evaluates the proxy configuration by considering the - environment variables. If we are redirected to a URL covered by - NO_PROXY, we strip the proxy configuration. Otherwise, we set missing - proxy keys for this URL (in case they were stripped by a previous - redirect). - - This method also replaces the Proxy-Authorization header where - necessary. - - :rtype: dict - """ - headers = prepared_request.headers - scheme = urlparse(prepared_request.url).scheme - new_proxies = resolve_proxies(prepared_request, proxies, self.trust_env) - - if "Proxy-Authorization" in headers: - del headers["Proxy-Authorization"] - - try: - username, password = get_auth_from_url(new_proxies[scheme]) - except KeyError: - username, password = None, None - - # urllib3 handles proxy authorization for us in the standard adapter. - # Avoid appending this to TLS tunneled requests where it may be leaked. - if not scheme.startswith('https') and username and password: - headers["Proxy-Authorization"] = _basic_auth_str(username, password) - - return new_proxies - - def rebuild_method(self, prepared_request, response): - """When being redirected we may want to change the method of the request - based on certain specs or browser behavior. - """ - method = prepared_request.method - - # https://tools.ietf.org/html/rfc7231#section-6.4.4 - if response.status_code == codes.see_other and method != "HEAD": - method = "GET" - - # Do what the browsers do, despite standards... - # First, turn 302s into GETs. - if response.status_code == codes.found and method != "HEAD": - method = "GET" - - # Second, if a POST is responded to with a 301, turn it into a GET. - # This bizarre behaviour is explained in Issue 1704. - if response.status_code == codes.moved and method == "POST": - method = "GET" - - prepared_request.method = method - - -class Session(SessionRedirectMixin): - """A Requests session. - - Provides cookie persistence, connection-pooling, and configuration. - - Basic Usage:: - - >>> import requests - >>> s = requests.Session() - >>> s.get('https://httpbin.org/get') - - - Or as a context manager:: - - >>> with requests.Session() as s: - ... s.get('https://httpbin.org/get') - - """ - - __attrs__ = [ - "headers", - "cookies", - "auth", - "proxies", - "hooks", - "params", - "verify", - "cert", - "adapters", - "stream", - "trust_env", - "max_redirects", - ] - - def __init__(self): - - #: A case-insensitive dictionary of headers to be sent on each - #: :class:`Request ` sent from this - #: :class:`Session `. - self.headers = default_headers() - - #: Default Authentication tuple or object to attach to - #: :class:`Request `. - self.auth = None - - #: Dictionary mapping protocol or protocol and host to the URL of the proxy - #: (e.g. {'http': 'foo.bar:3128', 'http://host.name': 'foo.bar:4012'}) to - #: be used on each :class:`Request `. - self.proxies = {} - - #: Event-handling hooks. - self.hooks = default_hooks() - - #: Dictionary of querystring data to attach to each - #: :class:`Request `. The dictionary values may be lists for - #: representing multivalued query parameters. - self.params = {} - - #: Stream response content default. - self.stream = False - - #: SSL Verification default. - #: Defaults to `True`, requiring requests to verify the TLS certificate at the - #: remote end. - #: If verify is set to `False`, requests will accept any TLS certificate - #: presented by the server, and will ignore hostname mismatches and/or - #: expired certificates, which will make your application vulnerable to - #: man-in-the-middle (MitM) attacks. - #: Only set this to `False` for testing. - self.verify = True - - #: SSL client certificate default, if String, path to ssl client - #: cert file (.pem). If Tuple, ('cert', 'key') pair. - self.cert = None - - #: Maximum number of redirects allowed. If the request exceeds this - #: limit, a :class:`TooManyRedirects` exception is raised. - #: This defaults to requests.models.DEFAULT_REDIRECT_LIMIT, which is - #: 30. - self.max_redirects = DEFAULT_REDIRECT_LIMIT - - #: Trust environment settings for proxy configuration, default - #: authentication and similar. - self.trust_env = True - - #: A CookieJar containing all currently outstanding cookies set on this - #: session. By default it is a - #: :class:`RequestsCookieJar `, but - #: may be any other ``cookielib.CookieJar`` compatible object. - self.cookies = cookiejar_from_dict({}) - - # Default connection adapters. - self.adapters = OrderedDict() - self.mount("https://", HTTPAdapter()) - self.mount("http://", HTTPAdapter()) - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - def prepare_request(self, request): - """Constructs a :class:`PreparedRequest ` for - transmission and returns it. The :class:`PreparedRequest` has settings - merged from the :class:`Request ` instance and those of the - :class:`Session`. - - :param request: :class:`Request` instance to prepare with this - session's settings. - :rtype: requests.PreparedRequest - """ - cookies = request.cookies or {} - - # Bootstrap CookieJar. - if not isinstance(cookies, cookielib.CookieJar): - cookies = cookiejar_from_dict(cookies) - - # Merge with session cookies - merged_cookies = merge_cookies( - merge_cookies(RequestsCookieJar(), self.cookies), cookies - ) - - # Set environment's basic authentication if not explicitly set. - auth = request.auth - if self.trust_env and not auth and not self.auth: - auth = get_netrc_auth(request.url) - - p = PreparedRequest() - p.prepare( - method=request.method.upper(), - url=request.url, - files=request.files, - data=request.data, - json=request.json, - headers=merge_setting( - request.headers, self.headers, dict_class=CaseInsensitiveDict - ), - params=merge_setting(request.params, self.params), - auth=merge_setting(auth, self.auth), - cookies=merged_cookies, - hooks=merge_hooks(request.hooks, self.hooks), - ) - return p - - def request( - self, - method, - url, - params=None, - data=None, - headers=None, - cookies=None, - files=None, - auth=None, - timeout=None, - allow_redirects=True, - proxies=None, - hooks=None, - stream=None, - verify=None, - cert=None, - json=None, - ): - """Constructs a :class:`Request `, prepares it and sends it. - Returns :class:`Response ` object. - - :param method: method for the new :class:`Request` object. - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary or bytes to be sent in the query - string for the :class:`Request`. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the - :class:`Request`. - :param headers: (optional) Dictionary of HTTP Headers to send with the - :class:`Request`. - :param cookies: (optional) Dict or CookieJar object to send with the - :class:`Request`. - :param files: (optional) Dictionary of ``'filename': file-like-objects`` - for multipart encoding upload. - :param auth: (optional) Auth tuple or callable to enable - Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple - :param allow_redirects: (optional) Set to True by default. - :type allow_redirects: bool - :param proxies: (optional) Dictionary mapping protocol or protocol and - hostname to the URL of the proxy. - :param stream: (optional) whether to immediately download the response - content. Defaults to ``False``. - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use. Defaults to ``True``. When set to - ``False``, requests will accept any TLS certificate presented by - the server, and will ignore hostname mismatches and/or expired - certificates, which will make your application vulnerable to - man-in-the-middle (MitM) attacks. Setting verify to ``False`` - may be useful during local development or testing. - :param cert: (optional) if String, path to ssl client cert file (.pem). - If Tuple, ('cert', 'key') pair. - :rtype: requests.Response - """ - # Create the Request. - req = Request( - method=method.upper(), - url=url, - headers=headers, - files=files, - data=data or {}, - json=json, - params=params or {}, - auth=auth, - cookies=cookies, - hooks=hooks, - ) - prep = self.prepare_request(req) - - proxies = proxies or {} - - settings = self.merge_environment_settings( - prep.url, proxies, stream, verify, cert - ) - - # Send the request. - send_kwargs = { - "timeout": timeout, - "allow_redirects": allow_redirects, - } - send_kwargs.update(settings) - resp = self.send(prep, **send_kwargs) - - return resp - - def get(self, url, **kwargs): - r"""Sends a GET request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", True) - return self.request("GET", url, **kwargs) - - def options(self, url, **kwargs): - r"""Sends a OPTIONS request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", True) - return self.request("OPTIONS", url, **kwargs) - - def head(self, url, **kwargs): - r"""Sends a HEAD request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", False) - return self.request("HEAD", url, **kwargs) - - def post(self, url, data=None, json=None, **kwargs): - r"""Sends a POST request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("POST", url, data=data, json=json, **kwargs) - - def put(self, url, data=None, **kwargs): - r"""Sends a PUT request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("PUT", url, data=data, **kwargs) - - def patch(self, url, data=None, **kwargs): - r"""Sends a PATCH request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("PATCH", url, data=data, **kwargs) - - def delete(self, url, **kwargs): - r"""Sends a DELETE request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("DELETE", url, **kwargs) - - def send(self, request, **kwargs): - """Send a given PreparedRequest. - - :rtype: requests.Response - """ - # Set defaults that the hooks can utilize to ensure they always have - # the correct parameters to reproduce the previous request. - kwargs.setdefault("stream", self.stream) - kwargs.setdefault("verify", self.verify) - kwargs.setdefault("cert", self.cert) - if "proxies" not in kwargs: - kwargs["proxies"] = resolve_proxies(request, self.proxies, self.trust_env) - - # It's possible that users might accidentally send a Request object. - # Guard against that specific failure case. - if isinstance(request, Request): - raise ValueError("You can only send PreparedRequests.") - - # Set up variables needed for resolve_redirects and dispatching of hooks - allow_redirects = kwargs.pop("allow_redirects", True) - stream = kwargs.get("stream") - hooks = request.hooks - - # Get the appropriate adapter to use - adapter = self.get_adapter(url=request.url) - - # Start time (approximately) of the request - start = preferred_clock() - - # Send the request - r = adapter.send(request, **kwargs) - - # Total elapsed time of the request (approximately) - elapsed = preferred_clock() - start - r.elapsed = timedelta(seconds=elapsed) - - # Response manipulation hooks - r = dispatch_hook("response", hooks, r, **kwargs) - - # Persist cookies - if r.history: - - # If the hooks create history then we want those cookies too - for resp in r.history: - extract_cookies_to_jar(self.cookies, resp.request, resp.raw) - - extract_cookies_to_jar(self.cookies, request, r.raw) - - # Resolve redirects if allowed. - if allow_redirects: - # Redirect resolving generator. - gen = self.resolve_redirects(r, request, **kwargs) - history = [resp for resp in gen] - else: - history = [] - - # Shuffle things around if there's history. - if history: - # Insert the first (original) request at the start - history.insert(0, r) - # Get the last request made - r = history.pop() - r.history = history - - # If redirects aren't being followed, store the response on the Request for Response.next(). - if not allow_redirects: - try: - r._next = next( - self.resolve_redirects(r, request, yield_requests=True, **kwargs) - ) - except StopIteration: - pass - - if not stream: - r.content - - return r - - def merge_environment_settings(self, url, proxies, stream, verify, cert): - """ - Check the environment and merge it with some settings. - - :rtype: dict - """ - # Gather clues from the surrounding environment. - if self.trust_env: - # Set environment's proxies. - no_proxy = proxies.get("no_proxy") if proxies is not None else None - env_proxies = get_environ_proxies(url, no_proxy=no_proxy) - for (k, v) in env_proxies.items(): - proxies.setdefault(k, v) - - # Look for requests environment configuration - # and be compatible with cURL. - if verify is True or verify is None: - verify = ( - os.environ.get("REQUESTS_CA_BUNDLE") - or os.environ.get("CURL_CA_BUNDLE") - or verify - ) - - # Merge all the kwargs. - proxies = merge_setting(proxies, self.proxies) - stream = merge_setting(stream, self.stream) - verify = merge_setting(verify, self.verify) - cert = merge_setting(cert, self.cert) - - return {"proxies": proxies, "stream": stream, "verify": verify, "cert": cert} - - def get_adapter(self, url): - """ - Returns the appropriate connection adapter for the given URL. - - :rtype: requests.adapters.BaseAdapter - """ - for (prefix, adapter) in self.adapters.items(): - - if url.lower().startswith(prefix.lower()): - return adapter - - # Nothing matches :-/ - raise InvalidSchema(f"No connection adapters were found for {url!r}") - - def close(self): - """Closes all adapters and as such the session""" - for v in self.adapters.values(): - v.close() - - def mount(self, prefix, adapter): - """Registers a connection adapter to a prefix. - - Adapters are sorted in descending order by prefix length. - """ - self.adapters[prefix] = adapter - keys_to_move = [k for k in self.adapters if len(k) < len(prefix)] - - for key in keys_to_move: - self.adapters[key] = self.adapters.pop(key) - - def __getstate__(self): - state = {attr: getattr(self, attr, None) for attr in self.__attrs__} - return state - - def __setstate__(self, state): - for attr, value in state.items(): - setattr(self, attr, value) - - -def session(): - """ - Returns a :class:`Session` for context-management. - - .. deprecated:: 1.0.0 - - This method has been deprecated since version 1.0.0 and is only kept for - backwards compatibility. New code should use :class:`~requests.sessions.Session` - to create a session. This may be removed at a future date. - - :rtype: Session - """ - return Session() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py deleted file mode 100644 index 4bd072b..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py +++ /dev/null @@ -1,128 +0,0 @@ -r""" -The ``codes`` object defines a mapping from common names for HTTP statuses -to their numerical codes, accessible either as attributes or as dictionary -items. - -Example:: - - >>> import requests - >>> requests.codes['temporary_redirect'] - 307 - >>> requests.codes.teapot - 418 - >>> requests.codes['\o/'] - 200 - -Some codes have multiple names, and both upper- and lower-case versions of -the names are allowed. For example, ``codes.ok``, ``codes.OK``, and -``codes.okay`` all correspond to the HTTP status code 200. -""" - -from .structures import LookupDict - -_codes = { - # Informational. - 100: ("continue",), - 101: ("switching_protocols",), - 102: ("processing",), - 103: ("checkpoint",), - 122: ("uri_too_long", "request_uri_too_long"), - 200: ("ok", "okay", "all_ok", "all_okay", "all_good", "\\o/", "✓"), - 201: ("created",), - 202: ("accepted",), - 203: ("non_authoritative_info", "non_authoritative_information"), - 204: ("no_content",), - 205: ("reset_content", "reset"), - 206: ("partial_content", "partial"), - 207: ("multi_status", "multiple_status", "multi_stati", "multiple_stati"), - 208: ("already_reported",), - 226: ("im_used",), - # Redirection. - 300: ("multiple_choices",), - 301: ("moved_permanently", "moved", "\\o-"), - 302: ("found",), - 303: ("see_other", "other"), - 304: ("not_modified",), - 305: ("use_proxy",), - 306: ("switch_proxy",), - 307: ("temporary_redirect", "temporary_moved", "temporary"), - 308: ( - "permanent_redirect", - "resume_incomplete", - "resume", - ), # "resume" and "resume_incomplete" to be removed in 3.0 - # Client Error. - 400: ("bad_request", "bad"), - 401: ("unauthorized",), - 402: ("payment_required", "payment"), - 403: ("forbidden",), - 404: ("not_found", "-o-"), - 405: ("method_not_allowed", "not_allowed"), - 406: ("not_acceptable",), - 407: ("proxy_authentication_required", "proxy_auth", "proxy_authentication"), - 408: ("request_timeout", "timeout"), - 409: ("conflict",), - 410: ("gone",), - 411: ("length_required",), - 412: ("precondition_failed", "precondition"), - 413: ("request_entity_too_large",), - 414: ("request_uri_too_large",), - 415: ("unsupported_media_type", "unsupported_media", "media_type"), - 416: ( - "requested_range_not_satisfiable", - "requested_range", - "range_not_satisfiable", - ), - 417: ("expectation_failed",), - 418: ("im_a_teapot", "teapot", "i_am_a_teapot"), - 421: ("misdirected_request",), - 422: ("unprocessable_entity", "unprocessable"), - 423: ("locked",), - 424: ("failed_dependency", "dependency"), - 425: ("unordered_collection", "unordered"), - 426: ("upgrade_required", "upgrade"), - 428: ("precondition_required", "precondition"), - 429: ("too_many_requests", "too_many"), - 431: ("header_fields_too_large", "fields_too_large"), - 444: ("no_response", "none"), - 449: ("retry_with", "retry"), - 450: ("blocked_by_windows_parental_controls", "parental_controls"), - 451: ("unavailable_for_legal_reasons", "legal_reasons"), - 499: ("client_closed_request",), - # Server Error. - 500: ("internal_server_error", "server_error", "/o\\", "✗"), - 501: ("not_implemented",), - 502: ("bad_gateway",), - 503: ("service_unavailable", "unavailable"), - 504: ("gateway_timeout",), - 505: ("http_version_not_supported", "http_version"), - 506: ("variant_also_negotiates",), - 507: ("insufficient_storage",), - 509: ("bandwidth_limit_exceeded", "bandwidth"), - 510: ("not_extended",), - 511: ("network_authentication_required", "network_auth", "network_authentication"), -} - -codes = LookupDict(name="status_codes") - - -def _init(): - for code, titles in _codes.items(): - for title in titles: - setattr(codes, title, code) - if not title.startswith(("\\", "/")): - setattr(codes, title.upper(), code) - - def doc(code): - names = ", ".join(f"``{n}``" for n in _codes[code]) - return "* %d: %s" % (code, names) - - global __doc__ - __doc__ = ( - __doc__ + "\n" + "\n".join(doc(code) for code in sorted(_codes)) - if __doc__ is not None - else None - ) - - -_init() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py deleted file mode 100644 index 188e13e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -requests.structures -~~~~~~~~~~~~~~~~~~~ - -Data structures that power Requests. -""" - -from collections import OrderedDict - -from .compat import Mapping, MutableMapping - - -class CaseInsensitiveDict(MutableMapping): - """A case-insensitive ``dict``-like object. - - Implements all methods and operations of - ``MutableMapping`` as well as dict's ``copy``. Also - provides ``lower_items``. - - All keys are expected to be strings. The structure remembers the - case of the last key to be set, and ``iter(instance)``, - ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()`` - will contain case-sensitive keys. However, querying and contains - testing is case insensitive:: - - cid = CaseInsensitiveDict() - cid['Accept'] = 'application/json' - cid['aCCEPT'] == 'application/json' # True - list(cid) == ['Accept'] # True - - For example, ``headers['content-encoding']`` will return the - value of a ``'Content-Encoding'`` response header, regardless - of how the header name was originally stored. - - If the constructor, ``.update``, or equality comparison - operations are given keys that have equal ``.lower()``s, the - behavior is undefined. - """ - - def __init__(self, data=None, **kwargs): - self._store = OrderedDict() - if data is None: - data = {} - self.update(data, **kwargs) - - def __setitem__(self, key, value): - # Use the lowercased key for lookups, but store the actual - # key alongside the value. - self._store[key.lower()] = (key, value) - - def __getitem__(self, key): - return self._store[key.lower()][1] - - def __delitem__(self, key): - del self._store[key.lower()] - - def __iter__(self): - return (casedkey for casedkey, mappedvalue in self._store.values()) - - def __len__(self): - return len(self._store) - - def lower_items(self): - """Like iteritems(), but with all lowercase keys.""" - return ((lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items()) - - def __eq__(self, other): - if isinstance(other, Mapping): - other = CaseInsensitiveDict(other) - else: - return NotImplemented - # Compare insensitively - return dict(self.lower_items()) == dict(other.lower_items()) - - # Copy is required - def copy(self): - return CaseInsensitiveDict(self._store.values()) - - def __repr__(self): - return str(dict(self.items())) - - -class LookupDict(dict): - """Dictionary lookup object.""" - - def __init__(self, name=None): - self.name = name - super().__init__() - - def __repr__(self): - return f"" - - def __getitem__(self, key): - # We allow fall-through here, so values default to None - - return self.__dict__.get(key, None) - - def get(self, key, default=None): - return self.__dict__.get(key, default) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py b/venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py deleted file mode 100644 index 36607ed..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py +++ /dev/null @@ -1,1094 +0,0 @@ -""" -requests.utils -~~~~~~~~~~~~~~ - -This module provides utility functions that are used within Requests -that are also useful for external consumption. -""" - -import codecs -import contextlib -import io -import os -import re -import socket -import struct -import sys -import tempfile -import warnings -import zipfile -from collections import OrderedDict - -from pip._vendor.urllib3.util import make_headers, parse_url - -from . import certs -from .__version__ import __version__ - -# to_native_string is unused here, but imported here for backwards compatibility -from ._internal_utils import ( # noqa: F401 - _HEADER_VALIDATORS_BYTE, - _HEADER_VALIDATORS_STR, - HEADER_VALIDATORS, - to_native_string, -) -from .compat import ( - Mapping, - basestring, - bytes, - getproxies, - getproxies_environment, - integer_types, -) -from .compat import parse_http_list as _parse_list_header -from .compat import ( - proxy_bypass, - proxy_bypass_environment, - quote, - str, - unquote, - urlparse, - urlunparse, -) -from .cookies import cookiejar_from_dict -from .exceptions import ( - FileModeWarning, - InvalidHeader, - InvalidURL, - UnrewindableBodyError, -) -from .structures import CaseInsensitiveDict - -NETRC_FILES = (".netrc", "_netrc") - -DEFAULT_CA_BUNDLE_PATH = certs.where() - -DEFAULT_PORTS = {"http": 80, "https": 443} - -# Ensure that ', ' is used to preserve previous delimiter behavior. -DEFAULT_ACCEPT_ENCODING = ", ".join( - re.split(r",\s*", make_headers(accept_encoding=True)["accept-encoding"]) -) - - -if sys.platform == "win32": - # provide a proxy_bypass version on Windows without DNS lookups - - def proxy_bypass_registry(host): - try: - import winreg - except ImportError: - return False - - try: - internetSettings = winreg.OpenKey( - winreg.HKEY_CURRENT_USER, - r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", - ) - # ProxyEnable could be REG_SZ or REG_DWORD, normalizing it - proxyEnable = int(winreg.QueryValueEx(internetSettings, "ProxyEnable")[0]) - # ProxyOverride is almost always a string - proxyOverride = winreg.QueryValueEx(internetSettings, "ProxyOverride")[0] - except (OSError, ValueError): - return False - if not proxyEnable or not proxyOverride: - return False - - # make a check value list from the registry entry: replace the - # '' string by the localhost entry and the corresponding - # canonical entry. - proxyOverride = proxyOverride.split(";") - # now check if we match one of the registry values. - for test in proxyOverride: - if test == "": - if "." not in host: - return True - test = test.replace(".", r"\.") # mask dots - test = test.replace("*", r".*") # change glob sequence - test = test.replace("?", r".") # change glob char - if re.match(test, host, re.I): - return True - return False - - def proxy_bypass(host): # noqa - """Return True, if the host should be bypassed. - - Checks proxy settings gathered from the environment, if specified, - or the registry. - """ - if getproxies_environment(): - return proxy_bypass_environment(host) - else: - return proxy_bypass_registry(host) - - -def dict_to_sequence(d): - """Returns an internal sequence dictionary update.""" - - if hasattr(d, "items"): - d = d.items() - - return d - - -def super_len(o): - total_length = None - current_position = 0 - - if hasattr(o, "__len__"): - total_length = len(o) - - elif hasattr(o, "len"): - total_length = o.len - - elif hasattr(o, "fileno"): - try: - fileno = o.fileno() - except (io.UnsupportedOperation, AttributeError): - # AttributeError is a surprising exception, seeing as how we've just checked - # that `hasattr(o, 'fileno')`. It happens for objects obtained via - # `Tarfile.extractfile()`, per issue 5229. - pass - else: - total_length = os.fstat(fileno).st_size - - # Having used fstat to determine the file length, we need to - # confirm that this file was opened up in binary mode. - if "b" not in o.mode: - warnings.warn( - ( - "Requests has determined the content-length for this " - "request using the binary size of the file: however, the " - "file has been opened in text mode (i.e. without the 'b' " - "flag in the mode). This may lead to an incorrect " - "content-length. In Requests 3.0, support will be removed " - "for files in text mode." - ), - FileModeWarning, - ) - - if hasattr(o, "tell"): - try: - current_position = o.tell() - except OSError: - # This can happen in some weird situations, such as when the file - # is actually a special file descriptor like stdin. In this - # instance, we don't know what the length is, so set it to zero and - # let requests chunk it instead. - if total_length is not None: - current_position = total_length - else: - if hasattr(o, "seek") and total_length is None: - # StringIO and BytesIO have seek but no usable fileno - try: - # seek to end of file - o.seek(0, 2) - total_length = o.tell() - - # seek back to current position to support - # partially read file-like objects - o.seek(current_position or 0) - except OSError: - total_length = 0 - - if total_length is None: - total_length = 0 - - return max(0, total_length - current_position) - - -def get_netrc_auth(url, raise_errors=False): - """Returns the Requests tuple auth for a given url from netrc.""" - - netrc_file = os.environ.get("NETRC") - if netrc_file is not None: - netrc_locations = (netrc_file,) - else: - netrc_locations = (f"~/{f}" for f in NETRC_FILES) - - try: - from netrc import NetrcParseError, netrc - - netrc_path = None - - for f in netrc_locations: - try: - loc = os.path.expanduser(f) - except KeyError: - # os.path.expanduser can fail when $HOME is undefined and - # getpwuid fails. See https://bugs.python.org/issue20164 & - # https://github.com/psf/requests/issues/1846 - return - - if os.path.exists(loc): - netrc_path = loc - break - - # Abort early if there isn't one. - if netrc_path is None: - return - - ri = urlparse(url) - - # Strip port numbers from netloc. This weird `if...encode`` dance is - # used for Python 3.2, which doesn't support unicode literals. - splitstr = b":" - if isinstance(url, str): - splitstr = splitstr.decode("ascii") - host = ri.netloc.split(splitstr)[0] - - try: - _netrc = netrc(netrc_path).authenticators(host) - if _netrc: - # Return with login / password - login_i = 0 if _netrc[0] else 1 - return (_netrc[login_i], _netrc[2]) - except (NetrcParseError, OSError): - # If there was a parsing error or a permissions issue reading the file, - # we'll just skip netrc auth unless explicitly asked to raise errors. - if raise_errors: - raise - - # App Engine hackiness. - except (ImportError, AttributeError): - pass - - -def guess_filename(obj): - """Tries to guess the filename of the given object.""" - name = getattr(obj, "name", None) - if name and isinstance(name, basestring) and name[0] != "<" and name[-1] != ">": - return os.path.basename(name) - - -def extract_zipped_paths(path): - """Replace nonexistent paths that look like they refer to a member of a zip - archive with the location of an extracted copy of the target, or else - just return the provided path unchanged. - """ - if os.path.exists(path): - # this is already a valid path, no need to do anything further - return path - - # find the first valid part of the provided path and treat that as a zip archive - # assume the rest of the path is the name of a member in the archive - archive, member = os.path.split(path) - while archive and not os.path.exists(archive): - archive, prefix = os.path.split(archive) - if not prefix: - # If we don't check for an empty prefix after the split (in other words, archive remains unchanged after the split), - # we _can_ end up in an infinite loop on a rare corner case affecting a small number of users - break - member = "/".join([prefix, member]) - - if not zipfile.is_zipfile(archive): - return path - - zip_file = zipfile.ZipFile(archive) - if member not in zip_file.namelist(): - return path - - # we have a valid zip archive and a valid member of that archive - tmp = tempfile.gettempdir() - extracted_path = os.path.join(tmp, member.split("/")[-1]) - if not os.path.exists(extracted_path): - # use read + write to avoid the creating nested folders, we only want the file, avoids mkdir racing condition - with atomic_open(extracted_path) as file_handler: - file_handler.write(zip_file.read(member)) - return extracted_path - - -@contextlib.contextmanager -def atomic_open(filename): - """Write a file to the disk in an atomic fashion""" - tmp_descriptor, tmp_name = tempfile.mkstemp(dir=os.path.dirname(filename)) - try: - with os.fdopen(tmp_descriptor, "wb") as tmp_handler: - yield tmp_handler - os.replace(tmp_name, filename) - except BaseException: - os.remove(tmp_name) - raise - - -def from_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. Unless it can not be represented as such, return an - OrderedDict, e.g., - - :: - - >>> from_key_val_list([('key', 'val')]) - OrderedDict([('key', 'val')]) - >>> from_key_val_list('string') - Traceback (most recent call last): - ... - ValueError: cannot encode objects that are not 2-tuples - >>> from_key_val_list({'key': 'val'}) - OrderedDict([('key', 'val')]) - - :rtype: OrderedDict - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError("cannot encode objects that are not 2-tuples") - - return OrderedDict(value) - - -def to_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. If it can be, return a list of tuples, e.g., - - :: - - >>> to_key_val_list([('key', 'val')]) - [('key', 'val')] - >>> to_key_val_list({'key': 'val'}) - [('key', 'val')] - >>> to_key_val_list('string') - Traceback (most recent call last): - ... - ValueError: cannot encode objects that are not 2-tuples - - :rtype: list - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError("cannot encode objects that are not 2-tuples") - - if isinstance(value, Mapping): - value = value.items() - - return list(value) - - -# From mitsuhiko/werkzeug (used with permission). -def parse_list_header(value): - """Parse lists as described by RFC 2068 Section 2. - - In particular, parse comma-separated lists where the elements of - the list may include quoted-strings. A quoted-string could - contain a comma. A non-quoted string could have quotes in the - middle. Quotes are removed automatically after parsing. - - It basically works like :func:`parse_set_header` just that items - may appear multiple times and case sensitivity is preserved. - - The return value is a standard :class:`list`: - - >>> parse_list_header('token, "quoted value"') - ['token', 'quoted value'] - - To create a header from the :class:`list` again, use the - :func:`dump_header` function. - - :param value: a string with a list header. - :return: :class:`list` - :rtype: list - """ - result = [] - for item in _parse_list_header(value): - if item[:1] == item[-1:] == '"': - item = unquote_header_value(item[1:-1]) - result.append(item) - return result - - -# From mitsuhiko/werkzeug (used with permission). -def parse_dict_header(value): - """Parse lists of key, value pairs as described by RFC 2068 Section 2 and - convert them into a python dict: - - >>> d = parse_dict_header('foo="is a fish", bar="as well"') - >>> type(d) is dict - True - >>> sorted(d.items()) - [('bar', 'as well'), ('foo', 'is a fish')] - - If there is no value for a key it will be `None`: - - >>> parse_dict_header('key_without_value') - {'key_without_value': None} - - To create a header from the :class:`dict` again, use the - :func:`dump_header` function. - - :param value: a string with a dict header. - :return: :class:`dict` - :rtype: dict - """ - result = {} - for item in _parse_list_header(value): - if "=" not in item: - result[item] = None - continue - name, value = item.split("=", 1) - if value[:1] == value[-1:] == '"': - value = unquote_header_value(value[1:-1]) - result[name] = value - return result - - -# From mitsuhiko/werkzeug (used with permission). -def unquote_header_value(value, is_filename=False): - r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). - This does not use the real unquoting but what browsers are actually - using for quoting. - - :param value: the header value to unquote. - :rtype: str - """ - if value and value[0] == value[-1] == '"': - # this is not the real unquoting, but fixing this so that the - # RFC is met will result in bugs with internet explorer and - # probably some other browsers as well. IE for example is - # uploading files with "C:\foo\bar.txt" as filename - value = value[1:-1] - - # if this is a filename and the starting characters look like - # a UNC path, then just return the value without quotes. Using the - # replace sequence below on a UNC path has the effect of turning - # the leading double slash into a single slash and then - # _fix_ie_filename() doesn't work correctly. See #458. - if not is_filename or value[:2] != "\\\\": - return value.replace("\\\\", "\\").replace('\\"', '"') - return value - - -def dict_from_cookiejar(cj): - """Returns a key/value dictionary from a CookieJar. - - :param cj: CookieJar object to extract cookies from. - :rtype: dict - """ - - cookie_dict = {} - - for cookie in cj: - cookie_dict[cookie.name] = cookie.value - - return cookie_dict - - -def add_dict_to_cookiejar(cj, cookie_dict): - """Returns a CookieJar from a key/value dictionary. - - :param cj: CookieJar to insert cookies into. - :param cookie_dict: Dict of key/values to insert into CookieJar. - :rtype: CookieJar - """ - - return cookiejar_from_dict(cookie_dict, cj) - - -def get_encodings_from_content(content): - """Returns encodings from given content string. - - :param content: bytestring to extract encodings from. - """ - warnings.warn( - ( - "In requests 3.0, get_encodings_from_content will be removed. For " - "more information, please see the discussion on issue #2266. (This" - " warning should only appear once.)" - ), - DeprecationWarning, - ) - - charset_re = re.compile(r']', flags=re.I) - pragma_re = re.compile(r']', flags=re.I) - xml_re = re.compile(r'^<\?xml.*?encoding=["\']*(.+?)["\'>]') - - return ( - charset_re.findall(content) - + pragma_re.findall(content) - + xml_re.findall(content) - ) - - -def _parse_content_type_header(header): - """Returns content type and parameters from given header - - :param header: string - :return: tuple containing content type and dictionary of - parameters - """ - - tokens = header.split(";") - content_type, params = tokens[0].strip(), tokens[1:] - params_dict = {} - items_to_strip = "\"' " - - for param in params: - param = param.strip() - if param: - key, value = param, True - index_of_equals = param.find("=") - if index_of_equals != -1: - key = param[:index_of_equals].strip(items_to_strip) - value = param[index_of_equals + 1 :].strip(items_to_strip) - params_dict[key.lower()] = value - return content_type, params_dict - - -def get_encoding_from_headers(headers): - """Returns encodings from given HTTP Header Dict. - - :param headers: dictionary to extract encoding from. - :rtype: str - """ - - content_type = headers.get("content-type") - - if not content_type: - return None - - content_type, params = _parse_content_type_header(content_type) - - if "charset" in params: - return params["charset"].strip("'\"") - - if "text" in content_type: - return "ISO-8859-1" - - if "application/json" in content_type: - # Assume UTF-8 based on RFC 4627: https://www.ietf.org/rfc/rfc4627.txt since the charset was unset - return "utf-8" - - -def stream_decode_response_unicode(iterator, r): - """Stream decodes an iterator.""" - - if r.encoding is None: - yield from iterator - return - - decoder = codecs.getincrementaldecoder(r.encoding)(errors="replace") - for chunk in iterator: - rv = decoder.decode(chunk) - if rv: - yield rv - rv = decoder.decode(b"", final=True) - if rv: - yield rv - - -def iter_slices(string, slice_length): - """Iterate over slices of a string.""" - pos = 0 - if slice_length is None or slice_length <= 0: - slice_length = len(string) - while pos < len(string): - yield string[pos : pos + slice_length] - pos += slice_length - - -def get_unicode_from_response(r): - """Returns the requested content back in unicode. - - :param r: Response object to get unicode content from. - - Tried: - - 1. charset from content-type - 2. fall back and replace all unicode characters - - :rtype: str - """ - warnings.warn( - ( - "In requests 3.0, get_unicode_from_response will be removed. For " - "more information, please see the discussion on issue #2266. (This" - " warning should only appear once.)" - ), - DeprecationWarning, - ) - - tried_encodings = [] - - # Try charset from content-type - encoding = get_encoding_from_headers(r.headers) - - if encoding: - try: - return str(r.content, encoding) - except UnicodeError: - tried_encodings.append(encoding) - - # Fall back: - try: - return str(r.content, encoding, errors="replace") - except TypeError: - return r.content - - -# The unreserved URI characters (RFC 3986) -UNRESERVED_SET = frozenset( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789-._~" -) - - -def unquote_unreserved(uri): - """Un-escape any percent-escape sequences in a URI that are unreserved - characters. This leaves all reserved, illegal and non-ASCII bytes encoded. - - :rtype: str - """ - parts = uri.split("%") - for i in range(1, len(parts)): - h = parts[i][0:2] - if len(h) == 2 and h.isalnum(): - try: - c = chr(int(h, 16)) - except ValueError: - raise InvalidURL(f"Invalid percent-escape sequence: '{h}'") - - if c in UNRESERVED_SET: - parts[i] = c + parts[i][2:] - else: - parts[i] = f"%{parts[i]}" - else: - parts[i] = f"%{parts[i]}" - return "".join(parts) - - -def requote_uri(uri): - """Re-quote the given URI. - - This function passes the given URI through an unquote/quote cycle to - ensure that it is fully and consistently quoted. - - :rtype: str - """ - safe_with_percent = "!#$%&'()*+,/:;=?@[]~" - safe_without_percent = "!#$&'()*+,/:;=?@[]~" - try: - # Unquote only the unreserved characters - # Then quote only illegal characters (do not quote reserved, - # unreserved, or '%') - return quote(unquote_unreserved(uri), safe=safe_with_percent) - except InvalidURL: - # We couldn't unquote the given URI, so let's try quoting it, but - # there may be unquoted '%'s in the URI. We need to make sure they're - # properly quoted so they do not cause issues elsewhere. - return quote(uri, safe=safe_without_percent) - - -def address_in_network(ip, net): - """This function allows you to check if an IP belongs to a network subnet - - Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24 - returns False if ip = 192.168.1.1 and net = 192.168.100.0/24 - - :rtype: bool - """ - ipaddr = struct.unpack("=L", socket.inet_aton(ip))[0] - netaddr, bits = net.split("/") - netmask = struct.unpack("=L", socket.inet_aton(dotted_netmask(int(bits))))[0] - network = struct.unpack("=L", socket.inet_aton(netaddr))[0] & netmask - return (ipaddr & netmask) == (network & netmask) - - -def dotted_netmask(mask): - """Converts mask from /xx format to xxx.xxx.xxx.xxx - - Example: if mask is 24 function returns 255.255.255.0 - - :rtype: str - """ - bits = 0xFFFFFFFF ^ (1 << 32 - mask) - 1 - return socket.inet_ntoa(struct.pack(">I", bits)) - - -def is_ipv4_address(string_ip): - """ - :rtype: bool - """ - try: - socket.inet_aton(string_ip) - except OSError: - return False - return True - - -def is_valid_cidr(string_network): - """ - Very simple check of the cidr format in no_proxy variable. - - :rtype: bool - """ - if string_network.count("/") == 1: - try: - mask = int(string_network.split("/")[1]) - except ValueError: - return False - - if mask < 1 or mask > 32: - return False - - try: - socket.inet_aton(string_network.split("/")[0]) - except OSError: - return False - else: - return False - return True - - -@contextlib.contextmanager -def set_environ(env_name, value): - """Set the environment variable 'env_name' to 'value' - - Save previous value, yield, and then restore the previous value stored in - the environment variable 'env_name'. - - If 'value' is None, do nothing""" - value_changed = value is not None - if value_changed: - old_value = os.environ.get(env_name) - os.environ[env_name] = value - try: - yield - finally: - if value_changed: - if old_value is None: - del os.environ[env_name] - else: - os.environ[env_name] = old_value - - -def should_bypass_proxies(url, no_proxy): - """ - Returns whether we should bypass proxies or not. - - :rtype: bool - """ - # Prioritize lowercase environment variables over uppercase - # to keep a consistent behaviour with other http projects (curl, wget). - def get_proxy(key): - return os.environ.get(key) or os.environ.get(key.upper()) - - # First check whether no_proxy is defined. If it is, check that the URL - # we're getting isn't in the no_proxy list. - no_proxy_arg = no_proxy - if no_proxy is None: - no_proxy = get_proxy("no_proxy") - parsed = urlparse(url) - - if parsed.hostname is None: - # URLs don't always have hostnames, e.g. file:/// urls. - return True - - if no_proxy: - # We need to check whether we match here. We need to see if we match - # the end of the hostname, both with and without the port. - no_proxy = (host for host in no_proxy.replace(" ", "").split(",") if host) - - if is_ipv4_address(parsed.hostname): - for proxy_ip in no_proxy: - if is_valid_cidr(proxy_ip): - if address_in_network(parsed.hostname, proxy_ip): - return True - elif parsed.hostname == proxy_ip: - # If no_proxy ip was defined in plain IP notation instead of cidr notation & - # matches the IP of the index - return True - else: - host_with_port = parsed.hostname - if parsed.port: - host_with_port += f":{parsed.port}" - - for host in no_proxy: - if parsed.hostname.endswith(host) or host_with_port.endswith(host): - # The URL does match something in no_proxy, so we don't want - # to apply the proxies on this URL. - return True - - with set_environ("no_proxy", no_proxy_arg): - # parsed.hostname can be `None` in cases such as a file URI. - try: - bypass = proxy_bypass(parsed.hostname) - except (TypeError, socket.gaierror): - bypass = False - - if bypass: - return True - - return False - - -def get_environ_proxies(url, no_proxy=None): - """ - Return a dict of environment proxies. - - :rtype: dict - """ - if should_bypass_proxies(url, no_proxy=no_proxy): - return {} - else: - return getproxies() - - -def select_proxy(url, proxies): - """Select a proxy for the url, if applicable. - - :param url: The url being for the request - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs - """ - proxies = proxies or {} - urlparts = urlparse(url) - if urlparts.hostname is None: - return proxies.get(urlparts.scheme, proxies.get("all")) - - proxy_keys = [ - urlparts.scheme + "://" + urlparts.hostname, - urlparts.scheme, - "all://" + urlparts.hostname, - "all", - ] - proxy = None - for proxy_key in proxy_keys: - if proxy_key in proxies: - proxy = proxies[proxy_key] - break - - return proxy - - -def resolve_proxies(request, proxies, trust_env=True): - """This method takes proxy information from a request and configuration - input to resolve a mapping of target proxies. This will consider settings - such a NO_PROXY to strip proxy configurations. - - :param request: Request or PreparedRequest - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs - :param trust_env: Boolean declaring whether to trust environment configs - - :rtype: dict - """ - proxies = proxies if proxies is not None else {} - url = request.url - scheme = urlparse(url).scheme - no_proxy = proxies.get("no_proxy") - new_proxies = proxies.copy() - - if trust_env and not should_bypass_proxies(url, no_proxy=no_proxy): - environ_proxies = get_environ_proxies(url, no_proxy=no_proxy) - - proxy = environ_proxies.get(scheme, environ_proxies.get("all")) - - if proxy: - new_proxies.setdefault(scheme, proxy) - return new_proxies - - -def default_user_agent(name="python-requests"): - """ - Return a string representing the default user agent. - - :rtype: str - """ - return f"{name}/{__version__}" - - -def default_headers(): - """ - :rtype: requests.structures.CaseInsensitiveDict - """ - return CaseInsensitiveDict( - { - "User-Agent": default_user_agent(), - "Accept-Encoding": DEFAULT_ACCEPT_ENCODING, - "Accept": "*/*", - "Connection": "keep-alive", - } - ) - - -def parse_header_links(value): - """Return a list of parsed link headers proxies. - - i.e. Link: ; rel=front; type="image/jpeg",; rel=back;type="image/jpeg" - - :rtype: list - """ - - links = [] - - replace_chars = " '\"" - - value = value.strip(replace_chars) - if not value: - return links - - for val in re.split(", *<", value): - try: - url, params = val.split(";", 1) - except ValueError: - url, params = val, "" - - link = {"url": url.strip("<> '\"")} - - for param in params.split(";"): - try: - key, value = param.split("=") - except ValueError: - break - - link[key.strip(replace_chars)] = value.strip(replace_chars) - - links.append(link) - - return links - - -# Null bytes; no need to recreate these on each call to guess_json_utf -_null = "\x00".encode("ascii") # encoding to ASCII for Python 3 -_null2 = _null * 2 -_null3 = _null * 3 - - -def guess_json_utf(data): - """ - :rtype: str - """ - # JSON always starts with two ASCII characters, so detection is as - # easy as counting the nulls and from their location and count - # determine the encoding. Also detect a BOM, if present. - sample = data[:4] - if sample in (codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE): - return "utf-32" # BOM included - if sample[:3] == codecs.BOM_UTF8: - return "utf-8-sig" # BOM included, MS style (discouraged) - if sample[:2] in (codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE): - return "utf-16" # BOM included - nullcount = sample.count(_null) - if nullcount == 0: - return "utf-8" - if nullcount == 2: - if sample[::2] == _null2: # 1st and 3rd are null - return "utf-16-be" - if sample[1::2] == _null2: # 2nd and 4th are null - return "utf-16-le" - # Did not detect 2 valid UTF-16 ascii-range characters - if nullcount == 3: - if sample[:3] == _null3: - return "utf-32-be" - if sample[1:] == _null3: - return "utf-32-le" - # Did not detect a valid UTF-32 ascii-range character - return None - - -def prepend_scheme_if_needed(url, new_scheme): - """Given a URL that may or may not have a scheme, prepend the given scheme. - Does not replace a present scheme with the one provided as an argument. - - :rtype: str - """ - parsed = parse_url(url) - scheme, auth, host, port, path, query, fragment = parsed - - # A defect in urlparse determines that there isn't a netloc present in some - # urls. We previously assumed parsing was overly cautious, and swapped the - # netloc and path. Due to a lack of tests on the original defect, this is - # maintained with parse_url for backwards compatibility. - netloc = parsed.netloc - if not netloc: - netloc, path = path, netloc - - if auth: - # parse_url doesn't provide the netloc with auth - # so we'll add it ourselves. - netloc = "@".join([auth, netloc]) - if scheme is None: - scheme = new_scheme - if path is None: - path = "" - - return urlunparse((scheme, netloc, path, "", query, fragment)) - - -def get_auth_from_url(url): - """Given a url with authentication components, extract them into a tuple of - username,password. - - :rtype: (str,str) - """ - parsed = urlparse(url) - - try: - auth = (unquote(parsed.username), unquote(parsed.password)) - except (AttributeError, TypeError): - auth = ("", "") - - return auth - - -def check_header_validity(header): - """Verifies that header parts don't contain leading whitespace - reserved characters, or return characters. - - :param header: tuple, in the format (name, value). - """ - name, value = header - _validate_header_part(header, name, 0) - _validate_header_part(header, value, 1) - - -def _validate_header_part(header, header_part, header_validator_index): - if isinstance(header_part, str): - validator = _HEADER_VALIDATORS_STR[header_validator_index] - elif isinstance(header_part, bytes): - validator = _HEADER_VALIDATORS_BYTE[header_validator_index] - else: - raise InvalidHeader( - f"Header part ({header_part!r}) from {header} " - f"must be of type str or bytes, not {type(header_part)}" - ) - - if not validator.match(header_part): - header_kind = "name" if header_validator_index == 0 else "value" - raise InvalidHeader( - f"Invalid leading whitespace, reserved character(s), or return" - f"character(s) in header {header_kind}: {header_part!r}" - ) - - -def urldefragauth(url): - """ - Given a url remove the fragment and the authentication part. - - :rtype: str - """ - scheme, netloc, path, params, query, fragment = urlparse(url) - - # see func:`prepend_scheme_if_needed` - if not netloc: - netloc, path = path, netloc - - netloc = netloc.rsplit("@", 1)[-1] - - return urlunparse((scheme, netloc, path, params, query, "")) - - -def rewind_body(prepared_request): - """Move file pointer back to its recorded starting position - so it can be read again on redirect. - """ - body_seek = getattr(prepared_request.body, "seek", None) - if body_seek is not None and isinstance( - prepared_request._body_position, integer_types - ): - try: - body_seek(prepared_request._body_position) - except OSError: - raise UnrewindableBodyError( - "An error occurred when rewinding request body for redirect." - ) - else: - raise UnrewindableBodyError("Unable to rewind request body for redirect.") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py deleted file mode 100644 index d92acc7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -__all__ = [ - "__version__", - "AbstractProvider", - "AbstractResolver", - "BaseReporter", - "InconsistentCandidate", - "Resolver", - "RequirementsConflicted", - "ResolutionError", - "ResolutionImpossible", - "ResolutionTooDeep", -] - -__version__ = "1.0.1" - - -from .providers import AbstractProvider, AbstractResolver -from .reporters import BaseReporter -from .resolvers import ( - InconsistentCandidate, - RequirementsConflicted, - ResolutionError, - ResolutionImpossible, - ResolutionTooDeep, - Resolver, -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 88b6dbd7f323d8473ba4cc60b0aa61cf1563162d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmaJ;J&zMH5VfcGv?{E5>x z<^#yvfg<}D%6wHY%+x4DouSE)R}58xkMjp{#8{^kV~~5q#vR4_Q?uB>QK3I{&G8@o z{{QX2Bben;8Gdca)@ngEJK2NnMF^7Iy!6EP&^c)~XU=j@_QLFml567b!q%D>i{&}- zGKe$R^*7x{c;ciZ>5~k%K#tGI^^8d)17iz!7wcEr@|_Z|vm&3x)~IY}#S}lszX7xT BsdoSX diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc deleted file mode 100644 index 8009e5e45598be860c223dac5f8e84f5bad27046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6659 zcmc&&O>Y~=873uKqGZ{1kbXEx-As%E76qAX;7j0s*s5#0Mo^)!g#-`^ESI}Oa;oLd zW@cA31)o}<`vdw9@*Db37U-#$-g?Nbr#|n@?(8gO1?edZaYXLUzVm)Q?}xl`W4D9r zZTIE$KR@nt{zX6htA`(t@zFoW^1Ksw;_h2~c;~O1r(OKsh&SsDJR@{$w@P9krjj!W>Ki&h~ z8|AH|iOy9R<$qN2T*O>m{PuS|;j=L3EJ{MHSuR;-pRs(-nc`m+Lh+c1H0Np>Mx0Hh zsvc>XoO3mdh`ait?_GSJ;PVZMo_GGz9ds}L@m!qql!Z0L1yA!s{KyN1yD0-RX)dOM zD|3Lzhr7G1x=!XoGyD}AjDW#v?`oYIAI^qsIp<&;EH0&gmUh(iToy^p=HWRfIfP<5 zf&3stV!f~y&ihwhE9yXE`GGJmni5>9;c_^DD-4K~W2=E=0YU1^D)1yTi3n8qT8 zPQUJ`ZK&YCVl5-09n2B_DKa;T@K|SZAL`+86Dxb^r!SK^x zjI_x4{Va^m!Wq}2Ok|?~+hVCkiW}{l{go~CFk6-VS~;ZqZ^#?Q2M!aQ4?mZxb z#(XMLyb)@4_XUh0(lc7MZ#Y)jYr>s9D%oQ;6-wuKhwKENn#d(t-T16=s`D@@I8He< zHy2XXr^B5cDRbIP$s%KN%0e|O$cW@^9^((;7U80HJGkgWcGU7%@NYdCvP@QNJg(Kd zKNydRJ<+%y`E>PIaKsxJj(G;7LR%}g2=i!;+snC#=8fo%eB+cAQ$`m>E@Y}7vOk0w z`4frad{DEfP%uTFtQa1Wy1^ojbvhu9DwV1sdm7?kGBM21ipxX%MEHTrG444CSgl=8|uqp27_$$c3h9T^L_-yHgEbF~Nu8D1it~Gn@BLu+TBH`_MsDvyCwsgUPcp{CG zA|~;)Ex6ih<@QlShOwDkOfY>!8k=hm=c-f)@(qsTx8dFX4AWit-{%lGSjqcK#wv0eJ=vL?UuRTbPu1p;a;stkF}#LU7pP?qn{tZ$E=s zQ@&&gpXN2Ui8$ki*L4mL*$Xy<8MLpEBX=@!MVzM&69Ivyrdns?OJ1Gj1Y=a3SsjsD zNGYflbR9R)vI)#J@}3_ZnG_Bs*C_6?D>Oi96Pn&P3R#LIfgx75y?dc9GX-JwI-MiWT1I_7t&UXjkPN1 zy9LvCePzE6#oqx{gPnR$!2ngeMl|8d%30xFGTxKJ(orE z>SWTksqtZ7D9@2YaFc1KGC^;KWYDTHjtoGXL}Wn9(y}c_9Z}}NO7J8mIIntY&#nj5 zhD9LHO^&&`n4@luh*H{XSA3>7Lz1w$&e(*CQL(@(P?ecN2?h$CRE&LF;b^l-&twyI z9gtn_`Jhm~cPXmY^Ti(dLQwUAk3hj@i;phuT*?;y&WO@jebM*zT=5}pd|A&%V3y0> zJ5)>|Y7tRbS7~*4P6sD=-x-8b@~l9IjKK(Ag0jqLWx_G;nemi*E8MQ*-O=#W;yLsY zn@E{(aPp4A1f-!GTP@dPp7Gc*f_fUPG?qFS#^A0>#p`QO(crPQ+or7okog^&lsk_8 zx}|;~bl{W~Ojdt_)~&I2F4!ewt!=(?XjTngF8=-;aOYA76|eBztIW}0Wfhay*oq5J zqAEjrdUH0Z2Vu}6dI^j{{PWk9wPBt7N0545GqwAv}J7qrz z2vdWg+zo;Suq>hPdqMCOO8x4|b`Zoe3Ier5#Bb5^J}sERcGOR3q1l_aP&uY3Ea;?@w32uE*cy;|MDOX_E|Gh5-%pS^0<=oOxaXx{}I@FK6G(g_beATfHNU}^!EAfPAYD2@Ku z%!(*1OqvmCNHw1$gAqf{4{ZbBrzOHFyi8aX=5|g%olR9vQd4f`9+)AZK&HkJ6wk5Q z;Q&R43mMbJXqykw9O0R5^e|S&n;0zTRAn@6#XAaaKQ^iUyHaIM1Xkta*%A{=Du&}2 z{jDSgfCo4aM02A|BaSX6X1)&?p=n$gMLhFW{1DxMnIDbEG}0bYaTTCg!!9$Aqp1Y} zLQSV(#Yax{9_(LkS+>^QY`fCr3VSR}?p@rj(conjD8p*g@u076lSh3(%ZIdlgr(eh zTJu!iZ1bo-rcIyF()hReX5#**c#z?v356)`dmH_Yy`G}`$AissOHTd_V;KxEH{V62 T?ElJw(QgcdP^jGM{80W697Fc! diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc deleted file mode 100644 index 54f7fcbeaac3d76b86ad8d02bac14dc84a1c8716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2612 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc deleted file mode 100644 index 79d7f01599d22030f8b866018ef2bad0ebac5142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7268 zcmb7J%WvGq8Rugk)Ouyhir;op#z<0c;z&u;M;aKeW4lh%v}$U*4kE;*DGnvk-d(PT zT*=xmrHoB zs4Cv8q4ltgo(g&#HG`fRp{U}$rjFqKh`c+hu4bPa%QMQnV>FI_jdhHruT9hqGdmW< z&1M*+QQS^EeNI|jsx#^=evheh;P!krdo$ADFH|3Czq8(Z z<3o3i4L3=3H%PlWbT^}P-BksZ8>+Q1SqQkj{=+u6aRVhegDN$4jcvm-Bi5GGwleM* z`{q)kl-Ws`W;5PKsM9D26Es(2z3FR}WHoQa4<1Q--^@x$*j(K=bRARvdu?$&ZiS0$ z-6+s;5T%^snWa`rT7-udPw3}gj z`g&E*!?@=i=NI#+dMC&CDdPcI=|5~AXq>y)HnB}(13J!EHD$qlOCP~tWuJ0!6ezO^GxsQcsf&Je>)u?C&PvJMW z9|x~l8TQ*sG`*uy=(ilF>#%9=FR#RsOJwmh`Vv}5#j2a9@K-W>^M`kG$hye+4SxFp zs=jsUnbcHprr(RT?LofJOw&khMw^GFZSzXM4SilgkcUp~-YXv}<@#6=;Yp5N?-Kh-+cne8i;i-8i5t?QF)jqX^#hCWJ8He9nD zvyQ(xvv+)S!sz2?FJ@@VgpZV^(8(uJi)IhRjG z%Vb(?!tTVK+#*Wi@%j{Yk(sNRnU2fob&Px$C86x<)|@#H3C)|O7rhgsQp)EKY>@RI zwpnhVB(&4qFer`Ip!x2;04xgtfmCXflt)#|O?$Ti@mo3Sf4NnP}l zx?{ z8(Ep5c~X4J>aubNmeEd=o1}UdRc|ck4ihak=7>nzek=4mz%#EEt8SBRb*KP-K8&I)jOBnLEQk}uK?b+{8Yb>iS&yJ@7Qz4ErPS7FNH=w5Xj2<(~ljM&Or5|e8Us-~SR}LCl5<);C!dtID~n)QWYOuPAFvSYU8gC68Ll%*c`$XQS!8P8aC9h|8HR`qY$PbB25i0>5owBpRpPhqh^SU*v}B( zd-JgHL{0;{)8>D$AQe~zw0O>von<0=_%{viTH@7t?2Kw`T;9R zi$7tD`96bvx8rs%)G<<~c-K&#lb3@8_zl-fVFg!9a@~cir5f~iBs<~V@&jbLE!p!*GrSjtoBjugw4dSf z#r4}b805LoUCjwyE$8S^xhq@lgVm_5klfN>Jxne&9uye%2F@46uMhY!y4|>)pR$9d zpCs;P+-)j1YH!4kLIJkjwhDD~i=XtD6EIsWdD(6GkMcp+cP|dE-SYdZSmSF9U&LH~ z>IPtXB`hWil}wbb>$tnN?zXzkH0m_5YSapo%kD}yb(^?9N?h&Z-l*l~nb&QFxMNa@ z+rd2&02MYHwPm7}Zq!WQj@s_0atq}q;p1-D4lv!zzFjP6gj({vaA<#HZEkQiJj8{ zi|x;hhcljV$6}f$WXmI%=yy;_@cI;^EiTMRC^+76N{(Hs)-BDk0A=Lq2QK|9bR!6z z^zIaHB#J7cQ1723Aqc%Ap=UJm6oKb1uk!E@2pbZL5QetghutJ~eYkS`WUGHaG!$?K z9?akYs*Om6Nf9+dH^K1;&JSt92Se9S+y|3f43Up#_vx`d|QencF;%+}X9-P8r?rGF;{Q{?moC%7ivbmD>x$I}<2Kkbp?n-?q`Nq<4o zfoBXPMUeYvl!1Fxc*I4Ju{6g`HEMa> ztMGyxr%G9>60bbOt)<)nWYywCE`UgQleOjRp;ZrrpE+0ZTaBv}Y@q?%Oxp9;=U$(C HwSMY9jO{E6HOJrrT*)mJ zSD*oJ3X&Pk{~GCO^aqE-Lz3#9K0JRU|7w^0%F}X{#$P8lof+v6=xmNDX?sg_cf`|{cqQX*?A-}#bzR1M1}|%hr zg)pWl;*msSKn9JqpNfUtVX=Q(S#;sXIdrkV$9)plM&HU$!r2 zbfV2Mv8X(6pl-O)3vM@IiS^m^^n`mIU}A+_i4r`w+VUb{3LSUg(KOKV5-Tf0vj31p d3OTi#m|s+=)&?%yzx*IcP8b`}0Uc5H`v= 3: - # Remove the state that triggered backtracking. - del self._states[-1] - - # Ensure to backtrack to a state that caused the incompatibility - incompatible_state = False - while not incompatible_state: - # Retrieve the last candidate pin and known incompatibilities. - try: - broken_state = self._states.pop() - name, candidate = broken_state.mapping.popitem() - except (IndexError, KeyError): - raise ResolutionImpossible(causes) - current_dependencies = { - self._p.identify(d) - for d in self._p.get_dependencies(candidate) - } - incompatible_state = not current_dependencies.isdisjoint( - incompatible_deps - ) - - incompatibilities_from_broken = [ - (k, list(v.incompatibilities)) - for k, v in broken_state.criteria.items() - ] - - # Also mark the newly known incompatibility. - incompatibilities_from_broken.append((name, [candidate])) - - # Create a new state from the last known-to-work one, and apply - # the previously gathered incompatibility information. - def _patch_criteria(): - for k, incompatibilities in incompatibilities_from_broken: - if not incompatibilities: - continue - try: - criterion = self.state.criteria[k] - except KeyError: - continue - matches = self._p.find_matches( - identifier=k, - requirements=IteratorMapping( - self.state.criteria, - operator.methodcaller("iter_requirement"), - ), - incompatibilities=IteratorMapping( - self.state.criteria, - operator.attrgetter("incompatibilities"), - {k: incompatibilities}, - ), - ) - candidates = build_iter_view(matches) - if not candidates: - return False - incompatibilities.extend(criterion.incompatibilities) - self.state.criteria[k] = Criterion( - candidates=candidates, - information=list(criterion.information), - incompatibilities=incompatibilities, - ) - return True - - self._push_new_state() - success = _patch_criteria() - - # It works! Let's work on this new state. - if success: - return True - - # State does not work after applying known incompatibilities. - # Try the still previous state. - - # No way to backtrack anymore. - return False - - def resolve(self, requirements, max_rounds): - if self._states: - raise RuntimeError("already resolved") - - self._r.starting() - - # Initialize the root state. - self._states = [ - State( - mapping=collections.OrderedDict(), - criteria={}, - backtrack_causes=[], - ) - ] - for r in requirements: - try: - self._add_to_criteria(self.state.criteria, r, parent=None) - except RequirementsConflicted as e: - raise ResolutionImpossible(e.criterion.information) - - # The root state is saved as a sentinel so the first ever pin can have - # something to backtrack to if it fails. The root state is basically - # pinning the virtual "root" package in the graph. - self._push_new_state() - - for round_index in range(max_rounds): - self._r.starting_round(index=round_index) - - unsatisfied_names = [ - key - for key, criterion in self.state.criteria.items() - if not self._is_current_pin_satisfying(key, criterion) - ] - - # All criteria are accounted for. Nothing more to pin, we are done! - if not unsatisfied_names: - self._r.ending(state=self.state) - return self.state - - # keep track of satisfied names to calculate diff after pinning - satisfied_names = set(self.state.criteria.keys()) - set( - unsatisfied_names - ) - - # Choose the most preferred unpinned criterion to try. - name = min(unsatisfied_names, key=self._get_preference) - failure_causes = self._attempt_to_pin_criterion(name) - - if failure_causes: - causes = [i for c in failure_causes for i in c.information] - # Backjump if pinning fails. The backjump process puts us in - # an unpinned state, so we can work on it in the next round. - self._r.resolving_conflicts(causes=causes) - success = self._backjump(causes) - self.state.backtrack_causes[:] = causes - - # Dead ends everywhere. Give up. - if not success: - raise ResolutionImpossible(self.state.backtrack_causes) - else: - # discard as information sources any invalidated names - # (unsatisfied names that were previously satisfied) - newly_unsatisfied_names = { - key - for key, criterion in self.state.criteria.items() - if key in satisfied_names - and not self._is_current_pin_satisfying(key, criterion) - } - self._remove_information_from_criteria( - self.state.criteria, newly_unsatisfied_names - ) - # Pinning was successful. Push a new state to do another pin. - self._push_new_state() - - self._r.ending_round(index=round_index, state=self.state) - - raise ResolutionTooDeep(max_rounds) - - -def _has_route_to_root(criteria, key, all_keys, connected): - if key in connected: - return True - if key not in criteria: - return False - for p in criteria[key].iter_parent(): - try: - pkey = all_keys[id(p)] - except KeyError: - continue - if pkey in connected: - connected.add(key) - return True - if _has_route_to_root(criteria, pkey, all_keys, connected): - connected.add(key) - return True - return False - - -Result = collections.namedtuple("Result", "mapping graph criteria") - - -def _build_result(state): - mapping = state.mapping - all_keys = {id(v): k for k, v in mapping.items()} - all_keys[id(None)] = None - - graph = DirectedGraph() - graph.add(None) # Sentinel as root dependencies' parent. - - connected = {None} - for key, criterion in state.criteria.items(): - if not _has_route_to_root(state.criteria, key, all_keys, connected): - continue - if key not in graph: - graph.add(key) - for p in criterion.iter_parent(): - try: - pkey = all_keys[id(p)] - except KeyError: - continue - if pkey not in graph: - graph.add(pkey) - graph.connect(pkey, key) - - return Result( - mapping={k: v for k, v in mapping.items() if k in connected}, - graph=graph, - criteria=state.criteria, - ) - - -class Resolver(AbstractResolver): - """The thing that performs the actual resolution work.""" - - base_exception = ResolverException - - def resolve(self, requirements, max_rounds=100): - """Take a collection of constraints, spit out the resolution result. - - The return value is a representation to the final resolution result. It - is a tuple subclass with three public members: - - * `mapping`: A dict of resolved candidates. Each key is an identifier - of a requirement (as returned by the provider's `identify` method), - and the value is the resolved candidate. - * `graph`: A `DirectedGraph` instance representing the dependency tree. - The vertices are keys of `mapping`, and each edge represents *why* - a particular package is included. A special vertex `None` is - included to represent parents of user-supplied requirements. - * `criteria`: A dict of "criteria" that hold detailed information on - how edges in the graph are derived. Each key is an identifier of a - requirement, and the value is a `Criterion` instance. - - The following exceptions may be raised if a resolution cannot be found: - - * `ResolutionImpossible`: A resolution cannot be found for the given - combination of requirements. The `causes` attribute of the - exception is a list of (requirement, parent), giving the - requirements that could not be satisfied. - * `ResolutionTooDeep`: The dependency tree is too deeply nested and - the resolver gave up. This is usually caused by a circular - dependency, but you can try to resolve this by increasing the - `max_rounds` argument. - """ - resolution = Resolution(self.provider, self.reporter) - state = resolution.resolve(requirements, max_rounds=max_rounds) - return _build_result(state) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py b/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py deleted file mode 100644 index 359a34f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py +++ /dev/null @@ -1,170 +0,0 @@ -import itertools - -from .compat import collections_abc - - -class DirectedGraph(object): - """A graph structure with directed edges.""" - - def __init__(self): - self._vertices = set() - self._forwards = {} # -> Set[] - self._backwards = {} # -> Set[] - - def __iter__(self): - return iter(self._vertices) - - def __len__(self): - return len(self._vertices) - - def __contains__(self, key): - return key in self._vertices - - def copy(self): - """Return a shallow copy of this graph.""" - other = DirectedGraph() - other._vertices = set(self._vertices) - other._forwards = {k: set(v) for k, v in self._forwards.items()} - other._backwards = {k: set(v) for k, v in self._backwards.items()} - return other - - def add(self, key): - """Add a new vertex to the graph.""" - if key in self._vertices: - raise ValueError("vertex exists") - self._vertices.add(key) - self._forwards[key] = set() - self._backwards[key] = set() - - def remove(self, key): - """Remove a vertex from the graph, disconnecting all edges from/to it.""" - self._vertices.remove(key) - for f in self._forwards.pop(key): - self._backwards[f].remove(key) - for t in self._backwards.pop(key): - self._forwards[t].remove(key) - - def connected(self, f, t): - return f in self._backwards[t] and t in self._forwards[f] - - def connect(self, f, t): - """Connect two existing vertices. - - Nothing happens if the vertices are already connected. - """ - if t not in self._vertices: - raise KeyError(t) - self._forwards[f].add(t) - self._backwards[t].add(f) - - def iter_edges(self): - for f, children in self._forwards.items(): - for t in children: - yield f, t - - def iter_children(self, key): - return iter(self._forwards[key]) - - def iter_parents(self, key): - return iter(self._backwards[key]) - - -class IteratorMapping(collections_abc.Mapping): - def __init__(self, mapping, accessor, appends=None): - self._mapping = mapping - self._accessor = accessor - self._appends = appends or {} - - def __repr__(self): - return "IteratorMapping({!r}, {!r}, {!r})".format( - self._mapping, - self._accessor, - self._appends, - ) - - def __bool__(self): - return bool(self._mapping or self._appends) - - __nonzero__ = __bool__ # XXX: Python 2. - - def __contains__(self, key): - return key in self._mapping or key in self._appends - - def __getitem__(self, k): - try: - v = self._mapping[k] - except KeyError: - return iter(self._appends[k]) - return itertools.chain(self._accessor(v), self._appends.get(k, ())) - - def __iter__(self): - more = (k for k in self._appends if k not in self._mapping) - return itertools.chain(self._mapping, more) - - def __len__(self): - more = sum(1 for k in self._appends if k not in self._mapping) - return len(self._mapping) + more - - -class _FactoryIterableView(object): - """Wrap an iterator factory returned by `find_matches()`. - - Calling `iter()` on this class would invoke the underlying iterator - factory, making it a "collection with ordering" that can be iterated - through multiple times, but lacks random access methods presented in - built-in Python sequence types. - """ - - def __init__(self, factory): - self._factory = factory - self._iterable = None - - def __repr__(self): - return "{}({})".format(type(self).__name__, list(self)) - - def __bool__(self): - try: - next(iter(self)) - except StopIteration: - return False - return True - - __nonzero__ = __bool__ # XXX: Python 2. - - def __iter__(self): - iterable = ( - self._factory() if self._iterable is None else self._iterable - ) - self._iterable, current = itertools.tee(iterable) - return current - - -class _SequenceIterableView(object): - """Wrap an iterable returned by find_matches(). - - This is essentially just a proxy to the underlying sequence that provides - the same interface as `_FactoryIterableView`. - """ - - def __init__(self, sequence): - self._sequence = sequence - - def __repr__(self): - return "{}({})".format(type(self).__name__, self._sequence) - - def __bool__(self): - return bool(self._sequence) - - __nonzero__ = __bool__ # XXX: Python 2. - - def __iter__(self): - return iter(self._sequence) - - -def build_iter_view(matches): - """Build an iterable view from the value returned by `find_matches()`.""" - if callable(matches): - return _FactoryIterableView(matches) - if not isinstance(matches, collections_abc.Sequence): - matches = list(matches) - return _SequenceIterableView(matches) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py deleted file mode 100644 index 73f58d7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py +++ /dev/null @@ -1,177 +0,0 @@ -"""Rich text and beautiful formatting in the terminal.""" - -import os -from typing import IO, TYPE_CHECKING, Any, Callable, Optional, Union - -from ._extension import load_ipython_extension # noqa: F401 - -__all__ = ["get_console", "reconfigure", "print", "inspect", "print_json"] - -if TYPE_CHECKING: - from .console import Console - -# Global console used by alternative print -_console: Optional["Console"] = None - -try: - _IMPORT_CWD = os.path.abspath(os.getcwd()) -except FileNotFoundError: - # Can happen if the cwd has been deleted - _IMPORT_CWD = "" - - -def get_console() -> "Console": - """Get a global :class:`~rich.console.Console` instance. This function is used when Rich requires a Console, - and hasn't been explicitly given one. - - Returns: - Console: A console instance. - """ - global _console - if _console is None: - from .console import Console - - _console = Console() - - return _console - - -def reconfigure(*args: Any, **kwargs: Any) -> None: - """Reconfigures the global console by replacing it with another. - - Args: - *args (Any): Positional arguments for the replacement :class:`~rich.console.Console`. - **kwargs (Any): Keyword arguments for the replacement :class:`~rich.console.Console`. - """ - from pip._vendor.rich.console import Console - - new_console = Console(*args, **kwargs) - _console = get_console() - _console.__dict__ = new_console.__dict__ - - -def print( - *objects: Any, - sep: str = " ", - end: str = "\n", - file: Optional[IO[str]] = None, - flush: bool = False, -) -> None: - r"""Print object(s) supplied via positional arguments. - This function has an identical signature to the built-in print. - For more advanced features, see the :class:`~rich.console.Console` class. - - Args: - sep (str, optional): Separator between printed objects. Defaults to " ". - end (str, optional): Character to write at end of output. Defaults to "\\n". - file (IO[str], optional): File to write to, or None for stdout. Defaults to None. - flush (bool, optional): Has no effect as Rich always flushes output. Defaults to False. - - """ - from .console import Console - - write_console = get_console() if file is None else Console(file=file) - return write_console.print(*objects, sep=sep, end=end) - - -def print_json( - json: Optional[str] = None, - *, - data: Any = None, - indent: Union[None, int, str] = 2, - highlight: bool = True, - skip_keys: bool = False, - ensure_ascii: bool = False, - check_circular: bool = True, - allow_nan: bool = True, - default: Optional[Callable[[Any], Any]] = None, - sort_keys: bool = False, -) -> None: - """Pretty prints JSON. Output will be valid JSON. - - Args: - json (str): A string containing JSON. - data (Any): If json is not supplied, then encode this data. - indent (int, optional): Number of spaces to indent. Defaults to 2. - highlight (bool, optional): Enable highlighting of output: Defaults to True. - skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. - ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. - check_circular (bool, optional): Check for circular references. Defaults to True. - allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. - default (Callable, optional): A callable that converts values that can not be encoded - in to something that can be JSON encoded. Defaults to None. - sort_keys (bool, optional): Sort dictionary keys. Defaults to False. - """ - - get_console().print_json( - json, - data=data, - indent=indent, - highlight=highlight, - skip_keys=skip_keys, - ensure_ascii=ensure_ascii, - check_circular=check_circular, - allow_nan=allow_nan, - default=default, - sort_keys=sort_keys, - ) - - -def inspect( - obj: Any, - *, - console: Optional["Console"] = None, - title: Optional[str] = None, - help: bool = False, - methods: bool = False, - docs: bool = True, - private: bool = False, - dunder: bool = False, - sort: bool = True, - all: bool = False, - value: bool = True, -) -> None: - """Inspect any Python object. - - * inspect() to see summarized info. - * inspect(, methods=True) to see methods. - * inspect(, help=True) to see full (non-abbreviated) help. - * inspect(, private=True) to see private attributes (single underscore). - * inspect(, dunder=True) to see attributes beginning with double underscore. - * inspect(, all=True) to see all attributes. - - Args: - obj (Any): An object to inspect. - title (str, optional): Title to display over inspect result, or None use type. Defaults to None. - help (bool, optional): Show full help text rather than just first paragraph. Defaults to False. - methods (bool, optional): Enable inspection of callables. Defaults to False. - docs (bool, optional): Also render doc strings. Defaults to True. - private (bool, optional): Show private attributes (beginning with underscore). Defaults to False. - dunder (bool, optional): Show attributes starting with double underscore. Defaults to False. - sort (bool, optional): Sort attributes alphabetically. Defaults to True. - all (bool, optional): Show all attributes. Defaults to False. - value (bool, optional): Pretty print value. Defaults to True. - """ - _console = console or get_console() - from pip._vendor.rich._inspect import Inspect - - # Special case for inspect(inspect) - is_inspect = obj is inspect - - _inspect = Inspect( - obj, - title=title, - help=is_inspect or help, - methods=is_inspect or methods, - docs=is_inspect or docs, - private=private, - dunder=dunder, - sort=sort, - all=all, - value=value, - ) - _console.print(_inspect) - - -if __name__ == "__main__": # pragma: no cover - print("Hello, **World**") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py deleted file mode 100644 index 270629f..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py +++ /dev/null @@ -1,274 +0,0 @@ -import colorsys -import io -from time import process_time - -from pip._vendor.rich import box -from pip._vendor.rich.color import Color -from pip._vendor.rich.console import Console, ConsoleOptions, Group, RenderableType, RenderResult -from pip._vendor.rich.markdown import Markdown -from pip._vendor.rich.measure import Measurement -from pip._vendor.rich.pretty import Pretty -from pip._vendor.rich.segment import Segment -from pip._vendor.rich.style import Style -from pip._vendor.rich.syntax import Syntax -from pip._vendor.rich.table import Table -from pip._vendor.rich.text import Text - - -class ColorBox: - def __rich_console__( - self, console: Console, options: ConsoleOptions - ) -> RenderResult: - for y in range(0, 5): - for x in range(options.max_width): - h = x / options.max_width - l = 0.1 + ((y / 5) * 0.7) - r1, g1, b1 = colorsys.hls_to_rgb(h, l, 1.0) - r2, g2, b2 = colorsys.hls_to_rgb(h, l + 0.7 / 10, 1.0) - bgcolor = Color.from_rgb(r1 * 255, g1 * 255, b1 * 255) - color = Color.from_rgb(r2 * 255, g2 * 255, b2 * 255) - yield Segment("▄", Style(color=color, bgcolor=bgcolor)) - yield Segment.line() - - def __rich_measure__( - self, console: "Console", options: ConsoleOptions - ) -> Measurement: - return Measurement(1, options.max_width) - - -def make_test_card() -> Table: - """Get a renderable that demonstrates a number of features.""" - table = Table.grid(padding=1, pad_edge=True) - table.title = "Rich features" - table.add_column("Feature", no_wrap=True, justify="center", style="bold red") - table.add_column("Demonstration") - - color_table = Table( - box=None, - expand=False, - show_header=False, - show_edge=False, - pad_edge=False, - ) - color_table.add_row( - ( - "✓ [bold green]4-bit color[/]\n" - "✓ [bold blue]8-bit color[/]\n" - "✓ [bold magenta]Truecolor (16.7 million)[/]\n" - "✓ [bold yellow]Dumb terminals[/]\n" - "✓ [bold cyan]Automatic color conversion" - ), - ColorBox(), - ) - - table.add_row("Colors", color_table) - - table.add_row( - "Styles", - "All ansi styles: [bold]bold[/], [dim]dim[/], [italic]italic[/italic], [underline]underline[/], [strike]strikethrough[/], [reverse]reverse[/], and even [blink]blink[/].", - ) - - lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in metus sed sapien ultricies pretium a at justo. Maecenas luctus velit et auctor maximus." - lorem_table = Table.grid(padding=1, collapse_padding=True) - lorem_table.pad_edge = False - lorem_table.add_row( - Text(lorem, justify="left", style="green"), - Text(lorem, justify="center", style="yellow"), - Text(lorem, justify="right", style="blue"), - Text(lorem, justify="full", style="red"), - ) - table.add_row( - "Text", - Group( - Text.from_markup( - """Word wrap text. Justify [green]left[/], [yellow]center[/], [blue]right[/] or [red]full[/].\n""" - ), - lorem_table, - ), - ) - - def comparison(renderable1: RenderableType, renderable2: RenderableType) -> Table: - table = Table(show_header=False, pad_edge=False, box=None, expand=True) - table.add_column("1", ratio=1) - table.add_column("2", ratio=1) - table.add_row(renderable1, renderable2) - return table - - table.add_row( - "Asian\nlanguage\nsupport", - ":flag_for_china: 该库支持中文,日文和韩文文本!\n:flag_for_japan: ライブラリは中国語、日本語、韓国語のテキストをサポートしています\n:flag_for_south_korea: 이 라이브러리는 중국어, 일본어 및 한국어 텍스트를 지원합니다", - ) - - markup_example = ( - "[bold magenta]Rich[/] supports a simple [i]bbcode[/i]-like [b]markup[/b] for [yellow]color[/], [underline]style[/], and emoji! " - ":+1: :apple: :ant: :bear: :baguette_bread: :bus: " - ) - table.add_row("Markup", markup_example) - - example_table = Table( - show_edge=False, - show_header=True, - expand=False, - row_styles=["none", "dim"], - box=box.SIMPLE, - ) - example_table.add_column("[green]Date", style="green", no_wrap=True) - example_table.add_column("[blue]Title", style="blue") - example_table.add_column( - "[cyan]Production Budget", - style="cyan", - justify="right", - no_wrap=True, - ) - example_table.add_column( - "[magenta]Box Office", - style="magenta", - justify="right", - no_wrap=True, - ) - example_table.add_row( - "Dec 20, 2019", - "Star Wars: The Rise of Skywalker", - "$275,000,000", - "$375,126,118", - ) - example_table.add_row( - "May 25, 2018", - "[b]Solo[/]: A Star Wars Story", - "$275,000,000", - "$393,151,347", - ) - example_table.add_row( - "Dec 15, 2017", - "Star Wars Ep. VIII: The Last Jedi", - "$262,000,000", - "[bold]$1,332,539,889[/bold]", - ) - example_table.add_row( - "May 19, 1999", - "Star Wars Ep. [b]I[/b]: [i]The phantom Menace", - "$115,000,000", - "$1,027,044,677", - ) - - table.add_row("Tables", example_table) - - code = '''\ -def iter_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: - """Iterate and generate a tuple with a flag for last value.""" - iter_values = iter(values) - try: - previous_value = next(iter_values) - except StopIteration: - return - for value in iter_values: - yield False, previous_value - previous_value = value - yield True, previous_value''' - - pretty_data = { - "foo": [ - 3.1427, - ( - "Paul Atreides", - "Vladimir Harkonnen", - "Thufir Hawat", - ), - ], - "atomic": (False, True, None), - } - table.add_row( - "Syntax\nhighlighting\n&\npretty\nprinting", - comparison( - Syntax(code, "python3", line_numbers=True, indent_guides=True), - Pretty(pretty_data, indent_guides=True), - ), - ) - - markdown_example = """\ -# Markdown - -Supports much of the *markdown* __syntax__! - -- Headers -- Basic formatting: **bold**, *italic*, `code` -- Block quotes -- Lists, and more... - """ - table.add_row( - "Markdown", comparison("[cyan]" + markdown_example, Markdown(markdown_example)) - ) - - table.add_row( - "+more!", - """Progress bars, columns, styled logging handler, tracebacks, etc...""", - ) - return table - - -if __name__ == "__main__": # pragma: no cover - - console = Console( - file=io.StringIO(), - force_terminal=True, - ) - test_card = make_test_card() - - # Print once to warm cache - start = process_time() - console.print(test_card) - pre_cache_taken = round((process_time() - start) * 1000.0, 1) - - console.file = io.StringIO() - - start = process_time() - console.print(test_card) - taken = round((process_time() - start) * 1000.0, 1) - - c = Console(record=True) - c.print(test_card) - - print(f"rendered in {pre_cache_taken}ms (cold cache)") - print(f"rendered in {taken}ms (warm cache)") - - from pip._vendor.rich.panel import Panel - - console = Console() - - sponsor_message = Table.grid(padding=1) - sponsor_message.add_column(style="green", justify="right") - sponsor_message.add_column(no_wrap=True) - - sponsor_message.add_row( - "Textualize", - "[u blue link=https://github.com/textualize]https://github.com/textualize", - ) - sponsor_message.add_row( - "Twitter", - "[u blue link=https://twitter.com/willmcgugan]https://twitter.com/willmcgugan", - ) - - intro_message = Text.from_markup( - """\ -We hope you enjoy using Rich! - -Rich is maintained with [red]:heart:[/] by [link=https://www.textualize.io]Textualize.io[/] - -- Will McGugan""" - ) - - message = Table.grid(padding=2) - message.add_column() - message.add_column(no_wrap=True) - message.add_row(intro_message, sponsor_message) - - console.print( - Panel.fit( - message, - box=box.ROUNDED, - padding=(1, 2), - title="[b red]Thanks for trying out Rich!", - border_style="bright_blue", - ), - justify="center", - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 6228a394590e92d054ad5a7fb370f6d51f5d393d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc deleted file mode 100644 index 8f4d79436a7a92c01822350ae5acc6f05a5d4b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360057 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc deleted file mode 100644 index c0201dec7ddc02a4b20fd18c226819b40bcc01cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmc&$-EP}96n4^V2n=)>mOTKgT_naV(M^js@Z_Lrnsf#7Q^Z-Z`bJ#SZ?UT#Qj%??39yR}6QG~NbI5bfcMd;FK7L%U!S(yvMgRF`t@f7{R zUcs%uheurN)#A0@TD;y{k013O#T(sP<16wb7==&XoF86(e1C)zGZg#vFkvKy*N_>4 zXhM``rsMr`dF=0bFs#i~u>JbXy>-Hvnb)smJVmov9l=GVkgAPleW}<$$vlncKRLw} zp*O{VU)d~&z-B(Lhqzol#AOg=NY=r=TP4gCL(Zz>^<`@OJ{fW`ZJ)AK$maGNc1=Fy zs7q3fPGu^$n^dM+3Zk3ahcZ{3DRjoh+sz>;bw()j_CqRTwm-Aad5E15VsHb=;=(b6 zMGTA4n41J$fF~%B$#gl@u!+fu z;I}N`68U~PwFJ0 zYc$>3)~>p81%_2@G)}K|K!wcXKG?H>${{A#WP%01(zp-)EX4Rlup6}SSoZt7*aorc zByhuC17cM}Vs^Yz{^G9h_k72(*H}X1z;hV4QEGz|cXVS{>^6GdY84u2Ym3ttt;K68 z;{Ub~*2Di$g@xOHS%NDF^ML}qTq%I7KrqWw{#(u>9?yN~D#a%cZi~gPXrcvC-0`Df z=K;-Gf{e-?o=uiEf~U+c#=*);_gT4i8WF__Fc~A-_(a2Z8})M`d`BRQF8VwP!;ScS zYZrk%-CK>u`Kem-9?(h>MK+SMqoHq|$CBuaE?y9{Q-v|>>yme<;MscuM8)Hdw~Dk? zEGe?E28vUR8f2N$LsR#3$->l%O{0Q7Jyd|Ws#y>!E}i4bdm%fxbro?DWRVL^lpL~B zGeAbcIbk`b(>Dv+nuHQS|fW=}B~aesOwm z+54^5gf@w;FDtf_VQhj5R-6Py5q zc#w0dBxS~Me6y#qrix@d9r&4yH6F2aWceOvQC3KVv|fN6BU#nWYbTZ;ZVjo{A}1i84bTUwT;@w*2c@twSNHap}qtF diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc deleted file mode 100644 index 69998e2e9f817bb64d41b920e525c43176c531f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmZWmJx{|h5Vf5&{h(co#K=U3#vm33gh1>aVCxd4Ik&Z%+LrBBM1qO_8U9jMCjJ5w z=eB}MoODlj_W8Y+iyjPm1Y=8|W?f3iXK0Qi#^xT=og)ANT9FlTBD=(dO*mt+z!frbW3-BO9#j z=X&1e2hI;-yLkQ$e4$r@&)2fFx8Q)q*j@!n_;C3$mRa|-&NSX>mc-5pC+tF?FlycxrwiX fx(yrLo$bsXLHMUl=XRxGU5UG}FBi!AWElMbgKBz4 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc deleted file mode 100644 index a43a408c2723372f325ac9634308e287403fc30e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791 zcmZWnPm9w)6rV}cG|jfl9`)oLH?nOML8OSdEF!(Muoc9LgfyA7V<$6VW>W1^PrF~n zuav7N!B0>;_$Dp7;0t;G^4`nu{gM5CfPn7sb^fS@&<|_eC-9-y2x0vglniBytzXX%fSv(4kX1<7w?*C7dSeIk&BEcn7k= z>fw#M!?)-?njse%ynTR?eLeu@8T!)juyyn6Ej7d<5b``ExsnA*8vBAIX(}sWm{^ir zDpE?R_?EDub@w8ji^2e|g8W>!#^@ zng6;Uk#{Rf6x9_sMCMHeAqmS#vPoDo$O{4>?WC+%mQ*$KCOLej*|0%VdxuUZu!PQ% z!bXg$yKlaxw6wbk9o2?esxGkaNcBMMlV~Li8Z9f9Dw$GaShRkjBb}61t^LkDG&u9GFzQOU|EhOkVkNU?Mk#RnwAa$5(0EOMM2c z*Y&Z3ecZ#I>-=`x>J*%l&^-XOVX9-9J%Z4ygE-DBxELD8%HBrpnXQGV?CC1kGFzZ& a=^pFbQ2%8ivx?JK_Q13)-9u;2Y3mPHtj`Ak diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc deleted file mode 100644 index bf73e05839be7f8dbf8fb6f527a7fb28b31801ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8675 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc deleted file mode 100644 index 22f6ce40fbf83bad62eea47754ddd6151b6b7576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2643 zcmaJ@&5s<#6|buP?&;~Bo!zz90n8@Ez#y?h#3e!~B3WUBj3$T-QqmS_wWn%kd)!~C z?yf8}RvTxyt)TlpXw0LKwzL4`MG*GRN|i*Sd#j|g|q zSu_+o+`Gr*9az`TcF_j#gL4w?iM{0&-s1u9KW5Okx4g>3O^a{+j$j!Lp27afh$@#S zjcC$bjBMq;-w2u9&4e;PNb5$qzpa|IERsz1r+@hH-T3IecaLtrKe?r>j|=Em?opCu z$bUxB7*pm{JcMb8)00Y!4CNe^MO}i$?RDiNQSkL5;g5A>e?gTsMQbzM+U0Kt8t*`< z{|X>TL^+9=M?EYC6q7&CEn#pQiUY+Jrm%#KZsQ)beQ=};b#Tf&1};UHJQhC1~%7fM0<=3+h+bHuu-<9=|pp@}KbMz;>Sp;Nt7b z`=DHOXPn-=aPHiAcyQzQpFDHn5X!5M%Lg&~UHQ72iTfg3cUMVsta>;Y&r6vnjoK;m zw27st1l$(a^J>-8bK(an2f8gqvy#PR=79Olhjj+!2ughj(9)K~q-B7#H2_&_0vfFa zXtp+>#R;Iz2^@h=MvmNtd2$co3c^){eS~WO%8#?8ZuE{ujxuYJ&Hw+5FNk~rCSHi~ zahZ$pVwKKhITKBjj_>`l9@jIORB5qzy()P9u1=ccvUv0G7jKN~v=OgY z$?RUT5cRl9t8ol8UdpjdXUF3>D;MA?jIzV(M7eRC7T~*h3l^MOA8SfrShP1FUCGO0RGGa*nGGX z8;ZV_N02(4f_9Lco_Ub}lp7gn$Qfuv>n}}ia_ccY>v6m7#c)eYTV8K_O9!>!F$E4; zx^kp@Jg9rz$E??Fx>f;0vwZn>YeT`gVK;X{&H`=mVQW-3Tl%E;l$;r@S>1--;LL3L zt$9x6#}FgNIX&waP7}7qldaZ#O0nJcfj0mZs^IT7VDMzvgnX;nY5V7Nmz>k5u*1T| z{GoDmOz?aDvvUQ74lxYx3d52L>P688FK6P}Z^unm_(h)h?0$_K6c8Tp(Q6q41| z=XB)X+wjSd549a+I-e2X{;lKk9c+JYUYdbxg__-4?zX{SK)c%>#QN?;;w6D3_I}i* zTH^4?HVH(W ztmUhEsRlz-N1QSjGUdt^538i$Iwh44`;KR2w#thxp)rGXR;yqknt1aR=p0w>Y_0AR zpG4)>jhy3I<#RX-6+qcZRY9gHBNK&k(7G%ijJD+S$oMJ3&k$Zh(7N$+tldC(8Q~QK z+(12l@ z2T%s^^Py(ywohGXg=|3gsjoTM@?p%RLu&umG<>L;^a{1V^G%PsHHL@oYeLa)OWEA3-iUb5a28E3ClCLtX2XXwTRg$eo%)4coNfc>ifOpmKrdInY zIC=B3N=uKXMI&E?nlunl(q#|f*9a)5mjFE?w*gS>>OTUwgc*!(e&#ofvG1VgKg?wR z_AT};v)P61uy2^_f6ewbJVwp0kZA+c24;APX}j!e+hbobKm3_#iISOjEI>|CM44b@r;w8X>9HxW>OCUMzetA?lqRTjH#v^35fx1&=l zfwlwx%KjftxpLxP;4+?_j&5Q?%u#H==a;AFkH3y=G-?RiIo|7jX9)c;#`Wfb@fzOz z8+06ToS*@2;{j=t0c}%^1m)xmw;87b3$}_lgOLbFur66etEkJk!`*Y%cK;Dk;T}X( z{)#YJ=qyW>*C58@3;U>9{|VKgCM~>oTBz_a5rxwlW-wG*<4hccs=%$n9fiqI5cMQ&-~&h8cN}(i%gWj2~cRo)579eRP62nUF3y z0M7)!MIS3u!s(Ug__2v;veOr~G%frv<$h13P^U3`ZR+$-V%-O$n}j{TE0y1kRjz$o z@aAr7=Yke2hOHGW6`ys{*w->E^Tjf4QsqL$#e#|G%r@!R@dBwuSo+lo`f?zG-Y|}o zjD*&4aI~EVd8EQDPJ0`f=_p9z!yp^$zD%EQKHCa%$hnb)(NWkFd630f(19>6 zRiNUiA9NBav(0Q=)Xbz~t2VXd51}JpJVJ0C9v73#8u4JpF4ZzD-Cz$oo3q~o<1Xwi z@#+**cSU?cr{wt2`~+tFw@Y6C$v+9__;*^$NTbOtW>trIv6v|_isdjbd8-CEE$Xsc zGBH)l#ALb;<}FA(QUf%LSef-3NE~qdk>e*Y?t+AqDYaPYQ#PR%1U2I16#NX}tby0y zD!rvV-`ojLDNm#1>!4aYB`9YOO5KCv3&+Oa3TbIBoQ}!$1mg2G=x(ZqmFfXp%UG?z z@@}(QxO!~Vs|eW2++by-qzt@*9ZH#4ty#MEn`;MTZiTX^k7K1{?b^E=4R-){wZ LWSy?ppEiC2|Ai$U diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc deleted file mode 100644 index a9ba9f2f4bc9042fd1f61356ea2042a7a7bff016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3242 zcmbtWOLN;s4CYG|B};bvh~r1%N8U3$>2!=pDl`IwhynF&(p0cFG;gu~g+p1#~b@6fl_1DvQb|-Knzb zC&ih7(mSPLo}xXap^Ex@?)hxb^AFx1by>p{+MBn+dXqBl?S<@&OJgpK-5^PY^|qS^ zapZ-3=L7Y~!1>RYhTnqk`gS@J#w*I6A1zXlYOa^TcpU@HJS>L|M6IKn1EN zCC56OF#$E4QNbDYV#Xv);fyNEu1MJgD=#Ye*)riO%%i-1X7L&< zpv6fXndreHEa7MhzgcEzZ4onzas#fz4g6;M?3)!>#aT13#%2i%RM2qFI^0C*9L_1D zrCV?tM^|w)Fa6Qr4%|h_HIyuzN$$aYlq^C6v6k5KqJp*_Adeh8#Q*DOwk`MyHgM(* z*kon=o;Ywl!zPv*{N!z(xxW{`MkdQ>6R43gui!hWVXrHqK0 zn~PmH^2wF_AwEwUpTz;5_~wv^b?`t*Qx*|Jyq0t$mpkp6#Ad?ClogSwsz`jRQ3!ysaWnguopO*%2v2i*>$ z@yH3);6BzMmx-bb=IARU&?^);AtYA|_?dyorBY1y;m563!qNfJ$2N<6=Idx9e~2Gm zV@?7YdqdBbd5r|?xwJ1W*gEV$CU9u2N&aPPO%`Z9mkD-gt#jQa2saClM^%%NvM`j{ z9`c>!1523%$Lx|KDxmUZyjx()_K=-nrMwsUUdm)DhhoZgm&9~QhkWEgN?E%-B5S!$ z40Z@s)%f5h$j*ftZHx%6O6HlY!+QnzY*D1=+Dif~+L4c1Gz&K=c9^>Eg978c4|ClG z1lq}H>rd#ik>WYFuYSV)Q?@?d0St7UkAowf>u%83WTvVf_XB3y3xGvS4d!noM#Xhm zBtagb{jAi_o4ZgBY}Dz%8h-G?9usqY&7bC%8lN_r{2_jfXAL9kbQ`B|>BnQ@hPHOh zK06FB`&+1#=`hTJbYxnAt#vql^UJpS3mro?hXG5nY`!6lY?t#RQYyYE@1<7QOWH3- z*p`a%w&^HrXwB1q@yQ$>RjDQ&^ilkMVgLO2%`~`EP&qamDxW8d>w=2g>oC_9RoCsr z&-yuM)XML~aOoh$|D3 zEqb3gDhe*U=^=4+;pSBBoQ?**NrW!7qW;QD*y}@|$qO*2Uf@rNJSFms$a5m+B_lc7 z_&D7`$Z+xkiG@8hsn6;3F5qtxe?;f;oxz``S2gV)Q`i1B4ec+jRQ+?ts-j$4X*O!2 zl;X`hksb&WdAyTl&dN|^05W(PDEZF6BSKC%mF6$IyY9}L-PfZW71p;|+Fw$eB=l`f KSySiq>h^!VcYT=v diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc deleted file mode 100644 index d2ac00b240b4700eaed989e821cecfcf43ce1dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5100 zcmZ9QPiS0K6vp36(lkhG>%VlNAc$y3OB7Okw6Z)BVKwLH(-`C8T*`7D1czc#{pl=Ud< zG1gftK_VmB{^j%o&alNkYUUJUDa1oL7Tcwj%^#YnwFL0rzo-VxWig-Z~- z!4kpo%x;?UIQKk!6B~#}v&F0*b83LK0(LM!y+c8)x!B(B?=Wx5!*+y~br|68xDH`} zb)?>*Aa--Hcf@tc46b_=((2sxk%ucr8*+;b-`Nko+7EukpvQ$i2>`PXB0wbIsr>-| zz><#B`vErY9ax@N2-HHL76P>psD(f+=uRvIY9UYy0m64mpcVqP;9_DSPz!-t2-HG= za4i9U)hC1!=wt$&OrVnqI1PWAZ9JB9yT0cdgvm7slWPzr*C6b<2JpEh(gc7eKrLLN z76P>ps0GWDvk<6-KrIAnAy5l}TF{+X2-HHL76OEymOw28YQe?CLZB7`wGgO<0O48! zwV+Nc1Zp8r3xQe))IxwTE#JNPM=b%tQg;MP4T7Zx!BPXYV4k0a9RzA2z$M=Yfm#UE zLZFuD_8C!?0JX3~Ed**IPz$<~vk+i2ZXr+$0V3&83p><;i;0CmEd**IPzwRVwFGKG zomdFeLZB7`wGgO<0AX65OYgB71WOHqr3R>y8NpI_s0H)3xQe)5WWurwGgOS(flej}d#-1ovO^GH zd14_@3xQe))Iy*Z0=1w!u@I<*KrI9a-zkAw2-L#2Fx*Q#9D!O0)Iy*Z0)%S`IPIiR z0-a2tlL>S(0jJ?}pM40Ou$S@~4+D3i#$ybIf%{P7i37s`o+y-OJPhD-Mftpk?U^%T zSjQ|bp7k)Wi24N&1FxYz=V9PF>KP9M8>r96m_#*gVVB-R{i26~_fb=dupK=J5W_mY z0GRVI@HOg}JPdq``hthe;2ROcI)28*c@OKrbE7(};}3uZ4+DRpzUZ;oI50Tas~%F7 zBSr^Dt}ZOjUb?!pa(U+Ex#i`#!O^AVnZ?%Z`Q$@+I&9Lh$< Q#`CegkxAyU@qA+Mf7P1BW&i*H diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc deleted file mode 100644 index e13249bfd01a833967bdb8f1a76a3ca15a2eb641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmZWn!HU~35FOc$*9qB6Z`+ejr76Vf(n|@Y>_TawhqUb87D{j|B@wYDuOtVuxR-YS zrSuQ_Exz{DU+ASBDP0J3%nUQ~^Lx*d^y%pcFz(6K>Kg(0>4)P;aJay71f3wR0ERJQ=uZ}zAuh}(NuRpC7c~A9 f&A=D`CYU@b8Lsu&t6KB660h;1f%UXwcpU!)qXeay diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc deleted file mode 100644 index 6f89950bbf2791e1d2c54b43234353bf606670ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5162 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc deleted file mode 100644 index 454c27f4c8c3e548634a589932fc0731196a7791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12274 zcmbtadvH|Od0#D(5Np8iN8HA_A&KK9LbAaR?3ly?3A2fih$M{h3$ONGNo!WS^4(o9 z1RE_6AqgP~J$5A!a38$EHelYiaqF4Rbfz=OO#kZaKe0d0v{l+BZd%fov`K&G+;i{l ziUkQGmUDjRd;HFKzH{!m&&aG<9vA+$71TBTa=FX(6>DVwm7wtg{zw0Qn#(1-UU3Co za)IoYr^$t5?!f}N2)J0_>A)od&j9uadae=^3%1_Bp3;Yc5LV=%^pOb$m@bi!_68J~( z{jtC=Kwcs6V&EkLSHh-B;HC15@-l&akpD#BpTfRc;N^0STx;P&1sKx`=zb=2b?~nj zxB>nv1%63hCBH22YK-$0fnSC1YXZLx`!@t$1N^4Iez{Q&2rR=_5x5C9%>uUo2L*l$ zc&)%8#M3Hp7=1+qZUfKT0;{l(T9}U~#%Dh6%+WgeDa_e=r~MAsZ*bZhdHd&1dz0*y z-<98Mb_@Q^awGiP9eqN62<}c69 z@PVVsh!?)4G1B_5TYkMd@ew_a#&^#?;`fk^9*q{p%q zOyuQUD-^Xg7>x!aVJR4uS`<}j+#ofp{%}l@OA(WzNRcKf(BfB{l~O4dk^JEeQX681 zL!>e04~B!`X2~xF5ECbab*u$c(MVHlJsX!lEKB}qG!h8yQ&tR)hUNvaZ!slfo_DV2iZKqxM=SZsAD z*cueQFn6A?C`Q0J<57%;#at@2M&w`PG7;Pz)$imPFCiv+mqx^W!$x4S(Q{@yR>0dMO~HTtCv>P z)xPAbtg4jeRMewAr&LXqR8g~9`l+v`vQ(;ic|~1SeZ5p$ zC;67IsP8p8BS`6QsS{xBR92X#NsFhf!g3eb3-=)&>s=6i1z+SP~ zSM6(9T`Dd0HPkTPr68`5R#enA_?E1!uBhWduUJ{PqPD&YVN`;;##ghn4n0*Zuc~P% zlYBLhNmVbQA=NLdsIKPSRjkA)>Uf+>YFDhT^S!vNL0VQ@U0DU;;wnT}vADX5v-2)7 zz$MiczU8G-WySJ}7g>~bQY`|nI4q_(D^4$V@Gwywc( zUFEBeIK99HQNcZ7aXuqBJGl_iqPy(gt>J?T zgTfC0$<7lYcki?~7sglFaZWwdDe;pgx_H)_P2&<7m&y2q%!_31ApHpGDboAW#cal( zcszbTi^JGP#uhRXq~q5~dOzu!uy|rzhK0qYAy%Ym8|m$2wDZwo4myS9eDA_|F=vCS z-GVT*AKUl*a-;^P!R{ghnL*;J6$7LK>KVukx-0{>?7GzZ z5U*&n^`f$DWZK6B>?C8H+KFm<3rngp?)6Ho(wq10;9Evc)KM0of>z3Wlv@ z^b3Ps$iD^IC^ccQ6B*AKB-FbRsd^79?qvlVh*hv5@NuXQF!UfR*l{hKGf`_H%UK8`XSN}vqMiiisX`ZoU{|9oh0pj(mo*V zL(-3uevI_vq@N)DBVq+uJsNcttxFO&W;>7S7PDd|_(-j0J92R%FVxAHw;I~g5h z>>#t9%mkTR$lOZiHZr%9*}--X14lv^8Qp}HY4nh>i;P|}`pE1gvy04bGIx^ML*_0r zd&%s>>L6n`83SYtk}*WaFd0cQQe^g%xtq)ZG6%^VB6FC`B$+8JHylW0>>*<>8DnJZ zBV#`qI0222IZEapGWU`>M&>>;_p=j|p^>4JVUS^xagdBdWE>{r2$>q0I++HUCYcAx zJVfSUGLMjPl#F9!94F%h87IkjpNtR4z}f96na9XHPUZ z<0CT8l5viV^JH8g^Awq<$vi{mM`WHQ^BkGyaf&44B8mMLXU|W__>_z*>@>>u-b-X& zW@l9sTQN?rILUsNE(`_3%J>!>o!-K01@o>IymqZ%)3t)~bP-d`kI#k%hsQi>AEfpn zl=ISsZNWCh+Kz_~($EMEou#268XBXa9vV7HL;Yz_G}zh}QYvw%1^Wv)_p~xex;Cw> zj2C6srr{PQeQ(CBKA_?%7T2)jf6HPiR=~m^EXcW!8>!)g-xMgTYMG_*Q{AH@69*A|M}T@KZdsVq|a!dxj`BE<9K?9mT|pP#CYl% zv!u2qJ)<%5&f+XxGD*o1O75d%D(!J}^DRdfQ9C93F`#q_Zgl+N=8!TzADosxWl+kb z)ImxeN>B5v0W0~bF-mEa+DEDVl+r16AYB{?s)3M*5u)x~^@-t`mdFsB9o^HwKTe9Q{N*=dm3xrIkq-M*W6gko; z3Gs1Cp0G7f3F{9i`JpX)I#`N@&lO*`@B1>*ZY!R#j1OO-!=Kr*g_bO}i&8zd>{%h} zqEs&?gAV~$OKhQj)xG7b?)I;`6OQ}|%lOC+I?~|?#lS{VG?H|L3pP$$GflAsAGUSMyO+uI!4pQ+-APFBt9LT(#ekBUhI=B+>y%Q{dxv>jAZc1 z9U0s)n!zWxXK+W7VbRk9Z*lxi)>HCQ_D{$z=8?fJBhK*^;vAW8!Tz(@ zuX^viR{Sb^#_~GqMRpCq+lv>S|WJ%nEjiy%8MDR(**{ zRl}NCNbc)t3p7EJi&Nv*Jyn*KxcBoh2kCT@4e|z=P}w~)-~O#4{}vA4Y^s~!OfMp|jDWAGo47hE;i7KHx-pYy$L)GB36c8qn++zL?q)=j4920k5l2GZG^N4ZoG78b3l=rz z6l~v^YG@9%1u~JU?=e1B+$I$W1)IA0&tefoYC8*v6}KOd7^IqDRIK=OsS+xCT&M5dYpT%o)O$0s&V!;gW%nB-oB~o z+bZEfVkF$`eI$MtLSYY`v@Pro7Jqm$mJxPZvTUK`n8Na^aEDN{Otaj8nC7~R047*k0bD0!0ZeeW0+?vY1GrAe0>~%S@(A%NBa=^&A#@L+ z+J(&9nYOaTMmy1*=Y^SfPB6D}n`@J1 zJ-UqMp=cXg=>`|Ax3(J%jSH&KCP_p!U`SVa) zdPqn|63ok%9&yl7NgZHJgRF2+9AA#PXfGbr<;vCF%&eakeXQtZg%e47MxaH-7fr4H zD1XK9^?{xwoCMp=Lc;Za>2y>qPqethI+r)P6-Ei7xhV4;+~nyV+}+ zO?ETU>!4u^eR07ikSH<8U*}|sadt`IExO8I$8?So|5>j(QhnJiD7e7VS(d3jH3|1| zR`9;&Eut>nJDtD8`eou5XEOh|=oe?Qg+i1qbVM0pmdF<7h%Dg*5fge#uCn*ylsrYr z(-VHyClE|CQJJI3QBKrklzB8lnP0<{H`JU`NBE4Sr#Gug*e@&TqP7S=-og7p{{}_H zJ1QmSU*%t?q-Xf?>0OJ0S7tT%z-RiJHTb9x@7PM}SNQO)QCvp*cUGDqc z1?*qpAKicQ6uJN4E*7n8ZjV5}ch45+ckX)x`i=Vmfqw0NSfGFOJmMzLx7=TPB=;BY zZ@UYM8SAgyZwS3HyUD%B)9fDgw75rR2Mbf~w}eg76Lt@HBJSPpHeuWEiMe~+anai8 z-XPEp&%5rep7-2aJe%DK*Je+FE8+eVYB%aXqMnBO|4bp>XjrwlXzeRly z>ffNg7xllPz7O@kqP`#Xzo32q^{-JshR{IBS5CP53lo{5VjpBFD-3V7DOjJlA$j}Ffdf8h@lIr5Um)pm^Ak5i<-o)?N{kNb!&eJ zjQl09O#KTiaF+*F2Tr=v`5fQ(eU~%a+nWUJj((m=O2|(s~wE9c!B0X#H;<0f! z9D(~c5HzW%A{A56Tyw>AI%6XQ2e?e7I#o<%Gp;5ozvI;>2!1fk8TbcqpF_9-v3msivenaL9Yiozn3?bh zF}?o{_Jb5Oa<99Y!v|yd^|hRvUY8e(wsEG>A++V?TVMLd)wUfj_N`IAyw<~Y*|q1T zU52?CUQb^gl)epm-$L{HLi^ITwv_OhGOl!OGcV;D*e+uNOg4}u(#@0A#;AG<)ySbo zf70N^Kf^o$A9d|Oaznn68~UA6&^M|({Iu|MQ4azi3p0RH5$1ZWRJ^RM1sVc|H!=_d z$Qzojh6(CodIBTJ)}Iv2AuYFs;b9;S_bYM>7>GWS-eIfFHEAptdCa98>RwA3H>K>2 zT6CCiNqM!XyT3ORDV1rUoLgtCc46soXWSDE*!mIXh>pMx_csIgc*+TAk~!@z{BnRHfpY)i zL_x`4a!Uh$feL#sI-SHwGk&(mGw*rYlam;nU8DDl9|+)=-`uyzZQeN7Z(ZP!0Y@BH zs74t=9+L`Z*sZi8HO(jjfiD7%c_>023Cc&0VL|zr$JfCgWf3PIAU)bl;*YWxDk zh%Y9oi>6o#^*m{tYMu02@I*EV7xR8OjpIMAHKfQ=;~vc%7{3#ZP=#rg!tTmOx}RT& z(%4W5)2k*Wv)Qb4a_)>e6gV%P>vI>rfq^~j5J#T?4S0(l!47XR#}8pg4BEmCaIz(w z-cTNVr~5&$qaSWgJ0%;Fn3YIGRdk-Nr#4NV{m*|Xn`JtazX`x*e3!l<)3b%ewNCM^ zgkUI{QstT2K$}7t8y%`=@d4zu{t3!Y?C)o`YHPuky)0E*3S%U@e5si(RnfVYldk2O zU5Vz3RdUX{wOO^zi|N@Z)6$4ZSCp6T$2IF@$8wj(Tg8+tS1k8R)U;dMU_i(I$9%wF zLlUAGjnEUM{6RXhQJ(X*%=23f@nM{OSPFgW)Twj*&UgRLQDfh}drx`Y7e3 z3Mt2M%&Ji^$;c0!XSF-s~WX^g?+W5!cc9vFpS;|Cx@O#3L~}sh5fbB!f5S4 z;eeF)R}a<>6%I*0Up-tqQaFPAKw-=oEWF?juOBTO`yl1)bA~=oIYaJ?kJ5$Xcpr8~ z@IK=1$NNio-|vj#ebn8D_m}a0z&VKbgP1EzY&W|;zJ8)`68*ihYPcthuOjyvo~PWg z6~j5?o^}qiWF_MqamGH+7EVZuiNfnrZ+QI&tET(9v^s<5DTgzA4Q)=N#Zl+j=b6HU zv^ZOslorPN6rQiR2i#Hj*b6E5rAH=UcaCL`jn%9>8TK_9_w}NC-Z_qWyyU(l{pOvQ z9UJ{#kbW-~-jIHW*WY|@zi)*7z7h93jy^m4J>i^0zZa$7w+e4Z{bGf0hppdEw8n^- z&pRuY^NRB-+Px+1ept99?YO3wu_DvG6t=w-w>|8>4CuV(oIpmZt><9CN~X9j$*Pt$$p2FCNpDG2aVYz8AOrfoq4eJ>#53%O6Y2_Y0T1T3!xY zUf!kUq%(ze4V<|ewz!HG=df3VNya(vTtMAxz_^Rf8^E|X9+`z1cffh` zf%!XWwckDQC{?%)?0>8JLG4E2hLLh_pk&sa0Zo1Q$SB-&Z|>Z3-hOQ0%Ms@t=ZDUv zFU-Pi_sGti^CM8%ygR#d$9Y%2&+h!h`Ei_kFV4Lm=Pt*&D{<~>oSTkw*W%nvoVy<9 zK8SNS;@oVU`!LSk40Cs!TT$8L6xMNbXQAu4=-ieXgF8#koaAoqd=%DMbmn`$eH?$g z)AKEA*E_~fdg?~~^wwSIse4z(1dPMy9cNMM5b8^kyScOIeALtKr_RUW*H4_gvTr|q zY&@ya9+ulKa-X> zckavcCr<%dTCiZ8VhcvVcvU#-^9gFQFf{^w&y$M`MoX z+33t^l$$lT&W5P6=KCAorKu^DdXu$ESv9=Iia%Ly)TZ3}*`_zOse7I(>uE*Lvn$Pd z*{`55|CBOuZo&xCSL$1V#Rk=Ckj3-jg_doXOZDeXc_JP3FZ!xk_M6HLvdde_T?uk% z>~C$j-b5xaXXk_bT&dV1S7`^4Lmdaaq^@?YdYN$C(FIOzqF?_KY z8e}YOPUor&gPUX4&=q%G85*yeY4Y9jMe-&u%mv zZ|b32e>hdGEKhB0`D=~(#mV#Mro4*pp4}*wACy*IZ)&5mF;zr0r=g})rMxy(6o?kX zjhNinQo|VYMJ|R*&80Gil=Q4Qi?5ei?Hwf1nxU^4g*5b$tYbnS;WLdVv=b-gWZgb+ zV$13KJOhrJb8>)Be=r(CX1dW(PNiP*U9a_j6EAk99^o;Ou>+G!%C%2#ov}ZiIAhlv zzJ2=BGxpZRWZuT#5^=m-EqQ{U*m*1(*y%Uy4dns?L}Z{U7QWK-fO5Lk0*5Gpbjpot zvsOnQLtyLNPtkToHEQ;`p6-c@pq!?MDwym>wN!TP#)=)G+hlQietzK^zm?Rgkcl1x zZ-S4y#~`g5n?V`_2ib?EYSRrY_nbeSjuFsp_RF_(d5h7QKv|EJUE| zs+ESS$({kYn1+U~Yzq6lqE@|2@f%BIwf5;=M3}gQZ6y3Rn%t=vK{$@?+n>zGT`dT- zy87@fzfb9>tB4D%D=c zyT_dx8fYEwUDjl~=G;WT8ewPqnT#R{`ie#HO)!HrARP=Bi={enyCiH8r2~S~dOOrn zwj!}6CL`10jMO0{Hh#jE@}T6Ll`~9p%#bf-eChauy`d@k0x}UrJBFKHF&$G@_YX z$XuPDzolM7lU-ME3LmcG7qV(>EK34w4IHfMsu%E51~-WRm?u}C#?K?#`6(Za!%uIg z9vPZ_w7v!zsR}qGnTPI(|A{3b@_rxIk$2OuIs(>4SLB z*bUV#b14MDriF4l*+DqqX`nuce-^A}73xgI0l((R$_8(dx#)_M_BD5<)U1NjVUB0d zpXW>*j2ZRb!xLhDaO29{wOccqAL!0xIujW+0Kh2O1xr^7_7y*H{YBroA#j~A)DKvt zi~a|bb#4>FCX$hUHHk-%$GnPqoQ^FaPQ_bt8ZUlo$9SCj%k6xiZ;zLp;m|>Dv?=I{X0eOO6IEI5Q`)Kc#k zmBY@aHZ%>_g`ks`yY5|kh4$$#Fk>&TbRknXrH%;^OJo_Lwz}Jx3#E$ZCYXG$dIh{$ zfehcW1<&k88Ef*~Q8pyMU`V+v(kxzHax;$zrN z1i7di0bQv}C60v@<=uByk5^qk?46yT6dB_}3VYIRYvQAN3A}_PfSPty6wXNS#|qPJ zG@Y;nvDE}oGPB%(t}#s9p4K2>718!Yz)hsp6zUZQ!?CHRxqh^f&Tf8= zmL7dsx#1xLk_T*6U6fJFYb6y}RkyzCuLW5!4&|3g0nr~Rk3V5j?;=Br*fw^|$EnB0 zXBj`eli4TffKk~EI2-vgC**1vCp@)ps*z5$W+I=076JgkD7EN0JnRPEq;!AmjD|3 z($(3c2Jv%gvU5K1DnagO50zifLQ(KdK4PyLv~=1Z~uv^OPD(-BG{?PQQMw@Eu$mW5OVH2^e}0TpEuRHS81 z6|!d0rJSXhi9iAhh%`5m%)8S~yL#EJR=qRAwZ0t{K|ByYzkk`I$;wVHxJyaVR!on0 zfWqRgYIh9n%4JyM;VUe?1|<_Y3xP`5w5jHKbSG7XR>1DrHk8`&ZlKS0Pv3?9!nv$e z6nF!Nf!u6(;1TV8rbP@g1>^AC$o$$}V0IBF*Vo(Kri=bSByfAcqLeNPYfZ8Vaiv}* zsvqm6&nwZ?ddc%WG-;D(pnJs%a7e?wOTV zmr>qht4F%sFSV`i8=x`K=^&eo(l!_qs7mj@phFVU)O7(B+jl>uYfl)OU0M<8Mej!B zEu&SgP4Vwn=p>Nj{}F9qJ;E${@QbPobaw@XtfI*$9^Br9@&!DyLq%n!3B-Z{0yijTrK;y@@|ZByIqX_6R>UrZTz?7Bj`tcBr~@g%q%MX3$R2I}2O4PWf1jErPEh(p zf3yiAobc#I@KcYd?E^1-aAcZc&|T;{G)lif!?u23snf3_egM0)42l=5Y3nJwYBJvs zLhQb0ku}`w9H4cu_gC#)qLKoCF12;P1gX#i4jD9J)1k!h;4?Tws|fxEdn0r>prD)7 z&WO*i239=@t#=&T0#4IbXctBPTou!2mfJu@AViJA(Gc)OJ!Vl`NJW`n7sedjyUV{p zj~=_V2Bc>wtW>%ouAkgw94^ zp|a)(gX#u1c0jK|kfdjK=~*Y=_$A$e^w6|f!z0ZYeiw`ZsFZ{T(G8IuaYBc7URe6!;CYv1q23qWP<_UVZ16D~5CEW4C;aslz(E4S=c=%`BYf(|awW|JX} z!U3Y8vKQ*u_CEo6(ps1tN^lO12Qklh5{i>q>})so9Bea(cB@hBv|!HYK1H9>p2(s; z#89E<0`E1|0RZma)Qew)2O?f(Q*lof8PD?<^%Emt6RHm z{BG4>k2ii$&7)C}^(%hW?a(Dqr5y`m=utBZ=n%ptT7QX-wZSHB6B0q3gdt5Z4ur_s zZY)7JOSlmT#m>G$d7}H+3#$JFnhF)Pkpx3tA|T*|y|W7}hug4}YVSp09PC#Ms9(mf zKA!(Ag&? zc^rQlV3-rZP9A^C;HVW#_PhI})N)3h11KHBv8P;E?~rpCCBx1IIo6aZj3D=da};I! zkvrzRh}z3%(~ zxuedRc$R0KNt7JJ$_`^?Q_eZOz39+;b}`uB;a^>Hp@IH7AeD%&!a`xt6fRPit~Eq- zfKmRMP~9G`NP1fBS!n2;XAhzXYN)8t>=AYjqZEPdifYt(#DF#=ZAKK(XoPj7YKR+G z5!Xdv-1A8BFo+lrE+ z;dD0}>OqLxJD?Me&xAkn89e#dfO5s0AVx>zU8e+wdn9 z;gfZY%PHh6CRmSUSM-{Fy_>s9~8o zW6)?F?IEtos9^`A=g!7jp$-xObO8Fg3DXhoIyk_Mb?cEC=K3Dt^vM@I4q&!^JG7l6 zWl>oF9!A3Hb7z-JIL0ucg#k779?P4BAr?=!Bl2NfJq$mEdPOu!+Z6@%`MkQH;G8_vUeq+&D@wI2zF4)(ohw8neE+f{#0 zD60kr1@!)UH|Wu-jD=~3K^2C_z-8(QCuw|^1pYsq@xXy90+D~;3A&=Wiw?i$%4x6A zSr^*6@Ot#_OB?iRgDXnH`~(WRV6J|_G9_ylxCaBFRm(MZL0|c(_iKbWS>fX?2>^KdB+gK4Wh9^%_-i-Ibi7n z%wAQIgcz%uEa-9oo{DFcN`s8r{Miht>><$ z8>4kYK+?2VDy_NA(v$3#;{e8Z87! zIN`+|>_UoATyulJvZEknGB69)qDG8``q z`j%J23=gC!&kg#ahu2qC2_Y#;>Y(rL?A*2ayNiLPV{Q!DR-GV!bz$~{8%xEjvr9qR zsnmkuD|3sp#ijXTSYNGj&^0C`D$QcwW{*fSV4jlDCDpjUpJZil*twn zC<7Fj8Oq6SR36m$se%6cMCJ=o`TWLz=U!1wJZNR0inQ!r_;)tw5Rz0w*jSh~eGY&u{MSf%N`(qZ zni}9bBJ+;9<0B)*zjNTO~ zS9<|3r(MMq)Be^NOGDm@^R${`a0-G;RR0%GDD00Uvu$NsRc(NCjd-~`AB)LZqAb$p>8sNj36P&jqJ`4A7a0Uw& zOj-a*AW{lKZboHJ1{j=eUHk5U)bUvnArUA^@JV=D8lHl&yMZ#JK^g1TavY%>o(D86 zG}?v`{ojNrWli49gBh4$)%jINpkm4YMx%scZi7PfYzWeHr?7sRF-K(b(@ci|wf6Imc4wJ6cjU-t& zJNi4WZzQq499Eh68Y?`}yUE>+JJ#62bRy2LX$4dO{=W{Rb1a4HhX+YHZ)5kNS(H_S6By7UDrGfMU+q^lV4-Nx|hV~$!UD`9g$6E#+N)1^O zh3qtb-U%cmB!HQWh+ilnOcj zKA<7~gTP3h=st+z;7}62kkNW#!`vZ4G;fU=ty9m(__)=#M|-H48r{uzLL~@9U{d-D z+OzceXg??WmXNYkwZ94Pd4Z+UXnMQgzMy>sK@a#M9sQTDVGcCz<$SZqSJ4s8P(SaK3d1*W>^p%jqS}G8lO_};3>0F< z(dM3Hf|25?>qjcCxGGMu76T_*J=WwM90+yBWYxk*1CmPUEAOayn1q;IM_@vJP)zC2)xt1Up7Z;Wk$$ zsuE`)L=-KWMAWrt^(QF%A(u;3r?#Cpc2gL-$qt-)nZ1>n@cIcoWBPf#`<}~j*5Ub9 z^=nM(NP-+QTx4S5!W=0~)FP4(!AiYz$nXkeCYMX+512zEhS@)2j1C;`A3cSm zX(Rced_SH8ql0)3=B-g{v|n2DerFBGl!`^%AMFb?uB;}OHtGs;CIy}ARmLE_=L%iYaXn5|kHGB_M(D=T7jJF2vE#t1j zeJ11hx&bQ#?WpI+=s?(NQ$s zdKo|h*kkYlT*+4f25)>s;1_VlZ)~5KGFsm6eC-%OKD7ssS5Ech`KwpYzj=YZp1gMD zo%0v2-R~_LZ;iD#UK`^S+zf`cPHfUiLeZ;F_s9kC_?oLW%&8Bwa+|Kb+OV4&tsKuG z(>7=wLYcIu!4)1(wlB1fM8(gqc&;bk#i?1;D) ztD{cq{Ut~`ASy1xLa}5(6_MjM$I^}*M3D7)JniCVKpDod7_U!h$$V+N+Zv4b3ca;X zoWFed2o;=VjV>q1Xk=auWSHjTV=4%?k+Q7nPoWq!-yey|S%q89AC zRasUgwRNjOhi}0GbGUZvRxmItSMcSgxbRGbOmOi;W!VMUvA(X5W3Hb`o(TiE!C_qQ zo(!*dPx5*Z+<+xu=LTDTg9cBh1;`p$lO_& zpPpG!XUux8g6S?xTMLf@@Bat%_w&bMRNpK~+g5*xjPBaEHOM+5a-10(5pl{7B;adD^ zkWu*G8iMQwZtD12nmuGcS+DBiMp|3$?VwbN$P*zcQc>iiNJ)c2N zF?1^~H%(oJ07JV>Mn(B>SKX+*yN{@RIFEIVriTVoznb5)ux87oe+-Z?^J$*>f6l)& lji#K`=uF$CaSnCcJ&j5$DZyCyXO1G(?*}DElOyxr{t-amEtdcQ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc deleted file mode 100644 index 0b9bcfc9aefe0095fe9dc97b3398e472de21d9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmZ`(OK;mo5Z+xbDe4*7j#C2-5WzhOXrwkdG%(yEZtA246sNHBKzSi3?%JkJa@pm| zh6D*Hs-U<2f}%ij>@O;?*PikZ+5mmbQk3%mvcwK&XNU9nW`?5KtRYy>@xjs06@>mY zhqsrxy$d`43kX9D$H+5p661t;1S3u!AZ9W895Fg4bL?4@ZlOm#3U526iS5~-hfW>l zoDtdOHm9c*&~#IW0p(Q&r=KuryKyb4d-bH@HIk;+Oj=$Gqh}~xqljPORo*_b#*Z*E z536$Ph_D)~Kd0Wx_b7EQma@h|##dPr{7s5z9M9n^bL6eTsTE&M*1dIzX`Nl+&Wmd= z(XWWLf3xP;$oNNmZH^7k@L{pLE3Y7XwBNDNb}706IinM_+purA%Dp_e7eDnBV7t8cCi{J}%{*qf*id z&VwiphB5Em*W_I3s*)ofide|~uB%<&PlJT}zOMOxBG@Q4e8cyD7zJ^8Q}KN!Lf@AZ z;?#5~M69p)evqa@1uB9F;Le7--;r#a!f}cH zu9QM*M{+1h`cBm`glYCY6SJ8Vh3066rU+_^p<9+=yUXgm!BaLtU0*-uY6*ZJE^6;D zl|M07O^qCbz%^jraSqdpT-b&4AAwmopSTK7(Hze(!!rW2)1*j|@kTi{1mxC?z`WoK zq^v0sH>Oz8yXFfEZs^pKca;6Yd5LEB)IO~+dPcJ^N{$G_xy(MZXH-?E)|4{m7cz6E z4y0U}%mKz_B|2q3m#y2Y)jH)mD6q`8E(Jzj!u{R|Y;|_hPL$>;hxvxyk^BxcvH88Q-m{bjlH3CQy7hfleVMb{%@!qokzj2MyAEzxVz0NYZ+}qQQ8MMzcR* z_m?8_!vf-SnB0K{YZwJuh#VB^jvgA05t@#P6s`w_&~mJ>=oAy$2ufkuDTfuO5>}lm zU?xGNx~bs;v9N`UGYgk+`MK%TaB-|PD=)#m)-+|QF9`GY10qXf@_0d_DUpTAVh(^g z^|)y2^5Ql*@TRAGeuU`>pAZ(x)r{y;%CH}Kg7Bsxt6driMuRTJ2f$wmYIOE9}I`QJ#>Vr@%%^v^fOQePTNGdB4~Y_QcB z{h-BqY`oBs_E-lB#rg}B?9F8%E`ZK&ODnc8+SHcCxG3~*jU%1i6Q(E#U0A}J8Jk*c zJ=4K*X<1%Yz(!G&;tJL`w79HRY;hn?fUV@Pi-0`?Y&C~n0_^*<3}$*3zYg(NLGp53RZ-_+TLbwY zfwP{o@d02z1GbUFHUX3GwOfm87y)XFfERowb?`&BbXz?9PL}J@tZs+xs3T z*rt&!4vEdv4&%0;(rKf$Dis?>haK>{$xcxz%f5cr`VX`2eAK*apJ6tg*%{1jLG3Ax zjtLWL3jy7^{W^@+xn0%M_Vss83s~J%fhsEycM|P;l1l9`sDbuUEpYM-Mo*+MrNJvy zf2q#MplLg`6Xpxza&a0EEGsD`$P>ZJAR!yw-O+eBa(9Mb_uR>l6#!(W;uwA;oJL5G zi91~|PMIqxD=N-~Zf7*=cfRboquyk9G?3=~;Z9GMGgG?{-c(!6;dG~7wuXBHXC-eF z?uh6-h%bhtz0PRMxs;cfQFh`n3|>fuiMlkJ`~xL~r(iExE40@7@-s`?T& zRd2Zco(Ne;KA|i^YpGjP*0T+yf(dtOdGa+S)P0IviJnMwDy=MSGgNnOA#wGS#@gWJ z)lvJ9hNOM4@TZJUi4cDK=o8-NQ|8V6=-|ejV%|O`(Q!NQ_uKPRaY&;(ty?$S9Qy0V z9O~~K5Z<2q^R^3On6ftWr-yC#Bz*~71|VUCwdSXCEl3`Tw|J_%lBcXuG?9rKsHU5G z36)Rm!vL_=vQUHxeVt;1e_s{djB$8Ld-W?foP7|4pLW5Nuz zsHRWa-?;`kw6YvpDuJW3KwV|!(m(j<@|D}pd!2kdN diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc deleted file mode 100644 index 40fb7cd6778f8162cc374a6ec274061cc3ecccec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmZ`(TXWnr6qaOpZEx0_WOHl!LLL}qwoL1mmH}oMCXfOxlmJaAttX7@SlV4TzD4rp zHug-J#>D%?Du%@Vv#LQFz6P!!A3P`-ZX~mRy9p z30L${EK6l>kBfv~Vlelya*{kRf+Un>pC~)xNfIPHQ|)L3YCV-F&W^mXv-K`;MN58E zs+Qp8SY(k-@p`mCpg<9jdXS{;?42r0@Zc~POqpp|Mk7UK5oXF9ihNx3Tf%`| zD7(mIT*f&ZNxKG9Pg9nmD3!r8rl{8cg2W=Y{~36rJmubS97iILcv;5Y-iOkYkqC=8 z8{RB(CcOim9e7E+>lMf4D9`TRx^vruMflAkjP}AImtGMUUI1<^7oLctkry07f?LJ0 zGWBXw<4yK}k(U&Aunp7(>fpJ*#WJY3!7pYd9BGgzEHXg#dUQe1#ohptzX2Pf+Ng{d zsHRYGv&40)Bo#Wv_t8(!c8uDp?b@kYm2+WCKwGyfvudwEOZKREUbUP5Rz<{vl2%TI z8D`|%sAo#EnrU*ZK%+XfTUp{GXpp5rR&~TWWON~$x$jk0*~lND+S>Q_wddxQC#>6e zxs@pbumt~Q(Yrgv5N|@X0WCIOwHOeYhDU*nPq>(cqxLP;3X1~jD&Q8Qrc{7NS&Fz2 zw$|v%C<74O?>7AxD_VO^Yb_QZ#EeUEUC-Pk&UkPI4yVDohQ65BW*X>47PL6i;07$i za^$=EUKE@)xRZ+Nivt{THTapbr6z2;T%c_lTJjz+id&e%*K3+>gVe=yz(FEy+$H1> z>ev7UyZOk=E}>Ywt<%{7KsU~U0Pd`{k!Lc8JFH>U$ITf}*6+M`_ul(!;cmqEU^t3j z>?LWI7yD41@xkHo(aEQuZQTF-i!UEM{OapR-)w&S-S>~Twtsl?u10lPcK5W-@NodxH%hfPimL1?6!o%VFM+LFfX zF1gK~{7?Ls`s$PKKKYcYo}J9bNi`}|rBc;bpQ`QQVa8By`1$-gX6yqQcO^mN1up*% zm0^b0tl=f+>^Ej26W=fs17F8w1hGk$kvqkhv`(6|OgV#e&B_ssVFD>c>u8Pl25Ypn zFw4k{G0S)zm3y#<@!1fOZ6nAsldWa;erL3%*+;~~ro4||{(7oue^*j8Uf}XSpaNEM z!^+6;GKR!NkRs;MJTZw$Z;~}H$7X~X$NkZHr5ESW8gOb>gZiE`_Ocaf=7Uo@h?(*r zbgjG>bL#{}3-?dB&$CRRoY?>(EL1=R4n*ZeYefrSM6d!b1Kz+RbPuT>QJAP&a%0E} zOW+Yk>ILYfsOCboLtZ<34G6-oy3V?QA$aWz2%>W~SZ(WEyh4C*shX~alamcF0*C1; zU$s7{R>P0YmE2@~G-TSfK0O&q(hU-ATW@Q~JBK)Tx2BuCeQK%Ge&ismT&pAGd@Hoa zv0|sV{4uJ){^EwOqi%25;ZPv;@%7KA+irKv{JT}RV|&+Te@{v}khch>>?gM#iL)_Y zD6c|r)2NSi?HvvCd**23KmS=QYy-u`s?yGC2%##Lzxcvyr@E@Wc-&dzi?`6eE$V7k zbXQ?v+o$=Hp9)_Ec-$$yR2SfjuIdVjVaB?GkQ8dB^X`g(`PFQA;f1wJDZe5Hh>qj< z`a62J9ozYrv1ii>_0g&Zu%k@M#+p@4`vWQ8tWaRpAO^MXS)I4VV-*F5?3 EH)qyVq5uE@ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc deleted file mode 100644 index f3becde51511dcdd840cd17b57c8c8f3efd7438e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7945 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 YS_z~>6?-&&^yYkR6(*Vc*!uVX1vTDbr2qf` diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc deleted file mode 100644 index 436a1ba64a898a47e8ce66ea2f396baf372055ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5985 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc deleted file mode 100644 index 5ed27069f9cb5d370732390b330f069f6fdb7937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2986 zcmb6bU5^|`vAgGUXJ_~J&TGf{AQ?F*+<@&hAOVUHO73z*0ed6aB#{P16vwWr#T69Mhf`=Uf>0gfH(dHzoQ@F$v*%ov4Txi&)n^ufrs>}KDxTPy1KfmW{Y0W zBQPG&o3p?Bg!~gHr-uoX*8s{70dc}H*#0-RRt#g!{brfbgF1 zj*Mu?`?pBA_7J=wAye+#iz+GdNvf=Oa$p`(lv8DG7il3wLpj?;UKXiP{g!Dql*+#; zaxUaeQ7+R8cKAP9F7_)SZzT7V9Om5{Vp1-p$V86I&Mh%-S?gA{pNi1^mjP$})m=>w)<<;*~{uK|=F z0TLvloJ5S%$iSz8pZQ0FTf*cvfCJzPOW4msn1v%;(U~#ey%j(6d6)YS?8t*~!z%Cd zwFhR@`vrW&kJC@F6ZT|n!{O{9Ef0ZmKKvLd^LD?k}gFsD`ZgZi2xofC}x_~+fg6K zu9zqJYSWgUE{Y_tg3Vn~eIP_0Tni?!8?9dsl6;yj%jBL2ub!NXwoi`TfytNL|3Sj5 zy}eY?%exz}4UlF`Ga_mO)hnsI~HN ziWwbj>NNkUPVdV>S;_a$oTufdgLKB=CEi%Sw6eN8|8jOA@bGriyK`AAbAHy}r_7I) z)1C))XzBYYOP{8k_E=@&izrLKpfcbQoWMZwF_J(1rVrOECHTF_pRfBWh;uZ_y25?2-w>d9P`qeZe9#h}IuIg-hAZ-f=F z*jH{GCwWrEF&wV1m)j19mxhM8nW{DhMH!FMt(&^#-9)^iqn2jN>aXD;b~{PrPdu zlrwD`wbPVOImIVG9@t_nfGI!;Ul8&OQW5l!lO>fNayhHn9Suk9&;SX7dDoJ!R2JOI z7^1#?#NH*8RMwxJzYydwAu6|qeyP_Rt(?8h+SnPt@$|ZpiahK!@BT8{{_64h z(S?N+v*dm}EwV)_DiMohzE_pepp`=s!`d>hqI0dJQD}w3-GcA`*XF*KuC}i0`RR?y zZmcO2my}&DXW+%tNjZR|gh~SY`X53ZUjx5OMC|9x98!~-k9}){dca*|E_GY%+9nj3 z%McIPCDx}0!=}*Anmd!gn9K;Un0e8|QRvEf0P z>9&aFEnjH_y3AJL#_~T^aL0Gcnm;jd{2r|9_TXCmC+vx5uz#QN`b06@z-rAWnTTWM z#c@{fWs1BX$3I(6(ssp(V_r-_Z0T>c#G00yi13yYYgHNWd6F;T^b#T)5jGo%c`7l` zQs3xX$gM7*Icytp9S}mf1;`~PW$TPGYJbKUd(7Yp%w%8KHhbhb>~qicKI;!aO4$<) z%zMnfwwm=HYkTAHyt1o(?7fZC+F#wa(P^nede&9t+-d$B$_{8Kr;U|%UO8p+$55V> umBep_3=w?;(bo~-HU8HfmHYiB!au-PT;fM)KzufY+-iQV=|cVujsF0$qSxC1 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc deleted file mode 100644 index 5dc70209aa554e316657d848583c0b1026babcb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8406 zcmd5>>vJ5(ao^qBdo2z}00cqsy`)3|N8&+Jltfbx3j{$D76{S=NSY_9t`;`~V8OlH ze9|XNy(uX8%g6@~} zVM!kWy+_h7Ncu(4dnJ8T(l3GDC+Pu64}#t=>71mGfj%JV@w=8vjm>(kClrGfka@Hl(L87$@UIf=jO94j5qAD8%R&QNJMKP>Sx&PZuA zKMETkN58)EP|Y7(P}tcYsQDB8*wRTpz+Pu>us0uS>@D`yhZ^LLJv#YV!S^WS-)3X5 z`YHZ0Kk-04ue^UIf0_@2e~ygWqAIQ%`ACOy^=j z=j^Sk6NT|h6XWkpPG1aClRg*LoWlcs%J%%6_A~~;rzwD(8YHJ|Dt4Z#A)R(yw^DE{ z2&zGL+%0>q!>?3)8(0w{8=f?%xAA)a1i+QN%9Omu)O?I-EcQK>>0D=Vjupj{^9i|j zu;N&P>+>3|osac=GNLl96I6;FW;<9H>y~vC)ahY6KaS_q>pBZgt(sjvNheeHw#+E43ipFpG%F+W1V zNBB1vxy2&h_oU!w^|c>KZb7*BHcOZ6EreTgZ5rlX*WXG5@guEkvb|61Yk!0u`@UNW zdpsr$T`1i)gKpVb9x*YsR@L!Mh+eQ9kB90nJW+$VtP#Y}rs#w_1qs3Z zswhtvv9HUAJd}2O^4xK}ULByO)|7%$(*V_)`bc}Myq8*yt?H}s)x>IYHMN>vHT+mD z_CS44hYY=Oya~KX@b!qFTI~QQjhCe35tn!wyq$Qn;3p#f4k_IQZa28eh}#2tC*EGX zyTDIH{65gT@%H201AaQ<@0D8ifx91EBjO$aeGu;P5v0lbxQOu7rtGzoWPJ|C>0jL z??TC)VG+nhSJ*3V*@t|#$t()j^V;Z8M+&|iR?iUDY$r`rB+_glOIVxoG|{16iALRO zIDOQuCfQaq+hj)FYSN*Ow4~)kbxO3^F(Z_e)6@|zn6RBhNCer4*_hT$L`%iFOrU$* znHO1jWazzdvd_steolp-m&4EL@bgOec{TjJ7JkkIYT=0@UWb~`-ydCcOMG;pYGW`( z?)&!W?K9q}R}@wS>vOo`GH>)QFW((??77j(vcKq-UmiJmV$_3A3|Fk;ZEJyhqZPX{ z3ImjxD@KJ~TpXoEU0DuNg@RqS{X*d|Eu|5Fgql$M)qbr{OC+@~bT$0z)B88lF-_Cd z{x4TD=b)&eq)3ai@eoe0T%3Q{?3dL@M_gCip&IXS{7syK;4iHG0~kkm23E22=4 z)oJnTYNN5RVEe`rkgh39ST&*xXigQ~_=vX%(4@9ClPnal^A!pg!1kz>gu2oZ4oUK7 zgJihLd4dv97}%QU#Td}WLnEVC_LC;CrmV(l>JmJlrio4;yHO20&tpw;V`5h=wxoNz z{5a?sCPcM;oCLJ-4-i-1&dEFY33 zY^Gkd8Ix#V-?+;YCmM=5xG|#B#vg|GrUZ6xX4>VbEjU^$0+1q_g)M@>=25hd0FxTV z2QIj2;k{jU@0HDpaFLXhyk>wQ_4F_s8=SRFF~}`rQg~~mgT<;q9QK`M6afhC@Vi#o zC&8OGeEgo5+Yn?ZI7PvlR9}-Jr7Z#y6a71Dj-lE4dGrv5T(}pu80?>#xHvX`t8jC2`uvrfGliM!=VoRnXRpsrUYVW=Vhh|43>n=D)aht{ z7@HZNoXqLr5*UN`h;szw4zkHr4X^1VlaTQ!2XruqE`&`e=G7)%2A| zh?zCzu_k?R96mU?IeL2)UbHQzJp&?((u~Zx0%657U8=)nGQ-6X;pL_!!^kbm`JJkL z*K%lD=P<4QqUD>+MS=kL{vR1;7LAl#&o@20WIL9S)@iDtRRNEUx-l&KJ#QCfTdm}y zWj(StJ#xg{jND1;v>bu(xD1o~wl{C1i!!4r3JS4Ef5S0iF%Ed}J4#JBYbnlY!QQJ= zW0TW`OA}+~C(dtl0x?0h-D(@^g?AL-?smCAF_kll^Y4hP8ir1H^)|s@1e5+L>b58Px}>s`y$BUz}Td-qR>kk|oG`dKD_I>7FS$ z$c0i3=&qQf(R&jF(HBuEn*je zJ_5S|0)5G~%TE&FVtj`<@rosUPfW{FIt~SK+3{z>2$=>`z#;fc(yto{)lj?CEEcAr zY9APYVPJ_QgBbD~gnNFMJ2^ej$?Sqm73h?N1To}DfzH_iFOnr2k6iR1WVHD=AT^Dt zw>8mC@op7)?UD*hDoffba@(cYYO?$)Bs54I0j*1kxRgjpi6kVBLLvrWq9r zSxU=t1LeC=9!L2&xE)eMMoM%_i7X^^e+NTW{E-SjOVv_KU90I@OkAs_DYJ&Bbw{4o z1y3`O@1|?i z2)sz(D1k!+Oag}q;95)(0|W*Mo?rnutkBuUFbTq7_;U{jn*l80kt%P8|Gnx(RoQzq0D{@O8pGf&gC1lCIm z>xM#F3hRbo`^tgdZFf2`g~oE)%9Dn#gvt5;<83Llcru*OVVX<1Em0OJMhToCK;{xx z32d5agJwD$`V;o;*( z&8*do+VF9J7S<%C$gH3}Q(Od~O2?y0o3Kq}kdTSlsSP#W+)#IOjc!?^aQ@2mb5j#C z{8wr4?UzFa-3Eo1LO@$LInUv5C)B#wF@nU**RPLVn|OY6>wi*T|D?YDlluDO->|u! zu(=H*CHvzdZ2cD|LOzYssIUKBbl0{1>6W~$1W3i-nnsYkJUKmid2Fh>mEM1-uYFiw z`{(-l-~ZZrdm_DLo*TD9BT+iGvFqpr%~W$J7|;jxwa-8|k#LNS?(S@;Z8ttGT@#PY zfugD(G$_fJ+BUFY%E`-DrzWaH|83=#X2ODwuwpo*XPU-*eYmOV&8#5P(s1Kem6m5X z+-3(icDG42kqu)CIxbzgHkrRNJv%mqQz5j~*Z)e2{S4&_}dAEt^Go_W`s^VasFassc$#H$8vzbQ(t?6 zCV$NdU2ET2q9*Aq6WMT0u8kkp*S~`m{%x$3Z{r{6BguztfA}2!c0zwFD?h2Pe;=D! zxP~?~_oHTWxKNkP{b@9*>puva+mgSXP}tm`%jP!F`O_3dOLS~2(61=t;jsm1{Hj$(Vz0`Rd{`uZL!qKs`WXg@KFjaZ?<=_C zF5)ss!#5xJTeV0m{C_3W0ADr~$0(d3Vlr zn7JT0FTalirM&g=adF}Waml3KdHynfBuW%Uj zIH}`e6SozVh2#(5`g0_@{u~Kw6)^X_OmY}}fqw3ixmVENE=o70BgOD)Oy2*=+(Viv z*ik50WsDm41Q5V&<^P)9#CaOvBmqXF*{X~3xGa8)iu;}!0qn&c@hwt7M-1tcL9#Kf z55NlIJ~^fMkZ|3{+=!2W=HutCd}Cq;$6y?=eX1hc2@;+we9rPI*hMChxY=T?5EchX z!s&ENCjrYx;uy!(CY&lO3*--Ivb8Nz!XWiVn2NrI3n|4501Ty9HMFdn(K0bz%c$9y z@-6LzrfNp^-?i+s-^`aKFtF*K>oI{Xp73%hL<+xVk%x_noRi!FS2mvtGwWh>vq z-L8I0J7<@-V`V$d&UeKGe+=LJc-O$nwsHY0V|D4I2&7`_}#CRx6 z645BBm`=48((Lh?Xo^cMd18_dO?c5SPiTvetLX7c-}zI=gRtra(TS;n0taWq66~g;_Xi!c7?S6C+2(&e)zY*lUeve z5{)Ye$vpLx%gMXS?{X`8MH+2Gv-rq=3bK(JxO;M(q_>lrp`t1Y-g1H(Wp+KLPT$(2 zSd8c#`K*Irs(|jq5agC=c$XB&M=*ZiONhWIvM2FIbo3Z8q*ziki)`^$KVGzpOE!o| zJa+)XhjPMTwNDJsLA6;6#K-g=&JAZak>UQs2i+rXDBUNEZdk3hTRu2z283Am;*BPW zA#hE0s9RkPxoCypnvM4)l)T6!xuNIB^%#-I50MuL^!c2M0LY?mca5E*#wG6u2M z!A2E8QvL69_rp`5@RNgyhsODT zA1_G|lopy*^8DG=`*^@*L`#xLvgk<4rm0{)S{HpD*Eh#{7wjFw8@XuAA(Q3tr?U~}u$+2Fbq8Zp&)?VoAxS#56stbK zh;;FZ5!K!KGdev+lskJjr~}SRh#kih6eNg0P%*9*kd83M%GXhZq0hK6$E3?mu%}Kp z56Cf~rvnSLPJK;2wPwTU+u%mWT-(P2y3E7^)@)$SR@QBvDQL7qCj+Y}3_DKZU@y$V zvY#O1z zDL_cYYS|ty?uUG8sw9|IOsIHnAK80?mW);yrS^=N4W&qPz5i6*Y=T5O98qee(uWMZ z2-WB_XdJ@o+UW~H%705S6DIc%3|Y2L=X{&#tVHg>?d%2w*&2!8B`%_?z5 z|LLQL=AtWTs9fA!EE0=!%$inX9V@Z8F{zzr9UIXzx(wy8`?B82AhKrS6o4c|=}2N- zXGx~UZZHOp>1!koqBco#p9LEwHX#DV(Ig6MeF<_@n1b)E#h1Pyg*VqL>JT~v5_PB- zxckX9MRzUMy)dKJ1d>n&tB|9H9ngN{LRSiuk84FGXjjMwD3tCxU3$uh5hb@8)ou>e z#=YuoR)0gE2hnW^6y+xrZEN)2FXPsu))Q5gPVRVs;vNNV>%?W+f!M^>^31-!xVu^p zTS_U~P-P9o6#^f6)M+wADOep9WhU3I!|OL#@1V#l2e62AYo15i0fh}?n3{p#>{XZR z$CFQC<#oI&*-TK9r}UHB9@q@5<*fOR7uQfu^_DzJBDr-Zt8yT<$bKZBAqkb&4pL9$ zH3D$2@Pk(Wn-ff`pC_h~1IO9-O~VH3jq1dKIY8Lab8JMH&q6MBDwT%kH!GDk5#3*Z z@b>T8=g_(P{`XeiUjAtLS0DcRot2;c^zQPH@4k0=<-5x(S6{vJ&eF=yU%R{f)(4lb ztX_K;GAr-hSoz_t4}bZikG``^tKHixx8M59Z?CSr_U4`6T)T7i`;f={-Q`;=-8V>! zvg_(s(5O({V@b*`!MT(tiaS!URhpe`H>+_N29YEjrFOhP<+-H0BO;{b@^$UGyvt)KcpfaEYEbY-6159dkyQCv6nWKvZUAsfuS%?=e{(P&Jy06v`t6^ zY~8J*xFgysiztYQ3!*5iEXuwp4^%`%ulv5B!0&s`d-Eof7Jt7#e$&rA+q>^>=iGDe zJ@2NKmX>$`zdgpL{$=X}fu9pI@z)0CWF-5qu|Pltlu-<1Tx?_v@S-S6!A#H~S+FQe zp-hNrSqzsVnF!ONVzd;?#7gl@ywsFwDm7=CArGrav89yABucHB)>2!hjb+i|lu~=9 zo#|L{YH3<#T4{P_I`i@3jMB`^Oe0{%tW9{o3H+?gEPmEpoL!oenS*D6eTVE1sFv*_ zbLjejN~qR70o7`Tb_X+ufp1e&z)xX*ZXuxBRp3fPO;usQX=*y)3^fyQmYNMXM;!uq zs5%UAu9^p!REGo3S4RLYP)7nDrH%$%s5$_TQHuZVtqEQda_gSbfB+>7(jn;6JWD0r*LE z72v1T)qtN?p8?#b_5*%aeGc#%buHj^>UzM>s~Z5npuPxrqq+(3OX_C8FRNPszoKph z{HppI;MdhRyqa!P-voaL2byj$G^c(1w-@O$chzz5WWfDftf z1O7lg4ETt86!0*>sK0AVE!T*ObJjyrX;8kQ(;gMrlO!?OvOPpG1UyJg{cInR;JoOO<}4X z)KsRXfx^53oPmV71vm={^NZ{i)Ep$tGr&WUFxLR*BF$qe3F>gB=7TzdsRf{pWa=nT zM>Dk$R0mVXfLg@VVo*z%>IAivsb!#2Om%@uGt~`hIa4b@tz>GIPpt-pS?aa+IB=M) zfF~ef#sZ#%gjox?1_?74a4iyMFJKQ6W-#D-B+O#K4M>>DfM+0KHUpl8gc%LE5ec&z z@J&dV*?^moFtY*ALBi|?JQoQw9PoT3%yPgBkTBD|)?Nq>GafLDgjo-mL&D4l%p+m; z1DZ(i0D#+&-~|8+Nbm%J+mYZ6082>l2!ItNcm=?Vk>D8sZ6tUHz+ohK2f&?3@DP9_ zNTW<$0&0w@ahLL1`&Mw5vivfix*XKoShm}z_JDdj%iiHr?*#QOmc84j-UI5rEPJ0% z?FIFImVLmdt^oBxmVL;lt_1aAmVLyhJ__n%{@8xpN=KP?^B-#bpy-3;8R}&btB7e@~JO@x|wBPcByNr4Yzpd zE5MX)_0m^?DSgdLUk9f24KLmHsl>HLX5M<5r{6@neGgH$n@OyvhnvPenv>r$jlm=K zi_8LZI_LW~WOs1BJIwg*;BF&xBqZN4X|8_PZ0{!zb0^YWdt~P5D~#CPpnr^XkJ%1* zFT?vxn$MJ*e9!lg?%xy2beJ@^AJ{Igkk&s{81#e1MWw}=#k2mEURbT9TXp7b&BkF&>mVuJKZMc(YGy~5A; zH2boNl4sbTxf1dE%7jOz$=h%x$h5T!plHKXz^W)}npKnoIT@7(rt*r-eT;0s&21!rl(UiCf#Y zW~-I#K+y&l*-)BTJ!{X{(7WD=_vT8b>Kh&^ znoe}%P_&u?9p)Y&(nlpR)`g)wU&3$Wn*R9#K&X=^F zyPabPL)2P;dL{ql4NPlStP{vqbFhHh-c8K0lcMRQzbkZ1yxFHJF1+&JO*9i#5i`Qgh$L`v9goL!jW5x!zPc2 z6DeUDl&d)%qPJy!Bv;m9E@d`du{XAT!rbE2b z;^lFx)=ea9@{1ZaHBEje;Yn%@X_=Uf+mj$ktqpFoT1iCx8(F5w6f>Z6Bg>pvIk#g3 z?L^^IC`(M`tnDt}&acp;w4UbEDNW|=#5teacCr~Kp-giqYj1Z8>(*pBPBRXk+f0kg zOKUQh22qzLYjMI{Ot(Iim==4;f;-B3GO{Em4wrcGaHU|I-Fhww8Y@fdBnc;0meOPs zUdd@q#?)AHTC;7r-Q__eJ8@cztT)@txed@Xu_sm6rO8Ss2~(P^wy};b?OGTWpVnl! zc!`GB?~W!zp3uE6O-AiCJEh6E8;eZoWh9%5<+w0h%1#_BouVfps;ou~9mP7@vF zipluSBR0<3g5TfXt;b0a85*{*0(a|`6S%ZqMO+ivKz2u=f)!e?=I0eFSKfx)7ZFGL z8%eL!$AQU!$$@baUK4BO(t7JO*~MJd^vvNzmROaMT#+RyeG*IZ139Z|nZu;*lS$Ib zZTEH3tr6#fbSMWW?hj?RK82)lEXJl=o~HE@Rr-RoUdJ!yD^|H5bK5ga-NX6n)u#2C zTvR@%Oq#=(8yiRvt66tipU$t;i%#h`v4q>irkmCl7veWNt$R634oglc2OGz<+DMW% zZ>0RL=(9Ovy+K`isIjary}414(&z9y^}X_<2(u4n7kgT#e*4w$)W zw>Fs}BU+x;{a{=pTAp^=yy@sQ-yG4~=Th5K147Iv8K z98c?ykldY`zPfaggf)NQxwW(|lhikaE?wbV?jYBkMp}QAq?3m}t*Z?$r}QxKO?5q| z^bVG|y=F7gyI4}UtCao}NhTMb(wC4JyCs#@`-q(44T-B!Y|WH@E6Jmt*3?egiY072^-Uy;TNNA2iB;KI*6$$!JDL?~{a!GxjjTxfjdANp z>AjRQM8&7|SGX9iZ~H)QdqIDI1T9$ea)XsDuZ(GZ1{)kO-$vXduhpfmCTWvfq`M@1ob!2=cqW$8pCD;7Yd`Dl1U^Zk0}QuI zU&RG9T3<@v#nMLin9`piY2ELq^=C;?vxYAH0I|NNyYvmjhdph6ftW_Mr}U#FjMPl$ zM&i8gxwi5pl7w9PW|xM?Nb4^X9rirUEyQ>O>f1zG-%8?O6`QNC64g{H*wv9N3<6&B zYb1$Q2Ouhf{W`JijJotUhz_%^)B2mlOfI@h|AfRX?x?%to7Ugr_s9jU>ek-|H8W5 zDSbZ)YT8Qa2Z?QR$DSr?Nz~zW@H`{6bD-!Z%JMD^A zYVC_wx_&2>(!VAd@10U9PqCW30Ldi)`hEGVOLuJ&KGv2J>g3I`?}DpD7{So z!55~NxjECz^&jg(ucGv7{inLntEjt6|JfIIce$^3uh4&~3s<DCfRjWPT8<*8-mtUQxT~5Q#0CzGH zpFkTA^Ej#pomM^vpPjR8v&XV3*63UWvb@83zA{`?$#SKd+-fF=D2wXs?T`mMBu@xC z%tLKflEB@lJc(pWa8ZOuSTcIjMe!|1EWBXZlGV8-{TE)cV!UI)SUgVwt1SyzeBmXj z#p&^mEhI;{kfdAG7JKo9i%1qfppP*We=?FifXZrpJO@##Owg2ONQvVEv49x{6(kA~ zwul)uW3vO0ggi+ck|vgfS+Y#Iv9@LeI9d?kXj07xa3suD@NM8*RAP@rAa)8%+97FG zZ7iAUOQxuHmQ0IHRVg*ijH>Cg18RoZjxw71!)m6Qg^=`gbA}3;F+}x2>L-D+A+r0ND+Ik;m@MUI9DPY{9#(pn_@GyrAbl0cwj zjB`*KmjrNOU>pJTF|ki7iAZGVDxpHa;la?p$bQ5nRrums#41Cp0S7z4SQ5$H0!D zHJ3#62IrkHosxLKp-l=$XOBY;I{{I%XhtY+j?rugL%uqiU{z3nle0ApC|(IrOY=x} z7r^BRa1I9E9Ka9;1`Wa-&=oMMAaerppw9)!QS@5(QRBV`01x1Ipe{XF%*|=>8bmSF zZ1z-Yd>joBmqm@Jkuch80n=K;-FydaJ)1)kFH_sA#-P|PtXMTT2ve*EtE7JZGJ>`m zql?y?Rn~AhSH&@_7JGD~;r$4V)85UMc6NkW6C8}QmZ5wOigK*a3BnW(+OM!1SwE9H z6vjKv!7#ex#lbt>hi}{qvZY!t(34=l*nw~}+P!k^fSKQ(geg)K-?cR~6rUpsCB!X? zBT1fHULYS?+?qO}k;h3p)2aCs=Wzp+hY`i@*!RiKl!Bdg-^zMrZKh5LWNizx@V||WCQuTn&k3ahtib8#y!gu+jhSn(EM@Q>Ya2SI&JlSxsuuv@e~#PG=WJIyJZ_< zg;n&LOTQ2~>?F#Lwn(fI2_wuf&al~|6Qa#`zzuKbX^zx>M2C=gx>NVCsv2VkR#|a% z5c4OvJz%v}F?T@Ay;x^KiyGY#8og_+g(#bu%z2-D++9Gj->Q_7h3e6Ea@CTp1u|p1 zkaV9-(A$A_>b<@Yt{FzT#(M=j)ap)rJ4r5E(zSd!zAxpA!!}(1greTq1h^P;r`Nth z*~YOyk5_AxWi-rVy3l%n#{Db|0kqM$1VXSBa@I0y9$%7!`J(NvkCRjtqrPXU!(*f- zvLF#B)d(Z}suToA-F5ESxxhSQk7@erXdX5CQ~?lN?ckp79wPbu>&UzqbEfNp2mL zt%GL1T31nnLU@xBbb|mLwH?B8NPRpvCn=iP)HTiVK+g+5O*wg2lw-epF0_q9YjN{m+An%26|4Z z?tSRnDeVsU1IWT~sWNz$g)w6Su~QbMY0+y~XC+J7^CZ!vYvp{^(= z;uQw-_B|44c1Ep^5~ za6Z(1-_ozZ(=lTlR=zK=Kd{f(Pn#*YAZ%}@j^PPys@yTE%6*|RW4|#T91E)8uwix5 zbI=lt$U@``gAVZ`A_gNq9o-k>x8xYE$Y8s6Vl_S{aOewPjTwdQncUa3Kd>b@9vTmi zN5(?dV70m0GKM3dioPAkS|xW2=5b4*fyWWQ#_tY}N4>Tt#-gf;+AtQj_Ts(pZeu() z7E{gJrFBU)u3E7839n{qeT-ZGPHuf{LhC(xEV8dvCD7-1wQVfE8#i6I2d&SboHpu% zS56$QZyIkNZ{e0V!B4b|H8X4>Z!sRNPEiz22#iJD8({XGC}HY^65Mh2+ukv4bT&tI zu=m7(L9~H3aVsPgHYpwXGF7hlV*vemIC^ zQqNSo#_=g} z*^I#GTz499tgG|*VkM7#=82tt=FubEF8bx#$pgFD(QZAALMaM>I7fXZI&EuuH*d)D z6`pMGnzMQ~J3;Ka>RSdUx(RpQ_=Zmi$G!Xjhszv94lBb$cHO=4;SR+Q6$@1-h+V%E z%oU5+in7zAsp=#uxc@=7(!A|tGq*eIss>;DNS|4*!-={~SGN;!sZ}&?^c=3yT`kEd z97O19TAH*3P9EG458ur+uoppNQZ^e=kuc&SiVcov*yhB;6b4A(N|G>^8S?eEphPZ` z9gs6Z+oLG*#DlXCIB@B<;HY~EuG3XngO8%HARW%xUoS*+aI^}*O9?M}&^BgREz0PJ z^(aA*pV0AdC34D|kFw|T0nGJL3sk6VsPGmsF2_TNIv7@JOpXO-BKE)~geK5bPZ*_L z)KFT_gwoD9ptSS;YiSXbwu4F|-)RqWNrqKc5wr=ujiVq4^7WJN3JgX$*Er__2M+`9 z2rp+?@ATe?;|+K>zzD-A-VI?cHH~)AN=9oH*=*9Z^Euq&%2$+WPd-yRBE8xX-K%@8 z6EN18hIt^Xz_i{3q_+Sd*DB;%~TU_iY9ViN7A_om!oh7{9kM`LFXIq@P$siM8@^q|xSUIP`-o`^%;i#My3hQ3E2^^Jlf{K7c*mo>6 zGcX>mQb3^@mMF)<2!^_r5kaZ21gvTi6+@}#5k4ePj;J_MvjVE=kO1C}VA8WzNTOS3i=H4h!9aC`++^||F)bf&F z%L@}~In1x+H=Z=1Lg@D^{^(+#gLd%vRvX(e?SM8+_1i#^)x_w^b+}-FuXc*g$n1J+ z7k3dj$<^qch3Y`E-^8UMH;>)fyDiPXdrsO0yTfnw$?h6WCsgZv0w08(W1Z)Tbw3Hn zC-UU9N<{G*K7I0JtcMXfs#p(c&}!_&%N47HZNVsASmY3!bq}g>x1T(5xjNpBbL69m zYNBh}^@s-+D-L*5`HsjAI7ZPiY)8_!OY0AmwQ=vBiP(i*^qDymBZ7}6nJAHT)Hvvw zE{5yZ?x<44&+bJd+N3mQU?pnDdW1CzF%eFp-Dnm`gZ|AAir3qNaZLIItwOwN(bF0q zhm)X{tR1oU+7aEa2flAMb(Owo;8toMjv>4`;*sDdG)}c#OdEY2hadEF8hJsdH4B%8 zeHen+m9mXcI`8UvbZPI+XPpUEJVN6}F35V6hBZ25Rp2PABW_rjhgwpk&3b||K1twN z%Gku0a7!jGTr2B264P!wqQ9X}l_KAjx+Y>vM>Rg%vEA)FKN z?L$cwZr~A!t?}54<7|U@8yQ{X?yq5mNwgzL*QoGC$+T?R#bWAG)X)nWbn;9aomSf| zu9%Q}!oHd(F70v=&iE}2G@A||X@!-bp{Cv4gz-)yuhYVNAKI>E(T?Mg&8B%b4FgVl zDjBp|A^Rmn_`PtF<3_Xam7jf07j|~I)?#P-;eZ-~#)8sGDdK9dTm#3RhM% zWb04>N8sWz4$ExkfAUosvJRo5ac{qbAaFKIr{T4jg}8%CpZof9DB;vT95kBjfy&No zf29J=<6<5$Chi-*@W z`;CNMJ4)XJwcnk8+M|{yMJtQA~FZ;_h6jq9tM2?XvXe# z8Wy%TP!bsbf^EUJR)G%&;&nu!Uz0)cs+8hCG9>;j!{QYg5&x1=@lP2O|B!LpCVnpGiWlWP@iUneFUZ5iPv!jZPvjBe$8v#qULGl)lSc_h9xa}g z3&oFQhxnm9Mm!@IiKpda@swO5o|K*93At1}E|-bNWJ)|LyTl_h9e!ALiyz44;`?%i zcu1}k56V^I0l8Y-FOL=9lgEksL7AMtoPEBEBQniaX@G z@V8};_?A3X+%DIPZ_3leZE}P7hCE$-U7jJnCeIXKm1l`tWv}>(+$e65XNxb(H;J3& zCh;Y?S==Q1#EtTt@E7Hq#TVqc;s$x1_`Ez{TrV@?I(dP(R&Ej3$P2~iF0*(Uz6F3&Q zJp2#fIQYKy@KWH%ftLY42Al$Z6u1lc5#TiN!@%9ZKLB11{C(gRzz+eh1bz^B z74QSVtAXzaJ{I_Uz{dgK2Yfu*aWC)*;O_xG5%_N4lYs96J{kB<;5ESC1wIA%JHTs! z?*Lv0{B7VK;BNt+3Vb{8df;yYp9Xvz@CM*-0G|&0b>K6AzXp6J@K=G)LOX5+?gjr9 z;Elky0G|!~W#Bgf-weD7_)EZ>fo}rt1HKXX9N;ekzZv)oz~=(r0DK!xwz}EtA0lo(KLg3EZJpSRpr89;k4h}LTUlDQqUm=$U zE}fH*@hEnxvYtfZwdMpJ7@Cc+XcsfES9SLibJ({^c-y$K00$3=ctZ5`gp@D+4+r&B AdH?_b diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc deleted file mode 100644 index b329d2a28a6b4cb1e0ea581a53e0a3f0c365bc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1440 zcmah}OK;ma5avUEL~%Ajx99^c0wUc*4Y-n%qCim;i)?e~Er%q%cz2=5A}tG*Ni9XE zjgg$1e^KI)snvY;y;DgbohtPj^aeaUd z?ShoQf#Qhc98K^5Pso5^^cr!(=>_6c;16^_xp#=Vjjs@ix}@^=nu?tcbpadFVjt1ln+%llT6AeyYq7~$3bTRYXtjQaqH6pypTNmC3JZOt6OPjAa z%Zju3V%7de^ge=UpRYP!hj$>;wW_nHa;1-S205Bpcr+GF3*KX?7DDz|EIAwIQ^687 zDU=k_luV6S3~SgHR1|`%h6}Dd8(1~9FjFlP4E0biHm;)_fcpkK zHrJoP^AR|9Mx3Ug>8BRJpu^C|@iL)?OO@g8dgT>aFXT6uWcZs_-sGTch>!qz2_>c~7 z!=x^~b)$4}-zeRpWf`>(&DxG4315^bs{AOLC_c^Yyc0$LOyhj+X+;rN z379EhQmsc(ETuBB$&@U?+Ag#z06btR5J9iQ-TIbQ6jar4Fz8>cVbM6t=hgP9tdtKy z`N+d>~HOUez?Gwz)L1N7_4_=SPQE?U!{)zuQlT17ri;rr!XG CqFgxu diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc deleted file mode 100644 index c52239db6e9456dd452fa73963870f8e935fc7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6200 zcmb7I-IE+wb?6H0KSqZu`(hmJ3{*|O-VF2IRCFxmzL5^H6pNb^q+Fe;=GAZ@O2XG~4?|Ti z+gHO3d_82ULi2N3@>P2?>}4YvCgC8*R_^zDLPUcdwKzd8MHtDzRYs?|PTT_Vu7|gB zA`ZO%?a}Zy4)SJnD;o4k470ygG`@}}`#C^pbeS-^T(GWL;T2PC2rjJ2p98ml=?W*b zLOXOej15D$p({MJJ>ZqFBC2?5c=&z!`iFXa}1;MwMMN2H+b-Q)Z4jtWNi6yao z*XlOJO4t;u;R1}Nwe5&Cv5wwF!J)hpB+Gb|46@!&OvAVoWy834+m}aT%=~EJ55ivV z_seRb$keoxeF%?OXH8c)Rnee{pczAB>V4q4d*j|7z6VonHzm#v@XK z4=r`hAJKm=68Wyb84dEYemb!fkh{Jc`XbCC84ACg0;)MWC%j^^^sl6Y(9cu9Hv$l0 z9`^I|{-x4XGa8@?$6F0cEATg;vVys-r}pYk=l5hf8VJ81#&I@JfAi(D{+DMC6W$v3 zFmv-pn#OZ9zflfMm?ze@M{!)9Y@X!hUYyPF9NrxD;%5-NC}nT36Osx+tellacOb2) zGUo*G1l4j*upP-Pe-?4_OrLx^^S5Q1V2dGbb0f`jv^HfAnvhUOZ{Ww_c1~k5+S$!J zpLrHNCCJl2uX$QX*Ycj68e_SyUg2XK;b)NuKa+Y-GrbAxnv=W^FaEo|coh1ZXK3d$ zXZj1e?u%WesL{k_6D@;IMa6q%L0Ik9Xv(y1ydMoN%pK(S=)MZ!LlKU$Q9@pidL&;RR(dT7W^Q2wO1 zwVNj4*3KyE%e0R?6>YuqO172tWp9X3bZ(f6Z0p@{@a|R|-Pl6F-%ST!J^$sGw=x+2 zxnZyWPH!j7wuaGgE5J07$}Ne=wl(#!;cevwK{SZ+ARw`3ZGdLOVYB}#yVIH~e>z!J zkJZ&DNl$--lP0v}TR;k9&$!PDMu}W7#C3k>)RxHXqBW=XhU# zb3Tesg80mY^u`{A)T3B^rNgxvl+zmyAr3TO0*mrX1W4c|=m1kq1l!=4*4NON(cxOo zoz~f`JQplIdHa_V1nQE4l8@Q7`o>j zdRd#SF6Z}6^jZ(t53I2{w#N3@$;nQweLi*%?LBAgFGzPPu;DI&crX zg9_+4!o6D`*Yd@^HgP08fz1DbIj*C%RMdkdyqED_#(PB=BPI_DI?+nut{Eo`@U>c0 zsn~nFGHw+0y)`|r_5owY&0=t|sEYbKmi$#wxxcQ9y~em%)Fvy={eX`b#todjQZzS= zVqu>XcEQLuF#iOVk%gOAipo9{^>t&}STn}0qE&dH_}|C<<0>--UeOfwHKVAm8sp~8 zpAD>X=j`9}=R_ScvJNchqe)Vm?hmOhg4??M^?{2q)HE1dB#G+&lk#JXp1jBM=kFN@ z#sS;rsCee*oEo=r=F{V)d{s2S(IPmm?wgRt#(23{ESB-Ft{Fdq)W<7D`$Hzz3P_QP z=O3B6Z>d=M35wtk*-f*kf1k=>*hi;*rB88q`XdXq@hsuV&H(Jd0pD(n83n+c?Q_{U z1h&rxaLJ$Yn<%uj&7;VyMp=Xkv^VI7%0!TR$Q3{Tvi1$slM{arFfijJ)e964`)M+K z?R9MSTe5G*;C%V9^Z3r$shb1=1)X5x9YJvZLY($dCcFk@y8NkA(0xds;>7e6l`%VH zhj1G3Z|)hh+%x4Sy<1T-O5|5Cy<^Jrc&P=H_Ca!7O3N+u9Z5AP<>xRy$6O5^B;v2q!c7SOhsZ969Jas?%{?aH&3SHuQNB-oVD=E!zXP~zjLqDl z_9`p~ny-#6WFpI^nwtF`!sZ3z=1Ce~Lwntzbz}R$fW>iP-u1B7E-y=CM_86IcH#S= zr)ixY!}<{yTzH3f!2n&ar2C4dOYIFqzE!xi)7ZWFdf{oz6Be~{`@T~+4~VMQ&>;<-cx& z$dqy>&}YxG&a&2d6@;-l`P&tgJZ2mY%8KL*=uzgKXsB#m)k?~MszIe^K;-rPtfqM_ zubl7&*p^zUu7PvHz=gy~3 zG4RZ&Kf^%jpvV9dfqb6G>y7lzTseWhYDoWR;E03&q^_?K&@SN1zagB`izI<7XEdN% zvs9#sNUSOVrS(bjaAo3tEdP-fkfSRT(k?4{lAEj$Ao0ot0u%<6wId@@mey3}mlp6( zG*YFq3)X^91Nf2?hdqgWHA3f~kvf`ukptFIpaG@i= zrR$$^gYt@qIv*D;)hPXQdKtM!yE_w~(t+nY)MMx5-`f3DrR0k|wsmYxr6g1>PxD?p zY1C(|Ei3OdZ)s{s!7`WMBnC-6ovQpE;XVP)Hu9}s~z~T#~j{d9KDX!#+x(#xXs&-+Aq*p6=M_w_+!r`@2A*M zreYL%UbTjY^D+EA6F)NdfwS@0m-rC=8^*&fT+Y{1 zvDm{gGiJu?v9kJ&m*etmlnwb!loRrsEGOkRRZij8sHYp5a;A|jXXDJ5sOK8_a=tNC z9+Kx|z0fF>3v!>T4>yYCqTHwJBaM;rh}>uDqm5PNRdS!L#~NehF}csxS2xDX<8q&` zuW76;ua*0u`ntyY@_M;1)HgIXmNz!8C|}XoRNf?U!}Tj0SCy}7TwT7pQ7V@j*Oaem zY%XtZTwA`jab5Yk#_P(jYg}KxzOkjerLncVwJ}kiXxvb~p>bpR#>TetHYuZ6-`ZFv>vuHnDBmIX@4q;=QZ^=H100nE%$5dZ*1ICzNhh~@|)y&U42($ zcX@Z?-txWjyuQAtvA4Xpv9G*Oo;TF@H|{InC-)oc_csod56Jx$^#>XcmLF^!EFYBT zP4z>Ksq$gDzq0;NBdZXrtxt3VR^o~{z&7|@}rHnl;0xHrTSxy za=9$`*VG?xJW+l^?l;$;Y`nGnR=K~nUTGXHAC>#->ea@v@-ex8U46D;md%D$w&eNx z`dnkaJTLcK>c<pYUTB;spOCn%^?IXGZZw+ZraVv7TaCr?V&kduQ|ODU-ygT< z0L>ffcEc$RZb|oCDBVx$bgRnGh0;AQ>E07c_v<>{ z?dA8Vbk;N0bJlz266J4^U!(l3*4~A0)7J~;>t9Ti-;4U*Vcv=Q-f3NbHc@_`l}F57 z=1#=yJZqedm)~#Qf|xg$cO&L*>*liw#C^NOz0te}arfxB4*)tJu)f{u&Lsec4_epa z`GeLmLJQ9yvK|B^K8%vyWbQ()UDmVs+DGub+q@Ug_X1kqfu}v@UOer^(|6)&pSd4T z`|7#f$U_OAS2k`VUJUwV0#M41My@;nn<`kZ$@bq!>-R48qC(Jin z*O*7-`Z#MOSJIp|XP!xwzZ-8qF=v<$n~yw`EUy4QFK8H@!|&V7M_){qKWVYqN|@&RVrPeshgh zv(;`jYqJvxH@DxeHmsR5iV9|zwXu#>XHW3e#E5GgIP4D3JoeDO%AWi8 z?RoIP)P1OV^NgF_Q?1vl$Lf}w+*_M%yV(P6%T~_^YfjtE9I7rZ)|&HfehS|)XOvZPndX_EM7&s>~j@W>2slUyd`e0pQqn%XZv!`?%Gx2(DtqYP1$= z728^@qp?V{de7mh>B9&2RqmfTgfAXGa%lIAJLW}BKXRXrL*_idUYV=at!4`u$M(1E zMzuYIFZ=Mw9c;}Xv6`l3BSC6+y*A%;hvesw*U3YBTJ@Gaea2~94L66%HqDAXe+|-q-soJ$_vyGxgrk3jU`)l*ZQQ~p5-yJz(E!v@o^XPQj`|!{qtLiM- zXmYddu5PFYG@11xcpO&lq3S%!8B!II2gIfyvaNRej5}O&D%R=6YSUzTR48ZHW{+2N z=cJEV^XM$rQx#fqW?O=T>FHV9viK%5ZO!xh{M2;&3=kkEKkRH)Rvt`r=-R#e_V0f9 z;7ny^-;qNHrgk5!%-p~4&^~vRpx^hFhYlaXD~TDNvFt_-7&OD)M8QcSlAC2H7>iHI zD>pAc(-=%AP?fch)|zJPlmqZOt-7_}s^;+!u#L^KnDo6&jf2Z>23 zH)C3J)unpdP1dcswwsuh$lx8n6#o(6X&r zloa_RlJ3Ig6cAW3@`B(4K`qd<>{M&d@oID4ngWQjl}Zx>sZw$Cl}bYfEba@H%2P|# zx_WayX0v<=Uasyq-fCDo=9g-y$t*gww&TQ|&JJf58zQqb*xfru7rVJLdOW2OoCw6%=U3NecWOez)@erkn4*pu^B0RWu?IcjG3#SNn(0mZEiNl z%{7>M$E`KJ|K{2kbLKj0En2jWtb~~i-KRqLdEBe|t8_#1%-XBxVR>fV)pN1ud8Frg zRGwLDm41~On;SRRn;V`*Ro4M9wC@fIJHOWu9Ne7tf7VFl0b@oi< zl%hS=vD1S;$yGw4Zkwq?q!$`l%<-OR$0)2_{7u(eKF_FTPnYQLLl zwkl*5+}v?*%5c+-s(oT<(Ov*9a;g9cY|fGbd4Ig;XxxL#DI(~`7Gf)LGkz{!h><3B zZrsE9wN#rcg{G2{bG)@wH%m*7RjN9(wOXmwte=^56HD#63B%?{aq~{QYPX$Jwf1q4 z{-k5o=R!kE=xtu|R+#r=tN;l~G11u&h4EyNDpGf*_Upb84{g-E9Xl6aj-wUEO5$9s z8?P8$($;tfOfFkrs+KToo$;tfOV|@+kje#6F9cE4Z9Af_%CF0@GO?{rDuynZV496!udL zYz8M8oMLdA!5Ib}2JCuC?87dHm?2y~?0y{&U3~XkY&qYKcjIm2tl^Bc6DID@8p&8U zUrFLh;hiDxHg*lh;W;7Co4X19J}J*PbeTSl_bGY4rJKTY2G41E-q}s#Ig96vJm1^R z;5moqtUN!^&ElDL$;tDvZq788;`Srm9O8%MDP})m8qK8CGIy5sDRlGb=|tzshZo5{ zmrhpeOO~?@cpK{YNt-A?H8Cu(cJno-)&!z9XDyk_+ysW%<$!ewr3h>%hNMehTYo&u z+_QclgCV^n)&4YMooxuR#e94$o{y(5ab@v#J&|Nh50a>|W;sN>KX$j@s=m2`w-wVl$j zR{MC#CxIofoh6?NP6VY69FT91wpSHCtLSb?53Z8ev%&b3&c`4I(@BBL^@PZgvr?UCVBt zv7bgU0u@Ma4nt(Ld+NS@Hm4VvPwnS<_Z|k{!r)sOd>ez=Xuv5@8ncWW=V=63Wf^Lf z#g$h7HHx?amoXa8CyikPZ^QrTf6gb2Z{W?>^C{zN#kBEqF=KqSm^J>jm@~do%p3nw z95VjdDCGaw*z3lI^TQkSQXAGX@|VKXE?mx51m4Py3s=*yk|q>6R*GU?te28z3hRcn znZ_u}xY;9E8SH_Wt8@GAW~p^-!J6fqT5V&_J5xGlm9|jKvV~NK|1Yzjrj9em@ z%%yVaT*e$Svt|ykO`2r*3igMPxU;E98fQ>n?C%o@s#Gnapw0DUJLO)r`zVI(Y(>9_Ko;zn^o4#)ByU582mEhRC^Uk6; z27($z#s<~<6G&HLy@}-6ST=4mrmvE4&Rb2$Sh3{5qOVj(lC92!O%!%h zvn`0J1*4`Sd?1G!uRXYAXmqh?t;m2Cbef3UD|n?BjB?-8c^td7W({l0ErbLM%f~yT zx{|;h^>Prx^r3SCnF&2-ErNGqA&nJ5Y#}}lbG4EoeNdyQbmV+oV1%{oQI=6UYxD$PcmSg)K@Qx$KQ=4*YT_4 zxS?Qj+%OUzCZ~zXOu?!~{y63C!sXnLAc7wt=9E8DLkCPr6DLfF@gIG748L z;D(j+F(og=zUUT|KwNQ6oe4FfOI4r-7E+K`5=ER6Xn(ad4_P$kgSk2Ic@SO78#jL1 zji1p-Lk#!+c+Y;`gX<-NMIjAV<1sL~352jHm{#-%12J8Z;_UB7O8W;8c>Kwy7~#kE zb|Ha&D}eb@8aHWKe?rtMB7W7Pi{VxTtvL2rUjp6Ph2WiFI~QWhU^*9!Wvturl*E-f zYwV3ZIr4`pI-<_*yV!V9Q?VT-gJLC_+ON za1?oZF?k*1*k!_jDV!FvO^R(_6sNxrZ*L0Y^k&0Ic{ptlr7U1 zA}hz&O8gwhj!y*)`^WIc9X~MdJAj@2R|#3=Q49uPzn7W zQt8vPl{PiW8QwwA2Bj;bj?FTg_s4s$g2F6#73?8Ys)|G4Y5fZRII^DCtEr#Hz5O2< z{0xIA)Hn-Tr#TD4 zr~wKK+A2U!PId0q;PDdFoD!5trRvFQO|<1Ds;TR}+)jzrawdTeY^iWB13M)F9AhBUE0N9q4-B{tw68?q z4&PgKtbM0vEfI>_#BBTL8N8RlFE9vzFLx&6_!Zbt#hgvJ;pCgoV4amjZC^=a&6UQQ z%Sh$FHkOr?%oq8iIC>W@=O}^*!5YJQ3PcEuTACU#GYfJA77ff=+FT7rtsoQeu$8r- z3lkDn#69lJ5&S|ort^%NtAuD}(WB#TVTOui5Csyf&M~10y|hd88c-=Vu!N}EXNUj| zYqIpJ^a=SYl2%cuB?p}C zI&UP6;GQFC6u%rv%#)@0rHmvl^wziqF(C0qQhC5gqI_e^BJB#cC<@qYU&bh620J{0 zruK)2ki2%&4(&@|GX);*gd_BBHU%hnf4pb^?!o2UfWYIG%@_zhbW3MpSty({1fQ6Y z65u^!6FWxQh=& zuln{+@XHi303p?MuBYl_OLKErTo0JeWzao`FWWzbe4VvDU%ZR~M+Tm?764M<&;@S; z(Cz2kxDbCIcvHE39tCKtoRxtfr z1z`!saF084HGW}UqFDlEz*02H60CQJ)w0f`WVMS>GOH^OPKM=X+<0`2i;p&FnHhh9q9h2U zJ$g2gn1Zb3kC1jhNSAO7e~1VBUId_{Qhlyf#PrOJa2Aq|IeSs~lZgAIPuQ?VE^xuJ zHUdbWve|#kFAb^DB{1~)aTFoCDY8KK;c^~8&^7F_Ho~*e-1sDPt?~OH~oiagZ zKryJJj++UX1Z-sU@hqZ*g*5Lu=e+=}l}Y_ox_To%5z=4j-U>9J(N!Z=OF=zLTb1mF zb*8c5Hm&`v*0GvYmOs^cI6c;*+Q_tojzmH2(A#akoe00eKiCXW!zjzyCYH?71Cyn_ z%Ipxb>z2HaYQ6+Bc9ynIa{`Ri20rhNmAkMYyE=Atxicn!B zV72O|?z3AkD01<}%?E%I>{85EN|yMZI$dz*Pm#J8fu2X)r-?uX+$8fGjr4_VA`4MV zXFQ5TN?Yb53{r#Y_bD{VrP68%I1jvEFznR`6B5Q&lBUnSVl2#fqrfdvxr(6-OI8}N z+JAy_ZK6Ep1yFrG7B4!z{yeMCDYB^KL-EeKXx04{^{X+q{(!y-rJ>?6dmLeW#bA?U zo=wSCVO8kKQDJO;s?K*6(&O_lTjk66cxV0BL9k! zOG{juaYp`?{1~RD$T}39G)tPr75O8#vkO-rCv6&L0@IG>qh^iRlS~G)_>+k%z!oO+e6Ofkv&f{~TYgQh+^E zJweHEX`Z8u^0HuvAsR||W&6P-!JCLWQAI1Ymy|M4I2L4fN?Scc{>P8_YDE&eCn+&& zmc;TN^e z(u#n6gyJe}EiYw?+)fPpwPH^`G>DuL)jyAKs+D$8sH8vt`ISNlPhHS24wiS&SF8R7APsz7dw$f^$&|yCWlg?g{SV%KjKRkl1n`kN zkyns9{5I=$J#IuqkTFu@iW}FuT9CeML^r@ZGr_o+jG!QaMI=e!awZX&u$whu2-pUD zC1%?Rc}}R^V9!B@L<0Cs0hYBirAl{xVRy;2W+5DFWAKU@18poxqAo%&98v$$xIqZO zK%(@2je@`~S~lh=tBO9*a4uL)&}>D}jy(@8C;$Y>FfJIp&ZVD=10>4Aqi~ky#tJC+ zVF3Zt8LIVE`3f>V$$oX%C}ek&RajEG=@X~;t3(^9iT}rLydg`^O*zhlHK0~wfE&_ZD*zvc~! zqJb6Z4XXF<#uB?)ckY?=kzmq~@-pH}1f)$!s!toXeB>V)@mB~?C5ey^=KP}m#U}x& ztK!LIXZ^*#iIocVy-GnW^MJHaH|U@EN*cs(saB<=sDI=K$aWf;A{d1{bZN-dt!2br!e1Y%~LVfg0i8!aqsS#-S-|ju;;<)%8`esW)2+MS9xULk?8}6r`*-$ zLvKES8JBwxv1*+@j-5&~?)n+MZKn4X`28Vne5*TprS~&9Kw|4C_p3H z0oP~&VUYp*i?ER?<7G=Z{7#6fNna0Du*YFRwI&5HJDX9CVPr-AVO&V_&M+>(`b)$N z$rN|mBn|s(NQMnpSsHAcRoiqE*lXnG+F%Xzjw8LbA~K{C$i?9z{YWkVLnZcP1{!A! z7R+Yx4;oK#{+h)r37|SRCU0_+++>CIv25B4-YQJW-%Y#zS?r;{r-T-W>D1bood9aF zoX8(5unU*4uAaany4?vX*NmCK)>W;`fW8C!fy`7HVhr4;ai76h&SK-DnuunO+g8;) zD8sO`RXvqtRBF3-SySr7p7v?d9TNQmL||%@+=$-bR+$4hIi`J;SQWpIqa2?kRP8Vphl{+59hA@dsnZo_+lR($*LRj?!`*eSfd7Vr}j7-jLd z77G!H?}HMmVMScsJTKZ;+ERLSA|P}7`KI5rZOiEOg@yw zpRDK=GZwN_ojDGrp`I~jF@vfJqg2)AM9O9)#KH;3j2(g402Epih?dd;%8HpusQ60> zIKcgL^X}ssQ51+M?GWa_1ha}`AUKhANWl5~tiQ6W?y>#9NV(L)>#0TL6rN2?sC~hj zLRl_iih2iNtokCrA|WNKbx(y^_Z>tiTp0D8t5lQN>yrbLPEBM7B6fn`6D0l+@A5?A z;LCC+_?yFvZTuXSJhCcv@!aM&A0Ypym2>po4!1YfXbZSkjk?BKctVb;(Krj zQ3M+ngOn@X=6WBKNf*I5XQaACJhWpi?D{#2c~5qaK_IvnQvxhq z)y}ulqiW~dBq(g=(F0R^4?j9BrMkw+u#lV|QDk_BBxvvs{~dE&XgT3 zoH;KscUyM@`p2y|TB81Og!x_Q>yMfrLm5+`BrgJAK8|{Q0xiCa(6WhP8q%he`8{w*5-yEjokpqOiyC~NwBSlLB7t26^Hb*c zKa(lXm_MMYnxbvzU(A@FMoZQTU6~e~_(7EOFv|HM{62!;EAUJDv{CX?-ub?lFn!jrPn$+yqrB>Vh8WF~%zyc}M)Pn`bQNjET z^EXk8s-IiI*b6f#F=hVNi$%2a;w5@*_Mrd&YG_{!2EDV&e@4%b=sdqoEI`dl=I@xl zi<%wt@#pshgS>e!W&S>P_5T;-qIu|lMeY8;f@KM)M3#G9WCr>?%KAfGe}wCgaj{p| zSlj30)^lPOY^UQ|8wSFn|~uvOqpNC{oew6z4rePq~+|(7W^G*^7pv@ z0rElD$S@A<*W3i23~Lx+0x+_5{sNwvE`{E5m>2iy z7Y&3N)PwYxUrFORiz|n^v?HnV7UTW2>`^=q;VK~Q5_&4b-oo=R#u0nx}JEDDQ3f9Z()(Suf58msKii$rfILYZFTC()r0&?(eW^ zfm5|1wc1^xe+O{XCoM56rC1vBAxL(xh`*RAG~BUNlpv$D6*`27iUziL5D*|mNvF_T zr?7}UcBXWuwFC*TmJ&rZ*cNuoVs&`*=w?qKv-#-JZG47U2Den~;K3KqAZoI7(5k{_ zqU!KXb*bHAI%tDoR1vLq?BkO@9Ql=;8s7A2zJ+Yfni z2;3s4DnYOX`WoqJXe8DCei&Yeje|1I)lvy*(owx_TSQ>q$ECoaJDoP%V%Y-}mJh?F ziGB&~2Jsu}jV7b8KY(sfjvl2mFkr2=^mZ1l+1gyqGNWMYX%F*2(|S1CmXbv4-JqxN zF|}P{R>}B0FDs{DDU27b=m%7df)+isR0Gtt2G$!YP~qN-!D68W=wl9S*s()R18u9` z?r^D22=;16s*O(3jvOEu0*FH6#~dF5Tz0Dz@rH1tCK1dQhZHyzuBSKt{$t< zuaLNRh=6a(7u$&<-QgY?la2Fild2_TrnwQd0oZ#PL4rGj{(=9pmTh`S<&C>2QYouA z6wRd6Rj|iAnyrv5I&Ih%P}Noyf)=UnZTW%gIc(Ui9B()3m__tHARXzPoJSlDAfoX! z+{dJ{H)Jr?Gw_rLq|0i;PTQK>c~lR+iptnicwmJ<)Do|P1BzC&k$%moCtAY+gU|2oxPE)OVjDLmGtDhnGo1aOx-NC*&O{;6hD2(P#3Q==VACatj!9SA&v*pr_n;A z^{=<)D|Ey-pv(~I(O81S*oUNWgn7VV=nlo3qk3X+UhQ*>Ak3HbITEMvC&}qhJa6}W z_|-lrjwZp505YYm;t;}!xYgfZ+`rBZ+Wt`IT*QqSEH?4@An*nS#}=<)I%reZjb|C zupbq>4gk5v^r(2Zs05g%CXkz0UtbK5n7Na^R*&Kgb4s-wwhZ! zYfG{k(K-c%Q%LT)SH?l=jF<1;rU^w1raACJC@V>CDG zjYoAya^jA7aTPVvT$p3~o>%Qf`J{)JZXt|BZkA63oV}VWwKWJ}jycZzuOpxR4F<0; zxWE9u)}dQs08i^Ndjo^d^2J8pUBO@zgBs%&7>E(=m5jTJ!PN{pd{N@vH4M)1aWn6( zWk6d(`*jH1k)FXXO|h@%ds$a*#oa6}`P+o>8eG)oic;q-(6n?ni4H2$-6VEt39(fx z>J2oq>70fR*cSqq?bsi(ou*+x?jxfnszPfw0eDNLKtL2ODz!$Hk4c@}Y zdN{<>b^Nf-kwlJCw;S_Dr;d3Lg@XRq+Zt?!E*}6A-@7&P3zCGgmukSdqX!)`}fMa z_QsVfBz9B#%IOP)m@!*tDmgcz?XbeLOb^6k*g-xzYdnw)Xb+ zWH+r-uW#>IxCxL>!(J*Yn-FfEXL+|sc&oJRHj{0>oi=$B`Kj{A0}ns+7<>R%_8dO= z@S&;c@~{_i@W9l*Y3wjp@oq|-Cis&xYcq9=(7Fiyl47G-VYuX-Cni5CUiad~7xWj6};gR0)iq@A#2=cJN zp)&p0^vu3P)3BEj+YzuFZt4guNKV+li8kA`19XS5d1_wk(%n^+COjMm^#w^LNm0au z#u#n_Gn67D!z_ZdBt)znCK&~!O{_lo;cC|6OuCi24dzmPhpb z$PQgkOxR*@g?N1TXq9K<+H1?lF+$oT1ht>+&Yt!(5l7`c)LLAPpU^o@r zr4jG{CyE!0rwt?djV$c{xdlz7gHuUKl{9FGh1Bwt#XaBW4YduOThX)M$fwlKAAS)V z(^F%*#C+PoR*o#Ts%r-#qaN$y`=t@18gzjF$9sR`p`DgEp^1GAYH5(4_{Sie{y07H zB&Rwfck5M}l0&@l<#_4k_&u-_kva2jcI$vWk@OXS6|h~Y(0D*BM6lf?R5SI`pAA_v zBn*tlZo>nqv_+J-B)5~}3c#|Z1tgBgtb z7q*tR9P1MW^dU^?;+=xmAHrf~;kZaX*=Oa%_LCEMiTTx5GiB?9eIjU)vQY}P32vO? zQfaSJIQgUxU0JCMUKivO5rE^BZ&UIT%`XY?1z1>~k9Rf_h>%?f{nFNM%1n)(6z=Dj z#QJPN-`l^1qLK-1H-+@212w!5G<+bgreF~8a4K8U3>^*T}?_HPo`9$d}}0(Lg6o!}w}=CRzs z1wLgVX%~re?UcP4PicEC-h&XdGcdTtSX;>2SF0Qd;iVgC@+(6o_U)WARto20E5mSX z3`0*dc`|0-=9kSh@V_2PljtT^iYE3KKap6*-sR6hre1QZkpti`Wg{I)xJo z^7bNpZ`bJ29=lrjHN^`}yV>cP-BWvaAK44THyYKs>n~<7=H?X>L0O)glrS%oxExDB zCgsfHaqI|8OEO26J-xX2MpS{>I+^!E_>Qly>D02 z^g;DiOpa;;HhYS9b|qDv)D<_R;$#r%zg<^mU^{*n^|+Ot#F1FUzM)Pqa6`M^x%~*c z8y-TUK9c2|$?umoEyUi3MJ~o6W<;!cifuS!=jslAb-1@Fj(z@dZ=XL$Hg@`N3h(rn z879&BYtAq{tOH#~4I{UNK|LdCNr?s%5cb@1Nt;(zp2n^xEr_opg+e+`@mrf#xE{p{ zwg(@n)*u&&x`PKJj00vSS;{`%?kqvd7tUWgE&?I>j8{o5FM^gqY3>5a&Q#~d!*GEQ zp%ra+QB9~ZvG?K(TqBBWP_5~MjH?A0VAq52>kkqyw*cO5&aa3!FVKX$XDre!L0h=t zJK5Kq&a=5Z*u!jm^EUz}$V=3Rwtg4i;&m}hN6DcL?9Q>i?ld~<_dpLtb($50KUfAM z)TBWZYkrnlrS|(-doDi6kZ!)v8S}aPjSC!5#o^vmJnzYX-Dq zakpuf6yu|ZAwNg;3Y(^;%m9D-t*<4u-dKJ=asnTZ$i_=CMh|e^m%`#S7zH1C2XoUn zW{DfJwNdoR0bM;RUU@__; z>o9A?JKGMQYI>6dMxr<=WhV=9FGY#+RdwBL^OsKU{E>1s~9|07|Y)!J-N;Y@kDr}Y6MSF}?) zF$3XzqqAC~Mi8B!-VmV+n6lr-Y7d|j_D`Z^$Nai`hayZyoZm$nKv*KZVnDCM4dF@j zhM12cKulm}{8WcT(Q^%Xs<^TYpX=&g_38dQTO*|g=5gGfx zje5!YMfIXSLu6PF0OgpjhuYgei#&5gI@0X|*7scZ`DckthTsm={Tx5Qz^9o2u)u}* zwg;CuRs}o&5$*tnj}bc95H_Xyek6VfZoo>4CJL`l1&k($Z47;_#24Dg^CP&kP|dj{ znDpaR@+ko<6i(J!OQK|fF2aYzed1)dj(HLm7u6HUzKzC7o{Ra(^|1x^;yxzh7S=_4*pXHqd zChwT&sRX*3V`4lPOss*6x5&^TiZJOOT%n_bgnw0og6cbdyErD3YGR8lg&78Su}{RSRJVY!EJ1}=qeCr_ zc(2mX%c1%ua|wun)s%g(=6{KAlkS&e^@<@?hxcDk;V4qkyX!df|~j#ca{Ph#cd_APZXPpwzqXOq&g?^QH1D@t3|UX zIIm3YKD2LoAU0Bv{B3ML8Pj~0GS^@crIyjkwz3ZjK7pmclV~YZ4iIxOYZ{z#WCi;U zPe$V%2NuFZvHzq54)z3-u+)HEB~IbmekZLh1L8EW?`7uMO_o)*(}J~8hmH9Y7jcn) za-!GEDJd7s=nV0ILOffXOAeZe+i1>rc?hvK6YvqhH85qEo6}uv4pr;Az&Ju|>7w_Q`BgL7R3ukGxvM81ytvP>8vRjtunnZd}zV8`bdB(0N z)joyQYpKU1YD%{8mNPZ8Zs9D*{pBGXfVv0gy;5B^!*gUIT0R3u7CSi#GFZ!ssQCz= z;Fk_B19hIkAVfwS zIT>P-6`fiTwG4qKiW>32hNrY?yg*55qO*xq%d;-=28_1ZQDQ21Qd~m8c8kFxgQpnS z3`jvl5{g7k-bLdk#ntAP$cS1N)y1k(_% zJ-D1nz<`J&bCmezQg?8;hgia3JwqIqC)6luZ)(F=otfaXiKPTC1M=%TI@xx5C37yO zoDaa2#1>GSY&+M^&n3>h-lI9qO>ieM1h@F>mlK^Fb96!L{5&`&-Ouxom*=UwPRZJJ zp|CP+(n=u-Ek31hW;eM~gzbgd9_eD=pDb&bhBOjhIVH`>Zc5UeL>lZ}!BB`Vo-sK* zjKyUWv{JPbX>pj3s3g$drq_1T*_i!7&`;HRfdZVw__LN+sp>U=#)DU*kKjl+u?45S zl6|H_2H3IkWNG2tt2p99BzF{D}MHi@|Ze z5^M^j?O#Ehy9&z#e=vxZty|m;eOv9=Qd`k9`*{@LW)4pag@crRdS)-KBl~tAnhuT9 zoB0{q6hN0p8W>phlt(yeL&U8Zu9j^dV%kqJ(X1Z`StREFIq~>j+>B@8Mb;pT0XzmN z9K|Vtz-oBUGjONwjYPp16?H8``qeXVP9TpkK(1E;<)0i&D#}0J`8+eeB5E0*y%!dZ z2xu(B=M$$>@tKQ`7pcR^Kouxm4KgoNnn#dBo!u`Eqv}y|ZIzS3ABSncHY|qP^gw{4 zL$swiO@DhWyUD2eed!4|K1d)6Z4gp10FuL)4wM8jLvO2*L66KBMQYI7RQy2@4pz)og3%FspD2&9oB*`gJ8`UH=qUfhtSlHcLMOF`ogP%`T#-gp{_s6_m6|1!UQ%( zg`bJ69{&h!k}VI~gAkl?x3aDuM#4T=V-~ViW}bYBM zR_W1}T{j=!@#N8yLy=@=r_42#!5abUQwH|a$dPGN)!$P4iO zM}bZn-+^QL_>vw9^PRwjUBD?NU@t<>=^J-=Ierzz1PXwE zM55g!IP_*rPJE~69kYFA5t&5(sgAbe0a8$lL7^g>y7={K>4YV_n7~uC>fuFbKfO_P z*(xr^BRdv$>uRcPX?PWE5`;9Tv{Rgac_;KpDU;LUBTI_v*)S8`fI@84^4@+|q0>Cj zN52K=RLPgx+QZVsbNc|9sT8JOUa~B|1ODwsvIsh5=vQD2ic@zg-q>%zyDPX#rwyHl zZTg>PJH9CrARyX05gqj`jej1UP~$iH=~o}Z(wBQYv0xwWhsJ24_jH7~{VN=_`t+XY z$m`{7`S#5mx}^7`YXUY#nr2^*SbGIQ-z@9TWSjApmUkyoPWAz)B-H6WoY`QDCu&{s z1D@xVBfv5gHaAQ%f6Yr@J$ZKI)KCX2OS zWIaC4;1dk!vD!X@5BLa7#HCKox2L!c50pmLV~zMSOzgU8F0ir6;)x^>a=wt(rf11& z8=bsY+lEv@D)~iGkm_n)vcq)p9*_2-meQ}3LQw>bbP_Z9USqdTuPRs-B6#UfNmg~ZqYG&{beydpn!i`P=ulrb?0qJlMQp)x(IVR%vrd94KqfV zTMHVX=?vsSivz8=hP$ts;JEcpAy~y z$j|dQlxSYaSP0nt+!QyY3?PSG`<<*gwPUq`812Lg ztlBkzAp9X=!nyED?f53(dP~$p zp$`un;sX^)T!~{i)4?gsfgyYX>jT%kp|WsdL|UPoh(CS2bMwJA8Jq4*wRXY&9^7LE zrp}1zMaI7XHk~IjQn{WiayJRBe1VW_efUG58WbH_>!V~}=qB?whbUM1op(ocZpf~| zR5}HMrJ!zx8g-cf8eGl*os2g=u?{6D1_?CW;mFRSUnCI7ilsAwJ#ZuijsUE+>lf$U z>`w~NtK%4*q#m*|W)7ctXmcu0{({wE)8s~BABi8W+LVin+!37*B!;gExXy=vcD*b; zf~_VjZ!_2!t4;0YX8DjR3Y&oWJs=>?sPs$qO*CZJ!Zs<8YtEp8GKfX4h~+A#EeGZ* zCAcYqpk)rVRj!0WW7aR4R$n+t!hfcV73cWTqp9*<$DvBTskotgC zMYG_O8PMIV->n-fJ24x0N;DgC*$x)&BA*Bhmf113tpF_-mwbKmF z(Q~zV&l*JyM@Q2}p{;Zv9I0V2jSnc6N0n-KPt2uZgO3XafEGgF5USW=bT+sVc=my7 zdT~55TVE2VAA$uQ0MVOPeQujTNxEK#vP6k3J@+1Og zzX@KMVbr8B1^tJG6$Dx65S}fJRsJcs0U%_R2W)``312X0gbcm4yX9jRu>s2!yPrh% z(|H9I^2T7BXD|VA4X7gZ%OR|E648{NAA%9* z)eI)~uw!6m?fBR;ZePN5zevfb1#hw5T#wFlB4Z#x;z7L9_mgC56$I~lrYCn4*reSa zW1l`~+pqbI(-oR=@-^YTN##5!b!HHGChsr8KT(?QNevg%T+F>d!?Hwm36;SF80M5gC>r`z_UAstnvcopca8=CJ`ITfDP3xn4X zY93__%`>4kQnCOd3ep?&7zu?o!w9*S1B#G)SGeay{ha7X4k*f{;XbWNrUVd0!M@nq z$3%}3>ExbWivDJFZGAaN9O?!xuyyZTf1wxtNCo)xdvuZ$N?)9V>#Kpx(yK(c3&Fy9VjJ>RbgTwhbwO;Ur5lV zB$PJS9$G1wsc!sZhME32tXSR^@1)zqVu^zDUYn!ISi5)zT50}E+Dtczv{{uFb}%Cl zeJ-0@Snl&FLbkyAm39JtX5Yc4)w#SPsaTcC(HR<^#s`QBQm_e z*m>gx6AbVG&*9U}j!vtCTjAPI?>7rGWx{fJr!?q+CgTI@M7YZ$AE-K9I0_k-irz5f$XkGdADGMD*WBPMdikokPp` zL5^wI^6|9t5Wn`CN2v!NJtuo5_tu`Ht8ZWh&<%^1kQLk&RbmAArH6fVwBsXUhb#iP z-JaV=M_17w;2xaFa!!8Jqxk@4Uy|R)H4eaH7@rJdhj*$kKn*TR3(r)K!}p^P4Uv^i z$zfh#NyIG=UG;QUJuEItSzDE<)YX-vM(PJGUII=@OBUnIt`r5Ja((ie(}B<-dy7^#A6 zM3#FPm(sBX_d&vi#n*!gUsV(I`j1%u#A4NSbKv)}39)H8_D>OzKaIerwWPTee-OHa zhR|A4+4t2T)HfDs$qWHM27+rQf{KM9Ja!`S?6N8Rb?A@L+_rR1kG@k3x=W`g?X|$8M`{pI^FqAAq1x zMdPt|v`%mkj({&jqGmw2RF6_1p>abJ5uY)!&n?x}+&;HtgUaEoNMUJYsp{tddGTlz zvB@8ep^>r;3te!R5FC+KK2&YeeKPhVf=CP7Y1-9Ol!70FD;j*IiW4}&pF^>)E5!k& zTNSGQYo@Re0;>_OnkuDoHbR|r3j$j5+Ib>PK|N0D@`xm9(oyX*H~R6*T?~-4dk$2C zcJ*jR2Y&+NYQWOvA;c;qfFK*Q2ki+lzo@dY{xsXiqa54Oqg=&u%Y(<~@z)=(13qz} zN!f)}+MM4UGRdP+1!x^{u@_SZE@kADBMH2TgEI&6QV68W*hc&nHlIZjt%KpZKH_XTE@Z^-9;D(DvV$n~gvPSbD8 zEPHfY8Mujot2=~Z?W+2kn*|QYZ4XU%3%XFL)LkU*_u%{4^?4!RJe7!qn_3}d)~z%{ zIG;X)yRRfKd#u&J-!?cj^W)?Sg zu`vZP8xdoG1n2GTWW=Ef=C&0a{QN?4xd5$j0VZcMSydd`mgjMS`#l+130zQwdg>k@YS|@=J`z~ZfB2){utdMI}%S!Od;F|qXFG)`c zZc#B)=Ei%Ug9-)<$GWCfA@8iB368EAB}y6*C0ArmQFgS%1;{LU##*1p{0H<4#g1Wb znO;n8#@4dBHP`0vtcWUjhY75XU$l9%4VRMb9v8iX$s$FPP(wqfC=6nV6F%&{@xRW2 zD<6VgpZ*ZU=Cwu0-!JQ1;;1gP=%z|33O23Bl7!L{uhIl17vJ8zqX7|xqvwM8ux95k z>c1acwS8h~@wI=!cd2(dt?(0jVuIJy7(X}Wq)R&1^;#SDtm|W50HA@hiU#KqpX>Hq zL=0v^=r%#}?uhOS&-E$N1VoFeLDO$1eY=gp9SD35TXlo|dcFwqkkHu^ z48#kdEE|SqTZ?DZ^y1(+c$p(U$81uaAnzbTsy(x6HJ)2kUxlk#Hqvxg`H=Rba z;fcW=A@s@wfsz;!f2;@MO6M-JnUsAsWFP5svM;fl(7O{e3)wRV;xLSe$2wQY9!A)O zV_lK!!pF{|n0v5m5&M7Mo`ggvvw{_XNMA51d@T0yQN5C_NHv^Q37o^Pw{@);m<Oz21TN`agvsS0a~P*?8_y-4OFoyL=&eQhZ4DrrB<;AxPC~?Tl zzW_T^=0q7oV8W1w{}Ll5pyt?x2R7?FFfL(+xiEY#{+`rxDV!xWgwu}zp}pMAfM2j$ z#cCGd+tX?stHJX*HDLwvs zvsV4JmSPM0GhdViJB;=NKt8*rIIA$07$uIcR;N|c^KA#?NC>P_1`abHfvIml9Sr7N|Fp-5ZEFPNkV&tT-IDi!R zlt)2K?6)v@jKLQe&|U0QpV<)CS*vk5>k&LJN?5uIcpj51{xKlwXxjb=UZU6?__42M za1$fqQZP>|uV9r7G*$F(mI=ratzi8^0|3KnuAbNegbBk`^5;`yZVKE&3D>uiH2 zn z!a1YJwe~kUH(g$ngF;ZJU?w5M2zc`+(uIU4J|o+zrR{P$UeK%d<}E18$qh8s!v%55dLs!b`54`C8d-3~ z5U=1JoJU4*VbG#o_d!De93vC#>fb`BU5O9_1DFFy2iCuc8VwxT>o z#y7-Uz&lU>toa)mHuj%OTM_syHOruUg=2mXF6RaWzU6!hVrr-vmEAlfAxSN2PgANv zCms{2r5{Fddm-j6QT~PrM7E=OOY4$av6I82iO40VRAqtFw=|!@;NirmNSc@xiC|Y6 z9WlJv++%ni0HJ@uzsCa*wydyp%D<&pwjnyXZ3c{cN>(gxUsZ(*^(2%%h4_8cQ3hr2sd{(Hm2g(FZ-U`(H$>wkzqVN z9_wsI<;9X)=L_apKLh0;;>h8*kjefzdUVvpu&N|bL%0MdZo>^MCxl1=3sMRTNSNS8FHJEm&YkDU^VsHt zb$t4T97q*?r(~-?4bUE5YA@oGxJ-u0D^-deQ_ADz~Zw3ksoBmn6I1Dg@sRECYHM6$92IQPLYeCaZ)$Z-H{jQU@+o zqUApEM6-urYTA2gk@RjYN+1dKgwop6Wu$y%lf(*pe?BDtZMl8F>%8w^z=`dO7AQt% z3vUH<2`Z7mFc2!S9ydZIG>3OK-bW|I8o{FxnTlGw_Kw`Y!f1XVAP#F|ovS?J0LTp> z4Ety7x8mE_mgJAx5O;bSuav&$3Eq)4BYXXM(u^-Mo1RYs#w{p?936}&s;4Td&w8rr zCJ=oGi45C5zM6Wf-v9hpIzyrAgIDbNkns7UkCK`OY_(XI(7%RK?Mdx7utG&oR|vTh z9KqX?PhS5$Ui$=#!kdk_NC1UkaqmHQ#7VbfXJd2mp$!;m=sGvEruT)wqdkvfe zrIk+0z5)({aI7?hG0G7TnhTod^+nmJ^q8a;?7lYMYQUv+mS!DkVd)`j%lKf>L5fbI812)Mi9+7oVURlzm$+h39BJ!8t;xT zaOdqR_nm0jx|@yn^C@L!vT`_Rs=LKOgpDUI<0Qe z{%Cu|%&d%>SsZE|>y9h3y|U^YCUG+lbBd34$5+P8A(XOO?Wye+>>oodSey0j!onIH z$%I;iuoqrPpf>5{4LE*k16OiSoo`YcG`^DWj%$X%H>=>z+yM@if3wffVz~M^Q0gJN zbMPp=9;25epS~c-+l7lGbgTBf1I5~5rG92^Im-l_bFJ?2(y5_vT#hfH*`pAf5HD=61d1` z`zI?R^uLQ-?lQjn?=*jVc0|4q@-nKT9X)wEOFH3-YJeZ5$qhM7HO&d<=RuR?g2F_7 z$aA!(y+lzOLKM6t*RqER)VEl?svkZN5w`NL8EF)4f1)4oPm~;B`J=Vj!2#vmgX&p< zDcproSQvRrA#qr5~d6wpVwxSrn&Cs1>2|vn>(~ zu%%oZ$Sm(U64g+{j3Ao`}e>Qfc*(Lkbv6| zo+7Y~`8;?CpRvHbY`pf?hxV6Hj)-Bgf#P$xKd7f>sASRGMN0j5&6Ej8_d^cRutQ8K4p+$3KIJ6IgiBho%f z{P16-RIrC(O@B3;gXxvTuJzxgznaYRP#@aTj%sg&Nx4g3NTxPYtB%8dMw4FY`3rd* z{8LO7f7iHi^B)ARI%L^tTd2=O4jwz8O(LvK7}JOe7LI#7QCqCQ%aP+2)K2kA)tRl; z+@caa&(`eOrFs>%$*?}c7WihhDT;YygdL&Em|SpLP5UbZNzRhc!dmYKzLsNG|Y->287QPVu0N;iE^a!=eeiqem_U5KJ4Mr~|&ddL*|!E}A)ggwcCI z;rkpoH-owu8Z=y4g%H8X-I1=`Ek=l9B_-laOoFsubadgI26?_n zQ!o@mL}6vr6&GQz_6KnfswgUhe8|I5;AMvCa+|m!1bI3@LmDl!5k`*fFM6_Z24E%Axtj zPGX|;rWq*gIE7AR+%=1}#mNdb@|!Jtk~UbAOlx1jTQ^5*86K!!4Qa$aLlXK$d>>}X zB7c2_5dp=0^*XDI8Sg40_s`xy*NbwFyur&U>K=y{R6DZQuyg+sc6dO)i=yi)nVB^TM z#3CglI8qQIULFg24OIX?64VYu<(Q;#H*dvc0a*HJ*^;2bVK25Mdh32z-MS zFdT!>IQfDB8{*gsq$xCSIhTOg7~A(?v-=Z(^TUhi4N_Wv<1BE#TAIhnVm!ZM4m+GL zDJBTaN(OD@EQy^+kS0oI6{whxAd3u56-DM*xjG?Rza&*fGVNlJo9Hmr<7}0I{!seI z*Xe!_ZKu69MhJJ0J0=+QVu=%}ALZu)o8El>gg3~lOpLK`;$v%fy{&dN>%-szo7kGu z+#>!7LVicM;s|xZ%Qqpr2N!RgYC}lENe;JBz^W+dsqF#wdGt3nTYZYdYYULi9SYS% zVeGddS{d{&@b0rn>aLEIrOfar@@lAlfvJe*DmxiX`}-O90}KNG|5JRN^#c=k?r@~s zuW(4NM|^sTDT(XRRzmdT?n16N(h{&nV$8bAM)cij5yjrgLsy_QE^r7cvU69kqTKMsk z-TM`VX7=whcNBH)42s>50X}gLUwW8ZOnBim%qzTZh#;xz4SR+~UE`H^KBET6FLKa) z7O`%Qas&~XxkKWUOP^bw>?rFD@%y#a6-$Exfh8ux^J_f@Lta8!)bJu z=-Gr%^ADs8(XD>9^Q#Jy0{%T@^B_LxK<5;qi+Np?6T11P9+btZ*4sbSPs(vXqZlSb zzU_}@wfgWr5iR}J=p=@L4^!tplL>CTu;~(R@r>-&^$eq>@?;pj6Z`yOK@9f$e*g!l z7ambj6DUu;g>{$IJX+5levrk7aO&b8fU68SPgIJ=Tmo*`u8CFYtCz3QG-N#*QfD3l z;i_BQ1^gt}jGp)qDuSn$z*>umCZ;;1!M1Ihj<=7C%^xsJ_TH&8!92J{dm$JW(!nVH zQ1x`Ju>{j>-#%6i8_tk~1G)BU&<)#4H_7US&aYI?Xlo-l*S6v!co zBOHof#9;HLNtp=!ac&P7w6^4t+_T822#!pXBZ|ND$Jch!owZ0)SnKUS@c7g8SBtsO zd6rc9K%%3^rTrtw;}-PEvH}dBH^m#7BQekenMD`0;*Qudn{fIi!c?k4`19p&5=L zuw_}jg)5wW03bIR$R;st;w8aDhpElH;1w@PRTO9D;Q=RRU5tLA-I~dZB^y+vtv>+4 z=}&@flEMQ=xUWHZ z<|2Xd#uDV){wLW2{;{#4`>Zkwfzv(_8%d8jNzTvYI_k%@>Hkg!t)>uAQ=;J@6OKd4i<~Wg8)c^ zOaosx?c;X;WJcV<;!F zd8`}l^w&+o@=YZ6^J@Po7cA3OheXE>cJUbK_DXv0xeJw zXqah*@E`q!dO(+`2XuLzzIwoi@w9CwQ(9SQ_r>=eZpv-)#rLbcmEI~5-~ZY&0{Z9c z1oY|L3!qmHLy|7I6}V8~!H2T?P=;0c%bk=EktNEi zKSRO%Pa=;0nMlp+*)D(g67%{tL-u@?tm3+s%0Gc^OAY&{z8jUTcNu*9Zip7hPz6G2 zxHr_MfuBo}8Ji8;_XTm{1fKNvoj6fvu7!`9Jbmh@ zUlnT+aLCoz7`WFZWCs2YE)T@L5X0zS3_D!uVHEd1!vkCB{stb{>I$qOt`)D-TcSi_ zWKv9iaQZ`LQqdTd&4D=durZ5-PB~7bVhmVC5{c7eymvrd)P3)p=-d=C!9qBYM6Rfp7;+~u_a_S$jSfyXWP5cUL zd7Td`LTOnyLL5c0IP#njYHV6-65tdf`sWgcJ%!M%k&Ig9dz!YDeYG`a31i=greU^n z*}9f+V7&yfv=L3y5|#pJBYcL~In=vEn>CBB8EuEs-hYkP19||DDS$qzGz3IQLOrUF zMJ`|(@Fc2t09qH?4lXFff zf*R@J1Ap+-QB&&^N?HqhHUDZMg&H7V7I*GVdZs{q!)Bmp#>6}Vr+LvrM&g|+{ZCw| zozJ$+wbGaz>G*8hTziSOG*zvL!uksRQQYg$A1!nix)xVL>Hy0$>VQIGP00jWU|;4x zQQt>6w!-t7Ri%WRC?$*c6;{J}U&KqEjzDXYj{NX`^Fu(_U<5qV4O3qQgf70g#s!K9 zWNia9Pg5uZBil~6qJsYAm*5-aOK_9rEUxt&Vwg)uT}uB_ng;XBy&v-94Hx0T zg@`KZTjAHY^+%}>C41O+)Dg~O^;+Rdd#CFi4Ihi-k5{iJmg-C8-iPnZNOIwPpCp}8 z3#oHp=QE~Z@J~G=KuSq_C8Bh&Yr{Dx2zbzBauijZHXD{UPdPjbz4_89>jUDN9A2Km zGkQe0i1(dE^bgR76Y~#E>xFrGy@Sa2K$Z5?Ec}#?KN=Jbl-W=RI}gvpw+v?Y9y!FO z%qbaqN34*D)vg+=J$H|bP8UVMct68y1c6DfV|?PjKp=K`XgU|_9+?c427KwuX6zC; zZQ?$E?Eum(ho$@eiyw!!8g8yI@8r86&iew*>4t1W!*TIERJ_-@>86{qbOlMrf`R+T zoa<(feBk)Ok>Nul`-k_9+;eF7-XRIXO$-C#+nRCAqKdu^x|ZHPa!CMAt z*h6~(-H$p)dzQ@whxNfQfT=pb#@Ddj-2^YQU7lNX07YXY)Hu7K%P}!HHyT-D^!N&M ze~I83fO0EV894#_Mb%_K-6T+Wn}ZA)l>O}4{8Zqggl{{#5{%oiWoHH~1#(Ij~FUL;i3gc6wDftO3i5Hk%PPZ?zjG!A8oP&~zFYt)_ z2(sBWk0{zz!um4OeJzDJ#i>X)?9X`Y`PP<7!A~Kj5oy?4reS&69!*$`{z@r@C0bkQ zNIRaG11>FsHl!cV;2vb(kE^Tg7GuR$t{n@;y?>x$=^rX*4RUf=(2K$!IfM)*LIW}E>Z`ygfP5RWi3B*1 zQMinVL(a{JN3eeuQhT*$<3vs7cjBp>5f83*6=dFE2Joc7?iMZfnZ3u~)WC-_N;}3w zw1j=~9}U2uV+E%|RyLIt!D^93Buh^2(niHBLqVE$a8=&Hdt74h@*$cG9FVeYnlTlG z)j}U{p%OLNtd_rIc`#I9@Mbog33usg;8)iUJ3_H%*#*Z!X4b|p z2S99t5k-s`2k{T+wNcV^9%m%xb43AXmBgo_C5R1NC`rVnx;Je;G884CWV=V|R`L;~3A@pVE^IgzK!kP`y63$M~!b&c?>(tr#@m=7-qFn@r!G*-AqOLER zdkU@+auh9nuh< zUO_w!7{(#oluIA7AuU+X4)VvKw@UazYhy}XmRKF*#duPh0+k~xi+=&xemxC1f8!4G z`A%jzV^}?Yl}kj)^{QV!PvUxw_>X_Qx`XAsYZ>DEpoD9JEXw!gRzub4fG~IU3}^<;X~ClLgxNr78%GyuIRvOZHOOwxFb})dmfF9oUwE}+JpRCxgE8m zR;!Z%#c@E{*4sEvqEP0IRFrk49jJ2i^fl2{nFPwT0(;<#D1 zBsdM%XUDN8yhCJ3u!!J0uI~FV;TKKy0haE^wRwaAGO+K|vTBz1c`8Py=x|;A(9aD@ z@O;cqXAydyDx}1j=&Br=q)>14-Hn3#6dDG|_6!L!w-$UWmDR~jh5xEed%{vx``PtZ z|FJqHW!3gLAIT2)r7%`@LZv1_a)%nvx5i~?Vg&ZW)@?C{173)$~ zDvv;70r_5lzlZhqp=O{d5fkpDeMNrQHM; zL}bMD@ViWnqnH80uw(Zo*u6CCe%xwMKsCq^bFMKiXN8&&w3{Ra?h0a5*#us!ua^#A zxrXJnhFSkjsNZUWGN!Vw0+kgs*177$;DqF=6@%06SFNbz#9Gp|_bN?^OHdW7W^ zqAwf>qAsZ1>^6syzz%`Eg@_AOCN0K<1(O48mGjXHX^B(-vs6Q}yRl&RaAV?^VO{lZ z!Fzpn?m4{K4R#A+1^FE1zA%XL6)wpTGodekdOHZ&f`LniBTS<`?>WXM{_lRv(R;BV%Ie{QeiD=R*@!M+If#P@-nSOu@JUFyKx2&T%c_Hn zYq;#lpo&m=$#(*C63nx#=6SAWF1oan!AaS3t>RlR%=1}GzknQuOof~p-kgo%1H#84 z>;u@uX4ls5WiJi`gx@*0B%Z{f#@GKs&$z5BhbSm81lX;@w-I}yJaf@SvPg6nwA}tlqNQi!PZKQx(EwTr$gnZ61mQ(Rkt%DJnkRu5d-R9|8EK+Q=RlkNZ1HY!WtelNc2GZvn?_8cCEM$CZ%7xjZOfLq1~2h)4=Sb>ajq zwBW|I()0zI+8YMjxh&caUpB={mpeVN*@HhnjDRq}j>i^<)& z>=ewHhI)#s=dPl)dt2_VV$*I8lj$rT#CLDw^QxYA zy^kIGDmouhnhcc-jY6r9foi z*=`9U3(hHm%GlRIWY<@pFFqpso*(gi;m7Y|mPBcV8}d^mg|Cmua#Wi?HRO5ex5i+asMV(0@%k-#{~JNFV$R0P`<**As0cmZGY(#_N2Qr8EWf1Hm6kQVo8 z3_ku7?pCe1XLW>%;csUkII5#In0wTsjo#!_fBU}QTl>`4_I%bheiL6{?cvT{ZaIb1 z1jh5!KOO`7YZ{6wXXmG(xIZ@S>Qn5`BtS@rkhUJgUkm=Qd%#g5HmlI|Bp!iY&eQN` zS3uyALR7qaTc-l=-VoZH=`2`Jb1REIZM!r{f$3s9{DQ+FR06-sO_m(|!BclBg})}( zDW%=UQZxRb!L^#*$`<~D=udfr`8h!)a|&29%ANp-qi;9jmaJk7-x zccr`PS+Hk<6bKu%)7kJegkPoZLTka9Y4cW}v)$G7GY%5vb0AT=OKb3St+xi(&w*@O zSIU;wd)YI8Tu>0SWI>E%(bpcY$Lo3s!A_yE+U51^ZtzyR$=e$+9^JfN*?<@TsGQ_Dim;l!Q2M9eT9I+lV~QM@>cQgxflqvjot>lPqey54`kxG zNKn$6Ub-N?P=V$ALJYhP=6hml$P;O{^9yMJGuinx95O;08YYrSrcIeOmf-n^Lc zz0SwP>-<*CW1`UN^_mT=t{kr$_nb$=%6rXo}6X)LRK(3o5)rr*BLiU_3@88P)%X+AH|>JJG~q!G>;=$!r86ct1=W zViD6cP$UD>^Ac#dIyymUMOM=;-wakt#%ZZfbYnsxgEllJ=?)naxP5>r8rO%J2qWwb z{5wF?5fTSbozgktp`5)NHOc;g?t~Go^qTrh5NDi{Fn)|=VvIk82O!huFUEm=Bg4l= z4(}gBPsR?69KC<<*KPE`w9es+g6U!}^94i9ek`#j=H!9Ar)LPn zm!;i0@dHqr9JU-(txkyp5Qypd4j59(Tu+>+qV32MU~$NwPr^*<(X1;TWQ|G_MCP>v z8X_F^OVm8d!cT=b?Z7*lm0;c#((_YLDZ^rtsaiNoQ9U?TBCFeX?3mA%*b3WcxAxMMME%<*foI z9f@(o;DUP5ym2{7pYkCpg|w(NliF*;U;di_9*!*pNJ(H@h85j022!DT6e!l&hI|`S zGZEc^13=A7@aDxRk7(%LF!CGoY+?#|dXXn4c`QE<5gS|I20a>>7m6?ox~6&$;>J-l zqF^OYWF$!^#53UQUJT4_8ubymFCr4ukwVls=JPG+XPWd0xfaS3&(nHJuH^uC6X23k z-v`$Bd?%nH7LJN!aTE4-I%UCnI%YP=g)C=GD14bwZau@3&wP^qzPzVMZLHZ{*`i>q z{SQwth}tg1>6~?oZCr=_!W7sArM}$k^!S~{)s%w386A}RMD(%?VUw}>kS%s+ac$j0 z-tUK=^}^Z7sXH%6?(EByV@Bc3na+;|?2`w83zwV7WWjNSs;Q6`KRGE0{Q*9VYnc2Y zHc~n2PS0tg%0@rv7x>U(cj3xPx=2LZ?~v%_Anvo#F^b7z8BLDop&dtthn_)UJ;xfN zxC!yy2bpe^H-`BbbhWAo2I*e@p-IC6ih(a=0w#hX0k!9-x&{`d0v z&gk>sc=r!}9Vu7r!+eS3ZC~_;1}cI{2_F=+c!`1vpYC{dkFd`!^>Q3~2wnu2r{)vD zwMbo$;WwWFK-34|M2k=?a@DhRXc8?B2=m()REus~L^*poVi@0sj4E!q(OXxQfhs6# z{ck7*mHh&k%qR09I|n!A4cQIa;N?#OxQK4SC`h18Xh8?6$c5UJSk!?s0uHGbqah9n zmtnfsg?cgY*O(UtOd^_B1H>P^lf0OOzxe8>jTb4YOce+22d@`j7+9|c{W5l+{&r>b z<4kX{#pMT#X++&7#Tkm?PiBY$X3mgAFmn(q9&hplW(m$VFl%U44VNR65C?w*8L4oI zgHiuHhST_T1_r;(@F&gLh7;yK4nB!Y<13_i`;8`moa`~OmBU~wVLh@0YStOwfEFaT z;4gn0fQZREYAr~x>hM0#DvYW^@D@67&t+8|rwlPppM5m2!`E;&IS`C2RdQ@fD_2&hMi9oQD~)u;cR3l z#{BrZmF4(X7?w|Sg4sq_L!Amr%|>5|kR$Sqnm+OaqklyC!0tvuKCo`{fw_olgii_m zl}}65FFbr==PVHY5jO_%)ILvQK7KLoe{2kjmMo@sb3{bHVcLc8ujr@EW9qQD}=uqkm>XgChC z>69Y_Mb)p1(d=VcNSI2sT`!6j1{_V^=1J=+n*`%(GPLp`_mPK_292X$MPw;ti&6U%^rfCMg+#Fu}AMrE> zSDgNjVhb_*>)0bz=|_z?%^n9@I|tVY6=@!P*FqYuryns6wq(QY8SSXE(jfVg*HfIm zd)U}NA~-}KZLebLNj^Qm&Glto?jtzLdtz!rR&&`Z&Q6~MV#H-}%b=V`h$$`x8v1vb z|MM(9&q9Lg63y1cnDs0HF<*U}fGD=Xr|FTm9K#}kyjtX$Db_h?1Fh3bisd^kx!^sA3U?vXmD*UNG1Eyzoogw?n73`% zm_}1bgUCWip}=m{kW{oxwcfI>wWiE{l3je_Pp0 zoj(o$0zVW((@il%(RK-rE^BluA=iN@8cJm%Ct0dfxuIH8;)|kh2Wno&Fs9ahXbA$M zMdHuk_eRRtKMvQpS^#|y$4+s>DH;|}?gg@p=#heyb}yyhiL$}0X}JtOZxjsDfU zyyka#&HRSUzjt}floS2fyygiWkM$Y|&-3=Z1fqf9J9ZTfgd3wq&#}xw0wEy;7>0nT zGUKp*iNr()P6KOoaK^~Vb2*a`ZG=ofkp~6zUjx4Yc}7}IQ=7>TuWG`q>SuW8zZ3ix z!5;(kspG@K2+&`bD?{a>ctc-FpTLjK5u7AAO+cR+<+yKAuHk+GTF<;MDC-Z=5w;pOuLWnTUq!9U|AmxVEyy@#n6c<%yJA0z1FHTo_tZC<>fdpE5PL?7ctS}yl2tR8WaIHsCf0~ zapQD=B+7^M6$M2^prk-0)nz-b-m(+wO_fw{*p7N#HL4%Li}`D+Nxf>P)hl+h`o5h} z-?LlPcU7zUj%ri?N42YOs}<^R?GE*_>QtA27k^8wRDa{FQs1;!t8dud>g#Ha`dWIe z`f7TedMTZCz5>gpXnVv;bVZZ}l-B|}%HL=v(rTr;;I28AO1H*R$y97rEM=vw?#5JO zx200ZlLB&@z~2V^HR2D~R)2Ry!5G3y;5nZ0Hb$9@aq zsjG^pc1-;cUSBR_6yH(_=gp4w9gS)QdXrG=?F!nC@~U~sHQGRJ(hi~%UsbnRS5O<# zWvSf;=hCjK-9hbYk7?iU#p~<^5q{>Yo&`Ic1?LB9H~2hg2iEoS9%`ds`VE`!fL8b( z^`)KH)%_OVkv+N`yss1X$a$-E1!mWv^X9o4~2n79l26ZY~ozAOjFW&Em z?1}AS)J^T2*;xj4$U9{RWYUb!f?Vs1oTnHzRzSYB8-PF56M8Ez80> zVJ@!L^jm7gJT-OLcpB7U)^hqytH)&T{kepH@FbiJ5l!#_2{5FvUNEopZh`>W%_InXca97CBtLcW&1+-R21wJ8{ zeRyIEJpE51Xua5F_$ns8QUvSAnLaTKQ!U>Hw9YI5+{s<&r1Z|$?=hY8Tac~*`4CLt zH@JO&nqUzCywcxcx^^osC&$=pR+xa0MmXcGN&PR76A_EepwhJ%?I4RCjKgvC$i6K6 zfYG>b0{-5&O@HW841+uQXMf6nukATdj1CTLhsyrhlXMVWxWtp?643?7j^dDvz)`Xb zC3bl{g|v7R@3ThZ5@X}cxc)Zs!fgYhq|fEcYT7L}9RzP~VQcn*1wHGoFD4$_lH0N? zyQ5Ux{J<3Tbr|Lg>JkutQ@#O{-5h)-(-8tjcKGhSd-|+mdU)btxSP?Zvv;2bpRd?* zcp(qxv6IlD$Y;x zP)5rMdHWzr#;6Sr?!yxrZ6Jv)>|A1+~h8!pkE$R#rHE;Rw@ ze~0Rd&W^!sfA$WOO{B=eQI>(ZgcBC1g|w-C|h)h zt2q?q7=r}m4H9E;9p1HZ7t>=9R|@6~rYM-IpgMwt2{tM?@JeP8%vbOoK?B$Do?yA_ zkQ!ZG$NPo-1$0-a?60%PQBF~>0h4PS;BH{?jRczjM%PpqH@!14$5bitDvvDcu!DY!Gw3?l8#as^jZ(`*}GQr&hUuPTpm=ZqgJxuKfpvnjI0$qJCFDk5lY^|94gUoh_ z;68#ES;>2uI!y2a!Tkio1aMUb`7cuy@=CDvqr5lBr?(I&0&(mlJE5TB7nnsb^D(AA z4uIVcsv}@)kB#Zu@OGn3^!s#ZcvYBTf zih^hRj~?}(>5sD~+c|PBQ_}=f0@#Upf?p*N^57dxeTv|2X88@KK27l31fL`LLxL|5 z{11ZvO>myz`vgBE-~p)bBIsqiPasu}iJw9ZM|VE?)yUKwvo|r-LhuYPx%KN4Ons6- zh=`By-b=i!oF0;Laj%@%ZJfNYNf__|It_;VOh^|@bmUb1zddqKB-QGuj!3(rRzGtv zpUGK!WyK>L$S2A&x%tRVK ztnAi^f>%Y@F-L8ciKeYIu>SP=^osPB^tO%b(;e0dmOz=eTjL}cGKox^6HPnm7*Un$ z|8G6uq-Ymq5Fa1nid<{!ZR@SpW<2B5sDk?=AY5+(83T4lo;6S`@X`4T4*4tAmBcmc G+y57CXX}#y diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc deleted file mode 100644 index ac9349a67783fe9c863302cf3c41d3741f76482b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1757 zcmaJ?&2HQ_5GE1ie{CfmmnyL1dfrkMclv+ic}Xu7U^AW^s}X; zG&Z(Ci}*q8V_u2Zp4><1A?=K`UawK31UTSuhU9$T%t+;6;1L+dboapN5%MQ0tHT84 zG0f^U2tfqRNKPY~vxre5m@qOUHzTuMn^`ZnB8w8q)LpRkGCOx7CwC(^_aZOvM}113 z5n&1Yma;B4Ob=fD{BoObJ>TB?;k%t@XB6#J``ASQ5z5hbSRik7si#jm1y;T-fnMu92SajD_dTm!0LaKN_ldleEQv030E2}1} z6MTGi*q}Uy*@BiNqJl(B(8v&*!VsqDNmKSdZGjwE!V&IqFS1DG<;gCFdudUB zIV=}xfitflygYuF=1sl`6I@oJ2r$g<)zR>&Jcxne3ilp9=pBhJJgmYhQSmG-#`kBXs6rt4ZJ4F|A=KKWEWRFn^&qU$THc?< z$(wjAt8kXiLJn@CRG~_fNtm2xax^>C4(Dl+)|}&$6}FH?J$kgU%<<^lLECr`Dpq05 zX}jaOQVwVeJM$6^coQ@!Nnln_LHt4HWD0HB5aq*){zRY=fsQ#lVYPv_Ih&gA*(v?a znA4LU`pk_}whdm-7rqMl46K&7mM`r$GZEL4cL_1_w9qbOe4#^vu$2N+U5A6}CW>1i z^dOm}nc(LT5PQqHx`Ebp&XFj-z{@$FsSqOj-7|c;$v&Y+pRF=<*hNb{}wsb*$|L3oZRC_}lWwuR;sGz3!^GwDU~| U^IQBqR7m4G@tIFeD5g#0UwEseEdT%j diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc deleted file mode 100644 index 2d84223a10573e28ea8f3f06982dcfc28fa41cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6489 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc deleted file mode 100644 index 68f1ab228f498b89a6092166bee6fa39398d44be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8162 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 NOAXqh=D*Fx{{h~v2L=ED diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc deleted file mode 100644 index f3a06c91eceea21f0b9393d5cffab0f47255abd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1530 zcmb7^&u$Yj5XN`2NwfLaq%8;)RAi1lGz;Rw0ijl?;zEPe+;TC_+HFiW>#gmCCP(Na z@DhEcTzQ1vI5FcTp-7MwTiKeQ?eyDkJhQ6Rs(bL<_~#d2N}l%};r>$wIEG=q!Sv4K z9`|ox2=8k!@PSJ_01h0NfXloBToFF(2f$mr3S1Q>;4*N?Yrr+PUjeT325`gi7I2fd zfLo5Mz}vhH+;$uSclZwQj^i5N?R$rNF}&Fyj}LSVQ zrA8&D6|5nWDYtW_+mmC^W>iA=0nCezEKOmP#$bNGpyq7LVDbFi|G6h{7?hbfjfGiro8}ZZ_9&XCC^!!;1>N(042UOo_&`kb-*O z&Q}T8yPp7q>!#b&0UZ48B#&yi)_|#k0Tzy(5imuJfcnb}QsFGi1nkGA9>G zPnflWZ<20;qI(A?jZ`SzJd?&is-50qyQhem#v|fvZjx%jKgW@~#HdiJox8MfYq`ls zxk-a7L>j2C8B63whua{uvzA3Fl-=zqdk(b$1v^|_>Hde|ClOl|O_e2jy}ikD8`K`I zwUG+78)r<9r&(_INe=&eso13ZYgwd1+1h(KTXnC~28RiQ;vrTM+#_6?EMfCab}`Kd zYh9#5-9}HHB(@)GA=1SGgakSnVgla;;e2axHI;gE74L%7v$Zf%@36kConFTx!%vRu uVAoh0OI*7$#8S|BCmJ)PU5(&R|JI_*@OA!?dV}3=@L0#|l<)sNDE|b?ST30W diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc deleted file mode 100644 index 7be459007129ed9716f832352b45315cc792ac93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2403 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc deleted file mode 100644 index a9de379fa321ac4b1fca754606eb903e4612e98f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8062 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc deleted file mode 100644 index 3f373feac06b64654f26161a901444f3752c73b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4734 zcmcInTW=f372X*x$>s8*i)CB3WqT5(i3nI?o3?0?7DWWtZrTUNh!h0fwB4?DhT=-g zU3O+^Sp*FPkYDu+f&lVc1N0XS(5F862jo(>Nqf$$M3D|-xK6r@nVrj-GqdONoik~@ z?pp9XBJXwndcm^(ft|?*XWxdR{y;2?Tb#sJk9dS&o5r+P@CrTKvrWGc7keeI)GK@C zp5r;aidTVgn-^oZSM{oxTtyaus;WAQR~9$DNuqTZaC=aqdb{|21hc)?pR z-$idxEbLw2RbD$L-jZ0_yU6Rj!RPq=ae-K-zrYvy1#yWl@r(S@aS2CHE-;M0D8=I5jgy*D(fG@gKh%<^sVAcN&|zuS7Z{Z6#ojiF>h>bdqHjwc2} z+;8%^1f92`C=HdcJi;xHa^e*#v{Iv3KSPg z6-o_CT{xm5++8Bv4!vRlRRc!nc(Jp@=lQ~;qE{8Q8Qd3z`yIGj!2JSWdQ?0jUY*a0 zMu(zhJhDC5dCO`pYa3+~_yx<_WKtwtNE9hM=tg0e^`*$NL-<5VrWjIgxGsZdQ|_v_ zObdH^Doxm$%4G8`L&QW9rd)8wgDlt>lSRNi$=I6F(TD9c5w{pHzQthWA8)brREfZ( zJ?QNS$7d2C|AYdRY~O8b8{I{ha$DAwu{r9>*y40;(oA$?TC=(`)`u>i zN)Z;H9aNXVYX>q3O*n&1@u@+<{%t6#4OM21$PszyW@O}!=*S)wN2O7DB!o%{UW!_x5O;~l0y5_vYZFL+QGj-*N_lIExCl% zMXV50uq&9!dOzi=bzda+ zTXD40>K|s^H2LwykAB!vQ6|>=LAW363f1aI{gw}8Je4g8XxT!&ZuB8A`9Au9?_Yu4 z)D5Vd8YR!Zr7!1QmpG(GhINCiXRG8*STUu%It+}JcMm!v>jcWZzk-Ni*e#!a5&+sr~Zk1joIaH`~Qyt7%Pz7^YQE~ zMLCDHJj5PE0QG=Jh;|S$5u9_0L1Z(y7bK?$r-Y1xI2sB*jWN@Bg(n%~$c!I*`N)Nw zCt+y@^Y0S9ko`2y&Dh|jBN%cYqvj08n=c#1kn!_1|9wO<+~xa-X2@q8C}xOZ>qR5l z*kRu@v1TF}#4XUJA&V0S-vpAZE7)!Xu=z}KC=o2T+s(2r`+g!0eE*s7Ag=*|T*2x( zRL#0Bgt0PU`Jyqwt0P1MIIApxlqZiT3^`(4$g5YOr7MVeJ_6ZKp{p2F?#*WboRTvL zcZf}f4Flrig(2QS&K_)IG10dK4Tzi=HA%Zk%zwcL+=BtcL3zIJ`Tm-0c3?V9iZWe~)tGazD~hA>=!)LS~RUKbz} z*EVK%vJ8ERr<6skR&lx-#(`3pNTpo9j>8y`3(vGrf)Ybk1&SI$$km-7|+1$F7?wCa9FSAb$Fe7@+~+GmR`a}pFv zFNhM~Zx0vlON9G2i?LOQ(;qJM){myU&+n7amq8P3#fX?d%qgBSE z1g@545J_-9klOBwxId)p(a>36&vQGkv~_Ru_MNTa_4E6Tg7iTs^kqn0b26j9rY(O0 zl7buvE)Wu}&g4sQwDRpVQE4o;pqFn|c}2s*TgMY6DGt z12TX7fB7?9P(JN>b&x|U{jqMBseCyoMF$}`DN}(zd|=Q33SbxC(EQp=SidB{Mn(9$x$$K^OnA{i<2f>dg?$5 bSfVbWP->(>?T;F;`Vw(IqF=Ar_TT>ty6h6K diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc deleted file mode 100644 index aaad6965b09b556046bce3cc3b23583a5bd2fa7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4002 zcmb7H-E$ka5kG*q)t+KUA$8IOBC2K6pa_rP%JeJaqImz6d2v9od zK4{$0ve@I3J(Ik&FL`V;BhB=oe(&GWKLD?N%5&b_HtjBsv?$x{B*)o3V1WY`yT4s5 z6+g30cR$Ep5&DCSy6kAgt8rm{4`K5o#kgh zdYVtK8@01v!;D?yj!<=3etdRalPp6}#=XQ)S;vh4eN9q1b&tf&RL9 z+!Ik-)QFm1iK8SA#6uDBeA3qh*CT3TOQdc)ABAplU2KISN})M>d-cxpC-*npjn#*1 z_nOQ1-Hp4eYpeY)7rRn8NxC118*_Wxekv{}U9T;!gLol+B4j6s_bxxZ?)B1mA@Cz{ zd0Y5f+v)WvmZ29cbmAzz-0?y`*uTCeq9DFBe_QN$zwJ5eUX(a%aTL#A$~E$mOYBG}mEwy*>PPnCx6vM6#UZ15lJ&~rw|<`cXEGfUhAZ%nG`k9ysGu=kNc`?X~! z+4e&xjh#ISR&ln|Fu>k$suRVj*o@=dx?(t_SSp^T%90}O$*9>bfTp7d+Z1R8C^-Qv zBbnhE83hhU0ToEIMr9R7K$L(ag!ORupVhoZ67^V>3Ri!}8cyT3{r zNn3hdKiaz7jd{{|BBCdaz~5}ZnYQETTK)YijRYMFe%yL5~Yn6i@SpwY%rZt>l;$Ojrsn zF@fve0hSp%NQ9F=(*gT}$Wxz_4&js+p4%Bapohk7;~9YwL%#dD0VCk*<0BaZ+nLQ5 zv|mQ+H@bo6NBxp+qf^=#7NZCE#^am>`sM;KA9nw2;!`>x1DcU9j3eB~@PJ5U=ex>@MM=-=L!}82u04VlOGW(hdDkZ1y4^ z2)Di%#BDD~mg+}qd{33h+f|n5K?~4z7G6iX${#`3K@qZAL4!?$Oqqa>FsYex8i(}} z^|xoBs~GoEFE<6vm(&yV@u%I_PjwDHNg$&e)dC~4B&Ys+-@zWWGNLc?LgBiq?7Csh zdtfG4Rb2OR&kKelMc3tV8^nbqmGTrSTttQrmgr%55g7)|7(;F4BrudGXMx!U=te2C z2>lNd1uE0(w|Z6^CLDY4L^pwwTfmOzpcViVGmtQa1zE=$zKf7`Y{)v6uyocb^Aa!X ztTO?yt*FY-By0XtK<&+C&N07uk@FBj(vh!{J4!=uS2%t;lsbO&W**AVs{Ln!imy3Q zV%|9xk0lUbOzL+M5XHU!uqX*1tM#&iWg$ z{9eH(-^FE*5TtjXdnJ3d`v)j;fYpi;FDb49MhkhYSiS z+$d?`fMv!Zxov#*{-=e3Ij|79@`sO4LzYKGo0%nVWfq{C0jllHme;tM*?)o%&P?FN zugnN$;=CQ0$!&atyrf6VU*SjrS0cva(|qEfm{C}#l-fI`ti&sSAcJyN2CPpu^Gy53 zk??q!u-5TNXq(J9fMaobNZ}2K(r=Snhj1a)iv7xJ()PM}EmD6;F80lfUf5lDNf!I; zVvs^(2^w4J0@i+zmjfu|Y9!zM2+W8PWeL61BJPY=);qNCj37CJ*-^;kllzm4P_9Lz zYOzn}miooT2FjNDrA5!#mZEcGu0J#9z=!`(ZcmJNv4N#VlUqt}ah8wxV6dc49wLCqMe+!6PVT-MbrW_uV@m zKU`bhP*w+P(zG^_Bk0$-T&W{HT>~d-D&NZ;NtBsxi%@9uC^O#!V=a|2lyefU9=U*O z>ALK=`Q#NCz`+EQ!VF<>i7;{sh(fS22)6UYfVdHgF=520TIBTo&h6}m9qlk?RNl=b-+%__8ns2?~#`588z1bL0-o? zBR`Int#yf*LwImM0etK?;m*gy=u1yc-Fu*G#`W0GJKLeX6x7Tt9$ zy6eNVF7<7F9VcpaibJ>M;ZTLYC7~aAft!O>2g))|##$!NmpTn=C!#&IT4T!VW9XQ- g7xRj02{EAajbkt{b_EGgic~eLGqY#TpF3auFPuQ0u>b%7 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc deleted file mode 100644 index 060c27b4d9fbf2da656f184802bc3d9d11904aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14650 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc deleted file mode 100644 index 4957f3b19c18414b9efb0768e4ab10982fe33980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5944 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 S$2Kq60QrtNxsy3i$?n>gB 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 L(=Vyf`1gMR`<6OG diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc deleted file mode 100644 index 9bf4bfab86df09cf3298fdef1937dbefd08c13b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4485 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 AuK)l5 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc deleted file mode 100644 index e680d87341ba3e1a64db1a955f280c1dcc9c5998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7431 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc deleted file mode 100644 index cfb4dfdf9e1616b5da463df862ae9bf4fdc42a20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27524 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 X#N+#YFA@K*L%TB0kT>Rezy5y#EUJh| diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc deleted file mode 100644 index 03d6d00aef9d2b6a1af3569cdfb43dc8876b8ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54021 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 m>o?SSICcXi`h%?3OY=l=uJ_5|+$ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc deleted file mode 100644 index aee5ecfe6826254cc47df0d53e8315af905b3d2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11304 zcmcIqO>i4WcAn`O41NfL6h)DuBugVovIwnATI;prs4TB!TDG-6lq1P@7FuOIL^mjq z00!maE!Ii4iRt{^sN>1gXTyjoTZn>qhr<^j^=(Tgvx(W`F@m zN=~g8Qa7i2`selQ*YADr^?2js1r5J@`jy(r)0*~QR7n3aD4a*~|54X8u5rDgHT8<# zWEIvlDn`?+n9WQj)3hp9Gh4|vbCsN~amI~CzFDXg)U(+bYZfa-^_*#pH%paLbD}b# zYr^8zUA;1izghg<^SZ`!JbzE)c``P(H{HQMqzd9OY~yBY%y*Pi^S(*R6~=!Vllo zb?v=-cse4Eex!ZEsEnSo=xJl5qv$y=j*0oZIzNQo|D<}MgkGPb7v6ltqF$=c@imQ~ z_<8XA6&W|X0L6w#oMk7GjFx&{|wu%mGy9JO$1KWYx!P7pqO2b zA6aP95MhpT8YC>dDZOSpdLDaK)Z9)(6{@Hn=zbX{f_Nwa(yV`Jl->!MmZma2RDH?7dxGku;zqnF1!<^%^+@^4xu;4gN zk9QjMTy&iGI&LF=lXV>KRUPMnCTBo~%C_EJy6H8=(pslpm0nc@L49fCMSsb!O1E8a ztv%EBxW9Buv~Ddm>Z?ob&ETfjdT#N|vrB$G5YM#T>V~@}{H1oiz2u-7_v8|oe{(4! zb+NrE_h7CuTDyrXr{#22vyDac_B=Iv7TGY1gvkwV)=Zw^);+V5;f644jAwZcC5xM2 zVLqI=)Vk$1>imlE+t@JC{r3SI1JACvc)bd)*)G@@wXkoyKI&DkMf-|d2d{&hb>F^S z$DbB)yDEI&N!l-z?V*8M(FPQ3{M;6&_P6RBGsG|KCVGQAiv`u>f?V^@swe6Yzq1#V z5MK8KdDHTN@{Wo4?S%i z6U&2ml!uUE{-@}dsd7h$*pmWE_i6e{6lLk@kscK7$$dVYWSDMof#@8k^H_&lJ~tQGiCK7TKRwLb-;V`8*PjCP!#K;Of0%`9r3<|k1@hRNg$ z!dClY@iIS!+N1n={ylygPxE3gR`$%tdTI{py~vmDk*Pn{e?Ph#vtnB9hQ*&v+H&I3 znU5LPG|T~uf1lb^j&TcW?uEqUyaL1EegGl8;BP=_3A^J9scb~O)$Rm#rxny2&~-|= z4KyBkl4!8wig>>D7ZHxI~G9SE!wf&1Rb6|KOd<((vYzQwijaiJ2b)tJFbNS_XD?8 z1-a5*A+j+Hm|?Fqyj8c6j50h8wHr*-hIzg1Np3H!dR}8_nu{%WwIS?&3&q^wv0if< zermAlO|K5CVJ{H+AhmvDXuu101NC5Syfbn0;UR~~^KW{$9Ug&;9Z0;2*LLzcvRZ&7 z!vkKEofL^`z&@SZ)~p6hUO#cba6B=OP5?;MJ#{_W`Ni0<-gvVi2*ik100B(|5@OjA z-3uda7o%B|F0fUi3SKEuR8s2Ra_bGXBatxqU3S)939~V^q4wIf2N@J2z!v6`eUrza z)5Bt#lW{5OX+>1ar_oTJq-=q*GG%0*`qq}5ge(%lm1QJ<1zC@^%|N>g!{_J$>*;}U zm&vKXT+j4$u5~g@wAGh3zT`Mwg<~}wDW~bmjZRy2jut`d9;^f=RM}w~Jhjr{Mky1j ztS8yl=aGD}xy3@xn0&;T`Hhvy=@$M0CG3rkGpVFLKqyp6E-DhYT&bADyun$m@bV>r*!3iVqDmyLPO&pAd z=e46+g*DaL!!d_<6YF}?≤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 CyvO7K diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc deleted file mode 100644 index 9c07eddf882753034fbe86cc360d5aff508c3daf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1355 zcmZ8h&5q+l5O%j6$8mlb!ry9L#L+?hHA{WNRj?$jj~cjQB`?W~!5QxDdhX^S;DVJ`RQ4r?;+ zl{0O#7Vj{Zp{LC{;OVmNjWy`~4sWprju77gzmK^--f?GXW>%hJX~zjM2duKordeLRHzaemuay$F9lQK zmKWPFOJ`xZ(@RlY48Qn1RH^3YWt^deA^@RZ;#TytMgF%hUF&N66X@Gnw`Y$>_og&z8T0OL|F)Tq+Xx^F=6Ne%yC z6kGGhK*SCi|TXU37d1mZ2YM&cPq<2AEm z#w1>gK|{Wa+YoAVR#ABiq}7~7kkYjA7DqV;!ZGvKeP<%fQgOEyecaxvw&M8nu5GF-g5e%nU@&Hz*-ydm8={zL7H~#r9(SqE4!{j2bFIefLTQPFVbzC{M9OS zvFJdzU0BVFSPEfqSs~(7h>cZapX`|se@59KGDkuv+hCY!6XJ;w(ij_Lz%gEkC*nTf zDLZ(%=AGRDZ%5rY+dv4K-+c2Nw~&K2?b%?J=eJ;Pd9Q!-VH-MYzAiq0;$8==s!fMo!r)Q0<37 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc deleted file mode 100644 index fba9bf1702ed83b24967d5595c89c660f19ca783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4099 zcma)9-E$Mk5#O2p&`OqsZH%$O2TJNb(A{B^+;MePA$-I@LPG4sCU?25gw0wrl4Y;7 zVs-_wN=mqxSE}xvP-XJQYyO;hO;xIRPE{WK0QvREvW$J>C5qC8biq z!uN=+)R!kL>tED4{FTtTik9BxmL)8~Vk@BkJZ3E(a7Mfx+bt(>T5jOByufSaf?UfF z{8m25w+ca_H5QDuib1he3QEk9W5U^HL0NjTC>@!X&a4G`OgeQw;=tRpRvk05RxmEd zgNdJ8!WG^lOL%f}+YXM)lE_J47G#-Z#2#07L|zmgk^U)2jEUmknJCEzS$RE~Q!X77#{^D@mTlJ7GPaK1;oZ0uVh6BsS#e}hJ`g>V632Cxy z+E_L`$zi?2Q~iIdjzdo_n3gBS)F%Iqsq=CQzC0nO;mhf5jvZ#?%(fNG;vP@Nr&_0j z)3~G47@3oEJMW2^XAJ$hoilQF$ZdcVv*Ofa+`XJLz0;!}h?3t`n)O8O7Ctwy(9fw7(d|akLgo?cd6zGMsa}nP%Ew?qtoR9mU$c z)9paOxwF-gI!E-YNNM+XZA@!Fxi3|mL_)JWHQMFy$I!WomX3o+D`3J3xL|=TIIOaD zenocF4W$y*`|-7QMG{v@YPGIXQdAzS%XTHoGTDM9?M5X_Dr?}rYCGc@>WpxPedI9J7BM!h>BfgsNU0jT#G_43(OH`C09&qh7C8JDM!jQZhhLyTXTGWHX_lA~+4x;m_ zX^WpP-ruTLS+l*kuyM0!elCVFdU;~t~0PuR|xYb4S_gUZC@It?jO{#?@?W8iU4=o{QjXrXihh{9%U>eqd_1T6s zfHlwnI|Sdh2iRwaKeMh|f4nkqGQ00&&Nf%KGPjQsEbL9LKJ4?%>pKFae4A~fG~65S zJ9qiO9e9IW-xV(0{DqN0vD=%^sVn^)t>}Bua0M%P-+hA8-}j#Ir}mzd(YwFKR(}#X zSeD!HA?XW$C*Nn!82J2C7ne7hDTuNCnc`CiUMTfGSRCFP-C8Bh6eaPSS7(Cs<_mI@ zBC@p0e!9yp?Xt=)yS&TJ_4udYs;F3A)afAAbgm&Y)CHwWuf>2aG}C4~&7yWqYBw`Q z%Z_DRJ7j>)hhdFE3u}&H8|`c)&34sSXQ<-WqWILzw#Sy`~Y^Tc`zG!*=AT=0SO7v}+cfZE@?cn!y|G-Mm7GtBM1Y#!xz z+HABV)Ja)M>PYrxyP1Vy@1vVhGX^+dEqUi{3Q!?_Qdz1V(>X*#N7gc(-`7QeG1R0B zfI>hAP%qUkih3*6&Sn$gb?i6GtGDjlT3)(#J6vA6{f+tvKGr7=kFJEjy7A4|%PZG) zagP~Fenyfm0oImw2!3?_#-D4_AgKX>s%zp+eE~sr#Yh`7u!z9#Xk?X#5iqKARA$q8 z5dM%OxF!)?W#*Va?`6>$XEU5X^!{5OIaf7+Ni4_A~rgM&JT(z24^pw>$B~P9>Z$+la5}jL*Qc6=biBY4Gygw}ACc~=E zp{o5k2@#ka^+Dml+>bGx5-v@$>Dj`R$MA5tKYZSWb%5_d&h|no|j))eSs3{=u58Zi<_5%{U>lx1{ZQl4yG^Qh}eYCmnj^ z;RWi*Mk5XE^{A!u7?MDkSXOypuXVS2<@Km7Drtnu)9fKX>ELh(0mhM=G|~N6GKpdX zIY>pH^(JtH`PVRN2@y!>qv%Df@Vn4bH;9}ga^P6QnV`Fki2>T)J93gM8lji`V$x2N zSoTV*Ks*sCVUqI2rQx*upeeHT7i4R%cy0I`Gy-?bi?8|vbrDlKU+=bS8B!oMIiS64 zi#(&~niTn25!xuaT9Yq|&Ns}V0&!zRibSXgC@N6qK)Sqwny~`h9To$1m1gKsY~o4X zBF;pP@dlkq{Tf8i;6**Z_oAMs^q8*=V()49DKFda{Q?RM~}$cElCZ@;&=Q2UpL zKMXEY?4)%N-zu^T%rAXxJ8azMPK9yjQ^sACOy<2Rpmcg@6<&DB7vG%Ydvk?6=i|)t WiYP(_UI4O}4bm5QnNKq3-~R&=N}BHg diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc deleted file mode 100644 index d319f5ed75886a4827cbed3ae35b34fc9064cbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3946 zcmaJEO>Z1YwX6DbdV0p=Z^yeEdW~Q`!trbbf+Z|yqwo<{ijm@FS2ST;ov9kTCq3P> zRXvV9YD){wH4+DIu#(L!zkz?!2M%z`84j$0g!igv{Dq-M^}61xs#ov(^<<5PtHJY( zJnWs$YT92Bx%fDMd;mlK9RSl9Nwfh82+Gi|}qHOLzy-#x`HDXm4i=-hCenF%>F`4$y1FxM_OQW z`}hW*=d-N!oSc9jQ)(ZmZ1#w-IX3^C!nww_8tsLbpt;s2rTOzT&eE5p!s>UEcqe_p z^WBWKY3X!%l7tCQ%ZB86s4y9id0Q{-ds!;8gqO|924i|VI zj)n(07Z2k7IDJ9N`U4)xk>CTK;t3gz_oxdEuf49 zdX2KTn9dAlGK<-NFqp#)ZgQ&!_F^?|GFRcY!s~#0++hvY?0Ia4wVv5QjWxL0qimMV zJu?EA&GR~2;2uyLJ&P@}C7?FhGM`~9FdD$wVmH_-P+J%F&I0uf_9js0SaVxz-z<%X zqlAwL)wH{Qx3ZBhlu4q;3HS5NXCiv)NB(Xm;&GPdQQ`|Y;;$!h%G;Z+>%((b?8rN6 zhFBiwxIww{sJ>F-~SQNk8&S(obh89)qV6RT{}}a!tnlYR`;`~s9m*+>M4VR$SFsz zYYFe=Ya9Mr7h;wRm}SCW6YAd3U=7Eb?K(L5l2|#HHo{vPj)rCk?j{(qvf$w`THwyFjl$l@XicShGqy+`27dk+rFaVl`3D9C1gtxUNP^0mkch2R0 z$B)F$2-DdgjAZWbMtdB>8;gbiG-mlOnh;!+K;Gy6ZKxdv+EdH{qtaAX9N&%8J z07u;Kfqj($HhjK6n^vp~QIY z=#;qdwsec&&n4rA%9rVhE*9tnj% zi#K3no1Pn?O~hM3QmR+rD}bVqf)7O)ZUQDT;FivXsa8sRQtV2*Dk8FrkurU-j-z;8 z81g1?_%#G(Upv$R643+^>9KyI$tEKy3QP};9K!F2976E*P5E}A9a|8H`U(9Q`yT{j zZsSVs98vKNoE=)JQ;>cQ=h(-e(?hGU`tETZyTl1Ctk5m2WA6mc!=47Sp!5Ei*(qVp zp`ABb4T9cY(T?b$Q#dlX=0*q3%`o>lImBBk4u66>T7|>v%)<^_=pZ-TdPG(<=B#Rm zZtg%DxrMn3op)JV&_JhpQ9o`KE^Dl4*sax>dUfXf^r3gn$wtwDlb$+NJDx4z6f>7m zpScsf9ck8dm6=7O@1C!w_m$L5(EHC;ICmzaJ!bgRZ?QzjdvZtzSi5s{VbF95k)&|jjsOnScMzR~n zVU{Kbs#cVCEEP%B6O|pM8)C+W*qBN;mT@ZcDD85AfnB;)(+#1AmgX>t;N4a=`o zUuLdq5g{5WXbS$>C>ETB5-JZ5np6H0MO7E7wz@KAydo>J1fHtI$Z{v&RYtm61zJ!A zpmc?kL=VH;AeMXtfPQZ2hCyFD#CmN|`ftawNRt@EqYi1&7Qi`*ctvyJJx3M*t^jn^ zSb}#GhD%n72eUWTyh)+xEl!Hw<-5gq&@kTyaH-B`;}{dfF)FJ0Pr-Awje3J$*-k5u>+}0A%#8S OfcY#~x9Acv{`Mb8HNTbs diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc deleted file mode 100644 index f2c593844798b54ebd7ba5b95db392315d2397af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2992 zcma)8&2JmW72lox;BvX7L|c+A%Sk6`4`P#$RpJzmk;XP0t1g15hAklIrp98)8Imi_ zeq?4So5JcO13l?K$U(}jhhBT=f6z*z)8 z^DxVzWYjT>=Js#y-wp2EyL;!eUv2%eFm5N)!ufS3qcjOwVQo(`Mo;zXvxNsVggC^^Km{10ceV@(Uyg}F_i$ih){dzw+$YTro{kuv&#CWLY&wza+4 zu?kB@lF_0rQZ9pCIu%7T0*OQhqe(=lDBL)F5-^&K@9WtElruMcRs7P~;+z!Uj7hJmD>v4AjBYW5H;`0Q_ioV2D2gk=mhlU`u@m5uG4n z9HE0+UfTh55bH?c$CjqFq&-9sxf<{_X(@ha5{J~Eng>pf_&d_cwd4AUmOI2fLWxn$ z4(fURQ|%G{Ejn-y8qz&(E!W8+*w{WYA<7rRKOjx3T#U1+9H$B13wfm6EpU|J5Ralgn&8rR zUDw6%+~y;3qvX`A+`;QFP;vv`#&LxhJV+B6MhQ57t`sL>44T7)z!IBK(VZ(QCW7k^5J;e<(nWs0}bgq|swBLc7Y)0Dl7&uO`vs3Tz|qRdH$IFd9L zFRR<;lXL1`Le=Y4R$`$_0$d^RWu==T6X&#^ffKJsiG0b(&%-BCJc)4yUS;IWgOm&0 zr^A#}9QOO1?nUr_$p}8?r4KM{;Uqn`nI>m`QBium*OWn3hWtMU%_L{WNIpphub2X1 zA(2qte%TLItjcIVD6{GuhW;nj6^i&g@p0PUp#xc+sDrr5L|y~336-Okg@ma5w&{}$ za8+1bRUD`wwVjEO(QsOrD%N}%KA0yl@R~6j58*AY0?9Qc5K?>_|eV3E;56tX#@1s+CRKp^E9@+4&0IP6my4MN7I-2w#x*ysuwaw#51P?9W` zK8A8=@GJ0-g#i_;(1YJ=9K-axpf^rq+5;R7cshV08TEFri=G(pP}Sh~vXqD(t<81M3v1F`yKd0VFGc` zlD$^K`0mUf`}O$}xC-H4?0eM${b~Z5pnEjN zXWihHLi<9tpK_@6;2Twu3$L02I;V{C6t0Pc=MR{oMsU0U2g2n(*uEJi_ln$Og=IV05>uSjuMzYi7OKRbD?ScPT zNj6HofmDd+Z!7tqDx!Qhp|zDkuE<+z->WcQIbAgwaSe!lsik}R+vuw0 z>88GbiG0QheJ`l@#UZ+@c_YlMhRYG0cNhSa1k(V?b#6?7)!P=}7DK~glfI!>91 zr%L;&%BZbVrF?sHzj2Q;mf|l`&d9#8(cSQupqxRn#G8B)$@>#N7>9xaGA!s9jQV!U z!(>GLS`4q03g6Bk8CW`c=XWcA{mVc9anrAFe01%@_cyLx{|LUS?Lk?Ds$1AGg~mk+ zI}3RjivmStzy4+PsKPMRh_eU+v_1gqDsS19K*!|D>-<9?ev3sy2I(-6W5_q*w@5TN zH-9yNrldlC1|JF)Jx50f=`MuHety~JH(_b?r``Iq<1en=8ZE!^=fBiQ97%zhAa(bd7N|S$4YyN zV&~&HB@;$JQFU3|1LA3ybq{%fVozVxP2i9{$LcfS{$m^H-^fJIk%hjuZS!=U={8zHuIuXN-~S6IsW?FZ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc deleted file mode 100644 index 27346408d5eb5089e72ae90655d8181b9e656926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmZuyS&tkw5VqZS&#{vwCqz+8NGKDL84yUIC_;%gVFO4D+6|Ftftud2ccwRe#qLSi zRgV;ueGNYV@sK?7hj{QSPx%XwgR1V?BNCQeU1e9<<@!Fmi(bzs&<^P4&Sy3uf1`1- z8DQLiu696h!f8q}8q$n~j1tbcks6s9nvHIzR%VBGqg$zyxuHvmVDbw1*{PTLp`Ufa zPSy>(SugBm{jg8TI^hm?4+wXkuyBQYTV&|JfW63&Y4_W*N{T#Ab?@#E-`$SZ?%ZDc z=BthM7Zm5IcDBSc6L|%yw^i+>;_hB4&`67-jM7+DLrXhrMXrie=>Ae^7gf5uDRM64 zrcm>=(*4$ox7$^;wJwW!Il)X$HV=#&(A7N^(Sx`w(_|7O@=;cBp*zQpO0Gbt9ALaHMKzcC1j&GnLARFQ zb@-|eKyb<#Qg#6ptB1TInco|B0Jmgcw3FUcR8h-8 zdtUOm61v+mFG`bKs1|f&nD!L9&f-$ER5Z~+Ixsct$kXtV=TTfh@h*z@P~f(@zg%)z za&0whYd051iC3aDC8AjD55bUvUoTYtgLbuj`w zUQA$kC5qxaFRJG5D##YEq(tgybGs-~c@AyN`oz(iL*n^l4+QS5u7L1~NnM9ojM^_5 zW3O$4y<#SN$t?e0)@78vX*%n_ZsInE18rA(c$L~+k-*wf?GHjCYEAvyY^(_X5Dj1_ oDsaU9=6z}}I_C6$$!hm{Ta7R9-B9=*3`m!CX_uPDMY`(!2MhMqB>(^b diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc deleted file mode 100644 index 3f12c87594043fa3c299d1bd9f811dcddc0ebfdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20786 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc deleted file mode 100644 index 07e994a986dd046ed6c33d420fa3b7273c771be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21333 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc deleted file mode 100644 index acd1a3446c7265c4b756344e6d0bb0839804d080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmZuxOK%)S5bmD$%+9XYj}R0DtN@`5Qg%RGP=rt{D};wIkvA9S(yX`J>xt(@_iUuK zHYfW>aI}v(@Q3EgDf|SG0#!Y0@7koLE>%@mS66-gb(h_4KwzBHgQLGJLjFW!eVAZ8 zf~kH7!3n1s$!S6<;RZJ|BR3OM>sDsvc4BMY&Yav$TuKC$pF*6IdAXnXd5{EoC+Xy2 z5>oPnaF=`MgnMU3(iJ`KpBVB7I3dV3@_y2XOoVr`&3r4_f=pep#lthoyAZuC`eOSG zYv_&ij5c0FbtIxq_t`H`AG5vh9`F75{r;2JwDop=5@R)!A{RvsLGDOQm#ROi=b3mm zuS8@u?p|4_G80X2sr+2kDY%;OKonfa1EFSF-Sk>(eAsTB;L+>D0pk%&^(_cN63R(p zaGIEWn|s_pw-U<_{Ei>`UElG0e1~uFK6q^&@D2}ompj5aa`-0S0oh+3O2uj- z$5mQPA5Lj!ucp;6<*tJTJxw9Jw&gfwp1@=AJONgu=w01z5Xr2+U1 zlm)#Y3-X*^(w8Ra0K{{1VO$z7t=hV<7uLcA-Co!uA~zsBavFasYSsdc5FyY=;1(hq zJ)JS$U>g%T5^O1`f-}{=7u9%Ing+NPTbQoT7(&CAeKK|zybAjZ%^nS@ zMNjWugK{(SM(=p}Sl{*K*W`i%0kCJ|(!A=>ln78`LYum$$h_SF65uWMWBlSu1;B?!%gf3oo?AOkXCh=^KqaBu6pM1!GOXSYGm3hI+`@ zZ?kc>TyYuW2%PF85FW8;;2M@ejeqqtf;Wb@vU+cH zJXVsA(}FSh{On4m`WLjHjth|`_OZya^3*Mh!C^KN`_WG0)N_0v65(mwB^)i{?vel! zFKG>v6&BZ=*3Vs^FF(LUeRxO1&dt^O7u8t>~C(r@sO ZSNA}KBs4(hHk|j}mNVG{v5h&AMSza!1E`SC1 z0iAmx5}SoBnMx!zMdG~Nw6Qy2AJh1cB-13#w3$w)GktfGY1;hJ&doISG}E}A$;6KB z#EB(~{r$dk?><1lveTvk=bk5lqfnU3ptfxw;db*UhSTA17)U&0m#GTqe zJy*)r2TOzXd?{ZaDh<_#OT+b%(nx)@G+N(P+EpJbjn#LTcGt&C<5DM4+f(0L+AHy7 zZC`zVX@C8m(mnE?svW2wEFF?~x^{29P%20~Q@gKzxOBLFq;#Zyv~;w7f9d}EvC^^n z@zU}7L}{X4EEVe~N+;?Mlpc`s+1knaWNA|31GTC8bZJ`Rx!S4vgQW-S50xIm`=H9# zK2U$S^svN-YClx}VCjPrAFe%8f3);y{X?Y>$@@s{bp5f?WA(>NkJmq3`f&Y;(i4(C zT6?noROu;+@2Z`tKV5oS;$yY5^>d|j_4B3k^1i!v0rNUof2Q<|ypPwOtzRr%v|{d< z`w_Kg!QK}ueblu#FWru*z1Qv1Wwoy~Q;oSN+=I7bKV!KMxChmKbles2_C-rbWkvHU#V3Sr){iua?Pwm#nX_KCilCA{4qmMkKEjB)okVloH!=<-X5AD7gl%b!GC z#)$Nn5kH_NQ2OZdrw|YO$6L84=Lq7aHe*Lo12d{-{-IU6<_@|abq^BiZbcOzk8OeU ziEvbRL;8U*hmelOe!oCE$}x~W8J07Uj`9qoCp&qB^aEyG9Y|01yc5#hx`gyeFygL-L1JZq-74@waz zq)y}gwEGm^udB!0QFm!yOg-*a)rZ{?#ut+63H9U~PO0YB)l=8)&&BnEA|`B<8uAOw z=Qfs`>Wq4N!z!(~E6cB_v+A5WuP$uFaa#HQjCxjGR3A~6`l!0JkqlEWs~PniQlD2p z+>`o(npIbj`l9;SMj|YERejuDQlCKml6t9A|C8!v^(m=e?x}xGRggA^R_B%Kly%jD zT2%YglB#xET~^ms4Q1y;ovgrEd8ehtDYvl$S4E8PpXkM7O(A4FHYRzR1>&^OWHAbYK$Cs#HF&m`LHtTh_ zflkkB-PA$q8Moo;>U@y;sJnKfsa4=`$U$;uwLa%+4jL2kQ8GE}>uO^WqitSy8$tH! zQq_08mC8K(8a!L8c-~CYztCK55H^WR)rRX~^r`17O0nKZ7&%u({~qS(eboYdQ8rs^ zHdinO?fGA_g7mywt6^#lR8E|2*3fkZ0BxwUUYsjBoI%5D0-pIWV!-MJgCAM-{OZEm zWm%sf_X6s;`UTfpt@-FB_mS0=HLT9%>dh+QJ8;>pc&pkaG&s&#cToU?#gPaGuXka9 zK}G<|#X&9SihI+a3Q||AI0!eqAXRTRn%67UAaR56!1xpM9P<^#;;LE?ocXm%BXH(w zt1b#x7SUTJNGxiX6V#7L2LPF?YXDf3;>EbibUI}uYI+gkBofc#u`7kRQNmNt@6lA24b7x-oC?JxpV42D_ z_8w#;t}6QaS8en*kEic1fw!mdc#k4*g$D%xXO-fvqii>!;%;)mQI1Ny;oP!HDWo#R zR!NnTl(b6E#)_F>V0I1gxp`#?%hEdZbj5QE^W0elZ1O^-;7M-5XZBQ(^|=$vK95aO zyZ)+f%yV?nALHC&XYqW~LEy(eYZa~5@n>A0jqzxN4KG$-bsL4}*UZWnq~R$n;Vx|H zi*=k{ZVgw-nE_}V&#f)!88rE&n7)Fa?_8T+YS!K9#ntM(ZqB>DU!A`Gs5kA+>&gmt z|Kv(jdDH0Q)#+MwZWB*Im+G zta6YmmtR?})QHybmMWK3bG}^GarT-KB*Zf*XHGUm`{8rNGW%r0vwCulA2qT9Ros>3-{`LWq!#G zvQ@9z@cfFwB3u+_O=n&0wT=n@N(v&wc4~K!8SNt6oDx zTlNC?TD4L2%jLg`Opn7zT3O4s@>ULyeJ2^u+M`zMz&5Ki6;+j!-v@Tczp(*40`^Tr zS^(HG0Jtx96<`98t+nS2kXr*gnYbNWk7EJu#{vL{?u)HE z_{DZxPxwyT(GRJ3+u0LqSjuT9^oQ`4z?+R$lPH(i$684Vu}xKaBe5QD$IWOSk9{K6 zj?cz!0N1t-^SpP^pl;Uj63yCR-6^3@dLHxnj&-D!I&w<>48ciO{Ynkk?g``;6Wx-M ztLsQLSt+d$57OW-1bym7z7B1{WM(Oy#%ismt86i8mXJp<$oFrPAR(1|y6hf$Iq$>< ze;bcCfxxzNSX$c}Mu^`#>3CX}d)P{vfA8c{zzAP&9gim8b1;7(MEXtc0s?v#$Z`hw zavAUX;|#V8keKRM@CfcsTCItly6!myW@iuT65D%;!6zBK%wUMY0)sq)V6f91Nu0jU z4B~?C2UnI+4!WM0N7WB;{ZUbcirvnAVmJ>iEaXs0#+i|2M+6iT? zTKfJr(i`bEaKEyDlxPO%!rR|=B9zf~l0X}RG{9wCYBsMIR#yOea!=KUa17=JP@kIl z>K*(6UWA3_5Cw8U9Be|6@F@uC7E=4pcZNKKw1Fbz>9j_XAQ{4T3lw>}|2ZD7fWVyY zw3EhJcC0l1;Vk2vJMUzZIOpGJ9oY)qPG98?8?`fQ}M0eY3OozC*_F!NOet)ts@ zch@P-ZhMM}K6=in99vFyXU66xa(@j^=dkX#N0Xytn(22P);JQMV&M}AqQeTUt#Ii$ zlr}UeNgmGd*Lggq5+LzO&}nn{o`ozR^1us~#-iK${cHh$X9}8cwla1CrOV%jY{G+70Az36K2I@}@N$-<2#7a8P6MJ_~xQlL;p z5hPMrDl|kym3AkjT^z^40twlJMd^VhJ$Jr|&bHJC`>PUYRK8baMcFtb1iYPhGJ5jU?!@$7Pk)R;RA9oVotguW$YX_ViM zw^61dK5lZ<9+cmUdi(I6Mf!fk?{Rm5dCo2zf(G*78_Cib#(YR+!?9(<(RIeQkXQF& zWCa-=#}tllhY_054Y@<%s5s&uY-F*80`$X&-$+1a-How*RQk_{Ge`hBNp(aWmHcs) zaG`To_p4)I_V=pe?mnapyZa$3IBG%_k$R7NK+*;&KByDw0g-(VX0m9RFy9HD3HK0s zI;ke#NR;kXQ*J>`yZ5P6cnH0;=sTU#VRZ>Q&LikyKYFB&Gf_G!Jpuxv*QD%yzxt4S z3}r^#J^Z&2m+_rek70brGat%4p80U*iA*B%q`Iu0QfH7lAvHei7E$X2#__Z|i_`~t zQct>*XeFtj(?rgcy5Js?kvY_BB4t`;$38Jjt_H>jZ6|V0sVp$e43tYE*;oDnWG||9 ze7!nP<}@Vw289sCXq-b=M~Z+B!g0w0D0eDrP?BEsPD_jkiWxlPx_G*9mhoOpWsW+F ziH5B(AzHUW8}yCk%^NC^+nDfNx3J{NFxAwH(~wNPX=%WlE_ON=8BKaV zS!jm3KN$n`L&Rcr_hg}Ry@%;GWb}QykwV_|5zsN8nuW?_4VuQu=E7v<)k?KS<>RC& zQ=BTCGoqQukcUH6)#2`(m8+oFC``;Xo3*|%o^P-n0-?G>{Y9a<0AvY7R;d9sM~c7x z_AgXw9#(*`zaSq|TtKL25y5y6tw3 zh=2<#0gW>!_A++j8Bj-`z4gLphvUIhRK8JF{?h5fRsOJ^9Ieh|3KO7z7|VQZl^Wl^ zR*L|dE?m3Dd0o54K6s)kwOXOGYYWnPcjSI$uIyD?+buCu30|D@(`pL!x3=Z%tr(qqVd5^GJ61hR;~HS*wKcF{qU)2rDrmUB?NeOWLfB-) z8;KB~EX(u)hdMeDxcZbLaWE@<&XQ?)2!RiY%eSC~O0{8Rp+@Re$W(sZx2Y(BOk%g~ z*;pvCNE~X(1J4*WMUUzikN^gNE@=vi2Nw;C9xoVu;o{k6%d?-DxpL;?v>1^Dw(oi2b@$?8Yf=p*e>m~FR z4EAlBAQi3M2 z9KwNiPCwx1+Bs!ySPk3HN$J7%AoB9`b{Y%5-G3`j8PPNyyB2iQ*j9T=NVjM zu+1QL?!N=@Ejv>5HYsc??=ad-j)v+g2)emQb!Cm(4m6fXv7ty93ioHErfelv{e{U# z17`(x${-DcW0QD!ei+R~e8lgjl$d%=jx)Hv>G87Rb0AGp1X>)ErQkGtv0S(*<2I#@%uUYYlL7(Z%AqV=G;}6+>7uo(ldy}t(Tj)U(b*4s?r2juYBWJvJ;YPh_P9QT44 z)_de>cKwneH7`?!*dn9Tc3H2i5ihR5VT2eFI2#BL8&4cJIxWL>;qQXt;D_WhDlvAjRCQjBYIVL?X2`>yQ6Nh28Oagr&H=)Zw%{Y3`sbX#KmgLEik-a@g13~_&% zxF2q!G4B{U8ZJ6E?25Jxwe(K^lHcg?mYoJV+!xw_9mYIDrOBHqX!Mm$!=T;+i!Qk_ zSa;XsFehdl8XMsj%YQH79VG=fNyk#&FTDKFGUjdW&44so?#bF?^bf>a-J=Xr%mgZgy;X=YRaXHA`w${Q zlSQ^fetoXm5QS_s2C2d>xF1QLDYD$~MWQ(n2K`+_uY@@^w(X^c?pNV#!die6pvHEjyTe=f8fHsRkpHL( z>aIg)_tZ0M3j~4e+8vG+M<@HX zUh(02VGd$nH`DzmX+~FoQ37kqh_G2bidW-=VK+TNnL*ma2@|ZEtPvb5kT07zT&*cT z1SvV^t`V+_=^j+uk&7VkiU%V{9$01AQ-Gl}on5d6k?Kt}TO$fRg@`lah*gg+8nEu& zapJV*J8;*4wePhkjrLT>NxtXUtLCDqCO#XD@)2}8h6qian--10%l4kwI-F&I z%&gWfsvfv;xPNg1VDX#+p`j>fY;wPVSZMGK217TPZH<;N57F+(c1-@~IXP0SVH=u- z@o>Of3f=8z0_@rq!?{jozlxRF9 zI7>2-?wO62Ky0Ira0%jFXA!a5ZP`x2umILfNE-Wv2>iJW+%NX@g1@I!-=;wgp~JFi z==1`r8(TJBRnToLW6QJ#;9G?lE$R4$lj8<_ti=5%v4#sMhL+O90S-8c*5`SY4Zbw! zfXFnY0TBdxkV)YN@Qh%O9tdC2RpTMH0MgTg_c^FNnU9f;U{sb~MY&N0)!6dLFT}oRhk3j7I_5jp zPRKj0@`IJ#fabFui+hK&F)RXBou0~FP3iYK=~DOoEo4L!UA1M`MzW3U8=Y}u12Doe zNOnhz?b*TGQaX;EvIR*_XATh$MMB?c37grRnJ#`X^vtQb3w{y);>*S@+#m)jJA+iC zDVBj5qq9a*=Z`3v&j;{$&mwp|_Lk)(J_66-x2(tha2P$9c2&(qEAZeh4bpWBSon8ZN0Q1wh8v>4-|P#a_EVLXwSL5L4)1m<&OyH*^W2Xj$t_tia-Mqc?FtgLfdm?pz4WuYyGtJGiQGI=mf^f&?Xea(5NRor&Y%7Q-^R;g zca!BsV#k({>aitI6@hCW9ez>&8WSAiL;Y_NHNZ<6V091vzh>6IVIccMP(Y@0qJNW{ z;$h^bhjO-k$94?$g<;{{bTVm+smo5s3-&}Nzb7A0+v)eR&Zq@YTi~iA^H--igHb=r z-fkh7=N5?m7$X-@{keTOfqPp?1AnmNL=M)gW0AJ z9BuT5u!7|#qi8Zi00>28wy=EQ9_xi`FA-0K6FJ#8>X)ze_d`E~9eQEb|8*ZTV92@C z^?zjWIs(wIS;jSk&WBmkh(H+*yRTA^3bpBdo1Pm!gGV;~FCr2ON!;ufJS}kTChiU^5Sp*7XSX}Ni5Toc$cdq7hrK9OQ8P)gIx?(5CmL8 zT(C1I63f2?-J&_S!Vh%MV!$e*0!kR{_T?xc$eA?@Ik@r8@WTyY(zkApQ8_fdHN8i; zH;$p%w2i$%4Hpg?@3BB5_O6p;oSLxYyZIDZxz@gD&k#fOwWNz^B}g^J57E;nIMgWw zeL^<(4k@?nA3BWqpxIbUoWDE#5`~(hn(3Vxu{~kFdf}Mb{UmK6LPDDU0 z^Gas9Zte}2%UuDf!)it<)ce?ca<##Wo#ISmTy6dbk_GCuMQj=C3}P@SFAS>L+UWj63^R+{uKHg^*+^3E$_nnSUXJ&y^fn$?NoVpI}OV4 z3Mjxhe0l8UJz#gz8)CcT zs`ttpQWLXT`DrzX84j%DYQg$odq8jc`&7O?K#0I%t z+WA}7bw~fIw3CN_QBLkBvBZe}ip=UO2J%Sx9#HTPDBO73JlF=5A{YQx!)k=EA~e`P zW)k(ESRd-b0zOc&hHH_H!24NWybpdw6*dXfYiBK{0o?<4{-bhPrZpXrV-|J-U3neGgi2x;2@D9^xqXcQDSq?V&Mz`UksV zH=umLpJ?yDMeWs77|X%+L+yho_v3!Cy%(@K0ne>{d!gN8`Sp9-BTPm9r`x0LF~CYb z6m-kzv_{+aw)dELV;KD$h~7~4-u8Hy6K@|74cMV*KeTu8{d3kUSMiLr_hTdj7{%TB zUtm7hym+uR-x1RyW-t0YL&u(Buyc6L=p>A@k^eEQ9tA3O;5J>u^?Y4z(FR+C4qU!S z(P`Nb6;bbmT!dw?kptF!1saJz#$m^gAY&q6h&N0Ml1nbXjv%r*(kNxHqxVKQ4eSeVc9k8iPMU5U|@@h$qWX#HOkF}1^T6a zjdjNiuO@<4M=%KTA*4d4Ey#EINVb5x?BQY1|4arT&8`4)fPs9Pve1J~@qdZfX6ApN`com|q~$9BMkZW?zNy4%;3YB&;?x58q>ZMUDjk@Wi{Vw%gwzU^5kl~|^?P)Y6 z_eP;0WvX!2chVX1*3KPr2jdv;C`Da3@~}TJPTxxB<@Y`3zjdt5z3d8iMW19weu2+f zJYE|CC;*fY%36dhroaXJ7T6<5MEHdPY9mgb`0rWpg$MRm;Fy2P@D>SR%|kGAB`G;A zgS&>p!Nk*u!{nq=;K(0q!&D`|)@BCfvh>xx9S0|TP^CoL`n?YJJ0o`hLdA+Q7fZxC zQR%n7ob1$C<-KPSsEsLE%tw&4`+R5$!mk!qn!vwMzeWl#sTS$LzNh|7Og|Ge1W^Ij zX9wD$F{;q`C;0X*8G%T4me8k+KtJ-A(=_yxhf*=X*M3Ee=OSPL>wXrcA~_);t`uAL zdXRmb7zR#8D^I+~EuTh>BrYUp?Fdh#hLR4XNp?+h-^SEhT!9ya=$smLMzcNR8C7MivBIe zh`4a8m2lC5$wcKb4AqbzhY&}3rF^tMjB0L26`uZWwDc#0#snhCv>mtKOFHmzc+Y+} zn|A&@J3wubbH~Q9;^7*m-Qmw+851sl2Wa&jBrYRZZgY^HMuba90~|GaI@7iq__BtG zpkz=jy&K93i`NGl2&wPGmp34UqCAulZP=Hnr>p#Ap9)%3$sR6a>1uNoHgiKgWz$1% ziz9La>Q&`J7eSw>&bh!f8C{1fj0Y_-?0jC6VWoDXvgW}l9cpdTO4KK4Lr<=gp_jE( zpsn8}ov!FL@G<`URPp<@+EPKhWmr6N;mEtKY;SB8eY3d(h$+D%18x`vzPs?mJDHK;>fCWg3 zK#*_3I;ZH6AlybI3W_0Q5NoOP46d-M1XM5U?;;q&-jUA$Wpl$IMIbyN1|9WsKcnQM zJTSq3;ZIV389$;#F?^sXP@ZGj6!Rb4_GWmV`8OE6!Qe82U_d@-Wj-R;^WhF&G6@DF zt)kps65k4ZIt&XD#6i@xSegdeQjWo42J)4F+l*~85LWG%82c21;|zWoL68QVVQco+ zjOXh^%n&B+^6PM%eJ=|RA)Bz@0kQv%owEM|hN?dw z&)DD2X6-*q4%mNc=j?CUgZ4L*dHWmoko_lU?d$eP_G|VrW8vD`s(E*$Z6K)c<{coX zp7!%--+tfrb6>NcIArCE;|V*5uSx9&zk#uilbdm}@7gb-mph%u&b~L6w}*zU16g}d zZz`c2iOM3ltde`&y1!H9nyrFJ_?9o4I?zpjn{`3xenOc1})AZLWKrut;t0e=CF z1=Fej1KNyNb^+7NK@ahY9B2vyHzOlb51#A@Y=&!y=Hi81K)(fTD+S_>2lLIu=<@0n z;10t=vo9B)nF96{vemT$7Q|N=Q>U_4)h>I==l)Fq1mmI4Rq?c6^(9S zN(sk&7dnmnUSyEQZudUm02Yk85WhEbL$(ilf-VqI_Ja+kOrax2a3C^mu8Ms$yqSVZ zV((;4!>gka*h{w*?CakW)`A)r}!f<3*8+|+!PCCw=H=62pT;~ zygrP5pB_rvd%?t~sV>LeP0d_>^{Wmxs$6azdjUfR5i^WYWG)UBeTG8604*;JcLTVJ zI}f88`B&ow>pXwv%CoHlkpnWFk7dm!WovsrZr8y8kpgbVrDnK@EV;FnmOVM&8l0TO zrkQsq#k3F%$O`}fI|FZp!ZcT=!J>6gGPqvw|3e(kkBvzPbATWmap-%3G5PRDkW1di zK==sehfb=kp~*?Ys^L$X8^Usf@j`2NWCJ&u1(S&ywN`!--wtTFlcDe_+Jn|EBXsue zE)U9$)96OyldZ6wm=15WQj?RSgBE2->x9I)8L$youoovnhgjn)-E&8-$cfN<)HGVb zszr_JRuYYZ#EV*@HP*S$Q>Zl|b8xgChVHcnCMUh-f-hz9)h9&7qpP(K9{uv=0;F`V zb{FtXK^HuN3|}VF+o#Wo;Fv&pa1BFgb-p&nQ-@EghI8+&GS?cNgbP6QnMAX!VrXsc zdk%UJjceRJwk)%t823$fCBBXN7ui+z5}l&OQxn}t4>G(E#4D}LB)$zP+N!Pw920rm z0?4)$AD*1-s0UMTt}@s7y2OCmAu~>DZr}+1{g$-!hcVXTo3KxLQ#@Y!@1p_GJKT)GSn9ff zY+U1A^E5of5Ub41YtWvU`5GjyKKuAE(VV#gl*HBoTW&mbk}M=l3dJ*>VIXYO0As>N z2}32E+7Qx${rCpwRQL@}e0MYa%7jGLR?d@$rN<=&KK6XW>G)R>BNng>i!GMZy)_VFFGaq4aoB_qd9+q0T$_JQ6){;J( z@~vJyDQ}_0O*n1%QW+zU;W|&T4y9Nve5}Z@!rLw|jXZFW3@y2-s~2a^J$H3hll#PX ziM317BXF+rtH-IQSF1JL!U@tBRvUs{gUk%>D#!$mzd7#;JqR-AU|u#K zMoxbWaw3sVkUq;#*Hl2&GG~0qhI6Y>cgC+&7K79|e9aSA;qZazh6gSjvDCA;sfK+T zWM^0Bmcn@Qd0Ze{@%1^5USx)gjJ?g^zcaYZpv>SVgA55*2 zr<;dwC4;+ycC_I?&sXSTC0PeKAeS;qNnVhZRK9zGBjMeP9a2jDD0}&1cKSsG{3IhL z6F9tnXRrhj-1}e&A}B5oKl!U~OEYq1P_V&v5=4-G+& zi+#rYv(K|f3KCFHzL&j6)S0mDCgrLO(&3xqB={TsOMb^mM{)l4zbD^uQak5vEp6VR x((UvnE%vp+7U5;Or3BQvkk$C@0@k2%xBD+?rN8auy6+|iPor;-4LCpke*haZK%M{q diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc deleted file mode 100644 index 51beab6c78e021465ea82a8b2cf6bbf5e9e4aefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29953 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc deleted file mode 100644 index 8f599dbe059268e37b25443016059801fcfd87d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3019 zcma);TWl0n7{}+bw{Eu=1quZ(<0Z-x=wi?W5s^wuTj_mn*E>e{Lc4% z^PMy2%+&4bifeQ&>Cp-y-VU~j$YErdPXlB8KZ1wOkHyf$1H`) z;Y?WCp;DwA%|vyLnJk9CIkR8Obc|?D*oiD@PGr%@#97>lI6ok{YYKaLQqk53o<(6EY=0##Y^`m>UWcVzH==Q6VIy>p-?I2-V zMt8J~;piE&!*Jq`$wE$ueqk17p?;b*iztiisAJ5e-?ccavaJ8NLI$iMHkYlHd=E|tR5eWo@z!bw@z#n25jB?}qV5|+IP+_~ zk_*$;XP`t72hw}Hgh7W7lvf@bSv8PYO*bHQ8)ReKi9)!L#?Vv*YSta2<>D$b^=^M1jtY#F#|bBZ1v+f=1pn9VaU zRV`LiHn}-2Pw`@|kn-#M-j>^ZpgJGKY`a(~`nJ82?(1Pz@n~G{(@*qWaz+LkZoHdZ zk}u2U<)PT2PSwQQ+A618o|%@OXjcgb^(qt6XWz_Ipx6$JBb6O_SY zBv>8q3X+%>(v6yB47Xwu};ZU?PYpbZa6>!4}NV7ki($ai%^lCefmGdBTQZ8J9kX*X%Zqa8H8 zWpKlz8Fxtz8MjUrEU>e<)ex%hTiDk$B-ue|Eqd2BWZ4uy!$xjllMr|o_IHr$NhstZ z>}MdDDtWvJn~|u=U8m>)&@UlBkWk!5us?>pt-vho`yk^0QI1G{18kG82mcz91>FRZ z;f{y`>^kTj4JRb?B^l3Nx*M` z{Tc)og-pRd26;t+M_}Izc|w8xu%CpyO2Uzz;!XlQ1~3K?C3FEjtTo>VWQrbY1c#&~ z;5WmrLbgaC*1#@9&Pu@Vp+-HgyaZwZ;1J}n1RSq9^<;LEwQLGBe1t^IkYHgr-ix9S zawCu_zJh%x1WQT)S;T1)UiSz9-UL7}<-iJZxjNs#awHWoYQ)o!BP4Y96R;m5;aEiO zlgP#R6}$p;9LN+{Ch-M;T6vB^@gd|W3EgoT_Un-EB@jhw)ZA5(YGFQu$5YZn7B5}` zI3s~bQp1-TvTUjc{wX{@fd>xB9`q(5`+!XGIW_!ofQ$qx?Hiyc6_B%h3m!ufh{LcE z!WSiwA^ae~!xD%BHR5G}QxI$`n&Vy6h!-Hw0noOQ&r;x+aD))R781z9)y=rPyPVV! zCxed;Y@U5YI17N;8>=6 zXl!C)c*t(_6O&^jqiK6;|M=LOxSsuqeV0UYI4+slvc6rNV{m7xj z(f)q_ud2GMXQVj9?0e+xNd0wn)mLAA$NxUQY7P$C3H-faJTd*Jzm!P)HGlN}rSRhc ze7yZ;BJpHGC6rN1O!3>S8Fh2YtS6_E27f1ORy{S9l4Gluu4kq)a-6DV>$$01-JY`R z15*R_{8YX^I5k)=Ocm;@rdHL5riSXPr&ia8r-o5KtunPW^^vI&InLIusjr<{E62Io zy87tUs2tn1_4N%?8{~MPwz0lxYE%8%scYqTzII*x`l;*Xc(7Ki-!OH992aVv>o-o_ zD95X6Tk1DW-6Y3DwXOASQ`_Wtb#1IZJ~b}K!?o@8o2PEB@0i+QB%GZ4e)Mfk?Uwq) z)I@#f)Xw^?Q@7S{o4O5kN2YeEYn zoHo}drtWqIoV#WWXUN&HJ|SoBc_^VascTDzjOc6o7LtSL*01M#998@f?qeuuZhLP)Gf{}OAn~6 z7Y$s!Wp=M~zuKn8F0k$`OM5RS@bGfK`pvxTUAYgxa}6jaz$a+@^NL zYbfIgVCP6;{Pr&rz9z>_Khr9^?P|H^r(H+QRh)6dPtH^nzU*q-sn0m=w&RZ5{@~HK zKYpOJ@8JXc-g0R2AwRjdan{f7E7xk}<2A>(_E#%yKYIvu_3y(~ukG8D<+`Je&b3e@ z`&g@8Z8q?rls=JqvVq@UG|&$`ELUqbTcujrYx75|S~*!d-fY(JV?b4(t172dt2WrV zfxWfrOyg0feWIz*{cOdl)k-y|;SYLFyClE7>O5{iPSJ~jWyTXf}X*Qq;lIdjCBkweo@9ciD%kaF^M z^lZx+xBSe$X2WaZY#}(%Gs>AR&(+%Q4VVaj z)&2tq_da>}Xz7tBj~qR8@a?`e-K;5hGp`MW*B*Q7z!L`#KlZkH>lyFnExvWsIn%D7 zM(i(xUk~8peFTM*m@-si$^`8&rjm~3q?EZQkxR%?QjXG2#>o;FaLwWwm2xuECTYP7 z)>IC^Z2Zcq9DWTb+p%yauM*CnN@yIKw$y;i<7z=)RSBFKR0W(_)pKT*8p4?&wHi=3 z>{~}#<;Hw*Z?Rr>PdchN*DAWs4B(Z|*2wGRDV~?l|sp zx3jnz#Vdwyc}{Kmm4tgMeqMUV&J*a=&Y8Jt#cfuA8`YgB@Ah_j6}Q}~HfC;VHI=vX zIj8a5&RX^OPJq*iX5;pW+iuoN>o+=icg zAn~kJ+KpfGzEHE@Q%(w$T%%{Io(`SByITD4s)7d^}Z z!J^$P?kY~Z%{tD_R56Q1-M@*+ajR$f#?UE0SqCa-+?_af?_d#MUceF>y-k1Z>Yp22 z#FOvCZQc+HJDD|X10QqPDByeEmUWRzvAN;ASop}?5DGipaVI)v$5@x($Wdaf7^5-& zCyzFtbBY4v#d1Rx0U5>PXZy!z+r{8-uRG)Ij(+i^o`T|76|`!1adNJH+;MTTSUFL4 z%N0;HkMmYmieIq@O>~=mLNKbYWl|RobT_cH;hZjpzl*1+iC*Dfw&V< zx5f>ZYw$|yiqqde;Z_~f@CfelIDK|*#F)>?9P|9LDUQI8Pw7rE05J)m8|WmCB-)tn zw!t$R%w)1Zz0Ym7itQ7aa6(kMEypoP>Q2cwo9Vs9=gPG?r+D0HpLPI>-_q3fPU{#Z z(5oJ=oh^EGa8>YJ>0Zxtnlhd4ofxf4Z0(;t+pW%=01L$Eh>%_ug`LY9mN9J1uabG} z)|eb$P26vQL6=ItT`JX^YOcoPe5rJ5u3QVQWJ)E~tl)GKkmau`mCB7qvt8y&d!R_G z@C-i*{_0-K9_`{!i)6!n6Mq+246?X~#l0-{uplw*DM*TBbhqHZ+knDOSVq<~fo7&L zgipaNB(F;j53bEiy$Y(t{;t8V2k`Men(neYGP@bj{*N0|RxX)Ks$Wr-{7ZqYSt|2V zT4llRa!%S2X16{8MwL|q_|D^d5Z?tS>*Vmg3iXC?Y~y$}z6YHAdN4jUtgPu_wMLD+ zkeM1(!@?x5QEP<_4m&xp%ynv1Sm3ae!mssegRnpSYopqPU#lT>4x=S9%JD}13mNp~hQ7X7>aLeE>Ta$xM3&81 z?ILGwI*F0J{?)hDJ(!IfarZFq4rYB=?N;|nU$;cFyhq(9vwV|t)9hAtzs!||wS04Q zo+~6Ugf)3U?UmZwoNcJRTAvrlvebj&HO#@jV9qVIUmbWMH8rL_tq!V(u;SynhjW(t zOl&NN92-!pA(l{@Rgb8*;I8ejtL|a-DC*uUt=`ievs&Kjqom=&q zVb-5zE5Nj@dWR|j?`{JeA4A=;v&%{Kt>|&Uu&!HC>V@>w?dsQ*qo(ncH>nvu7c*n2 z6RL_ccc|Iu%t=+lnLDL_b=5!{yPUfKF=^FQEnK;~=gK`edrG-DyBn*-5earUyObw) zwACC&f3JEDXF{m4)M<4FckIDPL%O2-a#qcw_I-f(?^Yc^`~vzEQlocrG_scOQqN;F z_hU5gR_{SOZ&tsqUO>(F1~Z&i-=khcI}a>7e@>mp`Mt}|zfZj%=O4uR?{)U63q5UR z)d$q~;o5##7pw(v2((0Ink$o1AMC-0wEB?xe$+moenb6$`Y`%-Q2iigk64#=idtC+ zaK};~Q9pzl52??pkE$QW(Zjiv`b~`dyVZ|i>>oqhFJa6t%PJniivOtkF|7C_Y6&fp z77sgzuznZS$8qml)NiSuh*t0?)hE!4!$LVo?SJYeOV)-X>!(9QI2Y0)wpdUgp|0@`GZ#yk~*N zTda$gzPq@&=1jLY?P(U88Qt;)}fAv8g7wYlo<-N_p1$n z!u+zu+ZW2^l*d^^)|eu7ys6F4Jk#h|#CG|3iRO*vf<9!~isKbq5c^R{I(h6EyLs#w zA2Ek@J$4Kx5ZWjv!e)*gi$Cq|?zB@j_KIV)<2+5-u@_DzpbFG*feJIKpOt2iHxBA(zr+&I54f`1yduG}v{KTYh*k7cO zJDzqA;>&%A#ltK_e?NpHt=W0L6+Kf|rLjfV-@N=L_c5N^fufQ`!9NI<5J?jWAg)&H z4&wmYg|TQXmrCzKWp4yUHlH=pJ^yTI!1IGgNpMOfU3ZyXg2ouCz^`)hXqN~_X-J>l zmCO-PH!!ABiAJkeIoWArJ|8?rE-ZUWxFWA|d9Wg|eJsMlspr#l_v7ppA16x652J<{ zKJ4y@wBcjfv%(R%N7*V@4ECW^t5&Wyt~44D+EVEyR;NxDjYUo`Yd_Lx*P?D=;Y1{hh;H zF9LdC5rjQ(A=QCSe$sR&&Lx&ov;xkU7Y*0}(<;55gNGS<(RhzBo}JWoJW^*_mKYLo zt%*cy@bUCSo=>!mbLOmh&RCy#G4UcSlgd!$3t5~??oTWl&@-$H$psjRfLy7`SaTd6 z*H4a29npzr2U$0q%Y6k z6Ra8hHFVpQN)vl(%}TlE-9Ld-Lgh>4cK2krO_!_;T@1N%1cQ)a zxo^V{*naPL$k7(aM%QQyxz&Rs^7iPW+4l4 zD$_{;r5=OWM1Mf4lX)+6%|*}-aGDJ6$+=}*%eqs_?&RRp8F)F_NU3~y%zCGGtHGsQ zhcv|Q*g(O;{5v_%fdDM-Cit5AW>(g&Yx`Z%91hM+OE|uu3&85#2K$2h6n5K+>%cCG zlk{b=@$!tr(H(liT-g3_2yJ_TR# zDUdLDcg%xy?}$S~Tveu9#Z7==(vUbb__;kZPQy9Va_|2FTjyiU=QkzhuahC`4)+j; zu<{lA=RSuPUNMhG4knRS&){U=lihio`)i*6ZWKo$FC|YpXXnkQcV04{y<|MCsgLca zbsyY0Ru!TnEk44ZL}v^O2=9`(yT|1BY!j}X0nLPY7u-~H?bcjdBYs}D7bp$c&^sab z3L*0|l^R?YjTtRyzncxmC(Y%#Kfy;hNj_tlY11~%%LUW?Mj>gwR)KSa_DjP2j#2uoc28T$oQnb?l~6cQA8qwh!8jt;V8}Q z5sqeo6oEziwf{H9 z2R?&^ewG z{BYk#a6QQ4Ar=H-M2jRVHP3yVCj^b7yZUO%-Tt6%{R+zH0A0N$-NpZd7QH-*{OFLW z^-Zn4#jG~uS>hG_(ZD1VvSJ4Km0e7L zujH1J0UxxrCPZEcjx*310Jdey|Fw&4Wj*c9|a zk8}20N5*(VgtGAOjkg7|jIh2(7OB zDA4CB);J*s%VY{*iO4)+XcCzxMVTj%bV93m#U3 zPsnlJ9TzM7T+|`NT54~1ew_(lckjRSSJSx-6eJ4qF<=IwE=1Nz&R`m!$bPg5KRS>Y zMI@Wvy#@A~S~axpDw=*Z^$5>1 zB8O_p>GIj)>1JbF8?g{HH>-#pLCS8Gp~fKMqD|&=`UC*4OSPz7Wt0*YpV4`Wp0l5j7(0==TIz@Di0_twkK6 z=Y9;0M1+WzEC#7$@u3joO`#C<5t*92Ul|wDH1yAc@3+a}v(Q+F7xIW&%XbFaNwJJx z-?2M+(LPu6=mS*MR(H@ZND5XbBgjWN+$=wlj3Zxsq7nH8YtM0*)ge)riyrI%4os=^ zw&)2CtRkT=P$OiIu6Y!g7HT}@8muNWbF{L0Mejs&u7=Pur|7`b1cO4*p16z3#Wo{# zyN@Z}tXsY+Zp!Sxp>DF??xW9+|{_TWEZVLm3~`MChvI zLMVhQjvHbAY!mj`qZpHKk%shh^=#SmoI1S4ZzYl1jOylw7(>65&cb2~TLJ9su-ys) z(;l?&&WIr4X3!384cdoqj}k=a+fv5Kq`O9$OA^w2(V*{fmS*had(Ax{TR668G9ORP z7emvcOjy|?F#$~hjt7KVgg7z5Oo~AYUKko%v;%UHM=O~YX`Xp!M2eH67|XoPnVAq* zn4iTOiN!h6vv7l$wrF>f0dY>nwUNMJwlG8!j#PM*WH2T)Fe4ZYyaR2kV~V4cni%Yl zunlg74=Tm92^zw}4`PKk9SLlyGGGFugse)4Cc=Z$+OpL3vAzY}(B`Fq5)68EZ7zZV zTzpX%dG!etzKwW-!0+6*?$Y9WIT^#K$PnQn7=!{>$|WncY)!eYoC5J7!u&hIH7Y~* zo_3%HgUSaS72%eSi*$*|(XRdKuNYVM^wEOHY+&L;II$;bZz|f#-fOeDrWqW+nDaJ}=U;x8es~Tm)8p2*_Mn zT9@H4pCz}=5E{rU=O5GL0CN;ZANN@=;8vu3DpX2{(Ae?0wzvr>&S^+z%!Z6*e8Lqf zkSNAG2cxd44*_wD1ga^oa?YOS+B!YQD?oZ>v~f#E-Kf2DG?H z1{Woopu6=1U154KMH!hQP998uvsnc%u^(2P`BQH>8}pupvdH8^z4xKhK-|Yg#;n|qxM2k zY#%;e14YMh?;zC!X#fcT-9tbzOflv!7tabPNuvq zAQ$FI!`-R?NSG;cJ0cz&t_X<-Hx`o=$#|8Y@nm@(L)a_2Kv_#ZAu^Jj1Tqr+PRvh{ zNe$9dx~yxtk>*PBQKWx_t0EvO8i~ZyNHBfGPrFQx3|R-62eJM~m>GlaFh!#{)^KLv zgg`O@d|?jqm}aPDb=_qV*OlE;-~~HCc(dj1w8@)(42gXNA$jinFNBg1Rt^J`Dq;x)DM#%MTJihCQ0rscC8{wWB^;37diSq6^O2m~BkH~=`_`No1HJmvt=7(l{-+yjuG{$~QDR&A*! z)M}LWLtXv2gQz}8_<`(?Fh9ryH8=#+S?c;8l!Sklu>b#oS^q&hH5fg&`P?Fz)zAI z^gstsL}1rts)1PYZBRmKt51y(Hxiuo5=tl)sttf>T@p;Xv-zDz^dbWc*lI+|CLwV! zk0vk?az0#=G0;SjylA!P*4Fk8ss@!RNx1#ZCF5d3J3HWfOfZ~BJ3z$5LEXbD|4sx$ z4pQ{m#qgoUG1>;1-A1@Yq7evBlU|YW9?EmzOqro!@f5fF@4sJrPM9${K|m~4>tx5$ zQZ%826;_oB_sO-f%_k61(S&)@MO^Usid83?jj;-XoKD`i`MIiddZOK&fuc0FP43w? zj=Q4UmNWS)fcB%9b+TYEzpKOc_U+;H>@L2=Ig4j1T5Uj_L9IcUr>kc$XJVAy{J>^P z1!2r>cwf)tT}6F90`Zjsfh&oAXc8@+zB#W$OcFB4bD z=7&~|QYtX!Gr<%6v^O`6iH~6kd&TjKP_P*Xpr8RYbysOjpeieJWuTfug(*J)zcysD zG9)oJS*&6e+C|7`Ui<1UzMwwC$H`;$-B>harK7=~Rf5hcYDyNumPbI*d3F?~Lc#r4 zaNIuwaJ{mjl77wrh9~ybe0tchF3%6kRK%(vY(mG7yVtY1J5WS!2po$Il@?l=plKWg zg1fCHr$Bf|C=11QvY$mmqDje$7zMN*Q9!AM^g;&yRx=2$+lqLglzS_K>rSns@ZQOg z5M40uN-S7BBLv6BN{03hEp!9z%H0H5CVDc-Gmv3>5N0_(hYp3YchW_Ih+X7x2!*n;PRV^t3+Ot3S?*pzR__YxU23x;Iv=5;KySVrL<(`Y16s#o zXdf&FH{vUhtNq*z!U1J|H2c2!usG=kq|cQGu=%Zi2%gFFh=2(&y)0r*s0zt=ReDMBDu=nu}l# zi=HU3eS8GwK92*XMH{Gm%qvHH8SD!SnYM+RyQnKpoip5$gskKX$y8Vu=ELgnCK^x_$jpWA?ok0>$-PWlC@Ej1XQ)L5F_;5J* z5bl_H4I(fzS1Y@qBb41eXr(&>=$vtz2tZ>BudtAabG2PKJ8K}ALiuHmuTFn@C%zl^ zv;4tbz$4^K!=X+D#yK*8>z7fzW z`;9~c;?wwd`UGTxV!2XrT5xmF?jyHxoRkxoQ?GfR*g)Bxt7)Qau@?YWi2MoCuma{R zdU}{!kH(8V3(!MoRzzixhu(yJ%&l`K=)D(>Q>znVuKnU={2}3^PeB&yZ@SoM1<5!H z?9g@30u``9O1MW$PC7;I>05}w^TrDr;eQj=G@28${8Xhmhg9zYECYCnSVY~EtRhcH z$-MemL0bkIM#8HIVb zh#w}!FrPPHv#j|Mp%{IQfLatPNLzz#4vu`DRyuxz~&1n2zC#K>GC{ zgC1`*s9w4BlF?aaKc!^G=vmo8Kq5)93rI@P+HPMw38bRWp{fL&z7mF&@OgbeD*>z} z0xDZKpC3)kZ|eg?>1B_A8b;3w(jwwDHC;m}unw5Xxr=;iAM#31ew!Br$?QW9O+NO- zfqi?A91tW9!(4x#HH0A(wEZlovpn0+GVO(&+5H_>ImzPpSVY*_H!8me6{U$uj*!;d zk<~;+{u?&z%Z22S_Ehzwp4=2$0CHk9qPg%84uCS4`iuCEd~G>$ZdL!rQ@E z7;%q=20}&@%Os>-0BW_hq6g~F(ELgEm=7E>gJ@fQ10scK%Hx&rk2oJ$K%T;nz>Eh? z1$i5myN%zYupGBxBc`w*wh;^ZFGK;GzEAxO27%_5(>2#vdqGz;;FUt%LqU+h`CQ)59#5V}Ebr=TY2%_&~`Ikn^0ss1Y(S z{smsWjP`LAKy^#qo<^HOhKZMH=M0i8Jb$R$ z6v8vXq+@4kj>*$U=a1!tYl!a=+^aZdK9&pH@2`zbdG4b z4@a9Jh5B{6T71b3qhdL zyNqd4fq^|t)qsytdr+~3Sy`1Nxml((R7L+1eRO}CMW66&!+IZ#aDg+!sMIXdO0q!1 zVbl70Felwweny9Xcy19@BQ}R)k%euZ#K(IN3Xnpi5VV+$ffCX&H7}zzgzO8HkdVpV zlC4qvM%iXI7Cmv0dcpJ<`o-HY{zDSNJ)|N3ywGkntl6LtC0Z zgbi*WRx(?TI$){vJzN=DJGfxe~hl0tX(SVB|>yi|08F_K;ji>>#gc|9vMkhrr2LecH zkq)iCY&LXWC+p$+RXRn4LuSY!X|w3#k64XsP{;isi#V_fOZ-tZ_o`-zYZLQhy<@KH zee-&A(4zDc;fXQ6(c3NefAVR!v-n>u{@@A^zlfXMzsE&rwVGqfE?kngg+0H@XY_tU z8(Cu+5IoLCW$6n9Bq41Yn#f=M0=5k6JsBT+1QgLAe;9r7sDh^9{NDhC9Yu}^60Txk z5Y=`GJ~3EW#ar>Y5g+dz;G*va71J214fNhRvLL-c&{nUZTT}lc#exS38LREoQu-py zvlq4W;-cD%K6keI*xOT#yMnhVY|!>^0~ONUqW9;HkaM| zt8Me?*xWBYokS)VU~hJyoyQJJXkX=-$u*NWZz7*^a3O=Tu#l}L&L__$XIGs^zh;Nd zC)8jY`-LF;(tI)bqV-~GI;9F~6|zHf?bWdJpd}rBut?2(%QGfyK+we(^7tNHC@d5@ z1MUZr<07$j4Z^n^bp}Nb|8dNR1%Z1|;uoOFFPZ|%@4{UDTzsyC!Vi@TnB*tGf+V3X zFy$aPCfMKc>I!jW8Cq@_3LUv|8JY}!EL3tuV23W--NYljA~I04SzC`7u%eh8DF8vA zpWR)2LQxG2q z&i4q@k+oMS2ly!E%!A9x2)jyhM8tlzh(f5_0JJg*EYcZtz4>$QX;d1AfQK*lRTgnf z7b^E#=w3kOt_!o}mUS_d_m@pw*dO%E|??GO3|CH1E5Oh_y*8?!&YCw_jQxee%L02aWCvn7q zd49f9uAD%^k^J-rV{O5$03$c!Z(&K0(Fd`~CArC8rF$(um=f%M1s&}Uz+b(rcfXI} z2#eSt5}gh~fCY5xiXgx2_VHoi8p7$c=Ew!m*d*>ktAX8ge2Zz~e$GK2G0X!n5fBk| zFvWX#L_~Ivq2T@swEAPCU-bSPJd>QSw#HZW7=S51VS~VczDNRuKNK~sl}%4_#%Zes zgp{e6 z944VBSpbCc-A{5x590uqWSfa#45#F07*ZLx=QNY%{Ds|p$r_W;(&_$Yvw?l9SQ===yK!WpZ#@*dXolBep zl7f+A+XHMAinF0TiEI?l;J&=LN~eiVjSg$y1!jEeMj*IZf^i!No}K?6k032YTSDR1 zguf4*Pn?Odu&^R{Ai0C*AilNSZn`~OXt^>fvR1KciXte}p0t;#9ojraX2jExdqPZ9 zOp)nnc}4!lyXf7Z8rJS@fvk&4H1#evBv-q9Oem&AwZ+IL(S@rf^lA?d-kmrHg~(k8 zl8M>F8sxzz5@FU+2Qhr-v^<=p@^UWGtIFt&L4sXZR--Y{8H*cNyC0Gt0yr9zB39?; zI42@i{yia=YK!@NXzxrD0$(en<~MQN6EZ>3?hVn6%UK@T3z1reMT8YHJOrr;G=2d) zY(UNf@SsG<9DprM9>J-?xoS`C(v-gOLDzSuc*o%fc19uhUFJvAGF6HBb++x(bx&$3dQH;sLM_{)T za|;@an~t$BS!6f9WaPA2OR^1*LX23A<*LnLi};9gxxa;#a-U`~gaY~`JZKm=Vnl z>P@%-xTxS> zg*)^yynF(ZnQVC2WovvoGboquQ202`3Mbc4$G{S@@W6D**@C5(s$c`EU|=+hqt-#} z5!4e%f+)qA24Y10Y`Ax#V9*>uHt~h$KOs0Z36d@Lv#mJUvklE!{)}T$xZ93ErQAc% zgccAEQX4}z;$%O@WTBDB`i~P`HlXc7AxoJJ|3h!<;6mEY;3r&LC0=)^w;ONh&a-d7}KL=MO#u$;^9Ixg~E=Z9nJ11cqH_13l~?|@yBs)KUb3s zl}S+89V$I?Dcm%vn}MTA_wS&VpNotlF{>Gg89%bB$8dmEg#ZmQW_tD`V3gb~?403F zaFebPVZVs5z`CPEti{XFj!V7kPmx`AD~i@XrBY0(P)L{NXFNTBhSI;C0cS-sw7U5kRrWJ{6YX5pgJ83UHlgmytK8uXJ{QeuS#4u6m{8$2zLcIe_IUJ zI7MlE1lEYI0&AVhk%ni;H*sP-GJsjSK9K;e=m6{Zh2jfhGRt2yjR=m@_Ma^9c6b(fjRibFq#*@}9|vq`(hK+yk{mLpXjrcw6ehb{ zfpwV@cm!uP5`@SVqPCZZsC1!4-zc4m)BerHo~>mC$XvX3shb#$DU%5dA;{g%6%hc4 zV8fMFiUUO*GwlmWSb3#hLKXBX! z4<{mre{Uc{!zuxs^V53M?JrX7V0P6FTxfCa3CET--idRe!~a%Z#~alG$_%ZW-hM`x zAb?>P&vyxcKnZVHAe2!4v$IgBL7ox4g@067;3fS^kcui(De>7c?4)X)!3S-?@r~Ai zozZ@?9(Gs2o`K-zP&M%FzM!vSN6|N9mqDBnUs-x70}wEb1QimTv+xZ?<~&tlMs3~+ z%+4-lu<0^@L$f@c{?`G7&f4doIGfmtIe2LdBm=bnLOTZ|oxXpvJpg|fdVzLqv}(-i zXi!JDOIypipod_jxEi)T%bpptg97yILm}9Ol>4Jf@+Kt?eU&}YqwMwua>rNpGPDrZ zkAUDH`7jJW6czNUd`0dHc6}$8+(D5+40SwU(jm_V0br0@qK;F9P(vXweOUkrQQ9?XwD*5C_qdiq&`CWABuZEV(ItnB~f{4U*9k&L)S zC@L`_QudnBwP`byv4)PiWs(vB@pgP(r6ApJOzW4FR`PPVz0%TuLn9hj1WoAI_%uM= zT>}UYHeS>n>tTzb^8&W`ckuRoEVi*|u@G`S$|F&;j`8Rb7Go@Ew(#wz_&y@p>Qoyz z1k3RzNBYWz$3D)wq98oMBQco?O5cS_T2McR3m+m%@5Vuaxs$M#=^&jz{W7d!`yYtt z41TaKr<1g%fgK}a45C8Cxna}jD8np_BK0gXki`^;X6a)m&zb0TB# zF;P6qjg5i?86Git5_@+_h8nzN;$r136MBd{ipV^VV82P&MV#D8PrzI1b!#t*mdvZDiVq{>=7beSy@@*2o(QA1d2EIj6lq-E5T!~3t}2}1niEnaREw!#|YG* zFmypJ4qH)RaU1jYn}o3uG-74w!nqFCt{&*omM%TD(lI~XZk|M#X$+Jon~;0#!^h)j z0X6_6m_Z?4FwX=*yyOPt3IHM)R+~SOV#v9s&OwN6;EFE?KSLr!3S1TvrwLd$`TMG5y;ZK_ zm2N%m7jE67w`U1M3Z6bf`=rF#Kf8iwMqHy_uS131rhkPF;BNQdFp!0Su@co1@FD36 z9Rc?efOoU_U7Xd%eG(~2J!0oH018+|FzpY9a3T=$M+7X&BiR9(`$N(NyAj9~2$Rli ziro?eD$*x3p@E9t8UhvLh-ae!LgaOQWFNOzkaYu&%Nq$-q$AxaTyB^o8WhKff^?q6 z85Fs)?BLMzh#kdH`4?Xu7;vEZciAQddqGc9efJ&~eUml7R<-@w`#Vk*$2*)33^6?y z(Gp(v3vUd9D%;T2P=M6{EVh(x$tyEn{2SQ60}xCa${^)guYk4P%~KO;8?*Fd`LS% z#0b%SIxX2W2qT!G&!^I7_~m1I7I}pSXpU7Z7X=EW$`Kn&qA*q99TEQFBw(1K@1 zEOJFAco<;}Pd|Z0AW|T*sr#;(Xl39wf&#{O-Ed%`skI5ktBNgix|lG(G3tm$n?N#j z>aF(KnD|Gq6>ufUQo<7P55bX4d%n0Vq~&i=15Az~EjrLXj$qJZhNFuZ51627R?&3wGP= z8(r+a6=z%qcO4p&84tEQKgWHcV1?-yvT4PWkW>V2Nk5}5%9IaxJ7(dH7UpFW(;j;N z*74pFizbV1&cz&m+AQ|6_!J5{`&yw!EDs_X6iTNZ&HMOM9{wPYM69|8H~s^uDMyoE zoknm8y~{R~Vf*rEDxZc7eYs#^vaq{S7Zec5ExDm_vE~}I5h=x=$1|w*f{G!o!yD|Q znvi`FYH6KAm?pOA=Z;`_j#U!yO2s@q~AZ3-1;}pKLZ3J|(7DTM?)ghec(HkUA zW|0J$?+mU>s4Ofvg&aK4ox*y;>#Btzgl?{ar(>>DPzcXo7;Ip}{>~75kMHD}b%}+1 z!)PGnvwQ!kX{1jM;hqbf!ouptwobuHEUebgk+xSyZ4XG>Ki*j#waq&%_me!cLfflP zeYic?Dd?*bj=FVW7`+`1TWlBL`$v!I1zlLvUWK0ExHA--8R?94)}Z~rLXax%K_=Lm z&d51rOLZkuMa;=@HHGw*AT1cb z0|$cft2NnzKmcW~gYbg&2&{rN#Z-w4R)GHy4aQB-D$!aG;!g2DP6`6zw2gig6T(3yXj-WAVQT!}v?bDkz zdb}#3Y<7%Y{2&XVB2owyp;zU8c8n}(B#et)){V#k=e`NVVSLE7NQb&KPINJmt?`0@ zK;Q4qh?o>8BO;7JfKAjpKZX2YIM@F-yG4F8evQ`S4xkA{0|qPY(z4+fbeF=D{s7x4 zNdumrlY|`#9sZy^AP5iid|RsN?4XluC(J14``xp2s4_bUtu;?0V(K_@QSk$>dx?Gw zBEZl^t_+{nXa?=cIX^2W<#rTNl}uPydZnvo*g;g%vwx6NB(qP}u#vORWyt0%6AFXS z@wND7=pdaAW+sd6nJt($sa!A(gl-5^T++0Y0E}>KekF_0M82nI`ITWiFS;)MSV(UD znw1G`C3;c?dGM;NI#Y2Y(HcFH3_EmB%PQoCU<=T8;j=~p+w1davp#mUHwF^KH3{~C zb`0AiwBx&J1x*Fsj=KV%cQ0j%?9+k5L*WwB7>ZzR3OLI!gGj#yA9pk7SwQ_p9-ZO2 zEz!9M{F@k|yA|i>wQWKS>hfai9z2W?fcrWMpbN;4u}#r_MA;O@GO$KWMNg7v%H!yN zKgsoG21h~G(Mk_p8p-jU*+Kxi4|o4N>O_`nt^#)r=HT|>ZI<_k*yZm9O?n$Qr;!(C za_wcoucqI^pups*;uvDZ`gYO?O(0#)K_w*SDOu4G8p{3g`w-GRTU|kI`ImmZ2n;r5 zysVC|8~xT^bGkXaGd_+mGG@8r_}Djl-zl9>Vc5=9UwO)TzH%Ji{@}&3sDb@r=ld-D zJ?{u*GvE9z3EdZ`1`SK3;OkTcwEz+qjJor6(7g^gjkgME$$T9V{3f6wv;%&*KctTz z;@2uI5NzRjo{)^fo&-W+ofP5SO>9Q!74ceY3xC0*8+d_6733(2ee*LsE55QWYdyqs z52Nt&9C<0&E#4oLU*YO%E#gD0dzh_~!}d!8e~YW%P1>{_2ZhlB-ZPfQmI&l8{}G#y@bg%WmBCntC?GupJ?h7S(+Z2f#u<96e5Q3VOU-dpFuliY36l` ztA{Cegmz5_QS1a${vqr{7Wo*)t`h{mfTPeYBFpIUl3bUiiHl}_a=P07Bo~CbZ#u`Y zP44uIDc1ogxE$ksNmQd9OlJHk97v)L=3N*t7z2(-^u!W?6Ok&36SR%UCX z!dAF%gJtXp7O$N?ix3R{-0}>|GB1cx4&f@D z96!%4b5gKf#LeHlvym*LrzX>5oS;zS=N^6X@XX}oufFd2!x~C@Z}=>GyB6)FGs9*YZ);p@T9>VK{xyiZruo|Zx+{!8M}>a)J@YwL ztz*v{$7x`0=oAr^E9{26u{t6}oE2KsBe{uhbztxZ!siizM{ApGI0%_^$w1&dUtNL# zddMjz!ice5B}0&PbPhLY!PX2GbILm7DC2WGRV ziG7^h`#SlhoWd{fLF~xHU7PGv6LOAQKMc0*_5k;60`W7UofZ~WL2@hbnRx!H;Mqe^ z`q3h44l(YKvNU`~1Ep+d01_A845hDJOrqzu`z~w~GuSTRo+RFW$RKEY1V{lyW^Z$y z0U@&!sQLZ6Cf;q>R}=HFN2k|KD}E-49!ttzq$ zjQMOH7m)8D^&5h`cy~DmVolNsIvZ9me@lx{Vo~Cfpc1%t4V0 zsMhjUL81=x`7A)z<;(15j^Q#!lb8(iyms&h>M@%H62#;9(zDD9anZ*Mr5CUKFYRxuY!K{NkR`Ck6IbAB1?tT_~Sq!ict(Hv6eUb&|#GPWX ziv>xkTS0+$U>@gQs;; z(&j^!=`Z0O0N=2Yewt31UrVRWOE55g)y$e-N$1Qj+qU^7bHM(m!n#6||Av#pnc>ui zjJW}uBU<=e8*A&!(w1d@9cQDq(rC*>Tc(}=l6n2g^;def)V~QvE9r0g65B?)Y}8LP zlmDtYitB+fR7UgVk#IEVMcAqtjHnRyVh7SO(y(aRhy=1mjS-|VKb5v$jSA9xANxzk@jH(A=Qi3mWSje)vSS2V%NJO;s6lZM`H`npS$}O z%c|O{dKLPsom!P~e+ZXTO}zPO&I99sV8G3j!3--^RaLMv7V*{$?5@ZdCj`z()7(aJ zrcs7txO!?1uk3jeo7OfU>LCgmyQJU%TRT_F^&LgLsoH}n01+f}3j0wyZlxM1Am9n* zdIfqQTV|!ISLKtWN$drN%?_P1I$lSg80~-o;8Bz&*d*i&yvo3xL!b0mp$xhXT=95? z9QNnP_HuAs`70je3M86&i^K)ss?9~Glhp%=4!1n#|_ixbhT0~ zb2}~vDNERNqgi7&%ABAorUSVeGWxmtggup#_4BRcc%{r#N|q6dL>tplnJ)ykg8R17 zlC;fF;_crq<%Rj7=!%Z!-R7r6+;(pVNPuHSj*7jfS|7Kt`?eTlaGur+ZG#aKPGXLoDfwP> z&Aq6t_%^_W+2GjATnM_35OSL}m#Un8S1p;EpP8L&oh7&0Aisj$c!a6o-E__j-;So4 zjZCDlVPSt_;34k0MHV-(*vw)Jiw9Y3WpRSM;=k}{9|~X00gSwI&+vk9Z*mQh1pLuf zwKY)!>L}#cGp1pJU=Jgy7B0vLeaoGzVbxm5?&(!9BPQf$_W)r~hukdTwNTgzibZ+j zRwF;iZ*HBbzr$aaIcntLnXr?2bJ)ZdR(B`f)&I}lN>2u3I>DFV^RVFofyGJNouU$U Hroa2YRCSH( diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc deleted file mode 100644 index 2b3e6f78e28626ae96194e489daaa4fc656896ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4841 zcmb_gO>-Pa8Sd`+(C%urmSu<7!3C3qfEMiCgcKAQ$Jnt1J8` zU|1ws8uh>7XxipwYvuNDZr;DM9sxA|q90-7H-k7!izrEz4mL6! z{p3$NiMKlFmS=s{xn+Mp=`5R@6o`>K8eETg_5smKy~HZ6)|TDYk<2xbg7X@-g-)?1fy_}nl89Q)!^-$SEx`mWqLpBlGFW3P; zWGPSBgoR=PY>c?RG-2D~z>!>veKz3-?jc)Yd;E|Cy$t9@YCEejVX}H?a35(6DgQAt z8t}o{KZ;$xi(v~)R`5NcTN9DG1wRlIamfE6J{4>1YYbL4k~~TCB1&VW>*!v3!${}q zYo`>QH%pg{U3zAJ8Z2if`(N1I$_A>tIZ9%k#i}Th?xSDi-8|M2(dWuAlX>?um44Rk zCl9;Bonk9X-|oEiW;ag?b!8aEkD^VLcZbQa8={%abeC|`HU8=hcgn^!2~@<{V0irk zZLEgOXTG>_-xB%8rT0vZw_ zi>(BZCy;l>b#Msu%pWvL-Z-@cf(WT`PU$sde<6r8D~NmvTusE6?4Qmb7-ydf(#f_M zJHb1_sx``4^m*Dm^=q3dRbLGC^;c(5~ zHy*i)f~DfFJ8`$cmqs12B=IY2t3%(ZpkY4q54a7WGH!X>ff9RX<0{ ziL#g2_;s_?4*Ao7X$Hv0;$)DE)slc9o@iQE8U@v5^Om9OUD8us*0qYH8Aub-^*nW% zE1kHXYa*rDu~j01xfLxB-Wxo<(z1TMCK8mK;*46W#n1C5clr3tQ|m6>VN`6DHI>Gh zggT!h1D#96T|d(iqS*pAA*j%=3trf#~Pg| zHzK}Oh^F6f1J$$RRhE2~e7C1Iu83#xVA=Z|>K(80#Z*aOK$TMH0sy=W*8%Uu8iS!# zM5r#who+bS$Kf*7{G_Tj?Jew%Pj!3jxny8c#hl2t2w45#Xxy-nqN=u7U2lu^)%H0$ zAxUJyuxx~(wL8kqF#L2B^`|v+VJNdW3^kFebRbqX$~Y5-QJQ9j2_tjV(`=g1s0q%c zOEH=LE){D-jg9DH$H+hQog&SFLQEkw>A2aU?o#PwFQ!E2xZxQgJSTKFn9CREgySBy zxHu9xKSXnpi#Z|OBOhNV2}+{*M4Y3q=B=s`i%-mWF@`$z0PpMul8F`DR@<(A6VvFo zDEld8Z&UWXeg6^_caUoD1isaj zZ@&BHD&qC#WJ}J=CR)@C{m+yZE@rpm-`+&@jI~c0fzbWAmjR=5!Lq@b3H$Ab>S!=T z(QPbIlk~5~1gGkuGNoHcIaN>iHrqsK6;gNwHM@wYnxbqIKa16Gj_}|>FkxXWM0lkW zm6y(@DyH#=o$17?21o?P4`~WAXoD~D@j0_xv(MvbbluSJRQylv9VD~98z>b7L#Pa6QmBduZBYDv@OR3fT> z1uNhJuIV;pqraC?Dt+Aba2?R^-~~{pP|&)<1nA_i8K|2my)lFxLbI2TQEdXlpe~M@ z4*c_y*^>3oNxM@~1rhfcJ47g)f56NhP=o&=%ojq6J^ojNqXXv%ftD4Utj?uK*%_gI~P*(R2H&a%teHG5=TCkW&e Z{MFbc-V}?xcp1qRLTrL!!KoJ;un~3 zDh5uvclYkz>FLyBaYlT6&|Ove`ZbaN5qNUv)1G_agi}dcno&CSfec!fF-njjeW%%s zvxLO6Z|bEn9hVQA$NT4PnkVVYc9Zx?m^RqrQyh*YTv}UpyLpQAroBH|R z@h35J&yVo)3XN(J>RyyamFS#+{j~*KnnH`NUTMWG9I!ip6mOsh*QoAleR%;^I9%zX o+!r-k&_YA*Wn39BqHN&kYu9=hPj6bqdx^Kx5B9`EL?RloUo#g?7ytkO diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc deleted file mode 100644 index 37b8aa3a42cc222321a937879ee5d9a4c6bfccad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21714 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 c_Mfbt)|F2L|5hZ4Wi_@% diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc deleted file mode 100644 index 0cf76aa26227f17937349e014503df5e65a4121c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7337 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 str: - """Replace emoji code in text.""" - get_emoji = EMOJI.__getitem__ - variants = {"text": "\uFE0E", "emoji": "\uFE0F"} - get_variant = variants.get - default_variant_code = variants.get(default_variant, "") if default_variant else "" - - def do_replace(match: Match[str]) -> str: - emoji_code, emoji_name, variant = match.groups() - try: - return get_emoji(emoji_name.lower()) + get_variant( - variant, default_variant_code - ) - except KeyError: - return emoji_code - - return _emoji_sub(do_replace, text) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py deleted file mode 100644 index 094d2dc..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py +++ /dev/null @@ -1,76 +0,0 @@ -CONSOLE_HTML_FORMAT = """\ - - - - - - - -
    {code}
    - - -""" - -CONSOLE_SVG_FORMAT = """\ - - - - - - - - - {lines} - - - {chrome} - - {backgrounds} - - {matrix} - - - -""" - -_SVG_FONT_FAMILY = "Rich Fira Code" -_SVG_CLASSES_PREFIX = "rich-svg" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py deleted file mode 100644 index cbd6da9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Any - - -def load_ipython_extension(ip: Any) -> None: # pragma: no cover - # prevent circular import - from pip._vendor.rich.pretty import install - from pip._vendor.rich.traceback import install as tr_install - - install() - tr_install() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py deleted file mode 100644 index b17ee65..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py +++ /dev/null @@ -1,24 +0,0 @@ -from __future__ import annotations - -from typing import IO, Callable - - -def get_fileno(file_like: IO[str]) -> int | None: - """Get fileno() from a file, accounting for poorly implemented file-like objects. - - Args: - file_like (IO): A file-like object. - - Returns: - int | None: The result of fileno if available, or None if operation failed. - """ - fileno: Callable[[], int] | None = getattr(file_like, "fileno", None) - if fileno is not None: - try: - return fileno() - except Exception: - # `fileno` is documented as potentially raising a OSError - # Alas, from the issues, there are so many poorly implemented file-like objects, - # that `fileno()` can raise just about anything. - return None - return None diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py deleted file mode 100644 index 30446ce..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py +++ /dev/null @@ -1,270 +0,0 @@ -from __future__ import absolute_import - -import inspect -from inspect import cleandoc, getdoc, getfile, isclass, ismodule, signature -from typing import Any, Collection, Iterable, Optional, Tuple, Type, Union - -from .console import Group, RenderableType -from .control import escape_control_codes -from .highlighter import ReprHighlighter -from .jupyter import JupyterMixin -from .panel import Panel -from .pretty import Pretty -from .table import Table -from .text import Text, TextType - - -def _first_paragraph(doc: str) -> str: - """Get the first paragraph from a docstring.""" - paragraph, _, _ = doc.partition("\n\n") - return paragraph - - -class Inspect(JupyterMixin): - """A renderable to inspect any Python Object. - - Args: - obj (Any): An object to inspect. - title (str, optional): Title to display over inspect result, or None use type. Defaults to None. - help (bool, optional): Show full help text rather than just first paragraph. Defaults to False. - methods (bool, optional): Enable inspection of callables. Defaults to False. - docs (bool, optional): Also render doc strings. Defaults to True. - private (bool, optional): Show private attributes (beginning with underscore). Defaults to False. - dunder (bool, optional): Show attributes starting with double underscore. Defaults to False. - sort (bool, optional): Sort attributes alphabetically. Defaults to True. - all (bool, optional): Show all attributes. Defaults to False. - value (bool, optional): Pretty print value of object. Defaults to True. - """ - - def __init__( - self, - obj: Any, - *, - title: Optional[TextType] = None, - help: bool = False, - methods: bool = False, - docs: bool = True, - private: bool = False, - dunder: bool = False, - sort: bool = True, - all: bool = True, - value: bool = True, - ) -> None: - self.highlighter = ReprHighlighter() - self.obj = obj - self.title = title or self._make_title(obj) - if all: - methods = private = dunder = True - self.help = help - self.methods = methods - self.docs = docs or help - self.private = private or dunder - self.dunder = dunder - self.sort = sort - self.value = value - - def _make_title(self, obj: Any) -> Text: - """Make a default title.""" - title_str = ( - str(obj) - if (isclass(obj) or callable(obj) or ismodule(obj)) - else str(type(obj)) - ) - title_text = self.highlighter(title_str) - return title_text - - def __rich__(self) -> Panel: - return Panel.fit( - Group(*self._render()), - title=self.title, - border_style="scope.border", - padding=(0, 1), - ) - - def _get_signature(self, name: str, obj: Any) -> Optional[Text]: - """Get a signature for a callable.""" - try: - _signature = str(signature(obj)) + ":" - except ValueError: - _signature = "(...)" - except TypeError: - return None - - source_filename: Optional[str] = None - try: - source_filename = getfile(obj) - except (OSError, TypeError): - # OSError is raised if obj has no source file, e.g. when defined in REPL. - pass - - callable_name = Text(name, style="inspect.callable") - if source_filename: - callable_name.stylize(f"link file://{source_filename}") - signature_text = self.highlighter(_signature) - - qualname = name or getattr(obj, "__qualname__", name) - - # If obj is a module, there may be classes (which are callable) to display - if inspect.isclass(obj): - prefix = "class" - elif inspect.iscoroutinefunction(obj): - prefix = "async def" - else: - prefix = "def" - - qual_signature = Text.assemble( - (f"{prefix} ", f"inspect.{prefix.replace(' ', '_')}"), - (qualname, "inspect.callable"), - signature_text, - ) - - return qual_signature - - def _render(self) -> Iterable[RenderableType]: - """Render object.""" - - def sort_items(item: Tuple[str, Any]) -> Tuple[bool, str]: - key, (_error, value) = item - return (callable(value), key.strip("_").lower()) - - def safe_getattr(attr_name: str) -> Tuple[Any, Any]: - """Get attribute or any exception.""" - try: - return (None, getattr(obj, attr_name)) - except Exception as error: - return (error, None) - - obj = self.obj - keys = dir(obj) - total_items = len(keys) - if not self.dunder: - keys = [key for key in keys if not key.startswith("__")] - if not self.private: - keys = [key for key in keys if not key.startswith("_")] - not_shown_count = total_items - len(keys) - items = [(key, safe_getattr(key)) for key in keys] - if self.sort: - items.sort(key=sort_items) - - items_table = Table.grid(padding=(0, 1), expand=False) - items_table.add_column(justify="right") - add_row = items_table.add_row - highlighter = self.highlighter - - if callable(obj): - signature = self._get_signature("", obj) - if signature is not None: - yield signature - yield "" - - if self.docs: - _doc = self._get_formatted_doc(obj) - if _doc is not None: - doc_text = Text(_doc, style="inspect.help") - doc_text = highlighter(doc_text) - yield doc_text - yield "" - - if self.value and not (isclass(obj) or callable(obj) or ismodule(obj)): - yield Panel( - Pretty(obj, indent_guides=True, max_length=10, max_string=60), - border_style="inspect.value.border", - ) - yield "" - - for key, (error, value) in items: - key_text = Text.assemble( - ( - key, - "inspect.attr.dunder" if key.startswith("__") else "inspect.attr", - ), - (" =", "inspect.equals"), - ) - if error is not None: - warning = key_text.copy() - warning.stylize("inspect.error") - add_row(warning, highlighter(repr(error))) - continue - - if callable(value): - if not self.methods: - continue - - _signature_text = self._get_signature(key, value) - if _signature_text is None: - add_row(key_text, Pretty(value, highlighter=highlighter)) - else: - if self.docs: - docs = self._get_formatted_doc(value) - if docs is not None: - _signature_text.append("\n" if "\n" in docs else " ") - doc = highlighter(docs) - doc.stylize("inspect.doc") - _signature_text.append(doc) - - add_row(key_text, _signature_text) - else: - add_row(key_text, Pretty(value, highlighter=highlighter)) - if items_table.row_count: - yield items_table - elif not_shown_count: - yield Text.from_markup( - f"[b cyan]{not_shown_count}[/][i] attribute(s) not shown.[/i] " - f"Run [b][magenta]inspect[/]([not b]inspect[/])[/b] for options." - ) - - def _get_formatted_doc(self, object_: Any) -> Optional[str]: - """ - Extract the docstring of an object, process it and returns it. - The processing consists in cleaning up the doctring's indentation, - taking only its 1st paragraph if `self.help` is not True, - and escape its control codes. - - Args: - object_ (Any): the object to get the docstring from. - - Returns: - Optional[str]: the processed docstring, or None if no docstring was found. - """ - docs = getdoc(object_) - if docs is None: - return None - docs = cleandoc(docs).strip() - if not self.help: - docs = _first_paragraph(docs) - return escape_control_codes(docs) - - -def get_object_types_mro(obj: Union[object, Type[Any]]) -> Tuple[type, ...]: - """Returns the MRO of an object's class, or of the object itself if it's a class.""" - if not hasattr(obj, "__mro__"): - # N.B. we cannot use `if type(obj) is type` here because it doesn't work with - # some types of classes, such as the ones that use abc.ABCMeta. - obj = type(obj) - return getattr(obj, "__mro__", ()) - - -def get_object_types_mro_as_strings(obj: object) -> Collection[str]: - """ - Returns the MRO of an object's class as full qualified names, or of the object itself if it's a class. - - Examples: - `object_types_mro_as_strings(JSONDecoder)` will return `['json.decoder.JSONDecoder', 'builtins.object']` - """ - return [ - f'{getattr(type_, "__module__", "")}.{getattr(type_, "__qualname__", "")}' - for type_ in get_object_types_mro(obj) - ] - - -def is_object_one_of_types( - obj: object, fully_qualified_types_names: Collection[str] -) -> bool: - """ - Returns `True` if the given object's class (or the object itself, if it's a class) has one of the - fully qualified names in its MRO. - """ - for type_name in get_object_types_mro_as_strings(obj): - if type_name in fully_qualified_types_names: - return True - return False diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py deleted file mode 100644 index fc16c84..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py +++ /dev/null @@ -1,94 +0,0 @@ -from datetime import datetime -from typing import Iterable, List, Optional, TYPE_CHECKING, Union, Callable - - -from .text import Text, TextType - -if TYPE_CHECKING: - from .console import Console, ConsoleRenderable, RenderableType - from .table import Table - -FormatTimeCallable = Callable[[datetime], Text] - - -class LogRender: - def __init__( - self, - show_time: bool = True, - show_level: bool = False, - show_path: bool = True, - time_format: Union[str, FormatTimeCallable] = "[%x %X]", - omit_repeated_times: bool = True, - level_width: Optional[int] = 8, - ) -> None: - self.show_time = show_time - self.show_level = show_level - self.show_path = show_path - self.time_format = time_format - self.omit_repeated_times = omit_repeated_times - self.level_width = level_width - self._last_time: Optional[Text] = None - - def __call__( - self, - console: "Console", - renderables: Iterable["ConsoleRenderable"], - log_time: Optional[datetime] = None, - time_format: Optional[Union[str, FormatTimeCallable]] = None, - level: TextType = "", - path: Optional[str] = None, - line_no: Optional[int] = None, - link_path: Optional[str] = None, - ) -> "Table": - from .containers import Renderables - from .table import Table - - output = Table.grid(padding=(0, 1)) - output.expand = True - if self.show_time: - output.add_column(style="log.time") - if self.show_level: - output.add_column(style="log.level", width=self.level_width) - output.add_column(ratio=1, style="log.message", overflow="fold") - if self.show_path and path: - output.add_column(style="log.path") - row: List["RenderableType"] = [] - if self.show_time: - log_time = log_time or console.get_datetime() - time_format = time_format or self.time_format - if callable(time_format): - log_time_display = time_format(log_time) - else: - log_time_display = Text(log_time.strftime(time_format)) - if log_time_display == self._last_time and self.omit_repeated_times: - row.append(Text(" " * len(log_time_display))) - else: - row.append(log_time_display) - self._last_time = log_time_display - if self.show_level: - row.append(level) - - row.append(Renderables(renderables)) - if self.show_path and path: - path_text = Text() - path_text.append( - path, style=f"link file://{link_path}" if link_path else "" - ) - if line_no: - path_text.append(":") - path_text.append( - f"{line_no}", - style=f"link file://{link_path}#{line_no}" if link_path else "", - ) - row.append(path_text) - - output.add_row(*row) - return output - - -if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.console import Console - - c = Console() - c.print("[on blue]Hello", justify="right") - c.log("[on blue]hello", justify="right") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py deleted file mode 100644 index 01c6caf..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py +++ /dev/null @@ -1,43 +0,0 @@ -from typing import Iterable, Tuple, TypeVar - -T = TypeVar("T") - - -def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: - """Iterate and generate a tuple with a flag for first value.""" - iter_values = iter(values) - try: - value = next(iter_values) - except StopIteration: - return - yield True, value - for value in iter_values: - yield False, value - - -def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: - """Iterate and generate a tuple with a flag for last value.""" - iter_values = iter(values) - try: - previous_value = next(iter_values) - except StopIteration: - return - for value in iter_values: - yield False, previous_value - previous_value = value - yield True, previous_value - - -def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: - """Iterate and generate a tuple with a flag for first and last value.""" - iter_values = iter(values) - try: - previous_value = next(iter_values) - except StopIteration: - return - first = True - for value in iter_values: - yield first, False, previous_value - first = False - previous_value = value - yield first, True, previous_value diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py deleted file mode 100644 index b659673..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py +++ /dev/null @@ -1,69 +0,0 @@ -from types import TracebackType -from typing import IO, Iterable, Iterator, List, Optional, Type - - -class NullFile(IO[str]): - def close(self) -> None: - pass - - def isatty(self) -> bool: - return False - - def read(self, __n: int = 1) -> str: - return "" - - def readable(self) -> bool: - return False - - def readline(self, __limit: int = 1) -> str: - return "" - - def readlines(self, __hint: int = 1) -> List[str]: - return [] - - def seek(self, __offset: int, __whence: int = 1) -> int: - return 0 - - def seekable(self) -> bool: - return False - - def tell(self) -> int: - return 0 - - def truncate(self, __size: Optional[int] = 1) -> int: - return 0 - - def writable(self) -> bool: - return False - - def writelines(self, __lines: Iterable[str]) -> None: - pass - - def __next__(self) -> str: - return "" - - def __iter__(self) -> Iterator[str]: - return iter([""]) - - def __enter__(self) -> IO[str]: - pass - - def __exit__( - self, - __t: Optional[Type[BaseException]], - __value: Optional[BaseException], - __traceback: Optional[TracebackType], - ) -> None: - pass - - def write(self, text: str) -> int: - return 0 - - def flush(self) -> None: - pass - - def fileno(self) -> int: - return -1 - - -NULL_FILE = NullFile() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py deleted file mode 100644 index 3c748d3..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py +++ /dev/null @@ -1,309 +0,0 @@ -from .palette import Palette - - -# Taken from https://en.wikipedia.org/wiki/ANSI_escape_code (Windows 10 column) -WINDOWS_PALETTE = Palette( - [ - (12, 12, 12), - (197, 15, 31), - (19, 161, 14), - (193, 156, 0), - (0, 55, 218), - (136, 23, 152), - (58, 150, 221), - (204, 204, 204), - (118, 118, 118), - (231, 72, 86), - (22, 198, 12), - (249, 241, 165), - (59, 120, 255), - (180, 0, 158), - (97, 214, 214), - (242, 242, 242), - ] -) - -# # The standard ansi colors (including bright variants) -STANDARD_PALETTE = Palette( - [ - (0, 0, 0), - (170, 0, 0), - (0, 170, 0), - (170, 85, 0), - (0, 0, 170), - (170, 0, 170), - (0, 170, 170), - (170, 170, 170), - (85, 85, 85), - (255, 85, 85), - (85, 255, 85), - (255, 255, 85), - (85, 85, 255), - (255, 85, 255), - (85, 255, 255), - (255, 255, 255), - ] -) - - -# The 256 color palette -EIGHT_BIT_PALETTE = Palette( - [ - (0, 0, 0), - (128, 0, 0), - (0, 128, 0), - (128, 128, 0), - (0, 0, 128), - (128, 0, 128), - (0, 128, 128), - (192, 192, 192), - (128, 128, 128), - (255, 0, 0), - (0, 255, 0), - (255, 255, 0), - (0, 0, 255), - (255, 0, 255), - (0, 255, 255), - (255, 255, 255), - (0, 0, 0), - (0, 0, 95), - (0, 0, 135), - (0, 0, 175), - (0, 0, 215), - (0, 0, 255), - (0, 95, 0), - (0, 95, 95), - (0, 95, 135), - (0, 95, 175), - (0, 95, 215), - (0, 95, 255), - (0, 135, 0), - (0, 135, 95), - (0, 135, 135), - (0, 135, 175), - (0, 135, 215), - (0, 135, 255), - (0, 175, 0), - (0, 175, 95), - (0, 175, 135), - (0, 175, 175), - (0, 175, 215), - (0, 175, 255), - (0, 215, 0), - (0, 215, 95), - (0, 215, 135), - (0, 215, 175), - (0, 215, 215), - (0, 215, 255), - (0, 255, 0), - (0, 255, 95), - (0, 255, 135), - (0, 255, 175), - (0, 255, 215), - (0, 255, 255), - (95, 0, 0), - (95, 0, 95), - (95, 0, 135), - (95, 0, 175), - (95, 0, 215), - (95, 0, 255), - (95, 95, 0), - (95, 95, 95), - (95, 95, 135), - (95, 95, 175), - (95, 95, 215), - (95, 95, 255), - (95, 135, 0), - (95, 135, 95), - (95, 135, 135), - (95, 135, 175), - (95, 135, 215), - (95, 135, 255), - (95, 175, 0), - (95, 175, 95), - (95, 175, 135), - (95, 175, 175), - (95, 175, 215), - (95, 175, 255), - (95, 215, 0), - (95, 215, 95), - (95, 215, 135), - (95, 215, 175), - (95, 215, 215), - (95, 215, 255), - (95, 255, 0), - (95, 255, 95), - (95, 255, 135), - (95, 255, 175), - (95, 255, 215), - (95, 255, 255), - (135, 0, 0), - (135, 0, 95), - (135, 0, 135), - (135, 0, 175), - (135, 0, 215), - (135, 0, 255), - (135, 95, 0), - (135, 95, 95), - (135, 95, 135), - (135, 95, 175), - (135, 95, 215), - (135, 95, 255), - (135, 135, 0), - (135, 135, 95), - (135, 135, 135), - (135, 135, 175), - (135, 135, 215), - (135, 135, 255), - (135, 175, 0), - (135, 175, 95), - (135, 175, 135), - (135, 175, 175), - (135, 175, 215), - (135, 175, 255), - (135, 215, 0), - (135, 215, 95), - (135, 215, 135), - (135, 215, 175), - (135, 215, 215), - (135, 215, 255), - (135, 255, 0), - (135, 255, 95), - (135, 255, 135), - (135, 255, 175), - (135, 255, 215), - (135, 255, 255), - (175, 0, 0), - (175, 0, 95), - (175, 0, 135), - (175, 0, 175), - (175, 0, 215), - (175, 0, 255), - (175, 95, 0), - (175, 95, 95), - (175, 95, 135), - (175, 95, 175), - (175, 95, 215), - (175, 95, 255), - (175, 135, 0), - (175, 135, 95), - (175, 135, 135), - (175, 135, 175), - (175, 135, 215), - (175, 135, 255), - (175, 175, 0), - (175, 175, 95), - (175, 175, 135), - (175, 175, 175), - (175, 175, 215), - (175, 175, 255), - (175, 215, 0), - (175, 215, 95), - (175, 215, 135), - (175, 215, 175), - (175, 215, 215), - (175, 215, 255), - (175, 255, 0), - (175, 255, 95), - (175, 255, 135), - (175, 255, 175), - (175, 255, 215), - (175, 255, 255), - (215, 0, 0), - (215, 0, 95), - (215, 0, 135), - (215, 0, 175), - (215, 0, 215), - (215, 0, 255), - (215, 95, 0), - (215, 95, 95), - (215, 95, 135), - (215, 95, 175), - (215, 95, 215), - (215, 95, 255), - (215, 135, 0), - (215, 135, 95), - (215, 135, 135), - (215, 135, 175), - (215, 135, 215), - (215, 135, 255), - (215, 175, 0), - (215, 175, 95), - (215, 175, 135), - (215, 175, 175), - (215, 175, 215), - (215, 175, 255), - (215, 215, 0), - (215, 215, 95), - (215, 215, 135), - (215, 215, 175), - (215, 215, 215), - (215, 215, 255), - (215, 255, 0), - (215, 255, 95), - (215, 255, 135), - (215, 255, 175), - (215, 255, 215), - (215, 255, 255), - (255, 0, 0), - (255, 0, 95), - (255, 0, 135), - (255, 0, 175), - (255, 0, 215), - (255, 0, 255), - (255, 95, 0), - (255, 95, 95), - (255, 95, 135), - (255, 95, 175), - (255, 95, 215), - (255, 95, 255), - (255, 135, 0), - (255, 135, 95), - (255, 135, 135), - (255, 135, 175), - (255, 135, 215), - (255, 135, 255), - (255, 175, 0), - (255, 175, 95), - (255, 175, 135), - (255, 175, 175), - (255, 175, 215), - (255, 175, 255), - (255, 215, 0), - (255, 215, 95), - (255, 215, 135), - (255, 215, 175), - (255, 215, 215), - (255, 215, 255), - (255, 255, 0), - (255, 255, 95), - (255, 255, 135), - (255, 255, 175), - (255, 255, 215), - (255, 255, 255), - (8, 8, 8), - (18, 18, 18), - (28, 28, 28), - (38, 38, 38), - (48, 48, 48), - (58, 58, 58), - (68, 68, 68), - (78, 78, 78), - (88, 88, 88), - (98, 98, 98), - (108, 108, 108), - (118, 118, 118), - (128, 128, 128), - (138, 138, 138), - (148, 148, 148), - (158, 158, 158), - (168, 168, 168), - (178, 178, 178), - (188, 188, 188), - (198, 198, 198), - (208, 208, 208), - (218, 218, 218), - (228, 228, 228), - (238, 238, 238), - ] -) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py deleted file mode 100644 index 4f6d8b2..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py +++ /dev/null @@ -1,17 +0,0 @@ -from typing import Optional - - -def pick_bool(*values: Optional[bool]) -> bool: - """Pick the first non-none bool or return the last value. - - Args: - *values (bool): Any number of boolean or None values. - - Returns: - bool: First non-none boolean. - """ - assert values, "1 or more values required" - for value in values: - if value is not None: - return value - return bool(value) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py deleted file mode 100644 index e8a3a67..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py +++ /dev/null @@ -1,160 +0,0 @@ -import sys -from fractions import Fraction -from math import ceil -from typing import cast, List, Optional, Sequence - -if sys.version_info >= (3, 8): - from typing import Protocol -else: - from pip._vendor.typing_extensions import Protocol # pragma: no cover - - -class Edge(Protocol): - """Any object that defines an edge (such as Layout).""" - - size: Optional[int] = None - ratio: int = 1 - minimum_size: int = 1 - - -def ratio_resolve(total: int, edges: Sequence[Edge]) -> List[int]: - """Divide total space to satisfy size, ratio, and minimum_size, constraints. - - The returned list of integers should add up to total in most cases, unless it is - impossible to satisfy all the constraints. For instance, if there are two edges - with a minimum size of 20 each and `total` is 30 then the returned list will be - greater than total. In practice, this would mean that a Layout object would - clip the rows that would overflow the screen height. - - Args: - total (int): Total number of characters. - edges (List[Edge]): Edges within total space. - - Returns: - List[int]: Number of characters for each edge. - """ - # Size of edge or None for yet to be determined - sizes = [(edge.size or None) for edge in edges] - - _Fraction = Fraction - - # While any edges haven't been calculated - while None in sizes: - # Get flexible edges and index to map these back on to sizes list - flexible_edges = [ - (index, edge) - for index, (size, edge) in enumerate(zip(sizes, edges)) - if size is None - ] - # Remaining space in total - remaining = total - sum(size or 0 for size in sizes) - if remaining <= 0: - # No room for flexible edges - return [ - ((edge.minimum_size or 1) if size is None else size) - for size, edge in zip(sizes, edges) - ] - # Calculate number of characters in a ratio portion - portion = _Fraction( - remaining, sum((edge.ratio or 1) for _, edge in flexible_edges) - ) - - # If any edges will be less than their minimum, replace size with the minimum - for index, edge in flexible_edges: - if portion * edge.ratio <= edge.minimum_size: - sizes[index] = edge.minimum_size - # New fixed size will invalidate calculations, so we need to repeat the process - break - else: - # Distribute flexible space and compensate for rounding error - # Since edge sizes can only be integers we need to add the remainder - # to the following line - remainder = _Fraction(0) - for index, edge in flexible_edges: - size, remainder = divmod(portion * edge.ratio + remainder, 1) - sizes[index] = size - break - # Sizes now contains integers only - return cast(List[int], sizes) - - -def ratio_reduce( - total: int, ratios: List[int], maximums: List[int], values: List[int] -) -> List[int]: - """Divide an integer total in to parts based on ratios. - - Args: - total (int): The total to divide. - ratios (List[int]): A list of integer ratios. - maximums (List[int]): List of maximums values for each slot. - values (List[int]): List of values - - Returns: - List[int]: A list of integers guaranteed to sum to total. - """ - ratios = [ratio if _max else 0 for ratio, _max in zip(ratios, maximums)] - total_ratio = sum(ratios) - if not total_ratio: - return values[:] - total_remaining = total - result: List[int] = [] - append = result.append - for ratio, maximum, value in zip(ratios, maximums, values): - if ratio and total_ratio > 0: - distributed = min(maximum, round(ratio * total_remaining / total_ratio)) - append(value - distributed) - total_remaining -= distributed - total_ratio -= ratio - else: - append(value) - return result - - -def ratio_distribute( - total: int, ratios: List[int], minimums: Optional[List[int]] = None -) -> List[int]: - """Distribute an integer total in to parts based on ratios. - - Args: - total (int): The total to divide. - ratios (List[int]): A list of integer ratios. - minimums (List[int]): List of minimum values for each slot. - - Returns: - List[int]: A list of integers guaranteed to sum to total. - """ - if minimums: - ratios = [ratio if _min else 0 for ratio, _min in zip(ratios, minimums)] - total_ratio = sum(ratios) - assert total_ratio > 0, "Sum of ratios must be > 0" - - total_remaining = total - distributed_total: List[int] = [] - append = distributed_total.append - if minimums is None: - _minimums = [0] * len(ratios) - else: - _minimums = minimums - for ratio, minimum in zip(ratios, _minimums): - if total_ratio > 0: - distributed = max(minimum, ceil(ratio * total_remaining / total_ratio)) - else: - distributed = total_remaining - append(distributed) - total_ratio -= ratio - total_remaining -= distributed - return distributed_total - - -if __name__ == "__main__": - from dataclasses import dataclass - - @dataclass - class E: - - size: Optional[int] = None - ratio: int = 1 - minimum_size: int = 1 - - resolved = ratio_resolve(110, [E(None, 1, 1), E(None, 1, 1), E(None, 1, 1)]) - print(sum(resolved)) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py deleted file mode 100644 index d0bb1fe..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py +++ /dev/null @@ -1,482 +0,0 @@ -""" -Spinners are from: -* cli-spinners: - MIT License - Copyright (c) Sindre Sorhus (sindresorhus.com) - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE - FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -""" - -SPINNERS = { - "dots": { - "interval": 80, - "frames": "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏", - }, - "dots2": {"interval": 80, "frames": "⣾⣽⣻⢿⡿⣟⣯⣷"}, - "dots3": { - "interval": 80, - "frames": "⠋⠙⠚⠞⠖⠦⠴⠲⠳⠓", - }, - "dots4": { - "interval": 80, - "frames": "⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆", - }, - "dots5": { - "interval": 80, - "frames": "⠋⠙⠚⠒⠂⠂⠒⠲⠴⠦⠖⠒⠐⠐⠒⠓⠋", - }, - "dots6": { - "interval": 80, - "frames": "⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠴⠲⠒⠂⠂⠒⠚⠙⠉⠁", - }, - "dots7": { - "interval": 80, - "frames": "⠈⠉⠋⠓⠒⠐⠐⠒⠖⠦⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈", - }, - "dots8": { - "interval": 80, - "frames": "⠁⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈⠈", - }, - "dots9": {"interval": 80, "frames": "⢹⢺⢼⣸⣇⡧⡗⡏"}, - "dots10": {"interval": 80, "frames": "⢄⢂⢁⡁⡈⡐⡠"}, - "dots11": {"interval": 100, "frames": "⠁⠂⠄⡀⢀⠠⠐⠈"}, - "dots12": { - "interval": 80, - "frames": [ - "⢀⠀", - "⡀⠀", - "⠄⠀", - "⢂⠀", - "⡂⠀", - "⠅⠀", - "⢃⠀", - "⡃⠀", - "⠍⠀", - "⢋⠀", - "⡋⠀", - "⠍⠁", - "⢋⠁", - "⡋⠁", - "⠍⠉", - "⠋⠉", - "⠋⠉", - "⠉⠙", - "⠉⠙", - "⠉⠩", - "⠈⢙", - "⠈⡙", - "⢈⠩", - "⡀⢙", - "⠄⡙", - "⢂⠩", - "⡂⢘", - "⠅⡘", - "⢃⠨", - "⡃⢐", - "⠍⡐", - "⢋⠠", - "⡋⢀", - "⠍⡁", - "⢋⠁", - "⡋⠁", - "⠍⠉", - "⠋⠉", - "⠋⠉", - "⠉⠙", - "⠉⠙", - "⠉⠩", - "⠈⢙", - "⠈⡙", - "⠈⠩", - "⠀⢙", - "⠀⡙", - "⠀⠩", - "⠀⢘", - "⠀⡘", - "⠀⠨", - "⠀⢐", - "⠀⡐", - "⠀⠠", - "⠀⢀", - "⠀⡀", - ], - }, - "dots8Bit": { - "interval": 80, - "frames": "⠀⠁⠂⠃⠄⠅⠆⠇⡀⡁⡂⡃⡄⡅⡆⡇⠈⠉⠊⠋⠌⠍⠎⠏⡈⡉⡊⡋⡌⡍⡎⡏⠐⠑⠒⠓⠔⠕⠖⠗⡐⡑⡒⡓⡔⡕⡖⡗⠘⠙⠚⠛⠜⠝⠞⠟⡘⡙" - "⡚⡛⡜⡝⡞⡟⠠⠡⠢⠣⠤⠥⠦⠧⡠⡡⡢⡣⡤⡥⡦⡧⠨⠩⠪⠫⠬⠭⠮⠯⡨⡩⡪⡫⡬⡭⡮⡯⠰⠱⠲⠳⠴⠵⠶⠷⡰⡱⡲⡳⡴⡵⡶⡷⠸⠹⠺⠻" - "⠼⠽⠾⠿⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⣀⣁⣂⣃⣄⣅⣆⣇⢈⢉⢊⢋⢌⢍⢎⢏⣈⣉⣊⣋⣌⣍⣎⣏⢐⢑⢒⢓⢔⢕⢖⢗⣐⣑⣒⣓⣔⣕" - "⣖⣗⢘⢙⢚⢛⢜⢝⢞⢟⣘⣙⣚⣛⣜⣝⣞⣟⢠⢡⢢⢣⢤⢥⢦⢧⣠⣡⣢⣣⣤⣥⣦⣧⢨⢩⢪⢫⢬⢭⢮⢯⣨⣩⣪⣫⣬⣭⣮⣯⢰⢱⢲⢳⢴⢵⢶⢷" - "⣰⣱⣲⣳⣴⣵⣶⣷⢸⢹⢺⢻⢼⢽⢾⢿⣸⣹⣺⣻⣼⣽⣾⣿", - }, - "line": {"interval": 130, "frames": ["-", "\\", "|", "/"]}, - "line2": {"interval": 100, "frames": "⠂-–—–-"}, - "pipe": {"interval": 100, "frames": "┤┘┴└├┌┬┐"}, - "simpleDots": {"interval": 400, "frames": [". ", ".. ", "...", " "]}, - "simpleDotsScrolling": { - "interval": 200, - "frames": [". ", ".. ", "...", " ..", " .", " "], - }, - "star": {"interval": 70, "frames": "✶✸✹✺✹✷"}, - "star2": {"interval": 80, "frames": "+x*"}, - "flip": { - "interval": 70, - "frames": "___-``'´-___", - }, - "hamburger": {"interval": 100, "frames": "☱☲☴"}, - "growVertical": { - "interval": 120, - "frames": "▁▃▄▅▆▇▆▅▄▃", - }, - "growHorizontal": { - "interval": 120, - "frames": "▏▎▍▌▋▊▉▊▋▌▍▎", - }, - "balloon": {"interval": 140, "frames": " .oO@* "}, - "balloon2": {"interval": 120, "frames": ".oO°Oo."}, - "noise": {"interval": 100, "frames": "▓▒░"}, - "bounce": {"interval": 120, "frames": "⠁⠂⠄⠂"}, - "boxBounce": {"interval": 120, "frames": "▖▘▝▗"}, - "boxBounce2": {"interval": 100, "frames": "▌▀▐▄"}, - "triangle": {"interval": 50, "frames": "◢◣◤◥"}, - "arc": {"interval": 100, "frames": "◜◠◝◞◡◟"}, - "circle": {"interval": 120, "frames": "◡⊙◠"}, - "squareCorners": {"interval": 180, "frames": "◰◳◲◱"}, - "circleQuarters": {"interval": 120, "frames": "◴◷◶◵"}, - "circleHalves": {"interval": 50, "frames": "◐◓◑◒"}, - "squish": {"interval": 100, "frames": "╫╪"}, - "toggle": {"interval": 250, "frames": "⊶⊷"}, - "toggle2": {"interval": 80, "frames": "▫▪"}, - "toggle3": {"interval": 120, "frames": "□■"}, - "toggle4": {"interval": 100, "frames": "■□▪▫"}, - "toggle5": {"interval": 100, "frames": "▮▯"}, - "toggle6": {"interval": 300, "frames": "ဝ၀"}, - "toggle7": {"interval": 80, "frames": "⦾⦿"}, - "toggle8": {"interval": 100, "frames": "◍◌"}, - "toggle9": {"interval": 100, "frames": "◉◎"}, - "toggle10": {"interval": 100, "frames": "㊂㊀㊁"}, - "toggle11": {"interval": 50, "frames": "⧇⧆"}, - "toggle12": {"interval": 120, "frames": "☗☖"}, - "toggle13": {"interval": 80, "frames": "=*-"}, - "arrow": {"interval": 100, "frames": "←↖↑↗→↘↓↙"}, - "arrow2": { - "interval": 80, - "frames": ["⬆️ ", "↗️ ", "➡️ ", "↘️ ", "⬇️ ", "↙️ ", "⬅️ ", "↖️ "], - }, - "arrow3": { - "interval": 120, - "frames": ["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"], - }, - "bouncingBar": { - "interval": 80, - "frames": [ - "[ ]", - "[= ]", - "[== ]", - "[=== ]", - "[ ===]", - "[ ==]", - "[ =]", - "[ ]", - "[ =]", - "[ ==]", - "[ ===]", - "[====]", - "[=== ]", - "[== ]", - "[= ]", - ], - }, - "bouncingBall": { - "interval": 80, - "frames": [ - "( ● )", - "( ● )", - "( ● )", - "( ● )", - "( ●)", - "( ● )", - "( ● )", - "( ● )", - "( ● )", - "(● )", - ], - }, - "smiley": {"interval": 200, "frames": ["😄 ", "😝 "]}, - "monkey": {"interval": 300, "frames": ["🙈 ", "🙈 ", "🙉 ", "🙊 "]}, - "hearts": {"interval": 100, "frames": ["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "]}, - "clock": { - "interval": 100, - "frames": [ - "🕛 ", - "🕐 ", - "🕑 ", - "🕒 ", - "🕓 ", - "🕔 ", - "🕕 ", - "🕖 ", - "🕗 ", - "🕘 ", - "🕙 ", - "🕚 ", - ], - }, - "earth": {"interval": 180, "frames": ["🌍 ", "🌎 ", "🌏 "]}, - "material": { - "interval": 17, - "frames": [ - "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "███████▁▁▁▁▁▁▁▁▁▁▁▁▁", - "████████▁▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "██████████▁▁▁▁▁▁▁▁▁▁", - "███████████▁▁▁▁▁▁▁▁▁", - "█████████████▁▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁▁██████████████▁▁▁▁", - "▁▁▁██████████████▁▁▁", - "▁▁▁▁█████████████▁▁▁", - "▁▁▁▁██████████████▁▁", - "▁▁▁▁██████████████▁▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁▁██████████████", - "▁▁▁▁▁▁██████████████", - "▁▁▁▁▁▁▁█████████████", - "▁▁▁▁▁▁▁█████████████", - "▁▁▁▁▁▁▁▁████████████", - "▁▁▁▁▁▁▁▁████████████", - "▁▁▁▁▁▁▁▁▁███████████", - "▁▁▁▁▁▁▁▁▁███████████", - "▁▁▁▁▁▁▁▁▁▁██████████", - "▁▁▁▁▁▁▁▁▁▁██████████", - "▁▁▁▁▁▁▁▁▁▁▁▁████████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "████████▁▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "███████████▁▁▁▁▁▁▁▁▁", - "████████████▁▁▁▁▁▁▁▁", - "████████████▁▁▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁▁▁█████████████▁▁▁▁", - "▁▁▁▁▁████████████▁▁▁", - "▁▁▁▁▁████████████▁▁▁", - "▁▁▁▁▁▁███████████▁▁▁", - "▁▁▁▁▁▁▁▁█████████▁▁▁", - "▁▁▁▁▁▁▁▁█████████▁▁▁", - "▁▁▁▁▁▁▁▁▁█████████▁▁", - "▁▁▁▁▁▁▁▁▁█████████▁▁", - "▁▁▁▁▁▁▁▁▁▁█████████▁", - "▁▁▁▁▁▁▁▁▁▁▁████████▁", - "▁▁▁▁▁▁▁▁▁▁▁████████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - ], - }, - "moon": { - "interval": 80, - "frames": ["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "], - }, - "runner": {"interval": 140, "frames": ["🚶 ", "🏃 "]}, - "pong": { - "interval": 80, - "frames": [ - "▐⠂ ▌", - "▐⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂▌", - "▐ ⠠▌", - "▐ ⡀▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐⠠ ▌", - ], - }, - "shark": { - "interval": 120, - "frames": [ - "▐|\\____________▌", - "▐_|\\___________▌", - "▐__|\\__________▌", - "▐___|\\_________▌", - "▐____|\\________▌", - "▐_____|\\_______▌", - "▐______|\\______▌", - "▐_______|\\_____▌", - "▐________|\\____▌", - "▐_________|\\___▌", - "▐__________|\\__▌", - "▐___________|\\_▌", - "▐____________|\\▌", - "▐____________/|▌", - "▐___________/|_▌", - "▐__________/|__▌", - "▐_________/|___▌", - "▐________/|____▌", - "▐_______/|_____▌", - "▐______/|______▌", - "▐_____/|_______▌", - "▐____/|________▌", - "▐___/|_________▌", - "▐__/|__________▌", - "▐_/|___________▌", - "▐/|____________▌", - ], - }, - "dqpb": {"interval": 100, "frames": "dqpb"}, - "weather": { - "interval": 100, - "frames": [ - "☀️ ", - "☀️ ", - "☀️ ", - "🌤 ", - "⛅️ ", - "🌥 ", - "☁️ ", - "🌧 ", - "🌨 ", - "🌧 ", - "🌨 ", - "🌧 ", - "🌨 ", - "⛈ ", - "🌨 ", - "🌧 ", - "🌨 ", - "☁️ ", - "🌥 ", - "⛅️ ", - "🌤 ", - "☀️ ", - "☀️ ", - ], - }, - "christmas": {"interval": 400, "frames": "🌲🎄"}, - "grenade": { - "interval": 80, - "frames": [ - "، ", - "′ ", - " ´ ", - " ‾ ", - " ⸌", - " ⸊", - " |", - " ⁎", - " ⁕", - " ෴ ", - " ⁓", - " ", - " ", - " ", - ], - }, - "point": {"interval": 125, "frames": ["∙∙∙", "●∙∙", "∙●∙", "∙∙●", "∙∙∙"]}, - "layer": {"interval": 150, "frames": "-=≡"}, - "betaWave": { - "interval": 80, - "frames": [ - "ρββββββ", - "βρβββββ", - "ββρββββ", - "βββρβββ", - "ββββρββ", - "βββββρβ", - "ββββββρ", - ], - }, - "aesthetic": { - "interval": 80, - "frames": [ - "▰▱▱▱▱▱▱", - "▰▰▱▱▱▱▱", - "▰▰▰▱▱▱▱", - "▰▰▰▰▱▱▱", - "▰▰▰▰▰▱▱", - "▰▰▰▰▰▰▱", - "▰▰▰▰▰▰▰", - "▰▱▱▱▱▱▱", - ], - }, -} diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py deleted file mode 100644 index 194564e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py +++ /dev/null @@ -1,16 +0,0 @@ -from typing import List, TypeVar - -T = TypeVar("T") - - -class Stack(List[T]): - """A small shim over builtin list.""" - - @property - def top(self) -> T: - """Get top of stack.""" - return self[-1] - - def push(self, item: T) -> None: - """Push an item on to the stack (append in stack nomenclature).""" - self.append(item) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py deleted file mode 100644 index a2ca6be..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py +++ /dev/null @@ -1,19 +0,0 @@ -""" -Timer context manager, only used in debug. - -""" - -from time import time - -import contextlib -from typing import Generator - - -@contextlib.contextmanager -def timer(subject: str = "time") -> Generator[None, None, None]: - """print the elapsed time. (only used in debugging)""" - start = time() - yield - elapsed = time() - start - elapsed_ms = elapsed * 1000 - print(f"{subject} elapsed {elapsed_ms:.1f}ms") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py deleted file mode 100644 index 81b1082..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py +++ /dev/null @@ -1,662 +0,0 @@ -"""Light wrapper around the Win32 Console API - this module should only be imported on Windows - -The API that this module wraps is documented at https://docs.microsoft.com/en-us/windows/console/console-functions -""" -import ctypes -import sys -from typing import Any - -windll: Any = None -if sys.platform == "win32": - windll = ctypes.LibraryLoader(ctypes.WinDLL) -else: - raise ImportError(f"{__name__} can only be imported on Windows") - -import time -from ctypes import Structure, byref, wintypes -from typing import IO, NamedTuple, Type, cast - -from pip._vendor.rich.color import ColorSystem -from pip._vendor.rich.style import Style - -STDOUT = -11 -ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4 - -COORD = wintypes._COORD - - -class LegacyWindowsError(Exception): - pass - - -class WindowsCoordinates(NamedTuple): - """Coordinates in the Windows Console API are (y, x), not (x, y). - This class is intended to prevent that confusion. - Rows and columns are indexed from 0. - This class can be used in place of wintypes._COORD in arguments and argtypes. - """ - - row: int - col: int - - @classmethod - def from_param(cls, value: "WindowsCoordinates") -> COORD: - """Converts a WindowsCoordinates into a wintypes _COORD structure. - This classmethod is internally called by ctypes to perform the conversion. - - Args: - value (WindowsCoordinates): The input coordinates to convert. - - Returns: - wintypes._COORD: The converted coordinates struct. - """ - return COORD(value.col, value.row) - - -class CONSOLE_SCREEN_BUFFER_INFO(Structure): - _fields_ = [ - ("dwSize", COORD), - ("dwCursorPosition", COORD), - ("wAttributes", wintypes.WORD), - ("srWindow", wintypes.SMALL_RECT), - ("dwMaximumWindowSize", COORD), - ] - - -class CONSOLE_CURSOR_INFO(ctypes.Structure): - _fields_ = [("dwSize", wintypes.DWORD), ("bVisible", wintypes.BOOL)] - - -_GetStdHandle = windll.kernel32.GetStdHandle -_GetStdHandle.argtypes = [ - wintypes.DWORD, -] -_GetStdHandle.restype = wintypes.HANDLE - - -def GetStdHandle(handle: int = STDOUT) -> wintypes.HANDLE: - """Retrieves a handle to the specified standard device (standard input, standard output, or standard error). - - Args: - handle (int): Integer identifier for the handle. Defaults to -11 (stdout). - - Returns: - wintypes.HANDLE: The handle - """ - return cast(wintypes.HANDLE, _GetStdHandle(handle)) - - -_GetConsoleMode = windll.kernel32.GetConsoleMode -_GetConsoleMode.argtypes = [wintypes.HANDLE, wintypes.LPDWORD] -_GetConsoleMode.restype = wintypes.BOOL - - -def GetConsoleMode(std_handle: wintypes.HANDLE) -> int: - """Retrieves the current input mode of a console's input buffer - or the current output mode of a console screen buffer. - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - - Raises: - LegacyWindowsError: If any error occurs while calling the Windows console API. - - Returns: - int: Value representing the current console mode as documented at - https://docs.microsoft.com/en-us/windows/console/getconsolemode#parameters - """ - - console_mode = wintypes.DWORD() - success = bool(_GetConsoleMode(std_handle, console_mode)) - if not success: - raise LegacyWindowsError("Unable to get legacy Windows Console Mode") - return console_mode.value - - -_FillConsoleOutputCharacterW = windll.kernel32.FillConsoleOutputCharacterW -_FillConsoleOutputCharacterW.argtypes = [ - wintypes.HANDLE, - ctypes.c_char, - wintypes.DWORD, - cast(Type[COORD], WindowsCoordinates), - ctypes.POINTER(wintypes.DWORD), -] -_FillConsoleOutputCharacterW.restype = wintypes.BOOL - - -def FillConsoleOutputCharacter( - std_handle: wintypes.HANDLE, - char: str, - length: int, - start: WindowsCoordinates, -) -> int: - """Writes a character to the console screen buffer a specified number of times, beginning at the specified coordinates. - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - char (str): The character to write. Must be a string of length 1. - length (int): The number of times to write the character. - start (WindowsCoordinates): The coordinates to start writing at. - - Returns: - int: The number of characters written. - """ - character = ctypes.c_char(char.encode()) - num_characters = wintypes.DWORD(length) - num_written = wintypes.DWORD(0) - _FillConsoleOutputCharacterW( - std_handle, - character, - num_characters, - start, - byref(num_written), - ) - return num_written.value - - -_FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute -_FillConsoleOutputAttribute.argtypes = [ - wintypes.HANDLE, - wintypes.WORD, - wintypes.DWORD, - cast(Type[COORD], WindowsCoordinates), - ctypes.POINTER(wintypes.DWORD), -] -_FillConsoleOutputAttribute.restype = wintypes.BOOL - - -def FillConsoleOutputAttribute( - std_handle: wintypes.HANDLE, - attributes: int, - length: int, - start: WindowsCoordinates, -) -> int: - """Sets the character attributes for a specified number of character cells, - beginning at the specified coordinates in a screen buffer. - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - attributes (int): Integer value representing the foreground and background colours of the cells. - length (int): The number of cells to set the output attribute of. - start (WindowsCoordinates): The coordinates of the first cell whose attributes are to be set. - - Returns: - int: The number of cells whose attributes were actually set. - """ - num_cells = wintypes.DWORD(length) - style_attrs = wintypes.WORD(attributes) - num_written = wintypes.DWORD(0) - _FillConsoleOutputAttribute( - std_handle, style_attrs, num_cells, start, byref(num_written) - ) - return num_written.value - - -_SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute -_SetConsoleTextAttribute.argtypes = [ - wintypes.HANDLE, - wintypes.WORD, -] -_SetConsoleTextAttribute.restype = wintypes.BOOL - - -def SetConsoleTextAttribute( - std_handle: wintypes.HANDLE, attributes: wintypes.WORD -) -> bool: - """Set the colour attributes for all text written after this function is called. - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - attributes (int): Integer value representing the foreground and background colours. - - - Returns: - bool: True if the attribute was set successfully, otherwise False. - """ - return bool(_SetConsoleTextAttribute(std_handle, attributes)) - - -_GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo -_GetConsoleScreenBufferInfo.argtypes = [ - wintypes.HANDLE, - ctypes.POINTER(CONSOLE_SCREEN_BUFFER_INFO), -] -_GetConsoleScreenBufferInfo.restype = wintypes.BOOL - - -def GetConsoleScreenBufferInfo( - std_handle: wintypes.HANDLE, -) -> CONSOLE_SCREEN_BUFFER_INFO: - """Retrieves information about the specified console screen buffer. - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - - Returns: - CONSOLE_SCREEN_BUFFER_INFO: A CONSOLE_SCREEN_BUFFER_INFO ctype struct contain information about - screen size, cursor position, colour attributes, and more.""" - console_screen_buffer_info = CONSOLE_SCREEN_BUFFER_INFO() - _GetConsoleScreenBufferInfo(std_handle, byref(console_screen_buffer_info)) - return console_screen_buffer_info - - -_SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition -_SetConsoleCursorPosition.argtypes = [ - wintypes.HANDLE, - cast(Type[COORD], WindowsCoordinates), -] -_SetConsoleCursorPosition.restype = wintypes.BOOL - - -def SetConsoleCursorPosition( - std_handle: wintypes.HANDLE, coords: WindowsCoordinates -) -> bool: - """Set the position of the cursor in the console screen - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - coords (WindowsCoordinates): The coordinates to move the cursor to. - - Returns: - bool: True if the function succeeds, otherwise False. - """ - return bool(_SetConsoleCursorPosition(std_handle, coords)) - - -_GetConsoleCursorInfo = windll.kernel32.GetConsoleCursorInfo -_GetConsoleCursorInfo.argtypes = [ - wintypes.HANDLE, - ctypes.POINTER(CONSOLE_CURSOR_INFO), -] -_GetConsoleCursorInfo.restype = wintypes.BOOL - - -def GetConsoleCursorInfo( - std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO -) -> bool: - """Get the cursor info - used to get cursor visibility and width - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct that receives information - about the console's cursor. - - Returns: - bool: True if the function succeeds, otherwise False. - """ - return bool(_GetConsoleCursorInfo(std_handle, byref(cursor_info))) - - -_SetConsoleCursorInfo = windll.kernel32.SetConsoleCursorInfo -_SetConsoleCursorInfo.argtypes = [ - wintypes.HANDLE, - ctypes.POINTER(CONSOLE_CURSOR_INFO), -] -_SetConsoleCursorInfo.restype = wintypes.BOOL - - -def SetConsoleCursorInfo( - std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO -) -> bool: - """Set the cursor info - used for adjusting cursor visibility and width - - Args: - std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. - cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct containing the new cursor info. - - Returns: - bool: True if the function succeeds, otherwise False. - """ - return bool(_SetConsoleCursorInfo(std_handle, byref(cursor_info))) - - -_SetConsoleTitle = windll.kernel32.SetConsoleTitleW -_SetConsoleTitle.argtypes = [wintypes.LPCWSTR] -_SetConsoleTitle.restype = wintypes.BOOL - - -def SetConsoleTitle(title: str) -> bool: - """Sets the title of the current console window - - Args: - title (str): The new title of the console window. - - Returns: - bool: True if the function succeeds, otherwise False. - """ - return bool(_SetConsoleTitle(title)) - - -class LegacyWindowsTerm: - """This class allows interaction with the legacy Windows Console API. It should only be used in the context - of environments where virtual terminal processing is not available. However, if it is used in a Windows environment, - the entire API should work. - - Args: - file (IO[str]): The file which the Windows Console API HANDLE is retrieved from, defaults to sys.stdout. - """ - - BRIGHT_BIT = 8 - - # Indices are ANSI color numbers, values are the corresponding Windows Console API color numbers - ANSI_TO_WINDOWS = [ - 0, # black The Windows colours are defined in wincon.h as follows: - 4, # red define FOREGROUND_BLUE 0x0001 -- 0000 0001 - 2, # green define FOREGROUND_GREEN 0x0002 -- 0000 0010 - 6, # yellow define FOREGROUND_RED 0x0004 -- 0000 0100 - 1, # blue define FOREGROUND_INTENSITY 0x0008 -- 0000 1000 - 5, # magenta define BACKGROUND_BLUE 0x0010 -- 0001 0000 - 3, # cyan define BACKGROUND_GREEN 0x0020 -- 0010 0000 - 7, # white define BACKGROUND_RED 0x0040 -- 0100 0000 - 8, # bright black (grey) define BACKGROUND_INTENSITY 0x0080 -- 1000 0000 - 12, # bright red - 10, # bright green - 14, # bright yellow - 9, # bright blue - 13, # bright magenta - 11, # bright cyan - 15, # bright white - ] - - def __init__(self, file: "IO[str]") -> None: - handle = GetStdHandle(STDOUT) - self._handle = handle - default_text = GetConsoleScreenBufferInfo(handle).wAttributes - self._default_text = default_text - - self._default_fore = default_text & 7 - self._default_back = (default_text >> 4) & 7 - self._default_attrs = self._default_fore | (self._default_back << 4) - - self._file = file - self.write = file.write - self.flush = file.flush - - @property - def cursor_position(self) -> WindowsCoordinates: - """Returns the current position of the cursor (0-based) - - Returns: - WindowsCoordinates: The current cursor position. - """ - coord: COORD = GetConsoleScreenBufferInfo(self._handle).dwCursorPosition - return WindowsCoordinates(row=cast(int, coord.Y), col=cast(int, coord.X)) - - @property - def screen_size(self) -> WindowsCoordinates: - """Returns the current size of the console screen buffer, in character columns and rows - - Returns: - WindowsCoordinates: The width and height of the screen as WindowsCoordinates. - """ - screen_size: COORD = GetConsoleScreenBufferInfo(self._handle).dwSize - return WindowsCoordinates( - row=cast(int, screen_size.Y), col=cast(int, screen_size.X) - ) - - def write_text(self, text: str) -> None: - """Write text directly to the terminal without any modification of styles - - Args: - text (str): The text to write to the console - """ - self.write(text) - self.flush() - - def write_styled(self, text: str, style: Style) -> None: - """Write styled text to the terminal. - - Args: - text (str): The text to write - style (Style): The style of the text - """ - color = style.color - bgcolor = style.bgcolor - if style.reverse: - color, bgcolor = bgcolor, color - - if color: - fore = color.downgrade(ColorSystem.WINDOWS).number - fore = fore if fore is not None else 7 # Default to ANSI 7: White - if style.bold: - fore = fore | self.BRIGHT_BIT - if style.dim: - fore = fore & ~self.BRIGHT_BIT - fore = self.ANSI_TO_WINDOWS[fore] - else: - fore = self._default_fore - - if bgcolor: - back = bgcolor.downgrade(ColorSystem.WINDOWS).number - back = back if back is not None else 0 # Default to ANSI 0: Black - back = self.ANSI_TO_WINDOWS[back] - else: - back = self._default_back - - assert fore is not None - assert back is not None - - SetConsoleTextAttribute( - self._handle, attributes=ctypes.c_ushort(fore | (back << 4)) - ) - self.write_text(text) - SetConsoleTextAttribute(self._handle, attributes=self._default_text) - - def move_cursor_to(self, new_position: WindowsCoordinates) -> None: - """Set the position of the cursor - - Args: - new_position (WindowsCoordinates): The WindowsCoordinates representing the new position of the cursor. - """ - if new_position.col < 0 or new_position.row < 0: - return - SetConsoleCursorPosition(self._handle, coords=new_position) - - def erase_line(self) -> None: - """Erase all content on the line the cursor is currently located at""" - screen_size = self.screen_size - cursor_position = self.cursor_position - cells_to_erase = screen_size.col - start_coordinates = WindowsCoordinates(row=cursor_position.row, col=0) - FillConsoleOutputCharacter( - self._handle, " ", length=cells_to_erase, start=start_coordinates - ) - FillConsoleOutputAttribute( - self._handle, - self._default_attrs, - length=cells_to_erase, - start=start_coordinates, - ) - - def erase_end_of_line(self) -> None: - """Erase all content from the cursor position to the end of that line""" - cursor_position = self.cursor_position - cells_to_erase = self.screen_size.col - cursor_position.col - FillConsoleOutputCharacter( - self._handle, " ", length=cells_to_erase, start=cursor_position - ) - FillConsoleOutputAttribute( - self._handle, - self._default_attrs, - length=cells_to_erase, - start=cursor_position, - ) - - def erase_start_of_line(self) -> None: - """Erase all content from the cursor position to the start of that line""" - row, col = self.cursor_position - start = WindowsCoordinates(row, 0) - FillConsoleOutputCharacter(self._handle, " ", length=col, start=start) - FillConsoleOutputAttribute( - self._handle, self._default_attrs, length=col, start=start - ) - - def move_cursor_up(self) -> None: - """Move the cursor up a single cell""" - cursor_position = self.cursor_position - SetConsoleCursorPosition( - self._handle, - coords=WindowsCoordinates( - row=cursor_position.row - 1, col=cursor_position.col - ), - ) - - def move_cursor_down(self) -> None: - """Move the cursor down a single cell""" - cursor_position = self.cursor_position - SetConsoleCursorPosition( - self._handle, - coords=WindowsCoordinates( - row=cursor_position.row + 1, - col=cursor_position.col, - ), - ) - - def move_cursor_forward(self) -> None: - """Move the cursor forward a single cell. Wrap to the next line if required.""" - row, col = self.cursor_position - if col == self.screen_size.col - 1: - row += 1 - col = 0 - else: - col += 1 - SetConsoleCursorPosition( - self._handle, coords=WindowsCoordinates(row=row, col=col) - ) - - def move_cursor_to_column(self, column: int) -> None: - """Move cursor to the column specified by the zero-based column index, staying on the same row - - Args: - column (int): The zero-based column index to move the cursor to. - """ - row, _ = self.cursor_position - SetConsoleCursorPosition(self._handle, coords=WindowsCoordinates(row, column)) - - def move_cursor_backward(self) -> None: - """Move the cursor backward a single cell. Wrap to the previous line if required.""" - row, col = self.cursor_position - if col == 0: - row -= 1 - col = self.screen_size.col - 1 - else: - col -= 1 - SetConsoleCursorPosition( - self._handle, coords=WindowsCoordinates(row=row, col=col) - ) - - def hide_cursor(self) -> None: - """Hide the cursor""" - current_cursor_size = self._get_cursor_size() - invisible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=0) - SetConsoleCursorInfo(self._handle, cursor_info=invisible_cursor) - - def show_cursor(self) -> None: - """Show the cursor""" - current_cursor_size = self._get_cursor_size() - visible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=1) - SetConsoleCursorInfo(self._handle, cursor_info=visible_cursor) - - def set_title(self, title: str) -> None: - """Set the title of the terminal window - - Args: - title (str): The new title of the console window - """ - assert len(title) < 255, "Console title must be less than 255 characters" - SetConsoleTitle(title) - - def _get_cursor_size(self) -> int: - """Get the percentage of the character cell that is filled by the cursor""" - cursor_info = CONSOLE_CURSOR_INFO() - GetConsoleCursorInfo(self._handle, cursor_info=cursor_info) - return int(cursor_info.dwSize) - - -if __name__ == "__main__": - handle = GetStdHandle() - - from pip._vendor.rich.console import Console - - console = Console() - - term = LegacyWindowsTerm(sys.stdout) - term.set_title("Win32 Console Examples") - - style = Style(color="black", bgcolor="red") - - heading = Style.parse("black on green") - - # Check colour output - console.rule("Checking colour output") - console.print("[on red]on red!") - console.print("[blue]blue!") - console.print("[yellow]yellow!") - console.print("[bold yellow]bold yellow!") - console.print("[bright_yellow]bright_yellow!") - console.print("[dim bright_yellow]dim bright_yellow!") - console.print("[italic cyan]italic cyan!") - console.print("[bold white on blue]bold white on blue!") - console.print("[reverse bold white on blue]reverse bold white on blue!") - console.print("[bold black on cyan]bold black on cyan!") - console.print("[black on green]black on green!") - console.print("[blue on green]blue on green!") - console.print("[white on black]white on black!") - console.print("[black on white]black on white!") - console.print("[#1BB152 on #DA812D]#1BB152 on #DA812D!") - - # Check cursor movement - console.rule("Checking cursor movement") - console.print() - term.move_cursor_backward() - term.move_cursor_backward() - term.write_text("went back and wrapped to prev line") - time.sleep(1) - term.move_cursor_up() - term.write_text("we go up") - time.sleep(1) - term.move_cursor_down() - term.write_text("and down") - time.sleep(1) - term.move_cursor_up() - term.move_cursor_backward() - term.move_cursor_backward() - term.write_text("we went up and back 2") - time.sleep(1) - term.move_cursor_down() - term.move_cursor_backward() - term.move_cursor_backward() - term.write_text("we went down and back 2") - time.sleep(1) - - # Check erasing of lines - term.hide_cursor() - console.print() - console.rule("Checking line erasing") - console.print("\n...Deleting to the start of the line...") - term.write_text("The red arrow shows the cursor location, and direction of erase") - time.sleep(1) - term.move_cursor_to_column(16) - term.write_styled("<", Style.parse("black on red")) - term.move_cursor_backward() - time.sleep(1) - term.erase_start_of_line() - time.sleep(1) - - console.print("\n\n...And to the end of the line...") - term.write_text("The red arrow shows the cursor location, and direction of erase") - time.sleep(1) - - term.move_cursor_to_column(16) - term.write_styled(">", Style.parse("black on red")) - time.sleep(1) - term.erase_end_of_line() - time.sleep(1) - - console.print("\n\n...Now the whole line will be erased...") - term.write_styled("I'm going to disappear!", style=Style.parse("black on cyan")) - time.sleep(1) - term.erase_line() - - term.show_cursor() - print("\n") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py deleted file mode 100644 index 10fc0d7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py +++ /dev/null @@ -1,72 +0,0 @@ -import sys -from dataclasses import dataclass - - -@dataclass -class WindowsConsoleFeatures: - """Windows features available.""" - - vt: bool = False - """The console supports VT codes.""" - truecolor: bool = False - """The console supports truecolor.""" - - -try: - import ctypes - from ctypes import LibraryLoader - - if sys.platform == "win32": - windll = LibraryLoader(ctypes.WinDLL) - else: - windll = None - raise ImportError("Not windows") - - from pip._vendor.rich._win32_console import ( - ENABLE_VIRTUAL_TERMINAL_PROCESSING, - GetConsoleMode, - GetStdHandle, - LegacyWindowsError, - ) - -except (AttributeError, ImportError, ValueError): - - # Fallback if we can't load the Windows DLL - def get_windows_console_features() -> WindowsConsoleFeatures: - features = WindowsConsoleFeatures() - return features - -else: - - def get_windows_console_features() -> WindowsConsoleFeatures: - """Get windows console features. - - Returns: - WindowsConsoleFeatures: An instance of WindowsConsoleFeatures. - """ - handle = GetStdHandle() - try: - console_mode = GetConsoleMode(handle) - success = True - except LegacyWindowsError: - console_mode = 0 - success = False - vt = bool(success and console_mode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) - truecolor = False - if vt: - win_version = sys.getwindowsversion() - truecolor = win_version.major > 10 or ( - win_version.major == 10 and win_version.build >= 15063 - ) - features = WindowsConsoleFeatures(vt=vt, truecolor=truecolor) - return features - - -if __name__ == "__main__": - import platform - - features = get_windows_console_features() - from pip._vendor.rich import print - - print(f'platform="{platform.system()}"') - print(repr(features)) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py deleted file mode 100644 index 5ece056..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Iterable, Sequence, Tuple, cast - -from pip._vendor.rich._win32_console import LegacyWindowsTerm, WindowsCoordinates -from pip._vendor.rich.segment import ControlCode, ControlType, Segment - - -def legacy_windows_render(buffer: Iterable[Segment], term: LegacyWindowsTerm) -> None: - """Makes appropriate Windows Console API calls based on the segments in the buffer. - - Args: - buffer (Iterable[Segment]): Iterable of Segments to convert to Win32 API calls. - term (LegacyWindowsTerm): Used to call the Windows Console API. - """ - for text, style, control in buffer: - if not control: - if style: - term.write_styled(text, style) - else: - term.write_text(text) - else: - control_codes: Sequence[ControlCode] = control - for control_code in control_codes: - control_type = control_code[0] - if control_type == ControlType.CURSOR_MOVE_TO: - _, x, y = cast(Tuple[ControlType, int, int], control_code) - term.move_cursor_to(WindowsCoordinates(row=y - 1, col=x - 1)) - elif control_type == ControlType.CARRIAGE_RETURN: - term.write_text("\r") - elif control_type == ControlType.HOME: - term.move_cursor_to(WindowsCoordinates(0, 0)) - elif control_type == ControlType.CURSOR_UP: - term.move_cursor_up() - elif control_type == ControlType.CURSOR_DOWN: - term.move_cursor_down() - elif control_type == ControlType.CURSOR_FORWARD: - term.move_cursor_forward() - elif control_type == ControlType.CURSOR_BACKWARD: - term.move_cursor_backward() - elif control_type == ControlType.CURSOR_MOVE_TO_COLUMN: - _, column = cast(Tuple[ControlType, int], control_code) - term.move_cursor_to_column(column - 1) - elif control_type == ControlType.HIDE_CURSOR: - term.hide_cursor() - elif control_type == ControlType.SHOW_CURSOR: - term.show_cursor() - elif control_type == ControlType.ERASE_IN_LINE: - _, mode = cast(Tuple[ControlType, int], control_code) - if mode == 0: - term.erase_end_of_line() - elif mode == 1: - term.erase_start_of_line() - elif mode == 2: - term.erase_line() - elif control_type == ControlType.SET_WINDOW_TITLE: - _, title = cast(Tuple[ControlType, str], control_code) - term.set_title(title) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py deleted file mode 100644 index c45f193..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py +++ /dev/null @@ -1,56 +0,0 @@ -import re -from typing import Iterable, List, Tuple - -from ._loop import loop_last -from .cells import cell_len, chop_cells - -re_word = re.compile(r"\s*\S+\s*") - - -def words(text: str) -> Iterable[Tuple[int, int, str]]: - position = 0 - word_match = re_word.match(text, position) - while word_match is not None: - start, end = word_match.span() - word = word_match.group(0) - yield start, end, word - word_match = re_word.match(text, end) - - -def divide_line(text: str, width: int, fold: bool = True) -> List[int]: - divides: List[int] = [] - append = divides.append - line_position = 0 - _cell_len = cell_len - for start, _end, word in words(text): - word_length = _cell_len(word.rstrip()) - if line_position + word_length > width: - if word_length > width: - if fold: - chopped_words = chop_cells(word, max_size=width, position=0) - for last, line in loop_last(chopped_words): - if start: - append(start) - - if last: - line_position = _cell_len(line) - else: - start += len(line) - else: - if start: - append(start) - line_position = _cell_len(word) - elif line_position and start: - append(start) - line_position = _cell_len(word) - else: - line_position += _cell_len(word) - return divides - - -if __name__ == "__main__": # pragma: no cover - from .console import Console - - console = Console(width=10) - console.print("12345 abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ 12345") - print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10, position=2)) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py deleted file mode 100644 index e6e498e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py +++ /dev/null @@ -1,33 +0,0 @@ -from abc import ABC - - -class RichRenderable(ABC): - """An abstract base class for Rich renderables. - - Note that there is no need to extend this class, the intended use is to check if an - object supports the Rich renderable protocol. For example:: - - if isinstance(my_object, RichRenderable): - console.print(my_object) - - """ - - @classmethod - def __subclasshook__(cls, other: type) -> bool: - """Check if this class supports the rich render protocol.""" - return hasattr(other, "__rich_console__") or hasattr(other, "__rich__") - - -if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.text import Text - - t = Text() - print(isinstance(Text, RichRenderable)) - print(isinstance(t, RichRenderable)) - - class Foo: - pass - - f = Foo() - print(isinstance(f, RichRenderable)) - print(isinstance("", RichRenderable)) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py deleted file mode 100644 index c310b66..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py +++ /dev/null @@ -1,311 +0,0 @@ -import sys -from itertools import chain -from typing import TYPE_CHECKING, Iterable, Optional - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from pip._vendor.typing_extensions import Literal # pragma: no cover - -from .constrain import Constrain -from .jupyter import JupyterMixin -from .measure import Measurement -from .segment import Segment -from .style import StyleType - -if TYPE_CHECKING: - from .console import Console, ConsoleOptions, RenderableType, RenderResult - -AlignMethod = Literal["left", "center", "right"] -VerticalAlignMethod = Literal["top", "middle", "bottom"] - - -class Align(JupyterMixin): - """Align a renderable by adding spaces if necessary. - - Args: - renderable (RenderableType): A console renderable. - align (AlignMethod): One of "left", "center", or "right"" - style (StyleType, optional): An optional style to apply to the background. - vertical (Optional[VerticalAlginMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None. - pad (bool, optional): Pad the right with spaces. Defaults to True. - width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None. - height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None. - - Raises: - ValueError: if ``align`` is not one of the expected values. - """ - - def __init__( - self, - renderable: "RenderableType", - align: AlignMethod = "left", - style: Optional[StyleType] = None, - *, - vertical: Optional[VerticalAlignMethod] = None, - pad: bool = True, - width: Optional[int] = None, - height: Optional[int] = None, - ) -> None: - if align not in ("left", "center", "right"): - raise ValueError( - f'invalid value for align, expected "left", "center", or "right" (not {align!r})' - ) - if vertical is not None and vertical not in ("top", "middle", "bottom"): - raise ValueError( - f'invalid value for vertical, expected "top", "middle", or "bottom" (not {vertical!r})' - ) - self.renderable = renderable - self.align = align - self.style = style - self.vertical = vertical - self.pad = pad - self.width = width - self.height = height - - def __repr__(self) -> str: - return f"Align({self.renderable!r}, {self.align!r})" - - @classmethod - def left( - cls, - renderable: "RenderableType", - style: Optional[StyleType] = None, - *, - vertical: Optional[VerticalAlignMethod] = None, - pad: bool = True, - width: Optional[int] = None, - height: Optional[int] = None, - ) -> "Align": - """Align a renderable to the left.""" - return cls( - renderable, - "left", - style=style, - vertical=vertical, - pad=pad, - width=width, - height=height, - ) - - @classmethod - def center( - cls, - renderable: "RenderableType", - style: Optional[StyleType] = None, - *, - vertical: Optional[VerticalAlignMethod] = None, - pad: bool = True, - width: Optional[int] = None, - height: Optional[int] = None, - ) -> "Align": - """Align a renderable to the center.""" - return cls( - renderable, - "center", - style=style, - vertical=vertical, - pad=pad, - width=width, - height=height, - ) - - @classmethod - def right( - cls, - renderable: "RenderableType", - style: Optional[StyleType] = None, - *, - vertical: Optional[VerticalAlignMethod] = None, - pad: bool = True, - width: Optional[int] = None, - height: Optional[int] = None, - ) -> "Align": - """Align a renderable to the right.""" - return cls( - renderable, - "right", - style=style, - vertical=vertical, - pad=pad, - width=width, - height=height, - ) - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - align = self.align - width = console.measure(self.renderable, options=options).maximum - rendered = console.render( - Constrain( - self.renderable, width if self.width is None else min(width, self.width) - ), - options.update(height=None), - ) - lines = list(Segment.split_lines(rendered)) - width, height = Segment.get_shape(lines) - lines = Segment.set_shape(lines, width, height) - new_line = Segment.line() - excess_space = options.max_width - width - style = console.get_style(self.style) if self.style is not None else None - - def generate_segments() -> Iterable[Segment]: - if excess_space <= 0: - # Exact fit - for line in lines: - yield from line - yield new_line - - elif align == "left": - # Pad on the right - pad = Segment(" " * excess_space, style) if self.pad else None - for line in lines: - yield from line - if pad: - yield pad - yield new_line - - elif align == "center": - # Pad left and right - left = excess_space // 2 - pad = Segment(" " * left, style) - pad_right = ( - Segment(" " * (excess_space - left), style) if self.pad else None - ) - for line in lines: - if left: - yield pad - yield from line - if pad_right: - yield pad_right - yield new_line - - elif align == "right": - # Padding on left - pad = Segment(" " * excess_space, style) - for line in lines: - yield pad - yield from line - yield new_line - - blank_line = ( - Segment(f"{' ' * (self.width or options.max_width)}\n", style) - if self.pad - else Segment("\n") - ) - - def blank_lines(count: int) -> Iterable[Segment]: - if count > 0: - for _ in range(count): - yield blank_line - - vertical_height = self.height or options.height - iter_segments: Iterable[Segment] - if self.vertical and vertical_height is not None: - if self.vertical == "top": - bottom_space = vertical_height - height - iter_segments = chain(generate_segments(), blank_lines(bottom_space)) - elif self.vertical == "middle": - top_space = (vertical_height - height) // 2 - bottom_space = vertical_height - top_space - height - iter_segments = chain( - blank_lines(top_space), - generate_segments(), - blank_lines(bottom_space), - ) - else: # self.vertical == "bottom": - top_space = vertical_height - height - iter_segments = chain(blank_lines(top_space), generate_segments()) - else: - iter_segments = generate_segments() - if self.style: - style = console.get_style(self.style) - iter_segments = Segment.apply_style(iter_segments, style) - yield from iter_segments - - def __rich_measure__( - self, console: "Console", options: "ConsoleOptions" - ) -> Measurement: - measurement = Measurement.get(console, options, self.renderable) - return measurement - - -class VerticalCenter(JupyterMixin): - """Vertically aligns a renderable. - - Warn: - This class is deprecated and may be removed in a future version. Use Align class with - `vertical="middle"`. - - Args: - renderable (RenderableType): A renderable object. - """ - - def __init__( - self, - renderable: "RenderableType", - style: Optional[StyleType] = None, - ) -> None: - self.renderable = renderable - self.style = style - - def __repr__(self) -> str: - return f"VerticalCenter({self.renderable!r})" - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - style = console.get_style(self.style) if self.style is not None else None - lines = console.render_lines( - self.renderable, options.update(height=None), pad=False - ) - width, _height = Segment.get_shape(lines) - new_line = Segment.line() - height = options.height or options.size.height - top_space = (height - len(lines)) // 2 - bottom_space = height - top_space - len(lines) - blank_line = Segment(f"{' ' * width}", style) - - def blank_lines(count: int) -> Iterable[Segment]: - for _ in range(count): - yield blank_line - yield new_line - - if top_space > 0: - yield from blank_lines(top_space) - for line in lines: - yield from line - yield new_line - if bottom_space > 0: - yield from blank_lines(bottom_space) - - def __rich_measure__( - self, console: "Console", options: "ConsoleOptions" - ) -> Measurement: - measurement = Measurement.get(console, options, self.renderable) - return measurement - - -if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.console import Console, Group - from pip._vendor.rich.highlighter import ReprHighlighter - from pip._vendor.rich.panel import Panel - - highlighter = ReprHighlighter() - console = Console() - - panel = Panel( - Group( - Align.left(highlighter("align='left'")), - Align.center(highlighter("align='center'")), - Align.right(highlighter("align='right'")), - ), - width=60, - style="on dark_blue", - title="Align", - ) - - console.print( - Align.center(panel, vertical="middle", style="on red", height=console.height) - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py deleted file mode 100644 index 66365e6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py +++ /dev/null @@ -1,240 +0,0 @@ -import re -import sys -from contextlib import suppress -from typing import Iterable, NamedTuple, Optional - -from .color import Color -from .style import Style -from .text import Text - -re_ansi = re.compile( - r""" -(?:\x1b\](.*?)\x1b\\)| -(?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~])) -""", - re.VERBOSE, -) - - -class _AnsiToken(NamedTuple): - """Result of ansi tokenized string.""" - - plain: str = "" - sgr: Optional[str] = "" - osc: Optional[str] = "" - - -def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]: - """Tokenize a string in to plain text and ANSI codes. - - Args: - ansi_text (str): A String containing ANSI codes. - - Yields: - AnsiToken: A named tuple of (plain, sgr, osc) - """ - - position = 0 - sgr: Optional[str] - osc: Optional[str] - for match in re_ansi.finditer(ansi_text): - start, end = match.span(0) - osc, sgr = match.groups() - if start > position: - yield _AnsiToken(ansi_text[position:start]) - if sgr: - if sgr == "(": - position = end + 1 - continue - if sgr.endswith("m"): - yield _AnsiToken("", sgr[1:-1], osc) - else: - yield _AnsiToken("", sgr, osc) - position = end - if position < len(ansi_text): - yield _AnsiToken(ansi_text[position:]) - - -SGR_STYLE_MAP = { - 1: "bold", - 2: "dim", - 3: "italic", - 4: "underline", - 5: "blink", - 6: "blink2", - 7: "reverse", - 8: "conceal", - 9: "strike", - 21: "underline2", - 22: "not dim not bold", - 23: "not italic", - 24: "not underline", - 25: "not blink", - 26: "not blink2", - 27: "not reverse", - 28: "not conceal", - 29: "not strike", - 30: "color(0)", - 31: "color(1)", - 32: "color(2)", - 33: "color(3)", - 34: "color(4)", - 35: "color(5)", - 36: "color(6)", - 37: "color(7)", - 39: "default", - 40: "on color(0)", - 41: "on color(1)", - 42: "on color(2)", - 43: "on color(3)", - 44: "on color(4)", - 45: "on color(5)", - 46: "on color(6)", - 47: "on color(7)", - 49: "on default", - 51: "frame", - 52: "encircle", - 53: "overline", - 54: "not frame not encircle", - 55: "not overline", - 90: "color(8)", - 91: "color(9)", - 92: "color(10)", - 93: "color(11)", - 94: "color(12)", - 95: "color(13)", - 96: "color(14)", - 97: "color(15)", - 100: "on color(8)", - 101: "on color(9)", - 102: "on color(10)", - 103: "on color(11)", - 104: "on color(12)", - 105: "on color(13)", - 106: "on color(14)", - 107: "on color(15)", -} - - -class AnsiDecoder: - """Translate ANSI code in to styled Text.""" - - def __init__(self) -> None: - self.style = Style.null() - - def decode(self, terminal_text: str) -> Iterable[Text]: - """Decode ANSI codes in an iterable of lines. - - Args: - lines (Iterable[str]): An iterable of lines of terminal output. - - Yields: - Text: Marked up Text. - """ - for line in terminal_text.splitlines(): - yield self.decode_line(line) - - def decode_line(self, line: str) -> Text: - """Decode a line containing ansi codes. - - Args: - line (str): A line of terminal output. - - Returns: - Text: A Text instance marked up according to ansi codes. - """ - from_ansi = Color.from_ansi - from_rgb = Color.from_rgb - _Style = Style - text = Text() - append = text.append - line = line.rsplit("\r", 1)[-1] - for plain_text, sgr, osc in _ansi_tokenize(line): - if plain_text: - append(plain_text, self.style or None) - elif osc is not None: - if osc.startswith("8;"): - _params, semicolon, link = osc[2:].partition(";") - if semicolon: - self.style = self.style.update_link(link or None) - elif sgr is not None: - # Translate in to semi-colon separated codes - # Ignore invalid codes, because we want to be lenient - codes = [ - min(255, int(_code) if _code else 0) - for _code in sgr.split(";") - if _code.isdigit() or _code == "" - ] - iter_codes = iter(codes) - for code in iter_codes: - if code == 0: - # reset - self.style = _Style.null() - elif code in SGR_STYLE_MAP: - # styles - self.style += _Style.parse(SGR_STYLE_MAP[code]) - elif code == 38: - #  Foreground - with suppress(StopIteration): - color_type = next(iter_codes) - if color_type == 5: - self.style += _Style.from_color( - from_ansi(next(iter_codes)) - ) - elif color_type == 2: - self.style += _Style.from_color( - from_rgb( - next(iter_codes), - next(iter_codes), - next(iter_codes), - ) - ) - elif code == 48: - # Background - with suppress(StopIteration): - color_type = next(iter_codes) - if color_type == 5: - self.style += _Style.from_color( - None, from_ansi(next(iter_codes)) - ) - elif color_type == 2: - self.style += _Style.from_color( - None, - from_rgb( - next(iter_codes), - next(iter_codes), - next(iter_codes), - ), - ) - - return text - - -if sys.platform != "win32" and __name__ == "__main__": # pragma: no cover - import io - import os - import pty - import sys - - decoder = AnsiDecoder() - - stdout = io.BytesIO() - - def read(fd: int) -> bytes: - data = os.read(fd, 1024) - stdout.write(data) - return data - - pty.spawn(sys.argv[1:], read) - - from .console import Console - - console = Console(record=True) - - stdout_result = stdout.getvalue().decode("utf-8") - print(stdout_result) - - for line in decoder.decode(stdout_result): - console.print(line) - - console.save_html("stdout.html") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py deleted file mode 100644 index ed86a55..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py +++ /dev/null @@ -1,94 +0,0 @@ -from typing import Optional, Union - -from .color import Color -from .console import Console, ConsoleOptions, RenderResult -from .jupyter import JupyterMixin -from .measure import Measurement -from .segment import Segment -from .style import Style - -# There are left-aligned characters for 1/8 to 7/8, but -# the right-aligned characters exist only for 1/8 and 4/8. -BEGIN_BLOCK_ELEMENTS = ["█", "█", "█", "▐", "▐", "▐", "▕", "▕"] -END_BLOCK_ELEMENTS = [" ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"] -FULL_BLOCK = "█" - - -class Bar(JupyterMixin): - """Renders a solid block bar. - - Args: - size (float): Value for the end of the bar. - begin (float): Begin point (between 0 and size, inclusive). - end (float): End point (between 0 and size, inclusive). - width (int, optional): Width of the bar, or ``None`` for maximum width. Defaults to None. - color (Union[Color, str], optional): Color of the bar. Defaults to "default". - bgcolor (Union[Color, str], optional): Color of bar background. Defaults to "default". - """ - - def __init__( - self, - size: float, - begin: float, - end: float, - *, - width: Optional[int] = None, - color: Union[Color, str] = "default", - bgcolor: Union[Color, str] = "default", - ): - self.size = size - self.begin = max(begin, 0) - self.end = min(end, size) - self.width = width - self.style = Style(color=color, bgcolor=bgcolor) - - def __repr__(self) -> str: - return f"Bar({self.size}, {self.begin}, {self.end})" - - def __rich_console__( - self, console: Console, options: ConsoleOptions - ) -> RenderResult: - - width = min( - self.width if self.width is not None else options.max_width, - options.max_width, - ) - - if self.begin >= self.end: - yield Segment(" " * width, self.style) - yield Segment.line() - return - - prefix_complete_eights = int(width * 8 * self.begin / self.size) - prefix_bar_count = prefix_complete_eights // 8 - prefix_eights_count = prefix_complete_eights % 8 - - body_complete_eights = int(width * 8 * self.end / self.size) - body_bar_count = body_complete_eights // 8 - body_eights_count = body_complete_eights % 8 - - # When start and end fall into the same cell, we ideally should render - # a symbol that's "center-aligned", but there is no good symbol in Unicode. - # In this case, we fall back to right-aligned block symbol for simplicity. - - prefix = " " * prefix_bar_count - if prefix_eights_count: - prefix += BEGIN_BLOCK_ELEMENTS[prefix_eights_count] - - body = FULL_BLOCK * body_bar_count - if body_eights_count: - body += END_BLOCK_ELEMENTS[body_eights_count] - - suffix = " " * (width - len(body)) - - yield Segment(prefix + body[len(prefix) :] + suffix, self.style) - yield Segment.line() - - def __rich_measure__( - self, console: Console, options: ConsoleOptions - ) -> Measurement: - return ( - Measurement(self.width, self.width) - if self.width is not None - else Measurement(4, options.max_width) - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py deleted file mode 100644 index 97d2a94..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py +++ /dev/null @@ -1,517 +0,0 @@ -import sys -from typing import TYPE_CHECKING, Iterable, List - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from pip._vendor.typing_extensions import Literal # pragma: no cover - - -from ._loop import loop_last - -if TYPE_CHECKING: - from pip._vendor.rich.console import ConsoleOptions - - -class Box: - """Defines characters to render boxes. - - ┌─┬┐ top - │ ││ head - ├─┼┤ head_row - │ ││ mid - ├─┼┤ row - ├─┼┤ foot_row - │ ││ foot - └─┴┘ bottom - - Args: - box (str): Characters making up box. - ascii (bool, optional): True if this box uses ascii characters only. Default is False. - """ - - def __init__(self, box: str, *, ascii: bool = False) -> None: - self._box = box - self.ascii = ascii - line1, line2, line3, line4, line5, line6, line7, line8 = box.splitlines() - # top - self.top_left, self.top, self.top_divider, self.top_right = iter(line1) - # head - self.head_left, _, self.head_vertical, self.head_right = iter(line2) - # head_row - ( - self.head_row_left, - self.head_row_horizontal, - self.head_row_cross, - self.head_row_right, - ) = iter(line3) - - # mid - self.mid_left, _, self.mid_vertical, self.mid_right = iter(line4) - # row - self.row_left, self.row_horizontal, self.row_cross, self.row_right = iter(line5) - # foot_row - ( - self.foot_row_left, - self.foot_row_horizontal, - self.foot_row_cross, - self.foot_row_right, - ) = iter(line6) - # foot - self.foot_left, _, self.foot_vertical, self.foot_right = iter(line7) - # bottom - self.bottom_left, self.bottom, self.bottom_divider, self.bottom_right = iter( - line8 - ) - - def __repr__(self) -> str: - return "Box(...)" - - def __str__(self) -> str: - return self._box - - def substitute(self, options: "ConsoleOptions", safe: bool = True) -> "Box": - """Substitute this box for another if it won't render due to platform issues. - - Args: - options (ConsoleOptions): Console options used in rendering. - safe (bool, optional): Substitute this for another Box if there are known problems - displaying on the platform (currently only relevant on Windows). Default is True. - - Returns: - Box: A different Box or the same Box. - """ - box = self - if options.legacy_windows and safe: - box = LEGACY_WINDOWS_SUBSTITUTIONS.get(box, box) - if options.ascii_only and not box.ascii: - box = ASCII - return box - - def get_plain_headed_box(self) -> "Box": - """If this box uses special characters for the borders of the header, then - return the equivalent box that does not. - - Returns: - Box: The most similar Box that doesn't use header-specific box characters. - If the current Box already satisfies this criterion, then it's returned. - """ - return PLAIN_HEADED_SUBSTITUTIONS.get(self, self) - - def get_top(self, widths: Iterable[int]) -> str: - """Get the top of a simple box. - - Args: - widths (List[int]): Widths of columns. - - Returns: - str: A string of box characters. - """ - - parts: List[str] = [] - append = parts.append - append(self.top_left) - for last, width in loop_last(widths): - append(self.top * width) - if not last: - append(self.top_divider) - append(self.top_right) - return "".join(parts) - - def get_row( - self, - widths: Iterable[int], - level: Literal["head", "row", "foot", "mid"] = "row", - edge: bool = True, - ) -> str: - """Get the top of a simple box. - - Args: - width (List[int]): Widths of columns. - - Returns: - str: A string of box characters. - """ - if level == "head": - left = self.head_row_left - horizontal = self.head_row_horizontal - cross = self.head_row_cross - right = self.head_row_right - elif level == "row": - left = self.row_left - horizontal = self.row_horizontal - cross = self.row_cross - right = self.row_right - elif level == "mid": - left = self.mid_left - horizontal = " " - cross = self.mid_vertical - right = self.mid_right - elif level == "foot": - left = self.foot_row_left - horizontal = self.foot_row_horizontal - cross = self.foot_row_cross - right = self.foot_row_right - else: - raise ValueError("level must be 'head', 'row' or 'foot'") - - parts: List[str] = [] - append = parts.append - if edge: - append(left) - for last, width in loop_last(widths): - append(horizontal * width) - if not last: - append(cross) - if edge: - append(right) - return "".join(parts) - - def get_bottom(self, widths: Iterable[int]) -> str: - """Get the bottom of a simple box. - - Args: - widths (List[int]): Widths of columns. - - Returns: - str: A string of box characters. - """ - - parts: List[str] = [] - append = parts.append - append(self.bottom_left) - for last, width in loop_last(widths): - append(self.bottom * width) - if not last: - append(self.bottom_divider) - append(self.bottom_right) - return "".join(parts) - - -ASCII: Box = Box( - """\ -+--+ -| || -|-+| -| || -|-+| -|-+| -| || -+--+ -""", - ascii=True, -) - -ASCII2: Box = Box( - """\ -+-++ -| || -+-++ -| || -+-++ -+-++ -| || -+-++ -""", - ascii=True, -) - -ASCII_DOUBLE_HEAD: Box = Box( - """\ -+-++ -| || -+=++ -| || -+-++ -+-++ -| || -+-++ -""", - ascii=True, -) - -SQUARE: Box = Box( - """\ -┌─┬┐ -│ ││ -├─┼┤ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" -) - -SQUARE_DOUBLE_HEAD: Box = Box( - """\ -┌─┬┐ -│ ││ -╞═╪╡ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" -) - -MINIMAL: Box = Box( - """\ - ╷ - │ -╶─┼╴ - │ -╶─┼╴ -╶─┼╴ - │ - ╵ -""" -) - - -MINIMAL_HEAVY_HEAD: Box = Box( - """\ - ╷ - │ -╺━┿╸ - │ -╶─┼╴ -╶─┼╴ - │ - ╵ -""" -) - -MINIMAL_DOUBLE_HEAD: Box = Box( - """\ - ╷ - │ - ═╪ - │ - ─┼ - ─┼ - │ - ╵ -""" -) - - -SIMPLE: Box = Box( - """\ - - - ── - - - ── - - -""" -) - -SIMPLE_HEAD: Box = Box( - """\ - - - ── - - - - - -""" -) - - -SIMPLE_HEAVY: Box = Box( - """\ - - - ━━ - - - ━━ - - -""" -) - - -HORIZONTALS: Box = Box( - """\ - ── - - ── - - ── - ── - - ── -""" -) - -ROUNDED: Box = Box( - """\ -╭─┬╮ -│ ││ -├─┼┤ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -╰─┴╯ -""" -) - -HEAVY: Box = Box( - """\ -┏━┳┓ -┃ ┃┃ -┣━╋┫ -┃ ┃┃ -┣━╋┫ -┣━╋┫ -┃ ┃┃ -┗━┻┛ -""" -) - -HEAVY_EDGE: Box = Box( - """\ -┏━┯┓ -┃ │┃ -┠─┼┨ -┃ │┃ -┠─┼┨ -┠─┼┨ -┃ │┃ -┗━┷┛ -""" -) - -HEAVY_HEAD: Box = Box( - """\ -┏━┳┓ -┃ ┃┃ -┡━╇┩ -│ ││ -├─┼┤ -├─┼┤ -│ ││ -└─┴┘ -""" -) - -DOUBLE: Box = Box( - """\ -╔═╦╗ -║ ║║ -╠═╬╣ -║ ║║ -╠═╬╣ -╠═╬╣ -║ ║║ -╚═╩╝ -""" -) - -DOUBLE_EDGE: Box = Box( - """\ -╔═╤╗ -║ │║ -╟─┼╢ -║ │║ -╟─┼╢ -╟─┼╢ -║ │║ -╚═╧╝ -""" -) - -MARKDOWN: Box = Box( - """\ - -| || -|-|| -| || -|-|| -|-|| -| || - -""", - ascii=True, -) - -# Map Boxes that don't render with raster fonts on to equivalent that do -LEGACY_WINDOWS_SUBSTITUTIONS = { - ROUNDED: SQUARE, - MINIMAL_HEAVY_HEAD: MINIMAL, - SIMPLE_HEAVY: SIMPLE, - HEAVY: SQUARE, - HEAVY_EDGE: SQUARE, - HEAVY_HEAD: SQUARE, -} - -# Map headed boxes to their headerless equivalents -PLAIN_HEADED_SUBSTITUTIONS = { - HEAVY_HEAD: SQUARE, - SQUARE_DOUBLE_HEAD: SQUARE, - MINIMAL_DOUBLE_HEAD: MINIMAL, - MINIMAL_HEAVY_HEAD: MINIMAL, - ASCII_DOUBLE_HEAD: ASCII2, -} - - -if __name__ == "__main__": # pragma: no cover - - from pip._vendor.rich.columns import Columns - from pip._vendor.rich.panel import Panel - - from . import box as box - from .console import Console - from .table import Table - from .text import Text - - console = Console(record=True) - - BOXES = [ - "ASCII", - "ASCII2", - "ASCII_DOUBLE_HEAD", - "SQUARE", - "SQUARE_DOUBLE_HEAD", - "MINIMAL", - "MINIMAL_HEAVY_HEAD", - "MINIMAL_DOUBLE_HEAD", - "SIMPLE", - "SIMPLE_HEAD", - "SIMPLE_HEAVY", - "HORIZONTALS", - "ROUNDED", - "HEAVY", - "HEAVY_EDGE", - "HEAVY_HEAD", - "DOUBLE", - "DOUBLE_EDGE", - "MARKDOWN", - ] - - console.print(Panel("[bold green]Box Constants", style="green"), justify="center") - console.print() - - columns = Columns(expand=True, padding=2) - for box_name in sorted(BOXES): - table = Table( - show_footer=True, style="dim", border_style="not dim", expand=True - ) - table.add_column("Header 1", "Footer 1") - table.add_column("Header 2", "Footer 2") - table.add_row("Cell", "Cell") - table.add_row("Cell", "Cell") - table.box = getattr(box, box_name) - table.title = Text(f"box.{box_name}", style="magenta") - columns.add_renderable(table) - console.print(columns) - - # console.save_svg("box.svg") diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py deleted file mode 100644 index 9354f9e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py +++ /dev/null @@ -1,154 +0,0 @@ -import re -from functools import lru_cache -from typing import Callable, List - -from ._cell_widths import CELL_WIDTHS - -# Regex to match sequence of the most common character ranges -_is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match - - -@lru_cache(4096) -def cached_cell_len(text: str) -> int: - """Get the number of cells required to display text. - - This method always caches, which may use up a lot of memory. It is recommended to use - `cell_len` over this method. - - Args: - text (str): Text to display. - - Returns: - int: Get the number of cells required to display text. - """ - _get_size = get_character_cell_size - total_size = sum(_get_size(character) for character in text) - return total_size - - -def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int: - """Get the number of cells required to display text. - - Args: - text (str): Text to display. - - Returns: - int: Get the number of cells required to display text. - """ - if len(text) < 512: - return _cell_len(text) - _get_size = get_character_cell_size - total_size = sum(_get_size(character) for character in text) - return total_size - - -@lru_cache(maxsize=4096) -def get_character_cell_size(character: str) -> int: - """Get the cell size of a character. - - Args: - character (str): A single character. - - Returns: - int: Number of cells (0, 1 or 2) occupied by that character. - """ - return _get_codepoint_cell_size(ord(character)) - - -@lru_cache(maxsize=4096) -def _get_codepoint_cell_size(codepoint: int) -> int: - """Get the cell size of a character. - - Args: - codepoint (int): Codepoint of a character. - - Returns: - int: Number of cells (0, 1 or 2) occupied by that character. - """ - - _table = CELL_WIDTHS - lower_bound = 0 - upper_bound = len(_table) - 1 - index = (lower_bound + upper_bound) // 2 - while True: - start, end, width = _table[index] - if codepoint < start: - upper_bound = index - 1 - elif codepoint > end: - lower_bound = index + 1 - else: - return 0 if width == -1 else width - if upper_bound < lower_bound: - break - index = (lower_bound + upper_bound) // 2 - return 1 - - -def set_cell_size(text: str, total: int) -> str: - """Set the length of a string to fit within given number of cells.""" - - if _is_single_cell_widths(text): - size = len(text) - if size < total: - return text + " " * (total - size) - return text[:total] - - if total <= 0: - return "" - cell_size = cell_len(text) - if cell_size == total: - return text - if cell_size < total: - return text + " " * (total - cell_size) - - start = 0 - end = len(text) - - # Binary search until we find the right size - while True: - pos = (start + end) // 2 - before = text[: pos + 1] - before_len = cell_len(before) - if before_len == total + 1 and cell_len(before[-1]) == 2: - return before[:-1] + " " - if before_len == total: - return before - if before_len > total: - end = pos - else: - start = pos - - -# TODO: This is inefficient -# TODO: This might not work with CWJ type characters -def chop_cells(text: str, max_size: int, position: int = 0) -> List[str]: - """Break text in to equal (cell) length strings, returning the characters in reverse - order""" - _get_character_cell_size = get_character_cell_size - characters = [ - (character, _get_character_cell_size(character)) for character in text - ] - total_size = position - lines: List[List[str]] = [[]] - append = lines[-1].append - - for character, size in reversed(characters): - if total_size + size > max_size: - lines.append([character]) - append = lines[-1].append - total_size = size - else: - total_size += size - append(character) - - return ["".join(line) for line in lines] - - -if __name__ == "__main__": # pragma: no cover - - print(get_character_cell_size("😽")) - for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8): - print(line) - for n in range(80, 1, -1): - print(set_cell_size("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", n) + "|") - print("x" * n) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py deleted file mode 100644 index dfe4559..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py +++ /dev/null @@ -1,622 +0,0 @@ -import platform -import re -from colorsys import rgb_to_hls -from enum import IntEnum -from functools import lru_cache -from typing import TYPE_CHECKING, NamedTuple, Optional, Tuple - -from ._palettes import EIGHT_BIT_PALETTE, STANDARD_PALETTE, WINDOWS_PALETTE -from .color_triplet import ColorTriplet -from .repr import Result, rich_repr -from .terminal_theme import DEFAULT_TERMINAL_THEME - -if TYPE_CHECKING: # pragma: no cover - from .terminal_theme import TerminalTheme - from .text import Text - - -WINDOWS = platform.system() == "Windows" - - -class ColorSystem(IntEnum): - """One of the 3 color system supported by terminals.""" - - STANDARD = 1 - EIGHT_BIT = 2 - TRUECOLOR = 3 - WINDOWS = 4 - - def __repr__(self) -> str: - return f"ColorSystem.{self.name}" - - def __str__(self) -> str: - return repr(self) - - -class ColorType(IntEnum): - """Type of color stored in Color class.""" - - DEFAULT = 0 - STANDARD = 1 - EIGHT_BIT = 2 - TRUECOLOR = 3 - WINDOWS = 4 - - def __repr__(self) -> str: - return f"ColorType.{self.name}" - - -ANSI_COLOR_NAMES = { - "black": 0, - "red": 1, - "green": 2, - "yellow": 3, - "blue": 4, - "magenta": 5, - "cyan": 6, - "white": 7, - "bright_black": 8, - "bright_red": 9, - "bright_green": 10, - "bright_yellow": 11, - "bright_blue": 12, - "bright_magenta": 13, - "bright_cyan": 14, - "bright_white": 15, - "grey0": 16, - "gray0": 16, - "navy_blue": 17, - "dark_blue": 18, - "blue3": 20, - "blue1": 21, - "dark_green": 22, - "deep_sky_blue4": 25, - "dodger_blue3": 26, - "dodger_blue2": 27, - "green4": 28, - "spring_green4": 29, - "turquoise4": 30, - "deep_sky_blue3": 32, - "dodger_blue1": 33, - "green3": 40, - "spring_green3": 41, - "dark_cyan": 36, - "light_sea_green": 37, - "deep_sky_blue2": 38, - "deep_sky_blue1": 39, - "spring_green2": 47, - "cyan3": 43, - "dark_turquoise": 44, - "turquoise2": 45, - "green1": 46, - "spring_green1": 48, - "medium_spring_green": 49, - "cyan2": 50, - "cyan1": 51, - "dark_red": 88, - "deep_pink4": 125, - "purple4": 55, - "purple3": 56, - "blue_violet": 57, - "orange4": 94, - "grey37": 59, - "gray37": 59, - "medium_purple4": 60, - "slate_blue3": 62, - "royal_blue1": 63, - "chartreuse4": 64, - "dark_sea_green4": 71, - "pale_turquoise4": 66, - "steel_blue": 67, - "steel_blue3": 68, - "cornflower_blue": 69, - "chartreuse3": 76, - "cadet_blue": 73, - "sky_blue3": 74, - "steel_blue1": 81, - "pale_green3": 114, - "sea_green3": 78, - "aquamarine3": 79, - "medium_turquoise": 80, - "chartreuse2": 112, - "sea_green2": 83, - "sea_green1": 85, - "aquamarine1": 122, - "dark_slate_gray2": 87, - "dark_magenta": 91, - "dark_violet": 128, - "purple": 129, - "light_pink4": 95, - "plum4": 96, - "medium_purple3": 98, - "slate_blue1": 99, - "yellow4": 106, - "wheat4": 101, - "grey53": 102, - "gray53": 102, - "light_slate_grey": 103, - "light_slate_gray": 103, - "medium_purple": 104, - "light_slate_blue": 105, - "dark_olive_green3": 149, - "dark_sea_green": 108, - "light_sky_blue3": 110, - "sky_blue2": 111, - "dark_sea_green3": 150, - "dark_slate_gray3": 116, - "sky_blue1": 117, - "chartreuse1": 118, - "light_green": 120, - "pale_green1": 156, - "dark_slate_gray1": 123, - "red3": 160, - "medium_violet_red": 126, - "magenta3": 164, - "dark_orange3": 166, - "indian_red": 167, - "hot_pink3": 168, - "medium_orchid3": 133, - "medium_orchid": 134, - "medium_purple2": 140, - "dark_goldenrod": 136, - "light_salmon3": 173, - "rosy_brown": 138, - "grey63": 139, - "gray63": 139, - "medium_purple1": 141, - "gold3": 178, - "dark_khaki": 143, - "navajo_white3": 144, - "grey69": 145, - "gray69": 145, - "light_steel_blue3": 146, - "light_steel_blue": 147, - "yellow3": 184, - "dark_sea_green2": 157, - "light_cyan3": 152, - "light_sky_blue1": 153, - "green_yellow": 154, - "dark_olive_green2": 155, - "dark_sea_green1": 193, - "pale_turquoise1": 159, - "deep_pink3": 162, - "magenta2": 200, - "hot_pink2": 169, - "orchid": 170, - "medium_orchid1": 207, - "orange3": 172, - "light_pink3": 174, - "pink3": 175, - "plum3": 176, - "violet": 177, - "light_goldenrod3": 179, - "tan": 180, - "misty_rose3": 181, - "thistle3": 182, - "plum2": 183, - "khaki3": 185, - "light_goldenrod2": 222, - "light_yellow3": 187, - "grey84": 188, - "gray84": 188, - "light_steel_blue1": 189, - "yellow2": 190, - "dark_olive_green1": 192, - "honeydew2": 194, - "light_cyan1": 195, - "red1": 196, - "deep_pink2": 197, - "deep_pink1": 199, - "magenta1": 201, - "orange_red1": 202, - "indian_red1": 204, - "hot_pink": 206, - "dark_orange": 208, - "salmon1": 209, - "light_coral": 210, - "pale_violet_red1": 211, - "orchid2": 212, - "orchid1": 213, - "orange1": 214, - "sandy_brown": 215, - "light_salmon1": 216, - "light_pink1": 217, - "pink1": 218, - "plum1": 219, - "gold1": 220, - "navajo_white1": 223, - "misty_rose1": 224, - "thistle1": 225, - "yellow1": 226, - "light_goldenrod1": 227, - "khaki1": 228, - "wheat1": 229, - "cornsilk1": 230, - "grey100": 231, - "gray100": 231, - "grey3": 232, - "gray3": 232, - "grey7": 233, - "gray7": 233, - "grey11": 234, - "gray11": 234, - "grey15": 235, - "gray15": 235, - "grey19": 236, - "gray19": 236, - "grey23": 237, - "gray23": 237, - "grey27": 238, - "gray27": 238, - "grey30": 239, - "gray30": 239, - "grey35": 240, - "gray35": 240, - "grey39": 241, - "gray39": 241, - "grey42": 242, - "gray42": 242, - "grey46": 243, - "gray46": 243, - "grey50": 244, - "gray50": 244, - "grey54": 245, - "gray54": 245, - "grey58": 246, - "gray58": 246, - "grey62": 247, - "gray62": 247, - "grey66": 248, - "gray66": 248, - "grey70": 249, - "gray70": 249, - "grey74": 250, - "gray74": 250, - "grey78": 251, - "gray78": 251, - "grey82": 252, - "gray82": 252, - "grey85": 253, - "gray85": 253, - "grey89": 254, - "gray89": 254, - "grey93": 255, - "gray93": 255, -} - - -class ColorParseError(Exception): - """The color could not be parsed.""" - - -RE_COLOR = re.compile( - r"""^ -\#([0-9a-f]{6})$| -color\(([0-9]{1,3})\)$| -rgb\(([\d\s,]+)\)$ -""", - re.VERBOSE, -) - - -@rich_repr -class Color(NamedTuple): - """Terminal color definition.""" - - name: str - """The name of the color (typically the input to Color.parse).""" - type: ColorType - """The type of the color.""" - number: Optional[int] = None - """The color number, if a standard color, or None.""" - triplet: Optional[ColorTriplet] = None - """A triplet of color components, if an RGB color.""" - - def __rich__(self) -> "Text": - """Displays the actual color if Rich printed.""" - from .style import Style - from .text import Text - - return Text.assemble( - f"", - ) - - def __rich_repr__(self) -> Result: - yield self.name - yield self.type - yield "number", self.number, None - yield "triplet", self.triplet, None - - @property - def system(self) -> ColorSystem: - """Get the native color system for this color.""" - if self.type == ColorType.DEFAULT: - return ColorSystem.STANDARD - return ColorSystem(int(self.type)) - - @property - def is_system_defined(self) -> bool: - """Check if the color is ultimately defined by the system.""" - return self.system not in (ColorSystem.EIGHT_BIT, ColorSystem.TRUECOLOR) - - @property - def is_default(self) -> bool: - """Check if the color is a default color.""" - return self.type == ColorType.DEFAULT - - def get_truecolor( - self, theme: Optional["TerminalTheme"] = None, foreground: bool = True - ) -> ColorTriplet: - """Get an equivalent color triplet for this color. - - Args: - theme (TerminalTheme, optional): Optional terminal theme, or None to use default. Defaults to None. - foreground (bool, optional): True for a foreground color, or False for background. Defaults to True. - - Returns: - ColorTriplet: A color triplet containing RGB components. - """ - - if theme is None: - theme = DEFAULT_TERMINAL_THEME - if self.type == ColorType.TRUECOLOR: - assert self.triplet is not None - return self.triplet - elif self.type == ColorType.EIGHT_BIT: - assert self.number is not None - return EIGHT_BIT_PALETTE[self.number] - elif self.type == ColorType.STANDARD: - assert self.number is not None - return theme.ansi_colors[self.number] - elif self.type == ColorType.WINDOWS: - assert self.number is not None - return WINDOWS_PALETTE[self.number] - else: # self.type == ColorType.DEFAULT: - assert self.number is None - return theme.foreground_color if foreground else theme.background_color - - @classmethod - def from_ansi(cls, number: int) -> "Color": - """Create a Color number from it's 8-bit ansi number. - - Args: - number (int): A number between 0-255 inclusive. - - Returns: - Color: A new Color instance. - """ - return cls( - name=f"color({number})", - type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), - number=number, - ) - - @classmethod - def from_triplet(cls, triplet: "ColorTriplet") -> "Color": - """Create a truecolor RGB color from a triplet of values. - - Args: - triplet (ColorTriplet): A color triplet containing red, green and blue components. - - Returns: - Color: A new color object. - """ - return cls(name=triplet.hex, type=ColorType.TRUECOLOR, triplet=triplet) - - @classmethod - def from_rgb(cls, red: float, green: float, blue: float) -> "Color": - """Create a truecolor from three color components in the range(0->255). - - Args: - red (float): Red component in range 0-255. - green (float): Green component in range 0-255. - blue (float): Blue component in range 0-255. - - Returns: - Color: A new color object. - """ - return cls.from_triplet(ColorTriplet(int(red), int(green), int(blue))) - - @classmethod - def default(cls) -> "Color": - """Get a Color instance representing the default color. - - Returns: - Color: Default color. - """ - return cls(name="default", type=ColorType.DEFAULT) - - @classmethod - @lru_cache(maxsize=1024) - def parse(cls, color: str) -> "Color": - """Parse a color definition.""" - original_color = color - color = color.lower().strip() - - if color == "default": - return cls(color, type=ColorType.DEFAULT) - - color_number = ANSI_COLOR_NAMES.get(color) - if color_number is not None: - return cls( - color, - type=(ColorType.STANDARD if color_number < 16 else ColorType.EIGHT_BIT), - number=color_number, - ) - - color_match = RE_COLOR.match(color) - if color_match is None: - raise ColorParseError(f"{original_color!r} is not a valid color") - - color_24, color_8, color_rgb = color_match.groups() - if color_24: - triplet = ColorTriplet( - int(color_24[0:2], 16), int(color_24[2:4], 16), int(color_24[4:6], 16) - ) - return cls(color, ColorType.TRUECOLOR, triplet=triplet) - - elif color_8: - number = int(color_8) - if number > 255: - raise ColorParseError(f"color number must be <= 255 in {color!r}") - return cls( - color, - type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), - number=number, - ) - - else: # color_rgb: - components = color_rgb.split(",") - if len(components) != 3: - raise ColorParseError( - f"expected three components in {original_color!r}" - ) - red, green, blue = components - triplet = ColorTriplet(int(red), int(green), int(blue)) - if not all(component <= 255 for component in triplet): - raise ColorParseError( - f"color components must be <= 255 in {original_color!r}" - ) - return cls(color, ColorType.TRUECOLOR, triplet=triplet) - - @lru_cache(maxsize=1024) - def get_ansi_codes(self, foreground: bool = True) -> Tuple[str, ...]: - """Get the ANSI escape codes for this color.""" - _type = self.type - if _type == ColorType.DEFAULT: - return ("39" if foreground else "49",) - - elif _type == ColorType.WINDOWS: - number = self.number - assert number is not None - fore, back = (30, 40) if number < 8 else (82, 92) - return (str(fore + number if foreground else back + number),) - - elif _type == ColorType.STANDARD: - number = self.number - assert number is not None - fore, back = (30, 40) if number < 8 else (82, 92) - return (str(fore + number if foreground else back + number),) - - elif _type == ColorType.EIGHT_BIT: - assert self.number is not None - return ("38" if foreground else "48", "5", str(self.number)) - - else: # self.standard == ColorStandard.TRUECOLOR: - assert self.triplet is not None - red, green, blue = self.triplet - return ("38" if foreground else "48", "2", str(red), str(green), str(blue)) - - @lru_cache(maxsize=1024) - def downgrade(self, system: ColorSystem) -> "Color": - """Downgrade a color system to a system with fewer colors.""" - - if self.type in (ColorType.DEFAULT, system): - return self - # Convert to 8-bit color from truecolor color - if system == ColorSystem.EIGHT_BIT and self.system == ColorSystem.TRUECOLOR: - assert self.triplet is not None - _h, l, s = rgb_to_hls(*self.triplet.normalized) - # If saturation is under 15% assume it is grayscale - if s < 0.15: - gray = round(l * 25.0) - if gray == 0: - color_number = 16 - elif gray == 25: - color_number = 231 - else: - color_number = 231 + gray - return Color(self.name, ColorType.EIGHT_BIT, number=color_number) - - red, green, blue = self.triplet - six_red = red / 95 if red < 95 else 1 + (red - 95) / 40 - six_green = green / 95 if green < 95 else 1 + (green - 95) / 40 - six_blue = blue / 95 if blue < 95 else 1 + (blue - 95) / 40 - - color_number = ( - 16 + 36 * round(six_red) + 6 * round(six_green) + round(six_blue) - ) - return Color(self.name, ColorType.EIGHT_BIT, number=color_number) - - # Convert to standard from truecolor or 8-bit - elif system == ColorSystem.STANDARD: - if self.system == ColorSystem.TRUECOLOR: - assert self.triplet is not None - triplet = self.triplet - else: # self.system == ColorSystem.EIGHT_BIT - assert self.number is not None - triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) - - color_number = STANDARD_PALETTE.match(triplet) - return Color(self.name, ColorType.STANDARD, number=color_number) - - elif system == ColorSystem.WINDOWS: - if self.system == ColorSystem.TRUECOLOR: - assert self.triplet is not None - triplet = self.triplet - else: # self.system == ColorSystem.EIGHT_BIT - assert self.number is not None - if self.number < 16: - return Color(self.name, ColorType.WINDOWS, number=self.number) - triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) - - color_number = WINDOWS_PALETTE.match(triplet) - return Color(self.name, ColorType.WINDOWS, number=color_number) - - return self - - -def parse_rgb_hex(hex_color: str) -> ColorTriplet: - """Parse six hex characters in to RGB triplet.""" - assert len(hex_color) == 6, "must be 6 characters" - color = ColorTriplet( - int(hex_color[0:2], 16), int(hex_color[2:4], 16), int(hex_color[4:6], 16) - ) - return color - - -def blend_rgb( - color1: ColorTriplet, color2: ColorTriplet, cross_fade: float = 0.5 -) -> ColorTriplet: - """Blend one RGB color in to another.""" - r1, g1, b1 = color1 - r2, g2, b2 = color2 - new_color = ColorTriplet( - int(r1 + (r2 - r1) * cross_fade), - int(g1 + (g2 - g1) * cross_fade), - int(b1 + (b2 - b1) * cross_fade), - ) - return new_color - - -if __name__ == "__main__": # pragma: no cover - - from .console import Console - from .table import Table - from .text import Text - - console = Console() - - table = Table(show_footer=False, show_edge=True) - table.add_column("Color", width=10, overflow="ellipsis") - table.add_column("Number", justify="right", style="yellow") - table.add_column("Name", style="green") - table.add_column("Hex", style="blue") - table.add_column("RGB", style="magenta") - - colors = sorted((v, k) for k, v in ANSI_COLOR_NAMES.items()) - for color_number, name in colors: - if "grey" in name: - continue - color_cell = Text(" " * 10, style=f"on {name}") - if color_number < 16: - table.add_row(color_cell, f"{color_number}", Text(f'"{name}"')) - else: - color = EIGHT_BIT_PALETTE[color_number] # type: ignore[has-type] - table.add_row( - color_cell, str(color_number), Text(f'"{name}"'), color.hex, color.rgb - ) - - console.print(table) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py deleted file mode 100644 index 02cab32..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import NamedTuple, Tuple - - -class ColorTriplet(NamedTuple): - """The red, green, and blue components of a color.""" - - red: int - """Red component in 0 to 255 range.""" - green: int - """Green component in 0 to 255 range.""" - blue: int - """Blue component in 0 to 255 range.""" - - @property - def hex(self) -> str: - """get the color triplet in CSS style.""" - red, green, blue = self - return f"#{red:02x}{green:02x}{blue:02x}" - - @property - def rgb(self) -> str: - """The color in RGB format. - - Returns: - str: An rgb color, e.g. ``"rgb(100,23,255)"``. - """ - red, green, blue = self - return f"rgb({red},{green},{blue})" - - @property - def normalized(self) -> Tuple[float, float, float]: - """Convert components into floats between 0 and 1. - - Returns: - Tuple[float, float, float]: A tuple of three normalized colour components. - """ - red, green, blue = self - return red / 255.0, green / 255.0, blue / 255.0 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py deleted file mode 100644 index 669a3a7..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py +++ /dev/null @@ -1,187 +0,0 @@ -from collections import defaultdict -from itertools import chain -from operator import itemgetter -from typing import Dict, Iterable, List, Optional, Tuple - -from .align import Align, AlignMethod -from .console import Console, ConsoleOptions, RenderableType, RenderResult -from .constrain import Constrain -from .measure import Measurement -from .padding import Padding, PaddingDimensions -from .table import Table -from .text import TextType -from .jupyter import JupyterMixin - - -class Columns(JupyterMixin): - """Display renderables in neat columns. - - Args: - renderables (Iterable[RenderableType]): Any number of Rich renderables (including str). - width (int, optional): The desired width of the columns, or None to auto detect. Defaults to None. - padding (PaddingDimensions, optional): Optional padding around cells. Defaults to (0, 1). - expand (bool, optional): Expand columns to full width. Defaults to False. - equal (bool, optional): Arrange in to equal sized columns. Defaults to False. - column_first (bool, optional): Align items from top to bottom (rather than left to right). Defaults to False. - right_to_left (bool, optional): Start column from right hand side. Defaults to False. - align (str, optional): Align value ("left", "right", or "center") or None for default. Defaults to None. - title (TextType, optional): Optional title for Columns. - """ - - def __init__( - self, - renderables: Optional[Iterable[RenderableType]] = None, - padding: PaddingDimensions = (0, 1), - *, - width: Optional[int] = None, - expand: bool = False, - equal: bool = False, - column_first: bool = False, - right_to_left: bool = False, - align: Optional[AlignMethod] = None, - title: Optional[TextType] = None, - ) -> None: - self.renderables = list(renderables or []) - self.width = width - self.padding = padding - self.expand = expand - self.equal = equal - self.column_first = column_first - self.right_to_left = right_to_left - self.align: Optional[AlignMethod] = align - self.title = title - - def add_renderable(self, renderable: RenderableType) -> None: - """Add a renderable to the columns. - - Args: - renderable (RenderableType): Any renderable object. - """ - self.renderables.append(renderable) - - def __rich_console__( - self, console: Console, options: ConsoleOptions - ) -> RenderResult: - render_str = console.render_str - renderables = [ - render_str(renderable) if isinstance(renderable, str) else renderable - for renderable in self.renderables - ] - if not renderables: - return - _top, right, _bottom, left = Padding.unpack(self.padding) - width_padding = max(left, right) - max_width = options.max_width - widths: Dict[int, int] = defaultdict(int) - column_count = len(renderables) - - get_measurement = Measurement.get - renderable_widths = [ - get_measurement(console, options, renderable).maximum - for renderable in renderables - ] - if self.equal: - renderable_widths = [max(renderable_widths)] * len(renderable_widths) - - def iter_renderables( - column_count: int, - ) -> Iterable[Tuple[int, Optional[RenderableType]]]: - item_count = len(renderables) - if self.column_first: - width_renderables = list(zip(renderable_widths, renderables)) - - column_lengths: List[int] = [item_count // column_count] * column_count - for col_no in range(item_count % column_count): - column_lengths[col_no] += 1 - - row_count = (item_count + column_count - 1) // column_count - cells = [[-1] * column_count for _ in range(row_count)] - row = col = 0 - for index in range(item_count): - cells[row][col] = index - column_lengths[col] -= 1 - if column_lengths[col]: - row += 1 - else: - col += 1 - row = 0 - for index in chain.from_iterable(cells): - if index == -1: - break - yield width_renderables[index] - else: - yield from zip(renderable_widths, renderables) - # Pad odd elements with spaces - if item_count % column_count: - for _ in range(column_count - (item_count % column_count)): - yield 0, None - - table = Table.grid(padding=self.padding, collapse_padding=True, pad_edge=False) - table.expand = self.expand - table.title = self.title - - if self.width is not None: - column_count = (max_width) // (self.width + width_padding) - for _ in range(column_count): - table.add_column(width=self.width) - else: - while column_count > 1: - widths.clear() - column_no = 0 - for renderable_width, _ in iter_renderables(column_count): - widths[column_no] = max(widths[column_no], renderable_width) - total_width = sum(widths.values()) + width_padding * ( - len(widths) - 1 - ) - if total_width > max_width: - column_count = len(widths) - 1 - break - else: - column_no = (column_no + 1) % column_count - else: - break - - get_renderable = itemgetter(1) - _renderables = [ - get_renderable(_renderable) - for _renderable in iter_renderables(column_count) - ] - if self.equal: - _renderables = [ - None - if renderable is None - else Constrain(renderable, renderable_widths[0]) - for renderable in _renderables - ] - if self.align: - align = self.align - _Align = Align - _renderables = [ - None if renderable is None else _Align(renderable, align) - for renderable in _renderables - ] - - right_to_left = self.right_to_left - add_row = table.add_row - for start in range(0, len(_renderables), column_count): - row = _renderables[start : start + column_count] - if right_to_left: - row = row[::-1] - add_row(*row) - yield table - - -if __name__ == "__main__": # pragma: no cover - import os - - console = Console() - - files = [f"{i} {s}" for i, s in enumerate(sorted(os.listdir()))] - columns = Columns(files, padding=(0, 1), expand=False, equal=False) - console.print(columns) - console.rule() - columns.column_first = True - console.print(columns) - columns.right_to_left = True - console.rule() - console.print(columns) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py deleted file mode 100644 index e559cbb..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py +++ /dev/null @@ -1,2633 +0,0 @@ -import inspect -import os -import platform -import sys -import threading -import zlib -from abc import ABC, abstractmethod -from dataclasses import dataclass, field -from datetime import datetime -from functools import wraps -from getpass import getpass -from html import escape -from inspect import isclass -from itertools import islice -from math import ceil -from time import monotonic -from types import FrameType, ModuleType, TracebackType -from typing import ( - IO, - TYPE_CHECKING, - Any, - Callable, - Dict, - Iterable, - List, - Mapping, - NamedTuple, - Optional, - TextIO, - Tuple, - Type, - Union, - cast, -) - -from pip._vendor.rich._null_file import NULL_FILE - -if sys.version_info >= (3, 8): - from typing import Literal, Protocol, runtime_checkable -else: - from pip._vendor.typing_extensions import ( - Literal, - Protocol, - runtime_checkable, - ) # pragma: no cover - -from . import errors, themes -from ._emoji_replace import _emoji_replace -from ._export_format import CONSOLE_HTML_FORMAT, CONSOLE_SVG_FORMAT -from ._fileno import get_fileno -from ._log_render import FormatTimeCallable, LogRender -from .align import Align, AlignMethod -from .color import ColorSystem, blend_rgb -from .control import Control -from .emoji import EmojiVariant -from .highlighter import NullHighlighter, ReprHighlighter -from .markup import render as render_markup -from .measure import Measurement, measure_renderables -from .pager import Pager, SystemPager -from .pretty import Pretty, is_expandable -from .protocol import rich_cast -from .region import Region -from .scope import render_scope -from .screen import Screen -from .segment import Segment -from .style import Style, StyleType -from .styled import Styled -from .terminal_theme import DEFAULT_TERMINAL_THEME, SVG_EXPORT_THEME, TerminalTheme -from .text import Text, TextType -from .theme import Theme, ThemeStack - -if TYPE_CHECKING: - from ._windows import WindowsConsoleFeatures - from .live import Live - from .status import Status - -JUPYTER_DEFAULT_COLUMNS = 115 -JUPYTER_DEFAULT_LINES = 100 -WINDOWS = platform.system() == "Windows" - -HighlighterType = Callable[[Union[str, "Text"]], "Text"] -JustifyMethod = Literal["default", "left", "center", "right", "full"] -OverflowMethod = Literal["fold", "crop", "ellipsis", "ignore"] - - -class NoChange: - pass - - -NO_CHANGE = NoChange() - -try: - _STDIN_FILENO = sys.__stdin__.fileno() -except Exception: - _STDIN_FILENO = 0 -try: - _STDOUT_FILENO = sys.__stdout__.fileno() -except Exception: - _STDOUT_FILENO = 1 -try: - _STDERR_FILENO = sys.__stderr__.fileno() -except Exception: - _STDERR_FILENO = 2 - -_STD_STREAMS = (_STDIN_FILENO, _STDOUT_FILENO, _STDERR_FILENO) -_STD_STREAMS_OUTPUT = (_STDOUT_FILENO, _STDERR_FILENO) - - -_TERM_COLORS = { - "kitty": ColorSystem.EIGHT_BIT, - "256color": ColorSystem.EIGHT_BIT, - "16color": ColorSystem.STANDARD, -} - - -class ConsoleDimensions(NamedTuple): - """Size of the terminal.""" - - width: int - """The width of the console in 'cells'.""" - height: int - """The height of the console in lines.""" - - -@dataclass -class ConsoleOptions: - """Options for __rich_console__ method.""" - - size: ConsoleDimensions - """Size of console.""" - legacy_windows: bool - """legacy_windows: flag for legacy windows.""" - min_width: int - """Minimum width of renderable.""" - max_width: int - """Maximum width of renderable.""" - is_terminal: bool - """True if the target is a terminal, otherwise False.""" - encoding: str - """Encoding of terminal.""" - max_height: int - """Height of container (starts as terminal)""" - justify: Optional[JustifyMethod] = None - """Justify value override for renderable.""" - overflow: Optional[OverflowMethod] = None - """Overflow value override for renderable.""" - no_wrap: Optional[bool] = False - """Disable wrapping for text.""" - highlight: Optional[bool] = None - """Highlight override for render_str.""" - markup: Optional[bool] = None - """Enable markup when rendering strings.""" - height: Optional[int] = None - - @property - def ascii_only(self) -> bool: - """Check if renderables should use ascii only.""" - return not self.encoding.startswith("utf") - - def copy(self) -> "ConsoleOptions": - """Return a copy of the options. - - Returns: - ConsoleOptions: a copy of self. - """ - options: ConsoleOptions = ConsoleOptions.__new__(ConsoleOptions) - options.__dict__ = self.__dict__.copy() - return options - - def update( - self, - *, - width: Union[int, NoChange] = NO_CHANGE, - min_width: Union[int, NoChange] = NO_CHANGE, - max_width: Union[int, NoChange] = NO_CHANGE, - justify: Union[Optional[JustifyMethod], NoChange] = NO_CHANGE, - overflow: Union[Optional[OverflowMethod], NoChange] = NO_CHANGE, - no_wrap: Union[Optional[bool], NoChange] = NO_CHANGE, - highlight: Union[Optional[bool], NoChange] = NO_CHANGE, - markup: Union[Optional[bool], NoChange] = NO_CHANGE, - height: Union[Optional[int], NoChange] = NO_CHANGE, - ) -> "ConsoleOptions": - """Update values, return a copy.""" - options = self.copy() - if not isinstance(width, NoChange): - options.min_width = options.max_width = max(0, width) - if not isinstance(min_width, NoChange): - options.min_width = min_width - if not isinstance(max_width, NoChange): - options.max_width = max_width - if not isinstance(justify, NoChange): - options.justify = justify - if not isinstance(overflow, NoChange): - options.overflow = overflow - if not isinstance(no_wrap, NoChange): - options.no_wrap = no_wrap - if not isinstance(highlight, NoChange): - options.highlight = highlight - if not isinstance(markup, NoChange): - options.markup = markup - if not isinstance(height, NoChange): - if height is not None: - options.max_height = height - options.height = None if height is None else max(0, height) - return options - - def update_width(self, width: int) -> "ConsoleOptions": - """Update just the width, return a copy. - - Args: - width (int): New width (sets both min_width and max_width) - - Returns: - ~ConsoleOptions: New console options instance. - """ - options = self.copy() - options.min_width = options.max_width = max(0, width) - return options - - def update_height(self, height: int) -> "ConsoleOptions": - """Update the height, and return a copy. - - Args: - height (int): New height - - Returns: - ~ConsoleOptions: New Console options instance. - """ - options = self.copy() - options.max_height = options.height = height - return options - - def reset_height(self) -> "ConsoleOptions": - """Return a copy of the options with height set to ``None``. - - Returns: - ~ConsoleOptions: New console options instance. - """ - options = self.copy() - options.height = None - return options - - def update_dimensions(self, width: int, height: int) -> "ConsoleOptions": - """Update the width and height, and return a copy. - - Args: - width (int): New width (sets both min_width and max_width). - height (int): New height. - - Returns: - ~ConsoleOptions: New console options instance. - """ - options = self.copy() - options.min_width = options.max_width = max(0, width) - options.height = options.max_height = height - return options - - -@runtime_checkable -class RichCast(Protocol): - """An object that may be 'cast' to a console renderable.""" - - def __rich__( - self, - ) -> Union["ConsoleRenderable", "RichCast", str]: # pragma: no cover - ... - - -@runtime_checkable -class ConsoleRenderable(Protocol): - """An object that supports the console protocol.""" - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": # pragma: no cover - ... - - -# A type that may be rendered by Console. -RenderableType = Union[ConsoleRenderable, RichCast, str] - -# The result of calling a __rich_console__ method. -RenderResult = Iterable[Union[RenderableType, Segment]] - -_null_highlighter = NullHighlighter() - - -class CaptureError(Exception): - """An error in the Capture context manager.""" - - -class NewLine: - """A renderable to generate new line(s)""" - - def __init__(self, count: int = 1) -> None: - self.count = count - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> Iterable[Segment]: - yield Segment("\n" * self.count) - - -class ScreenUpdate: - """Render a list of lines at a given offset.""" - - def __init__(self, lines: List[List[Segment]], x: int, y: int) -> None: - self._lines = lines - self.x = x - self.y = y - - def __rich_console__( - self, console: "Console", options: ConsoleOptions - ) -> RenderResult: - x = self.x - move_to = Control.move_to - for offset, line in enumerate(self._lines, self.y): - yield move_to(x, offset) - yield from line - - -class Capture: - """Context manager to capture the result of printing to the console. - See :meth:`~rich.console.Console.capture` for how to use. - - Args: - console (Console): A console instance to capture output. - """ - - def __init__(self, console: "Console") -> None: - self._console = console - self._result: Optional[str] = None - - def __enter__(self) -> "Capture": - self._console.begin_capture() - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - self._result = self._console.end_capture() - - def get(self) -> str: - """Get the result of the capture.""" - if self._result is None: - raise CaptureError( - "Capture result is not available until context manager exits." - ) - return self._result - - -class ThemeContext: - """A context manager to use a temporary theme. See :meth:`~rich.console.Console.use_theme` for usage.""" - - def __init__(self, console: "Console", theme: Theme, inherit: bool = True) -> None: - self.console = console - self.theme = theme - self.inherit = inherit - - def __enter__(self) -> "ThemeContext": - self.console.push_theme(self.theme) - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - self.console.pop_theme() - - -class PagerContext: - """A context manager that 'pages' content. See :meth:`~rich.console.Console.pager` for usage.""" - - def __init__( - self, - console: "Console", - pager: Optional[Pager] = None, - styles: bool = False, - links: bool = False, - ) -> None: - self._console = console - self.pager = SystemPager() if pager is None else pager - self.styles = styles - self.links = links - - def __enter__(self) -> "PagerContext": - self._console._enter_buffer() - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - if exc_type is None: - with self._console._lock: - buffer: List[Segment] = self._console._buffer[:] - del self._console._buffer[:] - segments: Iterable[Segment] = buffer - if not self.styles: - segments = Segment.strip_styles(segments) - elif not self.links: - segments = Segment.strip_links(segments) - content = self._console._render_buffer(segments) - self.pager.show(content) - self._console._exit_buffer() - - -class ScreenContext: - """A context manager that enables an alternative screen. See :meth:`~rich.console.Console.screen` for usage.""" - - def __init__( - self, console: "Console", hide_cursor: bool, style: StyleType = "" - ) -> None: - self.console = console - self.hide_cursor = hide_cursor - self.screen = Screen(style=style) - self._changed = False - - def update( - self, *renderables: RenderableType, style: Optional[StyleType] = None - ) -> None: - """Update the screen. - - Args: - renderable (RenderableType, optional): Optional renderable to replace current renderable, - or None for no change. Defaults to None. - style: (Style, optional): Replacement style, or None for no change. Defaults to None. - """ - if renderables: - self.screen.renderable = ( - Group(*renderables) if len(renderables) > 1 else renderables[0] - ) - if style is not None: - self.screen.style = style - self.console.print(self.screen, end="") - - def __enter__(self) -> "ScreenContext": - self._changed = self.console.set_alt_screen(True) - if self._changed and self.hide_cursor: - self.console.show_cursor(False) - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - if self._changed: - self.console.set_alt_screen(False) - if self.hide_cursor: - self.console.show_cursor(True) - - -class Group: - """Takes a group of renderables and returns a renderable object that renders the group. - - Args: - renderables (Iterable[RenderableType]): An iterable of renderable objects. - fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. - """ - - def __init__(self, *renderables: "RenderableType", fit: bool = True) -> None: - self._renderables = renderables - self.fit = fit - self._render: Optional[List[RenderableType]] = None - - @property - def renderables(self) -> List["RenderableType"]: - if self._render is None: - self._render = list(self._renderables) - return self._render - - def __rich_measure__( - self, console: "Console", options: "ConsoleOptions" - ) -> "Measurement": - if self.fit: - return measure_renderables(console, options, self.renderables) - else: - return Measurement(options.max_width, options.max_width) - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> RenderResult: - yield from self.renderables - - -def group(fit: bool = True) -> Callable[..., Callable[..., Group]]: - """A decorator that turns an iterable of renderables in to a group. - - Args: - fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. - """ - - def decorator( - method: Callable[..., Iterable[RenderableType]] - ) -> Callable[..., Group]: - """Convert a method that returns an iterable of renderables in to a Group.""" - - @wraps(method) - def _replace(*args: Any, **kwargs: Any) -> Group: - renderables = method(*args, **kwargs) - return Group(*renderables, fit=fit) - - return _replace - - return decorator - - -def _is_jupyter() -> bool: # pragma: no cover - """Check if we're running in a Jupyter notebook.""" - try: - get_ipython # type: ignore[name-defined] - except NameError: - return False - ipython = get_ipython() # type: ignore[name-defined] - shell = ipython.__class__.__name__ - if ( - "google.colab" in str(ipython.__class__) - or os.getenv("DATABRICKS_RUNTIME_VERSION") - or shell == "ZMQInteractiveShell" - ): - return True # Jupyter notebook or qtconsole - elif shell == "TerminalInteractiveShell": - return False # Terminal running IPython - else: - return False # Other type (?) - - -COLOR_SYSTEMS = { - "standard": ColorSystem.STANDARD, - "256": ColorSystem.EIGHT_BIT, - "truecolor": ColorSystem.TRUECOLOR, - "windows": ColorSystem.WINDOWS, -} - -_COLOR_SYSTEMS_NAMES = {system: name for name, system in COLOR_SYSTEMS.items()} - - -@dataclass -class ConsoleThreadLocals(threading.local): - """Thread local values for Console context.""" - - theme_stack: ThemeStack - buffer: List[Segment] = field(default_factory=list) - buffer_index: int = 0 - - -class RenderHook(ABC): - """Provides hooks in to the render process.""" - - @abstractmethod - def process_renderables( - self, renderables: List[ConsoleRenderable] - ) -> List[ConsoleRenderable]: - """Called with a list of objects to render. - - This method can return a new list of renderables, or modify and return the same list. - - Args: - renderables (List[ConsoleRenderable]): A number of renderable objects. - - Returns: - List[ConsoleRenderable]: A replacement list of renderables. - """ - - -_windows_console_features: Optional["WindowsConsoleFeatures"] = None - - -def get_windows_console_features() -> "WindowsConsoleFeatures": # pragma: no cover - global _windows_console_features - if _windows_console_features is not None: - return _windows_console_features - from ._windows import get_windows_console_features - - _windows_console_features = get_windows_console_features() - return _windows_console_features - - -def detect_legacy_windows() -> bool: - """Detect legacy Windows.""" - return WINDOWS and not get_windows_console_features().vt - - -class Console: - """A high level console interface. - - Args: - color_system (str, optional): The color system supported by your terminal, - either ``"standard"``, ``"256"`` or ``"truecolor"``. Leave as ``"auto"`` to autodetect. - force_terminal (Optional[bool], optional): Enable/disable terminal control codes, or None to auto-detect terminal. Defaults to None. - force_jupyter (Optional[bool], optional): Enable/disable Jupyter rendering, or None to auto-detect Jupyter. Defaults to None. - force_interactive (Optional[bool], optional): Enable/disable interactive mode, or None to auto detect. Defaults to None. - soft_wrap (Optional[bool], optional): Set soft wrap default on print method. Defaults to False. - theme (Theme, optional): An optional style theme object, or ``None`` for default theme. - stderr (bool, optional): Use stderr rather than stdout if ``file`` is not specified. Defaults to False. - file (IO, optional): A file object where the console should write to. Defaults to stdout. - quiet (bool, Optional): Boolean to suppress all output. Defaults to False. - width (int, optional): The width of the terminal. Leave as default to auto-detect width. - height (int, optional): The height of the terminal. Leave as default to auto-detect height. - style (StyleType, optional): Style to apply to all output, or None for no style. Defaults to None. - no_color (Optional[bool], optional): Enabled no color mode, or None to auto detect. Defaults to None. - tab_size (int, optional): Number of spaces used to replace a tab character. Defaults to 8. - record (bool, optional): Boolean to enable recording of terminal output, - required to call :meth:`export_html`, :meth:`export_svg`, and :meth:`export_text`. Defaults to False. - markup (bool, optional): Boolean to enable :ref:`console_markup`. Defaults to True. - emoji (bool, optional): Enable emoji code. Defaults to True. - emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None. - highlight (bool, optional): Enable automatic highlighting. Defaults to True. - log_time (bool, optional): Boolean to enable logging of time by :meth:`log` methods. Defaults to True. - log_path (bool, optional): Boolean to enable the logging of the caller by :meth:`log`. Defaults to True. - log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` is enabled, either string for strftime or callable that formats the time. Defaults to "[%X] ". - highlighter (HighlighterType, optional): Default highlighter. - legacy_windows (bool, optional): Enable legacy Windows mode, or ``None`` to auto detect. Defaults to ``None``. - safe_box (bool, optional): Restrict box options that don't render on legacy Windows. - get_datetime (Callable[[], datetime], optional): Callable that gets the current time as a datetime.datetime object (used by Console.log), - or None for datetime.now. - get_time (Callable[[], time], optional): Callable that gets the current time in seconds, default uses time.monotonic. - """ - - _environ: Mapping[str, str] = os.environ - - def __init__( - self, - *, - color_system: Optional[ - Literal["auto", "standard", "256", "truecolor", "windows"] - ] = "auto", - force_terminal: Optional[bool] = None, - force_jupyter: Optional[bool] = None, - force_interactive: Optional[bool] = None, - soft_wrap: bool = False, - theme: Optional[Theme] = None, - stderr: bool = False, - file: Optional[IO[str]] = None, - quiet: bool = False, - width: Optional[int] = None, - height: Optional[int] = None, - style: Optional[StyleType] = None, - no_color: Optional[bool] = None, - tab_size: int = 8, - record: bool = False, - markup: bool = True, - emoji: bool = True, - emoji_variant: Optional[EmojiVariant] = None, - highlight: bool = True, - log_time: bool = True, - log_path: bool = True, - log_time_format: Union[str, FormatTimeCallable] = "[%X]", - highlighter: Optional["HighlighterType"] = ReprHighlighter(), - legacy_windows: Optional[bool] = None, - safe_box: bool = True, - get_datetime: Optional[Callable[[], datetime]] = None, - get_time: Optional[Callable[[], float]] = None, - _environ: Optional[Mapping[str, str]] = None, - ): - # Copy of os.environ allows us to replace it for testing - if _environ is not None: - self._environ = _environ - - self.is_jupyter = _is_jupyter() if force_jupyter is None else force_jupyter - if self.is_jupyter: - if width is None: - jupyter_columns = self._environ.get("JUPYTER_COLUMNS") - if jupyter_columns is not None and jupyter_columns.isdigit(): - width = int(jupyter_columns) - else: - width = JUPYTER_DEFAULT_COLUMNS - if height is None: - jupyter_lines = self._environ.get("JUPYTER_LINES") - if jupyter_lines is not None and jupyter_lines.isdigit(): - height = int(jupyter_lines) - else: - height = JUPYTER_DEFAULT_LINES - - self.tab_size = tab_size - self.record = record - self._markup = markup - self._emoji = emoji - self._emoji_variant: Optional[EmojiVariant] = emoji_variant - self._highlight = highlight - self.legacy_windows: bool = ( - (detect_legacy_windows() and not self.is_jupyter) - if legacy_windows is None - else legacy_windows - ) - - if width is None: - columns = self._environ.get("COLUMNS") - if columns is not None and columns.isdigit(): - width = int(columns) - self.legacy_windows - if height is None: - lines = self._environ.get("LINES") - if lines is not None and lines.isdigit(): - height = int(lines) - - self.soft_wrap = soft_wrap - self._width = width - self._height = height - - self._color_system: Optional[ColorSystem] - - self._force_terminal = None - if force_terminal is not None: - self._force_terminal = force_terminal - - self._file = file - self.quiet = quiet - self.stderr = stderr - - if color_system is None: - self._color_system = None - elif color_system == "auto": - self._color_system = self._detect_color_system() - else: - self._color_system = COLOR_SYSTEMS[color_system] - - self._lock = threading.RLock() - self._log_render = LogRender( - show_time=log_time, - show_path=log_path, - time_format=log_time_format, - ) - self.highlighter: HighlighterType = highlighter or _null_highlighter - self.safe_box = safe_box - self.get_datetime = get_datetime or datetime.now - self.get_time = get_time or monotonic - self.style = style - self.no_color = ( - no_color if no_color is not None else "NO_COLOR" in self._environ - ) - self.is_interactive = ( - (self.is_terminal and not self.is_dumb_terminal) - if force_interactive is None - else force_interactive - ) - - self._record_buffer_lock = threading.RLock() - self._thread_locals = ConsoleThreadLocals( - theme_stack=ThemeStack(themes.DEFAULT if theme is None else theme) - ) - self._record_buffer: List[Segment] = [] - self._render_hooks: List[RenderHook] = [] - self._live: Optional["Live"] = None - self._is_alt_screen = False - - def __repr__(self) -> str: - return f"" - - @property - def file(self) -> IO[str]: - """Get the file object to write to.""" - file = self._file or (sys.stderr if self.stderr else sys.stdout) - file = getattr(file, "rich_proxied_file", file) - if file is None: - file = NULL_FILE - return file - - @file.setter - def file(self, new_file: IO[str]) -> None: - """Set a new file object.""" - self._file = new_file - - @property - def _buffer(self) -> List[Segment]: - """Get a thread local buffer.""" - return self._thread_locals.buffer - - @property - def _buffer_index(self) -> int: - """Get a thread local buffer.""" - return self._thread_locals.buffer_index - - @_buffer_index.setter - def _buffer_index(self, value: int) -> None: - self._thread_locals.buffer_index = value - - @property - def _theme_stack(self) -> ThemeStack: - """Get the thread local theme stack.""" - return self._thread_locals.theme_stack - - def _detect_color_system(self) -> Optional[ColorSystem]: - """Detect color system from env vars.""" - if self.is_jupyter: - return ColorSystem.TRUECOLOR - if not self.is_terminal or self.is_dumb_terminal: - return None - if WINDOWS: # pragma: no cover - if self.legacy_windows: # pragma: no cover - return ColorSystem.WINDOWS - windows_console_features = get_windows_console_features() - return ( - ColorSystem.TRUECOLOR - if windows_console_features.truecolor - else ColorSystem.EIGHT_BIT - ) - else: - color_term = self._environ.get("COLORTERM", "").strip().lower() - if color_term in ("truecolor", "24bit"): - return ColorSystem.TRUECOLOR - term = self._environ.get("TERM", "").strip().lower() - _term_name, _hyphen, colors = term.rpartition("-") - color_system = _TERM_COLORS.get(colors, ColorSystem.STANDARD) - return color_system - - def _enter_buffer(self) -> None: - """Enter in to a buffer context, and buffer all output.""" - self._buffer_index += 1 - - def _exit_buffer(self) -> None: - """Leave buffer context, and render content if required.""" - self._buffer_index -= 1 - self._check_buffer() - - def set_live(self, live: "Live") -> None: - """Set Live instance. Used by Live context manager. - - Args: - live (Live): Live instance using this Console. - - Raises: - errors.LiveError: If this Console has a Live context currently active. - """ - with self._lock: - if self._live is not None: - raise errors.LiveError("Only one live display may be active at once") - self._live = live - - def clear_live(self) -> None: - """Clear the Live instance.""" - with self._lock: - self._live = None - - def push_render_hook(self, hook: RenderHook) -> None: - """Add a new render hook to the stack. - - Args: - hook (RenderHook): Render hook instance. - """ - with self._lock: - self._render_hooks.append(hook) - - def pop_render_hook(self) -> None: - """Pop the last renderhook from the stack.""" - with self._lock: - self._render_hooks.pop() - - def __enter__(self) -> "Console": - """Own context manager to enter buffer context.""" - self._enter_buffer() - return self - - def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None: - """Exit buffer context.""" - self._exit_buffer() - - def begin_capture(self) -> None: - """Begin capturing console output. Call :meth:`end_capture` to exit capture mode and return output.""" - self._enter_buffer() - - def end_capture(self) -> str: - """End capture mode and return captured string. - - Returns: - str: Console output. - """ - render_result = self._render_buffer(self._buffer) - del self._buffer[:] - self._exit_buffer() - return render_result - - def push_theme(self, theme: Theme, *, inherit: bool = True) -> None: - """Push a new theme on to the top of the stack, replacing the styles from the previous theme. - Generally speaking, you should call :meth:`~rich.console.Console.use_theme` to get a context manager, rather - than calling this method directly. - - Args: - theme (Theme): A theme instance. - inherit (bool, optional): Inherit existing styles. Defaults to True. - """ - self._theme_stack.push_theme(theme, inherit=inherit) - - def pop_theme(self) -> None: - """Remove theme from top of stack, restoring previous theme.""" - self._theme_stack.pop_theme() - - def use_theme(self, theme: Theme, *, inherit: bool = True) -> ThemeContext: - """Use a different theme for the duration of the context manager. - - Args: - theme (Theme): Theme instance to user. - inherit (bool, optional): Inherit existing console styles. Defaults to True. - - Returns: - ThemeContext: [description] - """ - return ThemeContext(self, theme, inherit) - - @property - def color_system(self) -> Optional[str]: - """Get color system string. - - Returns: - Optional[str]: "standard", "256" or "truecolor". - """ - - if self._color_system is not None: - return _COLOR_SYSTEMS_NAMES[self._color_system] - else: - return None - - @property - def encoding(self) -> str: - """Get the encoding of the console file, e.g. ``"utf-8"``. - - Returns: - str: A standard encoding string. - """ - return (getattr(self.file, "encoding", "utf-8") or "utf-8").lower() - - @property - def is_terminal(self) -> bool: - """Check if the console is writing to a terminal. - - Returns: - bool: True if the console writing to a device capable of - understanding terminal codes, otherwise False. - """ - if self._force_terminal is not None: - return self._force_terminal - - if hasattr(sys.stdin, "__module__") and sys.stdin.__module__.startswith( - "idlelib" - ): - # Return False for Idle which claims to be a tty but can't handle ansi codes - return False - - if self.is_jupyter: - # return False for Jupyter, which may have FORCE_COLOR set - return False - - # If FORCE_COLOR env var has any value at all, we assume a terminal. - force_color = self._environ.get("FORCE_COLOR") - if force_color is not None: - self._force_terminal = True - return True - - isatty: Optional[Callable[[], bool]] = getattr(self.file, "isatty", None) - try: - return False if isatty is None else isatty() - except ValueError: - # in some situation (at the end of a pytest run for example) isatty() can raise - # ValueError: I/O operation on closed file - # return False because we aren't in a terminal anymore - return False - - @property - def is_dumb_terminal(self) -> bool: - """Detect dumb terminal. - - Returns: - bool: True if writing to a dumb terminal, otherwise False. - - """ - _term = self._environ.get("TERM", "") - is_dumb = _term.lower() in ("dumb", "unknown") - return self.is_terminal and is_dumb - - @property - def options(self) -> ConsoleOptions: - """Get default console options.""" - return ConsoleOptions( - max_height=self.size.height, - size=self.size, - legacy_windows=self.legacy_windows, - min_width=1, - max_width=self.width, - encoding=self.encoding, - is_terminal=self.is_terminal, - ) - - @property - def size(self) -> ConsoleDimensions: - """Get the size of the console. - - Returns: - ConsoleDimensions: A named tuple containing the dimensions. - """ - - if self._width is not None and self._height is not None: - return ConsoleDimensions(self._width - self.legacy_windows, self._height) - - if self.is_dumb_terminal: - return ConsoleDimensions(80, 25) - - width: Optional[int] = None - height: Optional[int] = None - - if WINDOWS: # pragma: no cover - try: - width, height = os.get_terminal_size() - except (AttributeError, ValueError, OSError): # Probably not a terminal - pass - else: - for file_descriptor in _STD_STREAMS: - try: - width, height = os.get_terminal_size(file_descriptor) - except (AttributeError, ValueError, OSError): - pass - else: - break - - columns = self._environ.get("COLUMNS") - if columns is not None and columns.isdigit(): - width = int(columns) - lines = self._environ.get("LINES") - if lines is not None and lines.isdigit(): - height = int(lines) - - # get_terminal_size can report 0, 0 if run from pseudo-terminal - width = width or 80 - height = height or 25 - return ConsoleDimensions( - width - self.legacy_windows if self._width is None else self._width, - height if self._height is None else self._height, - ) - - @size.setter - def size(self, new_size: Tuple[int, int]) -> None: - """Set a new size for the terminal. - - Args: - new_size (Tuple[int, int]): New width and height. - """ - width, height = new_size - self._width = width - self._height = height - - @property - def width(self) -> int: - """Get the width of the console. - - Returns: - int: The width (in characters) of the console. - """ - return self.size.width - - @width.setter - def width(self, width: int) -> None: - """Set width. - - Args: - width (int): New width. - """ - self._width = width - - @property - def height(self) -> int: - """Get the height of the console. - - Returns: - int: The height (in lines) of the console. - """ - return self.size.height - - @height.setter - def height(self, height: int) -> None: - """Set height. - - Args: - height (int): new height. - """ - self._height = height - - def bell(self) -> None: - """Play a 'bell' sound (if supported by the terminal).""" - self.control(Control.bell()) - - def capture(self) -> Capture: - """A context manager to *capture* the result of print() or log() in a string, - rather than writing it to the console. - - Example: - >>> from rich.console import Console - >>> console = Console() - >>> with console.capture() as capture: - ... console.print("[bold magenta]Hello World[/]") - >>> print(capture.get()) - - Returns: - Capture: Context manager with disables writing to the terminal. - """ - capture = Capture(self) - return capture - - def pager( - self, pager: Optional[Pager] = None, styles: bool = False, links: bool = False - ) -> PagerContext: - """A context manager to display anything printed within a "pager". The pager application - is defined by the system and will typically support at least pressing a key to scroll. - - Args: - pager (Pager, optional): A pager object, or None to use :class:`~rich.pager.SystemPager`. Defaults to None. - styles (bool, optional): Show styles in pager. Defaults to False. - links (bool, optional): Show links in pager. Defaults to False. - - Example: - >>> from rich.console import Console - >>> from rich.__main__ import make_test_card - >>> console = Console() - >>> with console.pager(): - console.print(make_test_card()) - - Returns: - PagerContext: A context manager. - """ - return PagerContext(self, pager=pager, styles=styles, links=links) - - def line(self, count: int = 1) -> None: - """Write new line(s). - - Args: - count (int, optional): Number of new lines. Defaults to 1. - """ - - assert count >= 0, "count must be >= 0" - self.print(NewLine(count)) - - def clear(self, home: bool = True) -> None: - """Clear the screen. - - Args: - home (bool, optional): Also move the cursor to 'home' position. Defaults to True. - """ - if home: - self.control(Control.clear(), Control.home()) - else: - self.control(Control.clear()) - - def status( - self, - status: RenderableType, - *, - spinner: str = "dots", - spinner_style: StyleType = "status.spinner", - speed: float = 1.0, - refresh_per_second: float = 12.5, - ) -> "Status": - """Display a status and spinner. - - Args: - status (RenderableType): A status renderable (str or Text typically). - spinner (str, optional): Name of spinner animation (see python -m rich.spinner). Defaults to "dots". - spinner_style (StyleType, optional): Style of spinner. Defaults to "status.spinner". - speed (float, optional): Speed factor for spinner animation. Defaults to 1.0. - refresh_per_second (float, optional): Number of refreshes per second. Defaults to 12.5. - - Returns: - Status: A Status object that may be used as a context manager. - """ - from .status import Status - - status_renderable = Status( - status, - console=self, - spinner=spinner, - spinner_style=spinner_style, - speed=speed, - refresh_per_second=refresh_per_second, - ) - return status_renderable - - def show_cursor(self, show: bool = True) -> bool: - """Show or hide the cursor. - - Args: - show (bool, optional): Set visibility of the cursor. - """ - if self.is_terminal: - self.control(Control.show_cursor(show)) - return True - return False - - def set_alt_screen(self, enable: bool = True) -> bool: - """Enables alternative screen mode. - - Note, if you enable this mode, you should ensure that is disabled before - the application exits. See :meth:`~rich.Console.screen` for a context manager - that handles this for you. - - Args: - enable (bool, optional): Enable (True) or disable (False) alternate screen. Defaults to True. - - Returns: - bool: True if the control codes were written. - - """ - changed = False - if self.is_terminal and not self.legacy_windows: - self.control(Control.alt_screen(enable)) - changed = True - self._is_alt_screen = enable - return changed - - @property - def is_alt_screen(self) -> bool: - """Check if the alt screen was enabled. - - Returns: - bool: True if the alt screen was enabled, otherwise False. - """ - return self._is_alt_screen - - def set_window_title(self, title: str) -> bool: - """Set the title of the console terminal window. - - Warning: There is no means within Rich of "resetting" the window title to its - previous value, meaning the title you set will persist even after your application - exits. - - ``fish`` shell resets the window title before and after each command by default, - negating this issue. Windows Terminal and command prompt will also reset the title for you. - Most other shells and terminals, however, do not do this. - - Some terminals may require configuration changes before you can set the title. - Some terminals may not support setting the title at all. - - Other software (including the terminal itself, the shell, custom prompts, plugins, etc.) - may also set the terminal window title. This could result in whatever value you write - using this method being overwritten. - - Args: - title (str): The new title of the terminal window. - - Returns: - bool: True if the control code to change the terminal title was - written, otherwise False. Note that a return value of True - does not guarantee that the window title has actually changed, - since the feature may be unsupported/disabled in some terminals. - """ - if self.is_terminal: - self.control(Control.title(title)) - return True - return False - - def screen( - self, hide_cursor: bool = True, style: Optional[StyleType] = None - ) -> "ScreenContext": - """Context manager to enable and disable 'alternative screen' mode. - - Args: - hide_cursor (bool, optional): Also hide the cursor. Defaults to False. - style (Style, optional): Optional style for screen. Defaults to None. - - Returns: - ~ScreenContext: Context which enables alternate screen on enter, and disables it on exit. - """ - return ScreenContext(self, hide_cursor=hide_cursor, style=style or "") - - def measure( - self, renderable: RenderableType, *, options: Optional[ConsoleOptions] = None - ) -> Measurement: - """Measure a renderable. Returns a :class:`~rich.measure.Measurement` object which contains - information regarding the number of characters required to print the renderable. - - Args: - renderable (RenderableType): Any renderable or string. - options (Optional[ConsoleOptions], optional): Options to use when measuring, or None - to use default options. Defaults to None. - - Returns: - Measurement: A measurement of the renderable. - """ - measurement = Measurement.get(self, options or self.options, renderable) - return measurement - - def render( - self, renderable: RenderableType, options: Optional[ConsoleOptions] = None - ) -> Iterable[Segment]: - """Render an object in to an iterable of `Segment` instances. - - This method contains the logic for rendering objects with the console protocol. - You are unlikely to need to use it directly, unless you are extending the library. - - Args: - renderable (RenderableType): An object supporting the console protocol, or - an object that may be converted to a string. - options (ConsoleOptions, optional): An options object, or None to use self.options. Defaults to None. - - Returns: - Iterable[Segment]: An iterable of segments that may be rendered. - """ - - _options = options or self.options - if _options.max_width < 1: - # No space to render anything. This prevents potential recursion errors. - return - render_iterable: RenderResult - - renderable = rich_cast(renderable) - if hasattr(renderable, "__rich_console__") and not isclass(renderable): - render_iterable = renderable.__rich_console__(self, _options) # type: ignore[union-attr] - elif isinstance(renderable, str): - text_renderable = self.render_str( - renderable, highlight=_options.highlight, markup=_options.markup - ) - render_iterable = text_renderable.__rich_console__(self, _options) - else: - raise errors.NotRenderableError( - f"Unable to render {renderable!r}; " - "A str, Segment or object with __rich_console__ method is required" - ) - - try: - iter_render = iter(render_iterable) - except TypeError: - raise errors.NotRenderableError( - f"object {render_iterable!r} is not renderable" - ) - _Segment = Segment - _options = _options.reset_height() - for render_output in iter_render: - if isinstance(render_output, _Segment): - yield render_output - else: - yield from self.render(render_output, _options) - - def render_lines( - self, - renderable: RenderableType, - options: Optional[ConsoleOptions] = None, - *, - style: Optional[Style] = None, - pad: bool = True, - new_lines: bool = False, - ) -> List[List[Segment]]: - """Render objects in to a list of lines. - - The output of render_lines is useful when further formatting of rendered console text - is required, such as the Panel class which draws a border around any renderable object. - - Args: - renderable (RenderableType): Any object renderable in the console. - options (Optional[ConsoleOptions], optional): Console options, or None to use self.options. Default to ``None``. - style (Style, optional): Optional style to apply to renderables. Defaults to ``None``. - pad (bool, optional): Pad lines shorter than render width. Defaults to ``True``. - new_lines (bool, optional): Include "\n" characters at end of lines. - - Returns: - List[List[Segment]]: A list of lines, where a line is a list of Segment objects. - """ - with self._lock: - render_options = options or self.options - _rendered = self.render(renderable, render_options) - if style: - _rendered = Segment.apply_style(_rendered, style) - - render_height = render_options.height - if render_height is not None: - render_height = max(0, render_height) - - lines = list( - islice( - Segment.split_and_crop_lines( - _rendered, - render_options.max_width, - include_new_lines=new_lines, - pad=pad, - style=style, - ), - None, - render_height, - ) - ) - if render_options.height is not None: - extra_lines = render_options.height - len(lines) - if extra_lines > 0: - pad_line = [ - [Segment(" " * render_options.max_width, style), Segment("\n")] - if new_lines - else [Segment(" " * render_options.max_width, style)] - ] - lines.extend(pad_line * extra_lines) - - return lines - - def render_str( - self, - text: str, - *, - style: Union[str, Style] = "", - justify: Optional[JustifyMethod] = None, - overflow: Optional[OverflowMethod] = None, - emoji: Optional[bool] = None, - markup: Optional[bool] = None, - highlight: Optional[bool] = None, - highlighter: Optional[HighlighterType] = None, - ) -> "Text": - """Convert a string to a Text instance. This is called automatically if - you print or log a string. - - Args: - text (str): Text to render. - style (Union[str, Style], optional): Style to apply to rendered text. - justify (str, optional): Justify method: "default", "left", "center", "full", or "right". Defaults to ``None``. - overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to ``None``. - emoji (Optional[bool], optional): Enable emoji, or ``None`` to use Console default. - markup (Optional[bool], optional): Enable markup, or ``None`` to use Console default. - highlight (Optional[bool], optional): Enable highlighting, or ``None`` to use Console default. - highlighter (HighlighterType, optional): Optional highlighter to apply. - Returns: - ConsoleRenderable: Renderable object. - - """ - emoji_enabled = emoji or (emoji is None and self._emoji) - markup_enabled = markup or (markup is None and self._markup) - highlight_enabled = highlight or (highlight is None and self._highlight) - - if markup_enabled: - rich_text = render_markup( - text, - style=style, - emoji=emoji_enabled, - emoji_variant=self._emoji_variant, - ) - rich_text.justify = justify - rich_text.overflow = overflow - else: - rich_text = Text( - _emoji_replace(text, default_variant=self._emoji_variant) - if emoji_enabled - else text, - justify=justify, - overflow=overflow, - style=style, - ) - - _highlighter = (highlighter or self.highlighter) if highlight_enabled else None - if _highlighter is not None: - highlight_text = _highlighter(str(rich_text)) - highlight_text.copy_styles(rich_text) - return highlight_text - - return rich_text - - def get_style( - self, name: Union[str, Style], *, default: Optional[Union[Style, str]] = None - ) -> Style: - """Get a Style instance by its theme name or parse a definition. - - Args: - name (str): The name of a style or a style definition. - - Returns: - Style: A Style object. - - Raises: - MissingStyle: If no style could be parsed from name. - - """ - if isinstance(name, Style): - return name - - try: - style = self._theme_stack.get(name) - if style is None: - style = Style.parse(name) - return style.copy() if style.link else style - except errors.StyleSyntaxError as error: - if default is not None: - return self.get_style(default) - raise errors.MissingStyle( - f"Failed to get style {name!r}; {error}" - ) from None - - def _collect_renderables( - self, - objects: Iterable[Any], - sep: str, - end: str, - *, - justify: Optional[JustifyMethod] = None, - emoji: Optional[bool] = None, - markup: Optional[bool] = None, - highlight: Optional[bool] = None, - ) -> List[ConsoleRenderable]: - """Combine a number of renderables and text into one renderable. - - Args: - objects (Iterable[Any]): Anything that Rich can render. - sep (str): String to write between print data. - end (str): String to write at end of print data. - justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. - emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. - markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. - highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. - - Returns: - List[ConsoleRenderable]: A list of things to render. - """ - renderables: List[ConsoleRenderable] = [] - _append = renderables.append - text: List[Text] = [] - append_text = text.append - - append = _append - if justify in ("left", "center", "right"): - - def align_append(renderable: RenderableType) -> None: - _append(Align(renderable, cast(AlignMethod, justify))) - - append = align_append - - _highlighter: HighlighterType = _null_highlighter - if highlight or (highlight is None and self._highlight): - _highlighter = self.highlighter - - def check_text() -> None: - if text: - sep_text = Text(sep, justify=justify, end=end) - append(sep_text.join(text)) - text.clear() - - for renderable in objects: - renderable = rich_cast(renderable) - if isinstance(renderable, str): - append_text( - self.render_str( - renderable, emoji=emoji, markup=markup, highlighter=_highlighter - ) - ) - elif isinstance(renderable, Text): - append_text(renderable) - elif isinstance(renderable, ConsoleRenderable): - check_text() - append(renderable) - elif is_expandable(renderable): - check_text() - append(Pretty(renderable, highlighter=_highlighter)) - else: - append_text(_highlighter(str(renderable))) - - check_text() - - if self.style is not None: - style = self.get_style(self.style) - renderables = [Styled(renderable, style) for renderable in renderables] - - return renderables - - def rule( - self, - title: TextType = "", - *, - characters: str = "─", - style: Union[str, Style] = "rule.line", - align: AlignMethod = "center", - ) -> None: - """Draw a line with optional centered title. - - Args: - title (str, optional): Text to render over the rule. Defaults to "". - characters (str, optional): Character(s) to form the line. Defaults to "─". - style (str, optional): Style of line. Defaults to "rule.line". - align (str, optional): How to align the title, one of "left", "center", or "right". Defaults to "center". - """ - from .rule import Rule - - rule = Rule(title=title, characters=characters, style=style, align=align) - self.print(rule) - - def control(self, *control: Control) -> None: - """Insert non-printing control codes. - - Args: - control_codes (str): Control codes, such as those that may move the cursor. - """ - if not self.is_dumb_terminal: - with self: - self._buffer.extend(_control.segment for _control in control) - - def out( - self, - *objects: Any, - sep: str = " ", - end: str = "\n", - style: Optional[Union[str, Style]] = None, - highlight: Optional[bool] = None, - ) -> None: - """Output to the terminal. This is a low-level way of writing to the terminal which unlike - :meth:`~rich.console.Console.print` won't pretty print, wrap text, or apply markup, but will - optionally apply highlighting and a basic style. - - Args: - sep (str, optional): String to write between print data. Defaults to " ". - end (str, optional): String to write at end of print data. Defaults to "\\\\n". - style (Union[str, Style], optional): A style to apply to output. Defaults to None. - highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use - console default. Defaults to ``None``. - """ - raw_output: str = sep.join(str(_object) for _object in objects) - self.print( - raw_output, - style=style, - highlight=highlight, - emoji=False, - markup=False, - no_wrap=True, - overflow="ignore", - crop=False, - end=end, - ) - - def print( - self, - *objects: Any, - sep: str = " ", - end: str = "\n", - style: Optional[Union[str, Style]] = None, - justify: Optional[JustifyMethod] = None, - overflow: Optional[OverflowMethod] = None, - no_wrap: Optional[bool] = None, - emoji: Optional[bool] = None, - markup: Optional[bool] = None, - highlight: Optional[bool] = None, - width: Optional[int] = None, - height: Optional[int] = None, - crop: bool = True, - soft_wrap: Optional[bool] = None, - new_line_start: bool = False, - ) -> None: - """Print to the console. - - Args: - objects (positional args): Objects to log to the terminal. - sep (str, optional): String to write between print data. Defaults to " ". - end (str, optional): String to write at end of print data. Defaults to "\\\\n". - style (Union[str, Style], optional): A style to apply to output. Defaults to None. - justify (str, optional): Justify method: "default", "left", "right", "center", or "full". Defaults to ``None``. - overflow (str, optional): Overflow method: "ignore", "crop", "fold", or "ellipsis". Defaults to None. - no_wrap (Optional[bool], optional): Disable word wrapping. Defaults to None. - emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to ``None``. - markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to ``None``. - highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to ``None``. - width (Optional[int], optional): Width of output, or ``None`` to auto-detect. Defaults to ``None``. - crop (Optional[bool], optional): Crop output to width of terminal. Defaults to True. - soft_wrap (bool, optional): Enable soft wrap mode which disables word wrapping and cropping of text or ``None`` for - Console default. Defaults to ``None``. - new_line_start (bool, False): Insert a new line at the start if the output contains more than one line. Defaults to ``False``. - """ - if not objects: - objects = (NewLine(),) - - if soft_wrap is None: - soft_wrap = self.soft_wrap - if soft_wrap: - if no_wrap is None: - no_wrap = True - if overflow is None: - overflow = "ignore" - crop = False - render_hooks = self._render_hooks[:] - with self: - renderables = self._collect_renderables( - objects, - sep, - end, - justify=justify, - emoji=emoji, - markup=markup, - highlight=highlight, - ) - for hook in render_hooks: - renderables = hook.process_renderables(renderables) - render_options = self.options.update( - justify=justify, - overflow=overflow, - width=min(width, self.width) if width is not None else NO_CHANGE, - height=height, - no_wrap=no_wrap, - markup=markup, - highlight=highlight, - ) - - new_segments: List[Segment] = [] - extend = new_segments.extend - render = self.render - if style is None: - for renderable in renderables: - extend(render(renderable, render_options)) - else: - for renderable in renderables: - extend( - Segment.apply_style( - render(renderable, render_options), self.get_style(style) - ) - ) - if new_line_start: - if ( - len("".join(segment.text for segment in new_segments).splitlines()) - > 1 - ): - new_segments.insert(0, Segment.line()) - if crop: - buffer_extend = self._buffer.extend - for line in Segment.split_and_crop_lines( - new_segments, self.width, pad=False - ): - buffer_extend(line) - else: - self._buffer.extend(new_segments) - - def print_json( - self, - json: Optional[str] = None, - *, - data: Any = None, - indent: Union[None, int, str] = 2, - highlight: bool = True, - skip_keys: bool = False, - ensure_ascii: bool = False, - check_circular: bool = True, - allow_nan: bool = True, - default: Optional[Callable[[Any], Any]] = None, - sort_keys: bool = False, - ) -> None: - """Pretty prints JSON. Output will be valid JSON. - - Args: - json (Optional[str]): A string containing JSON. - data (Any): If json is not supplied, then encode this data. - indent (Union[None, int, str], optional): Number of spaces to indent. Defaults to 2. - highlight (bool, optional): Enable highlighting of output: Defaults to True. - skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. - ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. - check_circular (bool, optional): Check for circular references. Defaults to True. - allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. - default (Callable, optional): A callable that converts values that can not be encoded - in to something that can be JSON encoded. Defaults to None. - sort_keys (bool, optional): Sort dictionary keys. Defaults to False. - """ - from pip._vendor.rich.json import JSON - - if json is None: - json_renderable = JSON.from_data( - data, - indent=indent, - highlight=highlight, - skip_keys=skip_keys, - ensure_ascii=ensure_ascii, - check_circular=check_circular, - allow_nan=allow_nan, - default=default, - sort_keys=sort_keys, - ) - else: - if not isinstance(json, str): - raise TypeError( - f"json must be str. Did you mean print_json(data={json!r}) ?" - ) - json_renderable = JSON( - json, - indent=indent, - highlight=highlight, - skip_keys=skip_keys, - ensure_ascii=ensure_ascii, - check_circular=check_circular, - allow_nan=allow_nan, - default=default, - sort_keys=sort_keys, - ) - self.print(json_renderable, soft_wrap=True) - - def update_screen( - self, - renderable: RenderableType, - *, - region: Optional[Region] = None, - options: Optional[ConsoleOptions] = None, - ) -> None: - """Update the screen at a given offset. - - Args: - renderable (RenderableType): A Rich renderable. - region (Region, optional): Region of screen to update, or None for entire screen. Defaults to None. - x (int, optional): x offset. Defaults to 0. - y (int, optional): y offset. Defaults to 0. - - Raises: - errors.NoAltScreen: If the Console isn't in alt screen mode. - - """ - if not self.is_alt_screen: - raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") - render_options = options or self.options - if region is None: - x = y = 0 - render_options = render_options.update_dimensions( - render_options.max_width, render_options.height or self.height - ) - else: - x, y, width, height = region - render_options = render_options.update_dimensions(width, height) - - lines = self.render_lines(renderable, options=render_options) - self.update_screen_lines(lines, x, y) - - def update_screen_lines( - self, lines: List[List[Segment]], x: int = 0, y: int = 0 - ) -> None: - """Update lines of the screen at a given offset. - - Args: - lines (List[List[Segment]]): Rendered lines (as produced by :meth:`~rich.Console.render_lines`). - x (int, optional): x offset (column no). Defaults to 0. - y (int, optional): y offset (column no). Defaults to 0. - - Raises: - errors.NoAltScreen: If the Console isn't in alt screen mode. - """ - if not self.is_alt_screen: - raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") - screen_update = ScreenUpdate(lines, x, y) - segments = self.render(screen_update) - self._buffer.extend(segments) - self._check_buffer() - - def print_exception( - self, - *, - width: Optional[int] = 100, - extra_lines: int = 3, - theme: Optional[str] = None, - word_wrap: bool = False, - show_locals: bool = False, - suppress: Iterable[Union[str, ModuleType]] = (), - max_frames: int = 100, - ) -> None: - """Prints a rich render of the last exception and traceback. - - Args: - width (Optional[int], optional): Number of characters used to render code. Defaults to 100. - extra_lines (int, optional): Additional lines of code to render. Defaults to 3. - theme (str, optional): Override pygments theme used in traceback - word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. - show_locals (bool, optional): Enable display of local variables. Defaults to False. - suppress (Iterable[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. - max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100. - """ - from .traceback import Traceback - - traceback = Traceback( - width=width, - extra_lines=extra_lines, - theme=theme, - word_wrap=word_wrap, - show_locals=show_locals, - suppress=suppress, - max_frames=max_frames, - ) - self.print(traceback) - - @staticmethod - def _caller_frame_info( - offset: int, - currentframe: Callable[[], Optional[FrameType]] = inspect.currentframe, - ) -> Tuple[str, int, Dict[str, Any]]: - """Get caller frame information. - - Args: - offset (int): the caller offset within the current frame stack. - currentframe (Callable[[], Optional[FrameType]], optional): the callable to use to - retrieve the current frame. Defaults to ``inspect.currentframe``. - - Returns: - Tuple[str, int, Dict[str, Any]]: A tuple containing the filename, the line number and - the dictionary of local variables associated with the caller frame. - - Raises: - RuntimeError: If the stack offset is invalid. - """ - # Ignore the frame of this local helper - offset += 1 - - frame = currentframe() - if frame is not None: - # Use the faster currentframe where implemented - while offset and frame is not None: - frame = frame.f_back - offset -= 1 - assert frame is not None - return frame.f_code.co_filename, frame.f_lineno, frame.f_locals - else: - # Fallback to the slower stack - frame_info = inspect.stack()[offset] - return frame_info.filename, frame_info.lineno, frame_info.frame.f_locals - - def log( - self, - *objects: Any, - sep: str = " ", - end: str = "\n", - style: Optional[Union[str, Style]] = None, - justify: Optional[JustifyMethod] = None, - emoji: Optional[bool] = None, - markup: Optional[bool] = None, - highlight: Optional[bool] = None, - log_locals: bool = False, - _stack_offset: int = 1, - ) -> None: - """Log rich content to the terminal. - - Args: - objects (positional args): Objects to log to the terminal. - sep (str, optional): String to write between print data. Defaults to " ". - end (str, optional): String to write at end of print data. Defaults to "\\\\n". - style (Union[str, Style], optional): A style to apply to output. Defaults to None. - justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. - overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to None. - emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to None. - markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to None. - highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to None. - log_locals (bool, optional): Boolean to enable logging of locals where ``log()`` - was called. Defaults to False. - _stack_offset (int, optional): Offset of caller from end of call stack. Defaults to 1. - """ - if not objects: - objects = (NewLine(),) - - render_hooks = self._render_hooks[:] - - with self: - renderables = self._collect_renderables( - objects, - sep, - end, - justify=justify, - emoji=emoji, - markup=markup, - highlight=highlight, - ) - if style is not None: - renderables = [Styled(renderable, style) for renderable in renderables] - - filename, line_no, locals = self._caller_frame_info(_stack_offset) - link_path = None if filename.startswith("<") else os.path.abspath(filename) - path = filename.rpartition(os.sep)[-1] - if log_locals: - locals_map = { - key: value - for key, value in locals.items() - if not key.startswith("__") - } - renderables.append(render_scope(locals_map, title="[i]locals")) - - renderables = [ - self._log_render( - self, - renderables, - log_time=self.get_datetime(), - path=path, - line_no=line_no, - link_path=link_path, - ) - ] - for hook in render_hooks: - renderables = hook.process_renderables(renderables) - new_segments: List[Segment] = [] - extend = new_segments.extend - render = self.render - render_options = self.options - for renderable in renderables: - extend(render(renderable, render_options)) - buffer_extend = self._buffer.extend - for line in Segment.split_and_crop_lines( - new_segments, self.width, pad=False - ): - buffer_extend(line) - - def _check_buffer(self) -> None: - """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False) - Rendering is supported on Windows, Unix and Jupyter environments. For - legacy Windows consoles, the win32 API is called directly. - This method will also record what it renders if recording is enabled via Console.record. - """ - if self.quiet: - del self._buffer[:] - return - with self._lock: - if self.record: - with self._record_buffer_lock: - self._record_buffer.extend(self._buffer[:]) - - if self._buffer_index == 0: - if self.is_jupyter: # pragma: no cover - from .jupyter import display - - display(self._buffer, self._render_buffer(self._buffer[:])) - del self._buffer[:] - else: - if WINDOWS: - use_legacy_windows_render = False - if self.legacy_windows: - fileno = get_fileno(self.file) - if fileno is not None: - use_legacy_windows_render = ( - fileno in _STD_STREAMS_OUTPUT - ) - - if use_legacy_windows_render: - from pip._vendor.rich._win32_console import LegacyWindowsTerm - from pip._vendor.rich._windows_renderer import legacy_windows_render - - buffer = self._buffer[:] - if self.no_color and self._color_system: - buffer = list(Segment.remove_color(buffer)) - - legacy_windows_render(buffer, LegacyWindowsTerm(self.file)) - else: - # Either a non-std stream on legacy Windows, or modern Windows. - text = self._render_buffer(self._buffer[:]) - # https://bugs.python.org/issue37871 - # https://github.com/python/cpython/issues/82052 - # We need to avoid writing more than 32Kb in a single write, due to the above bug - write = self.file.write - # Worse case scenario, every character is 4 bytes of utf-8 - MAX_WRITE = 32 * 1024 // 4 - try: - if len(text) <= MAX_WRITE: - write(text) - else: - batch: List[str] = [] - batch_append = batch.append - size = 0 - for line in text.splitlines(True): - if size + len(line) > MAX_WRITE and batch: - write("".join(batch)) - batch.clear() - size = 0 - batch_append(line) - size += len(line) - if batch: - write("".join(batch)) - batch.clear() - except UnicodeEncodeError as error: - error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" - raise - else: - text = self._render_buffer(self._buffer[:]) - try: - self.file.write(text) - except UnicodeEncodeError as error: - error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" - raise - - self.file.flush() - del self._buffer[:] - - def _render_buffer(self, buffer: Iterable[Segment]) -> str: - """Render buffered output, and clear buffer.""" - output: List[str] = [] - append = output.append - color_system = self._color_system - legacy_windows = self.legacy_windows - not_terminal = not self.is_terminal - if self.no_color and color_system: - buffer = Segment.remove_color(buffer) - for text, style, control in buffer: - if style: - append( - style.render( - text, - color_system=color_system, - legacy_windows=legacy_windows, - ) - ) - elif not (not_terminal and control): - append(text) - - rendered = "".join(output) - return rendered - - def input( - self, - prompt: TextType = "", - *, - markup: bool = True, - emoji: bool = True, - password: bool = False, - stream: Optional[TextIO] = None, - ) -> str: - """Displays a prompt and waits for input from the user. The prompt may contain color / style. - - It works in the same way as Python's builtin :func:`input` function and provides elaborate line editing and history features if Python's builtin :mod:`readline` module is previously loaded. - - Args: - prompt (Union[str, Text]): Text to render in the prompt. - markup (bool, optional): Enable console markup (requires a str prompt). Defaults to True. - emoji (bool, optional): Enable emoji (requires a str prompt). Defaults to True. - password: (bool, optional): Hide typed text. Defaults to False. - stream: (TextIO, optional): Optional file to read input from (rather than stdin). Defaults to None. - - Returns: - str: Text read from stdin. - """ - if prompt: - self.print(prompt, markup=markup, emoji=emoji, end="") - if password: - result = getpass("", stream=stream) - else: - if stream: - result = stream.readline() - else: - result = input() - return result - - def export_text(self, *, clear: bool = True, styles: bool = False) -> str: - """Generate text from console contents (requires record=True argument in constructor). - - Args: - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. - styles (bool, optional): If ``True``, ansi escape codes will be included. ``False`` for plain text. - Defaults to ``False``. - - Returns: - str: String containing console contents. - - """ - assert ( - self.record - ), "To export console contents set record=True in the constructor or instance" - - with self._record_buffer_lock: - if styles: - text = "".join( - (style.render(text) if style else text) - for text, style, _ in self._record_buffer - ) - else: - text = "".join( - segment.text - for segment in self._record_buffer - if not segment.control - ) - if clear: - del self._record_buffer[:] - return text - - def save_text(self, path: str, *, clear: bool = True, styles: bool = False) -> None: - """Generate text from console and save to a given location (requires record=True argument in constructor). - - Args: - path (str): Path to write text files. - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. - styles (bool, optional): If ``True``, ansi style codes will be included. ``False`` for plain text. - Defaults to ``False``. - - """ - text = self.export_text(clear=clear, styles=styles) - with open(path, "wt", encoding="utf-8") as write_file: - write_file.write(text) - - def export_html( - self, - *, - theme: Optional[TerminalTheme] = None, - clear: bool = True, - code_format: Optional[str] = None, - inline_styles: bool = False, - ) -> str: - """Generate HTML from console contents (requires record=True argument in constructor). - - Args: - theme (TerminalTheme, optional): TerminalTheme object containing console colors. - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. - code_format (str, optional): Format string to render HTML. In addition to '{foreground}', - '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. - inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files - larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. - Defaults to False. - - Returns: - str: String containing console contents as HTML. - """ - assert ( - self.record - ), "To export console contents set record=True in the constructor or instance" - fragments: List[str] = [] - append = fragments.append - _theme = theme or DEFAULT_TERMINAL_THEME - stylesheet = "" - - render_code_format = CONSOLE_HTML_FORMAT if code_format is None else code_format - - with self._record_buffer_lock: - if inline_styles: - for text, style, _ in Segment.filter_control( - Segment.simplify(self._record_buffer) - ): - text = escape(text) - if style: - rule = style.get_html_style(_theme) - if style.link: - text = f'
    {text}' - text = f'{text}' if rule else text - append(text) - else: - styles: Dict[str, int] = {} - for text, style, _ in Segment.filter_control( - Segment.simplify(self._record_buffer) - ): - text = escape(text) - if style: - rule = style.get_html_style(_theme) - style_number = styles.setdefault(rule, len(styles) + 1) - if style.link: - text = f'{text}' - else: - text = f'{text}' - append(text) - stylesheet_rules: List[str] = [] - stylesheet_append = stylesheet_rules.append - for style_rule, style_number in styles.items(): - if style_rule: - stylesheet_append(f".r{style_number} {{{style_rule}}}") - stylesheet = "\n".join(stylesheet_rules) - - rendered_code = render_code_format.format( - code="".join(fragments), - stylesheet=stylesheet, - foreground=_theme.foreground_color.hex, - background=_theme.background_color.hex, - ) - if clear: - del self._record_buffer[:] - return rendered_code - - def save_html( - self, - path: str, - *, - theme: Optional[TerminalTheme] = None, - clear: bool = True, - code_format: str = CONSOLE_HTML_FORMAT, - inline_styles: bool = False, - ) -> None: - """Generate HTML from console contents and write to a file (requires record=True argument in constructor). - - Args: - path (str): Path to write html file. - theme (TerminalTheme, optional): TerminalTheme object containing console colors. - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. - code_format (str, optional): Format string to render HTML. In addition to '{foreground}', - '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. - inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files - larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. - Defaults to False. - - """ - html = self.export_html( - theme=theme, - clear=clear, - code_format=code_format, - inline_styles=inline_styles, - ) - with open(path, "wt", encoding="utf-8") as write_file: - write_file.write(html) - - def export_svg( - self, - *, - title: str = "Rich", - theme: Optional[TerminalTheme] = None, - clear: bool = True, - code_format: str = CONSOLE_SVG_FORMAT, - font_aspect_ratio: float = 0.61, - unique_id: Optional[str] = None, - ) -> str: - """ - Generate an SVG from the console contents (requires record=True in Console constructor). - - Args: - title (str, optional): The title of the tab in the output image - theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` - code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables - into the string in order to form the final SVG output. The default template used and the variables - injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. - font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` - string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). - If you aren't specifying a different font inside ``code_format``, you probably don't need this. - unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node - ids). If not set, this defaults to a computed value based on the recorded content. - """ - - from pip._vendor.rich.cells import cell_len - - style_cache: Dict[Style, str] = {} - - def get_svg_style(style: Style) -> str: - """Convert a Style to CSS rules for SVG.""" - if style in style_cache: - return style_cache[style] - css_rules = [] - color = ( - _theme.foreground_color - if (style.color is None or style.color.is_default) - else style.color.get_truecolor(_theme) - ) - bgcolor = ( - _theme.background_color - if (style.bgcolor is None or style.bgcolor.is_default) - else style.bgcolor.get_truecolor(_theme) - ) - if style.reverse: - color, bgcolor = bgcolor, color - if style.dim: - color = blend_rgb(color, bgcolor, 0.4) - css_rules.append(f"fill: {color.hex}") - if style.bold: - css_rules.append("font-weight: bold") - if style.italic: - css_rules.append("font-style: italic;") - if style.underline: - css_rules.append("text-decoration: underline;") - if style.strike: - css_rules.append("text-decoration: line-through;") - - css = ";".join(css_rules) - style_cache[style] = css - return css - - _theme = theme or SVG_EXPORT_THEME - - width = self.width - char_height = 20 - char_width = char_height * font_aspect_ratio - line_height = char_height * 1.22 - - margin_top = 1 - margin_right = 1 - margin_bottom = 1 - margin_left = 1 - - padding_top = 40 - padding_right = 8 - padding_bottom = 8 - padding_left = 8 - - padding_width = padding_left + padding_right - padding_height = padding_top + padding_bottom - margin_width = margin_left + margin_right - margin_height = margin_top + margin_bottom - - text_backgrounds: List[str] = [] - text_group: List[str] = [] - classes: Dict[str, int] = {} - style_no = 1 - - def escape_text(text: str) -> str: - """HTML escape text and replace spaces with nbsp.""" - return escape(text).replace(" ", " ") - - def make_tag( - name: str, content: Optional[str] = None, **attribs: object - ) -> str: - """Make a tag from name, content, and attributes.""" - - def stringify(value: object) -> str: - if isinstance(value, (float)): - return format(value, "g") - return str(value) - - tag_attribs = " ".join( - f'{k.lstrip("_").replace("_", "-")}="{stringify(v)}"' - for k, v in attribs.items() - ) - return ( - f"<{name} {tag_attribs}>{content}" - if content - else f"<{name} {tag_attribs}/>" - ) - - with self._record_buffer_lock: - segments = list(Segment.filter_control(self._record_buffer)) - if clear: - self._record_buffer.clear() - - if unique_id is None: - unique_id = "terminal-" + str( - zlib.adler32( - ("".join(repr(segment) for segment in segments)).encode( - "utf-8", - "ignore", - ) - + title.encode("utf-8", "ignore") - ) - ) - y = 0 - for y, line in enumerate(Segment.split_and_crop_lines(segments, length=width)): - x = 0 - for text, style, _control in line: - style = style or Style() - rules = get_svg_style(style) - if rules not in classes: - classes[rules] = style_no - style_no += 1 - class_name = f"r{classes[rules]}" - - if style.reverse: - has_background = True - background = ( - _theme.foreground_color.hex - if style.color is None - else style.color.get_truecolor(_theme).hex - ) - else: - bgcolor = style.bgcolor - has_background = bgcolor is not None and not bgcolor.is_default - background = ( - _theme.background_color.hex - if style.bgcolor is None - else style.bgcolor.get_truecolor(_theme).hex - ) - - text_length = cell_len(text) - if has_background: - text_backgrounds.append( - make_tag( - "rect", - fill=background, - x=x * char_width, - y=y * line_height + 1.5, - width=char_width * text_length, - height=line_height + 0.25, - shape_rendering="crispEdges", - ) - ) - - if text != " " * len(text): - text_group.append( - make_tag( - "text", - escape_text(text), - _class=f"{unique_id}-{class_name}", - x=x * char_width, - y=y * line_height + char_height, - textLength=char_width * len(text), - clip_path=f"url(#{unique_id}-line-{y})", - ) - ) - x += cell_len(text) - - line_offsets = [line_no * line_height + 1.5 for line_no in range(y)] - lines = "\n".join( - f""" - {make_tag("rect", x=0, y=offset, width=char_width * width, height=line_height + 0.25)} - """ - for line_no, offset in enumerate(line_offsets) - ) - - styles = "\n".join( - f".{unique_id}-r{rule_no} {{ {css} }}" for css, rule_no in classes.items() - ) - backgrounds = "".join(text_backgrounds) - matrix = "".join(text_group) - - terminal_width = ceil(width * char_width + padding_width) - terminal_height = (y + 1) * line_height + padding_height - chrome = make_tag( - "rect", - fill=_theme.background_color.hex, - stroke="rgba(255,255,255,0.35)", - stroke_width="1", - x=margin_left, - y=margin_top, - width=terminal_width, - height=terminal_height, - rx=8, - ) - - title_color = _theme.foreground_color.hex - if title: - chrome += make_tag( - "text", - escape_text(title), - _class=f"{unique_id}-title", - fill=title_color, - text_anchor="middle", - x=terminal_width // 2, - y=margin_top + char_height + 6, - ) - chrome += f""" - - - - - - """ - - svg = code_format.format( - unique_id=unique_id, - char_width=char_width, - char_height=char_height, - line_height=line_height, - terminal_width=char_width * width - 1, - terminal_height=(y + 1) * line_height - 1, - width=terminal_width + margin_width, - height=terminal_height + margin_height, - terminal_x=margin_left + padding_left, - terminal_y=margin_top + padding_top, - styles=styles, - chrome=chrome, - backgrounds=backgrounds, - matrix=matrix, - lines=lines, - ) - return svg - - def save_svg( - self, - path: str, - *, - title: str = "Rich", - theme: Optional[TerminalTheme] = None, - clear: bool = True, - code_format: str = CONSOLE_SVG_FORMAT, - font_aspect_ratio: float = 0.61, - unique_id: Optional[str] = None, - ) -> None: - """Generate an SVG file from the console contents (requires record=True in Console constructor). - - Args: - path (str): The path to write the SVG to. - title (str, optional): The title of the tab in the output image - theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal - clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` - code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables - into the string in order to form the final SVG output. The default template used and the variables - injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. - font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` - string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). - If you aren't specifying a different font inside ``code_format``, you probably don't need this. - unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node - ids). If not set, this defaults to a computed value based on the recorded content. - """ - svg = self.export_svg( - title=title, - theme=theme, - clear=clear, - code_format=code_format, - font_aspect_ratio=font_aspect_ratio, - unique_id=unique_id, - ) - with open(path, "wt", encoding="utf-8") as write_file: - write_file.write(svg) - - -def _svg_hash(svg_main_code: str) -> str: - """Returns a unique hash for the given SVG main code. - - Args: - svg_main_code (str): The content we're going to inject in the SVG envelope. - - Returns: - str: a hash of the given content - """ - return str(zlib.adler32(svg_main_code.encode())) - - -if __name__ == "__main__": # pragma: no cover - console = Console(record=True) - - console.log( - "JSONRPC [i]request[/i]", - 5, - 1.3, - True, - False, - None, - { - "jsonrpc": "2.0", - "method": "subtract", - "params": {"minuend": 42, "subtrahend": 23}, - "id": 3, - }, - ) - - console.log("Hello, World!", "{'a': 1}", repr(console)) - - console.print( - { - "name": None, - "empty": [], - "quiz": { - "sport": { - "answered": True, - "q1": { - "question": "Which one is correct team name in NBA?", - "options": [ - "New York Bulls", - "Los Angeles Kings", - "Golden State Warriors", - "Huston Rocket", - ], - "answer": "Huston Rocket", - }, - }, - "maths": { - "answered": False, - "q1": { - "question": "5 + 7 = ?", - "options": [10, 11, 12, 13], - "answer": 12, - }, - "q2": { - "question": "12 - 8 = ?", - "options": [1, 2, 3, 4], - "answer": 4, - }, - }, - }, - } - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py deleted file mode 100644 index 65fdf56..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py +++ /dev/null @@ -1,37 +0,0 @@ -from typing import Optional, TYPE_CHECKING - -from .jupyter import JupyterMixin -from .measure import Measurement - -if TYPE_CHECKING: - from .console import Console, ConsoleOptions, RenderableType, RenderResult - - -class Constrain(JupyterMixin): - """Constrain the width of a renderable to a given number of characters. - - Args: - renderable (RenderableType): A renderable object. - width (int, optional): The maximum width (in characters) to render. Defaults to 80. - """ - - def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None: - self.renderable = renderable - self.width = width - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - if self.width is None: - yield self.renderable - else: - child_options = options.update_width(min(self.width, options.max_width)) - yield from console.render(self.renderable, child_options) - - def __rich_measure__( - self, console: "Console", options: "ConsoleOptions" - ) -> "Measurement": - if self.width is not None: - options = options.update_width(self.width) - measurement = Measurement.get(console, options, self.renderable) - return measurement diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py deleted file mode 100644 index e29cf36..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py +++ /dev/null @@ -1,167 +0,0 @@ -from itertools import zip_longest -from typing import ( - Iterator, - Iterable, - List, - Optional, - Union, - overload, - TypeVar, - TYPE_CHECKING, -) - -if TYPE_CHECKING: - from .console import ( - Console, - ConsoleOptions, - JustifyMethod, - OverflowMethod, - RenderResult, - RenderableType, - ) - from .text import Text - -from .cells import cell_len -from .measure import Measurement - -T = TypeVar("T") - - -class Renderables: - """A list subclass which renders its contents to the console.""" - - def __init__( - self, renderables: Optional[Iterable["RenderableType"]] = None - ) -> None: - self._renderables: List["RenderableType"] = ( - list(renderables) if renderables is not None else [] - ) - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - """Console render method to insert line-breaks.""" - yield from self._renderables - - def __rich_measure__( - self, console: "Console", options: "ConsoleOptions" - ) -> "Measurement": - dimensions = [ - Measurement.get(console, options, renderable) - for renderable in self._renderables - ] - if not dimensions: - return Measurement(1, 1) - _min = max(dimension.minimum for dimension in dimensions) - _max = max(dimension.maximum for dimension in dimensions) - return Measurement(_min, _max) - - def append(self, renderable: "RenderableType") -> None: - self._renderables.append(renderable) - - def __iter__(self) -> Iterable["RenderableType"]: - return iter(self._renderables) - - -class Lines: - """A list subclass which can render to the console.""" - - def __init__(self, lines: Iterable["Text"] = ()) -> None: - self._lines: List["Text"] = list(lines) - - def __repr__(self) -> str: - return f"Lines({self._lines!r})" - - def __iter__(self) -> Iterator["Text"]: - return iter(self._lines) - - @overload - def __getitem__(self, index: int) -> "Text": - ... - - @overload - def __getitem__(self, index: slice) -> List["Text"]: - ... - - def __getitem__(self, index: Union[slice, int]) -> Union["Text", List["Text"]]: - return self._lines[index] - - def __setitem__(self, index: int, value: "Text") -> "Lines": - self._lines[index] = value - return self - - def __len__(self) -> int: - return self._lines.__len__() - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - """Console render method to insert line-breaks.""" - yield from self._lines - - def append(self, line: "Text") -> None: - self._lines.append(line) - - def extend(self, lines: Iterable["Text"]) -> None: - self._lines.extend(lines) - - def pop(self, index: int = -1) -> "Text": - return self._lines.pop(index) - - def justify( - self, - console: "Console", - width: int, - justify: "JustifyMethod" = "left", - overflow: "OverflowMethod" = "fold", - ) -> None: - """Justify and overflow text to a given width. - - Args: - console (Console): Console instance. - width (int): Number of characters per line. - justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left". - overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold". - - """ - from .text import Text - - if justify == "left": - for line in self._lines: - line.truncate(width, overflow=overflow, pad=True) - elif justify == "center": - for line in self._lines: - line.rstrip() - line.truncate(width, overflow=overflow) - line.pad_left((width - cell_len(line.plain)) // 2) - line.pad_right(width - cell_len(line.plain)) - elif justify == "right": - for line in self._lines: - line.rstrip() - line.truncate(width, overflow=overflow) - line.pad_left(width - cell_len(line.plain)) - elif justify == "full": - for line_index, line in enumerate(self._lines): - if line_index == len(self._lines) - 1: - break - words = line.split(" ") - words_size = sum(cell_len(word.plain) for word in words) - num_spaces = len(words) - 1 - spaces = [1 for _ in range(num_spaces)] - index = 0 - if spaces: - while words_size + num_spaces < width: - spaces[len(spaces) - index - 1] += 1 - num_spaces += 1 - index = (index + 1) % len(spaces) - tokens: List[Text] = [] - for index, (word, next_word) in enumerate( - zip_longest(words, words[1:]) - ): - tokens.append(word) - if index < len(spaces): - style = word.get_style_at_offset(console, -1) - next_style = next_word.get_style_at_offset(console, 0) - space_style = style if style == next_style else line.style - tokens.append(Text(" " * spaces[index], style=space_style)) - self[line_index] = Text("").join(tokens) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py deleted file mode 100644 index 88fcb92..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py +++ /dev/null @@ -1,225 +0,0 @@ -import sys -import time -from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Union - -if sys.version_info >= (3, 8): - from typing import Final -else: - from pip._vendor.typing_extensions import Final # pragma: no cover - -from .segment import ControlCode, ControlType, Segment - -if TYPE_CHECKING: - from .console import Console, ConsoleOptions, RenderResult - -STRIP_CONTROL_CODES: Final = [ - 7, # Bell - 8, # Backspace - 11, # Vertical tab - 12, # Form feed - 13, # Carriage return -] -_CONTROL_STRIP_TRANSLATE: Final = { - _codepoint: None for _codepoint in STRIP_CONTROL_CODES -} - -CONTROL_ESCAPE: Final = { - 7: "\\a", - 8: "\\b", - 11: "\\v", - 12: "\\f", - 13: "\\r", -} - -CONTROL_CODES_FORMAT: Dict[int, Callable[..., str]] = { - ControlType.BELL: lambda: "\x07", - ControlType.CARRIAGE_RETURN: lambda: "\r", - ControlType.HOME: lambda: "\x1b[H", - ControlType.CLEAR: lambda: "\x1b[2J", - ControlType.ENABLE_ALT_SCREEN: lambda: "\x1b[?1049h", - ControlType.DISABLE_ALT_SCREEN: lambda: "\x1b[?1049l", - ControlType.SHOW_CURSOR: lambda: "\x1b[?25h", - ControlType.HIDE_CURSOR: lambda: "\x1b[?25l", - ControlType.CURSOR_UP: lambda param: f"\x1b[{param}A", - ControlType.CURSOR_DOWN: lambda param: f"\x1b[{param}B", - ControlType.CURSOR_FORWARD: lambda param: f"\x1b[{param}C", - ControlType.CURSOR_BACKWARD: lambda param: f"\x1b[{param}D", - ControlType.CURSOR_MOVE_TO_COLUMN: lambda param: f"\x1b[{param+1}G", - ControlType.ERASE_IN_LINE: lambda param: f"\x1b[{param}K", - ControlType.CURSOR_MOVE_TO: lambda x, y: f"\x1b[{y+1};{x+1}H", - ControlType.SET_WINDOW_TITLE: lambda title: f"\x1b]0;{title}\x07", -} - - -class Control: - """A renderable that inserts a control code (non printable but may move cursor). - - Args: - *codes (str): Positional arguments are either a :class:`~rich.segment.ControlType` enum or a - tuple of ControlType and an integer parameter - """ - - __slots__ = ["segment"] - - def __init__(self, *codes: Union[ControlType, ControlCode]) -> None: - control_codes: List[ControlCode] = [ - (code,) if isinstance(code, ControlType) else code for code in codes - ] - _format_map = CONTROL_CODES_FORMAT - rendered_codes = "".join( - _format_map[code](*parameters) for code, *parameters in control_codes - ) - self.segment = Segment(rendered_codes, None, control_codes) - - @classmethod - def bell(cls) -> "Control": - """Ring the 'bell'.""" - return cls(ControlType.BELL) - - @classmethod - def home(cls) -> "Control": - """Move cursor to 'home' position.""" - return cls(ControlType.HOME) - - @classmethod - def move(cls, x: int = 0, y: int = 0) -> "Control": - """Move cursor relative to current position. - - Args: - x (int): X offset. - y (int): Y offset. - - Returns: - ~Control: Control object. - - """ - - def get_codes() -> Iterable[ControlCode]: - control = ControlType - if x: - yield ( - control.CURSOR_FORWARD if x > 0 else control.CURSOR_BACKWARD, - abs(x), - ) - if y: - yield ( - control.CURSOR_DOWN if y > 0 else control.CURSOR_UP, - abs(y), - ) - - control = cls(*get_codes()) - return control - - @classmethod - def move_to_column(cls, x: int, y: int = 0) -> "Control": - """Move to the given column, optionally add offset to row. - - Returns: - x (int): absolute x (column) - y (int): optional y offset (row) - - Returns: - ~Control: Control object. - """ - - return ( - cls( - (ControlType.CURSOR_MOVE_TO_COLUMN, x), - ( - ControlType.CURSOR_DOWN if y > 0 else ControlType.CURSOR_UP, - abs(y), - ), - ) - if y - else cls((ControlType.CURSOR_MOVE_TO_COLUMN, x)) - ) - - @classmethod - def move_to(cls, x: int, y: int) -> "Control": - """Move cursor to absolute position. - - Args: - x (int): x offset (column) - y (int): y offset (row) - - Returns: - ~Control: Control object. - """ - return cls((ControlType.CURSOR_MOVE_TO, x, y)) - - @classmethod - def clear(cls) -> "Control": - """Clear the screen.""" - return cls(ControlType.CLEAR) - - @classmethod - def show_cursor(cls, show: bool) -> "Control": - """Show or hide the cursor.""" - return cls(ControlType.SHOW_CURSOR if show else ControlType.HIDE_CURSOR) - - @classmethod - def alt_screen(cls, enable: bool) -> "Control": - """Enable or disable alt screen.""" - if enable: - return cls(ControlType.ENABLE_ALT_SCREEN, ControlType.HOME) - else: - return cls(ControlType.DISABLE_ALT_SCREEN) - - @classmethod - def title(cls, title: str) -> "Control": - """Set the terminal window title - - Args: - title (str): The new terminal window title - """ - return cls((ControlType.SET_WINDOW_TITLE, title)) - - def __str__(self) -> str: - return self.segment.text - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - if self.segment.text: - yield self.segment - - -def strip_control_codes( - text: str, _translate_table: Dict[int, None] = _CONTROL_STRIP_TRANSLATE -) -> str: - """Remove control codes from text. - - Args: - text (str): A string possibly contain control codes. - - Returns: - str: String with control codes removed. - """ - return text.translate(_translate_table) - - -def escape_control_codes( - text: str, - _translate_table: Dict[int, str] = CONTROL_ESCAPE, -) -> str: - """Replace control codes with their "escaped" equivalent in the given text. - (e.g. "\b" becomes "\\b") - - Args: - text (str): A string possibly containing control codes. - - Returns: - str: String with control codes replaced with their escaped version. - """ - return text.translate(_translate_table) - - -if __name__ == "__main__": # pragma: no cover - from pip._vendor.rich.console import Console - - console = Console() - console.print("Look at the title of your terminal window ^") - # console.print(Control((ControlType.SET_WINDOW_TITLE, "Hello, world!"))) - for i in range(10): - console.set_window_title("🚀 Loading" + "." * i) - time.sleep(0.5) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py deleted file mode 100644 index dca3719..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py +++ /dev/null @@ -1,190 +0,0 @@ -from typing import Dict - -from .style import Style - -DEFAULT_STYLES: Dict[str, Style] = { - "none": Style.null(), - "reset": Style( - color="default", - bgcolor="default", - dim=False, - bold=False, - italic=False, - underline=False, - blink=False, - blink2=False, - reverse=False, - conceal=False, - strike=False, - ), - "dim": Style(dim=True), - "bright": Style(dim=False), - "bold": Style(bold=True), - "strong": Style(bold=True), - "code": Style(reverse=True, bold=True), - "italic": Style(italic=True), - "emphasize": Style(italic=True), - "underline": Style(underline=True), - "blink": Style(blink=True), - "blink2": Style(blink2=True), - "reverse": Style(reverse=True), - "strike": Style(strike=True), - "black": Style(color="black"), - "red": Style(color="red"), - "green": Style(color="green"), - "yellow": Style(color="yellow"), - "magenta": Style(color="magenta"), - "cyan": Style(color="cyan"), - "white": Style(color="white"), - "inspect.attr": Style(color="yellow", italic=True), - "inspect.attr.dunder": Style(color="yellow", italic=True, dim=True), - "inspect.callable": Style(bold=True, color="red"), - "inspect.async_def": Style(italic=True, color="bright_cyan"), - "inspect.def": Style(italic=True, color="bright_cyan"), - "inspect.class": Style(italic=True, color="bright_cyan"), - "inspect.error": Style(bold=True, color="red"), - "inspect.equals": Style(), - "inspect.help": Style(color="cyan"), - "inspect.doc": Style(dim=True), - "inspect.value.border": Style(color="green"), - "live.ellipsis": Style(bold=True, color="red"), - "layout.tree.row": Style(dim=False, color="red"), - "layout.tree.column": Style(dim=False, color="blue"), - "logging.keyword": Style(bold=True, color="yellow"), - "logging.level.notset": Style(dim=True), - "logging.level.debug": Style(color="green"), - "logging.level.info": Style(color="blue"), - "logging.level.warning": Style(color="red"), - "logging.level.error": Style(color="red", bold=True), - "logging.level.critical": Style(color="red", bold=True, reverse=True), - "log.level": Style.null(), - "log.time": Style(color="cyan", dim=True), - "log.message": Style.null(), - "log.path": Style(dim=True), - "repr.ellipsis": Style(color="yellow"), - "repr.indent": Style(color="green", dim=True), - "repr.error": Style(color="red", bold=True), - "repr.str": Style(color="green", italic=False, bold=False), - "repr.brace": Style(bold=True), - "repr.comma": Style(bold=True), - "repr.ipv4": Style(bold=True, color="bright_green"), - "repr.ipv6": Style(bold=True, color="bright_green"), - "repr.eui48": Style(bold=True, color="bright_green"), - "repr.eui64": Style(bold=True, color="bright_green"), - "repr.tag_start": Style(bold=True), - "repr.tag_name": Style(color="bright_magenta", bold=True), - "repr.tag_contents": Style(color="default"), - "repr.tag_end": Style(bold=True), - "repr.attrib_name": Style(color="yellow", italic=False), - "repr.attrib_equal": Style(bold=True), - "repr.attrib_value": Style(color="magenta", italic=False), - "repr.number": Style(color="cyan", bold=True, italic=False), - "repr.number_complex": Style(color="cyan", bold=True, italic=False), # same - "repr.bool_true": Style(color="bright_green", italic=True), - "repr.bool_false": Style(color="bright_red", italic=True), - "repr.none": Style(color="magenta", italic=True), - "repr.url": Style(underline=True, color="bright_blue", italic=False, bold=False), - "repr.uuid": Style(color="bright_yellow", bold=False), - "repr.call": Style(color="magenta", bold=True), - "repr.path": Style(color="magenta"), - "repr.filename": Style(color="bright_magenta"), - "rule.line": Style(color="bright_green"), - "rule.text": Style.null(), - "json.brace": Style(bold=True), - "json.bool_true": Style(color="bright_green", italic=True), - "json.bool_false": Style(color="bright_red", italic=True), - "json.null": Style(color="magenta", italic=True), - "json.number": Style(color="cyan", bold=True, italic=False), - "json.str": Style(color="green", italic=False, bold=False), - "json.key": Style(color="blue", bold=True), - "prompt": Style.null(), - "prompt.choices": Style(color="magenta", bold=True), - "prompt.default": Style(color="cyan", bold=True), - "prompt.invalid": Style(color="red"), - "prompt.invalid.choice": Style(color="red"), - "pretty": Style.null(), - "scope.border": Style(color="blue"), - "scope.key": Style(color="yellow", italic=True), - "scope.key.special": Style(color="yellow", italic=True, dim=True), - "scope.equals": Style(color="red"), - "table.header": Style(bold=True), - "table.footer": Style(bold=True), - "table.cell": Style.null(), - "table.title": Style(italic=True), - "table.caption": Style(italic=True, dim=True), - "traceback.error": Style(color="red", italic=True), - "traceback.border.syntax_error": Style(color="bright_red"), - "traceback.border": Style(color="red"), - "traceback.text": Style.null(), - "traceback.title": Style(color="red", bold=True), - "traceback.exc_type": Style(color="bright_red", bold=True), - "traceback.exc_value": Style.null(), - "traceback.offset": Style(color="bright_red", bold=True), - "bar.back": Style(color="grey23"), - "bar.complete": Style(color="rgb(249,38,114)"), - "bar.finished": Style(color="rgb(114,156,31)"), - "bar.pulse": Style(color="rgb(249,38,114)"), - "progress.description": Style.null(), - "progress.filesize": Style(color="green"), - "progress.filesize.total": Style(color="green"), - "progress.download": Style(color="green"), - "progress.elapsed": Style(color="yellow"), - "progress.percentage": Style(color="magenta"), - "progress.remaining": Style(color="cyan"), - "progress.data.speed": Style(color="red"), - "progress.spinner": Style(color="green"), - "status.spinner": Style(color="green"), - "tree": Style(), - "tree.line": Style(), - "markdown.paragraph": Style(), - "markdown.text": Style(), - "markdown.em": Style(italic=True), - "markdown.emph": Style(italic=True), # For commonmark backwards compatibility - "markdown.strong": Style(bold=True), - "markdown.code": Style(bold=True, color="cyan", bgcolor="black"), - "markdown.code_block": Style(color="cyan", bgcolor="black"), - "markdown.block_quote": Style(color="magenta"), - "markdown.list": Style(color="cyan"), - "markdown.item": Style(), - "markdown.item.bullet": Style(color="yellow", bold=True), - "markdown.item.number": Style(color="yellow", bold=True), - "markdown.hr": Style(color="yellow"), - "markdown.h1.border": Style(), - "markdown.h1": Style(bold=True), - "markdown.h2": Style(bold=True, underline=True), - "markdown.h3": Style(bold=True), - "markdown.h4": Style(bold=True, dim=True), - "markdown.h5": Style(underline=True), - "markdown.h6": Style(italic=True), - "markdown.h7": Style(italic=True, dim=True), - "markdown.link": Style(color="bright_blue"), - "markdown.link_url": Style(color="blue", underline=True), - "markdown.s": Style(strike=True), - "iso8601.date": Style(color="blue"), - "iso8601.time": Style(color="magenta"), - "iso8601.timezone": Style(color="yellow"), -} - - -if __name__ == "__main__": # pragma: no cover - import argparse - import io - - from pip._vendor.rich.console import Console - from pip._vendor.rich.table import Table - from pip._vendor.rich.text import Text - - parser = argparse.ArgumentParser() - parser.add_argument("--html", action="store_true", help="Export as HTML table") - args = parser.parse_args() - html: bool = args.html - console = Console(record=True, width=70, file=io.StringIO()) if html else Console() - - table = Table("Name", "Styling") - - for style_name, style in DEFAULT_STYLES.items(): - table.add_row(Text(style_name, style=style), str(style)) - - console.print(table) - if html: - print(console.export_html(inline_styles=True)) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py deleted file mode 100644 index ad36183..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py +++ /dev/null @@ -1,37 +0,0 @@ -import os -import platform - -from pip._vendor.rich import inspect -from pip._vendor.rich.console import Console, get_windows_console_features -from pip._vendor.rich.panel import Panel -from pip._vendor.rich.pretty import Pretty - - -def report() -> None: # pragma: no cover - """Print a report to the terminal with debugging information""" - console = Console() - inspect(console) - features = get_windows_console_features() - inspect(features) - - env_names = ( - "TERM", - "COLORTERM", - "CLICOLOR", - "NO_COLOR", - "TERM_PROGRAM", - "COLUMNS", - "LINES", - "JUPYTER_COLUMNS", - "JUPYTER_LINES", - "JPY_PARENT_PID", - "VSCODE_VERBOSE_LOGGING", - ) - env = {name: os.getenv(name) for name in env_names} - console.print(Panel.fit((Pretty(env)), title="[b]Environment Variables")) - - console.print(f'platform="{platform.system()}"') - - -if __name__ == "__main__": # pragma: no cover - report() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py deleted file mode 100644 index 791f046..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py +++ /dev/null @@ -1,96 +0,0 @@ -import sys -from typing import TYPE_CHECKING, Optional, Union - -from .jupyter import JupyterMixin -from .segment import Segment -from .style import Style -from ._emoji_codes import EMOJI -from ._emoji_replace import _emoji_replace - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from pip._vendor.typing_extensions import Literal # pragma: no cover - - -if TYPE_CHECKING: - from .console import Console, ConsoleOptions, RenderResult - - -EmojiVariant = Literal["emoji", "text"] - - -class NoEmoji(Exception): - """No emoji by that name.""" - - -class Emoji(JupyterMixin): - __slots__ = ["name", "style", "_char", "variant"] - - VARIANTS = {"text": "\uFE0E", "emoji": "\uFE0F"} - - def __init__( - self, - name: str, - style: Union[str, Style] = "none", - variant: Optional[EmojiVariant] = None, - ) -> None: - """A single emoji character. - - Args: - name (str): Name of emoji. - style (Union[str, Style], optional): Optional style. Defaults to None. - - Raises: - NoEmoji: If the emoji doesn't exist. - """ - self.name = name - self.style = style - self.variant = variant - try: - self._char = EMOJI[name] - except KeyError: - raise NoEmoji(f"No emoji called {name!r}") - if variant is not None: - self._char += self.VARIANTS.get(variant, "") - - @classmethod - def replace(cls, text: str) -> str: - """Replace emoji markup with corresponding unicode characters. - - Args: - text (str): A string with emojis codes, e.g. "Hello :smiley:!" - - Returns: - str: A string with emoji codes replaces with actual emoji. - """ - return _emoji_replace(text) - - def __repr__(self) -> str: - return f"" - - def __str__(self) -> str: - return self._char - - def __rich_console__( - self, console: "Console", options: "ConsoleOptions" - ) -> "RenderResult": - yield Segment(self._char, console.get_style(self.style)) - - -if __name__ == "__main__": # pragma: no cover - import sys - - from pip._vendor.rich.columns import Columns - from pip._vendor.rich.console import Console - - console = Console(record=True) - - columns = Columns( - (f":{name}: {name}" for name in sorted(EMOJI.keys()) if "\u200D" not in name), - column_first=True, - ) - - console.print(columns) - if len(sys.argv) > 1: - console.save_html(sys.argv[1]) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py deleted file mode 100644 index 0bcbe53..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py +++ /dev/null @@ -1,34 +0,0 @@ -class ConsoleError(Exception): - """An error in console operation.""" - - -class StyleError(Exception): - """An error in styles.""" - - -class StyleSyntaxError(ConsoleError): - """Style was badly formatted.""" - - -class MissingStyle(StyleError): - """No such style.""" - - -class StyleStackError(ConsoleError): - """Style stack is invalid.""" - - -class NotRenderableError(ConsoleError): - """Object is not renderable.""" - - -class MarkupError(ConsoleError): - """Markup was badly formatted.""" - - -class LiveError(ConsoleError): - """Error related to Live display.""" - - -class NoAltScreen(ConsoleError): - """Alt screen mode was required.""" diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py deleted file mode 100644 index 4b0b0da..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py +++ /dev/null @@ -1,57 +0,0 @@ -import io -from typing import IO, TYPE_CHECKING, Any, List - -from .ansi import AnsiDecoder -from .text import Text - -if TYPE_CHECKING: - from .console import Console - - -class FileProxy(io.TextIOBase): - """Wraps a file (e.g. sys.stdout) and redirects writes to a console.""" - - def __init__(self, console: "Console", file: IO[str]) -> None: - self.__console = console - self.__file = file - self.__buffer: List[str] = [] - self.__ansi_decoder = AnsiDecoder() - - @property - def rich_proxied_file(self) -> IO[str]: - """Get proxied file.""" - return self.__file - - def __getattr__(self, name: str) -> Any: - return getattr(self.__file, name) - - def write(self, text: str) -> int: - if not isinstance(text, str): - raise TypeError(f"write() argument must be str, not {type(text).__name__}") - buffer = self.__buffer - lines: List[str] = [] - while text: - line, new_line, text = text.partition("\n") - if new_line: - lines.append("".join(buffer) + line) - buffer.clear() - else: - buffer.append(line) - break - if lines: - console = self.__console - with console: - output = Text("\n").join( - self.__ansi_decoder.decode_line(line) for line in lines - ) - console.print(output) - return len(text) - - def flush(self) -> None: - output = "".join(self.__buffer) - if output: - self.__console.print(output) - del self.__buffer[:] - - def fileno(self) -> int: - return self.__file.fileno() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py deleted file mode 100644 index 99f118e..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py +++ /dev/null @@ -1,89 +0,0 @@ -# coding: utf-8 -"""Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2 - -The functions declared in this module should cover the different -use cases needed to generate a string representation of a file size -using several different units. Since there are many standards regarding -file size units, three different functions have been implemented. - -See Also: - * `Wikipedia: Binary prefix `_ - -""" - -__all__ = ["decimal"] - -from typing import Iterable, List, Optional, Tuple - - -def _to_str( - size: int, - suffixes: Iterable[str], - base: int, - *, - precision: Optional[int] = 1, - separator: Optional[str] = " ", -) -> str: - if size == 1: - return "1 byte" - elif size < base: - return "{:,} bytes".format(size) - - for i, suffix in enumerate(suffixes, 2): # noqa: B007 - unit = base**i - if size < unit: - break - return "{:,.{precision}f}{separator}{}".format( - (base * size / unit), - suffix, - precision=precision, - separator=separator, - ) - - -def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> Tuple[int, str]: - """Pick a suffix and base for the given size.""" - for i, suffix in enumerate(suffixes): - unit = base**i - if size < unit * base: - break - return unit, suffix - - -def decimal( - size: int, - *, - precision: Optional[int] = 1, - separator: Optional[str] = " ", -) -> str: - """Convert a filesize in to a string (powers of 1000, SI prefixes). - - In this convention, ``1000 B = 1 kB``. - - This is typically the format used to advertise the storage - capacity of USB flash drives and the like (*256 MB* meaning - actually a storage capacity of more than *256 000 000 B*), - or used by **Mac OS X** since v10.6 to report file sizes. - - Arguments: - int (size): A file size. - int (precision): The number of decimal places to include (default = 1). - str (separator): The string to separate the value from the units (default = " "). - - Returns: - `str`: A string containing a abbreviated file size and units. - - Example: - >>> filesize.decimal(30000) - '30.0 kB' - >>> filesize.decimal(30000, precision=2, separator="") - '30.00kB' - - """ - return _to_str( - size, - ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"), - 1000, - precision=precision, - separator=separator, - ) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py b/venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py deleted file mode 100644 index c264679..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py +++ /dev/null @@ -1,232 +0,0 @@ -import re -from abc import ABC, abstractmethod -from typing import List, Union - -from .text import Span, Text - - -def _combine_regex(*regexes: str) -> str: - """Combine a number of regexes in to a single regex. - - Returns: - str: New regex with all regexes ORed together. - """ - return "|".join(regexes) - - -class Highlighter(ABC): - """Abstract base class for highlighters.""" - - def __call__(self, text: Union[str, Text]) -> Text: - """Highlight a str or Text instance. - - Args: - text (Union[str, ~Text]): Text to highlight. - - Raises: - TypeError: If not called with text or str. - - Returns: - Text: A test instance with highlighting applied. - """ - if isinstance(text, str): - highlight_text = Text(text) - elif isinstance(text, Text): - highlight_text = text.copy() - else: - raise TypeError(f"str or Text instance required, not {text!r}") - self.highlight(highlight_text) - return highlight_text - - @abstractmethod - def highlight(self, text: Text) -> None: - """Apply highlighting in place to text. - - Args: - text (~Text): A text object highlight. - """ - - -class NullHighlighter(Highlighter): - """A highlighter object that doesn't highlight. - - May be used to disable highlighting entirely. - - """ - - def highlight(self, text: Text) -> None: - """Nothing to do""" - - -class RegexHighlighter(Highlighter): - """Applies highlighting from a list of regular expressions.""" - - highlights: List[str] = [] - base_style: str = "" - - def highlight(self, text: Text) -> None: - """Highlight :class:`rich.text.Text` using regular expressions. - - Args: - text (~Text): Text to highlighted. - - """ - - highlight_regex = text.highlight_regex - for re_highlight in self.highlights: - highlight_regex(re_highlight, style_prefix=self.base_style) - - -class ReprHighlighter(RegexHighlighter): - """Highlights the text typically produced from ``__repr__`` methods.""" - - base_style = "repr." - highlights = [ - r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", - r'(?P[\w_]{1,50})=(?P"?[\w_]+"?)?', - r"(?P[][{}()])", - _combine_regex( - r"(?P[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", - r"(?P([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})", - r"(?P(?:[0-9A-Fa-f]{1,2}-){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){3}[0-9A-Fa-f]{4})", - r"(?P(?:[0-9A-Fa-f]{1,2}-){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})", - r"(?P[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})", - r"(?P[\w.]*?)\(", - r"\b(?PTrue)\b|\b(?PFalse)\b|\b(?PNone)\b", - r"(?P\.\.\.)", - r"(?P(?(?\B(/[-\w._+]+)*\/)(?P[-\w._+]*)?", - r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#]*)", - ), - ] - - -class JSONHighlighter(RegexHighlighter): - """Highlights JSON""" - - # Captures the start and end of JSON strings, handling escaped quotes - JSON_STR = r"(?b?\".*?(?[\{\[\(\)\]\}])", - r"\b(?Ptrue)\b|\b(?Pfalse)\b|\b(?Pnull)\b", - r"(?P(? None: - super().highlight(text) - - # Additional work to handle highlighting JSON keys - plain = text.plain - append = text.spans.append - whitespace = self.JSON_WHITESPACE - for match in re.finditer(self.JSON_STR, plain): - start, end = match.span() - cursor = end - while cursor < len(plain): - char = plain[cursor] - cursor += 1 - if char == ":": - append(Span(start, end, "json.key")) - elif char in whitespace: - continue - break - - -class ISO8601Highlighter(RegexHighlighter): - """Highlights the ISO8601 date time strings. - Regex reference: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s07.html - """ - - base_style = "iso8601." - highlights = [ - # - # Dates - # - # Calendar month (e.g. 2008-08). The hyphen is required - r"^(?P[0-9]{4})-(?P1[0-2]|0[1-9])$", - # Calendar date w/o hyphens (e.g. 20080830) - r"^(?P(?P[0-9]{4})(?P1[0-2]|0[1-9])(?P3[01]|0[1-9]|[12][0-9]))$", - # Ordinal date (e.g. 2008-243). The hyphen is optional - r"^(?P(?P[0-9]{4})-?(?P36[0-6]|3[0-5][0-9]|[12][0-9]{2}|0[1-9][0-9]|00[1-9]))$", - # - # Weeks - # - # Week of the year (e.g., 2008-W35). The hyphen is optional - r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9]))$", - # Week date (e.g., 2008-W35-6). The hyphens are optional - r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9])-?(?P[1-7]))$", - # - # Times - # - # Hours and minutes (e.g., 17:21). The colon is optional - r"^(?P

    )iyh<%a3b1XelefDQ-Z!y*6XHA)yPIEEFLF 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 ArvLx| diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py deleted file mode 100644 index 5ebf595..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py +++ /dev/null @@ -1,566 +0,0 @@ -""" -Utilities for determining application-specific dirs. See for details and -usage. -""" -from __future__ import annotations - -import os -import sys -from typing import TYPE_CHECKING - -from .api import PlatformDirsABC -from .version import __version__ -from .version import __version_tuple__ as __version_info__ - -if TYPE_CHECKING: - from pathlib import Path - - if sys.version_info >= (3, 8): # pragma: no cover (py38+) - from typing import Literal - else: # pragma: no cover (py38+) - from pip._vendor.typing_extensions import Literal - - -def _set_platform_dir_class() -> type[PlatformDirsABC]: - if sys.platform == "win32": - from pip._vendor.platformdirs.windows import Windows as Result - elif sys.platform == "darwin": - from pip._vendor.platformdirs.macos import MacOS as Result - else: - from pip._vendor.platformdirs.unix import Unix as Result - - if os.getenv("ANDROID_DATA") == "/data" and os.getenv("ANDROID_ROOT") == "/system": - if os.getenv("SHELL") or os.getenv("PREFIX"): - return Result - - from pip._vendor.platformdirs.android import _android_folder - - if _android_folder() is not None: - from pip._vendor.platformdirs.android import Android - - return Android # return to avoid redefinition of result - - return Result - - -PlatformDirs = _set_platform_dir_class() #: Currently active platform -AppDirs = PlatformDirs #: Backwards compatibility with appdirs - - -def user_data_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: data directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_data_dir - - -def site_data_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - multipath: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param multipath: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: data directory shared by users - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - multipath=multipath, - ensure_exists=ensure_exists, - ).site_data_dir - - -def user_config_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: config directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_config_dir - - -def site_config_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - multipath: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param multipath: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: config directory shared by the users - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - multipath=multipath, - ensure_exists=ensure_exists, - ).site_config_dir - - -def user_cache_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: cache directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_cache_dir - - -def site_cache_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `opinion `. - :param ensure_exists: See `ensure_exists `. - :returns: cache directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).site_cache_dir - - -def user_state_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: state directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_state_dir - - -def user_log_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: log directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_log_dir - - -def user_documents_dir() -> str: - """:returns: documents directory tied to the user""" - return PlatformDirs().user_documents_dir - - -def user_downloads_dir() -> str: - """:returns: downloads directory tied to the user""" - return PlatformDirs().user_downloads_dir - - -def user_pictures_dir() -> str: - """:returns: pictures directory tied to the user""" - return PlatformDirs().user_pictures_dir - - -def user_videos_dir() -> str: - """:returns: videos directory tied to the user""" - return PlatformDirs().user_videos_dir - - -def user_music_dir() -> str: - """:returns: music directory tied to the user""" - return PlatformDirs().user_music_dir - - -def user_runtime_dir( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> str: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `opinion `. - :param ensure_exists: See `ensure_exists `. - :returns: runtime directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_runtime_dir - - -def user_data_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: data path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_data_path - - -def site_data_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - multipath: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param multipath: See `multipath `. - :param ensure_exists: See `ensure_exists `. - :returns: data path shared by users - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - multipath=multipath, - ensure_exists=ensure_exists, - ).site_data_path - - -def user_config_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: config path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_config_path - - -def site_config_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - multipath: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param multipath: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: config path shared by the users - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - multipath=multipath, - ensure_exists=ensure_exists, - ).site_config_path - - -def site_cache_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `opinion `. - :param ensure_exists: See `ensure_exists `. - :returns: cache directory tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).site_cache_path - - -def user_cache_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: cache path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_cache_path - - -def user_state_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param roaming: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: state path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - roaming=roaming, - ensure_exists=ensure_exists, - ).user_state_path - - -def user_log_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `roaming `. - :param ensure_exists: See `ensure_exists `. - :returns: log path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_log_path - - -def user_documents_path() -> Path: - """:returns: documents path tied to the user""" - return PlatformDirs().user_documents_path - - -def user_downloads_path() -> Path: - """:returns: downloads path tied to the user""" - return PlatformDirs().user_downloads_path - - -def user_pictures_path() -> Path: - """:returns: pictures path tied to the user""" - return PlatformDirs().user_pictures_path - - -def user_videos_path() -> Path: - """:returns: videos path tied to the user""" - return PlatformDirs().user_videos_path - - -def user_music_path() -> Path: - """:returns: music path tied to the user""" - return PlatformDirs().user_music_path - - -def user_runtime_path( - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 -) -> Path: - """ - :param appname: See `appname `. - :param appauthor: See `appauthor `. - :param version: See `version `. - :param opinion: See `opinion `. - :param ensure_exists: See `ensure_exists `. - :returns: runtime path tied to the user - """ - return PlatformDirs( - appname=appname, - appauthor=appauthor, - version=version, - opinion=opinion, - ensure_exists=ensure_exists, - ).user_runtime_path - - -__all__ = [ - "__version__", - "__version_info__", - "PlatformDirs", - "AppDirs", - "PlatformDirsABC", - "user_data_dir", - "user_config_dir", - "user_cache_dir", - "user_state_dir", - "user_log_dir", - "user_documents_dir", - "user_downloads_dir", - "user_pictures_dir", - "user_videos_dir", - "user_music_dir", - "user_runtime_dir", - "site_data_dir", - "site_config_dir", - "site_cache_dir", - "user_data_path", - "user_config_path", - "user_cache_path", - "user_state_path", - "user_log_path", - "user_documents_path", - "user_downloads_path", - "user_pictures_path", - "user_videos_path", - "user_music_path", - "user_runtime_path", - "site_data_path", - "site_config_path", - "site_cache_path", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py deleted file mode 100644 index 6a0d6dd..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py +++ /dev/null @@ -1,53 +0,0 @@ -"""Main entry point.""" -from __future__ import annotations - -from pip._vendor.platformdirs import PlatformDirs, __version__ - -PROPS = ( - "user_data_dir", - "user_config_dir", - "user_cache_dir", - "user_state_dir", - "user_log_dir", - "user_documents_dir", - "user_downloads_dir", - "user_pictures_dir", - "user_videos_dir", - "user_music_dir", - "user_runtime_dir", - "site_data_dir", - "site_config_dir", - "site_cache_dir", -) - - -def main() -> None: - """Run main entry point.""" - app_name = "MyApp" - app_author = "MyCompany" - - print(f"-- platformdirs {__version__} --") # noqa: T201 - - print("-- app dirs (with optional 'version')") # noqa: T201 - dirs = PlatformDirs(app_name, app_author, version="1.0") - for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - - print("\n-- app dirs (without optional 'version')") # noqa: T201 - dirs = PlatformDirs(app_name, app_author) - for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - - print("\n-- app dirs (without optional 'appauthor')") # noqa: T201 - dirs = PlatformDirs(app_name) - for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - - print("\n-- app dirs (with disabled 'appauthor')") # noqa: T201 - dirs = PlatformDirs(app_name, appauthor=False) - for prop in PROPS: - print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201 - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 3009800c449cd0f132ec4ab1f183aa3a3cf3fedf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14372 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index 573ad757911f1c0c4a3b14c36d37629f56002946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc deleted file mode 100644 index 294eb6c2f204da52d2ca743e29c0bd3ce1bbc974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7620 zcmb_hO>o=R5yl^XMg90U{*i6?F9~gn^iR?_isM+8E!$1PI=0d#>~s)_50W601p5Fw zk%qq1>h#ifrk7rNaXalHz4X#cFTM2AOE0~229sM)KIhW$q3!PC5uiwbsFhNK2kdgO z`0%}b`<5$bas59}R>Xk|ev^aKWUy#AK#4<(5)cWV}|JYF&l1 z*3?>=dZv}FXGx!F=34oBp02aaLaSIW%92&&SLvRK`h+#HQDV7A8Gacwd9awQPs&m| zOVU&z-H}*<6}Kf;v@%cC`ZQA?O67^I!cEh)^o9HPD$fyWS@tK)cH8kx&vx2wt*rR! z!p%j0%3N_hZZ^D@<*hpm%(VNaw+`pY z*=(Ti!A}N+8%V{!Wl6H6x(swEOs=a1h5ponTF?qAd&rjA9=3NoQ`gwX>;OBst<^K^ zyX+7<3|CnzXXV-V*b#PgTYD-$mFoqenPta>rYJPW*$JVU5E`AG6q=IIoMNYiW>RR* zu(LulB{Z+H*Mw$TXkKS!p_vhybL_m(>=Bv^Y))wQ3QdJog=U}7Tx6GoX1~x}W>Z7e$Cuy{Fflw&fQ@)XVrV(vF}c~&1u^sbL(9@X6Vhju7_)$?$S{ycO$A%RP)MU@f=gj0q*1ewV__J| zqo!gGgrSf|&34R?Fy5gXxTRLk@d=n5K8eFL4l_9H#bF-~`(Y^Oea*F+tN(-Pml8h& zcf7Ew>rTt6u66AOcN&)G+0{o^-KyK*CPdQOT*qN<^|94{Ty5Gb)y^hFY5Pj$(#5I^ zDRZu4HXfO4mRs%EovHz5%;D93@I&moRq#^jZ2Eb_fVlJw;{ZI=#V2PEWMxIpYU0S? zIV)@O)}f(QR_Wgg(GIK3S7C`XAk@MS?pJu+!3eIyg$FSVdy4d9<*@WregcuaA@d_W zdSubVok*=c$47G^2GT=1fTU&EkaO@RRvU6po^p`kJSwXcr5txv zKht^y43w4N-D6&tp9Zs!;Bd1rWaWdh_Mez{8AI%jD8U)S17G87e4ij|ZM{Apq{exj znVuOY>`mRXEv9>p?yXyT*R^hDL+By`@!8|Zn+hoDKeL?-Zl_@?xQIFzeg=Fa>c|07 z=O&{gjzhy#bkVwPI=fsNC3+;>j>x_Uk6(-2~O!j3Fc0Y)pj)phO0?&2~?hU5U@{UU@HpA198 zRCMRVS?1lgXSa5lab{?eg$qRZ%MhU+JI4d2R5^_R#X^Is8f@!8?F-fJQ~X6HZ=DVy zQ*DC<>BznU6&TiI{5%eEwgKubO>BE~# zgh$&(_{?W$cMXP7a61iC!JQ4kiTY+NeU&79!F-G20bTqqL>NEc1E#4M2R7)S1|y6S zg<*Bmr?Hv{GuVB}i-BH#pA2)@G!^EVh)Sv>#xi*^38E+!sgghse+UuAXCA6q=v`6) zMhhh-u#my~{~Usg{{_{zONAD#k+A+45Acm7fcuD*&hL31W~WgQ^BS{3ApdpClv8 zRDiFBS-f8WjfMDj62zd)?Uyy^E9#As zjvAzUP)A)-x}sJoU17hJ(-pQP`9T<<5r;iEK8pis@d~umor<(%s|;9(YpkQnXR+5w z%{jv_8b-@u-KJ$2e#tO?*fpEto19@lW-ttX1fO*l2W)rw`3`qF7WXzewy1)lj7lG> zFKG9s{qYihONpM+DWxn*1+>N}fGI?165c`McX7Cm!+SW~z+nN0n>axIDDhi3+{R%E z2ka>FyExp#A?kS16?P;!R-8z#`&$_Dk|rzA&yD^{|0-TC7Ew1PE9(DuEWxv0_Lz|g zF+|RXfETA{wTr*kU>>lD<~nLsbEUym6mbf$jp?mJ?>p#PX1z^pi*syALMM9D^-H4v z3jJ;P&rbpL^<&TtuZV7VCAb0p592{^AOBfN5aQVM^VfoCxsH8GYLaVGNzN-X(9bQ& Pnv$1`%9LDE_N)H|O;T5T diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc deleted file mode 100644 index 1037c732743966cc7ea93553dbc9544a413a3361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4261 zcmb7HOK;mo5GE;El4bdw_oHFb^kFm+QxpXX*L9mXNDv@S(>N#!9ZE9XwZw$4?ov)H z1imCcBt827^ip1X$~m`Q+L_@)v}M@}4Xt;$v%B9nGdnvBXJ?xVJa5$}+rQ5#%0DQS zpDGAHDT*rBp~IAp!c?Yts;_l475f#h(y6j4oARdoTBoKe_Z3!S^|uPE^V*wAr_SnK zwbNjgEoG%KsQI?@^H%#k?y#aJGj~!B!q%ejid&fCaF$Rlg*ISAgRS>Ntz~Uj?I(Q zBx!*yk~Blo5?dyzMbasDnxt8h&aks2&5?ADohNCYqzmjKNed)hVwXu;B zgQ2b^Q=4cg`){yGQ->$FiOyWXoj4ROmpT|pk9%Avqv~PA1(-7E>T*}c+;8jmLeC3d zO48}}U1kRk*SAIJ>(=ck^0>}Ir|+wxHu)7?WG&VxmEsFcLM9GjA!uEYYc^?3AgJ}K+p3X^) zzG?Sj-&?oLHUZqUUjXyI`%dO0}kGYCFs0X z-YK#ATzgkx>YwljF`^Bgt)}x=b!NwQ5gEIB>~f~ZA(;m(C2r`v-EHfZwP!rcT!{X6 z9XfgXRzHeD5gXSt`xw_Vx|TJ#eC(9{YI4bhSv+9)&qV8*HVD}Qi5AMF8rg9#Y4TSQ zj3AtSHK|JOZSN~$0l59!HF}}X4Tw-jgbt5m*Ld-rG^8WIi9z>f6f$Y-@L&f6(1>>9 zUKo7S{`!_7-I(8uZ07~UoHQagGGOC?g~BL@f&s@Pl%QmNi|&?U3DpkU8@XEms~Z}7z|Em6=%kx zCe-}e z^#rbkj`$q)mXXq_vK#W@5k~ou5vNi{PscJEIw5mFma>YtKZeizAtiBoES=N^Io_{O z56?tS=iu-No%}T9L3O8~BjFA`-a$n`kwx<)WQp@*v63P!jHbVZdK67%(-*@dSPuu& zlLD(39)Dm*E{lg@_vk>H8wL{Uj1Qw0ae6x|CR3mBG0Z zs{$7)jpZgVRltES^LZI~q0J`dld0!?GErPRi9@D{@P0(y>(CrxP*ORO!R;c-BG-Z9 z25L1}`Q)tiIMW9F%{?QR#=~DE7vy^&`nv`CvnBhNHBJQoLjisVYSVB+=$qjV6ypHA zv1g?H@vzg2EnOW!KPW(#ueIU$iIBf9Ap3pkI+GcD6IB6l9ROo@Jl-_@)6xj{Q31D{ zgNor1w1;z0w?HfULF__ZFi~*iMQe5iJmo&rtMDQ60KRgLPE1#ZiRs8m<1^I)1y%+R zId36n%2sDeaaB@yw4w>Djzk@rmF1*irggBHG)>bFS>NNPnY2vv5BL_M3fWBRrU{t= zUN<6vA6fBkS`1NbaRC>@l1E&|<`ZnLV54L6DK?*BLznRv*!vQj6>PAeE;U#J3iJYA z@Nx~BhEi3vMoZPIANyNSX{D8EaTC@-a@&18;if6DicacSWJ9S>88oRt?Jn?3ohBh+ i+w(y62!KgrEj80R-melfZdGZi4XvduRJ30j|NRfA-jSpL diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc deleted file mode 100644 index cb87f4f831672d1ac2f58b0fb59c2b71ffd804ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8852 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 PD?iV?mdR+R(*OA{qmwJf diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc deleted file mode 100644 index 892dd3c40bfdd5efe5873136fac99b10111b8e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmYk0zfQw25XS8!K-7`}iI>RGT&pe}D#Q~oz~;qDV>h*$*p}@?Dl-ql$}44M>MJmD ziHgce_q#v(?(~@~n-Po;`nvzb`aKT+Bf{Ys(?22vNeCm13W_yiv54MC9>3qLi%qf0 z<8zFfb2@?|Uh-s^bKXnmmC>9JcbAquT(_aKjpUqVf3j)uMcgfZnDC?EU|I=vrz&SE z8G?f2#)Ge1X_c-Q)(8*1)IBt62lf;WMz4$261)m>Vaw`R*3yGj7SN0q#({0hus5z1 a%8jR!!NQ(~blV!yHS%fn?-N8C-P2zx>rw## diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc deleted file mode 100644 index d301c367a7fa9895f031e65fb87f281bf74fa6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8626 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. Makes use of the - `appname `, - `version `, - `ensure_exists `. - """ - - @property - def user_data_dir(self) -> str: - """:return: data directory tied to the user, e.g. ``/data/user///files/``""" - return self._append_app_name_and_version(cast(str, _android_folder()), "files") - - @property - def site_data_dir(self) -> str: - """:return: data directory shared by users, same as `user_data_dir`""" - return self.user_data_dir - - @property - def user_config_dir(self) -> str: - """ - :return: config directory tied to the user, e.g. \ - ``/data/user///shared_prefs/`` - """ - return self._append_app_name_and_version(cast(str, _android_folder()), "shared_prefs") - - @property - def site_config_dir(self) -> str: - """:return: config directory shared by the users, same as `user_config_dir`""" - return self.user_config_dir - - @property - def user_cache_dir(self) -> str: - """:return: cache directory tied to the user, e.g. e.g. ``/data/user///cache/``""" - return self._append_app_name_and_version(cast(str, _android_folder()), "cache") - - @property - def site_cache_dir(self) -> str: - """:return: cache directory shared by users, same as `user_cache_dir`""" - return self.user_cache_dir - - @property - def user_state_dir(self) -> str: - """:return: state directory tied to the user, same as `user_data_dir`""" - return self.user_data_dir - - @property - def user_log_dir(self) -> str: - """ - :return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it, - e.g. ``/data/user///cache//log`` - """ - path = self.user_cache_dir - if self.opinion: - path = os.path.join(path, "log") # noqa: PTH118 - return path - - @property - def user_documents_dir(self) -> str: - """:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``""" - return _android_documents_folder() - - @property - def user_downloads_dir(self) -> str: - """:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``""" - return _android_downloads_folder() - - @property - def user_pictures_dir(self) -> str: - """:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``""" - return _android_pictures_folder() - - @property - def user_videos_dir(self) -> str: - """:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``""" - return _android_videos_folder() - - @property - def user_music_dir(self) -> str: - """:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``""" - return _android_music_folder() - - @property - def user_runtime_dir(self) -> str: - """ - :return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it, - e.g. ``/data/user///cache//tmp`` - """ - path = self.user_cache_dir - if self.opinion: - path = os.path.join(path, "tmp") # noqa: PTH118 - return path - - -@lru_cache(maxsize=1) -def _android_folder() -> str | None: - """:return: base folder for the Android OS or None if it cannot be found""" - try: - # First try to get path to android app via pyjnius - from jnius import autoclass - - context = autoclass("android.content.Context") - result: str | None = context.getFilesDir().getParentFile().getAbsolutePath() - except Exception: # noqa: BLE001 - # if fails find an android folder looking path on the sys.path - pattern = re.compile(r"/data/(data|user/\d+)/(.+)/files") - for path in sys.path: - if pattern.match(path): - result = path.split("/files")[0] - break - else: - result = None - return result - - -@lru_cache(maxsize=1) -def _android_documents_folder() -> str: - """:return: documents folder for the Android OS""" - # Get directories with pyjnius - try: - from jnius import autoclass - - context = autoclass("android.content.Context") - environment = autoclass("android.os.Environment") - documents_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOCUMENTS).getAbsolutePath() - except Exception: # noqa: BLE001 - documents_dir = "/storage/emulated/0/Documents" - - return documents_dir - - -@lru_cache(maxsize=1) -def _android_downloads_folder() -> str: - """:return: downloads folder for the Android OS""" - # Get directories with pyjnius - try: - from jnius import autoclass - - context = autoclass("android.content.Context") - environment = autoclass("android.os.Environment") - downloads_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOWNLOADS).getAbsolutePath() - except Exception: # noqa: BLE001 - downloads_dir = "/storage/emulated/0/Downloads" - - return downloads_dir - - -@lru_cache(maxsize=1) -def _android_pictures_folder() -> str: - """:return: pictures folder for the Android OS""" - # Get directories with pyjnius - try: - from jnius import autoclass - - context = autoclass("android.content.Context") - environment = autoclass("android.os.Environment") - pictures_dir: str = context.getExternalFilesDir(environment.DIRECTORY_PICTURES).getAbsolutePath() - except Exception: # noqa: BLE001 - pictures_dir = "/storage/emulated/0/Pictures" - - return pictures_dir - - -@lru_cache(maxsize=1) -def _android_videos_folder() -> str: - """:return: videos folder for the Android OS""" - # Get directories with pyjnius - try: - from jnius import autoclass - - context = autoclass("android.content.Context") - environment = autoclass("android.os.Environment") - videos_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DCIM).getAbsolutePath() - except Exception: # noqa: BLE001 - videos_dir = "/storage/emulated/0/DCIM/Camera" - - return videos_dir - - -@lru_cache(maxsize=1) -def _android_music_folder() -> str: - """:return: music folder for the Android OS""" - # Get directories with pyjnius - try: - from jnius import autoclass - - context = autoclass("android.content.Context") - environment = autoclass("android.os.Environment") - music_dir: str = context.getExternalFilesDir(environment.DIRECTORY_MUSIC).getAbsolutePath() - except Exception: # noqa: BLE001 - music_dir = "/storage/emulated/0/Music" - - return music_dir - - -__all__ = [ - "Android", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py deleted file mode 100644 index d64ebb9..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py +++ /dev/null @@ -1,223 +0,0 @@ -"""Base API.""" -from __future__ import annotations - -import os -from abc import ABC, abstractmethod -from pathlib import Path -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - import sys - - if sys.version_info >= (3, 8): # pragma: no cover (py38+) - from typing import Literal - else: # pragma: no cover (py38+) - from pip._vendor.typing_extensions import Literal - - -class PlatformDirsABC(ABC): - """Abstract base class for platform directories.""" - - def __init__( # noqa: PLR0913 - self, - appname: str | None = None, - appauthor: str | None | Literal[False] = None, - version: str | None = None, - roaming: bool = False, # noqa: FBT001, FBT002 - multipath: bool = False, # noqa: FBT001, FBT002 - opinion: bool = True, # noqa: FBT001, FBT002 - ensure_exists: bool = False, # noqa: FBT001, FBT002 - ) -> None: - """ - Create a new platform directory. - - :param appname: See `appname`. - :param appauthor: See `appauthor`. - :param version: See `version`. - :param roaming: See `roaming`. - :param multipath: See `multipath`. - :param opinion: See `opinion`. - :param ensure_exists: See `ensure_exists`. - """ - self.appname = appname #: The name of application. - self.appauthor = appauthor - """ - The name of the app author or distributing body for this application. Typically, it is the owning company name. - Defaults to `appname`. You may pass ``False`` to disable it. - """ - self.version = version - """ - An optional version path element to append to the path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this would typically be ``.``. - """ - self.roaming = roaming - """ - Whether to use the roaming appdata directory on Windows. That means that for users on a Windows network setup - for roaming profiles, this user data will be synced on login (see - `here `_). - """ - self.multipath = multipath - """ - An optional parameter only applicable to Unix/Linux which indicates that the entire list of data dirs should be - returned. By default, the first item would only be returned. - """ - self.opinion = opinion #: A flag to indicating to use opinionated values. - self.ensure_exists = ensure_exists - """ - Optionally create the directory (and any missing parents) upon access if it does not exist. - By default, no directories are created. - """ - - def _append_app_name_and_version(self, *base: str) -> str: - params = list(base[1:]) - if self.appname: - params.append(self.appname) - if self.version: - params.append(self.version) - path = os.path.join(base[0], *params) # noqa: PTH118 - self._optionally_create_directory(path) - return path - - def _optionally_create_directory(self, path: str) -> None: - if self.ensure_exists: - Path(path).mkdir(parents=True, exist_ok=True) - - @property - @abstractmethod - def user_data_dir(self) -> str: - """:return: data directory tied to the user""" - - @property - @abstractmethod - def site_data_dir(self) -> str: - """:return: data directory shared by users""" - - @property - @abstractmethod - def user_config_dir(self) -> str: - """:return: config directory tied to the user""" - - @property - @abstractmethod - def site_config_dir(self) -> str: - """:return: config directory shared by the users""" - - @property - @abstractmethod - def user_cache_dir(self) -> str: - """:return: cache directory tied to the user""" - - @property - @abstractmethod - def site_cache_dir(self) -> str: - """:return: cache directory shared by users""" - - @property - @abstractmethod - def user_state_dir(self) -> str: - """:return: state directory tied to the user""" - - @property - @abstractmethod - def user_log_dir(self) -> str: - """:return: log directory tied to the user""" - - @property - @abstractmethod - def user_documents_dir(self) -> str: - """:return: documents directory tied to the user""" - - @property - @abstractmethod - def user_downloads_dir(self) -> str: - """:return: downloads directory tied to the user""" - - @property - @abstractmethod - def user_pictures_dir(self) -> str: - """:return: pictures directory tied to the user""" - - @property - @abstractmethod - def user_videos_dir(self) -> str: - """:return: videos directory tied to the user""" - - @property - @abstractmethod - def user_music_dir(self) -> str: - """:return: music directory tied to the user""" - - @property - @abstractmethod - def user_runtime_dir(self) -> str: - """:return: runtime directory tied to the user""" - - @property - def user_data_path(self) -> Path: - """:return: data path tied to the user""" - return Path(self.user_data_dir) - - @property - def site_data_path(self) -> Path: - """:return: data path shared by users""" - return Path(self.site_data_dir) - - @property - def user_config_path(self) -> Path: - """:return: config path tied to the user""" - return Path(self.user_config_dir) - - @property - def site_config_path(self) -> Path: - """:return: config path shared by the users""" - return Path(self.site_config_dir) - - @property - def user_cache_path(self) -> Path: - """:return: cache path tied to the user""" - return Path(self.user_cache_dir) - - @property - def site_cache_path(self) -> Path: - """:return: cache path shared by users""" - return Path(self.site_cache_dir) - - @property - def user_state_path(self) -> Path: - """:return: state path tied to the user""" - return Path(self.user_state_dir) - - @property - def user_log_path(self) -> Path: - """:return: log path tied to the user""" - return Path(self.user_log_dir) - - @property - def user_documents_path(self) -> Path: - """:return: documents path tied to the user""" - return Path(self.user_documents_dir) - - @property - def user_downloads_path(self) -> Path: - """:return: downloads path tied to the user""" - return Path(self.user_downloads_dir) - - @property - def user_pictures_path(self) -> Path: - """:return: pictures path tied to the user""" - return Path(self.user_pictures_dir) - - @property - def user_videos_path(self) -> Path: - """:return: videos path tied to the user""" - return Path(self.user_videos_dir) - - @property - def user_music_path(self) -> Path: - """:return: music path tied to the user""" - return Path(self.user_music_dir) - - @property - def user_runtime_path(self) -> Path: - """:return: runtime path tied to the user""" - return Path(self.user_runtime_dir) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py deleted file mode 100644 index a753e2a..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py +++ /dev/null @@ -1,91 +0,0 @@ -"""macOS.""" -from __future__ import annotations - -import os.path - -from .api import PlatformDirsABC - - -class MacOS(PlatformDirsABC): - """ - Platform directories for the macOS operating system. Follows the guidance from `Apple documentation - `_. - Makes use of the `appname `, - `version `, - `ensure_exists `. - """ - - @property - def user_data_dir(self) -> str: - """:return: data directory tied to the user, e.g. ``~/Library/Application Support/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Application Support")) # noqa: PTH111 - - @property - def site_data_dir(self) -> str: - """:return: data directory shared by users, e.g. ``/Library/Application Support/$appname/$version``""" - return self._append_app_name_and_version("/Library/Application Support") - - @property - def user_config_dir(self) -> str: - """:return: config directory tied to the user, same as `user_data_dir`""" - return self.user_data_dir - - @property - def site_config_dir(self) -> str: - """:return: config directory shared by the users, same as `site_data_dir`""" - return self.site_data_dir - - @property - def user_cache_dir(self) -> str: - """:return: cache directory tied to the user, e.g. ``~/Library/Caches/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches")) # noqa: PTH111 - - @property - def site_cache_dir(self) -> str: - """:return: cache directory shared by users, e.g. ``/Library/Caches/$appname/$version``""" - return self._append_app_name_and_version("/Library/Caches") - - @property - def user_state_dir(self) -> str: - """:return: state directory tied to the user, same as `user_data_dir`""" - return self.user_data_dir - - @property - def user_log_dir(self) -> str: - """:return: log directory tied to the user, e.g. ``~/Library/Logs/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Logs")) # noqa: PTH111 - - @property - def user_documents_dir(self) -> str: - """:return: documents directory tied to the user, e.g. ``~/Documents``""" - return os.path.expanduser("~/Documents") # noqa: PTH111 - - @property - def user_downloads_dir(self) -> str: - """:return: downloads directory tied to the user, e.g. ``~/Downloads``""" - return os.path.expanduser("~/Downloads") # noqa: PTH111 - - @property - def user_pictures_dir(self) -> str: - """:return: pictures directory tied to the user, e.g. ``~/Pictures``""" - return os.path.expanduser("~/Pictures") # noqa: PTH111 - - @property - def user_videos_dir(self) -> str: - """:return: videos directory tied to the user, e.g. ``~/Movies``""" - return os.path.expanduser("~/Movies") # noqa: PTH111 - - @property - def user_music_dir(self) -> str: - """:return: music directory tied to the user, e.g. ``~/Music``""" - return os.path.expanduser("~/Music") # noqa: PTH111 - - @property - def user_runtime_dir(self) -> str: - """:return: runtime directory tied to the user, e.g. ``~/Library/Caches/TemporaryItems/$appname/$version``""" - return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches/TemporaryItems")) # noqa: PTH111 - - -__all__ = [ - "MacOS", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/py.typed b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py deleted file mode 100644 index 468b0ab..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py +++ /dev/null @@ -1,223 +0,0 @@ -"""Unix.""" -from __future__ import annotations - -import os -import sys -from configparser import ConfigParser -from pathlib import Path - -from .api import PlatformDirsABC - -if sys.platform == "win32": - - def getuid() -> int: - msg = "should only be used on Unix" - raise RuntimeError(msg) - -else: - from os import getuid - - -class Unix(PlatformDirsABC): - """ - On Unix/Linux, we follow the - `XDG Basedir Spec `_. The spec allows - overriding directories with environment variables. The examples show are the default values, alongside the name of - the environment variable that overrides them. Makes use of the - `appname `, - `version `, - `multipath `, - `opinion `, - `ensure_exists `. - """ - - @property - def user_data_dir(self) -> str: - """ - :return: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or - ``$XDG_DATA_HOME/$appname/$version`` - """ - path = os.environ.get("XDG_DATA_HOME", "") - if not path.strip(): - path = os.path.expanduser("~/.local/share") # noqa: PTH111 - return self._append_app_name_and_version(path) - - @property - def site_data_dir(self) -> str: - """ - :return: data directories shared by users (if `multipath ` is - enabled and ``XDG_DATA_DIR`` is set and a multi path the response is also a multi path separated by the OS - path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version`` - """ - # XDG default for $XDG_DATA_DIRS; only first, if multipath is False - path = os.environ.get("XDG_DATA_DIRS", "") - if not path.strip(): - path = f"/usr/local/share{os.pathsep}/usr/share" - return self._with_multi_path(path) - - def _with_multi_path(self, path: str) -> str: - path_list = path.split(os.pathsep) - if not self.multipath: - path_list = path_list[0:1] - path_list = [self._append_app_name_and_version(os.path.expanduser(p)) for p in path_list] # noqa: PTH111 - return os.pathsep.join(path_list) - - @property - def user_config_dir(self) -> str: - """ - :return: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or - ``$XDG_CONFIG_HOME/$appname/$version`` - """ - path = os.environ.get("XDG_CONFIG_HOME", "") - if not path.strip(): - path = os.path.expanduser("~/.config") # noqa: PTH111 - return self._append_app_name_and_version(path) - - @property - def site_config_dir(self) -> str: - """ - :return: config directories shared by users (if `multipath ` - is enabled and ``XDG_DATA_DIR`` is set and a multi path the response is also a multi path separated by the OS - path separator), e.g. ``/etc/xdg/$appname/$version`` - """ - # XDG default for $XDG_CONFIG_DIRS only first, if multipath is False - path = os.environ.get("XDG_CONFIG_DIRS", "") - if not path.strip(): - path = "/etc/xdg" - return self._with_multi_path(path) - - @property - def user_cache_dir(self) -> str: - """ - :return: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or - ``~/$XDG_CACHE_HOME/$appname/$version`` - """ - path = os.environ.get("XDG_CACHE_HOME", "") - if not path.strip(): - path = os.path.expanduser("~/.cache") # noqa: PTH111 - return self._append_app_name_and_version(path) - - @property - def site_cache_dir(self) -> str: - """:return: cache directory shared by users, e.g. ``/var/tmp/$appname/$version``""" - return self._append_app_name_and_version("/var/tmp") # noqa: S108 - - @property - def user_state_dir(self) -> str: - """ - :return: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or - ``$XDG_STATE_HOME/$appname/$version`` - """ - path = os.environ.get("XDG_STATE_HOME", "") - if not path.strip(): - path = os.path.expanduser("~/.local/state") # noqa: PTH111 - return self._append_app_name_and_version(path) - - @property - def user_log_dir(self) -> str: - """:return: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in it""" - path = self.user_state_dir - if self.opinion: - path = os.path.join(path, "log") # noqa: PTH118 - return path - - @property - def user_documents_dir(self) -> str: - """:return: documents directory tied to the user, e.g. ``~/Documents``""" - return _get_user_media_dir("XDG_DOCUMENTS_DIR", "~/Documents") - - @property - def user_downloads_dir(self) -> str: - """:return: downloads directory tied to the user, e.g. ``~/Downloads``""" - return _get_user_media_dir("XDG_DOWNLOAD_DIR", "~/Downloads") - - @property - def user_pictures_dir(self) -> str: - """:return: pictures directory tied to the user, e.g. ``~/Pictures``""" - return _get_user_media_dir("XDG_PICTURES_DIR", "~/Pictures") - - @property - def user_videos_dir(self) -> str: - """:return: videos directory tied to the user, e.g. ``~/Videos``""" - return _get_user_media_dir("XDG_VIDEOS_DIR", "~/Videos") - - @property - def user_music_dir(self) -> str: - """:return: music directory tied to the user, e.g. ``~/Music``""" - return _get_user_media_dir("XDG_MUSIC_DIR", "~/Music") - - @property - def user_runtime_dir(self) -> str: - """ - :return: runtime directory tied to the user, e.g. ``/run/user/$(id -u)/$appname/$version`` or - ``$XDG_RUNTIME_DIR/$appname/$version``. - - For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/user/$(id -u)/$appname/$version`` if - exists, otherwise ``/tmp/runtime-$(id -u)/$appname/$version``, if``$XDG_RUNTIME_DIR`` - is not set. - """ - path = os.environ.get("XDG_RUNTIME_DIR", "") - if not path.strip(): - if sys.platform.startswith(("freebsd", "openbsd", "netbsd")): - path = f"/var/run/user/{getuid()}" - if not Path(path).exists(): - path = f"/tmp/runtime-{getuid()}" # noqa: S108 - else: - path = f"/run/user/{getuid()}" - return self._append_app_name_and_version(path) - - @property - def site_data_path(self) -> Path: - """:return: data path shared by users. Only return first item, even if ``multipath`` is set to ``True``""" - return self._first_item_as_path_if_multipath(self.site_data_dir) - - @property - def site_config_path(self) -> Path: - """:return: config path shared by the users. Only return first item, even if ``multipath`` is set to ``True``""" - return self._first_item_as_path_if_multipath(self.site_config_dir) - - @property - def site_cache_path(self) -> Path: - """:return: cache path shared by users. Only return first item, even if ``multipath`` is set to ``True``""" - return self._first_item_as_path_if_multipath(self.site_cache_dir) - - def _first_item_as_path_if_multipath(self, directory: str) -> Path: - if self.multipath: - # If multipath is True, the first path is returned. - directory = directory.split(os.pathsep)[0] - return Path(directory) - - -def _get_user_media_dir(env_var: str, fallback_tilde_path: str) -> str: - media_dir = _get_user_dirs_folder(env_var) - if media_dir is None: - media_dir = os.environ.get(env_var, "").strip() - if not media_dir: - media_dir = os.path.expanduser(fallback_tilde_path) # noqa: PTH111 - - return media_dir - - -def _get_user_dirs_folder(key: str) -> str | None: - """Return directory from user-dirs.dirs config file. See https://freedesktop.org/wiki/Software/xdg-user-dirs/.""" - user_dirs_config_path = Path(Unix().user_config_dir) / "user-dirs.dirs" - if user_dirs_config_path.exists(): - parser = ConfigParser() - - with user_dirs_config_path.open() as stream: - # Add fake section header, so ConfigParser doesn't complain - parser.read_string(f"[top]\n{stream.read()}") - - if key not in parser["top"]: - return None - - path = parser["top"][key].strip('"') - # Handle relative home paths - return path.replace("$HOME", os.path.expanduser("~")) # noqa: PTH111 - - return None - - -__all__ = [ - "Unix", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py deleted file mode 100644 index dc8c44c..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py +++ /dev/null @@ -1,4 +0,0 @@ -# file generated by setuptools_scm -# don't change, don't track in version control -__version__ = version = '3.8.1' -__version_tuple__ = version_tuple = (3, 8, 1) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py b/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py deleted file mode 100644 index b52c9c6..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py +++ /dev/null @@ -1,255 +0,0 @@ -"""Windows.""" -from __future__ import annotations - -import ctypes -import os -import sys -from functools import lru_cache -from typing import TYPE_CHECKING - -from .api import PlatformDirsABC - -if TYPE_CHECKING: - from collections.abc import Callable - - -class Windows(PlatformDirsABC): - """ - `MSDN on where to store app data files - `_. - Makes use of the - `appname `, - `appauthor `, - `version `, - `roaming `, - `opinion `, - `ensure_exists `. - """ - - @property - def user_data_dir(self) -> str: - """ - :return: data directory tied to the user, e.g. - ``%USERPROFILE%\\AppData\\Local\\$appauthor\\$appname`` (not roaming) or - ``%USERPROFILE%\\AppData\\Roaming\\$appauthor\\$appname`` (roaming) - """ - const = "CSIDL_APPDATA" if self.roaming else "CSIDL_LOCAL_APPDATA" - path = os.path.normpath(get_win_folder(const)) - return self._append_parts(path) - - def _append_parts(self, path: str, *, opinion_value: str | None = None) -> str: - params = [] - if self.appname: - if self.appauthor is not False: - author = self.appauthor or self.appname - params.append(author) - params.append(self.appname) - if opinion_value is not None and self.opinion: - params.append(opinion_value) - if self.version: - params.append(self.version) - path = os.path.join(path, *params) # noqa: PTH118 - self._optionally_create_directory(path) - return path - - @property - def site_data_dir(self) -> str: - """:return: data directory shared by users, e.g. ``C:\\ProgramData\\$appauthor\\$appname``""" - path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA")) - return self._append_parts(path) - - @property - def user_config_dir(self) -> str: - """:return: config directory tied to the user, same as `user_data_dir`""" - return self.user_data_dir - - @property - def site_config_dir(self) -> str: - """:return: config directory shared by the users, same as `site_data_dir`""" - return self.site_data_dir - - @property - def user_cache_dir(self) -> str: - """ - :return: cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g. - ``%USERPROFILE%\\AppData\\Local\\$appauthor\\$appname\\Cache\\$version`` - """ - path = os.path.normpath(get_win_folder("CSIDL_LOCAL_APPDATA")) - return self._append_parts(path, opinion_value="Cache") - - @property - def site_cache_dir(self) -> str: - """:return: cache directory shared by users, e.g. ``C:\\ProgramData\\$appauthor\\$appname\\Cache\\$version``""" - path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA")) - return self._append_parts(path, opinion_value="Cache") - - @property - def user_state_dir(self) -> str: - """:return: state directory tied to the user, same as `user_data_dir`""" - return self.user_data_dir - - @property - def user_log_dir(self) -> str: - """:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it""" - path = self.user_data_dir - if self.opinion: - path = os.path.join(path, "Logs") # noqa: PTH118 - self._optionally_create_directory(path) - return path - - @property - def user_documents_dir(self) -> str: - """:return: documents directory tied to the user e.g. ``%USERPROFILE%\\Documents``""" - return os.path.normpath(get_win_folder("CSIDL_PERSONAL")) - - @property - def user_downloads_dir(self) -> str: - """:return: downloads directory tied to the user e.g. ``%USERPROFILE%\\Downloads``""" - return os.path.normpath(get_win_folder("CSIDL_DOWNLOADS")) - - @property - def user_pictures_dir(self) -> str: - """:return: pictures directory tied to the user e.g. ``%USERPROFILE%\\Pictures``""" - return os.path.normpath(get_win_folder("CSIDL_MYPICTURES")) - - @property - def user_videos_dir(self) -> str: - """:return: videos directory tied to the user e.g. ``%USERPROFILE%\\Videos``""" - return os.path.normpath(get_win_folder("CSIDL_MYVIDEO")) - - @property - def user_music_dir(self) -> str: - """:return: music directory tied to the user e.g. ``%USERPROFILE%\\Music``""" - return os.path.normpath(get_win_folder("CSIDL_MYMUSIC")) - - @property - def user_runtime_dir(self) -> str: - """ - :return: runtime directory tied to the user, e.g. - ``%USERPROFILE%\\AppData\\Local\\Temp\\$appauthor\\$appname`` - """ - path = os.path.normpath(os.path.join(get_win_folder("CSIDL_LOCAL_APPDATA"), "Temp")) # noqa: PTH118 - return self._append_parts(path) - - -def get_win_folder_from_env_vars(csidl_name: str) -> str: - """Get folder from environment variables.""" - result = get_win_folder_if_csidl_name_not_env_var(csidl_name) - if result is not None: - return result - - env_var_name = { - "CSIDL_APPDATA": "APPDATA", - "CSIDL_COMMON_APPDATA": "ALLUSERSPROFILE", - "CSIDL_LOCAL_APPDATA": "LOCALAPPDATA", - }.get(csidl_name) - if env_var_name is None: - msg = f"Unknown CSIDL name: {csidl_name}" - raise ValueError(msg) - result = os.environ.get(env_var_name) - if result is None: - msg = f"Unset environment variable: {env_var_name}" - raise ValueError(msg) - return result - - -def get_win_folder_if_csidl_name_not_env_var(csidl_name: str) -> str | None: - """Get folder for a CSIDL name that does not exist as an environment variable.""" - if csidl_name == "CSIDL_PERSONAL": - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Documents") # noqa: PTH118 - - if csidl_name == "CSIDL_DOWNLOADS": - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Downloads") # noqa: PTH118 - - if csidl_name == "CSIDL_MYPICTURES": - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Pictures") # noqa: PTH118 - - if csidl_name == "CSIDL_MYVIDEO": - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Videos") # noqa: PTH118 - - if csidl_name == "CSIDL_MYMUSIC": - return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Music") # noqa: PTH118 - return None - - -def get_win_folder_from_registry(csidl_name: str) -> str: - """ - Get folder from the registry. - - This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer - for all CSIDL_* names. - """ - shell_folder_name = { - "CSIDL_APPDATA": "AppData", - "CSIDL_COMMON_APPDATA": "Common AppData", - "CSIDL_LOCAL_APPDATA": "Local AppData", - "CSIDL_PERSONAL": "Personal", - "CSIDL_DOWNLOADS": "{374DE290-123F-4565-9164-39C4925E467B}", - "CSIDL_MYPICTURES": "My Pictures", - "CSIDL_MYVIDEO": "My Video", - "CSIDL_MYMUSIC": "My Music", - }.get(csidl_name) - if shell_folder_name is None: - msg = f"Unknown CSIDL name: {csidl_name}" - raise ValueError(msg) - if sys.platform != "win32": # only needed for mypy type checker to know that this code runs only on Windows - raise NotImplementedError - import winreg - - key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders") - directory, _ = winreg.QueryValueEx(key, shell_folder_name) - return str(directory) - - -def get_win_folder_via_ctypes(csidl_name: str) -> str: - """Get folder with ctypes.""" - # There is no 'CSIDL_DOWNLOADS'. - # Use 'CSIDL_PROFILE' (40) and append the default folder 'Downloads' instead. - # https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid - - csidl_const = { - "CSIDL_APPDATA": 26, - "CSIDL_COMMON_APPDATA": 35, - "CSIDL_LOCAL_APPDATA": 28, - "CSIDL_PERSONAL": 5, - "CSIDL_MYPICTURES": 39, - "CSIDL_MYVIDEO": 14, - "CSIDL_MYMUSIC": 13, - "CSIDL_DOWNLOADS": 40, - }.get(csidl_name) - if csidl_const is None: - msg = f"Unknown CSIDL name: {csidl_name}" - raise ValueError(msg) - - buf = ctypes.create_unicode_buffer(1024) - windll = getattr(ctypes, "windll") # noqa: B009 # using getattr to avoid false positive with mypy type checker - windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) - - # Downgrade to short path name if it has highbit chars. - if any(ord(c) > 255 for c in buf): # noqa: PLR2004 - buf2 = ctypes.create_unicode_buffer(1024) - if windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): - buf = buf2 - - if csidl_name == "CSIDL_DOWNLOADS": - return os.path.join(buf.value, "Downloads") # noqa: PTH118 - - return buf.value - - -def _pick_get_win_folder() -> Callable[[str], str]: - if hasattr(ctypes, "windll"): - return get_win_folder_via_ctypes - try: - import winreg # noqa: F401 - except ImportError: - return get_win_folder_from_env_vars - else: - return get_win_folder_from_registry - - -get_win_folder = lru_cache(maxsize=None)(_pick_get_win_folder()) - -__all__ = [ - "Windows", -] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py deleted file mode 100644 index 39c84aa..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py +++ /dev/null @@ -1,82 +0,0 @@ -""" - Pygments - ~~~~~~~~ - - Pygments is a syntax highlighting package written in Python. - - It is a generic syntax highlighter for general use in all kinds of software - such as forum systems, wikis or other applications that need to prettify - source code. Highlights are: - - * a wide range of common languages and markup formats is supported - * special attention is paid to details, increasing quality by a fair amount - * support for new languages and formats are added easily - * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image - formats that PIL supports, and ANSI sequences - * it is usable as a command-line tool and as a library - * ... and it highlights even Brainfuck! - - The `Pygments master branch`_ is installable with ``easy_install Pygments==dev``. - - .. _Pygments master branch: - https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" -from io import StringIO, BytesIO - -__version__ = '2.15.1' -__docformat__ = 'restructuredtext' - -__all__ = ['lex', 'format', 'highlight'] - - -def lex(code, lexer): - """ - Lex `code` with the `lexer` (must be a `Lexer` instance) - and return an iterable of tokens. Currently, this only calls - `lexer.get_tokens()`. - """ - try: - return lexer.get_tokens(code) - except TypeError: - # Heuristic to catch a common mistake. - from pip._vendor.pygments.lexer import RegexLexer - if isinstance(lexer, type) and issubclass(lexer, RegexLexer): - raise TypeError('lex() argument must be a lexer instance, ' - 'not a class') - raise - - -def format(tokens, formatter, outfile=None): # pylint: disable=redefined-builtin - """ - Format ``tokens`` (an iterable of tokens) with the formatter ``formatter`` - (a `Formatter` instance). - - If ``outfile`` is given and a valid file object (an object with a - ``write`` method), the result will be written to it, otherwise it - is returned as a string. - """ - try: - if not outfile: - realoutfile = getattr(formatter, 'encoding', None) and BytesIO() or StringIO() - formatter.format(tokens, realoutfile) - return realoutfile.getvalue() - else: - formatter.format(tokens, outfile) - except TypeError: - # Heuristic to catch a common mistake. - from pip._vendor.pygments.formatter import Formatter - if isinstance(formatter, type) and issubclass(formatter, Formatter): - raise TypeError('format() argument must be a formatter instance, ' - 'not a class') - raise - - -def highlight(code, lexer, formatter, outfile=None): - """ - This is the most high-level highlighting function. It combines `lex` and - `format` in one function. - """ - return format(lex(code, lexer), formatter, outfile) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py deleted file mode 100644 index 2f7f8cb..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py +++ /dev/null @@ -1,17 +0,0 @@ -""" - pygments.__main__ - ~~~~~~~~~~~~~~~~~ - - Main entry point for ``python -m pygments``. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import sys -from pip._vendor.pygments.cmdline import main - -try: - sys.exit(main(sys.argv)) -except KeyboardInterrupt: - sys.exit(1) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ea126476a433358cd193a85cf270845a981da4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2938 zcmZ`*TW=f372X>!qAbTTQXnykVv@X=2DP-EGziqXXsp<^07VWgwJG?*UG5CYsrHtc zSxFS=JVgE*1>(LG{Y(4Wr~ZXJ^*gg9xmn9=Li#dntBsFccCY|yso4`)cr>IO>nKkqQ8Ata78i5%9D9CCi}}=8&J)nIG1M5q6l_cj92eBk@4se7iUql zqBH=E-!64;WfC?wrqp}G;S55nNeJbJMNynp|*-G}!denJ!h>o;hb5pgzv%?117uP4u*zc>ypu04c=$hFvG zkB`4>)(;Q%pBx=Ou`F7VFzo#gImYRGb@$jPF!A7d-Fdt)LLWT8Y(ESi{62h8-vUXD zsuEKv!Hu{ueZTfoaZ$G$=G9vp-y|N1TRlGhchUCI^iy<~?WOyJvvgj&-#Euk;23xD zk?YXUW;kTGm!9jGVCkCHm8U*5*uV7b$mRZ(`@Q?UbMEwm%YRxG55)zGD4ZiiE&NGl ziGWL}h~3R9ZP)~SV-fbzE9+;_vTqL);gB6Fh5Uo?1X(OG5F@5Ih2cWBUnyl{V*tsN zZ*qi50tPj_Zf*)^!i<{}cl+QBrC8-c*S=f#UWl2vu(w}+3S4*l$ThQy(l5J)X8~`( z4Om_nijXwcy5FgL*YfMFlSL_>C{?KXPASW9j49TbzpFg z-so!5$o1=h>{hp~PyEMG@8aN()8V|x#Bf&0L=_38&*ACkdZ-f>m*B^4S#UkX#b-lA zD(Fqw|C8{+{h@{pcUJ{M4}ovE!gn15W5k*?<1rAc7B2f3P2WQ2wQsoidGEPh*Yms| z?dnnDV`=@+{tcPF!{qX#rKj&0XXz4ou6%XFxK~bj(|A|TOCLn@m(J3E4MHvbAA;8o zQEv6tqqpBU+_NNXE&jA3q0fV~opoLYAYm6I+yeC;nI1?O*innOHY9AvzlEEvzn|Jd zfOOLEAOic|N~!)eO`E`>3>8J2aTHl`cR|@kB-Y=c?YhQJaRzyODpP^0K+GBP3b7a& zl%1iDa7JsanEXQ|#$s6wZIs0Jk|?4YP69Fk7xF%l9EDHlDmB1~l8oS4*LjpuX$DQX zJ(pCqo63aCn;1gPvDq7W0wig|pzfjw6dd!Tbwq4!^t${*qxRclVq=nDiHq&JgSbF- zRf;&GDC?*;y1I+^ut6mhePfM&_trSsh*$5?!5h@=Pb@p>C2 zJ6%nh;}kYFcGPVe5sXjK^!w<%t-yUB)b6>ry`K=Ab|v^G+dMR;wvVPskU@F`gWW4{ z=`H;$AD?mVWoeyvLg@&9J`o1!eH*JToRXVWTA=<_3F_%cIXnxNilnfpXuMhyRXnRIpuas(Y)^-^?P+^ zJmy6*9@m~M8kdpt>g_QSh0=hDr5(GcfrKfJAmNV3_WlM5$$R5Ydpp^y?*1_=c$Er7 X^D3-XNh`N97I#QtA3 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc deleted file mode 100644 index 59dba75edcab1f6d0484fa6a87e89a383ac52bb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmZ8e!EO^V5Vd!=G%T%DE}S^{gcOOaLn6JIXO{d8^Vwfpi z8IdpCknCMw$)MkV+#B=ek+FT&MPYVuWm_cc^Al^T919T>CJ?i`uh9@VPfbGlF^(0nN}qcU(# z(32;Y+RUU{$h@Z&x6~(F(L&7Vx>LK!qdv95K~JaINt%PDo)f*|Bm_wW|p!NH%uI)bX) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc deleted file mode 100644 index 4c0119910176bf670d59564c1607d94091e4a27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15608 zcmbt*U2q&nl3xGKFMt6Ef*=Y0H9hlqiZ2DNz6=P@>ek@@O#C0}MES ztnMK=9X-3c12<0RINi~Hu_L?=li_{vp2H9JgYR~|cHG%-j`Kb^Y(I2(Uwki?{a{~& zBfOSxm;N%V=LZzEs}0Y@bk}cIR#s+KR%T6eY%Htcb5DP-^8N2<+Fw#;_+ugS8h+k2 zUDJf-XhIi8O?PyD8;-$m(=qvNITqe#Em2Q8NuAnSwNyRrr0W?c!}&xlTOV;o>Z8tR zeasoF=bT)9+!?P=I1}|f&K_=)tWDPUI(zF=&QyJ$v#&nwOxO22`|Ags16-e~9jwnd zGn`J>4%H7khwDe2Bb?9Fj@FMk$Lh9Y*N;2L>$A>m{e*LZ>$0_{>T}Kl#}xR&;S#9J!}EF9~B!%O4GXnziw1 zbvEj5!}kj1x~NqfE*F0Hu}_vuFE#7+QbX9(%&s|!z233?P1n924`=&ssXlLeu4`X>|HhTo_tpwL#!{_Xb{n3%WWT=l zhN{1I_0r{)waa#;DQ)5UrE1M9WWOLTS;^~BQn&*6=Z$EjSiIv(ui9)Bi&171sMH9Z zd@35dR4aMjO4DC%wi_ZES#9}fby>=$j3!01?D?|V*eGtgB_=^My3uw$uPEGdQ@GL0 zaIRR9&3X}2uU8wTTC}H^D!L6c29#*}{YJUg^pL#a-u17p-jt5G}=RXP8ZiZ#YU;_Mk8u0E{vvX&60>4@UWF?&5fo9y+Dy7m2uZ2m1?8cx=iye z4p)Ox8N%lp4Gm&VUMu$sc?=w8AT2~J>FB$4< zTByCDef+Ji5gHG)hnhEjJB<|d)kD2&h9>Gxb*<2%x~>&WA_a{m%!kHzjBcWv3=>?F z2$TFy-qadnmgXCsS9FcO!V2}!I;VZ4-JagoLW~$D&LNFaFm^t%@})lirGEYkLia}A zj1t7#ExcN_svl)PDAn37Gk!khB%4LldXd#^`JR*D92J)2250f6(pzqaUUy2hA8GO= z;C|^YZZ_-g;zqk#md`_;u;FMEq#8LSSzUuZRjw|K{G+*zzu*B4tIf3w**Q+WQl zMX&0+3$0T5R%yfa7F*TUB1EZ6jdTtTuL0rA#7}|Rp4@;+S z8ec=t#_tKdNBL_!%9_UiwzBdRn(kV*1PYS)@v?n@#Kz;xW_PingvK3B9;fA_O@$Z6 z#FFU`^w9K;(Av;<^osFN*EJ$KN{y;E$YT*qEW(mJfdTTSoWmuq02pd?<7Ot0fb zNzWIql#o|zd$Z)rm$;@}`wA0`6nP+QRkao`Cds40GLX}AdNPy#MH+9U66wDti9kx9 z&?oUUekCuU@h*uNK>;Z<2K6&cHs*?DU)zDQ@ik#EH(=%IP4eRFJEY+3?^s=<3%Tef zg!RA(&4;>3?AJobhnyElF0&r$`@uQ;wbp`2S4=23{ec-KS#qY3wjN@PPzSVhH-)h> zVM_7F?N@}x{FVjx{81m5krGCXd2D-~mt3Da9?*^co+x{uMF zuVCc-T8!?+7>xm=pY$=x#TbqAJHyyace8#r%mSM<<}?vzK?6`GZn;Nc8qf1#40RGv z|FREtZ`_t??vF6k1AsdE4Wa%8L8V`QYDGSeO85uGU9ya7mA4z$HYDu2tF?!f| zq!%O8Z?_`7D$i466XMB&_PC<$$ylxG`8Uzh z6L_Q{LA2vo#w29wfNnh+H7K7$DsA@aXg8XMv>A_#C$`9<4@sl-%XC8Z>6iS%O2`!q z^cDG}U5n+@f_!2}(rS=G7#s%lwT7K)7HKn<${eH;64_05Qz1-&#eu*$6lH51Fl|=7nxpxY^p^-7_$J{%`y>sBrwBk*X zQE;l*E5j`My~X{I5+mHN!~K+`P`_AGzS6J4{YKA0KRg%-4S#fN>>>0&bM@E?>t$wb z?67ZuK=LvkQKnw4yMCtyhDq`^pqO{KjeLh1X8T)!$NbBsa)AI{qT8y9UICVt)zVF`bxZ)q|UY7cZ$=>nE0N(?#Wo5Jud zrR=Em_jH^>O<~Y?chK<4dJG-DM>?Se4bQjx`n7E_MfAn|@e{Yx$Gdnn^`%@TmU+bT35Vl#Qr(1uz zK@>XL9SO4G$b<{@lM>=J9cc~0n$fWL*Le(2=A%x9*jNLoecL7 zrvUozBmZ=FZ@Blq?p=DEYN&e#5M?g^L|LmV&{ z_5$@P5D@r&)9lga_^$az5OTrzvK_19vn^1*g&CAbuHf zh|6^O@4^EQ7R8~M2M(fUCd{BUYN%a!5UHPs8G8E9g$Kh-1;>?m-s6ol$_@-sg4XCV zQ^M$A)=UYkwK&|Th57Zg2(te3Ux9WM&`$d&D#m@I^XzX65i^+K)imT^;e7@)coo>`-5@g)Bs0HmT?QQ6SO*=MUui8c)BiCv({Hr0jf+fu z(|dYIx@Rzd(@Xl_3TLQvhddaH2BtUn#5oZ!oVagxp8A?O<+h)9 z)?2_BN4iG?wAxw-!cq@>U6 z{P}OYMxc29E6@hgXLkPEZwoOzcHfd0Knu&80rd0XvBz*7K({&ve_QB53i5hP9N#gz zHs-y8l{YN{fGy9FCknpSd7q(u-o^}E{*bq-)y)3!rzcwT@Q;maSE^hTSwc<9e ze{olvl>hp09vpaS%kJ7?4r6@E^a#SSaH{x5Bk5nJ+8v#8RO9^=`DO78!~JPEwe_Yr zsnY(H&_@0Zk;g7*3ypdNIX305*55Lqh3aqf^IG>fYosh_@eXM5PkVZ*F@oLu_|{5@ z-uRvpd&RS#Cx932b2fBQCKhe3;qYGo1kjsy^1GSC;>bt#i!Zp9Bjty-xXZvA@IAVY^ z>b!ljoZlU=c++jl4f}P8phs=qeg|Ih&42U5wr5}3ENzLBXHzhw+-xYPPE#U=LjI!O zhtd?k+KZoOe_g15 zrrk0ne0CpzY_|EX<$V|!%PciIk#z^Y+9;vUH3;Qt z@Zu-nL2h`Ga#Hy)cZ2&gRCweqv-M#1H;*3a*Z9Qr1$B|H;qj%h@WBO|fI7v|*^N(y z?6cTKOX@-=X*zLv(|BwUEmLsY>+thx5B0xg+@`RY9_bz)Ny&cm9~tr^w8aeN#^dL% z>^VAdm7Dd}h5txEX@qGlIQpb{44Qrgsr~{VK!09fM(Q)|jy_me`5`J50#&4d;27da z&21bc`M5h+UHLaq|DW)S*A*BYc_KzV9*FcSI3JUjh>4~MIZN3Sc-)Ax2=?_tTj_pk z1P9t)Ca=o|wP)(TfK*_@d#}7pNscuv1!vXUUhr(?&1Z*d+bgZtTzh-dZ6Kc5YQx0} zUzF{&+;X*2bwy;z^V6ucDIF@!e7+-QW7@&VhM5K+HruLGi6 zbIUk(+uK!t(_W}W#`bz}XgA;{JoGlE#gL=SrPXVz@7=ik-a7~)WqgE|$`o3P5~p8S zMcn=naprWCEO$1L${S9)7m{*DdMUIAotmJ|a^8wk&>GM@zI+M=QKr=P zn{WcSa3F6Zgc6OqUb)nAs|~M;_+z3{YkQl##QBdRi(J1^cHjn%^beFXjW|gP0%!u1 z{DiV4&X$CTQlbi=Qm{`#zCxAkeXxi-WRddZe&WNvtW%1-#T>DS^wmhe&XJ7RXN{m* z1YNU-T2KsvJtC2QiTr#Bf=0>pcBSIV$fDJfIch<|7wKz}UW)Weq}QU%)s^e--&nqS z?Xo0!bT~SyVs65%cpSut^ySD}Z#HX@ewSpDf>?5#z>(KoQZPqu;6WiQw-IG7-z~cw zERt!enxHCuLsIA?%7O|MctpS@(wlNWH6WRbjHVZ*5Ui?7czO;~@gaK5(Bpl2(5gv_ z_eJSet>lyMNI8DU2jUz<7^@J6u?oy2rFyAQZB+d#yqBJfNPvoQMd@BG301#(_%xKGR5Sh6gVE6l$774 z>OF6}o%JS`{3?a&WxM6)pN^6oQj>C>pp@}&QqXNhVi<>tzD+$7HI#XBiwelG%CmJw zxT~P801>Mey`u!8f^ApHe~Vg@B8f~0vy)h(7EYq1UX}P&C;FSf$4M?zk>?y{RaPvw zJs+WU_S+5O%Tb04*qxgu(d3jxfq94Ay$yEywq$_@U&I5UO2}{{O2wk=?Cnt5YH8>JTJC|Xizj&k&+o~Sj`kEoV{G|C^R-Z?X88h}H=ObTUAnv;6kWPhEW z!)R&1GXO6KD8{3lNidRtm&BJKOz_iyqj`#3q1~s(ucjgh|PC*d^Tg|`8`^>2cA5^F3E7w)delDa1?odE{meE%xN?4>CUc zY_|-dAHaPCoWnA(vCYnO&%$QkoVAsBkPP99M|cmxgog>72gqJER(M3;%VFvzP3>>AQS(FO;Q_dDyDvL#2HnFfvS0bw=n;X#t?y}%k z4=T&jrTa6RfSZJXa&VmZZxSm&D>q8g^GJny z`y?y$5iof!^2g}Df-O2-rK(Fxk!%|i?`b)jxHgzOGBxVDGWP=1I;Z# zIFO!BYdKv~$u8TELSOwg`5D>@9l=#?3kE5C=C~2^xyg4(;4N1-M<`rMH%H(#Pk;|n zBK^4uKRD$xB1?X4&YQ@?n=Quaw%F%5$%Ryc8)LXFrg~6*AMT8e3;2%vEpT@XB{M@M zhv>f8P@kjXn6Slh9>sWIido=uy|XK~vMaZ` zE4Qm(Tmy)|tBJS7)mjd|-ptmxKl)(eq4tMb7lAc#{h;<>4=6g~Pf~bJyn8DFe6EBe z;yu)^p?0shfl&Eds$FlU)7neaXE)aG591Q{>eL)Q7}UW_euXb++zd`~4EY_HmpCL3 z-5i88%Z}Yb(AQUY{(@Jp^e*e+NIiTKpab@{#F>&Wcc?fSne=Fd?Y(zkC@kX;IwD{+ zarcgNM4P$YuwP)%M(i zZJ&G>W=_ZEfO33_xK_y9_SFiXWHzd>@z@`*uwhr#b&(dC^bLQWaaZ6_!x#K;5~2HX zT+=gZ3OHz_5WXzoAT7TK?Eus^qAZLe=@#h#5`6L|T}vDSw+jY)A}}5t8Mr9f!UaII zl+E_Wrj2tD3|FiJuKf9Sl~LZL!xGL^bUcc2A`FtHGLfZ+z;ZAF3mxa2Z!f`CLxuM- zN9u#dMIr1Go!6l4iA;34({J7a6_oY*^)y>nePVcaNdf^yz6!xAVInnL=OHxRGA3M- zodS-i{}v>Xe?gC!I29+ey!zfd7jFQ);6D$qU4PAg{NpBu$2D;_iUlqgbygmJDmrZro}#w;SphjJ3i|SkSxxPFM|& ztzN%zb#>)DTioBCAI{Ae3Wbk@&YPfOe7x=tp!kmDXn+iPu9QeFcrG?$+ytddy`FD3 zD>iQXE$|Rvp(+svBG#63RQ-o#Stv&wLhGd(#)HRc z7t+`5S-RK@JkIyLerlz!^Swm7e^J<#vpkiilU;rPMtn96UcR~MfQ)2%Zsrn(l5RrDopWUu3bC0&SXH#UJ%4aIKnTny!~y;&`9l8%C6!%dm^TJ?H+ zV}mpTaSGCKv(TZ`qowsq$8~s2>82-i3LTT+#K8^l5{>NR#svm~?Pp(JUB;!N66Obm zfRXL(66`d<1npqdac`PDbW{}-CA|j{+@J*~7o)x1l(#%ahn)yeV^j*ZRqh;5F-W7y zC@gp__=5;KcmW!xT_(jx*aIAhg4>p)WYJlvBWkH!OkNw)hX@dp!CF;{_!GKTZZA|m z>9Y>VgG;L5`nbmSZr2L6=7t^iuFS)@C2!LLnC`X`g1e=E3`$)j&z!A}vpv)avAzJZ za6;|UjcG!Xc7l=(pP7<->B7lCq8#gpa$8E!jOjzu5TITeyF#a6FJpeLlFxa_XU#4w zs&QGu2;#zBOzHIwID~Z+aX!(Tbve3X!-L*pJq|w{Ime(G=<+!4bi%&Ghw^K5X`FTy zmBpw^t-aEhRQQUUvEQykg=h^mHh|QJ&8q#RLbZqF(mNd<;gfv9e&54=SliodwrgNS z$UE)2@LMsflK&4x0psqP2ICDLlt7l~3C031th?nBwXA}2)mqK2vYUljM7H_1XuS|5 z7Z&KgOmKcxnG@iPx7Joy3W_b`?UDHqpvdn??6%cz@FuAywE#Q73%YrkicJy^iz&?^UB2=!QZ<^ z+X62XNZN0Yw7MZhOrdN5OmKnW+pxX(e1@6#23Giz@Pqvt8z;RybIx`NIAK9~?>Xrf zHVXEvf;*dME2de;>Y*DfrMQ(#48cH%>OUiMfDMD#CRlOOu zdtHtPig^ecnzwpa%-geMhRxCfFkY@8qF)L=yjH~s3oBqkaF2!p~J0h(xE0g|K zq_z@3ze1i_7?SF|ZbTMQ$gysGbp3K56_54z5VD(@zi7Rh>swF}_BkTP1+ot)-e8}j z=LOnJXm3GTRQUX0Y zXp=;iFbpPo?JzDC5D`m`dGWnBgSVG^(tvG(V+rLaabD>*TNU3Td)f~Q=Qe%6h!ox>Lwc z$$yD~aaTUpS=Z?=Ad>wj(Ig$~dOD@Jfx}HJI!tBtwh!YEVM-V}2$o>;jB7`Sdmw7U z|0e+ikDYGO`0J96EZ3{8_)0$csMrUtLMn8BlVc?m0*WoGXhJbHjirJOQ5s3Os!&ex z9Qi|f%;AwAjVu}rw?XM}`o}18GX0~clU91wtx<>vHl4GVxwTXyf0OH}DL7-h3YAy- z=QIL2@*=bDJsz2q-$%s+d7r*S!m`K*mV_r+`E8N@l?89Gdb5{ukWa>W_*uC=(QBvP zS@hdoV!>BSEz=pgUz+?S`95(W8lJYe-Q$q@5E-k%$n0YUX7Fbdyvc+CA1S=32Kl+^ zZwv&He9nVs4lU@f59DFZ=}#j^e|%8w;8FgsOo#l-@?|2{59qI>xd6zklgMb`yPHc&c-1ojTI&XYX5QTm+n1z&)nuX(f~SXw$up#Wmj3F9f{f5or()dfhcxiD^v#kvu`)u6#q>vTK6p8Z(xVJjKe&LXF;F5W!R? zJsWiCUE~_y@9dZN&3yynEY)SS%iDe87uc-+Z*d+^!^-@z1R;94&<{Q9N5P}-nYG?KiE)V4peFe*<*Wo&V%kSXIZ;lv#-Uf7Uz4M}^!&Mvbr1w^mh!3(&GFVY2Ufy~1EZBW>4R7JVdp^4w=2#rC>Nw3hpJw7Pzp1IXfw%REt z@N=P!gH&KDaHwiWC9<-1A?;Ol7rDP3C3G0F_vQ7nri=>dmQGBFt4d%_e{w@X%p3klI-S6opZA?b38Dwt7R;UIGk?B2tc0*-}Y5 znGJX7ngH8rhn;s=fnM^*?69kL+v*p6d=L@h}5bmM7 zRpE4#G|!BGuQO=*sMi+*ty*!CY9Y1IXX>2}H=x3r>U+CS8Go7(8&(jeL2P}agg*y<4 zEH3?3@ZX4qOlb*TwAj6vrQ$mw8R+OG`vS#2QF!5lP;y~3Lg0*)4caoxU_%}x#)0I2(YEyM)5HNsei^Nej=K zYdS^E&Vs_Tw?3vt)m-|R{LS0DSzok!!z7YfB(zT2kFTk=ie#84gWi=qp*;klBB(c`cuR69@db^ynCCgG69S-S*DJ}SJxMD;DaIlACHTcYC+ z&0b(nsn+#0i^5dhXxXz82tk@viN~iNDCxmUF5rOqHfJOvK>9EgjX8~ru%&Q+(es@} zTA}g`EFucSwBa1>tV34}1`Q$IquPn7b|-|>LkHFX9q#-JgfhVS)8z8Dh%y;!z@?!{ zlnwTU)QW{H9u6X%WB`N#qN&Vpr(?N-M7*gCtE}Tj8}0(NSehLO8HGw*Rw9j;Ewq3N z25bPF92Ki(=R^nvksMl&a6UBiB7ur$>tdCAkgQta z+53#sGHG+wi){{fqBK-MYb*hF3c(zf%-o*6;6p3tq&z@XCa0+ z#{MPV8eN>w2?-2OC7y%e)XKabJ4FTaE|*~cbi5$e$so}|&_+e5u};TtSod1fe{+@5 zg)?Yj9R-j$njDhnbZYhOZl>=|tGnPEQfBhll~`CT&5(JgZXwa`Ds*!JkB%GV1!9x- zZqt+JP|5&jF$kUv!_*?g06}7&jgA?;CykVQxZ&5&VcFo zGREns#U8@sl#&y~80m1Rvwo-(sC4kiSnZ0b5{FRz;jNhgBT#$JsA4(5)xIi;wrK0l zRWwWxCeFZZ1twV0u#TyQhDQ;qnX~6Ekwf~N>dIbq0*_?^kbFshruOk@x?On|BlXe8 zh6$V;xbRmKqy zpFy|W2j+X!`*+D1Uz{%|ug5pmegud500#RW0>98r`of)k6D{f;TXcY3m)IdW3 e`~Ow+PC{7t*KNVRfmAnIE2MtLZ=5}MzVRRW(}Lju diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc deleted file mode 100644 index b191df42a361ffe3b405e1070deb423f96fbf010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3959 zcmb7HO>g7I873v_!?L~Ex@p=)i(=qIcU9QZb^{cF5CqvcNfUJI6l>>DUC0qRl4ebj z%*@bU8E!7#AF@97PxMFh$ZHQp{z6ZE-rWx(4?7XIu-`EM;NL zwH}qPCSjVbm0T>%gq_s4?8)QDe>{Hj_{oQCwq|B2*k3Dw%m}_ZVp<6H^xN~VzIlE& zvJxh-3`L^Fgnf4QdHMd?*C$_`o_#@bStJaXF=YM#PdKMTx7b?<bK@BIwxxDV>&Cft&oGCt+|yyZ7)UJ> zZFmxjqOFZmv=ibwR@6Tn)yMq5i}5mDiSZ(rp-Mwxj2vHlq{li`Jd?@dI7=fvz7)yj zIF_?Q&`Ec}y$73yxIL>%@!52c0GntKjEQ?ZwMP-D>joU}ry4d&QG`+~P($b%k z1zijSx9@tcA~c2gy>XGkpW>${7=#1xIMY_-PTNsy>MfjU2fuFAp7tV-zyhG`M!l&2 z%AM{+JJA471{OMd%EJNtgAT+Igig}rQYfPtXC}Q634?bKTTBq+m!^V869UcjGR@15RP8l+an4M6_XI z0XYf2ubnoE#Y>?^&u9$FGa7-FVxtk`xk(#ECKE=Wv5R5dBuS4id7O($3G;U>=dnau z=>KEKT*iWg{N$d$r8x_E!ZPF+1FmJ7z`vSZi1k&fBF5Dsw|Tqq1Hh^B(4?x&qo;Aa zNmT3&Ly;NsC=z(awG8WHE4zZg0y!wXL~(`R5lZ9{$;h=hvKq}0Gm0>|8~MoDnO&mu zne~0`1okKrbDqZ_gTw0Xa5!S8siC7HVgoT+j7Xto%ehc1nee!QN@+%$Fik)y33RGA5aguB zROsZPu{dpXtP4aO*LXHcEutBEoK{mEIEl@L?lYBwtl>;ivPL8pW|VpmHUF4-!DS@hsImKRttdx2O z9L}wMvgNyPKy*q*AgdtQyk>IFtV=6KIX!=)%(TFk;7aGu_~{q}%8dJ(N_Xq7b?e?Z ze#^9PP{(p5=Nr_54$B6+q zIjnkcW6`UKrSK@>zbra7c?zfK*ReSrwu;UohxDQsF1bSYaNWtx{P?5k?pB0{eOob$ zHd+UJw4#`)JsS3Dc+ZNfco=7T#2kvMt}XlJutSUbzAqDLeE$qHjb6?<=-zYhxd-mR z?Y3yVKG^VEy;$AD!jOd47u{2Ta)O_xdK;k|8Me5G7flE(O|1l)h^S0vB}}fU0CQvA zhT1_b6P&562T^--Y51(ERO1T}%xgxRNS6 zdt@p67j2yJHX843dSL`xhXf`)QH5CFB94xLw9x?Eb20>64U|)dzE8b@T@|=o6u!X(G^qPt+ z6sQqUY0Q@C6%#LcXyOucm5$VWVhOdnBH9Gv2XfKSD=DH&#W2)Gw`|U*_e&N1Jh6-< zqG8(xYr4B-XVI%vd^>vGa<_s2+uV11@3;2c>-&xR)koXVwfr&MCHA4V()Wvj?;~w; zd<6N$p6`E`^SFA`^L^kGk3D)&^s4T)*lC*5>3&|8b?AkTO8o)~s9)0X8ye_CXKNtZ zvtI-caH9_}^c~Oje(!l+$MgEF!Tr7WhC7PUGFnnRz}L;F`ntiVO!fVl8yQ>LEq?vZ w_m+{g{pu=U0`kuHEo)oZTl!e_N-qAmbipS?q?!`ObNYil_^{jRw-37i18bLl)&Kwi diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc deleted file mode 100644 index 454d21d8affc819d4bf0c88cc3d5f81138aa1912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26236 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc deleted file mode 100644 index 2d6cf277c15c8f0f8abe4dc1128d40e3b467f756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1195 zcmZWpO>f*b5GARPm1QT$p$MFy2li&A^~!aSAXp@E6URUc1Ww^?d)UMkWRcRU)>lZb zku|hM0lWXhKK2jwz-v$b3k3>yD0$nU9e|@D`9?#&c~X7rmXE;B@j&PQQ)8c?o+U4 zo|U{(a#+@k7kS0I)t~=sez*LB%Dij}PM2WX#6ogGH;!V-8LcaL-*PV)_DQ3pZssD- zrfNiYmm%HW+IqaXy|w+29?hwma{BGfL8#(!`304n(-+@=_w}2D@vy5sD)NL^l8@-i z@vDCS^*6hF`{O;D)`Bvw;=GVU{|Y!k`+7a&DoXQ$t9iqtRMcg3G)q%1PWu~f?2PD1 zPFrv#c>aL~)U3UI`t14P4t>WS&|rs-y3)f3-BzjqxO^pqa$fab#U}e1-JoxO9KDl= zpVPokusO$#5qLr)(Jl=6DL92LaEmVS0=HPKwfKTCe2K@nEO?PQ{!H38AM(75~!i4_3B14&oxXG(*v#FU3Pk40_ z7Wq-w%+<869uB|U3T3YNW)mmJamHoXjMV}_y)?q*DTd8l-~B(YMm2ZM%{*{E zwlR!ru?mwb2V7!qzcd#DBj1jR27(q{pi8tMEilmHRm8|T$oW_69(sii*A|w-t#yVM zc593KtxXUHhTh*+q{Se5d}aaalZDed%4*3OK1SjZWRTXmhivw&Uu^mW(N zaS~UZ@OoKvB3fQl(zs$&a5WRvza7t05ICo~1njJ0y)3V;!Gvk|t_! zhpgeXKK{if0mujdfu{#i#Ofr9Gy%=PBrXb=43fHR;A_x>ANCGjz8UWc(}nJgU5Ss% i8aWA5TYFD|kXgZ>8#&55;B4giE^#f}vj6hj+wR|}^gCey diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc deleted file mode 100644 index 9f7c3b86a24ee61f4a15899005da935d39629e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2523 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc deleted file mode 100644 index 6ef279082495ea01a8d5a9becf811249d27d6754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3561 zcma)8TW=f372X@kB}FNU<2X&z0@I6|u&_zT0fIm<0$*Df2$Vol`kSwA|g! z%*qn0_96B^$a4Yf(SK=Q^VGjkpg_MfOD-KLExH8Ho}J5?GiScHrR>K?j(bc8R0SB?mz_tHP~@!b+_e79eEhk@|+ok52O zp5ycwp5lBumzmK+9rG-c$~OM}%G0y02eU-8G&xdSowHb_rfKGhJb#fZp_!R+ zV`mFl$V{+2Lz852o*8*&hU~G7d5P)y1nuxJF&{(Bi(KpED3xSCm1ouhnPSJKHtgt} zl{(3$wew}l6_aO$l9&Vg7%vsJ3U9HLojTs5J$^+U<6#|-=j1DAX`Y`j*d?dNPi0!n zl6n}eJe7v=j3q*Ha&VTvpjNoM^auW~0#+N{iSy!ICDWPNVNX^nyMOQA=XdYlyZ;$E zP78grJT_(|pWk6xO7`g6gXdrG?GLTxoivGMrsWQMy#KWB|LRXqp6%{GW0PDlAq`Jb zJ?#Ax;Bj_il5amQJ|5z)w;`l+=mKD#a1VV8AHV88%f#1{1H^xEXxH20363C{FndBc z33M@RPDvimfC`R-Bfqip8e&EzXhtl61%QFgxrt|NQf9Hi3Dld|9RyVvMH!#VD5`o< zG|xqulHQM^zmz;(_H?31?-kEJom=;RAM(y`(N4*qVD z3q3lO+35(79u?+0KfO27iIH~;9-k0wM@3SMA`BC`!l0TfFk-nf#7Tii&P|FG z@iBBl*S1^>sE^)023Gc+gvdWZTM4;y@2;xGnx_*PwK@gH*xi7G68_eE>{Zti6~ez>l8gWh&Saa)^zD zxH@r?@~NhoLQZ&@8cJPP_ie{C6Yb7+2i+`VEDS7}#$0+;;Qp zxr^=PK@V3$V~YRkA-xGbY6n7jOn>*J1(>*t;rKw6a!hn3PA<{haFyELqVaIxsVx{$ zWa*8o-Xp!?S?#hfbNwmWH7(os78@)7&>mCU>LHz&Vo~uB3c04*#(n902V~&OJ9X9j z#(y2yuhu0naqL~V4`?LbA3Cqw&^q{smsHE##rMrwJt~UyoQ;>j9yg_;R0=hY;dBzp zE;bt}X-btfQ)$z64$6;?WsJJ=$|-SMyaco`c`#((BFot-gDl$2r3%1jl8ZWR z5iSQ^^#OKglYzPct@4ztI!gxC$Nnx2pdxR>`^K}8tvXBZuZFk<@WdydW4NX{?RMMk zxi{Tg?qYKlY&+swxQU21+;oT+&TA0y(iLv$B6!|H)G_0$Z16v0W*2C-4frGoDkW~I zhwNIo*3sAJUHzQI73_cr+B`;w1g^ zqbS5z_tN{DcY$nFI_me7Z!Wyoy-Qe*HlX#b)`hldwYKmPwt)Ww9BTqW{#qv4OhomS z&@@d@Hkz?qGuX;)ib ziU@2;CXyJFaqX!Yy@XH=XenxAc1bL-vevAwO|Hv$+W~147Y$uJ!ckGTR zqy5+Eb~ud~kB6ApB*iiE3|->vzH9o~n_7JXBKM0t!BtKnYa?{_#??ga1*|Upz5}C( zTw|_rpHkI|*>6Ga4+n#-D;!imBlvwt!scB|K+3Oc7FI3mxY|T(<->HO<7!yBLt@vjv8=j9;tIP$+(0858IgCCez&}J`B-&c^QB=K*`ykMjPhZ*;~e`F z|CU3^V|USea9gw6Vsu-4iMv`iieex@N0FkvtgFUPdxl}MP?$rWQBLzv;sX5I|6Y5z z8bq6{(jGLe M7&zhfwtu7ZALk5$&;S4c diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc deleted file mode 100644 index 99ab4326319d187bdc6ea9564d4ed226c2ebc507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7124 zcmbtZ&2t>bb)TM(o!Qw1u=pSdO0YGiC5!8j3rcci3Zht&Nl=o_k6553WkS_zxII`5 zIJ>jxnFWc>tdkN@CCXJ!RVulp991n`zUbs@Qso@ttN(%29Fr5zzA>&Szt^*0pee;t z7MQo)uY0;*_j~X6UiU^bGq!@yA$w=*Kc7;R|DwwDM@Qv#Jn=RNS6qcNu7=EI_|`(T zrMVg-o*wEg!!=~t2n#LKHD$RFTCJj6MA>w0Zn-61bj#d!XWmqJiI)!*UiQrc&7I{l zeD+Xr=eWA5ROdXMDT?jj)7fvf{B{!8;?8!^zVF{pB>Sg-^syy>Q}%Mu&2Ps+)OM1{ zY5Hwnc!}?L-6U#xNzib3)acT%sGv`@<%IryU&LqS7+aA*uLO0+YjbBS2&r7lCs=Pp zoqZ8Bx07|}@~G&%c>es$=UzPj;!Dn*eJ9!Woxd20?Iga}I_t!~@4WGoTW{TbXR{{f zSPz2+B=pyvA8cO9+poQSdE>_BhJ)!H?k8RlV$O%ycI8HuWkx&VevE?kZs6a$7Q_k4 z#VdjE8%eO|qq5TWq(G=e%w20*J@5H;@!|+Uw591Z5t2%d+$?2 zBlO~U$fq4&-`tKw;)*EgJGze646xWuLLdvAQLk?Ga( z5YInxh#L?qU&E+lgSKe;qoVRUp77}0_?8H zO>W`a=0$GfyOdieY&Eyb89oQQtYoE;Vy{GvURw(LhQmi%AZu$xVF;Z#UKkFoYHear zYeQp_hBdNFISSdP)Wl@8SegQ?sg>Kz)rW8jMG$Ea8GQ^C$WJfhiGKryOz%WYS6UCgxDPqHFL&uu&_j)sY|xe->>hXO5*8B>x~Cd?czvXwFC zF);jyicGP~U_QLtKI7s|+9j|fM zYx?n8C+Muz(Tzs}opQup8zXkDv!7|A+up#8F->c+S!N%5EY)HQlC#7LtT#91W;MKd z%-+iwfua`eR(uJ-0bmGRL($^Cm_6eKj1#TkpSU*=` zjj!BR`$oTzs%e22PbmkiZ>Hu>0gri7>01xjz)JPJ4ZPxk%I$%jT1RB*h+s!5zJU=( zYG;Gb$+iNooKlV$-huD^LgDkN@eAcsjW7IjZt34_DtzIWtY7??Z85&cmkzD8cm*?m zqI|4?bAm4)TA!#ND<7*{DnH3r4z0eOYLLS|z_{=ulpm=46n~08%~ucPsMGBa$jesx zrMzES;@>!>fPPcbXMhI|YTuHwo&HqI-{1Y&^a%XhSfh5t;E&Jt{^iYa0Cf`YPB-*~ zGjcqNofD)R#z+UBTL^-H!fvaLC@Opz6s04`z;agB$5A?Vwh?JVpXcE-h;!tWz(|9g zK}bA(BWnAntNEL7buaew`0P1h(7sF1OMy3^Ln3KS0?B9a^J^RLZ@jY!kFRV6ZJs-F zUG`~^2aY~eCb!$f6C)c^QYK0qFbXBADFf9$H8ufb*cSc9BlclWbuRX_OCQ#yGgVdi z7{XJgbwwySIr$bw%1Sv{)Jax~SaAVFht2D(_sX=jk6e8SH)DvaT@0g!7si)r(<4pC z0V>lHr1%vSQg{Qjjc1@7kBlWD4vF|=oZ+|yq^+)V>rjtq^(hM1^Rdw+^mF$UCWad!MnUO2& z@zv5EF5-z#gEX<;4`x0=^pjqMbsxfe$*&IB->bWnSE|QwgeE3+%MqN>2<1LY*#qU2 zBGd#1K&8?9a;LC)8o~sWt=7&1)}nh@WFa^8d@H5C?TaCDG(z@E35J&Y=qSC*Uv(cx zgFyYGB1zEl?pK+(h>=k<;FX~-E}rl_fU#AJjwi34|1mn4eqnw$-^6m6uL-ojOx zb~_$nOz1n<*hkE%>Y3IHI$6Q%P?&?=?sQ|svYjYsqs<&bjQ9pb$yk`N2KHk%=fZ>9 z&15^C(n|53K-{Wh?0d8TiX^&9KDfXts;&0E|J62WJle568u_8Lt7S|<@#zqIM7G#h z9sp4Oj=WLpJ^dbuGhTA+BX{=_fE@(}K$$;DPx zX&T~(=$WtHq0-nk4pEa9xuo=d{B@QLN$E%xi3uuA>@ybuMv7jL8_g zV9N~HKr0q=#G8|dS087hVgp=phRB=LZVJB>ddOMJVwIRQl^jiafT&WRqLg1oBAt7Q z=N6@a2zaqvrduBR2X%?XO&a1gA`VDZ%N6zmVo0q?t09|vA5Z)`NZBaEWpve2S5ZP) zon@=|t}y!#mT5DU6+SO(v!$}J1g?dIF8`Zl)*s3S-0ayuMZw1$U>4I-&UYD4{7ZP) zbj}A1QUm0Ac=QB;n$9^~<2rIYL*{s5nB&QetZyO@G`RxTF`Dc^?^`&H7=uD;?cn6X zl*CG{)HqQ4#k9Cnj9*P`UPz5)_%1RpaQb#qO6{b4po+IrdoV-i9hslare;$?J~)>e z+!|E!obiZt-s8CWko6Mfg@bvHQziP%^I1NJys@H*Fnq2w()XFblOw)xy5KjAF;e; zu!tSQ?1QBvWpIKoVns74R+22IW;(-{l9TDo0f1&pTh24kGO)f#Su^^qq=lTj`|rE| zz)xVMKz!iaa(F zx25#XeTgMaV^f~dh#KDNedj$-wBe_8jewgVq>=3?K?b@N`E%NW;^_y3Ia&6-BEbxRwhE}K$TMgG zuvNeb)yB69o`VOV_TN?^=UPnt+f}uUzE2I`Qa`s5&cDPMkC_G`*%-}!i^}6@_CyqW z8@{aJ?nI}IzHb1<42fczM6tpU#R_8-E2J7wj83z~zJ`=$Uo(I`)S=V(dm$J9h>-3pvBY z;zdN&4v}3Vf=Eon853#O3#k4p9(l_`fqB}d$({>r1%E2D{|EN^%>S{a$FxUTzlrBE z4Nn3*ZnKEH>Jf6>51t>|sj{OD^u)kjioS#Bvx7SmL{J^pXuui`X^m%61J;O}hQ0wi zoJnTUK8O24V-#t2%UmDZm@&37^Xl8z$iQ;-N(Ihmt4~&7ejz6)@kh*)GnkLF}s49un(;}+B!xNLjNKX~E zJVcxoXsNgQWX_qLIi#<=10-BRAY9(VkPIE@*^5|Mc#v;aZNnKDI(s&buV zG?YZgD3nqLZI=JO6>AJOfpj=%ZY%WUDJqD5qn w$X^qoJ&x!4Fqsf@g@)#L1@&P@$70w zDilZV`~lo@6h|nkd;kI=1%!|Ado7JUHhV)V{nYQH zUq5xfeyRmJ}8a>9}=GdJ}hd$ zN5rFV>uVfi92W-Y6T$>OCJMmEMG^Q}Q3gICCV+J@34Bsa1D_K20iPDLz?0%Aa6!xi z7sZ3XCGimO8Syailz0SVn7-xn+xlAJc}<)aXYOd?jBnpI){3CdigTdP`9*R5hsIh- zTv*lWpBwzLRKwNVZgu=_94$ogcHk@4n+L9v;$3m0wpUX+wXkv1_u_?2uP580f4x)w9F0E~yrRI(BmfuaQt2ZvMT)q7ARp-WQ zFI`(ri*7e+Hv-qYm0C;cN(;o2zDTX}P2yxaE$O2>bcmUjNN3v*f^dt}&Nuy~)Xq%x z{mjz&W?Cjr$8BM{+{_x7O3mALb7Lb;OS;>s<)5WHom8gOB;~%HRaZK(FHjyfGY`k~ z_xvPLI<>Dq^0tW!lIp&s5sZ9pHq+^S{+{R50iv-kBmc=*Ha}bI?HFH9jAnCCIDZ{PqU}8^3E)B|x?Db_Y@CQXjAQ*z&L_i@#vo_XEk+#yL zu`(~RaWZ4sB;>}_Aenc~zPBE=-Q0BCmmB@C9r?Kh^=%#n()h(dT*4Dw1o+yTj%2|o zS=`aq3`!Arb4n6;o0KN-wkT2HU7%Efw=E{HwW?`xl{VAY5VRhLwb4~Uqk!i*Jkf{9 zN3nKSPqai&SYqt(A&=Qr?e)sgOw5GeG&XfPCv<8h=0$CzB$zPnXhW;5acx*gxWh?? z9v=+t#J+3pXlVah^)75`a%rQU6z*Dyd9xt29X2eIHqk=gVWd4QB}I81wAR<;S6Z6j z@9D#0_oy(F68e8LF=M;0<6VgDdE`!^eV@&1(6Ex?K9v-c0{M5?I()e^EGK1Q-ePid zBSgzW>pP-=-UWOQacppYAc|w05;#9rI^|ra0?s>1XT+HR=ch`in(Iu0^9!Xj;%K5u z-ij$mewA1ltD5O_O~l(S?prw~ipR1Wf{3N2zU%+N)Z32G$DD{=6vANOzgA zcl79*Y87{M`8;{>f+os|HmBXzzo*wLE0SE_CHO=?zH1Rd&hOG!$j1PwvFXZ`dv4%e zAIxsau-mG6VSo&dEZ%YB+GDbAWa(D1qtpnHhf7iH$~f9;$Lq-LJoev+Qv(X`Yw{GV ze&Q{zhaG>h)o*(;^!zw(FW$NkEk>Snd+l!PWG@ua;-=r-TnyTc#ol(j9(GSJJhQYI zA&Z^tA#EXRM~l67Z_$C82ql!Vy0@rm+CpzTEh~>QKd)fa=orA(xjv;=aC1B-boQyu zxPC-YgU9!_`GVtg{Vm5?xEO@^_~_Y%F=O?jnj1BFV?gtDFF{)DhVAaUFWYg-8(|>i zOYk8N_(JtknL7@>! zC@=5Q2`M#Y*m1k^32O5Q**@i+up92$VAP9PlI@&gUHB!dW zic)*jR6&u!Y3g+qKv_HbHegD(^%8FOmd#3&B~}5=^r}9C^($d5@n*I@r?{kfuV)H! zdd6i{#(vNK%AXiaua1)YXw^OX%F#uWONm}3`47-Yw42y_NSxTaNZiJdC#Wl+k>+C^ zdwmvr*UV`K`r*VJ8ZnZ-;xXF6Lo2bA?o-gkE><+@o=q&24I}57y$eE%$-Xg)1IFer=pq*4Nr>5Eu@*J@)5G(`ILZhYlsg(tz{33}i5nLv@I?iPpbSKWq-!Jx~y6ds8^6 z@S)uoBY_J)Oihe-tisNkb-5`^wOs76pHpm)Hm-Gpm1p5Q4mdcGMAfUY#RROkUGy97D z8QZXp3YR1!69+E(-b;9*rvdxtV4Q&&&c6oEz8vRX6K7s)&2DRJILzUf(neM&rly+9 zLE(7*-;gytFD;A;S~-^3s9AAmINK^u@xHBi1=k_wrVrGm+I z{41#cg`6=>70>DRI}I#xrgLnZ^*QSl&MPq diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc deleted file mode 100644 index 1939b47665e8782162562cecbb37e13dccf52c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4674 zcmai1>2nmv6`$#u?Va6~ggA@D+NH=d8pzDo*0$*S#x&({Se zzoQj(cjpcKo-?n`9^7IWFRPFHe|`9P5-oX+83q|8c&V9sTXv8 zX}y5dvL(7ey9Bt(-DHvdoKf098REc=fgvo)K5q(J(+oN2bIO5cDG%yU0W?Qliq zZPmDwwrSi&4{CI2dmC%JX@~CZp`9A{(k_jg$<^r4ZjJkBkH-D9w~g3qU#IsF?eFvs z&_kWxZaVP1`GV4_KnF2as2!w!U>6-ywAN3DH6EfP8V}P^jYp`c@hA;wEYhGxPRBG3 z(2&MKI76B>`v!y1R^q{id)2(X(@b+qWNouEh6NbO-7)_9U0)A$ITZe#5fJ+6C? z(iz}7dP33KFg*$Ep%F!EkI^Wwm&O#Wou+Y(kJE(4Gjvwt6Le1F5KU@)lFlnV#Cm#4 ztgnsG1<+Bt2%4o!pkp)zI!>2CC+G_3S$YfTIl2luNzBknXKucf zckyd3RvRKrlVTdpi%<`}bJZ`e$40#*@LkR0ri)FHxL!zZIw#yDMbC@zp#&twHvh06 zH5cQcI+qT+W6NE4XmIf4(V@Yi<8Eb9FTT>*-A#qpIN~NkxFb)`OkTb^UDVqS*8?9y z#jra%J>H(bcz$eRYI?$*jbfKX>IHS|>E9pXs*m7qhxsHr!YG*tbw*~%B1RTM%_f^N zKm;CTft(!50TE_Y06Nq~-M}36&^lnAOcAQ4GUH84<{e{+-8D_nnz=llI2dPl4UA%g7tN`DOLDK-6d_68^kQ6%%*J9t z#EHO^orwCZv?{GxX@?Ps7mYZFyj(m}(!NB~fWFYZluNj2Zqs@qt zfdvsR4Ag_lKyxvji^Ai@V}k=pkcy*C&!6|IA{l4~&4Du5D2l<;sSfdc08iIQ}_DmcQ$LujTnC$hNeXDf7$GJ*xuXI> zSP@q)?*UWN1JY}D!4_Tk<8Y~)n^)PRvpY<9f3&IoiaEC7gK%|mhFFu6)rVS+STpXz z063gIB{Mo`rCF3lzbWln6ofCDZBL`_zSG}tA zT3Yt$w&>j$T5AgUuga0-a#1bPe!13v+w-gZK=Cc_6z^4H)rgk8?1FYfG@`Y;!3Rl* zW?SNrTCyKxjqly#=r5@F3cUty967Jth^SRpeaLx7%d59%^qt2AB~4|8c#|T^!DDr| z@jgWkD00upx~Jk-`;kfm$p#Py*~DQ^&aoX1YIWIq{tZW0ht;90B1pOQg1TYz=DT#Y zxGK_C9J(`cOSr+Td+l1PLiO4;H$b^^J6Xkz)J%lZ6<@p7saE1fkfez&DHY_x>nLZ5 z>qm{Imj;ypNpG>}wi2-{(G5bkBft%#>+Mq2xdQ}_&JP*QaNo&w(&`P8vd*XFjy6v# z3#d~$JU$9o${+~pu!_T^5x%rqy0#Aww`;h19-KLIro#ul+o~TtFs&CB z$D>xIE)Mi-v5HwoS@9xDO6=8(tGHHp{;R;%3#VF*iirQG-1hXF3tYRneIUI}f`^BP zqQ&eH@9*l%HiG)Ze5o1y{a&)Kb2E$GuF|*O9?Zt zOG_j^NE}P^hBW6ToA=QOEktXg#b~KC@fmt(70D_X4#5^iXkZNkG=VlN*=$2HJPlY_ zM^kHVprvRFk}Y7(LKO}C3k_+4rB3mn(u5_Doj^9UVT6eUa+4u6$W7+ZuqJ`51nMNm z&=P54s|J=dux$e@4X^}Q+K8kH&7$klY?fFP8$qTI1|JLjrnLMfR`?L&LkRS#Vy`Op zsX}%Yd{qdlLP8bitR`qJv~;Tfg3KaoMm~z3`mgccZAp7Z+(>2q**V-!g4dIfd?N8Z zJPR@taU7v~URL=rqV7o*-mIk-u4>F+rBIdSKw}G3)ve4yiad>Hudnt@GGCLdGkj^M_Z5sIV(jJ@h zVzqlcXsGNVt?|g0yq#cVc2dLw_n_opvKiH7=BlWQ8?Yl1nA&K1u~EUWHLA{XwjOz@ zv?jrjRV%6xXkU!Ns3ZMIU$VWCD7hznN=SXWn{cV*0*#U#XYUIo&S8XH@x5o&mLu-U2_&Esl2+{@6;d z{cYmgRx^&}d2}*A|tc%zVFP4yuz$e7lZ+Nx~hnynFLum_e|e2bMN%MGjE%I+sxai-#+t>>37WBH+|pC zJEz|{bN}@HGv71)Ju~l`e%H*qr{6vEz0==2^L^9bH}n0|-#_yM(?2ltgVR4a^Fz}= zH1osLKRojz(?2rvqtib+^JCLLHuK}tKR)xG>G#b1#Pmh>VyCA+IQya52WCDpBl%AU-ZlN<*$*dvAvrbuk^gmS z=EL_+-8<#D=hW1N`#v^x>B?W8IyEK!|2NR=M`k`e`;mk+^I-Cn>-2l3rXQUB$no_< z$x|~QK8|^4_M5t8ReD-6GQ`4WA{XpUuXFriVHT}uiUz+`dk@8D-Q~o@7+{a%&?&Up!e|_A`PtBt3sO#5eKX}~AAD;f? z%&#OqJ^Q}d56*t_JyVWTXyvbCG(I)+tFxb+{q;vq|LBy+|L2oiC8pmy``*NF%>3eU z9U}Bg$03pbQ?u{AmG`*xug!koPk-}~Q+H!#F-E7RUOm1uAO76b$EJd(E`9LTV=Q6? zJ@DzXkDQvCy8jIRp7_$EkI!DXeCfd}7tUY0Ja_)WqsP(z;amRhKaT(0ah6MGE|>9e`NIq6&t06EJ#+4hXXnnIyF5F0E9K0&*}2PS&tEum?(F5+M=#EO>A~Z|e|Twj z=FB4(=gvHS_VT$e;#Oyn<)jMf>|dUpn?3W`*$ao;W{;n!fO*dgQ2x!=8&{(JxGcmBm^ zKKCz z2bf%hS7o+@#B6D1%fhQ!1Jg1M$ub8=ihXpXIQ&P^We92ubF%cD{LgJ3*1x(geRbpcMd^9p^T8M9r56G(l%yA`FLb0A z%oo+KE&a`+^f$h*H>IzeFAt=bha^#zNTNm(CP~I5l2l1jBgv9PHZ`)@A)8}~q?Sq6 zNwR*4WS2-*frp3!$u>x~g^Lc!_Tddk&LxqYo8%VYc}Xq+FGO-1@S-FaC%H628Im(4 zl9x%|N%D&bEs;EG%rBFCf#e$`-zNDU$)m#jfaFJ{;E+hcO$w;9;3b76ctKKFhPOcq zDk*3PWk{hXk)lkBPEuSV#br_~kYa-r+oXt!iUU$|laiN|P`VT#CETy1krJ9y%8*hM zo=(a#DLY9SeJn4LGIErcNx4AE4N`8CGHNLgNCo|?xJdu=;75%IFNmU`$5JDTI8YNYgR1>(^B-ISO9I0Zcs})kkEvh3@Lw9Q~ zQd=N3R9_2_8k$lIks9t&%aGato=NI{Qdda5Kn>10bIUp?;X)TZz%C%NWYaO0SS{iAgTq{Fbb<)D~ZJDI) zByB%wE2QHhodwbfN~E(wI>^?^kghC|u8nk^q>CE5VbX1q?vQjbak?hyc_h+XAUzC4 zZ;ABQNN=6=FaW&_>7iY{2I+MqqRT`_*Yq(lFbDfG={ratquqCt{sQTvaNkGzXlH+g z^fyR9LHcRZ&ys!~Q3cX3lYXD{amT(%1}-x2kO49e0%Q<@7bOGSabS|sJQ-CaGOCmD z1{sft=_e+J$~39NO&#+Rb@-@b30{CMEYJmn77$ve3t_qt$Aw0{3)G8fZ-9Cm)Z0a< zN4+Lpw9!SkL>E1Dah>`U>I+HKw@&?0iTY#IKZ0k{rHDkAG#WsuK#vB-@Jt#}B^uFa z)R1V@q%l8@tw}Vd(O3_jN!3+}sv1=*RBceTjSG`%Xo{v$tq8A1wLUzPCIU2p`V$&W zqN=1xH%k)TtkD$imNIEtqv^6l(>0nN!ZT^cCee(8W~%UNG}D1+(k!xMYc%JTXf8l= zXnjtl`ItoWDlKTVfPNIlw20(lfEIDPqDG6Tp;)6uQ=%o4R(ukz1ZV|0D<-X>!Lk_T^X#?dNKH6N6Xfr^Y19(H)!l<_bw1r-@Oxo+yA%c~S!81qqp zjyC8hLPs$=iqjFsZ)DPOhng;GVwlV|YR0HpN2ozfM4QZ(VYVig))un|m|c~aU1JVe zVvYcFG~k)c?UR^0z=Ao61x==4aaJ@|X-llqVR&g-b)D4~Sj}Yh8f$2*g_M@g+F91l zORQaH?JB$)>)@(WWgS%788f^GtgEqZj&*CS+hbjm^*pQ>V7+zL)0h#Em|?Phgbh&L zz+@(FWY(BDglA4{^2EL_P3#*Jrz}mJ&WW==aR(;ufi!WO6Hi*2cxsb*ZL(k|s~N zC7$y0R0N*JGpiEM#Cc`}&*Zr!o`zbrBzlvTAn8sx4a`S+Y6-s~eQ8u447( zC97AndSiH|rK1{Mvy2tX$XP~NvW%K#bgaQhvIb*oC|hF_d#=qgQOaDfOw?g2mWkV$ zVartEX_lF@%o;+vWuj8kJPOJ_P!2QzjgNx1B?(Rd6c+*Ha10P|AmDT$;B0R_A&0$wC7DhMo!z)%E`U_!BH#gqL;$hNqB+Z`V!0>+wWHw5DgrC(AW`WG@~q|&SVhvBsC}&psw1$DBrHR4 z5Ku*hD(X>1W(_e3Hv$RVE3p7VuM&ocz<4A^B7i|jhK_=p8ZI`oAW>%uHKbaguDIwQ z1=C^}(r9|RF9Il(krBw?23Z|}Eb7Yz5y&Y=!MqdX!9{)%vNSFewx-s$MK1uqXoJ9++v0&k6G5!iT&*Ohmy%c{2R1pE(%`aMsX{sm@5V9zkEsBDO zm3ahKP|XU4N?Aip2oFjL^^TNvOlbv^QwfWkhmj{N@`N>zs5p$I2<+4%(VO*CnjLU0i z_A-)Jf;H)A70Ih%%$pE;9m=C*D31VMkWc~jg$flA=3%H5098ex2Ew?9@TP<+=wGOU zq)G&|3Bn+UD#N2t75xn9$kN9khcMGaBRrbW2zf`CdZF|-3}v)|H6@A{E(-PmP5^`sN1IU)rd15ZRR>zC z;{8yac*|91{z&!U)lu;ls0(Pjij`Dd#2Tz(eyjd<1pJ8cV;oeBjH;|1smm$|EmfD3 zAUtYyISmr^Eu+5W3aAen9;qwNBX!jc!b+^J`ameZit?+-u!{QDTp*0Ly0!pPj?_pN z7m?hNs`(Jm{6}h01d0(*0)(Mg(T}+70pUr<bDug!&ECZ;U`_NFTNJvFOM9$lXta ziXd_0K@EgC5yu#4GTu^6t{rK1Y*(6H17QYh_WF_LkU>EZ9=C?atvUS&I0HwTOBBNV z(cE|gHBaV9n@2~qc_hu_4%$32FJS&?3y4|3>aH!I;srbw4O2pkqGMVVF;P)Gih81b z5kL}HZ#W2OcrF?qgOX15P)M|c@OZ5|4Rm2l`_9shmX|Jf0hwI>gdW3BK4JoEWJ`QKmSTyex+`cUO}Oc z1Kd0-efetVDNTB+`;;y{Wp3HF99ym}&(^}$;+B6au%&FRY^`mrZ-uv_Tk4j!mE1~g zWwvr#g{{(7WvjN;*lKNcwtCW*zSZ9vZjHC)ZTq%!+r2$6Z7*yuZu_?b+sgLJ_S*LP zc6d9wt!``E$?ep3W;?fC*e-2Xwrkss?bdc@ySLrn9&V4N9eKyG(vG?7-d))B?Jn&Gcb9ipcSE}y zyOG_Pw5#rFyUE?uZe};PTi7k_R(5OBZhg14+u1dC2fL$PbI-Qt*mLc9_7?UQ_xyW- zJ!NlYZ*6aVFT5AsQ}?vJ)GD31L@h(bHV4z(zT^)LFt-uZB4qiel2`0dQH8iT}xg| zUCUg{T`OEGU8`KHN!MD}I@k1T1L@lEKh>q{+V$l1)b-5u-1Wls()G&q+V#fu*7eTy z-gV>p;QHvgxo_KF-1qMX_LcpW{k8q|{qTNtU)|UCll!Ut%zkdauwUA*?AP`i`>p-X zesAB{AMB6z%>(;^^T2&Df8agv9V|%)fdl1W)dy zDhIWL#zE_#bI?054h9FK1M|>!=s0v8dJY#37Z3f1fkWkR<#6qA{V;qOJyZ|1!{lM= zFmsqYEF6{&D~GkOCZy-*sUwJkdY?LQ)O46MfHP)bM4K{BmGiU>uU(=YoPj$%+QEsq z8=<<5>JF;AsP3Wq0@W9(?x%Wy>I&6YsJ=$^b*hJ{9;LcUb&cvts;8))p?Z$$1*(^* zUZHx8>J6&5sNSJ^kLm{12UH(X-K2(%8V+i>sNtc;0yP$?;ipD`8VWU5sIf+kb!vpE z5v7Jo4UHN}YNV)0_~S*ze4*p+HcT)i}pLT-=lql z_6M{-qJ5JNY;@qD0~Z~5=wN{k7U{rG2LU=z=wO8o*63iJ4#IR0r2~}?G&)GqL5dDC zbdaNi0v(j-ph5>VI%v>Aiw-(;(4zx`4hD2Eq66RpLk}I|VGY;lFaa+|hd87Udvt`S zG;+}q(njlagtSqPj*vDQ(J|7-9y&(ac%6cIpyM1JBW>KKV_+KN9vzRVX~${bNll;x zribF_M$Hw9<1{tbsfjXXj+#w)ZEB*7*<(&Gb1q5D8DP#8=BzPin>h{U#L3$^VlKDD zTno&##N19+uS={EXN@FlWDv@-MxHf_tWjo-25Yns)n<(@ya8+4Sku9pF4pw0<^pRj zvZkLk1FWgA<_c@BvF18!hFLSpnks8*teIrZ6l-Q!Gsl_*)-17Rg*9ue*1Z!tlJIC4;9=7qYgNI!_?BU@B9$w^OKMx0ZSmEIn9$w?&bsi4$ zaFmBt9@cm`$-^lg&hT)KhYLJh;^7L9*m%UjBQ75C@W=v>Eb@q-M*=*e@W={}tntV? zkA!(7%3~=W%kWr^#|k`F;;{;k)g&Hk@K}q-Iy~0nF@whjJT~GnldCqaI=JfMs)wr! zTwUaKa$qxfw?;O}8bywR!90$63J#(xI06M% zaFlIfD-X7sIAtK9;4~aEz^aA77^y+94{ERlJ`^V?RapgvL;(EaGR}nRaug&u++_na z0D&b|R~#U4geuNT>I%4cbrmtI;0Dyy9@tJWIqF*JNDT=FI0SY#1olE*Ujc!cP&Ygv za181ODh!MJg=^qZacEK_nIknSZX5-F8U@FuM!^$D!AGevG%hAG$IzyjXp_1G!YM#i z!33*+$V_$Nu)_4PcjW+xXA#x?T~8gH0hwl9Bp71 zXpCqZIA*6vJ38$G!vy?hYcQM1>_H%aG1kD_-Wah?jp?7 z97Ad17;|}zuK*!i8SxDt51Tv^lXyhsF@Rbz%)2^|&vOkKG=t{?JeTE#Ixndlrx{*q z^9piTG;371#&O9S<4ITW$U_wejzTL4h!`wUaFSOpybHpj;?@4nU{{uQ9e=(0LQs04 z_(Dy3q4{D$deMBzCcWf+sVcoxd#NGaT)DY+vnt)J-Rw&@hd0fy1;4f|eXaI4e(CF( zuQy)yN-q})STmAXBT0D44Uz=Q?1?P9-_WVRA{51Eim8klc{u zQAgfO@~9&pBze@4&yzgr$k$08x5>9i9>9OTOY)GHh7@9?5GMsB7a+Pp4MjgG zqK2YEim0KOCq>jytdkvpj>cAE~2s9akt_&yzZCUpGj7L>d_DMuarb+(wc# zWzt0crjIm{zZoP=6oO8{M``gLL$;_kZud!fOJQsCqoS5Cb|vsmpaj# z@LI$`q~RicME32Z?<9T5ar*P5?7)MsI_YCX`Wopc;iX7FL;5+=N4xta(ubI( zUnhOk)^CyihzwBSz)1!e?SV#yGQs9gMjkSPFl|&O<9UgUeH7;lDi^72QXBSi+Zwe& z$Y4{cElF(|gtF8Iaf7W+Z4g-4ZPdO*0g}^&dAb1M!h)YJpx8o)E^N>Rlw45h0=NM0 zJoO^k>!)5Md+XE-p1|9oUaS`0FkRiP@b)G}4k z3$;$;h>W+W7NZHoC+#%pgs0O@#BVz3rUzc0ZWbx9Q<~~fz*00Fry2AjQ=u6|X4*81 z$ZUybag|%3I4jb8h~^Uz)vQvy3AEgz5M0vABCR?kT1`;QR9dZ3NE~S`L+dC|Ptk@S zD`$WjB!ESY#vjZ*(!VfS;9f&r-QFKGB3kh~N%eoMNbgQh3 zv~HJmb$DZjnZ_0j~d5p;qoe%Ly&v;_(~9Kb&szia$}Ki z;A%tT8%22FSE?M(h)1!d2e{Vb+5iF&8&5!Xk#O+@gcb=e$BCXNHaQkeo^0_=yTmtJ zJk^9$q{mYOo`OUqHRfrr#M2p`#=f6%a{w(oGvryP#IsGF!&NTLb2)f5o`Z-ZH|BUE zJfG(Ucm+EzAZKBb7m%}1;{`A&g)T4jd0{N^VvQFY9E%z+c6rf&H{vCkm+ZV0#hw!5 zSmJo8$V*LLwn4Ju=H&%=OC0iQUJmgxlFM0M&cmzn8g5wIkzHDU(puf z4J=F~t5C53_F1K{RaULC2F4|CVUe`TU8}6a8(QVDg+0rv*sO{Jp3?#XXjL0l4O~up zWI+sUbs=hWT04K4;DEDeBj-Nvj!5yRpd#Cn1l;74+0kyOyD*N z;61?vL=A}{NOU5JLP=35iE8lH!+|IyC1O%d5KyOJ3MKKp;2?8aB&8u`z*`RoLW=BI z1Rz|2J`7C*g&^%q=18Q7>d9U6%NsJ9PJ?908TCgy;5Yr;&u_R z0}aQ49S)FiArMoXfVN$bF}Osm3mmbld!)EUiW?Um8v-6AdmtF_0JWdTO_X^+>GNQo zl=%|G79z$A(Svs$gfUjUeo#OJR1mOa#f!Un(IRCL!VVwUWW@)`icjS61wo=NAM*IX zpDMmO2>7GoYk>f)DL#PnK4{|jk=G9ykm64sDOiKxK>ncs+f@_*`O6{(qBUg&+^w>L z&aVLC4~f`N6`~3u|5%S6DPqDX8^{+%$0Fh)Qan>Iqb^3Hj$1cSOG9)CfVmmkUWYhA1PXBo5b&5orOHuA%&|}za)n9?0f^Z`P!@m) z0kQ%ykwPOUD0s9kD&5c;M;oH9jZ*U{Dq^C}I3xskqS3{{QB-s|+9-lVOk)UHfQV_% zgK)oSGkg>m#p5Y~ev5$a0AU`)bqxfBG_C_**8xN8IS|AJalHw`ix<~>AOkc2a%~3z zmNynaIJy{Eo#F-{cLP$cxUmdc1+9Z{Pa_Hf3=iR7+z>Z0a1#SJF)*}o1AsT=&~R`k zL)^*0oeYQ};>Hj(1|BZj+Q+@1`T_^lfysgcaJ?_U^?m_V5`n=Hpj`n5hmMM3CY56C zqmo#VN(mK|5MXc;gaNA75=S*L9JRc9TVfZgRRk)xoz8aY`eBS+um*8_R@B6dwF|x zJG8yA9odd;$F~#Po7?H_>~?;;xLw|^Zr8V)+wJY{wk~ZO+k@@Vj!oLJ?>Kkd(vD|m zLE2f|S(0{?ofTOb`m?AJL#RQw3FK@?38z^(oSusA?>twIy*gS zN8cIlI(I$0-d+E0U{~2)*-Ob(fZgw}nTih-0R(Bh_?cJ`ltMB%A zhr8oFdC$J*+;i{E?|JupdrN!4z2&{tz0lsqUSuz}7vD?lZSJM_vU~Zx;$C^Lx>w(8 z?)9a;!QM#P8$WG(+95sdetQ0C@6*1gm!7RZ+kCeBtofY#xq0b1?{mKAmZawb&neP# z$>&nibERv6Ys=EL)oUBqBG+Qq;@1+_Hm{|xWv}J06|a@ARj;+L^{yGxwf?n{^q*?i z6W2Gdr>|$P=dTy9m#(~3&hu6pZ^1gT9x4*O>++W^b-4E?=>__%v z`|yRYx}_lNuA16ew-9XJkL2cCn4gT({?LGWPt zVD%t$uyGJMh#kZa5(k?H>4WS+{-AhJKBykl51I$#U zJ@g$e9R?4V4_6OEhZ~2H!`NZ`Fmbqfm_E!N<`0X9<-_V>L;7ln+QG#-T-4#A4nM`- zOamQ?7n?TwvCs+E3GdmiF_sU!?sq?N@2P zPWw&TZ_|F4_I29t)Bce5$8;dmft?PV6yV5Uo({Zp;G=^jItbFiG99eaL5L1E=paG| zF*=CTL4po8=^#x9SvttmL6Hv1bWo*(Ivq6WpiKu|I?(B$PX|Lf7}FtEi(!Bcv04mO z3Y`WztkIzk&!i)yjr?>JrlTkwsdNMtE@T*CIYEZ;fI`cLnu`?bHPnn!6KQ6dnn*JT z%xPy%4|75Z%jsuM92cC+%(=##VT4rXOfzSeIrGd3-C1XaIdRr-wwQAa&txtab2}I| z1Xi!IMuIgq0rI3-BgYyA)+jN^X=2^4Inq}6kvSyt%o2=Pp%`R)|tl4MH zA#09VOJ*%QYdKlV&06!UkhPXsYn8P^thK>f5!Q;aR-CmGthLEnCDy92 zR+EQi9=7walZV|rJkP^k9tH@t#KS=zUgqId9uD#F1`kJgIL5JnFjTwUhsDpx~X-Qa43 zt1+&|xtieWCRfv3&2lx*)go8RT&;4|;Oc;@I8>=)9+!FC&f`uVck}onkNbH%$m7dA z9^&y09*^*NjK||Vp5XCK9#8XlmdEoPs3MP7IgU0w-sbTxkL%VjDOp1t1OzJ*41ytD z#?BX9S%H#{h-reG0uBbp1nP>I5cX(QWLAS=5O!l#@q=*aP?v3>7)YS0(4kV7H$m8c z)#WTm=oT!OK>|o!?f`xT&!MgqfV>Kna~0zMRU!Ug^@6}JsH=cYR|Rakib_|ZJfW@v z%3X!plDawuOe#GQ?SAf}qk5e}Q%5Dfy zHVou7jLxbNz^f6_{-_KR;BFKe2{G`FDwqRRXmY7)6`-tWZX8+-8btEqgb`0Cukd@O zrbyaB(gTu)K5a%O86Y$nAISh`$^=N(4)D)GaOxmAndE>9<>pBa3c5KT$*q&TgXED^ zfG)O!6cH-Pq_jXv$WQ_zhr(qCDUV4-CKZ&e%##X|Dn3$KCskyxnxqEIsb(iNH@taL z^TP9y+B$)ZnbaMm0k7dCO;pu%kmi^GQYS4ZX`#B-JZT|+Ymv0p;DtyVx!MlWM$H|W zbWmkyo^+6<<0GAQ(nWIDL3#iRdkO(EL3$eL0ki70$Pi_QP#HEUG%u)JrgDSII+dZe zDi5g*GA7$PwQa&nQ(F#Rh2o?`?M`Y3Y-9IPdw|-3rr2XN-lcJ9t7 z*LfbecfQRFeqI>x0+5RmhYk@h)p)7HYpA-G<~8Vm)^fa7fLG+TGERs%p~!X|5CviO zDt5e~b{v!yJ5DrCfDVu&?-VWb)yhtoU%U@{6OTA15%sIKTOEToSsJir)`f2jPWL{3#sq#0fBn z1FV8qLs4uXob1GMqAa70kisa-cy*O!Xl|__HB`ez2)c10yxB?!I$a^8Y>50D$iE@- zZVW+)ji6rP~?V31>cEy3Oy95#^+U_a{igyFigFzSPDI8KlBP=m4v3R+#c)0+EsIKOfpT;p@ ze_q;Opv5tBKttM*U=D1Z4s0Y?R>RFJK5+m4QI?*q?K`A>&-04({OEb}1)KDO{ROA= zg6jp(i$Uqd$V-dTOWI5In<43D?4~B&OyA5&H}f}((#^`(l&{sLzwv%OD}BBGa!Go* z_40@$U=NW9lLVCS6Dg9&z{`}fkm_epw4ptMdh^CaUZ z8JI<6)=6d)UW#OGBs(NIq~@F?=O;Nt=Tam$CV9l=?Ib@W1%wKAQou4%m?s6SIt4!| zC%Sb~e&)!9((sc8R;NaYfJY&X6lvN>b4Z#d zX}L+uhjq(OT1aW72u|#zZ6j@%Mzn{dgS&N{q~j+YBzIDz=OsPB{=HSw3lY6RaB3xb zpBQMiu|)a}(nmz!AbphY56J)+`@m1Yw~=9(3_E1lBSV7#oFk(#fxw-Non(xLjy+@y zLzwY88RJ=uhs1PK8S9T+r!v+IxkqJaRLFfQV-b?a)COkG7N*dArnUsN0R^|UsohTP zfSv7bYWGvSN`aqHKkOO+s>fDo4E4m?RK=CLLRDO;EgHwt6z|YDOdsMSs=28KQvq#- zYAQ`E!nVOrH&NrJn{E~;fH0cgq-m_Y={!w0X&OyR4`_ZJ%jX8oM`Z86$^be zLm}&-)dGdh4y{&bElX>Ns1;}p7mx_l8nh14V;zevs;UD=$6=+lOj|HdXeB6~DsAOy zt3q3C+5*qpGAJ-|+JlE}rDrlgWXus`jwEwH>A+EEts3O`4c37L0f6?NIf3EWM6OKi zVF2gg{c1dnB{@9ekvN2t8js?ojW&3~&J%8)Smb!Mcp}SFK%G-A4q%a|8a!q4G#27? zg=c_#XA}-Fk!S5Z+v1Sz@vOnKL!Qgy@OZEifdha{#yTvE z<=2M&!X~x|J7Vl&)39TewF6^O>;Ti8Vo7&mKM|UuiW8Wd6APl^#8T?Q4&oNcZj^MR zZHgO&wu|>=y3$#m>MPORWB0xQ#sKJLCd}7)6Vc7@r ztoWg6sQ9t=`^B!{M-4&I*dTT#MeI`wb|nQZSK`=KM5C9n0YKkWSr%PcK@BS+8)W`U zNbGhY>~taUeo6=+Wk}>%N1kj) zLp%i~+YHVU@r?JI3Cvk2Y}T$+V9@(f=~rJ$NG}y`)}@=q%d+(H0?A~t71l@&Uam$8 z@Cr3jf>){$nBI^|jez?iwHj%_Yt%>!UaLkr@H#cpgV(DOBZ$2tOa|}<*dr3yDhkww zHOjU?p*}(FVX7stC>Lk~SBWsqK=mpETQOYa!W6OvS_ChFt74c|;8nsDMiaDZ&<4^P z3$%gAMwoA4DcUG-bd#sT9H$SSUf`&O=fWIX1UzT(0SUc*(*u%JO^4Z}x4p`9IE zF5tz-BMb`ld05ZF0axTejN(9yQ@oc>OehaVQSo5DEsCT?Bnf$rq98^b)|3?l!Xgkx zAS&M3DB$jx$Q(mvA&5~@;Iq(ZILHH;7aRm2_k>dbxQ#%lfBO z;+gQ3&w|OKQOHuGb>_k{?zS^bDdwJ^$exJ|!KYl9VAYz)eICWS48`N13vCIy+E^HE zATMN5c&UPcwWDQmR$W%ASMI~-1FklutF5cX)uD8COmf)la|Ws4_)_T+j2fvm2^3;T zV@x{O^E+|UL1afK!y+DQi~4c=@I!e9k4H0TF2ZbeW`jkV&0u!mD0XPVVLNhZ%)P)A zGeGn}rv0enBQXPa*BOEOL zn|M2en;4-KUbrA6CBbwEfpqjJn8jic%wku`iNS;7bTEhYBnUH(pb$d@3lLhtgb@yG zgo=3GgLplICBW!G*f|7Y$O{KC!mJ@!L8&TE_`xcYV4VmDF@|Uu0Q%ri6dz&_60CJ_ z1cuut)-D?sP7ivac(As|P)dp69FP*L8RU5ir0a0Xm?n7fLzN^9CeW}@KLnEm)T}PH zV2&UHekjbRFi`OnL<|kAc=0Aw>6_T2;!Uh1&EuFhl-^NXbNa6Q6lU1N402IslbLPR z(p%VLA%*or7#pyL=9Nz)!{?>vz0Z$nP^JktlksTfHKwmKJ;L<9#Pk6(P^eou#A*7^j~=a6+H0yKmH0C4#;psBQa)kGuxQimzZyX`4*Y4$kYN;OH8dW zwZ_y2Q(H{!FwM=h9McL+D>1FYv>MAgS=P<6^DOISSs%+Tv22iKmsxg|WkW2x!E#}i zi?ZB^=_#gXn4V)gUXX=}yf~5l6FD%Em5IDIk=G}3cp^t9avblDX0^wbzG3NIOV=&E zZ|OrzA6tfO8FtHXTE@I(L@Xm_8F6d4U=2ssNVP@@Ym_=Z1YI34Im~30$$h3fnC@b_ zm+5|{t4vQ`c^`UzwZ!BNh9#THF(zwFHkfW_x|8V(O!qN8#`MH7eDYrD=ie`V@WUT@ zPu+|{mhwRhEgcKn>@s}bp|+Vcx9$S*ivaKF%!UTD9#Aid~) z(I>s=e=+)ETzXM^sVKcvxw-l^S^Ap)<(~AiLGS{R#F!-GBm=|iOon9YBnJceE-BSX z(@A=5Vg!f*^&TTihS2UBE|cLZ8M_GdVu`s*Ofd6igxa7AV+&BnfMTjqf1biUNz>DWJ4rwhfXuO20 z5JlO{S-ro@IKT8TN?`X2Ls>eG?fIIyjM6Cvs>aZ%pLKL{_af z%%ImTy<_P;OE)ZiVCf@EH!Z_v84k1yWrz>AA7kENGQk^_g4Ympp2tI;4egTVAbi!#XSm>t`^ZuN$iQLu(i3+ksQ>U?(_ftPp;;#)~>d%>d)AvXI#%LOV4P}WTaSFvg~)Mop|&W{sKvAI$N@9>qyG#v%LWu@DE2#$!<5hF(6|>g1J-7on`JSg9$G41ej-;c~+SR zywsw}z|1gTlKF>h346yn$JT9Z9jbEcCJWb?hWa%p14PWU3!$-;7faS0RmQ02-468U9aCBDjS>=LdY+43hc_V8L7p-9oD?!{E#jH`> zGB+)=fTw`-NfbhjDAcy2Q235PWDvu7MTLsC3cc?*BnNSvd^BiD4DfEm2aPN8z1aG) zR|{9GSL^%s=l#<2OD`@-F9vSLZx(Kjq?_ZHyCl~ql{%?GrL?A#TAwsb(g~1`L9k$v zp@R%p$Pkd%aGhY8B17nZw#l$dhB_Go9y75+0kSfE#Dt8&3=k7}%?)bD{$khY5)KSY zIB3We>nhFR8xu)vF-3~6G|}bGn%mx`xgL=3He?Y%$Jt=EN4@OfhGM zIdjZeV9qLY;>kJ(%;jY+eEq@YXRZJP56awlve;_eVFufL<_6!Jgty7uX?Pjt&cUlN zHxL<*pW$S|JPPxyFb~RjS_~(C=JPNgs`P2h2MpDhXTFle`~!v$fUu`M3R#{j4H74O7hV&giKe=7 zju&@R-FPY7*dtUA#AWC_4*z(K79f>FAHlAJfyZMxQgPN$@s$iXkhno)0|yef0*<39 z)V5Tpw8H@c&@98a6$Lc81j3u9*;hab5vYQ|-)nZ5fI6^uX%3ixI&jR;&}0o_@gvQJ zQbGwzbE6&)j=$Qx9VC+GVM@9nYF?NJiI@ciBx+uOJ*;T17U&;o;uxt#S3x2vih2MY z!htoaP$SaR){zGFWZ1fH9BHC&T4E6-DolDn$AK^cqWC6aHbu;41tzW{a~he`A_iY{ z&@v(>1IyhEa2PGq1)&8QJQgjx395?#ZY<7iS`IzQiINygtsrVIRIWfMImP7siC?(# zqqshEH9;dX!!R=0%j6ofX%kt#GW|ox@CX!^9u}sk#j71~-TkL-D=!JF)YluD{6~m4 z+Rt{S6AMeBi*rX4M=0UIjIt-eI#LKg_Px?!?N~eItKqK-JH$7Th`h>rL&!#66i5xM zH-zEFiFo8#GIDIY0m+E4+-L|82lg#OHUc1Ch(X{%41)3fR@;qN$wnakI6;13R(vd( zg_{3cFy0tq4~MJ->+Ws&Eo?c~Ut`Vz0SZ8&Tjm_MMJW*PqWZPb7!0#<*d0_$oOfjBHLo?^lTrh3*B~4sqaZ z2pq>5SSjMg6SnHFRcL&*#LzglV?U7&3hQZrF+$@G?GR?u^S4y(&{SbPeOKcS*C+PV zC#KTF*PBX1trw+kn@U3s4>bxkJcwa$n@SJwqKU7yp8OUO<%!lFcuiqa4Rt**pWmXc zcVc5L^z^`TAKO^F65yxjZ>#Jqs>s=vk*gTfr zo>-Vd6emnfognmJ$#j;)j634tznYKTvc<+^u_l+u-3)=4XOtdo!#dOG+Z z=dpAp0q?{t3F2I&36&jG1X&BF_$_-RU{xnpM=)qbq|o943I>VpTd+LB!SvWdT3Eo| zvXDMj_JJ6uaw5%nOIAq`7vD9hF5^RN-;se*L$&bz%Qvx80tE7EVf5?pa-(4xEz9Ux zhG7{nX&PDhf|oF7x+Q};(J=(9eq!i-Z07WjY}h1VwPS&h5Sv4?0tbMc7yR+Dm6H&p z3*P=!mQD~F`N2mYi`M@R1E<@9rJy(w99ufwk+2C}r(@O0JLc;+r5^qN+z1K{d;=YV z6~qeg@--$=uhA+HM~%PJJ_^E~vgrO>wU4^3Z+ge(|HNVn`U%Na=snz#vx>=hOYcsgzu&plmB5wXL`e@LbgZZ+P-LN~_Xb)O;^x9K z>yEVdSffJ3-nP!VBmTW*rX>_91Q>m+KLJ7DE&T~mK&VUzd#yWS;)sY9Ium#0#Ue&n zaNW|PfX>7n2{I0Iw{#{p69@=V@-5>oT-;HY5Rc)mQ5VqlzssoWw#vk@WtS)^q|%LJ zEeSy9cNHiAXxvhl5Dj<(qpvqspn&qk9SL_wwD=9|!GxBfxbd-q#fk_(G4ZxI{KQPG z`zkXrv93U1{T29FHW8Dp5rFi^71@K%5ghAh8QwCQ5`12aC zHZDU9lp#-4Kkj~p;UCQA>{YrX82~=Vx+J&sEpdT~{q2-W#E9Mf0LWX`K!`JE{vya-#d4tnbNACAz`I`eX%GNkulqCzbk1M*X%L`kulqCzv}|tc zPyFL4*NC_B*d`GC69Uk(5ug>cY(OF=0~b{%&OL z+4{F2Yp=3$do{N9dRXmM7#iTS*M9s&d=KW^d;#Uo=VEZu$A?hvd^P46Rr^l9h$29> zfBquM|JYwdxrGmLKAx%(LzfF<~pjDTtIA+X~w%G7Ru59|%lnty~3%-}m?Kx4!= zW}qngR=zRwRzEIt0`rKE%K+wS|2<)zxAwW2*8w}<`NwCz4Yu><_|36#=xb1$f0D1# z+yQUC6}Wjb&<2{a-x+9w)6su-SPk$Pu-pGsAFO#ZK<1x6VFLpboOb>pKVfqV?tqHl ze<$Cv`TKzscd!Wo4Bq;vjR=TuJiav~0w4qslvjTX@*fO@xMkFS=QE=JqoD|Qzx#9R zXfF=(|9qmq`vIT_e&)vM-#G_*1atv(5p?Os>EC+{^f(CDzjqmQ<;LmXN50>m1tH&O zW#eGYNcC^P*8=+Zgp?%er<66O>X z45$7j=+Y0vnK_l1n!#^jI;WnT`rYGSQpB$q-usywQ|Cn1+kdcqnG!ldmq6eA2{<-n z|Kt0is;e#P*iC(b|d(8I_!b8!xt zZvE8aLw9~^5kFUWr%#>%euGo|n&t5`nEP2# z^P4?}xid(ed#`YQPB`xqju_y(&7FGym(wEZ!*IU*Q}|uU*}pnB`^4op>iIo4?!`m8 zbmQ%FvyWf=i`ltfK#>RTnfr*S;vE-e|MEET9t_IsZgS(DcdGp(+*Z}nZL?mP9a zQy80%;o>ztcpD-Fi2=KmfMdgNo1Toy$G>v=^3;>3@k^tp@Jpi~ee%@Yhn~bQwY~>) z^gUCTPhCEJEA7WILP)=zcF%iI<`InN%;`^0{rTH4uJ=5NoR8cZ+c&tz`2W!7Pk-f} zuiX3OJx|_?n*Qe}?>U~npPD(25x*XKa*gTyz}r6a4eaRbuOGU1J^aP97iJ!teR%H5g-d^ox-W@$>$H6D@%WuN^`oc0|Md5t7NdC|LihgH zxnD=}jr$&c_;LIM=)(`siOKbu2TtF3=U<(ldHB-hvvZekyh{YnUA%Dl{DmvCUw+$_ z%a2IEg4ulE>;?RsC|<8G-}^h~&iwk9-!(J)$eEML{GszxQ$H|uehSL<|K-%@A9&k0 z#EkyNzZ1^qg(DjFjeiek?l*<=Yr^?0I5$rHCCU6dH>n_@Bi}mh-o4& z=5X=TKY!+5p8Ucnew|eOcqrb_nX{MAo_YVJ`|p3?w{E=S;fH4~oR6 zbK>op6Vqhw?ZSD7aKyZtd#7;3@BPkwk8toA=c&1O3+H=<1E_Rr4nNU3HTMI;5kHzS z2kpeEIkC{q{fKacBIDeT3FpU!BYt&bPK^27PYUO!gd;xDF!wXU`7Plb_xV8)62o#l zqwhS13uhmnefZ%U--B+6A8Qp|yKz58K>RZ6`PoZ1?!AZ!A)ePG=kbsqzH$1ICvMz} zpHrO?3(1Ac_;uJD_das|0;bLv5ji_|(~n=Ax$@ZTZ-}RKX$cN~ zZ1~;xp8jtB?>l|pz4(8}{Xg*kjf0VkiI0hkQRcr8vk)T>6Oa!qJGhvEsh&xQk%O5J g$m3&VY7hXb;Q@+>0L8h0YWNt1n0S~}KCwIo005}e&Hw-a diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc deleted file mode 100644 index 3c267e4691dc6d7e74b376e178c906e2dce89bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10207 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 {GVxjKIX=?bO; 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py deleted file mode 100644 index eec1775..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py +++ /dev/null @@ -1,668 +0,0 @@ -""" - pygments.cmdline - ~~~~~~~~~~~~~~~~ - - Command line interface. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import os -import sys -import shutil -import argparse -from textwrap import dedent - -from pip._vendor.pygments import __version__, highlight -from pip._vendor.pygments.util import ClassNotFound, OptionError, docstring_headline, \ - guess_decode, guess_decode_from_terminal, terminal_encoding, \ - UnclosingTextIOWrapper -from pip._vendor.pygments.lexers import get_all_lexers, get_lexer_by_name, guess_lexer, \ - load_lexer_from_file, get_lexer_for_filename, find_lexer_class_for_filename -from pip._vendor.pygments.lexers.special import TextLexer -from pip._vendor.pygments.formatters.latex import LatexEmbeddedLexer, LatexFormatter -from pip._vendor.pygments.formatters import get_all_formatters, get_formatter_by_name, \ - load_formatter_from_file, get_formatter_for_filename, find_formatter_class -from pip._vendor.pygments.formatters.terminal import TerminalFormatter -from pip._vendor.pygments.formatters.terminal256 import Terminal256Formatter, TerminalTrueColorFormatter -from pip._vendor.pygments.filters import get_all_filters, find_filter_class -from pip._vendor.pygments.styles import get_all_styles, get_style_by_name - - -def _parse_options(o_strs): - opts = {} - if not o_strs: - return opts - for o_str in o_strs: - if not o_str.strip(): - continue - o_args = o_str.split(',') - for o_arg in o_args: - o_arg = o_arg.strip() - try: - o_key, o_val = o_arg.split('=', 1) - o_key = o_key.strip() - o_val = o_val.strip() - except ValueError: - opts[o_arg] = True - else: - opts[o_key] = o_val - return opts - - -def _parse_filters(f_strs): - filters = [] - if not f_strs: - return filters - for f_str in f_strs: - if ':' in f_str: - fname, fopts = f_str.split(':', 1) - filters.append((fname, _parse_options([fopts]))) - else: - filters.append((f_str, {})) - return filters - - -def _print_help(what, name): - try: - if what == 'lexer': - cls = get_lexer_by_name(name) - print("Help on the %s lexer:" % cls.name) - print(dedent(cls.__doc__)) - elif what == 'formatter': - cls = find_formatter_class(name) - print("Help on the %s formatter:" % cls.name) - print(dedent(cls.__doc__)) - elif what == 'filter': - cls = find_filter_class(name) - print("Help on the %s filter:" % name) - print(dedent(cls.__doc__)) - return 0 - except (AttributeError, ValueError): - print("%s not found!" % what, file=sys.stderr) - return 1 - - -def _print_list(what): - if what == 'lexer': - print() - print("Lexers:") - print("~~~~~~~") - - info = [] - for fullname, names, exts, _ in get_all_lexers(): - tup = (', '.join(names)+':', fullname, - exts and '(filenames ' + ', '.join(exts) + ')' or '') - info.append(tup) - info.sort() - for i in info: - print(('* %s\n %s %s') % i) - - elif what == 'formatter': - print() - print("Formatters:") - print("~~~~~~~~~~~") - - info = [] - for cls in get_all_formatters(): - doc = docstring_headline(cls) - tup = (', '.join(cls.aliases) + ':', doc, cls.filenames and - '(filenames ' + ', '.join(cls.filenames) + ')' or '') - info.append(tup) - info.sort() - for i in info: - print(('* %s\n %s %s') % i) - - elif what == 'filter': - print() - print("Filters:") - print("~~~~~~~~") - - for name in get_all_filters(): - cls = find_filter_class(name) - print("* " + name + ':') - print(" %s" % docstring_headline(cls)) - - elif what == 'style': - print() - print("Styles:") - print("~~~~~~~") - - for name in get_all_styles(): - cls = get_style_by_name(name) - print("* " + name + ':') - print(" %s" % docstring_headline(cls)) - - -def _print_list_as_json(requested_items): - import json - result = {} - if 'lexer' in requested_items: - info = {} - for fullname, names, filenames, mimetypes in get_all_lexers(): - info[fullname] = { - 'aliases': names, - 'filenames': filenames, - 'mimetypes': mimetypes - } - result['lexers'] = info - - if 'formatter' in requested_items: - info = {} - for cls in get_all_formatters(): - doc = docstring_headline(cls) - info[cls.name] = { - 'aliases': cls.aliases, - 'filenames': cls.filenames, - 'doc': doc - } - result['formatters'] = info - - if 'filter' in requested_items: - info = {} - for name in get_all_filters(): - cls = find_filter_class(name) - info[name] = { - 'doc': docstring_headline(cls) - } - result['filters'] = info - - if 'style' in requested_items: - info = {} - for name in get_all_styles(): - cls = get_style_by_name(name) - info[name] = { - 'doc': docstring_headline(cls) - } - result['styles'] = info - - json.dump(result, sys.stdout) - -def main_inner(parser, argns): - if argns.help: - parser.print_help() - return 0 - - if argns.V: - print('Pygments version %s, (c) 2006-2023 by Georg Brandl, Matthäus ' - 'Chajdas and contributors.' % __version__) - return 0 - - def is_only_option(opt): - return not any(v for (k, v) in vars(argns).items() if k != opt) - - # handle ``pygmentize -L`` - if argns.L is not None: - arg_set = set() - for k, v in vars(argns).items(): - if v: - arg_set.add(k) - - arg_set.discard('L') - arg_set.discard('json') - - if arg_set: - parser.print_help(sys.stderr) - return 2 - - # print version - if not argns.json: - main(['', '-V']) - allowed_types = {'lexer', 'formatter', 'filter', 'style'} - largs = [arg.rstrip('s') for arg in argns.L] - if any(arg not in allowed_types for arg in largs): - parser.print_help(sys.stderr) - return 0 - if not largs: - largs = allowed_types - if not argns.json: - for arg in largs: - _print_list(arg) - else: - _print_list_as_json(largs) - return 0 - - # handle ``pygmentize -H`` - if argns.H: - if not is_only_option('H'): - parser.print_help(sys.stderr) - return 2 - what, name = argns.H - if what not in ('lexer', 'formatter', 'filter'): - parser.print_help(sys.stderr) - return 2 - return _print_help(what, name) - - # parse -O options - parsed_opts = _parse_options(argns.O or []) - - # parse -P options - for p_opt in argns.P or []: - try: - name, value = p_opt.split('=', 1) - except ValueError: - parsed_opts[p_opt] = True - else: - parsed_opts[name] = value - - # encodings - inencoding = parsed_opts.get('inencoding', parsed_opts.get('encoding')) - outencoding = parsed_opts.get('outencoding', parsed_opts.get('encoding')) - - # handle ``pygmentize -N`` - if argns.N: - lexer = find_lexer_class_for_filename(argns.N) - if lexer is None: - lexer = TextLexer - - print(lexer.aliases[0]) - return 0 - - # handle ``pygmentize -C`` - if argns.C: - inp = sys.stdin.buffer.read() - try: - lexer = guess_lexer(inp, inencoding=inencoding) - except ClassNotFound: - lexer = TextLexer - - print(lexer.aliases[0]) - return 0 - - # handle ``pygmentize -S`` - S_opt = argns.S - a_opt = argns.a - if S_opt is not None: - f_opt = argns.f - if not f_opt: - parser.print_help(sys.stderr) - return 2 - if argns.l or argns.INPUTFILE: - parser.print_help(sys.stderr) - return 2 - - try: - parsed_opts['style'] = S_opt - fmter = get_formatter_by_name(f_opt, **parsed_opts) - except ClassNotFound as err: - print(err, file=sys.stderr) - return 1 - - print(fmter.get_style_defs(a_opt or '')) - return 0 - - # if no -S is given, -a is not allowed - if argns.a is not None: - parser.print_help(sys.stderr) - return 2 - - # parse -F options - F_opts = _parse_filters(argns.F or []) - - # -x: allow custom (eXternal) lexers and formatters - allow_custom_lexer_formatter = bool(argns.x) - - # select lexer - lexer = None - - # given by name? - lexername = argns.l - if lexername: - # custom lexer, located relative to user's cwd - if allow_custom_lexer_formatter and '.py' in lexername: - try: - filename = None - name = None - if ':' in lexername: - filename, name = lexername.rsplit(':', 1) - - if '.py' in name: - # This can happen on Windows: If the lexername is - # C:\lexer.py -- return to normal load path in that case - name = None - - if filename and name: - lexer = load_lexer_from_file(filename, name, - **parsed_opts) - else: - lexer = load_lexer_from_file(lexername, **parsed_opts) - except ClassNotFound as err: - print('Error:', err, file=sys.stderr) - return 1 - else: - try: - lexer = get_lexer_by_name(lexername, **parsed_opts) - except (OptionError, ClassNotFound) as err: - print('Error:', err, file=sys.stderr) - return 1 - - # read input code - code = None - - if argns.INPUTFILE: - if argns.s: - print('Error: -s option not usable when input file specified', - file=sys.stderr) - return 2 - - infn = argns.INPUTFILE - try: - with open(infn, 'rb') as infp: - code = infp.read() - except Exception as err: - print('Error: cannot read infile:', err, file=sys.stderr) - return 1 - if not inencoding: - code, inencoding = guess_decode(code) - - # do we have to guess the lexer? - if not lexer: - try: - lexer = get_lexer_for_filename(infn, code, **parsed_opts) - except ClassNotFound as err: - if argns.g: - try: - lexer = guess_lexer(code, **parsed_opts) - except ClassNotFound: - lexer = TextLexer(**parsed_opts) - else: - print('Error:', err, file=sys.stderr) - return 1 - except OptionError as err: - print('Error:', err, file=sys.stderr) - return 1 - - elif not argns.s: # treat stdin as full file (-s support is later) - # read code from terminal, always in binary mode since we want to - # decode ourselves and be tolerant with it - code = sys.stdin.buffer.read() # use .buffer to get a binary stream - if not inencoding: - code, inencoding = guess_decode_from_terminal(code, sys.stdin) - # else the lexer will do the decoding - if not lexer: - try: - lexer = guess_lexer(code, **parsed_opts) - except ClassNotFound: - lexer = TextLexer(**parsed_opts) - - else: # -s option needs a lexer with -l - if not lexer: - print('Error: when using -s a lexer has to be selected with -l', - file=sys.stderr) - return 2 - - # process filters - for fname, fopts in F_opts: - try: - lexer.add_filter(fname, **fopts) - except ClassNotFound as err: - print('Error:', err, file=sys.stderr) - return 1 - - # select formatter - outfn = argns.o - fmter = argns.f - if fmter: - # custom formatter, located relative to user's cwd - if allow_custom_lexer_formatter and '.py' in fmter: - try: - filename = None - name = None - if ':' in fmter: - # Same logic as above for custom lexer - filename, name = fmter.rsplit(':', 1) - - if '.py' in name: - name = None - - if filename and name: - fmter = load_formatter_from_file(filename, name, - **parsed_opts) - else: - fmter = load_formatter_from_file(fmter, **parsed_opts) - except ClassNotFound as err: - print('Error:', err, file=sys.stderr) - return 1 - else: - try: - fmter = get_formatter_by_name(fmter, **parsed_opts) - except (OptionError, ClassNotFound) as err: - print('Error:', err, file=sys.stderr) - return 1 - - if outfn: - if not fmter: - try: - fmter = get_formatter_for_filename(outfn, **parsed_opts) - except (OptionError, ClassNotFound) as err: - print('Error:', err, file=sys.stderr) - return 1 - try: - outfile = open(outfn, 'wb') - except Exception as err: - print('Error: cannot open outfile:', err, file=sys.stderr) - return 1 - else: - if not fmter: - if os.environ.get('COLORTERM','') in ('truecolor', '24bit'): - fmter = TerminalTrueColorFormatter(**parsed_opts) - elif '256' in os.environ.get('TERM', ''): - fmter = Terminal256Formatter(**parsed_opts) - else: - fmter = TerminalFormatter(**parsed_opts) - outfile = sys.stdout.buffer - - # determine output encoding if not explicitly selected - if not outencoding: - if outfn: - # output file? use lexer encoding for now (can still be None) - fmter.encoding = inencoding - else: - # else use terminal encoding - fmter.encoding = terminal_encoding(sys.stdout) - - # provide coloring under Windows, if possible - if not outfn and sys.platform in ('win32', 'cygwin') and \ - fmter.name in ('Terminal', 'Terminal256'): # pragma: no cover - # unfortunately colorama doesn't support binary streams on Py3 - outfile = UnclosingTextIOWrapper(outfile, encoding=fmter.encoding) - fmter.encoding = None - try: - import pip._vendor.colorama.initialise as colorama_initialise - except ImportError: - pass - else: - outfile = colorama_initialise.wrap_stream( - outfile, convert=None, strip=None, autoreset=False, wrap=True) - - # When using the LaTeX formatter and the option `escapeinside` is - # specified, we need a special lexer which collects escaped text - # before running the chosen language lexer. - escapeinside = parsed_opts.get('escapeinside', '') - if len(escapeinside) == 2 and isinstance(fmter, LatexFormatter): - left = escapeinside[0] - right = escapeinside[1] - lexer = LatexEmbeddedLexer(left, right, lexer) - - # ... and do it! - if not argns.s: - # process whole input as per normal... - try: - highlight(code, lexer, fmter, outfile) - finally: - if outfn: - outfile.close() - return 0 - else: - # line by line processing of stdin (eg: for 'tail -f')... - try: - while 1: - line = sys.stdin.buffer.readline() - if not line: - break - if not inencoding: - line = guess_decode_from_terminal(line, sys.stdin)[0] - highlight(line, lexer, fmter, outfile) - if hasattr(outfile, 'flush'): - outfile.flush() - return 0 - except KeyboardInterrupt: # pragma: no cover - return 0 - finally: - if outfn: - outfile.close() - - -class HelpFormatter(argparse.HelpFormatter): - def __init__(self, prog, indent_increment=2, max_help_position=16, width=None): - if width is None: - try: - width = shutil.get_terminal_size().columns - 2 - except Exception: - pass - argparse.HelpFormatter.__init__(self, prog, indent_increment, - max_help_position, width) - - -def main(args=sys.argv): - """ - Main command line entry point. - """ - desc = "Highlight an input file and write the result to an output file." - parser = argparse.ArgumentParser(description=desc, add_help=False, - formatter_class=HelpFormatter) - - operation = parser.add_argument_group('Main operation') - lexersel = operation.add_mutually_exclusive_group() - lexersel.add_argument( - '-l', metavar='LEXER', - help='Specify the lexer to use. (Query names with -L.) If not ' - 'given and -g is not present, the lexer is guessed from the filename.') - lexersel.add_argument( - '-g', action='store_true', - help='Guess the lexer from the file contents, or pass through ' - 'as plain text if nothing can be guessed.') - operation.add_argument( - '-F', metavar='FILTER[:options]', action='append', - help='Add a filter to the token stream. (Query names with -L.) ' - 'Filter options are given after a colon if necessary.') - operation.add_argument( - '-f', metavar='FORMATTER', - help='Specify the formatter to use. (Query names with -L.) ' - 'If not given, the formatter is guessed from the output filename, ' - 'and defaults to the terminal formatter if the output is to the ' - 'terminal or an unknown file extension.') - operation.add_argument( - '-O', metavar='OPTION=value[,OPTION=value,...]', action='append', - help='Give options to the lexer and formatter as a comma-separated ' - 'list of key-value pairs. ' - 'Example: `-O bg=light,python=cool`.') - operation.add_argument( - '-P', metavar='OPTION=value', action='append', - help='Give a single option to the lexer and formatter - with this ' - 'you can pass options whose value contains commas and equal signs. ' - 'Example: `-P "heading=Pygments, the Python highlighter"`.') - operation.add_argument( - '-o', metavar='OUTPUTFILE', - help='Where to write the output. Defaults to standard output.') - - operation.add_argument( - 'INPUTFILE', nargs='?', - help='Where to read the input. Defaults to standard input.') - - flags = parser.add_argument_group('Operation flags') - flags.add_argument( - '-v', action='store_true', - help='Print a detailed traceback on unhandled exceptions, which ' - 'is useful for debugging and bug reports.') - flags.add_argument( - '-s', action='store_true', - help='Process lines one at a time until EOF, rather than waiting to ' - 'process the entire file. This only works for stdin, only for lexers ' - 'with no line-spanning constructs, and is intended for streaming ' - 'input such as you get from `tail -f`. ' - 'Example usage: `tail -f sql.log | pygmentize -s -l sql`.') - flags.add_argument( - '-x', action='store_true', - help='Allow custom lexers and formatters to be loaded from a .py file ' - 'relative to the current working directory. For example, ' - '`-l ./customlexer.py -x`. By default, this option expects a file ' - 'with a class named CustomLexer or CustomFormatter; you can also ' - 'specify your own class name with a colon (`-l ./lexer.py:MyLexer`). ' - 'Users should be very careful not to use this option with untrusted ' - 'files, because it will import and run them.') - flags.add_argument('--json', help='Output as JSON. This can ' - 'be only used in conjunction with -L.', - default=False, - action='store_true') - - special_modes_group = parser.add_argument_group( - 'Special modes - do not do any highlighting') - special_modes = special_modes_group.add_mutually_exclusive_group() - special_modes.add_argument( - '-S', metavar='STYLE -f formatter', - help='Print style definitions for STYLE for a formatter ' - 'given with -f. The argument given by -a is formatter ' - 'dependent.') - special_modes.add_argument( - '-L', nargs='*', metavar='WHAT', - help='List lexers, formatters, styles or filters -- ' - 'give additional arguments for the thing(s) you want to list ' - '(e.g. "styles"), or omit them to list everything.') - special_modes.add_argument( - '-N', metavar='FILENAME', - help='Guess and print out a lexer name based solely on the given ' - 'filename. Does not take input or highlight anything. If no specific ' - 'lexer can be determined, "text" is printed.') - special_modes.add_argument( - '-C', action='store_true', - help='Like -N, but print out a lexer name based solely on ' - 'a given content from standard input.') - special_modes.add_argument( - '-H', action='store', nargs=2, metavar=('NAME', 'TYPE'), - help='Print detailed help for the object of type , ' - 'where is one of "lexer", "formatter" or "filter".') - special_modes.add_argument( - '-V', action='store_true', - help='Print the package version.') - special_modes.add_argument( - '-h', '--help', action='store_true', - help='Print this help.') - special_modes_group.add_argument( - '-a', metavar='ARG', - help='Formatter-specific additional argument for the -S (print ' - 'style sheet) mode.') - - argns = parser.parse_args(args[1:]) - - try: - return main_inner(parser, argns) - except BrokenPipeError: - # someone closed our stdout, e.g. by quitting a pager. - return 0 - except Exception: - if argns.v: - print(file=sys.stderr) - print('*' * 65, file=sys.stderr) - print('An unhandled exception occurred while highlighting.', - file=sys.stderr) - print('Please report the whole traceback to the issue tracker at', - file=sys.stderr) - print('.', - file=sys.stderr) - print('*' * 65, file=sys.stderr) - print(file=sys.stderr) - raise - import traceback - info = traceback.format_exception(*sys.exc_info()) - msg = info[-1].strip() - if len(info) >= 3: - # extract relevant file and position info - msg += '\n (f%s)' % info[-2].split('\n')[0].strip()[1:] - print(file=sys.stderr) - print('*** Error while highlighting:', file=sys.stderr) - print(msg, file=sys.stderr) - print('*** If this is a bug you want to report, please rerun with -v.', - file=sys.stderr) - return 1 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py deleted file mode 100644 index deb4937..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py +++ /dev/null @@ -1,70 +0,0 @@ -""" - pygments.console - ~~~~~~~~~~~~~~~~ - - Format colored console output. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -esc = "\x1b[" - -codes = {} -codes[""] = "" -codes["reset"] = esc + "39;49;00m" - -codes["bold"] = esc + "01m" -codes["faint"] = esc + "02m" -codes["standout"] = esc + "03m" -codes["underline"] = esc + "04m" -codes["blink"] = esc + "05m" -codes["overline"] = esc + "06m" - -dark_colors = ["black", "red", "green", "yellow", "blue", - "magenta", "cyan", "gray"] -light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brightblue", - "brightmagenta", "brightcyan", "white"] - -x = 30 -for d, l in zip(dark_colors, light_colors): - codes[d] = esc + "%im" % x - codes[l] = esc + "%im" % (60 + x) - x += 1 - -del d, l, x - -codes["white"] = codes["bold"] - - -def reset_color(): - return codes["reset"] - - -def colorize(color_key, text): - return codes[color_key] + text + codes["reset"] - - -def ansiformat(attr, text): - """ - Format ``text`` with a color and/or some attributes:: - - color normal color - *color* bold color - _color_ underlined color - +color+ blinking color - """ - result = [] - if attr[:1] == attr[-1:] == '+': - result.append(codes['blink']) - attr = attr[1:-1] - if attr[:1] == attr[-1:] == '*': - result.append(codes['bold']) - attr = attr[1:-1] - if attr[:1] == attr[-1:] == '_': - result.append(codes['underline']) - attr = attr[1:-1] - result.append(codes[attr]) - result.append(text) - result.append(codes['reset']) - return ''.join(result) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py deleted file mode 100644 index dafa08d..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py +++ /dev/null @@ -1,71 +0,0 @@ -""" - pygments.filter - ~~~~~~~~~~~~~~~ - - Module that implements the default filter. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - - -def apply_filters(stream, filters, lexer=None): - """ - Use this method to apply an iterable of filters to - a stream. If lexer is given it's forwarded to the - filter, otherwise the filter receives `None`. - """ - def _apply(filter_, stream): - yield from filter_.filter(lexer, stream) - for filter_ in filters: - stream = _apply(filter_, stream) - return stream - - -def simplefilter(f): - """ - Decorator that converts a function into a filter:: - - @simplefilter - def lowercase(self, lexer, stream, options): - for ttype, value in stream: - yield ttype, value.lower() - """ - return type(f.__name__, (FunctionFilter,), { - '__module__': getattr(f, '__module__'), - '__doc__': f.__doc__, - 'function': f, - }) - - -class Filter: - """ - Default filter. Subclass this class or use the `simplefilter` - decorator to create own filters. - """ - - def __init__(self, **options): - self.options = options - - def filter(self, lexer, stream): - raise NotImplementedError() - - -class FunctionFilter(Filter): - """ - Abstract class used by `simplefilter` to create simple - function filters on the fly. The `simplefilter` decorator - automatically creates subclasses of this class for - functions passed to it. - """ - function = None - - def __init__(self, **options): - if not hasattr(self, 'function'): - raise TypeError('%r used without bound function' % - self.__class__.__name__) - Filter.__init__(self, **options) - - def filter(self, lexer, stream): - # pylint: disable=not-callable - yield from self.function(lexer, stream, self.options) diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py b/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py deleted file mode 100644 index 5aa9ecb..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py +++ /dev/null @@ -1,940 +0,0 @@ -""" - pygments.filters - ~~~~~~~~~~~~~~~~ - - Module containing filter lookup functions and default - filters. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import re - -from pip._vendor.pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \ - string_to_tokentype -from pip._vendor.pygments.filter import Filter -from pip._vendor.pygments.util import get_list_opt, get_int_opt, get_bool_opt, \ - get_choice_opt, ClassNotFound, OptionError -from pip._vendor.pygments.plugin import find_plugin_filters - - -def find_filter_class(filtername): - """Lookup a filter by name. Return None if not found.""" - if filtername in FILTERS: - return FILTERS[filtername] - for name, cls in find_plugin_filters(): - if name == filtername: - return cls - return None - - -def get_filter_by_name(filtername, **options): - """Return an instantiated filter. - - Options are passed to the filter initializer if wanted. - Raise a ClassNotFound if not found. - """ - cls = find_filter_class(filtername) - if cls: - return cls(**options) - else: - raise ClassNotFound('filter %r not found' % filtername) - - -def get_all_filters(): - """Return a generator of all filter names.""" - yield from FILTERS - for name, _ in find_plugin_filters(): - yield name - - -def _replace_special(ttype, value, regex, specialttype, - replacefunc=lambda x: x): - last = 0 - for match in regex.finditer(value): - start, end = match.start(), match.end() - if start != last: - yield ttype, value[last:start] - yield specialttype, replacefunc(value[start:end]) - last = end - if last != len(value): - yield ttype, value[last:] - - -class CodeTagFilter(Filter): - """Highlight special code tags in comments and docstrings. - - Options accepted: - - `codetags` : list of strings - A list of strings that are flagged as code tags. The default is to - highlight ``XXX``, ``TODO``, ``FIXME``, ``BUG`` and ``NOTE``. - - .. versionchanged:: 2.13 - Now recognizes ``FIXME`` by default. - """ - - def __init__(self, **options): - Filter.__init__(self, **options) - tags = get_list_opt(options, 'codetags', - ['XXX', 'TODO', 'FIXME', 'BUG', 'NOTE']) - self.tag_re = re.compile(r'\b(%s)\b' % '|'.join([ - re.escape(tag) for tag in tags if tag - ])) - - def filter(self, lexer, stream): - regex = self.tag_re - for ttype, value in stream: - if ttype in String.Doc or \ - ttype in Comment and \ - ttype not in Comment.Preproc: - yield from _replace_special(ttype, value, regex, Comment.Special) - else: - yield ttype, value - - -class SymbolFilter(Filter): - """Convert mathematical symbols such as \\ in Isabelle - or \\longrightarrow in LaTeX into Unicode characters. - - This is mostly useful for HTML or console output when you want to - approximate the source rendering you'd see in an IDE. - - Options accepted: - - `lang` : string - The symbol language. Must be one of ``'isabelle'`` or - ``'latex'``. The default is ``'isabelle'``. - """ - - latex_symbols = { - '\\alpha' : '\U000003b1', - '\\beta' : '\U000003b2', - '\\gamma' : '\U000003b3', - '\\delta' : '\U000003b4', - '\\varepsilon' : '\U000003b5', - '\\zeta' : '\U000003b6', - '\\eta' : '\U000003b7', - '\\vartheta' : '\U000003b8', - '\\iota' : '\U000003b9', - '\\kappa' : '\U000003ba', - '\\lambda' : '\U000003bb', - '\\mu' : '\U000003bc', - '\\nu' : '\U000003bd', - '\\xi' : '\U000003be', - '\\pi' : '\U000003c0', - '\\varrho' : '\U000003c1', - '\\sigma' : '\U000003c3', - '\\tau' : '\U000003c4', - '\\upsilon' : '\U000003c5', - '\\varphi' : '\U000003c6', - '\\chi' : '\U000003c7', - '\\psi' : '\U000003c8', - '\\omega' : '\U000003c9', - '\\Gamma' : '\U00000393', - '\\Delta' : '\U00000394', - '\\Theta' : '\U00000398', - '\\Lambda' : '\U0000039b', - '\\Xi' : '\U0000039e', - '\\Pi' : '\U000003a0', - '\\Sigma' : '\U000003a3', - '\\Upsilon' : '\U000003a5', - '\\Phi' : '\U000003a6', - '\\Psi' : '\U000003a8', - '\\Omega' : '\U000003a9', - '\\leftarrow' : '\U00002190', - '\\longleftarrow' : '\U000027f5', - '\\rightarrow' : '\U00002192', - '\\longrightarrow' : '\U000027f6', - '\\Leftarrow' : '\U000021d0', - '\\Longleftarrow' : '\U000027f8', - '\\Rightarrow' : '\U000021d2', - '\\Longrightarrow' : '\U000027f9', - '\\leftrightarrow' : '\U00002194', - '\\longleftrightarrow' : '\U000027f7', - '\\Leftrightarrow' : '\U000021d4', - '\\Longleftrightarrow' : '\U000027fa', - '\\mapsto' : '\U000021a6', - '\\longmapsto' : '\U000027fc', - '\\relbar' : '\U00002500', - '\\Relbar' : '\U00002550', - '\\hookleftarrow' : '\U000021a9', - '\\hookrightarrow' : '\U000021aa', - '\\leftharpoondown' : '\U000021bd', - '\\rightharpoondown' : '\U000021c1', - '\\leftharpoonup' : '\U000021bc', - '\\rightharpoonup' : '\U000021c0', - '\\rightleftharpoons' : '\U000021cc', - '\\leadsto' : '\U0000219d', - '\\downharpoonleft' : '\U000021c3', - '\\downharpoonright' : '\U000021c2', - '\\upharpoonleft' : '\U000021bf', - '\\upharpoonright' : '\U000021be', - '\\restriction' : '\U000021be', - '\\uparrow' : '\U00002191', - '\\Uparrow' : '\U000021d1', - '\\downarrow' : '\U00002193', - '\\Downarrow' : '\U000021d3', - '\\updownarrow' : '\U00002195', - '\\Updownarrow' : '\U000021d5', - '\\langle' : '\U000027e8', - '\\rangle' : '\U000027e9', - '\\lceil' : '\U00002308', - '\\rceil' : '\U00002309', - '\\lfloor' : '\U0000230a', - '\\rfloor' : '\U0000230b', - '\\flqq' : '\U000000ab', - '\\frqq' : '\U000000bb', - '\\bot' : '\U000022a5', - '\\top' : '\U000022a4', - '\\wedge' : '\U00002227', - '\\bigwedge' : '\U000022c0', - '\\vee' : '\U00002228', - '\\bigvee' : '\U000022c1', - '\\forall' : '\U00002200', - '\\exists' : '\U00002203', - '\\nexists' : '\U00002204', - '\\neg' : '\U000000ac', - '\\Box' : '\U000025a1', - '\\Diamond' : '\U000025c7', - '\\vdash' : '\U000022a2', - '\\models' : '\U000022a8', - '\\dashv' : '\U000022a3', - '\\surd' : '\U0000221a', - '\\le' : '\U00002264', - '\\ge' : '\U00002265', - '\\ll' : '\U0000226a', - '\\gg' : '\U0000226b', - '\\lesssim' : '\U00002272', - '\\gtrsim' : '\U00002273', - '\\lessapprox' : '\U00002a85', - '\\gtrapprox' : '\U00002a86', - '\\in' : '\U00002208', - '\\notin' : '\U00002209', - '\\subset' : '\U00002282', - '\\supset' : '\U00002283', - '\\subseteq' : '\U00002286', - '\\supseteq' : '\U00002287', - '\\sqsubset' : '\U0000228f', - '\\sqsupset' : '\U00002290', - '\\sqsubseteq' : '\U00002291', - '\\sqsupseteq' : '\U00002292', - '\\cap' : '\U00002229', - '\\bigcap' : '\U000022c2', - '\\cup' : '\U0000222a', - '\\bigcup' : '\U000022c3', - '\\sqcup' : '\U00002294', - '\\bigsqcup' : '\U00002a06', - '\\sqcap' : '\U00002293', - '\\Bigsqcap' : '\U00002a05', - '\\setminus' : '\U00002216', - '\\propto' : '\U0000221d', - '\\uplus' : '\U0000228e', - '\\bigplus' : '\U00002a04', - '\\sim' : '\U0000223c', - '\\doteq' : '\U00002250', - '\\simeq' : '\U00002243', - '\\approx' : '\U00002248', - '\\asymp' : '\U0000224d', - '\\cong' : '\U00002245', - '\\equiv' : '\U00002261', - '\\Join' : '\U000022c8', - '\\bowtie' : '\U00002a1d', - '\\prec' : '\U0000227a', - '\\succ' : '\U0000227b', - '\\preceq' : '\U0000227c', - '\\succeq' : '\U0000227d', - '\\parallel' : '\U00002225', - '\\mid' : '\U000000a6', - '\\pm' : '\U000000b1', - '\\mp' : '\U00002213', - '\\times' : '\U000000d7', - '\\div' : '\U000000f7', - '\\cdot' : '\U000022c5', - '\\star' : '\U000022c6', - '\\circ' : '\U00002218', - '\\dagger' : '\U00002020', - '\\ddagger' : '\U00002021', - '\\lhd' : '\U000022b2', - '\\rhd' : '\U000022b3', - '\\unlhd' : '\U000022b4', - '\\unrhd' : '\U000022b5', - '\\triangleleft' : '\U000025c3', - '\\triangleright' : '\U000025b9', - '\\triangle' : '\U000025b3', - '\\triangleq' : '\U0000225c', - '\\oplus' : '\U00002295', - '\\bigoplus' : '\U00002a01', - '\\otimes' : '\U00002297', - '\\bigotimes' : '\U00002a02', - '\\odot' : '\U00002299', - '\\bigodot' : '\U00002a00', - '\\ominus' : '\U00002296', - '\\oslash' : '\U00002298', - '\\dots' : '\U00002026', - '\\cdots' : '\U000022ef', - '\\sum' : '\U00002211', - '\\prod' : '\U0000220f', - '\\coprod' : '\U00002210', - '\\infty' : '\U0000221e', - '\\int' : '\U0000222b', - '\\oint' : '\U0000222e', - '\\clubsuit' : '\U00002663', - '\\diamondsuit' : '\U00002662', - '\\heartsuit' : '\U00002661', - '\\spadesuit' : '\U00002660', - '\\aleph' : '\U00002135', - '\\emptyset' : '\U00002205', - '\\nabla' : '\U00002207', - '\\partial' : '\U00002202', - '\\flat' : '\U0000266d', - '\\natural' : '\U0000266e', - '\\sharp' : '\U0000266f', - '\\angle' : '\U00002220', - '\\copyright' : '\U000000a9', - '\\textregistered' : '\U000000ae', - '\\textonequarter' : '\U000000bc', - '\\textonehalf' : '\U000000bd', - '\\textthreequarters' : '\U000000be', - '\\textordfeminine' : '\U000000aa', - '\\textordmasculine' : '\U000000ba', - '\\euro' : '\U000020ac', - '\\pounds' : '\U000000a3', - '\\yen' : '\U000000a5', - '\\textcent' : '\U000000a2', - '\\textcurrency' : '\U000000a4', - '\\textdegree' : '\U000000b0', - } - - isabelle_symbols = { - '\\' : '\U0001d7ec', - '\\' : '\U0001d7ed', - '\\' : '\U0001d7ee', - '\\' : '\U0001d7ef', - '\\' : '\U0001d7f0', - '\\' : '\U0001d7f1', - '\\' : '\U0001d7f2', - '\\' : '\U0001d7f3', - '\\' : '\U0001d7f4', - '\\' : '\U0001d7f5', - '\\' : '\U0001d49c', - '\\' : '\U0000212c', - '\\' : '\U0001d49e', - '\\' : '\U0001d49f', - '\\' : '\U00002130', - '\\' : '\U00002131', - '\\' : '\U0001d4a2', - '\\' : '\U0000210b', - '\\' : '\U00002110', - '\\' : '\U0001d4a5', - '\\' : '\U0001d4a6', - '\\' : '\U00002112', - '\\' : '\U00002133', - '\\' : '\U0001d4a9', - '\\' : '\U0001d4aa', - '\\

    !I7S{BS4i1|@R7s@ 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe deleted file mode 100644 index e8bebdba6d8f242244bf397ab067965d47c5093e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108032 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%0AHbpwE%ZM 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 H#ex3;_fXA_ diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py deleted file mode 100644 index ba58858..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py +++ /dev/null @@ -1,2025 +0,0 @@ -# -# Copyright (C) 2012-2023 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -import codecs -from collections import deque -import contextlib -import csv -from glob import iglob as std_iglob -import io -import json -import logging -import os -import py_compile -import re -import socket -try: - import ssl -except ImportError: # pragma: no cover - ssl = None -import subprocess -import sys -import tarfile -import tempfile -import textwrap - -try: - import threading -except ImportError: # pragma: no cover - import dummy_threading as threading -import time - -from . import DistlibException -from .compat import (string_types, text_type, shutil, raw_input, StringIO, - cache_from_source, urlopen, urljoin, httplib, xmlrpclib, - HTTPHandler, BaseConfigurator, valid_ident, - Container, configparser, URLError, ZipFile, fsdecode, - unquote, urlparse) - -logger = logging.getLogger(__name__) - -# -# Requirement parsing code as per PEP 508 -# - -IDENTIFIER = re.compile(r'^([\w\.-]+)\s*') -VERSION_IDENTIFIER = re.compile(r'^([\w\.*+-]+)\s*') -COMPARE_OP = re.compile(r'^(<=?|>=?|={2,3}|[~!]=)\s*') -MARKER_OP = re.compile(r'^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*') -OR = re.compile(r'^or\b\s*') -AND = re.compile(r'^and\b\s*') -NON_SPACE = re.compile(r'(\S+)\s*') -STRING_CHUNK = re.compile(r'([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)') - - -def parse_marker(marker_string): - """ - Parse a marker string and return a dictionary containing a marker expression. - - The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in - the expression grammar, or strings. A string contained in quotes is to be - interpreted as a literal string, and a string not contained in quotes is a - variable (such as os_name). - """ - - def marker_var(remaining): - # either identifier, or literal string - m = IDENTIFIER.match(remaining) - if m: - result = m.groups()[0] - remaining = remaining[m.end():] - elif not remaining: - raise SyntaxError('unexpected end of input') - else: - q = remaining[0] - if q not in '\'"': - raise SyntaxError('invalid expression: %s' % remaining) - oq = '\'"'.replace(q, '') - remaining = remaining[1:] - parts = [q] - while remaining: - # either a string chunk, or oq, or q to terminate - if remaining[0] == q: - break - elif remaining[0] == oq: - parts.append(oq) - remaining = remaining[1:] - else: - m = STRING_CHUNK.match(remaining) - if not m: - raise SyntaxError('error in string literal: %s' % - remaining) - parts.append(m.groups()[0]) - remaining = remaining[m.end():] - else: - s = ''.join(parts) - raise SyntaxError('unterminated string: %s' % s) - parts.append(q) - result = ''.join(parts) - remaining = remaining[1:].lstrip() # skip past closing quote - return result, remaining - - def marker_expr(remaining): - if remaining and remaining[0] == '(': - result, remaining = marker(remaining[1:].lstrip()) - if remaining[0] != ')': - raise SyntaxError('unterminated parenthesis: %s' % remaining) - remaining = remaining[1:].lstrip() - else: - lhs, remaining = marker_var(remaining) - while remaining: - m = MARKER_OP.match(remaining) - if not m: - break - op = m.groups()[0] - remaining = remaining[m.end():] - rhs, remaining = marker_var(remaining) - lhs = {'op': op, 'lhs': lhs, 'rhs': rhs} - result = lhs - return result, remaining - - def marker_and(remaining): - lhs, remaining = marker_expr(remaining) - while remaining: - m = AND.match(remaining) - if not m: - break - remaining = remaining[m.end():] - rhs, remaining = marker_expr(remaining) - lhs = {'op': 'and', 'lhs': lhs, 'rhs': rhs} - return lhs, remaining - - def marker(remaining): - lhs, remaining = marker_and(remaining) - while remaining: - m = OR.match(remaining) - if not m: - break - remaining = remaining[m.end():] - rhs, remaining = marker_and(remaining) - lhs = {'op': 'or', 'lhs': lhs, 'rhs': rhs} - return lhs, remaining - - return marker(marker_string) - - -def parse_requirement(req): - """ - Parse a requirement passed in as a string. Return a Container - whose attributes contain the various parts of the requirement. - """ - remaining = req.strip() - if not remaining or remaining.startswith('#'): - return None - m = IDENTIFIER.match(remaining) - if not m: - raise SyntaxError('name expected: %s' % remaining) - distname = m.groups()[0] - remaining = remaining[m.end():] - extras = mark_expr = versions = uri = None - if remaining and remaining[0] == '[': - i = remaining.find(']', 1) - if i < 0: - raise SyntaxError('unterminated extra: %s' % remaining) - s = remaining[1:i] - remaining = remaining[i + 1:].lstrip() - extras = [] - while s: - m = IDENTIFIER.match(s) - if not m: - raise SyntaxError('malformed extra: %s' % s) - extras.append(m.groups()[0]) - s = s[m.end():] - if not s: - break - if s[0] != ',': - raise SyntaxError('comma expected in extras: %s' % s) - s = s[1:].lstrip() - if not extras: - extras = None - if remaining: - if remaining[0] == '@': - # it's a URI - remaining = remaining[1:].lstrip() - m = NON_SPACE.match(remaining) - if not m: - raise SyntaxError('invalid URI: %s' % remaining) - uri = m.groups()[0] - t = urlparse(uri) - # there are issues with Python and URL parsing, so this test - # is a bit crude. See bpo-20271, bpo-23505. Python doesn't - # always parse invalid URLs correctly - it should raise - # exceptions for malformed URLs - if not (t.scheme and t.netloc): - raise SyntaxError('Invalid URL: %s' % uri) - remaining = remaining[m.end():].lstrip() - else: - - def get_versions(ver_remaining): - """ - Return a list of operator, version tuples if any are - specified, else None. - """ - m = COMPARE_OP.match(ver_remaining) - versions = None - if m: - versions = [] - while True: - op = m.groups()[0] - ver_remaining = ver_remaining[m.end():] - m = VERSION_IDENTIFIER.match(ver_remaining) - if not m: - raise SyntaxError('invalid version: %s' % - ver_remaining) - v = m.groups()[0] - versions.append((op, v)) - ver_remaining = ver_remaining[m.end():] - if not ver_remaining or ver_remaining[0] != ',': - break - ver_remaining = ver_remaining[1:].lstrip() - # Some packages have a trailing comma which would break things - # See issue #148 - if not ver_remaining: - break - m = COMPARE_OP.match(ver_remaining) - if not m: - raise SyntaxError('invalid constraint: %s' % - ver_remaining) - if not versions: - versions = None - return versions, ver_remaining - - if remaining[0] != '(': - versions, remaining = get_versions(remaining) - else: - i = remaining.find(')', 1) - if i < 0: - raise SyntaxError('unterminated parenthesis: %s' % - remaining) - s = remaining[1:i] - remaining = remaining[i + 1:].lstrip() - # As a special diversion from PEP 508, allow a version number - # a.b.c in parentheses as a synonym for ~= a.b.c (because this - # is allowed in earlier PEPs) - if COMPARE_OP.match(s): - versions, _ = get_versions(s) - else: - m = VERSION_IDENTIFIER.match(s) - if not m: - raise SyntaxError('invalid constraint: %s' % s) - v = m.groups()[0] - s = s[m.end():].lstrip() - if s: - raise SyntaxError('invalid constraint: %s' % s) - versions = [('~=', v)] - - if remaining: - if remaining[0] != ';': - raise SyntaxError('invalid requirement: %s' % remaining) - remaining = remaining[1:].lstrip() - - mark_expr, remaining = parse_marker(remaining) - - if remaining and remaining[0] != '#': - raise SyntaxError('unexpected trailing data: %s' % remaining) - - if not versions: - rs = distname - else: - rs = '%s %s' % (distname, ', '.join( - ['%s %s' % con for con in versions])) - return Container(name=distname, - extras=extras, - constraints=versions, - marker=mark_expr, - url=uri, - requirement=rs) - - -def get_resources_dests(resources_root, rules): - """Find destinations for resources files""" - - def get_rel_path(root, path): - # normalizes and returns a lstripped-/-separated path - root = root.replace(os.path.sep, '/') - path = path.replace(os.path.sep, '/') - assert path.startswith(root) - return path[len(root):].lstrip('/') - - destinations = {} - for base, suffix, dest in rules: - prefix = os.path.join(resources_root, base) - for abs_base in iglob(prefix): - abs_glob = os.path.join(abs_base, suffix) - for abs_path in iglob(abs_glob): - resource_file = get_rel_path(resources_root, abs_path) - if dest is None: # remove the entry if it was here - destinations.pop(resource_file, None) - else: - rel_path = get_rel_path(abs_base, abs_path) - rel_dest = dest.replace(os.path.sep, '/').rstrip('/') - destinations[resource_file] = rel_dest + '/' + rel_path - return destinations - - -def in_venv(): - if hasattr(sys, 'real_prefix'): - # virtualenv venvs - result = True - else: - # PEP 405 venvs - result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) - return result - - -def get_executable(): - # The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as - # changes to the stub launcher mean that sys.executable always points - # to the stub on OS X - # if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' - # in os.environ): - # result = os.environ['__PYVENV_LAUNCHER__'] - # else: - # result = sys.executable - # return result - # Avoid normcasing: see issue #143 - # result = os.path.normcase(sys.executable) - result = sys.executable - if not isinstance(result, text_type): - result = fsdecode(result) - return result - - -def proceed(prompt, allowed_chars, error_prompt=None, default=None): - p = prompt - while True: - s = raw_input(p) - p = prompt - if not s and default: - s = default - if s: - c = s[0].lower() - if c in allowed_chars: - break - if error_prompt: - p = '%c: %s\n%s' % (c, error_prompt, prompt) - return c - - -def extract_by_key(d, keys): - if isinstance(keys, string_types): - keys = keys.split() - result = {} - for key in keys: - if key in d: - result[key] = d[key] - return result - - -def read_exports(stream): - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getreader('utf-8')(stream) - # Try to load as JSON, falling back on legacy format - data = stream.read() - stream = StringIO(data) - try: - jdata = json.load(stream) - result = jdata['extensions']['python.exports']['exports'] - for group, entries in result.items(): - for k, v in entries.items(): - s = '%s = %s' % (k, v) - entry = get_export_entry(s) - assert entry is not None - entries[k] = entry - return result - except Exception: - stream.seek(0, 0) - - def read_stream(cp, stream): - if hasattr(cp, 'read_file'): - cp.read_file(stream) - else: - cp.readfp(stream) - - cp = configparser.ConfigParser() - try: - read_stream(cp, stream) - except configparser.MissingSectionHeaderError: - stream.close() - data = textwrap.dedent(data) - stream = StringIO(data) - read_stream(cp, stream) - - result = {} - for key in cp.sections(): - result[key] = entries = {} - for name, value in cp.items(key): - s = '%s = %s' % (name, value) - entry = get_export_entry(s) - assert entry is not None - # entry.dist = self - entries[name] = entry - return result - - -def write_exports(exports, stream): - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getwriter('utf-8')(stream) - cp = configparser.ConfigParser() - for k, v in exports.items(): - # TODO check k, v for valid values - cp.add_section(k) - for entry in v.values(): - if entry.suffix is None: - s = entry.prefix - else: - s = '%s:%s' % (entry.prefix, entry.suffix) - if entry.flags: - s = '%s [%s]' % (s, ', '.join(entry.flags)) - cp.set(k, entry.name, s) - cp.write(stream) - - -@contextlib.contextmanager -def tempdir(): - td = tempfile.mkdtemp() - try: - yield td - finally: - shutil.rmtree(td) - - -@contextlib.contextmanager -def chdir(d): - cwd = os.getcwd() - try: - os.chdir(d) - yield - finally: - os.chdir(cwd) - - -@contextlib.contextmanager -def socket_timeout(seconds=15): - cto = socket.getdefaulttimeout() - try: - socket.setdefaulttimeout(seconds) - yield - finally: - socket.setdefaulttimeout(cto) - - -class cached_property(object): - - def __init__(self, func): - self.func = func - # for attr in ('__name__', '__module__', '__doc__'): - # setattr(self, attr, getattr(func, attr, None)) - - def __get__(self, obj, cls=None): - if obj is None: - return self - value = self.func(obj) - object.__setattr__(obj, self.func.__name__, value) - # obj.__dict__[self.func.__name__] = value = self.func(obj) - return value - - -def convert_path(pathname): - """Return 'pathname' as a name that will work on the native filesystem. - - The path is split on '/' and put back together again using the current - directory separator. Needed because filenames in the setup script are - always supplied in Unix style, and have to be converted to the local - convention before we can actually use them in the filesystem. Raises - ValueError on non-Unix-ish systems if 'pathname' either starts or - ends with a slash. - """ - if os.sep == '/': - return pathname - if not pathname: - return pathname - if pathname[0] == '/': - raise ValueError("path '%s' cannot be absolute" % pathname) - if pathname[-1] == '/': - raise ValueError("path '%s' cannot end with '/'" % pathname) - - paths = pathname.split('/') - while os.curdir in paths: - paths.remove(os.curdir) - if not paths: - return os.curdir - return os.path.join(*paths) - - -class FileOperator(object): - - def __init__(self, dry_run=False): - self.dry_run = dry_run - self.ensured = set() - self._init_record() - - def _init_record(self): - self.record = False - self.files_written = set() - self.dirs_created = set() - - def record_as_written(self, path): - if self.record: - self.files_written.add(path) - - def newer(self, source, target): - """Tell if the target is newer than the source. - - Returns true if 'source' exists and is more recently modified than - 'target', or if 'source' exists and 'target' doesn't. - - Returns false if both exist and 'target' is the same age or younger - than 'source'. Raise PackagingFileError if 'source' does not exist. - - Note that this test is not very accurate: files created in the same - second will have the same "age". - """ - if not os.path.exists(source): - raise DistlibException("file '%r' does not exist" % - os.path.abspath(source)) - if not os.path.exists(target): - return True - - return os.stat(source).st_mtime > os.stat(target).st_mtime - - def copy_file(self, infile, outfile, check=True): - """Copy a file respecting dry-run and force flags. - """ - self.ensure_dir(os.path.dirname(outfile)) - logger.info('Copying %s to %s', infile, outfile) - if not self.dry_run: - msg = None - if check: - if os.path.islink(outfile): - msg = '%s is a symlink' % outfile - elif os.path.exists(outfile) and not os.path.isfile(outfile): - msg = '%s is a non-regular file' % outfile - if msg: - raise ValueError(msg + ' which would be overwritten') - shutil.copyfile(infile, outfile) - self.record_as_written(outfile) - - def copy_stream(self, instream, outfile, encoding=None): - assert not os.path.isdir(outfile) - self.ensure_dir(os.path.dirname(outfile)) - logger.info('Copying stream %s to %s', instream, outfile) - if not self.dry_run: - if encoding is None: - outstream = open(outfile, 'wb') - else: - outstream = codecs.open(outfile, 'w', encoding=encoding) - try: - shutil.copyfileobj(instream, outstream) - finally: - outstream.close() - self.record_as_written(outfile) - - def write_binary_file(self, path, data): - self.ensure_dir(os.path.dirname(path)) - if not self.dry_run: - if os.path.exists(path): - os.remove(path) - with open(path, 'wb') as f: - f.write(data) - self.record_as_written(path) - - def write_text_file(self, path, data, encoding): - self.write_binary_file(path, data.encode(encoding)) - - def set_mode(self, bits, mask, files): - if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): - # Set the executable bits (owner, group, and world) on - # all the files specified. - for f in files: - if self.dry_run: - logger.info("changing mode of %s", f) - else: - mode = (os.stat(f).st_mode | bits) & mask - logger.info("changing mode of %s to %o", f, mode) - os.chmod(f, mode) - - set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) - - def ensure_dir(self, path): - path = os.path.abspath(path) - if path not in self.ensured and not os.path.exists(path): - self.ensured.add(path) - d, f = os.path.split(path) - self.ensure_dir(d) - logger.info('Creating %s' % path) - if not self.dry_run: - os.mkdir(path) - if self.record: - self.dirs_created.add(path) - - def byte_compile(self, - path, - optimize=False, - force=False, - prefix=None, - hashed_invalidation=False): - dpath = cache_from_source(path, not optimize) - logger.info('Byte-compiling %s to %s', path, dpath) - if not self.dry_run: - if force or self.newer(path, dpath): - if not prefix: - diagpath = None - else: - assert path.startswith(prefix) - diagpath = path[len(prefix):] - compile_kwargs = {} - if hashed_invalidation and hasattr(py_compile, - 'PycInvalidationMode'): - compile_kwargs[ - 'invalidation_mode'] = py_compile.PycInvalidationMode.CHECKED_HASH - py_compile.compile(path, dpath, diagpath, True, - **compile_kwargs) # raise error - self.record_as_written(dpath) - return dpath - - def ensure_removed(self, path): - if os.path.exists(path): - if os.path.isdir(path) and not os.path.islink(path): - logger.debug('Removing directory tree at %s', path) - if not self.dry_run: - shutil.rmtree(path) - if self.record: - if path in self.dirs_created: - self.dirs_created.remove(path) - else: - if os.path.islink(path): - s = 'link' - else: - s = 'file' - logger.debug('Removing %s %s', s, path) - if not self.dry_run: - os.remove(path) - if self.record: - if path in self.files_written: - self.files_written.remove(path) - - def is_writable(self, path): - result = False - while not result: - if os.path.exists(path): - result = os.access(path, os.W_OK) - break - parent = os.path.dirname(path) - if parent == path: - break - path = parent - return result - - def commit(self): - """ - Commit recorded changes, turn off recording, return - changes. - """ - assert self.record - result = self.files_written, self.dirs_created - self._init_record() - return result - - def rollback(self): - if not self.dry_run: - for f in list(self.files_written): - if os.path.exists(f): - os.remove(f) - # dirs should all be empty now, except perhaps for - # __pycache__ subdirs - # reverse so that subdirs appear before their parents - dirs = sorted(self.dirs_created, reverse=True) - for d in dirs: - flist = os.listdir(d) - if flist: - assert flist == ['__pycache__'] - sd = os.path.join(d, flist[0]) - os.rmdir(sd) - os.rmdir(d) # should fail if non-empty - self._init_record() - - -def resolve(module_name, dotted_path): - if module_name in sys.modules: - mod = sys.modules[module_name] - else: - mod = __import__(module_name) - if dotted_path is None: - result = mod - else: - parts = dotted_path.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - -class ExportEntry(object): - - def __init__(self, name, prefix, suffix, flags): - self.name = name - self.prefix = prefix - self.suffix = suffix - self.flags = flags - - @cached_property - def value(self): - return resolve(self.prefix, self.suffix) - - def __repr__(self): # pragma: no cover - return '' % (self.name, self.prefix, - self.suffix, self.flags) - - def __eq__(self, other): - if not isinstance(other, ExportEntry): - result = False - else: - result = (self.name == other.name and self.prefix == other.prefix - and self.suffix == other.suffix - and self.flags == other.flags) - return result - - __hash__ = object.__hash__ - - -ENTRY_RE = re.compile( - r'''(?P([^\[]\S*)) - \s*=\s*(?P(\w+)([:\.]\w+)*) - \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? - ''', re.VERBOSE) - - -def get_export_entry(specification): - m = ENTRY_RE.search(specification) - if not m: - result = None - if '[' in specification or ']' in specification: - raise DistlibException("Invalid specification " - "'%s'" % specification) - else: - d = m.groupdict() - name = d['name'] - path = d['callable'] - colons = path.count(':') - if colons == 0: - prefix, suffix = path, None - else: - if colons != 1: - raise DistlibException("Invalid specification " - "'%s'" % specification) - prefix, suffix = path.split(':') - flags = d['flags'] - if flags is None: - if '[' in specification or ']' in specification: - raise DistlibException("Invalid specification " - "'%s'" % specification) - flags = [] - else: - flags = [f.strip() for f in flags.split(',')] - result = ExportEntry(name, prefix, suffix, flags) - return result - - -def get_cache_base(suffix=None): - """ - Return the default base location for distlib caches. If the directory does - not exist, it is created. Use the suffix provided for the base directory, - and default to '.distlib' if it isn't provided. - - On Windows, if LOCALAPPDATA is defined in the environment, then it is - assumed to be a directory, and will be the parent directory of the result. - On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home - directory - using os.expanduser('~') - will be the parent directory of - the result. - - The result is just the directory '.distlib' in the parent directory as - determined above, or with the name specified with ``suffix``. - """ - if suffix is None: - suffix = '.distlib' - if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: - result = os.path.expandvars('$localappdata') - else: - # Assume posix, or old Windows - result = os.path.expanduser('~') - # we use 'isdir' instead of 'exists', because we want to - # fail if there's a file with that name - if os.path.isdir(result): - usable = os.access(result, os.W_OK) - if not usable: - logger.warning('Directory exists but is not writable: %s', result) - else: - try: - os.makedirs(result) - usable = True - except OSError: - logger.warning('Unable to create %s', result, exc_info=True) - usable = False - if not usable: - result = tempfile.mkdtemp() - logger.warning('Default location unusable, using %s', result) - return os.path.join(result, suffix) - - -def path_to_cache_dir(path): - """ - Convert an absolute path to a directory name for use in a cache. - - The algorithm used is: - - #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. - #. Any occurrence of ``os.sep`` is replaced with ``'--'``. - #. ``'.cache'`` is appended. - """ - d, p = os.path.splitdrive(os.path.abspath(path)) - if d: - d = d.replace(':', '---') - p = p.replace(os.sep, '--') - return d + p + '.cache' - - -def ensure_slash(s): - if not s.endswith('/'): - return s + '/' - return s - - -def parse_credentials(netloc): - username = password = None - if '@' in netloc: - prefix, netloc = netloc.rsplit('@', 1) - if ':' not in prefix: - username = prefix - else: - username, password = prefix.split(':', 1) - if username: - username = unquote(username) - if password: - password = unquote(password) - return username, password, netloc - - -def get_process_umask(): - result = os.umask(0o22) - os.umask(result) - return result - - -def is_string_sequence(seq): - result = True - i = None - for i, s in enumerate(seq): - if not isinstance(s, string_types): - result = False - break - assert i is not None - return result - - -PROJECT_NAME_AND_VERSION = re.compile( - '([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' - '([a-z0-9_.+-]+)', re.I) -PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') - - -def split_filename(filename, project_name=None): - """ - Extract name, version, python version from a filename (no extension) - - Return name, version, pyver or None - """ - result = None - pyver = None - filename = unquote(filename).replace(' ', '-') - m = PYTHON_VERSION.search(filename) - if m: - pyver = m.group(1) - filename = filename[:m.start()] - if project_name and len(filename) > len(project_name) + 1: - m = re.match(re.escape(project_name) + r'\b', filename) - if m: - n = m.end() - result = filename[:n], filename[n + 1:], pyver - if result is None: - m = PROJECT_NAME_AND_VERSION.match(filename) - if m: - result = m.group(1), m.group(3), pyver - return result - - -# Allow spaces in name because of legacy dists like "Twisted Core" -NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' - r'\(\s*(?P[^\s)]+)\)$') - - -def parse_name_and_version(p): - """ - A utility method used to get name and version from a string. - - From e.g. a Provides-Dist value. - - :param p: A value in a form 'foo (1.0)' - :return: The name and version as a tuple. - """ - m = NAME_VERSION_RE.match(p) - if not m: - raise DistlibException('Ill-formed name/version string: \'%s\'' % p) - d = m.groupdict() - return d['name'].strip().lower(), d['ver'] - - -def get_extras(requested, available): - result = set() - requested = set(requested or []) - available = set(available or []) - if '*' in requested: - requested.remove('*') - result |= available - for r in requested: - if r == '-': - result.add(r) - elif r.startswith('-'): - unwanted = r[1:] - if unwanted not in available: - logger.warning('undeclared extra: %s' % unwanted) - if unwanted in result: - result.remove(unwanted) - else: - if r not in available: - logger.warning('undeclared extra: %s' % r) - result.add(r) - return result - - -# -# Extended metadata functionality -# - - -def _get_external_data(url): - result = {} - try: - # urlopen might fail if it runs into redirections, - # because of Python issue #13696. Fixed in locators - # using a custom redirect handler. - resp = urlopen(url) - headers = resp.info() - ct = headers.get('Content-Type') - if not ct.startswith('application/json'): - logger.debug('Unexpected response for JSON request: %s', ct) - else: - reader = codecs.getreader('utf-8')(resp) - # data = reader.read().decode('utf-8') - # result = json.loads(data) - result = json.load(reader) - except Exception as e: - logger.exception('Failed to get external data for %s: %s', url, e) - return result - - -_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' - - -def get_project_data(name): - url = '%s/%s/project.json' % (name[0].upper(), name) - url = urljoin(_external_data_base_url, url) - result = _get_external_data(url) - return result - - -def get_package_data(name, version): - url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) - url = urljoin(_external_data_base_url, url) - return _get_external_data(url) - - -class Cache(object): - """ - A class implementing a cache for resources that need to live in the file system - e.g. shared libraries. This class was moved from resources to here because it - could be used by other modules, e.g. the wheel module. - """ - - def __init__(self, base): - """ - Initialise an instance. - - :param base: The base directory where the cache should be located. - """ - # we use 'isdir' instead of 'exists', because we want to - # fail if there's a file with that name - if not os.path.isdir(base): # pragma: no cover - os.makedirs(base) - if (os.stat(base).st_mode & 0o77) != 0: - logger.warning('Directory \'%s\' is not private', base) - self.base = os.path.abspath(os.path.normpath(base)) - - def prefix_to_dir(self, prefix): - """ - Converts a resource prefix to a directory name in the cache. - """ - return path_to_cache_dir(prefix) - - def clear(self): - """ - Clear the cache. - """ - not_removed = [] - for fn in os.listdir(self.base): - fn = os.path.join(self.base, fn) - try: - if os.path.islink(fn) or os.path.isfile(fn): - os.remove(fn) - elif os.path.isdir(fn): - shutil.rmtree(fn) - except Exception: - not_removed.append(fn) - return not_removed - - -class EventMixin(object): - """ - A very simple publish/subscribe system. - """ - - def __init__(self): - self._subscribers = {} - - def add(self, event, subscriber, append=True): - """ - Add a subscriber for an event. - - :param event: The name of an event. - :param subscriber: The subscriber to be added (and called when the - event is published). - :param append: Whether to append or prepend the subscriber to an - existing subscriber list for the event. - """ - subs = self._subscribers - if event not in subs: - subs[event] = deque([subscriber]) - else: - sq = subs[event] - if append: - sq.append(subscriber) - else: - sq.appendleft(subscriber) - - def remove(self, event, subscriber): - """ - Remove a subscriber for an event. - - :param event: The name of an event. - :param subscriber: The subscriber to be removed. - """ - subs = self._subscribers - if event not in subs: - raise ValueError('No subscribers: %r' % event) - subs[event].remove(subscriber) - - def get_subscribers(self, event): - """ - Return an iterator for the subscribers for an event. - :param event: The event to return subscribers for. - """ - return iter(self._subscribers.get(event, ())) - - def publish(self, event, *args, **kwargs): - """ - Publish a event and return a list of values returned by its - subscribers. - - :param event: The event to publish. - :param args: The positional arguments to pass to the event's - subscribers. - :param kwargs: The keyword arguments to pass to the event's - subscribers. - """ - result = [] - for subscriber in self.get_subscribers(event): - try: - value = subscriber(event, *args, **kwargs) - except Exception: - logger.exception('Exception during event publication') - value = None - result.append(value) - logger.debug('publish %s: args = %s, kwargs = %s, result = %s', event, - args, kwargs, result) - return result - - -# -# Simple sequencing -# -class Sequencer(object): - - def __init__(self): - self._preds = {} - self._succs = {} - self._nodes = set() # nodes with no preds/succs - - def add_node(self, node): - self._nodes.add(node) - - def remove_node(self, node, edges=False): - if node in self._nodes: - self._nodes.remove(node) - if edges: - for p in set(self._preds.get(node, ())): - self.remove(p, node) - for s in set(self._succs.get(node, ())): - self.remove(node, s) - # Remove empties - for k, v in list(self._preds.items()): - if not v: - del self._preds[k] - for k, v in list(self._succs.items()): - if not v: - del self._succs[k] - - def add(self, pred, succ): - assert pred != succ - self._preds.setdefault(succ, set()).add(pred) - self._succs.setdefault(pred, set()).add(succ) - - def remove(self, pred, succ): - assert pred != succ - try: - preds = self._preds[succ] - succs = self._succs[pred] - except KeyError: # pragma: no cover - raise ValueError('%r not a successor of anything' % succ) - try: - preds.remove(pred) - succs.remove(succ) - except KeyError: # pragma: no cover - raise ValueError('%r not a successor of %r' % (succ, pred)) - - def is_step(self, step): - return (step in self._preds or step in self._succs - or step in self._nodes) - - def get_steps(self, final): - if not self.is_step(final): - raise ValueError('Unknown: %r' % final) - result = [] - todo = [] - seen = set() - todo.append(final) - while todo: - step = todo.pop(0) - if step in seen: - # if a step was already seen, - # move it to the end (so it will appear earlier - # when reversed on return) ... but not for the - # final step, as that would be confusing for - # users - if step != final: - result.remove(step) - result.append(step) - else: - seen.add(step) - result.append(step) - preds = self._preds.get(step, ()) - todo.extend(preds) - return reversed(result) - - @property - def strong_connections(self): - # http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm - index_counter = [0] - stack = [] - lowlinks = {} - index = {} - result = [] - - graph = self._succs - - def strongconnect(node): - # set the depth index for this node to the smallest unused index - index[node] = index_counter[0] - lowlinks[node] = index_counter[0] - index_counter[0] += 1 - stack.append(node) - - # Consider successors - try: - successors = graph[node] - except Exception: - successors = [] - for successor in successors: - if successor not in lowlinks: - # Successor has not yet been visited - strongconnect(successor) - lowlinks[node] = min(lowlinks[node], lowlinks[successor]) - elif successor in stack: - # the successor is in the stack and hence in the current - # strongly connected component (SCC) - lowlinks[node] = min(lowlinks[node], index[successor]) - - # If `node` is a root node, pop the stack and generate an SCC - if lowlinks[node] == index[node]: - connected_component = [] - - while True: - successor = stack.pop() - connected_component.append(successor) - if successor == node: - break - component = tuple(connected_component) - # storing the result - result.append(component) - - for node in graph: - if node not in lowlinks: - strongconnect(node) - - return result - - @property - def dot(self): - result = ['digraph G {'] - for succ in self._preds: - preds = self._preds[succ] - for pred in preds: - result.append(' %s -> %s;' % (pred, succ)) - for node in self._nodes: - result.append(' %s;' % node) - result.append('}') - return '\n'.join(result) - - -# -# Unarchiving functionality for zip, tar, tgz, tbz, whl -# - -ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz', - '.whl') - - -def unarchive(archive_filename, dest_dir, format=None, check=True): - - def check_path(path): - if not isinstance(path, text_type): - path = path.decode('utf-8') - p = os.path.abspath(os.path.join(dest_dir, path)) - if not p.startswith(dest_dir) or p[plen] != os.sep: - raise ValueError('path outside destination: %r' % p) - - dest_dir = os.path.abspath(dest_dir) - plen = len(dest_dir) - archive = None - if format is None: - if archive_filename.endswith(('.zip', '.whl')): - format = 'zip' - elif archive_filename.endswith(('.tar.gz', '.tgz')): - format = 'tgz' - mode = 'r:gz' - elif archive_filename.endswith(('.tar.bz2', '.tbz')): - format = 'tbz' - mode = 'r:bz2' - elif archive_filename.endswith('.tar'): - format = 'tar' - mode = 'r' - else: # pragma: no cover - raise ValueError('Unknown format for %r' % archive_filename) - try: - if format == 'zip': - archive = ZipFile(archive_filename, 'r') - if check: - names = archive.namelist() - for name in names: - check_path(name) - else: - archive = tarfile.open(archive_filename, mode) - if check: - names = archive.getnames() - for name in names: - check_path(name) - if format != 'zip' and sys.version_info[0] < 3: - # See Python issue 17153. If the dest path contains Unicode, - # tarfile extraction fails on Python 2.x if a member path name - # contains non-ASCII characters - it leads to an implicit - # bytes -> unicode conversion using ASCII to decode. - for tarinfo in archive.getmembers(): - if not isinstance(tarinfo.name, text_type): - tarinfo.name = tarinfo.name.decode('utf-8') - - # Limit extraction of dangerous items, if this Python - # allows it easily. If not, just trust the input. - # See: https://docs.python.org/3/library/tarfile.html#extraction-filters - def extraction_filter(member, path): - """Run tarfile.tar_filter, but raise the expected ValueError""" - # This is only called if the current Python has tarfile filters - try: - return tarfile.tar_filter(member, path) - except tarfile.FilterError as exc: - raise ValueError(str(exc)) - - archive.extraction_filter = extraction_filter - - archive.extractall(dest_dir) - - finally: - if archive: - archive.close() - - -def zip_dir(directory): - """zip a directory tree into a BytesIO object""" - result = io.BytesIO() - dlen = len(directory) - with ZipFile(result, "w") as zf: - for root, dirs, files in os.walk(directory): - for name in files: - full = os.path.join(root, name) - rel = root[dlen:] - dest = os.path.join(rel, name) - zf.write(full, dest) - return result - - -# -# Simple progress bar -# - -UNITS = ('', 'K', 'M', 'G', 'T', 'P') - - -class Progress(object): - unknown = 'UNKNOWN' - - def __init__(self, minval=0, maxval=100): - assert maxval is None or maxval >= minval - self.min = self.cur = minval - self.max = maxval - self.started = None - self.elapsed = 0 - self.done = False - - def update(self, curval): - assert self.min <= curval - assert self.max is None or curval <= self.max - self.cur = curval - now = time.time() - if self.started is None: - self.started = now - else: - self.elapsed = now - self.started - - def increment(self, incr): - assert incr >= 0 - self.update(self.cur + incr) - - def start(self): - self.update(self.min) - return self - - def stop(self): - if self.max is not None: - self.update(self.max) - self.done = True - - @property - def maximum(self): - return self.unknown if self.max is None else self.max - - @property - def percentage(self): - if self.done: - result = '100 %' - elif self.max is None: - result = ' ?? %' - else: - v = 100.0 * (self.cur - self.min) / (self.max - self.min) - result = '%3d %%' % v - return result - - def format_duration(self, duration): - if (duration <= 0) and self.max is None or self.cur == self.min: - result = '??:??:??' - # elif duration < 1: - # result = '--:--:--' - else: - result = time.strftime('%H:%M:%S', time.gmtime(duration)) - return result - - @property - def ETA(self): - if self.done: - prefix = 'Done' - t = self.elapsed - # import pdb; pdb.set_trace() - else: - prefix = 'ETA ' - if self.max is None: - t = -1 - elif self.elapsed == 0 or (self.cur == self.min): - t = 0 - else: - # import pdb; pdb.set_trace() - t = float(self.max - self.min) - t /= self.cur - self.min - t = (t - 1) * self.elapsed - return '%s: %s' % (prefix, self.format_duration(t)) - - @property - def speed(self): - if self.elapsed == 0: - result = 0.0 - else: - result = (self.cur - self.min) / self.elapsed - for unit in UNITS: - if result < 1000: - break - result /= 1000.0 - return '%d %sB/s' % (result, unit) - - -# -# Glob functionality -# - -RICH_GLOB = re.compile(r'\{([^}]*)\}') -_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') -_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') - - -def iglob(path_glob): - """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" - if _CHECK_RECURSIVE_GLOB.search(path_glob): - msg = """invalid glob %r: recursive glob "**" must be used alone""" - raise ValueError(msg % path_glob) - if _CHECK_MISMATCH_SET.search(path_glob): - msg = """invalid glob %r: mismatching set marker '{' or '}'""" - raise ValueError(msg % path_glob) - return _iglob(path_glob) - - -def _iglob(path_glob): - rich_path_glob = RICH_GLOB.split(path_glob, 1) - if len(rich_path_glob) > 1: - assert len(rich_path_glob) == 3, rich_path_glob - prefix, set, suffix = rich_path_glob - for item in set.split(','): - for path in _iglob(''.join((prefix, item, suffix))): - yield path - else: - if '**' not in path_glob: - for item in std_iglob(path_glob): - yield item - else: - prefix, radical = path_glob.split('**', 1) - if prefix == '': - prefix = '.' - if radical == '': - radical = '*' - else: - # we support both - radical = radical.lstrip('/') - radical = radical.lstrip('\\') - for path, dir, files in os.walk(prefix): - path = os.path.normpath(path) - for fn in _iglob(os.path.join(path, radical)): - yield fn - - -if ssl: - from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, - CertificateError) - - # - # HTTPSConnection which verifies certificates/matches domains - # - - class HTTPSConnection(httplib.HTTPSConnection): - ca_certs = None # set this to the path to the certs file (.pem) - check_domain = True # only used if ca_certs is not None - - # noinspection PyPropertyAccess - def connect(self): - sock = socket.create_connection((self.host, self.port), - self.timeout) - if getattr(self, '_tunnel_host', False): - self.sock = sock - self._tunnel() - - context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) - if hasattr(ssl, 'OP_NO_SSLv2'): - context.options |= ssl.OP_NO_SSLv2 - if getattr(self, 'cert_file', None): - context.load_cert_chain(self.cert_file, self.key_file) - kwargs = {} - if self.ca_certs: - context.verify_mode = ssl.CERT_REQUIRED - context.load_verify_locations(cafile=self.ca_certs) - if getattr(ssl, 'HAS_SNI', False): - kwargs['server_hostname'] = self.host - - self.sock = context.wrap_socket(sock, **kwargs) - if self.ca_certs and self.check_domain: - try: - match_hostname(self.sock.getpeercert(), self.host) - logger.debug('Host verified: %s', self.host) - except CertificateError: # pragma: no cover - self.sock.shutdown(socket.SHUT_RDWR) - self.sock.close() - raise - - class HTTPSHandler(BaseHTTPSHandler): - - def __init__(self, ca_certs, check_domain=True): - BaseHTTPSHandler.__init__(self) - self.ca_certs = ca_certs - self.check_domain = check_domain - - def _conn_maker(self, *args, **kwargs): - """ - This is called to create a connection instance. Normally you'd - pass a connection class to do_open, but it doesn't actually check for - a class, and just expects a callable. As long as we behave just as a - constructor would have, we should be OK. If it ever changes so that - we *must* pass a class, we'll create an UnsafeHTTPSConnection class - which just sets check_domain to False in the class definition, and - choose which one to pass to do_open. - """ - result = HTTPSConnection(*args, **kwargs) - if self.ca_certs: - result.ca_certs = self.ca_certs - result.check_domain = self.check_domain - return result - - def https_open(self, req): - try: - return self.do_open(self._conn_maker, req) - except URLError as e: - if 'certificate verify failed' in str(e.reason): - raise CertificateError( - 'Unable to verify server certificate ' - 'for %s' % req.host) - else: - raise - - # - # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- - # Middle proxy using HTTP listens on port 443, or an index mistakenly serves - # HTML containing a http://xyz link when it should be https://xyz), - # you can use the following handler class, which does not allow HTTP traffic. - # - # It works by inheriting from HTTPHandler - so build_opener won't add a - # handler for HTTP itself. - # - class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): - - def http_open(self, req): - raise URLError( - 'Unexpected HTTP request on what should be a secure ' - 'connection: %s' % req) - - -# -# XML-RPC with timeouts -# -class Transport(xmlrpclib.Transport): - - def __init__(self, timeout, use_datetime=0): - self.timeout = timeout - xmlrpclib.Transport.__init__(self, use_datetime) - - def make_connection(self, host): - h, eh, x509 = self.get_host_info(host) - if not self._connection or host != self._connection[0]: - self._extra_headers = eh - self._connection = host, httplib.HTTPConnection(h) - return self._connection[1] - - -if ssl: - - class SafeTransport(xmlrpclib.SafeTransport): - - def __init__(self, timeout, use_datetime=0): - self.timeout = timeout - xmlrpclib.SafeTransport.__init__(self, use_datetime) - - def make_connection(self, host): - h, eh, kwargs = self.get_host_info(host) - if not kwargs: - kwargs = {} - kwargs['timeout'] = self.timeout - if not self._connection or host != self._connection[0]: - self._extra_headers = eh - self._connection = host, httplib.HTTPSConnection( - h, None, **kwargs) - return self._connection[1] - - -class ServerProxy(xmlrpclib.ServerProxy): - - def __init__(self, uri, **kwargs): - self.timeout = timeout = kwargs.pop('timeout', None) - # The above classes only come into play if a timeout - # is specified - if timeout is not None: - # scheme = splittype(uri) # deprecated as of Python 3.8 - scheme = urlparse(uri)[0] - use_datetime = kwargs.get('use_datetime', 0) - if scheme == 'https': - tcls = SafeTransport - else: - tcls = Transport - kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) - self.transport = t - xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) - - -# -# CSV functionality. This is provided because on 2.x, the csv module can't -# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. -# - - -def _csv_open(fn, mode, **kwargs): - if sys.version_info[0] < 3: - mode += 'b' - else: - kwargs['newline'] = '' - # Python 3 determines encoding from locale. Force 'utf-8' - # file encoding to match other forced utf-8 encoding - kwargs['encoding'] = 'utf-8' - return open(fn, mode, **kwargs) - - -class CSVBase(object): - defaults = { - 'delimiter': str(','), # The strs are used because we need native - 'quotechar': str('"'), # str in the csv API (2.x won't take - 'lineterminator': str('\n') # Unicode) - } - - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.stream.close() - - -class CSVReader(CSVBase): - - def __init__(self, **kwargs): - if 'stream' in kwargs: - stream = kwargs['stream'] - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getreader('utf-8')(stream) - self.stream = stream - else: - self.stream = _csv_open(kwargs['path'], 'r') - self.reader = csv.reader(self.stream, **self.defaults) - - def __iter__(self): - return self - - def next(self): - result = next(self.reader) - if sys.version_info[0] < 3: - for i, item in enumerate(result): - if not isinstance(item, text_type): - result[i] = item.decode('utf-8') - return result - - __next__ = next - - -class CSVWriter(CSVBase): - - def __init__(self, fn, **kwargs): - self.stream = _csv_open(fn, 'w') - self.writer = csv.writer(self.stream, **self.defaults) - - def writerow(self, row): - if sys.version_info[0] < 3: - r = [] - for item in row: - if isinstance(item, text_type): - item = item.encode('utf-8') - r.append(item) - row = r - self.writer.writerow(row) - - -# -# Configurator functionality -# - - -class Configurator(BaseConfigurator): - - value_converters = dict(BaseConfigurator.value_converters) - value_converters['inc'] = 'inc_convert' - - def __init__(self, config, base=None): - super(Configurator, self).__init__(config) - self.base = base or os.getcwd() - - def configure_custom(self, config): - - def convert(o): - if isinstance(o, (list, tuple)): - result = type(o)([convert(i) for i in o]) - elif isinstance(o, dict): - if '()' in o: - result = self.configure_custom(o) - else: - result = {} - for k in o: - result[k] = convert(o[k]) - else: - result = self.convert(o) - return result - - c = config.pop('()') - if not callable(c): - c = self.resolve(c) - props = config.pop('.', None) - # Check for valid identifiers - args = config.pop('[]', ()) - if args: - args = tuple([convert(o) for o in args]) - items = [(k, convert(config[k])) for k in config if valid_ident(k)] - kwargs = dict(items) - result = c(*args, **kwargs) - if props: - for n, v in props.items(): - setattr(result, n, convert(v)) - return result - - def __getitem__(self, key): - result = self.config[key] - if isinstance(result, dict) and '()' in result: - self.config[key] = result = self.configure_custom(result) - return result - - def inc_convert(self, value): - """Default converter for the inc:// protocol.""" - if not os.path.isabs(value): - value = os.path.join(self.base, value) - with codecs.open(value, 'r', encoding='utf-8') as f: - result = json.load(f) - return result - - -class SubprocessMixin(object): - """ - Mixin for running subprocesses and capturing their output - """ - - def __init__(self, verbose=False, progress=None): - self.verbose = verbose - self.progress = progress - - def reader(self, stream, context): - """ - Read lines from a subprocess' output stream and either pass to a progress - callable (if specified) or write progress information to sys.stderr. - """ - progress = self.progress - verbose = self.verbose - while True: - s = stream.readline() - if not s: - break - if progress is not None: - progress(s, context) - else: - if not verbose: - sys.stderr.write('.') - else: - sys.stderr.write(s.decode('utf-8')) - sys.stderr.flush() - stream.close() - - def run_command(self, cmd, **kwargs): - p = subprocess.Popen(cmd, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - **kwargs) - t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) - t1.start() - t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) - t2.start() - p.wait() - t1.join() - t2.join() - if self.progress is not None: - self.progress('done.', 'main') - elif self.verbose: - sys.stderr.write('done.\n') - return p - - -def normalize_name(name): - """Normalize a python package name a la PEP 503""" - # https://www.python.org/dev/peps/pep-0503/#normalized-names - return re.sub('[-_.]+', '-', name).lower() - - -# def _get_pypirc_command(): -# """ -# Get the distutils command for interacting with PyPI configurations. -# :return: the command. -# """ -# from distutils.core import Distribution -# from distutils.config import PyPIRCCommand -# d = Distribution() -# return PyPIRCCommand(d) - - -class PyPIRCFile(object): - - DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/' - DEFAULT_REALM = 'pypi' - - def __init__(self, fn=None, url=None): - if fn is None: - fn = os.path.join(os.path.expanduser('~'), '.pypirc') - self.filename = fn - self.url = url - - def read(self): - result = {} - - if os.path.exists(self.filename): - repository = self.url or self.DEFAULT_REPOSITORY - - config = configparser.RawConfigParser() - config.read(self.filename) - sections = config.sections() - if 'distutils' in sections: - # let's get the list of servers - index_servers = config.get('distutils', 'index-servers') - _servers = [ - server.strip() for server in index_servers.split('\n') - if server.strip() != '' - ] - if _servers == []: - # nothing set, let's try to get the default pypi - if 'pypi' in sections: - _servers = ['pypi'] - else: - for server in _servers: - result = {'server': server} - result['username'] = config.get(server, 'username') - - # optional params - for key, default in (('repository', - self.DEFAULT_REPOSITORY), - ('realm', self.DEFAULT_REALM), - ('password', None)): - if config.has_option(server, key): - result[key] = config.get(server, key) - else: - result[key] = default - - # work around people having "repository" for the "pypi" - # section of their config set to the HTTP (rather than - # HTTPS) URL - if (server == 'pypi' and repository - in (self.DEFAULT_REPOSITORY, 'pypi')): - result['repository'] = self.DEFAULT_REPOSITORY - elif (result['server'] != repository - and result['repository'] != repository): - result = {} - elif 'server-login' in sections: - # old format - server = 'server-login' - if config.has_option(server, 'repository'): - repository = config.get(server, 'repository') - else: - repository = self.DEFAULT_REPOSITORY - result = { - 'username': config.get(server, 'username'), - 'password': config.get(server, 'password'), - 'repository': repository, - 'server': server, - 'realm': self.DEFAULT_REALM - } - return result - - def update(self, username, password): - # import pdb; pdb.set_trace() - config = configparser.RawConfigParser() - fn = self.filename - config.read(fn) - if not config.has_section('pypi'): - config.add_section('pypi') - config.set('pypi', 'username', username) - config.set('pypi', 'password', password) - with open(fn, 'w') as f: - config.write(f) - - -def _load_pypirc(index): - """ - Read the PyPI access configuration as supported by distutils. - """ - return PyPIRCFile(url=index.url).read() - - -def _store_pypirc(index): - PyPIRCFile().update(index.username, index.password) - - -# -# get_platform()/get_host_platform() copied from Python 3.10.a0 source, with some minor -# tweaks -# - - -def get_host_platform(): - """Return a string that identifies the current platform. This is used mainly to - distinguish platform-specific build directories and platform-specific built - distributions. Typically includes the OS name and version and the - architecture (as supplied by 'os.uname()'), although the exact information - included depends on the OS; eg. on Linux, the kernel version isn't - particularly important. - - Examples of returned values: - linux-i586 - linux-alpha (?) - solaris-2.6-sun4u - - Windows will return one of: - win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) - win32 (all others - specifically, sys.platform is returned) - - For other non-POSIX platforms, currently just returns 'sys.platform'. - - """ - if os.name == 'nt': - if 'amd64' in sys.version.lower(): - return 'win-amd64' - if '(arm)' in sys.version.lower(): - return 'win-arm32' - if '(arm64)' in sys.version.lower(): - return 'win-arm64' - return sys.platform - - # Set for cross builds explicitly - if "_PYTHON_HOST_PLATFORM" in os.environ: - return os.environ["_PYTHON_HOST_PLATFORM"] - - if os.name != 'posix' or not hasattr(os, 'uname'): - # XXX what about the architecture? NT is Intel or Alpha, - # Mac OS is M68k or PPC, etc. - return sys.platform - - # Try to distinguish various flavours of Unix - - (osname, host, release, version, machine) = os.uname() - - # Convert the OS name to lowercase, remove '/' characters, and translate - # spaces (for "Power Macintosh") - osname = osname.lower().replace('/', '') - machine = machine.replace(' ', '_').replace('/', '-') - - if osname[:5] == 'linux': - # At least on Linux/Intel, 'machine' is the processor -- - # i386, etc. - # XXX what about Alpha, SPARC, etc? - return "%s-%s" % (osname, machine) - - elif osname[:5] == 'sunos': - if release[0] >= '5': # SunOS 5 == Solaris 2 - osname = 'solaris' - release = '%d.%s' % (int(release[0]) - 3, release[2:]) - # We can't use 'platform.architecture()[0]' because a - # bootstrap problem. We use a dict to get an error - # if some suspicious happens. - bitness = {2147483647: '32bit', 9223372036854775807: '64bit'} - machine += '.%s' % bitness[sys.maxsize] - # fall through to standard osname-release-machine representation - elif osname[:3] == 'aix': - from _aix_support import aix_platform - return aix_platform() - elif osname[:6] == 'cygwin': - osname = 'cygwin' - rel_re = re.compile(r'[\d.]+', re.ASCII) - m = rel_re.match(release) - if m: - release = m.group() - elif osname[:6] == 'darwin': - import _osx_support - try: - from distutils import sysconfig - except ImportError: - import sysconfig - osname, release, machine = _osx_support.get_platform_osx( - sysconfig.get_config_vars(), osname, release, machine) - - return '%s-%s-%s' % (osname, release, machine) - - -_TARGET_TO_PLAT = { - 'x86': 'win32', - 'x64': 'win-amd64', - 'arm': 'win-arm32', -} - - -def get_platform(): - if os.name != 'nt': - return get_host_platform() - cross_compilation_target = os.environ.get('VSCMD_ARG_TGT_ARCH') - if cross_compilation_target not in _TARGET_TO_PLAT: - return get_host_platform() - return _TARGET_TO_PLAT[cross_compilation_target] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py deleted file mode 100644 index 14171ac..0000000 --- a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py +++ /dev/null @@ -1,751 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2023 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -""" -Implementation of a flexible versioning scheme providing support for PEP-440, -setuptools-compatible and semantic versioning. -""" - -import logging -import re - -from .compat import string_types -from .util import parse_requirement - -__all__ = ['NormalizedVersion', 'NormalizedMatcher', - 'LegacyVersion', 'LegacyMatcher', - 'SemanticVersion', 'SemanticMatcher', - 'UnsupportedVersionError', 'get_scheme'] - -logger = logging.getLogger(__name__) - - -class UnsupportedVersionError(ValueError): - """This is an unsupported version.""" - pass - - -class Version(object): - def __init__(self, s): - self._string = s = s.strip() - self._parts = parts = self.parse(s) - assert isinstance(parts, tuple) - assert len(parts) > 0 - - def parse(self, s): - raise NotImplementedError('please implement in a subclass') - - def _check_compatible(self, other): - if type(self) != type(other): - raise TypeError('cannot compare %r and %r' % (self, other)) - - def __eq__(self, other): - self._check_compatible(other) - return self._parts == other._parts - - def __ne__(self, other): - return not self.__eq__(other) - - def __lt__(self, other): - self._check_compatible(other) - return self._parts < other._parts - - def __gt__(self, other): - return not (self.__lt__(other) or self.__eq__(other)) - - def __le__(self, other): - return self.__lt__(other) or self.__eq__(other) - - def __ge__(self, other): - return self.__gt__(other) or self.__eq__(other) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - def __hash__(self): - return hash(self._parts) - - def __repr__(self): - return "%s('%s')" % (self.__class__.__name__, self._string) - - def __str__(self): - return self._string - - @property - def is_prerelease(self): - raise NotImplementedError('Please implement in subclasses.') - - -class Matcher(object): - version_class = None - - # value is either a callable or the name of a method - _operators = { - '<': lambda v, c, p: v < c, - '>': lambda v, c, p: v > c, - '<=': lambda v, c, p: v == c or v < c, - '>=': lambda v, c, p: v == c or v > c, - '==': lambda v, c, p: v == c, - '===': lambda v, c, p: v == c, - # by default, compatible => >=. - '~=': lambda v, c, p: v == c or v > c, - '!=': lambda v, c, p: v != c, - } - - # this is a method only to support alternative implementations - # via overriding - def parse_requirement(self, s): - return parse_requirement(s) - - def __init__(self, s): - if self.version_class is None: - raise ValueError('Please specify a version class') - self._string = s = s.strip() - r = self.parse_requirement(s) - if not r: - raise ValueError('Not valid: %r' % s) - self.name = r.name - self.key = self.name.lower() # for case-insensitive comparisons - clist = [] - if r.constraints: - # import pdb; pdb.set_trace() - for op, s in r.constraints: - if s.endswith('.*'): - if op not in ('==', '!='): - raise ValueError('\'.*\' not allowed for ' - '%r constraints' % op) - # Could be a partial version (e.g. for '2.*') which - # won't parse as a version, so keep it as a string - vn, prefix = s[:-2], True - # Just to check that vn is a valid version - self.version_class(vn) - else: - # Should parse as a version, so we can create an - # instance for the comparison - vn, prefix = self.version_class(s), False - clist.append((op, vn, prefix)) - self._parts = tuple(clist) - - def match(self, version): - """ - Check if the provided version matches the constraints. - - :param version: The version to match against this instance. - :type version: String or :class:`Version` instance. - """ - if isinstance(version, string_types): - version = self.version_class(version) - for operator, constraint, prefix in self._parts: - f = self._operators.get(operator) - if isinstance(f, string_types): - f = getattr(self, f) - if not f: - msg = ('%r not implemented ' - 'for %s' % (operator, self.__class__.__name__)) - raise NotImplementedError(msg) - if not f(version, constraint, prefix): - return False - return True - - @property - def exact_version(self): - result = None - if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): - result = self._parts[0][1] - return result - - def _check_compatible(self, other): - if type(self) != type(other) or self.name != other.name: - raise TypeError('cannot compare %s and %s' % (self, other)) - - def __eq__(self, other): - self._check_compatible(other) - return self.key == other.key and self._parts == other._parts - - def __ne__(self, other): - return not self.__eq__(other) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - def __hash__(self): - return hash(self.key) + hash(self._parts) - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, self._string) - - def __str__(self): - return self._string - - -PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|alpha|b|beta|c|rc|pre|preview)(\d+)?)?' - r'(\.(post|r|rev)(\d+)?)?([._-]?(dev)(\d+)?)?' - r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$', re.I) - - -def _pep_440_key(s): - s = s.strip() - m = PEP440_VERSION_RE.match(s) - if not m: - raise UnsupportedVersionError('Not a valid version: %s' % s) - groups = m.groups() - nums = tuple(int(v) for v in groups[1].split('.')) - while len(nums) > 1 and nums[-1] == 0: - nums = nums[:-1] - - if not groups[0]: - epoch = 0 - else: - epoch = int(groups[0][:-1]) - pre = groups[4:6] - post = groups[7:9] - dev = groups[10:12] - local = groups[13] - if pre == (None, None): - pre = () - else: - if pre[1] is None: - pre = pre[0], 0 - else: - pre = pre[0], int(pre[1]) - if post == (None, None): - post = () - else: - if post[1] is None: - post = post[0], 0 - else: - post = post[0], int(post[1]) - if dev == (None, None): - dev = () - else: - if dev[1] is None: - dev = dev[0], 0 - else: - dev = dev[0], int(dev[1]) - if local is None: - local = () - else: - parts = [] - for part in local.split('.'): - # to ensure that numeric compares as > lexicographic, avoid - # comparing them directly, but encode a tuple which ensures - # correct sorting - if part.isdigit(): - part = (1, int(part)) - else: - part = (0, part) - parts.append(part) - local = tuple(parts) - if not pre: - # either before pre-release, or final release and after - if not post and dev: - # before pre-release - pre = ('a', -1) # to sort before a0 - else: - pre = ('z',) # to sort after all pre-releases - # now look at the state of post and dev. - if not post: - post = ('_',) # sort before 'a' - if not dev: - dev = ('final',) - - return epoch, nums, pre, post, dev, local - - -_normalized_key = _pep_440_key - - -class NormalizedVersion(Version): - """A rational version. - - Good: - 1.2 # equivalent to "1.2.0" - 1.2.0 - 1.2a1 - 1.2.3a2 - 1.2.3b1 - 1.2.3c1 - 1.2.3.4 - TODO: fill this out - - Bad: - 1 # minimum two numbers - 1.2a # release level must have a release serial - 1.2.3b - """ - def parse(self, s): - result = _normalized_key(s) - # _normalized_key loses trailing zeroes in the release - # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 - # However, PEP 440 prefix matching needs it: for example, - # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). - m = PEP440_VERSION_RE.match(s) # must succeed - groups = m.groups() - self._release_clause = tuple(int(v) for v in groups[1].split('.')) - return result - - PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) - - @property - def is_prerelease(self): - return any(t[0] in self.PREREL_TAGS for t in self._parts if t) - - -def _match_prefix(x, y): - x = str(x) - y = str(y) - if x == y: - return True - if not x.startswith(y): - return False - n = len(y) - return x[n] == '.' - - -class NormalizedMatcher(Matcher): - version_class = NormalizedVersion - - # value is either a callable or the name of a method - _operators = { - '~=': '_match_compatible', - '<': '_match_lt', - '>': '_match_gt', - '<=': '_match_le', - '>=': '_match_ge', - '==': '_match_eq', - '===': '_match_arbitrary', - '!=': '_match_ne', - } - - def _adjust_local(self, version, constraint, prefix): - if prefix: - strip_local = '+' not in constraint and version._parts[-1] - else: - # both constraint and version are - # NormalizedVersion instances. - # If constraint does not have a local component, - # ensure the version doesn't, either. - strip_local = not constraint._parts[-1] and version._parts[-1] - if strip_local: - s = version._string.split('+', 1)[0] - version = self.version_class(s) - return version, constraint - - def _match_lt(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version >= constraint: - return False - release_clause = constraint._release_clause - pfx = '.'.join([str(i) for i in release_clause]) - return not _match_prefix(version, pfx) - - def _match_gt(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version <= constraint: - return False - release_clause = constraint._release_clause - pfx = '.'.join([str(i) for i in release_clause]) - return not _match_prefix(version, pfx) - - def _match_le(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - return version <= constraint - - def _match_ge(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - return version >= constraint - - def _match_eq(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if not prefix: - result = (version == constraint) - else: - result = _match_prefix(version, constraint) - return result - - def _match_arbitrary(self, version, constraint, prefix): - return str(version) == str(constraint) - - def _match_ne(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if not prefix: - result = (version != constraint) - else: - result = not _match_prefix(version, constraint) - return result - - def _match_compatible(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version == constraint: - return True - if version < constraint: - return False -# if not prefix: -# return True - release_clause = constraint._release_clause - if len(release_clause) > 1: - release_clause = release_clause[:-1] - pfx = '.'.join([str(i) for i in release_clause]) - return _match_prefix(version, pfx) - - -_REPLACEMENTS = ( - (re.compile('[.+-]$'), ''), # remove trailing puncts - (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start - (re.compile('^[.-]'), ''), # remove leading puncts - (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses - (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) - (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) - (re.compile('[.]{2,}'), '.'), # multiple runs of '.' - (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha - (re.compile(r'\b(pre-alpha|prealpha)\b'), - 'pre.alpha'), # standardise - (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses -) - -_SUFFIX_REPLACEMENTS = ( - (re.compile('^[:~._+-]+'), ''), # remove leading puncts - (re.compile('[,*")([\\]]'), ''), # remove unwanted chars - (re.compile('[~:+_ -]'), '.'), # replace illegal chars - (re.compile('[.]{2,}'), '.'), # multiple runs of '.' - (re.compile(r'\.$'), ''), # trailing '.' -) - -_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') - - -def _suggest_semantic_version(s): - """ - Try to suggest a semantic form for a version for which - _suggest_normalized_version couldn't come up with anything. - """ - result = s.strip().lower() - for pat, repl in _REPLACEMENTS: - result = pat.sub(repl, result) - if not result: - result = '0.0.0' - - # Now look for numeric prefix, and separate it out from - # the rest. - # import pdb; pdb.set_trace() - m = _NUMERIC_PREFIX.match(result) - if not m: - prefix = '0.0.0' - suffix = result - else: - prefix = m.groups()[0].split('.') - prefix = [int(i) for i in prefix] - while len(prefix) < 3: - prefix.append(0) - if len(prefix) == 3: - suffix = result[m.end():] - else: - suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] - prefix = prefix[:3] - prefix = '.'.join([str(i) for i in prefix]) - suffix = suffix.strip() - if suffix: - # import pdb; pdb.set_trace() - # massage the suffix. - for pat, repl in _SUFFIX_REPLACEMENTS: - suffix = pat.sub(repl, suffix) - - if not suffix: - result = prefix - else: - sep = '-' if 'dev' in suffix else '+' - result = prefix + sep + suffix - if not is_semver(result): - result = None - return result - - -def _suggest_normalized_version(s): - """Suggest a normalized version close to the given version string. - - If you have a version string that isn't rational (i.e. NormalizedVersion - doesn't like it) then you might be able to get an equivalent (or close) - rational version from this function. - - This does a number of simple normalizations to the given string, based - on observation of versions currently in use on PyPI. Given a dump of - those version during PyCon 2009, 4287 of them: - - 2312 (53.93%) match NormalizedVersion without change - with the automatic suggestion - - 3474 (81.04%) match when using this suggestion method - - @param s {str} An irrational version string. - @returns A rational version string, or None, if couldn't determine one. - """ - try: - _normalized_key(s) - return s # already rational - except UnsupportedVersionError: - pass - - rs = s.lower() - - # part of this could use maketrans - for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), - ('beta', 'b'), ('rc', 'c'), ('-final', ''), - ('-pre', 'c'), - ('-release', ''), ('.release', ''), ('-stable', ''), - ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), - ('final', '')): - rs = rs.replace(orig, repl) - - # if something ends with dev or pre, we add a 0 - rs = re.sub(r"pre$", r"pre0", rs) - rs = re.sub(r"dev$", r"dev0", rs) - - # if we have something like "b-2" or "a.2" at the end of the - # version, that is probably beta, alpha, etc - # let's remove the dash or dot - rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) - - # 1.0-dev-r371 -> 1.0.dev371 - # 0.1-dev-r79 -> 0.1.dev79 - rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) - - # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 - rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) - - # Clean: v0.3, v1.0 - if rs.startswith('v'): - rs = rs[1:] - - # Clean leading '0's on numbers. - # TODO: unintended side-effect on, e.g., "2003.05.09" - # PyPI stats: 77 (~2%) better - rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) - - # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers - # zero. - # PyPI stats: 245 (7.56%) better - rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) - - # the 'dev-rNNN' tag is a dev tag - rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) - - # clean the - when used as a pre delimiter - rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) - - # a terminal "dev" or "devel" can be changed into ".dev0" - rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) - - # a terminal "dev" can be changed into ".dev0" - rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) - - # a terminal "final" or "stable" can be removed - rs = re.sub(r"(final|stable)$", "", rs) - - # The 'r' and the '-' tags are post release tags - # 0.4a1.r10 -> 0.4a1.post10 - # 0.9.33-17222 -> 0.9.33.post17222 - # 0.9.33-r17222 -> 0.9.33.post17222 - rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) - - # Clean 'r' instead of 'dev' usage: - # 0.9.33+r17222 -> 0.9.33.dev17222 - # 1.0dev123 -> 1.0.dev123 - # 1.0.git123 -> 1.0.dev123 - # 1.0.bzr123 -> 1.0.dev123 - # 0.1a0dev.123 -> 0.1a0.dev123 - # PyPI stats: ~150 (~4%) better - rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) - - # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: - # 0.2.pre1 -> 0.2c1 - # 0.2-c1 -> 0.2c1 - # 1.0preview123 -> 1.0c123 - # PyPI stats: ~21 (0.62%) better - rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) - - # Tcl/Tk uses "px" for their post release markers - rs = re.sub(r"p(\d+)$", r".post\1", rs) - - try: - _normalized_key(rs) - except UnsupportedVersionError: - rs = None - return rs - -# -# Legacy version processing (distribute-compatible) -# - - -_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) -_VERSION_REPLACE = { - 'pre': 'c', - 'preview': 'c', - '-': 'final-', - 'rc': 'c', - 'dev': '@', - '': None, - '.': None, -} - - -def _legacy_key(s): - def get_parts(s): - result = [] - for p in _VERSION_PART.split(s.lower()): - p = _VERSION_REPLACE.get(p, p) - if p: - if '0' <= p[:1] <= '9': - p = p.zfill(8) - else: - p = '*' + p - result.append(p) - result.append('*final') - return result - - result = [] - for p in get_parts(s): - if p.startswith('*'): - if p < '*final': - while result and result[-1] == '*final-': - result.pop() - while result and result[-1] == '00000000': - result.pop() - result.append(p) - return tuple(result) - - -class LegacyVersion(Version): - def parse(self, s): - return _legacy_key(s) - - @property - def is_prerelease(self): - result = False - for x in self._parts: - if (isinstance(x, string_types) and x.startswith('*') and - x < '*final'): - result = True - break - return result - - -class LegacyMatcher(Matcher): - version_class = LegacyVersion - - _operators = dict(Matcher._operators) - _operators['~='] = '_match_compatible' - - numeric_re = re.compile(r'^(\d+(\.\d+)*)') - - def _match_compatible(self, version, constraint, prefix): - if version < constraint: - return False - m = self.numeric_re.match(str(constraint)) - if not m: - logger.warning('Cannot compute compatible match for version %s ' - ' and constraint %s', version, constraint) - return True - s = m.groups()[0] - if '.' in s: - s = s.rsplit('.', 1)[0] - return _match_prefix(version, s) - -# -# Semantic versioning -# - - -_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' - r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' - r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) - - -def is_semver(s): - return _SEMVER_RE.match(s) - - -def _semantic_key(s): - def make_tuple(s, absent): - if s is None: - result = (absent,) - else: - parts = s[1:].split('.') - # We can't compare ints and strings on Python 3, so fudge it - # by zero-filling numeric values so simulate a numeric comparison - result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) - return result - - m = is_semver(s) - if not m: - raise UnsupportedVersionError(s) - groups = m.groups() - major, minor, patch = [int(i) for i in groups[:3]] - # choose the '|' and '*' so that versions sort correctly - pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') - return (major, minor, patch), pre, build - - -class SemanticVersion(Version): - def parse(self, s): - return _semantic_key(s) - - @property - def is_prerelease(self): - return self._parts[1][0] != '|' - - -class SemanticMatcher(Matcher): - version_class = SemanticVersion - - -class VersionScheme(object): - def __init__(self, key, matcher, suggester=None): - self.key = key - self.matcher = matcher - self.suggester = suggester - - def is_valid_version(self, s): - try: - self.matcher.version_class(s) - result = True - except UnsupportedVersionError: - result = False - return result - - def is_valid_matcher(self, s): - try: - self.matcher(s) - result = True - except UnsupportedVersionError: - result = False - return result - - def is_valid_constraint_list(self, s): - """ - Used for processing some metadata fields - """ - # See issue #140. Be tolerant of a single trailing comma. - if s.endswith(','): - s = s[:-1] - return self.is_valid_matcher('dummy_name (%s)' % s) - - def suggest(self, s): - if self.suggester is None: - result = None - else: - result = self.suggester(s) - return result - - -_SCHEMES = { - 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, - _suggest_normalized_version), - 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), - 'semantic': VersionScheme(_semantic_key, SemanticMatcher, - _suggest_semantic_version), -} - -_SCHEMES['default'] = _SCHEMES['normalized'] - - -def get_scheme(name): - if name not in _SCHEMES: - raise ValueError('unknown scheme name: %r' % name) - return _SCHEMES[name] diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe deleted file mode 100644 index 4ee2d3a31b59e8b50f433ecdf0be9e496e8cc3b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91648 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe deleted file mode 100644 index 951d5817c9e6d81c94a173a0d9fead7f1f143331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168448 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 diff --git a/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe b/venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe deleted file mode 100644 index 5763076d2878093971a0ef9870e1cde7f556b18b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101888 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

    Xs&QduG)yk* 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class.cpython-310.pyc deleted file mode 100644 index 59e327fbc68a6c2acbe054ca850855210124b29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13219 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 N^_pHYmW|`3{|4NTf205a diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class_list.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_class_list.cpython-310.pyc deleted file mode 100644 index fe39cede29f38ff2c12670f06d747a0d3e59f8ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6785 zcmeHMOKcm*8QxtkUn|P5D1IjP)(+A#ut+OL`cPdXfnytn8z!&}AJ_z|6=x)^yxgT{ zhiXL7KvDTr^w3ieMGsbQy7k&a554)`+oA;u^ibp+pogMu`u#KHlAe%#@a-wE8?x-%B;x|E${v0h&b~Ezf9xN=$SomxFM(8KW4}(PZe%AQ-{>?@A{(6wO zE$Veq@w+m1_eq^Zkx9L#*nf|&9?Eq!@WU7amo8_4RHD^ewf(5;hvAl9EX^fS^yWg4 z^`pI%e%5pzED*ULap_m>bOr$Q24G3^f#mHZwI2o%OG|BxV7~O54#qstcoGH3Q52~t zp=h+IJ^WGK!gB*pvVo$XXJ!|}rLk>1&iC_u!-I~Y1O!k*zfjt$#7NW&eSGhl!tGP5 z*tbxY`WT14cltTB%6*JS>uTRd%VFjcv=<_=diA{rr8BzouJ5*E#zUy%Y7hb2K{V8b zMs-FIwdv_FZuz0N>5If`jiWiOc;nnDc$z(VPw}VhWel2S0V#Vshyf7Ls;pX0URDlHQ$41ZLohk)@Vp`>qY7!aE2{{`K* zxl9z2$C$0{7W8Mz7Sl`~8DS{Z0Hp(I>s1HfhU}BpI&b^g(t>vcPrw^xx~SWSys+{E)G>0+VWJ3mF@V>GpB*ziYndK9i`4`nt62EqRm zu(kA(*wPM^sQwyFuZpIQFZ}j6j{YaW+K;P-cnu=2S{hc$=#mMYz}6?|QrL2w18tHx zK?|9^zh$OKS^CUUOo8MVF+Y@AQ2tZnnBrqWNibJ+e| z@6VZX9(vf3TK+fu)xcCMXh_5(VM>$!NLbjy8?F=@%^&earv^_ z?gAMU#;tI7xe-TvxoWF8pm|dJYcIit0Wk^YEBBN-56Ge16aoPT32%sdlGmh7rM@*h z3001j;jXR2uh$jSp)P+AL_gr&t_|bsZ-458v zStuCUbkkDbHhxGg6pEE%xCoE&5^Wd22jh{8M<*5NC1Fp@*TY`z0R5 z5vRNd2Na2szPlT9b*0Rl9iJQxdFa?iP7=8PPkB{~<`K8ZMonb^DB z$LV(Pp-;D3tC1FE?9u#PD=n`3i7%xP$V4K>OwG?Hc$t>2g?@X5`PX-8VS?C6qj!0V zH6AQlyQUHr$#qopM78$8w7#9udIniH(0d$o=guhV&nU`Qk<3)I+l?>im})_xYHy$k zvTcf7CMXvd@a?yFRGd*UPkv>a)fwcTg3r@3#tRkgq_cw@qNhw-T3kb32@FY{APJ&G z`caFgHpNnDuI+cko5TH6n^>q4Db>6(NNE8vLpPMEtrjr7G_UT^lXMZQcZe>EMQv-& zawuVe#D!&6{_WUD2Cafs`Il3$t=`##nZ1vzlss0*rpv5G^;2ud*dbh*z1ldg1~E_; z(qwrC3V{^ps=2h#=^#>)X|aO z)dgO`AVu-%TNIZn8kSYIVp$Wkj7!2544q~WDOp6P^1R<;gd(P7O|^={ar>+yDUu@R zJStEmQ$mrFB3%tY92nX+seDLTc56&sMHi`(Rd*$p>w}OHx{CA(!aYB{wVM+Jc0sEv zM(*m{VVcKyE+%l27CetX^1MG_v`R}kmTexJ&Q(3~m5-5A$9N}0$3e$XnO!={eeo`x z;VKn-Jup!nanE~3pT3P^Dhl+NYQ90g>Isrqgm~BUQpfXvy>3YLis#X0gD*wT!~X{$ zvbV5mbCz_BvQ6A0wLFf#v@|f1TPkgn77`>V!B(>NqolA#u)+@I62*H|e20qBK}PpY z5*5Xt$t@Hm!#1sgRkEO|mRb1csOA){Iq0zCnAXhTJv-JeJ7&o#oi5oWyHZr*ua?C3 zY0nyp)Dm2fEofdCB}Qxd#(;majQs;cXM_v-GNNHLg=m;;&BE(sA`=R*Z43J&MOv}u Ga{mEsY$;s; diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_persistent_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_persistent_volume_source.cpython-310.pyc deleted file mode 100644 index 2ebb1069eeca2441c1c78eac537334f79b972a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8423 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_volume_source.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_storage_os_volume_source.cpython-310.pyc deleted file mode 100644 index 9c17eeb885c0b503a7b3da697808d76a6c168923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8087 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 SN=ntcPR*;~LT1r9Rr)vjh_zb) diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review.cpython-310.pyc deleted file mode 100644 index 891bce4409d573045ada2faa5eda6572990b9155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7461 zcmeHMO^n;d6(%W4qPSZB#qnPfo3T?TO1)Ax=})q?gBXqzxJKl{>-r$H;Bq;$yR<1% z9*(wILGB^zQ-K1#6)1YJfn3}I1&RU%3iMK-hn@=b&_j4CS|C8q0eWcBrr(>9wDPW$ zT^s2w6gcDz=jY9v?|n1xDV?2l4O~Anudn>^Im7q|WyUWXnYVCf=aDd@WiXRjvDq@! z(`s4jS!fmTEW~!Z*eaUFy9Tpa@t(noytG+pm6^3@)Jna7x*o2p-DNHkE_vpvd^7bJ z&q5J(WRxaeN2Kc!tWh% zq`Hz!(>NPu<_6uQqUL#Lyd=F7EO?i{{>r=_{l*&i*15=N=yb)C$kI?3zjMW7Y1nP^ zL@s!O$2`dR+f#!^6&CF*nrO8UP+Qp z%c3g2odOZk<1CVD?e$RYAn68iyrDbG3z-zH>dpCUO3e4T3|hx0O1;?OVe6U6pJX7r zS*@7Q0LA_Qak+gvN?7i+(IpFHklPu0$V-{3+;UO%rpBfqaELM`4kZ;N&5-iLi{35V zmvCo4MA9!Yvx_#;*fj2z`lY_%!)TELQ%GU3NNtrCRf_s3DfdyUYl<^{$~k@1M(*Xl zg;lw3&^>B8|h3Rtx)BsP^2N3GHTp@J!@bf2$!tRbyAi!)_Jnt zh@<63XG5-~$!qobR~lI)`CKOmZwIS9Yup}DVIzzqP)$QA22JPvOdEwCD68;=GK+d= zBX@j1N+Rj|uR)UREE2~mnfU3H-b^ZS=&5t2YucanPEK5p`mnpuL|4O$-svVZeM;Et z8@CLssu_HY;&-{sl(~#8g=S9}>Eux+aWCx#Fx~;g2XN3G4-5q0$ig+=4o1BT-Vr>5 zsuYJ(aRB00hFSL(xuAw#ww88d<^ed!O3-(ht|n1$)EmY~mHaWbmrMeH5?fLbd+R~m z<>$~P^V-1%8WJyg-DIo>RVAx?@1=sH;YzwiG}wvifI&S<8`zE7U98du-V!OIWiXe> z8jP>=7$8`k3q-gEEQGQvcmryjQ^F>+F=X{NJA+B4T>(Ozrnm*c(KaE9G4i9Hx%U;G=PJqMc#H8vL4eRTF@O&SVtRJ?w9@diq@ zsiFi;G#71E1yu}bi6{k(!G*55BGR_%g(s|&f`e2>Zv-Cbza4>P1;5h;MG<4wy-Ptt zr*Eilld9@@kVfQ%Oi1L(7^K{CS*u_Ar4h&bj&}XeRAsdjX9m9n!XDn?2}#o9SxU z063Fq=7d^WO*85sy^Ut5EXFO4BiW5)dcPhWe};$7$7Gq&4*SR+{$!nv<~`WJ$Gw!% zIM~8xX?l|^hx~^3aqE5DnRZGXO1GQ+^nNkgw}(x3(T=-iK?@oO!-g6Q!`v?2d_Eo~ zs--EO!NiCAk8-ZI0fWju7%IoD>_x~o!bi;% z`!LIi_#k)l$Mo@8B-5Ccgq(_u>@-@E|8UC`Rpnh8qAC&5*fc*d)v*s=C47rQ@0TO& z>|xeBaYKzXX7Zrfa931wJS1zzlBT{ zT=-(J`2=0<4V|jv5kA3R`!Ust_@qe4hxAe5^V!Kezm5e=Md)Df@BL;Ae|wqP1O%#P z0}Sq^izh+hqq=E|Q<(h_E~Jg^o*I??ipmk+eROxDBR64)oUrUCNFw8|DUJJx{M@o0 zm~R{3zwkZlu64H{5%1|+o7P=h+I?FVH!X2m79}D^%(`dv?M>J+EZI75+;L>NZ?ghw z)cf{*=K(o(x|~{8P<~NX(9+f|@4F9-@z#hb4eIxa6NPgb;BDetiVz zIG{5+i$b}>01BASBF&37Jqi9{CdRJxF}nx&(5GmI)y&H>^{M?sD=)7FSsdd1N8EjmScKoABZVeESn_#Tr%f$Y-`$n?Y&ke zp8H&l?@%rMg`p5mysFWC-+Ev?Abgp<`Z&G@-rmU18wHuj*;C-F74lN21D{al|q0L5#v819^OIoHS z?Bw4-)k#cAfkT>@@BbAwlst|#?YK9rx`Q&wtdvA2@dBKh5@wZ^X#JS>Q>lGxO{Qs+Y*6v&IH&&4*tVE{9%?~K&R9EdOTDt^pzVGL*?*oY4nBJ?tPXi9Vlzkt6Sz+aB=(#mZHb-$s?vtTDg|gfk zFz1Gf-r;`+M6RJ-+5)!yx1cetp!7}p`YlQ>P_i{6^`^XUS~d#hWY>{6hHY9U%dud- z^eg?_s%*Wxj&&5q?YgElGxn??k20H{RsD2a=a^$VcD1ZvQFFva8vkoZa!YXWB3@dj vwnFH2eX_zIfn$HN>38W}a*EFR0lDV~B)|m7AwiHhhX9EI9|SngSKZ_+#m6os>tYhq zGySTruKKFFyE>ekD;W5FVy@PI;~2)@C^Pu8kvWeiI*WuERfCz#YM511y{)RH-l=K| z?^MHXrmJbwxNI<+rEeK5%`-cxYL;1RMlsX*yx`#XW_z8BfJ+_~RK5~Aj7K%$x1=8i zPD_MaKI6!n)QEQh+048um$ z&n)%Ggrev;&pJVP!&`AKz4Fqs9{uVjcec2QXy~x+NMvcK3vXX>SXgT}c_3FD!5iF* z_|kIeo3ARKdt4~iRuWEn!|#q*lDxKA_!N>eDn&D%dp!*5{ze;@L~M|FtEs%fES4gXvJC#&UuCK`%dtEwuo*VX=2S_VEwKaa;4QP7;aPTw9lmAk znAIH5UCXm0NiNG4*kh`uzze83n&h(V7(1?NX7~(hP9(W3dz?L?YG(N?YMxATS@slr zTGh<)Inb#@_l@L zQ0(NB@9MF4mn&hg%A>F?YW#wf!e4L01gZ<~E{~SRDG(@T;xzwQ3NOxVh_Ky?;$uM= zxS~hH^%5fSk#U8ow$Ea_9dRMjK$XZKsXhi0qvKT%_X+HBCi2vYoI|CSL)!n*w}t0* zJkcjex>;tn4Uv_`j&U>F&2|kJ&H*W~ixiFlsjbqqN;4`&FO=uHXxlc$sV?R6UGzb2 zscRuu=%O!j-|D82o9TiEa<6r5Fc@Y}pU`wqGe85H!j7cq6QN4R^~Eky{(I-ZKyaQ1vdS_li`5E1UUskGT+rlF&EnrZ`60yIPE2CQfoWTxvn4h(sf?}J5dQq&dQkh z>y*Cmr?MQq?|TZS{bgryq9RLu(lxlv87XU4I@FFI z-ed9@t-L(hRuHFg|-(MGfwmjiAwI&~pQm4>qMI3{) ziEtN7fLXnu{SXrezALYK)EwwIZHWGuFT)F%CN%RYv7cAlVm| ze@$RHVMTukoF)jk&lNv1`iYEs&UwOiGvNY`d7k7k4u`bm_z52EopYV#$=-Pa|NBDo zUkNlPP?$o(gD#4r|aULKtF zMA`3LxrhxeR^+A%hB)4ONSj@(-Gbj}_ZDomi5{AKLg79~`cTXaqZ5bjggPALK@!S1 z2T3R6-%_PosGph)MsW22;G1p^yXN``M5z5H2G;1Dj)NhEBvRDN^Pmtb;u(mk4?Y!8 z7y=)a{f1)V;S|RHVjj7O&JD6gzZ^_3PWt;ydWH=pb^VVnU00 zleBn-a2u#28xC%Pc%y&n#q&ZeBm0N}q)D(jgRSnk;t zF|Q)b4-#ld)Hcqz7NM8Eagm;ecfC~h2Pz*iE;_u?o|w+i(Jzqr#!XWiw-JQ9X5BF_ z8XtV`N7ha2W=bOT*0px5o3^yOwoLC>Vo|0g!fnjDWpwQwYsbX-+d6C9$jK~1bSbnb zb?w`^J9IAB<E3ty43%!6=yfSh@z?DS@b}h z-u!q-l5y^A!)vZH@7!OAFhw7Z8l9IX8$*wF>8uJLM(6OM`>P=)vwSLH`2=GAVEYi* zPn}ScIH4v`$5o1&f?fF(#$+ghLVZ1lEV#E3vTF`aK)isuzvGEW>$B$3FKx3pgD|uI zahykcL4Bflu6Kjs6566TyTK*NB`)}pA4JkabSk##{1vB~UQ0X=T59~*CP~I=MWvWl z=dd_~y-vF!V_T6h-8jAFHQIcbGm`lqi8Dg8Z7o;@69GR204;O&e+7HKm&;hQUlcO7 z)p=%LsgH=4?yz2`A?V1XQGVOHW85K}nVr%g&fpd)QXn`yc!bcL-kkIot7tmTpHm=~Cg-~UMGM7K&e}V;s+*6v_EeuM+L6P|ObIiK5Y;Dql6bo& zrPt}|&l)gh(dLd{ch*C>>4fTL2bPRg5xYLG@y6Yhpy03|>PoD4b+{=`qdjgi?%zHj z2=DS6uKPJ!s~~T|vdx2g%2;=J=-H&yY+g(tGif&J%7|ukRlG)1q1)3j%m>_czo4q` zBiRcYu1ige*^2%Z7f6wT*F<4la9tp?-JtJT*QHT=HCfliB_=d}2IQ-AWQgk8$tCN3 z3}tby=Tf&-Og7F$xEp|&RlG!_hxeC%qSKwM9w$D*=o|0X~s4o@JA|=u&(T|bj z4BNCaR?dQ9>wo5+Rp@_PX69ZYZ#@CiFBD8`X5gJi9%Xj_Jy4&U$sNzxIeRv%08`9~ zi^R)!ki?eY;zfK^Pww7Yl=Q6y?urNQVf95%Mq^O}Z_H${1ZW|jBVQX)aND+Wg&giI JX03(P{{b&qU7G*^ diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_access_review_status.cpython-310.pyc deleted file mode 100644 index f46139d099775c0ad41694692baa895c47f09448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7259 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 diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_rules_review_status.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_subject_rules_review_status.cpython-310.pyc deleted file mode 100644 index 9355681d8c31f104f8ce35c6d8077cc4944369e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7854 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 Z1LO@0-y<-U6bNvgf>*%(#*A|^^B>#i#@7G< diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sysctl.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_sysctl.cpython-310.pyc deleted file mode 100644 index 3dcf9b6e3c406b6e8f4786512baf7f685d2c2765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4093 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 IY@N#e7jfjev;Y7A diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_tcp_socket_action.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_tcp_socket_action.cpython-310.pyc deleted file mode 100644 index 865520774fd1be3307ac7cbb43fa3a2f81f8fe1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4508 zcmd5=&u`n-9VZ_tiK1o4=~B;5v6bkCqH1F)Ug2T$vYaYC6*SHFY|)lT z=JCm>1^F@?7_jXy>^STYAAQ*$#KSH-Hg0qgepK1#N0$w=E_z$m|;d_TTFKHnd7 zGCS)Uc>ZiY-}&oJ!}vQ5EG z+Bqeo>o0C>C=qtt*N~jis+;-jgCyRGcKcuo*M&5F`LQtg1SR_eDq%px28p+ARSnL# z#qGbaHpI%yx>w@2xx=d`X1gpZ+~qST#~zDm3a#gR1671z)bd@gq0C^)_F(*!zGp5T$v+9|H;1#v&OQ(RK~G!WDTvM z;REBSp#s!+i`pJyu5ZfQLmHKa40V~C5D^>_*$o^iXw@_~XXP-DVakv783s zey}UD=Ki_WHp6ZNt7vM*uyw^(Vd`fZ8h)U$(MS(-$M>T+Qog?oDzdjwIjn5rr)%oF z=HT{(%o^iup@}Wyhx$}VTVIeyhsK@(shfk>kA=!KFi2K~2?K|d=T0+zaz{_K+X=dB z-Y@8YIOquv7=|WdfC=3@q`aWtrE3y>6GY}cdDgh@#5E~YU&dq_!uw`a5kd5!P|no z3@wmByeqsFg6)r2S3h3GIzsn&RS!u{!Nn{=qh$f%?oaV`QOv5u#ay_2k!!Gg?d#0>uuZ;^7!mRCAK7APg7%bF_5E{Fmyo)G+?ycVTGGTXX~K8#MW9KyTd#>reW296w=o3OHqwvY z6~g5r-VIPR5NhVaziqQVgX}N*Jg;KCq&-Yc7-B&WAeAIoeSdC~1oM(UrC!pJAumgjA^7LEKEm|#l1Bek%1GAxL>c)Vo84kA@*5lZ z4l`?Cy7t^?RA#k*xn-LTmadidgjgw6)ySShr$F^9c50jwuFOH>GOmy>Ag9CkN(!ox zq-j$df7fWx)vdgordXx&N(u|^1*(w!6c?PA0RS9%Oneba=Gb6yD&1H#K{jpBWK%W@ zxEcgk5WM(E`wb#t%L`%-AEN2mLNNFcOQ!_`$|i{^-~TOEXj&XLJ$o#cO~eHp#@%`NOeW0%2rGCx#>88<}itpq58e07x zj%?48aYfsGC490-0($O@+~c9nZS!)5Zx@JE#|N^u0xTa zYoKxr+hk?tFthw6TGVcd&B0V%*JLwA>&!Zfj_ugBidJmhk*jp}2dHu;g?tB{_PZBf sM2#ZE;a?D!KJWF%outTApkoSU@WX|4?vvxoXobxj*D)PdW4EmT0F9J#ivR!s diff --git a/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_spec.cpython-310.pyc b/venv/lib/python3.10/site-packages/kubernetes/client/models/__pycache__/v1_token_request_spec.cpython-310.pyc deleted file mode 100644 index a937c1f8c75a0052416c186d5c2105574c13130c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6246 zcmeHL&5zs06(=c5qO>30b)1dYP7@+&lPdK}-lPT6g=@rh93u!I7hc0a)dpNHXSAYM zBIV&|?G@xp*S!=d&_ho}ih2({xahx;{t>+Pl(T^z3Z&`p%}A6iY5ma_=%Ljvha7S~ z-n{v}-@NzYrKPfg-|x(u%`evtC{jkGSw99(NDj8(kjx-O#Qy!TIL4Mrm$Oi+&C^qL{HW)*+lP9veyJTM@@I(@pEuTSZ~i#$MeN4z9Ue$b z!v&85p60?xR&r^{@3D|xBng6~Hj07G%$^~N(l|06*aLfDcrY-O*ngBTE|h44GC!cQFu<3d zDcpgDT5*6Ds8t3z)Es7R!%VR=R=+m8Gwz1#yPcTvHten$MgVabjX+IR+G*Q4bqKKlBPwj-an^Uia zgKv)wv4q>-@6}pyhu8LcVIbmwOBvSoKTK*E6r>RCZFFOn)DC!bP-};~weF#8#nA`V z&5N}plzgM>2mAgWPip%a_tb(m_F2}HBG7fylZ0UGvx2af0K?VpVd{8Z7=_aFY7iqi zhr+Q6CjNAZyMvlzmQDMc{`pyLS4aH=6MaWNdZvp2@PrgGFzy)GFw=hz+P}_aqQIOf zT2m7YXwC%lSdDo0$_UA>FSr^G5a$uYKkRUb@)75$#aG=cpt>OJl4j_O@2dB1r(0{4jznesnlm>UixW zB~f?}i|cfO2N0Co3inztj6K1*>LF~Vvl3Q(bB3XZNQe`vL_GNxMkDEg=uPd`oFnv6x~$`cg4P3FvujibdR%spw*vszfs%;d(+AT`2WmpM#!k z838pK{pgu4!e{ap3c}|d%rXEifv6Ux#jGRq7p5X3kPon%^S_NQ+b@M(eFoD?u8h?A zf3*IW(AxEd-xWnRBUw~ zG}bh4dkN?WrxV6d&Qw~yO(R_s0>=xPM8(o3K{hbYE?~GjFth(< zM#|GCp5~PoGUzefpW=ppV?;6?`i&@JzIT)H1&D&&eX&Xf9jp^47tw5+y!}U2Dtcx>P z*$7?Ahnb_tV5G-#>3PWVzknlQgQA4YU*BvaqRKX*nJ(nfQ08-*uZIhbsU#!pB5OH;xkiVh8MakdfE<5}L~}Fg$7DDP_up%`9L$=h_UpuMvGb zjiUdZITkZ3)`>PFUd134%l`uakr~Tu|7R_0Y%SORM7*LdB)zhMkJ?j71N{cN&@ud{vHS|E1#JoSH%hb8l_B*@G zzx-<&n2x74qkmzJu?+{UUQ)qpav2Z0qZ<2US>MTIT}P?~@~%Se+`5u}T}j?V2206q z*T14=ssV+1I*TgAwh?G{rX&~V@$I*`l&7(1u6<*hm4!5yg!j`D+6(HFq)WrZkw+&` zk`@tOkV4XOm{9QIQ+~pxU?t6U{H{QnPS2m(q{1|>Mycc#7}El16ERY1t07D;%_|>k zS~61hFG(`;?rrOgRi+RYp{!*t{-bO!4{HT$@#}KIw)*EzR`-lvDUqeHO;L!(^&{)p zI3{G7{puvLkds094yx}$Y(#C!nbS7Pb&>)}nL@XVRx&Mi5dn65sg*y+he-=S0EYZM zEsSuoZ1vaY3yxMZa#If_H)S4xSc4D?iO+t5z;j2*u%klP9WBrf!mkZ9op&@);(%7= zdB

  • - The Real First Universal Charset Detector
    -
    - - - - Download Count Total - - - - -